TW202006544A - 利用錯誤更正碼進行資料位元錯誤的偵測與更正 - Google Patents
利用錯誤更正碼進行資料位元錯誤的偵測與更正 Download PDFInfo
- Publication number
- TW202006544A TW202006544A TW108112556A TW108112556A TW202006544A TW 202006544 A TW202006544 A TW 202006544A TW 108112556 A TW108112556 A TW 108112556A TW 108112556 A TW108112556 A TW 108112556A TW 202006544 A TW202006544 A TW 202006544A
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- circuit
- data
- codeword
- matrix
- Prior art date
Links
Images
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/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/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
- G06F11/102—Error in check bits
-
- 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
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- 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
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3738—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
根據本發明的一些實施例,一種更正一記憶體裝置中之一或多個位元錯誤之方法包含自一記憶體裝置擷取一碼字。該碼字包含一資料及一錯誤更正碼。該方法進一步包含:判定該一或多個位元錯誤是否存在於該所擷取碼字中;及回應於判定單一位元錯誤存在於該所擷取碼字中而針對該單一位元錯誤來更正該所擷取碼字。該方法亦包含:回應於判定複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
Description
本發明實施例係有關利用錯誤更正碼進行資料位元錯誤的偵測與更正。
數位系統(例如,電腦系統)通常包含用於讀取及/或寫入資料之一或多個資料儲存系統。在某些例項中,數位系統內部之電干擾及/或磁干擾損毀一或多個資料儲存系統中之所儲存資料。亦可在處理期間在透過數位系統中之有雜訊通信通道而傳輸資料時損毀該資料且將經損毀資料儲存於一或多個資料儲存系統中。對於此經損毀資料之偵測及/或更正,可在一或多個資料儲存系統中實施基於錯誤更正碼(ECC)之系統及方法。
根據本發明的一實施例,一種更正一記憶體裝置中之一或多個位元錯誤之方法包括:自一記憶體裝置擷取一碼字,該碼字具有一資料及一錯誤更正碼;判定該一或多個位元錯誤是否存在於該所擷取碼字中;回應於判定單一位元錯誤存在於該所擷取碼字中而針對該單一位元錯誤來更正該所擷取碼字;回應於判定複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
根據本發明的另一實施例,一種更正一記憶體裝置中之一單一位元錯誤之方法包括:自一記憶體裝置擷取一碼字,該碼字具有一資料及一錯誤更正碼;判定該單一位元錯誤是否存在於該所擷取碼字中;回應於判定該單一位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及基於該經位元翻轉碼字而針對該單一位元錯誤來更正該所擷取碼字。
根據本發明的又一實施例,一種資料儲存系統包括:一記憶體陣列,其經組態以儲存一碼字,該碼字具有一資料及一錯誤更正碼;一編碼器電路,其經組態以在該記憶體陣列之一寫入模式操作期間利用該錯誤更正碼來編碼該資料以形成該碼字;及一解碼器電路,其包括:一資料暫存器,其經組態以在該記憶體陣列之一讀取模式操作期間擷取該碼字;一位元錯誤偵測電路,其經組態以判定一或多個位元錯誤是否存在於該所擷取碼字中;一位元翻轉電路,其經組態以回應於複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及一更正電路,其經組態以基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
以下揭露提供用於實施所提供標的物之不同構件之諸多不同實施例或實例。下文闡述組件及配置之特定實例以簡化本揭露。當然,此等僅係實例且並非意欲係限制性的。舉例而言,在說明中一第一構件在一第二構件上方形成可包含其中第一構件與第二構件直接接觸地形成之實施例且亦可包含其中額外構件可形成於第一構件與第二構件之間使得第一構件與第二構件可不直接接觸之實施例。如本文中所利用,一第一構件在一第二構件上形成意指第一構件與第二構件直接接觸地形成。另外,本揭露可在各種實例中重複參考編號及/或字母。此重複並非本質上指示所論述之各種實施例及/或組態之間的一關係。
可在本文中為易於說明而利用空間相對術語(諸如「下方」、「下面」、「下部」、「上面」、「上部」及諸如此類)來闡述一個元件或構件與另一元件或構件之關係,如各圖中所圖解說明。該等空間相對術語意欲囊括在利用OR運算中之裝置之除圖中所繪示定向之外的不同定向。設備可以其他方式定向(旋轉90度或以其他定向)且可因此同樣地理解本文中所利用之空間相對描述語。
注意,在說明書中提及之「一項實施例」、「一實施例」、「一實例性實施例」、「例示性」等指示所闡述之實施例可包含一特定構件、結構或特性,但每一實施例可不必包含該特定構件、結構或特性。此外,此等片語未必係指同一實施例。此外,當結合一實施例闡述一特定構件、結構或特性時,無論是否明確闡述,結合其他實施例來實現此構件、結構或特性在熟習此項技術者之知識範圍內。
應理解,本文中之措辭或術語係出於說明而非限制目的,使得熟習相關技術者將鑒於本文中之教示來解釋本說明書之術語或措辭。
如本文中所利用,術語「約」指示一給定量之值,該給定量可基於與標的半導體裝置相關聯之一特定技術節點而變化。基於特定技術節點,術語「約」可指示一給定量之一值,該給定量在(舉例而言)該值之10 %至30 % (例如,該值之±10%、±20%或±30%)內變化。
如本文中所利用,術語「實質上」指示一給定量之值在該值之±5%內變化。
一資料儲存系統包含一或多個記憶體裝置,該一或多個記憶體裝置具有通常配置成一2維陣列之記憶體胞元。每一記憶體胞元可通常藉由在(舉例而言)一電容器中保持或不保持一電荷而儲存一個資料位元。舉例而言,一電荷之存在或不存在指示邏輯1 (當儲存一電荷時)及邏輯0 (當不儲存電荷時)。電擾動或磁擾動(諸如來自雜訊或輻射之干擾)可改變一或多個記憶體胞元之內容及/或干擾用於讀取資料及將資料寫入至記憶體胞元之電路且致使所儲存資料被損毀。為確保被儲存於資料儲存系統中及自該資料儲存系統被讀取且在該系統之各種部分之間被傳輸之資料之完整性,期望偵測及更正損毀之所儲存資料。諸多當前資料儲存系統利用基於ECC之系統及方法來進行位元錯誤偵測與更正。
然而,半導體技術中之記憶體裝置之積極按比例縮小已導致當前資料儲存系統之基於ECC之系統中之越來越複雜邏輯電路。此邏輯電路已導致越來越長之電路傳播延遲,以及因此基於ECC之系統之操作之較長處理時間及較高電力消耗。而且,基於ECC之系統之經增加複雜性易受其邏輯電路中之硬體錯誤影響,此可導致當前基於ECC之資料儲存系統中之較高位元錯誤率。
本揭露提供用於偵測及更正記憶體裝置中之單位元錯誤及多位元錯誤之實例性基於ECC之系統及方法,該等實例性基於ECC之系統及方法幫助克服當前基於ECC之資料儲存系統中之以上所論述問題。本文中所揭示之實例性基於ECC之方法幫助減少用於資料儲存系統中之所揭示實例性基於ECC之位元錯誤偵測與更正(BEDC)電路之實施方案之邏輯電路的複雜性。與當前位元錯誤偵測與更正方法相比,本文中所揭示之用於位元錯誤偵測與更正之實例性方法幫助將BEDC電路之邏輯電路保持為儘可能簡單的,以便避免可發生於電路中之錯誤且亦能夠儘可能快地操作邏輯電路以進行較快位元錯誤偵測與更正。與當前基於ECC之BEDC電路相比,降低邏輯電路之複雜性幫助減少用於邏輯電路之實施方案中之裝置之數目,且因此幫助減少邏輯電路之積體電路佈局面積、電力消耗、傳播延遲及處理時間。在某些實施例中,與當前基於ECC之BEDC電路之處理時間相比,實例性基於ECC之BEDC電路之操作所需之處理時間可減少約10%至約50%。
圖1圖解說明根據某些實施例之一資料儲存系統100之一方塊圖。資料儲存系統100可被實施為一揮發性記憶體(諸如需要電力來維持資料之隨機存取記憶體(RAM))或非揮發性記憶體(諸如即使在不被供電時仍維持資料之唯讀記憶體(ROM))。RAM可被實施為動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)及/或非揮發性隨機存取記憶體(NVRAM),諸如提供一實例:快閃記憶體。在某些實施例中,資料儲存系統100可被實施為一積體電路裝置(舉例而言,一邏輯裝置(諸如,一微控制器、微處理器或諸如此類))之一部分,或一記憶體裝置之一部分。在某些實施例中,連接圖1之每一方塊之線可表示平行資料匯流排。毗鄰於跨越資料匯流排之一斜線之數目可指示匯流排中之資料線之數目。
資料儲存系統100可包含一記憶體陣列102、一列解碼器106、一感測放大器/寫入驅動器108、一行解碼器110、一編碼器電路124及一解碼器電路126。記憶體陣列102可包含配置成p個行及q個列之一陣列之記憶體胞元104.1.1至104.p.q。然而,在不背離本揭露之精神及範疇之情況下,記憶體胞元104.1.1至104.p.q之其他配置係可能的。在某些實施例中,p及q兩者皆可為大於1之一整數。在某些實施例中,p及q可彼此相等或不同。記憶體胞元104.1.1至104.p.q中之每一者可連接至來自WL 114.1至114.q
當中之一對應字線(WL)及來自BL 116.1至116.p當中之一對應位元線(BL)。在某些實施例中,記憶體陣列102之p個行中之每一者中之記憶體胞元104.1.1至104.p.q可共用來自BL 116.1至116.p
當中之一共同BL。類似地,記憶體陣列102之q個列中之每一者中之記憶體胞元104.1.1至104.p.q共用來自WL 114.1至114.q
當中之一共同WL。舉例而言,如圖1中所展示,記憶體陣列102之列1之記憶體胞元104.1.1至104.p
.1共用WL 114.1且記憶體陣列102之行p之記憶體胞元104.p
.1至104.p.q共用BL 116.p
。
資料儲存系統100可在一第一方向128上操作以將資料寫入至經組態以形成記憶體陣列102之一記憶體胞元陣列之一或多個記憶體胞元,或在一第二方向130上操作以自一或多個記憶體胞元讀取資料。第一方向128亦可稱為一寫入操作模式且第二方向130亦可稱為一讀取操作模式。在讀取操作模式中,資料儲存系統100可自對應於一(x+y)位元位址之一或多個記憶體胞元讀取資料。類似地,資料儲存系統100可在寫入操作模式中將資料寫入至對應於一(x+y)位元位址之一或多個記憶體胞元。
在某些實施例中,為針對一操作模式(諸如讀取操作模式或寫入操作模式)而自記憶體胞元104.1.1至104.p.q當中選擇一特定記憶體胞元,提供某些實例:選擇與特定記憶體胞元相關聯之BL,且選擇與此特定記憶體胞元相關聯之WL。舉例而言,可選擇BL 116.1及WL 114.1以選擇記憶體胞元104.1.1。此後,可在寫入操作模式中將資料寫入至所選擇記憶體胞元中,或可在讀取操作模式中自所選擇記憶體胞元讀取資料。
在某些實施例中,可藉由將來自一對應(x+y)位元位址當中之一對應x
位元列位址應用於列解碼器106而選擇性地確證WL 114.1至114.q中之每一者。一資料儲存裝置控制器(圖1中未展示)可用於將x位元列位址提供至資料儲存裝置100。列解碼器106可經組態以解碼對應x位元列位址且將一或多個控制訊號提供至對應於x位元列位址之WL 114.1至114.q
以自記憶體胞元104.1.1至104.p.q當中選擇一記憶體胞元列。類似地,可藉由將來自對應(x+y)
位元位址當中之一對應y
位元行位址應用於行解碼器110而選擇BL 116.1至116.p中之每一者。行解碼器110可經組態以解碼y位元行位址且將一或多個控制訊號120提供至對應於y
位元行位址之感測放大器/寫入驅動器108。在某些實施例中,感測放大器/寫入驅動器108可自記憶體胞元104.1.1至104.p.q當中選擇對應於y
位元行位址之一記憶體胞元行。
在某些實施例中,感測放大器/寫入驅動器108可在讀取模式操作期間利用一感測放大器自來自BL 116.1至116.p當中之一對應一或多個BL (其對應於來自記憶體胞元104.1.1至104.p.q當中之一所選擇一或多個記憶體胞元)讀取資料以提供資料126a之n個位元。另一選擇係,感測放大器/寫入驅動器108可在寫入操作模式期間利用一寫入驅動器接收資料124b之n個位元且將資料124b之n個位元寫入至來自BL 116.1至116.p
當中之對應BL (其對應於來自記憶體胞元104.1.1至104.p.q當中之一所選擇記憶體胞元)。
根據某些實施例,記憶體陣列102可包含編碼器電路124及解碼器電路126以確保儲存於記憶體胞元104.1.1至104.p.q中之資料之完整性。為確保此完整性,可在於寫入操作模式期間將由記憶體陣列102接收之資料寫入於一或多個所選擇記憶體胞元104.1.1至104.p.q中之前對該資料進行編碼,且可在於讀取操作模式期間自記憶體陣列102輸出記憶體陣列102中之所儲存經編碼資料之前針對位元錯誤而對該所儲存經編碼資料進行測試及更正(若必要)。
根據某些實施例,編碼器電路124可經組態以接收具有k個位元之一位元長度之資料124a且利用一ECC來編碼資料124a以形成具有n個位元之一位元長度之碼字124b (亦稱為資料124b),該碼字可在寫入操作模式期間被寫入至記憶體陣列102中之所選擇記憶體胞元中。可基於待偵測及/或更正之位元錯誤之所要數目而選擇用於編碼資料124a之ECC。在某些實施例中,所利用之ECC可偵測多位元錯誤,但更正1位元錯誤。在某些實施例中,所利用之ECC可偵測多位元錯誤,但更正1位元錯誤及2位元錯誤。為利用一ECC來編碼資料124a,編碼器電路124可經組態以產生具有n-k個位元之一位元長度之ECC位元(亦稱為檢查位元或冗餘位元)且在以寫入操作模式進行操作時將此(n-k)
位元ECC與k
位元資料124a串接以將碼字124b提供至感測放大器/寫入驅動器108。可基於k
位元資料124a之一或多個子集而產生ECC之(n-k)個位元中之每一者。根據某些實施例,參考圖2A至圖2B而進一步闡述編碼器電路124及其組態。
在某些實施例中,n及k兩者皆可為一整數且n可大於k
。在某些實施例中,資料124a可表示由記憶體陣列102接收之一資料串流中之一或多個資料。將理解,可在不背離本揭露之精神及範疇之情況下將參考資料124a之論述應用於由記憶體陣列102接收且被寫入於該記憶體陣列中之一或多個資料。
在記憶體陣列102之讀取模式操作期間,ECC位元向所儲存資料添加冗餘且允許對所儲存資料中之一或多個位元錯誤進行偵測及更正(若必要)。在某些實施例中,ECC可包含線性碼,例如,漢明(Hamming)碼、李德-索羅門(Reed-Solomon)碼、博斯-查德胡裡-霍昆格姆(Bose-Chaudhuri-Bocquenghem) (BCH)碼、渦輪(Turbo)碼或低密度同位檢查(LDPC)碼。在某些實施例中,ECC可為BCH碼,該等BCH碼係在一有限域(伽羅華(Galois)域)上利用多項式建構之循環錯誤更正碼之一類別。在某些實施例中,BCH碼之一優點係在碼設計期間,存在對可由碼更正之符號錯誤之數目之一精確控制。特定而言,設計可更正儲存於記憶體陣列102中之資料中之多個位元錯誤之二進位BCH碼係可能的。在某些實施例中,BCH碼之另一優點係可容易地解碼該等BCH碼,亦即,經由被稱作校驗子解碼之一代數方法。此可利用硬體簡化解碼器電路126之設計。
在某些實施例中,所產生ECC之位元長度可取決於待偵測及更正之位元錯誤之數目。針對一k
位元資料(例如,資料124a),更正k位元資料中之1位元錯誤所需要之ECC位元之數目x
需要滿足:
x >= ceiling[log2
(k+x+1)] ………………方程式(1)
此方程式(1)產生,此乃因利用ECC之x
個位元,可編碼指示k
位元資料中之位元錯誤之位置之2x
不同資訊。以上方程式中之額外+1指示一位元錯誤之不存在。舉例而言,針對一128位元資料,需要8位元ECC來更正128位元資料中之1位元錯誤,此乃因由於ceiling[log2
(128+8+1)] < 8,因此滿足以上方程式(1)。然而,若ECC位元之數目係7,則由於ceiling[log2
(128+7+1)] > 7,因此不滿足以上方程式,且因此7位元ECC可不能夠更正128位元資料中之1位元錯誤。此外,為更正每一額外位元錯誤,需要ECC之另外x
個位元。舉例而言,針對一128位元資料,需要2*8位元(亦即,16位元) ECC來更正128位元資料中之2位元錯誤,此乃因由於ceiling[log2
(128+16+)] < 16,因此滿足以上方程式(1)。因此,藉由k
位元資料與用於二進位資料之x
位元ECC之串接而形成之一碼字(例如,碼字124b)之總位元長度表示為n = k + x。在某些實施例中,若x
之值經選擇以更正一資料(例如,資料124a)中之1位元錯誤,則此x
位元ECC可幫助偵測2位元錯誤且更正1位元錯誤。舉例而言,用於64位元資料(例如,資料124a)之8位元ECC可偵測整個72位元碼字中之2位元錯誤且更正整個72位元碼字中之1位元錯誤。此被稱作一SECDED碼,其能夠進行單錯誤更正(SEC)及雙錯誤偵測(DED)。在某些實施例中,若x
之值經選擇以更正一資料(例如,資料124a)中之2位元錯誤,則此x
位元ECC可幫助偵測3位元錯誤且更正1位元錯誤及2位元錯誤。
根據某些實施例,解碼器電路126可經組態以在讀取操作模式期間自記憶體陣列102中之一所選擇記憶體胞元接收具有n個位元之一位元長度之碼字126b (亦稱為資料126b)。在某些實施例中,解碼器電路126可進一步經組態以在解碼及輸出k
位元資料126a之前對碼字126b中之單位元錯誤及/或多位元錯誤進行偵測及更正(若必要)。碼字126b可包含k
位元資料126a' (未展示)及用於編碼及儲存由記憶體陣列102接收之k位元資料126a'之(n-k)位元ECC。若資料126a'在儲存於記憶體陣列102中時未被損毀,則該資料可類似於輸出資料126a。在某些實施例中,資料126a可類似於資料124a且若碼字126b未被損毀,則該碼字可類似於碼字124b。在某些實施例中,碼字126b可表示儲存於記憶體陣列102之一或多個記憶體胞元中之碼字。將理解,可在不背離本揭露之精神及範疇之情況下將參考碼字126b之論述應用於自記憶體陣列102之記憶體胞元讀取之其他碼字。
在某些實施例中,碼字126b之n-k個ECC位元可用於偵測碼字126b中之單位元錯誤及多位元錯誤且更正碼字126b中之1位元錯誤。在此情形中,解碼器電路126可經組態以偵測碼字126b中之1位元錯誤之存在、判定該1位元錯誤之位置且更正該1位元錯誤。為偵測碼字126b中之1位元錯誤,解碼器電路126可經組態以產生碼字126b之一(n-k
)位元校驗子S且判定校驗子S是否等於零。當碼字126b之校驗子S等於零(此可指示碼字126b係無位元錯誤)時,解碼器126可經組態以將n-k個ECC位元與碼字126b分離且在此無位元錯誤情形中輸出類似於資料126b'之資料126b。在本揭露中,除非另外提及,否則校驗子等於零係指校驗子之所有位元皆等於零。
當碼字126b之校驗子S不等於零(此可指示在碼字126b中存在一1位元錯誤)時,解碼器電路126可經組態以判定1位元錯誤之位置。為判定該位置,解碼器電路126可經組態以依序翻轉碼字126b之每一位元以形成新碼字、在位元翻轉之後針對新碼字中之每一者產生一(n-k
)位元校驗子S',且判定新碼字之校驗子S'中之任一者是否等於零。當新碼字之校驗子S'中之一者等於零時,此可指示與等於零之校驗子S'對應之新碼字具有碼字126b中之1位元錯誤之位置之資訊。在某些實施例中,解碼器電路126可經組態以利用此位置資訊來更正碼字126b中之1位元錯誤、將n-k個ECC位元與經更正碼字126b分離,並且輸出可為無位元錯誤且未被損毀之資料126b。根據某些實施例,參考圖3A至圖3C及圖4至圖7進一步闡述用於1位元錯誤偵測與更正之解碼器電路126及其組態。
當新碼字之校驗子S'中之任一者皆不等於零時,此可指示在碼字126b中存在多位元錯誤。在此情形中,解碼器電路126可經組態以將n-k個ECC位元與經損毀碼字126b分離且輸出指示在資料126b中存在不可更正多位元錯誤之一訊號。
在某些實施例中,碼字126b之n-k個ECC位元可用於偵測碼字126b中之單位元錯誤及多位元錯誤且更正碼字126b中之1位元錯誤及2位元錯誤。在此情形中,解碼器電路126可經組態以偵測碼字126b中之1位元錯誤及2位元錯誤之存在、判定1位元錯誤及2位元錯誤之位置且更正1位元錯誤及2位元錯誤。在某些實施例中,解碼器電路126可經組態以產生碼字126b之一(n-k
)位元校驗子S且判定校驗子S是否等於零。當碼字126b之校驗子S等於零(此可指示碼字126b係無位元錯誤)時,解碼器126可經組態以將n-k個ECC位元與碼字126b分離且在此無位元錯誤情形中輸出類似於資料126b'之資料126b。
當碼字126b之校驗子S不等於零(此可指示在碼字126b中存在單位元錯誤或多位元錯誤)時,解碼器電路126可經組態以偵測碼字126b中之1位元錯誤之存在及位置。在此情形中,解碼器電路126可經組態以判定校驗子S是否與一預定值匹配。當校驗子S與該預定值匹配(此可指示在碼字126b中存在1位元錯誤且提供1位元錯誤之位置)時,解碼器電路126可經組態以更正碼字126b中之1位元錯誤、將n-k個ECC位元與經更正碼字126b分離,並且輸出可為無位元錯誤且未被損毀之資料126b。
當碼字126b之校驗子S不滿足該預定值(此可指示在碼字126b中存在多位元錯誤)時,解碼器電路126可經組態以判定碼字126b中之2位元錯誤之位置。為判定該等位置,解碼器電路126可經組態以依序翻轉碼字126b之每一位元以形成新碼字、在位元翻轉之後針對新碼字中之每一者產生一(n-k
)位元校驗子S',且判定新碼字之校驗子S'中之任一者是否與預定值匹配。當新碼字之校驗子S'中之一者與預定值匹配(此可指示在碼字126b中存在2位元錯誤且提供2位元錯誤之位置)時,解碼器電路126可經組態以更正碼字126b中之2位元錯誤、將n-k個ECC位元與經更正碼字126b分離,並且輸出可為無位元錯誤且未被損毀之資料126b。根據某些實施例,參考圖2及圖5至圖6進一步闡述用於1位元錯誤及2位元錯誤偵測與更正之解碼器電路126及其組態。
當新碼字之校驗子S'中之任一者皆不與預定值匹配時,此可指示在碼字126b中存在3位元錯誤或更多位元錯誤。在此情形中,解碼器電路126可經組態以將n-k個ECC位元與經損毀碼字126b分離且輸出指示在資料126b中存在不可更正位元錯誤之一訊號。
與用於資料儲存系統中之當前位元錯誤偵測電路中之解碼器電路相比,上文所闡述之解碼器電路126之用以判定位元錯誤之位置之位元翻轉組態可幫助減少解碼器電路126之複雜性及處理時間。根據某些實施例,參考圖2至圖6進一步闡述用於1位元錯誤及2位元錯誤偵測與更正之解碼器電路126及其組態。在某些實施例中,解碼器電路126可透過如用於資料儲存系統中之當前解碼器電路中之複雜多項式計算而幫助減少判定位元錯誤位置之複雜性。在某些實施例中,與基於ECC之資料儲存系統中之當前解碼器電路之處理時間相比,解碼器電路126之操作所需之處理時間可減少約10%至約50%。
儘管未展示控制訊號及/或時脈訊號,但將理解,資料儲存系統100可自一或多個控制電路及/或參考時脈接收此等訊號以控制資料儲存系統100之一或多個組件之操作。
圖2A圖解說明根據某些實施例之可被實施為資料儲存系統100之一部分之一編碼器電路224的一方塊圖。在某些實施例中,編碼器電路224可被實施為編碼器電路124之一部分。在某些實施例中,編碼器電路224可表示編碼器電路124。除非另外提及,否則對編碼器電路124及其組態之以上論述適用於編碼器電路224。在某些實施例中,連接圖2A之每一方塊之線可表示平行資料匯流排。毗鄰於跨越資料匯流排之一斜線之數目可指示匯流排中之資料線之數目。
編碼器電路224可經組態以接收k
位元資料124a且利用n-k
位元ECC來編碼資料124a以形成可在寫入操作模式期間被寫入至記憶體陣列102之所選擇記憶體胞元中之n
位元碼字124b。在某些實施例中,編碼器電路224可包含一資料暫存器234、一G矩陣(亦稱為產生矩陣或產生器矩陣)產生電路236、一ECC產生電路238及一碼字產生電路240。將理解,在不背離本揭露之精神及範疇之情況下,編碼器電路224可具有其他組件(未展示),諸如(但不限於)用以控制編碼器電路224之一或多個組件(例如,資料暫存器234、G矩陣產生電路236、ECC位元產生電路238、碼字產生電路240)之操作之控制電路(例如,時脈電路、電力電路)及/或控制訊號(例如,時脈訊號)。亦將理解,在不背離本揭露之精神及範疇之情況下,編碼器電路224可自控制電路(未展示)接收控制訊號(例如,時脈訊號) (未展示)以控制編碼器電路224之一或多個組件(例如,資料暫存器234、G矩陣產生電路236、ECC位元產生電路238、碼字產生電路240)之操作,該控制電路可被實施為資料儲存系統100之一部分及/或被實施為資料儲存系統100之其他組件(例如,解碼器電路126、226)之一部分。
資料暫存器234可經組態以接收及儲存資料124a。在某些實施例中,資料124a可暫時儲存於資料暫存器234中直至可自編碼器電路224輸出碼字124b為止。如上文所論述,碼字124b可藉由n-k
位元ECC與k
位元資料124a之串接而形成。圖2A圖解說明用於自n-k
位元ECC 238a及k
位元資料124a產生碼字124b之例示性電路。可由ECC產生電路238基於自資料暫存器234接收之資料124a及自G矩陣產生電路236接收之G矩陣236a而產生ECC 238a。
在某些實施例中,可由G矩陣產生電路236基於自資料暫存器234接收之資料124a而產生G矩陣236a。G矩陣236a可為一有限域(例如,伽羅華域(GF))上之一產生器多項式(generator polynomial) g(x)之一矩陣形式,此乃因可在有限域之元素上定義ECC 238a。在某些實施例中,有限域可為一GF (2m
)且可在GF (2m
)之元素上定義ECC 238a。GF元素可被寫入作為一m位元二進位向量。整個GF(2m
)可被一對一映射至一個二進位空間(0至2m
-1)。因此,可對GF元素執行二進位算術運算。在某些實施例中,具有長度2m
-1之一t位元錯誤更正二進位線性碼(例如,ECC 238a)之產生器多項式g(x)可為GF(2)上之最低次數多項式,該最低次數多項式具有α、α2
、α3
、…、α2t
作為其根,其中α係GF(2m
)中之一本原元素且m係大於或等於3之一整數。
在某些實施例中,G矩陣產生電路236可經組態以首先產生產生器多項式g(x)之一非系統矩陣形式且然後透過所產生非系統矩陣之線性變換而產生呈一系統矩陣形式之G矩陣236a。自G矩陣產生電路236輸出之G矩陣236a之系統形式可包含具有一尺寸k乘n-k之一同位矩陣(P矩陣)及具有k乘k
之一尺寸之一單位矩陣(I矩陣),其中n係碼字124b之大小且k係資料124a之大小。因此,G矩陣236a可具有k乘n
、表示為Gk×n
之一尺寸。
在某些實施例中,ECC產生電路238可經組態以自G矩陣產生電路236接收G矩陣236a且自資料暫存器234接收資料124a。ECC產生電路238可進一步經組態以基於資料124a與G矩陣236a之間的點積而產生及輸出ECC 238a。在某些實施例中,可由ECC產生電路238基於以下方程式(2)而產生ECC 238a:
E = D • P …………方程式(2)
其中E表示ECC 238a之一位元向量、D表示資料124a之一位元向量、P表示G矩陣236a之P矩陣且符號「•」表示一點運算。
在某些實施例中,ECC產生電路238可包含用以實施方程式(2)之複數個XOR樹200 (亦稱為XOR邏輯閘樹),如圖2B中所圖解說明。複數個XOR樹200中之每一XOR樹可輸出ECC 238a之一位元。如圖2B中所展示,複數個XOR樹200中之每一XOR樹可包含配置成一邏輯樹架構之複數個XOR邏輯閘,該邏輯樹架構包含複數個XOR邏輯層級。在圖2B中,複數個XOR樹200之節點242、244及246中之每一者表示一XOR邏輯閘。在某些實施例中,可存在總共n-k個XOR樹200,每一XOR樹具有平均k/2
個節點。因此,XOR樹200中之每一者之深度可為log2 n
。圓形節點242、矩形節點244及三角形節點246分別表示複數個XOR樹200之XOR邏輯層級1、2及3。將理解,在不背離本揭露之精神及範疇之情況下,XOR樹200可具有多於或少於3個層級。XOR樹200之每一XOR邏輯層級之每一節點可包含一對輸入,該對輸入用以自一先前XOR邏輯層級之一對節點接收輸出。在圖2B中,每一節點之輸入由通向節點之一對箭頭表示且自每一節點之輸出由離開節點之一箭頭表示。去往XOR樹200之每一節點之該對輸入可包含資料124a之一對資料位元。此等資料位元對之位元位置與G矩陣236a之P矩陣中之非零資料位元位置之位置對應。
在某些實施例中,碼字產生電路240可經組態以接收自ECC產生電路238輸出之ECC 238a且自資料暫存器234接收資料124a。碼字產生電路240可進一步經組態以將ECC 238a與資料124a串接以形成並輸出可在寫入操作模式期間被寫入至記憶體陣列102之所選擇記憶體胞元中之n
位元碼字124b。
圖3A圖解說明根據某些實施例之可被實施為資料儲存系統100之一部分之一解碼器電路326的一方塊圖。在某些實施例中,解碼器電路326可被實施為解碼器電路126之一部分。在某些實施例中,解碼器電路326可表示解碼器電路126。除非另外提及,否則對解碼器電路126及其組態之以上論述適用於解碼器電路326。在某些實施例中,連接圖3A之每一方塊之線可表示平行資料匯流排。毗鄰於跨越資料匯流排之一斜線之數目可指示匯流排中之資料線之數目。
根據某些實施例,解碼器電路326可經組態以在讀取操作模式期間自記憶體陣列102中之一所選擇記憶體胞元接收n
位元碼字126b。在某些實施例中,解碼器電路326可進一步經組態以在解碼及輸出k
位元資料126a之前對碼字126b中之單位元錯誤及/或多位元錯誤進行偵測及更正(若必要)。在某些實施例中,解碼器電路326可包含一資料暫存器352、一位元翻轉電路354、一校驗子產生電路356、一H矩陣(亦稱為檢查矩陣或同位檢查矩陣)產生電路358、位元錯誤偵測電路360、更正電路362及一控制電路364。
資料暫存器352可經組態以接收及儲存碼字126b。在某些實施例中,碼字126b可暫時儲存於資料暫存器352中直至可自解碼器電路326輸出資料126a為止。碼字126b可包含k
位元資料126a' (未展示)及(n-k
)位元ECC,該(n-k
)位元ECC用於藉由一編碼器電路(例如,編碼器電路124或224)而進行編碼且儲存由記憶體陣列102接收之k
位元資料126a' (未展示)。資料126a'可為碼字126b之原始資料且若該資料在儲存於記憶體陣列102中時未被損毀,則該資料可類似於輸出資料126a。在某些實施例中,資料126a可類似於資料124a且若碼字126b未被損毀,則該碼字可類似於碼字124b。
圖3A圖解說明用於偵測及更正資料(例如,碼字126b)中之單位元錯誤及多位元錯誤之例示性電路。在某些實施例中,位元翻轉電路354可經組態以自資料暫存器352接收n
位元碼字126b且基於自控制電路364接收之一控制訊號364a而輸出n
位元碼字126b' (亦稱為資料126b'),該n
位元碼字可與碼字126b相同或可具有不同於碼字126b之一個位元。當在偵測碼字126b中之位元錯誤之存在之步驟期間控制訊號364a停用位元翻轉電路354之位元翻轉組態時,碼字126b'可與碼字126b相同。當在偵測碼字126b中之位元錯誤之位置之步驟期間控制訊號364a啟用位元翻轉電路354之位元翻轉組態時,碼字126b'可與碼字126b相差一個位元。位元翻轉電路354可經組態以在偵測碼字126b中之位元錯誤之位置之每一反覆步驟期間翻轉碼字126b之一或多個位元。在某些實施例中,位元翻轉電路354可經組態以在偵測碼字126b中之位元錯誤之位置之每一反覆步驟期間連續地翻轉碼字126b之一個位元。
在某些實施例中,校驗子產生電路356可經組態以自H矩陣產生電路358接收碼字126b'及經轉置H矩陣358a。在某些實施例中,H矩陣產生電路358可經組態以自編碼器電路224之一G矩陣產生電路(諸如G矩陣產生電路236)接收資訊132。資訊132可為可用於藉由H矩陣產生電路358而產生並輸出經轉置H矩陣358a及H矩陣358b之G矩陣,諸如G矩陣236a。在某些實施例中,G矩陣236a在呈一系統形式時可與經轉置H矩陣358a具有一關係,如圖3B中所圖解說明。G矩陣236a與經轉置H矩陣358a可共用一P矩陣。H矩陣產生電路358可藉由採用G矩陣236a之P矩陣之轉置且將經轉置P矩陣與具有一尺寸(n-k
)乘(n-k
)之一同位矩陣(I矩陣)串接而產生具有n乘(n-k
)之一尺寸之經轉置H矩陣358a。H矩陣358b可具有(n-k
)乘n
之一尺寸。在某些實施例中,經轉置H矩陣358a及H矩陣358b可呈系統形式。
返回參考圖3A,校驗子產生電路356可進一步經組態以基於碼字126b'與經轉置H矩陣358a之間的點積而產生並輸出碼字126b'之(n-k
)位元校驗子356a。在某些實施例中,可由校驗子產生電路356基於以下方程式(3)而產生(n-k
)位元校驗子356a:
S = C • HT
…………方程式(3)
其中S表示校驗子356a之一位元向量、C表示碼字126b'之一位元向量、HT
表示經轉置H矩陣358a且符號「•」表示一點運算。
在某些實施例中,校驗子產生電路356可包含用以實施方程式(3)之複數個XOR樹300 (亦稱為XOR邏輯閘樹),如圖3C中所圖解說明。複數個XOR樹300中之每一XOR樹可輸出校驗子356a之一位元。如圖3C中所展示,複數個XOR樹300中之每一XOR樹可包含配置成一邏輯樹架構之複數個XOR邏輯閘,該邏輯樹架構包含複數個XOR邏輯層級。在圖3C中,複數個XOR樹300之節點342、344及346中之每一者表示一XOR邏輯閘。在某些實施例中,可存在總共n-k個XOR樹300,每一XOR樹具有平均n/2
個節點。因此,XOR樹300中之每一者之深度可為log2
n。圓形節點342、矩形節點344及三角形節點346分別表示複數個XOR樹300之XOR邏輯層級1、2及3。將理解,在不背離本揭露之精神及範疇之情況下,XOR樹300可具有多於或少於3個層級。XOR樹300之每一XOR邏輯層級之每一節點可包含一對輸入,該對輸入用以自一先前XOR邏輯層級之一對節點接收輸出。在圖3B中,每一節點之輸入由通向節點之一對箭頭表示且自每一節點之輸出由離開節點之一箭頭表示。去往XOR樹300之每一節點之該對輸入可包含碼字126b'之一對資料位元。此等資料位元對之位元位置與經轉置H矩陣358a中之非零資料位元位置之位置對應。
返回參考圖3A,在某些實施例中,位元錯誤偵測電路360可經組態以偵測碼字126b中之位元錯誤之存在,且基於來自控制電路364之控制訊號364b及/或自校驗子產生電路356接收之校驗子356a而偵測碼字126b中之位元錯誤(若存在)之位置。在某些實施例中,位元錯誤偵測電路360可經組態以判定校驗子356a是否等於零且基於此判定,位元錯誤偵測電路360可經組態以偵測碼字126b中之位元錯誤之存在。若判定校驗子356a等於零,則位元錯誤偵測電路360可經組態以將指示碼字126b係無錯誤之一訊號360b提供至控制電路364。否則,位元錯誤偵測電路360可經組態以將指示碼字126b具有一或多個位元錯誤之訊號360b提供至控制電路364。
在某些實施例中,位元錯誤偵測電路360可經組態以判定校驗子356a是否等於一預定值且基於此判定,位元錯誤偵測電路360可經組態以偵測碼字126b中之位元錯誤之位置。在某些實施例中,該預定值可為自H矩陣產生電路358接收之H矩陣358b之一行。H矩陣358b之每一行可具有n-k個位元。若判定校驗子356a與H矩陣358b之行中之一者相等或匹配,則位元錯誤偵測電路360可經組態以將指示碼字126b在碼字126b之一位元位置處具有一位元錯誤之訊號360b提供至控制電路364,該位元位置與H矩陣358b之所匹配行之索引對應。舉例而言,若H矩陣358b之第三行與校驗子356a匹配,亦即,H矩陣358b之第三行之位元向量與校驗子356a之位元向量匹配,則碼字126b之第三位元位置具有一位元錯誤。否則,位元錯誤偵測電路360可經組態以將指示碼字126b在一不同位置處具有一位元錯誤之訊號360b提供至控制電路364。
在某些實施例中,更正電路362可經組態以基於來自控制電路364之控制訊號364c而輸出k
位元資料126a。若位元錯誤偵測電路360將指示碼字126b係無錯誤之訊號360b提供至控制電路364,則更正電路362可經組態以基於控制訊號364c而輸出資料126a。否則,若位元錯誤偵測電路360將指示碼字126b具有一或多個位元錯誤之訊號360b提供至控制電路364,則更正電路362可經組態以在自更正電路362輸出資料126a之前基於控制訊號364c、基於自各別位元錯誤偵測電路360及/或位元翻轉電路354接收之位元錯誤位置資訊360a及/或354a及/或基於自資料暫存器352接收之碼字126b而更正碼字126b。資料126a可為碼字126b之k
位元資料部分,在自控制電路364接收無錯誤訊號364c之後或在更正碼字126b之後藉由更正電路362而將該k
位元資料部分與碼字126b之n-k位元ECC部分分離。若資料126a由更正電路362在接收無錯誤訊號364c之後輸出,則資料126a可為碼字126b之被儲存於記憶體陣列102中之原始k
位元資料部分,或若資料126a由更正電路362在更正碼字126b之後輸出,則資料126a可為經更正碼字126b之k
位元資料部分。
在某些實施例中,控制電路364可經組態以控制解碼器電路326之除此處所闡述之電路354、360及362之外的其他組件之操作。來自控制電路364之控制訊號(例如,364a至364c)可呈時脈訊號、電壓訊號、電流訊號、數位訊號或其一組合之形式。在某些實施例中,控制電路364可在解碼器電路326外部實施。將理解,在不背離本揭露之精神及範疇之情況下,解碼器電路326可具有用以控制解碼器電路326之一或多個組件之操作之除控制電路364之外的其他組件(未展示)。亦將理解,在不背離本揭露之精神及範疇之情況下,解碼器電路326可自控制電路(未展示)接收控制訊號(例如,時脈訊號、電壓訊號、電流訊號、數位訊號或其一組合) (未展示)以控制解碼器電路326之一或多個組件之操作,該控制電路可被實施為資料儲存系統100之一部分及/或被實施為資料儲存系統100之其他組件(例如,編碼器電路124、224)之一部分。
圖4係根據某些實施例之一實例性方法400之一流程圖,該實例性方法用於利用一解碼器電路(例如,解碼器電路126、326及/或526)來偵測儲存於一記憶體裝置(例如,記憶體陣列102)中之資料(例如,資料124b或126b)中之1位元錯誤及2位元錯誤且更正1位元錯誤。可以一不同次序來執行操作或取決於特定應用而不執行操作。出於說明性目的,將參考圖1、圖2A至圖2B、圖3A至圖3C及圖5中所圖解說明之裝置及電路而闡述圖4中所圖解說明之操作中之某些操作。
圖5圖解說明根據某些實施例之可被實施為資料儲存系統100之一部分之一解碼器電路526的一方塊圖。在某些實施例中,解碼器電路526可表示解碼器電路126及/或326。除非另外提及,否則對解碼器電路126及326以及其元件及組態之以上論述適用於解碼器電路526。在某些實施例中,解碼器電路526可包含資料暫存器352、位元翻轉電路554、校驗子產生電路356、H矩陣產生電路358 (圖5中未展示)、位元錯誤偵測電路360、更正電路562及控制電路564。上文闡述圖5中之具有與圖3A中之元件相同之注釋之元件。除非另外提及,否則對位元翻轉電路354、控制電路364、更正電路362、控制訊號364a至364c及資訊354a之以上論述分別適用於位元翻轉電路554、控制電路564、更正電路562、控制訊號564a至564c及資訊570a。
在某些實施例中,方法400可為解碼器電路126、326及/或526之一操作流程。應注意,方法400並未闡述解碼器電路126、326及/或526之全部操作。因此,應理解,可在方法400期間提供額外操作,且可僅在本文中簡要地闡述某些其他操作。
參考圖4,在操作402中,自一記憶體裝置接收一所儲存資料且將該所儲存資料提供至一校驗子產生電路。舉例而言,如圖5中所展示,可由解碼器電路526之資料暫存器352自記憶體陣列102接收碼字126b且可將等於碼字126b之碼字126b'提供至校驗子產生電路356。在某些實施例中,將等於碼字126b之碼字126b'提供至校驗子產生電路356可包含將位元翻轉電路554之移位暫存器570初始化至零,亦即,基於自控制電路564接收之控制訊號564a而將移位暫存器570之所有位元設定至邏輯值零。該提供可進一步包含在碼字126b與移位暫存器570之位元之間執行一逐位元邏輯XOR運算,如圖5中所圖解說明。在某些實施例中,移位暫存器570可為具有n
個位元之一位元長度之一串列輸入並列輸出移位暫存器。
參考圖4,在操作404中,產生接收之所儲存資料之一校驗子。舉例而言,如圖5中所展示,可由校驗子產生電路356基於在操作402中接收之碼字126b且基於自H矩陣產生電路358 (圖3A中所展示)接收之經轉置H矩陣358a而產生校驗子356a。在某些實施例中,校驗子356a之產生可包含基於上文參考圖3A所闡述之方程式(3)而在於操作402中接收之碼字126b與經轉置H矩陣358a之間執行點積。該產生可進一步包含在碼字126b與經轉置H矩陣358a之間執行邏輯XOR運算,如上文參考圖3A及圖3C所闡述。
參考圖4,在操作406中,比較接收之所儲存資料之所產生校驗子與零。舉例而言,如圖5中所展示,可將校驗子356a提供至位元錯誤偵測電路360,該位元錯誤偵測電路可經組態以比較校驗子356a與零。在某些實施例中,該比較可包含藉由位元錯誤偵測電路360而執行校驗子356a之n-k個位元之一邏輯OR運算。若邏輯OR運算之輸出(例如,訊號360b)係一邏輯值零(此指示校驗子356a等於零),則方法400可繼續進行至操作408。否則,若邏輯OR運算之輸出(例如,訊號360b)係一邏輯值1 (此指示校驗子356a不等於零),則方法400可繼續進行至操作410。在某些實施例中,校驗子356a等於零指示碼字126b係無錯誤的且校驗子356a不等於零指示碼字126b可具有一1位元錯誤。
參考圖4,在操作408中,輸出接收之所儲存資料之k
位元資料。舉例而言,如圖5中所展示,可由更正電路562輸出資料126a。在某些實施例中,自更正電路562輸出資料126a可包含在碼字126b與操作402之移位暫存器570之經初始化n
個位元之間執行一逐位元邏輯XOR運算,後續接著藉由電路572而將碼字126b之k
位元資料部分與碼字126b之n-k
位元ECC部分分離。該輸出可進一步包含由控制電路564自位元錯誤偵測電路360接收指示校驗子356a等於零之訊號360b,後續接著控制電路564將控制訊號564c提供至邏輯電路574。控制訊號564c可啟用邏輯電路574以允許將來自電路572之k
位元資料部分自更正電路562輸出。在某些實施例中,控制電路564可經組態以提供訊號564c,當控制電路564自位元錯誤偵測電路360接收到指示校驗子356a不等於零之訊號360b時,訊號564c停用邏輯電路574。
參考圖4,在操作410中,翻轉接收之所儲存資料之一位元。舉例而言,如圖5中所展示,可藉由位元翻轉電路554而翻轉碼字126b之一位元以輸出與碼字126b相差一個位元之碼字126b'。在某些實施例中,位元翻轉可包含在碼字126b與移位暫存器570之位元之間執行一逐位元邏輯XOR運算(圖5中所展示),其中移位暫存器570之位元中之一者具有一邏輯值1且其他位元具有邏輯值零。移位暫存器570之具有一邏輯值1之位元之位置與碼字126b之可被翻轉之位元之位置對應。
在某些實施例中,操作410可為用於判定碼字126b中之1位元錯誤之位置之一反覆迴圈的一部分。該反覆迴圈可包括操作410至414。第一反覆可以在操作410處在移位暫存器570之最高有效位元(MSB)位置中輸入一邏輯值1開始。在每一反覆期間,在操作410處,可將移位暫存器570中之邏輯值1朝向其最低有效位元(LSB)位置移位一個位元位置,而移位暫存器570之其餘位元位置具有邏輯值零。最後反覆可在操作410期間在移位暫存器570之LSB位置中具有邏輯值1。因此,第一反覆可以在操作410處翻轉碼字126b之MSB開始且最後反覆可在操作410期間使碼字126b之LSB翻轉。在每一反覆期間,在操作410處,可翻轉碼字126b之一連續位元,該連續位元與移位暫存器570中之邏輯1之位元位置對應。在某些實施例中,移位暫存器570之操作(例如,邏輯值1之移位)可為基於來自控制電路564之控制訊號564a。
參考圖4,在操作412中,產生經位元翻轉資料之一校驗子。舉例而言,如圖5中所展示,可由校驗子產生電路356基於在操作410處輸出之碼字126b'且基於自H矩陣產生電路358 (圖3A中所展示)接收之經轉置H矩陣358a而產生碼字126b'之校驗子356a。在某些實施例中,校驗子356a之產生可包含基於上文參考圖3A所闡述之方程式(3)而在於操作410中輸出之碼字126b'與經轉置H矩陣358a之間執行點積。該產生可進一步包含在碼字126b'與經轉置H矩陣358a之間執行邏輯XOR運算,如上文參考圖3A及圖3C所闡述。
參考圖4,在操作414中,比較經位元翻轉資料之所產生校驗子與零。舉例而言,如圖5中所展示,可將在操作412處產生之校驗子356a提供至位元錯誤偵測電路360,該位元錯誤偵測電路可經組態以比較校驗子356a與零。在某些實施例中,該比較可包含藉由位元錯誤偵測電路360而執行校驗子356a之n-k個位元之一邏輯OR運算。若邏輯OR運算之輸出(例如,訊號360b)係一邏輯值零(此指示校驗子356a等於零),則方法400可繼續進行至操作416。否則,若邏輯OR運算之輸出(例如,訊號360b)係一邏輯值1 (此指示校驗子356a不等於零),則方法400可繼續進行至操作410。
在某些實施例中,在操作412處產生之校驗子356a等於零指示在操作410處輸出之碼字126b'之經翻轉位元位置係碼字126b中之1位元錯誤之位置。在操作412處產生之校驗子356a不等於零指示在操作410處輸出之碼字126b'之經翻轉位元位置並非係碼字126b中之1位元錯誤之位置。在此不等情形中,執行操作410至414之反覆迴圈之另一反覆。可執行反覆迴圈之反覆直至在操作414處發現在操作412處產生之校驗子356a係零為止。若在反覆迴圈之n數目個反覆之後於操作414處未發現在操作412處產生之校驗子356a係零,則位元錯誤偵測電路360可將指示碼字126b具有不可更正2位元錯誤之訊號360b提供至控制電路564。
參考圖4,在操作416中,更正接收之所儲存資料之一1位元錯誤。舉例而言,如圖5中所展示,可由更正電路562基於自資料暫存器352接收之碼字126b且基於自移位暫存器570接收之資訊570a而更正資料碼字126b中之1位元錯誤。在某些實施例中,該更正可包含在操作410處,在碼字126b與移位暫存器570之n
個位元之邏輯值之間執行一逐位元邏輯XOR運算,後續接著藉由電路572而將經更正碼字126b之k
位元資料部分與經更正碼字126b之n-k
位元ECC部分分離。
參考圖4,在操作418中,輸出經更正所儲存資料之k
位元資料。舉例而言,如圖5中所展示,可由更正電路562輸出資料126a。在某些實施例中,自更正電路562輸出資料126a可包含由控制電路564自位元錯誤偵測電路360接收指示在操作412處產生之校驗子356a等於零之訊號360b,後續接著控制電路564將控制訊號564c提供至邏輯電路574。控制訊號564c可啟用邏輯電路574以允許將來自電路572之經分離k
位元資料部分自更正電路562輸出。在某些實施例中,控制電路564可經組態以提供訊號564c,當控制電路564自位元錯誤偵測電路360接收到指示在操作412處產生之校驗子356a不等於零之訊號360b時,訊號564c停用邏輯電路574。
圖6係根據某些實施例之一實例性方法600之一流程圖,該實例性方法用於利用一解碼器電路(例如,解碼器電路126、326及/或726)來偵測儲存於一記憶體裝置(例如,記憶體陣列102)中之資料(例如,資料124b或126b)中之1位元錯誤及多位元錯誤且更正該資料中之1位元錯誤及2位元錯誤。可以一不同次序來執行操作或取決於特定應用而不執行操作。出於說明性目的,將參考圖1、圖2A至圖2B、圖3A至圖3C及圖7中所圖解說明之裝置及電路而闡述圖6中所圖解說明之操作中之某些操作。
圖7圖解說明根據某些實施例之可被實施為資料儲存系統100之一部分之一解碼器電路726的一方塊圖。在某些實施例中,解碼器電路726可表示解碼器電路126及/或326。除非另外提及,否則對解碼器電路126及326以及其元件及組態之以上論述適用於解碼器電路726。在某些實施例中,解碼器電路726可包含資料暫存器352、位元翻轉電路754、校驗子產生電路356、H矩陣產生電路358 (圖7中未展示)、位元錯誤偵測電路760、更正電路762及控制電路764。上文闡述圖7中之具有與圖3A中之元件相同之注釋之元件。除非另外提及,否則對位元翻轉電路354、位元錯誤偵測電路360、控制電路364、更正電路362、控制訊號364a至364c以及資訊354a及360a之以上論述分別適用於位元翻轉電路754、位元錯誤偵測電路760、控制電路764、更正電路762、控制訊號764a至764c以及資訊770a及780a。
在某些實施例中,方法600可為解碼器電路126、326及/或726之一操作流程。應注意,方法600並未闡述解碼器電路126、326及/或726之全部操作。因此,應理解,可在方法600期間提供額外操作,且可僅在本文中簡要地闡述某些其他操作。
參考圖6,在操作602中,自一記憶體裝置接收一所儲存資料且將該所儲存資料提供至一校驗子產生電路。舉例而言,如圖7中所展示,可由解碼器電路726之資料暫存器352自記憶體陣列102接收碼字126b且可將等於碼字126b之碼字126b'提供至校驗子產生電路356。在某些實施例中,將等於碼字126b之碼字126b'提供至校驗子產生電路356可包含將位元翻轉電路754之移位暫存器770初始化至零,亦即,基於自控制電路764接收之控制訊號764a而將移位暫存器770之所有位元設定至邏輯值零。該提供可進一步包含在碼字126b與移位暫存器770之n個位元之間執行一逐位元邏輯XOR運算,如圖7中所圖解說明。在某些實施例中,移位暫存器770可為具有n
個位元之一位元長度之一串列輸入並列輸出移位暫存器。
參考圖6,在操作604中,產生接收之所儲存資料之一校驗子。舉例而言,如圖7中所展示,可由校驗子產生電路356基於在操作602中接收之碼字126b且基於自H矩陣產生電路358 (圖3A中所展示)接收之經轉置H矩陣358a而產生校驗子356a。在某些實施例中,校驗子356a之產生可包含基於上文參考圖3A所闡述之方程式(3)而在於操作602中接收之碼字126b與經轉置H矩陣358a之間執行點積。該產生可進一步包含在碼字126b與經轉置H矩陣358a之間執行邏輯XOR運算,如上文參考圖3A及圖3C所闡述。
參考圖6,在操作606中,比較接收之所儲存資料之所產生校驗子與零。舉例而言,如圖7中所展示,可將校驗子356a提供至位元錯誤偵測電路760之比較器776。比較器776可經組態以比較校驗子356a與零。在某些實施例中,該比較可包含藉由比較器776而執行校驗子356a之n-k個位元之一邏輯OR運算。若邏輯OR運算之輸出訊號760b係一邏輯值零(此指示校驗子356a等於零),則方法600可繼續進行至操作608。否則,若邏輯OR運算之輸出訊號760b係一邏輯值1 (此指示校驗子356a不等於零),則方法600可繼續進行至操作610。在某些實施例中,校驗子356a等於零指示碼字126b係無錯誤的且校驗子356a不等於零指示碼字126b可具有1位元錯誤或2位元錯誤。在某些實施例中,在操作606中,可基於來自控制電路764之控制訊號764b而停用比較器778且可將移位暫存器780之n個位元初始化至邏輯值零。在某些實施例中,移位暫存器780可為具有n
個位元之一位元長度之一並列輸入並列輸出移位暫存器。
參考圖6,在操作608中,輸出接收之所儲存資料之k
位元資料。舉例而言,如圖7中所展示,可由更正電路762輸出資料126a。在某些實施例中,自更正電路762輸出資料126a可包含在碼字126b與操作602之移位暫存器770之經初始化n
個位元之間執行一逐位元邏輯XOR運算,後續接著藉由電路772而將碼字126b之k
位元資料部分與碼字126b之n-k
位元ECC部分分離。該輸出可進一步包含由控制電路764自位元錯誤偵測電路760接收指示校驗子356a等於零之訊號760b,後續接著控制電路764將控制訊號764c提供至邏輯電路774。控制訊號764c可啟用邏輯電路774以允許將來自電路772之k
位元資料部分自更正電路762輸出。
參考圖6,在操作610中,比較接收之所儲存資料之所產生校驗子與一H矩陣之一行。舉例而言,如圖7中所展示,可將在操作604處產生之校驗子356a提供至位元錯誤偵測電路760之比較器778。比較器778可經組態以比較校驗子356a與H矩陣358b之n個行中之每一者。在某些實施例中,控制電路764可控制一計數器(未展示)以將H矩陣358b之每一行依序輸出至比較器778。計數器可耦合至控制電路764及H矩陣產生電路358。可並列地(亦即,同時地)完成與每一行之比較,或可串列地(亦即,一個接一個地)完成該比較。在某些實施例中,該比較可包含自控制電路764接收控制訊號764b以啟用比較器778之操作。可回應於控制電路764接收到指示在操作606處產生之校驗子356a不等於零之訊號760b而將控制訊號764b提供至比較器778。
該比較可進一步包含將每一比較結果之輸出輸入至移位暫存器780之每一位元位置中。移位暫存器780之每一位元位置可與H矩陣358b之行之每一索引對應。舉例而言,若校驗子356a與H矩陣358b之第n行匹配,則自比較器778輸出一邏輯值1且將邏輯值1輸入至移位暫存器780之第n位元位置中,並且若校驗子356a不與H矩陣358b之第n行匹配,則自比較器778輸出一邏輯值零且將邏輯值零輸入至移位暫存器780之第n位元位置中。在操作604處產生之校驗子356a與H矩陣358b之一行匹配可指示碼字126b具有1位元錯誤且H矩陣358b之所匹配行之索引指示碼字126b中之1位元錯誤之位置。舉例而言,若校驗子356a與H矩陣358b之第n行匹配,則碼字126b之第n位元位置具有一1位元錯誤。
操作610中之比較可進一步包含藉由控制電路764而執行移位暫存器780之n個位元之一邏輯OR運算。若邏輯OR運算之輸出係一邏輯值1 (此指示移位暫存器780之n個位元中之至少一者等於1),則方法600可繼續進行至操作612。否則,若邏輯OR運算之輸出訊號係一邏輯值零(此指示移位暫存器780之n個位元中之任一者皆不等於零),則方法600可繼續進行至操作616。
參考圖6,在操作612中,更正接收之所儲存資料之1位元錯誤。舉例而言,如圖7中所展示,可由更正電路762基於自資料暫存器352接收之碼字126b、基於自移位暫存器770接收之資訊770a且基於自移位暫存器780接收之資訊780a而更正碼字126b中之1位元錯誤。在某些實施例中,該更正可包含在操作610處,在碼字126b與移位暫存器770之n
個位元之邏輯值之間執行一第一逐位元邏輯XOR運算,後續接著在操作610處,在移位暫存器780之n
個位元之邏輯值與第一逐位元邏輯XOR運算之n
位元輸出之間執行一第二逐位元邏輯XOR運算。第二逐位元邏輯XOR運算可後續接著藉由電路772而將經更正碼字126b之k
位元資料部分與經更正碼字126b之n-k
位元ECC部分分離。
參考圖6,在操作614中,輸出1位元錯誤更正之所儲存資料之k
位元資料。舉例而言,如圖7中所展示,可由更正電路762輸出資料126a。在某些實施例中,自更正電路762輸出資料126a可包含自控制電路764接收控制訊號764c以啟用邏輯電路774來允許將來自電路772之經分離k位元資料部分自更正電路762輸出。可基於在控制電路764中進行之移位暫存器780之n個位元之邏輯OR運算輸出一邏輯值1而觸發控制訊號764c來啟用邏輯電路774。在某些實施例中,當控制電路764自比較器776接收到指示在操作606處產生之校驗子356a不等於零之訊號360b且在控制電路764中進行之移位暫存器780之n個位元之邏輯OR運算輸出一邏輯值零時,可觸發控制訊號764c來停用邏輯電路774。
參考圖6,在操作616中,翻轉接收之所儲存資料之一位元。舉例而言,如圖7中所展示,可藉由位元翻轉電路754而翻轉碼字126b之一位元以輸出與碼字126b相差一個位元之碼字126b'。在某些實施例中,位元翻轉可包含在碼字126b與移位暫存器770之位元之間執行一逐位元邏輯XOR運算(圖7中所展示),其中移位暫存器770之位元中之一者具有一邏輯值1且其他位元具有邏輯值零。移位暫存器770之具有一邏輯值1之位元之位置與碼字126b之可被翻轉之位元之位置對應。
在某些實施例中,操作616可為用於判定碼字126b中之2位元錯誤之位置之一反覆迴圈的一部分。該反覆迴圈可包括操作616至620。第一反覆可以在操作616處在移位暫存器770之最高有效位元(MSB)位置中輸入一邏輯值1開始。在每一反覆期間,在操作616處,可將移位暫存器770中之邏輯值1朝向其最低有效位元(LSB)位置移位一個位元位置,而移位暫存器770之其餘位元位置具有邏輯值零。最後反覆可在操作616期間在移位暫存器770之LSB位置中具有邏輯值1。因此,操作616至620之反覆迴圈之第一反覆可以在操作616處翻轉碼字126b之MSB開始且該反覆迴圈之最後反覆可在操作616期間使碼字126b之LSB翻轉。在每一反覆期間,在操作616處,可翻轉碼字126b之一連續位元,該連續位元與移位暫存器770中之邏輯1之位元位置對應。在某些實施例中,移位暫存器770之操作(例如,邏輯值1之移位)可為基於來自控制電路764之控制訊號764a。
參考圖6,在操作618中,產生經位元翻轉資料之一校驗子。舉例而言,如圖7中所展示,可由校驗子產生電路356基於在操作616處輸出之碼字126b'且基於自H矩陣產生電路358 (圖3A中所展示)接收之經轉置H矩陣358a而產生碼字126b'之校驗子356a。在某些實施例中,校驗子356a之產生可包含基於上文參考圖3A所闡述之方程式(3)而在於操作616中輸出之碼字126b'與經轉置H矩陣358a之間執行點積。該產生可進一步包含在碼字126b'與經轉置H矩陣358a之間執行邏輯XOR運算,如上文參考圖3A及圖3C所闡述。
參考圖6,在操作620中,比較經位元翻轉資料之所產生校驗子與H矩陣之一行。舉例而言,如圖7中所展示,可將在操作618處產生之校驗子356a提供至比較器778,該比較器可經組態以比較校驗子356a與H矩陣358b之n個行中之每一者。可並列地(亦即,同時地)完成與每一行之比較,或可串列地(亦即,一個接一個地)完成該比較。該比較可包含將每一比較結果之輸出輸入至移位暫存器780之每一位元位置中。移位暫存器780之每一位元位置可與H矩陣358b之行之每一索引對應。舉例而言,若在操作618處產生之校驗子356a與H矩陣358b之第n行匹配,則自比較器778輸出一邏輯值1且將邏輯值1輸入至移位暫存器780之第n位元位置中,並且若在操作618處產生之校驗子356a不與H矩陣358b之第n行匹配,則自比較器778輸出一邏輯值零且將邏輯值零輸入至移位暫存器780之第n位元位置中。操作620中之比較可進一步包含藉由控制電路764而執行移位暫存器780之n個位元之一邏輯OR運算。若邏輯OR運算之輸出係一邏輯值1 (此指示移位暫存器780之n個位元中之至少一者等於1),則方法600可繼續進行至操作622。否則,若邏輯OR運算之輸出訊號係一邏輯值零(此指示移位暫存器780之n個位元中之任一者皆不等於零),則方法600可繼續進行至操作616。
在操作618處產生之校驗子356a與H矩陣358b之一行匹配可指示碼字126b具有2位元錯誤且H矩陣358b之所匹配行之索引指示碼字126b中之2位元錯誤之位置中之一者。舉例而言,若在操作618處產生之校驗子356a與H矩陣358b之第n行匹配,則碼字126b之第n位元位置具有一2位元錯誤之位元錯誤中之一者。可藉由碼字126b'中之經翻轉位元位置而提供碼字126b中之2位元錯誤之另一位置,在操作618中基於該經翻轉位元位置而產生在操作620中與H矩陣358b之一行匹配之校驗子356a。
在某些實施例中,在操作618處產生之校驗子356a與H矩陣358b之任何行之間的不匹配指示在操作616處輸出之碼字126b'之經翻轉位元位置並非係碼字126b中之2位元錯誤之位置中之一者。在此不匹配情形中,可執行操作616至620之反覆迴圈之另一反覆。可執行反覆迴圈之反覆直至在操作620處發現在操作618處產生之校驗子356a與H矩陣358b之n個行中之一者匹配為止。若在反覆迴圈之n數目個反覆之後於操作620處未發現在操作618處產生之校驗子356a與H矩陣358b之行中之一者匹配,則位元錯誤偵測電路760可將指示碼字126b具有不可更正3位元錯誤之訊號360b提供至控制電路764。
參考圖6,在操作622中,更正接收之所儲存資料之一2位元錯誤。舉例而言,如圖7中所展示,可由更正電路762基於自資料暫存器352接收之碼字126b、基於自移位暫存器770接收之資訊770a且基於自移位暫存器780接收之資訊780a而更正碼字126b中之2位元錯誤。在某些實施例中,該更正可包含在操作620處,在碼字126b與移位暫存器770之n
個位元之邏輯值之間執行一第一逐位元邏輯XOR運算,後續接著在操作620處,在移位暫存器780之n
個位元之邏輯值與第一逐位元邏輯XOR運算之n
位元輸出之間執行一第二逐位元邏輯XOR運算。第二逐位元邏輯XOR運算可後續接著藉由電路772而將經更正碼字126b之k
位元資料部分與經更正碼字126b之n-k
位元ECC部分分離。
參考圖6,在操作624中,輸出2位元錯誤更正之所儲存資料之k
位元資料。舉例而言,如圖7中所展示,可由更正電路762輸出資料126a。在某些實施例中,自更正電路762輸出資料126a可包含自控制電路764接收控制訊號764c以啟用邏輯電路774來允許將來自電路772之經分離k位元資料部分自更正電路762輸出。可基於在控制電路764中進行之移位暫存器780之n個位元之邏輯OR運算輸出一邏輯值1而觸發控制訊號764c來啟用邏輯電路774。
應理解,除非以由一實心黑色圓圈(「•」)表示之一節點來圖解說明相交點,否則圖1、圖2A至圖2B、圖3A至圖3C及圖4至圖8之相交線並非係電連接的。
可以軟體、韌體、硬體或其一組合來實施本揭露之各種態樣。圖8係根據某些實施例之其中可實施本揭露之實施例或其部分之一電腦系統800的一圖解說明。舉例而言,可在系統800中實施分別由圖4及圖6之流程圖圖解說明之方法400及600。應注意,可透過使用電腦可讀碼而部分地實現本揭露之各種實施例之模擬、合成及/或製造,該電腦可讀碼包含一般程式設計語言(諸如C或C++)、硬體描述語言(HDL) (例如,Verilog HDL、VHDL、Altera HDL (AHDL))或其他可用程式設計及/或示意圖擷取工具(諸如電路擷取工具)。此電腦可讀碼可被置於任何已知電腦可用媒體(包含一半導體、磁碟、光碟(諸如CD-ROM、DVD-ROM))中。如此,可經由包含網際網路之通信網路而傳輸該碼。
電腦系統800可為能夠執行本文中所闡述之功能及操作之任何眾所周知之電腦。電腦系統800包含一或多個處理器(亦稱作中央處理單元,或CPU),諸如一處理器804。處理器804連接至一通信基礎設施或匯流排806。電腦系統800亦包含透過輸入/輸出介面802而與通信基礎設施或匯流排806進行通信之輸入/輸出裝置803,諸如監視器、鍵盤、指向裝置等。一EDA工具可接收指令以經由輸入/輸出裝置803而實施本文中所闡述之功能及操作—例如,分別圖4及/或圖6之方法400及/或600。電腦系統800亦包含一主要或主記憶體808,諸如隨機存取記憶體(RAM)。主要記憶體808可包含一或多個快取記憶體層級。主要記憶體808在其中儲存有控制邏輯(例如,電腦軟體)及/或資料。在某些實施例中,控制邏輯(例如,電腦軟體)及/或資料可包含上文關於分別圖4及/或圖6之方法400及/或600所闡述之操作中之一或多者。
電腦系統800亦可包含一或多個次要儲存裝置或記憶體810。次要記憶體810可包含(舉例而言)一硬碟機812及/或一可抽換式儲存裝置或磁碟機814。可抽換式儲存磁碟機814可為一軟碟機、一磁帶機、一光碟機、一光學儲存裝置、磁帶備份裝置及/或任何其他儲存裝置/磁碟機。
可抽換式儲存磁碟機814可與一可抽換式儲存單元818互動。可抽換式儲存單元818包含其上儲存有電腦軟體(控制邏輯)及/或資料之一電腦可用或可讀儲存裝置。可抽換式儲存單元818可為一軟碟、磁帶、光碟、DVD、光學儲存磁碟及/或任何其他電腦資料儲存裝置。可抽換式儲存磁碟機814自可抽換式儲存單元818讀取及/或寫入至該可抽換式儲存單元。
根據某些實施例,次要記憶體810可包含用於允許電腦程式及/或其他指令及/或資料由電腦系統800存取之其他構件、手段或其他方法。此等構件、手段或其他方法可包含(舉例而言)一可抽換式儲存單元822及一介面820。可抽換式儲存單元822及介面820之實例可包含一程式盒及盒式介面(諸如存在於視訊遊戲裝置中)、一可抽換式記憶體晶片(諸如一EPROM或PROM)以及相關聯套接口、一記憶體棒及USB埠、一記憶體卡及相關聯記憶體卡槽及/或任何其他可抽換式儲存單元及相關聯介面。在某些實施例中,次要記憶體810、可抽換式儲存單元818及/或可抽換式儲存單元822可包含上文關於分別圖4及/或圖6之方法400及/或600所闡述之操作中之一或多者。
電腦系統800可進一步包含一通信或網路介面824。通信介面824使得電腦系統800能夠與遠端裝置、遠端網路、遠端實體等(個別地及共同地由參考編號828參考)之任何組合進行通信及介接。舉例而言,通信介面824可允許電腦系統800透過通信路徑826而與遠端裝置828進行通信,該通信路徑可為有線及/或無線的且可包含LAN、WAN、網際網路等之任何組合。可經由通信路徑826而向電腦系統800且自該電腦系統傳輸控制邏輯及/或資料。通信路徑826攜載訊號且可利用導線或纜線、光纖、一電話線、一蜂巢式電話鏈路、一RF鏈路或其他通信通道來實施。
可以各種各樣之組態及架構來實施先前實施例中之操作。因此,可以硬體、軟體或此兩者來執行先前實施例—例如,分別圖4及/或圖6之方法400及/或600中之操作中之某些或所有操作。在某些實施例中,在其上儲存有控制邏輯(軟體)之包括一有形電腦可用或可讀媒體之一有形設備或製造物件亦在本文中稱為一電腦程式產品或程式儲存裝置。此包含但不限於電腦系統800、主要記憶體808、次要記憶體810及可抽換式儲存單元818及822以及體現前述各項之任何組合之有形製造物件。此控制邏輯在由一或多個資料處理裝置(諸如電腦系統800)執行時致使此等資料處理裝置如本文中所闡述而操作。特定而言,控制邏輯或電腦程式在被執行時使得處理器804能夠實施本揭露之實施例之程序,諸如分別圖4及/或圖6之方法400及/或600中之步驟。在利用軟體來實施本揭露之實施例之情況下,可利用可抽換式儲存磁碟機814、介面820、硬碟機812或通信介面824將該軟體儲存於一電腦程式產品中且載入至電腦系統800中。
在某些實施例中,電腦系統800與軟體安裝在一起以執行如分別圖4及/或圖6之方法400及/或600中所圖解說明之操作。在某些實施例中,電腦系統800包含用於光罩製造及電路製作之硬體/裝備。舉例而言,硬體/裝備可連接至電腦系統800之元件828 (遠端裝置、網路、實體)或係該元件之一部分。
以上實施例闡述用於偵測及更正記憶體裝置中之單位元錯誤及多位元錯誤之系統及方法,該等系統及方法幫助克服當前基於ECC之資料儲存系統中之以上所論述問題。本文中所揭示之實例性基於ECC之方法幫助減少用於資料儲存系統中之所揭示實例性基於ECC之位元錯誤偵測與更正(BEDC)電路之實施方案之邏輯電路的複雜性。舉例而言,本文中所揭示之用於位元錯誤偵測之實例性方法使用一位元翻轉方案來判定經損毀資料中之位元錯誤之位置。與當前位元錯誤偵測與更正方法相比,此位元翻轉方案幫助將BEDC電路之邏輯電路保持為儘可能簡單的,以便避免可發生於電路中之錯誤且亦能夠儘可能快地操作邏輯電路以進行較快位元錯誤偵測與更正。與當前基於ECC之BEDC電路相比,降低邏輯電路之複雜性幫助減少用於邏輯電路之實施方案中之裝置之數目,且因此幫助減少邏輯電路之積體電路佈局面積、電力消耗、傳播延遲及處理時間。在某些實施例中,與當前基於ECC之BEDC電路之處理時間相比,實例性基於ECC之BEDC電路之操作所需之處理時間可減少約10%至約50%。
在某些實施例中,一種更正一記憶體裝置中之一或多個位元錯誤之方法包含自一記憶體裝置擷取一碼字。該碼字包含一資料及一錯誤更正碼。該方法進一步包含:判定該一或多個位元錯誤是否存在於該所擷取碼字中;及回應於判定單一位元錯誤存在於該所擷取碼字中而針對該單一位元錯誤來更正該所擷取碼字。該方法亦包含:回應於判定複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
在某些實施例中,一種更正一記憶體裝置中之一單一位元錯誤之方法包含自一記憶體裝置擷取一碼字。該碼字包含一資料及一錯誤更正碼。該方法進一步包含:判定該單一位元錯誤是否存在於該所擷取碼字中;回應於判定該單一位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及基於該經位元翻轉碼字而針對該單一位元錯誤來更正該所擷取碼字。
在某些實施例中,一種資料儲存系統包含:一記憶體陣列,其經組態以儲存一碼字,該碼字具有一資料及一錯誤更正碼;一編碼器電路,其經組態以在該記憶體陣列之一寫入模式操作期間利用該錯誤更正碼來編碼該資料以形成該碼字;及一解碼器電路。該解碼器電路包含:一資料暫存器,其經組態以在該記憶體陣列之一讀取模式操作期間擷取該碼字;一位元錯誤偵測電路,其經組態以判定一或多個位元錯誤是否存在於該所擷取碼字中;一位元翻轉電路,其經組態以回應於複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及一更正電路,其經組態以基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
前述揭露概述數個實施例之構件,使得熟習此項技術者可較好地理解本揭露之態樣。熟習此項技術者應瞭解,其可容易地使用本揭露作為設計或修改用於實施與本文中介紹之實施例相同之目的及/或達成與該等實施例相同之優點之其他程序及結構之一基礎。熟習此項技術者亦應認識到,此等等效構造並不背離本揭露之精神及範疇,且其可在不背離本揭露之精神及範疇之情況下在本文中做出各種改變、替換及更改。
100‧‧‧資料儲存系統/資料儲存裝置
102‧‧‧記憶體陣列
104.1.1‧‧‧記憶體胞元
104.1.q‧‧‧記憶體胞元
104.p.1‧‧‧記憶體胞元
104.p.q‧‧‧記憶體胞元
106‧‧‧列解碼器
108‧‧‧感測放大器/寫入驅動器
110‧‧‧行解碼器
114‧‧‧字線
116‧‧‧位元線
120‧‧‧控制訊號
124‧‧‧編碼器電路
124a‧‧‧資料/k位元資料
124b‧‧‧資料/碼字/n位元碼字
126‧‧‧解碼器電路/解碼器
126a‧‧‧資料/k位元資料
126b‧‧‧碼字/資料/n位元碼字
126b'‧‧‧資料/n位元碼字/碼字
130‧‧‧第二方向
132‧‧‧資訊
200‧‧‧XOR樹
224‧‧‧編碼器電路
234‧‧‧資料暫存器
236‧‧‧G矩陣產生電路/產生矩陣產生電路/產生器矩陣產生電路
236a‧‧‧G矩陣
238‧‧‧錯誤更正碼產生電路/錯誤更正碼位元產生電路
238an-k‧‧‧位元錯誤更正碼/錯誤更正碼
240‧‧‧碼字產生電路
242‧‧‧節點/圓形節點
244‧‧‧節點/矩形節點
246‧‧‧節點/三角形節點
300‧‧‧XOR樹
326‧‧‧解碼器電路
342‧‧‧節點/圓形節點
344‧‧‧節點/矩形節點
346‧‧‧節點/三角形節點
352‧‧‧資料暫存器
354‧‧‧位元翻轉電路/電路
354a‧‧‧位元錯誤位置資訊/資訊
356‧‧‧校驗子產生電路
356a‧‧‧(n-k)位元校驗子/校驗子
358‧‧‧H矩陣產生電路/檢查矩陣產生電路/同位檢查矩陣產生電路
358a‧‧‧經轉置H矩陣
358b‧‧‧H矩陣
360‧‧‧位元錯誤偵測電路/電路
360a‧‧‧位元錯誤位置資訊/資訊
360b‧‧‧訊號
362‧‧‧更正電路/電路
364‧‧‧控制電路
364a‧‧‧控制訊號
364b‧‧‧控制訊號
364c‧‧‧控制訊號/無錯誤訊號
400‧‧‧方法
402‧‧‧操作
404‧‧‧操作
406‧‧‧操作
408‧‧‧操作
410‧‧‧操作
412‧‧‧操作
414‧‧‧操作
416‧‧‧操作
418‧‧‧操作
526‧‧‧解碼器電路
554‧‧‧位元翻轉電路
562‧‧‧更正電路
564‧‧‧控制電路
564a‧‧‧控制訊號
564c‧‧‧控制訊號/訊號
570‧‧‧移位暫存器
570a‧‧‧資訊
572‧‧‧電路
574‧‧‧邏輯電路
600‧‧‧方法
602‧‧‧操作
604‧‧‧操作
606‧‧‧操作
608‧‧‧操作
610‧‧‧操作
612‧‧‧操作
614‧‧‧操作
616‧‧‧操作
618‧‧‧操作
620‧‧‧操作
622‧‧‧操作
624‧‧‧操作
726‧‧‧解碼器電路
754‧‧‧位元翻轉電路
760‧‧‧位元錯誤偵測電路
760b‧‧‧輸出訊號/訊號
762‧‧‧更正電路
764‧‧‧控制電路
764a‧‧‧控制訊號
764b‧‧‧控制訊號
764c‧‧‧控制訊號
770‧‧‧移位暫存器
770a‧‧‧資訊
772‧‧‧電路
774‧‧‧邏輯電路
776‧‧‧比較器
778‧‧‧比較器
780‧‧‧移位暫存器
780a‧‧‧資訊
800‧‧‧電腦系統/系統
802‧‧‧輸入/輸出介面
803‧‧‧輸入/輸出裝置
804‧‧‧處理器
806‧‧‧通信基礎設施/匯流排
808‧‧‧主要記憶體/主記憶體
810‧‧‧次要儲存裝置/次要記憶體
812‧‧‧硬碟機
814‧‧‧可抽換式儲存裝置/可抽換式儲存磁碟機
818‧‧‧可抽換式儲存單元
820‧‧‧介面
822‧‧‧可抽換式儲存單元
824‧‧‧通信介面/網路介面
826‧‧‧通信路徑
828‧‧‧遠端裝置/元件
當藉助附圖閱讀時,自以下詳細說明最佳地理解本揭露之態樣。應注意,根據工業中之標準准實踐,各種構件未按比例繪製。實際上,為論述清晰起見,可任意地增加或減小各種構件之尺寸。
圖1圖解說明根據某些實施例之一資料儲存系統之一方塊圖。
圖2A圖解說明根據某些實施例之一基於ECC之編碼器電路之一方塊圖。
圖2B圖解說明根據某些實施例之一基於ECC之編碼器電路之一ECC位元產生電路。
圖3A圖解說明根據某些實施例之一基於ECC之解碼器電路之一方塊圖。
圖3B圖解說明根據某些實施例之一基於ECC之資料儲存系統之一產生矩陣(G矩陣)與一檢查矩陣(H矩陣)之間的一關係。
圖3C圖解說明根據某些實施例之一基於ECC之解碼器電路之一校驗子(syndrome)位元產生電路。
圖4係根據某些實施例之用於偵測一多位元錯誤及更正一單位元錯誤之一基於ECC之方法的一流程圖。
圖5係根據某些實施例之一基於ECC之位元錯誤偵測與更正電路之一方塊圖。
圖6係根據某些實施例之用於偵測及更正單位元及多位元錯誤之一基於ECC之方法的一流程圖。
圖7係根據某些實施例之一基於ECC之位元錯誤偵測與更正電路之一方塊圖。
圖8圖解說明根據某些實施例之其中可實施本揭露之實施例或其部分之一電腦系統的一方塊圖。
現在將參考隨附圖式闡述說明性實施例。在圖式中,相似參考編號一般指示相同、功能上類似及/或結構上類似之元件。
400‧‧‧方法
402‧‧‧操作
404‧‧‧操作
406‧‧‧操作
408‧‧‧操作
410‧‧‧操作
412‧‧‧操作
414‧‧‧操作
416‧‧‧操作
418‧‧‧操作
Claims (1)
- 一種更正一記憶體裝置中之一或多個位元錯誤之方法,該方法包括: 自一記憶體裝置擷取一碼字,該碼字具有一資料及一錯誤更正碼; 判定該一或多個位元錯誤是否存在於該所擷取碼字中; 回應於判定單一位元錯誤存在於該所擷取碼字中而針對該單一位元錯誤來更正該所擷取碼字; 回應於判定複數個位元錯誤存在於該所擷取碼字中而翻轉該所擷取碼字之一位元;及 基於該經位元翻轉碼字而針對該複數個位元錯誤來更正該所擷取碼字。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862698658P | 2018-07-16 | 2018-07-16 | |
US62/698,658 | 2018-07-16 | ||
US16/128,967 | 2018-09-12 | ||
US16/128,967 US10761927B2 (en) | 2018-07-16 | 2018-09-12 | Detection and correction of data bit errors using error correction codes |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202006544A true TW202006544A (zh) | 2020-02-01 |
Family
ID=69138261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108112556A TW202006544A (zh) | 2018-07-16 | 2019-04-10 | 利用錯誤更正碼進行資料位元錯誤的偵測與更正 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10761927B2 (zh) |
CN (1) | CN110727540A (zh) |
TW (1) | TW202006544A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI770847B (zh) * | 2020-03-03 | 2022-07-11 | 美商美光科技公司 | 用於記憶體單元之基於計數器的感測放大器方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761927B2 (en) * | 2018-07-16 | 2020-09-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Detection and correction of data bit errors using error correction codes |
US11349498B2 (en) * | 2020-10-08 | 2022-05-31 | Micron Technology, Inc. | Bit flipping low-density parity-check decoders with low error floor |
US11722152B1 (en) | 2020-11-25 | 2023-08-08 | Astera Labs, Inc. | Capacity-expanding memory control component |
US12061793B1 (en) * | 2020-11-25 | 2024-08-13 | Astera Labs, Inc. | Capacity-expanding memory control component |
JP2023005919A (ja) * | 2021-06-29 | 2023-01-18 | ルネサスエレクトロニクス株式会社 | 半導体装置および誤り検出方法 |
US11942966B2 (en) * | 2021-08-17 | 2024-03-26 | Micron Technology, Inc. | Managing error control information using a register |
KR102387463B1 (ko) | 2021-10-21 | 2022-04-15 | 삼성전자주식회사 | 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법 |
US11923867B1 (en) * | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Iterative decoder with a dynamic maximum stop condition |
US11901911B1 (en) | 2022-08-18 | 2024-02-13 | Micron Technology, Inc. | Stall detection and mitigation in iterative decoders |
US11923868B1 (en) * | 2022-08-18 | 2024-03-05 | Micron Technology, Inc. | Stall mitigation in iterative decoders |
US12119074B2 (en) * | 2022-09-28 | 2024-10-15 | Texas Instruments Incorporated | Data correction of redundant data storage |
US20240168847A1 (en) * | 2022-11-21 | 2024-05-23 | Micron Technology, Inc. | Efficient memory use to support soft information in bit flipping decoders |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096414B2 (en) * | 2003-08-04 | 2006-08-22 | Hewlett-Packard Development Company, L.P. | In-line wire error correction |
EP2181504A4 (en) * | 2008-08-15 | 2010-07-28 | Lsi Corp | DECODING LIST OF CODED WORDS CLOSE IN A ROM MEMORY |
DE102013112020B4 (de) * | 2013-10-31 | 2016-04-07 | Hochschule Nordhausen | Verfahren und Vorrichtung zum Erkennen von Bitfehlern |
US9411683B2 (en) * | 2013-12-26 | 2016-08-09 | Intel Corporation | Error correction in memory |
US9543981B2 (en) * | 2014-03-25 | 2017-01-10 | Texas Instruments Incorporated | CRC-based forward error correction circuitry and method |
US10177787B1 (en) * | 2015-09-17 | 2019-01-08 | Seagate Technology Llc | Mitigation of error correction failure due to trapping sets |
US10372531B2 (en) * | 2017-01-05 | 2019-08-06 | Texas Instruments Incorporated | Error-correcting code memory |
US10707899B2 (en) * | 2017-08-31 | 2020-07-07 | SK Hynix Inc. | Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes |
US10761927B2 (en) * | 2018-07-16 | 2020-09-01 | Taiwan Semiconductor Manufacturing Co., Ltd. | Detection and correction of data bit errors using error correction codes |
US11016843B2 (en) * | 2018-12-06 | 2021-05-25 | Micron Technology, Inc. | Direct-input redundancy scheme with adaptive syndrome decoder |
-
2018
- 2018-09-12 US US16/128,967 patent/US10761927B2/en active Active
-
2019
- 2019-04-10 TW TW108112556A patent/TW202006544A/zh unknown
- 2019-06-19 CN CN201910529942.1A patent/CN110727540A/zh active Pending
-
2020
- 2020-08-31 US US17/007,942 patent/US11314587B2/en active Active
-
2022
- 2022-04-25 US US17/728,413 patent/US11740960B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI770847B (zh) * | 2020-03-03 | 2022-07-11 | 美商美光科技公司 | 用於記憶體單元之基於計數器的感測放大器方法 |
US11842783B2 (en) | 2020-03-03 | 2023-12-12 | Micron Technology, Inc. | Counter-based sense amplifier method for memory cells |
Also Published As
Publication number | Publication date |
---|---|
US20200401475A1 (en) | 2020-12-24 |
US11740960B2 (en) | 2023-08-29 |
US11314587B2 (en) | 2022-04-26 |
CN110727540A (zh) | 2020-01-24 |
US20200019456A1 (en) | 2020-01-16 |
US20220245023A1 (en) | 2022-08-04 |
US10761927B2 (en) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
US11025274B2 (en) | Memory controller and method of data bus inversion using an error detection correction code | |
US11762732B2 (en) | Memory error detection and correction | |
US8091010B2 (en) | Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit | |
US7398449B1 (en) | Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module | |
US7278085B1 (en) | Simple error-correction codes for data buffers | |
JP5043562B2 (ja) | エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
KR102303961B1 (ko) | 메모리 에러 검출 및 정정 | |
KR101550762B1 (ko) | 연접 오류 정정 장치 | |
CN110941505B (zh) | 产生错误校正电路的方法 | |
US10498364B2 (en) | Error correction circuits and memory controllers including the same | |
US20130318423A1 (en) | Mis-correction and no-correction rates for error control | |
US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
TWI627834B (zh) | 用於執行內建式自我測試的獨立磁碟冗餘陣列解碼系統 | |
US20160364293A1 (en) | Apparatuses and methods for encoding using error protection codes | |
Badack et al. | Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors | |
TWI551058B (zh) | 最小-總和演算法之低密度奇偶校驗碼解碼器及其解碼方法 | |
Gherman et al. | Sequential Decoders for Binary Linear Block ECCs | |
JP2023032889A (ja) | 半導体装置 | |
TW202025166A (zh) | 多個記憶體裝置共用的錯誤更正系統 |