TWI742021B - 用於多位元錯誤偵測和校正之裝置和方法 - Google Patents
用於多位元錯誤偵測和校正之裝置和方法 Download PDFInfo
- Publication number
- TWI742021B TWI742021B TW105139093A TW105139093A TWI742021B TW I742021 B TWI742021 B TW I742021B TW 105139093 A TW105139093 A TW 105139093A TW 105139093 A TW105139093 A TW 105139093A TW I742021 B TWI742021 B TW I742021B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- processor
- error
- matrix
- quadrants
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1068—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 in sector programmable memories, e.g. flash disk
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
用於多位元錯誤偵測和校正之裝置和方法係被說明。舉例來說,處理器之一實施例包含:錯誤偵測邏輯,用以當從儲存裝置讀取資料時偵測該資料中之一或多個錯誤,該資料係連同同位碼與錯誤校正碼(ECC)從該儲存裝置被讀取;錯誤校正邏輯,用以校正藉由該錯誤偵測邏輯所偵測之錯誤;及矩陣,可由用以偵測該一或多個錯誤之該錯誤偵測邏輯和用以校正該等錯誤之該錯誤校正邏輯兩者所使用,該矩陣構成N個區域,各區域具有形成幾何序列的M個行,其中各連續的區域為先前區域之偏移版本。
Description
本發明大致關於電腦處理器之領域。更具體言之,本發明有關用於多位元錯誤偵測和校正之裝置和方法。
電荷的抓取(Trapping)與釋放(de-trapping)於靜態晶片上(on-chip)記憶體(例如靜態隨機存取記憶體(SRAMs))中造成明顯的Vcc_min變動。由定義可知,若Vcc_min變成大於供應電壓,且若位元被存取(讀取或寫入),則該位元會被翻轉(flipped)。此錯誤事件一般已知為「軟(soft)」錯誤(亦即,胞元在某些隨機時間之後再次變為正常(normal))。當晶片的放射性原子釋放α粒子時,晶片級(Chip-level)軟錯誤會發生。因為α粒子含有電荷與能量,粒子會撞擊記憶體胞元且造成胞元改變狀態至不同值。
軟錯誤率(Soft Error Rate;SER)是對於高效能計算的重要設計目標。許多技術被使用於產品中以滿足SER需求。最廣泛使用於陣列結構的一種技術是錯誤校正碼(error correction code;ECC)。單錯誤校正與雙錯誤偵測
(Single Error Correction and Double Error Detection;SECDED)是一種特別的辦法。
依技術比例,單一粒子撞擊在方面具有較大的覆蓋區域(footprint),導致多個位元翻轉。要對付此漸增地可能的多位元錯誤之原因,雙或甚至三位元校正將變得平常。不幸地,雙或三位元校正的成本在額外的儲存與電源方面典型地為單位元校正的成本之雙或三倍。
102‧‧‧提取階段
104‧‧‧長度解碼階段
106‧‧‧解碼階段
108‧‧‧分配階段
110‧‧‧更名階段
112‧‧‧排程階段
114‧‧‧暫存器讀取/記憶體讀取階段
116‧‧‧執行階段
118‧‧‧寫回/記憶體寫入階段
122‧‧‧例外處理階段
124‧‧‧提交階段
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧更名/分配器單元
154‧‧‧引退單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧L2快取單元
190‧‧‧核心
200‧‧‧處理器
202A‧‧‧核心
202N‧‧‧核心
204A‧‧‧快取單元
204N‧‧‧快取單元
206‧‧‧共用快取單元
208‧‧‧整合式圖形邏輯
210‧‧‧系統代理單元
212‧‧‧環狀互連單元
214‧‧‧整合式記憶體控制器單元
216‧‧‧匯流排控制器單元
300‧‧‧系統
310‧‧‧處理器
315‧‧‧處理器
320‧‧‧控制器集線器
340‧‧‧記憶體
345‧‧‧共處理器
350‧‧‧輸入/輸出集線器
360‧‧‧輸入/輸出(I/O)裝置
390‧‧‧圖形記憶體控制器集線器
395‧‧‧連接
400‧‧‧系統
414‧‧‧I/O裝置
416‧‧‧第一匯流排
418‧‧‧匯流排橋接器
420‧‧‧第二匯流排
422‧‧‧鍵盤及/或滑鼠
424‧‧‧音訊I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元
430‧‧‧碼及資料
432‧‧‧記憶體
434‧‧‧記憶體
438‧‧‧共處理器
439‧‧‧高性能介面
450‧‧‧點對點互連
452‧‧‧P-P介面
454‧‧‧P-P介面
470‧‧‧處理器
472‧‧‧整合式記憶體及I/O控制邏輯
476‧‧‧點對點介面
478‧‧‧點對點介面
480‧‧‧處理器
482‧‧‧整合式記憶體及I/O控制邏輯
486‧‧‧點對點介面
488‧‧‧點對點介面
490‧‧‧晶片組
494‧‧‧點對點介面
496‧‧‧介面
498‧‧‧點對點介面
500‧‧‧系統
514‧‧‧I/O裝置
515‧‧‧舊有I/O裝置
600‧‧‧系統單晶片
602‧‧‧互連單元
610‧‧‧應用處理器
620‧‧‧共處理器
630‧‧‧SRAM單元
632‧‧‧DMA單元
640‧‧‧顯示單元
702‧‧‧高階語言
704‧‧‧x86編譯器
706‧‧‧x86二進制碼
708‧‧‧替代指令集編譯器
710‧‧‧替代指令集二進制碼
712‧‧‧指令轉換器
714‧‧‧沒有至少一x86指令集核心之處理器
716‧‧‧具有至少一x86指令集核心之處理器
800‧‧‧主記憶體
801‧‧‧分支目標緩衝器
802‧‧‧分支預測單元
803‧‧‧下個指令指標
804‧‧‧指令轉譯後備緩衝器
805‧‧‧處理器暫存器
805‧‧‧暫存器檔案
810‧‧‧指令提取單元
811‧‧‧2階(L2)快取
812‧‧‧1階(L1)快取
816‧‧‧快取
820‧‧‧指令快取
821‧‧‧資料快取
821‧‧‧重排序緩衝器單元
830‧‧‧解碼單元
840‧‧‧執行單元
850‧‧‧寫回/引退單元
855‧‧‧處理器
860‧‧‧錯誤偵測和校正(ECC)邏輯
861‧‧‧ECC邏輯
864‧‧‧ECC邏輯
890‧‧‧記憶體管理單元
901‧‧‧錯誤校正邏輯
902‧‧‧錯誤偵測邏輯
904‧‧‧ECC及同位產生器
905‧‧‧儲存裝置
910‧‧‧H-矩陣
960‧‧‧錯誤偵測和校正邏輯
1005‧‧‧同位產生器
1006‧‧‧ECC產生器
1015‧‧‧同位比較器
1016‧‧‧ECC比較單元
本發明之較佳了解可從以下詳細說明配合以下圖式而來獲得,其中:第1A圖為顯示根據本發明的實施例之例示循序提取、解碼、引退管線及例示暫存器更名、亂序發送/執行管線兩者之方塊圖;第1B圖為顯示根據本發明的實施例之循序提取、解碼、引退核心的例示實施例及待被包含於處理器中之例示暫存器更名、亂序發送/執行架構核心兩者之方塊圖;第2圖為根據本發明之實施例的具有整合式記憶體控制器與圖形的單一核心處理器與多核心處理器之方塊圖;第3圖為顯示根據本發明之一實施例的系統之方塊圖;第4圖為顯示根據本發明之實施例的第二系統之方塊圖;第5圖為顯示根據本發明之實施例的第三系統之方塊
圖;第6圖為顯示根據本發明之實施例的系統單晶片(SoC)之方塊圖;第7圖顯示根據本發明之實施例對比軟體指令轉換器將於來源指令集中之二進制指令轉換至於目標指令集中之二進制指令之使用之方塊圖;第8圖顯示本發明之實施例可於其上實現的處理器架構之一實施例;第9圖顯示錯誤偵測和校正邏輯之一實施例;第10圖顯示與錯誤偵測和校正邏輯之一實施例相關聯的額外細節;第11圖顯示二進制格式之例示H-矩陣(H-matrix);及第12圖顯示二進制形式之H-矩陣的一部分。
於以下說明中,為了說明的目的,許多特定細節被提出以提供以下所述之本發明的實施例之完整了解。然而,對於所述技術領域中具有通常知識者而言將了解的是,沒有這些特定細節之其中一些亦可實現本揭露之實施例。於其他範例中,已知結構與裝置係以方塊圖形式來顯示以避免模糊本發明之實施例的基礎原理。
第1A圖為顯示根據本發明的實施例之例示循序提取、解碼、引退管線及例示暫存器更名、亂序發送/執行管線兩者之方塊圖。第1B圖為顯示根據本發明的實施例之循序提取、解碼、引退核心的例示實施例及待被包含於處理器中之例示暫存器更名、亂序發送/執行架構核心兩者之方塊圖。第1A-B圖中實線方塊顯示管線與核心之循序部份,而虛線方塊的選項附加顯示暫存器更名、亂序發送/執行管線與核心。
於第1A圖中,處理器管線100包括提取階段102、長度解碼階段104、解碼階段106、分配階段108、更名階段110、排程(亦稱為配送或發送)階段112、暫存器讀取/記憶體讀取階段114、執行階段116、寫回/記憶體寫入階段118、例外處理階段122、及提交階段124。
第1B圖顯示包括耦接至執行引擎單元150的前端單元130之處理器核心190,且兩者皆被耦接至記憶體單元170。核心190可為精簡指令集計算(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。於另一選項中,核心190可為特殊目的核心,例如網路或通訊核心、壓縮引擎、共處理器(coprocessor)核心、一般目的計算圖形處理單元(GPGPU)核心、圖形核心、或諸如此類。
前端單元130包括耦接至指令快取單元134之分支預測單元132,指令快取單元134係耦接至指令轉譯後備緩衝器(translation lookaside buffer;TLB)136,TLB 136係
耦接至指令提取單元138,指令提取單元138係耦接至解碼單元140。解碼單元140(或解碼器)可解碼指令,且產生一或多個微操作、微碼轉移點、微指令、其他指令、或其他控制訊號作為輸出,其係從原始指令解碼或反射、或係從原始指令導出。解碼單元140可使用各種不同機制來實現。合適的機制之範例包含(但不限於)查找表、硬體實現、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一實施例中,核心190包括微碼ROM或儲存用於特定微指令之微碼的其他媒體(例如於解碼單元140中或在前端單元130內)。解碼單元140可被耦接至在執行引擎單元150中之更名/分配器單元152。
執行引擎單元150包括耦接至引退單元154及一組一或多個排程器單元156之更名/分配器單元152。排程器單元156表示任何數量的不同排程器,包含保留站、中央指令窗等等。排程器單元156係耦接至實體暫存器檔案單元158。各實體暫存器檔案單元158表示一或多個實體暫存器檔案(不同的實體暫存器檔案儲存一或多個不同的資料類型,例如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)、狀態(例如待執行的下個指令之位址之指令指標)等。於一實施例中,實體暫存器檔案單元158包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構的向量暫存器、向量遮罩暫存器、及一般目的暫存器。實體暫存器檔案單元158係由引退單元154重疊以顯示暫存器更名及亂序執
行可被實現之多種方式(例如使用重排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用暫存器圖及一堆暫存器;等)。引退單元154及實體暫存器檔案單元158係耦接至執行叢集160。執行叢集160包括一組一或多個執行單元162及一組一或多個記憶體存取單元164。執行單元162可執行各種運算(例如移位、加、減、乘)及各種類型的資料(純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)。雖然某些實施例可包括專門用於特定功能或功能組之數個執行單元,其他實施例可包括全部執行所有功能之僅一個執行單元或多個執行單元。排程器單元156、實體暫存器檔案單元158、與執行叢集160係被顯示為複數,這是因為特定實施例對於特定類型的資料/操作(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有其自己的排程器單元、實體暫存器檔案單元、及/或執行叢集-且於分開的記憶體存取管線之情形中,特定實施例可被實現為僅此管線之執行叢集具有記憶體存取單元164)建立分開的管線。應了解的是,當分開的管線被使用,這些管線之其中一或多者可為亂序發送/執行而其他為循序。
記憶體存取單元164之組係被耦接至記憶體單元170,其包括耦接至耦接至2階(L2)快取單元176之資料快取單元174的資料TLB單元172。於一例示實施例中,記憶體存取單元164可包括載入單元、儲存位址單元、及
儲存資料單元,其各可被耦接至在記憶體單元170中之資料TLB單元172。指令快取單元134可被進一步耦接至在記憶體單元170中之2階(L2)快取單元176。L2快取單元176係被耦接至一或多個其他階快取且最終至主記憶體。
藉由範例,例示暫存器更名、亂序執行發出/執行核心架構可如下所示來實現管線100:1)指令提取138執行提取及長度解碼階段102及104;2)解碼單元404執行解碼階段106;3)更名/分配器單元152執行分配階段108及更名階段110;4)排程器單元156執行排程階段112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取階段114;執行叢集160執行執行階段116;6)記憶體單元170及實體暫存器檔案單元158執行寫回/記憶體寫入階段118;7)許多單元可被涉及例外處理階段122中;及8)引退單元154及實體暫存器檔案單元158執行提交階段124。
核心190可支援一或多個指令集(例如x86指令集(較新的版本有加入一些擴充);美國MIPS Technologies of Sunnyvale,CA之MIPS指令集;美國ARM Holdings of Sunnyvale,CA之ARM指令集(有加入選項的額外擴充,例如NEON)),包括於此所述之指令。於一實施例中,核心190包括支援封裝資料指令集擴充(例如,AVX1、AVX2、及/或其他形式的通用向量友善指令格式(U=0及/或U=1),如下所述)之邏輯,從而允許許多多媒體應用程式所使用之操作使用封裝資料而被執行。
應了解的是,核心可支援多執行緒(執行二或更多平行操作或執行緒之集),且可於多種方式依此進行,包括時間切割多執行緒、同時多執行緒(於其中,單一實體核心對實體核心係被同時地進行多執行緒之各執行緒提供邏輯核心)、或其組合(例如時間切割提取及解碼及其後之同時多執行緒,例如Intel®之超執行緒(Hyperthreading)技術)。
雖然暫存器更名係說明於亂序執行之內文中,應了解的是,暫存器更名可被使用於循序架構中。雖然所示的處理器之實施例亦包括分開的指令及資料快取單元134/174與共用的L2快取單元176,替代實施例可對指令及資料兩者具有單一內部快取,例如1階(L1)內部快取、或多階內部快取。於某些實施例中,系統可包括內部快取及外部快取(其為在核心及/或處理器外部)的結合。替代地,所有的快取可在核心及/或處理器外部。
第2圖為根據本發明之實施例的可具有多於一個核心、可具有整合式記憶體控制器、及可具有整合式圖形之處理器200的方塊圖。第2圖中實線框顯示具有單一核心202A、系統代理210、一組一或多個匯流排控制器單元216之處理器200,而選項的附加之虛線框顯示具有多個核心202A-N、於系統代理單元210中之一組一或多個整合式記憶體控制器單元214、及特殊目的邏輯208。
因此,處理器200之不同實現可包括:1)具有特殊目的邏輯208之CPU為整合式圖形及/或科學的(處理量)邏
輯(其可包括一或多個核心),及核心202A-N為一或多個一般目的核心(例如,一般目的循序核心、一般目的亂序核心、兩者之結合);2)具有核心202A-N之共處理器為主要用於圖形及/或科學性(處理量)之大量的特殊目的核心;及3)具有核心202A-N之共處理器為大量的一般目的循序核心。因此,處理器200可為一般目的處理器、共處理器或特殊目的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、一般目的計算圖形處理單元(GPGPU)、高處理量多重整合核心(many integrated core;MIC)共處理器(包括30或更多核心)、嵌入式處理器、或諸如此類。處理器可被實現於一或多個晶片上。藉由使用任何的處理技術(例如BiCMOS、CMOS、或NMOS),處理器200可為一或多個基板的一部分及/或可被實現於一或多個基板上。
記憶體階層包括核心內之一或多階的快取、一組或一或多個共用快取單元206、及耦接至該組整合式記憶體控制器單元214的外部記憶體(未圖示)。該組共用快取單元206可包括一或多個中階快取(例如2階(L2)、3階(L3)、4階(L4)、或其他階的快取)、最終階快取、及/或其組合。於一實施例中,雖然環狀互連單元212與整合式圖形邏輯208、該組共用快取單元206、及系統代理單元210/整合式記憶體控制器單元214互連,替代實施例可使用任何數量的已知技術以互連此等單元。於一實施例中,在一或多個快取單元206與核心202-A-N之間的相關性(coherency)係被維持。
於一些實施例中,一或多個核心202A-N能進行多執行緒。系統代理210包括協調與操作核心202A-N的那些組件。系統代理單元210可包括例如電源控制單元(PCU)與顯示單元。PCU可為或包括用以調節核心202A-N與整合式圖形邏輯208之電源狀態所需的邏輯與組件。顯示單元係用以驅動一或多個外部連接的顯示器。
核心202A-N的架構及/或指令集可為同質或異質;亦即,二或更多核心202A-N可執行相同的指令集,而其他者僅可執行該指令集之子集或不同指令集。於一實施例中,核心202A-N為異質且包括以下所述之「小」核心與「大」核心兩者。
第3-6圖為例示電腦架構之方塊圖。對於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置,該領域中已知的其他系統設計與組構亦可為適合的。通常,如此處所述可結合處理器及/或其他執行邏輯之許多系統或電子裝置通常為適合的。
現參照第3圖,所顯示者為根據本發明之一實施例的系統300之方塊圖。系統300可包括一或多個處理器310、315,其係被耦接至控制器集線器320。於一實施例中,控制器集線器320包括圖形記憶體控制器集線器
(GMCH)390及輸入/輸出集線器(IOH)350(其可於不同晶片上);GMCH 390包括耦接記憶體340與共處理器345之記憶體及圖形控制器;IOH 350耦接輸入/輸出(I/O)裝置360至GMCH 390。替代地,記憶體與圖形控制器之其中一者或兩者係被整合於處理器內(如此處所述),記憶體340與共處理器345係直接耦接至處理器310,而記憶體控制器320與IOH 350在同一晶片中。
選項的額外處理器315係於第3圖中以虛線表示。各處理器310、315可包括一或多個此處所述之處理核心且可為處理器200之一些版本(version)。
舉例來說,記憶體340可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者之結合。於至少一實施例中,控制器集線器320經由多接點匯流排(例如前側匯流排(frontside bus;FSB))、點對點介面(例如快速路徑互連(QuickPath Interconnect;QPI))、或類似連接395而與處理器310、315通訊。
於一實施例中,共處理器345為特殊目的處理器,例如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或諸如此類。於一實施例中,控制器集線器320可包括整合式圖形加速器。
實體資源310、315間可有各式各樣之差異,按照包含架構的、微架構的、熱的、能源消耗特性、及諸如此類之價值的度量之頻譜。
於一實施例中,處理器310執行控制一般類型的資料操作之指令。於指令內所嵌入者可為共處理器指令。處理器310識別這些共處理器指令作為應由附接的共處理器345所執行的類型。因此,處理器310發送於共處理器匯流排或其他互連上之這些共處理器指令(或表示共處理器指令之控制訊號)至共處理器345。共處理器345接受及執行所接收的共處理器指令。
現參照第4圖,所顯示者為根據本發明之一實施例的第一更具體例示系統400之方塊圖。如第4圖所示,多處理器系統400為點對點互連系統,且包括第一處理器470及經由點對點互連450來耦接之第二處理器480。各處理器470與480可為處理器200之某些版本。於本發明之一實施例中,處理器470與480分別為處理器310與315,而共處理器438為共處理器345。於另一實施例中,處理器470與480分別為處理器310與共處理器345。
處理器470及480係分別顯示包括整合式記憶體控制器(IMC)單元472與482。處理器470亦包括點對點(P-P)介面476與478作為其匯流排控制器單元的部份;同樣地,第二處理器480包含P-P介面486與488。處理器470、480可使用P-P介面電路478、488經由點對點(P-P)。介面450來交換資訊。如第4圖所示,IMC 472及482耦接處理器至個別記憶體(即記憶體432與記憶體434),其可為局部地附接至個別處理器之主記憶體的部份。
處理器470及480各可使用點對點介面電路476、
494、486、498經由個別P-P介面452、454來與晶片組490交換資訊。晶片組490可經由高性能介面439來與共處理器438交換資訊。於一實施例中,共處理器438為特殊目的處理器,例如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或諸如此類。
共用快取(未圖示)可被包括於處理器中或兩處理器外部,尚未經由P-P互連而與處理器連接,使得若處理器被置於低電源模式中時,任一處理器或兩處理器的本地快取資訊可被儲存於共用快取。
晶片組490可經由介面496被耦接至第一匯流排416。於一實施例中,第一匯流排416可為週邊組件互連(PCI)匯流排、或例如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,雖然本發明之範疇不限於此。
如第4圖所示,各種I/O裝置414可被耦接至第一匯流排416,而匯流排橋接器418將第一匯流排416耦接至第二匯流排420。於一實施例中,一或多個額外的處理器415(例如共處理器、高處理量MIC處理器、GPGPU、加速器(例如數位訊號處理(DSP)單元)、場可程式化閘極陣列、或任何其他處理器)係耦接至第一匯流排416。於一實施例中,第二匯流排420可為低接腳數(low pin count;LPC)匯流排。於一實施例中,許多裝置可被耦接至第二匯流排420,包括例如鍵盤及/或滑鼠422、通訊裝置427及儲存單元428,例如碟機或可包含指令/碼及資料430之其
他大量儲存裝置。再者,音訊I/O 424可被耦接至第二匯流排420。應注意的是,其他架構是可能的。舉例來說,取代第4圖所示之點對點架構,系統可實現多接點匯流排或其他此種架構。
現參照第5圖,所顯示者為根據本發明之一實施例的第二更具體例示系統500之方塊圖。第4與5圖中類似元件以類似元件符號表示,且第4圖之特定態樣已於第5圖中忽略以避免模糊第5圖之其他態樣。
第5圖顯示處理器470、480可分別包括整合式記憶體及I/O控制邏輯(「CL」)472及482。因此,CL 472、482包括整合式記憶體控制器單元且包括I/O控制邏輯。第5圖顯示不只記憶體432、434係被耦接至CL 472、482,且I/O裝置514亦被耦接至控制邏輯472、482。舊有I/O裝置515係耦接至晶片組490。
現參照第6圖,所顯示者為根據本發明之一實施例的SoC 600之方塊圖。第2圖中類似元件以類似元件符號表示。同樣的,虛線框為於更先進的SoC之任意的特徵。於第6圖中,互連單元602係耦接至:應用處理器610,其包括一組一或多個核心202A-N及共用快取單元206;系統代理單元210;匯流排控制器單元216;整合式記憶體控制器單元214;一組一或多個共處理器620,其可包括整合式圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)單元630;直接記憶體存取(DMA)單元632;及顯示單元640(用以耦接至一或多個
外部顯示器)。於一實施例中,共處理器620包括特殊目的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、嵌入式處理器、或諸如此類。
此處所揭露的機制之範例可由硬體、軟體、韌體、或此實現方式之組合來實現。本發明之實施例可被實現為執行於可程式化系統(包含至少一處理器、儲存系統(包含揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置)之電腦程式或程式碼。
程式碼(例如第4圖所示之碼430)可被應用至輸入指令用以執行此處所述之功能及產生輸出資訊。輸出資訊可以已知方式被應用至一或多個輸出裝置。對於此應用的目的,處理系統包括任何具有處理器(例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器)之系統。
程式碼可被實現於高階程序或物件導向程式語言以與處理系統通訊。程式碼亦可被實現於組合或機械語言,若有需要。事實上,此處所述之機制並不限於任何特定程式語言之範疇。於任何情形中,語言可為編譯或解譯語言。
至少一實施例之一或多個觀點可被儲存於機器可讀取媒體上之表示處理器內的各種邏輯的代表指令來實現,當由機器讀取時,造成機器製造邏輯用以執行此處所述之技術。此代表(已知為「IP核心」)可被儲存於有形的機器可讀取媒體且供應至各種顧客或製造設備用以載入實際做出邏輯或處理器之製造機器內。
此機器可讀取媒體可包含(但不限於)由包含儲存媒體(例如硬碟、任何其他類型的碟機包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟、例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、或適合用於儲存電子指令之任何其他類型的媒體之半導體元件)之機器或裝置所製造或形成的物件之非暫態的有形的配置。
因此,本發明之實施例亦可包括含有指令或含有設計資料之非暫態的有形的機器可讀取媒體,例如硬體描述語言(HDL),其界定此處所述之結構、電路、裝置、處理器及/或系統特徵。此實施例亦可參照為程式產品。
於某些情形中,指令轉換器可被使用以將指令從來源指令集轉換成目標指令集。舉例來說,指令轉換器可藉由核心轉譯(例如使用靜態二進制翻譯、包含動態編譯之動態二進制翻譯)、變形、模擬、或轉換指令成待被處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體、或其組合來實現。指令轉換器可為處理器上、處理器外、或部份在處理器上與外。
第7圖為根據本發明之實施例對比軟體指令轉換器將於來源指令集中之二進制指令轉換至於目標指令集中之二進制指令之使用之方塊圖。於所示實施例中,指令轉換器
為軟體指令轉換器,雖然指令轉換器可替代地被實現於軟體、韌體、硬體、或各種其組合。第7圖顯示高階語言702之程式可使用x86編譯器704被編譯用以產生x86二進制碼706,其可被具有至少一x86指令集核心之處理器716本地地執行。具有至少一x86指令集核心716之處理器代表可實質地執行與具有至少一x86指令集核心之Intel處理器相同功能之任何處理器,藉由相容地執行或處理(1)Intel指令集核心之指令集的實質部份或(2)目標要運行於具有至少一x86指令集核心之Intel處理器的應用程式或其他軟體之物件碼版本,用以達成與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器704表示可操作以產生x86二進制碼706(例如物件碼)之編譯器,其可(無論有沒有額外的連結處理(linkage processing))被執行於具有至少一x86指令集核心之處理器716。同樣地,第7圖顯示高階語言702之程式可使用替代指令集編譯器708被編譯用以產生替代指令集二進制碼710,其可被沒有至少一x86指令集核心之處理器714(例如具有執行MIPS指令集之核心及/或執行美國ARM Holdings of Sunnyvale,CA之ARM指令集的處理器)本地地執行。指令轉換器712係被使用以將x86二進制碼706轉換成可由沒有至少一x86指令集核心之處理器714本地地執行之碼。此經轉換的碼能與替代指令集二進制碼710不完全相同,因為能如此之指令轉換器很難被製造;然而,經轉換的碼將完成一般操作且彌補來自替代指令集之
指令。因此,指令轉換器712表示軟體、韌體、硬體、或其結合,其透過仿真、模擬、或任何其他處理,允許不具有x86指令集處理器或核心之處理器或其他電子裝置來執行x86二進制碼706。
如前所述,依技術比例,單一粒子撞擊在方面具有較大的覆蓋區域(footprint),導致多個位元翻轉。本發明之實施例利用藉由相同粒子撞擊所引入之多位元錯誤具有空間的局部性之觀察。當錯誤比隨機分佈更連續地分佈時,傳統雙位元校正為過度設計(over-design)。因此,本發明之實施例介紹一種新穎方式來建構ECC碼,使得利用在單錯誤校正與雙錯誤偵測(SECDED)之ECC檢查位元中小小的增加,新碼可校正兩個連續位元且偵測多達四個連續位元。
除錯誤涵蓋與檢查位元的數量以外,另一設計問題是ECC邏輯區域管理負擔(overhead),其由閘極的總數量與路由來決定。本發明之實施例利用邏輯表示再使用及藉由選擇實際分配在附近的訊號來減少佈線距離。更具體言之,於一實施例中,同位檢查矩陣或「H-矩陣」被建構使得其行被重度地再使用(例如,3.66次)。
第8圖顯示於其上本發明之實施例可被實現之例示處理器855,其包括複數個核心0-N。如第8圖所示,此處所述之錯誤偵測和校正技術可被利用於資料儲存於其中的
處理器之任何區域內。舉例來說,當讀取來自主記憶體800或快取(其可包括3階(L3)快取816、2階(L2)快取811、及/或1階(L1)快取812)中之其中一者的資料時,錯誤偵測和校正(ECC)邏輯860可被使用於記憶體管理單元890內以偵測及校正錯誤。替代地,或另外地,各快取811、812、816可包括介接(interfacing)該快取至處理器之其他組件的其自有專屬ECC邏輯(未圖示)。如圖所示,ECC邏輯861亦可被包括用於讀取來自處理器暫存器805(其可包括一組一般目的暫存器(general purpose register;GPR)、一組向量暫存器、及/或一組遮罩暫存器)之資料。同樣地,ECC邏輯864可被包括以偵測和校正在處理器之寫回/引退單元850的重排序緩衝器單元(ROB)821內之錯誤。雖然這些特定範例被提供用於說明之目的,本發明之基本原理可被實現以當從處理器之任何儲存設備中讀取資料時來偵測和校正錯誤。
在說明本發明之實施例的細節之前,例示處理器855之許多組件的說明係被提供。如所述者,例示實施例包括複數個核心0-N,各包括暫存器檔案805,其包括一組一般目的暫存器(GPR)、一組向量暫存器、及一組遮罩暫存器。於一實施例中,多重向量資料元係被封裝於各向量暫存器中,其可具有512位元寬度以供儲存兩個256位元值、四個128位元值、八個64位元值、十六個32位元值等等。然而,本發明之基本原理並不受限於任何特定尺寸/類型的向量資料。於一實施例中,遮罩暫存器包括八個
64位元運算元遮罩暫存器,被使用於對儲存於向量暫存器中之值執行位元遮罩操作(例如,被實現為遮罩暫存器k0-k7,如上所述)。然而,本發明之基本原理並不受限於任何特定遮罩暫存器尺寸/類型。
為了簡明性,單處理器核心(「核心0」)之細節係顯示於第8圖中。然而,應了解的是,處理器855之各核心可具有如核心0之相同的組之邏輯。舉例來說,各核心可包括專屬L1快取812及L2快取811以根據指定快取管理策略來對指令及資料進行快取。L1快取812包括用於儲存指令之分開的指令快取820及用於儲存資料之分開的資料快取821。於各種處理器快取內儲存的指令及資料係以快取線之間隔尺寸(granularity)(其可為固定尺寸,例如長度為64、128、512位元組)被管理。此例示實施例之各核心具有用於從主記憶體800及/或共用3階(L3)快取816中提取指令之指令提取單元810;用於解碼指令(例如,將程式指令解碼成微操作或「uop」)之解碼單元820;用於執行指令之執行單元840;及用於引退指令及寫回結果之寫回單元850。
指令提取單元810包括許多已知組件,包括用於儲存將從記憶體(或其中一快取)被提取的下個指令之位址的下個指令指標803;用於儲存最近使用的虛擬-至-實際指令位址的圖(map)以改善位址轉譯的速度之指令轉譯後備緩衝器(ITLB)804;用於推測地預測指令分支位址之分支預測單元802;及用於儲存分支位址與目標位址之分支目標
緩衝器(branch target buffer;BTB)801。一旦被提取,指令接著被串流(streamed)至指令管線之其餘階段,包括解碼單元830、執行單元840、及寫回單元850。這些單元中之各者的結構與功能已為所屬技術領域中具有通常知識者所熟知且將不會於此詳細說明以避免模糊本發明之不同實施例的有關態樣。
第9圖顯示錯誤偵測和校正邏輯960的一實施例之額外的細節,於其中ECC及同位產生器904產生ECC及同位碼,其係連同基本資料被儲存於儲存裝置905(例如,記憶體、快取、ROB、暫存器等等)中。ECC及同位產生器904可利用碼產生器矩陣(G)以產生ECC及/或同位碼。
因應用於來自儲存器905之資料的請求,錯誤偵測邏輯902讀取資料連同相關聯的ECC及同位碼以決定是否有錯誤已被引入資料內。若錯誤已被偵測,則錯誤校正邏輯901可利用此處所述之技術來校正錯誤。如圖所示,當執行其個別的功能時,錯誤偵測邏輯902及錯誤校正邏輯901皆利用來自H-矩陣910之資料。如所屬技術領域中具有通常知識者所已知,線性區塊碼之H-矩陣為說明線性關係(碼字之組件必須符合)之矩陣。如以下細節所說明者,本發明之實施例可被使用以建構一組候選H-矩陣,最佳H-矩陣910可基於不同設計基準而從其中來選擇(例如,最小化總位元權重)。
第10圖顯示錯誤偵測邏輯902之一實施例的額外細節,包括同位產生器1005(其使用來自儲存器905之資料
來再產生(re-generate)同位值)及ECC產生器1006(其使用該資料以重建ECC值。由同位產生器1005所產生的同位值接著被提供至同位比較器1015,其將新產生的同位值與連同該資料被儲存於儲存器905中之同位值做比較。若該比較結果不符合,則表示資料中至少有一錯誤。如前所述,於一實施例中,同位位元以32位元象限(quadrant)之間隔尺寸來識別錯誤。因此,當錯誤被識別時,錯誤校正模組901可聚焦於此象限。同樣地,由ECC產生器1006所產生的ECC值被提供至ECC比較單元1016,其將新產生的ECC值與被儲存於儲存器905中之ECC值做比較。若該比較結果不符合,則表示資料中有一或多個錯誤。
本發明之一實施例使用4位元交錯的同位加上8位元的ECC位元(共12位元)以保護128b的資料。藉由使用這些技術,兩個連續的錯誤可被校正,且多達4個連續錯誤僅以12個位元來偵測(相較於傳統SECDED,其使用9個位元,及DECTED,其使用17個位元)。於一實施例中,各同位位元於交錯方式中保護32個資料位元(一「象限」)。同位檢查識別那個象限具有錯誤且校正邏輯可更加被聚焦於32b間隔尺寸。
本發明之一實施例使用有系統的方法來建構H-矩陣910。根據編碼理論,H-矩陣可依二進制形式、或高氏場(Galois Field;GF)元件形式來表示。這些元件遵循其自有加法/乘法規則。更具體言之,H-矩陣用於第一象限具有32個GF元件於具有給定開始元件與比例之幾何序列中。
H-矩陣用於第二象限為相同序列但從第二項目開始;第三象限為從第三項目開始的序列,及第四象限依此類推。此設置的優點首先是:藉由改變開始元件與比例,整組候選H-矩陣可被輕易地建構。最佳H-矩陣可接著基於不同基準(例如最小化總位元權重)而被選擇。此外,此H-矩陣結構提供明顯的邏輯再使用機會。除了各子矩陣的頭及尾以外,29行係被再使用四次,導致平均再使用為3.66x。
給定高氏場中的所有非零元件可藉由其帶有指數之基元元件(primitive element)α來表示,亦即GF(28)={0,1,α,α2,α3,...,α254}。各元件亦可藉由其替代多項式來表示(藉由基元多項式p(α)取模數)。用於GF(28)的一個基元多項式為p(α)=α8+α4+α3+α2+1。接著,舉例來說,α9會等於α9%(α8+α4+α3+α2+1)=α5+α4+α3+α,對應的二進制8元組(8-tuple)為[00111010]。兩元件的加法係採按位元互斥或(bitwise XOR)。
應注意的是,全部255個非零元件為獨特的,且其形成封閉空間,如α255=1。且全部256個元件為一對一映射至256個8b元組。
任何錯誤校正碼可藉由其H-矩陣910被獨特地定義。雖然其被直接使用於解碼,編碼矩陣可由其導出。舉例來說,於一實施例中,同位與ECC行形成單位矩陣。因此,編碼矩陣與H-矩陣之資料部份相同。此詳細說明之其餘部份將聚焦於H-矩陣。
連續4位元偵測:於一實施例中,四個交錯的同位位元各負責32b的資料。在偵測時,任何同位檢查違反指示於對應的32b象限中之錯誤。
連續2位元偵測:於一實施例中,主要H-矩陣結構係如下定義。H-矩陣之各象限具有32行,且其形成GF幾何序列。任何幾何序列皆有兩個參數,開始元件D(=αd(指數d))與比例K(=αk(指數k))。d與k的值可為從0至254中之任一者。
接著,第二象限為第一象限之左偏移,而第三象限為第二象限之左偏移,依此類推如下所示:
象限-1:αd,αd+k,αd+2k,αd+3k,........,αd+31k
象限-2:αd+k,αd+2k,αd+3k,αd+4k,...,αd+32k
象限-3:αd+2k,αd+3k,αd+4k,αd+5k,...,αd+33k
象限-4:αd+3k,αd+4k,αd+5k,αd+6k,......,αd+34k
於一實施例中,最終H-矩陣為4個象限H-矩陣之交錯:αd,αd+k,αd+2k,αd+3k,αd+k,αd+2k,αd+3k,αd+4k,....
藉由改變d與k之值,其有大約65k個組合且各為新H-矩陣。第11圖顯示d=0及k=1之範例。
並非所有65k個候選者滿足對於給定實現之錯誤校正要求。因此,於一實施例中,有效性檢查係被執行。校正所有單位元錯誤與連續的雙位元錯誤之H-矩陣必須具有對於各錯誤之獨特的錯誤癥狀。對於單位元錯誤,癥狀等於對應的H-矩陣行。對於雙位元錯誤,癥狀等於兩個對應的行之XOR。對於任何給定的(d,k),徵狀獨特性檢查
決定H-矩陣是否有效。
此建構H-矩陣之方式大幅地減少無效結果的可能性。要驗證(validate)單一錯誤,於任何給定象限中之32項(item)為獨特的。大多數行係在兩個不同象限H-矩陣之間被共用。這是可接受的,因為象限已藉由同位位元來區別。同樣地,對於雙位元錯誤,四個群組的癥狀係被個別地評估,各群組具有獨特的同位位元對,亦即,(quad1+quad2),(quad2+quad3),(quad3+quad4),(quad4+quad1)。使用(quad1,quad2)作為範例,癥狀為:{1+α,(1+α)α,(1+α)α2,(1+α)α3,......(1+α)α31}
其亦形成幾何序列。同樣容易來驗證所有的這些是不同的。
ECC及同位位元的結合亦應被包含。最後,在總共64.7k個候選中,其中的56.8k是有效的。
大部分的行,除了頭與尾以外,被再使用4次,例如,α3,α4,...,α31。且這些相同的行係在附近,其表示線路距離為短。
第12圖顯示二進制形式之上述H-矩陣的一部分。元件α11被再使用四次於行35、38、41及44,對應的位元之邏輯表示:(Bit35^Bit38^Bit41^Bit44)出現於四個不同的ECC位元(ECC_4,2,1,0)中。因此,邏輯表示可被再使用四次。對α12亦同,其具有五個1’s,則邏輯表示(Bit39
^Bit42^Bit45^Bit48)被以五種不同的ECC位元產生來重複五次。
依此方式建構H-矩陣提供明顯的邏輯再使用之量,其對於面積減少(area reduction)是理想的。
簡單的校正將會匹配具有所有可能性的之錯誤癥狀。在不校正ECC及同位位元錯誤的情況下,其將會有大約256種型樣。由於吾人之H-矩陣的高規則性(regularity),吾人可減輕比較至僅32個值。主要構想是基於錯誤象限資訊將錯誤癥狀除以固定值,然後全部與第1象限做比較。
單一位元錯誤校正:癥狀係分別除以1、α、α2或α3。連續位元錯誤校正:由同位位元可知那兩個象限有錯誤,現在的除數是(1+α)對於象限1&2;(α+α2)對於象限2&3;(α2+α3)對於象限2&3;(α3+1)對於象限3&1。
根據特定最佳化目標,設計者可從56.8k個候選中識別最佳H-矩陣。舉例來說,若面積減少是最優先的,則具有較低位元權重的H-矩陣將為更適合的。由於線路複雜性與管理負擔,具有最低權重的H-矩陣可能不具有絕對最小面積。然而,設計者可藉由限制總權重小於特定值來切去搜尋空間,然後使用先進的合成工具來找出有限數
量的候選中之最佳者。
本發明之實施例可包括許多步驟,其已被說明如上。該等步驟可被具體化於機器可執行的指令中,其可被使用以造成一般目的或特殊目的處理器來執行該等步驟。替代地,該等步驟可被含有用以執行該等步驟的固線式邏輯之特定硬體組件執行,或藉由程式化的電腦組件及訂製硬體組件之任何組合。
如此處所述,指令可參照硬體之特定組構,例如經組構以執行特定操作或具有預定功能性之特定應用積體電路(ASIC)或儲存於被具體化於非暫態電腦可讀取媒體中之記憶體的軟體指令。因此,顯示於圖式中之技術可使用儲存及執行於一或多個電子裝置(例如端站、網路元件、諸如此類)上之碼與資料而被實現。此等電子裝置使用電腦機器可讀取媒體,例如非暫態電腦機器可讀取儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)及暫態電腦機器可讀取通訊媒體(例如,電性的、光學的、聽覺的或其他形式的傳播訊號-例如載波、紅外線訊號、數位訊號、諸如此類)來儲存及通訊(內部地及/或透過網路與其他電子裝置)碼及資料。
此外,此等電子裝置典型地包括耦接至一或多個其他組件(例如一或多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸碰螢幕、及/或顯示器)、及網路連接)之一組一或多個處理器。該組處理器與其他組件之耦接係典型地透過一或多個匯流排及橋
接器(亦稱為匯流排控制器)。儲存裝置與運載網路流量之訊號分別表示一或多個機器可讀取儲存媒體與機器可讀取通訊媒體。因此,給定電子裝置之儲存裝置典型地儲存用於執行於該電子裝置之該組一或多個處理器上的碼及/或資料。當然,本發明之實施例的一或多個部份可使用軟體、韌體、及/或硬體之不同的組合而被實現。整份詳細說明中,為了說明的目的,許多特定細節被提出以提供本發明之完整了解。然而,對於所述技術領域中具有通常知識者而言將了解的是,沒有這些特定細節之其中一些亦可實現本發明。於特定例子中,已被熟知之結構與功能未被詳細說明以避免模糊本發明之標的。因此,本發明之範疇與精神應按照以下申請專利範圍來判定。
800‧‧‧主記憶體
801‧‧‧分支目標緩衝器
802‧‧‧分支預測單元
803‧‧‧下個指令指標
804‧‧‧指令轉譯後備緩衝器
805‧‧‧處理器暫存器
805‧‧‧暫存器檔案
810‧‧‧指令提取單元
811‧‧‧2階(L2)快取
812‧‧‧1階(L1)快取
816‧‧‧快取
820‧‧‧指令快取
821‧‧‧資料快取
821‧‧‧重排序緩衝器單元
830‧‧‧解碼單元
840‧‧‧執行單元
850‧‧‧寫回/引退單元
855‧‧‧處理器
860‧‧‧錯誤偵測和校正(ECC)邏輯
861‧‧‧ECC邏輯
864‧‧‧ECC邏輯
890‧‧‧記憶體管理單元
Claims (25)
- 一種處理器,包含:錯誤偵測電路,用以當從儲存裝置讀取資料時偵測該資料中之一或多個錯誤;錯誤校正電路,用以校正藉由該錯誤偵測電路所偵測之一些錯誤;及該錯誤偵測電路和該錯誤校正電路用以分別利用來自矩陣的錯誤偵測/校正資料來偵測和校正該一或多個錯誤;該矩陣構成N個區域,各區域具有形成幾何序列的M個行,其中各連續的區域為先前區域之偏移版本,從而在每個連續的區域中重新使用該等M個行中的多個行;及在該矩陣中的該錯誤偵測/校正資料包含同位資料和錯誤校正碼(ECC)資料,該錯誤偵測電路使用該同位資料來識別含有錯誤的特定區域,而該錯誤校正電路在使用該ECC資料執行錯誤校正時回應地聚焦於用該同位資料所識別的區域。
- 如申請專利範圍第1項之處理器,其中各區域包含四個象限之其中一者且其中該等四個象限中之各者包含32行。
- 如申請專利範圍第2項之處理器,其中該等四個象限中之第二個包含第一個象限之左偏移、該等四個象限中之第三個包含該第二個象限之左偏移、及該等四個象限 中之第四個包含該第三個象限之左偏移。
- 如申請專利範圍第3項之處理器,其中該等四個象限中之各者係與儲存在該儲存裝置中之32位元區域的資料相關聯。
- 如申請專利範圍第4項之處理器,其中該錯誤偵測電路係用以利用該同位位元來偵測於該特定區域中之該錯誤,該同位位元係與該等四個象限中與該區域相關聯之一者相關聯,其中該錯誤校正電路係用以回應地識別及使用該ECC資料來校正該等四個象限中之一者中之錯誤。
- 如申請專利範圍第5項之處理器,其中該矩陣被構成以允許該錯誤校正電路用以校正所有單一位元錯誤及連續的雙位元錯誤。
- 如申請專利範圍第6項之處理器,其中該矩陣包含針對各個錯誤之獨特的錯誤癥狀。
- 如申請專利範圍第7項之處理器,其中對於單一位元錯誤,該癥狀等於對應的矩陣行。
- 如申請專利範圍第7項之處理器,其中對於雙位元錯誤,該癥狀等於兩個對應的矩陣行之XOR。
- 如申請專利範圍第7項之處理器,其中該矩陣係經驗證以確保針對各個錯誤癥狀之癥狀獨特性。
- 如申請專利範圍第1項之處理器,其中該儲存裝置包含暫存器、處理器緩衝器、快取記憶體或系統記憶體。
- 一種方法,包含下列步驟: 從矩陣讀取錯誤偵測/校正資料;當從儲存裝置讀取資料時偵測和校正該資料中之一或多個錯誤;及其中該矩陣構成N個區域,各區域具有形成幾何序列的M個行,其中各連續的區域為先前區域之偏移版本,從而在每個連續的區域中重新使用該等M個行中的多個行;及在該矩陣中的該錯誤偵測/校正資料包含同位資料和錯誤校正碼(ECC)資料,其中該偵測包含使用該同位資料來識別含有錯誤的特定區域;而該校正包含在使用該ECC資料執行錯誤校正時回應地聚焦於用該同位資料所識別的區域。
- 如申請專利範圍第12項之方法,其中各區域包含四個象限之其中一者且其中該等四個象限中之各者包含32行。
- 如申請專利範圍第13項之方法,其中該等四個象限中之第二個包含第一個象限之左偏移、該等四個象限中之第三個包含該第二個象限之左偏移、及該等四個象限中之第四個包含該第三個象限之左偏移。
- 如申請專利範圍第14項之方法,其中該等四個象限中之各者係與儲存在該儲存裝置中之32位元區域的資料相關聯。
- 如申請專利範圍第15項之方法,其中該錯誤係藉由利用該同位位元於該特定區域中被偵測,該同位位元 係與該等四個象限中與該區域相關聯之一者相關聯,其中該ECC資料用來校正該等四個象限中與該特定區域相關聯之一者中之錯誤。
- 如申請專利範圍第16項之方法,其中該矩陣被構成以提供所有單一位元錯誤及連續的雙位元錯誤之校正。
- 如申請專利範圍第17項之方法,其中該矩陣包含針對各個錯誤之獨特的錯誤癥狀。
- 如申請專利範圍第18項之方法,其中對於單一位元錯誤,該癥狀等於對應的矩陣行。
- 如申請專利範圍第18項之方法,其中對於雙位元錯誤,該癥狀等於兩個對應的矩陣行之XOR。
- 如申請專利範圍第18項之方法,其中該矩陣係經驗證以確保針對各個錯誤癥狀之癥狀獨特性。
- 如申請專利範圍第12項之處理器,其中該儲存裝置包含暫存器、處理器緩衝器、快取記憶體或系統記憶體。
- 一種具有錯誤偵測和校正能力之系統,包含:系統記憶體,用以儲存指令與資料;複數個功能單元或核心,用以執行該等指令及處理該資料;圖形處理器,用以回應於特定指令來執行圖形操作;網路介面,用以透過網路來接收與傳送資料;用以接收來自滑鼠或游標控制裝置之使用者輸入的介 面;及電子電路,包含:錯誤偵測電路,用以當從儲存裝置讀取資料時偵測該資料中之一或多個錯誤;錯誤校正電路,用以校正藉由該錯誤偵測電路所偵測之一些錯誤;及該錯誤偵測電路和該錯誤校正電路用以分別利用來自矩陣的錯誤偵測/校正資料來偵測和校正該一或多個錯誤;該矩陣構成N個區域,各區域具有形成幾何序列的M個行,其中各連續的區域為先前區域之偏移版本,從而在每個連續的區域中重新使用該等M個行中的多個行;及在該矩陣中的該錯誤偵測/校正資料包含同位資料和錯誤校正碼(ECC)資料,該錯誤偵測電路使用該同位資料來識別含有錯誤的特定區域,而該錯誤校正電路在使用該ECC資料執行錯誤校正時回應地聚焦於用該同位資料所識別的區域。
- 如申請專利範圍第23項之系統,其中各區域包含四個象限之其中一者且其中該等四個象限中之各者包含32行。
- 如申請專利範圍第24項之系統,其中該等四個象限中之第二個包含第一個象限之左偏移、該等四個象限中之第三個包含該第二個象限之左偏移、及該等四個象限 中之第四個包含該第三個象限之左偏移。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/981,649 | 2015-12-28 | ||
| US14/981,649 US10268539B2 (en) | 2015-12-28 | 2015-12-28 | Apparatus and method for multi-bit error detection and correction |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201732592A TW201732592A (zh) | 2017-09-16 |
| TWI742021B true TWI742021B (zh) | 2021-10-11 |
Family
ID=59086566
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105139093A TWI742021B (zh) | 2015-12-28 | 2016-11-28 | 用於多位元錯誤偵測和校正之裝置和方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10268539B2 (zh) |
| TW (1) | TWI742021B (zh) |
| WO (1) | WO2017116722A1 (zh) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10572343B2 (en) * | 2017-01-19 | 2020-02-25 | Intel Corporation | Targeted aliasing single error correction (SEC) code |
| US10489253B2 (en) * | 2017-05-16 | 2019-11-26 | International Business Machines Corporation | On-demand GPR ECC error detection and scrubbing for a multi-slice microprocessor |
| US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
| US10664181B2 (en) * | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
| US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
| US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
| US20200019229A1 (en) * | 2018-07-11 | 2020-01-16 | Qualcomm Incorporated | Power sequencing based on active rail |
| US10795759B2 (en) * | 2018-09-10 | 2020-10-06 | Micron Technology, Inc. | Apparatuses and methods for error correction coding and data bus inversion for semiconductor memories |
| DE102018126685B3 (de) * | 2018-10-25 | 2019-10-10 | Infineon Technologies Ag | Verarbeitung von Daten |
| US11675660B2 (en) * | 2019-05-24 | 2023-06-13 | Texas Instruments Incorporated | Parallelized scrubbing transactions |
| CN111596861B (zh) * | 2020-05-06 | 2021-07-20 | 清华大学 | 数据存储方法和装置,数据恢复方法和装置 |
| US11349498B2 (en) * | 2020-10-08 | 2022-05-31 | Micron Technology, Inc. | Bit flipping low-density parity-check decoders with low error floor |
| CN116319203B (zh) * | 2023-03-21 | 2023-11-28 | 哈尔滨工业大学 | 用于区分用户的有限域资源构建方法、多址接入系统 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130139023A1 (en) * | 2011-11-28 | 2013-05-30 | Lsi Corporation | Variable Sector Size Interleaver |
| US20130262957A1 (en) * | 2012-03-30 | 2013-10-03 | Wei Wu | Method Of Correcting Adjacent Errors By Using BCH-Based Error Correction Coding |
| US8560927B1 (en) * | 2010-08-26 | 2013-10-15 | Altera Corporation | Memory error detection circuitry |
| TW201435895A (zh) * | 2012-12-26 | 2014-09-16 | Intel Corp | 錯誤檢測與校正之設備及方法 |
| TW201503604A (zh) * | 2013-07-03 | 2015-01-16 | Lsi Corp | 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制 |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5537423A (en) * | 1991-08-21 | 1996-07-16 | International Business Machines Corporation | Modular multiple error correcting code system |
| US5856987A (en) * | 1993-12-30 | 1999-01-05 | Intel Corporation | Encoder and decoder for an SEC-DED-S4ED rotational code |
| US7539926B1 (en) * | 2006-02-14 | 2009-05-26 | Xilinx, Inc. | Method of correcting errors stored in a memory array |
| US8291283B1 (en) * | 2008-06-06 | 2012-10-16 | Marvell International Ltd. | Layered quasi-cyclic LDPC decoder with reduced-complexity circular shifter |
| KR20100058260A (ko) * | 2008-11-24 | 2010-06-03 | 삼성전자주식회사 | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널부호/복호 장치 및 방법 |
| FR2941806A1 (fr) | 2009-02-03 | 2010-08-06 | Commissariat Energie Atomique | Procede de codage correcteur d'erreurs avec bits de parite totale et procede de detection d'erreurs multiples |
| US8640005B2 (en) * | 2010-05-21 | 2014-01-28 | Intel Corporation | Method and apparatus for using cache memory in a system that supports a low power state |
| JP5485069B2 (ja) * | 2010-08-06 | 2014-05-07 | パナソニック株式会社 | 誤り訂正復号装置及び誤り訂正復号方法 |
| US8533572B2 (en) * | 2010-09-24 | 2013-09-10 | Intel Corporation | Error correcting code logic for processor caches that uses a common set of check bits |
| US9450613B2 (en) | 2010-11-10 | 2016-09-20 | Infineon Technologies Ag | Apparatus and method for error correction and error detection |
| US8839069B2 (en) | 2011-04-08 | 2014-09-16 | Micron Technology, Inc. | Encoding and decoding techniques using low-density parity check codes |
| JP5665725B2 (ja) * | 2011-12-13 | 2015-02-04 | 株式会社東芝 | 符号化装置及びこれを用いた半導体メモリシステム |
| US8959418B1 (en) * | 2012-11-30 | 2015-02-17 | Xilinx, Inc. | Forward error correction |
| US8929009B2 (en) | 2012-12-19 | 2015-01-06 | Lsi Corporation | Irregular low density parity check decoder with low syndrome error handling |
| US9104589B1 (en) * | 2013-10-16 | 2015-08-11 | L-3 Communications Corp. | Decoding vectors encoded with a linear block forward error correction code having a parity check matrix with multiple distinct pattern regions |
| US9548759B1 (en) * | 2013-11-26 | 2017-01-17 | Marvell International Ltd. | Systems and methods for processing LDPC codes with different circulant sizes |
| US9800271B2 (en) * | 2015-09-14 | 2017-10-24 | Qualcomm Incorporated | Error correction and decoding |
-
2015
- 2015-12-28 US US14/981,649 patent/US10268539B2/en active Active
-
2016
- 2016-11-28 TW TW105139093A patent/TWI742021B/zh active
- 2016-12-15 WO PCT/US2016/066748 patent/WO2017116722A1/en not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8560927B1 (en) * | 2010-08-26 | 2013-10-15 | Altera Corporation | Memory error detection circuitry |
| US20130139023A1 (en) * | 2011-11-28 | 2013-05-30 | Lsi Corporation | Variable Sector Size Interleaver |
| US20130262957A1 (en) * | 2012-03-30 | 2013-10-03 | Wei Wu | Method Of Correcting Adjacent Errors By Using BCH-Based Error Correction Coding |
| TW201435895A (zh) * | 2012-12-26 | 2014-09-16 | Intel Corp | 錯誤檢測與校正之設備及方法 |
| TW201503604A (zh) * | 2013-07-03 | 2015-01-16 | Lsi Corp | 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2017116722A1 (en) | 2017-07-06 |
| US20170185476A1 (en) | 2017-06-29 |
| TW201732592A (zh) | 2017-09-16 |
| US10268539B2 (en) | 2019-04-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI742021B (zh) | 用於多位元錯誤偵測和校正之裝置和方法 | |
| US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
| US9112537B2 (en) | Content-aware caches for reliability | |
| CN106575346B (zh) | 存储器中的加密完整性校验 | |
| TWI715686B (zh) | 用於容錯及錯誤偵測之系統、方法和裝置 | |
| TWI751167B (zh) | 讀取記憶體指令的處理器、方法及系統,其讀取包括缺陷資料之讀取 | |
| CN108028665B (zh) | 用于使用硬件和软件进行压缩的系统、方法和装置 | |
| US9559726B2 (en) | Use of error correcting code to carry additional data bits | |
| US9748977B2 (en) | Double consecutive error correction | |
| CN114003288A (zh) | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 | |
| CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
| US10304556B2 (en) | Read and write memory scrubber | |
| CN106663471B (zh) | 用于反向存储器备份的方法和装置 | |
| CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
| US20150134932A1 (en) | Structure access processors, methods, systems, and instructions | |
| TWI752034B (zh) | 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令 | |
| US20160179611A1 (en) | Low overhead error checking and correction apparatus and method | |
| CN108292269A (zh) | 用于监视地址冲突的计数器 | |
| CN119226049A (zh) | 用于冗余处理的适度降级的装置和方法 | |
| US12481553B2 (en) | System, method and apparatus for reducing power consumption of error correction coding using compacted data blocks | |
| US20250103428A1 (en) | Apparatus and method for efficient encoding for trusted execution environments with full error correction | |
| US20200210625A1 (en) | Efficient rotate adder for implementing cryptographic basic operations | |
| CN114650062A (zh) | 灵活的压缩头部和代码生成 |