專利名稱:利用糾錯碼和同步信息的數(shù)據(jù)行存儲及傳輸?shù)闹谱鞣椒?br>
技術(shù)領(lǐng)域:
本發(fā)明的實施例涉及高度地并行的系統(tǒng)中的同步。更具體來說,本發(fā)明的實施例 涉及在高度地并行的系統(tǒng)內(nèi)的高速緩存或數(shù)據(jù)行中的糾錯碼(ECC)符號和同步符號的使用。
背景技術(shù):
并行計算系統(tǒng)利用多個處理組件來并行地執(zhí)行任務(wù)。已經(jīng)開發(fā)了許多策略和技術(shù) 來標(biāo)識和協(xié)調(diào)這種并行處理功能性。因此,需要同步機制。但是,當(dāng)前的同步機制可能要求 專門的結(jié)構(gòu)和操作,這可增加系統(tǒng)的復(fù)雜性和/或妨礙整體系統(tǒng)性能。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供一種方法,包括使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包括三個校驗符 號;生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號;組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號;傳送已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號。根據(jù)本發(fā)明的另一方面,提供一種設(shè)備,包括第一處理器;第二處理器,所述第二處理器與所述第一處理器耦合,以便與所述第一處理器并 行操作,所述第二處理器使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包 括三個校驗符號;生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號,用于所述第二處理器與 所述第一處理器之間的同步;組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號; 以及將已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號傳送給所述第一處 理器。根據(jù)本發(fā)明的又一方面,提供一種包括計算機可讀介質(zhì)的產(chǎn)品,在所述計算機可 讀介質(zhì)上存儲了指令,所述指令在被執(zhí)行時使一個或多個處理器使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包括三個校驗符 號;生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號;組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號;傳送已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號。
在附圖的各個圖中,通過示例而不是通過限制來說明本發(fā)明的實施例,附圖中相 似的參考標(biāo)號表示相似的元件。
圖1是并行計算系統(tǒng)的一個實施例的框圖。圖2是具有ECC符號和同步符號的高速緩存行的一個實施例的邏輯布局。圖3是用于對具有同步符號的數(shù)據(jù)行進(jìn)行編碼和傳送的技術(shù)的一個實施例的流 程圖。圖4是用于對具有同步符號的數(shù)據(jù)行進(jìn)行接收和解碼的技術(shù)的一個實施例的流 程圖。
具體實施例方式在以下描述中,提出許多具體細(xì)節(jié)。但是,即使沒有這些具體細(xì)節(jié)也可實施本發(fā)明 的實施例。在其它情況下,沒有詳細(xì)示出眾所周知的電路、結(jié)構(gòu)和技術(shù),以免影響對本描述 的理解。本文描述將要用于并行處理的同步數(shù)據(jù)包含在具有糾錯碼符號的數(shù)據(jù)塊中的技 術(shù)、過程和結(jié)構(gòu)。數(shù)據(jù)塊使用糾錯碼來編碼。在一個實施例中,利用經(jīng)修改的里德-索羅蒙 碼。所得編碼每32個數(shù)據(jù)符號包括三個校驗符號,這少于傳統(tǒng)里德-索羅蒙編碼的每32 個數(shù)據(jù)符號四個校驗符號。與數(shù)據(jù)符號對應(yīng)的至少一個同步符號被生成并且存儲在數(shù)據(jù)塊中原本是傳統(tǒng)里 德-索羅蒙編碼的第四符號之處。例如,數(shù)據(jù)符號、校驗符號和至少一個同步符號被組合到 高速緩存行中。傳送已組合的數(shù)據(jù)符號、校驗符號和至少一個同步符號。例如,所述傳送可 在并行處理環(huán)境中的處理器之間進(jìn)行。圖1是并行計算系統(tǒng)的一個實施例的框圖。圖1所示的并行計算系統(tǒng)是用來表示 一系列的并行計算系統(tǒng)(例如,多核系統(tǒng)、對稱系統(tǒng)、不對稱系統(tǒng))。備選的并行計算系統(tǒng)可 包括更多、更少和/或不同的組件。由于計算機系統(tǒng)100是并行計算系統(tǒng),所以處理器110可對數(shù)據(jù)并行操作。這種 并行操作要求某種機制來使這些并行操作的結(jié)果同步。計算機系統(tǒng)100還包括總線105 或者傳遞信息的其它通信裝置;以及耦合到總線105以處理信息的處理器110。計算機系統(tǒng)100還包括隨機存取存儲器(RAM)或者其它動態(tài)存儲裝置120 (稱作 存儲器),它們耦合到總線105,以便存儲將由處理器110執(zhí)行的信息和指令。存儲器120 還可用于在處理器110執(zhí)行指令期間存儲臨時變量或其它中間信息。存儲器120中的部分 或全部可實現(xiàn)為雙列直插存儲器模塊(DIMM)。對于對數(shù)據(jù)的小(例如4字節(jié))塊進(jìn)行操作的一些細(xì)粒度的并行算法,每塊一個 同步位可能就夠了。這個附加同步位或標(biāo)簽位可與數(shù)據(jù)一起存儲在存儲器中。但是,許多 DIMM沒有可用來與數(shù)據(jù)一起存儲這種信息的額外位(除了 ECC位之外)。本文所述的是一種基于糾錯碼(ECC)的技術(shù),它允許每個高速緩存行存儲多達(dá)16 個同步位。在一個實施例中,這些技術(shù)可使用經(jīng)修改的里德-索羅蒙算法,并且“借用”高 速緩存行中的ECC校驗位的位置以用于同步。盡管可用于ECC的位的數(shù)量減少,但是在很 大程度上保持了 ECC的校正能力。這使同步位能夠與數(shù)據(jù)塊一起被操作,并且消除對于分 配附加存儲器并且進(jìn)行附加存儲器訪問的需要。計算機系統(tǒng)100還包括只讀存儲器(ROM)和/或其它靜態(tài)存儲裝置130,它們耦 合到總線105,以便存儲用于處理器110的靜態(tài)信息和指令。數(shù)據(jù)存儲裝置140耦合到總
4線105,以便存儲信息和指令。數(shù)據(jù)存儲裝置140、如磁盤或光盤以及對應(yīng)的驅(qū)動器可耦合 到計算機系統(tǒng)100。計算機系統(tǒng)100還可經(jīng)由總線105耦合到顯示裝置150,諸如陰極射線管(CRT)或 液晶顯示器(LCD),以便向用戶顯示信息。包括字母數(shù)字鍵及其它鍵的字母數(shù)字輸入裝置 160通常耦合到總線105,以便向處理器110傳遞信息和命令選擇。另一種類型的用戶輸入 裝置是光標(biāo)控件170,諸如鼠標(biāo)、軌跡球或光標(biāo)方向鍵,用以向處理器110傳遞方向信息和 命令選擇,以及控制顯示器150上的光標(biāo)移動。計算機系統(tǒng)100還包括網(wǎng)絡(luò)接口 180,用以 提供對網(wǎng)絡(luò)、如局域網(wǎng)的接入。指令經(jīng)由有線(187)或無線(185)等的遠(yuǎn)程連接(例如經(jīng)由網(wǎng)絡(luò)接口 180通過網(wǎng) 絡(luò)),從諸如磁盤、只讀存儲器(ROM)集成電路、CD-R0M、DVD之類的存儲裝置提供給存儲器。 在備選實施例中,硬連線電路可用來代替軟件指令或者與其結(jié)合。因此,指令序列的執(zhí)行并 不局限于硬件電路和軟件指令的任何特定組合。計算機可讀介質(zhì)包括以電子裝置(例如計算機、個人數(shù)字助理、蜂窩電話)可讀形 式提供內(nèi)容(例如計算機可執(zhí)行指令)的任何機構(gòu)。例如,計算機可讀介質(zhì)可包括只讀存 儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存裝置等等。圖2是具有ECC符號和同步符號的高速緩存行的一個實施例的邏輯布局。在圖2 的圖示中,數(shù)據(jù)符號由“DSn”表示,其中“η”指明數(shù)據(jù)符號編號,ECC校驗符號由“CSm”表 示,其中“m”指明校驗符號編碼,以及同步符號由“Synch”表示。在圖2的示例中,存在32 個數(shù)據(jù)符號、三個ECC校驗符號和一個同步符號。典型的ECC DIMM每字節(jié)具有一位ECC存儲。這對于每64字節(jié)高速緩存行提供64 個ECC校驗位(8字節(jié))。下面更詳細(xì)描述的是一種利用經(jīng)修改的里德-索羅蒙碼的技術(shù), 通過如下方式在一個實施例中,使用對64字節(jié)高速緩存行起作用的基于32字節(jié)高速緩存 行的里德-索羅蒙碼,并且改變基本有限域。64字節(jié)高速緩存行上的傳統(tǒng)里德-索羅蒙錯誤解碼邏輯使用GF[216]上的4X36 H矩陣對編號為0至3的四個二字節(jié)符號進(jìn)行操作。這能夠在任何二字節(jié)(16位)校驗符 號中糾正同時錯誤。使用傳統(tǒng)里德-索羅蒙操作,在全高速緩存行上,每個校驗符號為16 位。在一個實施例中,本文所述的技術(shù)利用高速緩存行中本來由最高校驗符號(編號3)中 的16位使用的存儲位置來用作同步位,并且僅使用其余三個校驗符號(0直到2、來執(zhí)行經(jīng) 修改的里德-索羅蒙編碼。在一個實施例中,經(jīng)修改的里德-索羅蒙碼省略H矩陣的最后行和列,并且使用簡 化的3X35 H矩陣來計算校驗符號0至2。在一個實施例中,用于經(jīng)修改的里德-索羅蒙碼 的校驗符號0至2與用于傳統(tǒng)里德-索羅蒙碼的校驗符號0至2相同。這些校驗位的使用是以糾錯能力的適度損失為代價而得來的-不是校正100%的 “chipkill”(出故障裝置)錯誤,而是可校正99. 997%至99. 9985%的chipkill錯誤。其 它chipkill錯誤成為“可檢測但不可校正”錯誤(DUE率為0. 0015% -0. 003% )。來自誤 校正或者轉(zhuǎn)成未檢測到的隨機大錯誤的“靜寂數(shù)據(jù)破壞”(SDC)率大約為1/16700000。這 些SDC和DUE率非常低,并且對于大多數(shù)系統(tǒng)是可接受的。當(dāng)前技術(shù)沒有將同步位與數(shù)據(jù)一起存儲。相反,當(dāng)前技術(shù)將信息存儲在DIMM中的 附加的分開存儲器中或者在管芯上(on-die)緩沖器/高速緩存中。這要求附加的存儲器容量和帶寬來實現(xiàn)同步,或者要求處理器管芯面積和功率來用于處理器管芯上的更大緩沖 器。因此,與被操作的數(shù)據(jù)塊一起存儲的同步位的使用消除對于分配附加存儲器并且進(jìn)行 附加存儲器訪問的需要。對于影響兩個數(shù)據(jù)符號Dtl和D1的chipkill錯誤,設(shè)、和X1為Dtl和D1的H矩陣 列生成元(generators) 0那么,&和X1是GF[216]的不同非零元素,并且H矩陣列為[1 = xQ°,X0 = X01, X02]和[1,X1, X12]。在數(shù)據(jù)符號Dtl上具有錯誤%以及在D1上具有錯誤ei的 chipkill錯誤將產(chǎn)生校驗符號S0 = e0+e!S1 = eo^Xo+e^XiS2 = eo^Xo^e^Xi2當(dāng)校驗符號&至&可能是DcZD1上的chipkill錯誤的結(jié)果時完全成立的DcZD1上 的chipkill錯誤的“定位符函數(shù)”為S0* (Xc^X1) +S1* (XfX1) +S2 = 0這個定位符函數(shù)計算用X1 = x0+l簡化為S0^x0* (x0+l)+S^S2 = 0DcZD1 chipkill錯誤的錯誤掩碼通過下式來計算θι = So^Xo+Sie0 = Sfe1對于ECC校驗符號上的chipkill錯誤,S1和&被映射成位于一個裝置中,因此那 個裝置上的chipkill錯誤可能產(chǎn)生S1和&的任何值。那么,S/S2 chipkill錯誤的定位 符函數(shù)為S0 = 0S1ZS2 chipkill錯誤的錯誤掩碼e(1/ei通過下式來計算e0 = S1θι = S2可在具有或沒有對同步位的糾錯/檢錯的情況下應(yīng)用本文所述的技術(shù)。描述兩種 變型,但是僅分析沒有對同步位的錯誤覆蓋的變型。最終校驗符號chipkill錯誤只是&和同步位上的任何錯誤。沒有對同步位的錯 誤覆蓋,這給出定位符函數(shù)S1 = S2 = 0和錯誤掩碼函數(shù)e0 = S0對符號位的錯誤覆蓋可通過將它們看作由對于GF[216]中的非零ζ的H矩陣列[1, ζ,ζ2]所覆蓋的數(shù)據(jù)符號來獲得。具有對同步位的錯誤覆蓋,ScZsynch chipkill錯誤具有 定位符函數(shù)S2 = S1^z并且錯誤掩碼通過下式來計算e0 = S0θ! = S^d/z)
在一個實施例中,經(jīng)修改的里德-索羅蒙方案為所有可能的chipkill錯誤計算定 位符函數(shù)。如果只有一個定位符函數(shù)成立,則計算那個定位符的錯誤掩碼,并且校正那個錯 誤。如果不存在錯誤,則& = S1 = & = 0,并且每一個定位符函數(shù)均成立。在所有其它情 況下(沒有成立的定位符函數(shù)或者有兩個或更多成立的定位符函數(shù)),出現(xiàn)了某種錯誤,但 是作為chipkill錯誤不存在可能的校正或者不存在對于chipkill錯誤的非唯一校正可能 性。下列分析針對當(dāng)兩個或更多定位符函數(shù)可同時成立時,它確定DUE率。注意,數(shù)據(jù) /數(shù)據(jù)chipkill定位符具有下列形式S0*x*(x+1)+S1+S2 = 0或者相當(dāng)于S0 = (S^S2)/(x* (x+1))因此,所有數(shù)據(jù)/數(shù)據(jù)定位符函數(shù)在&為非零時互斥。注意,數(shù)據(jù)/數(shù)據(jù)定位符中的單符號數(shù)據(jù)錯誤使錯誤掩碼%和ei中僅一個非零, 并且因此單符號數(shù)據(jù)錯誤使SA1和&中每一個非零。由于&至&是%和ei的線性無關(guān) 函數(shù),所以chipkill數(shù)據(jù)/數(shù)據(jù)錯誤使&至&中至少兩個非零。沒有同步錯誤覆蓋的Stl/ synch chipkill定位符函數(shù)具有S1 = & = 0,因此它和數(shù)據(jù)/數(shù)據(jù)定位符函數(shù)不能同時成立。S1Z^S2定位符函數(shù)正好在S0 = 0時成立。在這種情況下,^ 0 = S0 = e0+ei時(即, 正好當(dāng)% = ei時),數(shù)據(jù)/數(shù)據(jù)定位符函數(shù)也成立。當(dāng)% = ei時的數(shù)據(jù)/數(shù)據(jù)定位符具 有力=S1 = &。因此,僅當(dāng)S1 = &時,S1A2定位符和某個數(shù)據(jù)/數(shù)據(jù)定位符兩者都成立, 并且僅當(dāng)% = ei時,數(shù)據(jù)/數(shù)據(jù)定位符和S1ZiS2定位符兩者都成立。這些是沒有同步位錯 誤覆蓋的S1ZiS2和數(shù)據(jù)/數(shù)據(jù)定位符的DUE情況,它們?yōu)?. 0015%的可能的chipkill錯誤。 準(zhǔn)確地校正其余99. 9985%的chipkill錯誤。這與100%的chipkill錯誤在標(biāo)準(zhǔn)(四校 驗符號)里德-索羅蒙方案中可校正的情況形成對照。這種DUE率非常低,并且對于大多 數(shù)系統(tǒng)是可接受的。圖3是用于對具有同步符號的數(shù)據(jù)行進(jìn)行編碼和傳送的技術(shù)的一個實施例的流 程圖。圖3的技術(shù)可用于例如高速緩存行,所述高速緩存行在并行計算環(huán)境中從已對于高 速緩存行中存儲的數(shù)據(jù)進(jìn)行操作的處理器傳送到另一個處理器。同步符號可用于使處理器 之間的處理同步。檢索要傳送的數(shù)據(jù),310。數(shù)據(jù)可從存儲器、從寄存器等中讀取。在一個實施例中, 數(shù)據(jù)是高速緩存行;但是,可支持其它數(shù)據(jù)大小。數(shù)據(jù)可響應(yīng)來自另一個處理器的請求而傳 送,或者可響應(yīng)本地處理器傳送給另一個處理器。要傳送的數(shù)據(jù)使用經(jīng)修改的里德-索羅蒙碼來編碼,320,如上所述。在一個實施 例中,所得數(shù)據(jù)符號和校驗符號可按照針對圖2所述的方式存儲在高速緩存行中。在備選 實施例中,可利用其它配置和組織。將同步符號級聯(lián)到數(shù)據(jù)符號和校驗符號,330。在一個實施例中,同步符號是數(shù)據(jù) 行的最后一個符號。在備選實施例中,同步符號可處于高速緩存行中的不同位置。然后傳 送數(shù)據(jù)行,340。圖4是用于對具有同步符號的數(shù)據(jù)行進(jìn)行接收和解碼的技術(shù)的一個實施例的流程圖。圖4的技術(shù)可用于例如高速緩存行,所述高速緩存行在并行計算環(huán)境中由另一個處 理器從已對于高速緩存行中存儲的數(shù)據(jù)進(jìn)行操作的處理器接收。接收具有同步符號的數(shù)據(jù)行,410。對所接收數(shù)據(jù)行使用經(jīng)修改的里德-索羅蒙碼 來解碼,420。提取同步符號,430,并且處理數(shù)據(jù),440。說明書中提到“一個實施例”或“實施例”表示結(jié)合該實施例所述的具體特征、結(jié) 構(gòu)或特性包含在本發(fā)明的至少一個實施例中。短語“在一個實施例中”在本說明書中各個 位置的出現(xiàn)不一定都指的是同一個實施例。雖然按照若干實施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員會知道,本發(fā)明并不 局限于所述實施例,而是可在所附權(quán)利要求的精神和范圍之內(nèi)經(jīng)過修改和變更來實施。因 此,本描述要視為說明性的,而不是限制性的。
權(quán)利要求
1.一種方法,包括使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包括三個校驗符號; 生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號; 組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號; 傳送已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號。
2.如權(quán)利要求1所述的方法,其中,所述糾錯碼包括經(jīng)修改的里德-索羅蒙碼。
3.如權(quán)利要求1所述的方法,其中,每個符號包括一個或多個字節(jié)。
4.如權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)塊包括高速緩存行,其中包含32個數(shù)據(jù)符 號、三個校驗符號和一個同步符號。
5.如權(quán)利要求1所述的方法,其中,已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少 一個同步符號被傳送至一個或多個雙列直插存儲器模塊(DIMM)并且存儲在其中。
6.一種設(shè)備,包括 第一處理器;第二處理器,所述第二處理器與所述第一處理器耦合,以便與所述第一處理器并行操 作,所述第二處理器使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包括三 個校驗符號;生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號,用于所述第二處理器與所述 第一處理器之間的同步;組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號;以 及將已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號傳送給所述第一處理ο
7.如權(quán)利要求6所述的設(shè)備,其中,所述糾錯碼包括經(jīng)修改的里德-索羅蒙碼。
8.如權(quán)利要求6所述的設(shè)備,其中,每個符號包括一個或多個字節(jié)。
9.如權(quán)利要求6所述的設(shè)備,其中,所述數(shù)據(jù)塊包括高速緩存行,其中包含32個數(shù)據(jù)符 號、三個校驗符號和一個同步符號。
10.如權(quán)利要求6所述的設(shè)備,其中,已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至 少一個同步符號被傳送至一個或多個雙列直插存儲器模塊(DIMM)并且存儲在其中。
11.一種包括計算機可讀介質(zhì)的產(chǎn)品,在所述計算機可讀介質(zhì)上存儲了指令,所述指令 在被執(zhí)行時使一個或多個處理器使用糾錯碼對數(shù)據(jù)塊進(jìn)行編碼,其中所得編碼每32個數(shù)據(jù)符號包括三個校驗符號; 生成與所述數(shù)據(jù)符號對應(yīng)的至少一個同步符號; 組合所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號; 傳送已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至少一個同步符號。
12.如權(quán)利要求11所述的產(chǎn)品,其中,所述糾錯碼包括經(jīng)修改的里德-索羅蒙碼。
13.如權(quán)利要求11所述的產(chǎn)品,其中,每個符號包括一個或多個字節(jié)。
14.如權(quán)利要求11所述的產(chǎn)品,其中,所述數(shù)據(jù)塊包括高速緩存行,其中包含32個數(shù)據(jù) 符號、三個校驗符號和一個同步符號。
15.如權(quán)利要求11所述的產(chǎn)品,其中,已組合的所述數(shù)據(jù)符號、所述校驗符號和所述至 少一個同步符號被傳送至一個或多個雙列直插存儲器模塊(DIMM)并且存儲在其中。
全文摘要
將要用于并行處理的同步數(shù)據(jù)包含在具有糾錯碼符號的數(shù)據(jù)塊中的方法和設(shè)備。數(shù)據(jù)塊使用糾錯碼來編碼。所得編碼每32個數(shù)據(jù)符號包括三個校驗符號。生成與數(shù)據(jù)符號對應(yīng)的至少一個同步符號。組合數(shù)據(jù)符號、校驗符號和至少一個同步符號。傳送已組合的數(shù)據(jù)符號、校驗符號和至少一個同步符號。
文檔編號G06F11/10GK102096610SQ20101059145
公開日2011年6月15日 申請日期2010年12月9日 優(yōu)先權(quán)日2009年12月10日
發(fā)明者C·S·胡德萊斯頓, R·阿加瓦爾 申請人:英特爾公司