|
容錯存儲器概述 存儲器是數字系統(tǒng)中常用的器件之一,是采用大規(guī)模集成電路存儲芯片構成的。實際統(tǒng)計表明,存儲器的主要錯誤是單個電路故障所引起的一位錯或者相關多位錯,而隨機獨立的多位錯誤極少。在按字節(jié)組織的內存儲器中,主要錯誤模式為單字節(jié)錯;而在按位組織的內存儲器中,主要錯誤模式為單位錯。 半導體存儲器的錯誤大體上分為硬錯誤和軟錯誤,其中主要為軟錯誤。硬錯誤所表現(xiàn)的現(xiàn)象是在某個或某些位置上,存取數據重復地出現(xiàn)錯誤,出現(xiàn)這種現(xiàn)象的原因是一個或幾個存儲單元出現(xiàn)故障。軟錯誤主要是由α粒子引起的,存儲器芯片的材料中含有微量放射性元素,它們會間斷地釋放α粒子。這些粒子以相當大的能量沖擊存儲電容,改變其電荷,從而引起存儲數據的錯誤。引起軟錯誤的另一原因是噪聲干擾。 隨著存儲芯片容量的增大,器件的成品率呈指數規(guī)律下降。通常人們一方面改良制造工藝以提高成品率,另一方面在電路設計時通過硬件冗余的方式來實現(xiàn)可靠性的提高。當前,VLSI存儲器芯片的設計過程中主要采用兩種錯誤檢測與糾正方案。 ● 備份行(或列)方案 這種方案是在存儲芯片的設計與制造過程中,增加若干備份的行(或列)。在芯片測試時,若發(fā)現(xiàn)失效的行(或列),則通過激光(或電學)的處理,用備份行(或列)去代替它們。這種方法的優(yōu)點是設計簡單,管芯面積增加較少,電路速度沒有損失。但是,它需要增加某些測試與修正失效行(或列)的工藝環(huán)節(jié),更重要的弱點是這種方案僅適用于RAM,不能用于ROM。 ● 糾錯編碼方案 這種方案是在存儲芯片內部采用糾錯編碼,自動檢測并糾正錯誤。這種方案不需要額外的測試和糾正錯誤等工藝環(huán)節(jié),除提高成品率外,還對可靠性有明顯改進。這種方案突出的優(yōu)點是特別適合ROM,在對速度要求不高的情況下也可用于RAM。其主要缺點在于要占用額外的芯片面積,同時因編譯碼而影響芯片整個的工作速度。將用于存儲器系統(tǒng)級的糾錯編碼等容錯技術引入存儲器芯片內部,是提高存儲芯片成品率和可靠性的有效措施,例如ECC內存就采用了此技術。
常用的糾錯碼簡介 數據通信中常用的糾檢錯碼有奇偶校驗碼、漢明碼及其改進碼。 ● 在串行通信中使用的一維奇偶校驗碼是簡單的一種糾錯碼,它的編碼規(guī)律是在數據位末尾添加一位校驗位,使得整個碼字中含有奇數或偶數個1,它能發(fā)現(xiàn)所有的奇數位錯,但它不能用來糾正錯誤。需要指出的是采用二維奇偶校驗碼(即將數據按矩陣排列,分別對行、列進行一維奇偶校驗編碼)后,不僅可以糾正一位錯,還能檢出某些突發(fā)錯誤,所以在一些數據傳輸網絡中得以應用。 ● 漢明碼是一種能糾一位錯的線性分組碼,由于它的編譯碼簡單,在數據通信和計算機存儲系統(tǒng)中廣泛應用,如在藍牙技術和硬盤陣列中。它的碼距為3,可以糾正一位錯誤,但對于兩位錯不能檢測,還可能會造成誤糾。盡管發(fā)生一位錯的概率相對,但在一些要求較高的應用中漢明碼不能滿足要求。 ● 常用的能檢測兩位錯同時能糾正一位錯(簡稱糾一檢二,SEC-DED)的糾錯碼有擴展?jié)h明碼(Extended Hamming Code)和奇權碼(Optimal Odd-Weight-Column Code),它們的碼距都為4,兩者有相似之處,比如冗余度一樣,對于數據位數k,校驗位數r應滿足2r-1≥k+r,當k=16時,r=6,數據位長增加一倍,校驗位數只需增加一位,編碼效率較高。另外從來源上講,兩者分別是漢明碼的擴展碼和截短碼,也有資料稱奇權碼為修正漢明碼(Modified Hamming Code)。 本文應用于存儲器的糾錯碼是面向隨機字節(jié)數據的,一二維奇偶校驗碼都不能滿足要求,只能從奇權碼和擴展?jié)h明碼中選取。從性能上看奇權碼比擴展?jié)h明碼更為優(yōu)越,前者在糾檢錯能力方面也優(yōu)于后者,它的三位錯誤的誤糾概率低于后者,而四位錯誤的檢測概率高于后者,重要的是它便于硬件實現(xiàn),故應用得多,本文決定采用奇權碼。
編譯碼原理 首先構造奇權碼的校驗矩陣即H矩陣,奇權碼的H矩陣應滿足: (1)每列含有奇數個1,且無相同列; (2)總的1的個數少,所以校驗位、伴隨式生成表達式中的半加項數少,從而生成邏輯所需的半加器少,可以節(jié)約器材、降低成本和提高可靠性。 (3)每行中1的個數盡量相等或接近某個平均值,這種決定了生成邏輯及其級數的一致性,不僅譯碼速度快,同時線路勻稱。 應用中采用(13,8,4)奇權碼,數據碼為(d7d6···d1d0),校驗碼為(),P矩陣和編碼規(guī)則分別為: 譯碼時把數據再次編碼所得到的新校驗位與原校驗位模二加,便得到伴隨式S,由其可判別錯誤類型。 (1)若S=0,則認為沒有錯誤; (2)若S≠0,且S含有奇數個1,則認為產生了單位錯; (3)若S≠0,且S含有偶數個1,則認為產生了兩位錯; 其中的情況(2)中,根據錯誤圖樣可以確定錯誤位置,將其取反即可完成糾錯。 因為對用戶而言真正有用的是數據,校驗位是無用的。為了節(jié)省時間和器材,只對數據糾錯,而對校驗位不進行糾錯,糾錯后的數據也不再寫回存儲器。
糾檢錯性能分析 糾一檢二碼可以校正單錯,存儲器不因單錯而中斷工作,故其平均無故障時間MTBF增大,提高了可靠性。但是糾一檢二碼的新增器材又使MTBF有所下降。 在效率上,設在時間T內,發(fā)生1位錯的次數為n1,發(fā)生兩位及多位錯的次數為n2,則未采用糾錯碼時,平均無故障時間為 T1=T/(n1+n2)=T/(1+n1/n2)n2。 采用奇權碼后,一位錯是可糾的,僅兩位及多位錯是不可糾的,作為出錯處理。設由于采用糾錯碼而增加器材δ%,因而采用奇權碼后的平均無故障時間為 據資料估計,對于1位錯占整個錯誤的比例n1/(n1+n2)為80%~90%,δ=8,增益G為4.6~9.3。
糾錯系統(tǒng)原理框圖 可以采用邏輯運算和ROM查表兩種方法進行糾錯,是邏輯運算糾錯的原理框圖,是ROM查表糾錯的原理框圖。 用邏輯運算進行糾錯使用標準邏輯門電路實現(xiàn),結構較復雜,容易產生時序錯誤及競爭冒險;用ROM查表進行糾錯使用ROM/EPROM/E2PROM構成編碼、譯碼表,電路結構簡單,由于本文中的碼長較短,所以采用易于實現(xiàn)的第二種方法,另外,也可采用PLD/CPLD/FPGA等可編程邏輯器件。
驗證電路原理圖 是驗證電路原理圖,采用Atmel公司51內核的AT89S8252單片機可實現(xiàn)在線編程,ECC ENABLE是控制校驗位生成的口線,低電平有效,與寫控制線進行或運算后使用。
總結 本文介紹了數字集成電路中提高存儲器可靠性的途徑,著重說明了使用糾錯編碼的方法,其中給出了使用奇權碼(擴展?jié)h明碼)的應用原理和實例,終通過電路驗證了該方案是可行有效的。
|