TWI415134B - 資料存取方法、使用此方法的控制器與儲存系統 - Google Patents
資料存取方法、使用此方法的控制器與儲存系統 Download PDFInfo
- Publication number
- TWI415134B TWI415134B TW097113041A TW97113041A TWI415134B TW I415134 B TWI415134 B TW I415134B TW 097113041 A TW097113041 A TW 097113041A TW 97113041 A TW97113041 A TW 97113041A TW I415134 B TWI415134 B TW I415134B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- physical address
- address
- check code
- flash memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Description
本發明是有關於一種資料存取方法及使用此方法的控制器與儲存系統,且特別是有關於一種用於快閃記憶體的資料存取方法及使用此方法的控制器與儲存系統。
近年來,由於數位相機、具有照相功能的手機、MP3,以及MP4的成長十分迅速,所以使得消費者對儲存媒體的需求也急劇增加。綜觀現今所有的儲存媒體而言,由於快閃記憶體(Flash Memory)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以最適合內建於上述所舉例的多種可攜式多媒體裝置中。特別是,以快閃記憶體為儲存媒體的固態硬碟(Solid State Drive,SSD)可有效地縮小攜帶型電腦的體積。因此,近年快閃記憶體產業成為電子產業中相當熱門的一環。
一般來說,快閃記憶體的儲存系統內會存有記錄邏輯區塊與實體區塊之間的對映關係的對映表(mapping table)。當主機系統對某一邏輯區塊的位址(例如頁位址)進行存取時,儲存系統會依據此對映表將資料寫入至對應實體區塊之中的位址或從對應實體區塊之中的位址裡讀取資料。然而,隨著製程的越來越精密,信號指令傳遞的過程中所產生的細微雜訊可能會影響資料或指令的內容,進而造成資料的存取錯誤。在習知技術中,一般會使用錯誤
校正碼(Error Correcting Code)來對所存取的資料進行錯誤校正。然而,對於所傳輸的指令而言並無任何確保其正確性的機制。例如,當儲存系統傳送讀取指令以存取主機系統欲讀取之邏輯位址1所對應的實體位址1時,此讀取指令可能會因傳輸過程的雜訊而被誤判為請求讀取實體位址2,並且實體位址2的資料會因此被傳給主機系統。在此案例中,雖然所傳遞的資料已透過ECC機制驗證其正確性而傳送給主機系統,但由於所讀取的位址發生誤判因此主機系統並未接收到所欲讀取的正確資料。換言之,在習知技術下儲存系統無法確保所讀取的位址是否是主機系統所欲讀取的位址,因此無法確保所讀取資料的正確性。特別是,對於需要高度資料可靠性與正確性的固態硬碟來說,如何克服上述缺點是相當的重要。
本發明提供一種資料存取方法,其能夠確保從正確的快閃記憶體實體位址中讀取資料。
本發明提供一種控制器,其能夠確保從正確的快閃記憶體實體位址中讀取資料。
本發明提供一種儲存系統,其能夠確保從正確的快閃記憶體實體位址中讀取資料。
本發明提出一種資料存取方法,其適用於快閃記憶體,此資料存取方法包括依據對應讀取指令中的欲讀取邏輯位址的欲讀取實體位址來在快閃記憶體的實體位址上進
行讀取,並且確認所讀取的實體位址是否為欲讀取實體位址,其中當判斷所讀取的實體位址是欲讀取實體位址時才傳送所讀取實體位址中所儲存的主資料。
在本發明之一實施例中,上述之資料存取方法更包括根據在快閃記憶體中對應寫入指令中的邏輯位址的欲寫入實體位址來產生檢查碼,並且將檢查碼和欲寫入的主資料一起寫入至欲寫入實體位址中。此資料存取方法更包括從快閃記憶體的實體位址中讀取此實體位址中所儲存的檢查碼與邏輯位址,並且依據所讀取的檢查碼來驗證所讀取的實體位址是否為欲讀取實體位址。
在本發明之一實施例中,上述之資料存取方法更包括執行一循環冗餘檢查(Cycle Redundancy Check,CRC)碼產生程序來產生上述檢查碼。
在本發明之一實施例中,上述之資料存取方法更包括將檢查碼儲存在上述欲寫入實體位址的冗餘區中。
在本發明之一實施例中,上述之資料存取方法更包括根據檢查碼和欲寫入的主資料產生錯誤校正碼,以及將所產生的錯誤校正碼寫入至上述欲寫入實體位址中。
在本發明之一實施例中,上述之資料存取方法更包括依據所讀取的實體位址中的錯誤校正碼來確認所讀取的檢查碼與主資料的內容是否正確,其中當所讀取的檢查碼與主資料的內容為不正確時會對所讀取的檢查碼與主資料進行錯誤校正。
在本發明之一實施例中,上述之資料存取方法更包括
當判斷所讀取的實體位址不是欲讀取實體位址時重新再讀取一次欲讀取實體位址。
在本發明之一實施例中,上述之資料存取方法更包括根據寫入指令中的邏輯位址和在快閃記憶體中對應寫入指令中的邏輯位址的欲寫入實體位址來產生檢查碼,並且將檢查碼、寫入指令中的邏輯位址和欲寫入的主資料一起寫入至欲寫入實體位址中。此資料存取方法更包括從快閃記憶體的實體位址中讀取檢查碼與邏輯位址,並且依據所讀取的檢查碼與邏輯位址來驗證所讀取的實體位址是否為欲讀取實體位址。
本發明提出一種控制器,其適用於具有快閃記憶體的儲存系統,此控制器包括快閃記憶體介面、緩衝記憶體、微處理器單元以及位址確認模組。快閃記憶體介面用以存取快閃記憶體。緩衝記憶體用以暫時地儲存資料。微處理器單元耦接至快閃記憶體介面與緩衝記憶體並且用以依據對應讀取指令中的欲讀取邏輯位址的欲讀取實體位址來在快閃記憶體的實體位址上進行讀取。位址確認模組耦接至微處理器單元並且用以確認所讀取的實體位址是否為欲讀取實體位址,其中微處理器單元僅在當位址確認模組判斷所讀取的實體位址是欲讀取的實體位址時才傳送此實體位址中所儲存的主資料。
在本發明之一實施例中,上述之位址確認模組更包括檢查碼產生單元與校驗單元。檢查碼產生單元耦接至微處理器單元並且用以根據在快閃記憶體中對應寫入指令中的
邏輯位址的欲寫入實體位址來產生檢查碼,其中微處理器單元會將所產生的檢查碼和欲寫入的主資料一起寫入至欲寫入實體位址中。校驗單元耦接至微處理器單元且用以依據微處理器單元從快閃記憶體的實體位址中讀取的檢查碼來驗證所讀取的實體位址是否為欲讀取實體位址。
在本發明之一實施例中,上述之檢查碼產生單元為循環冗餘檢查(Cycle Redundancy Check,CRC)碼產生單元,並且上述校驗單元為循環冗餘檢查校驗單元。
在本發明之一實施例中,上述之檢查碼是儲存在欲寫入實體位址的冗餘區中。
在本發明之一實施例中,上述之控制器更包括錯誤校正模組,其耦接接至微處理器單元用以依據檢查碼和欲寫入的主資料來產生錯誤校正碼,其中微處理器單元會將錯誤校正碼寫入至欲寫入實體位址中。
在本發明之一實施例中,上述之錯誤校正模組會依據所讀取的實體位址中的錯誤校正碼來確認所讀取的檢查碼與主資料的內容是否正確,並且當所讀取的檢查碼與主資料的內容為不正確時錯誤校正模組會對所讀取的檢查碼、邏輯位址與主資料進行錯誤校正。
在本發明之一實施例中,當該校驗單元判斷所讀取的實體位址不是欲讀取實體位址時則微處理器單元會重新再讀取一次欲讀取實體位址。
在本發明之一實施例中,上述之快閃記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體
或多層記憶胞(Multi Level Cell,MLC)NAND快閃記憶體。
在本發明之一實施例中,上述之儲存系統為USB隨身碟、記憶卡或固態硬碟。
在本發明之一實施例中,上述之位址確認模組更包括檢查碼產生單元與校驗單元。檢查碼產生單元耦接至微處理器單元並且用以根據寫入指令中的邏輯位址和在快閃記憶體中對應寫入指令中的邏輯位址的欲寫入實體位址來產生檢查碼,其中微處理器單元會將所產生的檢查碼、寫入指令中的邏輯位址和欲寫入的主資料一起寫入至欲寫入實體位址中。校驗單元耦接至微處理器單元且用以依據微處理器單元從快閃記憶體的實體位址中所讀取的檢查碼與邏輯位址來驗證所讀取的實體位址是否為欲讀取實體位址。
本發明提出一種儲存系統,其包括快閃記憶體、匯流排連接介面與控制器。快閃記憶體用以儲存資料,並且匯流排連接介面用以連接主機。控制器耦接至快閃記憶體與匯流排連接介面,控制器會依據對應讀取指令中的欲讀取邏輯位址的欲讀取實體位址來在快閃記憶體的實體位址上進行讀取、確認所讀取的實體位址是否為欲讀取實體位址並且僅當判斷所讀取的實體位址是欲讀取實體位址時才傳送所讀取的資料。
在本發明之一實施例中,上述之控制器更用以根據在快閃記憶體中對應寫入指令中的邏輯位址的欲寫入實體位址來產生檢查碼,並且將檢查碼和欲寫入的主資料一起寫
入至欲寫入實體位址中。此控制器更用以從快閃記憶體的實體位址中讀取所儲存的檢查碼,並且依據所讀取的檢查碼來驗證所讀取的實體位址是否為欲讀取實體位址。
在本發明之一實施例中,上述之檢查碼是一循環冗餘檢查(Cycle Redundancy Check,CRC)碼。
在本發明之一實施例中,上述之檢查碼是儲存在欲寫入實體位址的冗餘區中。
在本發明之一實施例中,上述之資料存取程序更包括根據檢查碼和欲寫入的主資料來產生錯誤校正碼,以及將所產生的錯誤校正碼寫入至上述欲寫入實體位址中。
在本發明之一實施例中,上述之資料存取程序更包括依據所讀取的實體位址中的錯誤校正碼來確認所讀取的檢查碼與主資料的內容是否正確,其中當所讀取的檢查碼與主資料的內容為不正確時會對所讀取的檢查碼與主資料進行錯誤校正。
在本發明之一實施例中,上述之資料存取程序更包括當判斷所讀取的實體位址不是欲讀取實體位址時重新再讀取一次欲讀取實體位址。
在本發明之一實施例中,上述之快閃記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。
在本發明之一實施例中,上述之匯流排連接介面為PCI Express介面、USB介面、IEEE 1394介面、SATA介
面、MS介面、MMC介面、SD介面、CF介面或IDE介面。
在本發明之一實施例中,上述之控制器更用以根據寫入指令中的邏輯位址和在快閃記憶體中對應寫入指令中的邏輯位址的欲寫入實體位址來產生檢查碼,並且將檢查碼、寫入指令中的邏輯位址和欲寫入的主資料一起寫入至欲寫入實體位址中。此控制器更用以從快閃記憶體的實體位址中讀取一檢查碼與一邏輯位址,並且依據所讀取的檢查碼與邏輯位址來驗證所讀取的實體位址是否為欲讀取實體位址。
本發明因在儲存系統中加入位址確認模組的結構,因此可確認所讀取的實體位址是否為讀取指令中欲讀取的實體位址,由此確保所讀取資料的正確性。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下。
本發明所提出的儲存系統的控制器包括位址確認模組,其中當控制器的微處理器單元從快閃記憶體中的實體位址中讀取資料時,位址確認模組會檢查所讀取的實體位址是否為讀取指令中欲讀取的實體位址,並且在位址確認模組判斷目前所讀取的實體位址是欲讀取的實體位址時,微處理器單元才會傳送所讀取的資料。由此,可防止誤傳非主機所欲讀取之實體位址的資料。以下將以數個範例實施例並配合圖式詳細說明本發明。
圖1是根據本發明第一實施例繪示儲存系統的概要方塊圖。請參照圖1,儲存系統100包括控制器110、匯流排連接介面120以及快閃記憶體130。通常儲存系統100會與主機200一起使用,以使主機200可將資料寫入至儲存系統100或從儲存系統100中讀取資料。在本實施例中,儲存系統100為固態硬碟(Solid State Drive,SSD)。但必須瞭解的是,在本發明另一實施例中儲存系統100亦可以是隨身碟或記憶卡。
控制器110會協調匯流排連接介面120以及快閃記憶體130的整體運作,例如資料的寫入、讀取與抹除等。控制器110包括微處理器單元110a、快閃記憶體介面110b、緩衝記憶體110c以及包含檢查碼產生單元110d與校驗單元110e的位址確認模組。
微處理器單元110a會進行對快閃記憶體130的寫入、讀取與抹除等運作。
快閃記憶體介面110b是電性連接至微處理器單元110a並且用以存取快閃記憶體130。也就是,主機200欲寫入至快閃記憶體130的資料會經由快閃記憶體介面110b轉換為快閃記憶體130所能接受的格式。
緩衝記憶體110c是電性連接至微處理器單元110a,並且用以暫時地儲存系統性資料(例如邏輯與實體區塊對映表)或者主機200所讀取或寫入的資料。在本實施例中,緩衝記憶體110c為靜態隨機存取記憶體(static random
access memory,SRAM)。然而,必須瞭解的是,本發明不限於此,動態隨機存取記憶體(Dynamic Random Access memory,DRAM)、磁阻式記憶體(Magnetoresistive Random Access Memory,MRAM)、相變化記憶體(Phase Change Random Access Memory,PRAM)或其他適合的記憶體亦可應用於本發明。
檢查碼產生單元110d是電性連接至微處理器單元110a,並且用以產生一檢查碼。具體來說,微處理器單元110a會依據欲寫入的邏輯位址與其在快閃記憶體130中對應的實體位址來產生一組檢查碼,其中欲寫入的邏輯位址與對應實體位址和所產生的檢查碼之間具有一固定關係,例如所產生的檢查碼是欲寫入的邏輯位址除以其對應的實體位址的餘數。在本實施例中,檢查碼產生單元110d是以循環冗餘檢查(Cycle Redundancy Check,CRC)產生電路來實現,因此所產生的檢查碼亦稱為CRC碼。
值得一提的是,在本實施例中該微處理器單元會將包含CRC碼與欲寫入之邏輯位址的冗餘資料和欲寫入的資料一起寫入至此邏輯位址所對應的實體位址中。
校驗單元110e是電性連接至微處理器單元110a並且用以根據微處理器單元110a所讀取實體位址的冗餘資料中的檢查碼與邏輯位址來驗證所讀取的資料是否為欲讀取的實體位址中的資料。具體來說,當微處理器110a下達指令請求從某一實體位址中讀取資料(以下稱為主資料)時,快閃記憶體介面110b會依據指令從快閃記憶體130的一實
體位址中同時讀取主資料與其中所記錄的冗餘資料(即檢查碼與邏輯位址)。當微處理器110a接收到此些資料時會經由校驗單元110e來驗證所讀取包含檢查碼與邏輯位址的冗餘資料和欲讀取的實體位址是否匹配。在本實施例中,校驗單元110e是CRC解碼電路,其對應實現檢查碼產生單元110d的CRC產生電路。
必須瞭解的是本發明不限於以CRC產生電路與CRC解碼電路來實現上述檢查碼產生單元110d與校驗單元110e,本發明亦可使用任何適合的驗證模組來提供本實施例中位址確認模組的功能。
此外,雖未繪示於本實施例,但控制器110可更包括一般快閃記憶體控制器常見的功能模組,例如記憶體管理模組、電源管理模組等。
匯流排連接介面120用以透過匯流排300連接主機200。在本實施例中,匯流排連接介面120為PCI Express介面。然而,必須瞭解的是本發明不限於此,匯流排連接介面120亦可以是USB介面、IEEE 1394介面、SATA介面、MS介面、MMC介面、SD介面、CF介面、IDE介面或其他適合的資料傳輸介面。
快閃記憶體130是電性連接至控制器110並且用以儲存資料。在本實施中快閃記憶體130為多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。然而,必須瞭解的是,本發明不限於此。在本發明另一實施例中,單層記憶胞(Single Level Cell,SLC)NAND快閃記憶體
亦可應用於本發明。
快閃記憶體130通常會被分割為多個實體區塊(physical block)130-0至130-N,為方便說明以下將實體區塊簡稱為區塊。一般而言,在快閃記憶體中區塊為抹除之最小單位。亦即,每一區塊含有最小數目之一併被抹除之記憶胞。每一區塊通常會分割為數個頁(page)。頁通常為程式化(program)的最小單元,但要特別說明的是於有些不同的快閃記憶體設計,最小的程式化單位也可為一個扇區(sector)大小,即一頁中有多個扇區並以一扇區為程式化的最小單元。換言之,頁為寫入資料或讀取資料的最小單元。在本實施例中,所述的實體位址是表示快閃記憶體的頁。
每一頁通常包括資料區D與冗餘區R。資料區用以記錄使用者的資料,而冗餘區用以記錄系統的資料,例如CRC檢查碼、錯誤校正碼(error correcting code,ECC)等。為對應於磁碟驅動器的扇區(sector)大小,一般而言,資料區D通常為512位元組,而冗餘區R通常為16位元組。也就是,一頁為一個扇區。然而,亦可以多個扇區形成一頁,例如一頁包括4個扇區。
一般而言,區塊可由任意數目的頁所組成,例如64頁、128頁、256頁等。區塊130-0至130-N通常也可被分組為數個區域(zone),以區域來管理記憶體某種程度上是彼此獨立地操作以增加操作執行的平行程度且簡化管理的複雜度。
基此,根據本實施例的儲存系統100可透過檢查碼產生單元110d與校驗單元110e來確認所讀取的實體位址是否為欲讀取的實體位址,由此確保所讀取資料的正確性。以下將配合圖2詳細說明儲存系統100的資料存取步驟。
圖2是根據本發明第一實施例繪示資料存取方法的流程圖。
請參照圖2的(a),當主機200傳送寫入指令至儲存系統100以寫入資料(以下稱為主資料)至快閃記憶體130時,微處理器單元110a會將寫入指令中的邏輯位址與其在快閃記憶體130中對應的實體位址傳送至檢查碼產生單元110d,並且檢查碼產生單元110d會據此產生一組檢查碼(在步驟S201中)。
之後,所產生的檢查碼、寫入指令中的邏輯位址和主資料會透過快閃記憶體介面110b一起寫入至此對應實體位址中(在步驟S203中)。具體來說,微處理器單元110a會將主資料寫入至對應實體位址的資料區D中,並且將包含檢查碼與欲寫入之邏輯位址的冗餘資料寫入至對應實體位址的冗餘區R中。
接著請參照圖2的(b),當主機200發送讀取指令至儲存系統100以讀取快閃記憶體130中的主資料時,微處理器單元110a會依據對應讀取指令中的邏輯位址的欲讀取實體位址來從快閃記憶體130的實體位址中同時讀取主資料和其中所記錄的檢查碼和邏輯位址(步驟S205中)。
所讀取的檢查碼與邏輯位址會被傳遞至校驗單元
110e以驗證所讀取的檢查碼與邏輯位址和欲讀取實體位址是否匹配(步驟S207)。
倘若在步驟S207中校驗單元110e判斷所讀取的檢查碼與邏輯位址和欲讀取實體位址是匹配時,則可確認所讀取的主資料是主機200欲讀取之實體位址中的資料,因此在步驟209中微處理器單元110a會傳送所讀取的主資料至主機200。
倘若在步驟S207中校驗單元110e判斷所讀取的檢查碼與邏輯位址和欲讀取實體位址是不匹配時,則在步驟S211中微處理器單元110a會重新存取讀取指令中欲讀取的實體位址並且執行步驟205。或者,在本發明另一實施例中,當校驗單元110e判斷所讀取的檢查碼與邏輯位址和欲讀取的實體位址是不匹配時,則微處理器單元110a會產生一讀取錯誤訊息以告知主機200。
基此,根據本發明實施例的儲存系統100可判斷所讀取的實體位址與讀取指令中欲讀取的實體位址是否相符,以確保所讀取之資料的正確性。
值得一提的是,在本實施例中是以寫入指令中的邏輯位址與其在快閃記憶體中對應的實體位址來產生檢查碼,並且以所讀取實體位址中所儲存的邏輯位址與檢查碼來判斷所讀取實體位址是否為欲讀取的實體位址。然而,在本發明另一實施例中,亦可僅使用寫入指令中的邏輯位址在快閃記憶體中對應的實體位址來產生上述檢查碼,並且僅以所讀取實體位址中所儲存的檢查碼來判斷所讀取實體位
址是否為欲讀取的實體位址。此外,在本發明其他實施例中也可直接以寫入指令中的邏輯位址在快閃記憶體中對應的實體位址來作為上述檢查碼,以作為判斷所讀取實體位址是否為欲讀取的實體位址的資訊。
如前所述,為了確保所讀取之資料的正確性最佳的是能確認來源位址的正確性與所讀取資料本身內容的正確性。為了清楚瞭解本發明,第一實施例的儲存系統100是僅以確認來源位址的正確性來實現,然而本發明確認位址的保護機制亦可與確認所讀取資料的機制一起實現。
圖3是根據本發明第二實施例繪示儲存系統的概要方塊圖。請參照圖3,儲存系統100’包括控制器310、匯流排連接介面320以及快閃記憶體330。通常儲存系統100’會與主機200一起使用,以使主機200可將資料寫入至儲存系統100’或從儲存系統100’中讀取資料。在本實施例中,儲存系統100’為固態硬碟(Solid State Drive,SSD)。但必須瞭解的是,在本發明另一實施例中儲存系統100’亦可以是隨身碟或記憶卡。匯流排連接介面320與快閃記憶體330的結構與運作是相同於第一實施例的匯流排連接介面120與快閃記憶體130的結構與運作,在此省略其詳細說明。
控制器310會協調匯流排連接介面320以及快閃記憶體330的整體運作,例如資料的寫入、讀取與抹除等。控
制器310包括微處理器單元310a、快閃記憶體介面310b、緩衝記憶體310c、檢查碼產生單元310d、校驗單元310e與錯誤校正模組310f。
微處理器單元310a、快閃記憶體介面310b、緩衝記憶體310c、檢查碼產生單元310d與校驗單元310e的結構是類似於第一實施例的微處理器單元110a、快閃記憶體介面110b、緩衝記憶體110c、檢查碼產生單元110d與校驗單元110e的結構,以下將配合圖4描述其運作上的不同之處。
錯誤校正模組310f是耦接至微處理器單元310a。錯誤校正模組310f用以對欲儲存至快閃記憶體330的資料封包執行錯誤校正編碼程序,並且產生錯誤校正碼。特別是,所產生的錯誤校正碼會與欲儲存的資料封包一起寫入至快閃記憶體330中,也就是錯誤校正碼會被寫入至實體位址的冗餘區R中。此外,錯誤校正模組310f更用以在資料讀取作業時依據所記錄的錯誤校正碼來檢查及修正資料封包在傳輸時可能產生的錯誤或雜訊(noise)。
在根據本實施例的儲存系統100’中可透過檢查碼產生單元310d、校驗單元310e與錯誤校正模組310f的運作可確認所讀取的實體位址是否為欲讀取的實體位址並且確認所讀取資料的內容,由此可更能保證所讀取之資料的正確性。以下將配合圖4詳細說明儲存系統100’的資料存取步驟。
圖4是根據本發明第二實施例繪示資料存取方法的流
程圖。
請參照圖4的(a),當主機200傳送寫入指令至儲存系統100’以寫入資料(以下稱為主資料)至快閃記憶體330時,微處理器單元310a會將寫入指令中的的邏輯位址與其在快閃記憶體330中對應的實體位址傳送至檢查碼產生單元310d中,並且檢查碼產生單元310d會據此產生一組檢查碼(步驟S401)。
之後,所產生的檢查碼、寫入指令中的邏輯位址和主資料會傳送至錯誤校正模組310f,並且錯誤校正模組310f會據此產生一組錯誤校正碼(步驟S403)。
此檢查碼、寫入指令中的邏輯位址、主資料以及所產生的錯誤校正碼會透過快閃記憶體介面310b而一起被寫入至快閃記憶體330的對應實體位址中(步驟S405)。具體來說,微處理器單元310a會將主資料寫入至對應實體位址的資料區中,並且將包含檢查碼與欲寫入之邏輯位址的冗餘資料以及錯誤校正碼寫入至對應實體位址的冗餘區中。
接著請參照圖4的(b),當主機200傳送讀取指令至儲存系統100’以讀取快閃記憶體330中的主資料時,微處理器單元110a會依據對應讀取指令中的邏輯位址的欲讀取實體位址透過快閃記憶體介面310b來從快閃記憶體330的實體位址中同時讀取此實體位址中的檢查碼、邏輯位址、主資料以及錯誤校正碼(步驟S407)。
所讀取的檢查碼、邏輯位址、主資料以及錯誤校正碼
會被傳送至錯誤校正模組310f,並且錯誤校正模組310f會執行一錯誤校正程序以驗證所讀取的檢查碼、邏輯位址和主資料的內容是否正確無誤且在發生錯誤時會修正錯誤的內容(步驟S409)。
之後,已錯誤校正的檢查碼、邏輯位址和主資料會傳送至校驗單元310e,並且校驗單元310e會驗證已錯誤校正的檢查碼與邏輯位址和欲讀取實體位址是否匹配(步驟S411)。
倘若在步驟S411中校驗單元310e判斷已錯誤校正的檢查碼與邏輯位址和欲讀取實體位址是匹配而確認所讀取的主資料是主機200欲讀取的實體位址中的資料時,則在步驟413中微處理器單元310a會傳送所讀取的主資料至主機200。
倘若在步驟S411中校驗單元310e判斷所讀取冗餘資料中的檢查碼與邏輯位址和欲讀取實體位址是不匹配時,則在步驟S415中微處理器單元310a會重新存取讀取指令中欲讀取的實體位址並且執行步驟407。或者,在本發明另一實施例中,當校驗單元310e判斷已錯誤校正的檢查碼與邏輯位址和欲讀取實體位址是不匹配時,則微處理器單元310a會產生一讀取錯誤訊息以告知主機200。
基此,根據本發明實施例的儲存系統100’可透過校驗單元310e判斷所讀取的實體位址與讀取指令中欲讀取的實體位址是否相符,並且可透過錯誤校正模組310f判斷所讀取資料的內容是否正確,由此可更確保所傳送資料的正
確性。
綜上所述,本發明實施例在快閃記憶體儲存系統中實作一位址確認模組(例如,在上述實施例中是以檢查碼產生單元與校驗單元來實作)以判斷所讀取的實體位址是否為主機欲讀取的實體位址,由此確保資料來源的正確性。此外,快閃記憶體儲存系統更包括錯誤校正模組以確認所讀取資料的內容,由此確保資料本身的正確性。基此,根據本發明實施例的快閃記憶體儲存系統可更有效地確認所傳送資料的正確性。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100、100’‧‧‧儲存系統
110、310‧‧‧控制器
110a、310a‧‧‧微處理器單元
110b、310b‧‧‧快閃記憶體介面
110c、310c‧‧‧緩衝記憶體
110d、310d‧‧‧檢查碼產生單元
110e、310e‧‧‧校驗單元
120、320‧‧‧匯流排連接介面
130、330‧‧‧快閃記憶體
130-0、130-1、130-2、130-N‧‧‧區塊
200‧‧‧主機
300‧‧‧匯流排
D‧‧‧資料區
R‧‧‧冗餘區
310f‧‧‧錯誤校正模組
S201、S203、S205、S207、S209、S211‧‧‧資料存取的步驟
S401、S403、S405、S407、S409、S411、S413、S415‧‧‧資料存取的步驟
圖1是根據本發明第一實施例繪示儲存系統的概要方塊圖。
圖2是根據本發明第一實施例繪示資料存取方法的流程圖。
圖3是根據本發明第二實施例繪示儲存系統的概要方塊圖。
圖4是根據本發明第二實施例繪示資料存取方法的流程圖。
100‧‧‧儲存系統
110‧‧‧控制器
110a‧‧‧微處理器單元
110b‧‧‧快閃記憶體介面
110c‧‧‧緩衝記憶體
110d‧‧‧檢查碼產生單元
110e‧‧‧校驗單元
120‧‧‧匯流排連接介面
130‧‧‧快閃記憶體
130-0、130-1、130-2、130-N‧‧‧區塊
200‧‧‧主機
300‧‧‧匯流排
D‧‧‧資料區
R‧‧‧冗餘區
Claims (28)
- 一種資料存取方法,其適用於一快閃記憶體,該資料存取方法包括:依據對應一讀取指令中的一邏輯位址的一欲讀取實體位址來在該快閃記憶體的一實體位址上進行讀取;確認所讀取的該實體位址是否為該欲讀取實體位址;以及當判斷該實體位址是該欲讀取實體位址時傳送該實體位址中所儲存的主資料。
- 如申請專利範圍第1項所述之資料存取方法,更包括:根據在該快閃記憶體中對應一寫入指令中的一邏輯位址的一欲寫入實體位址來產生一檢查碼;將該檢查碼和欲寫入的主資料一起寫入至該欲寫入實體位址中;從該快閃記憶體的該實體位址中讀取該實體位址中所儲存的檢查碼;以及依據所讀取的檢查碼來驗證該實體位址是否為該欲讀取實體位址。
- 如申請專利範圍第2項所述之資料存取方法,更包括執行一循環冗餘檢查(Cycle Redundancy Check,CRC)碼產生程序來產生該檢查碼。
- 如申請專利範圍第2項所述之資料存取方法,更包括將該檢查碼儲存在該欲寫入實體位址的冗餘區中。
- 如申請專利範圍第2項所述之資料存取方法,更包括:根據該檢查碼和欲寫入的該主資料產生一錯誤校正碼;以及將該錯誤校正碼寫入至該欲寫入實體位址中。
- 如申請專利範圍第5項所述之資料存取方法,更包括:依據所讀取的該實體位址中的該錯誤校正碼來確認所讀取的檢查碼與主資料的內容是否正確,其中當所讀取的檢查碼與所讀取的主資料的內容為不正確時會對所讀取的檢查碼與所讀取的主資料進行錯誤校正。
- 如申請專利範圍第2項所述之資料存取方法,更包括當判斷所讀取的實體位址不是該欲讀取實體位址時重新再讀取一次該欲讀取實體位址。
- 如申請專利範圍第1項所述之資料存取方法,更包括:根據一寫入指令中的一邏輯位址和在該快閃記憶體中對應該寫入指令中的邏輯位址的一欲寫入實體位址來產生一檢查碼;將該檢查碼、該寫入指令中的邏輯位址和欲寫入的主資料一起寫入至該欲寫入實體位址中;從該快閃記憶體的該實體位址中讀取一檢查碼與一邏輯位址;以及 依據所讀取的檢查碼與所讀取的邏輯位址來驗證該實體位址是否為該欲讀取實體位址。
- 一種控制器,其適用於具有一快閃記憶體的一儲存系統,該控制器包括:快閃記憶體介面,用以存取該快閃記憶體;緩衝記憶體,用以暫時地儲存資料;微處理器單元,耦接至該快閃記憶體介面與該緩衝記憶體用以依據對應一讀取指令中的一邏輯位址的一欲讀取實體位址來在該快閃記憶體的一實體位址上進行讀取;以及位址確認模組,耦接至該微處理器單元用以確認所讀取的該實體位址是否為該欲讀取實體位址,其中該微處理器單元僅在當該位址確認模組判斷所讀取的該實體位址是該欲讀取實體位址時才傳送該實體位址中所儲存的主資料。
- 如申請專利範圍第9項所述之控制器,其中該位址確認模組更包括:檢查碼產生單元,耦接至該微處理器單元且用以根據在該快閃記憶體中對應一寫入指令中的一邏輯位址的一欲寫入實體位址來產生一檢查碼,其中該微處理器單元會將該檢查碼和欲寫入的主資料一起寫入至該欲寫入實體位址中;校驗單元,耦接至該微處理器單元且依據該微處理器單元從該快閃記憶體的該實體位址中讀取的該檢查碼來驗 證所讀取的該實體位址是否為該欲讀取實體位址。
- 如申請專利範圍第10項所述之控制器,其中該檢查碼產生單元為一循環冗餘檢查(Cycle Redundancy Check,CRC)碼產生單元,並且該校驗單元為一循環冗餘檢查校驗單元。
- 如申請專利範圍第10項所述之控制器,其中該檢查碼是儲存在該欲寫入實體位址的冗餘區中。
- 如申請專利範圍第10項所述之控制器,更包括錯誤校正模組,耦接至該微處理器單元並且用以依據該檢查碼和欲寫入的該主資料產生一錯誤校正碼,其中該微處理器單元會將該錯誤校正碼寫入至該欲寫入實體位址中。
- 如申請專利範圍第13項所述之控制器,其中該錯誤校正模組會依據所讀取的該實體位址中的該錯誤校正碼來確認所讀取的檢查碼與所讀取的主資料的內容是否正確,並且當所讀取的檢查碼與所讀取的主資料的內容為不正確時該錯誤校正模組會對所讀取的檢查碼與所讀取的主資料進行錯誤校正。
- 如申請專利範圍第10項所述之控制器,其中當該校驗單元判斷所讀取的該實體位址不是該欲讀取實體位址時則該微處理器單元會重新再讀取一次該欲讀取實體位址。
- 如申請專利範圍第9項所述之控制器,其中該快閃記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell, MLC)反及(NAND)快閃記憶體。
- 如申請專利範圍第9項所述之控制器,其中該儲存系統為USB隨身碟、記憶卡或固態硬碟。
- 如申請專利範圍第9項所述之控制器,其中該位址確認模組更包括:檢查碼產生單元,耦接至該微處理器單元且用以根據一寫入指令中的一邏輯位址和在該快閃記憶體中對應該寫入指令中的邏輯位址的一欲寫入實體位址來產生一檢查碼,其中該微處理器單元會將該檢查碼、該寫入指令中的邏輯位址和欲寫入的主資料一起寫入至該欲寫入實體位址中;校驗單元,耦接至該微處理器單元且依據該微處理器單元從該快閃記憶體的該實體位址中讀取的一檢查碼與一邏輯位址來驗證所讀取的該實體位址是否為該欲讀取實體位址。
- 一種儲存系統,包括:快閃記憶體,用以儲存資料;匯流排連接介面,用以連接一主機;以及控制器,耦接至該快閃記憶體與該匯流排連接介面,並且用以依據對應一讀取指令中的一邏輯位址的一欲讀取實體位址來在該快閃記憶體的一實體位址上進行讀取,其中該控制器會確認所讀取的該實體位址是否為該欲讀取實體位址並且僅當判斷所讀取的該實體位址是該欲讀取實體位址時才傳送該實體位址中所儲存的主資料。
- 如申請專利範圍第19項所述之儲存系統,其中該 控制器更用以根據一寫入指令中的一邏輯位址和在該快閃記憶體中對應該寫入指令中的邏輯位址的一欲寫入實體位址來產生一檢查碼,並且將該檢查碼和欲寫入的主資料一起寫入至該欲寫入實體位址中,以及該控制器更用以從該快閃記憶體的該實體位址中讀取一檢查碼,並且依據所讀取的檢查碼來驗證該實體位址是否為該欲讀取實體位址,其中,當判斷該實體位址是該欲讀取實體位址時傳送所的主資料。
- 如申請專利範圍第20項所述之儲存系統,其中該檢查碼是一循環冗餘檢查(Cycle Redundancy Check,CRC)碼。
- 如申請專利範圍第20項所述之儲存系統,其中該檢查碼是儲存在該欲寫入實體位址的冗餘區中。
- 如申請專利範圍第20項所述之儲存系統,其中該控制器更用以依據該檢查碼和欲寫入的該主資料產生一錯誤校正碼,並且將該錯誤校正碼寫入至該欲寫入實體位址中。
- 如申請專利範圍第23項所述之儲存系統,其中該控制器更用以依據所讀取的該實體位址中的該錯誤校正碼來確認所讀取的檢查碼與所讀取的主資料的內容是否正確;以及當所讀取的檢查碼與所讀取的主資料的內容為不正確時該錯誤校正模組會對所讀取的檢查碼與所讀取的主資料進行錯誤校正。
- 如申請專利範圍第20項所述之儲存系統,其中該 錯資料存取程序更包括當判斷所讀取的該實體位址不是該欲讀取實體位址時重新再讀取一次該欲讀取實體位址。
- 如申請專利範圍第19項所述之儲存系統,其中該快閃記憶體為單層記憶胞(Single Level Cell,SLC)反及(NAND)快閃記憶體或多層記憶胞(Multi Level Cell,MLC)反及(NAND)快閃記憶體。
- 如申請專利範圍第19項所述之儲存系統,其中該匯流排連接介面為PCI Express介面、USB介面、IEEE 1394介面、SATA介面、MS介面、MMC介面、SD介面、CF介面或IDE介面。
- 如申請專利範圍第19項所述之儲存系統,其中該控制器更用以根據一寫入指令中的一邏輯位址和在該快閃記憶體中對應該寫入指令中的邏輯位址的一欲寫入實體位址來產生一檢查碼,並且將該檢查碼、該寫入指令中的邏輯位址和欲寫入的主資料一起寫入至該欲寫入實體位址中,以及該控制器更用以從該快閃記憶體的該實體位址中讀取一檢查碼與一邏輯位址,並且依據所讀取的檢查碼與所讀取的邏輯位址來驗證該實體位址是否為該欲讀取實體位址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW097113041A TWI415134B (zh) | 2008-04-10 | 2008-04-10 | 資料存取方法、使用此方法的控制器與儲存系統 |
US12/165,123 US8219883B2 (en) | 2008-04-10 | 2008-06-30 | Data accessing method, controller and storage system using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW097113041A TWI415134B (zh) | 2008-04-10 | 2008-04-10 | 資料存取方法、使用此方法的控制器與儲存系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200943307A TW200943307A (en) | 2009-10-16 |
TWI415134B true TWI415134B (zh) | 2013-11-11 |
Family
ID=41164991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097113041A TWI415134B (zh) | 2008-04-10 | 2008-04-10 | 資料存取方法、使用此方法的控制器與儲存系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8219883B2 (zh) |
TW (1) | TWI415134B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI370969B (en) * | 2008-07-09 | 2012-08-21 | Phison Electronics Corp | Data accessing method, and storage system and controller using the same |
US8819503B2 (en) | 2010-07-02 | 2014-08-26 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US8737141B2 (en) | 2010-07-07 | 2014-05-27 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
US8737136B2 (en) * | 2010-07-09 | 2014-05-27 | Stec, Inc. | Apparatus and method for determining a read level of a memory cell based on cycle information |
US9047955B2 (en) | 2011-03-30 | 2015-06-02 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
US9195586B2 (en) | 2012-02-23 | 2015-11-24 | Hgst Technologies Santa Ana, Inc. | Determining bias information for offsetting operating variations in memory cells based on wordline address |
US9626517B2 (en) * | 2013-01-23 | 2017-04-18 | Seagate Technology Llc | Non-deterministic encryption |
CN107203441A (zh) * | 2017-08-01 | 2017-09-26 | 常州昊云工控科技有限公司 | 双备份数据存储装置及其工作方法、机器人 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6459644B2 (en) * | 2000-06-06 | 2002-10-01 | Hitachi, Ltd. | Semiconductor memory device with block alignment function |
US6477632B1 (en) * | 1997-12-05 | 2002-11-05 | Tokyo Electron Device Limited | Storage device and accessing method |
US7137027B2 (en) * | 2003-02-07 | 2006-11-14 | Renesas Technology Corp. | Nonvolatile memory system |
US20070143569A1 (en) * | 2005-12-19 | 2007-06-21 | Sigmatel, Inc. | Non-volatile solid-state memory controller |
US20070283428A1 (en) * | 2000-01-06 | 2007-12-06 | Super Talent Electronics, Inc. | Managing Bad Blocks In Flash Memory For Electronic Data Flash Card |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296213B2 (en) * | 2002-12-11 | 2007-11-13 | Nvidia Corporation | Error correction cache for flash memory |
GB0315063D0 (en) * | 2003-06-27 | 2003-07-30 | Ibm | Memory devices |
US7610433B2 (en) * | 2004-02-05 | 2009-10-27 | Research In Motion Limited | Memory controller interface |
JP2007242157A (ja) | 2006-03-09 | 2007-09-20 | Fujitsu Ltd | 情報記憶装置、および書込制御回路 |
-
2008
- 2008-04-10 TW TW097113041A patent/TWI415134B/zh active
- 2008-06-30 US US12/165,123 patent/US8219883B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477632B1 (en) * | 1997-12-05 | 2002-11-05 | Tokyo Electron Device Limited | Storage device and accessing method |
US20070283428A1 (en) * | 2000-01-06 | 2007-12-06 | Super Talent Electronics, Inc. | Managing Bad Blocks In Flash Memory For Electronic Data Flash Card |
US6459644B2 (en) * | 2000-06-06 | 2002-10-01 | Hitachi, Ltd. | Semiconductor memory device with block alignment function |
US7137027B2 (en) * | 2003-02-07 | 2006-11-14 | Renesas Technology Corp. | Nonvolatile memory system |
US20070143569A1 (en) * | 2005-12-19 | 2007-06-21 | Sigmatel, Inc. | Non-volatile solid-state memory controller |
Also Published As
Publication number | Publication date |
---|---|
TW200943307A (en) | 2009-10-16 |
US20090259916A1 (en) | 2009-10-15 |
US8219883B2 (en) | 2012-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI415134B (zh) | 資料存取方法、使用此方法的控制器與儲存系統 | |
CN107957959B (zh) | 具有文件级安全擦除的存储器系统及其操作方法 | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI516936B (zh) | 運作模式切換方法、記憶體控制器與記憶體儲存裝置 | |
JP2013506903A (ja) | 電源遮断管理 | |
US20130080787A1 (en) | Memory storage apparatus, memory controller and password verification method | |
US9213636B2 (en) | Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same | |
TWI591643B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI451439B (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TWI802324B (zh) | 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US8301981B2 (en) | Data access method for flash memory and storage system and controller thereof | |
US8607123B2 (en) | Control circuit capable of identifying error data in flash memory and storage system and method thereof | |
TW201928958A (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
US11556268B2 (en) | Cache based flow for a simple copy command | |
TWI467364B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
TWI797464B (zh) | 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN111580741A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI658359B (zh) | 資料寫入方法、有效資料識別方法及記憶體儲存裝置 | |
CN112051963A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
TW202344970A (zh) | 基於資料優先級的風險評估方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201913353A (zh) | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN109508252B (zh) | 数据编码方法、存储器控制电路单元与存储器存储装置 | |
TWI814501B (zh) | 映射表重建方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI771079B (zh) | 記憶體存取方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI777087B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |