TWI792682B - 帶有糾錯及數據刷洗電路的記憶體系統 - Google Patents

帶有糾錯及數據刷洗電路的記憶體系統 Download PDF

Info

Publication number
TWI792682B
TWI792682B TW110142674A TW110142674A TWI792682B TW I792682 B TWI792682 B TW I792682B TW 110142674 A TW110142674 A TW 110142674A TW 110142674 A TW110142674 A TW 110142674A TW I792682 B TWI792682 B TW I792682B
Authority
TW
Taiwan
Prior art keywords
data
memory
ecc
circuit
scrubbing
Prior art date
Application number
TW110142674A
Other languages
English (en)
Other versions
TW202230386A (zh
Inventor
宇 陸
潔予 林
Original Assignee
美商若響半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商若響半導體股份有限公司 filed Critical 美商若響半導體股份有限公司
Publication of TW202230386A publication Critical patent/TW202230386A/zh
Application granted granted Critical
Publication of TWI792682B publication Critical patent/TWI792682B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/1515Reed-Solomon codes
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B61/00Magnetic memory devices, e.g. magnetoresistive RAM [MRAM] devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/161Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本發明係為一種糾錯記憶體系統及操作該記憶體系統之方法。在一些實施例中,記憶體系統包括:數據記憶體;ECC記憶體;及數據刷洗電路,其電耦合至ECC記憶體及數據記憶體。數據刷洗電路係可配置對接收刷洗數據命令作出回應,用以糾正數據記憶體中之錯誤。用以糾錯之碼字長度可比數據記憶體正常存取期間使用之字長度長。在一些實施例中,。在一些實施例中,記憶體系統包括可糾錯之多層儲存單元(MLC)陣列。

Description

帶有糾錯及數據刷洗電路的記憶體系統
本發明一般相關運算記憶體,更具體地,本發明相關用於運算記憶體糾錯的裝置及方法。
磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、電阻式隨機存取記憶體(RRAM)和鐵電隨機存取記憶體(FRAM)是一些非揮發性記憶體技術,可比FLASH具有更快的數據寫入速度和更高的重寫耐久性。例如,高效能MRAM可用於邊緣人工智慧運算(Edge-AI)應用中,其在模型優化後會需要複雜的數據結構。
為要達成高效能,像MRAM的非揮發性記憶體存在許多獨特的電路挑戰。尤其,在較高電壓讀取操作下,讀取效能會因讀取干擾錯誤受到限制,以及寫入效能會在更高電壓操作下因電擊穿損傷(hard break down)而受到限制。另一障礙可能是在較高溫度下或較高溫度事件期間需要更高階的糾錯才能達成長期數據保留。在這些情況下,可使用二位元糾正電路,但電路對於讀取和寫入操作會增添額外的延遲。
此外,這些非揮發性RAM技術和傳統揮發性記憶體技術中的一些技術可能對環境干擾敏感。例如,DRAM中的數據對高溫外向電離輻射敏感,以及MRAM中的數據可能會因高溫或大磁場而產生錯誤。
功率可能是電子裝置設計的主要限制因素,並且隨著記憶體密度的持續增加,儲存裝置會消耗總功率的部分不斷增加。減少記憶體操作功率消耗對於數據保留和讀寫操作均會增加錯誤率。
為達成適當的糾錯強度可能需要耗用大面積的冗餘電路。例如,使用低延遲的漢明碼(hamming code),可能需要五個糾錯碼(ECC)位元以保護8位元字免於單個位元錯誤。作為另一範例,使用Bose、Chaudhuri和Hocquenghem(BCH)碼或低密度奇偶校驗(LDPC)碼,可利用較少的ECC檢查位元以保護較大數據塊(例如1024位元或更多位元)。但 是這些ECC碼需要較複雜的編碼和解碼操作,並且可能會影響效能。
為降低成本以及為實現記憶體內運算(PIM),可使用多層儲存單元(MLC)裝置(例如浮閘或電荷捕捉FLASH裝置、eDRAM電容器、RRAM、PCM、類比記憶體)藉由以多重狀態或連續的類比特性表示矩陣被乘數來執行記憶體中運算操作。然而,大部分這些裝置會在操作過程中出現漂移,會逐漸改變矩陣被乘數的值。如果裝置漂移超過臨界值,則無法採用簡單地“讀取及恢復”操作以保持正確的數值。
本發明涉及一種帶糾錯功能之記憶體系統以及操作該等記憶體系統的方法。在一些實施例中,記憶體系統包括:數據記憶體;ECC記憶體;以及數據刷洗電路,其電耦合到ECC記憶體和數據記憶體。數據刷洗電路可配置對接收刷洗數據命令作出回應,用以糾正數據記憶體中的錯誤。用於糾錯的碼字長度可比數據記憶體正常存取期間使用的字長度長。在一些實施例中,記憶體系統包括與第一位元錯誤率相關聯的第一記憶體電路,以及與第二位元錯誤率相關聯的第二記憶體電路。在一些實施例中,記憶體系統包括可糾錯多層儲存單元(MLC)陣列。
在一些實施例中,記憶體系統包括:數據記憶體;ECC記憶體;以及數據刷洗電路,其電耦合到ECC記憶體和數據記憶體。
在一些實施例中,數據刷洗電路係配置對接收刷洗數據命令作出回應,用以糾正數據記憶體中的錯誤。
在一些實施例中,糾錯用的碼字長度比數據記憶體正常存取期間使用的字長度長。
在一些實施例中,數據刷洗電路包括數據緩衝器、數據刷洗控制器、ECC編碼電路,以及ECC解碼電路。
在一些實施例中,數據刷洗電路係配置在存取數據記憶體的同時用以糾正數據記憶體中的錯誤。
在一些實施例中,記憶體系統尚包括環境干擾感測器,係配置用以檢測環境條件,以及其中數據刷洗電路係基於檢測到的環境條件以產生刷洗數據命令。
在一些實施例中,環境條件包括溫度和磁場中的至少一 者。
在一些實施例中,數據刷洗電路係配置用以檢測已知數據中的變化,以及基於變化的檢測以產生刷洗數據命令。
在一些實施例中,記憶體系統尚包括計時器電路,計時器電路係配置用以:追蹤經過的時間;以及判定經過的時間是否大於計時臨界值,並且根據經過的時間大於計時臨界值的判定以產生刷洗數據命令。
在一些實施例中,ECC記憶體包括多個分區,並且數據記憶體包括多個記憶體位址範圍,各分區對應到一個在數據記憶體中的記憶體位址範圍。
在一些實施例中,ECC記憶體包括一個具有多個ECC位元的分區,並且ECC位元的數目係基於與數據刷洗演算法相關聯的ECC編碼方法。
在一些實施例中,ECC記憶體包括一組暫存器,其中:各暫存器對應到一ECC碼字,各ECC碼字對應到一個在數據記憶體中的區段,並且各暫存器儲存該區段的狀態。
在一些實施例中,選自數據記憶體和ECC記憶體中的至少一者包括磁性隨機存取記憶體(MRAM)。
在一些實施例中,選自數據記憶體和ECC記憶體中的至少一者包括記憶單元,其包括磁隧道結(MTJ),與具有位元錯誤率在10-12至10-2之間的記憶單元相比,具有選自以下特性中的一者:尺寸減小、矯頑磁場(coercive field)減弱、磁性各向異性減低,以及飽和磁化強度降低。
在一些實施例中,與具有位元錯誤率在10-12至10-2之間的記憶單元相比,MJT具有選自以下特性中的二者:尺寸減小、矯頑磁場場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在一些實施例中,數據記憶體包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM),或嵌入式DRAM(eDRAM)。
在一些實施例中,數據刷洗電路或主機係配置用以判定數據記憶體是否受到保護,以及ECC記憶體係配置成:根據數據記憶體受到保護的判定,用以儲存ECC檢查位元;以及根據數據記憶體未受保護的判定,用以儲存運算數據。
在一些實施例中,數據記憶體和ECC記憶體係包括在不同記憶體電路中。
在一些實施例中,數據記憶體和ECC記憶體係包括在同一記憶體電路中。
在一些實施例中,記憶體系統係電耦合到主機裝置。
在一些實施例中,數據記憶體和ECC記憶體包括記憶單元,其包括有尺寸在20奈米至200奈米之間的MTJ,以及寬長比在1至200之間的MOS電晶體。
在一些實施例中,數據刷洗電路係配置用以:接收數據保護命令;用於待保護數據中的各資料字,對接收保護命令作出回應:識別與資料字相關聯的數據碼字的位址;根據該位址判定該資料字是否在數據記憶體中;對判定該資料字在數據記憶體中作出回應,從數據記憶體中讀取該資料字;對判定該資料字不在數據記憶體中作出回應:接收該資料字;並將該資料字寫入數據記憶體;對該資料字執行ECC編碼運算;基於ECC編碼運算以產生數據碼字;在該位址將數據碼字寫入數據記憶體;基於ECC編碼運算以產生ECC檢查位元;將產生的ECC檢查位元寫入ECC記憶體中的對應分區。
在一些實施例中,數據刷洗電路係配置用以:接收刷洗數據命令;以及用於各待刷洗資料字,對接收刷洗數據命令作出回應:識別:數據碼字的起始位址和對應的ECC儲存分區;從數據記憶體中讀取與起始位址相關聯的資料字;從ECC記憶體中讀取與對應的ECC記憶體分區相關聯的ECC檢查位元;根據資料字和ECC檢查位元以執行ECC解碼運算;基於ECC解碼運算以判定資料字是否包括錯誤;對判定該資料字中包括錯誤作出回應,用資料字中的可糾錯位元取代錯誤位元,其中包括有可糾錯位元的資料字係刷洗後的資料字;對判定資料字未包括錯誤作出回應,放棄以資料字中的可糾錯位元取代錯誤位元,其中資料字係刷洗後的資料字;判定主機是否請求刷洗後的資料字;對判定主機請求刷洗後的數據作出回應,將刷洗後的資料字輸出到記憶體控制器,其電耦合到主機;對判定主機未請求刷洗後的數據作出回應,放棄將刷洗後的資料字輸出到記憶體控制器。
在一些實施例中,揭示一種操作記憶體系統的方法,該記憶體系統包括:數據記憶體;ECC記憶體;以及數據刷洗電路,其電耦合到ECC記憶體和數據記憶體,該方法包括:對接收刷洗數據命令作出回應,使用數據刷洗電路以糾正數據記憶體中的錯誤。
在一些實施例中,用以糾錯的碼字長度比數據記憶體正常存取期間使用的字長度長。
在一些實施例中,數據刷洗電路包括數據緩衝器、數據刷洗控制器、ECC編碼電路,以及ECC解碼電路。
在一些實施例中,該方法尚包括在數據記憶體中糾正錯誤的同時存取數據記憶體。
在一些實施例中,該方法尚包括使用環境干擾感測器以檢測環境條件;以及基於檢測的環境條件以產生刷洗數據命令。
在一些實施例中,環境條件包括溫度和磁場中的至少一者。
在一些實施例中,該方法尚包括檢測已知數據中的變化;以及基於變化的檢測以產生刷洗數據命令。
在一些實施例中,該方法尚包括追蹤經過的時間;判定經過的時間是否大於計時臨界值,以及根據經過的時間大於計時臨界值的判定以產生刷洗數據命令。
在一些實施例中,ECC記憶體包括多個分區,以及數據記憶體包括多個記憶體位址範圍,各分區對應到一個在數據記憶體中的記憶體位址範圍。
在一些實施例中,ECC記憶體包括一個分區,其具有多個與數據刷洗演算法相關聯的ECC位元,該方法尚包括使用該等ECC位元以執行ECC編碼方法。
在一些實施例中,ECC記憶體包括一組暫存器,其中:各暫存器對應到一ECC碼字,各ECC碼字對應到一個在數據記憶體中的區段,以及各暫存器儲存該區段的狀態。
在一些實施例中,選自數據記憶體和ECC記憶體中的至少一者包括磁性隨機存取記憶體(MRAM)。
在一些實施例中,選自數據記憶體和ECC記憶體中的至少一者包括記憶單元,其包括有磁隧道結(MTJ),與具有位元錯誤率在10-12至10-2之間的記憶單元相比,具有選自以下特性中的一者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在一些實施例中,與具有位元錯誤率10-12至10-2之間的記憶單元相比,MTJ具有選自以下特性中的二者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在一些實施例中,數據記憶體包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM),或嵌入式DRAM(eDRAM)。
在一些實施例中,該方法尚包括判定數據記憶體是否受到糾錯保護;以及根據數據記憶體受到糾錯保護的設定,將ECC檢查位元儲存在ECC記憶體中;以及根據數據記憶體未受糾錯保護的設定,將運算數據儲存在ECC記憶體中。
在一些實施例中,數據記憶體和ECC記憶體係包括在不同記憶體電路中。
在一些實施例中,數據記憶體和ECC記憶體係包括在同一記憶體電路中。
在一些實施例中,記憶體系統係電耦合到主機裝置。
在一些實施例中,數據記憶體和ECC記憶體包括記憶單元,其包括有尺寸在20奈米至200奈米之間的MTJ,以及寬長比在1至200之間的MOS電晶體。
在一些實施例中,該方法尚包括接收數據保護命令;用於待保護數據中的各資料字,對接收保護命令作出回應:識別與資料字相關聯的數據碼字的位址;根據該位址以判定該資料字是否在數據記憶體中;對判定該資料字在數據記憶體中作出回應,從數據記憶體中讀取該資料字;對判定該資料字不在數據記憶體中作出回應:將該資料字寫入數據記憶體;對該資料字執行ECC編碼運算;基於ECC編碼運算以產生數據碼字;在該位址將數據碼字寫入數據記憶體;基於ECC編碼運算以產生ECC檢查位元;將產生的ECC檢查位元寫入ECC記憶體中的對應分區。
在一些實施例中,該方法尚包括:用於各待刷洗資料字, 對接收刷洗數據命令作出回應:識別:數據碼字的起始位址和對應的ECC記憶體分區;以及從數據記憶體中讀取與起始位址相關聯的資料字;從ECC記憶體中讀取與對應的ECC記憶體分區相關聯的ECC檢查位元;基於資料字和ECC檢查位元以執行ECC解碼運算;基於ECC解碼運算以判定資料字是否包括錯誤;對判定資料字包括錯誤作出回應,用資料字中的可糾錯位元取代錯誤位元,其中包括有可糾錯位元的資料字係刷洗後的資料字;對判定資料字未包括錯誤作出回應,放棄用資料字中的可糾錯位元取代錯誤位元,其中資料字係刷洗後的資料字;判定主機是否請求刷洗後的資料字;對判定主機請求刷洗後的數據作出回應,將刷洗後的資料字輸出到記憶體控制器,其電耦合到主機;以及對判定主機未請求刷洗後的數據作出回應,放棄將刷洗後的資料字輸出到記憶體控制器。
在一些實施例中,記憶體系統係包括在選自以下項目中的一者中:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置,機器人,以及無人機。
在一些實施例中,記憶體系統包括:第一記憶體電路,其與第一位元錯誤率相關聯;第二記憶體電路,其與第二位元錯誤率相關聯,其中第一位元錯誤率大於第二位元錯誤率;以及儲存在第一和第二記憶體電路中的資料字,其中:資料字包括與第一位元錯誤率相關聯的第一分區,以及與第二位元錯誤率相關聯的第二分區,資料字的第一分區係儲存在第一記憶體電路中,資料字的第二分區係儲存在第二記憶體電路中。
在一些實施例中,記憶體系統尚包括數據刷洗電路,其電耦合到第一記憶體電路和第二記憶體電路,其中:數據刷洗電路控制第一記憶體電路以使第一錯誤率減少到第三錯誤率,數據刷洗電路控制第二記憶體電路以使第二錯誤率減少到第四錯誤率,以及第一位元錯誤率的減少幅度大於第二位元錯誤率的減少幅度。
在一些實施例中,第一記憶體電路包括第一記憶單元,其包括有具有第一尺寸的第一磁隧道結(MTJ)和具有第一通道寬長(W/L)比的第一MOS電晶體,第二記憶體電路包括第二記憶單元,其包括有具有 第二尺寸的第二MTJ和具有第二W/L比的第二MOS電晶體,第一尺寸大於第二尺寸,以及第一W/L比大於第二W/L比。
在一些實施例中,第一記憶體電路包括記憶單元,其包括有尺寸在40奈米至200奈米之間的MTJ和W/L比在2至200之間的MOS電晶體。
在一些實施例中,第二記憶體電路包括記憶單元,其包括有尺寸在20奈米至100奈米之間的MTJ和W/L比在1至100之間的MOS電晶體。
在一些實施例中,第一記憶體電路使用第一讀取電壓、第一感測時間和第一字線(WL)電壓,第二記憶體電路使用第二讀取電壓、第二感測時間和第二WL電壓,第一讀取電壓大於第二讀取電壓,第一感測時間大於第二感測時間,以及第一WL電壓大於第二WL電壓。
在一些實施例中,第一記憶體電路使用第一寫入電壓、第一寫入時間和第一WL電壓.第二記憶體電路使用第二寫入電壓、第二寫入時間和第二WL電壓,第一寫入電壓大於第二寫入電壓,第一寫入時間大於第二寫入時間,以及第一WL電壓大於第二WL電壓。
在一些實施例中,在浮點格式中,第一分區包括符號位元、指數位元和尾數位元的較高階部分。
在一些實施例中,在整數格式中,第一分區包括符號位元和較高階位元。
在一些實施例中,在浮點格式中,第二分區包括尾數位元的較低階部分。
在一些實施例中,在整數格式中,第二分區包括較低階位元。
在一些實施例中,揭示一種操作記憶體系統的方法,該記憶體系統包括第一記憶體電路和第二記憶體電路,該方法包括:基於第一位元錯誤率以判定待儲存在記憶體系統中的資料字的第一分區;基於第二位元錯誤率以判定待儲存在記憶體系統中的資料字的第二分區,第一位元錯誤率大於第二位元錯誤率;將資料字的第一分區儲存在第一記憶體電路中;將資料字的第二分區儲存在第二記憶體電路中,其中:第一記憶體電 路係與第一位元錯誤率相關聯,以及第二記憶體電路係與第二位元錯誤率相關聯。
在一些實施例中,該方法尚包括控制第一記憶體電路以使第一錯誤率減少到第三錯誤率;以及控制第二記憶體電路以使第二錯誤率減少到第四錯誤率,其中第一位元錯誤率的減少幅度大於第二位元錯誤率的減少幅度。
在一些實施例中,第一記憶體電路包括第一記憶單元,其包括有具有第一尺寸的第一MTJ和具有第一通道W/L比的第一MOS電晶體,第二記憶體電路包括第二記憶單元,其包括有具有第二尺寸的第二MTJ和具有第二W/L比的第二MOS電晶體,第一尺寸大於第二尺寸,以及第一W/L比大於第二W/L比。
在一些實施例中,第一記憶體電路包括記憶單元,其包括有尺寸在40奈米至200奈米之間的MTJ和W/L比在2至200之間的MOS電晶體。
在一些實施例中,第二記憶體電路包括記憶單元,其包括有尺寸在20奈米至100奈米之間的MTJ和W/L比在1至100之間的MOS電晶體。
在一些實施例中,該方法尚包括在第一記憶體電路中使用第一讀取電壓、第一感測時間和第一WL電壓;以及在第二記憶體電路中使用第二讀取電壓、第二感測時間和第二WL電壓,其中:第一讀取電壓大於第二讀取電壓,第一感測時間大於第二感測時間,以及第一WL電壓大於第二WL電壓。
在一些實施例中,該方法尚包括在第一記憶體電路中使用第一寫入電壓、第一寫入時間和第一WL電壓;以及在第二記憶體電路中使用第二寫入電壓、第二寫入時間和第二WL電壓,其中:第一寫入電壓大於第二寫入電壓,第一寫入時間大於第二寫入時間,以及第一WL電壓大於第二WL電壓。
在一些實施例中,在浮點格式中,第一分區包括符號位元、指數位元和尾數位元的較高階部分。
在一些實施例中,在整數格式中,第一分區包括符號位元 和較高階位元。
在一些實施例中,在浮點格式中,第二分區包括尾數位元的較低階部分。
在一些實施例中,在整數格式中,第二分區包括較低階位元。
在一些實施例中,記憶體系統係包括在選自以下項目中的一者中:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置,機器人,以及無人機。
在一些實施例中,一種記憶體系統包括:數據輸入;多層儲存單元(MLC)陣列;寫入電路,其電耦合到MLC陣列和數據輸入;格雷碼至二進制解碼器電路,其電耦合到寫入電路;讀出電路,其電耦合到MLC陣列;二進制至格雷碼編碼器電路,其電耦合到讀出電路和數據輸入;記憶體電路,係配置用以儲存ECC檢查位元;ECC編碼器,其電耦合到記憶體電路和二進制至格雷碼編碼器電路;ECC解碼器,其電耦合到記憶體電路和格雷碼至二進制編碼器電路並配置用以輸出恢復的數據;以及數據刷洗控制器,係配置用以控制記憶體系統中的數據恢復。
在一些實施例中,MLC陣列包括記憶體單元電路,其具有超過二個穩定物理狀態。
在一些實施例中,記憶體單元電路係選自以下項目中的一者:組織為NOR單元的浮閘FLASH單元、組織為NAND單元的浮閘FLASH單元、組織為NOR單元的電荷捕捉FLASH單元、組織為NAND單元的電荷捕捉FLASH單元、相變記憶體(PCM)單元,以及電阻性記憶體(RRAM)單元。
在一些實施例中,ECC編碼器和解碼器在選自以下項目中的一者中使用:漢明碼、BCH碼、里德-所羅門碼,以及LDPC碼。
在一些實施例中,記憶體電路與MLC陣列係位在不同積體電路上。
在一些實施例中,記憶體電路係位在MLC陣列的一預定 分區中。
在一些實施例中,數據刷洗控制器係配置對環境干擾的檢測作出回應或對從主機接收到命令作出回應,用以在預定間隔啟動數據刷洗操作。
在一些實施例中,一種對MLC進行數據刷洗的方法包括:從MLC讀取數據,數據係以二進制碼或類比值表示;將數據轉換到格雷碼;從配置用以儲存ECC檢查位元的記憶體電路中讀取對應的檢查位元數據;運算可糾正錯誤在格雷碼形式的數據中的位置并加以糾正;將糾正後的數據轉換到二進制碼或糾正後的類比值;以及藉由寫入電路將糾正後的數據重寫到MLC中的數據上。
在一些實施例中,MLC陣列包括記憶體單元電路,其具有超過二個穩定物理狀態。
在一些實施例中,記憶體單元電路係選自以下項目中的一者:組織為NOR單元的浮閘FLASH單元、組織為NAND單元的浮閘FLASH單元、組織為NOR單元的電荷捕捉FLASH單元、組織為NAND單元的電荷捕捉FLASH單元、相變記憶體(PCM)單元,以及電阻性記憶體(RRAM)單元。
在一些實施例中,該方法尚包括用選自以下項目中的一者進行ECC編碼和解碼:漢明碼、BCH碼、里德-所羅門碼,以及LDPC碼。
在一些實施例中,記憶體電路與MLC陣列係位在不同積體電路上。
在一些實施例中,記憶體電路係位在MLC陣列的預定分區中。
在一些實施例中,該方法尚包括對環境干擾的檢測作出回應或對從主機接收到命令作出回應,以預定間隔啟動數據刷洗操作。
在一些實施例中,記憶體系統係包括在選自以下項目的一者中:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置、機器人,以及無人機。
100,500,800,1110:記憶體系統
110:數據刷洗電路
111:數據緩衝器
112:ECC運算引擎
113,820:數據刷洗控制器
120:數據記憶體
130,230:ECC記憶體
140:環境干擾感測器
150:計時器
160:主機
170,1120:記憶體控制器
220:數據記憶體
221:ECC碼字
231:ECC檢查位元分區
300,400,700,1000:方法
302,304,306,308,310,312a,312b,314,316,318,320,322,402,404,406a,406b,408,410,412,414,416,418,420,422,424 702,704,706,7081002,1004,1006,1008,1010,1012,1014:步驟
502,504,506,814:記憶體電路
508,600:資料字
510,512,514 602,604:資料字分區
516:位址
802:數據輸入
804:MLC或類比記憶體陣列
806:寫入電路
808:格雷碼至二進制解碼器電路
810:讀出電路
812:二進制至格雷碼編碼器電路
816:ECC編碼器
818:ECC解碼器
902:二進制值
904:格雷碼值
906,908:曲線
1100:系統
1130,1202:處理器
1140:直接記憶體存取控制器
1150:周邊介面
1160:即時計時器
1170:其他電路
1180:匯流排數據總線
1200:裝置
1204:通訊裝置
1206:輸入裝置
1208:輸出裝置
1210:儲存體
1212:軟體
以下將參考附圖並藉由實施例以描述本發明,俾審查委員能更進一步了解本發明的技術特徵,圖中:圖1係根據實施例描繪包括有記憶體系統的系統;圖2係根據實施例描繪數據記憶體和ECC記憶體;圖3係根據實施例描繪操作記憶體系統的方法;圖4係根據實施例描繪操作記憶體系統的方法;圖5係根據實施例描繪記憶體系統;圖6係根據實施例描繪資料字分區;圖7係根據實施例描繪操作記憶體系統的方法;圖8係根據實施例描繪記憶體系統;圖9係根據實施例描繪數據恢復;圖10係根據實施例描繪操作記憶體系統的方法;圖11係根據實施例描繪包括有記憶體系統的系統;及圖12係根據實施例描繪包括有記憶體系統的運算裝置範例。
在以下的實施例說明中,參考附圖作為說明的一部分,以舉例方式顯示可實行的特定實施例。不背離所揭示實施例的範圍,當然可使用其他實施例,並且在結構上作出變化。
圖1描繪包括有記憶體系統100的記憶體系統。在一些實施例中,記憶體系統100是電耦合到主機160和記憶體控制器170。在一些範例中,記憶體系統100可在單個晶粒上包括超過1GB的儲存空間。
在一些範例中,主機160或記憶體控制器170可產生刷洗數據命令以啟動在記憶體系統100中對數據記憶體的數據刷洗,或產生保護命令以啟動在記憶體系統100中對數據記憶體的保護。在一些範例中,可藉由主機160或記憶體控制器170將產生啟動刷洗數據命令的條件程式化。在一些範例中,可藉由主機160或記憶體控制器170將產生啟動保護命令的條件程式化。
作為示範優點,記憶體系統100可達成高效率的糾錯和數據刷洗。例如,如以下的說明,記憶體系統100的示範實施例與未使用所 揭示刷洗數據命令的記憶體系統相比,可對特定條件(如改變中的環境)作出回應以減低二到四倍的功率消耗,且不需降低實質效能或增加面積。未使用所揭示刷洗數據命令或所揭示保護命令的記憶體系統會在可能不需要刷洗或保護(如位元錯誤率足以滿足系統要求)時進行數據刷洗或保護。這類記憶體系統可能因為不加區別地保護或刷洗數據(如僅在系統開機或關機期間)而造成操作之低效率(如功率消耗較高、速度較慢)。在一些範例中,由於效率提高,可能放寬MRAM使用自旋轉移力矩(STT)用於寫入操作的設計要求。作為另一範例,可使用較為簡單的MTJ製造過程(如可降低裝置製造成本)以減少數據保留錯誤。作為又一範例,使用記憶體系統100,MRAM裝置可由於要求放寬而縮小線性尺寸多達70%。
本文所使用的“刷洗數據命令”是配置用以啟動數據記憶體的數據刷洗操作的命令,根據滿足特定條件的判定以產生刷洗數據命令並將其傳輸到數據刷洗電路。這類特定條件可包括正常操作期間所識別的條件,例如環境條件、時間流逝,以及已知數據中的變化(如本文的說明)。正常操作包括(但不限於)讀取和寫入操作、列啟動和預充電操作、更新操作、扇區寫入和拭除操作、缺陷修復操作,以及耗損平均(wear-leveling)操作。當未滿足這些特定條件時,不會產生刷洗數據命令,用以避免不必要的數據刷洗。例如,在傳統記憶體系統中,可在系統開機或關機期間自動刷洗數據。在所揭示記憶體系統中,可僅對接收到刷洗數據命令作出回應以刷洗數據;開機或關機不足以導致刷洗數據命令的產生。
本文中使用的“保護命令”是配置用以啟動數據記憶體的數據保護的命令。根據滿足特定條件的判定以產生保護命令並將其傳輸到數據刷洗電路。當未滿足這些特定條件時,將不會產生保護命令,用以避免不必要的編碼。例如,在傳統的記憶體系統中,可藉由預設以保護數據。在所揭示記憶體系統中,可僅對接收到保護命令才作出回應以保護數據。
例如,包括在記憶體系統100中的高效能MRAM可高效率地進行保護或刷洗,並且更適用在人工智慧邊緣運算(edge-AI)(如智能音箱、行車記錄器、無人機、機器人、自動駕駛汽車)或類神經網路應用,它們都要求更快速和更高效率的記憶體(如高頻寬和低潛期、類神經網路模型壓縮後仍具高效能、在高溫仍具高效能、不間斷的數據存取)。寫入 機制為非確定性的記憶體技術會面臨高位元錯誤率(BER)之困擾。記憶體系統100使用所揭示數據刷洗和保護方法,可有利地在系統如自動駕駛汽車中能達成更穩固的操作。
記憶體系統100可包括數據刷洗電路110、數據記憶體120,以及ECC記憶體130。在一些實施例中,數據記憶體120是電腦系統的隨機存取記憶體(RAM)。在一些實施例中,數據記憶體120和ECC記憶體130是非揮發性RAM。
在一些實施例中,數據刷洗電路110執行數據刷洗而不影響數據記憶體120的讀取或寫入存取。藉由在記憶體數據存取的同時執行數據保護或數據刷洗,可減少記憶體錯誤(如磁隧道結(MTJ)錯誤),不需增加關鍵電路的延遲(如以較高讀取和寫入速度來刷洗數據,在不影響額定讀取和寫入速度的情況下刷洗數據)。例如,延遲減少可允許記憶體系統以每秒TB的頻寬操作。
在一些實施例中,數據刷洗電路110包括ECC解碼器電路和本埠暫存器,用以暫存在碼字內與ECC碼相關聯的目前位置。在一些實施例中,數據記憶體120係劃分為多個子電路,通常稱為記憶庫。各記憶庫可配置用以獨立於其他記憶庫而操作。
作為範例,在保護或數據刷洗操作期間,記憶體系統100可從主機(如人工智慧邊緣運算(edge-AI)系統)接收數據存取命令。當進行中的數據保護或數據刷洗操作在一記憶庫執行時,數據存取命令可與另一數據記憶庫上的操作(如讀取數據、寫入數據)相關聯。在這種情況下,進行中的數據保護或數據刷洗操作可與數據存取同時進行。
當進行中的數據保護或數據刷洗操作是在同一數據記憶庫上執行時,數據存取命令可與數據記憶庫上的操作(如讀取數據、寫入數據)相關聯。在這種情況下,數據刷洗控制器113可暫停數據保護或數據刷洗操作,並將數據記憶庫的控制讓給數據存取操作如讀取操作或寫入操作。數據存取操作完成後,數據刷洗控制器取回數據記憶庫的控制,並且暫停的數據保護或數據刷洗操作從中斷之前在ECC碼字的位置(如對應位址)再開始。在一些範例中,在這段期間,數據刷洗控制器113可在另一記憶庫上執行數據保護或數據刷洗操作。
在一些範例中,數據刷洗電路或主機(如中央處理單元(CPU)、圖形處理單元(GPU)、單晶片系統(SoC)、可程式處理器、特殊應用積體電路,或微控制器)是配置用以判定數據記憶體是否受到保護(如數據刷洗電路或主機檢查ECC記憶體中的暫存器,用以查看對應區段是否受到糾錯保護),以及ECC記憶體是配置成根據數據記憶體受到保護的判定以儲存ECC檢查位元,以及根據數據記憶體未受保護的判定以儲存運算數據。例如,若數據記憶體中的運算數據未受保護(如不需要ECC),則ECC記憶體可用以儲存額外的運算數據。如圖顯示,數據刷洗電路可電耦合到ECC記憶體和數據記憶體。作為示範優點,若未期望產品會在惡劣的環境中使用(如不在高溫或高磁場環境中的穿戴電子裝置),則可將ECC記憶體的數據儲存容量釋出到主機系統。
在一些範例中,ECC記憶體是配置成在第一時間用以儲存運算數據,以及對保護數據命令的啟動作出回應,更新ECC記憶體以儲存ECC檢查位元。在這些範例中,可將運算數據移到數據記憶體中的空白區域、系統中的另一儲存裝置,或透過數據網路移到遠端儲存裝置。若這些都不可行,則記憶體系統可向主機傳送一錯誤信息。
在一些實施例中,數據記憶體和ECC記憶體是包括在不同記憶體電路中。例如,數據記憶體和ECC記憶體是包括在不同晶片上。在一些實施例中,數據記憶體和ECC記憶體是包括在同一記憶體電路中。例如,數據記憶體和ECC記憶體是包括在同一晶片上。作為另一範例,數據記憶體和ECC記憶體是包括在同一記憶體陣列中;例如,數據記憶體是包括在陣列的第一部分中,以及ECC記憶體是包括在陣列的第二部分中。
藉由達成本文所述高效率糾錯和數據刷洗的好處,記憶單元可配置用以增強重寫耐久性或效能、減低功率消耗,或這些期望特性的組合。這不需減低記憶體系統的錯誤率便可達成(如所揭示系統的高效率糾錯和數據刷洗可至少抵消與這些期望特性相關聯的遞增錯誤率)。
例如,寫入操作的電壓位準可降低5至50%,在不需減低記憶體系統的錯誤率的情況下,增強記憶單元的重寫耐久性並減低功率消耗(如在不用額外的電路設計、減低寫入操作期間的故障機率的情況 下,寫入電壓或寫入時間足以減輕裝置與電路不匹配和/或隨機STT效應)。作為另一範例,記憶單元的讀取操作的電壓位準可增加5至50%,或者讀取時間可減少5至50%,在不減低記憶體系統的錯誤率的情況下,增強讀取效能(如在不用額外的電路設計的情況下,讀取電壓或讀取時間足以減輕裝置與電路的不匹配,可減少讀取干擾錯誤)。在一些範例中,用於1MB陣列,讀取效能可提高到每秒超過7GB。
在一些實施例中,數據記憶體可包括一部分磁性隨機存取記憶體(MRAM)。在一些實施例中,ECC記憶體亦可包括一部分MRAM。在一些範例中,選自數據記憶體和ECC記憶體中的至少一者採用之記憶單元,其包括有磁隧道結(MTJ),與具有位元錯誤率在10-12至10-2之間的記憶單元相比,具有選自以下特性中的一者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。在一些範例中,數據記憶體和ECC記憶體包括記憶單元,其包括有尺寸在20奈米至200奈米之間的MTJ和寬長比在1至200之間的MOS電晶體。
在一些實施例中,數據記憶體可包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM),或嵌入式DRAM(eDRAM)。在一些實施例中,ECC記憶體可包括SRAM、DRAM,或eDRAM。例如,SRAM,DRAM或eDRAM可包括記憶單元,其以次微米(如28奈米及其以下)技術實作,具有位元錯誤率在10-16至10-10之間。因此,記憶體系統100可有利地允許SRAM、DRAM或eDRAM工藝技術縮到較小的技術節點,不需犧牲功率、面積,或效能或軟錯誤率(如讀取干擾、寫入錯誤、保留錯誤)等方面的優化。此外,使用記憶體系統100,在較小技術節點的SRAM、DRAM或eDRAM可在更寬的溫度區間工作以及更耐輻射。
在一些實施例中,數據刷洗電路是配置對接收刷洗數據命令作出回應,用以糾正記憶體中的錯誤。當數據記憶體可能不需要刷洗時(如位元錯誤率(如可用位元錯誤率(UBER)足以滿足系統要求)),未利用所揭示刷洗數據命令的記憶體系統會刷洗數據。這類記憶體系統可能因為不加區別地刷洗數據而效率降低(如功率消耗較高,速度減慢)。藉由包括有數據刷洗電路配置對接收刷洗數據命令作出回應以糾正數據記憶體中的錯誤,可有效率地刷洗數據,避免不必要的刷洗。
在一些實施例中,用於糾錯的碼字長度比數據記憶體正常存取期間使用的字長度長。例如,在正常存取期間的字組是ECC碼字的一部分,以便這些字組受到ECC保護。意即,在正常讀取操作期間(如存取正常存取字部分)不會使用到整個ECC碼字。有很多方式用以處理寫入操作,例如,碼字長度可具有8192位元的長度,而未編碼字可具有64位元的長度。
在一些實施例中,數據記憶體120劃分成複數頁,各頁具有ECC碼字長度的大小(如8192位元)。當主機(如人工智慧邊緣運算(edge-AI)系統)發送帶有資料字(如長度為64位元的字)的寫入命令時,數據刷洗控制器113會使用各頁中包含的額外位元(如頁標記位元)將資料字的目標頁標記為“未受保護”。當數據刷洗控制器113在“未受保護,’頁上啟動數據刷洗操作時,不會立即使用對應ECC記憶體130中的ECC檢查位元數據。相反地,數據刷洗控制器會先執行保護操作以產生與新頁數據相對應的一組ECC檢查位元,並在執行數據刷洗操作之前將頁標記位元從“未受保護”更新為“受保護”。
作為示範優點,在糾錯期間較長的碼字長度會提增效率,亦即需要較少數量的ECC檢查位元即可將原始位元錯誤率(RBER)修正為所需的UBER。因此,記憶體系統的尺寸可減小並且成本可降低。
在一些實施例中,數據刷洗電路110包括數據緩衝器111、ECC運算引擎112,以及數據刷洗控制器113。數據刷洗電路尚可配置用以使用與碼字長度相關聯的碼字以糾正數據記憶體中的錯誤。
例如,當啟動數據刷洗命令時,從數據記憶體120中讀出與ECC碼相關聯的所有資料字(如ECC頁),並且從ECC記憶體130中讀出與該ECC頁相關聯的ECC檢查位元。透過數據緩衝器111將資料字和ECC檢查位元發送到ECC運算引擎112。在一些範例中,數據緩衝器111可配置為先進先出(FIFO)記憶體。在一些範例中,當ECC運算引擎112正執行ECC解碼操作時,可暫停數據記憶體120中讀取資料字的正常數據存取(如從主機或記憶體控制器來的讀取請求)。在ECC運算引擎112已將ECC頁解碼後,檢測到可糾正錯誤。可將ECC運算引擎檢測到的錯誤的數量和位置發送到數據刷洗控制器113。藉由將正確的數據寫回到數 據記憶體120中的對應位置(如使用數據刷洗控制器)以糾正所有檢測到的錯誤。
圖2係根據實施例描繪數據記憶體和ECC記憶體。在一些實施例中,ECC記憶體230包括多個分區,以及數據記憶體包括多個記憶體位址範圍,各分區對應到一個在數據記憶體中的記憶體位址範圍。例如,ECC記憶體包括ECC檢查位元分區231,以及數據記憶體包括ECC碼字221。ECC檢查位元分區231可對應到與ECC碼字221相關聯的一個記憶體位址範圍。
在一些實施例中,ECC檢查位元分區包括多個ECC位元,並且ECC位元的數量係基於與數據刷洗演算法相關聯的ECC編碼方法。例如,數據刷洗演算法是Bose、Chaudhuri和Hocquenghem(BCH)碼和低密度奇偶校驗(LDPC)碼中的一者。在一範例中,在BCH(8640、8192、32)碼中,448個ECC位元是與8192位元中的各ECC碼字(如ECC頁)相關聯,並且能糾正ECC碼字中的錯誤多達32個。作為示範優點,為實作此編碼方案大約會需要耗用5.2%的面積以儲存ECC檢查位元,相較之下,在64位元字上使用2位元ECC的系統中需耗用超過20%的面積。
例如,以下說明BCH編碼的範例。可使用數據刷洗電路來執行BCH編碼和解碼。n-k維狀態向量R(t)=(rn-k-1(t),rn-k-1(t),...,r1(t),r0(t))T,其中r i (t)代表第i個提醒暫存器在時間t的狀態,而u(t)表示在時間t的單個位元輸入。R(t+1)可表示為:(1)R(t+1)=AR(t)+bu(t),其中矩陣A為
Figure 110142674-A0305-02-0020-1
以及向量b為(3)b=(g n-k-1,g n-k-1,...,g1,g0)T遞歸地,R(t+p)可計算為 (4)R(t+p)=A p R(t)+(A p-1 b,A p-2 b,...,b)‧(u(t),u(t+1),...,u(t+p-1))T=A p R(t)+B p U p (t).
在一些實施例中,ECC記憶體包括一組暫存器。各暫存器對應到一個ECC碼字。各ECC碼字對應到數據記憶體中的一個區段。各暫存器儲存該區段的狀態。例如,暫存器可用以儲存頁標記位元。
在一些實施例中,數據記憶體220大體上與數據記憶體120相似,並且ECC記憶體230大體上與ECC記憶體130相似。雖然使用區塊描繪數據記憶體和ECC記憶體,但不背離本發明的範圍,數據記憶體和ECC記憶體當然可包括在一或多個記憶體陣列中。
在一些實施例中,記憶體系統100包括環境干擾感測器140,其配置用以檢測環境條件並基於檢測到的環境條件以產生刷洗數據命令。在一些實施例中,環境條件包括選自溫度和磁場中的至少一者。在一些實施例中,環境干擾感測器是包括在數據刷洗控制器(如數據刷洗控制器113)中。
例如,環境干擾感測器檢測到溫度達到臨界值(如與臨界位元錯誤率相關聯的臨界溫度)。對檢測到溫度達到臨界值作出回應,數據刷洗控制器產生刷洗數據命令以啟動數據記憶體的數據刷洗。
作為另一範例,環境干擾感測器檢測到磁場達到臨界值(如與臨界位元錯誤率相關聯的臨界磁場強度)。對檢測到磁場達到臨界值作出回應,數據刷洗控制器產生刷洗數據命令以啟動數據記憶體的數據刷洗。
在一些實施例中,數據刷洗電路是配置用以檢測已知數據(如主機或記憶體系統100已知的數據,預定數據(如具有0和1交替的棋盤數據))中的變化,並基於變化的檢測以產生刷洗數據命令。例如,MRAM可對高磁場(如大於100至1000奧斯特的磁場)敏感,並且高磁場可增加與已知數據相關聯的錯誤機率。
作為另一範例,記憶體可能對高溫(如超過攝氏150度的溫度)敏感,並且高溫可增加與記憶體相關聯的錯誤機率。環境干擾感測 器可檢測溫度達到特定溫度臨界值,並啟動刷洗數據命令的產生以糾正因高溫造成的錯誤數據。
雖然使用磁場和溫度作為示範參數用於可能增加與記憶體相關聯的錯誤機率的環境條件檢測,但是環境干擾感測器當然也可檢測其他條件。例如,環境干擾感測器可檢測電離輻射,電離輻射可導致基於電荷的記憶體電路丟失數據。在另一範例中,環境干擾感測器可檢測機械應力偏移。
作為示範優點,感測器和可編程閉環控制可管理記憶體(如MRAM)以減輕由高溫、溫度波動、磁場或其他干擾造成的影響。因此,在不添加補償電路的情況下,可在較高溫度下或較寬溫度范圍下操作並增加的耐久性。例如,大約在室溫,環境干擾感測器可判定不需要任何數據刷洗(如0%的記憶體操作用於刷洗)。而在攝氏125度時,一個具有60%固有保留能力(intrinsic retention capability)的記憶體裝置(包括MTJ在內)可能只要2%額外讀寫操作即可刷洗全部數據。對照之下,其他系統會需要大於20%的額外操作才能在類似情況下糾正錯誤。
在一些實施例中,記憶體系統100包括計時器電路150,配置用以追蹤經過的時間並判定經過的時間是否大於計時臨界值,以及根據經過的時間大於計時臨界值的判定以產生刷洗數據命令。例如,記憶體的位元錯誤率(BER)與時間成比例地增加(如BER是累積的),並且計時臨界值對應到臨界BER(如系統BER要求)。計時器電路150追蹤在開始時間(即ECC檢查位元生成的時間)之後的時間流逝(如在1微秒至100小時之間),並且可在數據記憶體累積的BER超出ECC方法無法糾正的程度之前啟動刷洗數據命令的產生。在一些實施例中,計時器電路150是包括在數據刷洗控制器(如數據刷洗控制器113)中。
圖3係根據實施例描繪操作記憶體系統的方法300。方法300包括步驟302,接收保護數據的命令。例如,從數據刷洗電路110、主機160或記憶體控制器170接收保護命令。作為另一範例,在判定數據記憶體需要保護(如達到溫度、磁場、計時臨界值,位元錯誤率臨界值)後接收保護命令。
作為示範優點,記憶體系統可達成高效率的糾錯和數據刷 洗。例如,與不利用所揭示刷洗數據命令或所揭示保護命令的記憶體系統相比,記憶體系統100的示範實施例不用降低實質效能或增加面積即可減低四倍的功率消耗。不利用所揭示保護命令的記憶體系統會在可能不需要保護(如位元錯誤率已經滿足系統要求時)時也會保護數據。這類的記憶體系統因為不加區別地保護數據,因此可能效率不佳(如功率消耗較高,速度減慢)。例如,當沒有接收到保護命令時,數據刷洗電路或儲存ECC檢查位元的記憶體的一部分或全部便會關機。藉由使用保護數據命令,可有效率地保護數據,避免不必要的保護。
在一些實施例中,對接收到保護命令作出回應,執行方法300以用於待保護數據中的各資料字(步驟304)。例如,各待保護資料字可以是數據記憶體120的一部分,例如數據記憶體中具有較敏感位元錯誤率的一部分。作為另一範例,各待保護資料字可以是數據記憶體120的整體。在一些實施例中,循序地保護多個字。在一些實施例中,並行地保護多個字。
在一些實施例中,方法300包括步驟306,識別位址以用於與該資料字相關聯的數據碼字。例如,保護命令包括與待保護數據相關聯的位址範圍。作為另一範例,由主機識別與ECC碼字221相關聯的位址(如主機判定記憶體中對系統功能較為重要的部分)。
在一些實施例中,方法300包括步驟308,根據位址以判定資料字是否在數據記憶體中。例如,保護命令中加上一位元用以指示資料字是否在數據記憶體中。作為另一範例,數據刷洗電路110判定待保護資料字是否儲存在數據記憶體120中。
在一些實施例中,方法300包括步驟310,對判定資料字在數據記憶體中作出回應,從數據記憶體中讀取資料字。例如,讀取的數據是儲存在緩衝記憶體中。作為另一範例,數據刷洗電路110判定待保護資料字是儲存在數據記憶體120中,而從數據記憶體120讀取待保護資料字。
在一些實施例中,方法300包括步驟312,對判定資料字不在數據記憶體中作出回應,接收資料字(步驟312a)並將資料字寫入數據記憶體(步驟312b)。例如,數據刷洗電路110判定資料字未儲存在數據記 憶體120中而將資料字寫入數據記憶體120。在一些實施例中,待寫入和受保護的資料字是由主機160提供。
在一些實施例中,方法300包括步驟314,在資料字上執行ECC編碼運算。例如,基於數據刷洗演算法,將待保護資料字根據與數據刷洗演算法相關聯的ECC編碼運算進行編碼。
在一些實施例中,方法300包括步驟316,基於ECC編碼運算以產生數據碼字。例如,基於ECC編碼運算以產生ECC碼字221。
在一些實施例中,方法300包括步驟318,在該位址將數據碼字寫入數據記憶體。例如,在該位址將ECC碼字221寫入數據記憶體220。
在一些實施例中,方法300包括步驟320,根據ECC編碼運算以產生ECC檢查位元。例如,根據ECC編碼運算,產生與ECC檢查位元分區221相關聯的ECC檢查位元。
在一些實施例中,方法300包括步驟322,將所產生的ECC檢查位元寫入ECC記憶體中的對應分區。例如,將ECC檢查位元寫入ECC檢查位元分區221。在一些實施例中,在完成保護命令的指示去保護數據記憶體之後,發送完成信號以通知主機。
在一些實施例中,在積體電路的封裝操作之前執行方法300以保護寫入積體電路的記憶體中的數據。作為示範優點,使用方法300的記憶體系統在用於需要長期儲存或需要經過標準封裝方法過程(例如260℃,90秒)的時候會別具優勢。例如,儲存在非揮發性記憶體如MRAM和PCM中的數據在封裝操作後會具有較高的錯誤率。
在一些實施例中,在積體電路的長時間儲存之後執行方法300以保護寫入積體電路的記憶體中的數據。產生的ECC檢查位元可用以移除儲存期間累積的錯誤,以提增產品的數據保留規格。
圖4係根據實施例描繪操作記憶體系統的方法400。方法400包括步驟402,接收刷洗數據命令。例如,從數據刷洗電路110、主機160或記憶體控制器170接收刷洗數據命令。作為另一範例,在達到臨界值(如溫度、磁場、計時臨界值、位元錯誤率臨界值)之後,數據刷洗控制器會送出刷洗數據命令。
作為示範優點,記憶體系統可達成高效率的糾錯和數據刷洗。例如,與不利用所揭示刷洗數據命令的記憶體系統相比,如所討論的,對特定條件作出回應,在不用犧牲實質效能或增加面積的情況下,記憶體系統100的示範實施例的功耗可降低四倍。而不利用所揭示刷洗數據命令的記憶體系統可能會在不需要刷洗(如在位元錯誤率已經達到系統要求時)時刷洗或保護數據。因為不加區別地刷洗數據,這類的記憶體系統可能效率不佳(如功率消耗較高,速度減慢)。例如,部分或全部的數據刷洗電路或儲存ECC檢查位元的記憶體可在沒接收刷洗數據命令時關機。藉由使用刷洗數據命令,可有效率地刷洗數據,無不必要的刷洗。
在一些實施例中,對接收刷洗數據命令作出回應,執行方法400以用於各待刷洗資料字(步驟404)。例如,各待刷洗資料字可以是數據記憶體120的一部分,例如數據記憶體中具有較敏感位元錯誤率的一部分。作為另一範例,各待刷洗資料字可以是數據記憶體120的整體。在一些實施例中,循序地刷洗多個待刷洗的字。在一些實施例中,並行地刷洗多個待刷洗的字。
在一些實施例中,方法400包括步驟406,識別:數據碼字的起始位址(步驟406a)和對應的ECC記憶體分區(步驟406b)。例如,刷洗數據命令中包含有與待刷洗數據相關聯的位址。作為另一範例,由主機識別與ECC碼字221相關聯的位址和ECC檢查位元分區231(如主機判定記憶體中對系統功能最重要的部分)。
在一些實施例中,方法400包括步驟408,從數據記憶體中讀取與起始位址相關聯的資料字。例如,讀取的數據係儲存在緩衝記憶體中。作為另一範例,從數據記憶體中讀取與數據碼字相關聯的資料字。
在一些實施例中,方法400包括步驟410,從ECC記憶體中讀取與對應ECC記憶體分區相關聯的ECC檢查位元。例如,從ECC記憶體230中讀取與ECC檢查位元分區231相關聯的ECC檢查位元。
在一些實施例中,方法400包括步驟412,基於資料字和ECC檢查位元以執行ECC解碼運算。例如,基於數據刷洗演算法,ECC運算引擎112根據資料字和與ECC檢查位元分區231相關聯的ECC檢查位元以執行ECC解碼運算。
在一些實施例中,方法400包括步驟414,基於ECC解碼運算以判定資料字是否存在錯誤。例如,基於數據刷洗演算法和ECC解碼運算,ECC運算引擎112判定資料字是否有錯誤。
在一些實施例中,方法400包括步驟416,對判定資料字存在錯誤作出回應,以資料字中的可糾錯位元取代錯誤位元,其中包括有可糾錯位元的資料字是刷洗後的資料字。例如,ECC運算引擎112判定資料字存在錯誤,並且資料字包括可糾錯位元。作為回應,取代並糾正資料字的可糾錯位元,並且糾正後的資料字是刷洗後的資料字。
在一些實施例中,方法400包括步驟418,對判定資料字未包含錯誤作出回應,放棄以資料字中的可糾錯位元取代錯誤位元,其中資料字是刷洗後的資料字。例如,ECC運算引擎112判定資料字未包含錯誤,並且作為回應,沒有取代資料字中的任何位元。
在一些實施例中,方法400包括步驟420,判定主機是否請求刷洗後的資料字。例如,主機160的請求是來自電腦系統(包括記憶體系統100和主機160)的處理器的數據請求。
在一些實施例中,方法400包括步驟422,對判定主機請求刷洗後的數據作出回應,將刷洗後的資料字輸出到和主機電耦合的記憶體控制器。例如,對判定(如藉由記憶體控制器)主機做出數據請求作出回應,將刷洗後的資料字輸出到記憶體控制器並提供給主機,並且刷洗後的資料字駐留在數據記憶體中。
在一些實施例中,方法400包括步驟424,對判定主機未請求刷洗後的數據作出回應,放棄將刷洗後的資料字輸出到記憶體控制器。例如,對判定(如藉由記憶體控制器)主機未做出數據請求作出回應,刷洗後的資料字駐留在數據記憶體中,並不輸出到記憶體控制器。在一些實施例中,在基於刷洗數據的命令而送完刷洗數據記憶體之後,發送完成信號以通知主機。
資料字的不同部分可對錯誤具有不同的敏感性。例如,比起較低階位元中的錯誤,在整數的最高有效位元(MSB)中的錯誤將會造成更為嚴重的結果,其與所表示數值相關聯。另外,許多現代運算應用程式如機器學習以及視頻和圖像處理)在本質上是容錯的;在整個系統上強 制執行保守的糾錯方案可能並非必要。然而,傳統的記憶體電路可能依照同一資料字的所有部分都具有相同的錯誤率而設計。在這些傳統的記憶體電路中,會因為使用為了低容錯而設計的記憶體電路來儲存可以容錯較多的數據而浪費功率和面積。
圖5係根據實施例描繪記憶體系統500。在一些實施例中,記憶體系統500是包括在記憶體系統100中。在一些實施例中,記憶體系統500可包括在機器學習或視頻或成像處理系統中。
在一些實施例中,記憶體系統500包括第一記憶體電路502和第二記憶體電路504。第一記憶體電路502可與第一位元錯誤率相關聯,第二記憶體電路504可與第二位元錯誤率相關聯,並且第一位元錯誤率可大於第二位元錯誤率。例如,第一位元錯誤率是在10-16至10-12之間,並且第二位元錯誤率是在10-12至10-6之間。
在一些實施例中,第一記憶體電路502包括數據保護電路,如糾錯編碼電路、數據刷洗電路、冗餘電路,或這些電路的組合,以使第一錯誤率減低到第三錯誤率。例如,系統可能無法容忍一部分的數據具有第一錯誤率;該數據部分可儲存在第一記憶體電路中,使第一錯誤率減低到第三錯誤率以滿足系統要求。在一些實施例中,第一記憶體電路502包括在寫入操作之後配置用以驗證數據並減低錯誤率的電路,或配置用以防止位元反轉(bit flip)並減少有效功率(active power)的電路。
在一些實施例中,第二記憶體電路504包括數據保護電路,如糾錯編碼電路、數據刷洗電路、冗餘電路,或這些電路的組合,以使錯誤率從第二錯誤率減低到第四錯誤率。在一些實施例中,第二記憶體電路504包括在寫入操作之後配置用以驗證數據並減低錯誤率的電路,或者配置用以防止位元反轉並減少有效功率的電路。在一些實施例中,與第一記憶體電路502中相當的電路相比,包括在第二記憶體電路504中的這些電路可消耗更少的功率並且具有較小的面積。
在一些實施例中,資料字508是儲存在第一記憶體電路和第二記憶體電路中。資料字508可包括與第一位元錯誤率相關聯的第一分區510和與第二位元錯誤率相關聯的第二分區512。資料字508的第一分區510可儲存在第一記憶體電路502中,以及資料字508的第二分區512 可儲存在第二記憶體電路504中。
在一些實施例中,各分區的大小是由主機(如主機160)判定。例如,用於8位元帶符號的整數數據,主機可判定符號位元和三個最高有效位元是儲存在與較低位元錯誤率相關聯的第一分區中,以及四個最低有效位元是儲存在與較高位元錯誤率相關聯的第二分區中。位元的有效性可由軟體所使用的數字格式來判定,並可將結果傳達給主機。例如,從最高有效位元到最低有效位元的順序可以是:符號位元,指數位元,尾數中的MSB到LSB。
在一些實施例中,對變化的條件作出回應以更新各分區的大小。例如,可基於影響記憶體電路的磁場和溫度條件以更新各分區的大小。作為另一範例,可判定第一記憶體電路中的一分區不再重要,並可將該分區移到第二記憶體電路。
資料字508可與位址516相關聯。在一些實施例中,位址516對應到記憶體電路中儲存分區的位置。資料字可係實體地儲存在不同分區中,但對記憶體系統500(如主機,記憶體控制器)的使用者而言,資料字看起來是儲存在與位址516相關聯的一個位置中。
在一些實施例中,記憶體系統包括第三記憶體電路506。資料字508可包括第三分區514,並且第三分區可儲存在第三記憶體電路506中。資料字508可不包括第三分區,並且資料字508可以是儲存在第一記憶體電路和第二記憶體電路中。
雖然說明包括有兩個記憶體電路和三個記憶體電路以及兩個分區和三個分區的實施例,但是不背離本發明的範圍,記憶體系統當然可包括更多或更少的記憶體電路,並且資料字可包括更多或更少的分區儲存在各別記憶體電路中。
在一些實施例中,記憶體系統500包括有電耦合到第一記憶體電路和第二記憶體電路的數據刷洗電路516。數據刷洗電路516可控制第一記憶體電路502,以使第一錯誤率減低到第三錯誤率,並且可控制第二記憶體電路504,以使第二錯誤率減低到第四錯誤率。在一些實施例中,第一位元錯誤率的減低幅度大於第二位元錯誤率的減低幅度。例如,第三錯誤率是在10-20至10-16之間,第四錯誤率是在10-16至10-10之間。在 一些實施例中,數據刷洗電路516和其他處理電路是與記憶體電路在同一晶片上。在一些實施例中,數據刷洗電路516和其他處理電路是與記憶體電路在不同晶片上。
作為示範優點,可減少功率和面積。例如,較多的電路面積或者功率消耗資源會適當地偏向具有較高位元錯誤率或較高錯誤敏感的分區(如記憶體中最重要的部分),而較少資源會適當地指向具有較低位元錯誤率或較低錯誤敏感的分區(如不會浪費資源用於位元錯誤率較低或錯誤敏感較低的分區);藉此節省功率並減少糾錯電路設計的面積。作為另一範例,運算應用如類神經網路應用、機器學習和視頻或圖像處理系統可以是容錯的,並且數據的一些部分可對錯誤較不敏感。藉由區分數據中具有較小錯誤敏感度的部分,可減少記憶體電路的功率和面積的消耗。
作為另一示範優點,在大數值數據如類神經網路參數中,記憶體系統的設計可據資料字內的位元對錯誤的敏感度而有效率地劃分,從而避免使用不必要的運算資源。
在一些實施例中,第一記憶體電路502包括第一記憶單元,其包括具有第一尺寸的第一磁隧道結(MTJ)和具有第一通道寬長(W/L)比的第一MOS電晶體。第二記憶體電路504包括第二記憶單元,其包括具有第二尺寸的第二MTJ和具有第二W/L比的第二MOS電晶體。第一尺寸大於第二尺寸,並且第一W/L比大於第二W/L比。
例如,第一記憶體電路包括記憶單元,其包括尺寸在40奈米至200奈米之間的MTJ和W/L比在2至200之間的MOS電晶體。作為另一範例,其中第二記憶體電路包括記憶單元,其包括尺寸在20奈米至100奈米之間的MTJ和W/L比在1至100之間的MOS電晶體。
作為示範優點,可減少面積。例如,較多面積(如具有較低錯誤率的較大裝置)會適當地偏向具有較高位元錯誤率或較高錯誤敏感的分區(如記憶體中最重要的部分),而較少面積(如具有較低錯誤率的較小裝置)會適當地指向具有較低位元錯誤率或較低錯誤敏感的分區(如不會浪費面積用於具有較低位元錯誤率或較低錯誤敏感的分區);藉此減少記憶體電路的面積。作為另一範例,運算應用如機器學習和視頻或圖像處理系統可以是容錯的,並且數據的一些部分可以對錯誤較不敏感。藉由劃分數 據中具有較小錯誤敏感的部分,可減少記憶體電路的面積。
在一些實施例中,第一記憶體電路502使用第一讀取電壓、第一感測時間和第一字線(WL)電壓,以及第二記憶體電路504使用第二讀取電壓、第二感測時間和第二WL電壓。第一讀取電壓大於第二讀取電壓,第一感測時間大於第二感測時間,以及第一WL電壓大於第二WL電壓。
例如,第一讀取電壓是在50毫伏特至300毫伏特之間的範圍內,或者第一感測時間是在3奈秒至500奈秒之間的範圍內,或是兩者,用以減少感測錯誤率。在讀取操作過程中,第一WL電壓可在額定閘極電壓的100%至200%之間的範圍內以用於存取電晶體。第二讀取電壓可在30毫伏特至100毫伏特的範圍內,或者第二感測時間可在2奈秒至100奈秒的範圍內,或是兩者,用以減少讀出功率消耗。在讀取操作過程中,第二WL電壓可在額定閘極電壓的70%至150%之間的範圍內以用於存取電晶體。
在一些實施例中,第一記憶體電路502使用第一寫入電壓、第一寫入時間和第一字線(WL)電壓,以及第二記憶體電路504使用第二寫入電壓、第二寫入時間和第二WL電壓。第一寫入電壓大於第二寫入電壓,第一寫入時間大於第二寫入時間,以及第一WL電壓大於第二WL電壓。
例如,第一寫入電壓是在500毫伏特至1500毫伏特的範圍內,或較長的寫入時間是在5奈秒至1000奈秒的範圍內,或是兩者,用以減低寫入錯誤率。在寫入操作過程中,第一WL電壓可在額定閘極電壓的100%至300%之間的範圍內以用於存取電晶體。第二寫入電壓可在300毫伏特至1000毫伏特之間的範圍內,或者較短的寫入時間可在2奈秒至500奈秒之間的範圍內,或是兩者,用以減少寫入功率消耗。在寫入操作過程中,第二WL電壓可在額定閘極電壓的70%至200%之間的範圍內以用於存取電晶體。
作為示範優點,可減少功率。例如,較多資源(如較高電壓、較長感測/寫入時間)將會適當地偏向具有較高位元錯誤率或較高錯誤敏感的分區(如記憶體中最重要的部分),而較少資源(如較低電壓、較短感 測/寫入時間)將會適當地指向具有較低位元錯誤率或較低錯誤敏感的分區(如不會浪費資源用於具有較低位元錯誤率或較低錯誤敏感的分區);藉此節省讀取及/或寫入功率。作為另一範例,運算應用如機器學習和視頻或圖像處理系統可以是容錯的,並且數據的一些部分可能對錯誤較不敏感。藉由劃分數據中具有較小錯誤敏感的部分,可減少功率。
圖6係根據實施例描繪資料字分區。在一些實施例中,資料字600包括分區602和604。例如,資料字600包括以標準單精確度格式(standard single-precision format)形成的分區,劃分成對錯誤較敏感的位元(MESB)(如分區602)和對錯誤較不敏感的位元(LESB)(如分區604)。在一些實施例中,分區602和604大體上與分區510和512相似,並且資料字600可儲存在記憶體系統500中。在一些實施例中,資料字600的長度是2的乘冪。
在一些範例中,資料字600是在浮點格式中。第一分區602包括符號位元、指數位元和尾數位元的較高階部分,並且第二分區604包括尾數位元的較低階部分。在一些範例中,資料字600是在整數格式中,第一分區602包括符號位元和較高階位元,並且第二分區604包括較低階位元。
雖然關於資料字600說明包括二分區的實施例,但不背離本發明的範圍,資料字600當然可包括更多分區,各分區與位元錯誤率相關聯。
圖7係根據實施例描繪操作記憶體系統的方法。在一些實施例中,方法700包括步驟702,基於第一位元錯誤率以判定待儲存在記憶體系統中的資料字的第一分區。例如,判定(如由主機根據與數據相關聯的系統容錯性,根據資料字600的數字格式)分區602對錯誤較敏感(如具有較高錯誤率)。
在一些實施例中,方法700包括步驟704,基於第二位元錯誤率以判定待儲存在記憶體系統中的資料字的第二分區,第一位元錯誤率大於第二位元錯誤率。例如,判定(如由主機)分區604與第一分區相比,對錯誤較不敏感(如與第一分區相比,具有較低錯誤率)。
在一些實施例中,方法700包括步驟706,將資料字的第 一分區儲存在第一記憶體電路中。例如,第一分區602儲存在第一記憶體電路502中。第一記憶體電路502可配置用以糾正具有第一位元錯誤率的數據。
在一些實施例中,方法700包括步驟708,將資料字的第二分區儲存在第二記憶體電路中。例如,第二分區604儲存在第二記憶體電路504中。第二記憶體電路504可配置用以糾正具有第二位元錯誤率的數據。
在一些實施例中,第一記憶體電路是與第一位元錯誤率相關聯,第二記憶體電路是與第二位元錯誤率相關聯。例如,記憶體電路502是與第一位元錯誤率相關聯,記憶體電路504是與第二位元錯誤率相關聯,並且第二位元錯誤率大於第一位元錯誤率。
圖8係根據實施例描繪記憶體系統。記憶體系統800包括:數據輸入802;多層儲存單元(MLC)記憶體陣列804;寫入電路806,電耦合到MLC記憶體陣列和數據輸入;格雷碼至二進制解碼器電路808,電耦合到寫入電路;讀出電路810,電耦合到MLC記憶體陣列;二進制至格雷碼編碼器電路812,電耦合到讀出電路和數據輸入;記憶體電路814,配置用以儲存ECC檢查位元;ECC編碼器816,電耦合到記憶體電路和二進制至格雷碼編碼器電路;ECC解碼器818,電耦合到記憶體電路和格雷碼至二進制編碼器電路且配置用以輸出恢復的數據;以及數據刷洗控制器820,配置用以控制記憶體系統中的數據恢復。
在一些範例中,可藉由表示具有多重狀態或連續類比特徵的矩陣被乘數,將多層儲存單元(MLC)裝置用於記憶體中的運算操作(如在類神經網路運算中)。在一些實施例中,MLC是類比記憶體。記憶體裝置在操作期間可能呈現漂移,可能會逐漸改變矩陣被乘數的值。作為示範優點,記憶體系統800使用格雷碼在數據經歷漂移之後有效率地加以恢復(如在簡單的“讀取和恢復”操作無法糾正有錯誤數據之前糾正漂移);可降低數據重新刷新的頻率。格雷編碼是一種數位數據表示形式,其中相鄰狀態相差一個位元。此特性有利地確保裝置狀態中的小變化只改變少數的位元,減少糾錯電路的需求,藉此減少與記憶體相關聯的糾錯電路的功率和面積。
在一些實施例中,記憶體電路814與MLC記憶體804是位在不同積體電路上。例如,記憶體電路、ECC編碼器電路和ECC解碼器電路是在同一晶片上,該晶片與MLC記憶體804所在的晶片不同。在一些實施例中,MLC記憶體804和記憶體電路814是在同一晶片上。例如,MLC記憶體804和記憶體電路814可包括在同一記憶體陣列中。在一些情況下,記憶體電路可位於MLC記憶體陣列的預定分區中(如MLC記憶體陣列和記憶體電路是包括在同一記憶體中)。
在一些實施例中,MLC記憶體陣列包括記憶體單元電路,具有超過二個穩定物理狀態。例如,記憶體單元電路可具有八個穩定狀態,並且各穩定狀態表示二進制中從零到七的數字。在一些實施例中,MLC記憶體陣列包括類比記憶體裝置(如配置用以儲存一系列連續值的類比裝置)。例如,記憶體單元電路可以是選自以下項目中的一者:組織為NOR單元的浮閘FLASH單元、組織為NAND單元的浮閘FLASH單元、組織為NOR單元的電荷捕捉FLASH單元、組織為NAND單元的電荷捕捉FLASH單元、相變記憶體(PCM)單元,以及電阻性記憶體(RRAM)單元。
在一些實施例中,ECC編碼器和解碼器使用選自下列項目中的一者:漢明碼、BCH碼、里德-所羅門碼,以及LDPC碼。在一些範例中,檢查位元記憶體(check-bit memory)814中的檢查位元大小是由ECC方法決定的。在一些實施例中,讀出電路810包括類比至數位轉換器(ADC)。
在一些實施例中,數據刷洗控制器820大體上類似於數據刷洗電路110,但是使用於MLC記憶體。在一些實施例中,記憶體系統800包括環境干擾感測器140及/或計時器150,用以判定何時應啟動數據刷洗。在一些範例中,數據刷洗控制器是配置成對環境干擾的檢測作出回應(如使用環境干擾感測器140,如在本文的說明),或如在本文所說明,對從主機接收命令作出回應,以預定間隔(如使用計時器150,如在本文所說明)啟動數據刷洗操作。例如,可周期性地讀出數據並且在數據上進行數據刷洗以減輕數據中的漂移。
圖9係根據實施例描繪數據恢復。二進制值902對應到格雷碼值904;各列的上限值和下限值在數學上是同等的。曲線906對應到 可儲存在MLC記憶體中的各離散值的理想範圍(如電壓)。在一些情況下,由於如裝置漂移的非理想情況,曲線可能偏離曲線906。例如,由於漂移,對應到曲線908中的二進制值“100”的曲線向右位移;在這些範例中,包括“100”的數據可能錯誤地被改變成“101”。可使用記憶體系統800或方法1000以恢復對應到“100”的理想水準。
圖10係根據實施例描繪操作記憶體系統的方法1000。方法1000包括步驟1002,從MLC記憶體中讀取數據,數據是以二進制碼或類比值表示。例如,使用讀出電路810從MLC記憶體804讀取部分或全部的數據。可循序或並行地讀取和刷洗數據。當並行地讀取和刷洗數據時,記憶體系統800可包括超過一個非記憶體陣列元件(如讀出電路、格雷碼編碼器/解碼器、ECC記憶體、ECC編碼器/解碼器、寫入電路),以使MLC數據的同時數據刷洗能達成。
在一些實施例中,方法1000包括步驟1004,將數據轉換成格雷碼。例如,二進制至格雷碼編碼器電路812將讀取的數據轉換成格雷碼。
在一些實施例中,方法1000包括步驟1006,從配置用以儲存ECC檢查位元的記憶體電路中讀取對應的檢查位元數據。例如,讀取ECC檢查位元,其對應到記憶體電路814中的讀取數據,用以在讀取的數據上執行數據刷洗操作。
在一些實施例中,方法1000包括步驟1008,用格雷碼運算數據中可糾正錯誤的位置。例如,在讀取的數據上執行ECC操作之後,基於ECC操作的結果,數據刷洗控制器820運算可糾正錯誤的位置(如基於解碼後的ECC字元)。
在一些實施例中,方法1000包括步驟1010,用格雷碼糾正數據中的可糾正錯誤。例如,基於ECC方法,數據刷洗控制器820用格雷碼糾正可糾正錯誤。
在一些實施例中,方法1000包括步驟1012,將糾正後的數據轉換成二進制碼或糾正後的類比值。例如,使用格雷碼至二進制解碼器電路808將糾正後的格雷碼數據轉換回二進制值(如用於MLC記憶體)或糾正後的類比值(如在類比記憶體中)。
在一些實施例中,方法1000包括步驟1014,利用寫入電路將糾正後的數據重寫在MLC記憶體中的數據上。例如,若判定正刷洗的數據有錯誤,則使用寫入電路806將糾正並轉換後的數據寫入記憶體804。
雖然已參考圖8至圖10說明特定架構和方法,但不背離本發明的範圍,所揭示的MLC或類比記憶體當然可對糾錯MLC或類比記憶體運用二進制糾錯架構和方法。
圖11係根據實施例描繪包括有記憶體系統的系統1100。系統1100可包括:記憶體系統1110(如記憶體系統100、500、800),電耦合到記憶體控制器1120;處理器1130;直接記憶體存取(DMA)控制器1140;周邊介面1150;即時計時器(RTC)1160;以及其他電路1170。系統1100的示範元件是電耦合到匯流排數據總線1180。在一些實施例中,系統1100是可攜式電子裝置(如智慧型手錶或智慧型手機)的一部分。在一些實施例中,系統1100是機器學習系統的一部分。在一些實施例中,系統1100是分散式資訊收集和處理網路(如雲端、類神經網路)的一部分。
在一些實施例中,記憶體系統1110是包括在選自以下項目中的一者:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可編程運算系統(例如FPGA)、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置、機器人,以及無人機。
圖12係根據實施例描繪運算裝置1200的範例。在一些實施例中,裝置1200是配置用以耦合到所揭示系統,並且配置用以執行與本文所揭示系統相關聯的操作方法。
裝置1200可以是連接到網路的電腦主機。裝置1200可以是客戶端電腦或伺服器。如圖12所示,裝置1200可以是任何合適類型基於微處理器的裝置,如專用運算裝置、個人電腦、工作站、伺服器、手持運算裝置(可攜式電子裝置)如手機或平板電腦、人工智慧邊緣運算(edge-AI)裝置,或類神經網路裝置。例如,該裝置可包括一或多個處理器1202、輸入裝置1206、輸出裝置1208、儲存體1210,以及通訊裝置1204。輸入裝置1206和輸出裝置1208通常可對應到以上所揭示者,並且可連接 到電腦或與電腦一體成型。
輸入裝置1206可以是提供輸入的任何合適裝置,如相機感測器、觸控螢幕、鍵盤或小鍵盤、滑鼠,或語音識別裝置。輸出裝置1208可以是提供輸出的任何合適裝置,如照明器、觸控螢幕、觸覺裝置,或音箱揚聲器。
儲存體1210可以是提供儲存的任何合適裝置,如包括有電、磁或光學記憶體的RAM、快取記憶體、硬碟,或可移除式儲存磁碟。在一些範例中,儲存體1210包括記憶體系統100、500,或800。通訊裝置1204可包括能透過網路傳送和接收信號的任何合適裝置,如網路介面晶片或裝置。電腦的組件可依任何合適方式加以連接,如經由實體匯流排或無線方式。
軟體1212,其可儲存在儲存體1210中並由處理器1210執行,例如可包括將本發明的功能具體化(如具體化在上述裝置中)的程式設計。
軟體1212尚可儲存及/或傳輸到非暫時性、電腦可讀的任何儲存媒體內,供指令執行系統、設備或裝置(如上述者)使用或與其連接而使用,儲存媒體從指令執行系統,設備或裝置擷取與軟體相關聯的指令並執行指令。在本發明的上下文中,電腦可讀儲存媒體可以是任何媒體,如儲存體1210,其可包含或儲存程式設計,供指令執行系統、設備或裝置使用或與其連接而使用。
軟體1212尚可在任何傳輸媒體內傳播,以供指令執行系統、設備或裝置(如上述者)使用或與其連接而使用,傳輸媒體可從指令執行系統、設備或裝置中擷取與軟體相關聯的指令並執行指令。在本發明的上下文中,傳輸媒體可以是可通訊、傳播或傳輸程式設計以供指令執行系統、設備或裝置使用或與其連接而使用的任何媒體。傳輸可讀取媒體可包括(但不限於)電子、磁性、光學、電磁,或紅外線有線或無線傳播媒體。
裝置1200可連接到網路,網路可以是任何合適類型的互連通訊系統。網路可實作任何合適的通訊協議,並且可由任何合適的安全協議來保護。網路可包括任何合適安排的網路連結,其可實作網路信號的發送和接收,如無線網路連接、T1或T3線路、纜線網路、數位用戶線路 (DSL),或電話線。
裝置1200可實作任何適合在網路上操作的作業系統。軟體1212可用任何合適的程式語言編寫,如C、C++、Java或Python。在各種實施例中,使本發明的功能具體化的應用軟體可部署在不同配置中,如在主從式安排中或透過網頁瀏覽器,例如作為基於網路的應用程式或網路服務。
在一方面,記憶體系統包括:數據記憶體;ECC記憶體;以及數據刷洗電路,其電耦合到ECC記憶體和數據記憶體。
在上述記憶體系統的一些方面,數據刷洗電路是配置對接收刷洗數據命令作出回應,用以糾正數據記憶體中的錯誤。
在上述記憶體系統的一些方面,用以糾錯的碼字長度比數據記憶體正常存取期間使用的字長度長。
在上述記憶體系統的一些方面,數據刷洗電路包括數據緩衝器、數據刷洗控制器、ECC編碼電路,以及ECC解碼電路。
在上述記憶體系統的一些方面,數據刷洗電路是配置在存取數據記憶體的同時用以糾正數據記憶體中的錯誤。
在上述記憶體系統的一些方面,記憶體系統尚包括環境干擾感測器,配置用以檢測環境條件,並且其中數據刷洗電路是基於檢測到的環境條件以產生刷洗數據命令。
在上述記憶體系統的一些方面,環境條件包括溫度和磁場中的至少一者。
在上述記憶體系統的一些方面,數據刷洗電路是配置用以檢測已知數據中的變化並基於變化的檢測以產生刷洗數據命令。
在上述記憶體系統的一些方面,記憶體系統尚包括計時器電路,配置用以:追蹤經過的時間;以及判定經過的時間是否大於計時臨界值,並根據經過的時間大於計時臨界值的判定以產生刷洗數據命令。
在上述記憶體系統的一些方面,ECC記憶體包括多個分區,以及數據記憶體包括多個記憶體位址範圍,各分區對應到數據記憶體中的一個記憶體位址範圍。
在上述記憶體系統的一些方面,ECC記憶體包括一個具有 多個ECC位元的分區,以及ECC位元的數目係基於與數據刷洗演算法相關聯的ECC編碼方法。
在上述記憶體系統的一些方面,ECC記憶體包括一組暫存器,其中:各暫存器對應到一個ECC碼字,各ECC碼字對應到數據記憶體中的一區段,並且各暫存器儲存該區段的狀態。
在上述記憶體系統的一些方面,選自數據記憶體和ECC記憶體中的至少一者包括磁性隨機存取記憶體(MRAM)。
在上述記憶體系統的一些方面,選自數據記憶體和ECC記憶體中的至少一者包括記憶單元,其包括有磁隧道結(MTJ),與具有位元錯誤率在10-12至10-2之間的記憶單元相比,具有選自以下特性中的一者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在上述記憶體系統的一些方面中,與位元錯誤率在10-12至10-2之間的記憶單元相比,MJT具有選自以下特性中的二者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在上述記憶體系統的一些方面,數據記憶體包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM),或嵌入式DRAM(eDRAM)。
在上述記憶體系統的一些方面,數據刷洗電路或主機是配置用以判定數據記憶體是否受到保護,以及ECC記憶體是配置用以:根據數據記憶體受到保護的判定以儲存ECC檢查位元;以及根據數據記憶體未受保護的判定以儲存運算數據。
在上述記憶體系統的一些方面,數據記憶體和ECC記憶體是包括在不同記憶體電路中。
在上述記憶體系統的一些方面,數據記憶體和ECC記憶體是包括在同一記憶體電路中。
在上述記憶體系統的一些方面,記憶體系統是電耦合到主機裝置。
在上述記憶體系統的一些方面,數據記憶體和ECC記憶體包括記憶單元,其包括有尺寸在20奈米至200奈米之間的MTJ,以及 寬長比在1至200之間的MOS電晶體。
在上述記憶體系統的一些方面,數據刷洗電路是配置用以:接收數據保護命令以用於數據;以及用於待保護數據中的各資料字,對接收到保護命令作出回應:識別位址以用於與資料字關聯的數據碼字;根據該位址以判定該資料字是否在數據記憶體中;對判定該資料字在數據記憶體中作出回應,從數據記憶體中讀取該資料字;對判定該資料字不在數據記憶體中作出回應:接收該資料字;並將該資料字寫入數據記憶體;在該資料字上執行ECC編碼運算;基於ECC編碼運算以產生數據碼字;在該位址將數據碼字寫入數據記憶體;基於ECC編碼運算以產生ECC檢查位元;並且將產生的ECC檢查位元寫入ECC記憶體中的對應分區。
在上述記憶體系統的一些方面,數據刷洗電路是配置用以:接收刷洗數據命令;用於各待刷洗資料字,對接收到刷洗數據命令作出回應:識別:數據碼字的起始位址和對應的ECC記憶體分區;從數據記憶體中讀取與起始位址相關聯的資料字;從ECC記憶體中讀取與對應的ECC記憶體分區相關聯的ECC檢查位元;基於資料字和ECC檢查位元以執行ECC解碼運算;基於ECC解碼運算以判定資料字是否包括錯誤;對判定資料字中包括錯誤作出回應,用資料字中的可糾錯位元取代錯誤位元,其中包括可糾錯位元的資料字是刷洗後的資料字;對判定資料字不包括錯誤作出回應,放棄用資料字中的可糾錯位元取代錯誤位元,其中資料字是刷洗後的資料字;判定主機是否請求刷洗後的資料字;對判定主機請求刷洗後的數據作出回應,將刷洗後的資料字輸出到記憶體控制器,其電耦合到主機;對判定主機未請求刷洗後的數據作出回應,放棄將刷洗後的資料字輸出到記憶體控制器。
在一方面,揭示一種操作記憶體系統的方法,該記憶體系統包括:數據記憶體;ECC記憶體;以及數據刷洗電路,其電耦合到ECC記憶體和數據記憶體。該方法包括:對接收刷洗數據命令作出回應,使用數據刷洗電路以糾正數據記憶體中的錯誤。
在上述方法的一些方面,用以糾錯的碼字長度是比數據記憶體正常存取期間使用的字長度長。
在上述方法的一些方面,數據刷洗電路包括數據緩衝器、 數據刷洗控制器、ECC編碼電路,以及ECC解碼電路。
在上述方法的一些方面,該方法尚包括在糾正數據記憶體中的錯誤的同時存取數據記憶體。
在上述方法的一些方面,該方法尚包括使用環境干擾感測器以檢測環境條件;並且基於檢測到的環境條件以產生刷洗數據命令。
在上述方法的一些方面,環境條件包括溫度和磁場中的至少一者。
在上述方法的一些方面,該方法尚包括檢測已知數據中的變化;以及基於變化的檢測以產生刷洗數據命令。
在上述方法的一些方面,該方法尚包括追蹤經過的時間;判定經過的時間是否大於計時臨界值,以及根據經過的時間大於計時臨界值的判定以產生刷洗數據命令。
在上述方法的一些方面,ECC記憶體包括多個分區,以及數據記憶體包括多個記憶體位址範圍,各分區分别對應到數據記憶體中的一個記憶體位址範圍。
在上述方法的一些方面,ECC記憶體包括一分區,其具有與數據刷洗演算法相關聯的多個ECC位元,該方法尚包括使用該等ECC位元以執行ECC編碼方法。
在上述方法的一些方面,ECC記憶體包括一組暫存器,其中:各暫存器對應到一ECC碼字,各ECC碼字對應到數據記憶體中的一區段,並且各暫存器儲存該區段的狀態。
在上述方法的一些方面,選自數據記憶體和ECC記憶體中的至少一者包括磁性隨機存取記憶體(MRAM)。
在上述方法的一些方面,選自數據記憶體和ECC記憶體中的至少一者包括記憶單元,其包括有磁隧道結(MTJ),與位元錯誤率在10-12至10-2之間的記憶單元相比,具有選自以下特性中的一者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在上述方法的一些方面,與具有位元錯誤率在10-12至10-2之間的記憶單元相比,MJT具有選自以下特性中的二者:尺寸減小、矯頑磁場減弱、磁性各向異性減低,以及飽和磁化強度降低。
在上述方法的一些方面,數據記憶體包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM),或嵌入式DRAM(eDRAM)。
在上述方法的一些方面,該方法尚包括判定數據記憶體是否受到保護;根據數據記憶體受到保護的判定,將ECC檢查位元儲存在ECC記憶體中;以及根據數據記憶體未受保護的判定,將運算數據儲存在ECC記憶體中。
在上述方法的一些方面,數據記憶體和ECC記憶體是包括在不同記憶體電路中。
在上述方法的一些方面,數據記憶體和ECC記憶體是包括在同一記憶體電路中。
在上述方法的一些方面,記憶體系統是電耦合到主機裝置。
在上述方法的一些方面,數據記憶體和ECC記憶體包括記憶單元,其包括有尺寸在20奈米至200奈米之間的MTJ和寬長比(width-to-length ratio)在1至200之間的MOS電晶體。
在上述方法的一些方面,該方法尚包括:接收數據保護命令;用於待保護數據中的各資料字,對接收保護命令作出回應:識別與資料字相關聯的數據碼字的位址;基於該位址以判定資料字是否在數據記憶體中;對判定資料字在數據記憶體中作出回應,從數據記憶體中讀取資料字;對判定資料字不在數據記憶體中作出回應;接收資料字;將資料字寫入數據記憶體;在資料字上執行ECC編碼運算;基於ECC編碼運算以產生數據碼字;在該位址將數據碼字寫入數據記憶體;基於ECC編碼運算以產生ECC檢查位元;將產生的ECC檢查位元寫入ECC記憶體中的對應分區。
在上述方法的一些方面,該方法尚包括:用於待刷洗的各資料字,對接收刷洗數據命令作出回應:識別:用於數據碼字的起始位址,以及對應的ECC記憶體分區;從數據記憶體中讀取與起始位址相關聯的資料字;從ECC記憶體中讀取與對應的ECC記憶體分區相關聯的ECC檢查位元;基於資料字和ECC檢查位元以執行ECC解碼運算;基於ECC解碼運算以判定資料字是否包括錯誤;對判定資料字包括錯誤作出回應, 用資料字中的可糾錯位元取代錯誤位元,其中包括有可糾錯位元的資料字是刷洗後的資料字;對判定資料字不包括錯誤作出回應,放棄用資料字中的可糾錯位元取代錯誤位元,其中資料字是刷洗後的資料字;判定主機是否請求刷洗後的資料字;對判定主機請求刷洗後的數據作出回應,將刷洗後的資料字輸出到記憶體控制器,其電耦合到主機;對判定主機未請求刷洗後的數據作出回應,放棄將刷洗後的資料字輸出到記憶體控制器。
在上述記憶體系統的一些方面,記憶體系統是包括在選自以下項目中的一者:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置、機器人,以及無人機。
在一方面,記憶體系統包括:第一記憶體電路,其與第一位元錯誤率相關聯;以及第二記憶體電路,其與第二位元錯誤率相關聯,其中第一位元錯誤率大於第二位元錯誤率;以及資料字是儲存在第一記憶體電路和第二記憶體電路中,其中:資料字包括第一分區,其與第一位元錯誤率相關聯,以及第二分區,其與第二位元錯誤率相關聯,資料字的第一分區儲存在第一記憶體電路中,資料字的第二分區儲存在第二記憶體電路中。
在上述記憶體系統的一些方面,記憶體系統尚包括數據刷洗電路,其電耦合到第一記憶體電路和第二記憶體電路,其中:數據刷洗電路控制第一記憶體電路,以使第一錯誤率減少到第三錯誤率;數據刷洗電路控制第二記憶體電路,以使第二錯誤率減少到第四錯誤率;以及第一位元錯誤率的減少幅度大於第二位元錯誤率的減少幅度。
在上述記憶體系統的一些方面,第一記憶體電路包括第一記憶單元,其包括具有第一尺寸的第一磁隧道結(MTJ)和具有第一通道寬長(W/L)比的第一MOS電晶體;第二記憶體電路包括第二記憶單元,其包括具有第二尺寸的第二MTJ和具有第二W/L比的第二MOS電晶體,第一尺寸大於第二尺寸,並且第一W/L比大於第二W/L比。
在上述記憶體系統的一些方面,第一記憶體電路包括記憶單元,其包括有尺寸在40奈米至200奈米之間的MTJ和W/L比在2至 200之間的MOS電晶體。
在上述記憶體系統的一些方面,第二記憶體電路包括記憶單元,其包括有尺寸在20奈米至100奈米之間的MTJ和W/L比在1至100之間的MOS電晶體。
在上述記憶體系統的一些方面,第一記憶體電路使用第一讀取電壓、第一感測時間和第一字線(WL)電壓,第二記憶體電路使用第二讀取電壓、第二感測時間和第二WL電壓,第一讀取電壓大於第二讀取電壓,第一感測時間大於第二感測時間,並且第一WL電壓大於第二WL電壓。
在上述記憶體系統的一些方面,第一記憶體電路使用第一寫入電壓、第一寫入時間和第一WL電壓,第二記憶體電路使用第二寫入電壓、第二寫入時間和第二WL電壓,第一寫入電壓大於第二寫入電壓,第一寫入時間大於第二寫入時間,並且第一WL電壓大於第二WL電壓。
在上述記憶體系統的一些方面,在浮點格式中,第一分區包括符號位元、指數位元,以及尾數位元的較高階部分。
在上述記憶體系統的一些方面,在整數格式中,第一分區包括符號位元和較高階位元。
在上述記憶體系統的一些方面,在浮點格式中,第二分區包括尾數位元的較低階部分。
在上述記憶體系統的一些方面,在整數格式中,第二分區包括較低階位元。
在一方面,揭示一種操作記憶體系統的方法,該記憶體系統包括有第一記憶體電路和第二記憶體電路,該方法包括:基於第一位元錯誤率以判定待儲存在記憶體系統中的資料字的第一分區;基於第二位元錯誤率以判定待儲存在記憶體系統中的資料字的第二分區,第一位元錯誤率大於第二位元錯誤率;將資料字的第一分區儲存在第一記憶體電路中;以及將資料字的第二分區儲存在第二記憶體電路中,其中:第一記憶體電路是與第一位元錯誤率相關聯,以及第二記憶體電路是與該第二位元錯誤率相關聯。
在上述方法的一些方面,該方法尚包括控制第一記憶體電 路,以使第一錯誤率減少到第三錯誤率;以及控制第二記憶體電路,以使第二錯誤率減少到第四錯誤率,其中第一位元錯誤率的減少幅度大於第二位元錯誤率的減少幅度。
在上述方法的一些方面,第一記憶體電路包括第一記憶單元,其包括具有第一尺寸的第一MTJ和具有第一通道W/L比的第一MOS電晶體;第二記憶體電路包括第二記憶單元,其包括具有第二尺寸的第二MTJ和具有第二W/L比的第二MOS電晶體,第一尺寸大於第二尺寸,並且第一W/L比大於第二W/L比。
在上述方法的一些方面,第一記憶體電路包括記憶單元,其包括有尺寸在40奈米至200奈米之間的MTJ和W/L比在2至200之間的MOS電晶體。
在上述方法的一些方面,第二記憶體電路包括記憶單元,其包括有尺寸在20奈米至100奈米之間的MTJ和W/L比在1至100之間的MOS電晶體。
在上述方法的一些方面,該方法尚包括:在第一記憶體電路中使用第一讀取電壓、第一感測時間和第一WL電壓;以及在第二記憶體電路中使用第二讀取電壓、第二感測時間和第二WL電壓,其中:第一讀取電壓大於第二讀取電壓,第一感測時間大於第二感測時間,以及第一WL電壓大於第二WL電壓。
在上述方法的一些方面,該方法尚包括:在第一記憶體電路中使用第一寫入電壓、第一寫入時間和第一WL電壓;以及在第二記憶體電路中使用第二寫入電壓、第二寫入時間和第二WL電壓,其中:第一寫入電壓大於第二寫入電壓,第一寫入時間大於第二寫入時間,以及第一WL電壓大於第二WL電壓。
在上述方法的一些方面,在浮點格式中,第一分區包括符號位元,指數位元,以及尾數位元的較高階部分。
在上述方法的一些方面,在整數格式中,第一分區包括符號位元和較高階位元。
在上述方法的一些方面,在浮點格式中,第二分區包括尾數位元的較低階部分。
在上述方法的一些方面,在整數格式中,第二分區包括較低階位元。
在上述記憶體系統的一些方面,記憶體系統是包括在選自以下項目中的一者:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置、機器人,以及無人機。
在一方面,記憶體系統包括:數據輸入;多層儲存單元(MLC)陣列;寫入電路,其電耦合到MLC陣列和數據輸入;格雷碼至二進制解碼器電路,其電耦合到寫入電路;讀出電路,其電耦合到MLC陣列;二進制至格雷碼編碼器電路,其電耦合到讀出電路和數據輸入;記憶體電路,配置用以儲存ECC檢查位元;ECC編碼器,其電耦合到記憶體電路和二進制至格雷碼編碼器電路;ECC解碼器,其電耦合到記憶體電路和格雷碼至二進制編碼器電路並配置用以輸出恢復的數據;以及數據刷洗控制器,配置用以控制記憶體系統中的數據恢復。
在上述記憶體系統的一些方面,MLC陣列包括記憶體單元電路,其具有超過二個穩定物理狀態。
在上述記憶體系統的一些方面,記憶體單元電路是選自以下項目中的一者:組織為NOR單元的浮閘FLASH單元、組織為NAND單元的浮閘FLASH單元、組織為NOR單元的電荷捕捉FLASH單元、組織為NAND單元的電荷捕捉FLASH單元、相變記憶體(PCM)單元,以及電阻性記憶體(RRAM)單元。
在上述記憶體系統的一些方面,ECC編碼器和解碼器使用選自以下項目中的一者:漢明碼、BCH碼、里德-所羅門碼,以及LDPC碼。
在上述記憶體系統的一些方面,記憶體電路是與MLC陣列位在不同積體電路上。
在上述記憶體系統的一些方面,記憶體電路是位於MLC陣列的預定分區中。
在上述記憶體系統的一些方面,數據刷洗控制器是配置對 環境干擾的檢測作出回應或者對從主機接收到命令作出回應,用以在預定間隔啟動數據刷洗操作。
在一方面,對MLC進行數據刷洗的方法包括:從MLC讀取數據,該數據係以二進制碼或類比值表示;將數據轉換成格雷碼;從配置用以儲存ECC檢查位元的記憶體電路中讀取對應的檢查位元數據;運算可糾正錯誤在格雷碼形式的數據中的位置,并加以糾正;將糾正後的數據轉換成二進制碼或糾正後的類比值;以及藉由寫入電路將糾正後的數據重寫到MLC中的數據上。
在上述方法的一些方面,MLC陣列包括記憶體單元電路,其具有超過二個穩定物理狀態。
在上述方法的一些方面,記憶體單元電路是選自以下項目中的一者:組織為NOR單元的浮閘FLASH單元、組織為NAND單元的浮閘FLASH單元、組織為NOR單元的電荷捕捉FLASH單元、組織為NAND單元的電荷捕捉FLASH單元、相變記憶體(PCM)單元,以及電阻性記憶體(RRAM)單元。
在上述方法的一些方面,該方法尚包括用選自以下項目中的一者進行ECC編碼和解碼:漢明碼、BCH碼、里德-所羅門碼,以及LDPC碼。
在上述方法的一些方面,記憶體電路是與MLC陣列位在不同積體電路上。
在上述方法的一些方面,記憶體電路是位於MLC陣列的預定分區中。
在上述方法的一些方面,該方法尚包括對檢測到環境干擾作出回應,或者對從主機接收到命令作出回應,以預定間隔啟動數據刷洗操作。
在上述記憶體系統的一些方面,記憶體系統是包括在選自以下項目中的一者中:人工智慧邊緣運算(edge-AI)系統、在數據中心的類神經網路系統、物聯網系統、汽車電子系統、微控制器系統、行動通訊系統、可程式運算系統、硬體安全系統、遠程資訊服務系統、生物醫學電子裝置、機器人,以及無人機。
雖然在本發明中使用“電耦合”和“耦合”來說明讀出電路的兩個元件之間的電連接,但是電連接當然不一定需要在組件的端子之間直接連接而耦合在一起。不背離本發明的範圍,所述組件的不同組合和連接可達成定電流和可調偏置電壓讀出電路。例如,將電路連接在電耦合一起的組件的端子之間。在另一範例中,將閉合(導電)開關連接在耦合一起的組件的端子之間。在又一範例中,將附加元件連接在耦合一起的組件的端子之間,不會影響電路的定電流特性。例如,可添加緩衝器、放大器和被動電路元件,不會影響讀出電路的特性並且不背離本發明的範圍。
在一些實施例中,兩個電耦合組件可以拓撲方式耦合。如在本文所使用,如果兩個組件在一拓撲內或在拓撲的同一部分內彼此提供電影響,則為“以拓撲方式耦合”。例如,所揭示讀出電路的參考感測器和第一電流源是電耦合在讀出電路的同一支路上。
同樣地,雖然在本發明中使用“非電耦合”來說明讀出電路的兩個元件之間的電力切斷,但是電力切斷當然不一定需要在要開關的組件的端子之間實質地打開。而且,“非耦合”不侷限於表示阻止兩個元件之間的電能傳遞。例如,將高阻抗元件連接在非耦合的組件的端子之間。在另一範例中,將開放(非導電)開關連接在斷開的組件的端子之間,有效地斷開組件。
通常,如本文使用的“大體上”一詞是用以說明(多個)元件或數量理想地具有精確品質(如固定、相同、統一、相等、相似、成比例),但是實際上具有功能上同等於精確品質的品質。例如,將元件或數量描述為大體上固定或統一,可偏離該固定或統一值,只要偏差係在系統(如準確度要求等)的公差之內。作為另一範例,將兩個元件或數量描述為大體上相等可以是近似相等,只要差異是在公差之內,在功能上不影響系統操作即可。
同樣地,雖然以絕對意義描述一些元素或數量,不用”大體上”一詞,但是這些元素和數量當然能具有功能上同等於絕對描述的品質。例如,在一些實施例中,將比率描述為1。然而,當然該比率可大於或小於1,只要該比率是在系統(如準確度要求等)的公差之內即可。
如本文使用“大體上相同的”感測器對給定的刺激產生相 似的回應。例如,對於給定的溫度變化,“大體上相同的”輻射熱計產生相似的電阻變化。
雖然已參考附圖充分描述所揭示的實施例,但是應注意的是,各種改變和修改對熟諳本領域的技術人員將是顯而易見。這類的改變和修改應理解為包括在所揭示實施例如後附申請專利範圍所限定的範圍內。
在本文對所述各種實施例的說明中使用的術語僅為描述特定實施例的目的,並非意欲用於限制。如在所述各種實施例和後附申請專利範圍的說明中使用的單數形式“一”、“一個”和“該”意欲用以包括複數形式,除非在上下文另外清楚指明。而且,本文中使用的“及/或”一詞當然是指並涵蓋所列相關聯項目中的一或多者的任何和所有可能組合。應進一步瞭解的是,當在本說明書使用“包含”、“包含有”,“包括”及/或“包括有”等詞時明確指出所述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。
100:記憶體系統
110:數據刷洗電路
111:數據緩衝器
112:ECC運算引擎
113:數據刷洗控制器
120:數據記憶體
130:ECC記憶體
140:環境干擾感測器
150:計時器
160:主機
170:記憶體控制器

Claims (6)

  1. 一種記憶體系統,包括:分立、可獨立運作的數據記憶體與ECC記憶體電路;及數據刷洗電路,其電耦合至ECC記憶體及數據記憶體,可同時、獨立進行數據存取和數據刷洗操作,係配置用以使用與碼字長度相關聯的碼字以糾正數據記憶體中的錯誤,且在數據刷洗操作中採用不同碼字長度,其中數據刷洗電路包括一種用於判定位元錯誤率是否達到臨界值的電路數據刷洗控制器來送出刷洗數據命令。
  2. 如申請專利範圍第1項之記憶體系統,其中:數據刷洗控制器根據位元錯誤率已達到臨界值判定送出刷洗數據命令,或數據刷洗控制器根據位元錯誤率未達到臨界值判定放棄送出刷洗數據命令。
  3. 如申請專利範圍第1項之記憶體系統,尚包括:數據輸入;多層儲存單元(MLC)陣列;寫入電路,其電耦合至MLC陣列及數據輸入;格雷碼至二進制解碼器電路,其電耦合至寫入電路;讀出電路,其電耦合至MLC陣列;二進制至格雷碼編碼器電路,其電耦合至讀出電路及數據輸入;記憶體電路,係配置用以儲存ECC檢查位元;ECC編碼器,其電耦合至記憶體電路及二進制至格雷碼編碼器電路;ECC解碼器,其電耦合至記憶體電路及格雷碼至二進制編碼器電路,及配置用以輸出恢復之數據;及數據刷洗控制器,係配置用以控制記憶體系統中之數據恢復。
  4. 一種操作記憶體系統之方法,包括:分立、可獨立運作的數據記憶體與ECC記憶體電路;及數據刷洗電路電耦合至ECC記憶體及數據記憶體,該方法包括: 對接收刷洗數據命令作出回應,使用數據刷洗電路可同時、獨立進行數據存取和數據刷洗操作,係配置用以使用與碼字長度相關聯的碼字以糾正數據記憶體中之錯誤,且在數據刷洗操作中採用不同碼字長度,其中數據刷洗電路包括一種用於判定位元錯誤率是否達到臨界值的電路數據刷洗控制器來送出刷洗數據命令。
  5. 如申請專利範圍第4項之記憶體系統之方法,其中:數據刷洗控制器根據位元錯誤率已達到臨界值判定送出刷洗數據命令,或數據刷洗控制器根據位元錯誤率未達到臨界值判定放棄送出刷洗數據命令。
  6. 如申請專利範圍第4項之記憶體系統之方法,尚包括:對多層儲存單元(MLC)進行數據刷洗,其包括:從MLC讀取數據,該數據係以二進制碼或類比值表示;及將數據轉換至格雷碼;從配置用以儲存ECC檢查位元之記憶體電路中讀取對應之檢查位元數據;運算可糾正錯誤在格雷碼形式的數據中的位置糾正在格雷碼形式的數據的可糾正錯誤將糾正後之數據轉換至二進制碼或糾正後之類比值;及利用寫入電路將糾正後之數據重寫至MLC中之數據上。
