本發(fā)明涉及一種閃存的存取方法,尤其涉及一種用以延長閃存壽命的閃存存取方法。
背景技術(shù):
::閃存(flashmemory)具有訪問速度快的優(yōu)點(diǎn),從而在近年來被普遍的使用于做為各種電子裝置的儲(chǔ)存媒介。且大容量的閃存被制作為固態(tài)硬盤(solid-statedisk,ssd)或u盤(pendrive)。然而,閃存隨著存取次數(shù)的增加,所儲(chǔ)存的數(shù)據(jù)的位錯(cuò)誤率也會(huì)上升。因此閃存通常會(huì)對(duì)每一筆數(shù)據(jù)配對(duì)一個(gè)錯(cuò)誤更正碼(error-correctioncode,ecc)?,F(xiàn)有的作法中,閃存的單元格式是固定的。圖1現(xiàn)有的閃存儲(chǔ)存區(qū)塊配置示意圖。如圖1所示,閃存1000具有多組成對(duì)的數(shù)據(jù)區(qū)塊d1至d8與錯(cuò)誤檢查區(qū)塊p1至p8。數(shù)據(jù)區(qū)塊d1對(duì)應(yīng)錯(cuò)誤檢查區(qū)塊p1。且每個(gè)數(shù)據(jù)區(qū)塊的邏輯大小相等,每個(gè)錯(cuò)誤檢查區(qū)塊的邏輯大小也相等。舉例來說,每個(gè)數(shù)據(jù)區(qū)塊的邏輯大小為1024字節(jié)(1kilobyte,1kb),而每個(gè)錯(cuò)誤檢查區(qū)塊的邏輯大小為80字節(jié)。換句話說,每一筆數(shù)據(jù)的長度與對(duì)應(yīng)的錯(cuò)誤更正碼的長度是固定的。這是為了方便使用硬件電路進(jìn)行數(shù)據(jù)的存取與錯(cuò)誤更正。然而,當(dāng)一筆數(shù)據(jù)的位錯(cuò)誤率隨著快閃記體的存取次數(shù)而增加,錯(cuò)誤更正碼因?yàn)殚L度固定,所以將會(huì)發(fā)生無法進(jìn)行錯(cuò)誤更正的狀況。當(dāng)閃存有部分的儲(chǔ)存區(qū)塊無法進(jìn)行錯(cuò)誤更正,則儲(chǔ)存在閃存的數(shù)據(jù)就無法更正為正確的數(shù)據(jù)。最終,閃存將無法繼續(xù)使用,因?yàn)樗械膬?chǔ)存區(qū)塊的位錯(cuò)誤率都上升到無法使用錯(cuò)誤更正的技術(shù)來修正錯(cuò)誤。又nand閃存芯片的儲(chǔ)存架構(gòu)大致上為數(shù)個(gè)區(qū)塊,每個(gè)區(qū)塊包含數(shù)個(gè)頁面,每個(gè)頁面包含數(shù)個(gè)字節(jié)。而數(shù)據(jù)的存取大致上有讀取(read)、寫入(program)與抹除(erase)這三種操作指令。讀取指令以最少1個(gè)byte,最多1個(gè)page為單位來完成一次操作。寫入與抹除指令分別以1個(gè)頁面與1個(gè)區(qū)塊為單位來完成一次操作。倘若用戶預(yù)寫入一筆少量數(shù)據(jù),則必需要將所對(duì)應(yīng)區(qū)塊所有頁面的數(shù)據(jù)一并讀出。等待更新完數(shù)據(jù)后,抹除此區(qū)塊的數(shù)據(jù),再將所有數(shù)據(jù)寫入此區(qū)塊。但每個(gè)區(qū)塊都有其寫入/抹除的次數(shù)限制,若超過此限制次數(shù),則此區(qū)塊可能會(huì)失效,進(jìn)而導(dǎo)致數(shù)據(jù)錯(cuò)誤率的提升。而閃存轉(zhuǎn)換層(nandflashtranslationlayer,nftl)就扮演了一個(gè)很重要的角色。閃存轉(zhuǎn)換層主要是在有限的暫存內(nèi)存下完成下列功能:邏輯地址(logicaladdress)與物理地址(physicaladdress)轉(zhuǎn)換、壞塊管理(badblockmanagement)、垃圾回收功能(garbage-collectionfunction)、均衡寫入功能(wear-levelingfunction)、斷電恢復(fù)功能(power-cyclingfunction)與數(shù)據(jù)擾亂功能(scramblingfunction)。傳統(tǒng)基于閃存的儲(chǔ)存裝置都是經(jīng)由閃存轉(zhuǎn)換層固件(firmware)搭配錯(cuò)誤更正硬件來實(shí)現(xiàn)整個(gè)儲(chǔ)存裝置的讀取、寫入與閃存芯片的管理,其中閃存轉(zhuǎn)換層固件運(yùn)行于閃存裝置內(nèi)(如u盤)。而一個(gè)完整的閃存轉(zhuǎn)換層通常有許多系統(tǒng)表(systemtable)。而由于系統(tǒng)表的數(shù)據(jù)記錄著所有邏輯地址(logicaladdress)與物理地址(physicaladdress)的對(duì)映關(guān)系以及閃存的使用情況。若其中某一個(gè)位發(fā)生錯(cuò)誤,嚴(yán)重者可能會(huì)讓整個(gè)系統(tǒng)毀損而導(dǎo)致用戶數(shù)據(jù)完全無法讀取。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題在于,針對(duì)現(xiàn)有技術(shù)的不足提供一種閃存的存取方法,以提高閃存的使用壽命。本發(fā)明所要解決的技術(shù)問題是通過如下技術(shù)方案實(shí)現(xiàn)的:一種閃存存取方法,包括下列步驟:從一閃存讀取一第一數(shù)據(jù),該第一數(shù)據(jù)具有一第一儲(chǔ)存數(shù)據(jù)與一第一錯(cuò)誤更正數(shù)據(jù),該第一儲(chǔ)存數(shù)據(jù)具有第一數(shù)據(jù)長度,該第一錯(cuò)誤更正數(shù)據(jù)具有一第二數(shù)據(jù)長度;得到關(guān)于該第一儲(chǔ)存數(shù)據(jù)的一第一錯(cuò)誤參數(shù);當(dāng)該第一錯(cuò)誤參數(shù)大于一第一門坎值時(shí),選擇性地將該第一儲(chǔ)存數(shù)據(jù)寫入該閃存為一第二數(shù)據(jù),該第二數(shù)據(jù)具有該第一儲(chǔ)存數(shù)據(jù)與一第二錯(cuò)誤更正數(shù)據(jù),該第二錯(cuò)誤更正數(shù)據(jù)具有一第三數(shù)據(jù)長度,該第三數(shù)據(jù)長度大于該第二數(shù)據(jù)長度,該第一錯(cuò)誤更正數(shù)據(jù)與該第二錯(cuò)誤更正數(shù)據(jù)以一第一算法,依據(jù)該第一儲(chǔ)存數(shù)據(jù)所產(chǎn)生。更好地,選擇性地將該第一儲(chǔ)存數(shù)據(jù)寫入該閃存為該第二數(shù)據(jù)的步驟中,包括下列步驟:當(dāng)該第二數(shù)據(jù)長度小于一第二門坎值時(shí),將該第一儲(chǔ)存數(shù)據(jù)寫入該閃存,并以該第一算法依據(jù)該第一儲(chǔ)存數(shù)據(jù)產(chǎn)生該第二錯(cuò)誤更正數(shù)據(jù)。當(dāng)該第二數(shù)據(jù)長度等于該第二門坎值時(shí),將該第一儲(chǔ)存數(shù)據(jù)寫入該閃存,并以一第二算法依據(jù)該第一儲(chǔ)存數(shù)據(jù)產(chǎn)生一第三錯(cuò)誤更正數(shù)據(jù),該第三錯(cuò)誤更正數(shù)據(jù)具有該第二數(shù)據(jù)長度。更好地,該第一算法依據(jù)bch碼所實(shí)現(xiàn)的錯(cuò)誤更正算法,而該第二算法依據(jù)低密度奇偶檢查碼所實(shí)現(xiàn)的錯(cuò)誤更正算法,然而不以此為限。更好地,該第一錯(cuò)誤參數(shù)包含該閃存的一存取次數(shù)。更好地,該第一錯(cuò)誤參數(shù)更包含一位錯(cuò)誤率,該位錯(cuò)誤率以該第一算法依據(jù)該第一錯(cuò)誤更正數(shù)據(jù)與該第一儲(chǔ)存數(shù)據(jù)所得到。更好地,該第一門坎值依據(jù)該第一錯(cuò)誤更正數(shù)據(jù)的一錯(cuò)誤更正上限而設(shè)定。更好地,該第一門坎值依據(jù)該存取次數(shù)而設(shè)定。更好地,該第一錯(cuò)誤參數(shù)包含一位錯(cuò)誤率,該位錯(cuò)誤率以該第一算法依據(jù)該第一錯(cuò)誤更正數(shù)據(jù)與該第一儲(chǔ)存數(shù)據(jù)所得到。更好地,該第一門坎值依據(jù)該第一錯(cuò)誤更正數(shù)據(jù)的一錯(cuò)誤更正上限而設(shè)定。更好地,該第三數(shù)據(jù)長度為該第二數(shù)據(jù)長度的兩倍。依據(jù)本發(fā)明一實(shí)施例的閃存,包含至少一第一儲(chǔ)存模塊。該第一儲(chǔ)存模塊包含:多個(gè)第一儲(chǔ)存區(qū)塊,每一該第一儲(chǔ)存區(qū)塊具有一第一數(shù)據(jù)區(qū)塊與一第一錯(cuò)誤檢查區(qū)塊,其中該第一數(shù)據(jù)區(qū)塊具有第一位長度,該第一錯(cuò)誤檢查區(qū)塊具有第二位長度;該第一儲(chǔ)存模塊還包含一第一系統(tǒng)區(qū)塊,該第一系統(tǒng)區(qū)塊具有一第二數(shù)據(jù)區(qū)塊與一第二錯(cuò)誤檢查區(qū)塊,其中該第二數(shù)據(jù)區(qū)塊具有第三位長度,該第二錯(cuò)誤檢查區(qū)塊具有第四位長度,該第三位長度不同于該第一位長度,該第四位長度大于該第二位長度。更好地,更包含至少一第二儲(chǔ)存模塊。該第二儲(chǔ)存模塊包含多個(gè)第二儲(chǔ)存區(qū)塊,每一該第二儲(chǔ)存區(qū)塊具有一第三數(shù)據(jù)區(qū)塊與一第三錯(cuò)誤檢查區(qū)塊,其中該第三數(shù)據(jù)區(qū)塊具有第五位長度,該第三錯(cuò)誤檢查區(qū)塊具有第六位長度,該第五位長度不同于該第一位長度,且該第六位長度不同于該第二位長度。更好地,該第一儲(chǔ)存模塊更包含至少一第三儲(chǔ)存區(qū)塊,每一該第三儲(chǔ)存區(qū)塊具有一第四數(shù)據(jù)區(qū)塊與一第四錯(cuò)誤檢查區(qū)塊,其中該第四錯(cuò)誤檢查區(qū)塊具有第七位長度,該第七位長度不同于該第一位長度。更好地,該第一儲(chǔ)存模塊的部份多個(gè)所述第一錯(cuò)誤檢查區(qū)塊所儲(chǔ)存的錯(cuò)誤更正數(shù)據(jù)對(duì)應(yīng)于第一算法,而另一部份多個(gè)所述第一錯(cuò)誤檢查區(qū)塊所儲(chǔ)存的錯(cuò)誤更正數(shù)據(jù)對(duì)應(yīng)于第二算法。本發(fā)明還提供一種閃存存取方法,包括:執(zhí)行軟件,以一第一閃存轉(zhuǎn)換格式從一閃存中讀取一第一數(shù)據(jù);以及依據(jù)一指令,將該第一數(shù)據(jù)以該第一閃存轉(zhuǎn)換格式或一第二閃存轉(zhuǎn)換格式寫入該閃存。更好地,該第一數(shù)據(jù)具有一第一儲(chǔ)存數(shù)據(jù)與一第一錯(cuò)誤更正數(shù)據(jù),該第一儲(chǔ)存數(shù)據(jù)具有第一數(shù)據(jù)長度,該第一錯(cuò)誤更正數(shù)據(jù)具有一第二數(shù)據(jù)長度,且該方法更包含:得到關(guān)于該第一儲(chǔ)存數(shù)據(jù)的一第一錯(cuò)誤參數(shù);以及當(dāng)該第一錯(cuò)誤參數(shù)大于一第一門坎值時(shí),選擇性地將該第一儲(chǔ)存數(shù)據(jù)寫入該閃存為一第二數(shù)據(jù),該第二數(shù)據(jù)具有該第一儲(chǔ)存數(shù)據(jù)與一第二錯(cuò)誤更正數(shù)據(jù),該第二錯(cuò)誤更正數(shù)據(jù)具有一第三數(shù)據(jù)長度,該第三數(shù)據(jù)長度大于該第二數(shù)據(jù)長度,該第一錯(cuò)誤更正數(shù)據(jù)與該第二錯(cuò)誤更正數(shù)據(jù)以一第一算法,依據(jù)該第一儲(chǔ)存數(shù)據(jù)所產(chǎn)生。本發(fā)明還提供閃存存取方法,包括:判斷一待儲(chǔ)存數(shù)據(jù)的一類別;當(dāng)該待儲(chǔ)存數(shù)據(jù)屬于一第一類別時(shí),以一第一算法產(chǎn)生關(guān)于該待儲(chǔ)存數(shù)據(jù)的一第一錯(cuò)誤更正數(shù)據(jù),并將該待儲(chǔ)存數(shù)據(jù)與該第一錯(cuò)誤更正數(shù)據(jù)寫入一閃存為一第一數(shù)據(jù);當(dāng)該待儲(chǔ)存數(shù)據(jù)屬于一第二類別時(shí),以一第二算法產(chǎn)生關(guān)于該待儲(chǔ)存數(shù)據(jù)的一第二錯(cuò)誤更正數(shù)據(jù),并將該待儲(chǔ)存數(shù)據(jù)與該第二錯(cuò)誤更正數(shù)據(jù)寫入該閃存為一第二數(shù)據(jù)。更好地,該第一算法與該第二算法不同。更好地,該第一錯(cuò)誤更正數(shù)據(jù)的長度與該第二錯(cuò)誤更正數(shù)據(jù)的長度相同。更好地,該第一算法與該第二算法相同,且該第一錯(cuò)誤更正數(shù)據(jù)的長度與該第二錯(cuò)誤更正數(shù)據(jù)的長度不同。依據(jù)本發(fā)明一實(shí)施例,在主控端(host)建構(gòu)一閃存轉(zhuǎn)換層算法軟件(software)以及一監(jiān)控模塊。監(jiān)控模塊會(huì)在閃存裝置(其連接于主控端)閑置時(shí)讀取其使用狀況,并適時(shí)的使用host端閃存轉(zhuǎn)換層算法軟件來取代內(nèi)建于閃存裝置的閃存轉(zhuǎn)換層固件。監(jiān)控模塊依據(jù)該閃存中一第一儲(chǔ)存數(shù)據(jù)的一覆寫次數(shù)或一位錯(cuò)誤率,選擇性地以該閃存轉(zhuǎn)換層算法軟件取代該閃存轉(zhuǎn)換層算法固件。依據(jù)本發(fā)明一實(shí)施例,是以軟件化來實(shí)現(xiàn)錯(cuò)誤更正碼及閃存轉(zhuǎn)換層算法,可同時(shí)提供各種不同的閃存轉(zhuǎn)換層類型與對(duì)偶長度以支持不同廠牌不同型別閃存芯片;更可以只通過一個(gè)閃存轉(zhuǎn)換層來管理不同廠牌不同型別的閃存芯片。在這樣的架構(gòu)下,使得閃存儲(chǔ)存裝置可以以最簡(jiǎn)易的方式進(jìn)行容量擴(kuò)充而完全不受閃存芯片型別的限制。即閃存可包含第一閃存芯片(如廠牌a)與第二閃存芯片(如廠牌b),而第一閃存芯片不同于第二閃存芯片,而于執(zhí)行一軟件對(duì)閃存進(jìn)行存取過程,該軟件以一第一算法產(chǎn)生關(guān)于一第一待儲(chǔ)存數(shù)據(jù)的一第一錯(cuò)誤更正數(shù)據(jù),并將該第一待儲(chǔ)存數(shù)據(jù)與該第一錯(cuò)誤更正數(shù)據(jù)寫入第一閃存芯片為一第一數(shù)據(jù),該軟件以一第二算法產(chǎn)生關(guān)于一第二待儲(chǔ)存數(shù)據(jù)的一第二錯(cuò)誤更正數(shù)據(jù),并將該第二待儲(chǔ)存數(shù)據(jù)與該第二錯(cuò)誤更正數(shù)據(jù)寫入第二閃存芯片為一第二數(shù)據(jù);其中,該第一算法與該第一算法不同,與/或該第一錯(cuò)誤更正數(shù)據(jù)的長度與該第二錯(cuò)誤更正數(shù)據(jù)的長度不同。更好地,該軟件更包含一閃存轉(zhuǎn)換層算法軟件管理該第一閃存芯片與該第二閃存芯片。本發(fā)明還提供一種內(nèi)存數(shù)據(jù)存取方法,儲(chǔ)存第一待儲(chǔ)存數(shù)據(jù)與第二待儲(chǔ)存數(shù)據(jù)時(shí),先以一第一算法產(chǎn)生關(guān)于第一待儲(chǔ)存數(shù)據(jù)的一第一錯(cuò)誤更正數(shù)據(jù),并將第一待儲(chǔ)存數(shù)據(jù)與該第一錯(cuò)誤更正數(shù)據(jù)寫入一閃存為一第一數(shù)據(jù);再以一第二算法產(chǎn)生關(guān)于第二待儲(chǔ)存數(shù)據(jù)的一第二錯(cuò)誤更正數(shù)據(jù),并將該第二待儲(chǔ)存數(shù)據(jù)與該第二錯(cuò)誤更正數(shù)據(jù)寫入該閃存為一第二數(shù)據(jù),由此第一與第二算法編碼后的型態(tài)與/或parity長度的不同而不易被分析,進(jìn)而提高數(shù)據(jù)存儲(chǔ)的安全性。本發(fā)明還提供一種閃存的存取方法,該閃存具有一閃存轉(zhuǎn)換層算法固件管理該閃存,該存取方法包含:該閃存轉(zhuǎn)換層算法固件選擇性地被儲(chǔ)存于遠(yuǎn)程的一閃存轉(zhuǎn)換層算法軟件取代,并以該閃存轉(zhuǎn)換層算法軟件管理該閃存。更好地,該存取方法依據(jù)該閃存中一第一儲(chǔ)存數(shù)據(jù)的一覆寫次數(shù)或一位錯(cuò)誤率,選擇性地以該閃存轉(zhuǎn)換層算法軟件取代該閃存轉(zhuǎn)換層算法固件。綜上所述,依據(jù)本發(fā)明所實(shí)現(xiàn)的閃存存取方法,借助于有彈性地更改錯(cuò)誤更正數(shù)據(jù)(錯(cuò)誤更正碼)的位長度,來提高所儲(chǔ)存數(shù)據(jù)的位錯(cuò)誤率容許上限,藉以提高閃存的使用壽命。本發(fā)明會(huì)依預(yù)被寫入的存儲(chǔ)器狀況(覆寫次數(shù)或位錯(cuò)誤率)以選擇適當(dāng)?shù)膬?chǔ)存區(qū)塊長度。以上的關(guān)于本
發(fā)明內(nèi)容的說明及以下的實(shí)施方式的說明用以示范與解釋本發(fā)明的精神與原理,并且提供本發(fā)明的權(quán)利要求保護(hù)范圍更進(jìn)一步的解釋。附圖說明圖1為現(xiàn)有的閃存儲(chǔ)存區(qū)塊配置示意圖;圖2為本發(fā)明一實(shí)施例的閃存存取方法流程圖;圖3為本發(fā)明一實(shí)施例的閃存儲(chǔ)存區(qū)塊配置示意圖;圖4為本發(fā)明另一實(shí)施例的閃存儲(chǔ)存區(qū)塊配置示意圖;圖5為圖2的步驟s240的流程圖;圖6為本發(fā)明一實(shí)施例所實(shí)現(xiàn)的閃存?!靖綀D標(biāo)記說明】1000、6000閃存6100、6200儲(chǔ)存模塊6110~6190、6210~6290儲(chǔ)存區(qū)塊6111、6191、6211數(shù)據(jù)區(qū)塊6113、6193、6213錯(cuò)誤檢查區(qū)塊d1~d8、dx、dy、ds數(shù)據(jù)區(qū)塊p1~p8、px、py、ps錯(cuò)誤檢查區(qū)塊s210~s240、s241~s245步驟具體實(shí)施方式以下在實(shí)施方式中詳細(xì)敘述本發(fā)明的詳細(xì)特征以及優(yōu)點(diǎn),其內(nèi)容足以使本領(lǐng)域普通技術(shù)人員了解本發(fā)明的技術(shù)內(nèi)容并據(jù)以實(shí)施,且根據(jù)本說明書所記載的內(nèi)容、權(quán)利要求及附圖,本領(lǐng)域普通技術(shù)人員可輕易地理解本發(fā)明相關(guān)的目的及優(yōu)點(diǎn)。以下的實(shí)施例進(jìn)一步詳細(xì)說明本發(fā)明的觀點(diǎn),但非以任何觀點(diǎn)限制本發(fā)明的范疇。鑒于硬件實(shí)現(xiàn)的閃存存取方法的缺陷,本發(fā)明提出以軟件來實(shí)現(xiàn)閃存的存取。由于錯(cuò)誤檢查的算法不再以硬件完成,因此對(duì)于閃存而言,其儲(chǔ)存數(shù)據(jù)的配置得以任意的調(diào)整,以符合所需要的數(shù)據(jù)正確性、錯(cuò)誤更正能力,并能延長閃存的使用壽命。于本發(fā)明各實(shí)施例中,各步驟以計(jì)算器裝置運(yùn)行軟件而執(zhí)行。運(yùn)行軟件的計(jì)算器裝置具有處理器與內(nèi)存。圖2為本發(fā)明一實(shí)施例的閃存存取方法流程圖。如圖2所示,依據(jù)本發(fā)明一實(shí)施例的閃存存取方法包括下列步驟:步驟s210,從閃存讀取第一數(shù)據(jù),第一數(shù)據(jù)具有第一儲(chǔ)存數(shù)據(jù)與第一錯(cuò)誤更正數(shù)據(jù),第一儲(chǔ)存數(shù)據(jù)具有第一數(shù)據(jù)長度,第一錯(cuò)誤更正數(shù)據(jù)具有第二數(shù)據(jù)長度。具體來說,第一儲(chǔ)存數(shù)據(jù)就等同于圖1中的數(shù)據(jù)區(qū)塊d1中所儲(chǔ)存的數(shù)據(jù),而第一錯(cuò)誤更正數(shù)據(jù)就等同于圖1中的錯(cuò)誤檢查區(qū)塊p1中所儲(chǔ)存的數(shù)據(jù)。第一數(shù)據(jù)長度例如為1024字節(jié)(1kb),而第二數(shù)據(jù)長度例如為80字節(jié)。接著執(zhí)行步驟s220,得到關(guān)于第一儲(chǔ)存數(shù)據(jù)的第一錯(cuò)誤參數(shù)。所述的第一錯(cuò)誤參數(shù),于一實(shí)施例中例如為第一儲(chǔ)存數(shù)據(jù)所儲(chǔ)存的區(qū)塊(數(shù)據(jù)區(qū)塊d1)的存取(program/erase)次數(shù)。于另一實(shí)施例中,第一錯(cuò)誤參數(shù)是第一儲(chǔ)存數(shù)據(jù)的位錯(cuò)誤率。具體來說,第一錯(cuò)誤更正數(shù)據(jù)例如是用bch碼(bchcode)呈現(xiàn)的關(guān)于第一儲(chǔ)存數(shù)據(jù)的錯(cuò)誤更正碼。因此可以利用對(duì)應(yīng)bch碼的算法(下稱第一算法)來依照第一錯(cuò)誤更正數(shù)據(jù)確認(rèn)第一儲(chǔ)存數(shù)據(jù)中有多少位的位值有錯(cuò)誤,這可稱之為位錯(cuò)誤率。再來執(zhí)行步驟s230,確認(rèn)第一錯(cuò)誤參數(shù)是否達(dá)到第一門坎值。當(dāng)?shù)谝诲e(cuò)誤參數(shù)未達(dá)到第一門坎值時(shí),結(jié)束。當(dāng)?shù)谝诲e(cuò)誤參數(shù)達(dá)到第一門坎值時(shí),執(zhí)行步驟s240。舉例來說,如果是以存取次數(shù)來評(píng)估的實(shí)施例中,假設(shè)第一儲(chǔ)存數(shù)據(jù)所儲(chǔ)存的區(qū)塊(數(shù)據(jù)區(qū)塊d1)的存取次數(shù)達(dá)到100次,則執(zhí)行步驟s240。又舉例來說,如果是以位錯(cuò)誤率來評(píng)估的實(shí)施例來說,例如以80字節(jié)的bch碼,可以恢復(fù)最多45位的位值錯(cuò)誤,則將第一門坎值設(shè)定為40。當(dāng)檢查第一儲(chǔ)存數(shù)據(jù)的位錯(cuò)誤率達(dá)到或超過40位時(shí),將執(zhí)行步驟s240,否則步驟流程結(jié)束。于再一實(shí)施例中,結(jié)合存取次數(shù)與位錯(cuò)誤率來評(píng)估。具體來說,隨著存取次數(shù)的增加,用來判斷位錯(cuò)誤率是否過高的第一門坎值也隨的改變。而于步驟s240中,選擇性地將第一儲(chǔ)存數(shù)據(jù)寫入閃存為第二數(shù)據(jù)。第二數(shù)據(jù)具有第一儲(chǔ)存數(shù)據(jù)與第二錯(cuò)誤更正數(shù)據(jù),第二錯(cuò)誤更正數(shù)據(jù)具有第三數(shù)據(jù)長度,第三數(shù)據(jù)長度大于第二數(shù)據(jù)長度。第一錯(cuò)誤更正數(shù)據(jù)與第二錯(cuò)誤更正數(shù)據(jù)以第一算法,依據(jù)第一儲(chǔ)存數(shù)據(jù)所產(chǎn)生。于一實(shí)施例中,當(dāng)決定要將第一儲(chǔ)存數(shù)據(jù)寫入閃存為第二數(shù)據(jù)時(shí),首先以第一算法(bch碼)產(chǎn)生具有第三數(shù)據(jù)長度的第二錯(cuò)誤更正數(shù)據(jù)。于本實(shí)施例中,第一錯(cuò)誤更正數(shù)據(jù)的第二數(shù)據(jù)長度為80字節(jié),則第二錯(cuò)誤更正數(shù)據(jù)的第三數(shù)據(jù)長度為160字節(jié)。于一實(shí)施例中,請(qǐng)參照?qǐng)D1以便于說明,當(dāng)計(jì)算器裝置讀取數(shù)據(jù)區(qū)塊d1的數(shù)據(jù)(第一儲(chǔ)存數(shù)據(jù))與數(shù)據(jù)區(qū)塊d2的數(shù)據(jù)(第二儲(chǔ)存數(shù)據(jù)),并用上述方法,依據(jù)錯(cuò)誤檢查區(qū)塊p1的錯(cuò)誤更正數(shù)據(jù)與錯(cuò)誤檢查區(qū)塊p2的錯(cuò)誤更正數(shù)據(jù)確認(rèn),發(fā)現(xiàn)第一儲(chǔ)存數(shù)據(jù)與第二儲(chǔ)存數(shù)據(jù)其中之一的位錯(cuò)誤率高于40位時(shí),計(jì)算器裝置將第一儲(chǔ)存數(shù)據(jù)與第二儲(chǔ)存數(shù)據(jù)整合,并將數(shù)據(jù)區(qū)塊d1、數(shù)據(jù)區(qū)塊d2、錯(cuò)誤檢查區(qū)塊p1與錯(cuò)誤檢查區(qū)塊p2復(fù)寫為數(shù)據(jù)區(qū)塊dx與錯(cuò)誤檢查區(qū)塊px,因此形成如圖3所示的閃存儲(chǔ)存區(qū)塊配置示意圖,圖3為本發(fā)明一實(shí)施例的閃存儲(chǔ)存區(qū)塊配置示意圖。如圖3所示,其中,數(shù)據(jù)區(qū)塊dx儲(chǔ)存有第一儲(chǔ)存數(shù)據(jù)與第二儲(chǔ)存數(shù)據(jù),而錯(cuò)誤檢查區(qū)塊px儲(chǔ)存有對(duì)應(yīng)于數(shù)據(jù)區(qū)塊dx的錯(cuò)誤更正數(shù)據(jù)(bch碼)。因此,數(shù)據(jù)區(qū)塊dx所能儲(chǔ)存的數(shù)據(jù)長度為2048字節(jié),而錯(cuò)誤檢查區(qū)塊px所能儲(chǔ)存的數(shù)據(jù)長度為160字節(jié)。如此,錯(cuò)誤檢查區(qū)塊px中的錯(cuò)誤更正數(shù)據(jù)可以提供最多85位的錯(cuò)誤更正能力。于另一實(shí)施例中,當(dāng)計(jì)算器裝置讀取數(shù)據(jù)區(qū)塊d1的第一儲(chǔ)存數(shù)據(jù),與錯(cuò)誤檢查區(qū)塊p1的第一錯(cuò)誤更正數(shù)據(jù)后,發(fā)現(xiàn)第一儲(chǔ)存數(shù)據(jù)與第一錯(cuò)誤更正數(shù)據(jù)的位錯(cuò)誤率達(dá)到40位時(shí),代表數(shù)據(jù)區(qū)塊d1與錯(cuò)誤檢查區(qū)塊p1已經(jīng)快要不能用80字節(jié)的bch碼來進(jìn)行錯(cuò)誤更正。則計(jì)算器裝置將數(shù)據(jù)區(qū)塊d2與錯(cuò)誤檢查區(qū)塊p2的數(shù)據(jù)寫到數(shù)據(jù)區(qū)塊d9與錯(cuò)誤檢查區(qū)塊p9。并且計(jì)算器裝置將數(shù)據(jù)區(qū)塊d1、數(shù)據(jù)區(qū)塊d2、錯(cuò)誤檢查區(qū)塊p1與錯(cuò)誤檢查區(qū)塊p2重新覆寫為如圖4所示的數(shù)據(jù)區(qū)塊dy與錯(cuò)誤檢查區(qū)塊py,圖4為本發(fā)明另一實(shí)施例的閃存儲(chǔ)存區(qū)塊配置示意圖。如圖4所示,其中數(shù)據(jù)區(qū)塊dy最多可以被寫入2048字節(jié)的數(shù)據(jù),而錯(cuò)誤檢查區(qū)塊py可以寫入160位組長度的bch碼。然而數(shù)據(jù)區(qū)塊dy中僅僅儲(chǔ)存第一儲(chǔ)存數(shù)據(jù)(1024字節(jié))。此外由于依據(jù)本發(fā)明的閃存存取方法并非以固定的硬件裝置來進(jìn)行數(shù)據(jù)的存取與錯(cuò)誤更正,數(shù)據(jù)區(qū)塊與錯(cuò)誤檢查區(qū)塊的配置可以不限制。因此,對(duì)于需要較高數(shù)據(jù)正確性的文件分配表或其他系統(tǒng)數(shù)據(jù),依據(jù)本發(fā)明的精神,請(qǐng)回到圖3,可以在閃存的一個(gè)分頁中任意的劃分出系統(tǒng)數(shù)據(jù)區(qū)塊ds與錯(cuò)誤檢查區(qū)塊ps。于此實(shí)施例中,系統(tǒng)數(shù)據(jù)區(qū)塊ds可以儲(chǔ)存有5120字節(jié)的數(shù)據(jù),而錯(cuò)誤檢查區(qū)塊ps可以儲(chǔ)存3712字節(jié)的bch碼或其他錯(cuò)誤更正碼。因此錯(cuò)誤檢查區(qū)塊ps中的錯(cuò)誤更正碼,以bch碼為例,可以提供最多1746位的錯(cuò)誤更正能力,對(duì)于最多5120字節(jié)的系統(tǒng)數(shù)據(jù)來說,這樣配置的數(shù)據(jù)正確性會(huì)遠(yuǎn)遠(yuǎn)高于一般的1024字節(jié)數(shù)據(jù)配置80字節(jié)錯(cuò)誤更正碼(錯(cuò)誤更正數(shù)據(jù))所能提供的數(shù)據(jù)正確性。接著關(guān)于步驟s240中如何選擇性地將第一儲(chǔ)存數(shù)據(jù)寫入閃存的流程,請(qǐng)參照?qǐng)D5,圖5為圖2的步驟s240的流程圖。如圖5所示,步驟s240包含:步驟s241,判斷第一錯(cuò)誤更正數(shù)據(jù)的第二數(shù)據(jù)長度是小于第二門坎值還是等于第二門坎值。當(dāng)判斷第二數(shù)據(jù)長度小于第二門坎值時(shí),執(zhí)行步驟s243,將第一儲(chǔ)存數(shù)據(jù)寫入閃存,并以第一算法依據(jù)第一儲(chǔ)存數(shù)據(jù)產(chǎn)生前述具有第三數(shù)據(jù)長度的第二錯(cuò)誤更正數(shù)據(jù)。當(dāng)判斷第二數(shù)據(jù)長度等于第二門坎值時(shí),執(zhí)行步驟s245,將第一儲(chǔ)存數(shù)據(jù)寫入閃存,并以第二算法依據(jù)第一儲(chǔ)存數(shù)據(jù)產(chǎn)生第三錯(cuò)誤更正數(shù)據(jù),第三錯(cuò)誤更正數(shù)據(jù)具有第二數(shù)據(jù)長度。具體來說,閃存的一個(gè)頁面例如最多提供8192字節(jié)外加640字節(jié)的數(shù)據(jù)長度。因此最多提供長達(dá)8192字節(jié)的數(shù)據(jù)區(qū)塊與長達(dá)640字節(jié)的錯(cuò)誤檢查區(qū)塊。在這樣的實(shí)施例中,當(dāng)?shù)诙?shù)據(jù)長度(現(xiàn)有的錯(cuò)誤更正數(shù)據(jù)的長度)等于640字節(jié)時(shí),表示已經(jīng)使用到最長的錯(cuò)誤更正數(shù)據(jù)(bch碼)。因此計(jì)算器裝置于此時(shí)將錯(cuò)誤更正數(shù)據(jù)的格式從bch碼更換為低密度奇偶檢查碼(low-densityparity-checkcode,ldpccode)。如此,在長度為640字節(jié)的狀況下,bch碼僅能提供最多301位的錯(cuò)誤更正能力,而低密度奇偶檢查碼將能提供多于301位的錯(cuò)誤更正能力。上述的方法流程,執(zhí)行于用來對(duì)閃存進(jìn)行存取的計(jì)算器裝置。實(shí)作上是直接將第一儲(chǔ)存數(shù)據(jù)與第一錯(cuò)誤更正數(shù)據(jù)都從閃存中的儲(chǔ)存區(qū)塊中取得。然后以計(jì)算器裝置的中央處理器來進(jìn)行位錯(cuò)誤率的檢查以及存取次數(shù)的取得。此外,于一實(shí)施例中,前述閃存存取方法,更包括:執(zhí)行軟件,以第一閃存轉(zhuǎn)換格式從閃存中讀取第一數(shù)據(jù)。依據(jù)指令,將第一數(shù)據(jù)以第一閃存轉(zhuǎn)換格式或第二閃存轉(zhuǎn)換格式寫入閃存。具體來說,閃存轉(zhuǎn)換格式是用來描述閃存的數(shù)據(jù)配置,使得對(duì)于計(jì)算器裝置而言,閃存如同一般的硬盤操作方式一樣簡(jiǎn)單。舉例來說,第二閃存轉(zhuǎn)換格式使得閃存對(duì)于計(jì)算器來說如同32位文件分配表(fileallocationtable-32bit,fat32)格式的硬盤。而第一閃存轉(zhuǎn)換格式使得閃存對(duì)于計(jì)算器來說如同新技術(shù)文件系統(tǒng)(newtechnologyfilesystem,ntfs)格式的硬盤。而前述流程具體來說,例如將閃存中以第一閃存轉(zhuǎn)換格式儲(chǔ)存的數(shù)據(jù)讀出,轉(zhuǎn)以第二閃存轉(zhuǎn)換格式寫入閃存。因此閃存中的數(shù)據(jù)就能被較舊型的計(jì)算器(例如x86計(jì)算器)辨識(shí)與讀取。另一實(shí)施例,第一閃存轉(zhuǎn)換格式使得閃存對(duì)于計(jì)算器來說如同32位文件分配表(fileallocationtable-32bit,fat32)格式的硬盤。而第二閃存轉(zhuǎn)換格式使得閃存對(duì)于計(jì)算器來說如同新技術(shù)文件系統(tǒng)(newtechnologyfilesystem,ntfs)格式的硬盤。而前述流程具體來說,例如將閃存中以第二閃存轉(zhuǎn)換格式儲(chǔ)存的數(shù)據(jù)讀出,轉(zhuǎn)以第一閃存轉(zhuǎn)換格式寫入閃存。因此,依照上述記載的閃存存取方法,可以對(duì)下述提出的閃存進(jìn)行存取。請(qǐng)參照?qǐng)D6,為本發(fā)明一實(shí)施例所實(shí)現(xiàn)的閃存。如圖6所示,閃存6000具有一個(gè)第一儲(chǔ)存模塊6100與一個(gè)第二儲(chǔ)存模塊6200。第一儲(chǔ)存模塊6100的配置不同于第二儲(chǔ)存模塊6200。具體來說,第一儲(chǔ)存模塊6100例如具有多個(gè)第一儲(chǔ)存區(qū)塊6110、6120乃至于6180與一個(gè)系統(tǒng)區(qū)塊6190。其中各個(gè)第一儲(chǔ)存區(qū)塊中的配置相同,以第一儲(chǔ)存區(qū)塊6110舉例,第一儲(chǔ)存區(qū)塊6110具有第一數(shù)據(jù)區(qū)塊6111與第一錯(cuò)誤檢查區(qū)塊6113。第一數(shù)據(jù)區(qū)塊6111的位長度(最大數(shù)據(jù)容量)例如為1024字節(jié),而第一錯(cuò)誤檢查區(qū)塊6113的位長度(最大數(shù)據(jù)容量)例如為80字節(jié)。而系統(tǒng)區(qū)塊6190有第二數(shù)據(jù)區(qū)塊6191與第二錯(cuò)誤檢查區(qū)塊6193,其中第二數(shù)據(jù)區(qū)塊6191的位長度例如為5120字節(jié),第二錯(cuò)誤檢查區(qū)塊6193的位長度例如為3712字節(jié)。第二儲(chǔ)存模塊6200例如具有多個(gè)第二儲(chǔ)存區(qū)塊6210、6220乃至6280。其中各個(gè)第二儲(chǔ)存區(qū)塊中的配置相同,以第二儲(chǔ)存區(qū)塊6210舉例,第二儲(chǔ)存區(qū)塊6210具有第三數(shù)據(jù)區(qū)塊6211與第三錯(cuò)誤檢查區(qū)塊6213。第三數(shù)據(jù)區(qū)塊6211的位長度(最大數(shù)據(jù)容量)例如為2048字節(jié),而第三錯(cuò)誤檢查區(qū)塊6213的位長度(最大數(shù)據(jù)容量)例如為160字節(jié)。當(dāng)計(jì)算器裝置對(duì)閃存6000中的第一儲(chǔ)存模塊6100取得數(shù)據(jù)時(shí),例如從第一儲(chǔ)存區(qū)塊6120中取得數(shù)據(jù),則計(jì)算器裝置辨識(shí)出此數(shù)據(jù)由數(shù)據(jù)長度為1024字節(jié)的儲(chǔ)存數(shù)據(jù)與數(shù)據(jù)長度為80字節(jié)的錯(cuò)誤更正數(shù)據(jù)組成,并且計(jì)算器裝置得以確認(rèn)其中的錯(cuò)誤更正數(shù)據(jù)(錯(cuò)誤更正碼)是哪一種格式、應(yīng)使用哪一種算法來進(jìn)行錯(cuò)誤檢查與更正。因此計(jì)算器裝置得以對(duì)取得的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查與更正。而當(dāng)計(jì)算器裝置對(duì)閃存6000中的第二儲(chǔ)存模塊6200取得數(shù)據(jù)時(shí),例如從第二儲(chǔ)存區(qū)塊6230中取得數(shù)據(jù),則計(jì)算器裝置辨識(shí)出此數(shù)據(jù)由數(shù)據(jù)長度為2048字節(jié)的儲(chǔ)存數(shù)據(jù)與數(shù)據(jù)長度為160字節(jié)的錯(cuò)誤更正數(shù)據(jù)組成。同樣地,計(jì)算器裝置得以對(duì)應(yīng)地對(duì)取得的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查與更正。并且,利用軟件來進(jìn)行閃存的存取與錯(cuò)誤檢查,則在同一個(gè)實(shí)體閃存中,得以用多種不同地錯(cuò)誤更正碼或錯(cuò)誤更正算法,例如在同一個(gè)實(shí)體閃存中,部分的數(shù)據(jù)使用bch碼,另一部分的數(shù)據(jù)使用低密度奇偶檢查碼。此外,于另一實(shí)施例中,前述第一儲(chǔ)存模塊6100與前述第二儲(chǔ)存模塊6200并非配置不同,而是使用的算法不同。舉例來說,第一儲(chǔ)存模塊6100應(yīng)用bch碼,而第二儲(chǔ)存模塊6200應(yīng)用ldpc碼。當(dāng)計(jì)算器裝置從第一儲(chǔ)存模塊6100取得儲(chǔ)存數(shù)據(jù)與錯(cuò)誤更正碼時(shí),計(jì)算器裝置由于運(yùn)行軟件來進(jìn)行錯(cuò)誤更正,因此得以辨認(rèn)出要用bch碼來進(jìn)行錯(cuò)誤更正。此外,如同前述,當(dāng)計(jì)算器裝置判斷從第一儲(chǔ)存模塊6100取得的數(shù)據(jù)位錯(cuò)誤率高于門坎值,則計(jì)算器裝置也可以將取得的儲(chǔ)存數(shù)據(jù)寫入第二儲(chǔ)存模塊6200。由于在相同的配置下,第二儲(chǔ)存模塊6200使用的ldpc碼的錯(cuò)誤更正能力優(yōu)于第一儲(chǔ)存模塊6100使用的bch碼,因此這樣的運(yùn)作得以提供更好的錯(cuò)誤更正能力。舉例來說,當(dāng)判斷一筆待儲(chǔ)存數(shù)據(jù)的安全性需求為第一類別(較低),則將待儲(chǔ)存數(shù)據(jù)以bch碼產(chǎn)生錯(cuò)誤更正數(shù)據(jù)。并將待儲(chǔ)存數(shù)據(jù)與其對(duì)應(yīng)的錯(cuò)誤更正數(shù)據(jù)寫入第一儲(chǔ)存模塊6100。當(dāng)判斷一筆待儲(chǔ)存數(shù)據(jù)的安全性需求為第二類別(較高,如閃存轉(zhuǎn)換層中的系統(tǒng)表),則將待儲(chǔ)存數(shù)據(jù)以ldpc碼產(chǎn)生錯(cuò)誤更正數(shù)據(jù)。并將待儲(chǔ)存數(shù)據(jù)與其對(duì)應(yīng)的錯(cuò)誤更正數(shù)據(jù)寫入第二儲(chǔ)存模塊6200。在此僅以不同的編碼方式來提高安全性,使其更能擴(kuò)充其意義。當(dāng)然也可用相同編碼但不同長度對(duì)不同安全性數(shù)據(jù)分別進(jìn)行處理。于另一實(shí)施例中,安全性需求可以不只兩個(gè)類別,而是依據(jù)軟件所能提供的錯(cuò)誤更正算法數(shù)量來決定安全性需求分類的數(shù)量。于再一實(shí)施例中,第一儲(chǔ)存模塊6100中的數(shù)據(jù)長度為1024字節(jié)而錯(cuò)誤更正碼長度都為80字節(jié)。而第二儲(chǔ)存模塊6200中的數(shù)據(jù)長度為2048字節(jié)而錯(cuò)誤更正碼長度都為160字節(jié)。當(dāng)計(jì)算器執(zhí)行軟件判斷待儲(chǔ)存數(shù)據(jù)的類別時(shí),計(jì)算器進(jìn)一步判斷待儲(chǔ)存數(shù)據(jù)的數(shù)據(jù)長度,以決定要儲(chǔ)存在第一儲(chǔ)存模塊6100還是第二儲(chǔ)存模塊6200。舉例來說當(dāng)待儲(chǔ)存數(shù)據(jù)是第一類別,且其數(shù)據(jù)長度為1024字節(jié)時(shí),待儲(chǔ)存數(shù)據(jù)被計(jì)算器以bch碼產(chǎn)生其錯(cuò)誤更正數(shù)據(jù),并且被寫入第一儲(chǔ)存模塊6100。當(dāng)待儲(chǔ)存數(shù)據(jù)是第一類別,且其數(shù)據(jù)長度為2048字節(jié)時(shí),待儲(chǔ)存數(shù)據(jù)被計(jì)算器以bch碼產(chǎn)生其錯(cuò)誤更正數(shù)據(jù),并且被寫入第二儲(chǔ)存模塊6200。當(dāng)待儲(chǔ)存數(shù)據(jù)是第二類別,且其數(shù)據(jù)長度為1024字節(jié)時(shí),待儲(chǔ)存數(shù)據(jù)被計(jì)算器以ldpc碼產(chǎn)生其錯(cuò)誤更正數(shù)據(jù),并且被寫入第一儲(chǔ)存模塊6100。當(dāng)待儲(chǔ)存數(shù)據(jù)是第二類別,且其數(shù)據(jù)長度為2048字節(jié)時(shí),待儲(chǔ)存數(shù)據(jù)被計(jì)算器以ldpc碼產(chǎn)生其錯(cuò)誤更正數(shù)據(jù),并且被寫入第二儲(chǔ)存模塊6200。于在一實(shí)施例中,計(jì)算器裝置得以配備硬件電路直接對(duì)所取得的儲(chǔ)存數(shù)據(jù)與錯(cuò)誤更正碼進(jìn)行譯碼與錯(cuò)誤更正。如果譯碼(錯(cuò)誤更正)成功,則輸出譯碼結(jié)果。如果譯碼失敗,則表示儲(chǔ)存數(shù)據(jù)與錯(cuò)誤更正碼的位錯(cuò)誤率過高,或是硬件電路所使用的算法不適用于當(dāng)前的錯(cuò)誤更正碼。如此,計(jì)算器裝置再執(zhí)行軟件以前述各實(shí)施例的流程來進(jìn)行譯碼。具體來說,直接用硬件電路進(jìn)行譯碼所花費(fèi)的時(shí)間少,而以軟件來譯碼可以提供較高的錯(cuò)誤更正能力。當(dāng)前第1頁12當(dāng)前第1頁12