宋凱林,龔定宇
(湖南工程學(xué)院 電氣與信息工程學(xué)院,湘潭411104)
在當(dāng)前海量存儲(chǔ)的大數(shù)據(jù)時(shí)代背景下,軌道交通行業(yè)主流設(shè)備需要提前布局平臺(tái)存儲(chǔ)性能用以支撐列車龐大的運(yùn)行數(shù)據(jù)量,從而引入了高性價(jià)比的NAND Flash這種大容量、非易失性存儲(chǔ)半導(dǎo)體器件.FLASH為非易失性存儲(chǔ)半導(dǎo)體器件[1],根據(jù)單元存儲(chǔ)電路結(jié)構(gòu)的差異,包含NOR和NAND兩類.由于兩者特性的差異,一般地,NOR具有高可靠性、隨機(jī)存取速度快的特性,故NOR常用于進(jìn)行程序代碼的存儲(chǔ),但存儲(chǔ)容量小,性價(jià)比較低;而NAND具有順序讀取性能好、集成密度高的特性,故NAND常用于大數(shù)據(jù)量的存儲(chǔ),性價(jià)比較高.基于上述考慮,平臺(tái)引入鎂光micro的一款NAND作為系統(tǒng)存儲(chǔ)器件,以應(yīng)對(duì)未來(lái)可能的平臺(tái)應(yīng)用擴(kuò)展需求,滿足設(shè)備大數(shù)據(jù)布局的需求.
于是NAND該類存儲(chǔ)器件的壽命、數(shù)據(jù)保持等成為設(shè)備系統(tǒng)可靠性的一個(gè)重要指標(biāo).通過(guò)研究NAND的存儲(chǔ)機(jī)理及其生產(chǎn)工藝,該類存儲(chǔ)器件本身存在一個(gè)固有缺陷[2-3],會(huì)引發(fā)設(shè)備系統(tǒng)不可恢復(fù)性的啟動(dòng)失敗的故障.類似的設(shè)備故障對(duì)于軌道交通這種特殊應(yīng)用行業(yè)的管理機(jī)制(封閉、少人化甚至無(wú)人化)而言,風(fēng)險(xiǎn)巨大且不可控,甚至是致命的.
本文旨在滿足系統(tǒng)需求的前提下,研究整個(gè)平臺(tái)的引導(dǎo)運(yùn)行機(jī)制,針對(duì)NAND的固有工藝缺陷提出一種新型的系統(tǒng)啟動(dòng)設(shè)計(jì)方案,從數(shù)量級(jí)提高整個(gè)系統(tǒng)的可靠性和穩(wěn)定性,充分保證該類設(shè)備的特定需求.
硬件架構(gòu)上,目標(biāo)設(shè)備作為某系列車型主流的牽引傳動(dòng)平臺(tái),基于德州儀器TI公司的OMAP(DSP+ARM雙核異構(gòu))處理器進(jìn)行研發(fā),引入高性價(jià)比本地大容量存儲(chǔ)NAND Flash,可供系統(tǒng)后續(xù)功能的可擴(kuò)展性,比如設(shè)備的故障診斷[4]、專家遠(yuǎn)程診斷系統(tǒng)PHM(Prognostic and Health Management)等,如圖1所示.
圖1 平臺(tái)硬件架構(gòu)圖
軟件架構(gòu)上,為保證控制平臺(tái)的數(shù)據(jù)交互實(shí)時(shí)性,采用vxWorks這種硬實(shí)時(shí)的嵌入式操作系統(tǒng),借鑒以往應(yīng)用經(jīng)驗(yàn),平臺(tái)軟件架構(gòu)初步確定為:1級(jí)RBL(ROM BootLoader)+1級(jí)UBL(User Boot-Loader)+1級(jí)UBOOT(the Universal BootLoader)+1級(jí)vxWorks(Kernel).
整個(gè)系統(tǒng)中的軟件正常啟動(dòng)流程,如圖2所示,可概括為:
圖2 軟件系統(tǒng)啟動(dòng)流程圖
(1)系統(tǒng)上電,OMAP加載RBL至片上RAM中并運(yùn)行;
(2)RBL將UBL從本地存儲(chǔ)器件NAND中,解析并加載到片上RAM中,然后跳轉(zhuǎn)PC,將CPU控制權(quán)移交給UBL;
(3)UBL運(yùn)行后,采用特定校驗(yàn)算法將UBOOT從NAND中校驗(yàn)解析后,搬移到片外DDR中,然后再一次將CPU處理器控制權(quán)移交給UBOOT;
(4)UBOOT目標(biāo)是構(gòu)建一個(gè)人機(jī)交互系統(tǒng),該系統(tǒng)在NAND的部分空間上搭建Yaffs文件系統(tǒng),采用硬件On-Die ECC校驗(yàn)算法將內(nèi)核以文件的形式存儲(chǔ),UBOOT運(yùn)行后,會(huì)自動(dòng)運(yùn)行預(yù)設(shè)的腳本,將vxWorks從文件系統(tǒng)中解析搬移到DDR中;
(5)內(nèi)核啟動(dòng)完成后,重新掛載Yaffs文件系統(tǒng),再將相應(yīng)的系統(tǒng)應(yīng)用程序加載運(yùn)行.
可靠性上,系統(tǒng)啟動(dòng)所需核心系統(tǒng)程序都存儲(chǔ)于NAND中,意味著存儲(chǔ)在其內(nèi)的相應(yīng)二進(jìn)制目標(biāo)碼不能出錯(cuò),否則將引起系統(tǒng)啟動(dòng)失敗.根據(jù)NAND數(shù)據(jù)存儲(chǔ)機(jī)制可知,在寫(xiě)入數(shù)據(jù)之前必須先擦除成全F狀態(tài)(也就是對(duì)單元存儲(chǔ)cell電路進(jìn)行充電).經(jīng)過(guò)長(zhǎng)期應(yīng)用實(shí)踐并研究NAND現(xiàn)有制造工藝,發(fā)現(xiàn)NAND存在一個(gè)固有缺陷:?jiǎn)蝹€(gè)存儲(chǔ)cell偶爾會(huì)發(fā)生1變成0,也就是cell電容會(huì)緩慢放電導(dǎo)致所謂的位反轉(zhuǎn)(bit flop)造成數(shù)據(jù)的錯(cuò)誤和丟失.所以設(shè)備經(jīng)常會(huì)隨著時(shí)間的推移而出現(xiàn)故障:系統(tǒng)中的程序因位反轉(zhuǎn)被破壞,尤其是系統(tǒng)啟動(dòng)程序的損壞,直接造成設(shè)備啟動(dòng)失敗且無(wú)法維護(hù),其影響無(wú)疑是災(zāi)難性的.
平臺(tái)硬件架構(gòu)采用NAND作為系統(tǒng)存儲(chǔ)器件,存放于NAND中的系統(tǒng)程序就會(huì)有很大損壞風(fēng)險(xiǎn),所以必須解決NAND帶來(lái)的風(fēng)險(xiǎn),確保系統(tǒng)的完整性和可靠性.鑒于NAND的位反轉(zhuǎn),首先軟件上可以考慮對(duì)存儲(chǔ)數(shù)據(jù)增加ECC校驗(yàn)機(jī)制[5-6],如采用軟件校驗(yàn)、硬件校驗(yàn).兩者會(huì)在程序運(yùn)行的時(shí)間度量上有所區(qū)別,共同點(diǎn)是對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),將校驗(yàn)?zāi)芰Ψ秶鷥?nèi)的錯(cuò)誤數(shù)據(jù)修復(fù),否則數(shù)據(jù)校驗(yàn)失敗;與此同時(shí),大量工程實(shí)踐經(jīng)驗(yàn)表明無(wú)論數(shù)據(jù)的ECC校驗(yàn)算法功能如何強(qiáng)大,數(shù)據(jù)總在一定時(shí)間內(nèi)發(fā)生失效,而關(guān)鍵該時(shí)間長(zhǎng)短通常無(wú)法滿足設(shè)備的設(shè)計(jì)需求.一般地,設(shè)備平臺(tái)系統(tǒng)由操作系統(tǒng)和應(yīng)用程序組成,若應(yīng)用程序被破壞,只需要簡(jiǎn)單通過(guò)對(duì)應(yīng)以太網(wǎng)等類似的維護(hù)端口進(jìn)行維護(hù),操作簡(jiǎn)單便捷;若操作系統(tǒng)一旦損壞,則只能通過(guò)特定仿真器去維護(hù),而軌道交通行業(yè)設(shè)備運(yùn)行現(xiàn)場(chǎng)環(huán)境特殊,類似應(yīng)用操作是不允許的.綜上所述,確保操作系統(tǒng)的完整性和可靠性就成為了最根本的需求.
本文基于海量長(zhǎng)期的設(shè)備現(xiàn)場(chǎng)運(yùn)行數(shù)據(jù)以及NAND的位反轉(zhuǎn)特性研究基礎(chǔ)上,從軟件層次上提出一種全新的系統(tǒng)軟件架構(gòu),如圖3所示:
圖3 多級(jí)冗余設(shè)計(jì)方案圖
(1)研究RBL(OMAP出廠固化程序,采用1bit校驗(yàn)算法)程序運(yùn)行機(jī)制,新增集成一個(gè)補(bǔ)丁至UBL,該補(bǔ)丁可將RBL最大冗余啟動(dòng)UBL級(jí)數(shù)擴(kuò)充到32級(jí).主控處理器上電復(fù)位后,讀到有效的冗余補(bǔ)丁后,RBL啟動(dòng)機(jī)制自動(dòng)替換為32級(jí)冗余啟動(dòng)UBL(讀取第1級(jí)UBL若失敗,RBL會(huì)讀取第二級(jí)UBL,直至第32級(jí)UBL);
(2)UBL(采用OMAP芯片自帶硬件4bit校驗(yàn)算法)在片上RAM中加載運(yùn)行后,讀取有效UBOOT(參考RBL冗余機(jī)制,將UBL冗余啟動(dòng)UBOOT的級(jí)數(shù)暫設(shè)定為32級(jí)),整個(gè)UBL運(yùn)行過(guò)程,如圖4所示;
圖4 UBL程序運(yùn)行流程圖
(3)UBOOT加載至外接DDR運(yùn)行后,掛載文件系統(tǒng)并讀取對(duì)應(yīng)文件夾下的內(nèi)核鏡像(UBOOT同樣設(shè)置為32級(jí)冗余啟動(dòng)Kernel,UBOOT采用NAND自帶硬件on-die ecc校驗(yàn)),并將Kernel加載到DDR中運(yùn)行,最終加載運(yùn)行App應(yīng)用程序.
在確定多級(jí)冗余備份系統(tǒng)架構(gòu)方案后,需要進(jìn)一步定量分析冗余系統(tǒng)的備份“級(jí)數(shù)”,并與傳統(tǒng)系統(tǒng)架構(gòu)進(jìn)行對(duì)比來(lái)評(píng)估對(duì)應(yīng)系統(tǒng)可靠性指標(biāo).針對(duì)設(shè)備采用新型軟件系統(tǒng)架構(gòu)后,本文通過(guò)引入表征特性的邏輯門(mén)類型,采用故障樹(shù)分析法FTA(Fault Tree Analysis)[7-8]來(lái)模擬真實(shí)設(shè)備運(yùn)行狀態(tài)的轉(zhuǎn)移,從軟件層次上進(jìn)行系統(tǒng)可靠性分析預(yù)測(cè).
在新型系統(tǒng)架構(gòu)方案中,系統(tǒng)啟動(dòng)失敗事件的主要相關(guān)因素有三個(gè):A表示UBL啟動(dòng)失敗,B表示UBOOT啟動(dòng)失敗,C表示內(nèi)核啟動(dòng)失敗.現(xiàn)假定三者冗余級(jí)數(shù)分別為m,n和s,通過(guò)研究分析可知能夠?qū)е孪到y(tǒng)啟動(dòng)失敗的有以下幾種情況:
(1)UBL、UBOOT以及VxWorks內(nèi)核之間為“或門(mén)”關(guān)系,即只要A、B、C三者中只要有一個(gè)環(huán)節(jié)失敗,系統(tǒng)就會(huì)發(fā)生故障;
(2)A表示的UBL啟動(dòng)環(huán)節(jié)中,只要在m級(jí)UBL中有1級(jí)是完整正常的情況下,A環(huán)節(jié)就能正常,只有m級(jí)全部損壞,才會(huì)引發(fā)系統(tǒng)故障;
(3)B表示的UBOOT啟動(dòng)環(huán)節(jié)中,只要在n級(jí)UBOOT中有1級(jí)是完整正常的情況下,B環(huán)節(jié)就能正常,只有n級(jí)全部損壞,才會(huì)發(fā)生系統(tǒng)故障;
(4)C表示的Kernel內(nèi)核啟動(dòng)環(huán)節(jié)中,s份鏡像內(nèi)核文件只要有一份是正常,系統(tǒng)能夠正常啟動(dòng).
假設(shè)各個(gè)模塊的失效事件是相互獨(dú)立事件,令NAND每個(gè)block中因位反轉(zhuǎn)導(dǎo)致數(shù)據(jù)出錯(cuò)的概率為Pb(該概率會(huì)隨著時(shí)間發(fā)生改變),已知UBL只占1個(gè)block,而UBOOT占2個(gè)block,Kernel內(nèi)核占15個(gè)block,根據(jù)上述分析,首先將系統(tǒng)故障進(jìn)行模塊化得到獨(dú)立的靜態(tài)子樹(shù),建立該系統(tǒng)的FTA模型[9-10],如圖5所示:
圖5 多級(jí)冗余架構(gòu)FTA分析圖
(1)1級(jí)UBL出錯(cuò)的概率為:Pb,則UBL啟動(dòng)失敗的概率為:
(2)1級(jí)UBOOT出錯(cuò)的概率為:1-(1-Pb)2,則UBOOT啟動(dòng)失敗的概率為:
(3)1級(jí)Kernel內(nèi)核出錯(cuò)的概率為:1-(1-Pb)15,則內(nèi)核啟動(dòng)失敗的概率為:
綜上分析,新老系統(tǒng)架構(gòu)啟動(dòng)失敗的概率為:
針對(duì)上文中故障樹(shù)分析法FTA提出的系統(tǒng)可靠性數(shù)學(xué)模型,本文采用2016版MATLAB進(jìn)行仿真,通過(guò)對(duì)仿真結(jié)果研究分析可得出以下結(jié)論:
(1)隨著時(shí)間的推移,當(dāng)block的失效概率在正常的范圍之內(nèi)(Pb不超過(guò)1%,實(shí)際應(yīng)用時(shí)對(duì)NAND相關(guān)項(xiàng)點(diǎn)會(huì)要求更嚴(yán)苛)慢慢增加時(shí),新型軟件架構(gòu)在冗余級(jí)數(shù)m=n=s=32時(shí),能夠確保系統(tǒng)可靠運(yùn)行,如圖6所示.
圖6 不同P b位反轉(zhuǎn)概率下系統(tǒng)失效趨勢(shì)
(2)實(shí)際工程應(yīng)用中從節(jié)約UBL所占存儲(chǔ)空間的角度出發(fā),基于(1)中的結(jié)論,在n=s=32時(shí),將m作為單獨(dú)變量進(jìn)行考慮,從仿真結(jié)果來(lái)看m=4時(shí),系統(tǒng)的失效概率趨于穩(wěn)定,達(dá)到目標(biāo)要求,如圖7所示.
圖7 不同UBL冗余級(jí)數(shù)m下系統(tǒng)失效趨勢(shì)
(3)從節(jié)約UBOOT所占存儲(chǔ)空間的角度出發(fā),基于(2)中的結(jié)論,在m=4,s=32時(shí),將n作為單獨(dú)變量進(jìn)行考慮,從仿真結(jié)果來(lái)看n=6時(shí),系統(tǒng)的失效概率趨于穩(wěn)定,達(dá)到目標(biāo)要求,如圖8所示.
圖8 不同UBOOT冗余級(jí)數(shù)n下系統(tǒng)失效趨勢(shì)
(4)基于上述結(jié)論,在m=4,n=6時(shí),將Pb作為變量,從仿真結(jié)果可以看出Kernel冗余級(jí)數(shù)s在s=5時(shí),系統(tǒng)的失效概率趨于穩(wěn)定,達(dá)到目標(biāo)要求,如圖9所示.
圖9 不同Kernel冗余級(jí)數(shù)s下系統(tǒng)失效趨勢(shì)
(5)綜合上述結(jié)論,m=4,n=6,s=5時(shí)(也就是冗余系統(tǒng)架構(gòu)可采用4級(jí)UBL+6級(jí)UBOOT+5級(jí)Kernel),在確保系統(tǒng)可靠性的前提下,能夠最大化系統(tǒng)存儲(chǔ)空間利用率.通過(guò)對(duì)比,當(dāng)block失效概率在正常范圍內(nèi)時(shí)(Pb不超過(guò)1%),傳統(tǒng)軟件架構(gòu)系統(tǒng)的系統(tǒng)失效率遠(yuǎn)遠(yuǎn)超過(guò)冗余軟件架構(gòu)系統(tǒng),如圖10所示.可見(jiàn)本文提出的冗余架構(gòu)系統(tǒng)是可靠的,對(duì)嵌入式設(shè)備的可靠性的提升是有效的.
圖10 新老系統(tǒng)架構(gòu)系統(tǒng)失效趨勢(shì)對(duì)比
(6)從表1實(shí)驗(yàn)仿真數(shù)據(jù)的統(tǒng)計(jì)結(jié)果來(lái)看,當(dāng)NAND的Pb越小時(shí)(處于正常位反轉(zhuǎn)失效范圍內(nèi)),采用新型的冗余軟件架構(gòu)的嵌入式設(shè)備穩(wěn)定性越高,相較于傳統(tǒng)軟件框架優(yōu)越性也越明顯.
表1 兩種架構(gòu)系統(tǒng)可靠性數(shù)據(jù)對(duì)比
(7)從反向結(jié)論出發(fā),若該類設(shè)備使用NAND作為系統(tǒng)存儲(chǔ)器件,并采用本文提出的多級(jí)冗余系統(tǒng)架構(gòu)后,在正常的設(shè)備周期內(nèi)(也就是正常的位反轉(zhuǎn)概率Pb所對(duì)應(yīng)的正常時(shí)間范圍),系統(tǒng)的可靠性依舊無(wú)法滿足,可以初步得出存儲(chǔ)器件不合格的結(jié)論,可進(jìn)行對(duì)應(yīng)的芯片失效分析.
本文針對(duì)設(shè)備采用NAND存儲(chǔ)器件存在系統(tǒng)風(fēng)險(xiǎn)的工程應(yīng)用現(xiàn)象,提出了一種全新的冗余軟件系統(tǒng)架構(gòu),并通過(guò)故障樹(shù)分析法FTA進(jìn)行了系統(tǒng)可靠性分析及仿真驗(yàn)證,用少量存儲(chǔ)空間換取系統(tǒng)可靠性大幅度提升.目前該方案已經(jīng)應(yīng)用于中車某科研院所旗下產(chǎn)品中,包括軌道交通行業(yè)以及光伏、風(fēng)力、空調(diào)等新能源領(lǐng)域行業(yè)的某型號(hào)的控制變流器平臺(tái).據(jù)不完全統(tǒng)計(jì),該技術(shù)方案每年約產(chǎn)生高達(dá)上百萬(wàn)的經(jīng)濟(jì)效益,而且有望進(jìn)一步在其他類似工程領(lǐng)域推廣應(yīng)用.