專利名稱:非易失性存儲系統(tǒng)、非易失性存儲裝置、數(shù)據(jù)讀出方法及讀出程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明特別涉及在被寫入的文件因數(shù)據(jù)保持不良等錯誤而被損壞的情況下,在從非易失性存儲裝置中讀出數(shù)據(jù)方面具有特征的非易失性存儲系統(tǒng)、非易失性存儲裝置、其數(shù)據(jù)讀出方法以及數(shù)據(jù)讀出程序。
背景技術(shù):
近年來,安裝了非易失性存儲器的非易失性存儲裝置作為數(shù)字照相機和便攜式電話的存儲卡而擴(kuò)大了市場。于是,伴隨著存儲卡存儲容量的增加,從數(shù)據(jù)文件和靜止圖像等小容量的記錄向需要更大容量的活動圖像記錄的要求及其用途也不斷加寬。
但是,存儲卡中主要用作非易失性存儲器的NAND型快閃存儲器本質(zhì)上具有在數(shù)據(jù)保持中出現(xiàn)錯誤的可能性。為此,在應(yīng)記錄的數(shù)據(jù)內(nèi)附加糾錯碼(Error correcting code)(以下稱為ECC)后寫入快閃存儲器內(nèi),并在讀出時通過基于糾錯碼執(zhí)行數(shù)據(jù)糾正,在發(fā)生了數(shù)據(jù)保持錯誤時確保數(shù)據(jù)。
發(fā)明內(nèi)容
但是,在發(fā)生了超越ECC的糾正能力的數(shù)據(jù)保持錯誤的情況下,不能執(zhí)行數(shù)據(jù)糾正。存儲卡不僅不輸出發(fā)生了錯誤的位,而且也不輸出包含該被認(rèn)為是不正確的位的管理單位的數(shù)據(jù)。在這種情況下,就丟失了包含該位在內(nèi)的管理單位的數(shù)據(jù)。為此,在將非易失性存儲器用作數(shù)字相機的數(shù)據(jù)記錄的情況下,或者是大大損壞了用戶好不容易拍攝到的珍貴的靜止圖像或活動圖像的數(shù)據(jù)的一部分,或者是丟失了這些數(shù)據(jù)。但是,實際上,即便靜止圖像或活動圖像的數(shù)據(jù)中的一部分位發(fā)生了錯誤,大多也可得到接近原始靜止圖像的圖像,對于活動圖像而言,大多也只有瞬間的圖像紊亂程度。為此,我們考慮到與丟失數(shù)據(jù)相比,即便是例如發(fā)生了位錯誤的數(shù)據(jù),對其進(jìn)行讀出也有很大的意義。
在非易失性存儲裝置的數(shù)據(jù)保持塊的錯誤發(fā)生位數(shù)多于非易失存儲裝置中所對應(yīng)的糾錯能力的情況下,存在不能按照包含發(fā)生了錯誤的位的數(shù)據(jù)塊單位來讀出數(shù)據(jù)的問題。
為了解決該問題,本發(fā)明的非易失性存儲系統(tǒng)包括非易失性存儲裝置、以及存取所述非易失性存儲裝置并讀出非易失性存儲裝置的用戶數(shù)據(jù)的存取裝置,其中,所述非易失性存儲裝置包括非易失性存儲器,該非易失性存儲器具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域,以及管理區(qū)域,所述管理區(qū)域用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼;以及控制器,該控制器包括基于所述管理區(qū)域中的糾錯碼,對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤進(jìn)行糾正的糾錯電路,其中所述控制器進(jìn)行從所述非易失性存儲器中讀出用戶數(shù)據(jù),并在存在錯誤時利用所述糾錯電路來執(zhí)行糾錯、而在沒有錯誤時原樣讀出數(shù)據(jù)的糾錯讀出,和原樣輸出從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的原始數(shù)據(jù)讀出;所述存取裝置對使用了所述糾錯讀出的用戶數(shù)據(jù)讀出以及所述原始數(shù)據(jù)讀出進(jìn)行組合后從所述非易失性存儲裝置中讀出用戶數(shù)據(jù)。
為了解決上述課題,本發(fā)明的非易失性存儲裝置包括非易失性存儲器,該非易失性存儲器具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域,以及管理區(qū)域,所述管理區(qū)域用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼;和控制器,該控制器包括基于所述糾錯碼,對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤進(jìn)行糾正的糾錯電路,其中,所述控制器具有普通讀出模式,在沒有錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)、在包含可糾正的錯誤的情況下對用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)錯誤進(jìn)行糾正后輸出、而在包含不可糾正的錯誤的情況下不執(zhí)行數(shù)據(jù)輸出;以及特殊讀出模式,在沒有錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù);在包含可糾正的錯誤的情況下對用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)錯誤進(jìn)行糾正后輸出、而在包含不可糾正的錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)。
為了解決該課題,本發(fā)明的數(shù)據(jù)讀出方法用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中,所述數(shù)據(jù)讀出方法包括以下步驟從所述非易失性存儲器中讀出用戶數(shù)據(jù);判別從非易失性存儲器中讀出的用戶數(shù)據(jù)中有無錯誤;若用戶數(shù)據(jù)中沒有錯誤,則原樣輸出該用戶數(shù)據(jù);若有錯誤,則使用所述糾錯電路來執(zhí)行糾錯后進(jìn)行輸出;以及在不能使用所述糾錯電路來糾正錯誤的情況下,原樣輸出從所述非易失性存儲器中讀出的用戶數(shù)據(jù)。
為了解決該課題,本發(fā)明的數(shù)據(jù)讀出程序用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中所述控制器利用普通讀出模式來讀出用戶數(shù)據(jù),所述普通讀出模式是指所述控制器使用所述糾錯電路對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)中的錯誤進(jìn)行糾正后,將其輸出到所述易失性存儲裝置外部;以及在所述非易失性存儲器內(nèi)發(fā)生了不能利用所述糾錯電路來糾正的錯誤、并判斷為不能通過所述普通讀出模式進(jìn)行讀出的情況下,所述控制器利用糾錯關(guān)斷讀出模式(ECC關(guān)斷)來讀出用戶數(shù)據(jù),所述糾錯關(guān)斷讀出模式是指所述控制器不使用所述糾錯電路,而將從所述非易失性存儲器中讀出的用戶數(shù)據(jù)原樣輸出到所述易失性存儲裝置外部。
為了解決該課題,本發(fā)明的數(shù)據(jù)讀出程序用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中對于所述非易失性存儲裝置,利用特殊讀出模式來讀出用戶數(shù)據(jù),在所述特殊讀出模式下,在包含能夠糾正的錯誤時對從所述非易失性存儲器讀出的用戶數(shù)據(jù)進(jìn)行糾正后輸出,而在包含不能糾正的錯誤時輸出從所述非易失性存儲器中讀出的原始數(shù)據(jù)。
根據(jù)本發(fā)明的非易失性存儲系統(tǒng)、非易失性存儲裝置及其數(shù)據(jù)讀出方法和數(shù)據(jù)讀出程序,即便在例如非易失性存儲裝置內(nèi)部發(fā)生了超出了非易失性存儲裝置所具有的糾錯能力的錯誤、且對錯誤進(jìn)行糾正后不能讀出該數(shù)據(jù)的狀態(tài)下,通過不使用糾錯而執(zhí)行讀出,能夠讀出非易失性存儲裝置的數(shù)據(jù),其結(jié)果是,能夠以完全或不完全的形式讀出數(shù)據(jù)。
圖1是本發(fā)明實施例1的非易失性存儲裝置的框圖。
圖2是本發(fā)明實施例1的存取裝置的結(jié)構(gòu)的框圖。
圖3是本發(fā)明實施例1的快閃存儲器的頁的數(shù)據(jù)結(jié)構(gòu)圖。
圖4是表示本發(fā)明實施例1的存取裝置的數(shù)據(jù)讀出的流程圖。
圖5是表示本發(fā)明實施例1的存儲卡內(nèi)的數(shù)據(jù)讀出的流程圖。
圖6A圖示了寫入到快閃存儲器內(nèi)的圖像。
圖6B圖示了在產(chǎn)生了該錯誤時被讀出的圖像。
圖6C圖示了實施例1中的數(shù)據(jù)讀出后的圖像。
圖7是本發(fā)明實施例2的非易失性存儲裝置的框圖。
圖8是表示本發(fā)明實施例2的存取裝置的數(shù)據(jù)讀出的流程圖。
圖9是表示本發(fā)明實施例2的存儲卡的數(shù)據(jù)讀出的流程圖。
具體實施例方式
以下,使用附圖來說明本發(fā)明的實施例1。圖1是表示依據(jù)本發(fā)明實施例1的非易失性存儲裝置的框圖,圖2是表示存取裝置的一個例子的框圖。在圖1中,存儲卡100A是非易失性存儲裝置,從存取裝置120對存儲卡100A執(zhí)行數(shù)據(jù)的寫入和讀出。由該存儲卡100A和存取裝置120構(gòu)成非易失性存儲系統(tǒng)。存儲卡100A包含以下部件而構(gòu)成控制器101A;作為非易失性存儲器的快閃存儲器102。在控制器101A中,主機I/F 111是存取裝置120和控制器101A的接口,快閃I/F 112是快閃存儲器102和控制器101A的接口??刂齐娐?13對控制器101A內(nèi)部的各塊進(jìn)行控制,以執(zhí)行以下控制時而將來自存取裝置120的寫入數(shù)據(jù)寫入到快閃存儲器102內(nèi),時而將快閃存儲器102的數(shù)據(jù)讀出到存取裝置120內(nèi)。頁緩沖器114是用于暫時存儲從存取裝置120傳送來的、寫入到快閃存儲器102內(nèi)的數(shù)據(jù)、或者從快閃存儲器讀出的數(shù)據(jù)的緩沖器。這里,設(shè)頁緩沖器114的容量為2kB(字節(jié))。ECC電路115是這樣一種糾錯電路在將數(shù)據(jù)從存取裝置120寫入到快閃存儲器102內(nèi)時,附加基于寫入數(shù)據(jù)而運算出的糾錯碼,而在將數(shù)據(jù)從快閃存儲器102讀出到存取裝置120時,利用ECC對暫時讀出到頁緩沖器114內(nèi)的數(shù)據(jù)執(zhí)行糾錯。ECC切換標(biāo)志116是保持切換以下兩種模式的信息的標(biāo)志執(zhí)行糾錯后讀出數(shù)據(jù)的ECC接通模式;以及,不執(zhí)行ECC糾正而讀出數(shù)據(jù)的ECC關(guān)斷模式。
接下來,使用圖2來說明存取裝置120。存取裝置120具有控制整體的CPU 121、輸入裝置122、顯示裝置123、存儲裝置124以及存儲卡I/F 125。存儲卡I/F 125具有命令控制部126、寫入控制部127、讀出控制部128,并用于控制存儲卡的接口。例如,在該存取裝置120為數(shù)字相機的情況下,快門和用戶可操作的按鈕等以及用于輸入圖像數(shù)據(jù)的CCD成為輸入裝置122,液晶面板成為顯示裝置123。命令控制部126是向存儲卡100A發(fā)出命令的部件。寫入控制部127、讀出控制部128分別用作將數(shù)據(jù)寫入存儲卡、以及讀出數(shù)據(jù)時的控制部。
在存取裝置120從存儲卡100讀出數(shù)據(jù)時,基于安裝在CPU 121內(nèi)的數(shù)據(jù)讀出程序,使用命令控制部126和讀出控制部128從存儲卡中讀出數(shù)據(jù)。在存取裝置120向存儲卡100內(nèi)寫入數(shù)據(jù)時,基于安裝在CPU 121內(nèi)的數(shù)據(jù)寫入程序,使用命令控制部126和寫入控制部127向存儲卡中寫入數(shù)據(jù)。
快閃存儲器102是保持用戶數(shù)據(jù)的非易失性存儲器,它由作為刪除單位的多個物理塊構(gòu)成。各物理塊由多個頁構(gòu)成。圖3圖示了作為快閃存儲器102的寫入、讀出單位的頁單位的數(shù)據(jù)結(jié)構(gòu)。各頁由具有2kB(字節(jié))容量的用戶數(shù)據(jù)區(qū)域201和具有64B容量的管理區(qū)域202構(gòu)成。用戶數(shù)據(jù)區(qū)域201是原樣寫入從存取裝置120送來的用戶數(shù)據(jù)的區(qū)域。管理區(qū)域202是寫入用戶數(shù)據(jù)的管理信息的區(qū)域,它包含對用戶數(shù)據(jù)執(zhí)行糾錯的ECC 203。將用戶數(shù)據(jù)按用戶數(shù)據(jù)區(qū)域(2kB)單位進(jìn)行分割而寫入快閃存儲器102內(nèi)。盡管這里將分割單位設(shè)為2kB,但并不是特別限定,一般來說,既可以使用作為從存取裝置120進(jìn)行存取的存取單位的512B,也可以使用其他容量。
首先,使用圖4、圖5,對存取裝置120從存儲卡100A中讀出數(shù)據(jù)的情況進(jìn)行說明。圖4是表示存取裝置120的操作的流程圖,圖5是表示了存儲卡100A的動作的流程圖。首先一開始,在使存儲卡100A連接到存取裝置120上并接通電源的狀態(tài)下,控制電路113將ECC切換標(biāo)志116設(shè)定為ECC接通模式。此為標(biāo)準(zhǔn)狀態(tài)。存取裝置120對存儲卡100A指定邏輯地址,并發(fā)出讀出命令。這里,將數(shù)據(jù)讀出單位設(shè)定為扇區(qū)單位,將變量m和n設(shè)為扇區(qū)單位的變量。扇區(qū)既可以具有與前述物理塊相同的容量,也可以具有與之不同的容量。然后,在步驟S01中,將變量m設(shè)定為應(yīng)讀出的數(shù)據(jù)的起始扇區(qū),將變量n設(shè)定為0。接下來,在步驟S02中,在ECC接通模式下讀出扇區(qū)m的數(shù)據(jù)。
另一方面,在存儲卡100A中,從存取裝置120接收讀出命令(步驟S11)。主機I/F 111向控制電路113通知命令是讀出命令以及來自存取裝置120的邏輯地址的信息??刂齐娐?13確定寫入了該邏輯地址的數(shù)據(jù)的快閃存儲器102的物理地址,并將該信息和讀出執(zhí)行命令通知給快閃I/F 112??扉WI/F 112對快閃存儲器102發(fā)出讀出命令。以這種方式,從快閃存儲器102的對象扇區(qū)中讀出數(shù)據(jù)(步驟S12)。將其中的用戶數(shù)據(jù)區(qū)域201的數(shù)據(jù)傳送到頁緩沖器114和ECC電路115內(nèi)。之后,快閃I/F 112將管理區(qū)域202內(nèi)所包含的ECC 203僅僅發(fā)送到ECC電路115。在傳送結(jié)束后,控制電路113從ECC電路115得到有關(guān)錯誤的信息,以判斷有無錯誤(步驟S13)。在沒有錯誤的情況下,經(jīng)由主機I/F 111向存取裝置120原樣輸出頁緩沖器114的數(shù)據(jù)(步驟S17)。在存在可糾正的錯誤的情況下,利用ECC電路115來糾正頁緩沖器114中的錯誤(步驟S14、S15)。之后,轉(zhuǎn)到步驟S17,經(jīng)由主機I/F 111,向存取裝置120輸出頁緩沖器114的數(shù)據(jù)。以這種方式,存取裝置120能夠從存儲卡100A讀出數(shù)據(jù)。
另一方面,在產(chǎn)生了不能糾正的錯誤的情況下,控制電路113在步驟S16中判斷ECC切換標(biāo)志116。由于該標(biāo)志最初為ECC接通,因此,不輸出數(shù)據(jù)而結(jié)束讀出處理,并且不向存取裝置120輸出頁緩沖器114的數(shù)據(jù)。
另一方面,存取裝置120在圖4所示的判斷步驟S03中判定在扇區(qū)m的數(shù)據(jù)內(nèi)是否產(chǎn)生了不能糾正的ECC錯誤。如前所述,若從存儲卡100A輸出了數(shù)據(jù),則判斷為無錯誤,而在沒有輸出數(shù)據(jù)時,通過向存儲卡100A詢問狀態(tài)來判定錯誤。
存儲卡100A的控制電路113經(jīng)主機I/F 111傳達(dá)發(fā)生了不能糾正的ECC錯誤。接受該信息后,存取裝置120發(fā)出不使用糾正命令,以便不對存儲卡100A執(zhí)行糾錯就執(zhí)行輸出。在接受了該命令后,控制電路113將ECC切換標(biāo)志116設(shè)定為不執(zhí)行糾錯地讀出數(shù)據(jù)的ECC關(guān)斷模式。
在該狀態(tài)下,存取裝置120為了讀出在步驟S04中因發(fā)生錯誤而沒有讀出的數(shù)據(jù),而再次發(fā)出讀出命令。在存儲卡100A一側(cè),針對存取裝置120的讀出命令,重復(fù)執(zhí)行圖5中步驟S11-S14的處理,并在步驟S16中執(zhí)行ECC切換標(biāo)志116的判定。由于該標(biāo)志是關(guān)斷(OFF),因此控制電路113不執(zhí)行數(shù)據(jù)糾正,而將頁緩沖器114的數(shù)據(jù)經(jīng)主機I/F 111原樣輸出到存取裝置120(步驟S17)。這被稱之為ECC關(guān)斷讀出。
以這種方式,無論有無錯誤,數(shù)據(jù)都得以輸出。在存取裝置120中,在步驟S05中,將此前緊挨著讀出的數(shù)據(jù)存儲到圖像文件Im(n)中。接下來,在步驟S06中,判定在此前緊挨著處理的扇區(qū)是否是應(yīng)讀出的數(shù)據(jù)的最終扇區(qū)。在判斷為是最終扇區(qū)的情況下,結(jié)束文件獲取處理,在判斷為不是最終扇區(qū)的情況下,轉(zhuǎn)到步驟S07。在步驟S07中,在分別使變量m、n加1后,返回步驟S02,重復(fù)執(zhí)行同樣的處理。通過以上的處理,能夠以完全或不完全的形式讀出數(shù)據(jù),并能夠識別包含了錯誤的扇區(qū)。
圖6A、圖6B、圖6C圖示了該實施例的效果。設(shè)圖6A是寫入到快閃存儲器內(nèi)的、沒有錯誤的圖像數(shù)據(jù)。在該圖像數(shù)據(jù)的一部分?jǐn)?shù)據(jù)因位錯誤而被損壞的情況下,在以往的存儲卡中僅能讀出錯誤發(fā)生之前的數(shù)據(jù)。因此,在顯示該圖像時,就會成為圖6B所示的樣子,圖像大大受損。對此,如本實施例所示,不管有無錯誤發(fā)生,都進(jìn)行數(shù)據(jù)的讀出,從而即便在發(fā)生了錯誤的部分不能被糾正的情況下,也只有例如如圖6C中編碼300所示的一部分圖像受損,基本上能夠再現(xiàn)原圖像。另外,在該數(shù)據(jù)是活動圖像數(shù)據(jù)時,可得到以下效果即便在發(fā)生了錯誤而且不能糾正該錯誤的情況下,也僅僅造成了瞬間圖像的紊亂,基本上能夠再現(xiàn)原活動圖像。
(實施例2)下面就本發(fā)明的實施例2進(jìn)行說明。圖7是表示本實施例的非易失性存儲裝置的結(jié)構(gòu)的框圖。對與實施例1相同的部分賦予相同的標(biāo)記。在該實施例中,非易失性存儲裝置100B由存儲器控制器101B和快閃存儲器102構(gòu)成。在存儲器控制器101B中,設(shè)ECC輸出許可標(biāo)志131為表示對允許和不允許不執(zhí)行基于糾錯碼的糾錯地輸出數(shù)據(jù)進(jìn)行切換的標(biāo)志??刂齐娐?32是保持執(zhí)行后述處理的程序的電路。在本實施例2中,通過在不使用ECC糾錯時也允許輸出數(shù)據(jù),將ECC輸出許可標(biāo)志131設(shè)定為在存儲卡100B內(nèi),在能夠自動使用ECC糾正功能的情況下,在執(zhí)行ECC糾正之后進(jìn)行輸出,而在不能執(zhí)行ECC糾正時,進(jìn)行原樣輸出。
接下來,使用圖8、圖9的流程圖來說明實施例2的操作。在存取裝置的數(shù)據(jù)讀出處理中,如圖8所示,為了讀出數(shù)據(jù),首先,在步驟S21中,將變量m設(shè)定為應(yīng)讀出數(shù)據(jù)的起始扇區(qū),將變量n設(shè)定為0。變量m和n是扇區(qū)單位的變量。接下來,在步驟S22中,讀出扇區(qū)m的數(shù)據(jù)。這里,假設(shè)允許無糾錯讀出。于是,在步驟S23中,將從扇區(qū)m讀出的數(shù)據(jù)存儲到圖像文件Im(n)中。在步驟S24中,判定在此前緊挨著處理的扇區(qū)是否是應(yīng)讀出數(shù)據(jù)的最終扇區(qū)。在判斷為是最終扇區(qū)的情況下,結(jié)束數(shù)據(jù)的讀出處理。在判斷為不是最終扇區(qū)的情況下,轉(zhuǎn)到步驟S25,在使變量m、n分別加1后,轉(zhuǎn)到步驟S22。
另一方面,在存儲卡100B中,如圖9所示,從存取裝置120接收讀出命令(步驟S31)。主機I/F 111向控制電路132通知命令是讀出命令、以及來自存取裝置120的邏輯地址的信息??刂齐娐?32確定寫入了該邏輯地址的數(shù)據(jù)的快閃存儲器102的物理地址,并將該信息和讀出執(zhí)行命令通知給快閃I/F 112??扉WI/F 112對快閃存儲器102發(fā)出讀出命令。以這種方式,從快閃存儲器102的對象扇區(qū)中讀出數(shù)據(jù)(步驟S32)。將其中的用戶數(shù)據(jù)區(qū)域201的數(shù)據(jù)傳送到頁緩沖器114和ECC電路115。之后,快閃I/F 112將管理區(qū)域202內(nèi)所包含的ECC203僅僅傳送給ECC電路115。在傳送結(jié)束后,控制電路132從ECC電路115得到有關(guān)錯誤的信息,以判別有無錯誤(步驟S33)。在沒有錯誤的情況下,將頁緩沖器114的數(shù)據(jù)經(jīng)主機I/F 111原樣輸出到存取裝置120(步驟S37)。在存在可糾正的錯誤的情況下,利用ECC電路115來糾正頁緩沖器114中的錯誤(步驟S34、S35)。之后,轉(zhuǎn)到步驟S37,將頁緩沖器114的數(shù)據(jù)經(jīng)由主機I/F 111輸出到存取裝置120。
在步驟S34中,在不可糾正的情況下,轉(zhuǎn)到步驟S36。于是,參照ECC輸出許可標(biāo)志131來判別是否允許無糾正輸出。在允許無糾正輸出的情況下,轉(zhuǎn)到步驟S37以輸出數(shù)據(jù),而在不允許無糾正輸出的情況下,不讀出數(shù)據(jù)而結(jié)束讀出處理。在不允許無糾正輸出的情況下,與以往的存儲卡一樣,而在允許無糾正輸出的情況下,能夠以完全或不完全的形式從存儲卡100B中讀出數(shù)據(jù)。
本發(fā)明實施例中的非易失性存儲系統(tǒng)、非易失性存儲裝置、數(shù)據(jù)讀出方法以及讀出程序?qū)ν簧葏^(qū)而言,除了具有執(zhí)行糾錯的普通讀出模式外,還具有不執(zhí)行糾錯地進(jìn)行讀出的特殊讀出模式這2種讀出模式,因此,能夠強有力地讀出數(shù)據(jù)。
如上所述,依據(jù)本發(fā)明的非易失性存儲裝置的數(shù)據(jù)讀出方法和讀出程序能夠適用于在處理靜止圖像數(shù)據(jù)和活動圖像數(shù)據(jù)的數(shù)字相機和數(shù)字?jǐn)z像機等便攜式設(shè)備中所使用的非易失性存儲裝置。
權(quán)利要求
1.一種非易失性存儲系統(tǒng),包括非易失性存儲裝置、以及對所述非易失性存儲裝置進(jìn)行存取并讀出非易失性存儲裝置的用戶數(shù)據(jù)的存取裝置,其中,所述非易失性存儲裝置包括非易失性存儲器,該非易失性存儲器具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域,以及管理區(qū)域,所述管理區(qū)域用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼;以及控制器,該控制器包括基于所述管理區(qū)域中的糾錯碼,對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤進(jìn)行糾正的糾錯電路,其中所述控制器進(jìn)行從所述非易失性存儲器中讀出用戶數(shù)據(jù),并在存在錯誤時利用所述糾錯電路來執(zhí)行糾錯、而在沒有錯誤時原樣讀出該數(shù)據(jù)的糾錯讀出,和原樣輸出從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的原始數(shù)據(jù)讀出;所述存取裝置對使用了所述糾錯讀出的用戶數(shù)據(jù)讀出以及所述原始數(shù)據(jù)讀出進(jìn)行組合后從所述非易失性存儲裝置中讀出用戶數(shù)據(jù)。
2.如權(quán)利要求1所述的非易失性存儲系統(tǒng),其中,所述存取裝置通過向所述非易失性存儲裝置進(jìn)行指示來使用所述糾錯讀出,并在不能執(zhí)行所述糾錯時切換到所述原始數(shù)據(jù)讀出以讀出用戶數(shù)據(jù)。
3.如權(quán)利要求1所述的非易失性存儲系統(tǒng),其中,在使用了所述糾錯讀出的用戶數(shù)據(jù)讀出中,所述存取裝置根據(jù)沒有從所述非易失性存儲裝置輸出數(shù)據(jù),來判斷發(fā)生了所述糾錯電路不能糾正的錯誤。
4.如權(quán)利要求2所述的非易失性存儲系統(tǒng),其中,所述控制器具有用以識別是否執(zhí)行使用了糾錯碼的糾正的標(biāo)志,利用所述標(biāo)志來切換所述糾錯讀出和所述原始數(shù)據(jù)讀出。
5.一種非易失性存儲裝置,包括非易失性存儲器,該非易失性存儲器具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域,以及管理區(qū)域,所述管理區(qū)域用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼;和控制器,該控制器包括基于所述糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)中的錯誤進(jìn)行糾正的糾錯電路,其中,所述控制器具有普通讀出模式,在沒有錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)、在包含可糾正的錯誤的情況下對用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)錯誤進(jìn)行糾正后輸出、而在包含不可糾正的錯誤的情況下不執(zhí)行數(shù)據(jù)輸出;以及特殊讀出模式,在沒有錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù);在包含可糾正的錯誤的情況下對用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)錯誤進(jìn)行糾正后輸出、而在包含不可糾正的錯誤的情況下原樣輸出用戶數(shù)據(jù)區(qū)域的數(shù)據(jù)。
6.如權(quán)利要求5所述的非易失性存儲裝置,其中,所述控制器具有識別是否允許不使用糾錯即可輸出數(shù)據(jù)的標(biāo)志,所述控制器利用該標(biāo)志的值來執(zhí)行所述普通讀出模式和所述特殊讀出模式的切換。
7.如權(quán)利要求5所述的非易失性存儲裝置,其中,所述標(biāo)志從所述非易失性存儲裝置外部被切換。
8.一種數(shù)據(jù)讀出方法,用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中,所述數(shù)據(jù)讀出方法包括以下步驟從所述非易失性存儲器中讀出用戶數(shù)據(jù);判別從非易失性存儲器中讀出的用戶數(shù)據(jù)中有無錯誤;若用戶數(shù)據(jù)中沒有錯誤,則原樣輸出該用戶數(shù)據(jù);若有錯誤,則使用所述糾錯電路來執(zhí)行糾錯后進(jìn)行輸出;以及在不能使用所述糾錯電路來糾正錯誤的情況下,原樣輸出從所述非易失性存儲器中讀出的用戶數(shù)據(jù)。
9.一種數(shù)據(jù)讀出程序,用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中所述控制器利用普通讀出模式來讀出用戶數(shù)據(jù),所述普通讀出模式是指所述控制器使用所述糾錯電路對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)中的錯誤進(jìn)行糾正后,將其輸出到所述易失性存儲裝置外部;以及在所述非易失性存儲器內(nèi)發(fā)生了不能利用所述糾錯電路來糾正的錯誤、并判斷為不能通過所述普通讀出模式進(jìn)行讀出的情況下,所述控制器利用ECC關(guān)斷讀出模式來讀出用戶數(shù)據(jù),所述ECC關(guān)斷讀出模式是指所述控制器不使用所述糾錯電路,而將從所述非易失性存儲器中讀出的用戶數(shù)據(jù)原樣輸出到所述易失性存儲裝置外部。
10.如權(quán)利要求9所述的數(shù)據(jù)讀出程序,按扇區(qū)單位來切換使用所述普通讀出模式和所述ECC關(guān)斷讀出模式。
11.如權(quán)利要求9所述的數(shù)據(jù)讀出程序,其中,在使用了所述普通讀出模式的讀出過程中,在沒有從所述非易失性存儲裝置輸出數(shù)據(jù)的情況下,判斷為在所述非易失性存儲器內(nèi)發(fā)生了不能利用所述糾錯電路來糾正的錯誤,并且不能利用所述普通讀出模式來進(jìn)行讀出。
12.一種數(shù)據(jù)讀出程序,用于從非易失性存儲裝置中讀出用戶數(shù)據(jù),所述非易失性存儲裝置包括非易失性存儲器,具有用以寫入用戶數(shù)據(jù)的用戶數(shù)據(jù)區(qū)域、以及用以存儲對寫入到所述用戶數(shù)據(jù)區(qū)域內(nèi)的數(shù)據(jù)執(zhí)行糾錯的糾錯碼的管理區(qū)域;以及,控制器,包含基于所述管理區(qū)域內(nèi)的糾錯碼來對從所述非易失性存儲器中讀出的用戶數(shù)據(jù)的錯誤執(zhí)行糾正的糾錯電路,其中對于所述非易失性存儲裝置,利用特殊讀出模式來讀出用戶數(shù)據(jù),在所述特殊讀出模式下,在包含能夠糾正的錯誤時對從所述非易失性存儲器讀出的用戶數(shù)據(jù)進(jìn)行糾正后輸出,而在包含不能糾正的錯誤時輸出從所述非易失性存儲器中讀出的原始數(shù)據(jù)。
全文摘要
本發(fā)明提供一種非易失性存儲系統(tǒng)、非易失性存儲裝置、數(shù)據(jù)讀出方法及讀出程序,其中的非易失性存儲裝置具有控制器和快閃存儲器??扉W存儲器存儲用戶數(shù)據(jù)以及用于糾正用戶數(shù)據(jù)中的錯誤的糾錯碼。若存在來自外部的讀出命令,則從快閃存儲器中讀出用戶數(shù)據(jù)以及糾錯碼。在讀出的用戶數(shù)據(jù)中存在錯誤、但可糾正的情況下,執(zhí)行糾錯后輸出。若不能進(jìn)行糾錯,則原樣輸出該數(shù)據(jù)。
文檔編號G06F11/10GK1831780SQ200610054769
公開日2006年9月13日 申請日期2006年3月10日 優(yōu)先權(quán)日2005年3月10日
發(fā)明者本多利行 申請人:松下電器產(chǎn)業(yè)株式會社