TWI742955B - 操作記憶體控制器的方法、記憶體系統以及共享核對位元的方法 - Google Patents
操作記憶體控制器的方法、記憶體系統以及共享核對位元的方法 Download PDFInfo
- Publication number
- TWI742955B TWI742955B TW109143218A TW109143218A TWI742955B TW I742955 B TWI742955 B TW I742955B TW 109143218 A TW109143218 A TW 109143218A TW 109143218 A TW109143218 A TW 109143218A TW I742955 B TWI742955 B TW I742955B
- Authority
- TW
- Taiwan
- Prior art keywords
- level
- bits
- error correction
- check bits
- memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 124
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012937 correction Methods 0.000 claims abstract description 78
- 238000001514 detection method Methods 0.000 claims abstract description 42
- 239000011159 matrix material Substances 0.000 claims description 71
- 208000011580 syndromic disease Diseases 0.000 claims description 32
- 230000009897 systematic effect Effects 0.000 claims description 14
- 238000013461 design Methods 0.000 claims description 3
- 238000003491 array Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000009977 dual effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005415 magnetization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010287 polarization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000191 radiation effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000005309 stochastic process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000012085 test solution Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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/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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1174—Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
-
- 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
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本揭露提供一種操作記憶體控制器的方法、記憶體系統以
及共享核對位元的方法。記憶體系統包括:記憶體裝置,被配置成儲存欲被寫入至記憶體裝置的資料位元;以及記憶體控制器。記憶體控制器包括:第一級錯誤修正碼(ECC)電路,耦接至記憶體裝置,其中第一級錯誤修正碼電路被配置成基於第一錯誤偵測方案生成與資料位元對應的第一多個第一級核對位元;以及第二級錯誤修正碼電路,耦接至記憶體裝置,其中第二級錯誤修正碼電路被配置成基於第一錯誤修正方案生成與資料位元及所述第一多個第一級核對位元二者對應的第二多個第二級核對位元。
Description
本揭露是有關於一種記憶體操作方法以及記憶體系統,且特別是有關於一種操作記憶體控制器的方法、記憶體系統以及共享核對位元的方法。
記憶體廣泛地用於數位系統中來儲存資訊(資料及程式二者)。在系統的操作期間,儲存在記憶體中的資訊(位元)可能會由於各種原因而被損壞。一個可能的損壞起因是由於記憶體內部及記憶體外部的環境事件。一個此種外部事件是離子衝擊。除環境事件之外,其他原因亦會導致位元損壞(故障)。當位元被損壞時,所儲存的資訊會去失,進而造成系統故障或資料去失。因此保護記憶體內容的完整性是重要的。已使用各種手段來保護記憶體內容不被損壞。錯誤修正碼(error correction code,ECC)具有能夠偵測碼字(資料位元及核對位元二者)中的錯誤且亦修正錯誤的
優點。
本揭露的操作耦接至記憶體裝置的記憶體控制器的方法包括:基於第一錯誤偵測方案生成對應於欲被寫入至記憶體裝置的資料位元的第一多個第一級核對位元;以及基於第一錯誤修正方案生成對應於資料位元及第一多個第一級核對位元兩者的第二多個第二級核對位元。
本揭露的記憶體系統包括記憶體裝置以及記憶體控制器。記憶體裝置被配置成儲存欲被寫入至記憶體裝置的資料位元。記憶體控制器包括第一級錯誤修正碼電路以及第二級錯誤修正碼電路。第一級錯誤修正碼電路耦接至記憶體裝置。第一級錯誤修正碼電路具有第一錯誤偵測方案且被配置成基於資料位元及第一錯誤偵測方案生成第一多個第一級核對位元。第一多個第一級核對位元用於第一級錯誤偵測。第二級錯誤修正碼電路耦接至記憶體裝置。第二級錯誤修正碼電路具有第一錯誤修正方案且被配置成基於資料位元、第一多個第一級核對位元及第一錯誤修正方案生成第二多個第二級核對位元。第二多個第二級核對位元用於第二級錯誤修正。
本揭露的在第一級錯誤修正碼與第二級錯誤修正碼之間共享核對位元的方法包括:在第一級錯誤修正碼中生成與第一錯誤偵測方案相關聯的第一級同位核對矩陣;將第一級同位核對矩
陣轉換成第一級同位核對矩陣的系統形式;在第二級錯誤修正碼中生成與第一錯誤修正方案相關聯的第二級同位核對矩陣;將第二級同位核對矩陣轉換成第二級同位核對矩陣的系統形式;辨識第二級同位核對矩陣的系統形式當中能夠自第一級同位核對矩陣的系統形式導出的列;以及儲存與第一級同位核對矩陣的系統形式的所有列以及第二級同位核對矩陣的系統形式當中無法自第一級同位核對矩陣的系統形式導出的列相關聯的核對位元。
100:設備
102:記憶體裝置
104:記憶體控制器/雙級錯誤修正碼(error correction code,ECC)記憶體控制器
106:處理器核心
108:第一級ECC電路
110:第二級ECC電路
112:第一級錯誤偵測模組
114:第二級錯誤偵測模組
116:錯誤修正模組
202:第一級ECC
204:第二級ECC
210、210’、210-i、210’-i、210’-j:資料位元
210-1、210-2、210-3、210-4、210-5、210-6、210-7、210-8:字元/64位元字元
210’-1、210’-2、210’-3、210’-4、210’-5、210’-6、210’-7、210’-8、210’-k:字元
210-j:64位元字元/資料位元
210-k:64位元字元
220-1、220-2、220-3、220-4、220-5、220-6、220-7、220-8:寫入XOR樹群組
220-i、220-j、220-k、320-1、3202-、320-3、320-4、320-5、320-6、320-7、320-8、320-i、320-j、320-k:讀取XOR樹群組
230:第一級核對位元/核對位元
230-1、230-2、230-3、230-4、230-5、230-6、230-7、230-8:第一級核對位元
230-i、230’-i、230-j、230-k:核對位元
240:寫入XOR樹
250:第二級核對位元
250’:核對位元/第二級核對位元
330-1、330-2、330-3、330-4、330-5、330-6、330-7、330-8、330-i、330-j、330-k:校正子
402a、402b:記憶體陣列
402i:記憶體陣列
412:資料位元區
414:核對位元區
602、604、606、608、692、694、696、698:步驟
結合附圖閱讀以下詳細說明,能最好地理解本揭露的各態樣。注意,根據本行業中的標準慣例,各種特徵未按比例繪製。事實上,為使論述清晰,可任意增大或減小各種特徵的尺寸。另外,對圖式加以說明以作為本揭露的實施例的實例且不旨在進行限制。
圖1是大體說明根據一些實施例的示例性設備的方塊圖。
圖2是說明根據一些實施例的具有雙級ECC的記憶體控制器的示例性寫入操作的圖。
圖3是說明根據一些實施例的具有雙級ECC的記憶體控制器的示例性讀取操作的圖。
圖4A是說明根據一些實施例的示例性記憶體陣列的圖。
圖4B是說明根據一些實施例的兩個示例性記憶體陣列的圖。
圖5是說明根據一些實施例的資料位元及核對位元的圖,其中第一級ECC與第二級ECC之間共享核對位元。
圖6A是說明根據一些實施例的在第一級ECC與第二級ECC之間共享核對位元的方法的流程圖。
圖6B是說明根據一些實施例的圖6A所示步驟606的具體步驟的流程圖。
以下揭露內容提供諸多不同的實施例或實例以實施所提供標的的不同特徵。下文闡述組件及排列的具體實例以簡化本揭露。當然,該些僅是實例並不旨在進行限制。舉例來說,在以下說明中,第一特徵形成於第二特徵之上或形成於第二特徵上可包括其中第一特徵與第二特徵形成為直接接觸的實施例,且亦可包括其中在第一特徵與第二特徵之間可形成額外特徵以使得所述第一特徵與所述第二特徵可不直接接觸的實施例。另外,本揭露可在各種實例中重複使用參考編號及/或字母。此種重複是出於簡明及清晰目的,而並非自身指示所論述的各種實施例及/或配置之間的關係。
此外,為易於說明起見,本文中可使用例如「在...之下(beneath)」、「在...下方(below)」、「下部的(lower)」、「在...上方(above)」、「上部的(upper)」等空間相對性用語來闡述圖中所說明的一個元件或特徵與另一(其他)元件或特徵之間的關係。除圖中所繪示的定向之外,所述空間相對性用語亦旨在囊括裝置在使用或操作中的不同定向。可以其他方式對設備進行定向(旋轉90
度或處於其他定向),且同樣地可據此對本文中所使用的空間相對性描述語加以解釋。
記憶體裝置用於在半導體裝置及系統中儲存資訊。受歡迎的動態隨機存取記憶體(dynamic random access memory,DRAM)胞元包括開關及電容器。DRAM在電力被切斷時不保存資料。非揮發性記憶體裝置即使在電力被切斷之後仍能夠保存資料。非揮發性記憶體裝置的實例包括快閃記憶體、磁性隨機存取記憶體(magnetic random access memory,MRAM)、鐵電隨機存取記憶體(ferroelectric random access memory,FRAM)、電阻式隨機存取記憶體(resistive random access memory,RRAM)及相變隨機存取記憶體(phase-change random access memory,PRAM)。MRAM、FRAM、RRAM及PRAM有時被稱為「新興記憶體」。MRAM使用隧道接面處的磁化方向上的變化來儲存資料。FRAM使用鐵電性的極化特性來儲存資料。RRAM使用電阻材料層的電阻變化來儲存資料。PRAM使用特定材料的相變所致的電阻變化來儲存資料。
記憶體通常排列成2維陣列。記憶體陣列可以本身是裝置或嵌置於另一裝置中,且亦可包括諸多記憶體位元胞元。每一記憶體位元胞元可通常儲存資訊的一個位元。記憶體巨集可包括一或多個位元胞元陣列以及其他邏輯電路系統,例如驅動器、緩衝器、時脈扇出型電路、錯誤修正碼(ECC)電路及其他周邊電路系統。
資料錯誤(例如,不是永久性的或不表示裝置的實體損毀
的軟錯誤)可能由擾亂錯誤(disturb error)、輻射效應或熱效應等造成。此類錯誤可為確定性的或可為偶然性過程(stochastic process)。資料錯誤率(包括軟錯誤)可需要使用建立至記憶體裝置晶片中的錯誤修正碼(ECC)方案。ECC可用於偵測並修正儲存於記憶體中的位元錯誤。ECC藉由生成ECC核對位元(例如,冗餘位元或同位位元)來對資料進行編碼,所述ECC核對位元與資料一起儲存於記憶體裝置中。資料位元與核對(例如,同位)位元一起形成碼字。舉例而言,針對64個資料位元生成8個同位位元的ECC通常可在64個資料位元中偵測到兩個位元錯誤且修正一個位元錯誤,此種ECC被稱為DED/SEC碼,意指雙錯誤偵測(double-error detecting,DED)及單錯誤修正(single-error correcting,SEC)。
額外的記憶體空間可被需要來儲存由ECC使用的核對位元。因此,可需要一或多個額外記憶體裝置(例如,一或多個額外晶片)來儲存核對位元以提供ECC能力。在一些記憶體陣列中,可將額外行添加至記憶體陣列以儲存核對位元。記憶體陣列中的一個列中所包括的資料可被稱為字元,且碼字包括字元加添加於額外行中的同位位元。若碼字包括具有K個位元的字元部分及M個同位位元,則碼字長度N將是N=K+M。舉例而言,可針對每一32位元資料字元提供8位元同位的ECC記憶體可包括40位元寬的介面以存取具有32位元資料的40位元碼字。類似地,可針對每一64位元資料字元提供8位元同位的ECC記憶體可包括72
位元寬的介面以存取具有64位元資料的72位元碼字。
根據所揭露的實施例,雙級ECC記憶體控制器可僅使用錯誤偵測保護較小字元,且使用錯誤偵測及錯誤修正二者保護較大字元。偵測碼字中的位元錯誤所需的操作少於位元錯誤修正,且如此需要較少的電路系統支援較少的操作。因此,雙級ECC記憶體控制器可達成相對小的額外負擔、將ECC增加的額外延時最小化且提供更多的平面佈置靈活性。另外,第一級ECC與第二級ECC之間共享核對位元可進一步減小額外負擔。
圖1是大體說明根據一些實施例的示例性設備的方塊圖。在圖1中所說明的實例中,設備100包括記憶體裝置102、記憶體控制器104以及一或多個處理器核心106等。
記憶體裝置102可以是用於存放數位資料的電腦組件及記錄媒介。在一個實例中,記憶體裝置102可以是處理器暫存器及快取記憶體。在一個實例中,記憶體裝置102可呈線上大容量儲存裝置形式,例如作為二級儲存器的硬驅動器。線上大容量儲存裝置可包括可呈各種形式的非揮發性記憶體,包括但不限於反及(NAND)(快閃)記憶體、例如MRAM、FRAM、RRAM及PRAM等新興記憶體。在一個實例中,記憶體裝置102可呈離線批量儲存裝置(off-line bulk storage device)形式,例如作為三級儲存器的數位視訊磁碟唯讀記憶體(Digital Video Disk-Read Only Memory,DVD-ROM)。在一個實例中,記憶體裝置102可以是動態隨機存取記憶體(DRAM)。在一個實例中,記憶體裝置102可以是靜態
隨機存取記憶體(static random access memory,SRAM)。
記憶體控制器104可被配置成提供通向記憶體裝置102的介面且管理往來於記憶體裝置102的資料流。在一個實例中,記憶體控制器104可呈單獨的晶片形式。在一個實例中,記憶體控制器104可與記憶體裝置102整合在一起。在一個實例中,記憶體控制器104可被實施於母板上或形成位於微處理器上的積體記憶體控制器(integrated memory controller,IMC)以潛在地縮短記憶體延時。
在圖1中所說明的實例中,記憶體控制器104包括第一級ECC電路108及第二級ECC電路110等。第一級ECC電路108包括第一級錯誤偵測模組112等。第一級ECC電路108被配置成在傳輸或儲存期間偵測與較小字元相關聯的錯誤。舉例而言,較小字元的寬度可以是實體陣列的寬度。在一個實例中,較小字元的寬度是64位元,此對應於實體陣列的寬度。第二級ECC電路110包括第二級錯誤偵測模組114及錯誤修正模組116等。第二級ECC電路110被配置成在傳輸或儲存期間偵測並修正與較大字元相關聯的錯誤。舉例而言,較大字元的寬度可以是邏輯資料大小(例如,快取列)的寬度。快取列是快取記憶體與主記憶體之間的資料傳送單位。在一個實例中,較大字元的寬度是512位元,此對應於快取列的寬度。應注意,「較小字元」與「較大字元」是相對的用語,且較大字元的寬度大於較小字元的寬度。
諸多方案來實施ECC已被開發,所述方案包括漢明碼
(Hamming code)、三模組化冗餘(triple modular redundancy)等。舉例而言,漢明碼是一類二進制線性區塊碼,其根據所利用的同位位元的數目而可偵測高達兩個位元錯誤/碼字,或在不偵測未經修正的錯誤的情況下修正一個位元錯誤。已開發出數個方案,但一般而言若同位位元排列於碼字內使得不同的不正確位元造成不同的錯誤結果,則可辨識錯誤位元。
當ECC被設計時,兩個碼字應足夠相異,以使得單個位元(或可能是數個位元)的損壞不會使一個有效碼字變成另一有效碼字。漢明距離兩個碼字之間的距離的量度。漢明距離是兩個碼字之間不同位元的數目。
為設計可偵測到d個單位元錯誤的碼,碼字的最小漢明距離是(d+1),原因在於d個單位元錯誤的集合不可使一個有效碼字變成另一有效碼字。另一方面,為設計可修正d個單位元錯誤的碼,碼字的最小漢明距離是(2d+1)。如此,有效碼字相差甚遠以至於即使出現d個單位元錯誤,所述d個單位元錯誤仍小於漢明距離的一半。
若碼字的字元部分具有K個位元,則漢明碼需要M個同位位元來對所述K個位元進行編碼。所述碼字具有(K+M)個位元。使用一個額外位元來指示無錯誤狀態。因此,有(K+M+1)個可能的不同位置可能出現錯誤。另一方面,M個同位位元可指示2 M 種狀態。因此,M是滿足以下不等式的最小整數。
一般而言,在雙級ECC中,在第一ECC級中,錯誤偵測方案所需的核對位元的數目是基於欲被寫入至記憶體的資料位元的數目及所述錯誤偵測方案來確定,且在第二ECC級中,錯誤修正方案所需的核對位元的數目是基於欲被寫入至記憶體的資料位元的數目、第一ECC級的核對位元的數目及所述錯誤修正方案來確定。舉例而言,若使用漢明碼且欲將64個資料位元(即,實體陣列的示例性寬度)寫入至記憶體,即意味著在以上不等式中K為64,則第一級ECC要使用7個核對位元。換言之,若K為64,則根據以上不等式計算出M為7。
在一個實例中,意指雙錯誤偵測(double-error detecting,DED)及雙錯誤修正(double-error correcting,DEC)的DED/DEC方案可被採用,。具體而言,第一級ECC電路108可使用DED保護64個資料位元(即,實體陣列的示例性寬度),且第一級使用7個核對位元,如上文所闡釋。另一方面,第二級ECC電路110可使用DEC保護512個資料位元(即,快取列的示例性寬度,且是64個資料位元的8倍)及56個核對位元(即,7個核對位元的8倍),且第二級使用20個核對位元。如此,有總共76(即,56加20)個核對位元用於512個資料位元,且在此實例中額外負擔(即,核對位元的數目對資料位元的數目的比率)是14.8%。
在另一實例中,意指單錯誤偵測(single-error detecting,SED)及單錯誤修正(single-error correcting,SEC)的SED/SEC方案可被採用,。具體而言,第一級ECC電路108可使用SED保
護64個資料位元(即,實體陣列的示例性寬度),且第一級使用1個核對位元。另一方面,第二級ECC電路110可使用SEC保護512個資料位元(即,快取列的示例性寬度,且是64個資料位元的8倍)及8個核對位元(即,1個核對位元的8倍),且第二級使用20個核對位元。如此,有總共28(即,8加20)個核對位元用於512個資料位元,且在此實例中額外負擔是5.47%。
在又一實例中,意指單錯誤偵測(SED)及雙錯誤修正(DEC)的SED/DEC方案可被採用,。具體而言,第一級ECC電路108可使用SED保護16個資料位元(即,實體陣列的另一示例性寬度),且第一級使用1個核對位元。另一方面,第二級ECC電路110可使用DEC保護512個資料位元(即,快取列的示例性寬度,且是16個資料位元的32倍)及32個核對位元(即,1個核對位元的32倍),且第二級使用20個核對位元。如此,有總共52(即,32加20)個核對位元用於512個資料位元,且在此實例中額外負擔是10.16%。
在又一實例中,意指三錯誤偵測(triple-error detecting,TED)及三錯誤修正(triple-error correcting,TEC)的TED/TEC方案可被採用,。具體而言,第一級ECC電路108可使用TED保護64個資料位元(即,實體陣列的示例性寬度),且第一級使用8個核對位元。另一方面,第二級ECC電路110可使用TEC保護512個資料位元(即,快取列的示例性寬度,且是64個資料位元的8倍)及64個核對位元(即,8個核對位元的8倍),且第二級使用
30個核對位元。如此,有總共94(即,64加30)個核對位元用於512資料位元,且在此實例中額外負擔是18.4%。
總之,雙級ECC記憶體控制器104僅使用錯誤偵測保護較小字元,且使用錯誤偵測及錯誤修正二者保護較大字元。因此,雙級ECC記憶體控制器104可達成相對小的額外負擔、將ECC增加的額外延時最小化且提供更多的平面佈置靈活性。應注意,除DED/DEC方案、SED/SEC方案、SED/DEC方案及TED/TEC方案之外,亦可視需要採用其他方案。
在圖1中所說明的實例中,處理器核心106可具有一或多個中央處理單元(central processing unit,CPU)或核心,其中每一核心可讀取並執行CPU指令,例如添加、移動、轉移(branch)、讀取、寫入等。在將多個核心整合至單個積體電路晶粒或單個晶片封裝中的多個晶粒上的情況下,多核心處理器能夠進行並行計算,因此提高總體計算速度。
圖2是說明根據一些實施例的具有雙級ECC的記憶體控制器104的示例性寫入操作的圖。一般而言,寫入操作在兩個級中發生:第一級ECC 202及第二級ECC 204;且在第一級ECC 202中生成的核對位元與資料位元一起進一步用於在第二級ECC 204中生成核對位元。具體而言,採用上文已闡述的DED/DEC。512個資料位元210將被寫入至記憶體裝置102中。512(即,64的8倍)個資料位元210被劃分成八個字元210-1至210-8,每一字元具有與實體陣列的寬度對應的64個資料位元。
八個字元210-1至210-8中的每一者被DED所保護,且64個資料位元使用7個核對位元。八個字元210-1至210-8中的每一者至輸入至相應的寫入互斥或(exclusive OR,XOR)樹群組中以生成7個第一級核對位元。具體而言,字元210-1被輸入至寫入XOR樹群組220-1中,並且7個第一級核對位元230-1被生成;字元210-2被輸入至寫入XOR樹群組220-2中,並且7個第一級核對位元230-2被生成;字元210-3被輸入至寫入XOR樹群組220-3中,並且7個第一級核對位元230-3被生成;字元210-4被輸入至寫入XOR樹群組220-4中,並且7個第一級核對位元230-4被生成;字元210-5被輸入至寫入XOR樹群組220-5中,並且7個第一級核對位元230-5被生成;字元210-6被輸入至寫入XOR樹群組220-6中,並且7個第一級核對位元230-6被生成;字元210-7被輸入至寫入XOR樹群組220-7中,並且7個第一級核對位元230-7被生成;且字元210-8被輸入至寫入XOR樹群組220-8中,並且7個第一級核對位元230-8被生成。如此,在第一級ECC 202中總共生成56個第一級核對位元230。所述56個第一級核對位元230被寫入至記憶體裝置102中。在一個實例中,所述56個第一級核對位元230被寫入至記憶體裝置102的記憶體陣列的單獨行中。
在第二級ECC 204中,56個第一級核對位元230與512個資料位元210一起受DEC保護,且568個位元(即,56個位元加512個位元)使用20個核對位元,如上文所闡釋。具體而言,
56個第一級核對位元230與512個資料位元210一起被輸入至20個寫入XOR樹240中。如此,在第二級ECC 204中總共生成20個第二級核對位元250。將所述20個第二級核對位元250寫入至記憶體裝置102中。在一個實例中,所述20個第二級核對位元250被寫入至記憶體裝置102的記憶體陣列的單獨行中。
總之,在第一級ECC 202及第二級ECC 204之後,56個第一級核對位元230及20個第二級核對位元250被生成。所述56個第一級核對位元230及所述20個第二級核對位元250與512個資料位元210一起被寫入至記憶體裝置102的記憶體陣列中。如上文所述,在DED/DEC方案的此實例中,額外負擔是14.8%。一般而言,第一數目個第一級核對位元被生成,且第二數目個第二級核對位元被生成。第一數目基於以下兩個因素被確定:(1)欲被寫入至記憶體裝置的資料位元;及(2)錯誤偵測方案。第二數目基於以下三個因素被確定:(1)欲被寫入至記憶體裝置的資料位元;(2)第一級核對位元的數目(即,第一數目);及(3)錯誤修正方案。
圖3是根據一些實施例的說明具有雙級ECC的記憶體控制器104的示例性讀取操作的圖。一般而言,讀取操作在兩個級中發生:第一級ECC 202及第二級ECC 204。每一字元在第一級ECC 202中對被核對。當任何字元皆不存在錯誤時,讀取操作被進行。當任何字元存在任何錯誤時,整個第二級碼字(即,資料位元、在寫入操作中生成的第一級核對位元及在寫入操作中生成的第二
級核對位元)被讀取,且錯誤修正模組116重構原始資料位元。
具體而言,儲存於記憶體裝置102中的512個資料位元210’被讀取。由於在寫入操作中出現錯誤或記憶體裝置102的資料隨時間推移而損壞,因此所述512個資料位元未必與最初欲被寫入至圖2中所示的記憶體裝置102中的所述512個資料位元210相同。類似地,512個資料位元210’可被劃分成8個字元210’-1至210’-8,所述8個字元中的每一者包括64個資料位元。
8個字元210’-1至210’-8與在寫入操作中生成的相應的第一級核對位元230-1至230-8一起被輸入至相應的讀取XOR樹群組320-1至320-8中以生成校正子330-1至330-8的相應群組。對於有錯誤的碼字而言,錯誤型樣被稱為(錯誤)校正子且辨識錯誤位元。漢明碼可使用校正子解碼方法對被解碼。在校正子解碼方法中,校正子藉由將所接收的碼字乘以同位核對矩陣的轉置來被計算。下文將詳細闡述同位核對矩陣。校正子計算電路可被實施為互斥或(XOR)樹的形式。每一XOR樹具有多個資料位元作為輸入。
具體而言,字元210’-1及第一級核對位元230-1被輸入至讀取XOR樹群組320-1中,並且校正子330-1的群組被生成;字元210’-2及第一級核對位元230-2被輸入至讀取XOR樹群組320-2中,並且校正子330-2的群組被生成;字元210’-3及第一級核對位元230-3被輸入至讀取XOR樹群組320-3中,並且校正子330-3的群組被生成;字元210’-4及第一級核對位元230-4被輸入
至讀取XOR樹群組320-4中,並且校正子330-4的群組被生成;字元210’-5及第一級核對位元230-5被輸入至讀取XOR樹群組320-5中,並且校正子330-5的群組被生成;字元210’-6及第一級核對位元230-6被輸入至讀取XOR樹群組320-6中,並且校正子330-6的群組被生成;字元210’-7及第一級核對位元230-7被輸入至讀取XOR樹群組320-7中,並且校正子330-7的群組被生成;且字元210’-8及第一級核對位元230-8被輸入至讀取XOR樹群組320-8中,並且校正子330-8的群組被生成。
任何有效碼字與同位核對矩陣的轉置相乘等於零。因此,若所接收的碼字中不存在錯誤,則校正子全部等於零。具體而言,當校正子330-1至330-8的全部群組皆等於零時,全部字元210’-1至210’-8被確定是有效的。當校正子330-1至330-8的群組中的任一者不等於零時,對應的字元(例如,210’-1)被確定是無效的。然而,為重構原始的512個資料位元210,整個第二級碼字(即,資料位元210’、第一級核對位元230-1至230-8及第二級核對位元250)被使用。具體而言,在第二級ECC 204中,錯誤修正模組116使用整個第二級碼字(即,資料位元210’、第一級核對位元230-1至230-8及第二級核對位元250)使用DEC來重構原始的512個資料位元210。具體而言,第二級錯誤偵測模組114可藉由對所接收的碼字與原始碼字進行比較藉此發現哪一資料位元被反轉(即,自0至1或自1至0)來辨識錯誤。然後,錯誤修正模組116藉由基於由第二級錯誤偵測模組114辨識的錯誤的位置將資
料位元的邏輯值反相來修正錯誤。
圖4A是說明根據一些實施例的示例性記憶體陣列402i的圖。一般而言,第一級ECC 202用於較小的資料寬度,所述較小的資料寬度通常是實體記憶體陣列的寬度。在圖4A中所說明的實例中,八個記憶體陣列402i(i=1、2、3、4、5、6、7、8)對應於圖2中的八個64位元字元210-1至210-8。每一記憶體陣列402i可儲存資料位元區412中的64個資料位元210-i且儲存核對位元區414中的7個核對位元230-i。在上文所述的寫入操作中,讀取XOR樹群組220-i生成7個核對位元230-i,並將64個資料位元210-i與所述7個核對位元230-i一起儲存於記憶體陣列402i中。在上文所述的讀取操作中,自記憶體陣列402i讀取所儲存的71個位元(包括64個資料位元210’-i及7個核對位元230-i)。讀取XOR樹群組320-i藉由將所接收的碼字乘以同位核對矩陣的轉置來生成校正子330-i的群組。當校正子330-i的群組全部等於零時,64個資料位元210’-i被確定是有效的(即,64個資料位元210’-i與64個資料位元210-i相同)。當校正子330-i的群組中有任一者不等於零時,則64個資料位元210’-i被確定是無效的(即,64個資料位元210’-i與64個資料位元210-i不相同,且在第二級ECC 204中使用錯誤修正)。如此,八個記憶體陣列402i(i=1、2、3、4、5、6、7、8)實現讀取操作及寫入操作。
圖4B是說明根據一些實施例的兩個示例性記憶體陣列402a及402b的圖。在圖4B中所說明的實例中,兩個記憶體陣列
402a及402b中的每一者對應於圖2中的四個64位元字元。具體而言,記憶體陣列402a對應於四個64位元字元210-j(j=1、3、5、7);記憶體陣列402b對應於另外四個64位元字元210-k(k=2、4、6、8)。一般而言,記憶體陣列402a及記憶體陣列402b二者被存取四次。如此,對兩個記憶體陣列402a及402b的四次存取各自可儲存512(即,512=2×4×64)個資料位元,此等效於圖4A中所示的對八個記憶體陣列存取一次的情況。使用多次存取會使得相同數目個資料位元的讀取操作及寫入操作所需的記憶體陣列較少。記憶體陣列402a及402b可分別儲存資料位元區412中的64個資料位元210-j及210-k且分別儲存核對位元區414中的7個核對位元230-j及230-k。以記憶體陣列402a為例,且記憶體陣列402b的操作類似於記憶體陣列402a的操作。在上文所述的寫入操作中,讀取XOR樹群組220-j生成7個核對位元230-j(j=1、3、5、7),且將64個資料位元210-j與所述7個核對位元230-j一起儲存於記憶體陣列402a中。在上文所述的讀取操作中,自記憶體陣列402a讀取所儲存的71位元(包括64個資料位元210’-j及7個核對位元230-j)。讀取XOR樹群組320-j生成校正子330-j的群組。當校正子330-j的群組全部等於零時,64個資料位元210’-j被確定是有效的(即,所述64個資料位元210’-j與所述64個資料位元210-j相同)。當校正子330-j的群組中有任一者不等於零時,則64個資料位元210’-j被確定是無效的(即,所述64個資料位元210’-j與所述64資料位元210-j不相同,且在第二級ECC
204中使用錯誤修正)。如此,可藉由對兩個記憶體陣列402a及402b存取多次(在此實例中,是四次)來實現讀取操作及寫入操作。應注意,對一個記憶體陣列進行八次存取亦可實現讀取操作及寫入操作。如此,對一個記憶體陣列存取八次亦可儲存512(即,512=8×1×64)個資料位元,此等效於圖4A中所示的八個記憶體陣列被存取一次的情況。使用多次存取會使得相同數目個資料位元的讀取操作及寫入操作所需的記憶體陣列較少。
圖5是說明根據一些實施例的在第一級ECC 202與第二級ECC 204之間共享核對位元的資料位元210’以及核對位元230及250’的圖。一般而言,同位矩陣P用於生成核對位元且是自同位核對矩陣H導出。ECC的同位核對矩陣H是闡述碼字的組元必須滿足的線性關係的矩陣。同位核對矩陣H可用於決定特定的向量是否為碼字。同位核對矩陣H亦可用於解碼演算法中。生成矩陣G是其列形成線性碼的基礎的矩陣。碼字是生成矩陣G的列的全部線性組合。同位矩陣P是在生成矩陣G的輔助下自同位核對矩陣H導出。核對位元藉由將資料位元乘以同位矩陣P被生成。
對於圖2中所示的雙級ECC而言,第一級同位核對矩陣H1用於第一級ECC 202,且第二級同位核對矩陣H2用於第二級ECC 204。第二級同位核對矩陣H2的系統形式H2’的一些列可藉由第一級同位核對矩陣H1的系統形式H1’的列的線性組合被重構,因此由於一些第二級核對位元可自H1’被建構,所述一些第二級核對位元無須被儲存。如此,由於系統形式H2’的列的重構,第一級
ECC 202的核對位元與第二級ECC 204的核對位元是共享的。第一級ECC 202與第二級ECC 204之間共享核對位元可進一步減小額外負擔。將參考圖6A及圖6B詳細地闡述第一級ECC 202與第二級ECC 204之間共享核對位元的方法。
在圖5中所說明的實例中,記憶體裝置102中儲存有512個資料位元210’。記憶體裝置102中儲存有56個第一級核對位元。由於第一級ECC 202與第二級ECC 204之間共享核對位元,因此儲存於記憶體裝置102中的第二級核對位元250’少於20個位元。
圖6A是說明根據一些實施例的在第一級ECC 202與第二級ECC 204之間共享核對位元的方法的流程圖。在步驟602處,第一級ECC 202的H矩陣H1被生成,並且H1被轉換成系統形式H1’。H1’對應於小的資料寬度。在圖2中所示DED的實例中,資料寬度是64位元且核對位元寬度是7位元。在步驟604處,第二級ECC 204的H矩陣H2被生成,並且H2被轉換成系統形式H2’。H2’對應於大的資料寬度。在圖2中所示DEC的實例中,資料寬度是568位元且核對位元寬度是20位元。在步驟606處,H2’當中可自H1’導出的列被辨識。在一個實例中,可自H1’導出四個列。在步驟608處,與H1’的全部列及H2’當中無法自H1’導出的列相關聯的核對位元被儲存。在一個實例中,與H1’的全部列相關聯的56個核對位元被儲存,且與H2’當中無法自H1’導出的列相關聯的16個核對位元被儲存。
圖6B是說明根據一些實施例的圖6A所示步驟606的具體步驟的流程圖。在步驟692處,H2’的行被分類以找到具有匹配的且對齊的零的最大N個列。在一個實例中,N是4。方法繼續進行至步驟694或步驟696。在步驟694處,H1’的列被用來導出N個列中的其餘行(即非零元素)。在圖2的實例中,其餘行由H1’的8個群組組成。作為另外一種選擇,在步驟696處,H1’的列的線性組合被用來導出N個列中的其餘行(即,非零元素)。然後在步驟698處,所述線性組合被設計至錯誤修正模組116中。如此,此N個列可自H1’被導出,且無須儲存與此N個列相關聯的核對位元。
根據一些所揭露實施例,提供一種操作耦接至記憶體裝置的記憶體控制器的方法。所述方法包括:基於第一錯誤偵測方案生成與欲被寫入至記憶體裝置中的資料位元對應的第一多個第一級核對位元;以及基於第一錯誤修正方案生成與資料位元及第一多個第一級核對位元二者對應的第二多個第二級核對位元。
根據一些所揭露實施例,操作耦接至記憶體裝置的記憶體控制器的方法更包括:將資料位元儲存於記憶體裝置中。
根據一些所揭露實施例,操作耦接至記憶體裝置的記憶體控制器的方法更包括:將第一多個第一級核對位元及第二多個第二級核對位元儲存於記憶體裝置中。
根據一些所揭露實施例,操作耦接至記憶體裝置的記憶體控制器的方法更包括:讀取所儲存的資料位元;讀取第一多個第
一級核對位元;以及基於所儲存的資料位元及第一多個第一級核對位元計算第一多個校正子。
根據一些所揭露實施例,操作耦接至記憶體裝置的記憶體控制器的方法更包括:若第一多個校正子中的任一者皆不等於零,藉由使用第一錯誤修正方案基於所儲存的資料位元、第一多個第一級核對位元及第二多個第二級核對位元來修正所儲存的資料位元。
根據一些所揭露實施例,操作耦接至記憶體裝置的記憶體控制器的方法更包括:基於第一多個第一級核對位元及第二多個第二級核對位元生成第三多個第二級核對位元。
根據一些所揭露實施例,提供一種記憶體系統。記憶體系統包括:記憶體裝置,被配置成儲存欲被寫入至記憶體裝置的資料位元;以及記憶體控制器。記憶體控制器包括:第一級錯誤修正碼(ECC)電路,耦接至記憶體裝置,其中第一級ECC電路具有第一錯誤偵測方案且被配置成基於資料位元及第一錯誤偵測方案生成第一多個第一級核對位元,第一多個第一級核對位元用於第一級錯誤偵測;以及第二級ECC電路,耦接至記憶體裝置,其中第二級ECC電路具有第一錯誤修正方案且被配置成基於資料位元、第一多個第一級核對位元及第一錯誤修正方案生成第二多個第二級核對位元,第二多個第二級核對位元用於第二級錯誤修正。
根據一些所揭露實施例,第一錯誤偵測方案是雙錯誤偵測(DED)。第一錯誤修正方案是雙錯誤修正(DEC)。
根據一些所揭露實施例,第一錯誤偵測方案是單錯誤偵測(SED)。第一錯誤修正方案是單錯誤修正(SEC)。
根據一些所揭露實施例,第一錯誤偵測方案是單錯誤偵測(SED)。第一錯誤修正方案是雙錯誤修正(DEC)。
根據一些所揭露實施例,記憶體裝置是磁性隨機存取記憶體(MRAM)、鐵電隨機存取記憶體(FRAM)、電阻式隨機存取記憶體(RRAM)或相變隨機存取記憶體(PRAM)中的一者。
根據一些所揭露實施例,第一級錯誤修正碼電路更被配置成:讀取所儲存的資料位元;讀取第一多個第一級核對位元;以及基於所儲存的資料位元及第一多個第一級核對位元計算第一多個校正子。
根據一些所揭露實施例,第二級錯誤修正碼電路更被配置成當第一多個校正子中的任一者皆不等於零時,藉由使用第一錯誤修正方案基於所儲存的資料位元、第一多個第一級核對位元及第二多個第二級核對位元來修正所儲存的資料位元。
根據一些所揭露實施例,記憶體控制器被配置成基於第一多個第一級核對位元及第二多個第二級核對位元生成第三多個第二級核對位元。
根據一些所揭露實施例,資料位元被劃分成多個字元,且多個字元中的每一字元對應於第一多個第一級核對位元的子集。
根據一些所揭露實施例,藉由對記憶體裝置的一個記憶體陣列進行多次存取來對多個字元進行寫入及讀取。
根據一些所揭露實施例,藉由對記憶體裝置的多個記憶體陣列進行一次存取來對多個字元進行寫入及讀取。
根據一些所揭露實施例,提供一種在第一級錯誤修正碼(ECC)與第二級ECC之間共享核對位元的方法。所述方法包括:在第一級ECC中生成與第一錯誤偵測方案相關聯的第一級同位核對矩陣;將第一級同位核對矩陣轉換成第一級同位核對矩陣的系統形式;在第二級ECC中生成與第一錯誤修正方案相關聯的第二級同位核對矩陣;將第二級同位核對矩陣轉換成第二級同位核對矩陣的系統形式;辨識第二級同位核對矩陣的系統形式當中能夠自第一級同位核對矩陣的系統形式導出的列;以及儲存與第一級同位核對矩陣的系統形式的所有列以及第二級同位核對矩陣的系統形式當中無法自第一級同位核對矩陣的系統形式導出的列相關聯的核對位元。
根據一些所揭露實施例,其中辨識第二級同位核對矩陣的系統形式當中能夠自第一級同位核對矩陣的系統形式導出的列的步驟更包括:對第二級同位核對矩陣的系統形式的行進行分類,以找到具有匹配的且對齊的零的最大N個列;以及使用第一級同位核對矩陣的系統形式的列來導出N個列中的其餘行。
根據一些所揭露實施例,辨識第二級同位核對矩陣的系統形式當中能夠自第一級同位核對矩陣的系統形式導出的列更包括:對第二級同位核對矩陣的系統形式的行進行分類,以找到具有匹配的且對齊的零的最大N個列;使用第一級同位核對矩陣的系
統形式的列的線性組合來導出N個列中的其餘行;以及在第二級錯誤修正碼中將線性組合設計至第一錯誤修正方案中。
本揭露概述了各種實施例,以使熟習此項技術者可更好地理解本揭露的各態樣。熟習此項技術者應瞭解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎來施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應意識到該些等效構造並不背離本揭露的精神及範圍,且其可在不背離本揭露的精神及範圍的情況下在本文中做出各種改變、替代及更改。
100:設備
102:記憶體裝置
104:記憶體控制器/雙級ECC記憶體控制器
106:處理器核心
108:第一級ECC電路
110:第二級ECC電路
112:第一級錯誤偵測模組
114:第二級錯誤偵測模組
116:錯誤修正模組
Claims (12)
- 一種操作耦接至記憶體裝置的記憶體控制器的方法,包括:基於第一錯誤偵測方案生成對應於欲被寫入至所述記憶體裝置的資料位元的第一多個第一級核對位元;以及基於第一錯誤修正方案生成對應於所述資料位元及所述第一多個第一級核對位元兩者的第二多個第二級核對位元。
- 如請求項1所述操作耦接至記憶體裝置的記憶體控制器的方法,更包括:將所述資料位元儲存於所述記憶體裝置中。
- 如請求項2所述操作耦接至記憶體裝置的記憶體控制器的方法,更包括:將所述第一多個第一級核對位元及所述第二多個第二級核對位元儲存於所述記憶體裝置中。
- 如請求項3所述操作耦接至記憶體裝置的記憶體控制器的方法,更包括:讀取所儲存的所述資料位元;讀取所述第一多個第一級核對位元;以及基於所儲存的所述資料位元及所述第一多個第一級核對位元計算第一多個校正子。
- 如請求項4所述操作耦接至記憶體裝置的記憶體控制器的方法,更包括: 若所述第一多個校正子中的任一者皆不等於零,藉由使用所述第一錯誤修正方案基於所儲存的所述資料位元、所述第一多個第一級核對位元及所述第二多個第二級核對位元來修正所儲存的所述資料位元。
- 如請求項1所述操作耦接至記憶體裝置的記憶體控制器的方法,更包括:基於所述第一多個第一級核對位元及所述第二多個第二級核對位元生成第三多個第二級核對位元。
- 一種記憶體系統,包括:記憶體裝置,被配置成儲存欲被寫入至所述記憶體裝置的資料位元;以及記憶體控制器,所述記憶體控制器包括:第一級錯誤修正碼電路,耦接至所述記憶體裝置,其中所述第一級錯誤修正碼電路具有第一錯誤偵測方案且被配置成基於所述資料位元及所述第一錯誤偵測方案生成第一多個第一級核對位元,所述第一多個第一級核對位元用於第一級錯誤偵測;以及第二級錯誤修正碼電路,耦接至所述記憶體裝置,其中所述第二級錯誤修正碼電路具有第一錯誤修正方案且被配置成基於所述資料位元、所述第一多個第一級核對位元及所述第一錯誤修正方案生成第二多個第二級核對位元,所述第二多個第二級核對位元用於第二級錯誤修正。
- 如請求項7所述的記憶體系統,其中所述第一級錯 誤修正碼電路更被配置成:讀取所儲存的所述資料位元;讀取所述第一多個第一級核對位元;以及基於所儲存的所述資料位元及所述第一多個第一級核對位元計算第一多個校正子。
- 如請求項8所述的記憶體系統,其中所述第二級錯誤修正碼電路更被配置成:當所述第一多個校正子中的任一者皆不等於零時,藉由使用所述第一錯誤修正方案基於所儲存的所述資料位元、所述第一多個第一級核對位元及所述第二多個第二級核對位元來修正所儲存的所述資料位元。
- 一種在第一級錯誤修正碼與第二級錯誤修正碼之間共享核對位元的方法,包括:在所述第一級錯誤修正碼中生成與第一錯誤偵測方案相關聯的第一級同位核對矩陣;將所述第一級同位核對矩陣轉換成所述第一級同位核對矩陣的系統形式;在所述第二級錯誤修正碼中生成與第一錯誤修正方案相關聯的第二級同位核對矩陣;將所述第二級同位核對矩陣轉換成所述第二級同位核對矩陣的系統形式;辨識所述第二級同位核對矩陣的所述系統形式當中能夠自所 述第一級同位核對矩陣的所述系統形式導出的列;以及儲存與所述第一級同位核對矩陣的所述系統形式的所有列以及所述第二級同位核對矩陣的所述系統形式當中無法自所述第一級同位核對矩陣的所述系統形式導出的列相關聯的核對位元。
- 如請求項10所述在第一級錯誤修正碼與第二級錯誤修正碼之間共享核對位元的方法,其中所述辨識所述第二級同位核對矩陣的所述系統形式當中能夠自所述第一級同位核對矩陣的所述系統形式導出的列的步驟更包括:對所述第二級同位核對矩陣的所述系統形式的行進行分類,以找到具有匹配的且對齊的零的最大N個列;以及使用所述第一級同位核對矩陣的所述系統形式的列來導出所述N個列中的其餘行。
- 如請求項10所述在第一級錯誤修正碼與第二級錯誤修正碼之間共享核對位元的方法,其中所述辨識所述第二級同位核對矩陣的所述系統形式當中能夠自所述第一級同位核對矩陣的所述系統形式導出的列更包括:對所述第二級同位核對矩陣的所述系統形式的行進行分類,以找到具有匹配的且對齊的零的最大N個列;使用所述第一級同位核對矩陣的所述系統形式的列的線性組合來導出所述N個列中的其餘行;以及在所述第二級錯誤修正碼中將所述線性組合設計至所述第一錯誤修正方案中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/925,361 US11438015B2 (en) | 2020-07-10 | 2020-07-10 | Two-level error correcting code with sharing of check-bits |
US16/925,361 | 2020-07-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI742955B true TWI742955B (zh) | 2021-10-11 |
TW202203237A TW202203237A (zh) | 2022-01-16 |
Family
ID=77021065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109143218A TWI742955B (zh) | 2020-07-10 | 2020-12-08 | 操作記憶體控制器的方法、記憶體系統以及共享核對位元的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11438015B2 (zh) |
EP (1) | EP3937019A1 (zh) |
JP (1) | JP2022016395A (zh) |
CN (1) | CN113555056B (zh) |
TW (1) | TWI742955B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2023214969A1 (en) | 2022-02-04 | 2024-07-25 | Nippon Steel Corporation | Wound Core Producing Apparatus and Wound Core Producing Method |
JP2023118319A (ja) * | 2022-02-15 | 2023-08-25 | 富士電機株式会社 | 処理回路 |
US12013752B2 (en) * | 2022-06-16 | 2024-06-18 | Advanced Micro Devices, Inc. | Host-level error detection and fault correction |
CN118351923A (zh) * | 2023-01-09 | 2024-07-16 | 长鑫存储技术有限公司 | 存储器及其测试方法、存储器系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201133500A (en) * | 2009-12-24 | 2011-10-01 | Hynix Semiconductor Inc | Semiconductor memory system having ECC circuit and method of controlling thereof |
TW201331946A (zh) * | 2011-12-22 | 2013-08-01 | Sandisk Technologies Inc | 使用錯誤校正碼編碼以驗證錯誤校正碼解碼操作 |
US20190287640A1 (en) * | 2018-03-16 | 2019-09-19 | Toshiba Memory Corporation | Memory system |
US20200036396A1 (en) * | 2014-12-19 | 2020-01-30 | Micron Technology, Inc. | Apparatuses and methods for pipelining memory operations with error correction coding |
US20200104205A1 (en) * | 2018-09-28 | 2020-04-02 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory error detection and correction |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525838A (en) * | 1983-02-28 | 1985-06-25 | International Business Machines Corporation | Multibyte error correcting system involving a two-level code structure |
US5268908A (en) * | 1991-06-19 | 1993-12-07 | Storage Technology Corporation | Low data delay triple coverage code apparatus for on-the-fly error correction |
US5987627A (en) * | 1992-05-13 | 1999-11-16 | Rawlings, Iii; Joseph H. | Methods and apparatus for high-speed mass storage access in a computer system |
US6275965B1 (en) * | 1997-11-17 | 2001-08-14 | International Business Machines Corporation | Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords |
US6662333B1 (en) * | 2000-02-04 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Shared error correction for memory design |
US7653862B2 (en) * | 2005-06-15 | 2010-01-26 | Hitachi Global Storage Technologies Netherlands B.V. | Error detection and correction for encoded data |
US7562283B2 (en) * | 2005-12-27 | 2009-07-14 | D.S.P. Group Ltd. | Systems and methods for error correction using binary coded hexidecimal or hamming decoding |
US7895502B2 (en) * | 2007-01-04 | 2011-02-22 | International Business Machines Corporation | Error control coding methods for memories with subline accesses |
KR100852191B1 (ko) * | 2007-02-16 | 2008-08-13 | 삼성전자주식회사 | 에러 정정 기능을 가지는 반도체 메모리 장치 및 에러 정정방법 |
US8234545B2 (en) * | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
JP4538034B2 (ja) * | 2007-09-26 | 2010-09-08 | 株式会社東芝 | 半導体記憶装置、及びその制御方法 |
US8112699B2 (en) * | 2008-02-14 | 2012-02-07 | Atmel Rousset S.A.S. | Error detecting/correcting scheme for memories |
US8539303B2 (en) * | 2010-12-20 | 2013-09-17 | Intel Corporation | Low overhead error correcting code protection for stored information |
WO2012151001A1 (en) * | 2011-04-30 | 2012-11-08 | Rambus Inc. | Configurable, error-tolerant memory control |
US10127101B2 (en) * | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US9912355B2 (en) * | 2015-09-25 | 2018-03-06 | Intel Corporation | Distributed concatenated error correction |
US9940186B2 (en) * | 2015-12-22 | 2018-04-10 | Nxp Usa, Inc. | Memory controller and method of operating a memory controller |
US20190042358A1 (en) * | 2018-02-06 | 2019-02-07 | Intel Corporation | Shared parity check for correcting memory errors |
TWI714277B (zh) * | 2018-09-28 | 2020-12-21 | 台灣積體電路製造股份有限公司 | 記憶體錯誤偵測及校正 |
KR102579014B1 (ko) * | 2018-11-06 | 2023-09-15 | 삼성전자주식회사 | 에러 정정 코드 디코더, 반도체 메모리 장치 및 메모리 시스템 |
KR20200074467A (ko) * | 2018-12-17 | 2020-06-25 | 삼성전자주식회사 | 에러 정정 코드 회로, 반도체 메모리 장치 및 메모리 시스템 |
-
2020
- 2020-07-10 US US16/925,361 patent/US11438015B2/en active Active
- 2020-12-08 TW TW109143218A patent/TWI742955B/zh active
-
2021
- 2021-05-08 CN CN202110501444.3A patent/CN113555056B/zh active Active
- 2021-07-09 JP JP2021113916A patent/JP2022016395A/ja active Pending
- 2021-07-09 EP EP21184798.3A patent/EP3937019A1/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201133500A (en) * | 2009-12-24 | 2011-10-01 | Hynix Semiconductor Inc | Semiconductor memory system having ECC circuit and method of controlling thereof |
TW201331946A (zh) * | 2011-12-22 | 2013-08-01 | Sandisk Technologies Inc | 使用錯誤校正碼編碼以驗證錯誤校正碼解碼操作 |
US20200036396A1 (en) * | 2014-12-19 | 2020-01-30 | Micron Technology, Inc. | Apparatuses and methods for pipelining memory operations with error correction coding |
US20190287640A1 (en) * | 2018-03-16 | 2019-09-19 | Toshiba Memory Corporation | Memory system |
US20200104205A1 (en) * | 2018-09-28 | 2020-04-02 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory error detection and correction |
Also Published As
Publication number | Publication date |
---|---|
TW202203237A (zh) | 2022-01-16 |
JP2022016395A (ja) | 2022-01-21 |
CN113555056B (zh) | 2024-05-03 |
US20220014213A1 (en) | 2022-01-13 |
CN113555056A (zh) | 2021-10-26 |
US20220368354A1 (en) | 2022-11-17 |
US11438015B2 (en) | 2022-09-06 |
EP3937019A1 (en) | 2022-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI742955B (zh) | 操作記憶體控制器的方法、記憶體系統以及共享核對位元的方法 | |
KR101668972B1 (ko) | 오류 검출 및 정정 장치 및 방법 | |
US11762732B2 (en) | Memory error detection and correction | |
US10191805B2 (en) | Semiconductor memory devices and memory systems including the same | |
US7644348B2 (en) | Method and apparatus for error detection and correction | |
US7107507B2 (en) | Magnetoresistive solid-state storage device and data storage methods for use therewith | |
KR102303961B1 (ko) | 메모리 에러 검출 및 정정 | |
TWI808153B (zh) | 錯誤偵測及校正電路 | |
TWI684857B (zh) | 快閃記憶體裝置及快閃記憶體儲存管理方法 | |
Pae et al. | Minimal aliasing single-error-correction codes for dram reliability improvement | |
Lee et al. | ECMO: ECC Architecture Reusing Content-Addressable Memories for Obtaining High Reliability in DRAM | |
Das et al. | Online correction of hard errors and soft errors via one-step decodable OLS codes for emerging last level caches | |
US12126358B2 (en) | Two-level error correcting code with sharing of check-bits | |
Li et al. | Improving DRAM Reliability Using a High Order Error Correction Code | |
Hemaram et al. | Hard Error Correction in STT-MRAM | |
Lavanya et al. | Detection of Multiple Cell Upsets in Memory for Enhanced Protection | |
Duangthong et al. | Two-Dimensional Error Correction Code for Spin-Transfer Torque Magnetic Random-Access Memory (STT-MRAM) Caches | |
Lefter et al. | LDPC-Based Adaptive Multi-Error Correction for 3D Memories | |
Wu et al. | ECC TECHNIQUES FOR ENABLING DRAM CACHES WITH OFF-CHIP TAG ARRAYS. |