專利名稱:一種固態(tài)硬盤及數(shù)據(jù)讀寫方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種固態(tài)硬盤及數(shù)據(jù)讀寫方法。
背景技術(shù):
固態(tài)硬盤(Solid State Disk, SSD),是由控制單元和固態(tài)存儲(chǔ)單元組成的硬盤,
其接口規(guī)范、功能及使用方法上與普通硬盤相同。由于固態(tài)硬盤沒(méi)有普通硬盤的機(jī)械旋轉(zhuǎn)
裝置,因此具有讀寫速度快、工作噪音低、抗震性好、工作溫度范圍大等特點(diǎn)。
目前,固態(tài)硬盤的存儲(chǔ)介質(zhì)大多采用非易失性的閃存(flash)芯片,其優(yōu)點(diǎn)是數(shù)
據(jù)保護(hù)不受電源控制、移動(dòng)方便,可以適應(yīng)于多種環(huán)境,缺點(diǎn)在于閃存塊有時(shí)會(huì)存在讀寫錯(cuò)
誤,影響數(shù)據(jù)的可靠性。 針對(duì)上述問(wèn)題,我們可以通過(guò)建立冗余數(shù)據(jù)的方法來(lái)提高數(shù)據(jù)的可靠性,一種比 較常用的方案是使用備份軟件或數(shù)據(jù)同步軟件,這種方法的缺點(diǎn)在于要求用戶進(jìn)行額外 的設(shè)置或操作,并且在進(jìn)行數(shù)據(jù)備份或同步時(shí),需要占用系統(tǒng)資源,對(duì)硬盤的讀寫性能造成 影響。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供了一種固態(tài)硬盤及數(shù)據(jù)讀寫方法,以實(shí)現(xiàn)在不影響 讀寫性能的情況下,提高固態(tài)硬盤的數(shù)據(jù)可靠性,技術(shù)方案如下
—種固態(tài)硬盤,包括 存儲(chǔ)單元,包括具有相同存儲(chǔ)空間結(jié)構(gòu)的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域,所述原 始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng);
寫入控制單元,用于根據(jù)數(shù)據(jù)寫入指令,將數(shù)據(jù)同時(shí)寫入所述存儲(chǔ)單元的原始數(shù) 據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域; 讀取控制單元,用于根據(jù)數(shù)據(jù)讀取指令,由所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域讀取數(shù) 據(jù),如果出現(xiàn)讀取錯(cuò)誤,則根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由所述存儲(chǔ)單元的備份數(shù)據(jù) 區(qū)域讀取數(shù)據(jù)。 —種固態(tài)硬盤的數(shù)據(jù)讀寫方法,包括 當(dāng)接收到數(shù)據(jù)寫入指令時(shí),將數(shù)據(jù)同時(shí)寫入固態(tài)硬盤的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù) 區(qū)域; 當(dāng)接收到數(shù)據(jù)讀取指令時(shí),由固態(tài)硬盤的原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù),如果出現(xiàn)讀取 錯(cuò)誤,則根據(jù)原始數(shù)據(jù)區(qū)域與備份數(shù)據(jù)存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由備份數(shù)據(jù)區(qū)域讀取數(shù) 據(jù); 其中,所述原始數(shù)據(jù)區(qū)域和所述備份數(shù)據(jù)區(qū)域具有相同的存儲(chǔ)空間結(jié)構(gòu),所述原
始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng)。 以上技術(shù)方案,應(yīng)用固態(tài)硬盤閃存芯片的特性,同時(shí)對(duì)一塊硬盤的多個(gè)存儲(chǔ)區(qū)域
進(jìn)行相同的寫入操作,當(dāng)數(shù)據(jù)讀取錯(cuò)誤時(shí),則自動(dòng)從備份存儲(chǔ)區(qū)域中讀取數(shù)據(jù),在不影響硬盤性能的情況下,提高了數(shù)據(jù)的可靠性。
圖1為本發(fā)明實(shí)施例固態(tài)硬盤的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例固態(tài)硬盤的存儲(chǔ)空間結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例固態(tài)硬盤的數(shù)據(jù)寫操作示意圖;
圖4為本發(fā)明實(shí)施例固態(tài)硬盤的塊擦除操作示意圖;
圖5為本發(fā)明實(shí)施例固態(tài)硬盤的另一種結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例數(shù)據(jù)恢復(fù)單元的結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例的數(shù)據(jù)讀取方法流程圖;
圖8為本發(fā)明實(shí)施例的數(shù)據(jù)恢復(fù)方法流程圖。
具體實(shí)施例方式首先對(duì)本發(fā)明實(shí)施例所提供的一種固態(tài)硬盤進(jìn)行介紹,參見圖1所示,包括
存儲(chǔ)單元110,包括具有相同存儲(chǔ)空間結(jié)構(gòu)的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域,所述 原始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng);
寫入控制單元120,用于根據(jù)數(shù)據(jù)寫入指令,將數(shù)據(jù)同時(shí)寫入所述存儲(chǔ)單元的原始 數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域; 讀取控制單元130,用于根據(jù)數(shù)據(jù)讀取指令,由所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域讀取 數(shù)據(jù),如果出現(xiàn)讀取錯(cuò)誤,則根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由所述存儲(chǔ)單元的備份數(shù) 據(jù)區(qū)域讀取數(shù)據(jù)。 其中,所述存儲(chǔ)單元110的存儲(chǔ)空間示意圖,可參見圖2所示。在固態(tài)硬盤中,基本 的存儲(chǔ)單位為閃存塊(block),圖2所示的存儲(chǔ)空間中,所有的閃存塊被劃分為兩部分,其
中block0、block2、block4......構(gòu)成plane0,blockl、block3、block5......構(gòu)成planel,
我們將plane0作為原始數(shù)據(jù)區(qū),將planel作為備份數(shù)據(jù)區(qū)。 原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)的具有完全一致的大小及存儲(chǔ)空間結(jié)構(gòu),并且存儲(chǔ)空間
的地址一一對(duì)應(yīng),如圖2所示,原始數(shù)據(jù)區(qū)中的地址0000h、0001h......分別對(duì)應(yīng)備份數(shù)據(jù)
區(qū)中的地址1000h、1001h......,也就是說(shuō),對(duì)于原始數(shù)據(jù)區(qū)中的任意一個(gè)存儲(chǔ)空間地址,
都能在備份數(shù)據(jù)區(qū)域中找到一個(gè)與之相對(duì)應(yīng)的地址。 當(dāng)所述寫入控制單元120,接收到數(shù)據(jù)寫入操作指令后,會(huì)將數(shù)據(jù)寫入原始數(shù)據(jù)區(qū) 域和備份數(shù)據(jù)區(qū)域,由于固態(tài)硬盤閃存芯片具有two plane block的特性,因此可以將數(shù) 據(jù)同時(shí)寫入兩部分區(qū)域,并且,相對(duì)于只寫入一部分區(qū)域的寫操作來(lái)說(shuō),寫入速度也不會(huì)變 慢。 存儲(chǔ)空間地址可以由物理地址和邏輯地址來(lái)表示,其中物理地址是對(duì)應(yīng)硬盤的實(shí) 際物理結(jié)構(gòu)(例如固態(tài)硬盤中的閃存塊block、頁(yè)面page等)所編排的地址,圖2所示的 地址即為物理地址;而邏輯地址則用于方便計(jì)算機(jī)對(duì)硬盤進(jìn)行訪問(wèn)。 一般來(lái)說(shuō),硬盤的讀寫 操作所直接訪問(wèn)的都是邏輯地址,該邏輯地址與硬盤的物理地址具有一定的映射關(guān)系,在 本發(fā)明實(shí)施例中,我們可以將原始數(shù)據(jù)區(qū)域的物理地址和備份數(shù)據(jù)區(qū)域的物理地址,與相 同的邏輯地址建立映射關(guān)系。例如,參見圖2所示,可以將0000h和1000h與同一個(gè)邏輯地址AO建立映射關(guān)系,將OOOlh和lOOlh與同一個(gè)邏輯地址Al建立映射關(guān)系......以此類
推,也可以將OOOOh與lOOlh與同一個(gè)邏輯地址AO建立映射關(guān)系,將OOOlh與lOOOh與同
一個(gè)邏輯地址A1建立映射關(guān)系,并不局限于具體的順序......以此類推。這樣,在對(duì)某一
邏輯地址進(jìn)行寫操作的時(shí)候,就可以將數(shù)據(jù)同時(shí)分別寫入原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域的 相應(yīng)物理地址上。 參見圖3所示,在固態(tài)硬盤中,page是用來(lái)進(jìn)行數(shù)據(jù)寫操作的最小單位,一個(gè) block由若干個(gè)page組成(圖中所示為64個(gè)),當(dāng)進(jìn)行數(shù)據(jù)寫操作時(shí),數(shù)據(jù)會(huì)被同時(shí)寫入 原始數(shù)據(jù)區(qū)和備份數(shù)據(jù)區(qū)的page中,并且,這兩部分區(qū)域的page地址都是相互對(duì)應(yīng)的。同 理,參見圖4所示,當(dāng)進(jìn)行塊擦除操作時(shí),在兩個(gè)區(qū)域中,具有對(duì)應(yīng)關(guān)系的數(shù)據(jù)塊會(huì)被同時(shí) 擦除。 在進(jìn)行正常讀取操作時(shí),所述讀取控制單元130,僅從原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù),由 于固態(tài)硬盤的閃存塊有時(shí)會(huì)出現(xiàn)讀寫錯(cuò)誤,因此在讀取數(shù)據(jù)以后,還會(huì)對(duì)所讀取的數(shù)據(jù)進(jìn) 行ECC(Error Checking and Correcting,錯(cuò)誤檢查和糾正)校驗(yàn),如果校驗(yàn)通過(guò)則將所讀 取的數(shù)據(jù)輸出,如果校驗(yàn)失敗,說(shuō)明在原始數(shù)據(jù)區(qū)域中存儲(chǔ)的數(shù)據(jù)有錯(cuò)誤,此時(shí),需要由備 份數(shù)據(jù)區(qū)域讀取數(shù)據(jù)。 以圖2所示的存儲(chǔ)空間為例,假如在讀取地址0040h時(shí),出現(xiàn)數(shù)據(jù)讀取錯(cuò)誤,則需 要到該地址所對(duì)應(yīng)的備份數(shù)據(jù)區(qū)域中的地址(即1040h)讀取數(shù)據(jù),由于在這兩個(gè)地址中所 寫入的數(shù)據(jù)是一致的,因此可以將1040h中所讀取的數(shù)據(jù)作為正常輸出。在這之后,讀取控 制單元可以繼續(xù)在原始數(shù)據(jù)區(qū)域進(jìn)行數(shù)據(jù)讀取,如果出現(xiàn)讀取錯(cuò)誤,則再次到備份數(shù)據(jù)區(qū) 域中讀取相應(yīng)的備份數(shù)據(jù)。 為了保證原始數(shù)據(jù)區(qū)域數(shù)據(jù)的有效性,當(dāng)原始數(shù)據(jù)區(qū)域出現(xiàn)數(shù)據(jù)讀取錯(cuò)誤時(shí),需
要對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行恢復(fù)。參見圖5所示,本發(fā)明實(shí)施例所提供的固定硬盤,還包括 數(shù)據(jù)恢復(fù)單元140,用于在所述讀取控制單元出現(xiàn)讀取錯(cuò)誤時(shí),對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行恢復(fù)。 參見圖6所示,所述數(shù)據(jù)恢復(fù)單元140,可以包括 數(shù)據(jù)塊檢測(cè)子單元141,用于在出現(xiàn)讀取錯(cuò)誤時(shí),檢測(cè)出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊是否 損壞; 對(duì)于固態(tài)硬盤來(lái)說(shuō),出現(xiàn)錯(cuò)誤可能只是偶然情況,但是,如果錯(cuò)誤是由數(shù)據(jù)塊損壞 所引起的,那么在該數(shù)據(jù)塊中出現(xiàn)錯(cuò)誤的概率就很高了 。檢測(cè)數(shù)據(jù)塊是否損耗的方法,可以 是通過(guò)多次對(duì)該數(shù)據(jù)塊進(jìn)行數(shù)據(jù)寫入并讀取,并統(tǒng)計(jì)出現(xiàn)讀取錯(cuò)誤的概率,如果該概率超 過(guò)一定的閾值,則判定該數(shù)據(jù)塊已經(jīng)損壞。 第一恢復(fù)子單元142,用于當(dāng)所述數(shù)據(jù)塊檢測(cè)子單元的檢測(cè)結(jié)果為否時(shí),用于根據(jù) 所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述出現(xiàn)讀取錯(cuò)誤的數(shù) 據(jù)塊; 如果經(jīng)過(guò)檢測(cè),判定出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊沒(méi)有損壞,說(shuō)明讀取錯(cuò)誤的出現(xiàn)是偶 然的,此時(shí)可以將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù)重新寫入原始數(shù)據(jù)區(qū)域。以圖2所示的存儲(chǔ)空間 為例,假如在讀取地址0040h時(shí)出現(xiàn)讀取錯(cuò)誤,經(jīng)檢測(cè)判斷該地址所在的數(shù)據(jù)塊block2沒(méi) 有損壞,則將地址1040h中的數(shù)據(jù)恢復(fù)至0040h中。 在本發(fā)明實(shí)施例所提供的固態(tài)硬盤中,還可以包括若干保留數(shù)據(jù)塊,這些保留數(shù)據(jù)塊不屬于存儲(chǔ)單元110,也即不會(huì)用作正常的數(shù)據(jù)讀寫,僅當(dāng)存儲(chǔ)單元110當(dāng)中的數(shù)據(jù)塊 損壞時(shí),再使用保留數(shù)據(jù)塊替換損壞的數(shù)據(jù)塊,以保證硬盤數(shù)據(jù)的可靠性。參見圖6所示, 所述數(shù)據(jù)恢復(fù)單元140,還可以包括 第二恢復(fù)子單元143,當(dāng)所述數(shù)據(jù)塊檢測(cè)子單元的檢測(cè)結(jié)果為是時(shí),用于使用固態(tài) 硬盤的保留數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行替換;根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份 數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述替換后的數(shù)據(jù)塊。 如果經(jīng)過(guò)檢測(cè),判定出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊損壞,則該數(shù)據(jù)塊已經(jīng)無(wú)法進(jìn)行數(shù)據(jù) 讀寫,為了保證硬盤繼續(xù)正常使用,可以用保留數(shù)據(jù)塊替換該損壞的數(shù)據(jù)塊。仍以圖2所示 的存儲(chǔ)空間為例,假如block2損壞,使用保留區(qū)塊block A替換block2,為了保證原始數(shù)據(jù) 區(qū)與備份數(shù)據(jù)區(qū)存儲(chǔ)空間的對(duì)應(yīng)關(guān)系,還需要將原先block2與block3的對(duì)應(yīng)關(guān)系,修改為 block A與block3的對(duì)應(yīng)關(guān)系;或者,也可以將原block2的地址映射到blockA的地址,這 樣,在替換之后,所有針對(duì)于block2的操作,實(shí)際上都會(huì)被轉(zhuǎn)移到block A。
替換完畢后,還要將block3中的數(shù)據(jù),恢復(fù)至blockA中,以確保原始數(shù)據(jù)區(qū)域中 數(shù)據(jù)的有效性。 需要說(shuō)明的是,上述實(shí)施例中,存儲(chǔ)空間的分配方法以及存儲(chǔ)地址的設(shè)定僅用作 示意性說(shuō)明,并不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限定。 在上述實(shí)施例所提供的固態(tài)硬盤中,采用的是一個(gè)原始數(shù)據(jù)區(qū)域?qū)?yīng)一個(gè)備份數(shù) 據(jù)區(qū)域的方案,本領(lǐng)域技術(shù)人員易于想到的是,也可以采用一個(gè)原始數(shù)據(jù)區(qū)域?qū)?yīng)多個(gè)備 份數(shù)據(jù)區(qū)域的方案,從而進(jìn)一步提高硬盤整體的數(shù)據(jù)可靠性,這些改進(jìn)也都應(yīng)該包括在本 發(fā)明的保護(hù)范圍內(nèi)。 以上技術(shù)方案,應(yīng)用固態(tài)硬盤閃存芯片的特性,同時(shí)對(duì)一塊硬盤的兩個(gè)或兩個(gè)以
上存儲(chǔ)區(qū)域進(jìn)行相同的寫入操作,當(dāng)數(shù)據(jù)讀取錯(cuò)誤時(shí),則自動(dòng)從備份存儲(chǔ)區(qū)域中讀取數(shù)據(jù),
在不影響硬盤性能的情況下,提高了數(shù)據(jù)的可靠性。此外,還可以進(jìn)一步判斷數(shù)據(jù)讀取錯(cuò)誤
是否由閃存塊損壞所引起,如果是,則只需從固態(tài)硬盤的保留區(qū)塊中選取新的閃存塊來(lái)替
換損壞的閃存塊,即可自動(dòng)恢復(fù)硬盤的正常使用,無(wú)需對(duì)硬件進(jìn)行更換。 相應(yīng)于上面的方法實(shí)施例,本發(fā)明實(shí)施例還提供了固態(tài)硬盤的數(shù)據(jù)讀寫方法。 本發(fā)明實(shí)施例所提供的固態(tài)硬盤的數(shù)據(jù)寫入方法,包括 當(dāng)接收到數(shù)據(jù)寫入指令時(shí),將數(shù)據(jù)同時(shí)寫入固態(tài)硬盤的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù) 區(qū)域; 其中,原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域具有相同的存儲(chǔ)空間結(jié)構(gòu),并且原始數(shù)據(jù)區(qū) 域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng)。 當(dāng)固態(tài)硬盤的寫入控制單元接收到數(shù)據(jù)寫入操作指令后,會(huì)將數(shù)據(jù)寫入原始數(shù)據(jù) 區(qū)域和備份數(shù)據(jù)區(qū)域,由于固態(tài)硬盤閃存芯片具有two plane block的特性,因此可以將數(shù) 據(jù)同時(shí)寫入兩部分區(qū)域,并且,相對(duì)于只寫入一部分區(qū)域的寫操作來(lái)說(shuō),寫入速度也不會(huì)變 慢。 本發(fā)明實(shí)施例所提供的固態(tài)硬盤的數(shù)據(jù)讀取方法流程圖可以參見圖7所示,包括 以下步驟 S701,根據(jù)數(shù)據(jù)讀取指令,由固態(tài)硬盤的原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù)。 S702,對(duì)所讀取的數(shù)據(jù)進(jìn)行校驗(yàn),如果校驗(yàn)正確,則執(zhí)行S703,否則執(zhí)行S704。
S703,輸出所讀取的數(shù)據(jù)。 S704,根據(jù)原始數(shù)據(jù)區(qū)域與備份數(shù)據(jù)存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由備份數(shù)據(jù)區(qū)域 讀取數(shù)據(jù)并輸出; 進(jìn)一步的,為了保證原始數(shù)據(jù)區(qū)域數(shù)據(jù)的有效性,當(dāng)原始數(shù)據(jù)區(qū)域出現(xiàn)數(shù)據(jù)讀取 錯(cuò)誤時(shí),需要對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行恢復(fù)。參見圖8所示,對(duì)錯(cuò)誤進(jìn)行恢復(fù)的步驟,包括
S705,檢測(cè)出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊是否損壞;如果否,則執(zhí)行S706,如果是,則執(zhí) 行S707。 S706,根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述 讀取錯(cuò)誤的數(shù)據(jù)塊。 S707,使用固態(tài)硬盤的保留數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行替換;根據(jù)所述存儲(chǔ)空間
地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述替換后的數(shù)據(jù)塊。 以上所提供的固態(tài)硬盤數(shù)據(jù)讀寫方法,應(yīng)用固態(tài)硬盤閃存芯片的特性,同時(shí)對(duì)一
塊硬盤的兩個(gè)或兩個(gè)以上存儲(chǔ)區(qū)域進(jìn)行相同的寫入操作,當(dāng)數(shù)據(jù)讀取錯(cuò)誤時(shí),則自動(dòng)從備
份存儲(chǔ)區(qū)域中讀取數(shù)據(jù),在不影響硬盤性能的情況下,提高了數(shù)據(jù)的可靠性。此外,還可以
進(jìn)一步判斷數(shù)據(jù)讀取錯(cuò)誤是否由閃存塊損壞所引起,如果是,則只需從固態(tài)硬盤的保留區(qū)
塊中選取新的閃存塊來(lái)替換損壞的閃存塊,即可自動(dòng)恢復(fù)硬盤的正常使用,無(wú)需對(duì)硬件進(jìn)
行更換。 對(duì)于上述方法實(shí)施例而言,由于其基本相應(yīng)于裝置實(shí)施例,所以描述得比較簡(jiǎn)單, 相關(guān)之處參見裝置實(shí)施例的部分說(shuō)明即可。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法 實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一 計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存 儲(chǔ)介質(zhì)包括ROM(Read-Only Memory,只讀存儲(chǔ)記憶體)、RAM (Random Access Memory,隨機(jī) 存儲(chǔ)記憶體)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。 以上所述僅是本發(fā)明的具體實(shí)施方式
,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人 員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng) 視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種固態(tài)硬盤,其特征在于,包括存儲(chǔ)單元,包括具有相同存儲(chǔ)空間結(jié)構(gòu)的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域,所述原始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng);寫入控制單元,用于根據(jù)數(shù)據(jù)寫入指令,將數(shù)據(jù)同時(shí)寫入所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域;讀取控制單元,用于根據(jù)數(shù)據(jù)讀取指令,由所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù),如果出現(xiàn)讀取錯(cuò)誤,則根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由所述存儲(chǔ)單元的備份數(shù)據(jù)區(qū)域讀取數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的固態(tài)硬盤,其特征在于,所述原始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址 與備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng),具體為原始數(shù)據(jù)區(qū)域的物理地址和備份數(shù)據(jù) 區(qū)域的物理地址,與相同的邏輯地址具有映射關(guān)系;則所述寫入控制單元,用于根據(jù)數(shù)據(jù)寫入指令,將數(shù)據(jù)同時(shí)寫入相同的邏輯地址所對(duì)應(yīng) 的原始數(shù)據(jù)區(qū)域的物理地址和備份數(shù)據(jù)區(qū)域的物理地址;所述讀取控制單元,用于根據(jù)數(shù)據(jù)讀取指令,由所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域讀取數(shù) 據(jù),如果出現(xiàn)讀取錯(cuò)誤,則根據(jù)所述映射關(guān)系,讀取與出現(xiàn)錯(cuò)誤的物理地 >址所對(duì)應(yīng)的備份數(shù) 據(jù)區(qū)域物理地址上的數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1所述的固態(tài)硬盤,其特征在于,該固態(tài)硬盤還包括 數(shù)據(jù)恢復(fù)單元,用于在所述讀取控制單元出現(xiàn)讀取錯(cuò)誤時(shí),對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行恢復(fù)。
4. 根據(jù)權(quán)利要求3所述的固態(tài)硬盤,其特征在于,所述數(shù)據(jù)恢復(fù)單元,包括 數(shù)據(jù)塊檢測(cè)子單元,用于在出現(xiàn)讀取錯(cuò)誤時(shí),檢測(cè)出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊是否損壞; 第一恢復(fù)子單元,當(dāng)所述數(shù)據(jù)塊檢測(cè)子單元的檢測(cè)結(jié)果為否時(shí),用于根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊。
5. 根據(jù)權(quán)利要求4所述的固態(tài)硬盤,其特征在于,所述數(shù)據(jù)恢復(fù)單元,還包括 第二恢復(fù)子單元,當(dāng)所述數(shù)據(jù)塊檢測(cè)子單元的檢測(cè)結(jié)果為是時(shí),用于使用固態(tài)硬盤的保留數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù)塊進(jìn)行替換;根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū) 域中的數(shù)據(jù),恢復(fù)至所述替換后的數(shù)據(jù)塊。
6. —種固態(tài)硬盤的數(shù)據(jù)讀寫方法,其特征在于,包括當(dāng)接收到數(shù)據(jù)寫入指令時(shí),將數(shù)據(jù)同時(shí)寫入固態(tài)硬盤的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域;當(dāng)接收到數(shù)據(jù)讀取指令時(shí),由固態(tài)硬盤的原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù),如果出現(xiàn)讀取錯(cuò)誤, 則根據(jù)原始數(shù)據(jù)區(qū)域與備份數(shù)據(jù)存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由備份數(shù)據(jù)區(qū)域讀取數(shù)據(jù);其中,所述原始數(shù)據(jù)區(qū)域和所述備份數(shù)據(jù)區(qū)域具有相同的存儲(chǔ)空間結(jié)構(gòu),所述原始數(shù) 據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng)。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括當(dāng)出現(xiàn)讀取錯(cuò)誤時(shí),對(duì)錯(cuò)誤數(shù)據(jù) 進(jìn)行恢復(fù)。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述對(duì)錯(cuò)誤數(shù)據(jù)進(jìn)行恢復(fù),包括 檢測(cè)出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊是否損壞;如果否,則根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述 出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括如果檢測(cè)到出現(xiàn)讀取錯(cuò)誤的數(shù)據(jù)塊損壞,則使用固態(tài)硬盤的保留數(shù)據(jù)塊對(duì)損壞的數(shù)據(jù) 塊進(jìn)行替換;根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,將備份數(shù)據(jù)區(qū)域中的數(shù)據(jù),恢復(fù)至所述替 換后的數(shù)據(jù)塊。
全文摘要
本發(fā)明實(shí)施例公開了一種固態(tài)硬盤及數(shù)據(jù)讀寫方法。一種固態(tài)硬盤包括存儲(chǔ)單元,包括具有相同存儲(chǔ)空間結(jié)構(gòu)的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域,所述原始數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址,與所述備份數(shù)據(jù)區(qū)域的存儲(chǔ)空間地址一一對(duì)應(yīng);寫入控制單元,用于根據(jù)數(shù)據(jù)寫入指令,將數(shù)據(jù)同時(shí)寫入所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域和備份數(shù)據(jù)區(qū)域;讀取控制單元,用于根據(jù)數(shù)據(jù)讀取指令,由所述存儲(chǔ)單元的原始數(shù)據(jù)區(qū)域讀取數(shù)據(jù),如果出現(xiàn)讀取錯(cuò)誤,則根據(jù)所述存儲(chǔ)空間地址的對(duì)應(yīng)關(guān)系,由所述存儲(chǔ)單元的備份數(shù)據(jù)區(qū)域讀取數(shù)據(jù)。以上技術(shù)方案,應(yīng)用固態(tài)硬盤閃存芯片的特性,同時(shí)對(duì)一塊硬盤的多個(gè)存儲(chǔ)區(qū)域進(jìn)行相同的寫入操作,在不影響硬盤性能的情況下,提高了數(shù)據(jù)的可靠性。
文檔編號(hào)G06F11/14GK101777013SQ20091000022
公開日2010年7月14日 申請(qǐng)日期2009年1月12日 優(yōu)先權(quán)日2009年1月12日
發(fā)明者張宗全 申請(qǐng)人:成都市華為賽門鐵克科技有限公司