王穎穎,莊 毅,孫逸帆
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211106)
隨著系統(tǒng)復(fù)雜度以及器件集成度越來越高,由輻射引起的單粒子效應(yīng)所帶來的危害也越來越被重視。由于單粒子效應(yīng)導(dǎo)致的軟錯(cuò)誤會(huì)使器件中的數(shù)據(jù)位發(fā)生翻轉(zhuǎn),破壞數(shù)據(jù)值或邏輯操作并導(dǎo)致靜默數(shù)據(jù)損壞(Silent Data Corruptions, SDC)、崩潰,或者可以被屏蔽而不會(huì)導(dǎo)致可觀察到的錯(cuò)誤[1-2],進(jìn)而會(huì)引發(fā)不可預(yù)估的嚴(yán)重后果。集成電路中不同組成部分對(duì)軟錯(cuò)誤的反應(yīng)也截然不同。特別是存儲(chǔ)類的組件對(duì)軟錯(cuò)誤更敏感,而且由于它們的面積很大,所以軟錯(cuò)誤問題最為嚴(yán)重[3]。例如,2003年的萬圣節(jié)期間,太陽質(zhì)子導(dǎo)致一顆地球靜止衛(wèi)星的CPU發(fā)生故障,引發(fā)了許多科學(xué)衛(wèi)星(如SOHO、ACE、wind、polar和goes等)數(shù)據(jù)丟失的嚴(yán)重后果。
中央處理器(Central Processing Unit, CPU)是整個(gè)系統(tǒng)運(yùn)算與控制中最核心的信息處理單元和處理單元。此外,在計(jì)算機(jī)系統(tǒng)中每個(gè)軟件層的所有操作,在最后都是由中央指令組反饋至CPU中執(zhí)行的[4]。所以,CPU的可靠性也嚴(yán)重影響整個(gè)系統(tǒng)的性能。其中不乏一些在特定環(huán)境下廣泛應(yīng)用的CPU,例如在宇航領(lǐng)域和核能領(lǐng)域的低輻射環(huán)境中,就對(duì)CPU的可靠性提出了更高的要求。
作為可靠性分析與評(píng)估的有效手段,為研究對(duì)象建立相應(yīng)的可靠性模型的方法在各個(gè)領(lǐng)域被廣泛使用。目前最主要的建模方法主要有2類,分別是傳統(tǒng)的基于數(shù)理統(tǒng)計(jì)的模型以及基于智能算法的數(shù)據(jù)驅(qū)動(dòng)模型。基于數(shù)理統(tǒng)計(jì)的模型是一種定量進(jìn)行可靠性分析與評(píng)估的方法,通過將大批量的描述研究對(duì)象的可靠性統(tǒng)計(jì)數(shù)據(jù)進(jìn)行對(duì)比分析或者基于數(shù)學(xué)模型的方式來對(duì)研究對(duì)象進(jìn)行可靠性分析與評(píng)估。基于智能算法的數(shù)據(jù)驅(qū)動(dòng)模型是通過獲取研究對(duì)象的真實(shí)運(yùn)行數(shù)據(jù)進(jìn)行分析和推演,以達(dá)到能夠真實(shí)反應(yīng)研究對(duì)象可靠性水平的目的。
但是,在多種BP神經(jīng)網(wǎng)絡(luò)等智能算法在進(jìn)行可靠性評(píng)估時(shí)仍然存在參數(shù)優(yōu)化困難,模型準(zhǔn)確率較低等問題。這是因?yàn)椋诨谑?shù)據(jù)進(jìn)行可靠性分析與評(píng)估的過程中,BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速度、收斂速度都比較慢,而且極易陷入局部極小值。
針對(duì)基于智能算法的數(shù)據(jù)驅(qū)動(dòng)可靠性評(píng)估模型中的問題,本文開展基于粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的可靠性評(píng)估模型的研究。主要貢獻(xiàn)如下:1)提出一種基于正弦映射的方法對(duì)粒子群算法進(jìn)行優(yōu)化,對(duì)粒子群算法中的速度方程以及位置方程進(jìn)行調(diào)整;2)提出一種基于粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的適用于CPU的可靠性評(píng)估模型CPU-REM(CPU Reliability Evaluation Model Based on PSO Optimization BP Neural Network),給出完整的可靠性評(píng)估算法;3)通過對(duì)比實(shí)驗(yàn),驗(yàn)證該評(píng)估模型的有效性和準(zhǔn)確性。
(1)
(2)
根據(jù)式(1)和式(2)來更新粒子本身的移動(dòng)的速度以及移動(dòng)的方向,從而可以產(chǎn)生新的種群。其中,Xi=(Xi1,Xi2,…,XiD)表示粒子移動(dòng)方向的向量,Vi=(Vi1,Vi2,…,ViD)表示粒子的速度向量,pbesti=(pbesti1,pbesti2,…,pbestiD)表示局部最優(yōu)值,gbesti=(gbesti1,gbesti2,…,gbestiD)是全局最優(yōu)值。c1和c2表示加速度常數(shù),通常設(shè)置為2。rand1和rand2是分布在[0,1]范圍內(nèi)的2個(gè)隨機(jī)均勻值。
(3)
ω=ωmax-((ωmax-ωmin)/itermax)·iter
(4)
其中,ωmin代表開始時(shí)粒子的權(quán)重,ωmax表示最大迭代次數(shù)時(shí)的粒子的權(quán)重,通常取0.4和0.9,itermax和iter分別表示終止時(shí)的迭代次數(shù)和當(dāng)前迭代次數(shù)。
反向傳播網(wǎng)絡(luò)(Back Propagation Network, BP),是一種基于誤差反向傳播算法的多層前饋網(wǎng)絡(luò),是目前最成功和應(yīng)用最廣泛的人工神經(jīng)網(wǎng)絡(luò)[9-10]。BP網(wǎng)絡(luò)是一種層次結(jié)構(gòu),一般由輸入層、隱藏層和輸出層組成[11]。其中,隱藏層可以不止一層,每一層也是由多個(gè)神經(jīng)元組成。BP網(wǎng)絡(luò)的訓(xùn)練過程包括2個(gè)部分:誤差前向傳播和反向傳播。在前向傳播的情況下,樣本數(shù)據(jù)從輸入層開始,依次經(jīng)過隱藏層和輸出層,最后輸出層輸出結(jié)果。將輸出值與期望值進(jìn)行比較,并計(jì)算誤差,然后繼續(xù)誤差的反向傳播階段。對(duì)于反向傳播,輸出誤差是從輸出層通過隱藏層到輸入層的反向計(jì)算,并將誤差分配給每一層中的每個(gè)神經(jīng)元。一旦所有神經(jīng)元獲得誤差信息,每個(gè)神經(jīng)元的權(quán)重將根據(jù)誤差進(jìn)行校正。通過不斷調(diào)整的權(quán)重使網(wǎng)絡(luò)最終的輸出誤差減小到規(guī)定的范圍內(nèi)。
在前向傳播過程中,輸出層的第i個(gè)神經(jīng)元的輸出Oi可用式(5)[12]表示:
(5)
其中,ωji表示輸出層的第i個(gè)神經(jīng)元與前一層的第j個(gè)神經(jīng)元之間的連接權(quán)重,Ii表示第i個(gè)神經(jīng)元的輸入,θi表示的是第i個(gè)神經(jīng)元上的閾值。
在前向傳播結(jié)束后,輸出值與期望值之間的誤差,可以通過式(6)計(jì)算:
(6)
其中,n表示網(wǎng)絡(luò)中輸出向量的維度,m表示網(wǎng)絡(luò)中輸入層向量的維度,dik表示第k個(gè)輸入向量在第i個(gè)輸入向量維度上的輸出值,oik表示第k個(gè)輸入向量在第i個(gè)輸入向量維度上的實(shí)際值。
如果計(jì)算的誤差滿足設(shè)置的預(yù)測(cè)精度,則訓(xùn)練結(jié)束;否則,可利用式(7)對(duì)網(wǎng)絡(luò)中各層神經(jīng)元之間的連接權(quán)重和閾值進(jìn)行調(diào)整,使得網(wǎng)絡(luò)的輸出值與實(shí)際值之間的誤差大小在所設(shè)置的允許范圍內(nèi)。
Δωij=-λ(?Ε/?ωij)
(7)
其中,λ表示學(xué)習(xí)速率。
BP神經(jīng)網(wǎng)絡(luò)具有較強(qiáng)的非線性映射和泛化能力、較高的自學(xué)習(xí)和自適應(yīng)能力。但同時(shí)BP神經(jīng)網(wǎng)絡(luò)也很容易陷入局部極小值問題,而且其收斂速度也較慢,因此需要采用一些方法對(duì)BP網(wǎng)絡(luò)進(jìn)行優(yōu)化來改善它的問題。PSO算法利用粒子群中個(gè)體的局部信息和全局信息進(jìn)行搜索,收斂速度快,并且易于實(shí)現(xiàn)。通過粒子群算法對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化,能很好地彌補(bǔ)BP神經(jīng)網(wǎng)絡(luò)的上述不足之處。此外,BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)精度與啟發(fā)式算法的搜索能力也密切相關(guān),因此改進(jìn)粒子群算法的搜索性能,以獲得更好的網(wǎng)絡(luò)參數(shù),也可以抑制BP神經(jīng)網(wǎng)絡(luò)的過擬合或欠擬合問題。
為了減少BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)精度的波動(dòng),本文采用粒子群算法對(duì)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化。但由于粒子群算法很容易陷入局部最小值和過早收斂,所以本節(jié)首先采用正弦映射方法對(duì)PSO算法進(jìn)行改進(jìn),然后利用改進(jìn)的粒子群算法進(jìn)一步來調(diào)整BP神經(jīng)網(wǎng)絡(luò)中的參數(shù)。所提出的可靠性評(píng)估模型的流程如圖1所示。
圖1 粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)可靠性評(píng)估流程
1)位置更新方程的調(diào)整。
眾所周知,粒子群算法中的全域搜尋能力和局部搜尋能力是互相對(duì)立的。想要獲取更佳的優(yōu)化性能,必須要有效地均衡其探索和開發(fā)能力。由標(biāo)準(zhǔn)粒子群優(yōu)化算法的位置更新公式可知,每個(gè)粒子新的移動(dòng)方向主要由該粒子先前的方向向量和移動(dòng)向量決定。所以,為了進(jìn)一步提高粒子群的特性,對(duì)粒子的位置更新公式從3個(gè)方面進(jìn)行改進(jìn),引入一個(gè)動(dòng)態(tài)權(quán)重、加速度系數(shù)和目前位置全局最優(yōu)位置。
基于以上3個(gè)變化的位置更新方程如式(8)[13]所示:
(8)
ωij=ψ=ef(j)/u/(1+e(-f(j)/u))iter
(9)
ω′ij=1-ωij
(10)
其中,f(j)表示第j個(gè)粒子的適應(yīng)度,u是第一次迭代粒子的適應(yīng)度平均值。
2)慣性權(quán)重的調(diào)整。
在標(biāo)準(zhǔn)粒子群更新公式中,權(quán)重因子ω代表著粒子的搜索能力。當(dāng)值較大時(shí),算法對(duì)全局進(jìn)行優(yōu)化的能力相對(duì)強(qiáng),對(duì)局部進(jìn)行優(yōu)化的能力相對(duì)弱;當(dāng)值較小時(shí),算法對(duì)全局進(jìn)行優(yōu)化能力就會(huì)相對(duì)弱,而對(duì)局部進(jìn)行優(yōu)化的能力就相對(duì)強(qiáng)。因此,通過動(dòng)態(tài)改變?chǔ)氐拇笮?,可以?dòng)態(tài)地改進(jìn)算法的搜索能力。到目前為止,最常用的方法是通過線性遞減權(quán)重[14-15]來動(dòng)態(tài)變化。然而,該方法降低了PSO算法的收斂速度和精度,本節(jié)提出一種基于混沌映射調(diào)整權(quán)重因子的方法。相比于線性遞減權(quán)值的方式,混沌映射[16-17]可以更快地搜索。
本文通過混沌映射中的Sine映射對(duì)權(quán)重因子ω進(jìn)行調(diào)整,更新方法如式(11)所示。式中r表示控制系數(shù),其取值范圍為[0,4]。
ωiter+1=r·sin(πωiter)/4
(11)
同時(shí),為了提高粒子的搜索能力對(duì)式(11)中的控制系數(shù)采用線性遞減的方式來更新其值,其更新方程如式(12)所示:
r=rmax-((rmax-rmin)/itermax)·iter
(12)
其中,rmax、rmin分別表示最大控制系數(shù)和最小控制系數(shù),在這里設(shè)置為4和0。
綜上,粒子新的速度更新公式可由式(13)表示:
(13)
基于正弦映射法優(yōu)化的標(biāo)準(zhǔn)PSO算法(Optimizing PSO Algorithm based on Sine Map, SM-PSO)的偽代碼如圖2所示。
圖2 基于正弦映射法的標(biāo)準(zhǔn)粒子群優(yōu)化算法
基于SM-PSO-BP建立的CPU可靠性評(píng)估模型是將其CPU中各個(gè)模塊的可靠度作為模型的輸入,即I=(I1_R,I2_R,I3_R,…,In_R)。其中,I1_R表示功能模塊1的可靠度,I2_R表示功能模塊2的可靠度,I3_R表示功能模塊3的可靠度,In_R表示功能模塊n的可靠度。因此,輸入層神經(jīng)元的數(shù)量為ni=n;將CPU的可靠度RCPU作為SM-PSO-BP的預(yù)期輸出O=(RCPU),所以輸出神經(jīng)元的數(shù)量可以確定為no=1。其隱藏神經(jīng)元的個(gè)數(shù)可以通過經(jīng)驗(yàn)方程和試錯(cuò)法來確定,經(jīng)驗(yàn)方程的定義如式(14)[18-19]所示:
(14)
其中,ni、no、nm分別表示輸入層、輸出層和隱藏層神經(jīng)元數(shù)量。因此,SM-PSO-BP即為一個(gè)具有3層結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò)評(píng)估模型。模型建立的具體過程如下:
1)粒子群優(yōu)化算法中的粒子的維度D可以通過ni、no和nm,即輸入層、輸出層和隱藏層的神經(jīng)元數(shù)量來確定,其表達(dá)式如式(15)所示:
D=nm+no+ni×nm+no×nm
(15)
2)把輸入向量中的第一個(gè)分量功能模塊1的可靠度與隱藏層中各個(gè)神經(jīng)元的連接權(quán)重定義為c1i,第二個(gè)輸入分量功能模塊2的可靠度與隱藏層中各個(gè)神經(jīng)元的連接權(quán)重定義為p2i,第三個(gè)輸入分量功能模塊3的可靠度與隱藏層中各個(gè)神經(jīng)元的連接權(quán)重定義為m3i,第n個(gè)輸入分量功能模塊n的可靠度與隱藏層中各個(gè)神經(jīng)元的連接權(quán)重定義為lni,其中i=1,2,…,nm。所建立的SM-PSO-BP模型的輸出層向量中只有一個(gè)分量,即CPU的可靠度,所以可以用rj1表示輸出層的分量與隱藏層中的各輸入分量之間的連接權(quán)重。同時(shí),根據(jù)隱藏層中的各分量與輸出層分量之間的閾值θij、θjk可以確定維度為D的SM-PSO中位置的初始向量X,如式(16)所示:
XD=(c11,…,c1i,p21,…,p2i,m31,…,m3i,…,ln1,…,lni,θij,r11,…,rj1,θjk)
(16)
之后,根據(jù)SM-PSO中的位置更新公式對(duì)粒子的位置進(jìn)行更新,即可得到模型中隱藏層神經(jīng)元i的輸出公式,如式(17)所示:
(17)
其中,f(·)表示模型的激活函數(shù),在該模型中為Sigmoid函數(shù)。因此,該模型中的CPU的可靠度RCPU的輸出公式表示為式(18):
(18)
3)SM-PSO中的粒子的適應(yīng)度函數(shù),fe是由模型中的期望的CPU可靠度rCPU與通過該模得到的CPU的可靠度RCPU之間的均方誤差決定的,其表達(dá)式如式(19)所示:
(19)
根據(jù)以上流程可建立如圖3所示的CPU可靠性評(píng)估模型。
圖3 CPU可靠性評(píng)估模型結(jié)構(gòu)
該模型將SM-PSO搜索的能力與BP神經(jīng)網(wǎng)絡(luò)泛化的能力相結(jié)合,利用SM-PSO算法尋找BP模型中最優(yōu)的權(quán)值和閾值。SM-PSO-BP模型的訓(xùn)練和評(píng)估流程是:首先利用SM-PSO算法修正BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)重和閾值;之后,利用BP神經(jīng)網(wǎng)絡(luò)的本身機(jī)制,進(jìn)一步對(duì)確定的權(quán)值和閾值進(jìn)行優(yōu)化。如果模型的預(yù)期輸出與實(shí)際值之間的差值最小,那么此時(shí)的值就是最優(yōu)的權(quán)值和閾值。最后,將CPU中不同模塊的可靠度信息作為該模型的輸入向量,通過該模型即可得到CPU的可靠性參數(shù)。
一般來說,基于SM-PSO-BP的可靠性評(píng)估模型的使用過程主要分為模型訓(xùn)練階段和模型評(píng)估階段。模型訓(xùn)練階段是將收集到的功能模塊1的可靠度I1_R、功能模塊2的可靠度I2_R、功能模塊3的可靠度I3_R、功能模塊n的可靠度In_R信息以及標(biāo)準(zhǔn)CPU可靠度輸入到模型,通過層層計(jì)算,得到模型訓(xùn)練過程中輸出層的輸出值即CPU的可靠度,進(jìn)而可以求得模型輸出的可靠度與標(biāo)準(zhǔn)預(yù)期的可靠度之間的誤差,而該值就是SM-PSO算法中粒子的適應(yīng)度值,然后對(duì)粒子的位置向量進(jìn)行不斷調(diào)整,從而完成該模型的訓(xùn)練;第二個(gè)階段是將需要評(píng)估的CPU中的各個(gè)組件的可靠度數(shù)據(jù)輸入到該模型中,即可完成對(duì)該CPU的可靠性的評(píng)估。該模型的具體執(zhí)行步驟如下:
步驟1 設(shè)定模型的輸入個(gè)數(shù)、模型中隱藏神經(jīng)元數(shù)量、輸出的個(gè)數(shù)和允許的最大差值,并確定SM-PSO中其它各因子的初始值和終止條件,以進(jìn)行該模型的初始化;步驟2 模型的輸入向量為數(shù)據(jù)集中各功能模塊的可靠度信息,輸出向量為預(yù)期的CPU可靠度rCPU,然后對(duì)模型進(jìn)行訓(xùn)練;步驟3 根據(jù)模型輸出的CPU可靠度RCPU公式(19)計(jì)算其與預(yù)期的CPU可靠度rCPU之間的均方誤差,如果該誤差小于所設(shè)置的最大誤差,就執(zhí)行步驟6;否則,就將計(jì)算得到的RCPU與rCPU之間的均方誤差作為SM-PSO算法中粒子的適應(yīng)度值,并通過改進(jìn)的粒子的移動(dòng)速度調(diào)整方程和改進(jìn)的粒子移動(dòng)方向調(diào)整方程進(jìn)行計(jì)算,得到粒子的局部最優(yōu)值和全局最優(yōu)值;步驟4 通過式(13)和式(8)對(duì)SM-PSO算法中粒子的移動(dòng)速度調(diào)整方程和改進(jìn)的粒子移動(dòng)方向調(diào)整方程進(jìn)行更新,形成新的粒子種群,以達(dá)到對(duì)BP神經(jīng)網(wǎng)絡(luò)中的權(quán)值更新的目的;步驟5 重新計(jì)算通過模型SM-PSO-BP的輸出層的輸出的CPU可靠度值與預(yù)期值之間的均方誤差。如果所得的值比允許的最大誤差小,執(zhí)行步驟6;如果比允許的最大誤差大,執(zhí)行步驟4;步驟6 如果均方誤差在容許的范圍內(nèi),就把此時(shí)訓(xùn)練中的輸入神經(jīng)元與隱藏神經(jīng)元之間的權(quán)值和閾值,以及隱藏神經(jīng)元與輸出神經(jīng)元之間的權(quán)重和閾值保存下來,模型訓(xùn)練完成;步驟7 將要評(píng)估的CPU的各個(gè)組件的可靠度信息作為模型的輸入,記錄模型的輸出,即是要評(píng)估的CPU的可靠度。
本節(jié)采用5個(gè)經(jīng)典基準(zhǔn)函數(shù)[20-21]來評(píng)估所提出的SM-PSO方法的性能,這些函數(shù)的表達(dá)式如表1所示。
表1 基準(zhǔn)函數(shù)表達(dá)式
此外,所有實(shí)驗(yàn)功能均在采用Intel i5 7500 CPU、16.0 GB和1 TB RAM的計(jì)算機(jī)上運(yùn)行,代碼在MATLAB R2020a上編程。通過將SM-PSO與PSO、CPSO以及文獻(xiàn)[22]中提出的改進(jìn)方法CIW-SPSO,進(jìn)行比較以驗(yàn)證其有效性。為了更清楚地比較所選方法的優(yōu)缺點(diǎn),選擇最大迭代次數(shù)為100,種群大小設(shè)置為50。此外,ωmax和ωmin在PSO的取值分別為0.9和0.4,正弦分布控制參數(shù)rmax和rmin的值分別設(shè)置為3和1。CIW-PSO中的參數(shù)與文獻(xiàn)[18]中設(shè)置相同,μ=4 ?;鶞?zhǔn)函數(shù)的維度選擇50,并以輸出值的均差和標(biāo)準(zhǔn)差來比較3種算法的性能。其中均值和標(biāo)準(zhǔn)差的表達(dá)式分別如式(20)和式(21)所示:
(20)
(21)
其中,n是迭代次數(shù),Mean是目標(biāo)值的平均值,SD是標(biāo)準(zhǔn)差。
從圖4~圖8可以看出,與其它3種算法相比,本文提出的SM-PSO以同樣的參數(shù)同時(shí)搜尋最優(yōu)值時(shí),其收斂速度明顯比其他算法更快,且搜索精度也更高。此外,從表2和表3也可以看出,SM-PSO方法尋找最優(yōu)值所花費(fèi)的迭代時(shí)間也比其他方法更少。從以上比較結(jié)果可以得出結(jié)論,SM-PSO方法在相同迭代次數(shù)下,其收斂速度、收斂精度都更高于PSO、CPSO和CIW-SPSO方法,可有效避免PSO算法中的局部最優(yōu)問題。
圖4 函數(shù)F1的變化曲線對(duì)比
圖5 函數(shù)F2的變化曲線對(duì)比
圖6 函數(shù)F3的變化曲線對(duì)比
圖8 函數(shù)F5的變化曲線對(duì)比
表2 性能比較結(jié)果(1)
表3 性能比較結(jié)果(2)
3.2.1 CPU組成及可靠性分析
CPU是系統(tǒng)運(yùn)行和控制的核心,是系統(tǒng)中使用最頻繁,也是對(duì)輻射單粒子效應(yīng)最敏感的系統(tǒng)組件。雖然不同架構(gòu)的處理器的設(shè)計(jì)有很大的差異,但是其具有的功能大都是相似的。由文獻(xiàn)[23]可知,CPU通常是由7個(gè)部分組成,包括總線接口部分、指令預(yù)取部分、譯碼部分、控制部分、運(yùn)算部分、存儲(chǔ)部分和高速緩沖存儲(chǔ)器。其中,運(yùn)算部分負(fù)責(zé)的主要是各種運(yùn)算,包括算術(shù)運(yùn)算(比如加、減、乘、除等)和邏輯運(yùn)算(比如與、或、非等);控制部分主要是對(duì)指令進(jìn)行讀取并分析,然后做出相應(yīng)的控制;存儲(chǔ)部分則是用來存放在運(yùn)算過程中產(chǎn)生的各種中間結(jié)果;總線接口部分則是完成CPU與外部設(shè)備的聯(lián)系。
根據(jù)研究項(xiàng)目要求,本文重點(diǎn)對(duì)單粒子效應(yīng)敏感的ARM架構(gòu)的CPU進(jìn)行分析,圖9為ARM架構(gòu)的架構(gòu)圖[24]。由于研究對(duì)象為軟錯(cuò)誤下的CPU可靠性,因此本文根據(jù)對(duì)其架構(gòu)以及相應(yīng)的功能分析,把該芯片劃分為Cache、PFU、MPU、LSU以及DPU這5個(gè)功能模塊。Cache,即緩沖存儲(chǔ)器,是一個(gè)位于CPU和內(nèi)存中間的存儲(chǔ)器,主要用來存儲(chǔ)短時(shí)間內(nèi)CPU即將訪問的內(nèi)存數(shù)據(jù)。PFU,即預(yù)取單元,是從主存儲(chǔ)器中獲取指令,并預(yù)測(cè)分支指令的結(jié)果(例如,條件、循環(huán)和函數(shù)返回)。MPU,即內(nèi)存保護(hù)單元,用于捕獲并中止非授權(quán)(即非法)內(nèi)存訪問。LSU,即負(fù)載存儲(chǔ)單元,可以有效管理所有加載和存儲(chǔ)操作。DPU,即數(shù)據(jù)處理單元,包含浮點(diǎn)單元、硬件乘法累加(MAC)單元和一個(gè)用于高性能計(jì)算的除法器。此外,預(yù)解碼階段用于適應(yīng)分支預(yù)測(cè)和指令的隊(duì)列也能使DPU接受指令。
圖9 ARM板架構(gòu)圖
由以上分析可知,CPU是由多個(gè)模塊共同構(gòu)成的,在程序運(yùn)行時(shí)其多個(gè)模塊之間相互協(xié)同共同完成特定的功能。本文以串聯(lián)結(jié)構(gòu)的形式來描述CPU之間多個(gè)模塊與CPU的連接關(guān)系。
根據(jù)各個(gè)模塊的相對(duì)獨(dú)立性以及協(xié)同關(guān)系,將CPU的故障率定義為各個(gè)模塊的故障率的累加和。其表達(dá)式如式(22):
(22)
其中,ωi表示權(quán)重,即每個(gè)功能模塊的集成度與整個(gè)CPU集成度的比值。λi(m)表示模塊的故障率。因此,CPU的可靠性可用式(23)來表示
(23)
3.2.2 實(shí)驗(yàn)數(shù)據(jù)
1)數(shù)據(jù)集構(gòu)建。
文獻(xiàn)[25]將在物理CPU硬件上的光束實(shí)驗(yàn)與基于Gem5上的等效CPU模型的微架構(gòu)故障注入實(shí)驗(yàn)相比較,實(shí)驗(yàn)結(jié)果表明故障注入可以非常準(zhǔn)確地用于預(yù)測(cè)靜默數(shù)據(jù)損壞和應(yīng)用程序崩潰,而且其結(jié)果與光束實(shí)驗(yàn)的故障結(jié)果之間的總誤差率之間的相對(duì)差異在一個(gè)較小的范圍內(nèi)。因此,本文中實(shí)驗(yàn)也采用Gem5[26-27]模擬仿真工具進(jìn)行模塊模擬和故障注入,對(duì)CPU的模塊進(jìn)行故障注入并進(jìn)行結(jié)果分析。此外,本文把檢測(cè)到的由軟錯(cuò)誤造成的所有故障類型的概率定義為CPU模塊發(fā)生失效的概率。由于仿真模擬器的限制,本文僅對(duì)CPU中的CACHE、PFU、LSU以及DPU模塊中的REG、FREG和PC等寄存器進(jìn)行模擬。實(shí)現(xiàn)選取Mibench基準(zhǔn)測(cè)試程序組作為模擬故障注入實(shí)驗(yàn)的測(cè)試基準(zhǔn)。此外,將可靠性權(quán)重ωi定義為模塊故障注入空間大小占CPU總的故障注入空間大小的比值。
實(shí)驗(yàn)單獨(dú)進(jìn)行30組,每組都進(jìn)行相同的100次故障注入,將得到的20組數(shù)據(jù)用作模型訓(xùn)練,剩余的10組數(shù)據(jù)用作測(cè)試。
2)實(shí)驗(yàn)參數(shù)設(shè)置。
本節(jié)通過分別建立基于BP網(wǎng)絡(luò)的CPU可靠性評(píng)估模型和基于SM-PSO-BP的CPU可靠性評(píng)估模型(CPU Reliability Evaluation Model based on Sine Map optimize PSO algorithm, CPU-REM)進(jìn)行仿真實(shí)驗(yàn)。其中,模型中輸入層的數(shù)量為4。根據(jù)分析可知,該模型的輸出只有一個(gè),即CPU的可靠度,因此輸出層為1。通過試錯(cuò)法和式(14)可以把隱藏層神經(jīng)元的數(shù)量敲定為6,BP神經(jīng)網(wǎng)絡(luò)通過標(biāo)準(zhǔn)梯度算法進(jìn)行訓(xùn)練,允許最大誤差為1×10-3,設(shè)定學(xué)習(xí)速率為0.3,訓(xùn)練次數(shù)為1000次;CPU-REM模型中PSO種群的規(guī)模為50,粒子的空間維度由式(15)確定為37,設(shè)置c1=2,c2=2,慣性權(quán)重最大值ωmax=0.9,最小值ωmin=0.4,將正弦分布控制參數(shù)的值分別設(shè)置為rmax=4和rmin=0,粒子群的最大迭代次數(shù)為itermax=500。
為了驗(yàn)證該CPU評(píng)估模型的學(xué)習(xí)訓(xùn)練速度,用構(gòu)建的相同的樣本數(shù)據(jù)對(duì)CPU-REM模型進(jìn)行學(xué)習(xí)訓(xùn)練,并與傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型比較。
在訓(xùn)練最小誤差達(dá)到1×10-3時(shí),經(jīng)由圖10的訓(xùn)練曲線即可得知,BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練次數(shù)高達(dá)1000次,而在圖11中CPU-REM評(píng)估模型只訓(xùn)練100次左右就終止了。這主要?dú)w功于由正弦映射改進(jìn)的粒子群算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò),更快地確定了BP網(wǎng)絡(luò)的權(quán)值和閾值,從而使得其收斂速率比傳統(tǒng)BP網(wǎng)絡(luò)更快。
圖10 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練曲線
圖11 CPU-REM模型訓(xùn)練曲線
圖12是CPU-REM模型對(duì)CPU可靠性進(jìn)行評(píng)估后的與實(shí)際值之間的曲線對(duì)比圖,可以看出該模型對(duì)CPU可靠性進(jìn)行評(píng)估的過程中具有較好的精度。圖13為采用CPU-REM模型與采用其它模型對(duì)CPU可靠度進(jìn)行評(píng)估時(shí)與實(shí)際可靠度之間的誤差曲線圖,通過比較可以看出,CPU-REM對(duì)CPU的可靠性具有更好的評(píng)估能力,可以有效彌補(bǔ)由各種環(huán)境因素等對(duì)可靠性評(píng)估結(jié)果造成的偏差,能夠全面真實(shí)地反映CPU的可靠性。
圖12 CPU-REM模型評(píng)估
圖13 CPU-REM模型與其它模型的評(píng)估誤差對(duì)比
本文提出了一種新的基于粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的可靠性評(píng)估模型,并給出了相應(yīng)的算法和流程。該算法克服了以往基于神經(jīng)網(wǎng)絡(luò)的可靠性評(píng)估模型中存在的收斂速度慢、評(píng)估精度不夠準(zhǔn)確等問題。仿真及實(shí)驗(yàn)結(jié)果表明,本文提出的評(píng)估模型具有更快的學(xué)習(xí)速率和更高的評(píng)估精度,能夠有效地完成對(duì)輻射環(huán)境下CPU的可靠度進(jìn)行評(píng)估的能力。