鮑迪 孫逸帆 劉驍 王冠雄 楊鹿
(上海航天電子技術(shù)研究所/八院智能計(jì)算技術(shù)重點(diǎn)實(shí)驗(yàn)室,上海,201109)
隨著空間應(yīng)用技術(shù)的發(fā)展,針對(duì)星載數(shù)據(jù)高速處理、交換及大吞吐量的需求,采用COTS器件的分布式大容量存儲(chǔ)架構(gòu)具有成本低廉、功能密度高、開(kāi)發(fā)周期短等特點(diǎn)。然而COTS器件一般不采用抗輻照工藝、器件內(nèi)部單元庫(kù)未采取加固設(shè)計(jì),通常沒(méi)有抗輻照指標(biāo),器件本身抗單粒子翻轉(zhuǎn) (SEU)、閂鎖 (SEL)、總劑量 (TID)等空間輻射能力較弱。如果不對(duì)其進(jìn)行有針對(duì)性的可靠性設(shè)計(jì),容易引發(fā)數(shù)據(jù)運(yùn)算錯(cuò)誤、功能中斷等故障,影響在軌任務(wù)的正常執(zhí)行。
隨著信息技術(shù)的高速發(fā)展,越來(lái)越多的領(lǐng)域采用多片NAND Flash級(jí)聯(lián)或組成陣列以擴(kuò)大存儲(chǔ)空間和提高數(shù)據(jù)吞吐量。NAND Flash寫(xiě)入的平均時(shí)間為 200μs,最大等待時(shí)間為 700μs,若不按順序依次寫(xiě)入數(shù)據(jù),速度就會(huì)很慢,無(wú)法滿足實(shí)際的使用要求[1]。
采用多通道NAND Flash陣列,可以有效地解決這一問(wèn)題。在多通道NAND Flash陣列中,每個(gè)閃存通道都有自己獨(dú)立的通道緩存、時(shí)序模塊、數(shù)據(jù)總線和控制總線,每個(gè)通道并行工作互不影響,由硬件邏輯來(lái)實(shí)現(xiàn)數(shù)據(jù)到各個(gè)通道上的自動(dòng)分配,大大提高了數(shù)據(jù)的傳輸速度。
但由于NAND Flash本身的工藝局限性,數(shù)據(jù)在傳輸與存儲(chǔ)過(guò)程中可能發(fā)生 “位翻轉(zhuǎn)”的現(xiàn)象。故為了保證存儲(chǔ)數(shù)據(jù)的可靠性,NAND Flash存儲(chǔ)系統(tǒng)在使用過(guò)程中需要伴隨一定的檢錯(cuò)與糾錯(cuò)機(jī)制。而且COTS器件為了減小尺寸,往往采用新材料、新結(jié)構(gòu)及新封裝形式。生產(chǎn)廠商為獲得最大利益,在滿足設(shè)計(jì)指標(biāo)的基礎(chǔ)上,對(duì)設(shè)計(jì)、工藝、產(chǎn)地的要求都比較寬松,不同批次器件一致性較差,且器件記錄不完整,一旦出現(xiàn)問(wèn)題,用戶無(wú)法追溯。商用器件的應(yīng)用環(huán)境不是太空環(huán)境,設(shè)計(jì)時(shí)不會(huì)考慮空間環(huán)境應(yīng)用,更缺乏應(yīng)用于宇航環(huán)境的可靠性數(shù)據(jù)與試驗(yàn),因此直接用于宇航領(lǐng)域存在較大風(fēng)險(xiǎn)。
與宇航級(jí)器件相比,COTS器件在出廠時(shí)沒(méi)有進(jìn)行嚴(yán)格的篩選試驗(yàn),導(dǎo)致衛(wèi)星研制過(guò)程中可能采購(gòu)到固有失效率較高的COTS器件。因此,為保證工程實(shí)用性,需要制定針對(duì)COTS器件的篩選和選用規(guī)范,保證器件的可用性和可靠性。
a)優(yōu)選具有成功飛行經(jīng)驗(yàn)的元器件。在軌飛行過(guò)的元器件已經(jīng)經(jīng)受過(guò)空間環(huán)境的考驗(yàn),具有一定的飛行數(shù)據(jù)。
b)選用元器件的適應(yīng)溫度范圍為-40℃~85℃。衛(wèi)星星內(nèi)溫度一般維持在-10℃~45℃,商業(yè)級(jí)器件的溫度范圍是0℃~70℃,工業(yè)級(jí)器件的溫度范圍是-40℃~85℃,所以選用工業(yè)級(jí)COTS器件。
c)選用芯片兼顧 “高性能、先進(jìn)性、集成化、可獲得性、低成本、長(zhǎng)期應(yīng)用”原則。
d)COTS器件的質(zhì)量等級(jí)與篩選試驗(yàn)應(yīng)考慮低軌互聯(lián)網(wǎng)星座任務(wù)的壽命要求、軌道高度、研制周期、研制成本等綜合因素。嚴(yán)格制定試驗(yàn)流程,確保試驗(yàn)到位。
e)考慮元器件的運(yùn)行環(huán)境。在空間運(yùn)行時(shí)需要考慮空間輻射環(huán)境,包括總劑量效應(yīng)、單粒子效應(yīng)以及空間的真空熱環(huán)境等。
為了屏蔽處理器等器件的單粒子效應(yīng)引起的指令流軟錯(cuò)誤,在模塊層面進(jìn)行了多級(jí)校驗(yàn)糾錯(cuò)進(jìn)行防護(hù),保證單粒子軟錯(cuò)誤不在整機(jī)/系統(tǒng)數(shù)據(jù)鏈路上傳遞,實(shí)現(xiàn)數(shù)據(jù)層面的故障隔離。
本文采用一種基于軟件的Cache抗單粒子加固手段,即Cache重載刷新技術(shù)。由于SM750處理器的Cache可配置成寫(xiě)通模式 (write through),保證每次寫(xiě)入 Cache的數(shù)據(jù)會(huì)同時(shí)寫(xiě)入NAND Flash主存儲(chǔ)器,從而可以確保Cache和NAND Flash主存儲(chǔ)器之間的數(shù)據(jù)一致性。通過(guò)軟件的指令控制,使得Cache定期從NAND Flash主存儲(chǔ)器中重新載入相應(yīng)數(shù)據(jù),完成對(duì)Cache數(shù)據(jù)的刷新,修復(fù)由于單粒子翻轉(zhuǎn)引起的Cache數(shù)據(jù)錯(cuò)誤。而主存儲(chǔ)器的SRAM或SDRAM因?yàn)樵谛酒獠?,可以通過(guò)傳統(tǒng)的糾錯(cuò)校驗(yàn)碼進(jìn)行加固,從而保證重新載入的數(shù)據(jù)的正確性。
這種方法不需要更改芯片本身的結(jié)構(gòu),只需要在軟件中增加相應(yīng)的重載刷新控制即可實(shí)現(xiàn),回避了重新設(shè)計(jì)和驗(yàn)證芯片帶來(lái)的諸多不利因素。同時(shí),軟件可以實(shí)現(xiàn)刷新算法的動(dòng)態(tài)調(diào)整,在刷新效果和系統(tǒng)性能之間找到一個(gè)平衡。同時(shí)本文提出了自主重載算法 (Automatic Refetch Algorithm)。這種算法充分利用了Cache數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)位,軟件按照一定頻率將選中數(shù)據(jù)塊的狀態(tài)位改寫(xiě)成無(wú)效,這樣當(dāng)下次處理器需要訪問(wèn)該數(shù)據(jù)塊時(shí),按照Cache未命中處理,處理器會(huì)訪問(wèn)主存儲(chǔ)器,并將對(duì)應(yīng)數(shù)據(jù)自動(dòng)更新至Cache。其工作流程如圖1所示。
這種算法利用了Cache訪問(wèn)本身的機(jī)制,雖然會(huì)將所有選中數(shù)據(jù)塊的狀態(tài)位都改寫(xiě)成無(wú)效,但是只會(huì)對(duì)處理器需要使用到的數(shù)據(jù)塊進(jìn)行實(shí)際的存儲(chǔ)器訪問(wèn)和刷新,從而避免了靜態(tài)重載算法中出現(xiàn)的大量不必要的刷新工作,提高了系統(tǒng)效率。同時(shí),與事件觸發(fā)重載算法相比,由于具體的重載刷新工作可以利用處理器原有的Cache工作機(jī)制來(lái)自動(dòng)完成,軟件除了修改狀態(tài)位,沒(méi)有其他對(duì)硬件的控制,從而可以有效降低軟件的負(fù)擔(dān)。另一方面,這種算法可以動(dòng)態(tài)調(diào)整刷新頻率,在實(shí)際應(yīng)用中針對(duì)不同需求,可以通過(guò)增加刷新頻率來(lái)達(dá)到更好的抗單粒子效果,或者通過(guò)降低刷新頻率來(lái)進(jìn)一步降低軟件用于刷新操作的工作量,增加有效數(shù)據(jù)在Cache中的保持時(shí)間,從而提升系統(tǒng)性能。
考慮到系統(tǒng)的集成性和低價(jià)性,不再做整體備份,而是突出關(guān)鍵和薄弱環(huán)節(jié)的加固。為了滿足單機(jī)的抗總劑量指標(biāo)要求,需要對(duì)上述器件進(jìn)行屏蔽防護(hù),主要通過(guò)機(jī)殼的3mmAL和加貼0.5mm鉛皮進(jìn)行防護(hù),提高整機(jī)的抗輻射性能指標(biāo)。
系統(tǒng)級(jí)可靠性設(shè)計(jì)方法還可以通過(guò)故障維護(hù)與自主管理軟件 (FDIR)完成。具體工作方式如下。
a)模擬量采集模塊采集各模塊/器件的模擬量運(yùn)行參數(shù),將數(shù)據(jù)進(jìn)行匯總后發(fā)送至串行IO模塊。串行IO模塊通過(guò)串行通信接口接收各模塊發(fā)來(lái)的數(shù)字量運(yùn)行參數(shù),與模擬量參數(shù)匯總后保存至緩存。
圖1 自主重載刷新工作流程圖
b)當(dāng)單機(jī)工作在主備雙機(jī)工作模式下,處理器模塊的CPU通過(guò)內(nèi)總線從串行IO緩存中讀取各模塊/器件的運(yùn)行參數(shù),按照故障判據(jù)完成對(duì)模塊/器件的故障識(shí)別,由串行IO模塊通過(guò)串行通信接口向指令驅(qū)動(dòng)模塊發(fā)送對(duì)應(yīng)模塊/器件的斷電、復(fù)位和切機(jī)指令。
c)當(dāng)單機(jī)工作在加固對(duì)比模式下,處理器模塊的FPGA負(fù)責(zé)處理各模塊/器件的運(yùn)行參數(shù),按照故障判據(jù)完成對(duì)各模塊/器件的故障識(shí)別,由串行IO模塊通過(guò)串行通信接口向指令驅(qū)動(dòng)模塊發(fā)送對(duì)應(yīng)模塊/器件的關(guān)機(jī)、復(fù)位和切機(jī)指令。
d)指令驅(qū)動(dòng)模塊接收串行IO模塊發(fā)來(lái)的指令,驅(qū)動(dòng)OC門(mén)電路向?qū)?yīng)模塊/器件發(fā)送關(guān)機(jī)、復(fù)位和切機(jī)指令脈沖。
e)對(duì)于像 SM750和 SMSJA1000的核心器件,處理器模塊FPGA具備檢測(cè)其功能中斷的設(shè)計(jì),可以在不通過(guò)串行IO模塊和指令模塊的情況下,對(duì)器件進(jìn)行局部斷電和復(fù)位等操作,完成比較快速的故障恢復(fù)。檢測(cè)和故障維護(hù)結(jié)果也作為處理器模塊的單機(jī)級(jí)FDIR遙測(cè)內(nèi)容。
f)局部器件進(jìn)行恢復(fù)期間,處理器模塊暫時(shí)接替SM750處理器進(jìn)行遙控遙測(cè)鏈路的控制,CAN總線控制器則切換至備份機(jī)通道,確保故障恢復(fù)器件不造成單機(jī)功能中斷。
g)單機(jī)遙測(cè)采集模塊需要實(shí)時(shí)檢測(cè)各參試設(shè)備的運(yùn)行參數(shù),作為輻射誘導(dǎo)故障的判據(jù)。其中模擬量參數(shù)通過(guò)數(shù)據(jù)采集模塊進(jìn)行AD轉(zhuǎn)換后進(jìn)行采集,F(xiàn)DIR(主備雙機(jī)模式)或串行IO模塊(加固對(duì)比模式)對(duì)數(shù)據(jù)進(jìn)行分析比對(duì)。
數(shù)字量參數(shù)主要用于檢測(cè)單機(jī)的各項(xiàng)功能是否正常運(yùn)行,各功能模塊會(huì)按一定控制周期檢測(cè)單機(jī)各項(xiàng)功能,將檢測(cè)結(jié)果以數(shù)字量遙測(cè)形式由FDIR(主備雙機(jī)模式)或串行IO模塊 (加固對(duì)比模式)進(jìn)行數(shù)據(jù)分析比對(duì)。由于許多檢測(cè)功能需要占用處理器/FPGA運(yùn)算資源,可以在單機(jī)運(yùn)行時(shí)根據(jù)需要可關(guān)閉相應(yīng)的檢測(cè)功能。具體的參數(shù)檢測(cè)內(nèi)容見(jiàn)表1。
各模塊從內(nèi)總線獲得二次電源后,經(jīng)過(guò)電源檢測(cè)芯片后作為單板供電電源,電源檢測(cè)芯片可以檢測(cè)到單板電流的變化情況,如圖2所示。
三端穩(wěn)壓器用來(lái)給輻射敏感器件供電,閂鎖檢測(cè)電路首先預(yù)設(shè)一個(gè)正常的電流閾值,當(dāng)發(fā)生閂鎖后產(chǎn)生的電流超過(guò)閾值,觸發(fā)運(yùn)算放大器產(chǎn)生過(guò)流指示信號(hào)給單機(jī)的抗輻射FPGA檢測(cè)單元。FPGA一旦收到過(guò)流信號(hào)即輸出約2s的復(fù)位信號(hào)。對(duì)于處理器這種具備軟件控制周期的器件,還可以設(shè)計(jì)硬件看門(mén)狗電路,當(dāng)輻照效應(yīng)造成軟件無(wú)法正常運(yùn)行時(shí),看門(mén)狗計(jì)數(shù)器溢出,會(huì)產(chǎn)生周期的復(fù)位信號(hào)。因此當(dāng)出現(xiàn)閂鎖過(guò)流后,首先會(huì)導(dǎo)致約2s的單板復(fù)位,使閂鎖器件進(jìn)入低功耗的等待狀態(tài),嘗試退出閂鎖。復(fù)位后可能會(huì)遇到以下3種故障模式:①?gòu)?fù)位后仍有閂鎖,再次復(fù)位2s;②復(fù)位后閂鎖信號(hào)消失,但系統(tǒng)軟件無(wú)法重新運(yùn)行,則在看門(mén)狗電路作用下,仍輸出持續(xù)的復(fù)位信號(hào);③復(fù)位后若閂鎖信號(hào)消失且系統(tǒng)軟件重新運(yùn)行,無(wú)復(fù)位信號(hào)輸出。
表1 單機(jī)FDIR數(shù)字量檢測(cè)參數(shù)
圖2 存儲(chǔ)器模塊電流檢測(cè)電路原理框圖
如果嘗試復(fù)位恢復(fù)超過(guò)3次 (等效于復(fù)位超過(guò)6s),F(xiàn)PGA可以通過(guò)控制三端使能信號(hào)對(duì)閂鎖器件進(jìn)行局部斷電。在供電電路設(shè)計(jì)時(shí),閂鎖敏感器件的各檔電壓均使用獨(dú)立的三端穩(wěn)壓器供電,并且設(shè)計(jì)了獨(dú)立的斷電電路,從而確保FPGA可以對(duì)其進(jìn)行局部斷電而不影響其他外圍器件的狀態(tài)。在斷電3s后,閂鎖器件重新上電,并進(jìn)行軟件重啟。
同時(shí),需要采用抗閂鎖電阻對(duì)整機(jī)電流進(jìn)行限流保護(hù),防止閂鎖造成器件燒毀。考慮到部分器件自身工作電流較大,因而不適合在器件端加裝抗閂鎖電阻。在單機(jī)其他器件對(duì)單粒子閂鎖效應(yīng)不敏感或者電流較小的情況下,因閂鎖造成的電流增量可以通過(guò)單機(jī)的電流增量體現(xiàn),因而采用抗閂鎖電阻對(duì)整機(jī)電流進(jìn)行保護(hù),可以有效防止閂鎖過(guò)流引起的器件燒毀,從而保證閂鎖現(xiàn)象不對(duì)單機(jī)造成永久性損傷。
COTS器件構(gòu)建的星載分布式超大容量存儲(chǔ)架構(gòu)具備新一代綜合電子系統(tǒng)低成本、高可靠性的特點(diǎn)。針對(duì)COTS可靠性數(shù)據(jù)不足、抗輻射能力不確定的薄弱環(huán)節(jié),針對(duì)性的提出了器件篩選、模塊檢錯(cuò)容錯(cuò)、系統(tǒng)可靠性設(shè)計(jì)、軟件糾錯(cuò)、閂鎖檢測(cè)與恢復(fù)等方面的抗輻射加固解決措施,為我國(guó)衛(wèi)星快速集成研制、通用化、產(chǎn)品化等方面提供了有益參考。