專利名稱::數(shù)據(jù)存取方法、使用此方法的控制器與存儲系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明是有關(guān)于一種數(shù)據(jù)存取方法及使用此方法的控制器與存儲系統(tǒng),且特別是有關(guān)于一種用于快閃存儲器的數(shù)據(jù)存取方法及使用此方法的控制器與存儲系統(tǒng)。
背景技術(shù):
:近年來,由于數(shù)字相機、具有照相功能的手機、MP3,以及MP4的成長十分迅速,所以使得消費者對存儲介質(zhì)的需求也急劇增加。綜觀現(xiàn)今所有的存儲介質(zhì)而言,由于快閃存儲器(FlashMemory)具有數(shù)據(jù)非易失性、省電、體積小,以及無機械結(jié)構(gòu)等特性,所以最適合內(nèi)建于上述所舉例的多種可攜式多媒體裝置中。特別是,以快閃存儲器為存儲介質(zhì)的固態(tài)硬盤(SolidStateDrive,SSD)可有效地縮小攜帶型計算機的體積。因此,近年快閃存儲器產(chǎn)業(yè)成為電子產(chǎn)業(yè)中相當熱門的一環(huán)。一般來說,快閃存儲器的存儲系統(tǒng)內(nèi)會存有記錄邏輯區(qū)塊與物理區(qū)塊之間的對映關(guān)系的映射表(mappingtable)。當主才幾系統(tǒng)對某一邏輯區(qū)塊的地址(例如頁地址)進行存取時,存儲系統(tǒng)會依據(jù)此映射表將數(shù)據(jù)寫入至對應物藝的越來越精密,^號指令傳遞的過程中所產(chǎn)生的細微噪聲可能會影響數(shù)據(jù)或指令的內(nèi)容,進而造成數(shù)據(jù)的存取錯誤。在現(xiàn)有技術(shù)中,一般會使用錯誤校正碼(ErrorCorrectingCode)來對所存取的數(shù)據(jù)進行錯誤校正。然而,對于所傳輸?shù)闹噶疃圆o任何確保其正確性的機制。例如,當存儲系統(tǒng)傳送讀取指令以存取主機系統(tǒng)欲讀取的邏輯地址1所對應的物理地址1時,此讀取指令可能會因傳輸過程的噪聲而被誤判為請求讀取物理地址2,并且物理地址2的數(shù)據(jù)會因此被傳給主機系統(tǒng)。在此案例中,雖然所傳遞的數(shù)據(jù)已通過ECC機制驗證其正確性而傳送給主機系統(tǒng),但由于所讀取的地址發(fā)生誤判因此主機系統(tǒng)并未接收到所欲讀取的正確數(shù)據(jù)。換言之,在現(xiàn)有技術(shù)下存儲系統(tǒng)無法確保所讀取的地址是否是主機系統(tǒng)所欲讀取的地址,因此無法確保所讀取數(shù)據(jù)的正確性。特別是,對于需要高度數(shù)據(jù)可靠性與正確性的固態(tài)硬盤來說,如何克服上述缺點是相當?shù)闹匾?br/>發(fā)明內(nèi)容本發(fā)明提供一種數(shù)據(jù)存取方法,其能夠確保從正確的快閃存儲器物理地址中讀取數(shù)據(jù)。本發(fā)明提供一種控制器,其能夠確保從正確的快閃存儲器物理地址中讀取數(shù)據(jù)。本發(fā)明提供一種存儲系統(tǒng),其能夠確保從正確的快閃存儲器物理地址中讀取數(shù)據(jù)。本發(fā)明提出一種數(shù)據(jù)存取方法,其適用于快閃存儲器,此數(shù)據(jù)存取方法包括依據(jù)對應讀取指令中的欲讀取邏輯地址的欲讀取物理地址來在快閃存儲器的物理地址上進行讀取,并且確認所讀取的物理地址是否為欲讀取物理地址,其中當判斷所讀取的物理地址是欲讀取物理地址時才傳送所讀取物理地址中所存儲的主數(shù)據(jù)。在本發(fā)明的一實施例中,上述的信息存取方法還包括根據(jù)在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將檢查碼和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。此數(shù)據(jù)存取方法還包括從快閃存儲器的物理地址中讀取此物理地址中所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼來驗證所讀取的物理地址是否為欲讀取物理地址。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取方法還包括執(zhí)行循環(huán)冗余檢查(CycleRedundancyCheck,CRC)碼產(chǎn)生程序來產(chǎn)生上述檢查碼。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取方法還包括將檢查碼與邏輯地址存儲在上述欲寫入物理地址的冗余區(qū)中。在本發(fā)明的一實施例中,上述的信息存取方法還包括根據(jù)檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)產(chǎn)生錯誤校正碼,以及將所產(chǎn)生的錯誤校正碼寫入至上述欲寫入物理地址中。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取方法還包括依據(jù)所讀取的物理地址中的錯誤校正碼來確認所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容是否正確,其中當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時會對所讀取的檢查碼、邏輯地址與主數(shù)據(jù)進行錯誤校正。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取方法還包括當判斷所讀取的物理地址不是名炎讀耳又物理地址時重新再讀耳又一次;欲讀取物理地址。在本發(fā)明的一實施例中,上述的信息存取方法還包括根據(jù)寫入指令中的邏輯地址和在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。此數(shù)據(jù)存取方法還包括從快閃存儲器的物理地址中讀取此物理地址中所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼與邏輯地址來驗證所讀耳又的物理地址是否為欲讀取物理地址。本發(fā)明提出一種控制器,其適用于具有快閃存儲器的存儲系統(tǒng),此控制器包括快閃存儲器接口、緩沖存儲器、微處理器單元以及地址瑜認模塊??扉W存儲器接口用以存取快閃存儲器。緩沖存儲器用以暫時地存儲數(shù)據(jù)。微處理器單元耦接至快閃存儲器接口與緩沖存儲器并且用以依據(jù)對應讀取指令中的欲讀取邏輯地址的欲讀取物理地址來在快閃存儲器的物理地址上進行讀取。地址確認模塊耦接至微處理器單元并且用以確認所讀取的物理地址是否在本發(fā)明的一實施例中,上述的地址確認模塊還包括檢查碼產(chǎn)生單元與校驗單元。檢查碼產(chǎn)生單元耦接至微處理單元并且用以根據(jù)在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,其中微處理器單元會將所產(chǎn)生的檢查碼和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。校驗單元耦接至微處理單元且用以依據(jù)微處理器單元從快閃存儲器的物理地址中讀取的檢查碼來驗證所讀取的物理地址是否為欲讀取物理地址。在本發(fā)明的一實施例中,上述的檢查碼產(chǎn)生單元為循環(huán)冗余檢查(CycleRedundancyCheck,CRC)碼產(chǎn)生單元,并且上述校驗單元為循環(huán)冗余檢查校驗單元。在本發(fā)明的一實施例中,上述的檢查碼與邏輯地址存儲在欲寫入物理地址的冗余區(qū)中。在本發(fā)明的一實施例中,上述的控制器還包括錯誤校正模塊,其耦接接至微處理器單元用以依據(jù)檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)來產(chǎn)生錯誤校正碼,其中微處理器單元會將錯誤校正碼寫入至欲寫入物理地址中。在本發(fā)明的一實施例中,上述的錯誤校正模塊會依據(jù)所讀取的物理地址中的錯誤校正碼來確認所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容是否正確,并且當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時,錯誤校正模塊會對所讀取的檢查碼、邏輯地址與主數(shù)據(jù)進行錯誤校正。在本發(fā)明的一實施例中,當該校驗單元判斷所讀取的物理地址不是欲讀取物理地址時則微處理器單元會重新再讀取一次欲讀取物理地址。在本發(fā)明的一實施例中,上述的存儲系統(tǒng)為USB隨身盤、記憶卡或固態(tài)硬盤。在本發(fā)明的一實施例中,上述的地址確認模塊還包括檢查碼產(chǎn)生單元與校驗單元。檢查碼產(chǎn)生單元耦接至微處理單元并且用以根據(jù)寫入指令中的邏輯地址和在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生^f全查碼,其中微處理器單元會將所產(chǎn)生的檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。校驗單元耦接至微處理單元且用以依據(jù)微處理器單元從快閃存儲器的物理地址中讀取的檢查碼與邏輯地址來驗證所讀取的物理地址是否為欲讀取物理地址。本發(fā)明提出一種存儲系統(tǒng),其包括快閃存儲器、總線接口與控制器??扉W存儲器用以存儲數(shù)據(jù),并且總線接口用以連接主機。控制器耦接至快閃存儲器與總線接口,控制器會依據(jù)對應讀取指令中的欲讀取邏輯地址的欲讀取物理地址來在快閃存儲器的物理地址上進行讀取、確認所讀取的物理地址是否為欲讀取物理地址并且僅當判斷所讀取的物理地址是欲讀取物理地址時才傳送所讀取的數(shù)據(jù)。在本發(fā)明的一實施例中,上述的控制器還用以根據(jù)在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將檢查碼和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。此控制器還用以從快閃存儲器的物理地址中讀取所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼與邏輯地址來驗證所讀取的物理地址是否為欲讀取物理地址。在本發(fā)明的一實施例中,上述的檢查碼是循環(huán)冗余檢查(CycleRedundancyCheck,CRC)碼。在本發(fā)明的一實施例中,上述的檢查碼與邏輯地址存儲在欲寫入物理地址的冗余區(qū)中。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取程序還包括根據(jù)檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)來產(chǎn)生錯誤校正碼,以及將所產(chǎn)生的錯誤校正碼寫入至上述名夂寫入物理地址中。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取程序還包括依據(jù)所讀取的物理地址中的錯誤校正碼來確認所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容是否正確,其中當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時,會對所讀取的檢查碼、邏輯地址與主數(shù)據(jù)進行錯誤校正。在本發(fā)明的一實施例中,上述的數(shù)據(jù)存取程序還包括當判斷所讀取的物理地址不是欲讀取物理地址時重新再讀取一次欲讀取物理地址。在本發(fā)明的一實施例中,上述的控制器還用以根據(jù)寫入指令中的邏輯地址和在快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將檢查碼、寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至欲寫入物理地址中。此控制器還用以從快閃存儲器的物理地址中讀取所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼與邏輯地址來驗證所讀取的物理地址是否為欲讀取物理地址。本發(fā)明因在存儲系統(tǒng)中加入地址確認模塊的結(jié)構(gòu),因此可確認所讀取的物理地址是否為讀取指令中欲讀取的物理地址,由此確保所讀取數(shù)據(jù)的正確性。為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并結(jié)合附圖,作詳細說明如下。圖1是根據(jù)本發(fā)明第一實施例示出存儲系統(tǒng)的概要方塊圖。圖2(a)和(b)是根據(jù)本發(fā)明第一實施例示出信息存取方法的流程圖。圖3是根據(jù)本發(fā)明第二實施例示出存儲系統(tǒng)的概要方塊圖。圖4(a)和(b)是根據(jù)本發(fā)明第二實施例示出信息存取方法的流程圖。主要組件符號說明100、100':存儲系統(tǒng)110、310:控制器110a、310a:微處理器單元110b、310b:快閃存儲器接口110c、310c:緩沖存儲器110d、310d:檢查碼產(chǎn)生單元110e、310e:校驗單元120、320:總線接口130、330:快閃存儲器130-0、130-1、130-2、130-N:區(qū)塊200:主機300:總線D:信息區(qū)R:冗余區(qū)31Of:錯誤校正模塊S201、S203、S205、S207、S209、S211:數(shù)據(jù)存取的步驟S401、S403、S405、S術(shù)、S409、S411、S413、S415:數(shù)據(jù)存取的步驟具體實施例方式本發(fā)明所提出的存儲系統(tǒng)的控制器包括地址確認模塊,其中當控制器的微處理器單元從快閃存儲器中的物理地址中讀取數(shù)據(jù)時,地址確認模塊會檢查所讀取的物理地址是否為讀取指令中欲讀取的物理地址,并且在地址確認模塊判斷目前所讀取的物理地址是欲讀取的物理地址時,微處理器單元才會傳送所讀取的數(shù)據(jù)。由此,可防止誤傳非主機所欲讀取的物理地址的數(shù)據(jù)。以下將以多個示例實施例并結(jié)合附圖詳細說明本發(fā)明。[第一實施例]圖1是根據(jù)本發(fā)明第一實施例示出存儲系統(tǒng)的概要方塊圖。請參照圖1,存儲系統(tǒng)100包括控制器110、總線接口120以及快閃存儲器130。通常存儲系統(tǒng)100會與主機200—起使用,以使主機200可將數(shù)據(jù)寫入至存儲系統(tǒng)100或從存儲系統(tǒng)100中讀取數(shù)據(jù)。在本實施例中,存儲系統(tǒng)100為固態(tài)硬盤(SolidStateDrive,SSD)。但必須了解的是,在本發(fā)明另一實施例中存儲系統(tǒng)100也可以是隨身盤或記憶卡??刂破鱅IO會協(xié)調(diào)總線接口120以及快閃存儲器130的整體運作,例如數(shù)據(jù)的寫入、讀取與擦除等??刂破?10包括微處理器單元110a、快閃存儲器接口110b、緩沖存儲器llOc以及包含檢查碼產(chǎn)生單元110d與校驗單元110e的地址確認模塊。微處理器單元110a會進行對快閃存儲器130的寫入、讀取與擦除等運作??扉W存儲器接口110b電性連接至微處理器單元lIOa并且用以存取快閃存儲器130。也就是,主機200欲寫入至快閃存儲器130的數(shù)據(jù)會經(jīng)由快閃存儲器接口110b轉(zhuǎn)換為快閃存儲器130所能接受的格式。緩沖存儲器110c電性連接至微處理器單元110a,并且用以暫時地存儲系在本實施例中,緩沖存儲器110c為靜態(tài)隨機存取存儲器(staticrandomaccessmemory,SRAM)。然而,必須了解的是,本發(fā)明不限于此,動態(tài)隨才幾存取存儲器(DynamicRandomAccessmemory,DRAM)、磁阻式存儲器(MagnetoresistiveRandomAccessMemory,MRAM)、4目變4匕存孑諸器(PhaseChangeRandomAccessMemory,PRAM)或其它適合的存儲器也可應用于本發(fā)明。檢查碼產(chǎn)生單元110d電性連接至微處理單元110a,并且用以產(chǎn)生檢查碼。具體來說,微處理單元llOa會依據(jù)欲寫入的邏輯地址與其在快閃存儲器130中對應的物理地址來產(chǎn)生一組檢查碼,其中名夂寫入的邏輯地址與對應物理地址和所產(chǎn)生的檢查碼之間具有一固定關(guān)系,例如所產(chǎn)生的檢查碼是欲寫入的邏輯地址除以其對應的物理地址的余數(shù)。在本實施例中,檢查碼產(chǎn)生單元110d是以循環(huán)冗余檢查(CycleRedundancyCheck,CRC)產(chǎn)生電路來實現(xiàn),因此所產(chǎn)生的檢查碼也稱為CRC碼。值得一提的是,在本實施例中該微處理單元會將包含CRC碼與欲寫入的邏輯地址的冗余數(shù)據(jù)和欲寫入的數(shù)據(jù)一起寫入至此邏輯地址所對應的物理地址中。校驗單元110e電性連接至微處理單元110a,并且用以根據(jù)微處理單元110a所讀取物理地址的冗余數(shù)據(jù)中的檢查碼與邏輯地址來驗證所讀取的數(shù)據(jù)是否為欲讀取的物理地址中的數(shù)據(jù)。具體來說,當微處理器110a下達指令請求從某一物理地址中讀取數(shù)據(jù)(以下稱為主數(shù)據(jù))時,快閃存儲器接口110b會依據(jù)指令從快閃存儲器130的物理地址中同時讀取主數(shù)據(jù)與其中所記錄的冗余數(shù)據(jù)(即檢查碼與邏輯地址)。當微處理器110a接收到這些數(shù)據(jù)時,會經(jīng)由校驗單元110e來驗證所讀取包含檢查碼與邏輯地址的冗余數(shù)據(jù)和欲讀取的物理地址是否匹配。在本實施例中,校驗單元110e是CRC解碼電路,其對應實現(xiàn)檢查碼產(chǎn)生單元UOd的CRC產(chǎn)生電路。必須了解的是,本發(fā)明不限于以CRC產(chǎn)生電路與CRC解碼電^各來實現(xiàn)上述檢查碼產(chǎn)生單元110d與校驗單元110e,本發(fā)明也可使用任何適合的驗證模塊來提供本實施例中地址確認模塊的功能。此外,雖未示出于本實施例,但控制器110可還包括一般快閃存儲器控制器常見的功能模塊,例如存儲器管理模塊、電源管理模塊等??偩€接口120用以通過總線300連接主機200。在本實施例中,總線接口120為PCIExpress接口。然而,必須了解的是本發(fā)明不限于此,總線接口120也可以是USB接口、正EE1394接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其它適合的數(shù)據(jù)傳輸接口。.快閃存儲器130是電性連接至控刮器110并且用以存儲數(shù)據(jù)。在本實施中快閃存儲器130為多層單元(MultiLeveCell,MLC)NAND快閃存儲器。然而,必須了解的是,本發(fā)明不限于此。在本發(fā)明另一實施例中,單層單元(SingleLevelCell,SLC)NAND快閃存儲器也可應用于本發(fā)明??扉W存儲器130通常會被分割為多個物理區(qū)塊(physicalblock)130-0至130-N,為方便說明以下將物理區(qū)塊簡稱為區(qū)塊。一4殳而言,在快閃存儲器中區(qū)塊為擦除的最小單位。也即,每一區(qū)塊含有最小數(shù)目的一并被擦除的單元。每一區(qū)塊通常會分割為數(shù)個頁(page)。頁通常為編程化(program)的最小單元,但要特別說明的是于有些不同的快閃存儲器設(shè)計,最小的編程化單位也可為一個扇區(qū)(sector)大小,即一頁中有多個扇區(qū)并以一扇區(qū)為程序化的最小單元。換言之,頁為寫入數(shù)據(jù)或讀取數(shù)據(jù)的最小單元。在本實施例中,所述的物理地址是表示快閃存儲器的頁。每一頁通常包括數(shù)據(jù)區(qū)D與冗余區(qū)R。數(shù)據(jù)區(qū)用以記錄使用者的數(shù)據(jù),而冗余區(qū)用以記錄系統(tǒng)的數(shù)據(jù),例如CRC檢查碼、4晉誤校正碼(errorcorrectingcode,ECC)等。為對應于^f茲盤驅(qū)動器的扇區(qū)(sector)大小,一般而言,數(shù)據(jù)區(qū)D通常為512字節(jié),而冗余區(qū)R通常為16字節(jié)。也就是,一頁為一個扇區(qū)。然而,也可以多個扇區(qū)形成一頁,例如一頁包括4個扇區(qū)。一般而言,區(qū)塊可由任意數(shù)目的頁所組成,例如64頁、128頁、256頁等。區(qū)塊130-0至130-N通常也可被分組為數(shù)個區(qū)域(zone),以區(qū)域來管理存儲器某種程度上是彼此獨立地操作以增加操作執(zhí)行的平行程度且簡化管理的復雜度。基于此,根據(jù)本實施例的存儲系統(tǒng)100可通過^r查碼產(chǎn)生單元110d與校驗單元llOe來確認所讀取的物理地址是否為欲讀取的物理地址,由此確保所讀取數(shù)據(jù)的正確性。以下將配合圖2詳細說明存儲系統(tǒng)100的數(shù)據(jù)存取步驟。圖2是根據(jù)本發(fā)明第一實施例示出信息存取方法的流程圖。請參照圖2的(a),當主機200傳送寫入指令至存儲系統(tǒng)100以寫入數(shù)據(jù)(以下稱為主數(shù)據(jù))至快閃存儲器130時,微處理器單元110a會將寫入指令中的邏輯地址與其在快閃存儲器130中對應的物理地址傳送至檢查碼產(chǎn)生單元110d,并且檢查碼產(chǎn)生單元110d會據(jù)此產(chǎn)生一組檢查碼(在步驟S201中)。之后,所產(chǎn)生的檢查碼、寫入指令中的邏輯地址和主數(shù)據(jù)會通過快閃存儲器接口110b—起寫入至此對應物理地址中(在步驟S203中)。具體來說,微處理器單元110a會將主數(shù)據(jù)寫入至對應物理地址的數(shù)據(jù)區(qū)D中,并且將包含檢查碼與欲寫入的邏輯地址的冗余數(shù)據(jù)寫入至對應物理地址的冗余區(qū)R中。接著請參照圖2的(b),當主機200發(fā)送讀取指令至存儲系統(tǒng)100以讀取快閃存儲器130中的主數(shù)據(jù)時,微處理器單元110a會依據(jù)對應讀取指令中的邏輯地址的欲讀取物理地址來從快閃存儲器130的物理地址中同時讀取主數(shù)據(jù)和其中所記錄的檢查碼和邏輯地址(步驟S205中)。查碼與邏輯地址和欲讀取物理地址是否匹配(步驟S207)。倘若在步驟S207中校驗單元110e判斷所讀取的檢查碼與邏輯地址和欲讀取物理地址是匹配時,則可確認所讀取的主數(shù)據(jù)是主機200欲讀取的物理地址中的數(shù)據(jù),因此在步驟209中微處理器單元110a會傳送所讀取的主數(shù)據(jù)至主沖幾200。倘若在步驟S207中校驗單元110e判斷所讀取的檢查碼與邏輯地址和欲讀取物理地址是不匹配時,則在步驟S211中微處理器單元110a會重新存取讀取指令中欲讀取的物理地址并且執(zhí)行步驟205。或者,在本發(fā)明另一實施例中,當^f交驗單元110e判斷所讀取的^r查碼與邏輯地址和欲讀取的物理地址是不匹配時,則微處理器單元110a會產(chǎn)生讀取錯誤訊息以告知主機200?;?,根據(jù)本發(fā)明實施例的存儲系統(tǒng)100可判斷所讀取的物理地址與讀取指令中欲讀取的物理地址是否相符,以確保所讀取的數(shù)據(jù)的正確性。值得一提的是,在本實施例中是以寫入指令中的邏輯地址與其在快閃存儲器中對應的物理地址來產(chǎn)生檢查碼,并且以所讀取物理地址中所存儲的邏輯地址與檢查碼來判斷所讀取物理地址是否為欲讀耳又的物理地址。然而,在本發(fā)明另一實施例中,也可僅使用寫入指令中的邏輯地址在快閃存儲器中對應的物理地址來產(chǎn)生上述^企查碼,并且僅以所讀耳又物理地址中所存儲的檢查碼來判斷所讀取物理地址是否為名夂讀取的物理地址。此外,在本發(fā)明其它實施例中也可直接以寫入指令中的邏輯地址在快閃存儲器中對應的物理地址來iJ、如前所述,為了確保所讀取的數(shù)據(jù)的正確性最佳的是能確認來源地址的正確性與所讀取數(shù)據(jù)本身內(nèi)容的正確性。為了清楚了解本發(fā)明,第一實施例的存儲系統(tǒng)100是僅以確認來源地址的正確性來實現(xiàn),然而本發(fā)明確認地址的保護機制也可與確認所讀取數(shù)據(jù)的機制一起實現(xiàn)。圖3是根據(jù)本發(fā)明第二實施例示出存儲系統(tǒng)的概要方塊圖。請參照圖3,存儲系統(tǒng)IOO,包括控制器310、總線接口320以及快閃存儲器330。通常存儲系統(tǒng)100,會與主機200—起使用,以使主機200可將數(shù)據(jù)寫入至存儲系統(tǒng)100,或從存儲系統(tǒng)IOO,中讀取數(shù)據(jù)。在本實施例中,存儲系統(tǒng)IOO,為固態(tài)硬盤(SolidStateDrive,SSD)。但必須了解的是,在本發(fā)明另一實施例中存儲系統(tǒng)IOO,也可以是隨身盤或記憶卡??偩€接口320與快閃存儲器330的結(jié)構(gòu)與運作是相同于第一實施例的總線接口120與快閃存儲器130的結(jié)構(gòu)與運作,在此省略其詳細說明??刂破?10會協(xié)調(diào)總線接口320以及快閃存儲器330的整體運作,例如數(shù)據(jù)的寫入、讀取與擦除等??刂破?10包括微處理器單元310a、快閃存儲器接口310b、緩沖存儲器310c、檢查碼產(chǎn)生單元310d、校驗單元310e與錯誤校正模塊310f。微處理器單元310a、快閃存儲器接口310b、緩沖存儲器310c、檢查碼產(chǎn)生單元310d與校驗單元310e的結(jié)構(gòu)是類似于第一實施例的微處理器單元110a、快閃存儲器接口UOb、緩沖存儲器110c、檢查碼產(chǎn)生單元110d與校驗單元110e的結(jié)構(gòu),以下將結(jié)合圖4描述其運作上的不同之處。錯誤校正模塊310f耦接至微處理器單元310a。錯誤校正模塊310f用以對欲存儲至快閃存儲器330的數(shù)據(jù)包執(zhí)行錯誤校正編碼程序,并且產(chǎn)生錯誤校正碼。特別是,所產(chǎn)生的錯誤校正碼會與欲存儲的數(shù)據(jù)包一起寫入至快閃存儲器330中,也就是錯誤校正碼會被寫入至物理地址的冗余區(qū)R中。此外,錯誤校正模塊310f還用以在數(shù)據(jù)讀取作業(yè)時依據(jù)所記錄的錯誤校正碼來檢查及修正數(shù)據(jù)包在傳輸時可能產(chǎn)生的錯誤或噪聲(noise)。在根據(jù)本實施例的存儲系統(tǒng)100,中可通過檢查碼產(chǎn)生單元310d、校驗單元310e與錯誤校正模塊310f的運作可確認所讀取的物理地址是否為欲讀取的物理地址并且確認所讀取數(shù)據(jù)的內(nèi)容,由此可更能保證所讀取的數(shù)據(jù)的正確性。以下將結(jié)合圖4詳細說明存儲系統(tǒng)IOO,的數(shù)據(jù)存取步驟。圖4是根據(jù)本發(fā)明第二實施例示出信息存取方法的流程圖。請參照圖4的(a),當主機200傳送寫入指令至存儲系統(tǒng)IOO,以寫入數(shù)據(jù)(以下稱為主數(shù)據(jù))至快閃存儲器330時,微處理器單元31.0a會將寫入指令中的邏輯地址與其在快閃存儲器330中對應的物理地址傳送至檢查碼產(chǎn)生單元310d中,并且檢查碼產(chǎn)生單元310d會據(jù)此產(chǎn)生一組檢查碼(步驟S401)。之后,所產(chǎn)生的檢查碼、寫入指令中的邏輯地址和主數(shù)據(jù)會傳送至錯誤校正模塊310f,并且錯誤校正模塊310f會據(jù)此產(chǎn)生一組錯誤校正碼(步驟S403)。此檢查碼、寫入指令中的邏輯地址、主數(shù)據(jù)以及所產(chǎn)生的錯誤校正碼會通過快閃存儲器接口310b而一起被寫入至快閃存儲器330的對應物理地址中(步驟S405)。具體來說,微處理器單元310a會將主數(shù)據(jù)寫入至對應物理地址的數(shù)據(jù)區(qū)中,并且將包含檢查碼與欲寫入的邏輯地址的冗余數(shù)據(jù)以及錯誤校正碼寫入至對應物理地址的冗余區(qū)中。接著請參照圖4的(b),當主機200傳送讀取指令至存儲系統(tǒng)IOO,以讀取快閃存儲器330中的主數(shù)據(jù)時,微處理器單元110a會依據(jù)對應讀取指令中的邏輯地址的欲讀取物理地址通過快閃存儲器接口310b來從快閃存儲器330的物理地址中同時讀取此物理地址中的檢查碼、邏輯地址、主數(shù)據(jù)以及錯誤校正碼(步驟S407)。所讀取的檢查碼、邏輯地址、主數(shù)據(jù)以及錯誤校正碼會被傳送至錯誤校正模塊310f,并且錯誤校正模塊310f會執(zhí)行錯誤校正程序,以驗證所讀取的檢查碼、邏輯地址和主數(shù)據(jù)的內(nèi)容是否正確無誤,且在發(fā)生錯誤時會修正錯誤的內(nèi)容(步驟S409)。之后,已經(jīng)過錯誤校正的檢查碼、邏輯地址和主數(shù)據(jù)會傳送至校驗單元310e,并且校驗單元310e會驗證已錯誤校正的檢查碼與邏輯地址和欲讀取物理地址是否匹配(步驟S411)。倘若在步驟S411中校驗單元310e判斷已錯誤校正的檢查碼與邏輯地址和欲讀取物理地址是匹配而確認所讀取的主數(shù)據(jù)是主機200欲讀取的物理地址中的數(shù)據(jù)時,則在步驟4D中微處理器單元310a會傳送所讀取的主數(shù)據(jù)至主機200。倘若在步驟S411中校驗單元310e判斷所讀取冗余數(shù)據(jù)中的檢查碼與邏輯地址和欲讀取物理地址是不匹配時,則在步驟S415中樣i處理器單元310a會重新存取讀取指令中欲讀取的物理地址并且執(zhí)行步驟407?;蛘?,在本發(fā)明另一實施例中,當校驗單元310e判斷已錯誤校正的檢查碼與邏輯地址和欲讀取物理地址是不匹配時,則微處理器單元310a會產(chǎn)生讀取錯誤訊息以告知主機200?;诖耍鶕?jù)本發(fā)明實施例的存儲系統(tǒng)100'可通過校驗單元310e判斷所讀取的物理地址與讀取指令中欲讀取的物理地址是否相符,并且可通過錯誤校正模塊310f判斷所讀取數(shù)據(jù)的內(nèi)容是否正確,由此可更確保所傳送數(shù)據(jù)的正確性。綜上所述,本發(fā)明實施例在快閃存儲器存儲系統(tǒng)中實現(xiàn)為地址確認模塊(例如,在上述實施例中是以檢查碼產(chǎn)生單元與校驗單元來實現(xiàn)),以判斷所讀取的物理地址是否為主機欲讀取的物理地址,由此確保數(shù)據(jù)來源的正確性。此外,快閃存儲器存儲系統(tǒng)還包括錯誤校正模塊以確認所讀取數(shù)據(jù)的內(nèi)容,由此確保數(shù)據(jù)本身的正確性。由此,根據(jù)本發(fā)明實施例的快閃存儲器存儲系統(tǒng)可更有效地確認所傳送數(shù)據(jù)的正確性。雖然本發(fā)明已以較佳實施例公開如上,但是其并非用以限定本發(fā)明,任何所屬
技術(shù)領(lǐng)域:
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可作些許的更動與潤飾,因此本發(fā)明的保護范圍以后附的權(quán)利要求書的限定為準。權(quán)利要求1.一種數(shù)據(jù)存取方法,其適用于快閃存儲器,該數(shù)據(jù)存取方法包括依據(jù)對應讀取指令中的邏輯地址的欲讀取物理地址,在該快閃存儲器的物理地址上進行讀取;確認所讀取的該物理地址是否為該欲讀取物理地址;以及當判斷該物理地址是該欲讀取物理地址時,傳送該物理地址中所存儲的主數(shù)據(jù)。2.如權(quán)利要求1所述的數(shù)據(jù)存取方法,還包括根據(jù)在該快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址,來產(chǎn)生檢查碼;將該檢查碼和欲寫入的主數(shù)據(jù)一起寫入至該欲寫入物理地址中;從該快閃存儲器的該物理地址中讀取該物理地址中所存儲的檢查碼;和依據(jù)所讀取的檢查碼來驗證該物理地址是否為該欲讀取物理地址。3.如權(quán)利要求2所述的數(shù)據(jù)存取方法,還包括執(zhí)行循環(huán)冗余檢查碼產(chǎn)生程序來產(chǎn)生該檢查碼。4.如權(quán)利要求2所述的數(shù)據(jù)存取方法,還包括將該檢查碼存儲在該欲寫入物理地址的冗余區(qū)中。5.如權(quán)利要求2所述的數(shù)據(jù)存取方法,還包括根據(jù)該檢查碼和欲寫入的該主數(shù)據(jù)產(chǎn)生錯誤校正碼;以及將該錯誤校正碼寫入至該欲寫入物理地址中。6.如權(quán)利要求5所述的數(shù)據(jù)存取方法,還包括依據(jù)所讀取的該物理地址中的該錯誤校正碼,來確認所讀取的檢查碼與主數(shù)據(jù)的內(nèi)容是否正確,其中當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時,會對所讀取的檢查碼與主數(shù)據(jù)進行錯誤校正。7.如權(quán)利要求2所述的數(shù)據(jù)存取方法,還包括當判斷所讀取的該物理地址不是該欲讀取物理地址時,重新再讀取一次該欲讀取物理地址。8.如權(quán)利要求1所述的數(shù)據(jù)存取方法,還包括根據(jù)寫入指令中的邏輯地址和在該快閃存儲器中對應該寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼;將該檢查碼、該寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至該欲寫入物理地址中;輯地址;以及依據(jù)所讀取的檢查碼與邏輯地址來驗證該物理地址是否為該欲讀取物理地址。9.一種控制器,其適用于具有快閃存儲器的存儲系統(tǒng),該控制器包括快閃存儲器接口,用以存取該快閃存儲器;緩沖存儲器,用以暫時地存儲數(shù)據(jù);微處理器單元,耦接至該快閃存儲器接口與該緩沖存儲器,用以依據(jù)對應讀取指令中的邏輯地址的欲讀取物理地址,在該快閃存儲器的物理地址上進行讀耳又;以及地址確認模塊,耦接至該微處理器單元,用以確認所讀取的該物理地址是否為該」欲讀耳又物理地址,其中該微處理器單元僅在當該校驗單元判斷所讀取的該物理地址是該欲讀取物理地址時,才傳送該物理地址中所存儲的主數(shù)據(jù)。10.如權(quán)利要求9所述的控制器,其中該地址確認模塊還包括檢查碼產(chǎn)生單元,耦接至該微處理單元,且用以根據(jù)在該快閃存儲器中對應寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,其中該微處理器單元會將該檢查碼和欲寫入的主數(shù)據(jù)一起寫入至該欲寫入物理地址中;校驗單元,耦接至該微處理單元,且依據(jù)該微處理器單元從該快閃存儲器的該物理地址中讀取的該檢查碼,驗證所讀取的該物理地址是否為該欲讀取物理地址。11.如權(quán)利要求10所述的控制器,其中該檢查碼產(chǎn)生單元為循環(huán)冗余檢查碼產(chǎn)生單元,并且該校驗單元為循環(huán)冗余檢查校驗單元。12.如權(quán)利要求10所述的控制器,其中該檢查碼與該邏輯地址存儲在該欲寫入物理地址的冗余區(qū)中。13.如權(quán)利要求10所述的控制器,還包括錯誤校正模塊,耦接接至該微處理器單元,用以依據(jù)該檢查碼、該寫入指令中的邏輯地址和欲寫入的該主數(shù)據(jù)產(chǎn)生錯誤校正碼,其中該微處理器單元會將該錯誤校正碼寫入至該欲寫入物理地址中。14.如權(quán)利要求10所述的控制器,其中該錯誤校正模塊會依據(jù)所讀取的該物理地址中的該4昔誤校正碼來確認所讀取的沖全查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容是否正確,并且當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時,該錯誤校正模塊會對所讀取的檢查碼、邏輯地址與主數(shù)據(jù)進行錯誤校正。15.如權(quán)利要求10所述的控制器,其中當該校驗單元判斷所讀取的該物理地址不是該欲讀取物理地址時則該微處理器單元會重新再讀取一次該欲讀耳又物理;l也址。16.如權(quán)利要求9所述的控制器,其中該存儲系統(tǒng)為USB隨身盤、記憶卡或固態(tài)硬盤。17.如權(quán)利要求9所述的控制器,其中該地址確認模塊還包括檢查碼產(chǎn)生單元,耦接至該微處理單元,且用以根據(jù)寫入指令中的邏輯地址和在該快閃存儲器中對應該寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,其中該微處理器單元會將該檢查碼、該寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至該欲寫入物理地址中;校驗單元,耦接至該微處理單元,且依據(jù)該微處理器單元從該快閃存儲器的該物理地址中讀取的該檢查碼與該邏輯地址,驗證所讀取的該物理地址是否為該欲讀取物理地址。18.—種存儲系統(tǒng),包括快閃存儲器,用以存儲數(shù)據(jù);總線接口,用以連"I妻主^L;以及控制器,耦接至該快閃存儲器與該總線接口,用以依據(jù)對應讀取指令中的邏輯地址的欲讀取物理地址,在該快閃存儲器的物理地址上進行讀取、確認所讀取的該物理地址是否為該欲讀取物理地址,并且僅當判斷所讀取的該物理地址是該欲讀取物理地址時,才傳送該物理地址中所存儲的主數(shù)據(jù)。19.如權(quán)利要求18所述的存儲系統(tǒng),其中該控制器還用以根據(jù)寫入指令中的邏輯地址和在該快閃存儲器中對應該寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將該檢查碼、該寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至該欲寫入物理地址中,以及該控制器還用以從該快閃存儲器的該物理地址中讀取該物理地址中所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼與邏輯地址來驗證該物理地址是否為該欲讀取物理地址,其中當判斷該物理地址是該欲讀取物理地址時,傳送所的主數(shù)據(jù)。20.如權(quán)利要求19所述的存儲系統(tǒng),其中該檢查碼是循環(huán)冗余檢查碼。21.如權(quán)利要求19所述的存儲系統(tǒng),其中該檢查碼與該邏輯地址存儲在該欲寫入物理地址的冗余區(qū)中。22.如權(quán)利要求19所述的存儲系統(tǒng),其中該數(shù)據(jù)存取程序還包括依據(jù)該檢查碼、該寫入指令中的邏輯地址和欲寫入的該主數(shù)據(jù)產(chǎn)生錯誤氺交正碼;以及將該錯誤校正碼寫入至該欲寫入物理地址中。23.如權(quán)利要求22所述的存儲系統(tǒng),其中該數(shù)據(jù)存取程序還包括依據(jù)所讀取的該物理地址中的該錯誤校正碼來確認所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容是否正確;以及當所讀取的檢查碼、邏輯地址與主數(shù)據(jù)的內(nèi)容為不正確時,該錯誤校正模塊會對所讀取的檢查碼、邏輯地址與主數(shù)據(jù)進行錯誤校正。24.如權(quán)利要求19所述的存儲系統(tǒng),其中該錯數(shù)據(jù)存取程序還包括當判斷所讀取的該物理地址不是該欲讀取物理地址時,重新再讀取一次該欲讀耳又物理;也址。25.如權(quán)利要求18所述的存儲系統(tǒng),其中該控制器還用以根據(jù)寫入指令中的邏輯地址和在該快閃存儲器中對應該寫入指令中的邏輯地址的欲寫入物理地址來產(chǎn)生檢查碼,并且將該檢查碼、該寫入指令中的邏輯地址和欲寫入的主數(shù)據(jù)一起寫入至該匸欲寫入物理地址中,以及該控制器還用以從該快閃存儲器的該物理地址中讀取該物理地址中所存儲的檢查碼與邏輯地址,并且依據(jù)所讀取的檢查碼與邏輯地址來驗證該物理地址是否為該欲讀取物理地址。全文摘要一種用于快閃存儲器的數(shù)據(jù)存取方法及使用此方法的控制器與存儲系統(tǒng)。此數(shù)據(jù)存取方法包括依據(jù)對應讀取指令中的欲讀取邏輯地址的欲讀取物理地址從快閃存儲器的物理地址中讀取數(shù)據(jù),并且確認所讀取的物理地址是否為欲讀取物理地址,其中當判斷物理地址是欲讀取物理地址時才傳送所讀取的數(shù)據(jù)。由此,使用此存取方法的控制器與存儲系統(tǒng)可確保所傳送的數(shù)據(jù)是讀取指令中欲存取的數(shù)據(jù)。文檔編號G06F11/10GK101576853SQ200810096248公開日2009年11月11日申請日期2008年5月6日優(yōu)先權(quán)日2008年5月6日發(fā)明者許智仁,黃意翔申請人:群聯(lián)電子股份有限公司