專利名稱:差錯控制的方法和存儲器系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請通常涉及計算機存儲器系統(tǒng)的差錯控制編碼方法,更具體地是涉及仍保持高水平可靠性的情況下,以小于一行的段來訪問差錯控制編碼數(shù)據(jù)。這種操作模式將被稱作子行訪問(subline access),其名稱來源于計算機存儲器系統(tǒng),其中高速緩存的行(line)具有固定尺寸,即對于IBM系統(tǒng)來說是128字節(jié)??紤]這種數(shù)據(jù)訪問模式的一個動機是增加效率;例如允許更多的并行訪問,來降低沖突、時延以及節(jié)電,雖然根據(jù)該應用還可能有許多其它原因來考慮這種選擇。
背景技術(shù):
代碼保護數(shù)據(jù)免于出錯。圖1圖示了計算機存儲器中的數(shù)據(jù)行,其中陰影部分代表數(shù)據(jù),而有空格部分代表冗余符號。為了論述的目的,數(shù)據(jù)行被拆分成數(shù)據(jù)子行(sublines),并且在數(shù)據(jù)子行之中分布冗余符號。當從存儲器中讀取數(shù)據(jù)行時,組合的冗余符號被用來提供檢錯/糾錯能力,從而保護數(shù)據(jù)的完整性。
當讀取碼字的一部分時,理所應當?shù)卣J為小段數(shù)據(jù)仍然應當利用某些檢錯/糾錯能力來得以保護。例如,如圖2中所示,該問題的一種普通″解決方案″是使每個子行本身具有整個碼字(按照最壞情況)所需的足夠糾錯能力。這當然會起作用,并且也提供了子行訪問間的最大獨立性/同時性,在某些情況下其可能變得很重要,但是通常造成需要較大開銷的過度浪費。
圖3中,圖示了DIMM(雙列直插式存儲器模塊)10,其包括并行操作的19個DRAM(動態(tài)隨機存取存儲器)設備,16個儲存數(shù)據(jù)的DRAM設備d1-d16、以及3個存儲冗余符號的冗余DRAM設備r1-r3。該圖中的每個DRAM設備有總共八個連接到存儲器集線器芯片12的I/O(輸入/輸出)管腳,其通過快速通信通道18與處理器芯片16的存儲器控制器14通信,并且每次訪問DRAM導致讀取或?qū)懭朐谧钌侔藗€連續(xù)傳送期間通過該八個I/O管腳發(fā)送的信息。本領(lǐng)域技術(shù)人員會認識到以上所述的是最小突發(fā)8×8 DRAM設備。圖4中可看到以上引用的DRAM設備的傳輸模式的圖示。顯然在讀操作期間,十六個這種DRAM將提供總共128字節(jié)(對于其它情況,利用相似符號還縮寫成128B),其為通常在國際商用機器公司(IBM)制造的PowerPC(R)微處理器上提供的高速緩存行。圖3中所示的三個DRAM r1-r3被用于存儲冗余符號,以便保護存儲在其它十六個DRAM中的信息的完整性。
可以如下使用按GF(256)構(gòu)成的標準[19,16]縮短的里德-索羅蒙(Reed-Solomon)碼。通過其八個I/O通道將一個(字節(jié))符號分配給每個單獨DRAM傳送。所述碼被應用于并行的十九個DRAM,以及單獨地應用于八個傳送中的每一個。圖5中圖示了該編碼方案。本領(lǐng)域熟知這種[19,16]縮短的里德-索羅蒙碼具有四個符號的最小距離,因此能夠校正任何一種芯片,并且同時能完全檢測雙芯片差錯的存在。
現(xiàn)在假設期望訪問64B(64字節(jié))而不是128B的粒度的DIMM中的信息。由于目前PowerPC(R)微處理器中最常見的高速緩存行是128B,也可以說期望進行64B子行訪問。參看圖6,其中類似參考標記表示圖1中所示的存儲器系統(tǒng)的類似部件。由于這些DRAM設備具有最小突發(fā)長度8,實現(xiàn)這個的自然方式是將提供數(shù)據(jù)的16個DRAM設備劃分成兩組,此處指定為組1和組2。在組1中,存儲器芯片被指定為c1,1-c1,9,而在組2中存儲器芯片被指定為c2,1-c2,10。這兩個組與存儲器集線器芯片12a通信,該存儲器集線器芯片12a接著與存儲器控制器16通信。值得注意的是,在DRAM設備的DDR3(雙數(shù)據(jù)速率3)產(chǎn)生中,允許的最小突發(fā)長度也是8。這說明所述限制事實是從基本技術(shù)參數(shù)中啟示。
由于專用于冗余度的DRAM設備數(shù)目是奇數(shù)(在該例子中是三個),無法在兩個組間平均分布。在該例子中,組1保留一個冗余DRAM,而組2被分配了兩個冗余DRAM。現(xiàn)在,分析利用在每一組上獨立應用的縮短的里德-索羅蒙碼所獲得的可靠性等級。對于組2,可針對DRAM組(如上所述針對所討論的第一種設置)的每個傳送采用[10,8]縮短的里德-索羅蒙碼。這使得系統(tǒng)能夠校正由該組而引起的任何差錯。另一方面,對于組1,只能使用[9,8]縮短的里德-索羅蒙碼。本領(lǐng)域熟知,該代碼只能檢測單個符號差錯,因此組1的DRAM設備的可靠性特征是單一芯片差錯可被檢測到,然而并未被校正。值得注意的是,因為可能有多達兩個誤差,通過采用兩個(而不是一個)DRAM傳送對組1使用[18,16]代碼不會產(chǎn)生校正單一芯片差錯的預期效果,而[18,16]代碼只能校正多達一個差錯(也就是說,如果期望糾錯100%的話)。在DRAM突發(fā)的較大部分上應用的較長碼具有類似的不便。
以上說明了在有些情況下訪問存儲器中的較少量數(shù)據(jù)導致有效可靠性的損失。在訪問128B粒度的情況下,存在單芯片糾錯和雙檢錯,然而在訪問64B粒度的情況下,簡單應用獨立碼導致所述組之一不能校正全部單芯片差錯。這不是選擇了冗余芯片的總數(shù)為奇數(shù)的模擬結(jié)果。如果選擇了總共四個芯片,則易于發(fā)現(xiàn)具有128B訪問粒度的系統(tǒng)能夠進行雙芯片糾錯,然而64B訪問粒度(每組中有兩個冗余芯片)將只能進行單芯片糾錯。
上述現(xiàn)象隨著期望訪問的單元變得更小而進一步惡化。再次使用提供了總共四個附加冗余芯片的例子,如果期望訪問的單元是32B,則每個32B組只配給一個芯片,并且只得到單芯片檢錯。
通過以上討論,經(jīng)常有這樣的情況,即選擇訪問足夠大的行中的信息以使得可靠性不是問題,其反過來會伴隨大量缺點。例如,在可以支持并行請求的存儲器中,由于較大的行導致存儲器中更多資源處于忙狀態(tài),原則上可支持的這種請求較少。其它缺點包括,由于存儲器中大量資源的啟動所導致的增加功耗,和/或增加了連接存儲器與使用其的系統(tǒng)的通信信道的使用。近期在處理器芯片中增加更多處理內(nèi)核的趨勢使連接處理器芯片與其存儲器子系統(tǒng)的總線負擔過大,并且在有些情況下該結(jié)果導致用較小訪問粒度設計存儲器的趨勢,其具有以上提到的可靠性缺陷。
以上所做的描述解釋了本發(fā)明的動機,其中公開了利用特殊的差錯控制碼和讀/寫算法加強的存儲器來改進上述問題。為了最大化本發(fā)明的范圍,還公開了在有些情況下產(chǎn)生改進冗余度/可靠性折衷的新穎的差錯控制方法。本發(fā)明包含了從本申請的碼中通??赡芷谕玫降淖顑?yōu)特性的詳細說明。利用術(shù)語″行/子行″來描述本發(fā)明,其中子行是期望的(較小的)公共訪問粒度,行是糾錯階段所使用的訪問粒度。所利用的差錯控制編碼技術(shù)的一般方面是應用兩層編碼結(jié)構(gòu),其中子行的第一層允許可靠的子行訪問校正和檢測最多為指定閾值的可能差錯,然后第二層允許進一步校正所發(fā)現(xiàn)的差錯。注意到,當前被稱作子行的以后可能被稱作微處理器中的行,并且所謂的行將需要不同的術(shù)語;例如,″行塊″。
注意到,在相關(guān)的硬盤驅(qū)動器存儲技術(shù)領(lǐng)域中,已經(jīng)有采用差錯控制的大量發(fā)明。下面列出并且討論已知的發(fā)明。
由Arvind M.Patel所著的、轉(zhuǎn)讓給IBM的美國專利No.4,525,838″Multibyte Error Correcting System Involving A Two-Level CodeStructure″中公開了一種方法,其中利用碼的第一層保護小數(shù)據(jù)塊,然后利用共享的、碼的第二層保護多個此類小數(shù)據(jù)塊。本發(fā)明的引用動機在于常規(guī)編碼技術(shù)在從其結(jié)構(gòu)的代數(shù)角度考慮時對碼的塊長度進行限制。例如,當被用來構(gòu)成碼的伽羅瓦域具有基數(shù)q時,已知里德-索羅蒙碼具有最大的塊長度q-1,并且雙倍擴展里德-索羅蒙碼只給該塊長度增加2。在Patel的存儲器應用中,典型應用q=256,在有些情況下會導致不期望的限制。
在由Cox等人所著的、轉(zhuǎn)讓給IBM的美國專利No.5,946,328″Method and Means for Efficient Error Detection and Correction inLong Byte Strings Using Integrated Interleaved Reed-SolomonCodewords″中公開了一種方法,其中用多個交錯的碼字組成的塊是這樣的,所述碼字之一是通過其它碼字的特定邏輯和構(gòu)成。所指出的過程聲稱進一步增強了存儲數(shù)據(jù)的可靠性,在由Patel專利4,525,838獲得的可靠度等級之上。注意到,檢錯/糾錯過程被應用于存儲數(shù)據(jù)塊。這是由于本發(fā)明的主要動機不提供對數(shù)據(jù)塊的碼字的單獨訪問,而是提供塊的集成交織(integrated interleaving),其比由Patel提供的更加高效。
在由Cox等人所著的、被轉(zhuǎn)讓給IBM的美國專利6,275,965″Method and Apparatus for Efficient Error Detection and Correctionin Long Byte Strings Using Generalized,Integrated InterleavingReed-Solomon Codewords″中,當自身冗余度不能勝任糾錯時,先前的專利5,946,328進一步補充了塊內(nèi)多碼字的能力(其得益于共享冗余度)。
在由Asano等人所著的、被轉(zhuǎn)讓給IBM的美國專利6,903,887″Multiple Level(ML),Integrated Sector Format(ISF),ErrorCorrection Code(ECC)Encoding and Decoding Processes for DataStorage or Communication Devices and Systems″中,一個扇區(qū)中集成交織的想法進一步延伸到多層碼,來覆蓋集成扇區(qū)。注意到本專利中開始生效的術(shù)語變化,先前專利中被稱作塊(block)、現(xiàn)在被識別為扇區(qū)(sector)連同其冗余檢驗字節(jié),并且現(xiàn)在把一組扇區(qū)稱為塊。利用新的術(shù)語,本發(fā)明的一個顯著方面是訪問本存儲設備存儲器的基本單位是扇區(qū)(通常512字節(jié)),而不是共享冗余度所應用的扇區(qū)塊,其不同于前面所引用的發(fā)明。該特征產(chǎn)生了將單獨扇區(qū)寫到存儲設備的問題,其中主要引用的問題是這種單獨扇區(qū)寫操作需要被放在讀取參與該整個塊的其它扇區(qū)的讀操作之前,之后是將全部塊編碼以及寫回到存儲設備中。這被稱作″讀-修改-寫″(RMW)問題,并且被強調(diào)為可能降低硬盤性能的不期望的問題。Asano等人所著的專利通過其多層編碼解決了該問題,從而在有些情況下較高層保護被禁用,但是較低層編碼(例如,由先前專利討論的扇區(qū)內(nèi)的編碼)保持了某個水平的可靠性。Asano等人所著的專利的另一個方面是,為塊計算的冗余檢驗字節(jié)僅利用扇區(qū)層上的檢驗字節(jié)的某些累加和(與扇區(qū)的實際數(shù)據(jù)內(nèi)容相反)來計算,其被稱為關(guān)鍵特征,其通過避免校驗計算期間提供全部扇區(qū)數(shù)據(jù)而提供高性能的驅(qū)動性能。
應當看到,本發(fā)明的優(yōu)選實施例與用作計算機系統(tǒng)中的存儲設備的第一主要層的存儲器有關(guān),雖然存儲器也適用于微處理器高速緩存及其他設置。同樣地,不同考慮具有同樣本質(zhì)。除那些已經(jīng)聲明的以外,在本發(fā)明的一個方面,編碼技術(shù)使存儲器具有執(zhí)行高效讀-修改-寫操作的能力。在本發(fā)明的另一方面,公開了具有所希望性質(zhì)的新穎的差錯控制編碼技術(shù),其具有第二層碼的最小距離可以超過的第一層碼的最小距離兩倍(碼的最小距離是一個技術(shù)術(shù)語,其通常被用于描述代碼的糾錯能力的一個重要方面),并且付出最小可能的理論成本,就分配冗余資源而言。在本發(fā)明的第三方面,在普通系統(tǒng)操作期間采用子行訪問,而在眾所周知的″存儲器刷擦(memory scrubbing)″的進程期間采用行訪問,從而后臺系統(tǒng)進程周期性地掃描存儲器以讀取并且回寫內(nèi)容,從而防止存儲器中的差錯積累。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供了雙層差錯控制協(xié)議,其中通過專有冗余度在子行層上檢測差錯,并且利用整行的總?cè)哂喽刃U铄e。例如,系統(tǒng)通??勺x取編碼數(shù)據(jù)的小段,并且在接受其之前僅檢查差錯,在檢測到差錯的情況下,將讀取整個碼字以便糾錯。例如,在差錯非常少并且持續(xù)差錯被記錄以及通常在有限時間內(nèi)被服務的情況下,這對存儲器系統(tǒng)更有意義。在另一個類似例子中,當僅在接收到全部碼字之后解碼數(shù)據(jù)時,當檢測到小段數(shù)據(jù)中的差錯時,系統(tǒng)可進入具有較長延遲的更″警惕″模式;以及在一段時間內(nèi)未檢測到差錯之后,恢復到更″主動″狀態(tài)以便按子行模式讀出數(shù)據(jù)。這對具有獨特的″好″和″壞″狀態(tài)以及強時間相關(guān)的通信鏈路更有意義。
主要關(guān)心的一個問題是實現(xiàn)了″本地″和″全局″差錯控制能力與碼的總開銷(冗余度)之間更好權(quán)衡。為簡單起見,關(guān)注隨機差錯與保證糾錯,因此關(guān)注最小(Hamming)距離與代數(shù)結(jié)構(gòu)。
通過以下結(jié)合附圖對本發(fā)明的最優(yōu)方案進行的詳細說明可以更好地理解上述和其它目的、方面和優(yōu)點,其中 圖1的存儲器芯片圖示出了數(shù)據(jù)行和檢錯/糾錯碼字; 圖2是為了檢錯/糾錯數(shù)據(jù)的每個子行,利用足夠多碼字將數(shù)據(jù)行分割成子行的圖示; 圖3是由十六個數(shù)據(jù)DRAM設備和三個冗余DRAM設備組成的存儲器系統(tǒng)的模塊圖; 圖4是在訪問期間×8、突發(fā)8的DRAM的輸出示意圖; 圖5是并行DRAM設備的傳輸模式的示意圖(只示出一部分); 圖6是圖1中所示的存儲器系統(tǒng)的模塊圖,其中DRAM設備被分成兩組;以及 圖7是說明將DRAM設備組織成兩組、子行1和2的定位以及組1和2中的每一個的冗余符號位置的模塊圖。
具體實施例方式 為了描述本發(fā)明的最優(yōu)實施例,將基于上述背景技術(shù)部分中的討論,保持假設利用離散DRAM設備建立存儲器系統(tǒng),封裝成DIMM,并且其中每個DRAM是一個x8、突發(fā)8設備。如上所述,對于圖3中所示的設計,來自DIMM的讀操作產(chǎn)生128B的數(shù)據(jù)供應,但是未包含存儲的冗余度?,F(xiàn)在假定希望以64B粒度訪問消息。為實現(xiàn)這一點,將采用圖6中的交替DIMM結(jié)構(gòu),其中可以在任意規(guī)定時間訪問DRAM設備的兩個獨立組,并且其中組1具有一個附加冗余芯片,而組2具有兩個附加冗余芯片。在該例子中,行長度為128B,而期望的子行長度為64B。一般說來,如果讀取或存儲存儲器中子行的數(shù)據(jù)的請求可以利用較少數(shù)量的(相對于對包含該子行的較長的行的請求)資源來實現(xiàn),則可以說所述存儲器擁有子行訪問。通常,存儲器或用于訪問它的機制需要被明確設計,以便允許這種子行訪問。在該例子中,通過該特殊的DIMM結(jié)構(gòu)(連同其分割總線一起),在子行讀取期間而不是在行讀取期間激活大約一半DRAM設備,因而實際上該存儲器具有子行訪問。注意到,如果樂于支付額外總線的代價,則在利用DRAM設備建立存儲器中獲得相當小的訪問粒度是可能的。
取代利用兩個獨立代碼(各自應用于組1和組2),將采用如圖7所示的、其奇偶校驗矩陣可被寫成H=[H1,dH1,rH2,dH2,r]的差錯校正碼,其中α表示GF(256)的基本元素。圖7中還指明,為組1和2的碼字的符號所做的分配,以及將傳送冗余信息的符號的選擇。有時根據(jù)諸部分是否與組1或組2有關(guān)、以及該部分是否與分配給數(shù)據(jù)的碼字中的符號或冗余校驗符號有關(guān),來引用諸部分是方便的。圖7中示出了該劃分。
熟悉差錯控制碼理論的讀者會認識到上述矩陣以非系統(tǒng)形式存在,其中不能立即從矩陣結(jié)構(gòu)中看出給定希望存入存儲器中的信息,如何選擇冗余符號,使得標準奇偶校驗公式Hc=0成立。為了有利于討論,碼字c有時會被寫成(c1,1c1,2c1,3,...c1,9,c2,1c2,2c2,3,...c2,9,c2,10),其中標記使得何時一個符號屬于組1或組2清楚。此外,假定c1,9是組1的冗余符號,而(c2,9,c2,10)是組2的冗余符號。
從等式Hc=0中明顯得知,利用 組1的冗余符號可以立即從相關(guān)信息符號中計算出。
考慮到該冗余符號的值完全由該組的用戶數(shù)據(jù)符號確定,可以說該冗余符號是專有的。該計算之后,可以如下計算c2,9和c2,10。令b表示除了c的最后兩個元素(即,除去c2,9和c2,10)的所有元素。因為我們知道了兩個組的信息符號以及第一個組的冗余符號,所以此時完全得知b的值。可以容易地知道 以上所述表示了三個線性方程,但是第一個是無用的,0=0。可以檢驗其它兩個等式具有唯一解,利用眾所周知的技術(shù)可以容易地獲得所述解。由于這兩個冗余符號的值原則上取決于兩組中的每個用戶數(shù)據(jù)符號,所以稱其為共享的冗余符號。這完成了有關(guān)給定一對8B數(shù)據(jù)塊如何計算三個冗余符號的討論。
碼是一組全部具有相同長度的符號向量。屬于碼的符號向量被稱作碼字。當讀取來自一個組(但不是任何其他)的全部符號時,所得到的向量被稱作次要碼(minor code)的碼字(假定得到的數(shù)據(jù)和冗余度沒有差錯)。不同組可能與不同的次要碼有關(guān)。實際上,在該例子中,由于兩個次要碼的塊長度明顯地不同(其中之一具有塊長度9,另一個具有塊長度10),所以所述兩個次要碼是不同的。為了簡便起見,與一行中的全部子行相關(guān)的次要碼的整體稱作為″第一層碼″。類似地,如果讀取全部組的全部符號,則所得到向量是″第二層碼″的有效碼字。該碼顯然由整個奇偶校驗矩陣H來定義。我們還說第一層碼(給每一子行)提供了本地保護,而第二層碼給整行提供全局保護。
能夠顯示任意一個次要碼具有最小距離2,而全部碼具有最小距離3。因此,當將該碼應用于所討論的存儲器存儲問題時,當?shù)玫絻蓚€組中的任一個(但不是另一個)時,能夠進行單芯片檢錯,而當?shù)玫絻蓚€組時,能夠進行單芯片糾錯。
上述發(fā)現(xiàn)啟發(fā)了下列子行讀操作的兩層協(xié)議 a)只讀相應組的信息, b)通過利用第一層碼檢查組中的差錯存在,以及 c)如果發(fā)現(xiàn)差錯,讀取其余碼字,并且利用第二層碼嘗試校正差錯。
根據(jù)其出現(xiàn)頻率,可以分類存儲器中的差錯。作為存儲器某些部分(例如I/O信號驅(qū)動器)永久物理損壞的結(jié)果的差錯有如此高的出現(xiàn)頻率,以致系統(tǒng)可以識別它,并且采取適當操作將其從系統(tǒng)中移除。實現(xiàn)它的一種技術(shù)將受影響的(被差錯控制碼校正的)數(shù)據(jù)復制到備用DRAM芯片。另一種技術(shù)只是通過外部干預簡單地替換出現(xiàn)故障的DIMM。
作為以上所述的結(jié)果,在正常系統(tǒng)操作期間差錯是很少的。由于這一點,本發(fā)明所公開的兩層協(xié)議導致絕大多數(shù)讀取利用子行操作成功地提供服務,所述子行操作是本發(fā)明聲明的目標之一。作為例示,圖5示出了該存儲器可以服務于不同地址處的兩個并行讀操作的事實。
存儲器系統(tǒng)有時利用一種被稱作″存儲器刷擦″的技術(shù)來增強,該技術(shù)定期地掃描存儲器、讀取存儲內(nèi)容并且如果在存儲器總發(fā)現(xiàn)差錯時校正(以及回寫校正數(shù)據(jù))。這樣做是防止系統(tǒng)中的差錯積累。本發(fā)明的一方面是,刷擦不是利用子行操作,而是利用行操作。具體地說,相對于第二層碼的冗余度來解釋整行以測試差錯,這在第二層差錯控制碼的糾錯能力遠遠優(yōu)于可用的第一層碼的檢錯能力的例子中是有利的。例如,雙重差錯可能存在于子行中,第一層碼不能檢測它、但是利用第二層冗余度可以檢測及校正它。
可用于該存儲器的另一策略是不僅進行檢錯,而且利用第一層碼嘗試某種程度糾錯(如硬盤存儲技術(shù)應用中的一些現(xiàn)有技術(shù)所實現(xiàn)的)。例如,擴展?jié)h明碼可被用作第一層碼,以便利用第一層碼進行單比特差錯校正,同時檢測雙比特差錯,但是依賴于第二層碼來校正雙比特差錯。
現(xiàn)在關(guān)注執(zhí)行寫操作的問題。此處的基本問題是改變?nèi)魏我唤M中的即使一個符號也可以影響兩個組中的冗余符號。結(jié)果,寫操作比讀操作更加復雜。然而,當考慮讀操作與寫操作的數(shù)量的典型比率時,仍可通過本發(fā)明而改善整個系統(tǒng)操作。
首先討論對存儲器執(zhí)行讀-修改-寫(RMW)的操作,因為這是理解寫入問題的基礎(chǔ),并且還具有獨立的興趣。為此,假如請求對第二組(具有兩個冗余校驗的)執(zhí)行RMW。在這種情況下,無論怎樣都無需改變第一組。
RMW請求之前的存儲器的內(nèi)容被表示成(c1,1c1,2...c1,8c1,9c2,1c2,2...c2,8c2,9 c2,10)。RMW請求之后存儲器的內(nèi)容被表示成(c1,1c1,2...c1,8c1,9a2,1a2,2...a2,8a2,9a2,10)。我們的任務是僅通過已知的、讀操作期間得到的(c2,1c2,2...c2,8c2,9c2,10),以及(a2,1a2,2...a2,8),即將被存儲在存儲器中的新數(shù)據(jù),來選擇(a2,9a2,10),。下式對舊數(shù)據(jù)成立 期望下式對新數(shù)據(jù)成立 注意到兩個等式中第二個括號中的表達式是完全一樣的。從該等式中,可以得到公式 該公式表示了三個線性方程,但是第一個是平凡的,0=0。其它兩個等式可被容易地求出a2,9和a2,10,其為舊符號c2,9、c2,10的新數(shù)值。注意到,這些符號是共享冗余度的事實不意味著為了更新它們需得到參與它們計算的全部數(shù)據(jù)符號。這是由于某些符號(在這種情況下組1的)不改變其值,并且可以利用上面描述技術(shù)來避免其取回。
注意到,在原理上可能簡單地發(fā)送″差動更新″ 給存儲器設備并且使存儲器設備在內(nèi)部計算冗余符號的新數(shù)值(如果存儲器被構(gòu)造成能夠做這項工作的話)。在這個條件下,不需要物理傳送(c2,9,c2,10)到一個單獨位置來計算新冗余符號值。雖然這一事實看起來是瑣碎的,但是支持這些一般操作類型的基本存儲器技術(shù)改進可能對支持類似本發(fā)明中所描述的差錯處理模式說來是重要的(當討論對組2的操作時將做更詳細的描述)。
另一個值得注意的地方是如果事先知道差分(c2,1-a2,1,...c2,8-a2,8)的值,并且如果存儲器被配備成執(zhí)行上述的微分更新的話,則不必物理傳送舊值c2,1、...、c2,8到存儲器設備外部。將所述差發(fā)送給存儲器并且指出更新應當是微分的事實會具有預期效果。
在有些情況下,可以構(gòu)成伽羅瓦域(Galois Field),使得″+″操作只不過是邏輯XOR操作。因而,上述的微分更新會特別容易地完成;允許通過接收比特模式并且將所接收的比特模式與所選擇的數(shù)據(jù)內(nèi)容進行XOR操作來更新其信息內(nèi)容的存儲器應當被稱作XOR更新存儲器。
這證明了對組2的RMW操作可嚴格地利用子行操作來執(zhí)行。
現(xiàn)在討論如何對組1進行RMW操作。在這種情況下,改變來自組1的八個數(shù)據(jù)符號中的任何一個需要不僅更新組1的冗余符號,而且還要更新組2的冗余符號。利用前面那樣的類似標記,RMW請求之后的存儲器的內(nèi)容被表示成(a1,1a1,2...a1,8a1,9c2,1c2,2...a2,9a2,10)。在這種情況下,下面等式通過(a1,9、a2,9、a2,10)的適當選擇必須被滿足 實現(xiàn)這一點有兩種方式。第一種方式是簡單地讀取c2,1、c2,2、...、c2,8并且按標準方式編碼,因為現(xiàn)在可能已訪問了希望存入存儲器中的用戶信息的全部16B。在根據(jù)本發(fā)明的新方法中,利用如下事實 僅利用組1中的存儲器內(nèi)容的新舊值之差,可以反置左乘第一個向量的3×3矩陣來求出冗余符號所需的微分更新。因而,事實上根本不需要取回c2,1,c2,2,...c2,8。從第二組中取回c2,9和c2,10(除了從第一組中取回全部信息以外)實際上就足夠了(這種取回模式被本節(jié)開始時所描述的特殊DIMM配置所允許)。在寫入期間更新共享的冗余符號的這種技術(shù)通常可被擴展,并且在后續(xù)討論中將被稱作微分寫入。關(guān)鍵特性是,數(shù)值上沒有改變的存儲數(shù)據(jù)不必為了更新共享冗余度而被讀出。此外,XOR更新存儲器設備的可用性會更利于組2中的冗余符號和/或?qū)嶋H新數(shù)據(jù)以及組1的冗余符號的更新。
這完成了有關(guān)如何進行組1和2中的子行RMW操作的討論。至于寫操作,如果不知道存儲器內(nèi)容的舊值(為編碼討論的目的,其將“寫”有效轉(zhuǎn)換成“RMW”),然后在一種實現(xiàn)中,每個子行寫需要放在從存儲器讀出子行之前。因而,寫操作有效地變成RMW,并且當使用如上所述微分RMW技術(shù)時,將寫稱作微分寫。
用于以子行讀出和寫入存儲器(然而保持高水平可靠性)的方法可被擴展成比如上所述明顯更通用的情況。尤其是,共享冗余符號組的數(shù)量可比2大。在提供的例子中,組1中的冗余符號被稱作是專有的,其數(shù)值通過僅知道組1的內(nèi)容就可被單獨設置,組2中的冗余符號被稱作是共享的,這是因為任一組中的變化需要被反映在這些冗余符號的變化中以保持一個有效的整體碼字。
一般地說,在兩個或更多組的通用差錯控制編碼方案中,如果組內(nèi)容完全由存儲在相關(guān)組中的用戶數(shù)據(jù)的內(nèi)容來確定的話,則組中的冗余符號被稱作是專有的,否則是共享的。注意到,共享標記不意味著共享符號只能在從存儲器中讀出影響這些共享符號的全部信息時被解釋。為了進一步說明這一點,注意到組2中的共享符號可以連同組2中的其余符號一起被讀出,并且結(jié)果是具有最小距離2的碼,其足以進行單符號差錯檢測;然而不必讀出兩個組的全部信息以便共享符號有效地用于檢錯。
通常,可以有被分配共享符號的許多組。例如,在對稱情況下,全部組可以具有相同數(shù)量冗余符號,并且其全部可被指定為共享的。在這種情況下,寫操作也變成對稱的,其中任意組的變化通常導致全部共享冗余符號都需要更新。
下面提出將微分RMW技術(shù)擴展到多個組(其為微分寫技術(shù)的基礎(chǔ))。在本部分中挑選奇偶校驗矩陣作為差錯控制碼,其被導出并進一步證明,讀者可參考結(jié)構(gòu)1和定理6。
對于奇偶校驗矩陣Hb,選擇了里德-索羅蒙(Reed-Solomon)碼。這保證了參考上述結(jié)構(gòu)1和定理6所描述的碼Ca和Cb是最大距離可分的,如在一個單獨部分中所示的,其轉(zhuǎn)化成整體雙層編碼結(jié)構(gòu)的某種期望的最優(yōu)特性。選擇Hb為里德-索羅蒙碼帶有約束n必須小于q,其中n是存儲在一行中的數(shù)據(jù)符號加上冗余符號(第一層碼和第二層碼兩者)的總數(shù),q是用于構(gòu)成所述碼的伽羅瓦域的基數(shù)。可被存儲在該存儲器上的信息總數(shù)于是將取決于期望的可靠性參數(shù)da、db和期望的組數(shù)量M,以及需要被存儲在任意指定組中的用戶數(shù)據(jù)的數(shù)量,將用k(以伽羅瓦域符號為單位計數(shù))表示,除了最后一組,如我們將看到的。
上述結(jié)構(gòu)不規(guī)定碼字的哪個坐標如何屬于數(shù)據(jù)而不是冗余度;實際上其甚至允許不同的次要碼塊長度。假定最后組(用M標記)不包含任何用戶數(shù)據(jù),而是包含全部共享冗余符號;相應地將其稱作共享冗余度組。相應地,第M組的塊長度需要被調(diào)整,使得其等于db-1。至于第一個M-1組,在每個組內(nèi)總塊長度將等于da+k-1,其中如上所述,k是期望存儲在每一組中的用戶數(shù)據(jù)符號的數(shù)量。
為了描述微分RMW技術(shù),寫成 其中Hba(1)表示Hba的第一個da+k-1列,而Hba(M)表示Hba的最后da-1列?,F(xiàn)在假定向量c被存儲在存儲器上(c表示行的內(nèi)容以及其第一和第二層冗余校驗)。首先假定c沒有任何差錯,因而奇偶校驗公式Hc=0成立。假定沒有任何一般性損失的情況下,期望更新第一組的內(nèi)容。為此目的,分割成 c=[c1 c2,...M-1 cM]T 其中c的劃分符合為Hb定義的劃分。新存儲器內(nèi)容被表示成 [a1c2,...M-1aM]T 其中a1表示來自第一次要碼(其本身包括用有效第一層碼補充的第一組中的用戶數(shù)據(jù)的新內(nèi)容)(或同等次要碼)的冗余校驗符號的新碼字。注意到,這種第一層碼檢查符號的計算對于差錯控制編碼領(lǐng)域中的技術(shù)人員來說是一種簡單練習。前面,aM表示共享冗余校驗符號的新值;其為需要計算的值。
如前面例子所述,由于上述兩個向量是碼H的有效碼字,下式必須被滿足 此外,第M組的次要碼奇偶校驗公式表示 由此,容易知道 左側(cè)矩陣是具有(db-1)×(db-1)維的方形矩陣。通過結(jié)構(gòu)的選擇,可以表明矩陣是可逆的,由此存在aM的唯一選擇并且通過這種方式可被計算。注意到,為了執(zhí)行上述計算,不必知道表明關(guān)鍵微分RMW特性的c2,...M-1。如此導出用公式表示aM被稱為微分RMW公式。當M明顯較大時,通過讀出和寫入子行而非整行,上述過程可能產(chǎn)生(例如)顯著的能源節(jié)省。通過如先前描述將其轉(zhuǎn)換成RMW得到寫操作。注意到,在上述結(jié)構(gòu)中,第M組還可以相對于其余組被隔離地讀入,并且可檢測差錯,最多為指定的最小距離da。
這是允許處理可能在共享冗余度組中出現(xiàn)的差錯的重要特性。懷著這個目的,針對這種規(guī)定的子行RMW操作可被概括如下 1)讀取包含將被修改子行的組。
2)讀取共享冗余度組。
3)確定以上讀取的兩個組中的任意一個是否存在差錯。如果存在差錯,讀取整行(連同其第一和第二層冗余度一起)并且校正差錯。更新該子行并且回存整行。
4)如果沒有差錯,利用微分RMW公式計算共享冗余度組的新值,并且修改存儲器中的子行和共享冗余度組。
假定擁有共享冗余符號的特殊組利用允許多個并行讀/寫操作的存儲器被物理實現(xiàn)。為簡單起見,假定存儲實際(非冗余)信息的存儲器僅允許每組一個讀或?qū)懖僮鳌t,原則上(假定共享冗余度存儲器有充分高水平的并行性),可于任意給定時間對不同組執(zhí)行多個寫入,所述假定的并行能力支持對共享冗余符號的更新。此外,由于專有冗余度不受寫操作影響,可以對不執(zhí)行寫入的組執(zhí)行多個讀取。
注意到,在接下來的部分中,先前公布的雙層編碼結(jié)構(gòu)僅在受約束的情況下滿足某種期望的最優(yōu)特性。因此,本發(fā)明公開了新的差錯控制碼(例如由以上結(jié)構(gòu)1證實的)以及其應用于子行訪問的當前問題。同樣在結(jié)構(gòu)2中,證明了一種技術(shù),其在某些實例中對于結(jié)構(gòu)1所不能產(chǎn)生任何碼的參數(shù)選擇允許獲得最優(yōu)碼;尤其是解決了規(guī)定結(jié)構(gòu)1中的字段長度必須足夠大的約束。
描述差錯控制碼的一種普遍接受的方式是給出其奇偶校驗矩陣H。這是由于這種矩陣準確地標識哪個向量是碼的有效碼字;即,如果線性方程Hc=0成立的話,向量c是有效碼字。在解釋本發(fā)明時,注意到,指定的差錯控制碼原則上準許多個奇偶校驗矩陣作為其有效碼字的表征。尤其是,矩陣的任何指定行乘以公因數(shù)、或?qū)⒕仃嘓的一行加到另一行無論怎樣都不改變作為碼的有效碼字的向量組。當一個矩陣H′可以通過一個或多個行相乘和/或行相加而從另一個矩陣H中獲得時,則稱這兩個校驗矩陣等價。
根據(jù)本發(fā)明,將通過差錯控制碼的校驗矩陣的一種特殊形式公開新穎的差錯控制碼,認識到相同碼可用等價校驗矩陣來描述。碼的這種替代表示不代表實質(zhì)背離本發(fā)明。描述中將用到的一個概念是最大距離可分(Maximum Distance Separable,MDS)碼,其為差錯控制編碼領(lǐng)域中所熟知的技術(shù)術(shù)語。最大距離可分碼是一種在指定冗余校驗符號數(shù)量的情況下獲得最大可能碼最小距離的意義上的最優(yōu)碼。眾所周知任何里德-索羅蒙碼都是最大距離可分的。
還注意到,兩層編碼結(jié)構(gòu)的本應用不必被限制于存儲問題。特別的,通信系統(tǒng)也可以受益于這種結(jié)構(gòu),例如數(shù)據(jù)流的高速傳輸可通過僅對當前稱作子行(即可能是傳輸總線的一部分)的執(zhí)行局部檢錯,然后對次級、較慢模式執(zhí)行糾錯而獲得。以上會有如下好處在大部分關(guān)聯(lián)的操作(假定相對干凈的關(guān)聯(lián))期間,采用較低復雜度和低時延編碼結(jié)構(gòu),而僅在特殊情況下借助于更復雜和費時的過程。
差錯控制碼的一般結(jié)構(gòu) 令C為大小q的字母上的長度n的碼(不必是線性的)。C的維數(shù)為k=logq|C|,而C的冗余度為n-k。C的最小(Hamming)距離為稱C為[n,k]碼,或[n,k,d]碼,作為其基本參數(shù)的方便參考。C的每個碼字包括n個符號。令其由1,2,...n索引。表示成[n]={1,2,...n}。假定Ii[n],i=1,...M,令M次要碼、Ci=C(Ii),i=1,...M,被定義為C在Ii中的坐標上的投影。令ni=|Ii|,并且表示為使得則上述定義表示當且僅當有c=(c1,...cn)∈C,使得對于所有用di表示Ci的最小距離。有時,稱C的碼字為行,而Ci的碼字為子行。因而Ci也會被稱作子行碼。在本節(jié)中,如果沒有″T″下標(其代表轉(zhuǎn)置)標記的話,假定所有向量都是行向量。這樣,向量a是一個行向量,而向量aT是一個列向量(即向量a的轉(zhuǎn)置形式)。這種約定不同于本說明的先前部分中所采用的約定。
給出以上定義,問題是為什么不用一層編碼? 定理1.如果存在置換
使得對于所有i,|Iπ(i),∪j<iIπ(j)|≥dπ(i)-1,則 證明.考慮下列試驗。取C的一個碼字,從IM的I2,...dM-1的I1,d2-1索引的那些符號中,除去d1-1個符號。對于所有i來說,只要|Ii,∪j<iIj|≥di-1成立,這就可能?,F(xiàn)在,根據(jù)定義,自I1的d1-1個清除可以利用C1來校正,此后自I2的d2-1個清除利用C2來校正,等等,直到所有清除被校正。利用單界(Singleton bound),必須有∑i(di-1)≤r。最后,注意到,如果條件|Ii,∪j<iIj|≥di-1不能對全部i滿足,則可嘗試重新標記Ii,并且只要一個起作用就得到相同的不等式。
定理中的信息是除非次要碼具有相當顯著的重疊,最小距離的總和將由利用不相交次要碼(依據(jù)Ii的不相交)所能實現(xiàn)的來約束。一個自然的問題是是否通過采用次要碼間的中等重疊,可在次要碼的最小距離獲得足夠多,使得子行訪問無需使用雙層編碼方案而節(jié)省資源。
用公式表示該問題。假定所有次要碼具有相同的長度ni=n1,以及相同的最小距離di=d1。不失一般性,假定∪iIi=[n]。在定理1的體系中,存在d1≤r/M+1。已知如果具有足夠重疊,可能僅僅由d1≤r+1來約束。取決于想的到多大的d1,應該知道這對于n1意味著什么。
定理2.如果d1>r/m+1,其中m∈{2,3,...M},則 證明.考慮定理1的證明中所做的試驗,其中從由Ii,∪j<iIj索引的坐標中除去min{d1-1,|Ii,∪j<iIj|}個符號。這種清除模式可以利用C1,C2,...CM來成功地解碼。通常這意味著, 為便于表示,定義∪j<iIj。令以及m′=|A|,則得到 其意味著m′<m?,F(xiàn)在,注意到
是[n]的集劃分,則得到 因此, 定理2的結(jié)果可被如以下推論改述。
推論1.如果d1>r/M+1,則
定理2的原則是重疊不起作用。假定r/m+1<d1≤r/(m-1)+1。則忽略整數(shù)影響,定理2的下界由編碼m-1個不相交次要碼獲得,每個具有冗余度(假定字段長度足夠大)。則通過復制m-1個中的任何一個M-m+1次,得到M個次要碼。
可選解釋如下。再次,假定r/m+1<d1≤r/(m-1)+1。得到 換言之(推論1中也明顯得知), 由此可見,對于給出的行長度(n)和全冗余度(r),存在子行碼長度(n1)和子行最小距離(d1)之間的折衷。折衷是這樣的,使得至少在約束中,子行(即,d1-1)的″有效冗余度″按最大比例增長到n1。即,要得到兩倍的有效冗余度,子行碼必須有至少兩倍長度。這意味著始終同樣可以對不相交集利用單獨編碼的次要碼進行計算。
本節(jié)的結(jié)論是,經(jīng)濟的子行訪問對于碼的單″層″來說是相當無希望的,按照自然解決方案的需要不會導致至少相同的開銷損失。
這激發(fā)了改變模式的需要,即使用雙層編碼方案,其中總開銷通過減少到剛好夠檢錯并且必要時使某些全局冗余度被所有糾錯的子行共享來降低。由于差錯是罕有的(如其在存儲器系統(tǒng)中),所以大部分時間里(當沒有檢測到差錯時),子行訪問是可能的,其會具有先前所概況的好處。
對冗余度距離折衷的約束 在一個雙層編碼設置中,對r,d,與di,i=1,...M之間的折衷感興趣。為簡單起見,假定對于所有i,di=d1,并且所有次要碼是不相交的。得到以下定理。
定理3.如果d≤maxini+1,則 r≥d-1+M(d1-1).(1) 證明.由于d≤maxini+1,在定理1的證明中所描述的過程中,取而代之可以在最后一步中除去d-1個符號。
上述約束可歸納。
定理4.
證明.類似于定理3的證明,但是注意到,通常可以在某些(M-(d-1)/n1-1)子行碼中的每個中的除去(d1-1)個符號,在某些其它(d-1)/n1」子行碼中的每個中的除去n1個符號,以及在其余子行碼中選擇(d1-1)或((d-1)mod n1)個符號。
當不受限于在其上定義碼的字母的長度時,定理3和定理4是相關(guān)約束。然而,當字母長度較小時,其它約束變得重要,例如,以下給出球狀填充型約束。
假定C可校正多達t個差錯,并且每個子行碼Ci可校正ti個差錯。為簡單起見,假定對于所有i,ti=t1。
定理5.有 其中 為具有半徑t的GF(q)n中的Hamming球的體積,PM(i)為其分量全部小于或等于t1的i的M-方式排序的整數(shù)劃分的集。
證明.圍繞C的任何碼字的專用區(qū)域至少為半徑t的Hamming球,加上某些距離碼字大于t的漢明距離處的額外區(qū)域,但是由于子行碼的糾錯能力,其必須不算任何其他碼字附近的相似域。
碼結(jié)構(gòu) 如果在其上定義的字段長度足夠大,結(jié)果可以相當容易地獲得(1)。一個這種結(jié)構(gòu)如下所示。順便告之,應當始終要求∪iIi=[n],使得共享冗余度也被次要碼保護。并且不失一般性,假定Ii={∑j<inj+1,...∑j≤inj}。每當論及奇偶校驗矩陣時,除非另作說明,假定具有全部行秩。
結(jié)構(gòu)1.令Ca和CbCa分別是長度n,以及最小距離da和db的線性碼。令Ha為Ca的奇偶校驗矩陣,以及 為Cb的奇偶校驗矩陣。如果寫成 其中H(1)a包含第一n1列,H(2)a包含下一個n2列等等,則C由以下奇偶校驗矩陣構(gòu)成
定理6.對于結(jié)構(gòu)1,所有次要碼具有至少為da的最小距離,并且C具有至少為db的最小距離。
證明.從H的形式看出,顯然所有Ci,i=1,...M,為Ca的縮短版本子碼。顯然C為Ca的子碼。
推論2.如果Ca和Cb兩個都是MDS碼,并且對于所有i,ni≥da,則由結(jié)構(gòu)1給出的碼實現(xiàn)等式(1)的約束。
證明.對于所有j, 因此,對于所有i,d=db,di=da,并且 d=r+1-(M-1)(d1-1). 為了實現(xiàn)(1)的約束,結(jié)構(gòu)1要求長度n以及最小距離d的線性MDS碼的存在,其意味著字段的長度q不能小于n很多。對于里德-索羅蒙碼(及其單和雙倍擴展),需要q≥n-1。
如果沒有非常大的字段長度,可設法做類似的事情。一種非常相關(guān)的碼類被稱為集成交織(integrated interleaving),隨后將描述。不失一般性,假定對于所有i,ni=n1。假定GF(q)上具有兩個n1長度線性碼CaCb,分別具有維數(shù)ka>kb,以及最小距離da<db。如果Ha為Ca的奇偶校驗矩陣,Hb為Cb的奇偶校驗矩陣,而且 則C的奇偶校驗矩陣可被寫成 其中I為M×M單位矩陣,M<q,表示直積(Kronecker product),以及 其中α為GF(q)中的原根,并且1≤B<M。
可以表明C為具有最小距離d=min{(B+1)da,db}的[Mn1,(M-B)ka+Bkb]碼。如果依照(1)檢查這些參數(shù),可得知當且僅當Ca和Cb兩者都是MDS,B=1,并且d=db時,集成交織將利用等式實現(xiàn)(1)的約束。尤其,如果期望d>2da,則集成交織在不能實現(xiàn)(1)的約束這個意義上不是最優(yōu)的。
實質(zhì)上,要形成C的碼本,集成交織將M個Ca的碼字并排放在一起,然后通過要求較短碼字的某種加權(quán)求和必須處于Cb中,從碼本中刪除所有這樣(較長)的碼字。值得注意的是,進行刪除使得始終存在具有權(quán)重(B+1)da的碼字。更準確地說,如果γΓ*=0,并且ca∈Ca,則γca是C的碼字。注意到,γΓ*=0,當且僅當γ是[M,M-B]RS碼(由奇偶校驗矩陣Γ定義的)中的碼字。因此,C具有權(quán)重(B+1)d1的至少碼字,其中Ada是Ca中的最小權(quán)重碼字數(shù)量。
要知道為什么也許能做得更好,首先考慮最簡單的情況,其中M=2,B=1。在這種情況下,集成交織結(jié)構(gòu)的奇偶校驗矩陣是 顯然,如果c1,c2∈Ca具有相同的Hba出錯位組(Hba-syndrome),則(c1,-c2)∈C。尤其,這允許Ca中的最小權(quán)重碼字配對。直觀上,寧愿保持那些(c1,c2)對,使得當c1具有低權(quán)重時,則c2具有較大權(quán)重,或至少是類似的權(quán)重。由觀察可知,取而代之,構(gòu)造C要遵照以下奇偶性檢驗約束 其中Q是滿秩方陣。Q允許配對處于Cb的不同陪集(coset)中的Ca的碼字,而不是相同的陪集中的那些碼字。在某種意義上,其“擾亂”了陪集關(guān)聯(lián),使得可以期望具有類似于turbo碼上具有的交錯器的″頻譜稀釋″(spectrum thinning)作用。
通常,如下構(gòu)造。
結(jié)構(gòu)2.令Ca和CbCa是長度n1的GF(q)上的線性碼,以及最小距離分別是da和db。令Ha為Ca的奇偶校驗矩陣,以及 是Cb的奇偶校驗矩陣。構(gòu)造的碼C由以下奇偶校驗矩陣給出
其中Qi,i=1,...M-1是滿秩方陣。
定理7.對于結(jié)構(gòu)2,有 min{db,2da}≤d≤db, di=da,i, r=rb+(M-1)ra. 證明.要給出對d的約束,首先注意到,對于所有i, 是Cb的奇偶校驗矩陣?,F(xiàn)在,如果C的非零碼字僅在一個次要碼中具有權(quán)重,則其權(quán)重必須至少是db。如果C的非零碼字在m>1個次要碼中有權(quán)重,則其權(quán)重必須至少是mda。另一方面,由于之后全部是0的Cb的任何最小權(quán)重碼字是C中的碼字,C的最小距離不能大于db。
為表明對于所有i,di=da,對于所有i,Ci=Ca足以。顯然,CiCi。注意到,相應于qrbHb-出錯位組,GF(q)n1被分成Cb的qrb陪集。有此看出,其相應Hb出錯位組始于ra個零的那些陪集形成了Ca的集劃分。以上的觀察示出相應于任何Hba出錯位組,在Ca中存在(相等數(shù)量的)碼字。結(jié)果,對于所有c∈Ca,,以及i≠j,存在c’∈Ca,使得(假定Q0為一致性的單位矩陣)。因此,C中存在一種碼字,其到第i個次要碼的投影是c,到第j個次要碼的是-c’,到所有其它次要碼的是零,其意味著c∈Ci. 有關(guān)r的要求直接遵循所述結(jié)構(gòu)。
推論3.結(jié)構(gòu)2實現(xiàn)(1),當且僅當d=db,并且Ca和Cb都是MDS碼。
尤其,如果5,則只要Ca和Cb是MDS,結(jié)構(gòu)2就可實現(xiàn)(1)。回憶在這種情況下,集成交織(B=1)也可實現(xiàn)。
尤其是,如果db>2da,則d≥2da(在這種情況下,注意到對于集成交織d=2da)。但是結(jié)構(gòu)2怎樣接近界限不是很清楚。作為出發(fā)點,以下定理對當且僅當結(jié)構(gòu)2可實現(xiàn)d>2da時給出條件。
定理8.對于結(jié)構(gòu)2,如果d>2da,則 其中Ada是Ca中的最小加權(quán)碼字的數(shù)量,ra和rb分別是Ca和Cb的冗余度。
證明.令Q0為(rb-ra)×(rb-ra)單位矩陣。令注意到,對于所有i≠j,Si∩Sj=,對于一些c1,c2∈Ca,wt(c1)=wt(c2)=da,假設為真,并且0≤i<j<M,則
其中每個0是全部為零n1行向量會是具有權(quán)重2da的C中的碼字。通過定理7還應當注意,db>2da。這樣,Ca的全部最小權(quán)重碼字是Cb中的可校正差錯模式,所以一定具有不同的Hb出錯位組,并且由此不同的Hba出錯位組。因此,由于Qi的矩陣是滿秩的,所以對于所有i,有然后,定理的要求源于事實 輔助定理1.GF(q)上的n×n滿秩矩陣的數(shù)量是 定理9.對于結(jié)構(gòu)2,存在Qi,i=0,...M-1,使得d>2da,如果db>2da,并且下式成立 其中Ada是Ca中的最小權(quán)重碼字的數(shù)量,并且ρ=rb-ra。
證明.為清楚起見,首先考慮M=2情況。由于僅存在Q1,去掉下標表示成Q=Q1。令S為Ca的全部最小加權(quán)碼字的Hba出錯位組的集,即則當且僅當S∩SQT=成立,d>2da。令S′S表示第一個非零元素為1的出錯位組的集。則由于碼的線性,當且僅當S∩S′QT=,S∩SQT=成立。對于所有s∈S′和s∈S,令Ωs′,s={Q∶s′QT=s}。如果|∪s′∈S′,s∈SΩs′,s|嚴格少于滿秩ρ×ρ矩陣的數(shù)量,則完成。注意到和并且對于所有s,s′,|Ωs′,s|=qρ(ρ-1),所以根據(jù)輔助定理1和聯(lián)合界限,期望Q存在的充分條件是 其等價于 對于M>2,令i=0,...M-1,(如前面的證明中一樣,假定Q0是單位矩陣)。令S′i表示第一個非零元素為1的Si的子集。則對于所有i≠j,當且僅當S′i∩Sj=時,得到d>2da,其等價于對于所有i,S′i∩∪j<iSj=成立。對于所有s′∈S′和s∈∪j<iSj,令表示成 則當且僅當QiΩ(i),i=1,...,M-1時,d>2da。令Γρ為滿秩的GF(q)上的全部ρ×ρ矩陣的集?,F(xiàn)在,假定根據(jù)一種″貪婪(Greedy)″算法選擇Qi’,其中成功地選定Q1∈Γρ\Ω(1),Q2∈Γρ\Ω(2),...QM-1∈Γρ\Ω(M-1).如果對于所有i,|Γρ\Ω(i)|>0成立,則該算法成功,如果|Γρ\Ω(M-1)|>0則確保它,由于對于所有j<i,顯然Ω(j)Ω(i)成立,利用聯(lián)合界限,得到 將上述表達式設定為正,得出期望Qi存在的充分條件,完成證明。
注意到,以上證明利用概率法也可以實現(xiàn),即將Qi看作隨機矩陣,并且期望某些出錯位組集當中的重疊量較小,因此至少一個這樣矩陣的存在使得相應出錯位組集可能不相交。定理9的結(jié)果可通過某些矩陣的復式計數(shù)略微改進,應用聯(lián)合界限于 推論4.對于結(jié)構(gòu)2,存在Qi,i=1,...M-1,使得d>2da,如果db>2da,下式成立 其中Ai是Ca中的最小權(quán)重碼字的數(shù)量,并且ρ=rb-ra。
證明.注意到,對于所有0≠a∈GF(q)和i=0,...M-2,存在至少|(zhì)S′|對(s′,s),s′∈S′,s∈∪j<M-1Sj,使得即,對于每個s′∈S′和因此,當求助于定理9的證明中最終導出的聯(lián)合界限時,存在(q-1)(M-1)矩陣,每個被計數(shù)|S′|次。然后通過將(q-1)(M-1)(|S′|-1)的校正項加到表達式(3)并且表示要求的結(jié)果,完成。
下面考慮一些例子。假定M=2,并且Ca是GF(8)上的[7,6,2]碼。定理8和定理9的界限意味著要得到d>4,讓ρ≥3是必要的,并且ρ>3是充分的。通過計算機搜索,發(fā)現(xiàn)了對于ρ=3,獲得d=5。易于驗證在這種情況下,(1)的界限利用等式獲得。這產(chǎn)生了GF(8)上的[14,9,5]碼。該碼的奇偶校驗矩陣如下 其中 Ha=[1 1 1 1 1 1 1], 并且α是GF(8),α3+α+1=0中的原根。
另一個例子,令M=2,并且Ca是GF(8)上的[6,5,2]碼。此處示出利用ρ=4實現(xiàn)d=6的碼。其為GF(8)上的[12,6,6]碼,并且該碼的奇偶校驗矩陣如下 其中 Ha=[1 1 1 1 1 1], 并且α是GF(8),α3+α+1=0中的原根。
注意到,對于相同的長度和距離參數(shù),結(jié)構(gòu)1會要求所示的兩個例子碼有較大的字段長度。
關(guān)于本節(jié)中的碼結(jié)構(gòu)的幾點進一步的說明。
1)考慮利用RS碼的、結(jié)構(gòu)1的特例。令n=Mn1和其中α是GF(q),q>n中的原根。則結(jié)構(gòu)1給出的碼也適合結(jié)構(gòu)2,其中所有Qi具有對角形式。
由于其示出了結(jié)構(gòu)1和結(jié)構(gòu)2之間的關(guān)系,所以很有趣。此外,這樣的碼利用解碼任意類碼的算法可被解碼。
2)集成交織中,設計參數(shù)B應于″突發(fā)子塊″的數(shù)量。如果突發(fā)差錯有意義,則用下列方式,結(jié)構(gòu)2可容易被擴展,在這種情況下C被下面的奇偶校驗矩陣定義。
其中 2)定理9是非建設性的。其為系統(tǒng)地尋找結(jié)構(gòu)2的良好Qi的未解決的問題。
4)可以看到結(jié)構(gòu)2適合通用鏈接(GC)碼的結(jié)構(gòu),或通用差錯位置(GEL)碼的結(jié)構(gòu),這兩個被證明是等價的。因此,原則上有關(guān)這兩類碼的大部分通用結(jié)果可被應用于結(jié)構(gòu)2中。仍然有通用結(jié)果不提供的情況。例如,這些碼的解碼算法通常僅解碼達到最小距離下限的一半。以,當最小距離較高時(以d>2da為例),還不清楚如何利用所述事實。同時,在這些結(jié)構(gòu)中,思路是利用較小的、較簡單的碼建立較長的、較強的碼。這樣,較小碼是否利于子行訪問沒有意義。在該情況下,局部檢錯和全局差錯校正的思路會對如何使用這些碼,尤其如何解碼有影響。
類似結(jié)合結(jié)構(gòu)2的動機所做的討論,基本思想是關(guān)于對應于Ca中的Cb陪集的出錯位組得到正確的設計約束。
5)結(jié)構(gòu)2可能對構(gòu)成稱之為Almost-MDS(AMDS)碼有用。如果碼的冗余度等于其最小距離,則其為Almost-MDS。對于指定字段長度和最小距離,已經(jīng)找到最大可能碼長度的上下界限。在結(jié)構(gòu)2中,如果M=2,da=2,Ca和Cb都是MDS,并且d=da,則C將為AMDS碼。例如,注意到,先前示出的GF(8)上的[14,9,5]碼為AMDS,并且其可用4步延長以獲得[18,13,5]碼,其奇偶校驗矩陣如下 H18,13,5=[H|H′], 其中H為碼的奇偶校驗矩陣,并且 解碼 解碼基本上是子行訪問的兩個步驟。
1.如果檢測到差錯,則在Ci中檢錯, 2.在C中進行差錯校正。
第一步通常是簡單的。一種直接方式是檢查所接收的子行的出錯位組是否在相應次要碼中為零。這種檢查的復雜度非常易于管理的。對于第二步驟,強力約束的距離解碼將包括針對長度n以及權(quán)重小于d/2的所有差錯模式的表格查閱。由于復雜度的原因,這可能是不實際的。此外,注意到,由于碼的子行結(jié)構(gòu),可能有可容易地校正的差錯模式,但是其權(quán)重為d/2或更高。例如,如果每個次要碼具有最小距離3,則每個子行中最多包括一個差錯的任何差錯模式可被容易地通過在其相應次要碼中解碼子行而校正。另一方面,這種差錯模式可具有高達M的權(quán)重,無論碼字中的子行的數(shù)量是否為d。
上述問題可通過利用解碼算法部分地解決,所述解碼算法利用碼的子行結(jié)構(gòu)。因此,考慮已被提出的兩種結(jié)構(gòu)。此處,假定Ca和Cb是利用簡單解碼算法而較好構(gòu)造的碼(例如RS碼、漢明碼等等)。
對于結(jié)構(gòu)1,第二解碼步驟可通過解碼Cb而不是C中接收的字而被簡化。這可能導致一些性能損失(由于其確實沒有利用次要碼),但是可能具有復雜度優(yōu)勢。另一個選擇是使用類似于如下所述的算法(針對結(jié)構(gòu)2的碼)。
現(xiàn)在,考慮結(jié)構(gòu)2。首先,觀察如何解碼非常特定的。令C為前面部分中所構(gòu)造的GF(8)上的[14,9,5]碼。令c為傳輸?shù)?存儲的碼字,其錯誤地接收/讀出為r=c+e?;蛘撸謩e表示第一和最后7個符號,寫成(r1,r2)=(c1,c2)+(e1,e2)。如果wt(e)≤2,則以下解碼算法保證能校正所有差錯。下文中,所有解碼是限定距離解碼。
1.令令 2.如果R是空的, (a)如果s1+s2QT=0,輸出返回。
(b)如果s1+s2QT≠0, i.令1:=-s2QT。利用出錯位組(0,1)解碼C2的陪集中的r1。即,針對
,求出
,使得
成立。如果找到這種
,則令
,輸出,返回。
ii.如果沒有這種
,則令2:=-s1QT-1,并且利用出錯位組(0,2)解碼Cb的陪集中的r2。如果r2被成功地解碼為
,則輸出,返回。否則,聲明解碼失敗。
3.如果|R|=1, (a)如果R={1},則令1:=-s2QT。利用出錯位組(0,1)解碼Cb的陪集中的r1。如果r1被成功地解碼為
,則輸出,返回。否則,聲明解碼失敗。
(b)如果R={2},則令2:=-s1QT-1,并且利用出錯位組(0,2)解碼Cb的陪集中的r2。如果r2被成功解碼為
,則輸出,返回。否則,聲明解碼失敗。
4.如果R={1,2},則 (a)令,i=1,2對于j=1,...7,計算tj=(tj,1tj,2,tj,3):=s2-ε2hj,其中hj為HbaTQT的第j行。
(b)找到j*,使得。令。如果沒有這樣的j*存在,則聲明解碼失敗。
(C)令uj表示(長度-7)單位向量,其元素全部為零,除了第j個為1之外。令,并且。輸出
。返回。
上述算法的主要部分可通用于結(jié)構(gòu)2的所有碼。該算法如下給出,并且承受類同于集成交織模式所使用的解碼算法。在該算法中,″出錯位組約束″是指對于所有c=(c0,...cM-1)∈C,得到,其中是子行i的Hba出錯位組的事實。
1.解碼Ca中的每個子行。如果子行i的解碼失敗,將針對子行i校正的差錯的數(shù)量記錄為τi.τi=∞。
2.如果存在不止一個i,使得τi=∞,則聲明解碼失敗。
3.如果正好有一個i,使得τi=∞,則假定所有其它子行被正確解碼,利用出錯位組約束求出子行i的Hba出錯,并且在Cb的相應陪集中解碼ri。如果成功,則返回。否則,聲明解碼失敗。
4.如果對于所有i,有τi<∞,則檢測出錯位組約束是否滿足。如果如此,則從子行解碼器接受輸出,并返回。否則,將{τi}分類成{τij}1≤j≤M,使得。對于j=1至M,假定子行ij的Hba出錯位組被清除,并且利用出錯位組約束求出它。假定該Hba出錯位組針對子行ij,在相應陪集中解碼rij;如果成功,斷開并返回。如果上述過程對于所有j都失敗,則聲明解碼失敗。
定理10.令ti表示子行i中發(fā)生的差錯的數(shù)量,i=1,...M。令Ea={i∶ti≥da/2}。上述算法校正全部差錯模式,使得 1.Ea=,或 2.Ea={i},ti<db/2,并且 證明.如果Ea=,則全部子行將被校正,并且成功地解碼。如果Ea={i}并且τi=∞,則全部子行除了第i行都將被正確地解碼。子行i的Hba出錯位組因而被正確推論出,由于ti<db/2,將校正ti個差錯。最后,對于所有i,如果Ea={i}但是τi<∞,假如當假定子行j的Hba出錯位組被清除時,解碼算法錯校(miscorrects)接收的字為不同于原始的碼字。通過該方式所述算法起作用,這僅當τi≤τj=tj時發(fā)生。令τ′j表示當在Cb的陪集中被解碼時,子行j在最后步驟中被錯校時發(fā)現(xiàn)的″差錯″的數(shù)量。注意到,正確碼字與錯校的輸出之間的漢明距離最多為 這是一種矛盾。
注意適當修改上述算法也可以被用來解碼結(jié)構(gòu)1的碼。
最后,注意到,取決于碼所被應用的系統(tǒng)的要求,本節(jié)開始時的兩步解碼原理可以這種方式通用,即在第一步中,代替單純檢錯,執(zhí)行差錯校正與差錯檢測的組合。例如,可以單獨使用次要碼來校正取回的子行,最多為一定(較小)數(shù)量的差錯,如果在子行中檢測到多于該數(shù)量的差錯,才啟動所述行碼進行進一步差錯校正。這種修改的解碼原理通常將犧牲一些可靠性,以為了較少求助于解碼整行。取決于具體的系統(tǒng)環(huán)境,這可以是一種合理做法。
雖然根據(jù)單個優(yōu)選實施例描述了本發(fā)明,然而本領(lǐng)域技術(shù)人員會認識到,可以通過所附權(quán)利要求書的宗旨和范圍內(nèi)的修改實施本發(fā)明。例如,雖然根據(jù)使用動態(tài)隨機存取存儲器(DRAM)設備的存儲器描述了本發(fā)明,然而本領(lǐng)域技術(shù)人員會認識到,利用其它不同的存儲器技術(shù)也可實施本發(fā)明。另外,發(fā)明的簡要說明在連同和/或數(shù)據(jù)的每行內(nèi)存儲的冗余符號的環(huán)境中,但是這對于本發(fā)明的實施來說不是必要的。一些或全部冗余符號可能存儲在不同于存儲數(shù)據(jù)的子行的存儲器的專用存儲器中。例如,可利用靜態(tài)隨機存取存儲器(SRAM)技術(shù)存儲共享冗余度。此外,本發(fā)明不局限于應用于主存儲器,而是可被更有利地應用于包括在具有一個或多個處理器內(nèi)核的處理器芯片上的存儲介質(zhì)中。
權(quán)利要求
1.一種用于存儲器允許子行訪問的差錯控制方法,包括步驟
將存儲器中的一個數(shù)據(jù)行分成多個數(shù)據(jù)子行;
將碼的第一層加到所述多個數(shù)據(jù)子行中的每一個,所述碼的第一層為所述多個數(shù)據(jù)子行中的每一個提供局部保護;
將碼的第二層加到所述數(shù)據(jù)行,所述碼的第二層為所述多個數(shù)據(jù)子行提供全局保護;
取回一個或多個數(shù)據(jù)子行,其中所訪問的數(shù)據(jù)子行可位于不同的數(shù)據(jù)行,并且多個子行可被并行取回;
利用所述第一層碼檢測數(shù)據(jù)子行中的差錯;以及
利用所述第二層碼校正數(shù)據(jù)子行中的差錯。
2.如權(quán)利要求1所述的存儲器的差錯控制方法,其中檢測差錯的步驟還包含利用所述第一層碼校正差錯的步驟,以及其中利用所述第二層碼校正差錯的步驟被限制為校正尚未利用所述第一層碼校正的那些差錯。
3.如權(quán)利要求1所述的存儲器的差錯控制方法,進一步包括步驟
計算數(shù)據(jù)行的一個子行與其它子行所共享的、由所述數(shù)據(jù)子行的內(nèi)容變化引起的更新后的冗余信息,所述計算基于所述子行的新舊值之差;
如果需要,計算子行專有的更新后的冗余信息;以及
將所有更新后的冗余信息和所述數(shù)據(jù)子行的新內(nèi)容寫入存儲器中。
4.如權(quán)利要求1所述的存儲器的差錯控制方法,進一步包括在與所述多個數(shù)據(jù)子行相同存儲器位置上存儲所述共享的冗余信息的步驟。
5.如權(quán)利要求1所述的存儲器的差錯控制方法,進一步包括將所述共享的冗余信息存儲在與所述多個數(shù)據(jù)子行不同的存儲器位置中的步驟。
6.如權(quán)利要求1所述的存儲器的差錯控制方法,其中所述共享的冗余信息能夠獨立于存儲器中的任何其他信息被訪問。
7.如權(quán)利要求1所述的存儲器的差錯控制方法,進一步包括存儲器刷擦方法,包括步驟
讀取具有相關(guān)冗余信息的整行;
利用第一和第二層差錯控制碼來檢測和校正差錯;以及
回存整行及其相關(guān)冗余信息。
8.如權(quán)利要求1所述的存儲器的差錯控制方法,其中所述分割一個數(shù)據(jù)行的步驟產(chǎn)生M個子行,所述第i個子行的局部保護通過具有奇偶校驗矩陣Ha(i)的碼而獲得,全部所述子行的全局保護通過具有奇偶校驗矩陣
的碼獲得。
9.如權(quán)利要求8所述的存儲器的差錯控制碼的方法,其中選擇所述矩陣Ha(1),...Ha(M)和Hba,使得由
給出的奇偶校驗矩陣HMDS為最大距離可分碼的奇偶校驗矩陣。
10.如權(quán)利要求1所述的存儲器的差錯控制方法,其中所述分割數(shù)據(jù)行的步驟產(chǎn)生M個數(shù)據(jù)子行,數(shù)據(jù)的每個子行的局部保護通過具有奇偶校驗矩陣Ha的碼而獲得,所述數(shù)據(jù)的子行的全局保護通過具有奇偶校驗矩陣
的碼獲得,其中Qi,i=1,...M-1被選擇為不同的、滿秩方陣。
11.如權(quán)利要求1所述的存儲器的差錯控制方法,其中每個數(shù)據(jù)子行的局部保護利用具有最小距離dlocal的碼獲得,數(shù)據(jù)子行的全局保護利用具有最小距離dglobal的碼獲得,并且所述最小距離dglobal大于最小距離dlocal的兩倍大。
12.一種具有多個數(shù)據(jù)行的存儲器系統(tǒng),每個數(shù)據(jù)行由利用第一和第二層碼保護的數(shù)據(jù)子行組成,包括
訪問裝置,用于從存儲器中讀取一個或多個子行數(shù)據(jù)連同每個被訪問的數(shù)據(jù)子行的冗余信息,其中被訪問的數(shù)據(jù)子行可以處于不同的數(shù)據(jù)行,以及多個子行可被并行訪問;
檢錯裝置,用于檢測從存儲器中讀出的數(shù)據(jù)子行中是否存在差錯,以及響應于所述檢錯裝置所檢測到差錯、用于讀取所述數(shù)據(jù)行中的附加數(shù)據(jù)子行連同共享冗余信息的裝置;以及
差錯校正裝置,用于試圖利用專有和共享冗余信息以及讀出的行的值校正由所述檢測裝置檢測到的差錯,并且報告任何檢測到的差錯以及所述差錯是否可被校正。
13.如權(quán)利要求12所述的存儲器系統(tǒng),進一步包括存儲器子行寫入裝置,子行寫入導致改變存儲器中的該子行的內(nèi)容以及更新共享冗余信息,從而無需讀出其它存儲器子行就可以實現(xiàn)所述共享冗余信息的更新。
14.如權(quán)利要求12所述的存儲器系統(tǒng),進一步包括存儲器子行讀-修改-寫操作裝置,子行讀-修改-寫操作導致讀出及寫入存儲器中的子行并且額外地更新共享冗余信息,從而所述共享冗余信息的更新無需讀出其它存儲器子行就可實現(xiàn)。
15.如權(quán)利要求12所述的存儲器系統(tǒng),其中所述共享冗余被存儲在不同于存儲所述數(shù)據(jù)子行的存儲器的專用存儲器中。
16.如權(quán)力要求15所述的存儲器系統(tǒng),其中所述專用存儲器利用靜態(tài)隨機存取存儲器(SRAM)技術(shù)構(gòu)成。
17.如權(quán)力要求12所述的存儲器系統(tǒng),其中所述存儲器利用動態(tài)隨機存取存儲器(DRAM)器件構(gòu)成。
18.如權(quán)利要求12所述的存儲器系統(tǒng),其中所述存儲器被用作存儲介質(zhì),用于具有至少一個處理器內(nèi)核的處理器芯片。
全文摘要
本發(fā)明涉及一種差錯控制的方法和存儲器系統(tǒng)。更具體地,涉及一種雙層差錯控制協(xié)議檢測子行層上的差錯,并且利用整行碼字校正差錯。這使系統(tǒng)能讀取小段的編碼數(shù)據(jù),并且在接受它之前檢查差錯,在檢測到差錯的情況下,將讀取整個碼字以便糾錯。
文檔編號G11C29/40GK101231891SQ200810001928
公開日2008年7月30日 申請日期2008年1月3日 優(yōu)先權(quán)日2007年1月4日
發(fā)明者路易斯·A.·拉斯特拉斯-蒙塔諾, 韓俊生, 邁克爾·R.·特朗布利 申請人:國際商業(yè)機器公司