TWI539467B - 快取列中記憶體抹除資訊技術 - Google Patents
快取列中記憶體抹除資訊技術 Download PDFInfo
- Publication number
- TWI539467B TWI539467B TW103129329A TW103129329A TWI539467B TW I539467 B TWI539467 B TW I539467B TW 103129329 A TW103129329 A TW 103129329A TW 103129329 A TW103129329 A TW 103129329A TW I539467 B TWI539467 B TW I539467B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- device number
- location
- cache
- read
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1088—Scrubbing in RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Description
本發明係有關於快取列中記憶體抹除資訊技術。
一記憶體模組可能包含有很多個記憶體裝置。錯誤更正邏輯可被使用來更正在該等記憶體裝置中所檢測到的錯誤。記憶體模組可以包括備用記憶體裝置,使得當一記憶體裝置故障時,一備用的記憶體裝置可以被使用來替代該發生故障的記憶體裝置。
依據本發明之一實施例,係特地提出一種用以儲存記憶體抹除資訊的方法,該方法包含有:識別出與在一第一快取列中之一錯誤相關聯的一記憶體位置,其中該第一快取列包含有從該記憶體位置所讀出的資料,並且其中該記憶體位置是在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置中;把對應於該第一記憶體裝置的一裝置號碼寫入到該等數個記憶體裝置中之一;以及當該記憶體位置係為一第二快取列來讀取時,檢索對應於該第一記憶
體裝置的該裝置號碼,其中該第二快取列包括該檢索的裝置號碼和從該記憶體位置所讀取出的資料。
100‧‧‧記憶體控制器
102‧‧‧處理器
104‧‧‧機器可讀取儲存媒體
106‧‧‧識別記憶體位置
108‧‧‧儲存裝置號碼
110‧‧‧檢索裝置號碼
112‧‧‧判定錯誤的位置
200‧‧‧記憶體控制器
202‧‧‧處理器
204‧‧‧機器可讀取儲存媒體
206‧‧‧識別記憶體位置
208‧‧‧儲存裝置號碼
210‧‧‧檢索裝置號碼
212‧‧‧判定錯誤的位置
214‧‧‧嵌入標籤編碼位元
216‧‧‧指定區域為有缺陷的
300‧‧‧記憶體控制器
302‧‧‧處理器
304‧‧‧機器可讀取儲存媒體
306‧‧‧檢測在快取列中的錯誤
308‧‧‧識別第一裝置號碼
310‧‧‧基於第一裝置號碼判定錯誤的位置
312‧‧‧更正檢測到的錯誤
400‧‧‧記憶體控制器
402‧‧‧處理器
404‧‧‧機器可讀取儲存媒體
406‧‧‧檢測在快取列中的錯誤
408‧‧‧識別第一裝置號碼
410‧‧‧基於第一裝置號碼判定錯誤的位置
412‧‧‧更正檢測到的錯誤
414‧‧‧識別第二裝置號碼
416‧‧‧比較第一和第二裝置號碼
418‧‧‧基於第二裝置號碼判定錯誤的位置
500‧‧‧記憶體控制器
502‧‧‧處理器
504‧‧‧機器可讀取儲存媒體
506‧‧‧檢測在快取列中的錯誤
508‧‧‧識別第一裝置號碼
510‧‧‧基於第一裝置號碼判定錯誤的位置
512‧‧‧更正檢測到的錯誤
514‧‧‧記錄錯誤
516‧‧‧檢索裝置號碼
600‧‧‧快取列
700‧‧‧流程圖
702~706‧‧‧方塊
800‧‧‧流程圖
802~806‧‧‧方塊
900‧‧‧流程圖
902~920‧‧‧方塊
1000‧‧‧流程圖
1002~1008‧‧‧方塊
1100‧‧‧流程圖
1102~1120‧‧‧方塊
以下的詳細描述參考到所附圖示,其中:圖1係一實例記憶體控制器的一方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令以儲存記憶體抹除資訊;圖2係一實例記憶體控制器的一方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令,該等指令使得一記憶體裝置的一區域可以進行記憶體抹除;圖3係一實例記憶體控制器的一方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令以更正快取列錯誤;圖4係一實例記憶體控制器的一方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令以在進行記憶體抹除時識別和使用在一快取列中的裝置號碼;圖5係一實例記憶體控制器的一方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令以記錄在一記憶體裝置中的錯誤;圖6係一實例快取列的示意圖,其具有用於記憶體抹除的裝置號碼;圖7係一實例方法的一流程圖,該方法用以儲存記憶體抹除資訊;圖8係一實例方法的一流程圖,該方法用以更正
一快取列錯誤;圖9係一實例方法的一流程圖,該方法用以儲存裝置號碼使之可在一快取列的基礎上進行記憶體抹除;圖10係一實例方法的一流程圖,該方法用以在一記憶體裝置的一區域進行記憶體抹除;以及圖11係一實例方法的一流程圖,該方法用以識別和使用在一快取列中的裝置號碼來進行記憶體抹除。
在一記憶體模組中大多數的錯誤並不會滲透到一整個的記憶體裝置中。然而,即使一錯誤被定位於一記憶體裝置的一小部分上(例如,位元、列、行),該整個記憶體裝置會由一備用記憶體裝置來做替換。因此,一記憶體裝置其絕大無誤的部分可能會因為該記憶體裝置之一少量容易出錯的部分而無法被使用。
有鑑於上述的情況,本發明提供一種在記憶體裝置會被替換之處增加粒度的方法。一記憶體控制器可以被編程來識別出錯誤係從其發生之記憶體裝置的部分,忽略和/或更正從該識別出的部分所讀出的資料,並照常處理來自記憶體裝置無誤部分的資料(例如,對於一具有一易誤部分和一無誤部分的單一記憶體裝置,從易誤部分所讀出的資料可以被忽略/更正,而來自無誤部分所讀出的資料可被照常處理)。該忽略和/或更正從一記憶體裝置讀出資料的過程會在本說明書中被稱為「記憶體抹除」。有關於是那一些
資料要被忽略/更正的資訊在本說明書中會被稱為「記憶體抹除資訊」。
一記憶體控制器可從一記憶體模組接收在一快取列中的資料。資料可以從一記憶體模組之各種記憶體裝置在基本相同的時點上被讀取,而該記憶體模組可以輸出一包括從該等各種記憶體裝置所讀出資料的快取列。在一些實現方式中,資料可以突發的方式從記憶體裝置中被讀出,使得在一記憶體裝置中的多個位址會被讀取以回應於每一個讀取命令。一記憶體模組的每一個記憶體裝置可以被指派一裝置號碼,而在一快取列中該資料位置可以對應於從其該資料會被讀出之該記憶體裝置的該裝置號碼。
舉例來說,一記憶體模組可以包括編號為0-17的18個記憶體裝置(例如,動態隨機存取記憶體[DRAM]),而當讀取該等記憶體裝置時,使用的突發長度為8,且一記憶體裝置的每一個位址持有4個位元。因此,當一讀取命令被發送到此一記憶體模組時,該記憶體模組會輸出一576個位元的快取列(計算的方式為32乘以18,32係每一記憶體裝置被讀取的位元數,而18係記憶體裝置數)。在一些實現方式中,一快取列最高的32位元可以是從記憶體裝置0所讀出的32位元,接下來的32位元可以是從記憶體裝置1所讀出的32位元,依此類推,而該快取列最低的32位元可以是從記憶體裝置17所讀出的32位元。在一些實現方式中,一快取列最高的32位元可以是從記憶體裝置17所讀出的32位元,接下來的32位元可以是從記憶體裝置16所讀出的32位元,依
此類推,而該快取列最低的32位元可以是從記憶體裝置0所讀出的32位元。應當被理解的是,其他合適的位元順序亦可被使用,而且用於該等裝置號碼之其他的編號方案亦可被使用(例如,該等記憶體裝置可以被編號為1至18)。儘管本發明討論了一種具有18個記憶體裝置和讀取突發長度為8的記憶體模組,但是應當被理解的是,本說明書所討論的該等概念也適用於具有不同數量記憶體裝置和不同突發長度的記憶體模組。
現在參照附圖,圖1是一實例記憶體控制器100的方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令以儲存記憶體抹除資訊。記憶體控制器100可被通信地耦合到各種記憶體裝置(例如,在一記憶體模組上的記憶體裝置)並控制對其的存取。在圖1中,記憶體控制器100包含有處理器102和機器可讀取儲存媒體104。在本說明書中,該等術語「包括」、「具有」、和「包含」係可互換並且應當被理解為具有相同的含義。
處理器102可以包括一中央處理單元(CPU)、微處理器(例如,基於半導體的微處理器)、和/或其他適於檢索和/或執行儲存在機器可讀取儲存媒體104之指令的硬體裝置。處理器102可以提取、解碼、和/或執行指令106、108、110、和112來進行記憶體抹除資訊的儲存,如以下所述。作為一種替代方式或是除了檢索和/或執行指令之外,處理器102還可包括一電子電路,其包含有用以執行指令106、108、110、和/或112之該功能的多個電子組件。
機器可讀取儲存媒體104可以是包含或儲存有可執行指令之任何合適的電子、磁性、光學、或其他的實體記憶體。因此,機器可讀取儲存媒體104可以包括,舉例來說,一隨機存取記憶體(RAM),一電可抹除可編程唯讀記憶體(EEPROM)、一儲存裝置、一光碟、等等。在一些實現方式中,機器可讀取儲存媒體104可包括一非暫時性儲存媒體,其中術語「非暫時性」不包括暫時性的傳播信號。正如會在以下做詳細描述的,機器可讀取儲存媒體104可被編碼成具有一組可執行指令106、108、110、和112。
指令106可以識別與在一第一快取列中一錯誤相關聯的一記憶體位置。舉例來說,在該第一快取列中之錯誤資料可被檢測或識別,而指令106可以識別從其該資料會被讀出的記憶體裝置和/或記憶體位址。該第一快取列可以包括從該記憶體位置所讀取之資料。該記憶體位置可以是在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置中。該記憶體模組可以是一直插式記憶體模組,諸如一單列直插式記憶體模組(SIMM)或一雙列直插式記憶體模組(DIMM),或適於安裝記憶體積體電路(IC)之任何的記憶體模組。
指令108可以把對應於該第一記憶體裝置的一裝置號碼儲存在該記憶體模組上之該等數個記憶體裝置中的一個。該裝置號碼可以具二進制形式。該裝置號碼可以被儲存在該第一記憶體裝置中或是非該第一記憶體裝置的一記憶體裝置中。在一些實現方式中,指令108可以把對應於
該第一記憶體裝置的該裝置號碼再儲存在該等數個記憶體裝置中的另一個。該裝置號碼的這種冗餘儲存使得即使儲存該裝置號碼的該等記憶體裝置的其中之一失效時,仍能檢索出該裝置號碼。
當該記憶體位置係為一第二快取列來讀取時,指令110可以檢索出對應於該第一記憶體裝置的該裝置號碼。該第二快取列可包括從該等相同記憶體位址所讀出的資料,正如同為該第一快取列所讀出那些,但是在一稍後的時間點上。該第二快取列可以包括該檢索出的裝置號碼和從指令106所識別出之該記憶體位置所讀出的資料。在一些實現方式中,指令110可以從該等數個記憶體裝置中的一個檢索出該裝置號碼的一份第一副本,並可從該等數個記憶體裝置中不同的一個檢索出該裝置號碼的一份第二副本。
基於該裝置號碼,指令112可判定在該第二快取列中與一錯誤相關聯的位置。如以上所討論的,在一快取列中該資料位置可以對應於從其該資料會被讀出之該記憶體裝置的該裝置號碼。在一快取列中的一裝置號碼可以指出在該快取列中那一個位元群組記憶體控制器100應該忽略或更正。舉例來說,如果一記憶體模組具有編號為0-17的記憶體裝置,並從每一個記憶體裝置讀出32位元,那麼如果在一快取列中的該裝置號碼是0,記憶體控制器100可以忽略或更正在該快取列中最低的32個位元。
圖2是一實例記憶體控制器200的方塊圖,該控制器包含有一機器可讀取儲存媒體,其被編碼有指令,該等
指令使得一記憶體裝置的一區域可以進行記憶體抹除。記憶體控制器200可被通信地耦合到各種記憶體裝置(例如,在一記憶體模組上的記憶體裝置),並控制對其的存取。在圖2中,記憶體控制器200包含有處理器202和機器可讀取儲存媒體204。
如同圖1的處理器102,處理器202可以包括一CPU、微處理器(例如,基於半導體的微處理器)、和/或其他適於檢索和/或執行儲存在機器可讀取儲存媒體204之指令的硬體裝置。處理器202可以提取、解碼、和/或執行指令206、208、210、212、214、和216來使得一記憶體裝置的一區域可以進行記憶體抹除,如以下所述。作為一種替代方案或是除了檢索和/或執行指令之外,處理器202可包括一電子電路,其包含有用以執行指令206、208、210、212、214、和/或216之該功能的多個電子組件。
正如同圖1的機器可讀取儲存媒體104,機器可讀取儲存媒體204可以是儲存有可執行指令之任何合適的實體記憶體。在機器可讀取儲存媒體204上的指令206、208、210、和212可以是類似於(例如,具有的功能和/或組件類似於)在機器可讀取儲存媒體104上的指令106、108、110、和112。指令214可以把標籤編碼位元嵌入到對應於一第一記憶體裝置之一儲存的裝置號碼中。標籤編碼位元可被使用來指出快取列的所有權,並當有多個處理器被使用來存取相同的記憶體裝置時,可保持快取同調性。當一裝置號碼就算使用少於所有為該裝置號碼所預留之該等位元仍可被
識別時,標籤編碼位元可以被嵌入在儲存的裝置號碼中。
舉例來說,在一具有編號為0-17之18個記憶體裝置的記憶體模組中,5個位元可被使用來儲存一裝置號碼(以二進制形式表示)。對於裝置號碼0-15(用二進制形式為00000到01111),所有的5個位元可能會被需要來識別出該正確的裝置號碼。然而,對於裝置號碼16(二進制形式為10000)和17(二進制形式為10001)來說,重要的位元為最高位元和最低位元;就識別一裝置號碼的目的來說,在其中的三個位元可以被忽略。因此,當一錯誤係與裝置號碼16或17相關聯時,該等5個位元中的第三高位元和第四高位元可以是標籤編碼位元。當一錯誤係與裝置號碼0-15相關聯時,無標籤編碼位元可以被嵌入在該裝置號碼中,而監聽可以被使用來保持快取同調性。
當一快取列所讀取的該等記憶體位置都沒與錯誤相關聯時,該最高位元和在該等5個位元中不是最低位元的另一個位元都會被設置為1。舉例來說,該等5個位元的最高兩個位可以都被設置為1(例如,當在一快取列中沒有錯誤時,該5位元字串「11xxx」可以被儲存,其中每一個「x」可以表示一個0或一個1)。假如該等5個位元之最高位元和除了該最低位元之外的任一其他位元兩者都被設置為1的話,那麼就在該快取列中指出沒有錯誤的目的來說,其餘的位元為何是無關緊要的。因此,任何剩餘的三個位元可為標籤編碼位元。為了與一快取列所讀取之一記憶體位置與一錯誤相關聯的情況達成一致性,該第三高位元和該
第四高位元可以是標籤編碼位元(例如,當在一快取列中沒有錯誤時,該5位元字串「11ttx」可以被儲存,其中每一個「t」代表一個標籤編碼位元而該「x」可以表示一個0或一個1)。雖然在本文中所提到用以儲存裝置號碼的是5位元的字串,但是應當被理解的是,本發明的原理和概念亦可適用於用以儲存裝置號碼之較長或較短的字串。被使用來儲存裝置號碼的該位元數可以基於在一個記憶體模組上有多少個記憶體裝置和/或有多少個標籤編碼位元將被嵌入到一裝置號碼中。
如果標籤編碼位元係被嵌入到由指令210所檢索之一裝置號碼中,則當使用該裝置號碼來判定在一快取列中一錯誤的位置時,指令212可以套用一遮罩到該裝置號碼。舉例來說,如果該裝置號碼是5位元長,並且該等第三和第四最高位元為標籤編碼位元,則指令212可以使用一遮罩來阻擋該等第三和第四最高位元,然後基於該等剩餘的位元來判定該裝置號碼為何。
指令216可以把在一第一記憶體裝置中之一記憶體位置四週的一區域指定為有缺陷的。舉例來說,指令216可以把包括一特定記憶體位置之一列、行、和/或組指定為有缺陷的。當產生自一區域的錯誤數量超過一指定的臨界值時,該區域可以被指定為有缺陷的。當在該指定區域中的一位址被讀取時,指令210可檢索對應於該第一記憶體裝置的一裝置號碼。
圖3係一實例記憶體控制器300的一方塊圖,該控
制器包含有一機器可讀取儲存媒體,其被編碼有指令以更正快取列錯誤。記憶體控制器300可被通信地耦合到各種記憶體裝置(例如,在一記憶體模組上的記憶體裝置),並控制對其的存取。在圖3中,記憶體控制器300包含有處理器302和機器可讀取儲存媒體304。
正如同圖1的處理器102,處理器302可以包括一CPU、微處理器(例如,基於半導體的微處理器)、和/或其他適於檢索和/或執行儲存在機器可讀取儲存媒體304之指令的硬體裝置。處理器302可以提取、解碼、和/或執行指令306、308、310、和312以更正快取列的錯誤,正如以下所述。作為一種替代方案或是除了檢索和/或執行指令之外,處理器302可包括一電子電路,其包含有用以執行指令306、308、310、和/或312之該功能的多個電子組件。
正如同圖1的機器可讀取儲存媒體104,機器可讀取儲存媒體304可以是儲存有可執行指令之任何合適的實體記憶體。在一些實現方式中,機器可讀取儲存媒體304可包括一非暫時性儲存媒體。正如會在以下做詳細描述的,機器可讀取儲存媒體304可被編碼成具有一組可執行指令306、308、310、和312。
指令306可以檢測出在一快取列中的錯誤。舉例來說,指令306可以檢測為一快取列所計算的一非匹配檢查總和。該檢測到的錯誤可與在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置相關聯。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於安
裝記憶體IC之任何的記憶體模組。
指令308可在一快取列中識別一第一裝置號碼。該第一裝置號碼可以對應於與一檢測到錯誤相關聯的一記憶體裝置(例如,從該記憶體裝置所讀出的資料可能包含有該檢測到的錯誤),並且可以從一記憶體模組上之數個記憶體裝置的其中之一被讀出。該第一裝置號碼可能會出現在一快取列中的一指定位置上。舉例來說,一裝置號碼可能有5個位元,而任一包含有一裝置號碼的快取列可能會在該快取列的最高5個位元中具有該裝置號碼。該裝置號碼的5個位元可能會連續地出現在一快取列中,或者可能會被分解到一快取列的不同部分中。
在一些實現方式中,標籤編碼位元可被嵌入在該第一裝置號碼中,如同以上針對圖2所討論的。在這種實現方式中,指令308可以套用一遮罩到該第一裝置號碼來阻擋該等標籤編碼位元。舉例來說,如果該裝置號碼是5位元長,並且該等第三和第四最高位元為標籤編碼位元,指令308可以使用一遮罩來阻擋該等第三和第四最高位元,然後由該等剩餘的位元來判定所指定的裝置號碼為何。
基於一第一裝置號碼,指令310可判定在一快取列中一檢測到的錯誤的位置。如以上所討論的,在一快取列中資料的該位置可以對應於從其該資料會被讀出之該記憶體裝置的該裝置號碼。指令310可在該快取列中識別出對應於該第一裝置號碼的該位置。舉例來說,如果從一記憶體模組的每一個記憶體裝置讀出32個位元並且從記憶體裝
置0所讀出的該等位元為一快取列之最低的32個位元,那麼如果該快取列包括該裝置號碼00000的話,指令310可判定一檢測到的錯誤是在該快取列之最低的32個位元中。
指令312可以更正在一快取列中所檢測到的錯誤。在一些實現方式中,指令312可以使用在一快取列中無誤的資料來為該快取列具有該檢測到錯誤的部分來重建資料。該快取列具有該檢測到錯誤的部分可包括從一記憶體裝置所讀出的資料,該記憶體裝置對應到在該快取列中被識別出的一裝置號碼。在一些實現方式中,指令312可以忽略在一快取列某一位置中的資料(例如,該快取列的部分包含有從一記憶體裝置所讀出的資料,該記憶體裝置對應到在該快取列中的一裝置號碼)並使用在該快取列其他位置上的資料來判定哪些資料應該是在該被忽略的位置上。
圖4係一實例記憶體控制器400的一方塊圖,該裝置包含有一機器可讀取儲存媒體,其被編碼有指令其被編碼有指令以在進行記憶體抹除時識別和使用在一快取列中的裝置號碼。記憶體控制器400可被通信地耦合到各種記憶體裝置(例如,在一記憶體模組上的記憶體裝置),並控制對其的存取。在圖4中,記憶體控制器400包含有處理器402和機器可讀取儲存媒體404。
如同圖3的處理器302,處理器402可以包括一CPU、微處理器(例如,基於半導體的微處理器)、和/或其他適於檢索和/或執行儲存在機器可讀取儲存媒體404之指令的硬體裝置。處理器402可以提取、解碼、和/或執行指
令406、408、410、412、414、416、和418來使得一記憶體裝置的一區域可以進行記憶體抹除,如以下所述。作為一種替代方案或是除了檢索和/或執行指令之外,處理器402可包括一電子電路,其包含有用以執行指令406、408、410、412、414、416、和/或418之該功能的多個電子組件。
正如同圖3的機器可讀取儲存媒體304,機器可讀取儲存媒體404可以是儲存有可執行指令之任何合適的實體記憶體。在機器可讀取儲存媒體404上的指令406、408、410、和412可以是類似於在機器可讀取儲存媒體304上的指令306、308、310、和312。指令408可識別在一快取列中的一第一裝置號碼,而該第一裝置號碼可從在一記憶體模組上之數個記憶體裝置中的一個被讀出。指令414可以識別在一快取列中的一第二裝置號碼。該第二裝置號碼可以從該等數個記憶體裝置中的另一個被讀出。該第二裝置號碼可以對應於與一個由指令406所檢測到錯誤相關聯的一記憶體裝置,並且可以是該第一裝置號碼的一份副本。在一些實現方式中,標籤編碼位元可以被嵌入在該第二裝置號碼中,而當識別該第二裝置號碼時,指令414可以使用一遮罩,用一種類似於以上針對圖3所討論的方式來進行。
該第二裝置號碼可能會出現在一快取列中的一指定位置上。舉例來說,一個裝置號碼可能是5個位元,而任何包含有兩個裝置號碼的快取列可能會在該快取列的最低5個位元中具有該第二裝置號碼。該第二裝置號碼的5個位元可能會連續地出現在一快取列中,或者可能會被分解
到一快取列的不同部分中。
指令416可以比較由指令408所識別出的該第一裝置號碼和由指令414所識別出的該第二裝置號碼。舉例來說,指令416可以把該第一裝置號碼和該第二裝置號碼輸入到一比較器。如果該第一裝置號碼和該第二裝置號碼匹配的話,該裝置號碼可以被使用來判定由指令406檢測到的一錯誤在一快取列中的位置,而且該錯誤可以被更正。如果該第一裝置號碼和該第二裝置號碼不匹配的話,則會嘗試使用該第一裝置號碼來判定一錯誤在一快取列中的位置並更正該錯誤。
基於該第二裝置號碼,指令418可以判定一檢測到錯誤在該快取列中的位置。如果該第一裝置號碼和該第二裝置號碼不匹配的話,並且當該第一裝置號碼被使用來判定該檢測到錯誤的位置時,若該檢測到的錯誤沒被成功地更正的話,那麼指令418可被執行。正如以上所討論的,在一快取列中該資料的位置可以對應於從其該資料會被讀出之該記憶體裝置的該裝置號碼。指令418可在該快取列中識別出對應於該第二裝置號碼的該位置。舉例來說,如果從一記憶體模組的每一個記憶體裝置讀出32個位元並且從記憶體裝置0所讀出的該等位元為一快取列之最低的32個位元,那麼如果該快取列包括該裝置號碼00000的話,指令418可判定一檢測到的錯誤是在該快取列之最低的32個位元中。指令412可以更正在該快取列中在該判定位置上的該錯誤。
圖5係一實例記憶體控制器500的一方塊圖,該裝置包含有一機器可讀取儲存媒體,其被編碼有指令以記錄在一記憶體裝置中的錯誤。記憶體控制器500可被通信地耦合到各種記憶體裝置(例如,在一記憶體模組上的記憶體裝置),並控制對其的存取。在圖5中,記憶體控制器500包含有處理器502和機器可讀取儲存媒體504。
如同圖3的處理器302,處理器502可以包括一CPU、微處理器(例如,基於半導體的微處理器)、和/或其他適於檢索和/或執行儲存在機器可讀取儲存媒體504之指令的硬體裝置。處理器502可以提取、解碼、和/或執行指令506、508、510、512、514、和516使之可在一記憶體裝置中記錄錯誤,如以下所述。作為一種替代方案或是除了檢索和/或執行指令之外,處理器502可包括一電子電路,其包含有用以執行指令506、508、510、512、514、和/或516之該功能的多個電子組件。
正如同圖3的機器可讀取儲存媒體304,機器可讀取儲存媒體504可以是儲存有可執行指令之任何合適的實體記憶體。在機器可讀取儲存媒體504上的指令506、508、510、和512可以是類似於在機器可讀取儲存媒體304上的指令306、308、310、和312。指令514可以記錄有多少錯誤係與一記憶體模組之一第一記憶體裝置的一區域相關聯。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於於安裝記憶體IC之任何的記憶體模組。該第一記憶體裝置的該區域可以是該第一記憶體裝置的一列或
一行。在一些實現方式中,指令514可以記錄有多少個錯誤與包含有該第一記憶體裝置之部分的一記憶體組相關聯。
在一些實現方式中,指令514可以保有一計數器,只要與該區域相關聯的錯誤(例如,從該區域中的一位址所讀出的資料有一錯誤)被檢測到時,該計數器會被遞增。如果與該區域相關聯的錯誤數目超過一特定臨界值時,該區域會被指定為有缺陷的。從一指定為有缺陷區域中的一位址所讀出的資料會被視為是不可靠的。
當在該區域中的一位址被讀取時,指令516可以檢索對應於該第一記憶體裝置的一裝置號碼。如果該區域被指定為有缺陷的話,指令516可被執行。該裝置號碼可以從在該記憶體模組上的數個記憶體裝置中的一個被檢索出。在一些實現方式中,指令516可以從該等數個記憶體裝置中的另外一個檢索出該裝置號碼的一份副本,使得該裝置號碼會在該快取列中出現兩次。如果從其該裝置號碼會被檢索出之該等記憶體裝置中的一個出現故障時,該裝置號碼的一正確副本仍然可能出現在一快取列中,並被使用來進行記憶體抹除。
在一些實現方式中,一巡邏清理器可被用來規劃在該記憶體模組中的記憶體裝置,使得每當在一有缺陷區域中的一位址被讀取時,對應於包括該有缺陷區域之該記憶體裝置的該裝置號碼也會被檢索出。因此,從該有缺陷區域所讀出的資料和該對應的裝置號碼都會出現在同一快取列中。指令510可以使用該裝置號碼來判定在該快取列中
從該有缺陷區域所讀出的該資料是位於何處,使得該資料可以被忽略或修正。
圖6係一實例快取列600的一示意圖,其具有可用於記憶體抹除的裝置號碼。快取列600可以由一具有18個DRAM的一記憶體模組來輸出。當讀取該等DRAM時,可以使用的突發長度為8,如在圖6中的該8列所示。每一個DRAM的位址可容納4位元。因此,快取列600可具有576位元(計算的方式為32乘以18,32係每一個DRAM被讀取的位元數,而18係該DRAM數)。
在圖6中最左邊的那一行表示為快取列600從該記憶體模組之一第一DRAM所讀出的資料。在圖6中從左側算起第二行表示為快取列600從該記憶體模組之一第二DRAM所讀出的資料。在圖6中從左側算起第三行表示為快取列600從該記憶體模組之一第三DRAM所讀出的資料。在圖6中最右邊的那一行,它比其他三行要寬,表示為快取列600從該記憶體模組之其他的15個DRAM所讀出的資料。
該第一DRAM可以儲存同位位元。快取列600包括32個同位位元,其可使得在快取列600中檢測出100%的錯誤變得可能。該第二和第三DRAM可以儲存裝置號碼(由圖6中的「DRAM#」來表示)、循環冗餘檢查(CRC)位元、以及其他的資料。快取列600包括10個裝置號碼位元。該等10個位元可以是同一5位元裝置號碼的兩份副本。在一些實現方式中,該等裝置號碼可以包括嵌入的標籤編碼位元(例如,每一裝置編號有2個標籤編碼位元,在快取列600總共
有4個標籤編碼位元),如以上針對圖2所做的討論。快取列600包括22個CRC位元,其可更正在快取列600中99.999976%的錯誤。剩下的15個DRAM可以儲存不是同位位元、裝置號碼、和CRC位元的其他資料。
有關於記憶體抹除的方法會針對圖7-11進行討論。圖7係一實例方法700的一流程圖,該方法用以儲存記憶體抹除資訊。雖然以下對方法700執行的描述係參照圖1的處理器102,但是應當被理解的是,方法700的執行亦可以由其他合適的裝置,諸如分別由圖2和圖3的處理器202和203來執行。方法700可以被實現成儲存在一機器可讀取儲存媒體上之可執行指令的形式和/或被實現成一種電子電路的形式。
方法700開始於方塊702,其中處理器102可識別出在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置中的一記憶體位置,其與在一第一快取列中的一錯誤相關聯。舉例來說,處理器102可以檢測或識別在該第一快取列中的錯誤資料,並識別出從其該資料會被讀出的該記憶體裝置和/或記憶體位址。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於安裝記憶體IC之任何的記憶體模組。該第一快取列可以包括從該記憶體位置所讀出的資料。
接著,在方塊704中,處理器102可以把一裝置號碼寫入到該等數個記憶體裝置的其中之一。該裝置號碼可以對應於該第一記憶體裝置,並且可以是以二進制形式表
示。該裝置號碼可以被儲存在該第一記憶體裝置中或是在一個不是該第一記憶體裝置的記憶體裝置中。在一些實現方式中,5個位元可被使用來儲存該裝置號碼。在一些實現方式中,標籤編碼位元可以被嵌入在該裝置號碼中。被使用來儲存該裝置號碼的位元數可基於在該記憶體模組上有多少個記憶體裝置和/或有多少個標籤編碼位元將被嵌入在一裝置號碼中來做調整。
最後,在方塊706中,當在方塊702中被識別出的該記憶體位置係為一第二快取列來讀取時,處理器102可以檢索在方塊704中該被寫入的裝置號碼。該第二快取列可以包括該檢索出的裝置號碼和從該記憶體位置所讀出之資料。該第二快取列可包括從該等相同記憶體位址所讀出的資料,正如同為該第一快取列所讀出那些,但係在一稍後的時間點上。在方塊706中所檢索出的該裝置號碼可被用來更正在該第二快取列中的一錯誤,如同以上針對圖3所做的討論。
圖8係一實例方法800的一流程圖,該方法用以更正一快取列錯誤。雖然以下對方法800執行的描述係參照圖3的處理器302,但是應當被理解的是,方法800的執行亦可以由其他合適的裝置,諸如分別由圖4和圖5的處理器402和502來執行。在一些實現方式中,方法800的一些方塊可以與方法700平行地執行和/或在方法700之後被執行。方法800可以被實現成為儲存在一機器可讀取儲存媒體上之可執行指令的形式和/或被實現成一種電子電路的形式。
方法800始於方塊802,其中處理器302檢測出在
一快取列中的一錯誤,該快取列包括從一第一記憶體裝置中一記憶體位置所讀出的資料,而該第一記憶體裝置對應於一儲存的裝置號碼。舉例來說,處理器302可以檢測為該快取列所計算出的一非匹配檢查總和。該第一記憶體裝置可能是在一記憶體模組上之數個記憶體裝置的其中一個,而該檢測到的錯誤可能係與該第一記憶體裝置相關聯(例如,為該快取列從該第一記憶體裝置所讀出的資料可能包含有錯誤)。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於安裝記憶體IC之任何的記憶體模組。除了從該第一記憶體裝置所讀出的資料之外,該快取列也會包括對應於該第一記憶體裝置的該裝置號碼。
接著,在方塊804中,基於該裝置號碼,處理器302可判定從該記憶體位置所讀出的資料在該快取列中所處的位置。如以上所討論的,資料在快取列中所處的位置可以對應於從其該資料會被讀出之該記憶體裝置的該裝置號碼。處理器302可在該快取列中識別出對應於在該快取列中該裝置號碼的該位置。舉例來說,如果從該記憶體模組的每一個記憶體裝置讀出32個位元並且從記憶體裝置0所讀出的該等位元為該快取列之最低的32個位元,那麼如果該快取列包括該裝置號碼00000的話,處理器302可判定在方塊802中所檢測到的該錯誤是在該快取列之最低的32個位元中。
在一些實現方式中,標籤編碼位元可被嵌入在該裝置號碼中,正如同以上針對圖2所做的討論。在這種實現
方式中,處理器302可以套用一遮罩到該裝置號碼來阻擋該等標籤編碼位元。舉例來說,如果該裝置號碼是5位元長,並且該等第三和第四最高位元為標籤編碼位元,處理器302可以使用一遮罩來阻擋該等第三和第四最高位元,然後由該等剩餘的位元來判定所指定的裝置號碼為何。
最後,在方塊806中,處理器302可以更正在該判定位置中的資料。在一些實現方式中,處理器302可以使用在該快取列中無誤的資料來為具有該檢測到錯誤之該快取列的部分重建資料。在一些實現方式中,處理器302可以忽略在該快取列之某一位置中的資料(例如,該快取列的部分包含有從對應於在該快取列中該裝置號碼的該記憶體裝置所讀出的資料)並使用在該快取列其他位置中的資料來判定哪些資料應該是在該判定的位置中。
圖9係一實例方法900的一流程圖,該方法用於儲存裝置號碼以在一快取列的基礎上進行記憶體抹除。雖然以下對方法900執行的描述係參照圖3的處理器302,但是應當被理解的是,方法900的執行亦可以由其他合適的裝置,諸如分別由圖4和圖5的處理器402和502來執行。在一些實現方式中,方法900的某些方塊可以與方法700平行地執行和/或是在方法700之後被執行。方法900可以被實現成為儲存在一機器可讀取儲存媒體上之可執行指令的形式和/或被實現成一種電子電路的形式。
方法900可始於方塊902,其中處理器302可識別在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置
中的一記憶體位置,其與在一快取列中的一錯誤相關聯。舉例來說,處理器302可以檢測或識別在該快取列中的錯誤資料,並識別出從其該資料會被讀出的該記憶體位址。該快取列可以包括從該記憶體位置所讀出的資料。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於安裝記憶體IC之任何的記憶體模組。
接著,在方塊904中,處理器302可判定在該快取列中是否有一裝置號碼。舉例來說,處理器302可判定是否有一裝置號碼出現在該快取列中的一指定位置中,如以上針對圖3所做的討論。如果處理器302判定在該快取列中有一裝置號碼,方法900可前進到方塊906,其中處理器302可使用該裝置號碼來判在該快取列中該錯誤的位置並更正該錯誤,如以上針對圖8所做的討論。
在方塊904中,如果判定在該快取列中沒有裝置號碼(例如,如果在該快取列之該指定的位置上沒有一有效的裝置號碼),方法900可前進到方塊908,其中處理器302可清理在該第一記憶體裝置中該指定的記憶體位置(例如,把正確的資料寫入到該識別的記憶體位置上)。接下來,在方塊910中,處理器302可從該經清理後之記憶體位置讀取資料。
在方塊912,處理器302可判定從該記憶體位置所讀出的資料是否是錯誤的。舉例來說,處理器302可以在該資料上執行一檢查總和演算法。如果該資料無誤,方法900可前進到方塊914,而對應於該第一記憶體裝置的裝置編號
可以不被儲存。
在方塊912中,如果判定從該記憶體位置所讀出的資料是錯誤的,那麼方法900可前進到方塊916,其中處理器302可以把對應於該第一記憶體裝置的一裝置號碼寫入到該等數個記憶體裝置的其中之一。該裝置號碼可以是二進制形式的(例如,5個位元)。該裝置號碼可以被寫入到該第一記憶體裝置或是不是該第一記憶體裝置的一記憶體裝置中。
在方塊918中,處理器302可以嵌入標籤編碼位元在該裝置號碼中。舉例來說,該裝置號碼可以被儲存成一5位元字串,而該等五個位元中的其中兩個可以是標籤編碼位元,如以上針對圖2所做的討論。應當被理解的是,在一些使用監聽來保持快取同調性的實現方式中,方塊918可能不會被執行。
在方塊920中,處理器302可以把對應於該第一記憶體裝置的該裝置號碼的一份副本寫入到該等數個記憶體裝置的另外一個中。該裝置號碼的該份副本可能包含嵌入的標籤編碼位元。該裝置號碼的這種冗餘儲存可使得就算在其中該裝置號碼有被寫入的該等記憶體裝置中之一失效時,還是可檢索出該裝置號碼。
圖10係一實例方法1000的一流程圖,該方法用以在一記憶體裝置的一區域進行記憶體抹除。雖然以下對方法1000執行的描述係參照圖5的處理器502,但是應當被理解的是,方法1000的執行亦可以由其他合適的裝置來執行,
諸如由圖2的處理器202。在一些實現方式中,方法1000的一些方塊可以與方法700平行地執行和/或在方法700之後被執行。方法1000可以被實現成儲存在一機器可讀取儲存媒體上之可執行指令的形式和/或被實現成一種電子電路的形式。
方法1000始於方塊1002,其中處理器502可以記錄有多少錯誤與一第一記憶體裝置之一記憶體位置其四周的一區域相關聯。該區域可以是包括該記憶體位置的一行、一列、和/或一記憶體組。在一些實現方式中,處理器502保持有一計數器,只要與該區域相關聯的錯誤(例如,從該區域中的一位址所讀出的資料有一錯誤)被檢測到時,該計數器會被遞增。
在方塊1004中,處理器502可判定在該區域中的該錯誤數是否超過一錯誤臨界值。舉例來說,處理器502可以把該錯誤計數器的計數值和該臨界值輸入到一個比較器。如果在該區域中的該錯誤數並沒有超過該臨界值的話,方法1000可以迴接到方塊1002。
在方塊1004中,如果判定在該區域中的該錯誤數超過該錯誤臨界值的話,方法1000可前進到方塊1006,其中處理器502可以指定在該記憶體位置四周的該區域為有缺陷的。在一些實現方式中,如果在該區域中的該錯誤數等於該錯誤臨界值的話,方法1000可前進到方塊1006。從一被指定為有缺陷區域之一位址所讀出的資料會被視為是不可靠的。
最後,在方塊1008中,當在該指定區域中的一位址被讀取時,處理器502可以檢索對應於該第一記憶體裝置的該裝置號碼。處理器502可從一記憶體模組上的數個記憶體裝置的其中一個檢索出該裝置號碼。在一些實現方式中,處理器502可以從該等數個記憶體裝置的另一個中檢索出該裝置號碼的一份副本,使得該裝置號碼會在一快取列中出現兩次。如果從其該裝置號碼會被檢索出之該等記憶體裝置中的一個失效時,該裝置號碼的一份正確副本仍然可以出現在一快取列中並被使用來做記憶體抹除。
圖11係一實例方法1100的一流程圖,該方法用以識別和使用在一快取列中的裝置號碼來做記憶體抹除。雖然以下對方法1100執行的描述係參照圖4的處理器402,但是應當被理解的是,方法1100的執行亦可以由其他合適的裝置來執行,諸如分別由圖1和圖3的處理器102和302來執行。在一些實現方式中,方法1100的一些方塊可以與方法800平行地執行和/或在方法800之後被執行。方法1100可以被實現成儲存在一機器可讀取儲存媒體上之可執行指令的形式和/或被實現成一種電子電路的形式。
方法1100可始於方塊1102,其中處理器402可能檢測到在一快取列中的一錯誤。舉例來說,處理器402可能檢測到為該快取列所計算出之一不匹配的檢查總和。該檢測到的錯誤係與在一記憶體模組上之一記憶體裝置的一記憶體位置相關聯。該記憶體模組可以是一直插式記憶體模組,諸如一SIMM或一DIMM,或適於安裝記憶體IC之任何
的記憶體模組。
接著,在方塊1104中,處理器402可以識別在該快取列中的一第一裝置號碼。該第一裝置號碼可以對應於與該檢測到錯誤相關聯的一記憶體裝置(例如,從該記憶體裝置所讀出的資料可能包含該檢測到的錯誤),並且可以從一記憶體模組上的數個記憶體裝置中的一個被讀出。該第一裝置號碼可能會出現在該快取列中的一指定位置上,如以上針對圖3所做的討論。在一些實現方式中,標籤編碼位元可以被嵌入在該第一裝置號碼中,而且當識別該第一裝置號碼時,處理器402可以使用一遮罩,如以上針對圖3所做的討論。
在方塊1106中,處理器402可識別在該快取列中的一第二裝置號碼。該第二裝置號碼可以從該等數個記憶體裝置的另一個讀出。該第二裝置號碼可以對應於與該檢測到錯誤相關聯的一記憶體裝置,並且可以是該第一裝置號碼的一份副本。該第二裝置號碼可能會出現在該快取列中的一指定位置中,如以上針對圖4所做的討論。在一些實現方式中,標籤編碼位元可以被嵌入到該第二裝置號碼中,而且當識別該第二裝置號碼時,處理器402可以使用一遮罩,用一種類似於以上針對圖3所討論的方式。
接著,在方塊1108中,處理器402可判定該第一裝置號碼是否匹配該第二裝置號碼。舉例來說,處理器402可以把該第一裝置號碼和該第二裝置號碼輸入到一比較器。如果該第一裝置號碼和該第二裝置號碼匹配的話,方法
1100可前進到方塊1110,其中處理器402可使用該裝置號碼來判定在該快取列中該錯誤的位置並且更正該錯誤,如以上針對圖8所做的討論。在方塊1112中,處理器402可以繼續記憶體控制器400的正常操作。
在方塊1108中,若判定該第一裝置號碼和該第二裝置號碼不匹配的話,方法1100可前進到方塊1114,其中處理器402會使用該第一裝置號碼來判定在該快取列中該錯誤的位置並嘗試更正該錯誤。如以上所討論的,在一快取列中該資料的位置可以對應到從其該資料會被讀出之該記憶體裝置的該裝置號碼。在方塊1114中,處理器402可判定在該快取列中那些位元是在對應於該第一裝置號碼的該位置中,並可能試圖去更正那些位元(例如,使用在該快取列之其他位置中的資料來重建在該位置中的資料)。
接著,在方塊1116中,處理器402可判定在方塊1114中所嘗試的該更正操作是否成功。舉例來說,處理器402可在該更正後的位元上和/或在具有該更正後位元之該整個快取列上執行一檢查總和演算法。如果判定該更正是成功的話,方法1100可前進到方塊1112。
在方塊1116中,如果判定該嘗試的更正不成功的話,方法1100可前進到方塊1118,其中處理器402可以使用該第二裝置號碼來判定在該快取列中該錯誤的位置並嘗試更正該錯誤。舉例來說,處理器402可判定在該快取列中那些位元是在對應於該第二裝置號碼的該位置中,並可能嘗試去更正那些位元(例如,使用在該快取列之其他位置中的
資料來重建在該位置中的該資料)。接著,在方塊1120中,處理器402可判定在方塊1118中所嘗試的該更正操作是否成功。舉例來說,處理器402可在該等更正後的位元上和/或在具有該等更正後位元之該整個快取列上執行一檢查總和演算法。如果判定該更正操作是成功的話,方法1100可前進到方塊1112。
在方塊1120中,若判定在方塊1118中所嘗試的該更正操作不成功的話,方法1100可以前進到方塊1122,在其中由於該未更正的錯誤可能會發生一種系統崩潰。與該錯誤相關聯之該有缺陷的記憶體裝置可能需要被更換方能使記憶體控制器400可正常的運行。
以上的揭露內容描述了在一快取列中用於該快取列的記憶體抹除資訊。在一快取列中有如此的記憶體抹除資訊可增加記憶體裝置可被節省的該粒度,舉例來說,對於該快取列的貢獻程度可達一單一記憶體裝置這麼多。
700‧‧‧流程圖
702~706‧‧‧方塊
Claims (15)
- 一種用以儲存記憶體抹除資訊的方法,該方法包含有:識別出與在一第一快取列中之一錯誤相關聯的一記憶體位置,其中該第一快取列包含有從該記憶體位置所讀出的資料,並且其中該記憶體位置是在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置中;把對應於該第一記憶體裝置的一裝置號碼寫入到該等數個記憶體裝置中之一者;以及當該記憶體位置係為一第二快取列來讀取時,取回對應於該第一記憶體裝置的該裝置號碼,其中該第二快取列包括該取回的裝置號碼和從該記憶體位置所讀取出的資料。
- 如請求項1之方法,其更包含有:基於該取回的裝置號碼,判定從該識別出的記憶體位置所讀出之該資料在該第二快取列中的一個位置;以及更正在該判定位置中的該資料。
- 如請求項1之方法,其更包含有把對應於該第一記憶體裝置的該裝置號碼的一份副本寫入到該等數個記憶體裝置之另一個中。
- 如請求項1之方法,其更包含有把標籤編碼位元嵌入到該裝置號碼中。
- 如請求項1之方法,其更包含有: 清理在該第一記憶體裝置中該識別出的記憶體位置;以及從該經清理後的記憶體位置讀出資料,其中若從該經清理後的記憶體位置所讀出的該資料有誤的話,對應於該第一記憶體裝置的該裝置號碼會被寫入到該等數個記憶體裝置中之該者。
- 如請求項1之方法,其更包含有:把在該記憶體位置四周的一區域指定為有缺陷的;以及當在該指定區域中的一位址被讀取時,取回對應於該第一記憶體裝置的該裝置號碼。
- 一種機器可讀取儲存媒體,其被編碼有可由一記憶體控制器的一處理器來執行的指令,用以儲存記憶體抹除資訊,該機器可讀取儲存媒體包含有:可識別出與在一第一快取列中一錯誤相關聯之一記憶體位置的指令,其中該第一快取列包含有從該記憶體位置所讀出的資料,並且其中該記憶體位置是在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置中;可把對應於該第一記憶體裝置的一裝置號碼儲存到該等數個記憶體裝置中之一者的指令;當該記憶體位置係為一第二快取列來讀取時,可取回對應於該第一記憶體裝置的該裝置號碼的指令,其中該第二快取列包括該取回的裝置號碼和從該記憶體位置所讀出的資料;以及 可基於該裝置號碼,判定在該第二快取列中一錯誤之一位置的指令。
- 如請求項7之機器可讀取儲存媒體,其更包含有指令可把對應於該第一記憶體裝置的該裝置號碼儲存到該等數個記憶體裝置之另一個中。
- 如請求項7之機器可讀取儲存媒體,其更包含有指令可把標籤編碼位元嵌入到該裝置號碼中。
- 如請求項7之機器可讀取儲存媒體,其更包含有:可把在該記憶體位置四周的一區域指定為有缺陷的指令;以及當在該指定區域中的一位址被讀取時,可取回對應於該第一記憶體裝置的該裝置號碼的指令。
- 一種機器可讀取儲存媒體,其被編碼有可由一記憶體控制器的一處理器來執行的指令,用以更正快取列錯誤,該機器可讀取儲存媒體包含有:可檢測出在一快取列中一錯誤的指令,其中該檢測出的錯誤係與在一記憶體模組上之數個記憶體裝置的一第一記憶體裝置相關聯;可在該快取列中識別出一第一裝置號碼的指令,其中該第一裝置號碼係從該等數個記憶體裝置的其中一個被讀出;可基於該第一裝置號碼,判定在該快取列中該檢測出錯誤之一位置的指令;以及可更正該檢測到錯誤的指令。
- 如請求項11之機器可讀取儲存媒體,其更包含有指令可在該快取列中識別一第二裝置號碼,其中該第二裝置號碼係從該等數個記憶體裝置的另一個中被讀出。
- 如請求項12之機器可讀取儲存媒體,其更包含有:可比較該第一裝置號碼和該第二裝置號碼的指令;若該第一裝置號碼和該第二裝置號碼不匹配,而且若當該第一裝置號碼被用來判定該檢測到錯誤的該位置時,該檢測到的錯誤並沒有成功地被更正,可基於該第二裝置號碼來判定在該快取列中該檢測到錯誤之該位置的指令。
- 如請求項11之機器可讀取儲存媒體,其中標籤編碼位元嵌入到該第一裝置號碼中。
- 如請求項11之機器可讀取儲存媒體,其中:可記錄有多少個錯誤係與該第一記憶體裝置之一區域相關聯的指令;以及當在該區域中的一位址被讀出時,可取回出對應於該第一記憶體裝置之該裝置號碼的指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/073871 WO2015088476A1 (en) | 2013-12-09 | 2013-12-09 | Memory erasure information in cache lines |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201523624A TW201523624A (zh) | 2015-06-16 |
TWI539467B true TWI539467B (zh) | 2016-06-21 |
Family
ID=53371594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103129329A TWI539467B (zh) | 2013-12-09 | 2014-08-26 | 快取列中記憶體抹除資訊技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9778982B2 (zh) |
TW (1) | TWI539467B (zh) |
WO (1) | WO2015088476A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9910728B2 (en) | 2015-12-23 | 2018-03-06 | Intel Corporation | Method and apparatus for partial cache line sparing |
KR20200081045A (ko) * | 2018-12-27 | 2020-07-07 | 삼성전자주식회사 | 3차원 적층 메모리 장치 및 그 동작 방법 |
GB2627528A (en) * | 2023-02-27 | 2024-08-28 | Imagination Tech Ltd | Flexible cache structure for caching compressed and uncompressed data |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE185631T1 (de) | 1991-08-16 | 1999-10-15 | Cypress Semiconductor Corp | Dynamisches hochleistungsspeichersystem |
WO1999005599A1 (en) * | 1997-07-28 | 1999-02-04 | Intergraph Corporation | Apparatus and method for memory error detection and error reporting |
US6467048B1 (en) | 1999-10-07 | 2002-10-15 | Compaq Information Technologies Group, L.P. | Apparatus, method and system for using cache memory as fail-over memory |
US6591393B1 (en) * | 2000-02-18 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Masking error detection/correction latency in multilevel cache transfers |
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 |
US7307902B2 (en) * | 2005-08-30 | 2007-12-11 | Hewlett-Packard Development Company, L.P. | Memory correction system and method |
US8386702B2 (en) * | 2005-10-27 | 2013-02-26 | Hewlett-Packard Development Company, L.P. | Memory controller |
US8065573B2 (en) | 2007-03-26 | 2011-11-22 | Cray Inc. | Method and apparatus for tracking, reporting and correcting single-bit memory errors |
US8127184B2 (en) * | 2008-11-26 | 2012-02-28 | Qualcomm Incorporated | System and method including built-in self test (BIST) circuit to test cache memory |
US8291259B2 (en) | 2009-04-15 | 2012-10-16 | International Business Machines Corporation | Delete of cache line with correctable error |
KR101573723B1 (ko) * | 2009-05-13 | 2015-12-03 | 삼성전자주식회사 | 적응적으로 메모리 채널의 신호 강도를 조정하는 데이터 저장 장치 및 그것의 설정 방법 |
JP5595514B2 (ja) | 2009-11-20 | 2014-09-24 | ラムバス・インコーポレーテッド | Dramエラー訂正用のビット交換技術 |
US8612832B2 (en) | 2011-04-01 | 2013-12-17 | Intel Corporation | Mechanisms and techniques for providing cache tags in dynamic random access memory |
US20120311248A1 (en) | 2011-06-03 | 2012-12-06 | International Business Machines Corporation | Cache line lock for providing dynamic sparing |
GB2499187A (en) * | 2012-01-31 | 2013-08-14 | Ibm | Evicting from a cache objects which are not referenced by other objects in the cache |
WO2015065449A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Cache controller for non-volatile memory |
-
2013
- 2013-12-09 WO PCT/US2013/073871 patent/WO2015088476A1/en active Application Filing
- 2013-12-09 US US15/034,651 patent/US9778982B2/en active Active
-
2014
- 2014-08-26 TW TW103129329A patent/TWI539467B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW201523624A (zh) | 2015-06-16 |
US9778982B2 (en) | 2017-10-03 |
WO2015088476A1 (en) | 2015-06-18 |
US20160274968A1 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8725944B2 (en) | Implementing raid in solid state memory | |
US9703633B2 (en) | Circuits, apparatuses, and methods for correcting data errors | |
TWI407446B (zh) | 記憶體裝置內錯誤更正的動態資料儲存系統及方法 | |
JP4323707B2 (ja) | フラッシュメモリの欠陥管理方法 | |
JP5202130B2 (ja) | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 | |
CN101339526B (zh) | 检测由于读干扰而造成的位错误的存储系统及其方法 | |
US8479062B2 (en) | Program disturb error logging and correction for flash memory | |
US9377960B2 (en) | System and method of using stripes for recovering data in a flash storage system | |
US7313749B2 (en) | System and method for applying error correction code (ECC) erasure mode and clearing recorded information from a page deallocation table | |
US11030096B2 (en) | Method of identifying and preparing a key block in a flash memory system and memory controller therefor | |
TW200907989A (en) | Error correction for memory | |
TW201245953A (en) | Data recovery using additional error correction coding data | |
WO2009009302A2 (en) | Error recovery storage along a nand-flash string | |
JP2013522792A (ja) | メタデータタグを介した不規則なパリティ分布の検出 | |
CN103594120A (zh) | 以读代写的存储器纠错方法 | |
TWI539467B (zh) | 快取列中記憶體抹除資訊技術 | |
CN104658609A (zh) | 用于存储器系统的纠错码分布的方法和系统 | |
CN101339525A (zh) | 一种对数据进行错误检测的方法、系统和设备 | |
US7437651B2 (en) | System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem | |
US9106260B2 (en) | Parity data management for a memory architecture | |
KR101512927B1 (ko) | 비휘발성 메모리의 페이지 관리 방법 및 장치 | |
US20160147598A1 (en) | Operating a memory unit | |
WO2015047332A1 (en) | Memory sparing on memory modules | |
US10019186B2 (en) | Data maintenance method for error control and data storage device using the same | |
JP2005011386A (ja) | 誤り訂正装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |