[go: up one dir, main page]

TWI528374B - 記憶體錯誤修正方法以及記憶體錯誤修正裝置 - Google Patents

記憶體錯誤修正方法以及記憶體錯誤修正裝置 Download PDF

Info

Publication number
TWI528374B
TWI528374B TW102141846A TW102141846A TWI528374B TW I528374 B TWI528374 B TW I528374B TW 102141846 A TW102141846 A TW 102141846A TW 102141846 A TW102141846 A TW 102141846A TW I528374 B TWI528374 B TW I528374B
Authority
TW
Taiwan
Prior art keywords
bit
memory
error
error correction
block
Prior art date
Application number
TW102141846A
Other languages
English (en)
Other versions
TW201421483A (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 TW201421483A publication Critical patent/TW201421483A/zh
Application granted granted Critical
Publication of TWI528374B publication Critical patent/TWI528374B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1056Updating check bits on partial write, i.e. read/modify/write
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1052Bypassing or disabling error detection or correction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • 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/165Auxiliary circuits
    • G11C11/1677Verifying circuits or methods
    • 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
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Mram Or Spin Memory Techniques (AREA)

Description

記憶體錯誤修正方法以及記憶體錯誤修正裝置
本揭露係有關於一種記憶體錯誤修正方法以及裝置,特別係有關於一種磁性隨機存取記憶體之錯誤修正方法以及裝置。
電腦記憶體是一種包括設置半導體元件而保存數位資料之技術,並且也是一種電腦的基本元件。磁性隨機存取記憶體(Magnetic random access memory,MRAM)為這幾年來備受關注之一種記憶體。磁性隨機存取記憶體為非揮發性記憶體,也就代表即使當元件失去電源時也能維持其儲存的資料,反之當元件失去電源時揮發性記憶體則遺失其儲存的資料。比較現存之揮發性記憶體,磁性隨機存取記憶體能夠提供如靜態隨機存取記憶體類似的效能,並且提供與動態隨機存取記憶體(dynamic random access memory,DRAM)相近的密度,儘管比動態隨機存取記憶之功率損耗要低的多。與快閃式記憶體(flash memory)相比,磁性隨機存取記憶體也是非揮發性的,磁性隨機存取記憶體之速度卻更快,且隨時間的增加僅承受寥寥無幾之衰減。就是這樣結合所謂「萬能記憶體」的功能,使得磁性隨機存取記憶體能夠取代靜態隨機存取記憶體(Static Random Access Memory,SRAM)、動態隨機存取記憶體 (Dynamic Random Access Memory,DRAM)、電子抹除式可複寫唯讀記憶體(Electrically Erasable Programmable Read-Only Memory,EEPROM)以及快閃式記憶體。
有鑑於此,本揭露提出一種記憶體錯誤修正方法,包括:(a)嘗試寫入一多位元的預期字組至一記憶體中之一記憶體位置;(b)在嘗試寫入上述多位元的預期字組後,自上述記憶體位置讀取一多位元的實際字組;(c)將上述多位元的實際字組與上述多位元的預期字組相比對,以辨識儲存於上述記憶體位置的複數錯誤位元之一錯誤位元數值以及複數正確位元之一正確位元數值;以及(d)重新寫入上述錯誤位元數值至上述記憶體位置,而不需重新寫入上述正確位元數值至上述記憶體位置。
根據本揭露之一實施例,其中上述記憶體係為一磁性隨機存取記憶體裝置,包括複數磁性隨機存取記憶體單元之一陣列,其中動作(a)、(b)、(c)以及(d)嘗試以一迭代方式重複進行,用以修正上述錯誤位元數值,更包括:對於每一動作(a)、(b)、(c)以及(d)之重複,增加或減少一計數數值;根據上述計數數值是否與一既定計數臨界值具有一既定關係而停止重複動作(b)、(c)以及(d);以及當停止重複動作(b)、(c)以及(d)時,嘗試利用一錯誤修正編碼修正任何剩下的上述錯誤位元。
根據本揭露之一實施例,更包括:判斷在上述多位元的實際字組中之上述錯誤位元數值是否少於或等於藉由 一錯誤修正編碼可修正之一位元大小;若上述錯誤位元數值少於或等於上述位元大小,則利用上述錯誤修正編碼修正上述多位元的實際字組中之上述錯誤位元;以及若上述錯誤位元數值大於上述位元大小,則將上述記憶體位置之個別上述錯誤位元或整個上述多位元實際字組映射至一可替代的記憶體位置。
根據本揭露之一實施例,更包括:辨識上述錯誤位元是否單獨地對應至保留給一錯誤修正編碼之上述記憶體位置之一部分;以及若上述錯誤位元單獨地對應至保留給上述錯誤修正編碼之上述記憶體位置之上述部分,則設定一標誌來忽略上述記憶體位置之上述錯誤修正編碼,其中上述記憶體在設定上述標誌之後繼續使用上述記憶體位置來讀取以及寫入資料。
本揭露更提出一種記憶體錯誤修正方法,包括:嘗試將一多位元的預期字組寫入至一磁性隨機存取記憶體之一記憶體位置;在嘗試寫入上述多位元的預期字組後,自上述記憶體位置讀取一多位元的實際字組;邏輯性地比對上述多位元的實際字組以及上述多位元的預期字組,而辨別上述記憶體位置中的複數錯誤位元之一錯誤位元數值以及複數正確位元之一正確位元數值;以及根據上述邏輯比較之一結果,嘗試選擇性地重新寫入上述錯誤位元數值至上述記憶體位置,而不需將上述正確位元數值重新寫入至上述記憶體位置。
根據本揭露之一實施例,更包括:在選擇性地重新寫入後,自記憶體位置重新讀取上述多位元的實際字組;以及使用一錯誤更正編碼以更正一或多剩下的上述錯誤位元,其 中上述錯誤位元被選擇性地重新寫入至上述記憶體位置,其中上述錯誤位元數值重新寫入至上述磁性隨機存取記憶體達到一既定數值之次數,其中當達到上述既定數值之次數時,停止重新寫入上述錯誤位元數值。
根據本揭露之一實施例,更包括:辨別上述錯誤位元是否單獨地對應至保留給一錯誤修正編碼之上述記憶體位置之一部分;以及若上述錯誤位元單獨地對應至保留給上述錯誤修正編碼之上述記憶體位置之上述部分,則設定一標誌來忽略上述記憶體位置之上述錯誤修正編碼。
本揭露更提出一種記憶體錯誤修正裝置,包括:一讀取電路,自一記憶體讀取一多位元的實際字組;一比較電路,將自上述記憶體讀取之上述多位元的實際字組與一多位元的預期字組相比對,上述多位元的預期字組係為先前寫入至上述記憶體用以判斷上述多位元實際字組之複數錯誤位元之一錯誤位元數值;一寫入電路,將上述錯誤位元數值寫入至上述記憶體直到位於上述多位元的實際字組之上述錯誤位元數值小於或等於藉由一錯誤修正編碼可修正之一位元大小;以及一錯誤修正電路,利用上述錯誤修正編碼修正上述多位元的實際字組之上述錯誤位元。
根據本揭露之一實施例,其中上述比較電路包括一XOR比較區塊,其中上述記憶體包括複數磁性隨機存取記憶體之一陣列,其中一磁性隨機存取記憶體單元包括:一第一磁性板;一第二磁性板;以及一薄介電層,放置於上述第一磁性板以及上述第二磁性板之間。
100‧‧‧磁性隨機存取記憶體單元
102‧‧‧上磁性板
104‧‧‧下磁性板
106‧‧‧薄絕緣層
108A、110A、110B‧‧‧箭頭
200‧‧‧陣列
WL1、…、WLM‧‧‧字組線
BL1、…、BLN‧‧‧位元線
C1~M,1~N‧‧‧單元
600‧‧‧磁性隨機存取記憶體裝置
602‧‧‧磁性隨機存取記憶體陣列
604‧‧‧寫入電路
606‧‧‧讀取電路
608‧‧‧比較電路
610‧‧‧錯誤修正電路
302~320、402~422、502、504‧‧‧步驟流程
第1A、1B圖係顯示根據本揭露之一實施例所述之磁性隨機存取記憶體單元儲存不同狀態之透視圖;第2圖係顯示根據本揭露之一實施例所述之磁性隨機存取記憶體陣列;第3圖係根據本揭露之一實施例所述之磁性隨機存取記憶體按位元寫入操作方法之流程圖;第4圖係根據本揭露之一實施例所述之磁性隨機存取記憶體按位元寫入操作方法之流程圖;第5圖係根據本揭露之一實施例所述之磁性隨機存取記憶體按位元寫入操作方法之流程圖;第6圖係根據本揭露之一實施例所述之具有執行按位元寫入操作電路之磁性隨機存取記憶體。
此篇敘述之示範實施例係用以搭配附圖一起閱讀,上述附圖視為整篇敘述之一部分。說明書中之用語中有關耦接及其類似用語(如耦接、連接與內連接),除非有特殊說明,係代表結構為直接或非直接地經由介質結構連接至另一結構之關係。
本揭露係有關於增進磁性隨機存取記憶體(Magnetic random access memory,MRAM)之技術。第1A-1B圖係顯示磁性隨機存取記憶體單元100包括一上磁性板102以及一下磁性板104,上述兩者藉由一薄絕緣層106隔開,薄絕緣 層106亦稱為通道障蔽層(tunnel barrier layer)。上磁性板102以及下磁性板104之任一者,如下磁性板104為固定至具有單一方向磁矩之強磁性層之一磁性層。另一磁性板,如上磁性板102為磁場可改變至二或多數值之一者之自由磁性層,進而儲存二或多相對應資料狀態之一者。在一些實施例中,磁性隨機存取記憶體單元100為一自旋轉移力矩(Spin-Transfer-Torque,STT)之磁性隨機存取記憶體單元。自旋轉移力矩之磁性隨機存取記憶體利用自旋對齊(spin-aligned)或極化電子流而翻轉自由磁性層相對於固定磁性層之方向。整體上,自旋轉移力矩之磁性隨機存取記憶體所需的寫入電流較傳統或切換之磁性隨機存取記憶體更小的許多。
由於磁隧道效應(magnetic tunnel effect)的關係,磁性隨機存取記憶體單元100電阻的改變係根據儲存於兩板上的磁場。例如,在第1A圖中,上磁性板102以及下磁性板104的磁場為同向(如第1A圖中箭頭108A以及箭頭110A所示),導致一低阻抗狀態,其代表一邏輯「0」狀態。在第1B圖中,一電流流過磁性隨機存取記憶體單元100而產生自由磁性層之磁場變化(也就是,上磁性板102)。因此,在寫入程序之後,上磁性板以及下磁性板之磁場互為反向(如第1B圖箭頭110A以及110B所示),產生一高阻抗狀態。所以,藉由量測上磁性板102以及下磁性板104之間的電阻,耦接至磁性隨機存取記憶體單元100之讀取電路可辨別資料狀態「0」以及「1」。一個記憶體單元也可以儲存兩個以上的狀態(也就是,讀取電路能夠辨別儲存於記憶體單元中之兩個以上電阻狀態),使得記憶 體單元儲存一多位元之數位資料。
如第2圖所示,許多這種的磁性隨機存取記憶體單元100能夠放置於一陣列200,陣列200包括M列(字組)以及N行(位元)的記憶體元件,其中個別的記憶體單元標籤為烏鴉柱(Crow-column)。字組線WL1、...、WLM在記憶體單元之各行之間延伸,位元線BL1、...、BLN則沿著行延伸。
為了要寫資料(即,一數位字組)至記憶體單元之一列,一字組線用以選擇一列,並且施加適當的偏壓至個別的位元線以寫入數值至對應的記憶體單元之所選擇的列。例如,將一數位字組「1....0」寫入至記憶體單元之第一列,字組線WL1將被拉至高位準(即,1.2~2.2V)來選擇單元C1,1~N。在此同時,將位元線BL1偏壓為邏輯「1」(也就是,將「1」寫入至C1,1),......,以及將位元線BLN偏壓為邏輯「0」(也就是,將「0」寫入至C1,N)。其他列之字組線電壓值(也就是,第二列至第M列)通常維持停用狀態(也就是,0V),使得資料僅寫入至所選擇的列(也就是,第一列),儘管在一些實施例中也可同時寫入至許多列。
當資料寫入至或讀取自一列中之許多單元(即一多位元的字組(word))時,資料錯誤會因為許多因素而發生於此列上之一或多單元(即一或多位元)。例如,單元上的缺陷、當存取記憶體時,施加於個別單元之位元線或字線電壓之微小波動或記憶體陣列中之微小製程變異皆可造成不正確的位元寫入至記憶體陣列。特別是在磁性隨機存取記憶體中,當一多位元字組之所有位元皆被寫入,字組中之一些位元可能會 被一回跳(back hopping)效應所影響,其中被影響的位元短暫地於寫入之後逆轉其狀態。再者,若此記憶體元件經歷更多寫入循環後,此回跳(back hopping)效應將變得更為顯著(即,隨著記憶體元件之老化)。
有鑑於這些回跳問題,本揭露提供改進的讀寫操作,稱之為智慧磁性隨機存取記憶體位元寫入操作。在這些改進的讀寫操作中,一多位元字組(word)首先被寫入至記憶體,然後接著確認是否這些位元正確地被寫入,而重新寫入字組(word)中之所有錯誤位元,並且不更動正確寫入之位元。在其他字組(word)中,錯誤位元在按位元寫入程序中直接且單獨地進行重新寫入。因為正確寫入之位元並未重新寫入,此操作可限制儲存正確資料之單元的回跳效應。執行較少的寫入與每次重新寫入總是所有字組(word)重新寫入至記憶體相比,此操作也可限制了個別記憶體單元隨著時間的推移而退化。若重複確認錯誤位元且執行過許多重新寫入操作後依然為錯誤時(即「頑固(sticky)」及/或「持續失敗(hard fail)」的錯誤位元),本揭露也提供了錯誤修正編碼(error correction coding,ECC)技術,用以修正這些頑固及/或持續失敗的位元。
第3圖係顯示根據本揭露之一些實施例所述之對磁性隨機存取記憶體執行按位元寫入程序方法之流程圖。本方法係以一連串之動作或方塊加以描述。可以理解的是,在一些實施例中一些動作或方塊可進一步細分成多個動作或方塊,或者在其他實施例中也可結合許多圖示的動作或方塊。其他未圖示之動作或方塊也可加入,及/或圖示的動作或方塊可於一些 實施例中省略。並且,動作或方塊之順序也可在其他實施例中重新排列,所有種種的改變都屬於本揭露之範圍。
第3圖所示之方法300開始於步驟302,步驟302係為一個由許多預期位元所組成之字組寫入一記憶體位置。例如,為了清楚說明之目的,上述將被寫入之字組係以具有預期位元「10110010」之八位元字組為例。由於編碼錯誤、缺陷、製程變異及/或其他不可預期的或不可預測的狀況,實際寫入至字組之資料位元可能與這些預期位元有所不同。
在步驟304中,方法300由記憶體位置讀取眾多實際位元,通常錯誤修正編碼(error correction coding,ECC)並不在此使用以保留系統資源。繼續回到上述之範例,考慮自記憶體讀取之實際位元為「11000111」。
在步驟306中,方法300比較從記憶體讀取之實際位元以及將寫入至記憶體之預期位元,藉此是別字組中任何錯誤位元。在我們的範例中,預期位元為「10110010」而實際位元為「11000111」,以下實際位元中有底線的位元為錯誤位元「11000111」。
若字組(word)中具有錯誤位元(在步驟308中確認為是),此方法300繼續至步驟310之重新寫入預期位元至錯誤位元已被辨識出之位元位置,該動作藉由執行一按位元寫入程序以更正錯誤位元而完成。繼續回到上述範例,預期位元中有底線之位元將被重新寫入至儲存字組(word)為:「」之記憶體位置,而沒有底線之位元則不會被重新寫入。因為此按位元寫入程序維持正確的位元(沒有底線的位元)之資料狀 態不被更動,正確的位元發生回跳(back-hopping)的機率因而降低,並限制了這些正確的單元中之損耗。
在步驟310之後,方法300接著繼續到了步驟312,步驟312係為驗證字組中之資料,並可選擇性地啟動錯誤修正編碼。也就是,實際位元重新讀取自記憶體位置,並且與預期位元相比。請注意,在一些實施例中,在更正任何錯誤位元時,步驟310以及步驟312可以迭代之方式進行(如虛線314所示)。為了此範例之目的,我們可以假定方法300無法更正字組中之單一位元,因而單一位元為持續失敗(hard fail)。在我們的範例中,我們也可假定錯誤修正編碼(error correction coding,ECC)可更正單一錯誤位元(即,在步驟316中確認為是),因此方法300繼續至下一字組,如步驟318所示。
如果實際位元利用錯誤修正編碼最終無法更正(即,在步驟316中確認為否),可使用步驟320中之修復流程,其中整個字組之一位置為對應至保留作一替代字組之其他位置,或者個別的錯誤單元(個別的錯誤位元)之位置為對應至保留作替代位元之其他個別的位元。請注意,如果字組中沒有錯誤位元(即,在步驟308中確認為否),方法300可簡單地繼續處理步驟308中之其他字組。
因此,方法300提供用以確認資料是否正確寫入(或讀取)至記憶體之技術,並且對於校正之錯誤位元限制回跳(back-hopping)之發生以及元件之損耗。
第4圖係顯示根據本揭露之一些實施例所述之另一針對磁性隨機存取記憶體執行按位元寫入程序方法之流程 圖。第4圖之方法400開始於步驟402,步驟402係為一個由許多預期位元所組成之字組寫入一記憶體位置。同樣的,再次將被寫入之字組係以具有預期位元「10110010」之八位元字組為例。
在步驟404中,方法400自記憶體位置讀取字組。通常錯誤修正編碼(error correction coding,ECC)並不在此使用以節省系統資源。讀取的字組包括多個由該記憶體位置讀取出來之實際位元。繼續回到上述之範例,考慮自記憶體讀取之實際位元為「11000111」。
在步驟406中,方法400比較從記憶體讀取之實際位元以及將寫入至記憶體之預期位元,藉此是別字組中任何錯誤位元。在我們的範例中,預期位元為「10110010」而實際位元為「11000111」,以下實際位元中有底線的位元為錯誤位元「11000111」。
如果字組中具有錯誤位元的話(及,在步驟408中確認為是),方法400繼續至步驟410,將失敗次數加一。
在步驟412中,本方法確認步驟410中之失敗次數達到或超過一既定失敗臨限值。設計者可設定此既定失敗臨限值來控制本方法將重新寫入資料多少次至一給定的字組(word)。例如,如果資料的正確性之重要性最高而寫入速度之重要性較低,失敗臨限值可設置於一較高的值,反之如果快速的寫入速度為最重要的,則失敗臨限值則可設置於一較低的值。可以理解的是,本方法也可確認失敗次數是否低於或等於一既定失敗臨限值(也就是,在每次失敗後失敗次數遞減的情況下,而非如步驟410所示之在每次失敗後遞增),或使用其 他合適的關係。
如果失敗次數達到或超過失敗臨限值時(在步驟412確認為是)時,許多的更正資料嘗試已被嘗試為有效的,並且本方法當使用步驟414之錯誤修正編碼(error correction coding,ECC)時,執行一最後讀取程序以及資料比較。
在步驟416中,方法400利用決定錯誤修正編碼是否可以修正錯誤位元,藉由指出錯誤位元之數字是否優於使用錯誤修正編碼演算法之可更正的位元大小。舉例來說,如果錯誤修正編碼位元之數字僅足夠修正單一錯誤位元,方法400可比對錯誤位元之數字以及預期錯誤修正編碼可更正位元大小之數字。若是錯誤位元之數字大於本範例中之數字時,則錯誤修正編碼演算法不能更正此錯誤(即步驟416中確認為否),且方法400繼續至步驟418以修復或重新映射此故障的記憶體位置。另一方面,如果資料為可更正的(即步驟416中確認為是),更新資料且繼續處理下一個字組。
回到步驟412,如果錯誤次數小於錯誤臨限值(即在步驟412確認為否),方法400繼續藉由將錯誤位元重新寫入至字組的方式來更正資料。在步驟420中,方法400將預期位元重新寫入錯誤位元被識別的位元位置,可藉由執行按位元寫入程序而更正錯誤位元。繼續回到此範例,以下預期位元中具有底線的位元「」被重新寫入至字組,而沒有底線的位元則沒有重新寫入。然後,方法400繼續至步驟422,步驟422中重新讀取字組中之資料,且方法400藉由比對預期位元以及自記憶體位置重新讀取之實際位元,而再次確認是否錯誤位元 出現於步驟424中。方法400以此迭代的方式繼續重新讀取以及重新寫入,直到錯誤次數之數值大於或等於既定的錯誤臨限值(即步驟412中確認為是),或直到所有位元皆為正確(即步驟424中確認為否)。
第5圖係顯示根據本揭露之一些實施例所述之於磁性隨機存取記憶體中執行按位元寫入程序之另一方法。第5圖之方法與第4圖相類似,除了步驟502以及步驟504以外,步驟502以及步驟504為關於如何辨識以及如何處理錯誤。在第5圖之步驟502中,字組(word)中之錯誤位元已經被辨識出之後,方法500決定是否錯誤位元僅對應至字組(word)中之錯誤修正編碼(error correction coding,ECC)位元。例如,如果一8位元的字組(word)中之前7位元為資料位元且最後一位元為錯誤修正編碼位元,本方法可分辨是否一單一位元錯誤侷限於錯誤修正編碼位元。如果是的話(步驟502確認為是),本方法設定一標誌來忽略此字組中之錯誤修正編碼位元(步驟504),特別是當已經多次嘗試修正錯誤修正編碼位元且不成功時,建議錯誤修正編碼位元為持續失敗(hard fail)。本揭露也可繼續依賴字組中剩下的7位元之資料,即使剩下的7位元不再由錯誤修正編碼位元(現在是錯誤的)所保護而有些不可靠。如果不是的話(在步驟502確認為否),本方法繼續至下一個字組。
第6圖係顯示根據本揭露之一些實施例所述之磁性隨機存取記憶體裝置600。磁性隨機存取記憶體裝置600包括由許多磁性隨機存取記憶體單元所組成之磁性隨機存取記憶 體陣列602,通常編排為列與行。寫入電路604能夠將字組多位元地(或個別的位元)寫入至磁性隨機存取記憶體陣列602,並且讀取電路606能夠由磁性隨機存取記憶體陣列602中多位元地讀取字組。比較電路608比對由磁性隨機存取記憶體陣列602讀取出的多位元字組以及先前寫入至磁性隨機存取記憶體陣列602且用以決定多位元字組中錯誤位元之錯誤位元數值之多位元的預期字組。寫入電路604接著使用按位元的方式將錯誤位元之錯誤位元數值寫入至記憶體,直到多位元字組中之錯誤位元之錯誤位元數值低於或等於可利用錯誤修正編碼修正之位元大小。錯誤修正電路610利用錯誤修正編碼修正多位元字組中的錯誤位元。磁性隨機存取記憶體裝置600也可設定為執行本揭露所述之其他方法。
因此,要理解的是本揭露之某些方面係為關於一方法。該方法嘗試將多位元的預期字組寫入至記憶體中之一記憶體位置。在寫入多位元字組之後,自記憶體位置讀取多位元之實際字組。該多位元的實際字組因而與多位元的實際字組相比對而辨別記憶體位置中之錯誤位元數值。錯誤位元之錯誤位元數值接著重新寫入至記憶體位置,而不需要重新重新寫入儲存於記憶體位置中之正確位元。
其他實施例係有關於一方法。該方法嘗試將多位元的預期字組寫入至磁性隨機存取記憶體(magnetic random access memory,MRAM)之一記憶體位置。該方法邏輯地比對多位元的實際字組以及多位元的預期字組,以辨別該記憶體位置中錯誤位元數值以及正確位元數值。根據邏輯比對的結果, 該方法嘗試選擇性地將錯誤位元之錯誤位元數值重新寫入至記憶體位置,而不需要將正確位元重新寫入。
其他實施例關於一記憶體元件。記憶體元件包括讀取電路,用以從記憶體中讀取多位元字組。比較電路比對讀取自記憶體之多位元字組以及之前寫入至記憶體用以決定多位元字組之錯誤位元之錯誤位元數值之多位元的預期字組。寫入電路將錯誤位元之錯誤位元數值寫入至記憶體,直到多位元字組之錯誤位元之錯誤位元數值少於或等於錯誤修正編碼能夠修正之位元大小。錯誤修正電路利用錯誤修正編碼修正多位元字組中的錯誤位元。
特別是關於上述元件或結構(組件、元件、電路、系統等等)所執行之各種功能,用以描述這些元件之用語(包括引用「代表」),旨在對應至(除非有其他的指示)執行所述元件(也就是在功能上等同)之該特殊功能之任何元件或結構,即使結構上並不等同於本揭露在此描述之功能的結構。再者,儘管「第一」、「第二」、「第三」以及其他類似用語使用於本揭露,要理解的是這些用語僅僅只是一般標誌符號,並非暗示技術特徵之間任何特定或暫時的關係。並且,儘管在此使用「上」、「下」、「在上」以及「在下」,要理解的是這些或其他相似的用語並非暗示任何絕對的參考框架(例如,地面在一個人的腳下)。相反的,可以選擇符合此用語之任何座標系。此外,一個特定方面僅揭露許多實施例之一者,這些特徵能夠結合其他對於任何既定或特別應用具有優勢之實施例之一或其他更多的特徵。
302~320‧‧‧步驟流程

Claims (10)

  1. 一種記憶體錯誤修正方法,包括:(a)嘗試寫入一多位元的預期字組至一記憶體中之一記憶體位置;(b)在嘗試寫入上述多位元的預期字組後,自上述記憶體位置讀取一多位元的實際字組;(c)將上述多位元的實際字組與上述多位元的預期字組相比對,以辨識儲存於上述記憶體位置的複數錯誤位元之一錯誤位元數值以及複數正確位元之一正確位元數值;以及(d)重新寫入上述錯誤位元數值至上述記憶體位置,而不需重新寫入上述正確位元數值至上述記憶體位置。
  2. 如申請專利範圍第1項所述之記憶體錯誤修正方法,其中上述記憶體係為一磁性隨機存取記憶體裝置,包括複數磁性隨機存取記憶體單元之一陣列,其中動作(a)、(b)、(c)以及(d)嘗試以一迭代方式重複進行,用以修正上述錯誤位元數值,更包括:對於每一動作(a)、(b)、(c)以及(d)之重複,增加或減少一計數數值;根據上述計數數值是否與一既定計數臨界值具有一既定關係而停止重複動作(b)、(c)以及(d);以及當停止重複動作(b)、(c)以及(d)時,嘗試利用一錯誤修正編碼修正任何剩下的上述錯誤位元。
  3. 如申請專利範圍第1項所述之記憶體錯誤修正方法,更包括: 判斷在上述多位元的實際字組中之上述錯誤位元數值是否少於或等於藉由一錯誤修正編碼可修正之一位元大小;若上述錯誤位元數值少於或等於上述位元大小,則利用上述錯誤修正編碼修正上述多位元的實際字組中之上述錯誤位元;以及若上述錯誤位元數值大於上述位元大小,則將上述記憶體位置之個別上述錯誤位元或整個上述多位元實際字組映射至一可替代的記憶體位置;其中將上述多位元實際字組與上述多位元預期字組比對的是一按位元邏輯XOR比較運算。
  4. 如申請專利範圍第1項所述之記憶體錯誤修正方法,更包括:辨識上述錯誤位元是否單獨地對應至保留給一錯誤修正編碼之上述記憶體位置之一部分;以及若上述錯誤位元單獨地對應至保留給上述錯誤修正編碼之上述記憶體位置之上述部分,則設定一標誌來忽略上述記憶體位置之上述錯誤修正編碼;其中上述記憶體在設定上述標誌之後繼續使用上述記憶體位置來讀取以及寫入資料。
  5. 一種記憶體錯誤修正方法,包括:嘗試將一多位元的預期字組寫入至一磁性隨機存取記憶體之一記憶體位置;在嘗試寫入上述多位元的預期字組後,自上述記憶體位置讀取一多位元的實際字組; 邏輯性地比對上述多位元的實際字組以及上述多位元的預期字組,而辨別上述記憶體位置中的複數錯誤位元之一錯誤位元數值以及複數正確位元之一正確位元數值;以及根據上述邏輯比較之一結果,嘗試選擇性地重新寫入上述錯誤位元數值至上述記憶體位置,而不需將上述正確位元數值重新寫入至上述記憶體位置。
  6. 如申請專利範圍第5項所述之記憶體錯誤修正方法,更包括:在選擇性地重新寫入後,自記憶體位置重新讀取上述多位元的實際字組;以及使用一錯誤更正編碼以更正一或多剩下的上述錯誤位元,其中上述錯誤位元被選擇性地重新寫入至上述記憶體位置;其中將上述多位元實際字組與上述多位元預期字組比對的是一按位元邏輯XOR比較運算;其中上述錯誤位元數值重新寫入至上述磁性隨機存取記憶體達到一既定數值之次數;其中當達到上述既定數值之次數時,停止重新寫入上述錯誤位元數值。
  7. 如申請專利範圍第5項所述之記憶體錯誤修正方法,更包括:辨別上述錯誤位元是否單獨地對應至保留給一錯誤修正編碼之上述記憶體位置之一部分;以及若上述錯誤位元單獨地對應至保留給上述錯誤修正編碼之 上述記憶體位置之上述部分,則設定一標誌來忽略上述記憶體位置之上述錯誤修正編碼。
  8. 一種記憶體錯誤修正裝置,包括:一讀取電路,自一記憶體讀取一多位元的實際字組;一比較電路,將自上述記憶體讀取之上述多位元的實際字組與一多位元的預期字組相比對,上述多位元的預期字組係為先前寫入至上述記憶體用以判斷上述多位元實際字組之複數錯誤位元之一錯誤位元數值;一寫入電路,將上述錯誤位元數值寫入至上述記憶體直到位於上述多位元的實際字組之上述錯誤位元數值小於或等於藉由一錯誤修正編碼可修正之一位元大小;以及一錯誤修正電路,利用上述錯誤修正編碼修正上述多位元的實際字組之上述錯誤位元。
  9. 如申請專利範圍第8項所述之記憶體錯誤修正裝置,其中上述比較電路包括一XOR比較區塊,其中上述記憶體包括複數磁性隨機存取記憶體之一陣列。
  10. 如申請專利範圍第8項所述之記憶體錯誤修正裝置,其中一磁性隨機存取記憶體單元包括:一第一磁性板;一第二磁性板;以及一薄介電層,放置於上述第一磁性板以及上述第二磁性板之間。
TW102141846A 2012-11-30 2013-11-18 記憶體錯誤修正方法以及記憶體錯誤修正裝置 TWI528374B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261732253P 2012-11-30 2012-11-30
US13/917,772 US9110829B2 (en) 2012-11-30 2013-06-14 MRAM smart bit write algorithm with error correction parity bits

Publications (2)

Publication Number Publication Date
TW201421483A TW201421483A (zh) 2014-06-01
TWI528374B true TWI528374B (zh) 2016-04-01

Family

ID=50826756

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102141846A TWI528374B (zh) 2012-11-30 2013-11-18 記憶體錯誤修正方法以及記憶體錯誤修正裝置

Country Status (3)

Country Link
US (2) US9110829B2 (zh)
JP (1) JP2014110071A (zh)
TW (1) TWI528374B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
US20160259698A1 (en) 2015-03-05 2016-09-08 Kabushiki Kaisha Toshiba Storage system
JP6359485B2 (ja) 2015-03-05 2018-07-18 東芝メモリ株式会社 ストレージシステム
US10558525B2 (en) * 2016-06-30 2020-02-11 Taiwan Semiconductor Manufacturing Company, Ltd. Method of correcting errors in a memory array and a system for implementing the same
US10366774B2 (en) * 2016-09-27 2019-07-30 Spin Memory, Inc. Device with dynamic redundancy registers
DE102018126051A1 (de) 2018-01-12 2019-07-18 Taiwan Semiconductor Manufacturing Co. Ltd. Neuartige Speichervorrichtung
US10643722B2 (en) 2018-01-12 2020-05-05 Taiwan Semiconductor Manufacturing Co., Ltd. Memory device
US10642686B2 (en) * 2018-01-12 2020-05-05 Targps Technoloy Corp. Bit-scale memory correcting method
KR20210109085A (ko) 2020-02-26 2021-09-06 삼성전자주식회사 메모리 장치에 대한 테스트 방법, 메모리 장치를 테스트하는 테스트 장치의 동작 방법, 및 셀프-테스트 기능을 구비한 메모리 장치
DE102020133713A1 (de) * 2020-02-27 2021-09-02 Taiwan Semiconductor Manufacturing Co., Ltd. Speicheraktualisierung
JP7432449B2 (ja) * 2020-06-18 2024-02-16 ルネサスエレクトロニクス株式会社 半導体装置
KR102663497B1 (ko) * 2020-06-23 2024-05-03 삼성전자주식회사 저항성 메모리 셀을 포함하는 메모리 장치 및 상기 메모리 장치를 포함하는 전자 장치
US12332781B2 (en) 2023-09-19 2025-06-17 Bae Systems Information And Electronic Systems Integration Inc. Verification process for bit spreading error resistant memory system

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3742449A (en) * 1971-06-14 1973-06-26 Texas Instruments Inc Burst and single error detection and correction system
US4319356A (en) * 1979-12-19 1982-03-09 Ncr Corporation Self-correcting memory system
JPS59129995A (ja) * 1983-01-14 1984-07-26 Nec Corp 記憶装置
US4597083A (en) * 1984-04-06 1986-06-24 Ampex Corporation Error detection and correction in digital communication systems
JP2862948B2 (ja) * 1990-04-13 1999-03-03 三菱電機株式会社 半導体記憶装置
JPH06282449A (ja) 1993-03-29 1994-10-07 Nec Corp メモリコントローラ
US5565695A (en) * 1995-04-21 1996-10-15 Johnson; Mark B. Magnetic spin transistor hybrid circuit element
DE19525149A1 (de) * 1995-07-11 1997-01-16 Telefunken Microelectron Verfahren zum selbsttätigen Erkennen und Korrigieren eines ungültigen Datensatzes und System zu seiner Durchführung
JP3941149B2 (ja) 1996-12-03 2007-07-04 ソニー株式会社 半導体不揮発性記憶装置
JP2000163273A (ja) 1998-11-25 2000-06-16 Nec Corp メモリ誤り訂正・検出回路試験システムおよび試験方法
JP3940544B2 (ja) 2000-04-27 2007-07-04 株式会社東芝 不揮発性半導体メモリのベリファイ方法
US7036068B2 (en) * 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
JP4034949B2 (ja) 2001-09-06 2008-01-16 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
NO315959B1 (no) * 2002-04-16 2003-11-17 Thin Film Electronics Asa Fremgangsmåter til lagring av data i et ikke-flyktig minne
JP4158526B2 (ja) * 2003-01-09 2008-10-01 松下電器産業株式会社 メモリカード及びメモリへのデータ書き込み方法
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
JP2004234545A (ja) * 2003-01-31 2004-08-19 Toshiba Corp 制御回路及びメモリコントローラ
US7143332B1 (en) * 2003-12-16 2006-11-28 Xilinx, Inc. Methods and structures for providing programmable width and error correction in memory arrays in programmable logic devices
JP4056488B2 (ja) * 2004-03-30 2008-03-05 エルピーダメモリ株式会社 半導体装置の試験方法及び製造方法
US7506236B2 (en) * 2004-05-28 2009-03-17 International Business Machines Corporation Techniques for operating semiconductor devices
JP2006048783A (ja) 2004-08-02 2006-02-16 Renesas Technology Corp 不揮発性メモリおよびメモリカード
JP4735948B2 (ja) * 2005-03-29 2011-07-27 日本電気株式会社 磁気ランダムアクセスメモリ及びその動作方法
KR100648290B1 (ko) * 2005-07-26 2006-11-23 삼성전자주식회사 프로그램 속도를 향상시킬 수 있는 불 휘발성 메모리 장치및 그것의 프로그램 방법
US7379327B2 (en) * 2006-06-26 2008-05-27 Grandis, Inc. Current driven switching of magnetic storage cells utilizing spin transfer and magnetic memories using such cells having enhanced read and write margins
JP2010033620A (ja) * 2006-10-30 2010-02-12 Renesas Technology Corp 磁性体メモリ
KR100852191B1 (ko) * 2007-02-16 2008-08-13 삼성전자주식회사 에러 정정 기능을 가지는 반도체 메모리 장치 및 에러 정정방법
US8095853B2 (en) * 2007-10-19 2012-01-10 S. Aqua Semiconductor Llc Digital memory with fine grain write operation
US8271857B2 (en) * 2008-05-13 2012-09-18 International Business Machines Corporation Correcting errors in longitudinal position (LPOS) words
JP2011008850A (ja) 2009-06-24 2011-01-13 Sony Corp メモリ及び情報処理方法
US8331151B2 (en) * 2009-12-25 2012-12-11 Samsung Electronics Co., Ltd. Semiconductor memory including control unit responsive to erase command to determine selection of redundant memory block
US8488363B2 (en) * 2010-05-11 2013-07-16 Qualcomm Incorporated Write energy conservation in memory

Also Published As

Publication number Publication date
JP2014110071A (ja) 2014-06-12
US9747159B2 (en) 2017-08-29
US9110829B2 (en) 2015-08-18
US20140157088A1 (en) 2014-06-05
US20150355963A1 (en) 2015-12-10
TW201421483A (zh) 2014-06-01

Similar Documents

Publication Publication Date Title
TWI528374B (zh) 記憶體錯誤修正方法以及記憶體錯誤修正裝置
US9098428B2 (en) Data recovery on cluster failures and ECC enhancements with code word interleaving
KR102315294B1 (ko) 솔리드-스테이트 스토리지 디바이스들에서의 판독 전압 계산
US9483339B2 (en) Systems and methods for fast bit error rate estimation
US10020072B2 (en) Detect developed bad blocks in non-volatile memory devices
US9397701B1 (en) System and method for lifetime specific LDPC decoding
US10659081B2 (en) Preprogrammed data recovery
US8775901B2 (en) Data recovery for defective word lines during programming of non-volatile memory arrays
US8887011B2 (en) Erased page confirmation in multilevel memory
US10452471B2 (en) Non-volatile memory with dynamic write abort detection and recovery
US10567001B2 (en) Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding
US9268635B2 (en) Error correction using multiple data sources
US10153046B1 (en) Non-volatile memory with backing up of programmed data
US10223199B2 (en) Non-volatile memory configured to return error reduced read data
US10198315B2 (en) Non-volatile memory with corruption recovery
JP2003115197A (ja) 固体記憶装置における誤り訂正符号化および復号化
WO2017027094A1 (en) Soft bit techniques for reading a data storage device
US10248499B2 (en) Non-volatile storage system using two pass programming with bit error control
JP2008108356A (ja) 不揮発性半導体記憶装置
CN106205702B (zh) 对编程故障自动响应的非易失性存储装置
US11036582B2 (en) Uncorrectable error correction code (UECC) recovery time improvement
CN111538621B (zh) 针对位线故障的软芯片猎杀恢复
CN104269190B (zh) 存储器的数据校验方法
US20150121016A1 (en) Method, Apparatus and Device for Data Processing
US11003551B2 (en) Non-volatile storage system with program failure recovery

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees