TWI566096B - 資料儲存系統與其相關方法 - Google Patents
資料儲存系統與其相關方法 Download PDFInfo
- Publication number
- TWI566096B TWI566096B TW104130059A TW104130059A TWI566096B TW I566096 B TWI566096 B TW I566096B TW 104130059 A TW104130059 A TW 104130059A TW 104130059 A TW104130059 A TW 104130059A TW I566096 B TWI566096 B TW I566096B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- circuit
- logical block
- block address
- storage
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- 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
-
- 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/1012—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 using codes or arrangements adapted for a specific type of error
-
- 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/1044—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 with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Description
本發明係關於一種資料儲存系統與其相關方法,尤指一種可以減小儲存資料量的資料格式與其相關方法。
隨著科技的演進,越來越大量的資料需要被寫入/讀出快閃記憶體。因此,快閃記憶體的容量也需要不斷的增高以符合廣大資料量的需求。在習知的技術中,當一主機要將一筆位元組資料(data bytes)儲存入一快閃記憶體時,該快閃記憶體的一控制電路會以一固定的格式將該位元組資料儲存入該快閃記憶體。一般而言,該習知的格式會包含有至少四個部分,第一個部分是該位元組資料,第二個部分是來自該主機的一邏輯區塊位址,第三個部分是一循環冗餘查核碼,以及第四個部分是一錯誤檢查和糾正碼,其中該邏輯區塊位址、該循環冗餘查核碼以及該錯誤檢查和糾正碼都不是來自主機的真正資料量,但是它們依然會被寫入快閃記憶體中。因此,當具有大量的資料要儲存入一快閃記憶體時,該些非資料量部分就會同時佔據該快閃記憶體一大部分的儲存空間。因此,如何以更簡化的格式來有效的將一位元組資料儲存/讀出一快閃記憶體以提高該快閃記憶體的儲存空間已成功此領域所亟需解決的問題。
因此,本發明之一目的在於提供一種可以減小儲存資料量的資料格式與其相關方法。
依據本發明之一第一實施例,其係提供一種資料儲存系統。資料儲存系統包含有一處理電路、一運算電路以及一編碼電路。該處理電路用來接收來自一主機的一第一位元組資料。該運算電路係用來依據一第一邏輯區塊位址來產生一第一循環冗餘查核碼,並將該第一循環冗餘查核碼以及該第一位元組資料組合為一第一資料片段。該編碼電路係用來編碼該第一資料片段以產生一第一錯誤檢查和糾正碼,並將該第一資料片段以及該第一錯誤檢查和糾正碼組合為一第一儲存資料。
依據本發明之一第二實施例,其係提供一種資料儲存系統。資料儲存系統包含有一處理電路、一對照表以及一解碼電路。該處理電路用來接收來自一主機的一第一邏輯區塊位址。該對照表係用來記錄對映至該第一邏輯區塊位址的一儲存位址。該解碼電路係用來利用該儲存位址來從一儲存電路中讀出一儲存資料,以及用來依據該儲存資料中的一錯誤檢查和糾正碼來解碼該儲存資料中的一第一資料片段,該第一資料片段至少包含有一第二邏輯區塊位址。
依據本發明之一第三實施例,其係提供一種資料儲存方法。該資料儲存方法包含有:接收來自一主機的一第一位元組資料;依據一第一邏輯區塊位址來產生一第一循環冗餘查核碼,並將該第一循環冗餘查核碼以及該第一位元組資料組合為一第一資料片段;以及編碼該第一資料片段以產生一第一錯誤檢查和糾正碼,並將該第一資料片段以及該第一錯誤檢查和糾正碼組合為一第一儲存資料。
依據本發明之一第四實施例,其係提供一種資料儲存方法。該資料儲存方法包含有:接收來自一主機的一第一邏輯區塊位址;利用一對照表來記錄對映至該第一邏輯區塊位址的一儲存位址;利用該儲存位址來從一儲存電路中讀出一儲存資料;以及依據該儲存資料中的一錯誤檢查和糾正碼來解碼該儲存資料中的一第一資料片段,其中該第一資料片段至少包含有一第二邏輯區塊位址。
在說明書及後續的申請專利範圍當中使用了某些詞彙來指稱特定的元件。所屬領域中具有通常知識者應可理解,硬體製造商可能會用不同的名詞來稱呼同一個元件。本說明書及後續的申請專利範圍並不以名稱的差異來作為區分元件的方式,而是以元件在功能上的差異來作為區分的準則。在通篇說明書及後續的請求項當中所提及的「包含」係為一開放式的用語,故應解釋成「包含但不限定於」。此外,「耦接」一詞在此係包含任何直接及間接的電氣連接手段,因此,若文中描述一第一裝置耦接於一第二裝置,則代表該第一裝置可直接電氣連接於該第二裝置,或者透過其他裝置或連接手段間接地電氣連接至該第二裝置。
請參考第1圖。第1圖所示係依據本發明一種資料儲存系統100之一第一實施例示意圖。資料儲存系統100包含有一主機介面102、一處理電路104、一運算電路106、複數個暫存電路108、110、一對照表112、一編碼電路114、以及一儲存電路116。資料儲存系統100可以係一快閃記憶體儲存系統或其他類型的儲存系統。資料儲存系統100係連接於一主機(未顯示),該主機可用來存取資料儲存系統100。為了方便說明本實施例資料儲存系統100的操作特徵,資料儲存系統100可視為一個資料寫入系統。因此,主機介面102是用來接收來自該主機的訊號或傳送訊號至該主機。處理電路104可以係一中央處理電路或一控制電路。處理電路104是用來接收來自該主機的一位元組資料(Data bytes)DATA以及對應的一邏輯區塊位址(Logical Block Address, LBA)LBA。運算電路106可以係一端點到端點的路徑保護電路(End-to-end path protection circuit)。運算電路106係用來依據邏輯區塊位址LBA來產生一循環冗餘查核(Cyclic redundancy check, CRC)碼CRC,並將該循環冗餘查核碼CRC以及位元組資料DATA組合為一資料片段DATA_CRC。編碼電路114係連接於儲存電路116,用來編碼運算電路106所產生的資料片段DATA_CRC以產生一錯誤檢查和糾正(Error Checking and Correcting)碼ECC,並將資料片段DATA_CRC以及錯誤檢查和糾正碼ECC組合為一儲存資料DATA_CRC_ECC。儲存電路116可以係一快閃記憶體,以用來儲存編碼電路114所產生的儲存資料DATA_CRC_ECC。
由於編碼電路114需要花時間來對資料片段DATA_CRC進行編碼,來自運算電路106的資料片段DATA_CRC可能無法馬上被編碼電路114進行編碼,因此資料片段DATA_CRC可能會進暫存在資料儲存系統100內不同的暫存電路內,即第1圖所示的暫存電路108、110。暫存電路108、110可能是耦接於運算電路106與編碼電路114之間的動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)或任何其他種類的記憶體。再者,本發明並不局限於暫存電路的個數,第1圖所示的兩個暫存電路108、110僅是用來方便說明本案的操作技術特徵而已。因此,資料片段DATA_CRC可能先暫存在暫存電路108或110,然後再傳送至編碼電路114,或者資料片段DATA_CRC也可能直接從運算電路106傳送至編碼電路114。
當資料片段DATA_CRC被寫入/讀出暫存電路108或110時,為了確保資料片段DATA_CRC內的位元組資料DATA是正確的,運算電路106(或處理電路104)會另依據資料片段DATA_CRC內的循環冗餘查核碼CRC來檢查資料片段DATA_CRC的正確性。透過循環冗餘查核碼CRC,資料儲存系統100就可以確保資料被寫入與讀出暫存電路108或110時都是前後一致的。舉例而言,運算電路106會判斷寫入暫存電路108的資料片段DATA_CRC內的循環冗餘查核碼CRC是否相同於從暫存電路108讀出來的資料片段DATA_CRC內的循環冗餘查核碼CRC,若二者相同則代表從暫存電路108讀出來的資料片段DATA_CRC內的位元組資料DATA沒有失真,若二者不相同則代表從暫存電路108讀出來的資料片段DATA_CRC內的位元組資料DATA發生錯誤。若從暫存電路108讀出來的資料片段DATA_CRC內的位元組資料DATA發生錯誤,則資料儲存系統100就必須重讀資料或利用其他方法進行除錯。
此外,第1圖所示的對照表112是用來記錄對映(Mapping)至邏輯區塊位址LBA的一儲存位址ADD,其中儲存位址ADD是儲存電路116用來儲存儲存資料DATA_CRC_ECC的一物理性(physical)位址。換句話說,當資料儲存系統100接收到來自該主機的一位元組資料DATA以及對應的一邏輯區塊位址LBA時,處理電路104就會從對照表112中找出對應至邏輯區塊位址LBA的儲存位址ADD,並將該編碼後的位元組資料(即DATA_CRC_ECC)寫入儲存電路116的儲存位址ADD中。請注意,本發明的對照表112有可能是存在於一個獨立的記憶體中,或存在於處理電路104內的一個記憶體中,或其他電路元件的記憶體中。
依據本發明的實施例,當運算電路106將該循環冗餘查核碼CRC以及位元組資料DATA組合為資料片段DATA_CRC時,運算電路106並沒有將邏輯區塊位址LBA組合到資料片段DATA_CRC中。換句話說,相較於傳統的方法,本實施例的資料片段DATA_CRC的位元數比較少,因此其所編碼出來的儲存資料DATA_CRC_ECC所佔據的儲存空間就比較小,進而提高了儲存電路116的資料容量。舉例而言,若每一個位元組資料DATA的大小是512個位元組(Byte),每一個邏輯區塊位址LBA的大小是4個位元組,以及每一個循環冗餘查核碼CRC的大小是2個位元組,則相較於傳統的方法,本實施例每一筆儲存資料DATA_CRC_ECC就可以節省儲存電路116的4個位元組的空間。請注意,雖然本實施例的運算電路106並沒有將邏輯區塊位址LBA組合到資料片段DATA_CRC中,但是由於循環冗餘查核碼CRC是根據邏輯區塊位址LBA來產生的,因此本實施例的循環冗餘查核碼CRC實質上已經包含有邏輯區塊位址LBA的資訊。當循環冗餘查核碼CRC以及位元組資料DATA組合為資料片段DATA_CRC時,資料片段DATA_CRC必然也包含有邏輯區塊位址LBA的資訊。相較於傳統的方法,本實施例並不是直接儲存邏輯區塊位址LBA,而是將儲存邏輯區塊位址LBA的資料編碼/整合/結合至循環冗餘查核碼CRC中,因此本實施例得以節省了習知方法用來儲存邏輯區塊位址LBA的空間。
請參考第2圖。第2圖所示係依據本發明位元組資料DATA、資料片段DATA_CRC以及儲存資料DATA_CRC_ECC分別的格式之一實施例示意圖。標號202表示主機介面102接收到的一筆位元組資料DATA。標號204表示運算電路106所輸出的資料片段DATA_CRC,其包含了位元組資料DATA以及循環冗餘查核碼CRC,但並不具有邏輯區塊位址LBA。標號206表示編碼電路114所輸出的儲存資料DATA_CRC_ECC,其包含了位元組資料DATA、循環冗餘查核碼CRC以及錯誤檢查和糾正碼ECC。請注意,當主機介面102接收到的一位元組資料DATA以及對應的一邏輯區塊位址LBA時,處理電路104會大致上同時將邏輯區塊位址LBA寫入對照表112,並對映至儲存電路116的一儲存位址ADD。接著,當編碼電路114會將所輸出的儲存資料DATA_CRC_ECC寫入儲存電路116的儲存位址ADD中。
請參考第3圖。第3圖所示係依據本發明一種資料儲存系統300之一第二實施例示意圖。資料儲存系統300包含有一儲存電路302、一解碼電路304、一處理電路306、一第一檢查電路308、一暫存電路310、一第二檢查電路312、一主機介面314以及一對照表316。相對於第1圖所示的第一實施例,第二實施例資料儲存系統300可視為一個資料讀出系統。進一步而言,資料儲存系統300係用來讀出利用資料儲存系統100所寫入的資料。當處理電路306透過主機介面314接收到來自一主機(未顯示)的控制訊號以從儲存電路302中讀出一邏輯區塊位址LBA’的儲存資料DATA_CRC_ECC’時,處理電路306會先從對照表316中找出對映到邏輯區塊位址LBA’的一儲存位址ADD’。接著,解碼電路304就會依據儲存位址ADD’從儲存電路302中讀取出儲存資料DATA_CRC_ECC’。如上述關於資料儲存系統100的操作所述,儲存資料DATA_CRC_ECC’的格式會包含有三部部分,第一個部分是一位元組資料DATA’,第二個部分是一循環冗餘查核碼CRC’,以及第三個部分是一錯誤檢查和糾正碼ECC’。請注意,解碼電路304所讀出的儲存資料DATA_CRC_ECC’的格式並沒有包含有邏輯區塊位址,因為其邏輯區塊位址的資料已經被整合進循環冗餘查核碼CRC’了,如第4圖所示。第4圖所示係依據本發明位元組資料DATA’、資料片段DATA_CRC’以及儲存資料DATA_CRC_ECC’分別的格式之一實施例示意圖。標號402表示解碼電路304所讀出的儲存資料DATA_CRC_ECC’,其包含了位元組資料DATA’、循環冗餘查核碼CRC’以及錯誤檢查和糾正碼ECC’。標號404表示第一檢查電路308所輸出的資料片段DATA_LBA_CRC’,其包含了位元組資料DATA、邏輯區塊位址LBA’以及循環冗餘查核碼CRC’。標號406表示第二檢查電路312所輸出的一筆位元組資料DATA’。
當解碼電路304讀出儲存資料DATA_CRC_ECC’後,解碼電路304會先利用錯誤檢查和糾正碼ECC’來檢查所讀出儲存資料DATA_CRC_ECC’的正確性。如果錯誤檢查和糾正碼ECC’可以用來解碼位元組資料DATA’以及循環冗餘查核碼CRC’,則代表所讀出儲存資料DATA_CRC_ECC’是一筆正確的資料。但是,如果錯誤檢查和糾正碼ECC’無法用來解碼位元組資料DATA’以及循環冗餘查核碼CRC’,則代表所讀出儲存資料DATA_CRC_ECC’是一筆錯誤的資料。若儲存資料DATA_CRC_ECC’是一筆錯誤的資料時,資料儲存系統300就會重新讀取儲存資料或利用其他方法來進行除錯的處理。
請注意,若儲存資料DATA_CRC_ECC’是一筆正確的資料時,解碼電路304會另依據循環冗餘查核碼CRC’來解碼出一邏輯區塊位址LBA’’。此外,解碼電路304會移除錯誤檢查和糾正碼ECC’,並將移除錯誤檢查和糾正碼ECC’後的資料(即包含有邏輯區塊位址LBA’’、位元組資料DATA’以及循環冗餘查核碼CRC’)傳送至第一檢查電路308。
當第一檢查電路308接收到來自解碼電路304的邏輯區塊位址LBA’’、位元組資料DATA’以及循環冗餘查核碼CRC’時,第一檢查電路308會判斷來自解碼電路304的邏輯區塊位址LBA’’是否相等於來自處理電路306的邏輯區塊位址LBA’。 若來自解碼電路304的邏輯區塊位址LBA’’相同於來自處理電路306的邏輯區塊位址LBA’,則代表解碼電路304從儲存電路302讀出來的資料就是該主機所要的資料,因此第一檢查電路308就會判斷來自解碼電路304的邏輯區塊位址LBA’’、位元組資料DATA’以及循環冗餘查核碼CRC’是正確的資料。此外,當第一檢查電路308接收到來自解碼電路304的邏輯區塊位址LBA’’、位元組資料DATA’以及循環冗餘查核碼CRC’時,第一檢查電路308也會檢查循環冗餘查核碼CRC’是否正確,以判斷所接收的資料是否失真。當第一檢查電路308來自解碼電路304的邏輯區塊位址LBA’’以及循環冗餘查核碼CRC’都通過檢查時,第一檢查電路308就會將位元組資料DATA’、邏輯區塊位址LBA’(即LBA’’)以及循環冗餘查核碼CRC’組合為第4圖所示的資料片段DATA_LBA_CRC’,並輸出到暫存電路310。
接著,當第二檢查電路312接收到來自暫存電路310的資料片段DATA_LBA_CRC’時,第二檢查電路312會依據資料片段DATA_LBA_CRC’內的循環冗餘查核碼CRC’來判斷暫存電路310所輸出的資料是否發生錯誤。當第二檢查電路312判斷出暫存電路310所輸出的資料為正確時,第二檢查電路312就會將資料片段DATA_LBA_CRC’內的循環冗餘查核碼CRC’以及邏輯區塊位址LBA’移除,並將位元組資料DATA’(即如第4圖所示的406)輸出至主機介面314以傳送至該主機。
從上述關於資料儲存系統300的操作,可以得知第一檢查電路308會檢查每一筆從儲存電路302讀出來的儲存資料DATA_CRC_ECC’內的邏輯區塊位址LBA’’是否相同於處理電路306所收到的邏輯區塊位址LBA’,以減少所謂靜態錯誤(silent error rate)的發生。此外,第二檢查電路312會依據資料片段DATA_LBA_CRC’內的循環冗餘查核碼CRC’來檢查暫存電路310所輸出的資料是否正確,以減少所謂的一位元錯誤(1-bit error)的發生。因此,本發明所提出的儲存資料的格式除了可以有效地減少儲存資料佔據儲存電路的空間之外,還可以減少資料在儲存、讀取以及傳送時所發生的錯誤。
請注意,雖然本發明的資料寫入操作與資料讀出操作是分別利用第1圖的資料儲存系統100和第3圖的資料儲存系統300來說明,但是實作上資料儲存系統100和資料儲存系統300是可以整合成一個資料存取系統的,分為兩張圖來敘述只是為了方便說明其操作特徵。舉例而言,當資料儲存系統100和資料儲存系統300整合成一個資料存取系統時,主機介面102和主機介面314可視為同一個主機介面,處理電路104和處理電路306可視為同一個處理電路,暫存電路108和暫存電路310可視為同一個暫存電路,儲存電路116和儲存電路302可視為同一個儲存電路,以及對照表112和對照表316可視為同一個對照表。此領域具有通常知識者在閱讀完資料儲存系統100和資料儲存系統300的操作後應可瞭解該資料存取系統的操作,故其細部技術特徵在此不另贅述。
請注意,雖然上述第1圖與第3圖所分別繪示的資料儲存系統100和資料儲存系統300都是以不同的電路元件來區分其功能,但在實作上其也可以整合為一顆或多顆電路/晶片,此亦屬於本發明之範疇所在。
簡言之,上述資料儲存系統100的操作可簡化為第5圖所示的步驟。第5圖所示係依據本發明一種資料儲存方法500之一第一實施例流程圖。倘若大體上可達到相同的結果,並不需要一定照第5圖所示之流程中的步驟順序來進行,且第5圖所示之步驟不一定要連續進行,亦即其他步驟亦可插入其中。本實施例的資料儲存方法500包含有:
步驟502:接收來自一主機的位元組資料DATA以及邏輯區塊位址LBA;
步驟504:依據邏輯區塊位址LBA來產生循環冗餘查核碼CRC,並將循環冗餘查核碼CRC以及位元組資料LBA組合為資料片段DATA_CRC;
步驟506:利用對照表112來記錄對映至邏輯區塊位址LBA的儲存位址ADD;
步驟508:利用至少一暫存電路來暫存資料片段DATA_CRC;
步驟510:依據資料片段DATA_CRC內的循環冗餘查核碼CRC來檢查位元組資料DATA的正確性;
步驟512:編碼資料片段DATA_CRC以產生錯誤檢查和糾正碼ECC,並將資料片段DATA_CRC以及錯誤檢查和糾正碼ECC組合為儲存資料DATA_CRC_ECC;
步驟514:將儲存資料DATA_CRC_ECC寫入儲存電路116的儲存位址ADD中。
此外,上述資料儲存系統300的操作可簡化為第6圖所示的步驟。第6圖所示係依據本發明一種資料儲存方法600之一第二實施例流程圖。倘若大體上可達到相同的結果,並不需要一定照第6圖所示之流程中的步驟順序來進行,且第6圖所示之步驟不一定要連續進行,亦即其他步驟亦可插入其中。本實施例的資料儲存方法600包含有:
步驟602:接收來自一主機的邏輯區塊位址LBA’;
步驟604:利用對照表316來找出對映至邏輯區塊位址LBA’的儲存位址ADD’;
步驟606:利用儲存位址ADD’來從儲存電路302中讀出儲存資料DATA_CRC_ECC’;
步驟608:依據儲存資料DATA_CRC_ECC’中的錯誤檢查和糾正碼ECC’來解碼儲存資料DATA_CRC_ECC’中的資料片段,其中該資料片段至少包含有一邏輯區塊位址LBA’;
步驟610:判斷邏輯區塊位址LBA’是否相同於邏輯區塊位址LBA’’以判斷出儲存資料DATA_CRC_ECC’的正確性,以及依據循環冗餘查核碼CRC’來判斷儲存資料DATA_CRC_ECC’的正確性;
步驟612:將位元組資料DATA’、邏輯區塊位址LBA’以及循環冗餘查核碼CRC’組合為資料片段DATA_LBA_CRC’;
步驟614:利用至少一暫存電路來暫存資料片段DATA_LBA_CRC’;
步驟616:依據資料片段DATA_LBA_CRC’內的循環冗餘查核碼CRC’來檢查位元組資料DATA’的正確性;
步驟618:移除資料片段DATA_LBA_CRC’內的邏輯區塊位址LBA’以及循環冗餘查核碼CRC’以將位元組資料DATA’輸出至主機介面314以傳送至該主機。
綜上所述,本發明實施例所提出的儲存資料格式並沒有將來自一主機的邏輯區塊位址儲存至儲存電路中,以減小儲存資料的大小。此外,本發明實施例的資料儲存系統會檢查每一筆從儲存電路讀出來的儲存資料內的邏輯區塊位址是否相同於處理電路所收到的邏輯區塊位址,以減少靜態錯誤的發生。再者,本發明實施例的資料儲存系統亦會依據資料片段內的循環冗餘查核碼來檢查暫存電路所輸出的資料是否正確,以減少一位元錯誤的發生。因此,本發明所提出的儲存資料的格式除了可以有效地減少儲存資料佔據儲存電路的空間之外,還可以減少資料在儲存、讀取以及傳送時所發生的錯誤。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100、300‧‧‧資料儲存系統
102、314‧‧‧主機介面
104、306‧‧‧處理電路
106‧‧‧運算電路
108、110、310‧‧‧暫存電路
112、316‧‧‧對照表
114‧‧‧編碼電路
116、302‧‧‧儲存電路
202、406‧‧‧位元組資料
204、404‧‧‧資料片段
102、314‧‧‧主機介面
104、306‧‧‧處理電路
106‧‧‧運算電路
108、110、310‧‧‧暫存電路
112、316‧‧‧對照表
114‧‧‧編碼電路
116、302‧‧‧儲存電路
202、406‧‧‧位元組資料
204、404‧‧‧資料片段
206、402‧‧‧儲存資料
304‧‧‧解碼電路
308‧‧‧第一檢查電路
312‧‧‧第二檢查電路
500、600‧‧‧資料儲存方法
502~514、602~618‧‧‧步驟
第1圖係本發明一種資料儲存系統之一第一實施例示意圖。 第2圖係本發明一位元組資料、一資料片段以及一儲存資料分別的格式之一實施例示意圖。 第3圖係本發明一種資料儲存系統之一第二實施例示意圖。 第4圖係本發明一位元組資料、一資料片段以及一儲存資料分別的格式之一第二實施例示意圖。 第5圖係本發明一種資料儲存方法之一第一實施例流程圖。 第6圖係本發明一種資料儲存方法之一第二實施例流程圖。
100‧‧‧資料儲存系統
102‧‧‧主機介面
104‧‧‧處理電路
106‧‧‧運算電路
108、110‧‧‧暫存電路
112‧‧‧對照表
114‧‧‧編碼電路
116‧‧‧儲存電路
Claims (30)
- 一種資料儲存系統,包含有:一處理電路,用來接收來自一主機的一第一位元組資料(Data bytes);一運算電路,用來依據一第一邏輯區塊位址(Logical Block Address,LBA)來產生一第一循環冗餘查核(Cyclic redundancy check,CRC)碼,並將該第一循環冗餘查核碼以及該第一位元組資料組合為一第一資料片段;以及一編碼電路,用來編碼該第一資料片段以產生一第一錯誤檢查和糾正(Error Checking and Correcting)碼,並將該第一資料片段以及該第一錯誤檢查和糾正碼組合為一第一儲存資料。
- 如申請專利範圍第1項所述的資料儲存系統,其中當該運算電路將該第一循環冗餘查核碼以及該第一位元組資料組合為該第一資料片段時,該運算電路並沒有將該第一邏輯區塊位址組合入該第一資料片段中。
- 如申請專利範圍第1項所述的資料儲存系統,其中該處理電路另接收該第一邏輯區塊位址。
- 如申請專利範圍第1項所述的資料儲存系統,另包含有:至少一暫存電路,耦接於該運算電路與該編碼電路之間,用來暫存該第一資料片段;其中當該暫存電路用來暫存該第一資料片段時,該運算電路另依據該第一資料片段內的該第一循環冗餘查核碼來檢查該第一資料片段的正確性。
- 如申請專利範圍第1項所述的資料儲存系統,另包含有:一儲存電路,用來儲存該第一儲存資料。
- 如申請專利範圍第5項所述的資料儲存系統,另包含有:一對照表,用來記錄對映(Mapping)至該第一邏輯區塊位址的一第一儲存位址;其中該第一儲存位址是該儲存電路用來儲存該第一儲存資料的一物理性(physical)位址。
- 如申請專利範圍第6項所述的資料儲存系統,另包含有:一解碼電路;其中該處理電路另依據一第二邏輯區塊位址來從該對照表找出對應的一第二儲存位址,該解碼電路利用該第二儲存位址來從該儲存電路中讀出一第二儲存資料,該解碼電路另用來依據該第二儲存資料中的一第二錯誤檢查和糾正碼來解碼該第二儲存資料中的一第二資料片段,該第二資料片段至少包含有一第三邏輯區塊位址。
- 如申請專利範圍第7項所述的資料儲存系統,另包含有:一第一檢查電路,用來判斷該第二邏輯區塊位址是否相同於該第三邏輯區塊位址以判斷出該第二儲存資料的正確性。
- 如申請專利範圍第8項所述的資料儲存系統,其中該第二資料片段另包含有一第二循環冗餘查核碼,該第一檢查電路另用來依據該第二循環冗餘查核碼來判斷該第二儲存資料的正確性。
- 如申請專利範圍第9項所述的資料儲存系統,其中該第二資料片段另包含有一第二位元組資料,該第一檢查電路另用來將該第二位元組資料、該第三邏輯區塊位址以及該第二循環冗餘查核碼組合為一第二資料片段。
- 如申請專利範圍第10項所述的資料儲存系統,另包含有:一第二檢查電路,用來依據該第二資料片段內的該第二循環冗餘查核碼來判斷該第二位元組資料的正確性,並用來移除該第二資料片段內的該第三邏輯區塊位址以將該第二位元組資料輸出至該主機。
- 一種資料儲存系統,包含有:一處理電路,用來接收來自一主機的一第一邏輯區塊位址;一對照表,用來記錄對映至該第一邏輯區塊位址的一儲存位址;一解碼電路,用來利用該儲存位址來從一儲存電路中讀出一儲存資料,以及用來依據該儲存資料中的一錯誤檢查和糾正碼來解碼該儲存資料中的一第一資料片段,該第一資料片段至少包含有一第二邏輯區塊位址;以及一第一檢查電路,用來判斷該第一邏輯區塊位址是否相同於該第二邏輯區塊位址以判斷出該儲存資料的正確性。
- 如申請專利範圍第12項所述的資料儲存系統,其中該第一資料片段另包含有一循環冗餘查核碼,該第一檢查電路另用來依據該循環冗餘查核碼來判斷該儲存資料的正確性。
- 如申請專利範圍第13項所述的資料儲存系統,其中該第一資料片段另包含有一位元組資料,該第一檢查電路另用來將該位元組資料、該第二邏輯區塊位址以及該循環冗餘查核碼組合為一第二資料片段。
- 如申請專利範圍第14項所述的資料儲存系統,另包含有:一第二檢查電路,用來依據該第二資料片段內的該循環冗餘查核碼來判斷該位元組資料的正確性,並用來移除該第二資料片段內的該第二邏輯區塊位址以將該位元組資料輸出至該主機。
- 一種資料儲存方法,包含有:接收來自一主機的一第一位元組資料;依據一第一邏輯區塊位址來產生一第一循環冗餘查核碼,並將該第一循環冗餘查核碼以及該第一位元組資料組合為一第一資料片段;以及編碼該第一資料片段以產生一第一錯誤檢查和糾正碼,並將該第一資料片段以及該第一錯誤檢查和糾正碼組合為一第一儲存資料。
- 如申請專利範圍第16項所述的資料儲存方法,其中該第一邏輯區塊位址並沒有被組合入該第一資料片段中。
- 如申請專利範圍第16項所述的資料儲存方法,另包含有:從該主機另接收該第一邏輯區塊位址。
- 如申請專利範圍第16項所述的資料儲存方法,另包含有: 利用至少一暫存電路來暫存該第一資料片段;依據該第一資料片段內的該第一循環冗餘查核碼來檢查該第一資料片段的正確性。
- 如申請專利範圍第16項所述的資料儲存方法,另包含有:利用一儲存電路來儲存該第一儲存資料。
- 如申請專利範圍第20項所述的資料儲存方法,另包含有:利用一對照表來記錄對映至該第一邏輯區塊位址的一第一儲存位址;其中該第一儲存位址是該儲存電路用來儲存該第一儲存資料的一物理性位址。
- 如申請專利範圍第21項所述的資料儲存方法,另包含有:依據一第二邏輯區塊位址來從該對照表找出對應的一第二儲存位址;利用該第二儲存位址來從該儲存電路中讀出一第二儲存資料;依據該第二儲存資料中的一第二錯誤檢查和糾正碼來解碼該第二儲存資料中的一第二資料片段,其中該第二資料片段至少包含有一第三邏輯區塊位址。
- 如申請專利範圍第22項所述的資料儲存方法,另包含有:判斷該第二邏輯區塊位址是否相同於該第三邏輯區塊位址以判斷出該第二儲存資料的正確性。
- 如申請專利範圍第23項所述的資料儲存方法,其中該第二資料片段 另包含有一第二循環冗餘查核碼,該資料儲存方法另包含有:依據該第二循環冗餘查核碼來判斷該第二儲存資料的正確性。
- 如申請專利範圍第24項所述的資料儲存方法,其中該第二資料片段另包含有一第二位元組資料,該資料儲存方法另包含有:將該第二位元組資料、該第三邏輯區塊位址以及該第二循環冗餘查核碼組合為一第二資料片段。
- 如申請專利範圍第25項所述的資料儲存方法,另包含有:依據該第二資料片段內的該第二循環冗餘查核碼來判斷該第二位元組資料的正確性;以及移除該第二資料片段內的該第三邏輯區塊位址以將該第二位元組資料輸出至該主機。
- 一種資料儲存方法,包含有:接收來自一主機的一第一邏輯區塊位址;利用一對照表來記錄對映至該第一邏輯區塊位址的一儲存位址;利用該儲存位址來從一儲存電路中讀出一儲存資料;依據該儲存資料中的一錯誤檢查和糾正碼來解碼該儲存資料中的一第一資料片段,其中該第一資料片段至少包含有一第二邏輯區塊位址;以及判斷該第一邏輯區塊位址是否相同於該第二邏輯區塊位址以判斷出該儲存資料的正確性。
- 如申請專利範圍第27項所述的資料儲存方法,其中該第一資料片段另包含有一循環冗餘查核碼,該資料儲存方法另包含有:依據該循環冗餘查核碼來判斷該儲存資料的正確性。
- 如申請專利範圍第28項所述的資料儲存方法,其中該第一資料片段另包含有一位元組資料,該資料儲存方法另包含有:將該位元組資料、該第二邏輯區塊位址以及該循環冗餘查核碼組合為一第二資料片段。
- 如申請專利範圍第29項所述的資料儲存方法,另包含有:依據該第二資料片段內的該循環冗餘查核碼來判斷該位元組資料的正確性;以及移除該第二資料片段內的該第二邏輯區塊位址以將該位元組資料輸出至該主機。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104130059A TWI566096B (zh) | 2015-09-11 | 2015-09-11 | 資料儲存系統與其相關方法 |
CN202010014262.9A CN111221746B (zh) | 2015-09-11 | 2016-09-09 | 数据储存系统与其相关方法 |
CN201610813891.1A CN106528437B (zh) | 2015-09-11 | 2016-09-09 | 数据储存系统与其相关方法 |
US15/260,330 US10469105B2 (en) | 2015-09-11 | 2016-09-09 | Data storage system and associated data storing method for reducing data error rate |
US16/053,815 US10574271B2 (en) | 2015-09-11 | 2018-08-03 | Data storage system and associated method for saving storage space and eliminating data errors |
US16/568,221 US10917119B2 (en) | 2015-09-11 | 2019-09-11 | Data storage system and associated data storing method for reducing data error rate |
US16/745,255 US10992322B2 (en) | 2015-09-11 | 2020-01-16 | Data storage system and associated method for saving storage space and eliminating data errors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104130059A TWI566096B (zh) | 2015-09-11 | 2015-09-11 | 資料儲存系統與其相關方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI566096B true TWI566096B (zh) | 2017-01-11 |
TW201710900A TW201710900A (zh) | 2017-03-16 |
Family
ID=58257479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104130059A TWI566096B (zh) | 2015-09-11 | 2015-09-11 | 資料儲存系統與其相關方法 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10469105B2 (zh) |
CN (2) | CN111221746B (zh) |
TW (1) | TWI566096B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200092036A (ko) * | 2019-01-24 | 2020-08-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10891184B2 (en) * | 2019-05-22 | 2021-01-12 | Macronix International Co., Ltd. | Configurable data integrity mode, and memory device including same |
KR20210128240A (ko) * | 2020-04-16 | 2021-10-26 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이의 동작 방법 |
CN113824626B (zh) * | 2021-09-24 | 2023-12-22 | 广东科瑞德电气科技有限公司 | 一种防止信息交互丢失的通讯管理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200847165A (en) * | 2007-05-25 | 2008-12-01 | Realtek Semiconductor Corp | Data structure for flash memory and data reading/writing method thereof |
TW201314449A (zh) * | 2011-07-22 | 2013-04-01 | Sandisk Technologies Inc | 儲存資料之系統及方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995012850A1 (en) * | 1993-11-04 | 1995-05-11 | Cirrus Logic, Inc. | Reed-solomon decoder |
US6981171B2 (en) * | 2001-06-05 | 2005-12-27 | Sun Microsystems, Inc. | Data storage array employing block verification information to invoke initialization procedures |
US20070268905A1 (en) * | 2006-05-18 | 2007-11-22 | Sigmatel, Inc. | Non-volatile memory error correction system and method |
CN101308702B (zh) * | 2007-05-18 | 2010-06-02 | 瑞昱半导体股份有限公司 | 适用于闪存的数据结构及其数据写入方法和数据读取方法 |
CN101576853B (zh) * | 2008-05-06 | 2011-12-21 | 群联电子股份有限公司 | 数据存取方法、使用此方法的控制器与存储系统 |
JP5677336B2 (ja) * | 2011-08-01 | 2015-02-25 | 株式会社東芝 | メモリ・デバイス |
CN103064640B (zh) * | 2012-12-31 | 2015-11-18 | 苏州国芯科技有限公司 | 应用于nandflash存储设备的快速读写方法 |
US9053012B1 (en) * | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9292379B2 (en) * | 2013-09-28 | 2016-03-22 | Intel Corporation | Apparatus and method to manage high capacity storage devices |
US9274866B2 (en) | 2013-12-09 | 2016-03-01 | International Business Machines Corporation | Programming non-volatile memory using a relaxed dwell time |
US9619381B2 (en) | 2013-12-24 | 2017-04-11 | International Business Machines Corporation | Collaborative health management in a storage system |
EP3096685A1 (en) * | 2014-01-24 | 2016-11-30 | Icura ApS | System and method for mapping moving body parts |
US9778975B2 (en) | 2014-05-19 | 2017-10-03 | S34A, Inc. | Hidden data identification in solid state drive forensics |
WO2016059715A1 (ja) * | 2014-10-17 | 2016-04-21 | 株式会社日立製作所 | 計算機システム |
US9817752B2 (en) | 2014-11-21 | 2017-11-14 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
JP2016149051A (ja) | 2015-02-13 | 2016-08-18 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US9857986B2 (en) * | 2015-06-30 | 2018-01-02 | International Business Machines Corporation | Wear leveling of a memory array |
-
2015
- 2015-09-11 TW TW104130059A patent/TWI566096B/zh active
-
2016
- 2016-09-09 US US15/260,330 patent/US10469105B2/en active Active
- 2016-09-09 CN CN202010014262.9A patent/CN111221746B/zh active Active
- 2016-09-09 CN CN201610813891.1A patent/CN106528437B/zh active Active
-
2018
- 2018-08-03 US US16/053,815 patent/US10574271B2/en active Active
-
2019
- 2019-09-11 US US16/568,221 patent/US10917119B2/en active Active
-
2020
- 2020-01-16 US US16/745,255 patent/US10992322B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200847165A (en) * | 2007-05-25 | 2008-12-01 | Realtek Semiconductor Corp | Data structure for flash memory and data reading/writing method thereof |
TW201314449A (zh) * | 2011-07-22 | 2013-04-01 | Sandisk Technologies Inc | 儲存資料之系統及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111221746B (zh) | 2021-11-26 |
US10469105B2 (en) | 2019-11-05 |
CN106528437A (zh) | 2017-03-22 |
US10574271B2 (en) | 2020-02-25 |
CN106528437B (zh) | 2020-02-07 |
CN111221746A (zh) | 2020-06-02 |
US10992322B2 (en) | 2021-04-27 |
US20200007168A1 (en) | 2020-01-02 |
US20180341545A1 (en) | 2018-11-29 |
US20170075755A1 (en) | 2017-03-16 |
TW201710900A (zh) | 2017-03-16 |
US10917119B2 (en) | 2021-02-09 |
US20200153461A1 (en) | 2020-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI674767B (zh) | 用於nand快閃記憶體的渦輪乘積碼 | |
JP3839215B2 (ja) | 誤り検出・訂正方法、計算機システムの主記憶制御装置、及び計算機システム | |
US10992322B2 (en) | Data storage system and associated method for saving storage space and eliminating data errors | |
US8321757B2 (en) | Method and apparatus for error correction | |
US9916254B2 (en) | Error detection using a logical address key | |
US9208027B2 (en) | Address error detection | |
KR20090028507A (ko) | 비휘발성 메모리 에러 보정 시스템 및 방법 | |
CN103594120B (zh) | 以读代写的存储器纠错方法 | |
US8738989B2 (en) | Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page | |
US10191801B2 (en) | Error correction code management of write-once memory codes | |
US10025652B2 (en) | Error location pointers for non volatile memory | |
US10922025B2 (en) | Nonvolatile memory bad row management | |
US11928027B1 (en) | System and method for error checking and correction with metadata storage in a memory controller | |
TWI486963B (zh) | 錯誤檢查及校正方法以及錯誤檢查及校正電路 | |
US11735285B1 (en) | Detection of address bus corruption for data storage devices | |
US11914895B2 (en) | Method for updating stored information and apparatus | |
WO2024119610A1 (zh) | 存储装置、纠错存储系统、芯片和车辆 | |
TWI703572B (zh) | 記憶體儲存裝置及其記憶體測試方法 | |
CN115987304A (zh) | 一种针对数据屏蔽的纠错方法、装置及存储介质 | |
JPS5837638B2 (ja) | キオクソウチ | |
JP2016170679A (ja) | 半導体装置 | |
JPS5919300A (ja) | 記憶装置 |