專利名稱:使用校驗子分析的故障總線通道檢測的制作方法
使用校驗子分析的故障總線通道檢測
背景技術:
本發明一般地涉及計算機存儲器系統,更具體地說,涉及使用校驗子分析檢測故障總線通道。現代高性能計算主存儲器系統通常包括一個或多個動態隨機存取存儲器(DRAM)設備,這些設備通過一個或多個存儲器控制元件連接到一個或多個處理器。整體計算機系統性能受計算機結構的每個關鍵元素的影響,這些元素包括處理器(多個)、任何存儲器高速緩存(多個)、輸入/輸出(I/o)子系統(多個)的性能/結構、存儲器控制功能(多個)、主存儲器設備(多個)的效率以及存儲器互連接口(多個)的類型和結構。行業持續投入廣泛的研究和開發工作以產生改進和/或創新的解決方案,以便通過改進存儲器系統/子系統設計和/或結構來最大化整體系統性能和密度。高可用性系統 提出與整體系統可靠性相關的進一步挑戰,因為客戶期望新的計算機系統除了提供額外功能、提高性能、增加存儲、降低操作成本等之外,在平均故障間隔時間(MTBF)方面將明顯超過現有系統。其他常見的客戶要求進一步加劇了存儲器系統設計挑戰,并且包括諸如易于升級和降低系統環境影響(例如空間、電力和冷卻)之類的項目。一種用于在總線(例如存儲器系統總線)中查找故障通道的方法是使用錯誤糾正代碼(ECC)。ECC可以檢測和糾正多個故障位,但比錯誤檢測代碼需要更多的冗余位。通常,錯誤檢測代碼可以檢測錯誤但不能完全解析錯誤的物理性質;例如,它也許不能完全標識故障通道以便了解故障通道中的所有可能錯誤模式。因此,只有錯誤檢測代碼可能不會準確地將錯誤隔離到特定故障通道。另一種用于檢測故障通道的方法是通道遮蔽(laneshadowing),其中在備用通道上發送數據副本。然而,通道遮蔽在任一時間點只能針對通道的子集執行,并且可能錯過在給定故障通道的分析窗口外部發生的錯誤事件。
發明內容
一個實施例是一種用于檢測總線故障的計算機實現的方法。所述方法包括接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護。所述方法包括對于所述校驗子中的每個校驗子,針對所述通道中的每個通道執行以下步驟在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果;判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票。然后響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。另一實施例是一種用于檢測總線故障的系統,所述系統包括總線接口設備,被配置為接收和捕獲已在總線上傳輸的多個幀的校驗子,每個幀包括按通道的多個位傳輸;以及校驗子處理邏輯,其與所述總線接口設備通信。所述校驗子處理邏輯被配置為執行以下操作接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護。所述校驗子處理邏輯還被配置為對于每個校驗子,針對每個通道而執行以下操作在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果;判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票。響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。另一實施例是一種用于檢測總線故障的計算機程序產品。所述計算機程序產品包括計算機可讀存儲介質,其可由處理電路讀取并存儲指令以便由所述處理電路執行以實現一種方法,所述方法包括接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護。所述方法包括對于所述校驗子中的每個校驗子,針對所述通道中的每個通道而執行以下操作在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果;判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票。然后響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。
通過參閱以下附圖和詳細說明,根據各實施例的其他系統、方法和/或計算機程序產品對于本領域的技術人員來說顯而易見或變得顯而易見。旨在將所有此類其他系統、方法和/或計算機程序產品包括在此說明內、在本發明的范圍內,并由所附權利要求保護。
現在僅通過實例的方式參考附圖描述本發明的一個或多個實施例,這些附圖是圖I示出了可以由一個示例性實施例實現的級聯互連存儲器系統;圖2示出了示例性下游八傳輸幀;圖3示出了示例性下游十二傳輸幀;圖4示出了示例性下游十六傳輸幀;圖5示出了示例性上游八傳輸幀;以及圖6示出了用于使用校驗子分析檢測故障總線通道的示例性過程。
具體實施例方式本發明的一個示例性實施例在使用錯誤檢測代碼保護的總線中查找故障通道。可以使用計數器和多個錯誤檢測代碼校驗子的分析以統計方式標識故障通道。所述分析產生位向量,其具有等于所述總線中的通道數量的多個表項。每個通道具有一個計數器,其隨分析的結果遞增。如果特定通道的位向量等于零,則此通道的計數器保持不變;否則,遞增該計數器。所述分析可能不會完全解析哪個故障通道是產生錯誤的通道,相反針對所述故障通道提供多個可能性。因此,當分析單個校驗子時,可能遞增多個計數器。當接收到新校驗子時,多次重復此過程。盡管對于單個校驗子分析而言,可能無法解析故障通道,但當分析多個校驗子并獲得計數器的累積內容時,故障通道具有較高計數的概率很高。分析的校驗子越多,分析結果的質量就越好。監視其中在總線上傳輸的幀中發生一個且僅有一個位故障的錯誤條件,可以在隔離故障通道中獲得高準確性。例如,對于其中在幀中檢測到一個且僅有一個位故障的情況,可以在通道故障標識中獲得100%的準確性。在此參考循環冗余校驗(CRC)更詳細地描述所述分析;然而,所述分析適用于任何線性錯誤檢測代碼,而不僅限于 CRC。線性錯誤檢測代碼的特征在于奇偶校驗矩陣H。為簡單起見,假設所述代碼針對二進制符號執行,盡管此技術通常也適用于多位符號。奇偶校驗矩陣H中的行數(r)等于所述代碼中的檢驗位數。列數(η)等于n=r+k,其中k是錯誤檢測代碼中的有效負載位數。假設d是表示k個有效負載位的列向量,并假設c是表示與這些k個有效負載位關聯的r個位的列向量。在總線上傳輸的總向量是V= [cd],其中c和d被串接以形成V。校驗位c的位置不需要在向量的頂部,并且校驗位也不需要連續放置;在此假設這種組織完全是為了改進此說明的可讀性。在給定有效負載d的情況下計算校驗位c以便H v=0。H ν表示使用矩陣/向量乘法模數2將矩陣H與向量 ν相乘。然后在信道上傳輸向量V,此信道可能在ν上傳遞錯誤。此錯誤由e表示,它是具有η個表項的向量,如果沒有錯誤,則這些表項為0,如果具有錯誤,則這些表項為I。假設總線中具有L個通道,每個通道在總線上的整個幀傳輸中承載n/L個位。因此,還假設η可被L整除。向量ν可以分為L個部分,每個部分具有如下連續位ν= [ν Iν2…vL]。在信道上傳輸這些部分中的每一個(包括n/L個位)。同樣,錯誤向量可以分為e=[ele2...eL]。當接收到數據模式(data pattern) v+e時,解碼器使用不依賴于向量ν的方程s=H(v+e) =0+He=He計算對應的校驗子。如果沒有錯誤(e=0),則校驗子s為O,并且認為中貞良好。如果S=He不等于0,則檢測到錯誤,并且通常要求重試。進一步假設r>n/L,即所述代碼中的校驗位多于任意給定通道中的位。矩陣H可以分為H=[H1 H2…HL]。如果錯誤僅集中在通道i中,其中e=
并且ei為非0,則接收的校驗子為s=Hi ei。Hi可以分為兩個部分,第一部分Hi_A包含n/L個行,另一個部分Hi_B包含剩余行。所述劃分顯示為Hi=[Hi_AHi_B]同樣,校驗子s可被分為s=[s_As_B]因此,Hi_A是維數為(n/L) X (n/L)的方矩陣,Hi_B是維數為(r_n/L) X (n/L)的矩陣。同樣,s_A具有n/L個表項,s_B具有r-n/L個表項。如果所述代碼使得Hi_A是可逆矩陣,則Hi_A的逆乘以s_A等于ei,這可以表示為inv(Hi_A)S_A=ei。這有效地恢復影響該通道的錯誤模式ei。要指出的是,Hi_A對于每一個I可逆的屬性例如可以通過使用循環碼并確保通道中的連續位對應于該循環碼中的連續位來獲得;循環碼的實例是類ο BCH代碼。由于恢復了錯誤模式ei,因此以下方程(第二等式)也成立inv(Hi_A)s_A_s_B=0 (I)要指出的是,此方程另外使用第一等式定義了標記mi。方程(I)是檢測故障總線通道的基礎。如果通道i是出現問題的通道,則方程(I)左側的標記mi (僅依賴于設計的代碼H和校驗子s)必須等于O。因為不知道哪個通道出現故障,所以針對所有L個通道計算方程(I)的左側,當計算方程(I)的左側時實際上又假設每個通道是故障通道,使指數i從I變到L。對于那些通過計算產生O的指數i,將關聯的通道聲明為故障通道候選者,并將分析位向量vote_lane的第i位設置為I,即,將vote_lane[i]設置為I (這在此稱為“為通道i投票”)。對于那些通過計算具有非O結果的指數i,將Vote_lane[i]設置為O (這在此稱為“沒有為通道i投票”)。要指出的是,針對每個通道使用校驗子子集s_A計算錯誤大小e_i,同時使用剩余校驗子位s_B執行候選錯誤向量的交叉檢驗。如果交叉檢驗成功,·則生成有效解碼信號,否則生成無效解碼信號。上面對應用于一個幀的過程的說明并不對應于本領域中公知的總線錯誤糾正過程。在總線錯誤糾正過程中,對校驗子進行解碼將產生不可糾正的錯誤信號,或者備選地,必須應用于所認為的總線的糾正將消除數據損壞。相比之下,在上述過程中,在假設每個通道是故障通道的情況下執行每個校驗子的解碼,并且如果獲得有效解碼,則此通道獲得投票,目標是僅在處理多個幀之后才發現故障通道。因此,當使用在此描述的過程的一個實施例處理一個幀時,不會始終標識唯一故障通道。如上所述,一個示例性實施例為每個位通道提供一個計數器,對屬于故障通道的關聯通道的投票進行計數。這些計數器跨多個錯誤檢測(并且因此校驗子分析)事件存在,因此它們也稱為運行計數器。可以使用位向量votejane遞增每個位通道的計數器,實際上通過將位向量votejane的值添加到計數器的當前值。存在其中僅針對一個通道獲得標記mi的O計算的情況,但通常可能存在兩個或更多針對其在方程(I)中獲得O計算的通道,這意味著將遞增對應計數器。如果通道具有永久性錯誤但實際錯誤模式隨訪問的不同而更改,則故障通道的計數器比其他通道的計數器遞增的更多。跟蹤計數器并判定計數器是否達到閾值的硬件、固件或軟件可以利用這一點。如果如此,則對應通道是合適的備用通道候選者。如果錯誤模式是單個位錯誤(single bit error),則在適當設計錯誤檢測代碼的情況下,可以正確地標識故障通道而沒有任何歧義。在示例性實施例中,采用的錯誤檢測代碼具有檢測至少任何兩個位錯誤的能力。因此,任何兩個單個位錯誤的校驗子都不能相同。當存在單個位錯誤時,不可能針對兩個或更多通道計算如下ei :其具有單個位錯誤并且同時方程(I)中的計算的結果是O。在一個備選示例性實施例中,可以采用方程(2 )和(3 )執行兩階段計算,而不是計算方程(I):ei=inv (Hi_A)s_A (2)mi=Hi_B e_i_s_B (3)
其中ei被稱作通道i的候選錯誤向量。對于每個通道i={l,. . .,M},確定ei中是否只有一個位錯誤并且同時mi=0。每當通過此屬性找到一個且僅有一個Γ *時,可選地僅針對Γ *生成一個投票,即使存在mi=0但ei并非只有一個位錯誤的另一個不同于Γ *的i也是如此。這樣,所具有的影響是略微犧牲通用通道錯誤模式的錯誤檢測能力,而優點是保證定位所有單個位而沒有任何歧義。換言之,每當存在指示單個位錯誤的候選錯誤向量時,在解碼期間生成的通道的所有其他可能投票都被取消。現在轉到圖1,示出了存儲器系統100的一個實例,其包括通過高速信道通信并使用在此描述的錯誤檢測代碼校驗子分析的完全緩沖的雙列直插式存儲器模塊(DIMM)。存儲器系統100可以結合在主機處理系統中作為處理系統102的主存儲器。存儲器系統100包括多個DIMM 103a、103b、103c和103d,它們具有經由信道106或級聯互連總線(包括差分單向上游總線118和差分單向下游總線116)通信的集線器設備104。DIMM103a-103d可以包括多個存儲器件109,它們可以是雙倍數據速率(DDR)動態隨機存取存儲器(DRAM)器件以及本領域中公知的其他組件,例如電阻器、電容器等。存儲器件109也稱為DRAM 109 或DDRx,因為DIMM103a-103d上可以包括任何版本的DDR,例如DDR2、DDR3、DDR4等。存儲器控制器110與DIMM 103a通過接口連接,經由信道106發送可以以DIMM 103a_103d中的任意一個作為目標的命令、地址和數據值。所述命令、地址和數據值可以格式化為幀并序列化,以便以高數據速率傳輸。集線器設備104和存儲器控制器110 —般可以稱為總線接口設備。在一個示例性實施例中,當DIMM從上游DIMM或存儲器控制器110接收到幀時,它將該幀重新驅動到菊花鏈中的下一個DIMM (例如,DIMM103a重新驅動到DIMM 103b, DIMM130b重新驅動到DIMM 103c等)。同時,DIMM對幀進行解碼以確定內容。因此,DIMM處的重新驅動和命令解碼可以并行或幾乎并行發生。如果命令是讀取請求,則所有DIMM103a-103d和存儲器控制器110使用該命令的內容跟蹤上游總線118上的讀取數據業務。DIMM 103a_103d上的集線器設備104經由到信道106的總線接口(例如端口)接收命令。集線器設備104上的總線接口除了其他組件之外還包括接收器和發送器。在一個示例性實施例中,每個集線器設備104包括用于通過信道106與上游集線器設備104或存儲器控制器110通信的上游總線接口,以及用于通過信道106與下游集線器設備104通信的下游總線接口。集線器設備104還包括計數器112、寄存器114和錯誤處理邏輯120。同樣,存儲器控制器110也可以包括計數器112、寄存器114和錯誤處理邏輯120。計數器112可以用作錯誤計數器,錯誤處理邏輯120使用它們計算錯誤率并在寄存器114中設置故障條件。計數器112可以以軟件、固件、硬件或它們的某種組合實現。可以將用于標識特定故障通道的詳細校驗子處理卸載到處理系統102的校驗子處理邏輯122。盡管圖I中僅示出了將存儲器控制器110連接到單個存儲器設備集線器設備104的單個存儲器信道106,但使用這些模塊產生的系統可以包括來自存儲器控制器110的多個分離存儲器信道,每個存儲器信道單獨運行(當使用模塊填充單個信道時)或并行運行(當使用模塊填充兩個或更多信道時)以實現所需的系統功能和/或性能。此外,信道106中可以包括任意數量的通道。例如,下游總線116可以包括13個位通道、2個備用通道和I個時鐘通道,而上游總線118可以包括20個位通道、2個備用通道和I個時鐘通道。選擇/應用下游CRC的一個示例性實施例以便支持8、12和16個傳輸幀(在一個示例性實施例中,每個傳輸中包括13個位通道)。下游CRC檢測任何通道故障、任何傳輸故障以及多達5個位隨機錯誤。此外,如果檢測到下游CRC錯誤,則忽略下游幀的內容并在寄存器114中設置故障信息寄存器(FIR)位。FIR是一種架構式裝置,存儲有關在集線器設備104中檢測到的故障的信息。存儲器控制器110和/或其他系統元件可以詢問FIR以確定需要執行何種操作(如果有)。響應于設置FIR位,可以進入錯誤恢復狀態,如果啟用系統100以執行此操作的話。校驗位的“常規”位置是在代碼字的開頭或結尾。設計了下游代碼的一個示例性實施例以便校驗位位置在“非常規”位置。由于與如何設計協議相關的問題,所以需要這種非常規位置。此外,將校驗位放在常規位置然后到處移動它們可能會破壞代碼的重要屬性(例如,所有通道故障檢測等)。此外,并非所有位置都可以提供CRC檢測。在此描述的示例性下游幀格式利用校驗位位置的非常規位置。選擇/應用上游CRC使得多達8個傳輸包含多達20個位通道,以便它檢測任何通道故障、任何傳輸故障(逃逸率為2 μ (-16))以及多達4個隨機錯誤。此外,所有上游集線器設備104監視通過集線器設備104的上游CRC數據以檢測上游CRC錯誤,并且任何檢測到的錯誤都導致集線器設備104中斷所有讀取業務、轉發有害CRC、設置FIR位以及進入錯誤恢復狀態。 在一個示例性實施例中,針對13通道X 16拍(beat)(最大)幀格式使用下游CRC(錯誤檢測)代碼。此CRC代碼可以檢測任何通道故障、任何傳輸故障以及多達5個位隨機錯誤。而且,其中隨機無提示(silent)錯誤率大約是2的負十七次冪Γ2〃(-17))。CRC 多項式的一個不例性實施例為g(X) =1+χ+χ3+χ4+χ5+χ8+χ12+χ13+χ15+χ16+χ17+χ18。這是具有五個連續O (除了其他O之外)的博斯-喬赫里-霍克文黑姆(BCH)代碼。此示例性代碼的最小距離為6。基代碼實際上僅需要17個位,因此人為添加了附加位以提供適當的長度。圖2示出了使用在此描述的信道CRC的一個實施例的示例性下游八傳輸幀。圖3示出了使用在此描述的信道CRC的一個實施例的示例性下游十二傳輸幀。同樣,圖4示出了使用在此描述的信道CRC的一個實施例的示例性下游十六傳輸幀。如圖2-4中所示,CRC位位置為:156、157、158、159、169、170、171、172、182、183、184、185、186、195、196、197、198 和199。計算通用奇偶校驗之后,使用矩陣高斯消元法獲得適合于計算上面給定位置中的CRC位的矩陣。盡管可以使用標準移位寄存器實施方式對CRC進行編碼和解碼,但對于高速總線,具有異或的并行方法可以是優選的。為了重用錯誤處理邏輯120中的CRC邏輯,針對最長幀大小(對于16傳輸幀,為208個位)定義CRC。不使用所有208個位的任何幀只需將所有未使用的位設置為O。基本CRC算法的一個實施例對CRC校驗位進行編碼,并按照幀協議跨總線傳輸它們。總線另一端的校驗器(例如,在圖I的集線器設備104中)接收數據之后,計算新的或重新生成的一組CRC校驗位。然后比較(進行“異或”運算)接收的CRC校驗位和重新生成的CRC校驗位以形成校驗子向量。如果校驗子是逐位O向量,則假設在數據傳輸中沒有發生錯誤。任何非O校驗子都指示發生錯誤。與標準CRC—樣,這種實施方式不支持通過檢查校驗子實現直接錯誤隔離。當圖I的集線器設備104檢測到下游CRC錯誤時,它將忽略下游幀的所有內容,設置適當的FIR位,并轉發故障CRC,然后進入錯誤恢復狀態(如果被啟用)。圖I的計數器112包括用于每個接收器鏈路的可配置計數器以計算CRC錯誤率。圖I的計數器112還可以包括用于每個信號通道的錯誤計數器,所述信號通道記錄每個已分析的CRC校驗子的結果。圖I的錯誤處理邏輯120中的錯誤率邏輯針對每個運行時、存儲器信道幀遞增計時器,并且還對正在使用的計數器112中的任何檢測到的無害CRC錯誤進行計數。以類似于下游實例說明的方式,校驗子處理邏輯122分析每個故障CRC校驗子以確定通過所述邏輯通信的可能故障通道,方法是對這些可能出現故障的通道進行投票。CRC足夠強大以便針對幀中的所有單個位錯誤唯一標識故障通道,并且在隨機通道故障期間針對統計上顯著的故障正確標識故障通道。因為CRC錯誤糾正并不足夠強大以保證完全隨機通道錯誤的唯一錯誤檢測,所以可能標識多個故障候選者。每次將通道標識為故障候選者(因為針對通道生成投票)時,計數器112中的通道錯誤計數器都會遞增。當存儲器信道106正常運行時,將定期清除計數器112中的所有通道錯誤計數器,因為沒有超過CRC錯誤閾值。當存儲器信道106出現無法通過重新初始化修復的間發錯誤時,計數器112中的CRC錯誤計數器將超過其可配置的閾值。此時,計數器112中的所有通道錯誤計數器都將凍結,并將在寄存器114中設置FIR位以請求關注。校驗子處理邏輯122可以通過讀取計數器112中的通道錯誤計數器并判定應修復哪個通道(如果有)而為關注請求服務。盡管可以針對每個CRC錯誤標識多個通道故障候選者,但是當錯誤計數器累積足夠的CRC校驗子分析結果以超過閾值時,將具有最常出現故·障的通道的清晰統計指示。如果備用通道可用于修復所標識的故障,則處理系統102可以發出停用故障通道的命令。這會將間發故障變成硬故障,此硬故障可以通過由存儲器控制器110和/或集線器設備104自動啟動的后續重新初始化和修復序列來檢測和修復。在一個示例性實施例中,信道106中的每個接收器還在寄存器114中包括專用陷阱寄存器以記錄一個故障CRC校驗子的結果。所述陷阱寄存器可以被配置為記錄檢測到的第一 CRC錯誤或持續更新為所檢測的最新CRC錯誤。當捕獲新的錯誤時,在所述陷阱寄存器中設置有效位,當處理系統102讀取所述陷阱寄存器時,將自動重置此位。在一個示例性實施例中,如果投票未將一個通道與其他通道顯著隔離,則選擇并修復通道之一。然后監視新錯誤率。如果在修復之后新錯誤率沒有顯著(例如,在閾值內)好于先前的錯誤率,則放棄(取消)第一修復而選擇并修復另一個通道。這種修復和放棄的處理可以一直繼續,直到新錯誤率顯著好于先前的錯誤率。在一個示例性實施例中,如果允許多個通道修復,則從主要競爭者中選擇多個通道以便修復。通過這種方式,可以執行多個修復。圖5不出了使用在此描述的信道CRC的一個實施例的不例性上游8傳輸巾貞。針對8傳輸幀格式連同其CRC和錯誤校驗位數,按如下方式描述上游CRC。此代碼旨在用于20通道X8拍幀格式。它可以檢測任何通道故障、任何傳輸故障(傳輸故障從代碼中的逃逸概率為2'k'k (-16))以及多達4位隨機錯誤。在一個示例性實施例中,上游CRC多項式為!gUkl+x+xS+xS+xT+xWw+xH+x15+x16。這是具有四個連續0(除了其他O之外)的BCH代碼。因此,它的最小距離為5。下游格式的代碼的多項式通過將上游格式的代碼乘以1+x2獲得。圖5中所示的CRC位位置為144、145、146、147、148、149、150、151、152、153、154、155、156、157、158 和 159。示例性CRC算法包括對CRC校驗位進行編碼,并按照幀協議跨總線傳輸它們。總線另一端的校驗器(例如,在圖I的集線器設備104中)接收數據之后,計算新的或重新生成的一組CRC校驗位。然后比較(進行“異或”運算)接收的CRC校驗位和重新生成的CRC校驗位以形成校驗子向量。如果校驗子是逐位O向量,則假設在數據傳輸中沒有發生錯誤。任何非O校驗子都指示發生錯誤。與大多數CRC —樣,這種實施方式不支持通過檢查校驗子實現直接錯誤隔離。盡管此說明專注于具有特定數量的通道和傳輸的下游和上游幀,以及用于多達特定數量的單個位錯誤、通道錯誤和潛在傳輸錯誤的錯誤檢測代碼,但可以設計用于其他參數的錯誤檢測代碼。在此描述的技術可以應用于采用錯誤檢測代碼的各種通信總線,并且不限于存儲器系統應用。 在一個示例性實施例中,集線器設備104可以通過多點或點到點總線結構(其可以進一步包括到一個或多個附加集線器設備104的級聯連接)連接到圖I的存儲器控制器110。存儲器控制器110通過總線結構(例如存儲器總線)將存儲器訪問請求傳輸到選定的集線器設備(多個)104。響應于接收存儲器訪問請求,集線器設備104轉換存儲器訪問請求以控制存儲器設備109以便存儲來自集線器設備104的寫入數據或將讀取數據提供給集線器設備104。讀取數據被編碼為一個或多個通信幀并通過存儲器總線(多條)傳輸到存儲器控制器110。 在備選示例性實施例中,存儲器控制器(多個)110可以與一個或多個處理器芯片和支持邏輯集成在一起、封裝在分離芯片(通常稱為“北橋”芯片)中、包括在具有一個或多個處理器和/或支持邏輯的多芯片載體中,或以最匹配應用/環境的各種備選形式封裝。這些解決方案中的任意一個可以采用也可以不采用一個或多個低/高速鏈路以連接到一個或多個集線器芯片和/或存儲器設備。圖6示出了使用校驗子分析檢測故障總線通道的示例性過程600。在方塊602,圖I的校驗子處理邏輯122接收在總線(例如圖I的上游總線118)上傳輸的多個幀的校驗子,其中每個幀包括按通道的多個位傳輸,如圖2-5中所示。所述校驗子可以是來自總線接口設備(例如存儲器控制器110或集線器設備104)的捕獲值。可以在圖I的寄存器114中捕獲校驗子,并且當錯誤檢測邏輯120判定計數器112超過閾值時,設置故障指示以啟動更詳細的校驗子分析以便隔離錯誤條件。在方塊604,在假設每個通道是故障通道的情況下,校驗子處理邏輯122將校驗子解碼為錯誤向量。所述錯誤向量在組合中選擇造成錯誤條件的特定校驗子位。因為相同的校驗子位可以包含在多個錯誤向量計算中,所以不太可能針對所有可能的錯誤組合將錯誤隔離到單個通道。在方塊606,響應于對來自各幀之一的錯誤向量中具有單個位故障的一個且僅有一個通道進行解碼,校驗子處理邏輯122標識故障通道。校驗子處理邏輯122還可以判定校驗子的驗證位是否與從校驗子解碼的錯誤向量一致,其中所述驗證位在錯誤檢測代碼中提供某種程度的冗余。所述驗證位可以與所述錯誤向量組合使用以便為故障通道投票。響應于對具有單個位故障的一個且僅有一個通道進行解碼,校驗子處理邏輯122可以清除所有其他通道的投票以確保單個位故障的100%錯誤標識準確性。在方塊608,響應于判定存在多個單個位故障,校驗子處理邏輯122標識故障通道,其中所述錯誤向量使用在此描述的投票過程的一個實施例一致地指示跨多個幀的錯誤。在一個實施例中,校驗子處理邏輯122比較所接收的投票數以判定是否一致指示錯誤。所述比較可以包括計算具有較高數量投票的通道與具有較低數量投票的通道的比率,然后相對于比率閾值比較所計算的比率。例如,如果某通道指示故障發生頻率是其他通道的四倍或更多倍,則可以將此通道聲明為故障通道。可以在分析預定數量的校驗子之后執行所述比較以確保使用在統計上顯著的樣本集。在一個示例性實施例中,在標識故障通道并啟動糾正操作(例如重置總線接口設備、使用備用通道或重新訓練總線通道)之后重置運行計數器。在另一個示例性實施例中,在規定時間量之后重置運行計數器。在此使用的術語只是為了描述特定的實施例并且并非旨在作為本發明的限制。如在此所使用的,單數形式“一”、“一個”和“該”旨在同樣包括復數形式,除非上下文明確地另有所指。還將理解,當在此說明書中使用時,術語“包括”和/或“包含”指定了聲明的特性、整數、步驟、操作、元素和/或組件的存在,但是并不排除一個或多個其他特性、整數、步驟、操作、元素、組件和/或其組的存在或增加。此外,將理解,術語第一、第二等的使用并非表示任何順序或重要性,而是使用術語第一、第二等來區分一個元素與另一個元素。下面權利要求中的對應結構、材料、操作以及所有裝置或步驟和功能元件的等同替換,旨在包括任何用于與在權利要求中具體指出的其他元件相組合地執行該功能的結構、材料或操作。出于示例和說明目的給出了對本發明的描述,但所述描述并非旨在是窮舉 的或是將本發明限于所公開的形式。在不偏離本發明的范圍和精神的情況下,對于本領域的技術人員來說許多修改和變化都將是顯而易見的。實施例的選擇和描述是為了最佳地解釋本發明的原理、實際應用,并且當適合于所構想的特定使用時,使得本領域的其他技術人員能夠理解本發明的具有各種修改的各種實施例。本發明的功能可以以軟件、固件、硬件或它們的某種組合實現。如本領域的技術人員將理解的,本發明的各方面可以體現為系統、方法或計算機程序產品。因此,本發明的各方面可以采取完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合了軟件和硬件方面的實施例的形式,所有這些實施例在此通常可以稱為“電路”、“模塊”或“系統”。此外,本發明的各方面可以采取體現在一個或多個計算機可讀介質(在介質中包含計算機可讀程序代碼)中的計算機程序產品的形式。可以使用一個或多個計算機可讀介質的任意組合來存儲指令以便執行圖I的校驗子處理邏輯122。所述計算機可讀介質可以是計算機可讀信號介質或計算機可讀存儲介質。計算機可讀存儲介質例如可以是(但不限于)電、磁、光、電磁、紅外線或半導體系統、裝置或設備或上述任意適合的組合。所述計算機可讀存儲介質的更具體的實例(非窮舉列表)將包括以下項具有一條或多條線的電連接、便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設備、磁存儲設備或上述任意適合的組合。在本文檔的上下文中,計算機可讀存儲介質可以是任何能夠包含或存儲由指令執行系統、裝置或設備使用或與指令執行系統、裝置或設備結合的程序的有形介質。計算機可讀信號介質可以包括其中包含計算機可讀程序代碼(例如,在基帶中或作為載波的一部分)的傳播數據信號。此類傳播信號可以采取各種形式中的任一種,包括但不限于電磁、光或其中任意適合的組合。計算機可讀信號介質可以是任何不屬于計算機可讀存儲介質并且能夠傳送、傳播或傳輸由指令執行系統、裝置或設備使用或與指令執行系統、裝置或設備結合的程序的計算機可讀介質。
可以使用任何適當的介質(包括但不限于無線、線纜、光纜、RF等或上述任意適合的組合)來傳輸包含在計算機可讀介質中的程序代碼。用于執行本發明的各方面的操作的計算機程序代碼可以使用包含一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如Java、Smalltalk、C++之類的面向對象的編程語言以及諸如“C”編程語言或類似的編程語言之類的常規過程編程語言。所述程序代碼可以完全在用戶計算機上執行、部分地在用戶計算機上執行、作為獨立的軟件包、部分地在用戶計算機上并部分地在遠程計算機上執行,或者完全在遠程計算機或服務器上執行。在后者的情況中,遠程計算機可以通過包括局域網(LAN)或廣域網(WAN)的任何類型網絡與用戶的計算機相連,或者可以與外部計算機進行連接(例如,使用因特網服務提供商通過因特網連接)。將參考根據本發明的實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或方塊圖對本發明的各方面進行描述。將理解,所述流程圖和/或方塊圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機程序指令來實現。這些計算機程序指令可以被提供給通用計算機、專用計算機或其他可編程數據處理裝置的處理器以產生機 器,以便通過所述計算機或其他可編程數據處理裝置的處理器執行的指令產生用于實現在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計算機程序指令也可以被存儲在能夠引導計算機、其他可編程數據處理裝置或其他設備以特定方式執行功能的計算機可讀介質中,以便存儲在所述計算機可讀介質中的所述指令產生一件包括實現在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令的制品。所述計算機程序指令還可被加載到計算機、其他可編程數據處理裝置或其他設備,以導致在所述計算機、其他可編程裝置或其他設備上執行一系列操作步驟以產生計算機實現的過程,從而在所述計算機或其他可編程裝置上執行的所述指令提供用于實現在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。附圖中的流程圖和方塊圖示出了根據本發明的各種實施例的系統、方法和計算機程序產品的可能實施方式的架構、功能和操作。在此方面,所述流程圖或方塊圖中的每個方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實現指定的邏輯功能(多個)的一個或多個可執行指令。還應指出,在某些備選實施方式中,在方塊中說明的功能可以不按圖中說明的順序發生。例如,示為連續的兩個方塊可以實際上被基本同時地執行,或者某些時候,取決于所涉及的功能,可以以相反的順序執行所述方塊。還將指出,所述方塊圖和/或流程圖的每個方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執行指定功能或操作的基于專用硬件的系統或專用硬件和計算機指令的組合來實現。在此示出的附圖只是實例。在此描述的這些圖或步驟(或操作)可以存在許多變型而不偏離本發明的精神。例如,可以按不同的順序執行所述步驟,或者可以添加、刪除或修改步驟。所有這些變型都被視為要求保護的本發明的一部分。
權利要求
1.一種用于檢測總線故障的計算機實現的方法,所述方法包括 接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護; 針對所述校驗子中的每個校驗子,執行 針對所述通道中的每個通道,執行 在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果; 判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票;以及響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。
2.根據權利要求I的方法,其中所述解碼包括針對所述通道生成候選錯誤向量,以及響應于所述候選錯誤向量指示單個位錯誤而消除通過解碼所述校驗子生成的其他通道的投票。
3.根據權利要求I的方法,其中所述故障通道的特征在于,其具有的投票與所述總線上的任何其他通道至少一樣多。
4.根據權利要求I的方法,其中所述通道中的每個通道具有存儲值的關聯運行計數器,所述投票包括遞增與該通道關聯的運行計數器,并且所述標識包括比較所述運行計數器中的值以選擇所述故障通道。
5.根據權利要求4的方法,其中所述比較計算較高運行計數器值與較低運行計數器值的比率,并且所述標識進一步包括相對于比率閾值而比較所計算的比率以選擇所述故障通道。
6.根據權利要求I的方法,其中在接收到指定數量的所述校驗子之后執行所述標識。
7.根據權利要求I的方法,其中針對所接收的校驗子的子集執行所述解碼并且所述解碼包括生成候選錯誤向量,其中所述解碼利用所接收的并且不在該子集中的校驗子來交叉檢驗所述候選錯誤向量。
8.根據權利要求I的方法,其中響應于標識所述故障通道和啟動糾正操作而重置所述投票。
9.根據權利要求I的方法,其中在指定時間量之后重置所述投票。
10.一種用于檢測總線故障的系統,所述系統包括 總線接口設備,被配置為接收和捕獲已在總線上傳輸的多個幀的校驗子,每個幀包括按通道的多個位傳輸;以及 校驗子處理邏輯,其與所述總線接口設備通信,所述校驗子處理邏輯被配置為執行以下操作 接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護; 針對所述校驗子中的每個校驗子,執行 針對所述通道中的每個通道,執行 在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果; 判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票;以及響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。
11.根據權利要求10的系統,其中所述解碼包括針對所述通道生成候選錯誤向量,以及響應于所述候選錯誤向量指示單個位錯誤而消除通過解碼所述校驗子生成的其他通道的投票。
12.根據權利要求10的系統,其中所述故障通道的特征在于,其具有的投票與所述總線上的任何其他通道至少一樣多。
13.根據權利要求10的系統,其中所述系統還包括與所述通道關聯的多個運行計數器以便存儲值,所述投票包括遞增與該通道關聯的運行計數器,并且所述標識包括比較所述運行計數器中的值以選擇所述故障通道。
14.根據權利要求13的系統,其中所述比較計算較高運行計數器值與較低運行計數器值的比率,并且所述標識進一步包括相對于比率閾值而比較所計算的比率以選擇所述故障通道。
15.根據權利要求10的系統,其中在接收到指定數量的所述校驗子之后執行所述標識。
16.根據權利要求10的系統,其中針對所接收的校驗子的子集執行所述解碼并且所述解碼包括生成候選錯誤向量,其中所述解碼利用所接收的并且不在該子集中的校驗子來交叉檢驗所述候選錯誤向量。
17.根據權利要求10的系統,其中響應于標識所述故障通道和啟動糾正操作而重置所述投票。
18.根據權利要求10的系統,其中在指定時間量之后重置所述投票。
19.根據權利要求10的系統,其中所述總線接口設備是存儲器系統中的集線器設備。
20.根據權利要求10的系統,其中所述總線接口設備是存儲器系統中的存儲器控制器。
21.一種用于檢測總線故障的計算機程序產品,所述計算機程序產品包括 計算機可讀存儲介質,其可由處理電路讀取并存儲指令以便由所述處理電路執行以實現一種方法,所述方法包括 接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護; 針對所述校驗子中的每個校驗子,執行 針對所述通道中的每個通道,執行 在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果;判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票;以及響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。
22.根據權利要求21的計算機程序產品,其中所述解碼包括針對所述通道生成候選錯誤向量,以及響應于所述候選錯誤向量指示單個位錯誤而消除通過解碼所述校驗子生成的其他通道的投票 。
全文摘要
使用校驗子分析的故障總線通道檢測包括一種方法,包括接收錯誤檢測代碼的多個校驗子,所述錯誤檢測代碼與已在總線上傳輸的多個幀關聯,所述總線包括多個通道并由所述錯誤檢測代碼來保護。所述方法包括對于所述校驗子中的每個校驗子,針對所述通道中的每個通道而執行以下操作在假設該通道是故障通道的情況下對該校驗子進行解碼,所述解碼輸出解碼結果;判定所述解碼結果是否是有效解碼;以及響應于判定所述解碼結果是有效解碼而為所述通道投票。然后響應于所述投票而標識故障通道,所述故障通道的特征在于,其具有的投票多于所述總線上的至少一個其他通道。
文檔編號H03M13/09GK102893262SQ201180024673
公開日2013年1月23日 申請日期2011年6月8日 優先權日2010年6月24日
發明者L·拉斯特拉斯-莫塔諾, P·J·米尼, K·高爾 申請人:國際商業機器公司