欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

存儲系統(tǒng)中的錯(cuò)誤糾正和檢測的系統(tǒng)和方法

文檔序號:6477156閱讀:1267來源:國知局
專利名稱:存儲系統(tǒng)中的錯(cuò)誤糾正和檢測的系統(tǒng)和方法
存儲系統(tǒng)中的錯(cuò)誤糾正和檢測的系統(tǒng)和方法
背景技術(shù)
本發(fā)明一般地涉及計(jì)算機(jī)存儲器,具體地說,本發(fā)明涉及RAID存儲 系統(tǒng)中的4^檢測和糾正。
計(jì)算機(jī)系統(tǒng)通常需要大量高速RAM (隨才;i^取存儲器),以在計(jì)算 機(jī)接通電源和運(yùn)行時(shí)保存諸如操作系統(tǒng)軟件、程序和其他數(shù)據(jù)之類的信息。 此信息一般采用二進(jìn)制,由稱為數(shù)據(jù)位的1和0模式組成。所述數(shù)據(jù)位經(jīng) 常在更高級別上進(jìn)行分組和組織。例如, 一個(gè)字節(jié)通常由8個(gè)位組成,盡 管當(dāng)字節(jié)中還包括識別和/或糾正錯(cuò)誤時(shí)使用的信息時(shí),所述字節(jié)還可包含 附加位(例如,9、 10等)。該二進(jìn)制信息一般在計(jì)算機(jī)系統(tǒng)接通電源和 初始程序加載(IPL)時(shí),^皮從諸如硬盤驅(qū)動器(HDD)之類的非易失性 存儲裝置(NVS)加載到RAM。在正常計(jì)算機(jī)操作期間,還從NVS分頁 出數(shù)據(jù)以及將數(shù)據(jù)分頁到NVS。 一般而言,計(jì)算機(jī)系統(tǒng)所用的所有程序和 信息無法裝入較昂貴的小型動態(tài)RAM (DRAM)中,即使能裝入,也會 在計(jì)算機(jī)系統(tǒng)斷電時(shí)丟失數(shù)據(jù)。目前,通常使用大量HDD來構(gòu)建NVS系 統(tǒng)。
計(jì)算機(jī)RAM經(jīng)常被設(shè)計(jì)為可插拔的子系統(tǒng),后者通常采用模塊形式, 如此可根據(jù)每個(gè)系統(tǒng)和應(yīng)用的特定存儲要求,不斷將更多的RAM添加到 每個(gè)計(jì)算機(jī)??s略詞"DIMM"表示雙列直插存儲器模塊,這可能是目前 在用的最流行的存儲器模塊。DIMM是包括一個(gè)或多個(gè)存儲器件的薄型的 矩形卡,并且還可包括一個(gè)或多個(gè)寄存器、緩沖器、集線器裝置和/或非易 失性裝置(例如,可擦寫可編程只讀存儲器或"EPROM"),以及各種 無源器件(例如,電阻器和電容器),它們都安裝到卡。DIMM通常采用 需要定期刷新以防止其中所存儲的數(shù)據(jù)丟失的動態(tài)存儲芯片或DRAM。 DRAM芯片最初為異步器件,但是,現(xiàn)在的芯片,同步DRAM ( SDRAM)(例如,單倍數(shù)據(jù)速率或"SDR"、雙倍數(shù)據(jù)速率或"DDR" 、 DDR2、 DDR3等)具有同步接口來提高性能。DDR器件通常采用預(yù)取以及其他提 升速度的技術(shù),以提高存儲器帶寬并降低延遲。例如,DDR3具有為8的 標(biāo)準(zhǔn)突發(fā)長度。
隨著計(jì)算機(jī)系統(tǒng)功能的日益強(qiáng)大,存儲器件密度也在持續(xù)增大。目前 單個(gè)計(jì)算機(jī)的RAM容量一般包含數(shù)百兆的位。不幸地,單個(gè)RAM器件 的一小部分發(fā)生問題就可導(dǎo)致整個(gè)計(jì)算機(jī)系統(tǒng)出現(xiàn)故障。當(dāng)發(fā)生存儲器錯(cuò) 誤(其可能是"硬,,(重復(fù)發(fā)生)故障或軟( 一次或間歇性)故障)時(shí), 這些故障可能為單個(gè)單元故障、多位故障、整體芯片故障或整體DIMM故 障,并且部分或全部系統(tǒng)RAM在其被修復(fù)之前可能無法使用。修復(fù)時(shí)間 可能為數(shù)小時(shí),甚至數(shù)日,這會對依賴于計(jì)算機(jī)系統(tǒng)的業(yè)務(wù)造成重大影響。
隨著現(xiàn)代計(jì)算機(jī)中內(nèi)存存儲容量的不斷增加,在正常運(yùn)行期間遇到 RAM故障的幾率也在持續(xù)增加。
在過去數(shù)十年來,檢測和糾正位錯(cuò)誤的技術(shù)已經(jīng)發(fā)展為相當(dāng)精密的科 技。最基本的檢測技術(shù)可能就是奇校驗(yàn)或偶校驗(yàn)的出現(xiàn),其中數(shù)據(jù)字中的 數(shù)字"1"或"0"被一起"異或"(XOR)來生成校驗(yàn)位。例如,包含偶 數(shù)個(gè)'T,的數(shù)據(jù)字的校驗(yàn)位為0,以及包含奇數(shù)個(gè)"1"的數(shù)據(jù)字的校驗(yàn) 位為1,此校驗(yàn)位數(shù)據(jù)被附加到所存儲的存儲器數(shù)據(jù)。如果在讀取操作期 間數(shù)據(jù)字中存在一個(gè)錯(cuò)誤,則可以通過從數(shù)據(jù)重新生成校驗(yàn),然后檢查該 校驗(yàn)是否與已存儲的(原始生成的)校驗(yàn)匹配來檢測此錯(cuò)誤。
Richard Hamming發(fā)現(xiàn),可以將校驗(yàn)技術(shù)擴(kuò)展為不僅檢測錯(cuò)誤,而且 還通過將XOR字段(即,糾錯(cuò)碼(ECC)字段)附加到每個(gè)代碼字來糾 正錯(cuò)誤。ECC字段是數(shù)據(jù)字中進(jìn)行"異或"的不同位的組合,使得,(對 數(shù)據(jù)字的細(xì)孩t更改)可以被容易地檢測、鎖定和校正。可以檢測并糾正的 4t^數(shù)與附加到數(shù)據(jù)字的ECC字段的長度直接相關(guān)。所述纟支術(shù)包括確保 有效數(shù)據(jù)字與代碼字組合之間的最小分隔距離。要檢測和糾正的g數(shù)越 多,代碼字就越長,從而使有效代碼字之間的距離更長。有效代碼字之間 的最短距離4皮稱為最短漢明距離。據(jù)恢復(fù)為原始/正確的形式,或用于存儲介質(zhì)中由于器件的物理特性而造成
的有限可能的數(shù)據(jù)錯(cuò)誤。存儲器件通常將數(shù)據(jù)存儲為代表RAM中的1或 0的電壓電平并且同時(shí)受器件故障以及由高能宇宙射線和a粒子造成的狀 態(tài)更改的影響。類似地,將1和0存儲為磁性表面上的磁場的HDD也受 磁介質(zhì)中的缺陷以及可能造成數(shù)據(jù)模式從原始存儲狀態(tài)更改的其他機(jī)制的 影響。
在上世紀(jì)八十年代,RAM存儲器件大小首次達(dá)到了受導(dǎo)致存儲器位 翻轉(zhuǎn)的a粒子撞擊和宇宙射線影響的程度。這些粒子不會損壞器件,但是 可造成存儲器錯(cuò)誤。這些錯(cuò)誤稱為軟錯(cuò)誤,并且經(jīng)常只影響一個(gè)位。 一旦 被識別,便可通過簡單地重寫存儲單元來糾正所述位錯(cuò)誤。軟錯(cuò)誤的頻率 已增加到對總體系統(tǒng)可靠性具有顯著影響的程度。
如由Hamming所提出的存儲器ECC使用位于數(shù)據(jù)字中各個(gè)位位置上 的校驗(yàn)碼的組合來檢測和糾正錯(cuò)誤。每次將數(shù)據(jù)字寫入存儲器時(shí),都需要 生成新的ECC字并將這些字與數(shù)據(jù)一起存儲,由此在從存儲器讀出的數(shù) 據(jù)包括的ECC碼與通過所讀取的lt據(jù)生成的最新計(jì)算的ECC碼不匹配 時(shí),允許檢測和糾正該數(shù)據(jù)。
最初ECC應(yīng)用于計(jì)算機(jī)系統(tǒng)中的RAM以提供超過先前手段所允許的 容錯(cuò)。部署可實(shí)現(xiàn)雙位錯(cuò)誤檢測(DED)和單位錯(cuò)誤糾正(SEC)的二進(jìn) 制ECC碼。該SEC/DED ECC還允許透明地恢復(fù)RAM中的單位硬錯(cuò)誤。
還開發(fā)了清理(scrubbing)例程來幫助減少存儲器錯(cuò)誤,其方式為通 過互補(bǔ)/重新互補(bǔ)過程查找軟錯(cuò)誤以便可以檢測和糾正這些軟錯(cuò)誤。
某些存儲裝置制造商使用諸如Reed-Solomon碼之類的高級ECC技術(shù) 來糾正整體存儲芯片故障。某些存儲系統(tǒng)設(shè)計(jì)還包括可自動引入存儲系統(tǒng) 來替代故障芯片的標(biāo)準(zhǔn)保留存儲芯片(例如"備用"芯片)。這些改進(jìn)技 術(shù)極大地提高了 RAM可靠性,但是由于存儲器大小不斷增加并且客戶對 可靠性的期望也在增長,所以需要進(jìn)一步的提升。系統(tǒng)需要容忍整個(gè)DIMM的故障并且在系統(tǒng)運(yùn)行的同時(shí)更換該DIMM。此外,必須考慮影響 一個(gè)或多個(gè)DIMM與存儲控制器/嵌入式處理器間的連接之間的單點(diǎn)故障 的其他故障模式。例如,存儲控制器和存儲器件(多個(gè))間的某些連接可 包括一個(gè)或多個(gè)中間緩沖器,后者可能在存儲控制器外部并位于DIMM之 上或之外,但是,當(dāng)出現(xiàn)故障時(shí),所述中間緩沖器可能表現(xiàn)為單個(gè)DIMM 故障、整體DIMM故障或范圍更廣的存儲系統(tǒng)故障的一部分。
雖然明顯需要使用更高級的糾錯(cuò)技術(shù)來提高計(jì)算機(jī)RAM的可靠性
(也稱為"容錯(cuò)度"),但是這種嘗試因?yàn)闀捎玫目蛻舸鎯ζ鳌⑿阅堋?空間和熱度等產(chǎn)生影響而受阻。通過包括數(shù)據(jù)的額外副本(例如"鏡像") 來使用冗余或使用更復(fù)雜的錯(cuò)誤編碼技術(shù)會增加成本,加大設(shè)計(jì)的復(fù)雜性, 并且會影響另一關(guān)鍵的業(yè)務(wù)度量上市時(shí)間。例如,多家存儲裝置制造公 司已將簡單的存儲器鏡像技術(shù)作為一項(xiàng)功能推出。使用存儲器鏡像可使系 統(tǒng)從更嚴(yán)重的存儲故障中恢復(fù),但其接受度還很低,因?yàn)檫@需要在設(shè)計(jì)中 已存在的基本SEC/DEC ECC之上使存儲器大小加倍,這樣通常只留給客 戶不到已安裝RAM的50%來用于系統(tǒng)。
已經(jīng)開始使用ECC技術(shù)來提高存儲系統(tǒng)的可用性,其方式為糾正 HDD故障,以使客戶免受因HDD故障造成的數(shù)據(jù)丟失或數(shù)據(jù)完整性問題, 同時(shí)進(jìn)一 步保護(hù)客戶免受較小的故障模式的影響。
升了 HDD對計(jì)算機(jī)RAM的可用性。在許多方面,使用RAID技術(shù)更容 易從HDD故障中恢復(fù),因?yàn)榕cRAM相比,在HDD中更容易隔離故障。 HDD—般具有諸如ECC之類的嵌入式校驗(yàn)器來檢測壞扇區(qū)。此外,循環(huán) 冗余校驗(yàn)(CRC)和縱向冗余校驗(yàn)(LRC)可以嵌入HDD電子裝置或盤 適配器中,它們也可以是由高級代碼和應(yīng)用用于檢測HDD錯(cuò)誤的校驗(yàn)器。 CRC和LRC與數(shù)據(jù)同時(shí)被寫入以幫助檢測數(shù)據(jù)錯(cuò)誤。CRC和LRC是用 于從所述數(shù)據(jù)產(chǎn)生小型的基本唯一的位模式的散列函數(shù)。當(dāng)從HDD讀取 數(shù)據(jù)時(shí),將重新生成校驗(yàn)和并將其與盤中存儲的校驗(yàn)和進(jìn)行比較。簽名必 須完全匹配以確保從盤上編碼的磁模式(magnetic pattern )檢索的數(shù)據(jù)與原始寫入盤的數(shù)據(jù)相同。
已開發(fā)了 RAID系統(tǒng)來提高性能和/或增加盤存儲系統(tǒng)的可用性。 RAID將數(shù)據(jù)分布在若干獨(dú)立HDD間。已開發(fā)許多不同的RAID方案,每 個(gè)方案都具有不同的特性以及與其關(guān)聯(lián)的各種優(yōu)缺點(diǎn)。其中性能、可用性, 以及利用率/效率(實(shí)際保存客戶數(shù)據(jù)的盤的百分比)可能是最重要的因素。 必須仔細(xì)考慮與各種方案關(guān)聯(lián)的折衷,因?yàn)橐环N屬性的改進(jìn)通常會影響另 一屬性。
RAID-0是對數(shù)據(jù)進(jìn)行分條,使數(shù)據(jù)分布在多個(gè)HDD上以提高性能。 RAID-1是數(shù)據(jù)的鏡像,將數(shù)據(jù)的兩個(gè)完全相同的副本置于兩個(gè)不同HDD 上以提高可用性并防止數(shù)據(jù)丟失。某些RAID方案可以結(jié)合使用以產(chǎn)生綜 合優(yōu)勢。例如,RAID-O在陣列中的多個(gè)HDD上同時(shí)執(zhí)行數(shù)據(jù)分條和鏡像
以同時(shí)提高性能和可用性。
RAID-3、 RAID-4和RAID-5非常類似,因?yàn)樗鼈兪褂脝蝹€(gè)"異或" 校驗(yàn)和來糾正單個(gè)數(shù)據(jù)元素錯(cuò)誤。RAID-3是具有專用校驗(yàn)HDD的字節(jié)級 分條。RAID-4使用具有專用校驗(yàn)HDD的塊級分條。RAID-5是與RAID-4 類似的塊級分條,只是執(zhí)行分布式校驗(yàn)。不再〗吏用專用校驗(yàn)HDD。校驗(yàn)基 本在所有HDD間均勻地分布,從而避免了專用校驗(yàn)HDD成為性能瓶頸。 RAID-3、 RAID-4和RAID-5的關(guān)鍵屬性是它們能夠在通過某些獨(dú)立手段 鎖定錯(cuò)誤位置時(shí)糾正單個(gè)數(shù)據(jù)元素錯(cuò)誤。
對于RAID-6,沒有被廣泛接受的統(tǒng)一業(yè)界定義。 一般而言,RAID-6 指具有雙重校驗(yàn)和的塊級或字節(jié)級分條。RAID-6的重要屬性是它允許在 通過某些獨(dú)立手段鎖定錯(cuò)誤時(shí)糾正最多兩個(gè)數(shù)據(jù)元素錯(cuò)誤。它還可以在不 知道故障位置的情況下鎖定和糾正單個(gè)錯(cuò)誤。
圖l示出了由集成處理器芯片100構(gòu)成的現(xiàn)代系統(tǒng),其包含一個(gè)或多 個(gè)處理器元件和一個(gè)集成存儲控制器110。在圖l所示的配置中,多條獨(dú) 立的串接互連存儲器接口總線106在邏輯上聚集在一起共同運(yùn)行,以支持 更高帶寬上的單個(gè)獨(dú)立訪問請求,其中數(shù)據(jù)和錯(cuò)誤檢測/糾正信息在平行的 總線和關(guān)聯(lián)的器件間分布或"分條"。存儲控制器110與4條窄/高速點(diǎn)對
8點(diǎn)存儲器總線106相連,每條總線106將多個(gè)唯一的存儲控制器接口通道 之一與包括至少一個(gè)集線器裝置104和一個(gè)或多個(gè)存儲器件109的串接互 連存儲子系統(tǒng)103 (或存儲器才莫塊,例如DIMM)相連。某些系統(tǒng)進(jìn)一步 允許在存儲器總線106的子集分布于存儲子系統(tǒng)103時(shí)啟用操作。在這種 情況下, 一條或多條分布的存儲總線108可共同運(yùn)行以支持單個(gè)訪問請求。
圖2示出了具有串接的存儲器模塊103和單向總線106的存儲器結(jié)構(gòu)。 串接結(jié)構(gòu)中的存儲器模塊103內(nèi)的集線器裝置104所提供的功能之一是將 信號沿單向總線106發(fā)送到其他存儲器模塊103或存儲控制器110的重新 驅(qū)動功能。圖2包括存儲控制器110以及在兩條存儲器總線106 (具有24 線的下游存儲器總線和具有25線的上游存儲器總線)中的每條總線上,以 直接或串接的方式與存儲控制器110相連的四個(gè)存儲器才莫塊103。位于存 儲控制器110旁的存儲器模塊103直接與存儲控制器110相連。其他存儲 器模塊103以串接方式與存儲控制器110相連。盡管圖中未示出,但是存 儲控制器110可以集成到處理器100中,并且可以與多條存儲器總線106 相連,如圖1所示。
本領(lǐng)域需要改進(jìn)存儲系統(tǒng)中的故障檢測和糾正。希望存儲系統(tǒng)能夠免 于整體DIMM故障的影響以及能夠在系統(tǒng)運(yùn)行的同時(shí)更換DIMM。

