TW202246979A - 用於具有內建的錯誤校正和偵測的記憶體的錯誤率 - Google Patents

用於具有內建的錯誤校正和偵測的記憶體的錯誤率 Download PDF

Info

Publication number
TW202246979A
TW202246979A TW111113174A TW111113174A TW202246979A TW 202246979 A TW202246979 A TW 202246979A TW 111113174 A TW111113174 A TW 111113174A TW 111113174 A TW111113174 A TW 111113174A TW 202246979 A TW202246979 A TW 202246979A
Authority
TW
Taiwan
Prior art keywords
memory
data
bit
exclusive
memory chips
Prior art date
Application number
TW111113174A
Other languages
English (en)
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 TW202246979A publication Critical patent/TW202246979A/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/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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • 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/1056Updating check bits on partial write, i.e. read/modify/write
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本文所揭露的方法和系統改善記憶體晶片的不可修正的錯誤(UE)率和無聲資料損壞(SDC)率,並改善記憶體晶片的錯誤校正。系統可包括記憶體庫,記憶體庫具有複數個與記憶體控制器通訊的記憶體晶片。記憶體庫可使用一個附加的記憶體晶片,此附加的記憶體晶片存儲資料的按位元奇偶校驗,此資料經存儲在記憶體庫的剩餘記憶體晶片中。當UE出現時,奇偶校驗位元用於重建損壞資料。奇偶校驗位元也用於偵測資料中是否出現SDC。

Description

用於具有內建的錯誤校正和偵測的記憶體的錯誤率
本發明涉及改善具有內建的錯誤校正和偵測的記憶體的錯誤率。
如雙倍資料速率5 DRAM (DDR5)之較新的動態隨機存取記憶體(DRAM) 技術正在 DRAM 晶片中採用內建的錯誤校正碼(ECC)。下一步,各種 DRAM 技術的未來版本可能會增加偵測不可修正的錯誤的能力。由此產生的不可修正的錯誤 (UE) 率和無聲資料損壞 (SDC) 率通常足以滿足消費者應用程式的需求;這些消費者應用程式通常對資料完整性沒有高標準。然而,伺服器系統相對於消費者應用程式需要更高的資料完整性標準。
提供本發明內容是為了以簡化形式介紹概念的選擇,這些概念將在下文的詳細描述中進一步描述。本發明內容並非旨在識別所要求保護的標的之關鍵特徵或必要特徵,也不旨在用作決定所要求保護的標的之範圍的幫助。
一個示例性的實施方式涉及系統。系統可包括具有內建的錯誤偵測的複數個記憶體晶片,其中記憶體晶片的子集存儲資料,且與記憶體晶片的子集不同的一個記憶體晶片存儲奇偶校驗位元。系統可包括與複數個記憶體晶片通訊的記憶體控制器,其中記憶體控制器可操作以執行以下操作:接收對資料的寫入請求;藉由對資料的每一位元進行互斥或(exclusive OR)運算並將奇偶校驗位元存儲在該個記憶體晶片中來決定奇偶校驗位元;基於每個記憶體晶片的位元寬度(bit-width),將資料存儲在記憶體晶片的子集中。
另一個示例性的實施方式涉及系統。系統可包括具有內建的錯誤偵測的複數個記憶體晶片,這些記憶體晶片以垂直方向排列,共享單個資料匯流排,其中記憶體晶片的子集存儲資料且與記憶體晶片的子集不同的記憶體晶片存儲奇偶校驗位元。系統可包括與複數個記憶體晶片通訊的記憶體控制器,其中記憶體控制器可操作以執行以下操作:接收對資料的寫入請求,其中記憶體控制器為寫入請求寫入記憶體晶片的子集中的一個記憶體晶片;藉由讀取存儲在記憶體晶片中的現有奇偶校驗位元且對資料和現有奇偶校驗位元進行互斥或(exclusive OR)運算來決定資料的奇偶校驗位元;更新記憶體晶片的子集的該個記憶體晶片的奇偶校驗位元。
另一個示例性的實施方式涉及方法。方法可包括以下步驟:接收對資料的讀取請求,其中具有內建的錯誤偵測的複數個記憶體晶片的子集存儲資料。方法可包括以下步驟:從記憶體晶片的子集接收資料。方法可包括以下步驟:接收奇偶校驗位元,其中複數個記憶體晶片中的一個記憶體晶片(其與記憶體晶片的子集不同)存儲奇偶校驗位元。方法可包括以下步驟:從複數個記憶體晶片的任何內建的錯誤偵測接收資料中是否出現不可修正的錯誤(UE)的指示。方法可包括以下步驟:識別發送UE出現的指示的記憶體晶片。方法可包括以下步驟:藉由對奇偶校驗位元和來自未發送指示的複數個記憶體晶片的資料執行互斥或(exclusive OR)運算,使用奇偶校驗位元來重建記憶體晶片的損壞資料,從而產生記憶體晶片的恢復資料。
將在下文描述中闡述附加的特徵和優勢。可藉由在所附申請專利範圍中特別指出的系統和方法來實現和獲得本申請案的特徵和優勢。本申請案的特徵將藉由下文描述和所附申請專利範圍變得更加明顯,或可藉由下文闡述的所揭露的標的之實施而獲知本申請案的特徵。
如DDR5之較新的動態隨機存取記憶體 (DRAM) 技術正在 DRAM 晶片中採用內建的錯誤校正碼 (ECC)。下一步,各種 DRAM 技術的未來版本可能會增加偵測不可修正的錯誤的能力。錯誤校正碼 (ECC) 將額外資訊添加到存儲在記憶體中的資料中,因此若在資料存儲期間出現一些錯誤,當從記憶體中讀取資料時,可校正錯誤。記憶體系統中常用的 ECC 執行單位元錯誤校正和雙位元錯誤偵測。
ECC的典型實施方式包括64位元的資料和8位元的ECC冗餘。若從記憶體讀取時72位元中的任何一位元不正確,則 ECC 會偵測到錯誤並識別 72 位元中的哪一位元不正確。藉由識別具有錯誤的位元,可校正錯誤。若兩位元有錯誤,則ECC識別出兩位元有錯誤,但無法識別出是哪兩位元有錯誤。因此,對於雙位元錯誤,可識別錯誤(例如,資料是損壞的),但可能無法校正錯誤。不可修正的錯誤 (UE) 是由 ECC 識別但無法修正的錯誤。在此示例中,兩位元錯誤是不可修正的錯誤。
若三個位元具有錯誤,則示例性的ECC可能不會偵測到錯誤。因此,資料可能已損壞,但 ECC 未偵測到錯誤。無聲資料損壞 (SDC) 是指資料中出現錯誤但 ECC 未偵測到。因此,ECC 無法偵測到資料損壞。此示例性的ECC 產生的不可修正的錯誤 (UE) 率和無聲資料損壞 (SDC) 率可能足以滿足消費者應用程式的需求;這些消費者應用程式通常對資料完整性沒有高標準。然而,伺服器系統相對於消費者應用程式需要更高的資料完整性標準,因此,當前的 UE 和 SDC 率對於伺服器系統的資料完整性可能是不可接受的。
DRAM記憶體通常由64位元字組和具有錯誤代碼的8位元冗餘構成。 DRAM 記憶體晶片固有的錯誤率正在增加。下一代的記憶體(例如,DDR5、GDDR7)包括內建的單位元錯誤校正邏輯,且僅執行錯誤校正而沒有雙位元錯誤偵測或其他類型的錯誤校正。因此,若在單個位元中出現錯誤,則使用單個位元錯誤校正來校正錯誤。若錯誤出現在兩位元或更多位元中,則在沒有任何錯誤出現的指示的情況下回傳資料,因為單位元錯誤偵測無法決定錯誤是否出現在多於一位元或提供出現錯誤的任何通知。因此,資料中會出現 SDC。
本申請案提供了一種改善記憶體晶片的UE率和SDC率的新方法,並因此以相對於當前ECC方法更便宜的方式改善記憶體晶片的錯誤校正。本申請案亦提供一種在整個記憶體晶片出現硬故障時恢復資料的方法。在實施方式中,本申請案可使用DRAM晶片。本申請案可使用用於記憶體庫的一個額外的DRAM晶片來存儲資料的按位元的奇偶校驗。
例如,若DRAM 晶片是 8 位元寬度且所需的整個資料路徑是32位元,則記憶體庫中的四個DRAM晶片需要用於資料有效載荷。本申請案將第五個DRAM晶片添加到記憶體庫,此記憶體庫存儲經存儲在其他四個DRAM晶片中的資料的按位元的奇偶校驗。當寫入新資料時,奇偶校驗由外部邏輯產生。當讀取資料時,奇偶校驗和每個 DRAM 晶片所提供的狀態由外部邏輯檢查。
除了在記憶體庫中的任何一個記憶體晶片中出現或可能已經出現UE的指示之外,本申請案還接收回傳的資料和奇偶校驗位元。若一個記憶體晶片指示 UE 可能已出現或UE已失敗,則來自其他記憶體晶片和奇偶校驗晶片的資料位元可用於重新創建來自一個丟失的記憶體晶片(例如,指示 UE已失敗或無法使用的記憶體晶片)的資料。本申請案決定是否將「0」或「1」添加到來自指示UE及/或未能導致偶校驗的記憶體晶片的每個位元。本申請案允許從丟失資料中重建資料。因此,本申請案提供一種修正UE並接收回傳的恢復資料的方法,而不是僅僅接收UE出現的通知。因此,主機伺服器系統接收校正後的資料(而不是UE),從而降低伺服器系統處的UE率。
此外,本申請案可驗證SDC是否在沒有任何出現錯誤的通知的情況下出現。本申請案可藉由執行奇偶校驗來識別在記憶體庫中的記憶體晶片中之一者中出現了SDC。若其中一個晶片具有SDC,則本發明可在執行奇偶校驗時識別SDC,且本發明可將SDC變成UE。因此,本申請案可藉由識別SDC何時出現並將SDC轉變為UE來降低SDC錯誤率。若出現多個 SDC(例如,在超過一個晶片中),則可識別出錯誤,從而導致 UE 而不是 SDC。
本申請案的一個示例性的用例包括伺服器系統,例如但不限於雲端應用程式或大型的公司資料中心。伺服器系統可能具有高標準的資料完整性,且可能需要超出當前內建的錯誤偵測的額外改善。本發明可用於改善記憶體晶片的UE率和SDC率,從而提高記憶體晶片的錯誤校正能力。
現在參考圖1,其示出用於資料10中的錯誤偵測和錯誤校正的示例性的記憶體庫100。記憶體庫100可用於伺服器系統、資料中心及/或任何其他需要高標準資料完整性的環境。雖然圖示五個記憶體晶片102、104、106、108、110,但記憶體庫100可包括多達 n個(其中 n是正整數)的複數個記憶體晶片。在實施方式中,記憶體晶片102、104、106、108、110可以是DRAM記憶體晶片。記憶體晶片102、104、106、108、110可以是包括內建的錯誤偵測16的任何記憶體晶片,錯誤偵測16可偵測資料10中何時出現錯誤。可選地,記憶體晶片可具有錯誤校正。藉由識別錯誤出現,可校正錯誤。錯誤偵測16可在偵測到單個資料位元的錯誤時自動校正錯誤。
若錯誤偵測16決定一些資料位元有錯誤且那些錯誤不能由錯誤校正電路(若有的話)校正,則錯誤偵測16可產生錯誤通知18,其通知資料10中出現了UE 20。例如,若錯誤校正限於修正一位元,則當資料10的兩位元不正確時,UE 20可出現在記憶體晶片中。錯誤偵測16可產生錯誤通知18,錯誤通知18指示資料10出現了UE 20(例如,錯誤不能由記憶體晶片校正)。若在資料10的寫入及/或讀取期間出現錯誤,且資料10被破壞,則記憶體晶片102、104、106、108、110可使用錯誤偵測16來偵測錯誤,並發送錯誤通知18到記憶體控制器112,錯誤通知18通知記憶體控制器112資料10出現了UE 20。
記憶體晶片14的子集(例如,102、104、106、108)可用於存儲資料10。記憶體晶片14的子集可比記憶體庫100中的記憶體晶片的總數少一個(例如, n– 1)。不同於記憶體晶片14的子集的附加記憶體晶片(例如,110)可用於存儲奇偶校驗位元12,奇偶校驗位元12用於驗證資料10的真實性並校正在資料10的存儲及/或讀取期間可能已出現的資料10中的任何錯誤。記憶體晶片14的子集中所包括的記憶體晶片的數量可基於資料的通道寬度。例如,若資料的通道寬度是 64 位元,而記憶體晶片是 16 位元寬,則記憶體晶片14的子集包括四個記憶體晶片,而奇偶校驗位元12使用一個附加的記憶體晶片。因此,記憶體庫100可包括五個具有十六位元寬度的記憶體晶片,其中記憶體晶片14的子集中的四個記憶體晶片(例如,102、104、106、108)用於資料10的存儲且一個冗餘記憶體晶片(例如,110) 用於存儲奇偶校驗位元 12。
在另一示例中,資料的通道寬度是六十四位元且記憶體晶片具有三十二位元的寬度。因此,記憶體庫100可包括三個記憶體晶片,每個記憶體晶片具有三十二位元的寬度,其中記憶體晶片14的子集中的兩個記憶體晶片存儲資料10,而一個記憶體晶片用於存儲奇偶校驗位元12。
在又一個示例中,在記憶體晶片為 8 位元寬度且資料有效載荷所需的整個資料路徑為 32 位元的情況下,四個記憶體晶片包括在用於存儲資料 10 的記憶體晶片 14 的子集中,且一個額外的記憶體晶片經添加到記憶體庫100,該個額外的記憶體晶片存儲經存儲在其他四個記憶體晶片中的資料10的逐位元奇偶校驗位元12。因此,在記憶體庫100中可使用任意數量的記憶體晶片。包括在記憶體晶片14的子集中的記憶體晶片的數量可基於記憶體晶片的寬度和資料10所需的總資料路徑。記憶體庫100中使用的記憶體晶片的總數量可比記憶體晶片14的子集中包括的記憶體晶片的數量多一個。
可用水平方向佈置且可平行操作複數個記憶體晶片102、104、106、108、110。如此一來,可一次從不同的記憶體晶片102、104、106、108、110獲得資料10的所有位元和奇偶校驗位元12,以供記憶體控制器112用於資料10的寫入請求24及/或資料10的讀取請求26。
記憶體控制器112可接收寫入請求24以將資料10寫入至記憶體晶片14的子集。記憶體控制器112可獲取資料10的位元,並可執行互斥或(exclusive OR)操作以產生奇偶校驗位元12。 例如,若記憶體晶片 102、104、108、110 為 16 位元寬度且資料路徑為 64 位元,則記憶體控制器 112 可為記憶體晶片 14 的子集(例如,102、104、106、108)中的每個記憶體晶片取位元 0、執行互斥或運算,並將輸出作為奇偶校驗位元 12保存在記憶體晶片 110 中。記憶體控制器 112 亦可為記憶體晶片14的子集中的每個記憶體晶片取位元1、執行互斥或運算,並將輸出作為奇偶校驗位元12保存在記憶體晶片110中。記憶體控制器112可繼續對資料的所有十六位元執行互斥或運算,並將相應的奇偶校驗位元12存儲在記憶體晶片110中。
在實施方式中,記憶體控制器112可包括奇偶校驗邏輯28,奇偶校驗邏輯28包括複數個互斥或(XOR)閘30以執行互斥或操作。XOR閘30的數量可等於記憶體晶片的寬度。例如,若記憶體晶片102、108、106、108、110的寬度為16位元,且四個記憶體晶片(例如,102、104、106、108)用於存儲資料10,則奇偶校驗邏輯28可包括十六個不同的四輸入互斥或閘30,每一位元一個閘。此外,XOR閘30可平行操作,且對每個位元同時執行按位元奇偶校驗。如此一來,奇偶校驗邏輯28可平行執行互斥或運算並產生十六個奇偶校驗位元12,如表200(圖2)所示。
現在參考圖2,其示出具有由奇偶邏輯28(圖1)為奇偶位元12(圖1)產生的ECC的示例表200。列202藉由對記憶體晶片102、104、106、108中的每一者的第一位元(例如,位元0、位元16、位元32、位元48)執行互斥或運算,來示出對位元64的互斥或運算。列204藉由對記憶體晶片102、104、106、108中的每一者的第二位元(例如,位元1、位元17、位元33、位元49)執行互斥或運算,來示出對位元65的互斥或運算。列206藉由對記憶體晶片102、104、106、108中的每一者的第三位元(例如,位元2、位元18、位元34、位元50)執行互斥或運算,來示出對位元66的互斥或運算。列208藉由對記憶體晶片102、104、106、108中的每一者的第四位元(例如,位元3、位元19、位元35、位元51)執行互斥或運算,來示出對位元67的互斥或運算。
列210藉由對記憶體晶片102、104、106、108中的每一者的第五位元(例如,位元4、位元20、位元36、位元52)執行互斥或運算,來示出對位元68的互斥或運算。列212藉由對記憶體晶片102、104、106、108中的每一者的第六位元(例如,位元5、位元21、位元37、位元53)執行互斥或運算,來示出對位元69的互斥或運算。列214藉由對記憶體晶片102、104、106、108中的每一者的第七位元(例如,位元6、位元22、位元38、位元54)執行互斥或運算,來示出對位元70的互斥或運算。列216藉由對記憶體晶片102、104、106、108中的每一者的第八位元(例如,位元7、位元23、位元39、位元55)執行互斥或運算,來示出對位元71的互斥或運算。列218藉由對記憶體晶片102、104、106、108中的每一者的第九位元(例如,位元8、位元24、位元40、位元56)執行互斥或運算,來示出對位元72的互斥或運算。列220藉由對記憶體晶片102、104、106、108中的每一者的第十位元(例如,位元9、位元25、位元41、位元57)執行互斥或運算,來釋出對位元73的互斥或運算。
列222藉由對記憶體晶片102、104、106、108中的每一者的第十一位元(例如,位元10、位元26、位元42、位元58)執行互斥或運算,來示出對位元74的互斥或運算。列224藉由對記憶體晶片102、104、106、108中的每一者的第十二位元(例如,位元11、位元27、位元43、位元59)執行互斥或運算,來示出對位元75的互斥或運算。列226藉由對記憶體晶片102、104、106、108中的每一者的第十三位元(例如,位元12、位元28、位元44、位元60)執行互斥或運算,來示出對位元76的互斥或運算。列228藉由對記憶體晶片102、104、106、108中的每一者的第十四位元(例如,位元13、位元29、位元45、位元61)執行互斥或運算,來示出對位元77的互斥或運算。列230藉由對記憶體晶片102、104、106、108中的每一者的第十五位元(例如,位元14、位元30、位元46、位元62)執行互斥或運算,來示出對位元78的互斥或運算。列230藉由對記憶體晶片102、104、106、108中的每一者的第十六位元(例如,位元15、位元31、位元47、位元63)執行互斥或運算,來示出對位元79的互斥或運算。
因此,為資料10的對應位元產生十六個奇偶校驗位元12(圖1)。若在互斥或運算中,奇數個輸入為真(例如,奇數個位元為「1」),則輸出為真(true),且奇偶校驗位元 12經設置為「1」。若在互斥或運算中,偶數個輸入為真(例如,偶數個位元為「1」),則輸出為偽(false),且奇偶校驗位 12 經設置為「0」。
參考圖1,記憶體控制器112可將資料10存儲在記憶體晶片14的子集中,其中第一16位元資料(例如,位元0-15)在記憶體晶片102中、第二16位元資料(例如,位元16-31)在記憶體晶片104中、第三16位元資料(例如,位元32-47)在記憶體晶片106中,第四16位元資料(例如,位元48-63)在記憶體晶片 108 中,且記憶體控制器 112 可將奇偶校驗位元 12 (例如,位元64-79) 存儲在記憶體晶片 110 中。因此,資料有效載荷經存儲在位元 0 到 63 中,而 ECC 經存儲在位元 64 到 79中。
記憶體控制器112亦可接收對資料10的讀取請求26。記憶體控制器112可對複數個記憶體晶片(例如,102、104、106、108、110)執行讀取操作,且可接收來自記憶體晶片14的子集(例如,102、104、106、108)的資料10和來自記憶體晶片110的奇偶校驗位元12。例如,若記憶體晶片102、104、108、110是16位元寬度且資料路徑是 64 位元,則記憶體控制器 112 可從記憶體晶片 102 接收第一16位元資料(例如,位元 0-15)、從記憶體晶片 104 接收第二16位元資料(例如,位元16-31)、從記憶體晶片106接收第三16位元資料(例如,位元32-47)、從記憶體晶片108接收第四16位元資料(例如,位元48-63),及從記憶體晶片110接收奇偶校驗位元12(例如,位元 64-79)。
記憶體控制器112亦可接收錯誤通知18,其指示UE 20出現在複數個記憶體晶片102、104、106、108、110中的一個或多個記憶體晶片中。錯誤通知18可指示複數個記憶體晶片102、104、106、108、110中的哪一個(或哪些)晶片具有UE 20。藉由接收錯誤通知18,可警告記憶體控制器112資料10或資料10的一部分是損壞的,且記憶體控制器112可防止損壞資料的使用。若一個記憶體晶片具有 UE 20,則記憶體控制器 112 可使用奇偶校驗邏輯28,來使用奇偶校驗位元12 從具有 UE 20 的記憶體晶片重建損壞資料並產生恢復資料 32。
在實施方式中,奇偶校驗邏輯28的XOR閘30可使用奇偶校驗位元12執行互斥或操作以重建損壞資料。因此,可使用產生奇偶校驗位元12的相同XOR閘30藉由重建位元和產生恢復資料32,來重新產生用於損壞資料的位元。互斥或閘30可使用來自剩餘記憶體晶片(例如,未發送錯誤通知的記憶體晶片)的資料10,來重新創建UE 20 所識別的記憶體晶片的損壞資料,並為UE 20所識別的記憶體晶片產生恢復資料32。奇偶校驗邏輯28決定將「0」或「1」添加到恢復資料32,以基於由 XOR閘 30對每個位元執行的XOR運算得到偶校驗(例如,偶數個輸入為真)。
此外,XOR閘30亦可從非功能性記憶體晶片重建資料。這稱為單裝置資料校正 (SDDC)。若記憶體晶片不起作用,則可在不接收UE 20的情況下藉由各種手段來偵測記憶體晶片(如偵測記憶體晶片對讀取命令沒有回應)。XOR閘30可平行操作,且可使用來自剩餘記憶體晶片(例如,沒有出現故障的記憶體晶片)的位元來執行互斥或操作以重建損壞資料。
現在參考圖3,其示出用於藉由奇偶校驗邏輯28 (圖1)使用單個記憶體晶片的奇偶校驗位元12 (圖1)來重建損壞資料的示例表300,其中該單個記憶體晶片識別出UE 20及/或不起作用。例如,若記憶體晶片104產生具有UE 20的錯誤通知18,則奇偶校驗邏輯28可使用來自記憶體晶片102、106和108的資料位元和來自記憶體晶片110的奇偶校驗位元12,來重建來自記憶體晶片104的損壞資料。
列 302 藉由對來自記憶體晶片 102、106、108、110 的第一位元 (例如,位元 0、位元 32、位元 48、位 元64)執行互斥或運算,來示出對位元 16 的互斥或運算。列304藉由對來自記憶體晶片102、106、108、110的第二位元(例如,位元1、位元33、位元49、位元65)執行互斥或運算,來示出對位元17的互斥或運算。列306藉由對來自記憶體晶片102、106、108、110的第三位元(例如,位元2、位元34、位元50、位元66)執行互斥或運算,來示出對位元18的互斥或運算。列308藉由對來自記憶體晶片102、106、108、110的第四位元(例如,位元3、位元35、位元51、位元67)執行互斥或運算,來示出對位元19的互斥或運算。列 310藉由對來自記憶體晶片 102、106、108、110 的第五位元(例如,位元 4、位元 36、位元 52、位元 68)執行互斥或運算,來示出對位元 20 的互斥或運算。列312藉由對來自記憶體晶片102、106、108、110的第六位元(例如,位元5、位元37、位元53、位元69)執行互斥或運算,來示出對位元21的互斥或運算。
列 314 藉由對來自記憶體晶片 102、106、108、110 的第七位元(例如,位元 6、位元 38、位元 54、位元 70)執行互斥或運算,來示出對位元 22 的互斥或運算。列316藉由對來自記憶體晶片102、106、108、110的第八位元(例如,位元7、位元39、位元55、位元71)執行互斥或運算,來示出對位元23的互斥或運算。列318藉由對來自記憶體晶片102、106、108、110的第九位元(例如,位元8、位元40、位元56、位元72)執行互斥或運算,來示出位元24的互斥或運算。列320藉由對來自記憶體晶片102、106、108、110的第十位元(例如,位元9、位元41、位元57、位元73)執行互斥或運算,來示出位元25的互斥或運算。
列 322 藉由對來自記憶體晶片 102、106、108、110 的第十一位 元(例如,位元 10、位元 42、位元 58、位元 74)執行互斥或運算,來示出對位元26的互斥或運算。列324藉由對來自記憶體晶片 102、106、108、110 的第十二位元(例如,位元11、位元43、位元59、位元 75)執行互斥或運算,來示出對位元27的互斥或運算。列326藉由對來自記憶體晶片102、106、108、110的第十三位元(例如,位元12、位元44、位元60、位元76)執行互斥或運算,來示出對位元28的互斥或運算。列328藉由對來自記憶體晶片102、106、108、110的第十四位元(例如,位元13、位元45、位元61、位元77)執行互斥或運算,來示出對位元29的互斥或運算。列330藉由對來自記憶體晶片102、106、108、110的第十五位元(例如,位元14、位元46、位元62、位元78)執行互斥或運算,來示出對位元30的互斥或運算。列332藉由對來自記憶體晶片102、106、108、110的第十六位元(例如,位元15、位元47、位元63、位元79)執行互斥或運算,來示出對位元31的互斥或運算。
因此,為記憶體晶片 104 的恢復資料 32 產生 16個位元 (例如,位元 16-31)。奇偶校驗邏輯28決定向恢復資料 32 添加「0」或「1」,以基於對每個位元執行的互斥或運算產生偶校驗(例如,偶數個輸入為真)。
參考圖1,記憶體控制器112允許藉由UE 20從丟失資料的一個記憶體晶片來重建損壞資料,或若記憶體晶片不起作用則從丟失資料10來重建損壞資料。因此,記憶體控制器112不是接收UE 20出現的錯誤通知18,而是提供一種藉由重建損壞資料來校正UE 20的方法。因此,主機伺服器系統接收恢復資料32(而不是UE 20),從而使記憶體控制器112降低伺服器系統處的UE率。
若多於一個記憶體晶片具有 UE 20 (例如,兩個或更多個記憶體晶片指示出現UE 20),則記憶體控制器 112 可能無法重建損壞資料,且可為資料10產生 UE 20以提供警報,其警報資料10是損壞的。
記憶體控制器112亦可決定SDC 22是否出現在資料10中。記憶體控制器112可能不會從記憶體晶片102、104、106、108、110接收到資料10中出現錯誤的任何指示。然而,記憶體控制器112可使用奇偶校驗邏輯28來驗證未偵測到的SDC 22沒有出現在資料10中。
記憶體控制器112可使用奇偶校驗邏輯28對資料10執行奇偶校驗,以驗證對回應於讀取請求26接收的資料10的互斥或運算與所接收的奇偶校驗位元12匹配。例如,XOR閘30可對記憶體晶片14的子集(例如,102、104、106、108)中的每個記憶體晶片的資料10的十六位元執行互斥或運算,並且比較互斥或運算的輸出與從記憶體晶片 110 所接收的相應的奇偶校驗位元 12。若互斥或運算的輸出與奇偶校驗位元12的比較匹配,則記憶體控制器 112 不會報告資料 10 的錯誤,且伺服器系統可使用資料 10。
若互斥或運算的輸出與記憶體晶片14的子集中的記憶體晶片之一者的奇偶校驗位元12的比較不匹配,則記憶體控制器112可識別SDC 22 (未偵測到的錯誤)出現在資料10中,且可產生指示資料10被破壞的UE 20。因此,記憶體控制器112可藉由識別SDC 22並改為產生UE 20,來降低伺服器系統中的SDC 22率。
若(例如,在多於一個晶片中)出現多個 SDC 22,則可藉由XOR運算的輸出與奇偶校驗位元12不匹配的比較來識別錯誤,並可產生 UE 20。此外,多個SDC 22出現時,記憶體控制器112可能或可能不能夠識別SDC 22,並且在某些情況下SDC 22可能保持未被偵測到。
因此,記憶體控制器112可用於藉由恢復或重建損壞資料來減少UE 20的數量,來改善UE 20的數量。記憶體控制器1112也可藉由識別SDC 22和產生UE 20來代替SDC 22,來改善SDC 22率。
現在參考圖4,其示出示例性的表格400,示例性的表格400具有不同的錯誤通知18 (圖1) 及/或由記憶體控制器112識別到的任何未偵測到的錯誤,如SDC 22(圖1);不同的錯誤通知18(圖1)係在記憶體控制器112 (圖1)處從記憶體庫100(圖1)中的不同的記憶體晶片102、104、106、108、110(圖1)接收到的。表格400亦示出回應於錯誤通知18和/或偵測到任何SDC 22,來自記憶體控制器112的資料10(圖1)的不同的結果及/或產出。
例如,行402可指示在記憶體控制器112處從記憶體晶片102接收到的任何錯誤通知18與由記憶體晶片102針對資料10的位元0至位元15所識別的任何UE 20。此外,行402可指示對於資料10的位元0到位元15的任何SDC 22是否出現。
行404可指示在記憶體控制器112處從記憶體晶片104接收到的任何錯誤通知18與由記憶體晶片104針對資料10的位元16至位元31所識別的任何UE 20。此外,行404可指示對於資料10的位元16到位元31的任何 SDC 22 是否出現。
行406可指示在記憶體控制器112處從記憶體晶片106接收到的任何錯誤通知18與由記憶體晶片106針對資料10的位元32至位元47所識別的任何UE 20。此外,行406可指示對於資料 10 的位元32至位元47的任何 SDC 22 是否出現。
行408可指示在記憶體控制器112處從記憶體晶片108接收到的任何錯誤通知18與由記憶體晶片108針對資料10的位元48至位元63所識別的任何UE 20。此外,行408可指示對於資料 10 的位元48至位元63的任何 SDC 22 是否出現。
行410可指示在記憶體控制器112處從記憶體晶片110接收到的任何錯誤通知18與由記憶體晶片110針對奇偶校驗位元12的位元64至位元79所識別的任何UE 20。此外,行410可指示對於奇偶校驗位元 12 的位元 64 至位元79的任何 SDC 22是否出現。
行412可基於錯誤通知18及/或任何SDC 22的出現,來指示來自記憶體控制器112的資料10的不同的結果及/或產出。表400的列示出不同的錯誤通知18;可從不同的記憶體晶片102、104、106、108接收到不同的錯誤通知18和相應的結果。
例如,若沒有從記憶體晶片102、104、106、108、110接收到錯誤通知18且記憶體控制器112不能偵測到任何SDC 22,則為來自記憶體控制器112的資料10輸出的結果沒有錯誤;因此,資料10可由例如伺服器系統或資料中心使用。當兩個或更多記憶體晶片遭受 SDC 且損壞資料在奇偶校驗計算中完全相互抵消時,可能會出現這種情況。
另一個示例可包括下文所述:若錯誤通知18指示記憶體晶片102、104、106、108、110中的任何一者中的單個UE 20,則記憶體控制器112可產生恢復資料32,如上所述;且從記憶體控制器112輸出的資料10的結果及/或產出是恢復資料32,且恢復資料32可由例如伺服器系統或資料中心使用。
另一個示例可包括下文所述:若錯誤通知18指示來自記憶體晶片102、104、106、108、110的任何組合的多個UE 20(例如,兩個或更多個UE 20),則記憶體控制器112可能不能產生恢復資料32,且來自記憶體控制器112的資料10的結果及/或產出是指示資料10中出現UE 20的輸出。因此,可通知伺服器系統或資料中心資料10或資料10的一部分是損壞的,以防止使用資料10。
另一個示例可包括下文所述:若記憶體控制器112沒有從記憶體晶片102、104、106、108、110中的任何一者接收到任何的錯誤通知18,但來自記憶體晶片102、104、106、108、110中的一者的單個SDC 22已出現,則來自記憶體控制器112的資料10的結果及/或產出可從SDC 22改變為指示資料10中出現UE 20的輸出。因此,代替例如在不知情的情況下使用損壞資料的伺服器系統或資料中心,可通知伺服器系統或資料中心資料或資料的一部分是損壞的,以防止使用資料10。
另一個示例可包括下文所述:若記憶體控制器112沒有從記憶體晶片102、104、106、108、110中的任何一者接收到任何的錯誤通知18,但來自記憶體晶片102、104、106、108、110的任何組合的多個SDC 22(例如,兩個或更多個SDC 22)已出現,則來自記憶體控制器112的資料10的結果及/或產出可從SDC 22改變為指示資料10中出現UE 20的輸出。此外,記憶體控制器112可能無法偵測到多個SDC 22,且資料10的結果及/或產出可能仍然是SDC 22(例如,伺服器系統或資料中心可能不自覺地使用損壞資料)。
另一個示例可包括下文所述:若記憶體控制器112從記憶體晶片102、104、106、108、110中的任一者接收到錯誤通知18(錯誤通知18指示UE 20和一或多個SDC 22出現在記憶體晶片 102、104、106、108、110中的一或多者上),則記憶體控制器 112 可能無法偵測到出現的 SDC 22,且資料 10 的結果及/或產出可能仍然是 SDC 22(例如,伺服器系統或資料中心可能不自覺地使用損壞資料)。
另一個示例可包括下文所述:若記憶體控制器112從記憶體晶片102、104、106、108、110中的任何一者接收到指示多個UE 20的多個錯誤通知18(例如,兩個或更多個錯誤通知18)和由記憶體控制器112偵測到的出現在一個或多個記憶體晶片102、104、106、108、110上的一或多個SDC 22,則來自記憶體控制器112的資料10的結果及/或產出可從SDC 22改變為指示UE 20出現在資料10中的輸出。記憶體控制器112可以能夠這樣做(因為多個UE導致UE 20且不會嘗試校正資料)。因此,代替例如在不知情的情況下使用損壞資料的伺服器系統或資料中心,可通知伺服器系統或資料中心資料或資料的一部分是損壞的,以防止使用資料10。
因此,記憶體控制器112可藉由減少UE 20的數量(其係藉由產生恢復資料32)和藉由減少SDC 22 的數量(其係藉由產生UE 20),來改善記憶體晶片102、104、106、108和110的UE 20率和SDC 22率。因此,記憶體控制器112可改善記憶體晶片102、104、106、108、110的錯誤校正。
現在參考圖5,其示出具有複數個具有內建的錯誤偵測16以用於錯誤校正的記憶體晶片502、504、506、508、510的記憶體庫500。雖然示出五個記憶體晶片502、504、506、508、510,但在記憶體庫500中可使用任意數量的記憶體晶片。在實施方式中,記憶體晶片502、504、506、508、510是DRAM記憶體晶片。在此示例中,記憶體晶片502、504、506、508、510可共享單個資料匯流排,因此要求一次只能讀取或寫入單一個晶片。
記憶體晶片 14的子集(例如,504、506、508、510)可用於存儲資料10。一個附加記憶體晶片 502 (例如, n+1)用於奇偶校驗位元12。如此一來,記憶體庫500可包括寬度為十六位元的五個記憶體晶片(例如,502、504、506、508、510),其中記憶體晶片14的子集中的四個記憶體晶片(例如,504、506、508、510) 用於資料 10 的存儲且一個冗餘記憶體晶片 (例如,502) 用於存儲奇偶校驗位元12。
複數個記憶體晶片502、504、506、508、510可用垂直方向佈置,且可共享與記憶體控制器112通訊的相同資料匯流排。對於給定的存取,只有一個記憶體晶片是活動的,且主動記憶體晶片提供及/或存儲用於一次存取的所有資料。例如,存取單元是高速快取線,而整個高速快取線來自一個主動記憶體晶片。奇偶校驗位元在多個高速快取線上運算。如此一來,一次可從不同的記憶體晶片502、504、506、508、510獲得資料10的僅十六位元及/或奇偶校驗位元12,以供記憶體控制器112用於資料10的寫入請求24及/或資料10的讀取請求26。讀取及/或寫入資料10可能更耗時,因為記憶體控制器112一次僅讀取及/或寫入一個記憶體晶片。
在開始正常操作之前,記憶體控制器112可藉由在所有記憶體晶片502、504、506、508、510中寫入「0」,來最初地將記憶體庫500中的所有記憶體晶片502、504、506、508、510歸零。隨後,對於寫入請求24,記憶體控制器112可針對給定的寫入請求寫入記憶體晶片的子集(例如,504、506、508、510)中的一個記憶體晶片,且可藉由先讀取經存儲在該記憶體晶片中的現有奇偶校驗,使用奇偶校驗邏輯28的XOR閘30來為相應的記憶體晶片產生奇偶校驗位元12。要寫入的新的奇偶校驗是作為新資料和現有奇偶校驗的XOR運算產生的。記憶體控制器112可更新正在出現寫入的記憶體晶片的奇偶校驗位元12,而不更新剩餘記憶體晶片的奇偶校驗位元12。
對於讀取請求 26,記憶體控制器 112 可先自記憶體晶片14(例如,504、506、508及510)的選定的記憶體晶片(來自記憶體晶片504的位元48至位元63)讀取資料10。若選擇的記憶體晶片沒有報告UE 20,則可完成讀取請求。若出現SDC,則在這種情況下,記憶體控制器 112 將無法偵測到此SDC。
若報告UE,或若記憶體控制器112希望檢查 SDC,則記憶體控制器 112 可從 502、504、506、508 和 510 中的剩餘記憶體晶片讀取資料,並使用 XOR 閘 30 來執行當讀取出現時,每個記憶體晶片的資料10(例如,位元48到位元63)和對應的奇偶校驗位元12的XOR函數。因此,若記憶體控制器112從記憶體晶片502、504、506、508、510中的任何一者接收到具有UE 20的錯誤通知18,則記憶體控制器112可重建資料10以產生恢復資料32。
若記憶體控制器112沒有從記憶體晶片502、504、506、508、510中的任何一者接收到任何錯誤通知18,則記憶體控制器112可決定是否執行檢查以驗證是否有任何SDC 22出現在資料10中。記憶體控制器112可利用從每個記憶體晶片502、504、506、508讀取的資料並對每個記憶體晶片單獨執行XOR運算,並將XOR運算的輸出與奇偶校驗位元12進行比較,以決定是否有SDC 22 出現在資料 10 中。
然而,一次讀取每個記憶體晶片 502、504、506、508、510 並一次一次使用奇偶校驗位元 12 執行驗證以偵測是否出現任何 SDC 22 的效能延遲可能會阻止記憶體控制器112不執行SDC 22驗證。因此,記憶體控制器112可決定是否執行SDC驗證。
記憶體庫500可用於藉由產生用於報告UE 20的錯誤通知18的恢復資料32來降低UE 20的錯誤率。此外,可使用記憶體庫500以基於記憶體控制器112決定是否執行SDC 22偵測,來降低SDC 22率。
現在參考圖6,其示出用於將資料10 (圖1)和奇偶校驗位元12 (圖1)寫入記憶體庫100 (圖1)中的示例性的方法600。可由記憶體控制器112(圖1)執行方法600的動作。可參考圖1的架構在下文討論方法600的動作。
在602處,方法600可包括以下步驟:接收寫入請求以將資料寫入至複數個記憶體晶片中。記憶體庫100可包括最多 n(其中 n是正整數)個的複數個記憶體晶片(例如,102、104、106、108、110)。記憶體晶片(例如,102、104、106、108、110)可以是包括錯誤偵測器16的任何記憶體晶片,錯誤偵測器16可偵測資料10中何時出現錯誤。在實施方式中,記憶體晶片(例如,102、 104、106、108、110)可以是DRAM記憶體晶片。例如,記憶體控制器112可接收寫入請求24以將資料10寫入記憶體庫100中的複數個記憶體晶片。可將記憶體晶片(例如,102、104、106、108、110)佈置成水平方向,且記憶體晶片可平行操作。因此,資料10的所有位元可為一次可用以供記憶體控制器112用於資料10的寫入請求24。
在604處,方法600可包括以下步驟:決定資料的奇偶校驗位元。記憶體控制器112可獲取資料的位元,且可執行互斥或運算以產生奇偶校驗位元12。例如,若記憶體晶片(例如,102、104、108、110)是16位元寬度且資料路徑是六十四位元,記憶體控制器112可為記憶體晶片14的子集中(例如,102、104、106、108)中的每個記憶體晶片取十六位元並執行互斥或運算,並將輸出作為奇偶校驗位元12保存在記憶體晶片110中。
在實施方式中,記憶體控制器112可包括奇偶校驗邏輯28,其包括複數個XOR閘30以執行互斥或操作。XOR閘30的數量可等於記憶體晶片的寬度。例如,若記憶體晶片(例如,102、108、106、108、110)的寬度為十六位元,並使用四個記憶體晶片(例如,102、108、106、108)來存儲資料10,則奇偶校驗邏輯28可包括十六個不同的四輸入互斥或閘30,每一位元一個閘。此外,互斥或閘30可平行操作且對每個位元同時執行按位元奇偶校驗。如此一來,奇偶校驗邏輯28可平行執行互斥或運算並且一次產生十六個奇偶校驗位元12。若在互斥或運算中奇數個輸入為真(例如,奇數個位元為「1」),則輸出為真,並將奇偶校驗位元 12 設置為「1」。若在互斥或運算中偶數個輸入為真(例如,偶數個位元為「1」),則輸出為偽,並將奇偶校驗位元 12 設置為「0」。
在606處,方法600可包括以下步驟:將資料存儲在複數個記憶體晶片的子集中。記憶體晶片14的子集(例如,102、104、106、108)可用於存儲資料10。記憶體晶片14的子集可比記憶體庫100中的記憶體晶片的總數少一個(例如, n-1)。與包括在記憶體晶片14的子集中的記憶體晶片不同的附加記憶體晶片(例如,110)可用於存儲奇偶校驗位元12,以驗證資料10的真實性並校正在資料10中可能已經出現在資料10中的任何錯誤。記憶體晶片14的子集中所包括的記憶體晶片的數量可基於資料的通道寬度。例如,若資料的通道寬度是 64 位元且記憶體晶片是 16 位元寬度,則記憶體晶 14的子集包括四個記憶體晶片且一個附加記憶體晶片係用於奇偶校驗位元12。因此,記憶體庫100可包括具有十六位元寬度的五個記憶體晶片,其中記憶體晶片14的子集中(例如,102、104、106、108)的四個記憶體晶片用於資料10的存儲。記憶體控制器112可將資料10存儲在記憶體晶片14的子集中,其中第一16位元資料(例如,位元0-15)在記憶體晶片102中、第二16位元資料(例如,位元16-31)在記憶體晶片104中、第三16位元資料(例如,位元32-47)在記憶體晶片106中,及第四16位元資料(例如,位元48-63)在記憶體晶片108中。
在608處,方法600可包括以下步驟:將奇偶校驗位元存儲在複數個記憶體晶片中的一個記憶體晶片中。該個記憶體晶片可不同於記憶體晶片子集中包括的記憶體晶片。記憶體控制器112可將奇偶校驗位元12(例如,位元64-79)存儲在記憶體晶片110中。因此,資料10有效載荷在位元0到位元63中,且ECC在位元64到位元79中。
因此,方法600可用於決定存儲在記憶體晶片14的子集中的資料的逐位元奇偶校驗,並將資料和奇偶校驗位元12存儲在記憶體庫100中。
現在參考圖7,其示出用於從記憶體庫100 (圖1)讀取資料10 (圖1)並恢復損壞資料的示例性的方法700。可由記憶體控制器112(圖1)執行方法700的動作,且可參考圖1的架構在下文討論方法700的動作。
在702處,方法700可包括以下步驟:接收對資料的讀取請求。記憶體控制器112可接收對存儲在記憶體庫100的記憶體晶片14的子集(例如,102、104、106、108)中的資料10的讀取請求26。記憶體控制器112可在用於資料10的複數個記憶體晶片(例如,102、104、106、108、110)執行讀取操作。可用水平方向佈置記憶體晶片(例如,102、104、106、108、110),且可平行操作此等記憶體晶片。如此一來,資料10的所有位元可一次為可用的以供記憶體控制器112用於資料10的讀取請求26。
在704處,方法700可包括以下步驟:回應於讀取請求,從複數個記憶體晶片接收資料和用於資料的奇偶校驗位元。記憶體控制器112可從記憶體晶片14的子集(例如,102、104、106、108)接收資料10,且可回應於讀取請求26從記憶體晶片110接收奇偶校驗位元12。例如,若記憶體晶片102、104、108、110是十六位元寬度且資料路徑是六十四位元,則記憶體控制器112可從記憶體晶片102接收第一16位元資料(例如,位元0-15)、從記憶體晶片104接收第二16位元資料(例如,位元16-31)、從記憶體晶片106接收第三16位元資料(例如,位元32-47),及從記憶體晶片108接收第四16位元資料(例如,位元48-63),和自記憶體晶片110接收奇偶校驗位元12(例如,位元64-79)。
在706處,方法700可包括以下步驟:決定是否接收錯誤通知,錯誤通知係指示UE出現。記憶體控制器112亦可接收錯誤通知18,錯誤通知18係指示UE 20出現在複數個記憶體晶片(例如,102、104、106、108、110)中的一個或多個記憶體晶片中。錯誤通知18可指示複數個記憶體晶片(例如,102、104、106、108、110)中的哪一個或多個記憶體晶片具有UE 20。藉由接收錯誤通知18,可警告記憶體控制器112資料10或資料10的一部分是損壞的,且記憶體控制器112可防止使用損壞資料。若一個記憶體晶片具有 UE 20,則記憶體控制器112可使用奇偶校驗邏輯28來使用奇偶校驗位元12從具有UE 20 的記憶體晶片重建損壞資料,並產生恢復資料32。
在708處,方法700可包括以下步驟:回應於決定沒有接收到錯誤通知來決定是否出現了SDC。若記憶體控制器112沒有從複數個記憶體晶片(例如,102、104、106、108、110)接收到任何錯誤通知18,則記憶體控制器112還可決定資料10中是否出現了SDC 22。記憶體控制器112可能不會從記憶體晶片102、104、106、108、110接收到資料10中出現錯誤的任何指示。然而,記憶體控制器112可使用奇偶校驗邏輯28來驗證未偵測到的SDC 22沒有出現在資料10中。
記憶體控制器112可使用奇偶校驗邏輯28對資料10執行奇偶校驗,以驗證對回應於讀取請求26所接收的資料10的互斥或運算與所接收的奇偶校驗位元12匹配。例如,XOR閘30可對記憶體晶片14的子集(例如,102、104、106、108)中的每個記憶體晶片的資料10的十六位元執行互斥或運算,且可比較互斥或運算的輸出與從記憶體晶片110接收的相應的奇偶校驗位元12。
在710處,方法700可包括以下步驟:回應於決定資料中沒有出現SDC,為資料輸出:沒有錯誤。若比較互斥或運算的輸出與奇偶校驗位元12是匹配的,則記憶體控制器112不會報告資料10的錯誤,且伺服器系統可使用資料10。
在712處,方法700可包括以下步驟:回應於決定資料中出現SDC,輸出:UE出現。若比較互斥或運算的輸出與記憶體晶片14的子集中的記憶體晶片中之一者的奇偶校驗位元12是不匹配的,則記憶體控制器112可識別在資料10中出現的SDC 22(未偵測到的錯誤),且可產生具有UE 20的輸出,其指示資料10或資料10的一部分被破壞。因此,記憶體控制器112可藉由識別SDC 22並改為產生UE 20來降低伺服器系統中的SDC 22率。
在714處,方法700可包括以下步驟:決定是否可重建損壞資料。若一個記憶體晶片具有 UE 20,則記憶體控制器 112 可能能夠使用奇偶校驗位元12重新創建損壞資料。
若不能重建損壞資料,則方法700可返回到712,並輸出:UE出現。若多於一個記憶體晶片具有UE 20(例如,兩個或更多個記憶體晶片指示出現UE 20),則記憶體控制器112可能無法重建損壞資料,且可針對資料10產生指示UE 20的輸出以提供警報,其警報資料10是損壞的。
在716處,方法700可包括以下步驟:回應於決定可重建損壞資料,產生恢復資料。記憶體控制器112可使用奇偶校驗邏輯28,使用奇偶校驗位元12從具有UE20的記憶體晶片重建損壞資料並產生恢復資料32。
在實施方式中,奇偶校驗邏輯 28的 XOR閘30 可執行互斥或運算,以使用奇偶校驗位元12重建損壞資料。因此,產生奇偶校驗位元12的相同XOR閘30可重新產生用於損壞資料的位元,以重建位元並產生恢復資料32。互斥或閘30可使用來自剩餘記憶體晶片的資料10,以為具有UE 20之經識別的記憶體晶片重新創建損壞資料,並為具有UE 20之經識別的記憶體晶片產生恢復資料32。奇偶校驗邏輯28決定將「0」或「1」添加到恢復資料32,以導致基於XOR閘30對每一位元執行的互斥或運算的偶校驗(例如,偶數個輸入為真)。
此外,即使未接收到 UE 20,XOR閘30亦可從非功能性記憶體晶片重建資料(例如,單個裝置資料校正 (SDDC))。XOR閘30可平行操作,且可使用來自剩餘記憶體晶片的位元和奇偶校驗位元12執行互斥或操作以重建損壞資料。
在718處,方法700可包括以下步驟:發送恢復資料以供使用。記憶體控制器112可將恢復資料32發送到主機系統以供使用,主機系統例如為但不限於主機伺服器系統。因此,記憶體控制器112不是接收UE 20出現的錯誤通知18,而是提供一種藉由重建損壞資料來校正UE 20的方法。因此,主機伺服器系統接收恢復資料32(代替UE 20)以使用,從而導致記憶體控制器112降低伺服器系統處的UE率。
如此一來,方法700可用於降低記憶體庫100中的UE率和SDC率。
除非具體描述為以特定方式實施,否則本文所揭露的技術可在硬體、軟體、韌體或其任何組合中實施。經描述為模組和組件等的任何特徵也可在整合邏輯裝置中一起實施,或作為分立但可互操作的邏輯裝置單獨實施。若以軟體實施,則這些技術可至少部分地藉由具有存儲在其上的電腦可執行指令的非暫時性電腦可讀取媒體來實施,當由至少一個處理器執行此等電腦可執行指令時,執行本文所揭露的一些或所有步驟、操作、動作或其他功能。可將指令組織成常式、程式、物件、組件和資料結構等,此等常式、程式、物件、組件、資料結構可執行特定任務及/或實施特定資料類型,且可在各種實施例中根據需要進行組合或分散。
術語「處理器」可指通用單晶片或多晶片微處理器(例如,高級 RISC (精簡指令集電腦)機 (ARM))、專用微處理器(例如,數位信號處理器(DSP))、微控制器和可程式化閘陣列等。處理器可以是中央處理單元(CPU)。在一些實施例中,處理器的組合(例如,ARM和DSP)可用於實施本文所揭露的一些或所有技術。
術語「記憶體」可指能夠存儲電子資訊的任何電子組件。在一些上下文中,術語「記憶體」可包括揮發性或非揮發性記憶體。記憶體可體現為隨機存取記憶體(RAM)、唯讀記憶體(ROM)、磁盤存儲媒體、光學存儲媒體、RAM中的快閃記憶體元件、包括在處理器的板載記憶體、可擦除式的可程式化的唯讀記憶體(EPROM)、電子可擦除式的可程式化唯讀記憶體(EEPROM)記憶體和暫存器等,及包括上述的組合。
在不背離申請專利範圍的範疇的情況下,本文描述的方法的步驟、操作及/或動作可相互互換。換言之,除非所描述的方法的正常運行需要特定的步驟、操作及/或動作順序,否則可在不背離申請專利範圍的範疇的情況下修改特定步驟、操作及/或動作的順序及/或使用。
術語「決定」 (及其語法變體)可涵蓋多種動作。例如,「決定」可包括計算、處理、推導、調查、查找(例如,在表格、資料庫或其他資料結構中查找)和查明等。此外,「決定」可包括接收(例如,接收資訊)和存取(例如,存取記憶體中的資料)等。此外,「決定」可包括解決、選擇、挑選和建立等。
術語「包括」、「包含」和「具有」旨在具有包容性,並且意味著除了所列元素之外可存在其他元素。此外,應當理解,對本申請案的「一個實施例」或「一實施例」的引用不旨在經解釋為排除亦包含所述特徵的附加實施例的存在。例如,關於本文中的實施例所描述的任何元件或特徵可與本文描述的任何其他實施例的任何元件或特徵在兼容的情況下組合。
在不背離本申請案的精神或特徵的情況下,可用其他特定形式體現本申請案。所描述的實施例被認為是說明性的而不是限制性的。因此,本申請案的範圍由所附申請專利範圍(而不是由前文描述)指示。在與申請專利範圍等效的含義和範圍內的變化將被包含在申請專利範圍的範疇內。
10:資料 12:奇偶校驗位元 14:記憶體晶片 16:錯誤偵測 18:錯誤通知 20:UE 22:SDC 24:寫入請求 26:讀取請求 28:奇偶校驗邏輯 30:XOR閘 32:恢復資料 100:記憶體庫 102~110:記憶體晶片 112:記憶體控制器 200:示例表 202~232:列 300:示例表 302~332:列 400:表格 402~412:行 502~510:記憶體晶片 600:方法 602~608:步驟 700:方法 702~718:步驟
為了描述能夠獲得本申請案的上述和其他特徵的方式,將參考附圖中示出的具體實施例來進行更具體的描述。為了更好地理解,在各個附圖中,相同的元件用相同的元件符號表示。理解附圖描繪了一些示例性的實施例,將藉由使用附圖以附加的具體性和細節來描述和解釋實施例,其中:
圖1示出根據本申請案的實施方式之具有內建的錯誤偵測以用於錯誤校正的記憶體晶片的示例性的記憶體庫。
圖2示出說明根據本申請案的實施方式的錯誤校正碼(ECC)的示例表。
圖3示出說明根據本申請案的實施方式的資料恢復的示例表。
圖4示出示例性的表格,其示出了根據本申請案的實施方式之不同的不可修正的錯誤(UE)和無聲資料損壞(SDC)的結果。
圖5示出根據本申請案的實施方式的示例性的記憶體庫,其具有內建的錯誤偵測以用於錯誤校正的垂直記憶體晶片。
圖6示出根據本申請案的實施方式之用於寫入資料和奇偶校驗位元的示例性的方法。
圖7示出了根據本申請案的實施方式之用於讀取資料和恢復損壞資料的示例性的方法。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
10:資料
12:奇偶校驗位元
14:記憶體晶片
16:錯誤偵測
18:錯誤通知
20:UE
22:SDC
24:寫入請求
26:讀取請求
28:奇偶校驗邏輯
30:XOR閘
32:恢復資料
100:記憶體庫
102~110:記憶體晶片
112:記憶體控制器

Claims (20)

  1. 一種系統,包括: 複數個具有內建的錯誤偵測的記憶體晶片,其中該等記憶體晶片的一子集存儲資料,且與該等記憶體晶片的該子集不同的一個記憶體晶片存儲奇偶校驗位元;及 一記憶體控制器,該記憶體控制器與該複數個記憶體晶片通訊,其中該記憶體控制器可操作以執行以下操作: 接收對該資料的一寫入請求; 藉由對該資料的每一位元執行一互斥或(exclusive OR)運算來決定該等奇偶校驗位元,並將該等奇偶校驗位元存儲在該個記憶體晶片中;及 基於每個記憶體晶片的一位元寬度,將該資料存儲在該等記憶體晶片的該子集中。
  2. 如請求項1所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 接收對該資料的一讀取請求;及 回應於該讀取請求,接收來自該等記憶體晶片的該子集的該資料、接收來自該個記憶體晶片的該等奇偶校驗位元,及接收來自該複數個具有內建的錯誤偵測的記憶體晶片中的任何一者的一指示,該指示係指示一不可修正的錯誤(UE)是否出現在該資料中。
  3. 如請求項2所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 識別發送該UE出現的該指示的一記憶體晶片;及 藉由使用該等奇偶校驗位元為該記憶體晶片重建損壞資料,以為該記憶體晶片產生恢復資料。
  4. 如請求項3所述的系統,其中該記憶體控制器進一步可操作以藉由以下操作產生該恢復資料: 將該等奇偶校驗位元與來自未發送指示的該複數個記憶體晶片的該資料進行一互斥或(exclusive OR)運算; 基於該互斥或運算來決定是對該記憶體晶片的該恢復資料的一位元加一還是加零以產生一偶校驗。
  5. 如請求項2所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 識別發送該UE出現的該指示的複數個記憶體晶片;及 輸出該UE出現的一結果,該結果指示該資料是損壞的。
  6. 如請求項1所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 接收對該資料的一讀取請求; 回應於該讀取請求,接收來自該等記憶體晶片的該子集的該資料、接收來自該個記憶體晶片的該等奇偶校驗位元,及接收讀取來自該等記憶體晶片的該子集的該資料時沒有出現錯誤的一指示;及 驗證在該複數個記憶體晶片中的任何一者中的該資料中是否出現無聲資料損壞。
  7. 如請求項6所述的系統,其中該記憶體控制器進一步可操作以驗證該無聲資料損壞是否由以下操作而出現: 對來自該等記憶體晶片的該子集的該資料執行一互斥或(exclusive OR)運算; 將該互斥或運算的一輸出與該等奇偶校驗位元進行比較;及 基於該互斥或運算的該輸出與該等奇偶校驗位元之間未出現的一匹配,發送出現一不可修正的錯誤(UE)的一結果,該結果指示該資料是損壞的。
  8. 如請求項7所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 基於該互斥或運算的該輸出與該等奇偶校驗位元之間出現的一匹配,發送一結果,該結果指示該資料中沒有出現錯誤。
  9. 如請求項1所述的系統,其中該複數個記憶體晶片以一水平方向排列且平行操作。
  10. 如請求項1所述的系統,其中該記憶體控制器包括一奇偶校驗邏輯,該奇偶校驗邏輯具有複數個平行操作的互斥或邏輯閘,該複數個互斥或邏輯閘決定用於該資料的該等奇偶校驗位元。
  11. 如請求項10所述的系統,其中該複數個互斥或邏輯閘的一數量等於該複數個記憶體晶片中的每個記憶體晶片的該位元寬度的數量。
  12. 如請求項1所述的系統,其中該複數個記憶體晶片中的記憶體晶片的一數量係基於一資料有效載荷的一通道寬度和該複數個記憶體晶片中的每個記憶體晶片的該位元寬度。
  13. 如請求項12所述的系統,其中該記憶體晶片的該數量為5、該通道寬度為64位元,及每個記憶體晶片的該位元寬度為16位元。
  14. 一種系統,包括: 複數個具有內建的錯誤偵測的記憶體晶片,該複數個具有內建的錯誤偵測的記憶體晶片以共享一單個資料匯流排的一垂直方向排列,其中該記憶體晶片的一子集存儲資料,而與該記憶體晶片的該子集不同的一記憶體晶片存儲奇偶校驗位元;及 一記憶體控制器,該記憶體控制器與該複數個記憶體晶片通訊,其中該記憶體控制器係可操作的以執行以下操作: 接收對該資料的一寫入請求,其中該記憶體控制器為該寫入請求寫入至該記憶體晶片的該子集的一個記憶體晶片; 藉由讀取經存儲在該記憶體晶片中的已有的奇偶校驗位元,並對該資料和該等已有的奇偶校驗位元進行一互斥或(exclusive OR)運算,來決定用於該資料的該等奇偶校驗位元;及 更新該記憶體晶片的該子集的該個記憶體晶片的該奇偶校驗位元。
  15. 如請求項14所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 接收對該等記憶體晶片的該子集的一選定的記憶體晶片的該資料的一讀取請求; 回應於該讀取請求,對該選定的記憶體晶片執行一讀取操作;及 決定從該選定的記憶體晶片讀取該資料時是否出現一不可修正的錯誤(UE)。
  16. 如請求項15所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 回應於該UE出現的一指示,讀取來自該等記憶體晶片的該子集中的該剩餘記憶體晶片的該資料和該記憶體晶片中的該等奇偶校驗位元;及 藉由對該等奇偶校驗位元和來自該剩餘記憶體晶片的該資料執行一互斥或(exclusive)運算,並基於該互斥或運算決定是否要為該記憶體晶片的該恢復資料的一位元添加一或零以產生一偶校驗,來為該選定的記憶體晶片重建損壞資料,從而為該選定的記憶體晶片產生恢復資料。
  17. 如請求項15所述的系統,其中該記憶體控制器進一步可操作以執行以下操作:回應於決定該UE沒有出現,完成該讀取請求。
  18. 如請求項15所述的系統,其中該記憶體控制器進一步可操作以執行以下操作: 回應於決定該UE沒有出現,決定是否驗證在該複數個記憶體晶片中的任何一者中的該資料中是否出現一無聲資料損壞。
  19. 如請求項18所述的系統,其中該記憶體控制器進一步可操作以基於以下決定來驗證該無聲資料損壞是否出現在該資料中: 回應於該UE出現的一指示,讀取來自該等記憶體晶片的該子集中的該等剩餘記憶體晶片中的該資料和該記憶體晶片中的該等奇偶校驗位元; 對來自該記憶體子集的該資料和該等奇偶校驗位元執行一互斥或(exclusive OR)運算; 將該互斥或運算的一輸出與該等奇偶校驗位元進行比較;及 基於該互斥或運算的該輸出與該等奇偶校驗位元之間未出現的一匹配,發送出現一不可修正的錯誤(UE)的一結果,該結果指示該資料是損壞的。
  20. 一種方法,包括以下步驟: 接收對資料的一讀取請求,其中複數個具有內建的錯誤偵測的記憶體晶片的一子集存儲該資料; 從該等記憶體晶片的該子集接收該資料; 接收奇偶校驗位元,其中該複數個記憶體晶片中的一個記憶體晶片存儲該等奇偶校驗位元,該複數個記憶體晶片中的該個記憶體晶片與該等記憶體晶片的該子集不同; 從該複數個記憶體晶片的該內建的錯誤偵測中的任何一者接收該資料中是否出現一不可修正的錯誤(UE)的一指示; 識別發送該UE出現的該指示的一記憶體晶片;及 藉由對該等奇偶校驗位元和來自未發送該指示的該複數個記憶體晶片的該資料執行一互斥或(exclusive OR)運算,使用該等奇偶校驗位元為該記憶體晶片重建損壞資料,從而為該記憶體晶片產生恢復資料。
TW111113174A 2021-05-21 2022-04-07 用於具有內建的錯誤校正和偵測的記憶體的錯誤率 TW202246979A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/326,927 2021-05-21
US17/326,927 US11640334B2 (en) 2021-05-21 2021-05-21 Error rates for memory with built in error correction and detection

Publications (1)

Publication Number Publication Date
TW202246979A true TW202246979A (zh) 2022-12-01

Family

ID=81579565

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111113174A TW202246979A (zh) 2021-05-21 2022-04-07 用於具有內建的錯誤校正和偵測的記憶體的錯誤率

Country Status (5)

Country Link
US (2) US11640334B2 (zh)
EP (1) EP4341814A1 (zh)
CN (1) CN117413252A (zh)
TW (1) TW202246979A (zh)
WO (1) WO2022245448A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE202022106894U1 (de) 2022-12-08 2023-01-03 Ali Alferaidi System zur Verbesserung der Cybersicherheit durch Erkennung und Überwachung von Datenverfälschungen mittels Künstlicher Intelligenz

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018817A (en) * 1997-12-03 2000-01-25 International Business Machines Corporation Error correcting code retrofit method and apparatus for multiple memory configurations
US20040003165A1 (en) * 2002-06-28 2004-01-01 Schulz Jurgen M. Memory subsystem including error correction
US8549378B2 (en) * 2010-06-24 2013-10-01 International Business Machines Corporation RAIM system using decoding of virtual ECC
US20140063983A1 (en) * 2012-09-06 2014-03-06 International Business Machines Corporation Error Detection And Correction In A Memory System
US9772900B2 (en) 2014-07-10 2017-09-26 Samsung Electronics Co., Ltd. Tiered ECC single-chip and double-chip Chipkill scheme
US10872011B2 (en) 2016-05-02 2020-12-22 Intel Corporation Internal error checking and correction (ECC) with extra system bits
US10169126B2 (en) 2016-10-12 2019-01-01 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US10725672B2 (en) * 2016-10-12 2020-07-28 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US20190042358A1 (en) 2018-02-06 2019-02-07 Intel Corporation Shared parity check for correcting memory errors
US10802910B2 (en) * 2018-09-17 2020-10-13 Intel Corporation System for identifying and correcting data errors
KR20210111561A (ko) * 2020-03-03 2021-09-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20220374307A1 (en) 2022-11-24
US11640334B2 (en) 2023-05-02
CN117413252A (zh) 2024-01-16
EP4341814A1 (en) 2024-03-27
WO2022245448A1 (en) 2022-11-24
US20230214295A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
US6044483A (en) Error propagation operating mode for error correcting code retrofit apparatus
JP5792380B2 (ja) データ完全性を与えるための装置および方法
US7149947B1 (en) Method of and system for validating an error correction code and parity information associated with a data word
US4817095A (en) Byte write error code method and apparatus
US8589759B2 (en) RAM single event upset (SEU) method to correct errors
US20060282751A1 (en) Fault tolerant memory system
CN107436821B (zh) 为包括多个数据位和地址位的块生成错误码的装置和方法
JPH05108495A (ja) データ用誤り訂正検出方法及びコンピユータ・メモリ用 誤り検出回路
JPH0417535B2 (zh)
EP1792254A1 (en) Memory array error correction
US11663095B2 (en) Error detection circuit
JPH03248251A (ja) 情報処理装置
US20140344643A1 (en) Hybrid memory protection method and apparatus
US11714704B2 (en) Modified checksum using a poison data pattern
US20080082870A1 (en) Parallel bit test device and method using error correcting code
US9690649B2 (en) Memory device error history bit
US20230214295A1 (en) Error rates for memory with built in error correction and detection
US11372720B2 (en) Systems and methods for encoding metadata
US20060294447A1 (en) Apparatus and method for parity generation in a data-packing device
US6463563B1 (en) Single symbol correction double symbol detection code employing a modular H-matrix
US11265022B2 (en) Memory system and operating method thereof
US11069421B1 (en) Circuitry for checking operation of error correction code (ECC) circuitry
JP2006323434A (ja) データ処理装置及びそのメモリ訂正方法
TWI509622B (zh) 具分散錯誤功能的記憶體及其分散錯誤位元的方法
US20050066254A1 (en) Error detection in redundant array of storage units