TWI605459B - 基於錯誤類型之錯誤檢查與校正(ecc)的動態應用程式 - Google Patents
基於錯誤類型之錯誤檢查與校正(ecc)的動態應用程式 Download PDFInfo
- Publication number
- TWI605459B TWI605459B TW105103788A TW105103788A TWI605459B TW I605459 B TWI605459 B TW I605459B TW 105103788 A TW105103788 A TW 105103788A TW 105103788 A TW105103788 A TW 105103788A TW I605459 B TWI605459 B TW I605459B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- error
- ecc
- correction
- memory device
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Description
本發明之實施例大致上係有關於記憶體子系統之錯誤檢測,及更明確言之,係有關於基於錯誤類型之動態選擇錯誤檢查與校正(ECC)的應用程式。
本專利文件之部分揭示內容可能含有受著作權保護之材料。當本專利出現在專利商標局的專利檔案或記錄時,著作權擁有者並不反對任何人複製專利文件或專利揭示文,但雖言如此仍然保有全部著作權權利。著作權聲明適用於後述全部資料及其附圖圖式,以及後述任何軟體:著作權©2015,英特爾公司(Intel Corporation),版權所有。
記憶體資源廣用於目前計算平台,無論係用於伺服器、桌上型或膝上型電腦、行動裝置、或消費性及企業電子裝置。記憶體子系統內的記憶體數量增加及記憶體裝置本身的密度增高造成記憶體中的錯誤數目增加。解決記憶體錯誤增加的一項技術係採用錯誤檢查與校正(ECC)。傳
統上,記憶體控制器執行錯誤檢測及校正,但也有晶粒上浮現ECC技術。ECC已經變成近代記憶體子系統中滿足可信度、可用性、及可服務性(RAS)的基本工具。
常用記憶體架構包括x4、x8、或x16介面,於該處「x4」係指有4位元寬介面的一裝置,「x8」係指有8位元寬介面的一裝置,及「x16」係指有16位元寬介面的一裝置。ECC的實施要求額外位元或頻寬以執行錯誤檢測及校正。實現ECC要求的ECC位元之設計及數目主要係由記憶體架構決定。舉例言之,許多傳統ECC實務支援單一裝置資料校正(SDDC)或類似實施例。於一動態隨機存取記憶體(DRAM)雙列記憶體模組(dual inline memory module,DIMM)中用於ECC的位元數目係足夠用於x4 SDDC,於該處各個DRAM裝置進成4位元組到一快取行(例如,4-位元寬介面針對8週期叢發的各個週期提供四個位元,總計4位元組或4B)。但受裝置故障影響的每個快取行之位元數目針對x8裝置為較大(8B,或針對8週期叢發的每個週期8位元)。結果,針對x8記憶體裝置的ECC傳統上要求步調一致的或可相媲美的機制,及有相關聯的頻寬及電源犧牲。步調一致係指記憶體的兩區間之夥伴關係,於該處ECC資訊針對該夥伴關係分享以跨兩區分配錯誤校正。
但於某些系統中,額外頻寬及/或電源要求可能不合實際。某些系統實務在執行針對x8裝置需要的邏輯時可能有顯著的效能及/或成本犧牲。須瞭解針對更大型介面要求更多ECC位元,及有與使用更多個ECC位元相關聯的
相關效能成本。
依據本發明之一實施例,係特地提出一種用於在一記憶體子系統中進行錯誤校正方法,其包含下列步驟:在對該記憶體裝置之一記憶體位址的一存取操作期間,檢測來自一記憶體裝置之讀取資料中的一錯誤;回應於檢測到該錯誤,執行一內建自測試(built in self-test,BIST)以判定該錯誤為於該記憶體位址處的一暫時性錯誤或為於該記憶體位址處的一持久性錯誤;及若該錯誤為一持久性錯誤,則以抹除模式進行錯誤檢查與校正(ECC),包括在施加一ECC校正演算法之前將針對該記憶體位址之一抹除校正;否則,進行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤。
102、104、200、400‧‧‧系統
110、420、510‧‧‧處理器
120、210、434、564‧‧‧記憶體控制器
122、132‧‧‧輸入/輸出(I/O)
124‧‧‧錯誤檢查與校正(ECC)管理器
126‧‧‧內建自測試(BIST)
130‧‧‧記憶體
134‧‧‧陣列
140‧‧‧封裝內記憶體(IPM)
212‧‧‧檢查邏輯
214‧‧‧校正邏輯
216‧‧‧抹除邏輯
218‧‧‧BIST邏輯
220、432、562‧‧‧記憶體裝置
222‧‧‧記憶體資源列
224‧‧‧存取邏輯
300‧‧‧方法
302-328‧‧‧方塊
410‧‧‧匯流排
430、560‧‧‧記憶體子系統
436‧‧‧作業系統(OS)
438‧‧‧指令
440‧‧‧輸入/輸出(I/O)介面
450‧‧‧網路介面
460‧‧‧儲存裝置
462‧‧‧代碼或指令及資料
470‧‧‧周邊介面
480、566‧‧‧ECC
500‧‧‧裝置
520‧‧‧音訊子系統
530‧‧‧顯示子系統
532‧‧‧顯示介面
540‧‧‧I/O控制器
550‧‧‧電源管理
570‧‧‧連結
572‧‧‧胞狀連結
574‧‧‧無線連結
580‧‧‧周邊連結
582‧‧‧至
584‧‧‧自
後文詳細說明部分包括附圖之討論具有由本發明之實施例的實務舉例說明之例示。須瞭解附圖為舉例說明而非限制性。如此處使用,述及一或多個「實施例」須瞭解為涵括於本發明之至少一個實施例的特定特徵、結構、及/或特性。如此,出現於此處之片語諸如「於一個實施例中」或「於一替代實施例中」描述各種本發明之實施例及實現,而非必要全部皆係指相同實施例。但也非必然為全部互斥。
圖1A為一系統之實施例的方塊圖,其中一記憶體子系統識別錯誤類型為ECC應用中的一項因數。
圖1B為一系統之實施例的方塊圖,其中一封裝內記憶體子系統識別錯誤類型為ECC應用中的一項因數。
圖2為可基於錯誤類型而動態進行ECC的一記憶體子系統中ECC邏輯之一實施例的方塊圖。
圖3為用來基於錯誤類型而動態進行ECC之方法之一實施例的流程圖。
圖4為計算系統之一實施例的方塊圖於其中可實現基於錯誤類型的動態ECC。
圖5為行動裝置之一實施例的方塊圖於其中可實現基於錯誤類型的動態ECC。
後文對某些細節及實務之描述,包括圖式之描述,可描繪後述部分或全部實施例,以及討論此處呈示之發明概念的其它潛在實施例或實務。
如此處描述,於一記憶體子系統中之錯誤校正包括判定一錯誤是否為一暫時性錯誤或一持久性錯誤,及基於錯誤類型調整錯誤檢查與校正(ECC)辦法。錯誤之類型可由一內建自測試判定。識別該錯誤類型可特別識別一錯誤位置,其允許使用ECC技術其運用位置資訊以減少執行ECC要求的位元數目。舉例言之,若該錯誤為持久性錯誤,則該記憶體控制器可以抹除模式執行,包括在施加ECC校正演算法諸如單一裝置資料校正(SDDC)之前,校正針對一經識別的錯誤位置的抹除。否則若該錯誤為暫時性,則該
記憶體控制器可藉由施加ECC校正演算法而進行標準全ECC校正。藉由施加基於錯誤類型的動態ECC,系統可根據相同ECC位元執行標準全ECC校正及抹除校正兩者。
須瞭解暫時性錯誤或軟性錯誤係由宇宙射線或隨機影響位元的若干其它異常或環境條件所引起。此等錯誤典型地限於單一位元或一行。此等錯誤可能於一次讀取期間發生,而非於隨後讀取時發生。相反地,持久性錯誤或硬性錯誤或硬性故障係因裝置缺陷所引起。雖然此等持久性錯誤可限於單一位元或一行,但此等故障也可能影響裝置(諸如動態隨機存取記憶體(DRAM)裝置)中的全部位元。但許多持久性故障可藉抹除ECC解決,其中系統設定ECC校正中的抹除以解決故障。
如此,如此處描述,一ECC路徑可包括兩個分開模式:全校正模式,於該處實施標準ECC以識別該裝置內部的故障裝置及故障位元;及抹除模式,於該處給定裝置的身分,抹除模式ECC校正該裝置中之故障位元。雙列記憶體模組(dual inline memory module,DIMM)ECC技術的傳統ECC路徑經常性地於全校正模式操作。藉由識別錯誤類型,記憶體控制器可根據錯誤的類型而在全校正模式與抹除模式間切換ECC。於一個實施例中,相同ECC位元以兩個模式操作,但兩種不同模式使用不同的校正邏輯。須瞭解一區塊校正ECC於全校正模式中可校正「b」的一區塊大小,而因區塊位置已被決定而於抹除模式中可校正「2b」的一區塊大小。
ECC路徑包括判定錯誤類型的一機制。於一個實施例中,錯誤類型的判定為於ECC校正路徑中的內建自測試(BIST)操作,其允許錯誤類型及錯誤位置的識別。藉由知曉錯誤位置,記憶體控制器可執行不同故障(軟性或硬性)的靶定校正,只要傳統要求位元的半數即可達成單一裝置層級校正可信度、可用性、及可服務性(RAS)。如此,舉例言之,SDDC的實施能以舊式SDDC要求ECC位元的半數而達成相等程度的RAS。於一個實施例中,此種ECC係在具有封裝內記憶體(IPM)架構的伺服器內及/或於行動裝置內實施,兩者對可用ECC位元數目皆有限制。此外,此種ECC可實施為帶有步調一致的另一種x8 DIMM SDDC,原因在於使用較少數ECC位元的能力可減少步調一致的需要。
述及記憶體裝置可應用至不同記憶體類型。記憶體裝置大致上係指依電性記憶體技術。依電性記憶體為當輸入裝置的電力中斷時其狀態(及因而儲存於其上的資料)為不確定的記憶體。非依電性記憶體係指即便輸入裝置的電力中斷時其狀態為確定的記憶體。動態依電性記憶體要求刷新儲存於裝置的資料以維持狀態。動態依電性記憶體的一個實例包括動態隨機存取記憶體(DRAM),或若干變化例諸如同步DRAM(SDRAM)。如此處描述的記憶體子系統與多種記憶體技術為可相容,諸如雙倍資料率版本3(DDR3),原先由聯合電子裝置工程委員會(JEDEC)於2007年6月27日公布,目前為發行版21)、DDR4(DDR版本4,初始規格由JEDEC於2012年9月公告)、LPDDR3(低功率DDR
版本3,JESD209-3B,由JEDEC於2013年8月公告)、LPDDR4(低功率雙倍資料率(LPDDR)版本4,JESD209-4,原先由JEDEC於2014年8月公告)、WIO2(寬I/O 2(WideIO2),JESD229-2,原先由JEDEC於2014年8月公告)、高頻寬記憶體DRAM(HBM,JESD235,原先由JEDEC於2013年10月公告)、DDR5(DDR版本5,目前正由JEDEC討論中)、LPDDR5(目前正由JEDEC討論中)、WIO3(寬I/O 3,目前正由JEDEC討論中)、HBM2(HBM版本2,目前正由JEDEC討論中)、及/或其它、及以此等規格之衍生或擴延為基礎之技術。
圖1A為一系統之實施例的方塊圖,其中一記憶體子系統識別錯誤類型為ECC應用中的一項因數。系統102表示一記憶體子系統的組件。系統102能包括於記憶體子系統施加ECC的任何類型的計算裝置或電子電路內。處理器110表示任何類型的處理邏輯或組件,其根據儲存於記憶體130或欲儲存於記憶體130的資料而執行操作。處理器130可以是或包括主機處理器、中央處理單元(CPU)、微控制器或微處理器、圖形處理器、周邊處理器、特定應用處理器、或其它處理器。處理器130可以是或包括單核心或多核心電路。
記憶體控制器120表示介接記憶體130的邏輯,及管理儲存於記憶體130之陣列134中之資料的存取。於一個實施例中,記憶體130包括依電性記憶體資源。陣列134表示其中儲存資料的記憶體資源列(例如,快取行、頁面)。於
一個實施例中,記憶體控制器120整合入處理器110的硬體。於一個實施例中,記憶體控制器120為與處理器110分開的獨立硬體。記憶體控制器120可以是包括處理器110的基體上的分開電路。記憶體控制器120可以是整合在有一處理器晶粒的共通基體(例如,呈單晶片系統(SoC))上的分開晶粒或晶片。於一個實施例中,至少部分記憶體130能涵括在有處理器110及/或記憶體控制器120的SoC上。
處理器110於系統102之脈絡內部通常須瞭解自記憶體130產生針對資料的請求,及回應此等請求而消耗自記憶體130回送的資料。於一個實施例中,處理器110及記憶體控制器120可一起被視為記憶體130儲存與回送資料的「主機」。於一個實施例中,記憶體130只包括依電性記憶體資源。於一個實施例中,記憶體130包括非依電性記憶體資源。於一個實施例中,記憶體130包括DDR4 DRAM於DIMM架構其支援x8裝置中之ECC。於一個實施例中,記憶體130包括x4裝置。
於一個實施例中,系統102包括多個記憶體資源130。記憶體130可以支援運用ECC透過記憶體控制器120的存取之任何類型的架構而於系統102實施。記憶體130例如可管理為具有分開的通道、雙列記憶體模組(DIMM)、等級、DRAM、排組、頁面、列的不同層級記憶體。各個分開的記憶體層面及資源可個別定址。記憶體控制器120包括輸入/輸出(I/O)122,其包括硬體資源用以與對應記憶體130的I/O 132互連。I/O 122、132可包括驅動裝置、晶粒上信號
終結器(ODT)、接腳、連接器、線跡、襯墊、導線、及/或其它硬體。I/O 122及132典型地係組織成信號線的一或多個匯流排,諸如指令/位址(C/A)匯流排讓記憶體控制器120發送存取指令及位址資訊,及資料匯流排用以許可記憶體控制器120與記憶體130交換資料。資料係以讀取指令讀取自不同記憶體資源,或以寫入指令而寫入記憶體資源。I/O 122及I/O 132可包括屬於x4、x8、或x16介面的資料介面。
於一個實施例中,記憶體控制器包括ECC管理器124用以管理系統102的記憶體存取之錯誤檢查與校正。於一個實施例中,記憶體130能包括內部ECC,於圖中未顯示。ECC管理器124可將錯誤跨多個並列記憶體資源展開。藉由跨多個資源展開錯誤,即便於記憶體130的一或多個故障記憶體控制器120仍可回收資料。須瞭解記憶體控制器120的ECC管理器124可以是或包括錯誤檢測邏輯及錯誤校正邏輯。錯誤檢測邏輯係指於讀取資料中檢測錯誤的邏輯。錯誤校正邏輯係指於讀取資料中校正錯誤的邏輯。於一個實施例中,ECC管理器124施加ECC以達成RAS的單一區塊層級校正。於一個實施例中,ECC管理器124施加ECC以達成SDDC。
於一個實施例中,ECC管理器124包括或管理兩個分開的ECC路徑,分開校正邏輯取決於所使用的路徑。一個路徑提供全校正模式的標準ECC。全校正模式ECC不知曉一錯誤的位址或裝置,因而彷彿為隨機錯誤般校正錯誤。一個路徑提供抹除模式ECC。於一個實施例中,記憶
體控制器120包括內建自測試(BIST)邏輯126用以觸發或以其它方式使得記憶體130執行內建自測試,或執行其它邏輯用以判定錯誤類型。於一個實施例中,BIST 126除外或另外,記憶體控制器120包括測試邏輯其可用以檢測錯誤類型及位置。BIST 126使得記憶體控制器能夠控制BIST測試。記憶體控制器120可回應於判定錯誤存在於回應於一讀取存取請求而被讀取的資料中而觸發錯誤類型的決定。
於一個實施例中,BIST 126進行簡單自測試,諸如迴圈寫入至錯誤位址。於一個實施例中,BIST 126可以是單一位址迴圈測試。於一個實施例中,自測試可包括簡單測試樣式,可以是單一測試樣式。於一個實施例中,單一樣式為預期被讀取的位元樣式的反相,其乃觸發錯誤檢測的位元樣式的反相。於一個實施例中,反向迴圈寫入測試可識別哪個裝置遭逢錯誤。於一個實施例中,一個寫入指令及一個讀取指令(讀取出被寫入的資料)能成功地實施錯誤類型檢測。於一個實施例中,系統102包括足夠ECC位址以校正來自裝置對半的資料。如此,BIST 126之一個實施例能夠識別哪個裝置有錯誤,許可針對檢測得的裝置進行抹除校正。傳統上此種實施例中之ECC可包括一步調一致操作以獲得期望的RAS。
圖1B為系統之一實施例的方塊圖,其中封裝內記憶體子系統識別錯誤類型為ECC應用中的一個因數。系統104可以是圖1A之系統102之一實施例的一個實例。系統104例示標示以系統102的共通識別符的組件,諸如處理器
110、記憶體控制器120、I/O 122、ECC管理器124、I/O 132、BIST 126、及陣列134。在系統102中類似標號元件之描述可以同樣地應用至此等元件。
系統104特別將記憶體裝置例示為封裝內記憶體(IPM)140。IPM也可稱作為封裝上記憶體,且指稱整合至具有單核心或多核心處理器的共通基體或封裝體上的記憶體資源,而非整合入處理器的相同晶粒內。於一個實施例中,IPM 140功能上等於系統102的記憶體130。IPM 140可包括整合至有記憶體控制器120及處理器110的一共通SoC封裝體上的一記憶體裝置特定設計或架構變化。於一個實施例中,IPM 140在有處理器110的共通基體上實施為一電路。須瞭解在一SoC封裝體內部的記憶體實施可防止於IPM中使用x4裝置,同時也防止步調一致的施加。如此,須瞭解傳統DIMM SDDC解決方案可能不合實際或不可能實現於有IPM 140的系統104。但當記憶體控制器120透過ECC管理器124實施ECC而基於錯誤類型檢測選擇性施加ECC時,系統104可施加SDDC至IPM 140。雖然特別顯示為IPM 140,但於一個實施例中,於其中步調一致為不可能或不合實際之實施例中,系統104可包括記憶體。
圖2為可基於錯誤類型而動態進行ECC的一記憶體子系統中ECC邏輯之一實施例的方塊圖。系統200可以是依據圖1A之系統102及/或圖1B之系統104的記憶體子系統之一實例。記憶體控制器210表示一控制器或等效或替代電路或組件,其管理對記憶體裝置220的存取。記憶體控制器
210在讀取自記憶體裝置220的資料上執行ECC。
記憶體裝置220包括多列記憶體資源222,其表示記憶體裝置220內部的個別可定址位置。列222可以是個別快取行或快取行的字組或頁面(例如,一個預提取元件包括多個快取行)。記憶體裝置220包括存取邏輯224,其表示在記憶體裝置內部執行存取指令用以存取列222的邏輯。存取邏輯224也可表示記憶體裝置220內部之邏輯用以回應於由記憶體控制器210的BIST邏輯218控制的BIST測試而執行一測試寫入到一或多個列222。舉例言之,記憶體裝置220可將記憶體內容拷貝出到一備用位置,而在將該將記憶體內容自備用位置拷貝回之前,進行一寫入及讀取反向迴圈測試。
於一個實施例中,BIST邏輯218以單一測試樣式進行測試。於一個實施例中,BIST邏輯218施加一樣式,該樣式為於錯誤檢測時導致非零癥狀(syndrome)的該樣式(例如,快取行資料)的反相。於一個實施例中,BIST邏輯218對錯誤檢測中識別的快取行位址進行一寫入快取行。然後,BIST邏輯218可將快取行資料讀取回。須瞭解快取行定址可在多個記憶體裝置220間分享,其各自貢獻某個數目之讀取資料位元給總體讀取的快取行(例如,8裝置各自提供8位元)。BIST邏輯218可比較已知之寫入資料與讀取資料以特別判定哪個位元故障,及潛在識別一特定裝置故障。
BIST邏輯實施於ECC的測試已經提供了下述能力:能夠識別與定址列故障、行故障、拼貼塊/蓆墊故障(例
如,記憶體子系統中的故障樣式,諸如裝置的連續區塊故障),驗證卡在0/1故障的100%測試成功。於一個實施例中,BIST邏輯218識別「卡在」位元的位置。測試也驗證弱位元預測也有高百分比成功(例如,具有邊際故障的裝置之位元)。於一個實施例中,檢查邏輯212針對BIST邏輯218產生一請求用以回應於讀取資料中檢測得錯誤執行。於一個實施例中,檢查邏輯212可接收於測試中是否出現錯誤的指示,及判定資料中檢測得的錯誤是否為持久性或暫時性。如此,於一個實施例中,檢查邏輯212可謂判定哪個類型的錯誤導致非零癥狀,或在讀取資料中檢測得哪個類型的錯誤。一癥狀係指檢查位元的一樣式,其指示針對ECC實施測試資料中之錯誤。ECC常見施加為漢明代碼,其中於同位檢查矩陣上計算產生癥狀用以指示所接收的資料是否有誤。同位檢查矩陣具有係數,指示針對資料位元的不同重疊組合有各種不同層級的同位檢查。非零癥狀為指示至少一個錯誤的癥狀(並非全部係數皆為零)。
記憶體控制器210包括檢查邏輯212,其表示硬體組件在讀取自記憶體220的資料上從事ECC檢查。於一個實施例中,檢查邏輯212就針對該資料儲存的檢查位元測試讀取資料。檢查邏輯212可包括施加XOR(互斥或)樹到一對應H矩陣以檢測錯誤及選擇性地校正錯誤(於單一位元錯誤之情況下)。如技藝界所瞭解,H矩陣係指漢明代碼同位檢查矩陣,其顯示代碼字的數字之線性組合如何等於零,於該處該代碼字表示資料的無誤版本。如此,H矩陣列針對一組
成分或位數屬於該代碼字須滿足的同位檢查方程的係數。於一個實施例中,記憶體控制器210包括校正邏輯214用以校正於讀取資料中檢測得的錯誤。於一個實施例中,檢查邏輯212可包括一癥狀解碼器用以施加檢查位元至該資料用以檢測讀取資料中的錯誤。於一個實施例中,校正邏輯214接收或產生一癥狀用以執行錯誤校正用於校正檢測得的錯誤。
於一個實施例中,記憶體控制器210包括抹除邏輯216用以施加識別的錯誤位置用於ECC。於一個實施例中,抹除邏輯216包括抹除於一校正矩陣用以允許已知錯誤之校正。此種抹除ECC能夠用來替代標準ECC校正,或用作為標準ECC校正的補充。於一個實施例中,記憶體裝置220施加校正邏輯214用於一完全校正模式ECC,及施加抹除邏輯216用於抹除模式ECC。須瞭解記憶體控制器210可包括兩種邏輯214及216,及根據檢測得的錯誤類型而施加適當邏輯。舉例言之,記憶體控制器210可針對隨機位元的暫態錯誤或軟性錯誤施加校正邏輯214。記憶體控制器210可施加抹除邏輯216用於硬性錯誤。
圖3為用來基於錯誤類型而動態進行ECC之方法之一實施例的流程圖。方法300為依據此處描述之任何實施例基於錯誤類型而進行ECC之方法。概略言之,記憶體控制器控制ECC操作。於一個實施例中,記憶體裝置回應於由記憶體控制器的一請求而執行一錯誤類型檢查。
於一個實施例中,一記憶體控制器對相關聯的記
憶體產生讀取指令用以服務由一主機處理組件對資料的一請求。於一個實施例中,記憶體控制器執行錯誤檢查或ECC檢查,304。若錯誤檢查的結果為零癥狀,306零分支,則讀取資料無誤,記憶體控制器透過正常讀取路徑接收資料,308。於一個實施例中,該癥狀為非零,306非零分支,則記憶體控制器判定是否檢查錯誤類型,310。癥狀係從由記憶體裝置提供的ECC位元計算。於一個實施例中,相同ECC位元可用以施加正常模式ECC及抹除模式ECC兩者。如此,要求的ECC空間效率可最大化,相同ECC位元可施加至任一型ECC。於一個實施例中,選擇性地啟用抹除模式及錯誤類型檢測。如此,若未啟用錯誤類型檢測,310否分支,則記憶體控制器可經組配以只在正常模式進行錯誤校正,312。
於正常ECC校正模式中,記憶體控制器可判定檢測得的錯誤是否為單一位元錯誤(或單一區塊錯誤,或單一位元組錯誤,取決於架構的粒度),314。若該錯誤非為SBE,314否分支,則於一個實施例中,ECC邏輯指示一檢測得的未經校正錯誤(DUE),316。若該錯誤為SBE,314是分支,則於一個實施例中,ECC邏輯校正資料,318,及登錄錯誤,320。
若錯誤類型檢測被啟用,310是分支,則記憶體控制器從事錯誤類型檢測,322。於一個實施例中,錯誤類型檢測為由該(等)記憶體裝置執行的BIST測試。於一個實施例中,錯誤類型檢測係基於記憶體控制器可執行的測試
程序。於一個實施例中,若檢測得的錯誤非為硬性錯誤(如由錯誤類型檢測指示),324否分支,則記憶體控制器進行正常模式ECC校正,314。於一個實施例中,若檢測得的錯誤為硬性錯誤,324是分支,則記憶體控制器判定錯誤是否限於可由抹除校正的一錯誤大小,326。如此,若該錯誤為一可抹除錯誤,326是分支,則於一個實施例中,記憶體控制器於抹除模式校正錯誤,328。於一個實施例中,若該錯誤非為一可抹除錯誤,326否分支,則記憶體控制器可指示DUE,316。
圖4為計算系統之一實施例的方塊圖於其中可實現基於錯誤類型的動態ECC。系統400表示依據此處描述之任何實施例的計算裝置,可以是膝上型電腦、桌上型電腦、伺服器、遊戲或娛樂控制系統、掃描器、影印機、列印器、路由或切換裝置、或其它電子裝置。系統400包括處理器420其給系統400提供指令之處理、作業管理、及執行。處理器420可包括任何類型的微處理器、中央處理單元(CPU)、處理核心、或其它處理硬體用以給系統400提供處理。處理器420控制系統400之總體操作,且可以是或包括一或多個可規劃通用或特用微處理器、數位信號處理器(DSP)、可規劃控制器、特定應用積體電路(ASIC)、可規劃邏輯裝置(PLD)等、或此等裝置的組合。
記憶體子系統430表示系統400的主記憶體,及給欲由處理器420執行的代碼提供暫時儲存,或欲用於執行常式的資料值。記憶體子系統430可包括一或多個記憶體裝
置,諸如唯讀記憶體(ROM)、快閃記憶體、一種或多種隨機存取記憶體(RAM)、或其它記憶體裝置、或此等裝置的組合。記憶體子系統430儲存與主持作業系統(OS)436等用以提供在系統400執行指令的一軟體平台。此外,其它指令438係儲存及從記憶體子系統430執行以提供系統400的邏輯及處理。OS 436及指令438係由處理器420執行。記憶體子系統430包括記憶體裝置432,於該處其儲存資料、指令、程式、或其它項目。於一個實施例中,記憶體子系統包括記憶體控制器434,其乃產生與簽發指令給記憶體裝置432的一記憶體控制器。須瞭解記憶體控制器434可以是處理器420的實體部件。
處理器420及記憶體子系統430係耦合至匯流排/匯流排系統410。匯流排410為一種概念,其表示由適當橋接器、配接器、及/或控制器連結的任何一或多個分開實體匯流排、通訊線路/介面、及/或點對點連結。因此,匯流排410可包括例如,系統匯流排、周邊組件互連(PCI)匯流排、超傳輸或工業標準架構(ISA)匯流排、小型電腦系統介面(SCSI)匯流排、或美國電機及電子工程師學會(IEEE)標準1394匯流排(俗稱「火線」)中之一或多者。匯流排410之匯流排也對應於網路介面450中之介面。
系統400也包括一或多個輸入/輸出(I/O)介面440、網路介面450、一或多個內部大容量儲存裝置460、及耦合至匯流排410的周邊介面470。I/O介面440可包括一或多個介面組件,使用者經此介面組件介接系統400(例如,
視訊、音訊、及/或文數介面)。網路介面450給系統400提供透過一或多個網路與遠端裝置(例如,伺服器、其它計算裝置)的能力。網路介面450可包括乙太網路配接器、無線互連組件、通用串列匯流排(USB)、或其它以有線或無線標準為基礎的或專用介面。
儲存裝置460可以是或包括以非依電性方式儲存大量資料的任何習知媒體,諸如一或多個以磁性、固態、或光學為基礎的碟片、或其組合。儲存裝置460以持續狀態(亦即儘管給系統400的電力中斷維持數值)保持代碼或指令及資料462。儲存裝置460通常可視為「記憶體」,但記憶體430為執行或操作記憶體而提供指令給處理器420。而儲存裝置460為非依電性,記憶體430可包括依電性記憶體(亦即若供應系統400的電力中斷資料的數值或狀態為不確定)。
周邊介面470可包括前文非特別描述的任何硬體介面。周邊裝置大致上係指相依性連結至系統400的裝置。相依性連結為系統400提供軟體及/或硬體平台,在其上執行操作,且使用者與其互動者。
於一個實施例中,記憶體子系統430包括ECC 480。ECC 480顯示為一個分開元件,但表示記憶體控制器434中之ECC模式,也可表示記憶體裝置432中之錯誤測試。ECC 480取決於檢測得的錯誤類型包括不同ECC邏輯路徑。於一個實施例中,記憶體控制器434及/或記憶體裝置432進行測試以判定檢測得的錯誤是否為暫時性或持久性錯誤。於一個實施例中,暫時性錯誤以完全校正模式處理,
及硬性錯誤以抹除模式校正處理。
於一個實施例中,系統400為伺服器裝置。於伺服器裝置的一個實施例中,系統400可以是在伺服器組態中組合在一起的多個系統中之一者。舉例言之,該伺服器可實現為與其它刀鋒伺服器組合於機架系統中的一刀鋒伺服器。
圖5為其中可實施基於錯誤類型的動態ECC的行動裝置之一實施例的方塊圖。裝置500表示行動計算裝置,諸如計算平板、行動電話或智慧型電話、無線致能e-讀取器、穿戴式計算裝置、或其它行動裝置。須瞭解大致顯示某些組件,但非此種裝置的全部組件皆顯示於裝置500。
裝置500包括處理器510,其執行裝置500的主要處理操作。處理器510可包括一或多個實體裝置,諸如微處理器、應用程式處理器、微控制器、可規劃邏輯裝置、或其它處理構件。由處理器510執行的處理操作包括於其上執行應用程式及/或裝置功能的作業平台或作業系統的執行。處理操作包括與使用者或與其它裝置的輸入/輸出(I/O)相關的操作、電源管理相關的操作、及/或連結裝置500至另一裝置相關的操作。處理操作也可包括音訊I/O及/或顯示I/O相關的操作。
於一個實施例中,裝置500包括音訊子系統520,其表示與提供音訊功能給計算裝置相關聯的硬體(例如,音訊硬體及音訊電路)及軟體(例如,驅動裝置、編解碼器)組件。音訊功能可包括揚聲器及/或耳機輸出,以及麥克風輸
入。針對此等功能之裝置可整合於裝置500,或連結至裝置500。於一個實施例中,一使用者藉由提供音訊指令其由處理器510接收及處理而與裝置500互動。
顯示子系統530表示提供視覺顯示及/或觸覺顯示給一使用者與計算裝置互動的硬體(例如,顯示裝置)及軟體(例如,驅動裝置)組件。顯示子系統530包括顯示介面532,其包括用以提供顯示器給一使用者的特定螢幕或硬體裝置。於一個實施例中,顯示介面532包括與處理器510分開的邏輯用以執行與顯示器相關的至少若干處理。於一個實施例中,顯示子系統530包括一觸控螢幕裝置其提供輸出及輸入給一使用者。於一個實施例中,顯示子系統530包括提供輸出給一使用者的高畫質(HD)顯示器。高畫質可指一顯示器具有約100像素/英寸(PPI)或以上的像素密度,且可包括下列格式,諸如全HD(例如,1080p)、視網膜顯示、4K(超高畫質或UHD)、或其它。
I/O控制器540表示與一使用者互動的硬體裝置及軟體組件。I/O控制器540可操作以管理硬體,其乃音訊子系統520及/或顯示子系統530的部件。此外,I/O控制器540例示額外裝置連結到裝置500的接點,經此接點使用者可與系統互動。舉例言之,能夠附接至裝置500的裝置可包括麥克風裝置、揚聲器或立體聲系統、視訊系統或其它顯示裝置、鍵盤或數字小鍵盤裝置、或用於特定應用的其它I/O裝置,諸如卡片讀取器或其它裝置。
如前述,I/O控制器540可與音訊子系統520及/或
顯示子系統530互動。舉例言之,經由麥克風或其它音訊裝置的輸入可給裝置500的一或多個應用程式或功能提供輸入或指令。此外,替代顯示輸出或額外地可提供音訊輸出。於另一個實施例中,若顯示子系統包括觸控螢幕,則顯示裝置也可作為輸入裝置,其可至少部分地由I/O控制器540管理。裝置500上也可有額外按鈕或開關用以提供由I/O控制器540管理的I/O功能。
於一個實施例中,I/O控制器540管理裝置諸如加速度計、相機、光感測器或其它環境感測器、陀羅儀、全球定位系統(GPS)、或可涵括於裝置500的其它硬體。輸入可以是直接使用者互動以及提供環境輸入給系統以影響其操作(諸如過濾雜訊,調整顯示用於亮度檢測,施加相機的閃光燈,或其它特徵)。於一個實施例中,裝置500包括電源管理550其管理電池電力的使用、電池的放電、及節電操作相關的特徵。
記憶體子系統560包括記憶體裝置562用以儲存資訊於裝置500。記憶體子系統560可包括非依電性(若供給記憶體裝置的電力中斷時狀態不變)及/或依電性(若供給記憶體裝置的電力中斷時狀態不確定)記憶體裝置。記憶體560能儲存應用程式資料、使用者資料、音樂、相片、文件、或其它資料、以及與系統500的應用程式及功能的執行有關的系統資料(包括長期或暫時性)。於一個實施例中,記憶體子系統560包括記憶體控制器564(其也可視為系統500的控制部件,且可視為處理器510的部件)。記憶體控制器564包
括排程器用以產生與簽發指令給記憶體裝置562。
連結570包括硬體裝置(例如,無線及/或有線連接器及通訊硬體)及軟體組件(例如,驅動裝置、協定堆疊)以使得裝置500能與外部裝置通訊。外部裝置可以是分開的裝置,諸如其它計算裝置、無線存取點或站台、以及周邊裝置諸如頭戴式耳機、列印器、或其它裝置。
連結570可包括多個不同類型的連結。一般而言,裝置500係以胞狀連結572及無線連結574例示。胞狀連結572大致係指由無線載波提供的胞狀網路連結,諸如透過全球行動通訊系統(GSM)或其變化或衍生、劃碼多向接取(CDMA)或其變化或衍生、分時多工(TDM)或其變化或衍生、長期演進(LTE-又稱作「4G」)、或其它胞狀服務標準提供者。無線連結574係指非為胞狀的無線連結,及可包括個人區域網路(諸如藍牙)、區域網路(諸如WiFi)、及/或廣域網路(諸如WiMax)、或其它無線通訊。無線通訊係指透過非固體媒體經由經調變電磁輻射的使用之資料移轉。有線通訊經由固體通訊媒體發生。
周邊連結580包括硬體介面及連接器、以及軟體組件(例如,驅動裝置、協定堆疊)而做周邊連結。須瞭解裝置500可以是至其它計算裝置的一周邊裝置(「至」582),及有周邊裝置(「自」584)連結至其上。裝置500常見有個「擴充」連接器用以連結至其它計算裝置用於管理(例如,下載及/或上傳、改變、同步化)裝置500上的內容之用途。此外,擴充連接器可允許裝置500連結到某些周邊裝置其允許裝
置500控制內容輸出例如到影音系統或其它系統。
除了專有擴充連接器或其它專有連結硬體之外,裝置500可透過以共通-或以標準-為基礎的連接器而做周邊連結580。常用類型可包括通用串列匯流排(USB)連接器(其可包括多種不同硬體介面中之任一者)、顯示埠包括迷你顯示埠(MDP)、高畫質多媒體介面(HDMI)、火線、或其它類型。
於一個實施例中,記憶體子系統560包括ECC 566。ECC 566顯示為一分開的元件,但於記憶體控制器564表示為ECC模式,也可表示記憶體裝置562中的錯誤測試。取決於檢測得的錯誤類型,ECC 566包括不同的ECC邏輯路徑。於一個實施例中,記憶體控制器564及/或記憶體裝置562進行測試以判定一檢測得的錯誤是否為暫時性或持久性錯誤。於一個實施例中,暫時性錯誤係以全校正模式操作,及硬性錯誤係以抹除模式校正操作。
於一個面向中,一種用於一記憶體子系統中之錯誤校正方法,其包含:於至該記憶體裝置之一記憶體位址的一存取操作期間於讀取自一記憶體裝置的資料中檢測一錯誤;回應於檢測該錯誤,執行一內建自測試(BIST)用以判定該錯誤是否為於該記憶體位址的一暫時性錯誤或為於該記憶體位址的一持久性錯誤;及若該錯誤為一持久性錯誤,則以抹除模式執行錯誤檢查與校正(ECC),包括於施加一ECC校正演算法之前校正針對該記憶體位址之一抹除;否則,執行全ECC校正,包括施加無抹除的該ECC校正演
算法,將該錯誤視為一隨機位元錯誤處理。
於一個實施例中,該記憶體裝置包含一依電性記憶體裝置。於一個實施例中,該記憶體裝置包含一封裝內記憶體裝置。於一個實施例中,該記憶體裝置包含一x4雙列記憶體模組(DIMM)。於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,執行該BIST進一步包含執行一反向迴圈寫入測試到該記憶體位址。於一個實施例中,執行該BIST進一步包含執行一單一樣式寫入測試。於一個實施例中,執行該BIST進一步包含執行一樣式之單一寫入測試,該樣式為導致一非零癥狀的資料之一反相。於一個實施例中,施加該ECC校正演算法包含執行一單一裝置資料校正(SDDC)常式。
於一個面向中,一種記憶體控制器其於一記憶體子系統執行錯誤校正,其包含:錯誤檢查與校正(ECC)邏輯用以檢測回應於讀取一記憶體裝置之一記憶體位址的一請求而接收自該記憶體裝置的資料中之一錯誤;及耦合至該記憶體裝置的輸入/輸出(I/O)硬體用以發送一信號使得該記憶體裝置執行該記憶體位址的一內建自測試(BIST)而判定該錯誤是否為一暫時性錯誤或一持久性錯誤;其中若該錯誤為一持久性錯誤則該ECC邏輯係用以抹除模式執行ECC,包括於施加一ECC校正演算法之前校正針對該記憶體位址之一抹除;否則,該ECC邏輯係用以執行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤處理。
於一個實施例中,該記憶體裝置為一封裝內記憶體裝置具有該記憶體控制器及一主機處理器於一單晶片系統。於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,該I/O硬體係用以發送一指令給該記憶體裝置用以使得該記憶體裝置執行一反向迴圈寫入測試到該記憶體位址。於一個實施例中,該反向迴圈寫入測試包含一單一樣式寫入測試。於一個實施例中,該反向迴圈寫入測試包含一樣式之單一寫入測試,該樣式為導致一非零癥狀的資料之一反相。於一個實施例中,該ECC邏輯係用以執行單一裝置資料校正(SDDC)層級校正。
於一個面向中,一種具有一記憶體子系統的電子裝置,其包含:多個動態隨機存取記憶體裝置(DRAM)其各自包括具有可分開定址的記憶體位置之一記憶體陣列;一記憶體控制器包括錯誤檢查與校正(ECC)邏輯用以檢測回應於讀取一記憶體裝置之一記憶體位址的一請求而接收自該記憶體裝置的資料中之一錯誤;及耦合至該記憶體裝置的輸入/輸出(I/O)硬體用以發送一信號使得該記憶體裝置執行該記憶體位址的一內建自測試(BIST)而判定該錯誤是否為一暫時性錯誤或一持久性錯誤;其中若該錯誤為一持久性錯誤則該ECC邏輯係用以抹除模式執行ECC,包括於施加一ECC校正演算法之前校正針對該記憶體位址之一抹除;否則,該ECC邏輯係用以執行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤處理;及一機架系統用以耦合該記憶體子系統至一刀鋒
伺服器。
於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,該記憶體裝置為一封裝內記憶體裝置封裝有該記憶體控制器及一主機處理器於一單晶片系統。於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,該記憶體控制器I/O硬體係用以發送一指令給該記憶體裝置用以使得該記憶體裝置執行一反向迴圈寫入測試到該記憶體位址。於一個實施例中,該反向迴圈寫入測試包含一單一樣式寫入測試。於一個實施例中,該反向迴圈寫入測試包含一樣式之單一寫入測試,該樣式為導致一非零癥狀的資料之一反相。於一個實施例中,該ECC邏輯係用以執行單一裝置資料校正(SDDC)層級校正。
於一個面向中,一種用於一記憶體子系統中之錯誤校正設備,其包括:於至該記憶體裝置之一記憶體位址的一存取操作期間用於讀取自一記憶體裝置的資料中檢測一錯誤之構件;回應於檢測該錯誤,用於執行一內建自測試(BIST)用以判定該錯誤是否為於該記憶體位址的一暫時性錯誤或為於該記憶體位址的一持久性錯誤之構件;及用於若該錯誤為一持久性錯誤,則以抹除模式執行錯誤檢查與校正(ECC)之構件,包括於施加一ECC校正演算法之前用於校正針對該記憶體位址之一抹除之構件;及若該錯誤非為一持久性錯誤則用於執行全ECC校正之構件,包括用於施加無抹除的該ECC校正演算法之構件,將該錯誤視為一
隨機位元錯誤處理。
於一個實施例中,該記憶體裝置包含一依電性記憶體裝置。於一個實施例中,該記憶體裝置包含一封裝內記憶體裝置。於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,用於執行該BIST之構件進一步包含用於執行一反向迴圈寫入測試到該記憶體位址之構件。於一個實施例中,用於執行該BIST之構件進一步包含用於執行一單一樣式寫入測試之構件。於一個實施例中,用於執行該BIST之構件進一步包含用於執行一樣式之單一寫入測試之構件,該樣式為導致一非零癥狀的資料之一反相。於一個實施例中,用於施加該ECC校正演算法之構件包含用於執行一單一裝置資料校正(SDDC)常式之構件。
於一個面向中,一種包含具有內容儲存於其上的一電腦可讀取儲存媒體的製造物件,該內容當被存取時使得一機器執行操作包括:於至該記憶體裝置之一記憶體位址的一存取操作期間於讀取自一記憶體裝置的資料中檢測一錯誤;回應於檢測該錯誤,執行一內建自測試(BIST)用以判定該錯誤是否為於該記憶體位址的一暫時性錯誤或為於該記憶體位址的一持久性錯誤;及若該錯誤為一持久性錯誤,則以抹除模式執行錯誤檢查與校正(ECC),包括於施加一ECC校正演算法之前校正針對該記憶體位址之一抹除;否則,執行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤處理。
於一個實施例中,該記憶體裝置包含一依電性記憶體裝置。於一個實施例中,該記憶體裝置包含一封裝內記憶體裝置。於一個實施例中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。於一個實施例中,用於執行該BIST之內容進一步包含用於執行一反向迴圈寫入測試到該記憶體位址之內容。於一個實施例中,用於執行該BIST之內容進一步包含用於執行一單一樣式寫入測試之內容。於一個實施例中,用於執行該BIST之內容進一步包含用於執行一樣式之單一寫入測試之內容,該樣式為導致一非零癥狀的資料之一反相。於一個實施例中,用於施加該ECC校正演算法之內容包含用於執行一單一裝置資料校正(SDDC)常式之內容。
如此處例示的流程圖提出各種處理動作順序之實例。流程圖可指示欲由軟體或韌體常式執行的操作,以及實體操作。於一個實施例中,流程圖可例示有限狀態機(FSM)之狀態,其可於硬體及/或軟體實現。雖然係以特定序列或順序顯示,但除非另行載明否則動作的順序可經修改。如此,須瞭解例示實施例僅作為實例,及處理可以不同順序執行,有些動作可並列執行。此外,於各種實施例中一或多個動作可被刪除;如此,並非每個實施例皆要求全部動作。其它處理流程亦屬可能。
至各種操作或功能於此處描述之程度,其可經描述或定義為軟體代碼、指令、組配、及/或資料。內容可被直接執行(「對象」或「可執行」形式)、來源代碼、或不同
代碼(「△」或「補片」代碼)。此處描述之實施例的軟體內容可透過有內容儲存於其上的一製造物件提供,或透過操作一通訊介面用以透過該通訊介面發送資料的方法提供。一機器可讀取儲存媒體可使得一機器執行所描述之功能或操作,及包括以由機器(例如,計算裝置、電子系統等)可執行形式儲存資訊的任何機構,諸如可錄式/非可錄式媒體(例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等)。一通訊介面包括介接到硬接線、無線、光學等媒體中之任一者而與另一裝置通訊的任何機構,諸如記憶體匯流排介面、處理器匯流排介面、網際網路連結、碟片控制器等。通訊介面可藉提供組配參數及/或發送信號而組配用以準備該通訊介面提供描述軟體內容的一資料信號。通訊介面可透過發送給該通訊介面的一或多個指令或信號而予存取。
此處描述之各種組件可以是用以執行所描述之操作或功能的構件。此處描述之各個組件包括軟體、硬體、或其組合。此等組件可實施為軟體模組、硬體模組、特用硬體(例如,特定應用硬體、特定應用積體電路(ASIC)、數位信號處理器(DSP)等)、內嵌式控制器、硬接線電路等。
除了此處描述者之外,不背離其範圍可對本發明揭示之實施例及實作做出各種修改。因此,此處例示之實例須解譯為例示性而非限制性意義。本發明之範圍須單獨藉由參考如下申請專利範圍而予度量。
102‧‧‧系統
110‧‧‧處理器
120‧‧‧記憶體控制器
122、132‧‧‧輸入/輸出(I/O)
124‧‧‧錯誤檢查與校正(ECC)管理器
126‧‧‧內建自測試(BIST)
130‧‧‧記憶體
134‧‧‧陣列
Claims (20)
- 一種用於在一記憶體子系統中進行錯誤校正方法,其包含下列步驟:在對一記憶體裝置之一記憶體位址的一存取操作期間,檢測來自該記憶體裝置之讀取資料中的一錯誤;回應於檢測到該錯誤,執行一內建自測試(BIST)以判定該錯誤為於該記憶體位址處的一暫時性錯誤或為於該記憶體位址處的一持久性錯誤;及若該錯誤為一持久性錯誤,則以抹除模式進行錯誤檢查與校正(ECC),包括在施加一ECC校正演算法之前將針對該記憶體位址之一抹除校正;否則,進行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤。
- 如請求項1之方法,其中,該記憶體裝置包含一依電性記憶體裝置。
- 如請求項1之方法,其中,該記憶體裝置包含一封裝內記憶體裝置。
- 如請求項1之方法,其中,該記憶體裝置包含一x4雙列記憶體模組(DIMM)。
- 如請求項1之方法,其中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。
- 如請求項1之方法,其中,執行該BIST的步驟進一步包含下列步驟:對該記憶體位址執行一反向迴圈寫入測 試。
- 如請求項6之方法,其中,執行該BIST的步驟進一步包含下列步驟:執行一單一樣式寫入測試。
- 如請求項6之方法,其中,執行該BIST的步驟進一步包含下列步驟:執行一樣式之單一寫入測試,該樣式為導致一非零癥狀之資料的一反相。
- 如請求項1之方法,其中,施加該ECC校正演算法的步驟包含下列動作:執行一單一裝置資料校正(SDDC)常式。
- 一種記憶體控制器,其在一記憶體子系統執行錯誤校正,且其包含:錯誤檢查與校正(ECC)邏輯,用於回應於讀取一記憶體裝置之一記憶體位址的一請求而檢測從該記憶體裝置所接收之資料中的一錯誤;及與該記憶體裝置耦合的輸入/輸出(I/O)硬體,用於發送一信號使得該記憶體裝置進行該記憶體位址的一內建自測試(BIST)而判定該錯誤為一暫時性錯誤或一持久性錯誤;其中,若該錯誤為一持久性錯誤則該ECC邏輯係用於以抹除模式執行ECC,包括在施加一ECC校正演算法之前將針對該記憶體位址之一抹除校正;否則,該ECC邏輯係用於執行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤。
- 如請求項10之記憶體控制器,其中,該記憶體裝置為連 同該記憶體控制器及一主機處理器而封裝於一單晶片系統內的一封裝內記憶體裝置。
- 如請求項10之記憶體控制器,其中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。
- 如請求項10之記憶體控制器,其中,該I/O硬體係用於發送一指令給該記憶體裝置以使得該記憶體裝置對該記憶體位址執行一反向迴圈寫入測試。
- 如請求項13之記憶體控制器,其中,該反向迴圈寫入測試包含一單一樣式寫入測試。
- 如請求項13之記憶體控制器,其中,該反向迴圈寫入測試包含一樣式之單一寫入測試,該樣式為導致一非零癥狀之資料的一反相。
- 如請求項10之記憶體控制器,其中,該ECC邏輯係用於執行單一裝置資料校正(SDDC)層級校正。
- 一種具有一記憶體子系統的電子裝置,其包含:多個動態隨機存取記憶體裝置(DRAM),各包括可分開定址記憶體位置的一記憶體陣列;一記憶體控制器包括錯誤檢查與校正(ECC)邏輯,用於回應於讀取一記憶體裝置之一記憶體位址的一請求而檢測從該記憶體裝置所接收之資料中的一錯誤;及與該記憶體裝置耦合的輸入/輸出(I/O)硬體,用於發送一信號使得該記憶體裝置執行該記憶體位址的一內建自測試(BIST)而判定該錯誤為一暫 時性錯誤或一持久性錯誤;其中,若該錯誤為一持久性錯誤則該ECC邏輯係用於以抹除模式執行ECC,包括在施加一ECC校正演算法之前將針對該記憶體位址之一抹除校正;否則,該ECC邏輯係用於執行全ECC校正,包括施加無抹除的該ECC校正演算法,將該錯誤視為一隨機位元錯誤;一機架系統,用於耦合該記憶體子系統至一刀鋒伺服器。
- 如請求項17之電子裝置,其中,該記憶體裝置包含一x8雙列記憶體模組(DIMM)。
- 如請求項17之電子裝置,其中,該記憶體控制器I/O硬體係用於發送一指令給該記憶體裝置以使得該記憶體裝置對該記憶體位址執行一反向迴圈寫入測試。
- 如請求項17之電子裝置,其中,該ECC邏輯係用於執行單一裝置資料校正(SDDC)層級校正。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/670,412 US9691505B2 (en) | 2015-03-27 | 2015-03-27 | Dynamic application of error correction code (ECC) based on error type |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201638965A TW201638965A (zh) | 2016-11-01 |
TWI605459B true TWI605459B (zh) | 2017-11-11 |
Family
ID=56975813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105103788A TWI605459B (zh) | 2015-03-27 | 2016-02-04 | 基於錯誤類型之錯誤檢查與校正(ecc)的動態應用程式 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9691505B2 (zh) |
KR (1) | KR102553704B1 (zh) |
CN (1) | CN107430538B (zh) |
TW (1) | TWI605459B (zh) |
WO (1) | WO2016160275A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9904591B2 (en) | 2014-10-22 | 2018-02-27 | Intel Corporation | Device, system and method to restrict access to data error information |
US9740558B2 (en) | 2015-05-31 | 2017-08-22 | Intel Corporation | On-die ECC with error counter and internal address generation |
US10127101B2 (en) | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US10031801B2 (en) * | 2015-12-01 | 2018-07-24 | Microsoft Technology Licensing, Llc | Configurable reliability for memory devices |
WO2017192626A1 (en) * | 2016-05-02 | 2017-11-09 | Intel Corporation | Internal error checking and correction (ecc) with extra system bits |
US10268541B2 (en) | 2016-08-15 | 2019-04-23 | Samsung Electronics Co., Ltd. | DRAM assist error correction mechanism for DDR SDRAM interface |
US10825545B2 (en) * | 2017-04-05 | 2020-11-03 | Micron Technology, Inc. | Memory device loopback systems and methods |
US10552256B2 (en) | 2017-05-08 | 2020-02-04 | Samsung Electronics Co., Ltd. | Morphable ECC encoder/decoder for NVDIMM over DDR channel |
US10242750B2 (en) * | 2017-05-31 | 2019-03-26 | Sandisk Technologies Llc | High-speed data path testing techniques for non-volatile memory |
KR102259928B1 (ko) * | 2017-06-26 | 2021-06-03 | 에스케이하이닉스 주식회사 | 오류 관리 시스템 및 이를 포함하는 데이터 처리 시스템 |
TWI648620B (zh) | 2017-08-07 | 2019-01-21 | 慧榮科技股份有限公司 | 記憶體裝置以及操作指令錯誤處理方法 |
US20190050342A1 (en) * | 2017-08-08 | 2019-02-14 | Honeywell International Inc. | Selective page tracking for process controller redundancy |
US11281195B2 (en) * | 2017-09-29 | 2022-03-22 | Intel Corporation | Integrated circuits with in-field diagnostic and repair capabilities |
KR102401882B1 (ko) * | 2017-12-04 | 2022-05-26 | 에스케이하이닉스 주식회사 | 메모리의 신뢰성을 향상시킬 수 있는 메모리 시스템 및 그 메모리 관리 방법 |
KR102449346B1 (ko) | 2017-12-12 | 2022-10-04 | 삼성전자주식회사 | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 |
CN110059028A (zh) * | 2018-01-17 | 2019-07-26 | 瑞昱半导体股份有限公司 | 数据储存芯片及数据存取方法 |
CN108600043A (zh) * | 2018-04-02 | 2018-09-28 | 郑州云海信息技术有限公司 | 连接服务器和控制端的方法、服务器Memory功能模块测试方法 |
US10636476B2 (en) | 2018-11-01 | 2020-04-28 | Intel Corporation | Row hammer mitigation with randomization of target row selection |
KR102629405B1 (ko) | 2018-11-09 | 2024-01-25 | 삼성전자주식회사 | 반도체 메모리 장치, 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
KR102131230B1 (ko) * | 2018-11-26 | 2020-07-08 | 현대오트론 주식회사 | 파워트레인 제어기의 램 에러 감지 로직의 자가진단 방법 및 장치 |
CN113728383B (zh) | 2019-02-22 | 2023-05-30 | 美光科技公司 | 存储器装置接口及方法 |
CN111863107B (zh) * | 2019-04-28 | 2022-08-02 | 武汉海康存储技术有限公司 | 闪存纠错方法及装置 |
JP7306945B2 (ja) * | 2019-10-03 | 2023-07-11 | ファナック株式会社 | メモリエラー判別装置及びメモリエラー判別用コンピュータプログラム |
EP4081954A4 (en) | 2019-12-27 | 2023-04-05 | Micron Technology, Inc. | NEUROMORPHIC STORAGE DEVICE AND METHOD |
EP4085458A4 (en) | 2019-12-30 | 2023-05-31 | Micron Technology, Inc. | STORAGE DEVICE INTERFACE AND METHOD |
KR20220114027A (ko) | 2019-12-31 | 2022-08-17 | 마이크론 테크놀로지, 인크. | 메모리 모듈 다중 포트 버퍼 기술 |
KR20210089804A (ko) | 2020-01-08 | 2021-07-19 | 삼성전자주식회사 | 메모리 모듈 및 이를 포함하는 메모리 시스템 |
US11308006B2 (en) * | 2020-03-27 | 2022-04-19 | Intel Corporation | Memory rank design for a memory channel that is optimized for graph applications |
KR20210122455A (ko) | 2020-04-01 | 2021-10-12 | 삼성전자주식회사 | 반도체 메모리 장치 |
NL2025650B1 (en) * | 2020-05-22 | 2021-12-07 | Microsoft Technology Licensing Llc | Implementing fault isolation in dram |
DE102020209132A1 (de) * | 2020-07-21 | 2022-01-27 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zur abgesicherten Speicherung eines zu speichernden Datenelements eines vorgegebenen Datentyps durch ein Computerprogramm in einem externen Speicher |
KR20220168737A (ko) | 2021-06-17 | 2022-12-26 | 삼성전자주식회사 | 반도체 메모리 장치 |
US11488684B1 (en) * | 2021-06-21 | 2022-11-01 | Western Digital Technologies, Inc. | Storage system and method for decision-based memory read threshold calibration |
KR20230003766A (ko) | 2021-06-30 | 2023-01-06 | 삼성전자주식회사 | 메모리 컨트롤러의 구동 방법, 이를 수행하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11815997B2 (en) | 2021-11-10 | 2023-11-14 | Samsung Electronics Co., Ltd. | Memory controllers, memory systems, and memory modules |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973613B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure |
US20050283566A1 (en) * | 2003-09-29 | 2005-12-22 | Rockwell Automation Technologies, Inc. | Self testing and securing ram system and method |
US8612797B2 (en) | 2006-03-31 | 2013-12-17 | Hewlett-Packard Development Company, L.P. | Systems and methods of selectively managing errors in memory modules |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7949931B2 (en) | 2007-01-02 | 2011-05-24 | International Business Machines Corporation | Systems and methods for error detection in a memory system |
US8245105B2 (en) | 2008-07-01 | 2012-08-14 | International Business Machines Corporation | Cascade interconnect memory system with enhanced reliability |
US8020053B2 (en) * | 2008-10-29 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | On-line memory testing |
WO2010054410A2 (en) * | 2008-11-10 | 2010-05-14 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for predicting failures in solid-state storage |
US8250435B2 (en) | 2009-09-15 | 2012-08-21 | Intel Corporation | Memory error detection and/or correction |
US8612828B2 (en) | 2009-12-22 | 2013-12-17 | Intel Corporation | Error correction mechanisms for 8-bit memory devices |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US10803970B2 (en) * | 2011-11-14 | 2020-10-13 | Seagate Technology Llc | Solid-state disk manufacturing self test |
US20140059278A1 (en) * | 2011-11-14 | 2014-02-27 | Lsi Corporation | Storage device firmware and manufacturing software |
WO2013147794A1 (en) | 2012-03-29 | 2013-10-03 | Intel Corporation | Enhanced storage of metadata utilizing improved error detection and correction in computer memory |
US8713406B2 (en) * | 2012-04-30 | 2014-04-29 | Freescale Semiconductor, Inc. | Erasing a non-volatile memory (NVM) system having error correction code (ECC) |
US8914704B2 (en) | 2012-06-29 | 2014-12-16 | Intel Corporation | Mechanism for achieving high memory reliablity, availability and serviceability |
US8996934B2 (en) * | 2012-09-29 | 2015-03-31 | Intel Corporation | Transaction-level testing of memory I/O and memory device |
CN102968353B (zh) * | 2012-10-26 | 2015-12-09 | 华为技术有限公司 | 一种失效地址处理方法及装置 |
US8862953B2 (en) * | 2013-01-04 | 2014-10-14 | International Business Machines Corporation | Memory testing with selective use of an error correction code decoder |
US9104595B2 (en) * | 2013-03-12 | 2015-08-11 | Intel Corporation | Selective remedial action based on category of detected error for a memory read |
-
2015
- 2015-03-27 US US14/670,412 patent/US9691505B2/en not_active Expired - Fee Related
-
2016
- 2016-02-04 TW TW105103788A patent/TWI605459B/zh not_active IP Right Cessation
- 2016-03-07 WO PCT/US2016/021146 patent/WO2016160275A1/en active Application Filing
- 2016-03-07 KR KR1020177023687A patent/KR102553704B1/ko active IP Right Grant
- 2016-03-07 CN CN201680019054.XA patent/CN107430538B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR102553704B1 (ko) | 2023-07-11 |
CN107430538B (zh) | 2021-06-08 |
TW201638965A (zh) | 2016-11-01 |
KR20170130384A (ko) | 2017-11-28 |
CN107430538A (zh) | 2017-12-01 |
US20160284424A1 (en) | 2016-09-29 |
US9691505B2 (en) | 2017-06-27 |
WO2016160275A1 (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI605459B (zh) | 基於錯誤類型之錯誤檢查與校正(ecc)的動態應用程式 | |
US10496473B2 (en) | Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC) | |
EP3341939B1 (en) | Memory device check bit read mode | |
US10824499B2 (en) | Memory system architectures using a separate system control path or channel for processing error information | |
US9934143B2 (en) | Mapping a physical address differently to different memory devices in a group | |
US9904591B2 (en) | Device, system and method to restrict access to data error information | |
US10606696B2 (en) | Internally-generated data storage in spare memory locations | |
US9697094B2 (en) | Dynamically changing lockstep configuration | |
KR102262575B1 (ko) | 메모리 장치 및 모듈 | |
JP6713740B2 (ja) | メモリモジュール | |
US11664083B2 (en) | Memory, memory system having the same and operating method thereof | |
TWI808098B (zh) | 用於支持錯誤更正碼的裝置及其測試方法 | |
US20240061741A1 (en) | Adaptive error correction to improve system memory reliability, availability, and serviceability (ras) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |