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