TW110142674A 2018-10-12 2019-10-14 帶有糾錯及數據刷洗電路的記憶體系統 TWI792682B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201862745204P 2018-10-12 2018-10-12
US62/745,204 2018-10-12
US201862755702P 2018-11-05 2018-11-05
US62/755,702 2018-11-05
US201962886967P 2019-08-15 2019-08-15
US62/886,967 2019-08-15

Publications (2)

Publication Number Publication Date
TW202230386A TW202230386A (zh) 2022-08-01
TWI792682B true TWI792682B (zh) 2023-02-11

Family

ID=70164037

Family Applications (2)

Application Number Title Priority Date Filing Date
TW110142674A TWI792682B (zh) 2018-10-12 2019-10-14 帶有糾錯及數據刷洗電路的記憶體系統
TW108136841A TWI750517B (zh) 2018-10-12 2019-10-14 帶有糾錯及數據刷洗電路的記憶體系統

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW108136841A TWI750517B (zh) 2018-10-12 2019-10-14 帶有糾錯及數據刷洗電路的記憶體系統

Country Status (7)

Country Link
US (3) US11204835B2 (zh)
EP (1) EP3864500A4 (zh)
JP (1) JP7224689B2 (zh)
KR (2) KR20240051328A (zh)
CN (1) CN112930519A (zh)
TW (2) TWI792682B (zh)
WO (1) WO2020077283A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240051328A (ko) * 2018-10-12 2024-04-19 수퍼멤, 인크. 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
US11962928B2 (en) 2018-12-17 2024-04-16 Meta Platforms Technologies, Llc Programmable pixel array
US11888002B2 (en) 2018-12-17 2024-01-30 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11935291B2 (en) 2019-10-30 2024-03-19 Meta Platforms Technologies, Llc Distributed sensor system
US11948089B2 (en) 2019-11-07 2024-04-02 Meta Platforms Technologies, Llc Sparse image sensing and processing
US11825228B2 (en) 2020-05-20 2023-11-21 Meta Platforms Technologies, Llc Programmable pixel array having multiple power domains
US11935575B1 (en) * 2020-12-23 2024-03-19 Meta Platforms Technologies, Llc Heterogeneous memory system
US20220269599A1 (en) * 2021-02-25 2022-08-25 International Business Machines Corporation Sensor based memory array data scrubbing
TWI794967B (zh) 2021-09-10 2023-03-01 臺灣發展軟體科技股份有限公司 資料處理電路及故障修補方法
US11640332B1 (en) * 2021-10-15 2023-05-02 Infineon Technologies Ag Execute in place architecture with integrity check
CN114822611B (zh) * 2022-06-27 2022-09-27 波平方科技(杭州)有限公司 用于近似计算的磁性存储芯片、模组及系统级封装芯片
CN115083487B (zh) * 2022-08-23 2022-12-06 北京灵汐科技有限公司 存储器件、存储方法、读取装置和读取方法
CN115938461A (zh) * 2022-12-06 2023-04-07 上海美仁半导体有限公司 存储装置、纠错存储系统、芯片和车辆

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010029592A1 (en) * 2000-01-25 2001-10-11 Walker William J. Memory sub-system error cleansing
US20060212778A1 (en) * 2005-03-16 2006-09-21 Wheeler Andrew R Hardware based memory scrubbing
US20110289386A1 (en) * 2009-06-24 2011-11-24 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
US8171234B2 (en) * 2009-03-16 2012-05-01 Mosys, Inc. Multi-bank multi-port architecture
US20120110411A1 (en) * 2010-10-29 2012-05-03 Brocade Communications Systems, Inc. Content Addressable Memory (CAM) Parity And Error Correction Code (ECC) Protection
US8255772B1 (en) * 2008-06-18 2012-08-28 Cisco Technology, Inc. Adaptive memory scrub rate
US20170161142A1 (en) * 2015-12-08 2017-06-08 Nvidia Corporation Method for scrubbing and correcting dram memory data with internal error-correcting code (ecc) bits contemporaneously during self-refresh state
US20170372798A1 (en) * 2015-03-10 2017-12-28 Toshiba Memory Corporation Memory device and memory system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832340B2 (en) * 2000-01-26 2004-12-14 Hewlett-Packard Development Company, L.P. Real-time hardware memory scrubbing
US7080200B2 (en) * 2003-08-14 2006-07-18 Hitachi Global Storage Technologies Netherlands B.V. System and method for handling writes in HDD using 4K block sizes
US20060256615A1 (en) 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
US7562285B2 (en) * 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
KR101638764B1 (ko) * 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 균일한 판독 대기시간을 위한 중복 데이터 저장
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
EP2447842A1 (en) * 2010-10-28 2012-05-02 Thomson Licensing Method and system for error correction in a memory array
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
JP2013109567A (ja) * 2011-11-21 2013-06-06 Toshiba Corp ストレージデバイス及び誤り訂正方法
KR102024033B1 (ko) * 2013-03-04 2019-09-24 삼성전자주식회사 이동 통신 시스템에서 메모리 제어 방법 및 장치
US9136873B2 (en) * 2013-03-11 2015-09-15 Intel Corporation Reduced uncorrectable memory errors
US9268637B2 (en) * 2013-03-15 2016-02-23 Silicon Space Technology Corporation Memory circuit incorporating error detection and correction (EDAC), method of operation, and system
US9823962B2 (en) * 2015-04-22 2017-11-21 Nxp Usa, Inc. Soft error detection in a memory system
KR102435181B1 (ko) * 2015-11-16 2022-08-23 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US9965352B2 (en) * 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US9823964B2 (en) * 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US10049006B2 (en) * 2015-12-08 2018-08-14 Nvidia Corporation Controller-based memory scrub for DRAMs with internal error-correcting code (ECC) bits contemporaneously during auto refresh or by using masked write commands
US20170286216A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Energy efficient read/write support for a protected memory
US10042700B2 (en) * 2016-05-28 2018-08-07 Advanced Micro Devices, Inc. Integral post package repair
KR102647418B1 (ko) * 2016-06-23 2024-03-13 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10642492B2 (en) * 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
KR102508132B1 (ko) * 2016-10-31 2023-03-09 주식회사 멤레이 자기 저항 메모리 모듈 및 이를 포함하는 컴퓨팅 디바이스
KR20180060084A (ko) * 2016-11-28 2018-06-07 삼성전자주식회사 반도체 메모리 장치의 스크러빙 컨트롤러, 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
KR102410022B1 (ko) * 2017-11-24 2022-06-21 에스케이하이닉스 주식회사 에러스크럽방법 및 이를 이용한 반도체모듈
KR20240051328A (ko) * 2018-10-12 2024-04-19 수퍼멤, 인크. 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010029592A1 (en) * 2000-01-25 2001-10-11 Walker William J. Memory sub-system error cleansing
US20060212778A1 (en) * 2005-03-16 2006-09-21 Wheeler Andrew R Hardware based memory scrubbing
US8255772B1 (en) * 2008-06-18 2012-08-28 Cisco Technology, Inc. Adaptive memory scrub rate
US8171234B2 (en) * 2009-03-16 2012-05-01 Mosys, Inc. Multi-bank multi-port architecture
US20110289386A1 (en) * 2009-06-24 2011-11-24 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
US20120110411A1 (en) * 2010-10-29 2012-05-03 Brocade Communications Systems, Inc. Content Addressable Memory (CAM) Parity And Error Correction Code (ECC) Protection
US20170372798A1 (en) * 2015-03-10 2017-12-28 Toshiba Memory Corporation Memory device and memory system
US20170161142A1 (en) * 2015-12-08 2017-06-08 Nvidia Corporation Method for scrubbing and correcting dram memory data with internal error-correcting code (ecc) bits contemporaneously during self-refresh state

Also Published As

Publication number Publication date
US20210311827A1 (en) 2021-10-07
US11204835B2 (en) 2021-12-21
JP7224689B2 (ja) 2023-02-20
CN112930519A (zh) 2021-06-08
US20220188187A1 (en) 2022-06-16
TWI750517B (zh) 2021-12-21
US11748194B2 (en) 2023-09-05
EP3864500A1 (en) 2021-08-18
TW202230386A (zh) 2022-08-01
US20240054050A1 (en) 2024-02-15
JP2022508694A (ja) 2022-01-19
WO2020077283A1 (en) 2020-04-16
KR20240051328A (ko) 2024-04-19
KR20210075138A (ko) 2021-06-22
EP3864500A4 (en) 2022-10-12
KR102657783B1 (ko) 2024-04-15
TW202025167A (zh) 2020-07-01

Similar Documents

Publication Publication Date Title
TWI792682B (zh) 帶有糾錯及數據刷洗電路的記憶體系統
TWI631570B (zh) 錯誤檢查糾正解碼方法與裝置
KR102648774B1 (ko) 랜더마이즈 동작을 수행하는 반도체 메모리 장치
KR102002925B1 (ko) 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
CN108717858B (zh) 选择性自参考读取
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8464137B2 (en) Probabilistic multi-tier error correction in not-and (NAND) flash memory
US9819362B2 (en) Apparatus and method for detecting and mitigating bit-line opens in flash memory
TWI517172B (zh) 用於資料感測之方法、裝置及系統
US20190102088A1 (en) Method and apparatus for reducing silent data errors in non-volatile memory systems
US9312885B2 (en) Nonvolatile semiconductor memory system error correction capability of which is improved
CN107683464B (zh) 存储器设备中的自适应纠错
TWI716630B (zh) 用於以電流積分感測產生機率資訊之裝置及方法
KR20210087549A (ko) 적응형 신드롬 디코더를 이용한 직접 입력 리던던시 스킴
US10804935B2 (en) Techniques for reducing latency in the detection of uncorrectable codewords
US11106518B2 (en) Failure mode study based error correction
US20130246847A1 (en) Method of detecting error in write data and data processing system to perform the method
CN115732016A (zh) 存储器装置、存储器控制器和纠正数据错误的方法
TW202113860A (zh) 減少基於校驗子的準循環解碼器的延遲