徐 輝,朱 爍,孫皓潔,馬瑞君,梁華國,黃正峰
(1.安徽理工大學計算機科學與工程學院,安徽 淮南 232001; 2.合肥工業(yè)大學微電子學院,安徽 合肥 230009)
伴隨著時代不斷發(fā)展,工藝技術(shù)不斷精進,在納米級別的金屬氧化物半導體集成電路中,晶體管的尺寸也同時在快速縮小。晶體管的縮小雖然帶來了很多優(yōu)勢,例如低成本和低功耗,但是也會不可避免地帶來一些問題,軟錯誤便是其中之一。軟錯誤通常是由空間中的帶電粒子對電路的轟擊造成的[1-3]。如圖1所示,高能粒子沖擊內(nèi)存模塊底層電路上的晶體管時,產(chǎn)生的電荷會通過漂移和擴散機制被附近的PN結(jié)吸附。當電荷量積聚到一定程度后,便會產(chǎn)生一個瞬態(tài)脈沖,導致電平值異常。異常的電平值傳導到電路功能模塊,此時會產(chǎn)生錯誤的邏輯值,這種情況被稱為單粒子翻轉(zhuǎn)SNU(Single-Node-Upset)[4-6]。因為集成電路本身的連接復雜,加之電荷共享,很多敏感節(jié)點邏輯值都會同時受到影響,從而產(chǎn)生多節(jié)點翻轉(zhuǎn)MNU(Multiple-Node-Upset),比如三節(jié)點翻轉(zhuǎn)TNU(Triple-Node-Upset)[7,8]。目前針對MNU的主流研究方向是針對TNU進行加固。據(jù)研究,節(jié)點翻轉(zhuǎn)后,發(fā)生MNU的概率在40 nm技術(shù)中達到了35%以上,而TNU發(fā)生的概率占到了8%,且隨著工藝技術(shù)的進步,TNU發(fā)生的概率逐步在上升。節(jié)點翻轉(zhuǎn)會導致數(shù)據(jù)存儲和執(zhí)行錯誤,甚至系統(tǒng)崩潰,這都將會影響系統(tǒng)的正常工作[9,10]。因此,設(shè)計出低功耗、能容忍TNU且自恢復的鎖存器具有實際意義。
Figure 1 Particles strike transistor圖1 粒子轟擊晶體管
Figure 2 C-element and clock C-element of different inputs, and their symbols of C-element and clock C-element, and DICE element圖2 不同單元輸入的C單元和時鐘單元及其單元簡化圖和DICE單元
為了解決TNU,涌現(xiàn)出了很多加固的方式,比如布局隔離、空間冗余技術(shù)和電路設(shè)計加固。其中,主要的解決方案仍然是電路設(shè)計加固。因此,本文提出一種基于C單元的三節(jié)點翻轉(zhuǎn)自恢復鎖存器MKEEP。通過仿真實驗表明,相比于其他鎖存器,本文所提的MKEEP鎖存器不僅具有三節(jié)點翻轉(zhuǎn)自恢復的能力,同時還有功耗小、延遲低的特點。
在很多的鎖存器加固設(shè)計中,由于C單元容忍單節(jié)點翻轉(zhuǎn)的特性,它的應用無疑是很廣泛的。圖2a~圖2d代表的是不同輸入的C單元和時鐘C單元。當C單元輸入相同時,輸出便是輸入相反的邏輯值;如果輸入不相同,此時便是C單元的高阻狀態(tài)。同時,C單元與時鐘相配合使用可以減少鎖存器在透明時期的功耗。除了C單元之外,還有雙互鎖存儲鎖存器DICE(Dual-Interlocked storage CEll)。DICE鎖存器可以實現(xiàn)單節(jié)點翻轉(zhuǎn)自恢復的特性受到很多青睞。
隨著對鎖存器加固設(shè)計研究的深入,基于這些基礎(chǔ)結(jié)構(gòu),很多容忍或者同時具備節(jié)點翻轉(zhuǎn)自恢復能力的鎖存器涌現(xiàn)了出來。
Figure 3 TNUHL-DICE, TNURL, TNUHL, and LCTNUT latches圖3 TNUHL-DICE、 TNURL、TNUHL和LCTNUT鎖存器
如圖3a所示,TNUHL_DICE(TNU-Hardened Latch based on Dual-Interlocked storage CEll)鎖存器利用了DICE單元的相互配合,具備了三節(jié)點翻轉(zhuǎn)并自恢復的能力。如上文所述,DICE單元首先完全容忍單節(jié)點翻轉(zhuǎn),在DICE單元中4個存儲節(jié)點中任何一個節(jié)點發(fā)生了翻轉(zhuǎn),都會被其他未受影響的節(jié)點恢復。TNUHL的鎖存器設(shè)計使用了4個DICE單元相互配合彌補DICE單元的不足之處。在最壞的情況下,也就是2個鎖存器都被翻轉(zhuǎn)節(jié)點所影響的時候,利用剩下的2個DICE單元進行恢復;同時使用了時鐘C單元的變形模式,增加了2個輸入,當有3個節(jié)點發(fā)生翻轉(zhuǎn)時,4輸入的時鐘C單元會將錯誤邏輯值攔截使之不會影響輸出Q。但是,TNUHL鎖存器的4個DICE單元沒有配合時鐘進行使用,所以功耗相對較高。
圖3b中的TNURL(TNU self-Recover Latch)鎖存器結(jié)構(gòu)是由一種軟錯誤攔截模塊SIM(Soft-error-Interceptive Module)構(gòu)成的。如圖3b虛線圈起來的結(jié)構(gòu)所示,其中SIM結(jié)構(gòu)是由3輸入的C單元和1個時鐘C單元組成。鎖存器面對的最大威脅就是高能粒子轟擊在同一個SIM結(jié)構(gòu)上,造成SIM結(jié)構(gòu)中一個3輸入的C單元輸出發(fā)生翻轉(zhuǎn),但是錯誤邏輯值會被下一層的時鐘C單元攔截,無法進一步擴大影響范圍。在恢復階段,通過未受影響的其他SIM結(jié)構(gòu)中時鐘C單元的輸出將邏輯值恢復。
圖3c中的TNUHL鎖存器使用了一個非常對稱而又巧妙的設(shè)計,這種設(shè)計就是圖中圈注的恢復電路部分RC(Restore-Circuit),同時還使用2輸入的時鐘C單元進行錯誤邏輯值的攔截,以保證不輸出錯誤的邏輯值。TNUHL鎖存器的功耗延時都非常出色,但是這種鎖存器設(shè)計的目的是容忍三節(jié)點翻轉(zhuǎn),卻沒有自恢復的能力。
圖3d中LCTNUT(Low Cost and TNU completely Tolerant latch)鎖存器左半部分的設(shè)計使用了反相器輸入分離的結(jié)構(gòu),并構(gòu)成一個循環(huán)的路徑,同時使用2個C單元和1個時鐘C單元搭建成攔截錯誤邏輯值的層次結(jié)構(gòu)。相比于C單元的鎖存器結(jié)構(gòu),LCTNUT鎖存器使用了更少的晶體管,降低了整體的功耗開銷;而且在結(jié)構(gòu)上還配合了時鐘,以便于在透明期減少功耗開銷。但是,這種鎖存器只能容忍三節(jié)點翻轉(zhuǎn),無法自恢復。
MKEEP鎖存器結(jié)構(gòu)如圖4所示。圖4中,D、Q分別為輸入信號和輸出信號,CLK、CLKB為時鐘信號。結(jié)構(gòu)組成包括7個傳輸門、6個C單元和6個時鐘C單元。
Figure 4 MKEEP latch圖4 MKEEP鎖存器
當CLK=1,CLKB=0時,鎖存器處于透明期。通過傳輸門TG1至TG6,節(jié)點Q、N3、N5、N7、N9、N11得到由輸入D傳遞的數(shù)據(jù);然后,這6個節(jié)點分別通過a、b模塊中的C單元A1~A6賦予其他節(jié)點邏輯值;而此時的所有時鐘C單元處于關(guān)斷狀態(tài),目的在于減少功耗,避開電流競爭。
當CLK=0,CLKB=1時,鎖存器處于鎖存期。此時傳輸門全部關(guān)斷,時鐘C單元全部導通,模塊a、b內(nèi)部節(jié)點之間便會產(chǎn)生反饋回路來保存數(shù)據(jù)。
下面將進行鎖存器容錯分析:
(1)單節(jié)點翻轉(zhuǎn):例如當輸出Q受到了輻射粒子的轟擊,此時,節(jié)點Q所在的C單元A1和A5都根據(jù)自身防止單節(jié)點翻轉(zhuǎn)的特性將錯誤的邏輯值阻塞,使受到影響的節(jié)點無法對電路造成更大的影響。接下來,通過時鐘C單元B3將Q點的邏輯值恢復。其他的單節(jié)點翻轉(zhuǎn)亦是如此情況,MKEEP鎖存器完全容忍單節(jié)點翻轉(zhuǎn)并可以自恢復。
(2)雙節(jié)點翻轉(zhuǎn):雙節(jié)點翻轉(zhuǎn)的情況分為2種。如果兩個節(jié)點不是在同一個C單元上發(fā)生翻轉(zhuǎn),這種情形和單節(jié)點翻轉(zhuǎn)的情況一致。雙節(jié)點翻轉(zhuǎn)的最糟糕情況就是同一個模塊同一個C單元中2個節(jié)點的翻轉(zhuǎn),引起了第3個節(jié)點的翻轉(zhuǎn)。例如,在a模塊中,當Q節(jié)點翻轉(zhuǎn)和N3節(jié)點翻轉(zhuǎn)同時發(fā)生的時候,C單元A1輸出的邏輯值翻轉(zhuǎn),如此下來節(jié)點N2就會受到影響。因此,N2所在的時鐘C單元B1會處于高阻態(tài)。在b模塊中,節(jié)點Q、N3和N2都是分別作用于C單元A5、A4和時鐘C單元B5,錯誤的邏輯值都會被所在的C單元或者時鐘C單元攔截住。鎖存器的恢復就開始展開;首先節(jié)點Q的值將會通過時鐘C單元B3恢復,節(jié)點N3的值將會通過節(jié)點N6和N12恢復;最后,節(jié)點N2通過C單元A1恢復。
(3)三節(jié)點翻轉(zhuǎn):三節(jié)點翻轉(zhuǎn)分為4種情況。
第1種情況就是在2個模塊中3個節(jié)點分散開來分別影響3個C單元,這種情況相當于3個單節(jié)點翻轉(zhuǎn)情形的疊加,這里不再贅述。
第2種情況比起第1種情況更糟糕些;例如,當節(jié)點N3、Q和N7發(fā)生翻轉(zhuǎn)的時候,此時在a模塊中,C單元A1的輸出N2徹底發(fā)生翻轉(zhuǎn),但是錯誤邏輯值被時鐘C單元B1攔截住,而節(jié)點N7產(chǎn)生的錯誤邏輯值則被C單元A2攔截住。在b模塊中,節(jié)點N3發(fā)生翻轉(zhuǎn),C單元A4攔截住了錯誤邏輯值。節(jié)點Q和N7發(fā)生翻轉(zhuǎn)后,C單元A5就會發(fā)生錯誤輸出,此時節(jié)點N8也會翻轉(zhuǎn),但是時鐘C單元B5攔截住了錯誤的邏輯值。也就是這種情況影響了Q、N2、N3、N7、N8一共5個節(jié)點,但是錯誤的邏輯值都被鎖存器攔截住了。至于恢復階段,時鐘C單元B3和B4的正常輸出將恢復節(jié)點Q、N7的狀態(tài);時鐘C單元B6的正常輸出將更正節(jié)點N3的輸出;在節(jié)點Q、N3的正常邏輯值恢復之后,同時C單元A1的輸出將會恢復,節(jié)點N2則回歸到正常邏輯值;節(jié)點Q、N7的正常邏輯值使C單元A5正常輸出,恢復節(jié)點N8的狀態(tài)。由此看來,鎖存器完全可以應對三節(jié)點翻轉(zhuǎn)的第2種情況。
第3種情況也是比較糟糕的一種情況。例如,當節(jié)點N3、Q和N4發(fā)生翻轉(zhuǎn)的時候,對于a模塊中的C單元A1,它的輸出將會翻轉(zhuǎn),也就是造成節(jié)點N2的翻轉(zhuǎn);由于節(jié)點N4翻轉(zhuǎn),此時的時鐘C單元B1的2個輸入都發(fā)生翻轉(zhuǎn),所以B1的輸出N5也會翻轉(zhuǎn);但是由于節(jié)點N7未發(fā)生翻轉(zhuǎn),所以C單元A2將錯誤的邏輯值攔截住。也就是說,此次3個翻轉(zhuǎn)的節(jié)點造成了另外2個節(jié)點的翻轉(zhuǎn),一共5個節(jié)點發(fā)生了翻轉(zhuǎn)。對于b模塊,在上文中的工作原理中也說明了,這正是MKEEP鎖存器的重點之處,將5個節(jié)點分別散落放在鎖存器結(jié)構(gòu)的不同C單元上,這樣,對于b模塊中的C單元就會將所有的錯誤邏輯值攔截住。接下來就是這種情況的恢復。首先a模塊中時鐘C單元B3持續(xù)輸出的正確邏輯值將Q恢復;b模塊中的時鐘C單元B6將恢復節(jié)點N3的正確邏輯值;a模塊中的C單元A1輸出則因為2個輸入的恢復而正常,那么N2的邏輯值將會被恢復;同理,b模塊中的C單元A4則會將N4的正確邏輯值恢復過來;最后,在節(jié)點N2、N4正確恢復之后,節(jié)點N5的邏輯值也被正確恢復。鎖存器所有的節(jié)點都被正確恢復,并繼續(xù)正常工作。
第4種情況影響的節(jié)點數(shù)應該是最糟糕的一種情況。例如,節(jié)點N1、N3和N9發(fā)生翻轉(zhuǎn),那么此時影響節(jié)點的范圍相對于第3種情況進一步地擴大。在a模塊中,節(jié)點Q、N3的翻轉(zhuǎn)使節(jié)點N2發(fā)生了翻轉(zhuǎn);b模塊中節(jié)點N3、N9的翻轉(zhuǎn)導致了節(jié)點N4的翻轉(zhuǎn);同時節(jié)點N4發(fā)生翻轉(zhuǎn)反饋至a模塊,N5因此發(fā)生翻轉(zhuǎn);但是節(jié)點N7沒有發(fā)生翻轉(zhuǎn),所以傳輸?shù)腻e誤值被C單元A2攔截。同樣,由于節(jié)點N9的翻轉(zhuǎn),a模塊中的C單元A3處于高阻態(tài),b模塊中的時鐘C單元和C單元B4、A5、B5、A6分別攔截住了節(jié)點N4、Q、N2、N5傳遞的錯誤邏輯值。由于錯誤的邏輯值沒有繼續(xù)往下傳播,恢復的步驟就可以依據(jù)正確工作的邏輯值展開。節(jié)點N9的邏輯值,可以通過時鐘C單元B2正確恢復;節(jié)點N3可以通過時鐘C單元B6正確恢復;節(jié)點N3、N9的正確恢復就可以使C單元A4輸出正確的邏輯值,因此節(jié)點N4正確恢復;節(jié)點Q可以通過時鐘C單元B3正確恢復;由于節(jié)點N3、N1恢復至正確的邏輯值,所以節(jié)點N2可以通過C單元A1正確恢復;同理,節(jié)點N5也可以被正確恢復。所以,以上被影響的節(jié)點都被恢復。
綜上所述,MKEEP鎖存器完全可以實現(xiàn)三節(jié)點的容忍并自恢復。
本節(jié)將會通過實驗來驗證MKEEP鎖存器的魯棒性和節(jié)點冗余自恢復能力。使用仿真軟件HSPICE并基于32 nm的工藝模型,設(shè)定的電源電壓為0.9 V,溫度為27 ℃,時鐘頻率為500 MHz。NMOS管的長寬比是1∶1;PMOS管的長寬比是1∶2。圖5和圖6中是MKEEP鎖存器的正常波形和在故障注入后的波形圖。
Figure 5 Simulation results of MKEEP in the error-free case圖5 MKEEP無故障注入下的仿真波形圖
Figure 6 Simulation results of MKEEP in the error case圖6 MKEEP故障注入下的仿真波形圖
這里依據(jù)上面節(jié)點恢復的分析,對鎖存器進行故障注入實驗。根據(jù)上文中舉例的情況進行波形仿真實驗,閃電標志的地方代表上述情況中受到粒子輻射的節(jié)點。從圖6可以看出,無論是雙節(jié)點翻轉(zhuǎn)還是三節(jié)點翻轉(zhuǎn),MKEEP鎖存器都能很快地將錯誤的邏輯值恢復至原本的正常狀態(tài)。
為了進一步評估鎖存器的效能,本文要進行可靠性、面積、延遲和功耗的測試和比較(延遲是指輸入D到輸出Q的傳輸延遲,功耗為平均功耗)。將MKEEP鎖存器與LCHR(Low Cost and Highly Reliable radiation latch)[10]、DNCS(Double Node Charge Sharing SEU tolerant design)[11]、NTHLTCH(Non-Temporally Hardened LaTCH)[12]、Delta_DICE[13]、DONUT(DOuble Node Upset Tolerant latch)[14]、TNU_LATCH(Radiation hardened LATCH for TNU)[15]、LCTNURL[16]、TNUHL_DICE[17]、TNURL[18]、TNUHL[19]和LCTNUT[20]鎖存器在相同的條件下進行仿真比較。仿真環(huán)境為:使用HSPICE仿真軟件,32 nm工藝庫,電壓為0.9 V,溫度為27 ℃,時鐘信號為500 MHz。
表1列出了以上所說的各種鎖存器對單節(jié)點和多節(jié)點翻轉(zhuǎn)的容忍自恢復能力。其中達到三節(jié)點翻轉(zhuǎn)容忍并自恢復的鎖存器是LCTNURL、TNURL_DICE和TNURL。而LCTNUT和TNU_LATCH只擁有對三節(jié)點翻轉(zhuǎn)容忍的能力。
表2中給出了各鎖存器的延遲功耗仿真結(jié)果。除了延時功耗外,還有一個重要因素就是平均延時和平均功耗的乘積值,一般稱作PDP(Power- Delay-Product),最后一列就是鎖存器對應的PDP值。PDP的計算公式如式(1)所示:
Table 2 Power consumption,delay and PDP of each latch表2 各鎖存器的功耗、延遲和PDP
PDP=Power×Delay
(1)
其中,Power表示功耗,Delay表示延遲。
為了更詳細地比較,需要進行鎖存器之間的相對開銷計算,如式(2)所示:
Δ=(ProposedLatch-
ComparedLatch)/ComparedLatch
(2)
其中,ProposedLatch表示本文結(jié)構(gòu)在表3中對應的數(shù)值,ComparedLatch表示列舉出的鎖存器在表3中對應的數(shù)值。
從表3可以看出,MKEEP鎖存器在功耗和延遲上相比其他鎖存器具有優(yōu)勢。如果在表3中單獨進行對比,功耗和延時比較占有優(yōu)勢的就是LCTNUT鎖存器,但是此鎖存器只能容忍三節(jié)點翻轉(zhuǎn),卻無法自恢復。而本文提出的MKEEP鎖存器卻可以完全容忍三節(jié)點翻轉(zhuǎn)并且自恢復。與其他三節(jié)點翻轉(zhuǎn)自恢復的鎖存器相比,MKEEP鎖存器在晶體管的數(shù)量上減少了,這會降低面積開銷。
Table 3 Cost comparison of MKEEP and other latches表3 與其他鎖存器的成本比較 %
Figure 7 Results of each latch in PVT experiments圖7 各鎖存器在PVT實驗下的結(jié)果
隨著CMOS電路的相關(guān)工藝技術(shù)飛快發(fā)展,晶體管的特征尺寸不斷地減小,這也成為了鎖存器對PVT變化敏感的重要因素。為了進一步檢驗鎖存器的穩(wěn)定性,使用HSPICE仿真軟件對MKEEP鎖存器進行合理的PVT(Process- Voltage-Temperature)分析也很重要[21,22]。
PVT實驗工藝分為5個類型:TT(典型NMOS、典型PMOS)、FF(快速NMOS、快速PMOS)、SS(慢速NMOS、慢速PMOS)、FNSP(快速NMOS、慢PMOS)和SNFP(慢NMOS、快PMOS)[23-25]。本文將電壓設(shè)從0.75 V~1.25 V,間隔是0.05 V。溫度變化則在-25 ℃~125 ℃。
經(jīng)過PVT的仿真實驗,最后得到了圖7所示的折線圖。圖7a與圖7b、圖7c與圖7d、圖7e與圖7f分別是在溫度、電壓和工藝的變化下,本文設(shè)計的鎖存器與參考鎖存器在實驗中功耗和延遲的相關(guān)數(shù)據(jù)組成的折線圖。從圖7a和圖7b中可以看到,隨著溫度的升高,鎖存器延遲整體在升高,而功耗則是整體下降。MKEEP鎖存器功耗保持穩(wěn)定而且數(shù)值較小,延遲上升的幅度基本上沒有變化。
圖7c和圖7d表示的是鎖存器對電壓變化的敏感度。依據(jù)電路中功耗和電壓的定律公式,隨著電壓的升高,鎖存器的功耗會升高;但是,隨著電壓升高,電阻相對不變,整個鎖存器的電流就會增加,于是鎖存器的延時便會降低。從折線圖中可以看到,某些參考的鎖存器在電壓變化的情況下,功耗和延遲的變化都是非常明顯的;而本文設(shè)計的MKEEP鎖存器對電壓變化的敏感度較低。
圖7e和圖7f表示工藝的變化對鎖存器的影響。從圖中可以看出,每種鎖存器的功耗在工藝FF中達到最大,在工藝SS中則是最小。延遲則是與之相反。圖中功耗和延遲越曲折,代表鎖存器越容易受到工藝的影響。從實驗的結(jié)果來看,MKEEP鎖存器受到工藝變化的影響較小。
隨著半導體集成電路技術(shù)的進步,高能粒子轟擊鎖存器造成的TNU變得更為嚴重。與此同時,大多數(shù)現(xiàn)有的鎖存器對三節(jié)點翻轉(zhuǎn)和自恢復的效果并不是很理想。為了解決這些問題,本文設(shè)計了一種高性能、低功耗的三節(jié)點翻轉(zhuǎn)自恢復的鎖存器MKEEP。通過HSPICE仿真實驗表明,相比于其他三節(jié)點翻轉(zhuǎn)容忍或者自恢復的鎖存器,本文所提出的MKEEP在面積開銷、功耗、延遲和PDP上具有明顯的優(yōu)勢。從PVT測試實驗結(jié)果也可以看到,MKEEP鎖存器相比于其他的鎖存器表現(xiàn)得更加穩(wěn)定,受環(huán)境條件的影響較小。因此,MKEEP鎖存器是一種非常具有競爭力的鎖存器。