發(fā)明內(nèi)容
因此,本發(fā)明在第一方面提供了一種存儲系統(tǒng),包括存儲控制器; 與所述存儲控制器以及多個(gè)存儲器件通信的多個(gè)存儲器模塊;以及機(jī)制, 所述機(jī)制用于檢測所述存儲器模塊之一的故障可能與另 一存儲器模塊上的 存儲器件故障同時(shí)發(fā)生,并且允許所述存儲系統(tǒng)在存在存儲器模塊故障和 存儲器件故障的情況下繼續(xù)未受阻礙地運(yùn)行。
優(yōu)選地,所述存儲器模塊包括一個(gè)或多個(gè)用于對所述存儲器模塊進(jìn)行 錯(cuò)誤檢測和糾正的存儲器件。
優(yōu)選地,所述存儲器模塊之一上的基本所有存儲器件都用于跨所述存 儲器模塊進(jìn)行錯(cuò)誤檢測和糾正。優(yōu)選地,所述檢測包括使用三角測量隔離存儲器模塊故障和存儲器件 故障。
優(yōu)選地,所述多個(gè)存儲器模塊包括經(jīng)由五個(gè)不同的通道與所述存儲控
制器通信的五個(gè)存儲器模塊,所紅個(gè)存儲器模塊包括四個(gè)存儲器模塊, 其具有用于所述存儲器模塊的錯(cuò)誤檢測和糾正的兩個(gè)存儲器件;以及一個(gè) 存儲器模塊,其具有用于跨所述四個(gè)存儲器模塊的錯(cuò)誤檢測和糾正的存儲 器件。
優(yōu)選地,所述機(jī)制使用應(yīng)用于跨所述多個(gè)存儲器模塊組織為行的所述 存儲器件的RAID-3糾錯(cuò)碼和應(yīng)用于跨單個(gè)存儲器模塊組織為列的所述存 儲器件的RAID-6糾錯(cuò)碼,其中只有一個(gè)數(shù)據(jù)元素在任意行和列之間共享。
優(yōu)選地,結(jié)合RAID-6糾錯(cuò)碼來使用偏移多重移動(offset multiple shift)以確保所述糾正不會產(chǎn)生行對齊錯(cuò)誤和變得無法檢測。
優(yōu)選地,所述存儲系統(tǒng)的機(jī)械封裝適于允許在系統(tǒng)運(yùn)行的同時(shí)更換所 述存儲器模塊之一。
優(yōu)選地,所述存儲系統(tǒng)的機(jī)械封裝適于允許在系統(tǒng)運(yùn)行的同時(shí)更換一
個(gè)或多個(gè)所述存儲器件。
優(yōu)選地,所述才幾制還檢測可能與存儲器件故障同時(shí)發(fā)生的影響存儲器 模塊與存儲控制器之間的通信的故障,并且所述機(jī)制還允許所述存儲系統(tǒng) 在影響所述存儲器模塊與所述存儲控制器之間的通信的故障和所述存儲器 件故障存在時(shí)未受阻礙地運(yùn)行。
在第二方面,提供了一種存儲控制器,包括到多個(gè)存儲器模塊的接 口,所述模塊與多個(gè)存儲器件通信;以及機(jī)制,所述機(jī)制用于檢測所述存 儲器模塊之一的故障可能與另 一存儲器模塊上的存儲器件故障同時(shí)發(fā)生, 并且允許存儲系統(tǒng)在存在存儲器模塊故障和存儲器件故障的情況下繼續(xù)未 受阻礙地運(yùn)行。
優(yōu)選地,所述存儲器模塊包括一個(gè)或多個(gè)用于對所述存儲器模塊進(jìn)行 g檢測和糾正的存儲器件。
優(yōu)選地,所述檢測包括使用三角測量隔離存儲器模塊故障和存儲器件故障。
優(yōu)選地,所述多個(gè)存儲器模塊包括經(jīng)由五個(gè)不同的通道與所述存儲控
制器通信的五個(gè)存儲器模塊,所述五個(gè)存儲器模塊包括四個(gè)存儲器模塊, 其具有用于所述存儲器模塊的錯(cuò)誤檢測和糾正的兩個(gè)存儲器件;以及一個(gè) 存儲器模塊,其具有用于跨所述四個(gè)存儲器模塊的錯(cuò)誤檢測和糾正的存儲 器件。
優(yōu)選地,所述機(jī)制使用應(yīng)用于跨所述多個(gè)存儲器模塊組織為行的所述 存儲器件的RAID-3糾錯(cuò)碼和應(yīng)用于跨單個(gè)存儲器模塊組織為列的所述存 儲器件的RAID-6糾錯(cuò)碼,其中只有一個(gè)數(shù)據(jù)元素在任意行和列之間共享。
優(yōu)選地,結(jié)合RAID-6糾錯(cuò)碼來使用偏移多重移動以確保所述糾正不 會產(chǎn)生行對齊錯(cuò)誤和變得無法檢測。
在第三方面,提供了一種檢測和糾正存儲系統(tǒng)中的錯(cuò)誤的方法,所述 方法包括檢測所述存儲系統(tǒng)中的一個(gè)或多個(gè)錯(cuò)誤,所述存儲系統(tǒng)包括具 有存儲器件的多個(gè)存儲器模塊,響應(yīng)于存儲命令而共同地訪問所述存儲器 模塊;使用三角測量識別錯(cuò)誤類型以將所述一個(gè)或多個(gè)錯(cuò)誤隔離到存儲器 件和存儲器模塊之一或兩者;使用水平地應(yīng)用于所述多個(gè)存儲器模塊中的 存儲器件的第一 ECC碼和垂直地應(yīng)用于一個(gè)存儲器模塊中的存儲器件的 第二 ECC碼來糾正所述一個(gè)或多個(gè)錯(cuò)誤,從而使所述存儲系統(tǒng)能夠在與 存儲器件故障同時(shí)發(fā)生的存儲器模塊故障的情況下未受阻礙地運(yùn)行。
優(yōu)選地,結(jié)合所述第二 ECC碼來使用偏移多重移動以確保所述糾正 不會產(chǎn)生行對齊錯(cuò)誤和變得無法檢測。
優(yōu)選地,在識別到故障存儲器模塊時(shí),將所述故障存儲器模塊的身份 用作所述第一ECC糾錯(cuò)碼中的參數(shù)以便提高所述存儲系統(tǒng)的可靠性。
優(yōu)選地,所述第一 ECC碼為RAID-3 ECC碼以及所述第二 ECC碼為 RAID陽6 ECC碼。
示例性實(shí)施例包括具有存儲控制器、多個(gè)存儲器模塊和機(jī)制的存儲系 統(tǒng)。所述存儲器模塊與所述存儲控制器以及多個(gè)存儲器件通信。所述機(jī)制 檢測到所述存儲器模塊之一的故障可能與另 一存儲器模塊上的存儲器件故障同時(shí)發(fā)生。所述機(jī)制允許所述存儲系統(tǒng)在存在存儲器模塊故障和存儲器 件故障的情況下繼續(xù)未受阻礙地運(yùn)行。
另 一示例性實(shí)施例包括具有到多個(gè)存儲器才莫塊的接口以及機(jī)制的存儲 控制器。所述存儲器模塊與多個(gè)存儲器件通信。所述機(jī)制檢測到所述存儲 器模塊之一的故障可能與另 一存儲器模塊上的存儲器件故障同時(shí)發(fā)生。所 述機(jī)制允許所述存儲系統(tǒng)在存在存儲器模塊故障和存儲器件故障的情況下 繼續(xù)未受阻礙地運(yùn)行。
其他示例性實(shí)施例包括一種檢測和糾正存儲系統(tǒng)中的錯(cuò)誤的方法。所 述方法包括檢測所述存儲系統(tǒng)中的 一個(gè)或多個(gè)錯(cuò)誤。所述存儲系統(tǒng)包括具 有存儲器件的多個(gè)存儲器模塊,響應(yīng)于存儲命令而共同地訪問所述存儲器 模塊。所述方法還包括使用三角測量識別錯(cuò)誤類型以將所述一個(gè)或多個(gè)錯(cuò) 誤隔離到存儲器件和存儲器模塊之一或兩者。使用水平地應(yīng)用于所述多個(gè)
存儲器模塊中的存儲器件的第一 ECC碼和垂直地應(yīng)用于一個(gè)存儲器模塊 中的存儲器件的第二 ECC碼來糾正所述一個(gè)或多個(gè)錯(cuò)誤。所述存儲系統(tǒng) 能夠在與存儲器件故障同時(shí)發(fā)生的存儲器模塊故障的情況下未受阻礙地運(yùn) 行。


