專利名稱:用于相鄰符號糾錯檢錯碼的方法、系統(tǒng)和裝置的制作方法
背景1、領(lǐng)域本公開涉及存儲器和計算機存儲器系統(tǒng)的領(lǐng)域,更具體地說,涉及存儲器差錯的檢錯和糾錯。
2、相關(guān)技術(shù)描述糾錯碼(error correcting code,or ECC)已被普遍用于計算機存儲器子系統(tǒng)中的容錯。最常使用的代碼是能夠糾正碼字中的所有單差錯并檢測所有雙差錯的單糾錯(single errorcorrecting,or SEC)雙檢錯(double error detecting,or DED)碼。
隨著芯片制造的趨勢正朝著更大芯片容量的方向發(fā)展,越來越多的存儲器子系統(tǒng)將被配置為每芯片b位(b-bits-per-chip)。在存儲器上使用的最適合的符號ECC是糾正碼字中的所有單符號差錯并檢測所有雙符號差錯的單符號糾錯(single symbol error correcting,or SbEC)雙符號檢錯(double symbol error detecting,or DbED)碼,其中“b”是存儲器器件的寬度(輸出的位數(shù))。對于用SbEC-DbED碼設(shè)計的存儲器來說,當存儲器芯片發(fā)生故障時,無論其故障模式如何,該存儲器都可以繼續(xù)工作。當在同一ECC字中先后出現(xiàn)兩個發(fā)生故障的芯片時,SbEC-DbED碼將會提供必要的檢錯,并保護存儲器的數(shù)據(jù)完整性。
現(xiàn)有的和即將出現(xiàn)的存儲器系統(tǒng)采用18個存儲器器件。然而,為了提供芯片故障糾正和檢測,當前的SbEC-DbED糾錯碼采用36個存儲器器件。因而,由于用于糾錯目的的36個存儲器器件所帶來的額外開銷,而使成本增加,并且因為它們未擴展到(不適用于)具有18個存儲器器件的存儲器系統(tǒng),所以它們不夠靈活。此外,用于對差錯進行編碼和解碼的各種電路比較復(fù)雜。因而,這增加了計算機系統(tǒng)保證數(shù)據(jù)完整性的成本和設(shè)計。
在附圖中以示例而非限制的方式圖示了本發(fā)明。
圖1圖示了在一個實施方案中采用的碼字的框圖。
圖2圖示了在一個實施方案中采用的裝置。
圖3圖示了在一個實施方案中采用的方法的流程圖。
圖4圖示了在關(guān)于圖2描述的實施方案中采用的裝置。
圖5圖示了在一個實施方案中采用的系統(tǒng)。
具體實施例方式
以下描述提供了用于存儲器器件的檢錯和糾錯的方法、裝置和系統(tǒng)。在以下描述中,闡述了很多具體的細節(jié)以提供對本發(fā)明的更完整理解。然而,本領(lǐng)域的技術(shù)人員將會理解,沒有這些具體的細節(jié)也可以實現(xiàn)本發(fā)明。本領(lǐng)域的普通技術(shù)人員利用這里所包括的描述,無需不必要的試驗就能夠?qū)崿F(xiàn)適當?shù)倪壿嬰娐贰?br>
如前所述,典型的ECC碼采用36個存儲器器件用于芯片故障檢測和糾正,這導(dǎo)致計算機系統(tǒng)的成本和設(shè)計增加。另外,隨著一個系統(tǒng)中18個存儲器器件的出現(xiàn),當前的ECC碼不能擴展。相反,所要求保護的主題有助于實現(xiàn)一種新的ECC碼,即“相鄰符號”碼,其支持具有18個存儲器器件的存儲器系統(tǒng)。例如,在一個實施方案中,所要求保護的主題有助于實現(xiàn)在采用18個存儲器器件用于存儲器事務(wù)(存儲器等級)的系統(tǒng)中解碼并糾正存儲器差錯的能力。此外,所要求保護的主題有助于形成一種只具有兩個時鐘相位的數(shù)據(jù)碼字。另外,相鄰符號ECC碼糾正來自一個存儲器器件的數(shù)據(jù)內(nèi)的任何差錯型式,并檢測因兩個存儲器器件中的故障而發(fā)生的各種差錯(雙器件差錯)。
在一個實施方案中,相鄰符號ECC碼被用于具有兩個通道的雙數(shù)據(jù)率(DDR)存儲器的存儲器系統(tǒng),其中每條通道64位寬,有8個用于ECC的可選位。另外,存儲器系統(tǒng)可以采用x4或x8寬的存儲器器件(x4和x8是指可以從存儲器器件中輸出的位數(shù))。因而,所要求保護的主題支持各種配置的存儲器系統(tǒng)。例如,如果支持ECC的話,具有x8器件的存儲器系統(tǒng)將會每個存儲器等級采用18個存儲器器件,否則,如果不支持ECC的話,將會每個存儲器等級采用16個存儲器器件??商鎿Q地,如果支持ECC的話,具有x4器件的存儲器系統(tǒng)將會于每個存儲器等級采用36個存儲器器件,否則,如果不支持ECC的話,將會于每個存儲器等級采用32個存儲器器件。
圖1圖示了在一個實施方案中采用的碼字的框圖??驁D100包括由來自一個存儲器器件的兩個時鐘相位的數(shù)據(jù)102和104形成的相鄰符號碼字106。例如,在一個實施方案中,存儲器訪問事務(wù)包括每個時鐘沿(clock edge)128個數(shù)據(jù)位加上附加的16個ECC校驗位的傳輸,即,每個時鐘沿總共有144位(兩個時鐘沿288位)。在第一時鐘相位102中,來自存儲器的數(shù)據(jù)的第一半字節(jié)(nibble)“n0”和第二半字節(jié)“n2”被轉(zhuǎn)移并映射到碼字106的兩個符號中的每個符號的第一半字節(jié)。接著,在第二時鐘相位104期間,來自存儲器的第一半字節(jié)“n1”和第二半字節(jié)“n3”被轉(zhuǎn)移并映射到碼字106的兩個符號中的每個符號的第二半字節(jié)。因此,碼字106的兩個符號是相鄰的,并且位于碼字的16位邊界上,它們被指定為“相鄰符號”,因而碼字106是相鄰符號碼字。
在框圖中圖示的方案有助于檢錯,并且提高了共模差錯的錯誤覆蓋率。例如,對于一個x4存儲器器件,存在一個從該x4存儲器器件到下層碼字中符號的半字節(jié)一對一映射(one to one mapping)。相反,對于一個x8存儲器器件,存在一個從該x8存儲器器件的一半到下層碼字中符號的半字節(jié)一對一映射。因此,所要求保護的主題有助于將半字節(jié)上的共模差錯隔離到符號級,并且導(dǎo)致錯誤覆蓋率提高。因此,對于x8存儲器器件,所要求保護的主題避免了對第二器件故障的混疊(aliasing)。同樣,在x4存儲器器件中的器件差錯被隔離到碼字106的單個符號,因而,對于x4存儲器器件存在完全的雙器件覆蓋。
為進一步說明,一般存在兩種發(fā)生在同一存儲器等級中的雙器件故障,同時的和順序的。
同時雙器件故障沒有什么早期的征兆警告,因為沒有任何有關(guān)前一存儲器事務(wù)中差錯的指示。一般地,計算機系統(tǒng)報告缺少混疊時的不可糾正的差錯。然而,系統(tǒng)有可能錯誤地報告可糾正的單個器件故障。此時可能在后面的訪問中發(fā)現(xiàn)混疊,因為差錯模式有可能改變以避免混疊。
相反,順序的雙器件故障是比同時的雙器件故障更典型的故障模式。一般地,第一器件差錯被檢測為可糾正的差錯。對于第二器件故障,在一個實施方案中可能有兩種結(jié)果;差錯被報告為不可糾正的,否則,差錯被報告為新位置上的可糾正差錯。一旦第二器件故障是不可糾正的差錯,分析就結(jié)束了。否則,系統(tǒng)將差錯位置從第一器件故障改變到第二器件的故障位置。因此,前面用于檢測混疊的方法是準確的,因為第一器件故障位置不太可能自我解決,更不可能在已發(fā)生第二器件故障的同時又這么做。
經(jīng)常檢測出的雙器件差錯(無混疊)的一些例子是雙位差錯、雙線錯誤、在第二存儲器器件中發(fā)生單個位差錯的情況下在一個存儲器器件中的線錯誤、以及只影響每個存儲器器件的一個半字節(jié)的錯誤。
在x8存儲器器件的器件差錯的一個實施例中,碼字(相鄰符號)的所有16位都可能受到影響(破壞),因為故障導(dǎo)致了存儲器器件的數(shù)據(jù)的兩個半字節(jié)和兩個時鐘相位的差錯。因而,所要求保護的主題通過首先糾正差錯中的16位,可有助于糾正該器件故障。然而,如果發(fā)生第二存儲器器件故障,所述碼就檢測在碼字106中沿著16位邊界對齊的兩組16位中的差錯模式。
圖2圖示了在一個實施方案中使用的裝置。從高層的角度看,該裝置通過創(chuàng)建將被附加到被轉(zhuǎn)發(fā)到存儲器的數(shù)據(jù)的校驗位,而生成碼字。接著,該裝置至少部分基于解碼從存儲器接收到的碼字,而生成檢驗子(syndrome),并協(xié)助分類差錯和糾正差錯。在一個實施方案中,來自存儲器器件的碼字是前面參考圖1描述的相鄰符號碼字。
該裝置包括編碼器電路202、至少一個存儲器器件204、解碼器電路206、差錯分類電路208和糾正電路210。
編碼器電路接收將被轉(zhuǎn)發(fā)給所述存儲器器件或多個存儲器器件204的數(shù)據(jù)。編碼器電路至少部分基于所述數(shù)據(jù)生成多個校驗位。因而,碼字至少部分地是基于多個校驗位和數(shù)據(jù)而形成并且被轉(zhuǎn)發(fā)給所述存儲器器件或多個存儲器器件204。
在一個實施方案中,由二進制形式的G矩陣生成校驗位,其中矩陣具有32行256列,以形成32個校驗位。如下計算校驗位ci=∑dj×Gij對于i=0到31并且j=0到255對于二進制數(shù)據(jù),乘法運算變?yōu)锳ND函數(shù)以及1位和的求和運算或XOR運算。因而,所形成的編碼電路包括32個XOR,每個樹計算32個校驗位之一。
接著,所述存儲器器件或多個存儲器器件104將數(shù)據(jù)和校驗位返回到解碼器電路106。在一個實施方案中,解碼器電路至少部分基于288位的碼字(如前面參考圖1對288位碼字的描述)而生成32位檢驗子。
在一個實施方案中,檢驗子是由H矩陣生成的,其中矩陣包括32行288列。如下計算每個檢驗子位si=∑vj×Hij對于i=0到31并且j=0到287如前面參考編碼器電路所描述的,檢驗子位的生成被簡化為在與H矩陣中具有二進制1值的列相對應(yīng)的碼字位上的XOR運算。因而,解碼電路包括32個XOR樹,每個樹計算32個檢驗子位之一。因此,在一個實施方案中,利用接收288位碼字的H矩陣生成32位檢驗子。然而,所要求保護的主題不限于這種位結(jié)構(gòu)。本領(lǐng)域的技術(shù)人員理解對檢驗子和碼字的大小的修改。
參考圖4描述差錯分類和差錯糾正。
圖3描繪了在一個實施方案中使用的方法的流程圖。該流程圖描繪了用于檢測在與存儲器器件或多個存儲器器件之間的事務(wù)中的數(shù)據(jù)是否存在差錯的方法。第一方框302生成將被附加到用于轉(zhuǎn)發(fā)給存儲器器件或多個存儲器器件的數(shù)據(jù)的校驗位。至少部分基于從所述存儲器器件或多個存儲器器件接收的數(shù)據(jù)生成相鄰符號碼字,以用于檢驗所述數(shù)據(jù)的完整性,如方框304所示。解碼器至少部分基于所述相鄰符號碼字生成檢驗子,如方框306所示。如果存在由檢驗子確定出的差錯,則執(zhí)行差錯分類和差錯糾正,如方框308所示。
圖4圖示了在參考圖2描述的實施方案中使用的裝置。如前所述,圖4結(jié)合圖2描述了差錯分類和差錯糾正的一個實施方案。
差錯分類至少部分基于解碼電路對檢驗子的計算。例如,在一個實施方案中,如果檢驗子(S)==0,則不存在差錯。否則,如果檢驗子(S)>0,則存在差錯。另外,可選的是通過計算差錯位置向量L而進一步分類差錯。例如,在一個實施方案中,如果L==0則差錯是不可糾正的。否則,如果L>0則在所指示的列中差錯是可糾正的。此外,根據(jù)差錯發(fā)生在數(shù)據(jù)列中還是校驗列中可以進一步分類可糾正的差錯。例如,如果差錯是在校驗列中,則碼字的數(shù)據(jù)部分可以繞過糾正邏輯。
在另外一個實施方案中,至少可以部分基于差錯值的權(quán)重來分類單器件可糾正差錯。如圖4所示,相鄰對可以生成差錯值e0和e1。因而,差錯定位器向量L被用于門控多條通路(buss)上的差錯值402和404,因為所述電路允許用于一個相鄰對的差錯定位器位將被使能用于一種給定的差錯模式。
因此,所要求保護的主題實現(xiàn)了對單器件差錯和雙器件差錯的測試覆蓋。
圖5描繪了根據(jù)一個實施方案的系統(tǒng)。在一個實施方案中的系統(tǒng)是被耦合到芯片組504的處理器502,而芯片組504又被耦合到存儲器506。例如,芯片組完成并協(xié)助各種操作,例如在處理器和存儲器之間的存儲事務(wù),并利用參考圖1描述的相鄰符號碼字來驗證數(shù)據(jù)完整性。在一個實施方案中,芯片組是支持計算機服務(wù)器系統(tǒng)的服務(wù)器芯片組。相反,在另一個實施方案中,芯片組是支持計算機桌面系統(tǒng)的桌面芯片組。在上面的兩個實施方案中,所述系統(tǒng)包括前面在說明書的圖1-4中描繪的支持相鄰符號碼字和糾錯檢錯方法和裝置的實施方案。
雖然在附圖中描述并示出了一些示例性的實施方案,但是可以理解,這些實施方案對于寬廣的本發(fā)明而言僅僅是示意性的而非限制性的,本發(fā)明不限于所示出并描述的特定結(jié)構(gòu)和布局,因為研究本公開內(nèi)容的本領(lǐng)域技術(shù)人員將會作出多種其他修改。
權(quán)利要求
1.一種用于形成相鄰符號碼字的方法,所述方法包括在第一時鐘相位期間,由第一組數(shù)據(jù)生成第一符號的一組m位和第二符號的一組m位,其中m是一個整數(shù);以及在第二時鐘相位期間,由第二組數(shù)據(jù)生成所述第一符號的一組n位和所述第二符號的一組n位,其中n是一個整數(shù)。
2.如權(quán)利要求1所述的方法,其中所述第一和第二組數(shù)據(jù)來自存儲器。
3.如權(quán)利要求2所述的方法,其中所述存儲器是雙數(shù)據(jù)率(DDR)存儲器。
4.如權(quán)利要求1所述的方法,其中m和n都是4位,并且構(gòu)成一個半字節(jié)。
5.如權(quán)利要求1所述的方法,其中所述相鄰符號碼字包括所述第一和第二符號的相鄰排列。
6.如權(quán)利要求1所述的方法,還包括隔離所述第一和第二符號的所述m位和n位上的共模差錯。
7.一種用于測試存儲器的方法,所述方法包括生成將附加到被轉(zhuǎn)發(fā)給所述存儲器的數(shù)據(jù)的多個校驗位;至少部分基于從所述存儲器接收的數(shù)據(jù)生成相鄰符號碼字;解碼所述相鄰符號碼字;以及確定在所述存儲器中是否存在差錯。
8.如權(quán)利要求7所述的方法,其中解碼所述相鄰符號碼字的操作包括至少部分基于所述相鄰符號碼字生成檢驗子。
9.如權(quán)利要求7所述的方法,其中至少部分基于檢驗子來確定在所述存儲器中是否存在差錯。
10.如權(quán)利要求9所述的方法,其中基于所述檢驗子存在差錯,所述方法還包括分類所接收數(shù)據(jù)中的差錯;以及糾正所接收數(shù)據(jù)中的差錯。
11.如權(quán)利要求7所述的方法,其中所述存儲器是雙數(shù)據(jù)率(DDR)存儲器。
12.如權(quán)利要求所述的方法,其中所述檢驗子是基于288位碼字的32位。
13.一種用于糾錯碼的裝置,所述裝置包括基于一組數(shù)據(jù)生成多個校驗位,以將所述校驗位附加到將被轉(zhuǎn)發(fā)給存儲器的所述一組數(shù)據(jù)的第一邏輯;從所述存儲器接收碼字,并且基于所述碼字生成檢驗子,并基于所述檢驗子檢測是否存在差錯的第二邏輯;如果存在差錯則分類所述差錯的第三邏輯;以及如果存在差錯則糾正所述差錯的第四邏輯。
14.如權(quán)利要求13所述的裝置,該裝置被合并到一個服務(wù)器芯片組內(nèi)。
15.如權(quán)利要求13所述的裝置,其中所述存儲器是雙數(shù)據(jù)率(DDR)存儲器。
16.如權(quán)利要求13所述的裝置,其中所述檢驗子是32位,并且所述碼字是288位。
17.如權(quán)利要求13所述的裝置,其中所述第一邏輯是編碼器,并且使用以下公式ci=∑dj×Gij對于i=0到31并且j=0到255,以生成所述多個校驗位。
18.如權(quán)利要求13所述的裝置,其中所述第二邏輯是解碼器,并且所述檢驗子是由以下公式生成的H矩陣si=∑vj×Hij對于i=0到31并且j=0到287,以生成所述檢驗子。
19.一種分類來自存儲器的差錯的裝置,所述裝置包括生成H矩陣檢驗子的第一邏輯;以及基于所述檢驗子確定是否存在差錯,如果存在,則分類所述差錯的差錯類型。
20.如權(quán)利要求19所述的裝置,其中所述H矩陣檢驗子是通過以下公式生成的si=∑vj×Hij對于i=0到31并且j=0到287。
21.如權(quán)利要求19所述的裝置,其中分類差錯類型包括生成差錯位置向量的第一邏輯。
22.如權(quán)利要求21所述的裝置,其中所述差錯位置向量確定所述差錯是否可糾正所述差錯位置向量中的零值指示所述差錯是不可糾正的;相反,在所述差錯位置向量的指明列中大于零的值指示所述差錯是可糾正的。
23.如權(quán)利要求19所述的裝置,其中所述差錯類型可以是單器件差錯或雙器件差錯。
24.如權(quán)利要求23所述的裝置,其中所述雙器件差錯是同時差錯或順序差錯中的一種。
25.如權(quán)利要求23所述的裝置,其中基于差錯值的權(quán)重e0和e1來分類所述單器件差錯,并且所述差錯位置向量門控所述差錯值。
26.一種系統(tǒng),包括耦合到存儲器和芯片組的處理器,用以經(jīng)由所述芯片組生成對所述存儲器的操作;以及采用基于相鄰符號碼字的糾錯碼(ECC)的所述芯片組,所述相鄰符號碼字是在兩個時鐘相位中形成的,以確定在所述芯片組從所述存儲器接收的多個數(shù)據(jù)中是否存在差錯,如果存在,則基于H矩陣檢驗子來分類所述差錯的類型。
27.如權(quán)利要求26所述的系統(tǒng),其中所述存儲器是雙數(shù)據(jù)率(DDR)存儲器。
28.如權(quán)利要求26所述的系統(tǒng),其中所述H矩陣檢驗子是由以下公式生成的si=∑vj×Hij對于i=0到31并且j=0到287。
29.如權(quán)利要求26所述的系統(tǒng),其中所述系統(tǒng)是服務(wù)器。
全文摘要
基于相鄰符號碼字生成糾錯碼(ECC)的電路和方法,所述相鄰符號碼字是在兩個時鐘相位中形成的在第一時鐘相位期間,由第一組數(shù)據(jù)生成第一符號的一組m位和第二符號的一組m位,其中m是一個整數(shù);以及在第二時鐘相位期間,由第二組數(shù)據(jù)生成所述第一符號的一組n位和所述第二符號的一組n位,其中n是一個整數(shù)。
文檔編號G06F11/10GK1826588SQ200480021284
公開日2006年8月30日 申請日期2004年7月14日 優(yōu)先權(quán)日2003年7月21日
發(fā)明者托馬斯·霍爾曼 申請人:英特爾公司