現(xiàn)在參考附圖僅通過實(shí)例的方式描述本發(fā)明的優(yōu)選實(shí)施例,其中 圖l示出了具有單向總線的串接互連存儲系統(tǒng); 圖2示出了具有單向總線的串接互連存儲系統(tǒng);
圖3是本發(fā)明的示例性實(shí)施例所使用的示例性計(jì)算機(jī)存儲系統(tǒng)配置的 方塊圖4是糾正單個(gè)DRAM芯片錯(cuò)誤的邏輯視圖的方塊圖; 圖5是糾正整體DIMM故障的邏輯視圖的方塊圖; 圖6是糾正兩個(gè)DRAM芯片g的邏輯視圖的方塊圖; 圖7是糾正與次級DRAM芯片故障同時(shí)發(fā)生的整體DIMM故障中的 困難的邏輯視圖的方塊圖;圖8是糾正與次級DRAM芯片故障同時(shí)發(fā)生的整體DIMM故障中的 困難的邏輯視圖的方塊圖9a-9c示出了糾正與次級DRAM芯片故障同時(shí)發(fā)生的整體DIMM 故障的各種方式;
圖10是糾正與兩個(gè)額外DRAM器件故障同時(shí)發(fā)生的整體DIMM故 障的邏輯視圖的方塊圖lla-llc是使用本發(fā)明的示例性實(shí)施例執(zhí)行餘溪糾正和檢測的過程 的流程圖12示出了可用于執(zhí)行二維三角測量的示例性過程流;以及 圖13為列出由本發(fā)明的示例性實(shí)施例使用的錯(cuò)誤分類的表。
具體實(shí)施例方式
本發(fā)明的示例性實(shí)施例使用兩個(gè)獨(dú)立的代碼(一個(gè)水平應(yīng)用于RAM 的區(qū)段以及一個(gè)垂直應(yīng)用于RAM的區(qū)段)檢測和糾正與整體芯片(例如 DRAM)故障同時(shí)發(fā)生的整體DIMM故障。這允許同時(shí)修復(fù)故障DIMM, 并且即使存在次級芯片錯(cuò)誤,也允許計(jì)算機(jī)系統(tǒng)存儲器在修復(fù)期間繼續(xù)運(yùn) 行。這種處理次級芯片錯(cuò)誤的能力是新穎的并且非常重要,因?yàn)樵谕瓿?DIMM修復(fù)之前,存在出現(xiàn)次級錯(cuò)誤,尤其是存儲器軟錯(cuò)誤的有限可能性。
如本文所用,術(shù)語"同時(shí)發(fā)生"指兩個(gè)(或更多)4 模式的發(fā)生。 在一個(gè)實(shí)例中,發(fā)生可糾正的錯(cuò)誤并且稍后在修復(fù)該第一可糾正的錯(cuò)誤之 前,發(fā)生第二故障。所述第一和第二故障被稱為"同時(shí)發(fā)生"。修復(fù)時(shí)間 總是大于零,并且修復(fù)時(shí)間越長,越可能出現(xiàn)第二故障與第一故障同時(shí)發(fā) 生的情況。在識別出DIMM故障之前,示例性實(shí)施例已準(zhǔn)備好糾正DIMM 故障以及很有可能最多一個(gè)額外芯片錯(cuò)誤。 一旦識別了 DIMM故障,本發(fā) 明的示例性實(shí)施例可糾正DIMM故障以及在任何時(shí)間的一個(gè)額外芯片錯(cuò) 誤。盡管這里使用單詞"DIMM故障"或"存儲器模塊故障",但是本發(fā) 明示例性實(shí)施例所防止的故障模式通常包括將數(shù)據(jù)從DIMM傳送到存儲 控制器的通信介質(zhì)的故障。
13示例性實(shí)施例提供了包括RAM器件(例如DRAM、 SDRAM等)的 計(jì)算機(jī)存儲系統(tǒng)的透明恢復(fù)和完全在線同時(shí)DIMM修復(fù)。提供了與另 一存 儲芯片故障同時(shí)發(fā)生的整體存儲子系統(tǒng)(例如DIMM)故障的透明恢復(fù)。 示例性實(shí)施例使用計(jì)算機(jī)系統(tǒng)RAM的節(jié)點(diǎn)結(jié)構(gòu)配合ECC的新穎應(yīng)用,后 者使能斷開任何存儲器節(jié)點(diǎn)的電源而不會影響對RAM中存儲的必要系統(tǒng) 數(shù)據(jù)的訪問。這樣,計(jì)算機(jī)系統(tǒng)存儲器繼續(xù)未受阻礙地運(yùn)行,允許完全訪 問RAM中存儲的所有數(shù)據(jù),就像所有存儲器節(jié)點(diǎn)都存在,都接通電源并 且完全運(yùn)行那樣。如本文所用,術(shù)語"存儲器節(jié)點(diǎn),,指與單個(gè)邏輯列關(guān)聯(lián) 的所有DIMM的集合。邏輯列包含與條帶內(nèi)的單個(gè)符號位置關(guān)聯(lián)的符號。 在此處所述的示例性實(shí)施例中,它們是RAID-3ECC碼的單個(gè)符號。通常, 但并非總是,單個(gè)列與單個(gè)存儲器通道關(guān)聯(lián)。以本文所述的方式構(gòu)建節(jié)點(diǎn) 的重要性在于,為ECC碼提供了在從系統(tǒng)刪除節(jié)點(diǎn)時(shí)重新生成所有遺失 符號的能力。
在示例性實(shí)施例中,使用"雙倍數(shù)據(jù)速率3" (DDR3) SDRAM芯片。 使用DDR3 SDRAM芯片設(shè)計(jì)DIMM,DIMM上存儲的總數(shù)據(jù)量平均存儲 在每個(gè)芯片中。該示例性實(shí)施例還使用被組織為具有4個(gè)輸入/輸出引腳(例 如,4個(gè)器件(x4))的DDR3器件,其中每個(gè)訪問的突發(fā)長度為8。換 言之,對于每個(gè)存儲器訪問,各個(gè)SDRAM在突發(fā)長度為8的情況下提供 4位(半字節(jié))數(shù)據(jù),總共生成32位或4字節(jié)(4位*8突發(fā)長度=32位=4 字節(jié))。
整個(gè)業(yè)界中使用的有關(guān)RAID的術(shù)語存在某些不一致和不明確之處。 除非另有聲明,否則下面的定義是本披露中使用這些術(shù)語時(shí)所指的含義。 陣列指實(shí)現(xiàn)一個(gè)或多個(gè)RAID清除碼實(shí)例的硬盤驅(qū)動器的集合。符號或元 素是數(shù)據(jù)或校驗(yàn)的基本單位,是清除碼的構(gòu)造塊。在編碼理論中,其是指 定給符號內(nèi)的一個(gè)位的數(shù)據(jù)。它通常為一組有序的區(qū)段。元素由固定數(shù)目 的字節(jié)構(gòu)成。通常也將元素定義為固定數(shù)目的塊。塊為固定數(shù)目的字節(jié)。 條帶是與校驗(yàn)計(jì)算關(guān)系相關(guān)的數(shù)據(jù)和校驗(yàn)元素的完整和相連集合。在編碼 理論中,條帶是代碼字或代碼實(shí)例。條帶是單個(gè)硬盤驅(qū)動器上相鄰元素的集合。條帶包含來自同一磁盤和條帶的數(shù)據(jù)元素、校驗(yàn)元素或兩者。術(shù)語 "條帶"和"列"可以互換使用。在編碼理論中,條帶與代碼字關(guān)聯(lián)并且 有時(shí)被稱為條帶單元。代碼字中的條帶集合形成一個(gè)條帶。最常見的是各 條帶包含同樣數(shù)量的元素。在某些情況下,條帶可以被分組到一起以形成
稱為數(shù)據(jù)幅(stride)的更高級別的結(jié)構(gòu)。
RAID-6是更常見的RS糾錯(cuò)碼的特定實(shí)例。RS碼首次出現(xiàn)在Irving Reed和Gus Solomon 1960年所發(fā)表的論文中。這些強(qiáng)大的代碼已經(jīng)廣泛 地用于各種糾錯(cuò),所涉范圍從深空問題一直到DVD播放器中的盤,。 RS碼是應(yīng)用于數(shù)據(jù)元素或符號的非二進(jìn)制循環(huán)碼。RS ( n, k)碼可以被定 義為k-數(shù)據(jù)符號數(shù),m-以位表示的符號長度,以及n-符號總數(shù)。因此, 0<k<n<2A (m+l)。
進(jìn)一步定義c-在無法獨(dú)立確定位置時(shí)的符號錯(cuò)誤糾正能力,從而 n-k=2c。換言之,符號總數(shù)與數(shù)據(jù)符號數(shù)之差與RS碼的數(shù)據(jù)糾正能力直 接成比例。對于任意線性碼,RS碼可達(dá)到最大可能的最小距離。對于非二 進(jìn)制碼,與Hamming距離類似的最小距離為dmin=n-k+l。
進(jìn)一步定義e-清除糾正能力(即,在獨(dú)立確定錯(cuò)誤位置時(shí)的糾錯(cuò)能 力),從而e=dmin-l=n-k=2c。換言之,與通過某些獨(dú)立手段確定位置相 比,無法獲知位置時(shí)只能糾正一半的故障。
RS碼使用一系列聯(lián)立方程來求解未知數(shù)。這些未知數(shù)為數(shù)據(jù)符號或具 有錯(cuò)誤的符號的位置。例如,RAID-6使用兩個(gè)方程生成兩個(gè)應(yīng)用于每行 中的每個(gè)數(shù)據(jù)元素的獨(dú)立校驗(yàn)和。定義Q(x)-R-S校驗(yàn)和,其中x=a; P(x)-R-S校驗(yàn)和,其中x-l;以及d0, dl,…dN-多項(xiàng)式系數(shù),允許使用以 下多項(xiàng)式形式表示R-S校驗(yàn)和方程Q(x)- dO+dl*x+d2*xA2+...d(N-l)* xA(N-l)。此方程可用于求解糾正數(shù)據(jù)元素的系數(shù),以力或者在錯(cuò)誤位置未 知的情況下,可用于求解x的冪以鎖定該位置。
可以看到,RAID-3、 RAID-4和RAID-5的簡單"異或"是x-l時(shí)多 項(xiàng)式和的特例,因此方程變?yōu)镻(x)-dO+dl+d2+…d(N-l)。該通用方程有 許多變型可供本發(fā)明的示例性實(shí)施例使用。主要要求是該方程應(yīng)是本原多項(xiàng)式,這意味著它與質(zhì)數(shù)類似,其中沒有公根。這確保了對于有限域(如
Galois域),解始終是唯一的。
圖3示出如何在示例性實(shí)施例中配置計(jì)算機(jī)存儲系統(tǒng)。以5個(gè)DIMM 302的塊314 (組)向系統(tǒng)添加存儲器,每個(gè)DIMM 302具有18個(gè)DRAM 芯片。因此,在每個(gè)存儲器塊314中,總共有90個(gè)DRAM芯片分布在5 個(gè)DIMM 302上。DRAM芯片中的64個(gè)包含客戶可用數(shù)據(jù)以及DRAM 芯片中的26個(gè)用于保存校驗(yàn)和(標(biāo)記為304的DRAM芯片和位于與存儲 器通道306e相連的DIMM 302上的塊314中的所有DRAM芯片)。每個(gè) 存儲器塊訪問提供360字節(jié)的數(shù)據(jù)(假設(shè)DRAM為4字節(jié)),其中256 字節(jié)為可用的客戶數(shù)據(jù),104字節(jié)用于校驗(yàn)和。這將導(dǎo)致28.9%的可靠性 和服務(wù)性(RAS)開銷。顯然,本發(fā)明并不限于此特定存儲器配置,其可 適用于許多其他使用不同DRAM芯片和DIMM結(jié)構(gòu)的存儲器配置。
圖3中所示的示例性實(shí)施例包括五個(gè)存儲器節(jié)點(diǎn)316,每個(gè)節(jié)點(diǎn)都包 括三個(gè)以串接方式與存儲器通道306互連的存儲器模塊(DIMM 302)。 在該示例性實(shí)施例中,五個(gè)存儲器通道306a-e與位于主機(jī)系統(tǒng)310中的存 儲控制器308相連。每個(gè)DIMM 302都包括用于與存儲器件(例如DRAM 芯片)和存儲器通道306進(jìn)行通信的集線器裝置312。
在該示例性實(shí)施例中,ECC在64數(shù)據(jù)字節(jié)塊上生成以通過使用關(guān)鍵 字優(yōu)先策略(即,存儲系統(tǒng)被設(shè)計(jì)為按重要性檢索字)提供斷續(xù)(chopped ) 突發(fā)模式支持和低延遲訪問。在DDR2器件中,"突發(fā)斷續(xù)模式"支持允 許使用突發(fā)長度4,而非為DDR3指定的常用突發(fā)長度8來訪問DRAM。 本發(fā)明中所用的ECC也可應(yīng)用于128字節(jié)塊并且仍支持?jǐn)嗬m(xù)突發(fā)模式。 所述代碼可應(yīng)用于64、 128或256字節(jié)塊。但是,如果所述代碼應(yīng)用于在 單個(gè)存儲器訪問中檢索或存儲的全部256個(gè)字節(jié),則不支持?jǐn)嗬m(xù)突發(fā)模式, 因?yàn)樾枰?56字節(jié)數(shù)據(jù)來生成或重新生成與已存儲的校驗(yàn)和相比較的 校驗(yàn)和以便檢測錯(cuò)誤。
圖3是根據(jù)本發(fā)明的實(shí)施例的RAM系統(tǒng)結(jié)構(gòu)的一個(gè)實(shí)施例的高級視 圖。每個(gè)存儲器節(jié)點(diǎn)316都包括3個(gè)DIMM312。可以通過許多基于集線器的模塊上的可用擴(kuò)展(例如,串接互連)總線之類的手段,將每個(gè)存儲
器節(jié)點(diǎn)316的DIMM 312數(shù)量擴(kuò)展為包括3個(gè)以上的DIMM 312。圖3中 所示的此存儲器節(jié)點(diǎn)結(jié)構(gòu)允許斷開任何存儲器節(jié)點(diǎn)316的電源并允許在不 影響系統(tǒng)存儲器運(yùn)行的情況下更換DIMM。存儲系統(tǒng)可在斷開任何單個(gè)存 儲器節(jié)點(diǎn)316的電源的情況下繼續(xù)無阻礙地運(yùn)行。
在圖3中,與存儲器通道306e相連的標(biāo)記為304的DRAM芯片和存 儲器節(jié)點(diǎn)316中的所有DRAM芯片都保存可實(shí)現(xiàn)同時(shí)DIMM修復(fù)的特殊 ECC。 DIMM302上的其余DRAM包含可用客戶數(shù)據(jù)。
DIMM302在系統(tǒng)內(nèi)以每5個(gè)DIMM的塊來增加。圖3中最上一行的 5個(gè)DIMM代表系統(tǒng)的第一DIMM塊314。它還表示最小存儲器配置。接 下來的5個(gè)DIMM塊是其正下方的行。
每列中位于最右側(cè)節(jié)點(diǎn)內(nèi)的第五DIMM (例如,與存儲器通道306e 相連的每行最右側(cè)的DIMM)都具有包含跨其他存儲器節(jié)點(diǎn)316中的 DIMM計(jì)算的RAID-3校驗(yàn)和的DRAM芯片。與存儲器通道306e相連的 DRAM不包含(或包含非常少的)客戶可用數(shù)據(jù)。RAID-5通常用于HDD , 因?yàn)榕cRAID-3不同,校驗(yàn)和跨所有HDD分布以避免瓶頸。在此實(shí)施例 中不存在此類瓶頸,因?yàn)橥瑫r(shí)訪問存儲器塊中的所有DRAM芯片。這樣, 無需進(jìn)行校驗(yàn)和分布。在此實(shí)施例中,數(shù)據(jù)元素具有長度為l字節(jié)的符號, 因?yàn)樵趩蝹€(gè)訪問中操作64字節(jié)數(shù)據(jù)塊。其他實(shí)施例使用RAID-4替代 RAID-3,包括具有更長符號大小的數(shù)據(jù)元素。在本文其余的描述中,使用 術(shù)語RAID-3之處也可視為RAID-4。重點(diǎn)是,此處不需要如RAID-5中用 于提高HDD配置性能的分布式校驗(yàn)。使用來自與圖3中的各DIMM 302 列對應(yīng)的其他存儲器節(jié)點(diǎn)316中的每個(gè)對應(yīng)DRAM芯片的對應(yīng)數(shù)據(jù)元素 來計(jì)算RAID-3校驗(yàn)和。通過對每個(gè)DIMM使用RAID-3,可以在通過獨(dú) 立手段鎖定具有錯(cuò)誤的特定DIMM302時(shí)糾正整體DIMM故障。
示例性實(shí)施例利用2個(gè)分別水平應(yīng)用和垂直應(yīng)用的獨(dú)立ECC,它們提 供有效的錯(cuò)誤檢測和餘溪隔離特性。與檢測和隔離HDD錯(cuò)誤相比(其中 廣泛使用RAID-3和RAID-6糾錯(cuò)),檢測和鎖定DRAM芯片錯(cuò)誤,尤其
17是檢測和鎖定諸如單個(gè)位翻轉(zhuǎn)(單個(gè)單元錯(cuò)誤)之類的更細(xì)小的錯(cuò)誤要困
難得多。HDD經(jīng)常使用與每個(gè)數(shù)據(jù)元素或數(shù)據(jù)元素組關(guān)聯(lián)的器件上的嵌入 代碼如險(xiǎn)測和鎖定更細(xì)小的錯(cuò)誤。這些代碼包括簡單校驗(yàn)以及提供更好的 錯(cuò)誤檢測和隔離的CRC和LRC。當(dāng)可以通過獨(dú)立手段鎖定錯(cuò)誤時(shí),RAID-3 和RAID-6在糾錯(cuò)時(shí)的效能將翻倍。從盤適配器到HDD的接口通常為命 令/響應(yīng)類型接口,與每個(gè)DRAM芯片的接口一般所提供的功能相比,其 可以更好地檢測完全失效的HDD 。
HDD接口是在特定HDD不響應(yīng)的情況下可由盤適配器立即識別的接 口。如果DRAM芯片出現(xiàn)故障,除非所檢索的數(shù)據(jù)與最初存儲的不符, 否則不會指示此故障,必須通過某種獨(dú)立手段來檢測此故障。HDD存儲裝 置廉價(jià)而且存儲量大,所以增加校驗(yàn)所需的開銷不像RAM那樣特別昂貴。 為了提高錯(cuò)誤檢測能力而在RAM中添加嵌入式校驗(yàn)器會顯著影響存儲器 密度、功耗、性能、整體存儲器大小以及計(jì)算機(jī)系統(tǒng)成本。RAMECC碼 盡可能有效是非常重要的。
為了克服這些限制,此處所述的示例性實(shí)施例使用水平應(yīng)用的RAID-3 碼、垂直應(yīng)用的RAID-6碼,以及二維三角測量來有效地隔離錯(cuò)誤。 一旦 隔離了g,便可使用RAID-3行代碼和RAID-6列代碼進(jìn)行糾錯(cuò)。如上 所述,RAID-3碼跨DIMM應(yīng)用。RAID-6碼,示例性實(shí)施例中的[18,16R-S 碼,獨(dú)立地應(yīng)用于每個(gè)DIMM。圖3中標(biāo)記為304的DRAM芯片保存用 于其所在DIMM 302的[18, 16R-S校驗(yàn)和。使用每個(gè)DIMM 302上的其 他16個(gè)DRAM芯片的對應(yīng)數(shù)據(jù)元素計(jì)算這些[18, 16R-S校驗(yàn)和。
這些7K平和垂直應(yīng)用于每個(gè)數(shù)據(jù)元素的獨(dú)立ECC、應(yīng)用于跨DIMM 的行中的DRAM芯片數(shù)據(jù)元素的RAID-3,以及應(yīng)用于每個(gè)DIMM的列 中的DRAM芯片數(shù)據(jù)元素的RAID-6的組合實(shí)質(zhì)上在沒有顯著開銷的情況 下增強(qiáng)了錯(cuò)誤隔離和錯(cuò)誤糾正能力。這一新的ECC具有28.9%的開銷, 比目前在高端系統(tǒng)上使用的許多當(dāng)前ECC高17.8%。用于高端系統(tǒng)存儲 器的示例性當(dāng)前ECC碼為提供單芯片糾錯(cuò)和雙芯片錯(cuò)誤檢測的[35, 32
R-S碼。如下文所述,此處描述的示例性實(shí)施例提供100%的檢測和高概率的 糾正,最大可至整體DIMM故障(18個(gè)DRAM芯片)。對于單個(gè)DIMM 上2個(gè)以上的DRAM芯片錯(cuò)誤,有很小的概率RAID-6列方程會錯(cuò)誤地產(chǎn) 生看似有效的解。在這種情況下,所應(yīng)用的RAID-6列不一定會檢測到錯(cuò) 誤。但是,只^"誤包含在單個(gè)DIMM中,RAID-5校驗(yàn)便會在任何時(shí)間 都檢測到錯(cuò)誤。 一旦識別到故障DIMM,本發(fā)明的示例性實(shí)施例可在任何 時(shí)間提供最大為整體DIMM的故障糾正。
如下文所述,示例性實(shí)施例還提供了 100%的檢測和高概率的糾正, 最大可至與整體DIMM故障(19個(gè)DRAM芯片)同時(shí)發(fā)生的整體芯片故 障。從次級錯(cuò)誤恢復(fù)的能力非常重要,盡管同時(shí)性的故障事件相當(dāng)少見, 但是在執(zhí)行或完成同時(shí)的DIMM修復(fù)之前或期間,仍有可能遇到與整體 DIMM故障同時(shí)發(fā)生的在另一 DIMM上的次級錯(cuò)誤。對于單個(gè)單元次級 故障尤其如此。如上所述, 一旦識別到故障DIMM,本發(fā)明的示例性實(shí)施 例就可在任何時(shí)間糾正與芯片(此處也稱為存儲器件)同時(shí)發(fā)生的整體 DIMM故障。
以下為示例性情況,用于展示本發(fā)明的示例性實(shí)施例如何提供增強(qiáng)的 恢復(fù)能力及其限制。
圖4示出了剛才參考圖3描述的存儲系統(tǒng)配置的邏輯視圖。如下面的 說明中4吏用的,Dxy-數(shù)據(jù)元素;Pxy- RAID-3行校驗(yàn)和;Pxy,-重新生成 的校驗(yàn)和;Qxy-RAID-6列校驗(yàn)和;Qxy,-重新生成的校驗(yàn)和;Q0x-—個(gè) RAID-6列校驗(yàn)和(這將是RAID-6的RAID-5列校驗(yàn)和,例如, Q01=D01+Dll+D21+...+DFl,其中"+,,為"異或,,);Qly-另一RAID-6 列校驗(yàn)和(例如,Qll=D01+Dll*x+D21*xA2+...+DFl*xA15) ; exy、 zxy 和wxy-錯(cuò)誤(添加到正確數(shù)據(jù)以產(chǎn)生錯(cuò)誤的隨機(jī)變量);以及Rxy-Qxy 校驗(yàn)和的行RAID-3校驗(yàn)和。
現(xiàn)在參考圖4,最右側(cè)的邏輯表示示出了完整的計(jì)算機(jī)存儲器配置。 每列都表示包括18個(gè)DRAM芯片的單個(gè)DIMM。每個(gè)DRAM芯片上的 數(shù)據(jù)元素被指定為Dxy。 RAID-3校驗(yàn)和元素402( Pxy和Rxy )在跨DIMM的每個(gè)DRAM數(shù)據(jù)元素上逐行生成。對于RAID-3,校驗(yàn)和為每行中數(shù)據(jù) 元素的"異或"PxO= Dx0+Dxl+Dx2+Dx3。例如,當(dāng)x=2時(shí),P20= D20+D21+D22+D23。
沿著應(yīng)用于相關(guān)列中每個(gè)數(shù)據(jù)元素的列生成的RAID-6校驗(yàn)和元素 404 ,皮指定為Qxy。
圖4示出了如何檢測和糾正單個(gè)DRAM芯片錯(cuò)誤。左側(cè)的邏輯表示 示出了沒有錯(cuò)誤且完全運(yùn)行的存儲器。圖4中右側(cè)的表示示出了在標(biāo)記為 D42的DRAM芯片中出現(xiàn)了錯(cuò)誤。該錯(cuò)誤可能是單位錯(cuò)誤、多位錯(cuò)誤或任 何其他錯(cuò)誤組合,最大為整體DRAM芯片故障。本發(fā)明的示例性實(shí)施例 為單個(gè)DRAM芯片錯(cuò)誤提供了 100。/。的檢測和糾正。
使用此處稱為二維三角測量的技術(shù)隔離具有錯(cuò)誤的特定DRAM芯片, 其中結(jié)合使用RAID-3行校驗(yàn)和與RAID-6列校驗(yàn)和來鎖定錯(cuò)誤位置。在 存儲器讀取操作中,通過從存儲器讀取的數(shù)據(jù)來重新生成RAID-3校驗(yàn)和 Pxy,與RAID-6校驗(yàn)和Qxy,。重新生成的校驗(yàn)和Pxy,、 Qxy,和Rxy,與已 存儲的校驗(yàn)和Pxy、 Qxy和Rxy進(jìn)行比較。如果它們?nèi)肯嗟萈xy,=Pxy, Qxy,=Qxy和Rxy,-Rxy,則可以假設(shè)沒有數(shù)據(jù)錯(cuò)誤。從存儲器檢索的數(shù)據(jù) 被驗(yàn)證為正確。如果只有一個(gè)重新生成的校驗(yàn)和Qxy,與已存儲的校驗(yàn)和不 匹配,則表示保存該校驗(yàn)和的DRAM芯片具有錯(cuò)誤。因?yàn)樵谶@種情況下 客戶數(shù)據(jù)仍然有效,所以不需要進(jìn)行數(shù)據(jù)糾正。
如圖4所示,與該行關(guān)聯(lián)的重新生成的RAID-3校驗(yàn)和Pxy,與已存儲 的校驗(yàn)和不匹配,il^示該行中存在餘溪。在此實(shí)例中,P40與P40,不匹 配,因此可以獲知存在一個(gè)與包含D40、 D41、 D42、 D43以及P40的行關(guān) 聯(lián)的錯(cuò)誤??赡苁菙?shù)據(jù)元素D40、 D41、 D42、 D43或行RAID-3校驗(yàn)和 P40與該錯(cuò)誤相關(guān)。甚至可以存在多個(gè)錯(cuò)誤。將重新生成的行RAID-3校 驗(yàn)和P40,與已存儲的校驗(yàn)和P40進(jìn)行比較只能隔離該行。RAID-6列校驗(yàn) 和用于進(jìn)一步的隔離。如果所有重新生成的RAID-6列校驗(yàn)和Qxy,與已存 儲的校驗(yàn)和Qxy都匹配,則RAID-3校驗(yàn)和DRAM芯片Pxy具有錯(cuò)誤。 在該實(shí)例中,重新生成的RAID-6校驗(yàn)和Q02,和Q12,與已存儲的核^驗(yàn)和Q02和Q12,不匹配。現(xiàn)在4吏用二維三角測量,將4昔誤鎖定到D42。這是具 有錯(cuò)誤的DRAM芯片。
一旦隔離了錯(cuò)誤,便可簡單地通過將其他行數(shù)據(jù)元素與RAID-3存儲 的RAID-3校驗(yàn)和進(jìn)行"異或"D42-D40+D41+D43+P04或?qū)⒘袛?shù)據(jù)元 素與已存儲的RAID-6 校驗(yàn)和進(jìn)行"異或" D42=D02+D12+D22+D32+D52+.. .+DB2+DC2+DD2+DE2+DF2+Q02 ,來完 成錯(cuò)誤糾正。還可以使用其他RAID-6、 [18,161R-S方程來糾正錯(cuò)誤。
由于這是單個(gè)DRAM芯片錯(cuò)誤,所以3個(gè)重新生成的校驗(yàn)和,即一 個(gè)RAID-3校驗(yàn)和與兩個(gè)RAID-6校驗(yàn)和,不匹配已存儲的校驗(yàn)和,并且 所有其他重新生成的RAID-3校驗(yàn)和與RAID-6校驗(yàn)和必須與已存儲的校 驗(yàn)和匹配。在該實(shí)例中,P40,與P40不匹配,并且重新生成和已存儲的 RAID-6校驗(yàn)和Q02,與Q02以及Q12,與Q12相應(yīng)地不匹配,因此可以獲 知具有與D42關(guān)聯(lián)的DRAM芯片錯(cuò)誤。類似地,如果只有重新生成的 RAID-6校驗(yàn)和Q0y,或Qly,之一與已存儲的相應(yīng)RAID-3校驗(yàn)和Q0y或 Qly之一不匹配,則可以獲知它是錯(cuò)誤源。對于單個(gè)數(shù)據(jù)元素錯(cuò)誤Dxy, 重新生成和已存儲的校驗(yàn)和Q0y,和Q0y以及Qly,和Qly必須顯示不匹配, Pxy,和Pxy亦然。
下面給出更復(fù)雜的錯(cuò)誤情況的實(shí)例以揭示本發(fā)明示例性實(shí)施例的完整 能力。
圖5示出了剛才所述的方法如何輕t^擴(kuò)展為處理單個(gè)DIMM上的多個(gè) DRAM芯片錯(cuò)誤,以及處理DIMM上的全部18個(gè)DRAM的整體DIMM 故障。首先,描述單個(gè)DIMM故障情況。在該實(shí)例中,許多(也許是全部) 重新生成的RAID-3行校驗(yàn)和Pxy,與已存儲的Pxy不匹配,il^示存在多 個(gè)具有錯(cuò)誤的行。但是在該實(shí)例中,當(dāng)重新生成的RAID-6校驗(yàn)和Qxy,與 已存儲的校驗(yàn)和Qxy比較時(shí),可以發(fā)現(xiàn)只有兩個(gè)與單個(gè)列關(guān)聯(lián)的校驗(yàn)和不 匹配。因此,可以獲知錯(cuò)誤包含在單個(gè)DIMM中。在該實(shí)例中,重新生成 的校驗(yàn)和Q02,和Q12,與已存儲的校驗(yàn)和Q02和Q12不匹配,因此,可以 獲知故障與第三DIMM關(guān)聯(lián)。在極少的情況下,DIMM中的錯(cuò)誤可能使
21關(guān)聯(lián)的RAID-6校驗(yàn)和等于0,在這種情況下,這種解碼方法僅提供錯(cuò)誤 檢測,而不提皿誤糾正。
只要是只有一個(gè)列包含錯(cuò)誤,就可以重新產(chǎn)生整個(gè)DIMM的數(shù)據(jù),使 用列RAID-3糾正的數(shù)據(jù)如下Dx2=DxO+Dxl+Dx3+PxO,其中x=0、 1、
2.....F。這是非常重要的功能。要允許同步DIMM修復(fù),就必須有整體
DIMM故障恢復(fù)功能。當(dāng)DIMM為熱插拔DIMM時(shí),會似乎是整體DIMM 故障。為每個(gè)DIMM添加存在檢測線有助于保證從系統(tǒng)移除DIMM時(shí)進(jìn) 行隔離。
圖6示出了在兩個(gè)不同的DIMM上發(fā)生兩個(gè)DRAM芯片錯(cuò)誤時(shí),如 何處理這兩個(gè)g。同時(shí)發(fā)生兩個(gè)隨機(jī)錯(cuò)誤的概率基本為零,但是在同時(shí) 修復(fù)或DRAM分出(sparing)操作消除第一故障之前,有可能遇到第二 故障。
在圖6中,存在與D42和D91關(guān)聯(lián)的實(shí)際DRAM芯片錯(cuò)誤。通過先 前所述的相同校驗(yàn)和重新生成過程檢測所述錯(cuò)誤。在執(zhí)行此操作時(shí),重新 生成的RAID-3校驗(yàn)和P40,和P卯,與已存儲的校驗(yàn)和P40和P卯不匹配, 因此可以獲知錯(cuò)誤與這兩行關(guān)聯(lián)。此外,與第二列關(guān)聯(lián)的重新生成的 RAID-6校驗(yàn)和Q01,和Qll,與已存儲的校驗(yàn)和Q01和Qll不匹配,因此 可以獲知存在與第二列關(guān)聯(lián)的錯(cuò)誤。另外,與第三列關(guān)聯(lián)的重新生成的 RAID-6校驗(yàn)和Q02,和Q12,與已存儲的校驗(yàn)和Q02和Q12不匹配,因此 可以獲知存在與第三列關(guān)聯(lián)的錯(cuò)誤。使用帶有獨(dú)立校驗(yàn)和的二維三角測量 來鎖定具有4昔誤的DRAM。P40與Q02或Q12的交叉點(diǎn)清晰正確地將D42 鎖定為包含4昔誤的DRAM芯片。P90與Q01或Qll的交叉點(diǎn)也清晰正確 地將D91鎖定為包含錯(cuò)誤的DRAM芯片。
還存在鎖定D41的P40與Q01或Qll的交叉點(diǎn)以及鎖定D92的P90 與Q02或Q12的交叉點(diǎn)。但是,這些DRAM芯片不包含鐐溪。不可能單 獨(dú)憑此判定4個(gè)DRAM芯片中的哪個(gè)芯片包含4綠。不過,這不是問題。 RAID-6, [18,16R-S碼的最短距離為3,此距離允許在通過另一獨(dú)立手段 鎖定位置時(shí)隔離和糾正單個(gè)錯(cuò)誤或糾正兩個(gè)錯(cuò)誤。在這種情況下,RAID-3行校驗(yàn)和允許鎖定行以及RAID-6列校驗(yàn)和允許鎖定列?,F(xiàn)在有四個(gè)方程和四個(gè)未知數(shù)D41、 D42、 D91、 D92來糾正全部四個(gè)有問題的DRAM芯片的錯(cuò)誤
Q01=D01+D11+D21+D31+D41+D51+D61+D71+D81+D91...+DF1;Qll=D01+Dll*x+D21*xA2+...+DFl*xA15
Q03= D02+D12+D22+D32+D42+D52+D62+D72+D82+D92…+DF2;以

Q12=D02+D12*x+D22*xA2+...+DF2*xA15。
圖6示出了如4可在任4可時(shí)間隔離和糾正4壬意兩個(gè)同時(shí)的DRAM芯片錯(cuò)誤。
圖7示出了當(dāng)存在與次級DRAM芯片故障同時(shí)發(fā)生的整體DIMM故障時(shí)遇到的困難。如果未隔離和鎖定第一故障,則不可能僅通過比較重新生成的校驗(yàn)和與已存儲的校驗(yàn)和來判定兩個(gè)DIMM上包含錯(cuò)誤的DRAM芯片。這是因?yàn)槎鄶?shù)(若非全部)RAID-3行校驗(yàn)器,Pxy和Rxy,指示存在與行關(guān)聯(lián)的錯(cuò)誤。但是,Pxy行校驗(yàn)器與Qxy列校驗(yàn)器的交叉點(diǎn)指示兩個(gè)DIMM上的所有DRAM芯片都可能存在潛在錯(cuò)誤。不過仍有方法解決此困境。
圖8略為詳細(xì)地示出了當(dāng)存在與另一 DIMM上另 一單個(gè)DRAM芯片錯(cuò)誤同時(shí)發(fā)生的整體DIMM錯(cuò)誤時(shí),錯(cuò)誤在糾錯(cuò)期間如何傳播。在這種情況下,算法不需要了解哪個(gè)錯(cuò)誤首先發(fā)生便可正確地提供這些錯(cuò)誤類型的100%檢測和高概率的糾正。如上所述,當(dāng)整體DIMM錯(cuò)誤與另一單個(gè)DRAM芯片錯(cuò)誤同時(shí)發(fā)生時(shí),多數(shù)(也許是全部)重新生成的RAID-3行校驗(yàn)和Rxy與已存儲的校驗(yàn)和Pxy不匹配,指示行中包含錯(cuò)誤。但是在這種情況下,第一 DIMM的重新生成的RAID-6列校驗(yàn)和,QOO,和Q10,,與已存儲的校驗(yàn)和Q00和Q10不匹配,指示存在與笫一 DIMM關(guān)聯(lián)的錯(cuò)誤。此外,第一 DIMM的重新生成的RAID-6列校驗(yàn)和,Q02,和Q12,,與已存儲的校驗(yàn)和Q02和Q12不匹配,指示存在與第三DIMM關(guān)聯(lián)的錯(cuò)誤(具有高概率)。在該實(shí)例中,未鎖定故障DIMM,因此需要在沒有此
23信息的情況下從錯(cuò)誤恢復(fù)。只有在一個(gè)DIMM上存在最多單個(gè)DRAM芯片錯(cuò)誤,同時(shí)另一 DIMM上發(fā)生整體DIMM故障(最多19個(gè)DRAM芯片錯(cuò)誤)時(shí),才能夠糾正數(shù)據(jù)。為了完成此操作,必須假設(shè)每個(gè)有問題的DIMM存在整體DIMM錯(cuò)誤并且其他DIMM具有單個(gè)DRAM芯片錯(cuò)誤,以在兩種情況下尋求單個(gè)有效的解決方案。
現(xiàn)在返回圖8,其中正確地假設(shè)第三DIMM具有整體DIMM故障并且第一 DIMM具有單個(gè)DRAM芯片餘誤??梢允褂肦AID-3列方程以如下方式糾正第三DIMM上的數(shù)據(jù)Dx2=DxO+Dxl+Dx3+PxO,其中x=0、
在嘗試使用RAID-3糾正第三DIMM上的錯(cuò)誤時(shí),錯(cuò)誤模式變成如右圖所示。D40和D42仍包含錯(cuò)誤e40。更糟的是,行RAID-3不檢測該錯(cuò)誤,因?yàn)樵?異或,,運(yùn)算期間,同樣的錯(cuò)誤被抵消。已存儲的P40與重新生成的P40,進(jìn)行比較以指示沒有錯(cuò)誤。不過眾所周知,必定仍有至少一個(gè)錯(cuò)誤,因此系統(tǒng)繼續(xù)執(zhí)行并使用列RAID-6方程來鎖定并糾正該錯(cuò)誤。這將消除同時(shí)與D40和D42關(guān)聯(lián)的e40錯(cuò)誤,并且所有RAID-3和RAID-6重新生成以及已存儲的校驗(yàn)和將匹配?,F(xiàn)在假設(shè)另一 DIMM具有整體DIMM故障以確保這不是一個(gè)有效的解。
圖9a示出了當(dāng)錯(cuò)誤地假設(shè)第一DIMM具有整體DIMM故障并且第三DIMM具有單個(gè)DRAM芯片錯(cuò)誤時(shí)所發(fā)生的狀況。如上所述,RAID-3列方程被用于以如下方式糾正第三DIMM上的數(shù)據(jù)DxO=
Dxl+Dx2+Dx3+Px0,其中x=0、 1、 2.....F。結(jié)果是圖9a的右側(cè)塊中所
示的錯(cuò)誤模式。與第三DIMM上的DRAM芯片關(guān)聯(lián)的所有錯(cuò)誤都被傳播到第一 DIMM上的對應(yīng)DRAM芯片。由于它們是同樣的錯(cuò)誤,因此,將所有重新生成的RAID-3行校驗(yàn)和Pxy,與已存儲的校驗(yàn)和進(jìn)行比較指示這些錯(cuò)誤相同。RAID-3行校驗(yàn)和不檢測任何錯(cuò)誤,因此不會指示存在行錯(cuò)誤。不過,第一和第三RAID-6列校驗(yàn)和指示那些列中包^^錯(cuò)誤。因此到目前為止,通過查詢重新生成和已存儲的校驗(yàn)和,看上去就像當(dāng)正確地假設(shè)另一 DIMM具有整體DIMM故障時(shí)所發(fā)生的狀況,只是現(xiàn)在錯(cuò)誤已經(jīng)傳播到第一和第三DIMM上的每個(gè)DRAM中。
圖9b示出了在做出正確的假設(shè)之前,嘗試使用RAID-6列來鎖定和糾 正兩個(gè)單個(gè)芯片錯(cuò)誤時(shí)所發(fā)生的狀況。多數(shù)情況下,當(dāng)嘗試對RAID-6方 程求解時(shí)會得到無效解。發(fā)生這種情況時(shí),會檢測到答案是錯(cuò)誤的并且獲 知其他答案是正確的。但是在255個(gè)可能性中,有18個(gè)有效位置,因此存 在相當(dāng)高的不會檢測到錯(cuò)誤的概率(18/255)=0.0706。存在7% (100中有 7個(gè))的生成看似有效并無法,皮檢測到的無效解的可能性。在這種情況下, 將執(zhí)行RAID-6糾正, 一旦完成,便會發(fā)現(xiàn)重新生成的校驗(yàn)和與所存儲的 校驗(yàn)和相等。將發(fā)現(xiàn)所有校驗(yàn)和均與RAID-3和RAID-6校驗(yàn)和匹配。當(dāng) 列中包含一個(gè)以上的錯(cuò)誤時(shí),使用RAID-6方程可得到錯(cuò)誤的結(jié)果(此處 RAID-6被用作單個(gè)糾錯(cuò)碼,而非兩個(gè)被清除的符號糾錯(cuò)碼)。在圖9b的 這個(gè)實(shí)例中,所述計(jì)算將得出右側(cè)的錯(cuò)誤模式,其中每行中與各個(gè)對應(yīng)的 DRAM 芯片關(guān)聯(lián)的錯(cuò)誤是相同的s00=Q00+ Q00,=z02+zl2+z22+...ZF2+W02 并 且 s02=Q02+
Q02,=z02+zl2+z22+...ZF2+W02,因此s00=s02。
il^示RAID-6方程的解與已存儲的數(shù)據(jù)無關(guān),而僅與對于兩列均相 同的g有關(guān)。由于g是相同的,因此就保證了無法檢測到的無效解將 會行對齊,從而使得RAID-3或RAID-6校驗(yàn)和無法檢測到錯(cuò)誤。只要無 法檢測到的錯(cuò)誤解被行對齊,在執(zhí)行RAID-6列糾正之后,RAID-3行校驗(yàn) 和就無法檢測到錯(cuò)誤(假設(shè)該RAID-6糾正不會造成無法糾正的錯(cuò)誤或 "UE")。在該實(shí)例中,已存儲的P60與重新生成的P60,校驗(yàn)和相匹配, 因?yàn)镈60和D62中的錯(cuò)誤S00+z62在"異或,,運(yùn)算期間被抵消。
但是,該問題存在相對簡單的解決方案,如圖9c所示。RAID-6方程 的解僅是錯(cuò)誤信息的函數(shù)。下面示出了 RAID-6嘗試糾正之后如何解決未 檢測到錯(cuò)誤的行和錯(cuò)誤量(magnitude)對齊問題。
參見圖9a中第一列的Q00核Jir和,已存儲的校驗(yàn)和Q00最初為 Q00=D00+D10+D20+...+DF0。在使用RAID-3行嘗試糾正錯(cuò)誤之后,已存 儲的校驗(yàn)和變?yōu)镼mod00=D00+D10+D20+...+DF0+w02=Q00+w02。重新生成的校驗(yàn)和將為Q00,=D00+D10+D20+...+DF0+ z02+zl2+z22+…zF2。當(dāng)重新生成的校驗(yàn)和與已存儲的校驗(yàn)和比較時(shí),結(jié)果為S00= QmodOO+Q00,= Q00+w02+Q00, = z02+zl2+z22+…zF2+w02。
對第三列執(zhí)行相同的運(yùn)算將得出已存儲的校驗(yàn)和Q02最初等于D02+D12+D22+…+DF2。使用RAID-3行嘗試糾正錯(cuò)誤之后,已存儲的校驗(yàn)和變?yōu)镼mod02=D02+D12+D22+,..+DF2+w02=Q02+w02。重新生成的校驗(yàn)和將為Q02,=D02+D12+D22+...+DF2+z02+zl2+z22+...zF2。當(dāng)重新生成的校驗(yàn)和與已存儲的校驗(yàn)和比較時(shí),結(jié)果為S02= Qmod02+ Q02,=Q02+w02+Q02, = z02+zl2+z22+…zF2+w02。
因此,很明顯第一列和第三列中的第一 RAID-6校驗(yàn)和的解相同,并且為S00= S02= z02+zl2+z22+…zF2+w02。對第二校驗(yàn)和進(jìn)行類似的分析將得出S10= S12= z02+zl2*x+z22*xA2+...+zF2*xA15+wl2。因此,如果錯(cuò)誤偶爾產(chǎn)生看似有效的解,則所述錯(cuò)誤將始終會行對齊并且RAID-3行校驗(yàn)無法檢測到所述錯(cuò)誤。
但是,存在簡單的過程來防止此對齊,如圖9c所示。將四個(gè)常數(shù)a、b、 c、 d定義為全部彼此不等且非0的唯一數(shù)字。修改第一 RAID-6校驗(yàn)和 以 4吏 用 Q00=a*(D00+D10+D20+...+DF0) 、Q01=b*( D01+Dll+D21+…+DFl)、 Q02=c*(D02+D12+D22+...+DF2),以及Q03=d*( D03+D13+D23+…+DF3)來替代QOO=DOO+D10+D20+...+DFO、Q01=D01+Dll+D21+...+DFl、 Q02-D02+D12+D22+…+DF2,以及Q03=D03+D13+D23+.. .+DF3 。
再次使用圖9a作為參考實(shí)例。已存儲的校驗(yàn)和QOO現(xiàn)在最初為Q00=a*(D00+D10+D20+...+DF0)。使用RAID-3行嘗試糾正錯(cuò)誤之后,已存儲的校驗(yàn)和變?yōu)镼modOO=a*(DOO+D10+D20+...+DFO)+w02=QOO+w02。重新生成的校驗(yàn)和為Q00,=a*(D00+D10+D20+...+DF0+z02+zl2+z22+...zF2)。當(dāng)重新生成的校驗(yàn)和與已存儲的校驗(yàn)和比較時(shí),結(jié)果 為 S00=Qmod00+Q00,=Q00+w02+Q00,
=a*(z02+zl2+z22+...zF2)+w02。該結(jié)果除以a來獲得已存儲的數(shù)據(jù)值,得
26出SOO/a= z02+zl2+z22+.. .zF2+w02/a。
在第三列中,檢索的第一校驗(yàn)和為Q02=W02+c*(D02+D12+...+DF2), 并且重新生成的校驗(yàn)和為 Q02,=c*(D02+D12+...+DF2+Z02+Z12+."+ZF2)。 因 此
S02=Q02+Q02,=W02+c*(Z02+Z12+...+ZF2)。很明顯,如果w02不等于0, 則S02/c不等于SOO/c。這防止了第一列和第三列中執(zhí)行的單個(gè)符號糾正為 同一糾正??梢詫γ總€(gè)DIMM上的第二冗余芯片中存儲的校驗(yàn)和執(zhí)行類似 的修改來改進(jìn)此方法。
可以看到,第一列和第三列中的第一 RAID-6校驗(yàn)和的解不同,因?yàn)?當(dāng)W02不為0時(shí),w02/a和w02/c不相等。在該實(shí)例中,嘗試通過RAID-6 糾正錯(cuò)誤將在DRAM芯片D62和D90中產(chǎn)生包含可由行RAID-3校驗(yàn)和 檢測到的錯(cuò)誤的數(shù)據(jù)。
下文示出當(dāng)應(yīng)用偏移時(shí),圖8中的第一情況(其中正確地假設(shè)第三 DIMM具有整體DIMM故障)仍有效。如上所述,使用RAID-3列方程 按如下方式糾正第三DIMM上的數(shù)據(jù)Dx2= Dx0+Dxl+Dx3+Px0,其中
x=0、 1、 2.....F。在嘗試使用RAID-3糾正第三DIMM上的錯(cuò)誤時(shí),結(jié)
果為右圖的錯(cuò)誤才莫式。D40和D42仍包含錯(cuò)誤e40。再次地,行RAID-3 未檢測到該錯(cuò)誤,因?yàn)檫@是同樣的錯(cuò)誤,因此會在執(zhí)行行RAID-3 "異或" 運(yùn)算期間被抵消。已存儲的P40與重新生成的P40,進(jìn)行比較以指示沒有錯(cuò) 誤。不過眾所周知,必定仍有至少一個(gè)錯(cuò)誤,因此算法繼續(xù)執(zhí)行并使用列 已修改的RAID-6方程,它們是帶有偏移的鎖定和糾正錯(cuò)誤的方程。
修改后的帶有偏移的 RAID-6 方程為 Q00=a*(D00+D10+D20+...+DF0) 、 Q01=b*( D01+Dll+D21+…+DFl)、 Q02=c*(D02+D12+D22+."+DF2),以及Q03=d*( D03+D13+D23+…+DF3)。 已存儲的校驗(yàn)和QOO現(xiàn)在最初為Q00=a*(D00+D10+D20+...+DF0)。使用 RAID-3行嘗試糾正錯(cuò)誤之后,已存儲的校驗(yàn)和變?yōu)?Qmod00=a*(D00+D10+D20+...+DF0)=Q00 。重新生成的校驗(yàn)和為 QOO,=a*(DOO+D10+D20+...+DFO+e40)。當(dāng)重新生成的校驗(yàn)和與已存儲的校驗(yàn)和比較時(shí),結(jié)果為SOO=QmodOO+QOO,=a*(e40)。經(jīng)過除法運(yùn)算后除 去a,得到e40,這與應(yīng)用偏移之前獲得的結(jié)果相同。
現(xiàn)在,對第三列執(zhí)行相同的運(yùn)算。已存儲的校驗(yàn)和Q02最初為 Q02-一(D02+D12+D22+…+DF2+e40)。使用RAID-3行嘗試糾正錯(cuò)誤之后, 已存儲的校驗(yàn)和變?yōu)镼mod02=c*(D02+D12+D22+...+DF2)=Q02。重新生 成的校驗(yàn)和為Q02,=c*(D02+D12+D22+...+DF2+e40)。當(dāng)重新生成的校驗(yàn) 和與已存儲的校驗(yàn)和比較時(shí),結(jié)果為S02=Qmod02+Q02,=c*(e40)。經(jīng)過 除法運(yùn)算后除去c,得到e40,這與應(yīng)用偏移之前獲得的結(jié)果相同。因此, 偏移在兩種情況下都正常工作。
圖10示出了在相當(dāng)少見的整體DIMM實(shí)效(此處也稱為DIMM故障) 與另一 DIMM上的兩個(gè)附加DRAM器件(此處也稱為DRAM芯片)錯(cuò) 誤同時(shí)發(fā)生時(shí)所出現(xiàn)的情況。在此,首先正確地假設(shè)第三DIMM具有整體 DIMM故障。如上所述,跨行使用RAID-3嘗試糾正錯(cuò)誤,得到左圖的錯(cuò) 誤模式。如上所述,無法使用RAID-3行校驗(yàn)和Pxy檢測到這些錯(cuò)誤???使用RAID-6列校驗(yàn)和檢測到這些錯(cuò)誤,但是,由于每列包含一個(gè)以上的 錯(cuò)誤,所以RAID-6無法鎖定和糾正錯(cuò)誤。如果假設(shè)每行包含一個(gè)錯(cuò)誤并 嘗試以上述方式對RAID-6方程進(jìn)行求解,則存在7%(根據(jù)18/255=0.0706 計(jì)算出的相對較高的概率)的檢測不到錯(cuò)誤的可能性。偏移乘數(shù)沒有作用, 因?yàn)闆]有與列校驗(yàn)和關(guān)聯(lián)的錯(cuò)誤。當(dāng)未檢測到錯(cuò)誤時(shí),解將會行對齊,從 而無法檢測問題。
可4吏用存在檢測(確定DIMM已安裝并確定DIMM屬性)和故障記
錄來提高本發(fā)明的示例性實(shí)施例的有效性。
圖lla-c示出了可由示例性實(shí)施例實(shí)現(xiàn)以執(zhí)行上述過程的示例性流程 圖。執(zhí)行所述過程流的機(jī)制可以通過位于存儲控制器308上的軟件和/或硬 件來實(shí)現(xiàn)。在備選示例性實(shí)施例中,所述機(jī)制的一部分位于存儲控制器308 上,所述機(jī)制的另一部分也位于一個(gè)或多個(gè)存儲器;f莫塊302上(例如,位 于集線器裝置312中,其中在存儲控制器308與存儲器模塊302之間共享 所述過程)。在另一備選示例性實(shí)施例中,所述機(jī)制的所有部分都位于主處理器310上。
參考圖lla,所述過程從方塊1102開始。在方塊1104,接收讀取請求(例如,主存儲高速緩存線讀取請求)。在方塊1106,判定響應(yīng)于所述讀取請求而返回的數(shù)據(jù)中是否存在錯(cuò)誤。如果所有校驗(yàn)子均不等于0,則存在錯(cuò)誤。如果不存在錯(cuò)誤,則所述過程繼續(xù)到方塊1108,其中將其所請求的數(shù)據(jù)返回請求方(例如,將正確數(shù)據(jù)傳送到高速緩存)。
如果在方塊1106判定存在錯(cuò)誤,則執(zhí)行方塊1112來判定錯(cuò)誤簽名是否為單數(shù)據(jù)符號錯(cuò)誤簽名(例如,px=i, Q0y-1以及Qly-l)。如果是,則執(zhí)行方塊1114以使用二維三角測量來鎖定符號錯(cuò)誤位置。在方塊1116,判定三角測量的結(jié)果是否為已知鎖定的(或釘扎的(pinned))單符號(SD1)錯(cuò)誤。對于多個(gè)錯(cuò)誤,可使用錯(cuò)誤釘扎來更確定地判定正確的錯(cuò)誤簽名,從而提高在遇到某種不明確的狀況時(shí)檢測和糾正稀有事件的有效性。如果三角測量的結(jié)果為已知釘扎的單符號(SD1) 4晉誤,如在方塊1116判定的,則所述過程繼續(xù)到方塊1120。如果否,則執(zhí)行方塊1118并通過保存位置和錯(cuò)誤類型來釘扎錯(cuò)誤。然后,過程繼續(xù)到方塊1120,其中使用PxO、 QOy或Qly校驗(yàn)和來通過保存到存儲器來糾正錯(cuò)誤(erasure)。然后,過程繼續(xù)到方塊1108。
如果在方塊1112判定所述錯(cuò)誤簽名不是單數(shù)據(jù)符號錯(cuò)誤簽名,則執(zhí)行方塊1122。執(zhí)行方塊1122來判定所述餘溪簽名是否為影響一行和一列(例如,Px-l, QOy-l或Qly-l)的單校驗(yàn)和錯(cuò)誤簽名。如果是,則執(zhí)行方塊1124以使用二維三角測量來鎖定符號錯(cuò)誤位置。在方塊1126,判定三角測量的結(jié)果是否為已知鎖定的(或釘扎的)單符號(SE1)錯(cuò)誤。如果是,則所述過程繼續(xù)到方塊1130。如果否,則執(zhí)行方塊1128并通過M位置和錯(cuò)誤類型來釘扎錯(cuò)誤。然后,過程繼續(xù)到方塊1130,其中重新生成PxO、QOy或Qly校驗(yàn)和并將其寫入存儲器。然后,所述過程繼續(xù)到方塊1108。
如果在方塊1122判定所述錯(cuò)誤簽名不是單校驗(yàn)和錯(cuò)誤簽名,則執(zhí)行方塊1132。執(zhí)行方塊1132來判定所述錯(cuò)誤簽名是否為雙校驗(yàn)和g簽名(例如,Px-l以及Q0y-1或Px和Qly-l)。如果是,則執(zhí)行方塊1136以使用二維三角測量來鎖定符號4晉誤位置。在方塊1138,判定三角測量的結(jié)果 是否為已知鎖定的(或釘扎的)雙符號(SD2)錯(cuò)誤。如果是,則所述過 程繼續(xù)到方塊1142。如果否,則執(zhí)行方塊1140并通過保存位置和錯(cuò)誤類 型來釘扎餘溪。然后,過程繼續(xù)到方塊1141,其中重新生成PxO、 Q0y或 Qly校驗(yàn)和并將其寫入存儲器。然后,所述過程繼續(xù)到方塊1108。
如果在方塊1132判定所述g簽名不是雙校驗(yàn)和錯(cuò)誤簽名,則執(zhí)行圖 lib中的方塊1134。接下來,執(zhí)行圖lib中的方塊1144來判定所述錯(cuò)誤 簽名是否為影響兩行和兩列(例如,Px=2, Q0y=2以及Qly-2)的雙數(shù)據(jù) 符號錯(cuò)誤簽名。如果是,則執(zhí)行方塊1146以使用二維三角測量來鎖定兩個(gè) 符號錯(cuò)誤位置。在方塊1148,判定三角測量的結(jié)果是否為兩個(gè)已知鎖定的 單符號(SD1)錯(cuò)誤。如果是,則所述過程繼續(xù)到方塊1152。如果否,則 執(zhí)行方塊1150并通過保存位置和錯(cuò)誤類型來釘扎錯(cuò)誤。在方塊1152,使 用PxO、 QOy或Qly校驗(yàn)和來糾正兩個(gè)清除錯(cuò)誤并將已糾正的數(shù)據(jù)寫入存 儲器。然后,所述過程繼續(xù)到圖lla中的方塊1110。
如果在方塊1144判定所述錯(cuò)誤簽名不是影響兩行和兩列的雙數(shù)據(jù)符 號錯(cuò)誤簽名,則執(zhí)行方塊1154來判定所述錯(cuò)誤簽名是否為影響一行和兩列
(例如,Px=l以及Q0y=2和Qly=2 )的雙數(shù)據(jù)符號錯(cuò)誤簽名。如果是, 則執(zhí)行方塊1156以使用二維三角測量來鎖定這兩個(gè)符號錯(cuò)誤位置。在方塊 1158,判定三角測量的結(jié)果是否為兩個(gè)已知釘扎的單符號(SD1)錯(cuò)誤。 如果是,則所述過程繼續(xù)到方塊1162。如果否,則執(zhí)^f于方塊1160并通過 保存位置和錯(cuò)誤類型來釘扎錯(cuò)誤。在方塊1162,使用QOy或Qly校驗(yàn)和 來糾正兩個(gè)清除錯(cuò)誤并將已糾正的數(shù)據(jù)寫入存儲器。然后,所述過程繼續(xù) 到圖lla中的方塊1110。
如果在方塊1154判定所述錯(cuò)誤簽名不是影響一行和兩列的雙數(shù)據(jù)符 號錯(cuò)誤簽名,則執(zhí)行方塊1164來判定所述錯(cuò)誤簽名是否為影響兩行和一列
(例如,Px=2以及QOy=l和Qly=l)的雙數(shù)據(jù)符號錯(cuò)誤簽名。如果是, 則執(zhí)行方塊1168以使用二維三角測量來鎖定這兩個(gè)符號錯(cuò)誤位置。在方塊 1170,判定三角測量的結(jié)果是否為兩個(gè)已知釘扎的單符號(SD1)錯(cuò)誤。如果是,則所述過程繼續(xù)到方塊1174。如果否,則執(zhí)行方塊1172并通過保存位置和錯(cuò)誤類型來釘扎錯(cuò)誤。在方塊1174,使用PxO校驗(yàn)和來糾正兩個(gè)清除錯(cuò)誤并將已糾正的數(shù)據(jù)寫入存儲器。然后,所述過程繼續(xù)到圖lla中的方塊1110。
如果在方塊1164判定所述鐐誤簽名不是影響兩行和一列的雙數(shù)據(jù)符號錯(cuò)誤簽名,則執(zhí)行圖3c中的方塊1166。接下來,執(zhí)行圖3c中的方塊1176來判定所述錯(cuò)誤簽名是否為影響所有行和一列(例如,Px>2以及Q0y-1和Qly-l)的單DIMM錯(cuò)誤簽名。如果是,則執(zhí)行方塊1178以使用二維三角測量來鎖定DIMM位置。在方塊1180,判定三角測量的結(jié)果是否為兩個(gè)已知釘扎的單DIMM (SD5)錯(cuò)誤。如果是,則所述過程繼續(xù)到方塊1184。如果否,則執(zhí)行方塊1182并通過保存位置和錯(cuò)誤類型來釘扎DIMM。在方塊1184,使用PyO校驗(yàn)和來糾正清除錯(cuò)誤并將已糾正的數(shù)據(jù)寫入存儲器。然后,所述過程繼續(xù)到圖lla中的方塊lllO。
如果在方塊1176判定所述錯(cuò)誤簽名不是影響所有行和一列的單DIMM錯(cuò)誤簽名,則執(zhí)行方塊1186來判定所述錯(cuò)誤簽名是否為影響所有行和兩列(例如,Px>2以及Q0y=2和Qly=2 )的單DIMM和單DRAM錯(cuò)誤簽名。如果是,則執(zhí)行方塊1190以在假設(shè)DIMM故障(D0a、 Dla、D2a、 ... Dfa、 Q0a、 Qla,其中Q0y和Qly為y=a、 b)的情況下嘗試糾正錯(cuò)誤。上面已參考圖7-10描述了由方塊1190-1198執(zhí)行的過程。接下來,執(zhí)行方塊1192以查找使用Q0a、 Qla、 Q0b以及Qlb RAID-6算法鎖定和糾正的其他符號4晉誤Dxa和Dxb。然后執(zhí)行方塊1193以重新生成所有校驗(yàn)子并檢驗(yàn)它們均不為0。
然后執(zhí)行方塊1194以在假設(shè)DIMM故障(D0b、 Dlb、 D2b、 ...Dfb、Q0b、 Qlb,其中Q0y和Qly為y=a、 b )的情況下嘗試糾正錯(cuò)誤。接下來,執(zhí)行方塊1195以查找使用Q0a、 Qla、 Q0b以及Qlb RAID-6算法鎖定和糾正的其他符號錯(cuò)誤Dxa和Dxb。然后執(zhí)行方塊1196以重新生成所有校驗(yàn)子并檢驗(yàn)它們均不為0。
接下來,執(zhí)行方塊1197來判定是否只有DIMM a或只有DIMM b產(chǎn)生全部非0校驗(yàn)子。如果只有DIMM a或只有DIMM b產(chǎn)生全部非0校驗(yàn) 子(即,錯(cuò)誤是在DIMM a或DIMM b ),則執(zhí)行方塊1198以通過將已 糾正的值寫入存儲器來返回與所述全部非0校驗(yàn)子關(guān)聯(lián)的已糾正的數(shù)據(jù), 然后,所述過程繼續(xù)到圖11a中的方塊1110。
如果在方塊1197判定DIMM a和DIMM b都產(chǎn)生全部非0的校驗(yàn)子 (即,錯(cuò)誤可在DIMM a或DIMM b ),則所述過程繼續(xù)到方塊1188。此
和單DRAM錯(cuò)誤簽名,則所述過程繼續(xù)到方塊1188。在方塊1188,判定 所述錯(cuò)誤為無法檢測的存儲器錯(cuò)誤。
圖12示出了可用于執(zhí)行二維三角測量的示例性過程流。所述過程從方 塊1202開始。在方塊1204,通過從存儲器讀取的數(shù)據(jù)重新生成和寫入PxO、 Q0y或Qly校驗(yàn)和并將它們添加到已存儲的校驗(yàn)和。在方塊1206,判定與 數(shù)據(jù)關(guān)聯(lián)的所有校驗(yàn)子是否均等于0 (即,數(shù)據(jù)沒有錯(cuò)誤)。如果數(shù)據(jù)沒 有4^:,則所述過程繼續(xù)到方塊1208,并在方塊1210將結(jié)果"無錯(cuò)誤" 返回給請求方。
如果在方塊1206判定數(shù)據(jù)包含餘溪,則執(zhí)行方塊1212以識別PxO的 所有x和Qzy的所有y中非0的校驗(yàn)子。在方塊1214,將所述錯(cuò)誤分類為 (例如,使用圖13中的表)SD1、 SD2、 SD3、 SD4、 SD5、 SD6、 SE1或 SE2。接下來,執(zhí)行方塊1216并針對分類為SD1、 SD2、 SD3和SD4的錯(cuò) 誤將所述符號錯(cuò)誤的位置設(shè)為Dxy。然后,執(zhí)行方塊1218并針對分類為 SD5的錯(cuò)誤將所述符號錯(cuò)誤的位置設(shè)為DIMM DOy、 Dly、 D2y、 ...Dfy、 QOy、 Qly。隨后執(zhí)行方塊1220并針對分類為SD6的錯(cuò)誤將所述符號錯(cuò)誤 的位置設(shè)為DIMMD0a、 Dla、 D2a、…Dfa、 Q0a和Qla或者D0b、 Dlb、 D2b、 ...Dfb、 Q0b和Qlb,其中y=a、 b。接著執(zhí)行方塊1222并將其他符 號錯(cuò)誤的位置設(shè)為由Q0a、 Qla、 Q0b和Qlb RAID-6算法在猜想正確的 DIMM和匹配校驗(yàn)子之后鎖定和糾正的Dxa和Dxb。過程然后繼續(xù)到方塊 1210。
圖13包括參考圖lla-c和圖12描述的過程所使用的錯(cuò)誤分類的匯總。
32在此所述的過程和分類本質(zhì)上作為示例,在不偏離本發(fā)明的范圍的情 況下,示例性實(shí)施例也可以使用其他過程流和分類。
在示例性實(shí)施例中,集線器裝置可以通過多點(diǎn)或點(diǎn)對點(diǎn)總線結(jié)構(gòu)(可 以進(jìn)一步包括與一個(gè)或多個(gè)附加集線器裝置的串接連接)與存儲控制器相 連。存儲器訪問請求由存儲控制器通過總線結(jié)構(gòu)(例如,存儲器總線)傳 輸?shù)竭x定的集線器(多個(gè))。響應(yīng)于收到所述存儲器訪問請求,所述集線 器裝置對存儲器訪問請求進(jìn)行轉(zhuǎn)譯以控制存儲器件存儲來自集線器裝置的 寫入數(shù)據(jù)或向集線器裝置提供讀取數(shù)據(jù)。讀取數(shù)據(jù)被編碼為一個(gè)或多個(gè)通 信分組并通過存儲器總線(多個(gè))傳輸?shù)酱鎯刂破鳌?br> 在備選示例性實(shí)施例中,存儲控制器(多個(gè))可與一個(gè)或多個(gè)處理器 芯片以及支持邏輯集成在一起、封裝在獨(dú)立芯片(通常被稱為"北橋"芯 片)中、包含在帶有一個(gè)或多個(gè)處理器和/或支持邏輯的多芯片載體內(nèi)、或 封裝為最適合應(yīng)用/環(huán)境的各種備選形式。上述任意一種解決方案可以采用 也可不采用一條或多條窄/高速鏈路以連接到一個(gè)或多個(gè)集線器芯片和/或 存儲器件。
存儲器模塊通過各種技術(shù)來實(shí)現(xiàn),其中包括DIMM、單列直插存儲器 模塊(SIMM)和/或其他存儲器模塊或卡結(jié)構(gòu)。 一般而言,DIMM指主要 由在一側(cè)或兩側(cè)上的隨^取存儲器(RAM)集成電路或小片組成的小型 電路板,板的兩側(cè)均有信號引腳和/或電源引腳。相比之下,SIMM是主要 由在一側(cè)或兩側(cè)上的RAM集成電路或小片組成的小型電路板或M,沿 一個(gè)較長的邊沿具有一行引腳。圖1中所示的DIMM在示例性實(shí)施例中包 括168個(gè)引腳,而后面的DIMM已凈皮構(gòu)想為具有100到300以上個(gè)引腳。 在本文所述的示例性實(shí)施例中,存儲器才莫塊可包括兩個(gè)或更多個(gè)集線器裝 置。
在示例性實(shí)施例中,存儲器總線,皮構(gòu)想為使用到存儲器模塊上的集線 器裝置的多點(diǎn)連接和/或使用點(diǎn)對點(diǎn)連接。被稱為下游總線的控制器接口 (或存儲器總線)的下游部分可以包括命令、地址、數(shù)據(jù)和其他祐發(fā)送到 存儲器模塊上的集線器裝置的操作、初始化或狀態(tài)信息。每個(gè)集線器裝置只是通過旁路電路將信息轉(zhuǎn)發(fā)給后續(xù)的集線器裝置(多個(gè));在判定以下 游集線器裝置為目標(biāo)的情況下接收、解譯和再次驅(qū)動信息;在不首先解釋 信息以確定目標(biāo)接收方的情況下再次驅(qū)動部分或全部信息;或者執(zhí)行這些 選項(xiàng)的子集或組合。
被稱為上游總線的存儲器總線的上游部分返回被請求的讀取數(shù)據(jù)和/ 或錯(cuò)誤、狀態(tài)或其他操作信息,并且此信息可以通過旁路電路轉(zhuǎn)發(fā)給后續(xù) 的集線器裝置;可以在確定以處理器復(fù)合體中的上游集線器裝置和/或存儲 控制器為目標(biāo)的情況下^皮接收、解譯和再次驅(qū)動;可以在不首先解釋4言息 以確定目標(biāo)接收方的情況下被部分或全部地再次驅(qū)動;或者執(zhí)行這些選項(xiàng) 的子集或組合。
在備選示例性實(shí)施例中,點(diǎn)對點(diǎn)總線包括交換器或旁路機(jī)制,它們可 以在下游通信期間(從存儲控制器到存儲器模塊上的集線器裝置的通信) 將總線信息引導(dǎo)到兩個(gè)或更多個(gè)可能的集線器裝置之一,以及經(jīng)常通過一 個(gè)或多個(gè)上游集線器裝置引導(dǎo)上游信息(從存儲器模塊上的集線器裝置到 存儲控制器的通信)。其他實(shí)施例包括使用本領(lǐng)域的技術(shù)人員了解的連接 (continuity)模塊,后者例如在串接互連存儲系統(tǒng)中可置于存儲控制器與 第一安裝的集線器裝置(即,與一個(gè)或多個(gè)存儲器件通信的集線器裝置) 之間,以使所述存儲控制器和所述第一安裝的集線器裝置間的任何中間集 線器裝置位置都包括用于在所述存儲控制器和所述第 一安裝的集線器裝置 之間傳輸信息的裝置,即使當(dāng) 一個(gè)或多個(gè)中間集線器裝置位置不包括集線 器裝置時(shí)也是如此。所述連接才莫塊(多個(gè))可根據(jù)任意總線限制安裝在任 何模塊位置(多個(gè)),所述限制包括第一位置(距離主存儲控制器最近)、 最后位置(位于所包括的任何終端之前)或任何中間位置(多個(gè))。在多 模塊串接互連總線結(jié)構(gòu)中,使用所述連接模塊尤其有利,其中位于存儲器 模塊上的中間集線器裝置被移除并代之以連接模塊,以使系統(tǒng)可在移除中 間集線器裝置之后繼續(xù)運(yùn)行。在更常見的實(shí)施例中,連接模塊(多個(gè))包 括互連接線以將所有所需信號從輸入(多個(gè))傳輸?shù)较鄳?yīng)的輸出(多個(gè)), 或通過中繼裝置進(jìn)行再次驅(qū)動。連接模塊(多個(gè))可進(jìn)一步包括非易失性存儲器件(例如EEPROM),但不包括主存儲器存儲裝置。
在示例性實(shí)施例中,存儲系統(tǒng)包括一個(gè)或多個(gè)位于一個(gè)或多個(gè)存儲器 模塊上的集線器裝置,所述存儲器模塊通過串接互連存儲器總線與所述存 儲控制器相連,但是可以實(shí)現(xiàn)諸如點(diǎn)對點(diǎn)總線、多點(diǎn)存儲器總線或共享總 線之類的其他存儲器結(jié)構(gòu)。取決于所用的信令方法、目標(biāo)操作頻率、空間、 功率、成本以及其他約束,可以考慮各種備選總線結(jié)構(gòu)。在使用電氣互連 的系統(tǒng)中,點(diǎn)對點(diǎn)總線可以提供最佳性能,因?yàn)榕c具有分支信號線路、交 換設(shè)備或短分支(stub)的總線結(jié)構(gòu)相比,其可以減少信號衰減。但是, 在需要與多個(gè)裝置或子系統(tǒng)通信的系統(tǒng)中使用時(shí),這種方法經(jīng)常造成顯著 增加的組件成本并增加系統(tǒng)功耗,并且由于需要中間緩沖和/或再驅(qū)動,它 還會減小潛在的存儲器密度。
盡管附圖中未示出,但是存儲器模塊或集線器裝置也可包括諸如"存 在檢測"總線之類的獨(dú)立總線、12C總線和/或SMBus,后者用于包括確 定集線器裝置和/或存儲器模塊特性(通常在接通電源后執(zhí)行此操作),將 錯(cuò)誤或狀態(tài)信息才艮告給系統(tǒng),在接通電源后或正常運(yùn)行期間配置集線器裝 置(多個(gè))和/或存儲子系統(tǒng)(多個(gè))在內(nèi)的一個(gè)或多個(gè)用途或其他用途。 取決于總線特性,該總線還提供一種手段,使集線器裝置和/或存儲器模塊 (多個(gè))可將操作的有效完成報(bào)告給存儲控制器,或在執(zhí)行主存儲控制器 請求期間確定發(fā)生的故障。
可通過添加交換設(shè)備獲取與通過點(diǎn)對點(diǎn)總線結(jié)構(gòu)得到的性能類似的性 能。上述和其他解決方案以較低的功耗增加了存儲器封裝密度,同時(shí)保留 了點(diǎn)對點(diǎn)總線的許多特性。多點(diǎn)總線提供了備選解決方案,盡管通常被限 制為較低的操作頻率,但是它的成本/性能對許多應(yīng)用都非常有利。光纖總 線解決方案可顯著增加點(diǎn)對點(diǎn)應(yīng)用或多點(diǎn)應(yīng)用中的潛在頻率和帶寬,但是 會對成本和空間造成影響。
如此處所用,術(shù)語"緩沖器"或"緩沖器件"指臨時(shí)存儲單元(如在 計(jì)算機(jī)中),尤其是指以一種速率接受信息并以另一速率傳輸信息的裝置。 在示例性實(shí)施例中,緩沖器是在兩個(gè)信號之間提供兼容性(例如,更改電壓值或電流的能力)的電子器件,術(shù)語"集線器"有時(shí)與術(shù)語"緩沖器" 可互換地使用。集線器是包含多個(gè)與若干其他裝置相連的端口的裝置。端
口用作提供適當(dāng)I/O功能的接口的一部分(例如,端口可用于通過點(diǎn)對點(diǎn)
鏈路或總線之一發(fā)送和接收數(shù)據(jù)、地址,以及控制信息)。集線器可以是 將若干系統(tǒng)、子系統(tǒng)或網(wǎng)絡(luò)連接在一起的中央裝置。無源集線器可以只是 轉(zhuǎn)發(fā)消息,而有源集線器或中繼器放大和刷新否則會在遠(yuǎn)距離傳送中衰減 的數(shù)據(jù)流。如此處所用,術(shù)語"集線器裝置"指包括用于執(zhí)行存儲功能的 邏輯(硬件和/或軟件)的集線器芯片。
同時(shí)如此處所用,術(shù)語"總線"指連接計(jì)算機(jī)內(nèi)的兩個(gè)或更多個(gè)功能 單元的一組導(dǎo)線之一(例如,接線、印刷電路板排線或集成電路中的連接)。 數(shù)據(jù)總線、地址總線和控制信號,無論名稱為何,構(gòu)成了一條總線,因?yàn)?它們彼此缺一不可。總線可包括多個(gè)形成以電子方式連接兩個(gè)或更多個(gè)收 發(fā)器、發(fā)送器和/或接收器的主傳輸路徑的信號線,每個(gè)信號線都具有兩個(gè) 或更多個(gè)連接點(diǎn)。術(shù)語"總線"與術(shù)語"通道"相比,后者通常用于描述 與存儲系統(tǒng)中的存儲控制器相關(guān)的"端口,,的功能,并且可能包括一條或 多條總線或一組或多組總線。如此處所用,術(shù)語"通道"指存儲控制器上
的端口 。注意,該術(shù)語通常與I/O或其他外圍設(shè)備結(jié)合使用,但是術(shù)語"通
道"已被一些人用來描述處理器或存儲控制器與 一個(gè)或多個(gè)存儲子系統(tǒng)之
一間的接口。
進(jìn)一步地,如此處所述,術(shù)語"菊鏈"指一種總線連接結(jié)構(gòu),其中,
例如,裝置A與裝置B相連,裝置B與裝置C相連等。最后一個(gè)裝置通 常與電阻器或終端器相連。所有裝置接收相同的信號或者,與簡單的總線 相比,每個(gè)裝置都可以在傳輸一個(gè)或多個(gè)信號之前對其進(jìn)行修改。如此處 所用,"串接"或"串接互連"指一系列級或單元或互連聯(lián)網(wǎng)裝置(通常 為集線器)集合,其中集線器用作邏輯中繼器,進(jìn)一步允許將合并的數(shù)據(jù) 匯入現(xiàn)有的數(shù)據(jù)流。同時(shí)如此所用,術(shù)語"點(diǎn)對點(diǎn)"總線和/或鏈路指其中 每條都包括一個(gè)或多個(gè)終端器的一條或多個(gè)信號線。在點(diǎn)對點(diǎn)總線和/或鏈 路中,每條信號線都具有兩個(gè)收發(fā)器連接點(diǎn),每個(gè)收發(fā)器連接點(diǎn)都與發(fā)射器電路、接收器電路或收發(fā)器電路相連。信號線指一條或多條用于傳輸至
少一個(gè)邏輯信號的電氣導(dǎo)線或光學(xué)載體,通常^L配置為單個(gè)載體或兩個(gè)或 更多采用互絞、平行或同心排列的載體。
存儲器件一般被定義為主要包括存儲器(存儲裝置)單元的集成電路, 如DRAM(動態(tài)隨才A^取存儲器)、SRAM(靜態(tài)隨4踏^#儲器)、FeRAM (鐵電RAM) 、 MRAM (磁性隨才一取存儲器)、閃存以及采用電、光、
動態(tài)存儲器件類型可包括諸如FPM DRAM (快速頁面4莫式動態(tài)隨4;u^取 存儲器)、EDO (擴(kuò)展數(shù)據(jù)輸出)DRAM、 BEDO (突發(fā)EDO) DRAM 之類的異步存儲器件以及SDR (單倍數(shù)據(jù)速率)同步DRAM、 DDR (雙 倍數(shù)據(jù)速率)同步DRAM或諸如DDR2、 DDR3、 DDR4之類的任何預(yù)期 后續(xù)器件以及諸如通?;谙嚓P(guān)DRAM上的基本功能、特性和/或接口的 圖形RAM、視頻RAM、 LP RAM (低功耗DRAM)之類的相關(guān)技術(shù)。
存儲器件的可用形式包括芯片(小片)和/或具有各種類型和配置的單 芯片封裝或多芯片封裝。在多芯片封裝中,存儲器件與諸如其他存儲器件、 邏輯芯片、模擬器件以及可編程器件之類的其他器件類型封裝在一起,并
且還可包括諸如電阻器、電容器以及電感器之類的無源器件。這些封裝可 以包括集成散熱或其他冷卻增強(qiáng)裝置,后者可進(jìn)一步與緊挨的載體或另一 鄰近的載體或排熱系統(tǒng)相連。
模塊支持器件(例如緩沖器、集線器、集線器邏輯芯片、寄存器、PLL、 DLL、非易失性存儲器等)可以包括多個(gè)獨(dú)立的芯片和/或組件,可以作為 多個(gè)獨(dú)立的芯片被組合到一個(gè)或多個(gè)S^Ji,可以被組合到單個(gè)封裝中或 者甚至被集成到單個(gè)器件上,具體取決于技術(shù)、功耗、空間、成本以及其 他權(quán)衡。此外,還可以根據(jù)技術(shù)、功耗、空間、成本以及其他權(quán)衡將諸如 電阻器、電容器之類的一個(gè)或多個(gè)各種無源器件集成到支持芯片封裝上, 或集成到基&上、電路板上或原始卡(raw card)本身。這些封裝可以包 括集成的散熱或其他冷卻增強(qiáng)裝置,后者可進(jìn)一步與緊挨的載體或另 一鄰 近的載體或排熱系統(tǒng)相連。存儲器件、集線器、緩沖器、寄存器、時(shí)鐘器件、無源以及其他存儲 支持器件和/或組件可以通過包括熔接互連、傳導(dǎo)粘合、套接結(jié)構(gòu)、加壓接 合的各種方法以及允許經(jīng)由電、光或備選手段進(jìn)行兩個(gè)或更多器件間的通 信的其他方法與存儲子系統(tǒng)和/或集線器裝置相連。
一個(gè)或多個(gè)存儲器模塊(或存儲子系統(tǒng))和/或集線器裝置可以通過諸 如熔接互連、連接器、加壓M、傳導(dǎo)粘合、光纖互連之類的一種或多種 方法以及其他通信和供電方法與存儲系統(tǒng)、處理器復(fù)合體、計(jì)算機(jī)系統(tǒng)或 其他系統(tǒng)環(huán)境進(jìn)行電連接。連接器系統(tǒng)可包括匹配連接器(公/母)、與公 /母連接器匹配的載體上的導(dǎo)電接點(diǎn)和/或引腳、光學(xué)連接、壓力接點(diǎn)(經(jīng)常 與保持機(jī)構(gòu)結(jié)合使用)和/或各種其他通信和供電方法中的 一種或多種?;?連(多個(gè))可以沿著存儲器組合件的一個(gè)或多個(gè)邊緣方文置和/或置于與存儲 子系統(tǒng)的邊緣具有一^J巨離的位置,具體取決于諸如便于升^/修復(fù)、可用 空間/容量、熱傳輸、組件大小和形狀以及其他相關(guān)的物理、電、光、視覺 /物理接近之類的應(yīng)用要求。存儲器模塊上的電氣互連通常被稱為接點(diǎn)或引
腳或彈片(tab)。連接器上的電氣互連通常祐:稱為接點(diǎn)或引腳。
如此處所用,術(shù)語"存儲子系統(tǒng)"指(但不限于) 一個(gè)或多個(gè)存儲 器件; 一個(gè)或多個(gè)存儲器件及關(guān)聯(lián)的接口和/或計(jì)時(shí)/控制電路;以t或者 一個(gè)或多個(gè)與存儲緩沖器、集線器裝置和/或交換器結(jié)合使用的存儲器件。 術(shù)語"存儲子系統(tǒng)"還指一個(gè)或多個(gè)存儲器件,除了任何關(guān)聯(lián)的接口和/ 或計(jì)時(shí)/控制電路和/或存儲緩沖器、集線器裝置或交換器以外,被裝配在基 板、卡、模塊或相關(guān)配件,其還可包括以電氣方式將存儲子系統(tǒng)與其他電 路進(jìn)行連接的連接器或類似裝置。此處所述的存儲器模塊還可以稱為存儲 子系統(tǒng),因?yàn)樗鼈儼ㄒ粋€(gè)或多個(gè)存儲器件和集線器裝置。
位于存儲子系統(tǒng)和/或集線器裝置本地的其他功能包括寫入和/或讀取 緩沖器、 一級或多級高速緩沖存儲器、本地預(yù)取邏輯、數(shù)據(jù)加密/解密、壓 縮/解壓縮、協(xié)議轉(zhuǎn)譯、命令優(yōu)先排序邏輯、電壓和/或電平轉(zhuǎn)換、錯(cuò)誤檢測 和/或糾正電路、數(shù)據(jù)清除、本地電源管理電路和/或報(bào)告、操作和/或狀態(tài) 寄存器、初始化電路、性能監(jiān)測和/或控制、 一個(gè)或多個(gè)協(xié)處理器、搜索引擎(多個(gè))以及之前位于其他存儲子系統(tǒng)中的其他功能。通過將功能置于 存儲子系統(tǒng)本地,通??梢栽黾犹囟üδ艿男阅?,同時(shí)利用子系統(tǒng)內(nèi)未使 用的電路。
存儲子系統(tǒng)支持器件(多個(gè))可以直接與連接存儲器件(多個(gè))的同 一基板或配件相連,也可以安裝到同樣使用各種塑料、硅、陶瓷或其他材 料中的一種或多種制造的單獨(dú)的內(nèi)插器或基板上,所述其他材料包括電、 光或其他通信路徑以使支持器件(多個(gè))與存儲器件(多個(gè))和/或存儲器 或計(jì)算機(jī)系統(tǒng)上的其他元件在功能上互連在一起。
可以使用多種信令方式中的一種或多種來沿著總線、通道、鏈路或適 用于互連方法的其他命名約定傳輸信息(例如,分組)。這些信令方式包 括諸如單端信號傳輸、差分信號傳輸、光信號傳輸或其他傳輸方式之類的 方法,其中電信號傳輸進(jìn)一步包括諸如使用單級或多級方式的電壓或電流
信令之類的方法。信號還可使用諸如時(shí)間或頻率、非歸0、相移鍵控、幅
度調(diào)制以及其他方式之類的方法進(jìn)行調(diào)制。電壓電平預(yù)期持續(xù)降低,從
1.5V、 1.2V、 1V—直到更低的信號電壓,其應(yīng)與相關(guān)集成電路本身的操作 所需的降低的電源電壓一致(但通常兩者無關(guān))。
可以在存儲子系統(tǒng)和存儲系統(tǒng)本身內(nèi)使用一種或多種定時(shí)方法,其中 包括全局定時(shí)、源同步定時(shí)、編碼定時(shí)或這些方法和其他方法的組合。時(shí) 鐘信令可能與信號線本身的信令相同,或者可以使用所列出的或備選的方 法中的一種對設(shè)定的時(shí)鐘頻率(多個(gè))以M各種子系統(tǒng)內(nèi)設(shè)定的時(shí)鐘數(shù) 有利的方法。單個(gè)時(shí)鐘可以與去往和來自存儲器的所有通信,以及存儲子 系統(tǒng)內(nèi)的所有定時(shí)功能關(guān)聯(lián),或者可以使用諸如上文所述的一種或多種方 法來提供多個(gè)時(shí)鐘。使用多個(gè)時(shí)鐘時(shí),存儲子系統(tǒng)內(nèi)的功能與該子系統(tǒng)提 供的唯一時(shí)鐘關(guān)聯(lián),或者可以基于從來自或和去往存儲子系統(tǒng)的信息的相 關(guān)時(shí)鐘導(dǎo)出的時(shí)鐘(例如與編碼時(shí)鐘關(guān)聯(lián))。備選地,唯一的時(shí)鐘用于傳 輸?shù)酱鎯ψ酉到y(tǒng)的信息,而單獨(dú)的時(shí)鐘用于從一個(gè)(或多個(gè))存儲子系統(tǒng) 提供的信息。時(shí)鐘本身能夠以通信或工作頻率或通信或工作頻率的倍頻運(yùn) 行,并且可以相對于數(shù)據(jù)、命令或地址信息被邊對齊、居中對齊或置于備選計(jì)時(shí)位置。
傳送到存儲子系統(tǒng)(多個(gè))的信息一般包括地址、命令和數(shù)據(jù),以及 通常與請求或報(bào)告狀態(tài)或錯(cuò)誤狀況、重置記憶、完成存儲器或邏輯初始化 以及其他功能、配置或相關(guān)信息關(guān)聯(lián)的其他信號。從存儲子系統(tǒng)(多個(gè)) 傳遞的信息包括傳送到存儲子系統(tǒng)(多個(gè))的任何或全部信息,但是一般 不包括地址和命令信息。此信息可以使用符合正常存儲器件接口規(guī)范(通 常在本質(zhì)上是平行的)的通信方法進(jìn)行傳送,此信息可編碼成"分組"結(jié) 構(gòu),后者可與將來的存儲接口一致,或僅#皮開發(fā)為增加通信帶寬和/或允許 子系統(tǒng)通過將收到的信息轉(zhuǎn)換為接收裝置(多個(gè))所需的格式來獨(dú)立于存 儲技術(shù)運(yùn)行。
存儲子系統(tǒng)的初始化可以根據(jù)可用接口總線、期望初始化速度、可用 空間、成本/復(fù)雜性目標(biāo)、子系統(tǒng)互連結(jié)構(gòu)、對可用于此目的和其他目的的 備選處理器(例如,服務(wù)處理器)的使用等,通過一種或多種方法完成。 在一個(gè)實(shí)施例中,使用高速總線完成存儲子系統(tǒng)(多個(gè))的初始化,其方 式一般為首先完成訓(xùn)練過程以建立可靠的通信,接著詢問與該子系統(tǒng)的各 個(gè)關(guān)聯(lián)組件和/或特性相關(guān)的屬性數(shù)據(jù)或"存在檢測"數(shù)據(jù),最后使用與該 系統(tǒng)內(nèi)的目標(biāo)操作關(guān)聯(lián)的信息編程相應(yīng)的器件。在串接系統(tǒng)中, 一般按照 存儲子系統(tǒng)沿著串接互連總線的位置順序,先建立與第 一存儲子系統(tǒng)的通 信,然后建立與后續(xù)(下游)子系統(tǒng)的通信。
第二初始化方法包括其中高速總線先以初始化過程期間的頻率運(yùn)行, 然后以正常運(yùn)行期間的第二頻率(通常更高)運(yùn)行的方法。在該實(shí)施例中, 由于增加了與低頻率運(yùn)行相關(guān)的時(shí)間裕度,因此可以在完成每個(gè)子系統(tǒng)的 詢問和/或編程之前啟動與串接互連總線上的所有存儲子系統(tǒng)的通信。
第三初始化方法包括串接互連總線以正常的操作頻率(多個(gè))運(yùn)行, 同時(shí)增加了與每個(gè)地址、命令和/或數(shù)據(jù)傳輸關(guān)聯(lián)的周期數(shù)。在一個(gè)實(shí)施例 中,正常運(yùn)行期間,可以在一個(gè)時(shí)鐘周期內(nèi)傳輸包含全部或部分地址、命 令和/或數(shù)據(jù)信息的分組,但是在初始化期間,相同數(shù)量和/或類型的信息需 要兩個(gè)、三個(gè)或更多周期來傳輸。因此,該初始化過程將4吏用"慢,,命令形式,而非"正常"命令形式,并且可以在各個(gè)子系統(tǒng)和存儲控制器利用
這些子系統(tǒng)中每個(gè)子系統(tǒng)內(nèi)包括的POR (加電復(fù)位)邏輯開機(jī)和/或重啟 之后的某個(gè)時(shí)刻自動i^v該模式。
第四初始化方法利用諸如存在檢測總線(如Ddl等人的美國專利第 5,513,135號中定義的總線)、I2C總線(諸如刊物21-C修4丁版7R8中的 168引腳DIMM系列之類的已發(fā)布JEDEC標(biāo)準(zhǔn)中定義的總線)和/或在使 用此類存儲器模塊的計(jì)算機(jī)系統(tǒng)中廣泛使用和記載的SMBUS之類的單獨(dú) 總線。此總線可以使用菊鏈/串接互連、多點(diǎn)或備選的結(jié)構(gòu)與存儲系統(tǒng)內(nèi)的 一個(gè)或多個(gè)才莫塊相連,從而提供獨(dú)立的詢問存儲子系統(tǒng)的裝置,將一個(gè)或 多個(gè)存儲子系統(tǒng)中的每個(gè)子系統(tǒng)編程為在整個(gè)系統(tǒng)環(huán)境中運(yùn)行,以及在系 統(tǒng)正常運(yùn)行期間根據(jù)系統(tǒng)環(huán)境中所需的或在系統(tǒng)環(huán)境中檢測到的性能、熱 度、配置或其他更改來調(diào)整其他時(shí)間的操作特性。
也可以結(jié)合上面所列的方法或獨(dú)立于這些方法使用其他初始化方法。 使用諸如上面的第四實(shí)施例中所述的單獨(dú)總線還具有以下優(yōu)點(diǎn)如與此共 同轉(zhuǎn)讓的Dell等人的美國專利第6,381,685號所述,提供同時(shí)用于初始化 和初始化以外的用途的獨(dú)立裝置,其中包括實(shí)時(shí)更改子系統(tǒng)的操作特性, 同時(shí)還提供了報(bào)告諸如使用率、溫度數(shù)據(jù)、故障信息或其他目標(biāo)之類的子 系統(tǒng)操作信息并對操作信息做出響應(yīng)的單獨(dú)裝置。
隨著蝕刻技術(shù)的改進(jìn),更好的工藝控制、低阻材料的使用、增加的面 積以及其他半導(dǎo)體工藝改進(jìn)、增加的器件電路密度(通常與增加的小片大 小結(jié)合)將有助于促進(jìn)增加集成器件功能以及集成過去在獨(dú)立器件上實(shí)現(xiàn) 的功能。該集成將用于提高目標(biāo)功能的整體性能,同時(shí)促進(jìn)增加存儲密度, 降低功耗,降低空間需求,降低成本以及帶來其他有利于制造商和客戶的 優(yōu)勢。該集成是一種自然進(jìn)化過程,需要對與系統(tǒng)關(guān)聯(lián)的基礎(chǔ)構(gòu)造塊進(jìn)行 結(jié)構(gòu)更改。
使用一種或多種錯(cuò)誤檢測和/或糾正方法,可以高度確保通信路徑、數(shù) 據(jù)存儲內(nèi)容以及與存儲系統(tǒng)或子系統(tǒng)的每個(gè)元件關(guān)聯(lián)的所有功能操作的集 成。各種元件中的任一元件或所有元件都包括錯(cuò)誤檢測和/或糾正方法,例如,CRC (循環(huán)冗余校驗(yàn))、EDC (錯(cuò)誤檢測和糾正)、奇偶校驗(yàn)或適于 此目的的其他編碼/解碼方法。進(jìn)一步的可靠性增強(qiáng)包括操作重試(克服諸 如與信息傳輸關(guān)聯(lián)的錯(cuò)誤之類的間歇錯(cuò)誤),使用一個(gè)或多個(gè)備選或替換 通信路徑來替換故障路徑和/或線路,在計(jì)算機(jī)、通信系統(tǒng)以及相關(guān)系統(tǒng)中 使用的互補(bǔ)-重新互補(bǔ)技術(shù)或備選方法。
隨著性能要求的增加,會更頻繁地在猶如點(diǎn)對點(diǎn)鏈路一樣簡單或猶如 多點(diǎn)結(jié)構(gòu)一樣復(fù)雜的總線上使用總線終端器??勺R別和/或考慮的終端方法 非常多,包括使用諸如電阻器、電容器、電感器之類的器件或這些器件的 任意組合,這些器件在信號線與電源電壓或地電位,端接電壓或另一信號 之間連接。終端器件(多個(gè))可以是無源或有源終端結(jié)構(gòu)的一部分,并且 可以位于沿一條或多條信號線的一個(gè)或多個(gè)位置上,以A/或者是傳輸器和 /或接收裝置(多個(gè))的一部分。終端器可以被選擇為與傳輸線的阻抗匹配, 或通過備選的方法選擇以最大化可用頻率、操作裕度以及成本、空間、功 耗和其他約束內(nèi)的相關(guān)屬性。
技術(shù)影響和優(yōu)勢包括在與存儲器件故障同時(shí)發(fā)生的存儲器模塊故障的 情況下以未受阻礙的狀態(tài)運(yùn)行存儲系統(tǒng)的能力。這可顯著提高存儲系統(tǒng)的 可用性和可^^務(wù)性。
如上所述,本發(fā)明的實(shí)施例可以采用由計(jì)算機(jī)實(shí)現(xiàn)的過程以及實(shí)施這 些過程的裝置的形式來實(shí)現(xiàn)。本發(fā)明的實(shí)施例還可以采用包含在諸如軟盤、 CD-ROM、硬盤或其他任何計(jì)算機(jī)可讀存儲介質(zhì)之類的有形介質(zhì)中存儲的 指令的計(jì)算機(jī)程序代碼的形式來實(shí)現(xiàn),其中,當(dāng)計(jì)算機(jī)程序代碼被加載到 計(jì)算機(jī)內(nèi)并由計(jì)算機(jī)執(zhí)行時(shí),計(jì)算機(jī)便成為用于實(shí)現(xiàn)本發(fā)明的裝置。本發(fā)
明也可以采用,例如,存儲在存儲介質(zhì),加載到計(jì)算機(jī)內(nèi)和/或由計(jì)算機(jī)執(zhí) 行,或4象通過電線或電纜,通過光纖,或通過電磁輻射那樣通過某種傳輸 介質(zhì)傳輸?shù)挠?jì)算機(jī)程序代碼的形式來實(shí)現(xiàn),其中,當(dāng)計(jì)算機(jī)程序代碼#> 載到計(jì)算機(jī)內(nèi)并由計(jì)算機(jī)執(zhí)行時(shí),計(jì)算機(jī)便成為用于實(shí)現(xiàn)本發(fā)明的裝置。 當(dāng)在通用微處理器上實(shí)現(xiàn)時(shí),計(jì)算機(jī)程序代碼段會配置微處理器以創(chuàng)建專 用邏輯電路。盡管參考示例性實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將理解, 可以在不偏離本發(fā)明的范圍的情況下做出各種更改,并且可以使用等效的 元件來替換本發(fā)明中的元件。
權(quán)利要求
1.一種檢測和糾正存儲系統(tǒng)中的錯(cuò)誤的存儲控制器,所述存儲控制器包括用于檢測所述存儲系統(tǒng)中的一個(gè)或多個(gè)錯(cuò)誤的裝置,所述存儲系統(tǒng)包括具有存儲器件的多個(gè)存儲器模塊,響應(yīng)于存儲命令而共同地訪問所述存儲器模塊;用于使用三角測量識別錯(cuò)誤類型以將所述一個(gè)或多個(gè)錯(cuò)誤隔離到存儲器件和存儲器模塊之一或兩者的裝置;以及用于使用水平地應(yīng)用于所述多個(gè)存儲器模塊中的存儲器件的第一ECC碼和垂直地應(yīng)用于一個(gè)存儲器模塊中的存儲器件的第二ECC碼來糾正所述一個(gè)或多個(gè)錯(cuò)誤,從而使所述存儲系統(tǒng)能夠在與存儲器件故障同時(shí)發(fā)生的存儲器模塊故障的情況下未受阻礙地運(yùn)行的裝置。
2. 如權(quán)利要求l中所述的存儲控制器,其中結(jié)合所述第二ECC碼來 使用偏移多重移動以確保所述糾正不會產(chǎn)生行對齊錯(cuò)誤和變得無法檢測。
3. 如權(quán)利要求1或2中所述的存儲控制器,其中在識別到故障存儲器 模塊時(shí),將所述故障存儲器模塊的身份用作所述第一 ECC糾錯(cuò)碼中的參 數(shù)以便提高所述存儲系統(tǒng)的可靠性。
4. 如任一上述權(quán)利要求中所述的存儲控制器,其中所述第一ECC碼 為RAID-3 ECC碼以及所述第二 ECC碼為RAID-6 ECC碼。
5. —種存儲系統(tǒng),包括與存儲控制器以及多個(gè)存儲器件通信的多個(gè)存儲器模塊;以及 如任一上ii^利要求中所述的存儲控制器。
6. 如權(quán)利要求5中所述的存儲系統(tǒng),其中所述多個(gè)存儲器模塊包括經(jīng) 由五個(gè)不同的通道與所述存儲控制器通信的五個(gè)存儲器模塊,所述五個(gè)存 儲器模塊包括四個(gè)存儲器模塊,其具有用于所述存儲器模塊的錯(cuò)誤檢測 和糾正的兩個(gè)存儲器件;以及一個(gè)存儲器模塊,其具有用于跨所述四個(gè)存 儲器模塊的g檢測和糾正的存儲器件。
7. —種檢測和糾正存儲系統(tǒng)中的錯(cuò)誤的方法,所述方法包括檢測所述存儲系統(tǒng)中的一個(gè)或多個(gè)錯(cuò)誤,所述存儲系統(tǒng)包括具有存儲 器件的多個(gè)存儲器模塊,響應(yīng)于存儲命令而共同地訪問所述存儲器模塊;使用三角測量識別錯(cuò)誤類型以將所述一個(gè)或多個(gè)錯(cuò)誤隔離到存儲器件 和存儲器才莫塊之一或兩者;使用水平地應(yīng)用于所述多個(gè)存儲器模塊中的存儲器件的第一 ECC碼 和垂直地應(yīng)用于一個(gè)存儲器模塊中的存儲器件的第二 ECC碼來糾正所述 一個(gè)或多個(gè)錯(cuò)誤,從而使所述存儲系統(tǒng)能夠在與存儲器件故障同時(shí)發(fā)生的 存儲器模塊故障的情況下未受阻礙地運(yùn)行。
8. 如權(quán)利要求7中所述的方法,其中結(jié)合所述第二 ECC碼來使用偏 移多重移動以確保所述糾正不會產(chǎn)生行對齊錯(cuò)誤和變得無法檢測。
9. 如權(quán)利要求7或8中所述的方法,其中在識別到故障存儲器模塊時(shí), 將所述故障存儲器模塊的身份用作所述第一 ECC糾錯(cuò)碼中的參數(shù)以便提 高所述存儲系統(tǒng)的可靠性。
10. 如權(quán)利要求7至9中的任一權(quán)利要求中所述的方法,其中所述第 一 ECC碼為RAID-3 ECC碼以及所述第二 ECC碼為RAID-6 ECC碼。
全文摘要
一種存儲系統(tǒng)中的錯(cuò)誤糾正和檢測的系統(tǒng)和方法。所述系統(tǒng)包括存儲控制器、多個(gè)存儲器模塊以及機(jī)制。所述存儲器模塊與所述存儲控制器以及多個(gè)存儲器件通信。所述機(jī)制檢測到所述存儲器模塊之一的故障可能與另一存儲器模塊上的存儲器件故障同時(shí)發(fā)生。所述機(jī)制允許所述存儲系統(tǒng)在存在存儲器模塊故障和存儲器件故障的情況下繼續(xù)未受阻礙地運(yùn)行。
文檔編號G06F11/10GK101681283SQ200880015751
公開日2010年3月24日 申請日期2008年6月10日 優(yōu)先權(quán)日2007年6月28日
發(fā)明者J·奧康納, K·高爾, L·拉斯特拉斯-莫塔諾, L·阿維斯, T·德威克特, T·戴爾, W·克拉克 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
贵溪市| 晴隆县| 北安市| 庄浪县| 金秀| 忻州市| 成都市| 高台县| 堆龙德庆县| 鹤壁市| 运城市| 卢湾区| 横峰县| 新化县| 璧山县| 仁寿县| 报价| 苏尼特左旗| 松江区| 出国| 信宜市| 合肥市| 米林县| 溧阳市| 高密市| 怀集县| 尉犁县| 皮山县| 平顺县| 乐安县| 洪江市| 荆门市| 岱山县| 九龙城区| 肇东市| 万安县| 抚州市| 随州市| 铜山县| 景泰县| 禹城市|