国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于指令級(jí)冗余的密碼流處理器并發(fā)錯(cuò)誤檢測(cè)方法

2018-10-24 07:59戴紫彬王壽成李功麗
關(guān)鍵詞:脆弱性時(shí)鐘指令

戴 強(qiáng) 戴紫彬 王壽成 李功麗 李 偉

(中國(guó)人民解放軍信息工程大學(xué) 河南 鄭州 450001)

0 引 言

可重構(gòu)分組密碼流處理器RBCSP(Reconfigurable Block Cipher Stream Processor)[1]是一種新型的高效能分組密碼處理器,可在資源受限條件下實(shí)現(xiàn)多種分組密碼算法。然而,由環(huán)境因素引起的自然故障[2]與故障攻擊注入的惡意故障[3],將極大降低RBCSP的可靠性,并可能導(dǎo)致密鑰泄露[4]。并發(fā)錯(cuò)誤檢測(cè)能夠有效檢測(cè)自然故障[5],也是抵抗故障攻擊的主要手段之一[4],但錯(cuò)誤檢測(cè)機(jī)制的引入不可避免會(huì)帶來(lái)硬件開(kāi)銷(xiāo)增大、算法實(shí)現(xiàn)性能下降等消極影響。如何為RBCSP設(shè)計(jì)低開(kāi)銷(xiāo)的并發(fā)錯(cuò)誤檢測(cè)機(jī)制,使處理器具有較高的故障檢測(cè)能力,是亟待解決的問(wèn)題。

RBCSP 基于流體系架構(gòu)實(shí)現(xiàn),其核心級(jí)運(yùn)算簇采用VLIW(Very Large Instruction Word)結(jié)構(gòu)。目前面向VLIW處理器的軟錯(cuò)誤檢測(cè)方法多采用指令級(jí)冗余技術(shù)[6-10]實(shí)現(xiàn)。指令級(jí)冗余依靠軟件技術(shù)、以較少或零硬件開(kāi)銷(xiāo)實(shí)現(xiàn)冗余執(zhí)行,其核心思想是以復(fù)制指令填充空閑槽(NOP指令),可有效減少錯(cuò)誤檢測(cè)帶來(lái)的性能損失。文獻(xiàn)[6]在指令執(zhí)行的當(dāng)前時(shí)鐘周期,利用VLIW處理器中空閑功能單元實(shí)現(xiàn)冗余操作,其性能開(kāi)銷(xiāo)為0,但錯(cuò)誤檢測(cè)能力較弱。文獻(xiàn)[7]在文獻(xiàn)[6]的基礎(chǔ)上提出通過(guò)降低指令級(jí)并行度實(shí)現(xiàn)自適應(yīng)的指令復(fù)制方法。相比文獻(xiàn)[6],該方法可實(shí)現(xiàn)性能與錯(cuò)誤檢測(cè)能力的折中。文獻(xiàn)[8]提出的指令復(fù)制算法,根據(jù)指令序列中指令出現(xiàn)的先后順序依次復(fù)制指令。文獻(xiàn)[9]通過(guò)修改譯碼級(jí)電路、調(diào)整指令格式,實(shí)現(xiàn)了指令的動(dòng)態(tài)復(fù)制,有效減少了代碼規(guī)模。然而該方法的指令復(fù)制范圍僅限于指令當(dāng)前所在時(shí)鐘周期與下一時(shí)鐘周期,導(dǎo)致其性能開(kāi)銷(xiāo)較文獻(xiàn)[9]有所增加。文獻(xiàn)[10]采用純軟件技術(shù),在空閑槽插入復(fù)制指令與檢查指令實(shí)現(xiàn)錯(cuò)誤檢測(cè),其硬件開(kāi)銷(xiāo)為0,但性能開(kāi)銷(xiāo)較大。

上述針對(duì)VLIW處理器的指令復(fù)制方法,無(wú)法適配或者高效適配于RBCSP。因此,本文面向RBCSP,依據(jù)其架構(gòu)特征與代碼實(shí)現(xiàn)指令序列特點(diǎn),提出了指令級(jí)冗余的并發(fā)錯(cuò)誤檢測(cè)方法,并設(shè)計(jì)了脆弱性感知的指令復(fù)制算法,可在滿足性能約束條件下有效提高處理器對(duì)隨機(jī)故障與惡意故障的檢測(cè)能力。實(shí)驗(yàn)證明,相比于同類(lèi)型方法,在相同性能開(kāi)銷(xiāo)條件下,采用本文方法后RBCSP對(duì)隨機(jī)故障與惡意故障的檢測(cè)率更高,且全指令復(fù)制后密碼算法實(shí)現(xiàn)性能開(kāi)銷(xiāo)最低、面積能效比最高。

1 功能單元利用率分析

指令級(jí)冗余技術(shù)的核心思想是以冗余指令填充空閑槽,其實(shí)質(zhì)是利用空閑狀態(tài)功能單元實(shí)現(xiàn)冗余計(jì)算。為評(píng)估指令級(jí)冗余方法在RBCSP上的可行性與高效性,需對(duì)不同分組密碼算法實(shí)現(xiàn)時(shí)處理器功能單元,即可重構(gòu)并行處理單元RPU(Reconfigurable Parallel processing Unit)的利用率進(jìn)行統(tǒng)計(jì)。RBCSP上RPU包括多種類(lèi)型,如S盒運(yùn)算單元、置換單元等,需分別進(jìn)行統(tǒng)計(jì)。RBCSP上實(shí)現(xiàn)分組密碼算法,采用軟件流水技術(shù)挖掘輪函數(shù)中不同操作間的指令級(jí)并行度[5],可使相鄰迭代的加密操作盡可能地重疊執(zhí)行。以CBC(Cipher Block Chaining)模式下AES-128算法實(shí)現(xiàn)為例,其軟件流水實(shí)現(xiàn)如圖1所示。

圖1 RBCSP上CBC模式AES算法實(shí)現(xiàn)

圖1中AES算法輪函數(shù)操作映射為4個(gè)32-bit數(shù)據(jù)分塊依次進(jìn)行綁定前異或的S盒操作(X_S)、有限域乘法操作與四字置換選字輸出操作。整個(gè)軟件流水共分為3個(gè)階段:填充階段、循環(huán)核心階段和排空階段。通過(guò)軟件流水調(diào)度,單個(gè)數(shù)據(jù)分塊的輪函數(shù)操作仍是依次執(zhí)行,而分組內(nèi)不同數(shù)據(jù)分塊的輪函數(shù)操作能夠并行執(zhí)行,相比于圖1(a)所示順序執(zhí)行的實(shí)現(xiàn)方式,軟件流水方式大大縮短了加密周期。

通過(guò)觀察圖1(b)所示指令序列可知,指令中存在大量可利用的空閑域。設(shè)RPU利用率為rRPU,其等于算法程序運(yùn)行過(guò)程中占用該RPU的時(shí)鐘周期數(shù)NusedRPU與總時(shí)鐘周期數(shù)Ntotal的比率,如公式所示:

(1)

分析軟件流水方式下不同算法實(shí)現(xiàn)代碼,各算法rRPU統(tǒng)計(jì)結(jié)果如圖2所示。

圖2 軟件流水工作模式下各算法RPU利用率

圖2中,除DES外,AES-128、SMS4、IDEA、Camellia和RC6算法的最大RPU利用率超過(guò)50%,但RPU平均利用率仍在40%左右。統(tǒng)計(jì)分析后可知RPU利用率仍有足夠大的提升空間,這意味著在各算法程序運(yùn)行過(guò)程的多數(shù)時(shí)鐘周期中仍存在可利用的空閑RPU。通過(guò)有效利用這些空閑RPU執(zhí)行復(fù)制指令操作,可減少錯(cuò)誤檢測(cè)帶來(lái)的性能開(kāi)銷(xiāo)。

2 指令復(fù)制算法

2.1 復(fù)制指令調(diào)度范圍

本文RBCSP上分組密碼算法實(shí)現(xiàn)的指令序列視作一個(gè)二維調(diào)度表,行表示各RPU,列表示指令調(diào)度的時(shí)鐘周期。表中圓圈表示指令,箭頭表示指令間的數(shù)據(jù)相關(guān)性,空格表示該時(shí)鐘周期對(duì)應(yīng)的RPU空閑。指令i的復(fù)制范圍是指其冗余指令在調(diào)度表中可調(diào)度的時(shí)鐘周期范圍。指令復(fù)制范圍可簡(jiǎn)單設(shè)置為指令i所在時(shí)鐘周期的下一個(gè)時(shí)鐘周期。若下一時(shí)鐘周期中無(wú)可利用的空閑RPU,則增加一個(gè)新的時(shí)鐘周期用以調(diào)度冗余指令。通過(guò)這種復(fù)制方法,可快速完成原始指令序列至復(fù)制后指令序列的轉(zhuǎn)變。

對(duì)于圖3(a)中的原始調(diào)度表,按該方法進(jìn)行指令復(fù)制后,調(diào)度表變?yōu)閳D3(b)所示。圖3(b)中指令D需等待指令C的復(fù)制指令完成后才能執(zhí)行,而指令E與指令D存在數(shù)據(jù)相關(guān),這導(dǎo)致指令E也需等待指令C的復(fù)制指令完成才可執(zhí)行。此時(shí)指令D的復(fù)制指令在時(shí)鐘周期4調(diào)度,而調(diào)度完所有復(fù)制指令所需的時(shí)鐘周期數(shù)為7。若等待占據(jù)同一RPU的連續(xù)指令完成后,再調(diào)度復(fù)制指令,此時(shí)完成所有指令復(fù)制所需時(shí)鐘周期數(shù)為6,如圖3(c)所示。由于調(diào)度表中存在多個(gè)連續(xù)占用某個(gè)RPU的指令,且后續(xù)指令與這些連續(xù)指令存在數(shù)據(jù)相關(guān),導(dǎo)致圖3(b)所示的復(fù)制方法相比于圖3(c),消耗時(shí)鐘周期數(shù)更多。

圖3 指令調(diào)度表

常見(jiàn)分組密碼算法的分組長(zhǎng)度大多為64、128、256 bit,而RBCSP中RPC的數(shù)據(jù)位寬為32,這使得RBCSP上密碼算法實(shí)現(xiàn)的指令序列中,一個(gè)分組操作需要多個(gè)使用某類(lèi)型RPU的連續(xù)指令實(shí)現(xiàn)。且分組密碼算法實(shí)現(xiàn)的指令序列中,前后指令的數(shù)據(jù)相關(guān)性較強(qiáng),若采用圖3(b)所示的指令復(fù)制方法,則存在許多原始指令操作須等待之前指令的復(fù)制指令完成后才能執(zhí)行,這將極大降低算法實(shí)現(xiàn)性能。因此,本文選擇圖3(c)所示的指令復(fù)制方法。該方法中指令i的復(fù)制范圍由指令i所依賴的指令以及重寫(xiě)指令i所讀取寄存器的指令確定。復(fù)制指令調(diào)度范圍如下:

? 最早調(diào)度時(shí)鐘周期:指令i的源操作數(shù)準(zhǔn)備完畢且指令i所使用RPU處于空閑的第一個(gè)時(shí)鐘周期。

? 最晚調(diào)度時(shí)鐘周期:指令i所需任何源操作數(shù)被重寫(xiě)之前的最后一個(gè)時(shí)鐘周期。

2.2 指令復(fù)制算法描述

為在滿足性能約束條件下提高處理器的故障檢測(cè)能力,可優(yōu)先選擇復(fù)制脆弱性更高的指令。目前已有文獻(xiàn)中指令脆弱性主要包括指令的時(shí)間脆弱性、物理脆弱性[10]。指令的時(shí)間脆弱性ITV(Instruction Temporal Vulnerability),可由該指令的總執(zhí)行次數(shù)表示。一般認(rèn)為循環(huán)內(nèi)指令比其他指令執(zhí)行次數(shù)更多,因此具有更多機(jī)會(huì)發(fā)生軟錯(cuò)誤[11]。指令的物理脆弱性IPV(Instruction Physical Vulnerability),可由該指令所使用單元面積表示。這是因?yàn)閱卧娣e越大,包含的晶體管數(shù)量越多,則它更多的暴露于高能粒子從而易于誘發(fā)軟錯(cuò)誤[12]。與通用處理器不同,分組密碼流處理器專(zhuān)用于實(shí)現(xiàn)分組密碼算法,易受到惡意故障攻擊。因此在選擇指令復(fù)制時(shí),本文將惡意故障注入位置、輪數(shù)納入考慮,提出指令的攻擊脆弱性IVV(Instruction Vulnerable Vulnerability)概念。

定義1指令易受到惡意故障攻擊的可能性,稱之為指令的攻擊脆弱性。

攻擊脆弱性越高的指令,越容易成為惡意攻擊的對(duì)象。惡意故障注入的位置、時(shí)間取決于具體的分組密碼算法及攻擊所采用的故障模型,因此不同算法實(shí)現(xiàn)的指令序列中,即使是相同指令,其攻擊脆弱性也可能不同。如針對(duì)AES-128算法的故障攻擊,多選擇在第7、8、9輪操作中注入惡意故障[13],故相比于其他輪,算法實(shí)現(xiàn)指令序列中第7、8、9輪運(yùn)算指令的攻擊脆弱性更高。

為了量化評(píng)估調(diào)度表中指令的脆弱性,本文分別對(duì)指令的時(shí)間脆弱性、物理脆弱性、相關(guān)脆弱性設(shè)置了如下量化規(guī)則。

規(guī)則1設(shè)指令序列中不循環(huán)執(zhí)行指令的時(shí)間脆弱性因子ITVF(Instruction Temporal Vulnerability Factor)為1;指令序列中循環(huán)執(zhí)行指令的ITVF為10。目前算法實(shí)現(xiàn)指令序列采用循環(huán)展開(kāi)方式實(shí)現(xiàn),則所有指令的ITVF均為1。

規(guī)則2設(shè)最小RPU單元面積為Amin,且使用該RPU指令的物理脆弱性因子IPVF(Instruction Physical Vulnerability Factor)為1,則對(duì)于指令i,若其使用RPU面積為Ai,則其IPVF=Ai/Amin。

規(guī)則3由所實(shí)現(xiàn)算法確定算法易受故障攻擊的輪數(shù),選擇指令序列中對(duì)應(yīng)輪的指令,其指令攻擊脆弱性因子IVVF(Instruction Vulnerable Vulnerability Factor)設(shè)為1 000,其他指令的IVVF設(shè)為1。

按上述規(guī)則,計(jì)算得到調(diào)度表中各指令的ITVF、IPVF、IVVF,則指令的脆弱性因子IVF(Instruction Vulnerability Factor)可由式(2)計(jì)算得到:

IVF=ITVF×IPVF×IVVF

(2)

將所有指令按其IVF進(jìn)行降序排列(IVF相同的指令按指令先后逆序排列),可得到指令優(yōu)先級(jí)列表L。指令優(yōu)先級(jí)列表L中靠前的指令,脆弱性越高,將優(yōu)先選擇復(fù)制。根據(jù)復(fù)制指令優(yōu)先級(jí)列表L,設(shè)置時(shí)鐘周期增長(zhǎng)上限,在計(jì)算得到的指令復(fù)制范圍內(nèi)調(diào)度復(fù)制指令。本文的脆弱性感知指令復(fù)制算法偽代碼如下:

輸入:VLIW代碼;時(shí)鐘周期增長(zhǎng)上限cycle_increase_margin。

輸出:帶復(fù)制指令信息的VLIW代碼。

定義:代碼序列的區(qū)域圖G={N,E},其中N={ni/ni表示一個(gè)代碼區(qū)域,通常為一個(gè)基本指令塊},E={ei,j/ei,j表示存在控制流ni→nj};

Nattack={nk/nk表示易受攻擊的指令塊};優(yōu)先級(jí)指令列表L:按照脆弱性降序排列存儲(chǔ)的指令列表;max_sched_cycle:最大調(diào)度時(shí)鐘周期。

01:for(each instruction inst∈L)

02: dup_inst=create_dupl(inst);

//創(chuàng)建冗余指令

03: inst_cycle= get_sched_cycle(inst);

//獲得原始指令所在時(shí)鐘周期

04: etime=get_earliest_sched_time(inst);

//指令調(diào)度的最早時(shí)鐘周期

05: ltime = get_earliest_sched_time(inst);

//指令調(diào)度的最晚時(shí)鐘周期

06: stime=etime;

07:while!schedule(dup_inst, stime)do

//嘗試調(diào)度冗余指令

08: stime++;

09:if(stime>ltime)then

10:if(cycle_inc_margin>0)&&(check_dupl_dependence())then

11: shift_point=get_shift_start_point(inst,ltime,stime);

12: shift_down_sched_table(shift_point,max_sched_cycle);

13: update stime;

14: update ltime;

15: cycle_increase_margin--;

16: max_sched_cycle++;

17:else

18: delete dupl_inst;

19: break;

20:endif

21:endif

22:endwhile

23:endfor

表中循環(huán)(行01-23)按照已構(gòu)建的指令優(yōu)先級(jí)復(fù)制列表L中指令優(yōu)先級(jí)順序調(diào)度復(fù)制指令。對(duì)于列表L中每條指令,算法首先獲取指令復(fù)制所需信息(行02-06),并在獲取的指令復(fù)制范圍stime至ltime中,嘗試調(diào)度復(fù)制指令。算法中schedule()嘗試調(diào)度冗余指令失敗的情況主要是指當(dāng)前時(shí)刻已存在超過(guò)RBCSP可支持的RPU并行執(zhí)行數(shù)。若調(diào)度失敗,而時(shí)鐘周期增加上限大于0且調(diào)度冗余指令不會(huì)導(dǎo)致指令間相關(guān)性違背,則嘗試向下移動(dòng)調(diào)度表,以提供有效空間實(shí)現(xiàn)冗余指令調(diào)度(行09-16)。函數(shù)check_dupl_dependecne()判斷移動(dòng)調(diào)度表放置復(fù)制指令是否會(huì)導(dǎo)致各指令間相關(guān)性違背。若不存在相關(guān)性違背,則存在一個(gè)合理方式移動(dòng)調(diào)度表以放置冗余指令。函數(shù)get_shift_start_point()負(fù)責(zé)計(jì)算調(diào)度表移動(dòng)起點(diǎn)。函數(shù)shift_down_sched_table()將部分調(diào)度表往下移動(dòng)一個(gè)時(shí)鐘周期。若存在相關(guān)性違背或時(shí)鐘周期增加上限小于或等于0,則放棄復(fù)制該指令(行14-20)。重復(fù)上述過(guò)程對(duì)列表L中指令依次進(jìn)行復(fù)制,直至所有指令復(fù)制調(diào)度結(jié)束或者時(shí)鐘周期增長(zhǎng)上限為0,算法結(jié)束。

在不考慮性能約束時(shí),采用該算法實(shí)現(xiàn)AES全指令復(fù)制時(shí)的指令序列如圖4所示。圖4中冗余指令充分利用了原始指令序列中的空閑槽,相比于原始指令序列,其增加的指令條數(shù)比約為25.6%。指令復(fù)制后處理器的故障檢測(cè)能力將在下節(jié)展示。

圖4 AES-CBC算法的全指令復(fù)制實(shí)現(xiàn)

3 實(shí)驗(yàn)驗(yàn)證

為減少性能開(kāi)銷(xiāo),對(duì)原RBCSP進(jìn)行了部分硬件擴(kuò)展與指令格式修改, 使原始指令與冗余指令的結(jié)果比較不需增加額外的比較指令。本文將擴(kuò)展后的RBCSP稱之為增強(qiáng)型可重構(gòu)分組密碼流處理器ERBCSP(Enhanced Reconfigurable Block Cipher Stream Processor)。利用綜合工具基于65 nm CMOS工藝標(biāo)準(zhǔn)單元庫(kù)綜合獲取了RBCSP與ERBCSP原型系統(tǒng)的硬件資源信息,綜合結(jié)果如表1所示。根據(jù)綜合結(jié)果,RBCSP與ERBCSP原型系統(tǒng)的關(guān)鍵路徑長(zhǎng)度均為2.0 ns(工作頻率為500 MHz),而相比RBCSP,ERBCSP增加的硬件開(kāi)銷(xiāo)比約為1.5%。

表1 ASIC綜合結(jié)果

3.1 故障檢測(cè)能力

為驗(yàn)證錯(cuò)誤檢測(cè)方法的有效性,分別被執(zhí)行了隨機(jī)故障注入實(shí)驗(yàn)與惡意故障注入實(shí)驗(yàn)。測(cè)試目標(biāo)RTL系統(tǒng)采用 ERBCSP的RTL設(shè)計(jì)與驗(yàn)證環(huán)境。故障注入目標(biāo)模塊選取RPU,注入故障類(lèi)型為瞬態(tài)故障。仿真實(shí)驗(yàn)均以AES算法為測(cè)試基準(zhǔn),并以如下方式生成測(cè)試負(fù)載執(zhí)行仿真:一是設(shè)定不同時(shí)鐘周期增長(zhǎng)上限(即性能開(kāi)銷(xiāo)約束),分別按本文、文獻(xiàn)[9]、文獻(xiàn)[10]的指令復(fù)制算法復(fù)制指令后得到相應(yīng)代碼,作為測(cè)試負(fù)載。

3.1.1 隨機(jī)故障檢測(cè)

仿真時(shí)在測(cè)試負(fù)載執(zhí)行過(guò)程的隨機(jī)時(shí)間改變RPU的任意信號(hào)值,持續(xù)時(shí)間為一個(gè)時(shí)鐘周期。測(cè)試程序每運(yùn)行一次,僅注入一個(gè)隨機(jī)故障,共運(yùn)行300 000次。測(cè)試負(fù)載運(yùn)行過(guò)程中,記錄錯(cuò)誤指示信號(hào)變化次數(shù),獲得異常檢測(cè)數(shù)量Nexp,則故障檢測(cè)率FDR(Fault Detection Rate)為(Nexp/300 000)×100%。圖5展示了不同時(shí)鐘周期增長(zhǎng)上限下的隨機(jī)故障檢測(cè)率。

圖5 隨機(jī)故障檢測(cè)率對(duì)比

由于許多注入的隨機(jī)故障并不會(huì)影響密碼運(yùn)算結(jié)果,因而相比于故障注入總數(shù),產(chǎn)生計(jì)算錯(cuò)誤的次數(shù)并不高,故圖5中全指令復(fù)制后各方案的故障檢測(cè)率約為49%。但由圖5可知,相同性能約束下,本文方法的隨機(jī)故障檢測(cè)率明顯高于文獻(xiàn)[9],略高于文獻(xiàn)[8]。

3.1.2 惡意故障檢測(cè)

為模擬故障攻擊,選擇經(jīng)典的單字節(jié)故障模型[14],在AES算法第9輪列混淆輸入處注入1字節(jié)惡意故障。實(shí)驗(yàn)時(shí),在第9輪四字置換原始計(jì)算結(jié)束時(shí)刻,強(qiáng)制改變保存原始計(jì)算結(jié)果的DCR,程序每運(yùn)行一次,隨機(jī)改變1字節(jié)值,共運(yùn)行4 096次。圖6展示了不同時(shí)鐘周期增長(zhǎng)上限下各文獻(xiàn)方案的惡意故障檢測(cè)率。

圖6 惡意故障檢測(cè)率對(duì)比

由圖6可知,當(dāng)時(shí)鐘周期增長(zhǎng)數(shù)量大于等于6時(shí),本文方案的惡意故障檢測(cè)率已為100%,而文獻(xiàn)[8]、文獻(xiàn)[9]方案的惡意故障檢測(cè)率為50%或0。由圖6可知,在相同性能約束下,相比于文獻(xiàn)[8]、文獻(xiàn)[9],采用本文方法后RBCSP對(duì)惡意故障具有更高的檢測(cè)率。

3.2 性能開(kāi)銷(xiāo)對(duì)比

本文選取AES-128、SMS4和IDEA算法作為SP、Feistel和L-M三種結(jié)構(gòu)的代表算法,以CBC模式作為算法工作模式,分別在ERBCSP上進(jìn)行全指令復(fù)制的算法實(shí)現(xiàn),算法實(shí)現(xiàn)性能結(jié)果如表2所示。

表2 密碼算法實(shí)現(xiàn)性能

由表2可知復(fù)制全部指令后,AES-128、SMS4、IDEA的性能開(kāi)銷(xiāo)比分別為25.6%、17.9%、15.7%。為說(shuō)明性能開(kāi)銷(xiāo)較低的原因,統(tǒng)計(jì)了復(fù)制全部指令前后各算法的RPU利用率。如圖7(a)所示,復(fù)制指令前,AES-128、SMS4、IDEA算法的最大RPU利用率超過(guò)50 %,RPU平均利用率在40 %左右。如圖7(b)所示,復(fù)制指令后,AES-128、SMS4、IDEA的RPU利用率得到了巨大提升,RPU最大利用率可達(dá)到90 %以上,平均利用率在70 %左右。這是因?yàn)橐环矫鎻?fù)制指令算法有效利用運(yùn)行時(shí)刻處于空閑狀態(tài)的RPU實(shí)現(xiàn)再計(jì)算,另一方面軟件流水技術(shù)使原始指令與復(fù)制指令盡可能多的并行執(zhí)行,在極大提高RPU利用率的同時(shí),有效減少了性能開(kāi)銷(xiāo)。

圖7 指令復(fù)制前后RPU利用率

文獻(xiàn)[6-10]均采用指令復(fù)制實(shí)現(xiàn)錯(cuò)誤檢測(cè),但各文獻(xiàn)基于的處理器架構(gòu)存在差異且選用的測(cè)試基準(zhǔn)不同,因此無(wú)法直接使用文獻(xiàn)內(nèi)數(shù)據(jù)進(jìn)行對(duì)比。由圖5與圖6可知全指令復(fù)制時(shí)不同文獻(xiàn)方案的故障檢測(cè)能力相似,為有效對(duì)比不同文獻(xiàn)方法在RBCSP上實(shí)現(xiàn)所帶來(lái)開(kāi)銷(xiāo),本文將各文獻(xiàn)方法在RBCSP上進(jìn)行適配后,得到處理器面積與全指令復(fù)制實(shí)現(xiàn)的性能開(kāi)銷(xiāo)結(jié)果,如表3所示。表3中增加了帶錯(cuò)誤檢測(cè)后AES算法實(shí)現(xiàn)的面積能效比,更直觀地對(duì)比各方法在RBCSP上實(shí)現(xiàn)的優(yōu)劣。

表3 開(kāi)銷(xiāo)對(duì)比

表3中DMR(Dual Modular Redundancy)并非復(fù)制整個(gè)RBCSP,而僅復(fù)制其核心部件(可重構(gòu)并行處理簇),因此面積開(kāi)銷(xiāo)小于100%,僅為53.2%。文獻(xiàn)[6]與文獻(xiàn)[7]方法無(wú)法適配于ERBCSP,因此表中未列出其數(shù)據(jù)。由表4中數(shù)據(jù)可知,DMR的性能開(kāi)銷(xiāo)為0,但面積開(kāi)銷(xiāo)最大。文獻(xiàn)[9]的面積開(kāi)銷(xiāo)最小,但性能開(kāi)銷(xiāo)最大。而由本文方法復(fù)制全部指令后,相比于文獻(xiàn)[9]、文獻(xiàn)[10],各密碼算法實(shí)現(xiàn)性能開(kāi)銷(xiāo)最低;相比于DMR、文獻(xiàn)[9]、文獻(xiàn)[10],各密碼算法實(shí)現(xiàn)的面積能效比最高。由文獻(xiàn)[8]指令復(fù)制算法實(shí)現(xiàn)全指令復(fù)制時(shí),其性能開(kāi)銷(xiāo)與本文相等,因此表中未列出,但由圖5可知,在相同性能開(kāi)銷(xiāo)約束下,文獻(xiàn)[8]的故障檢測(cè)能力低于本文方法。因此,綜合考慮故障檢測(cè)能力、性能開(kāi)銷(xiāo)等因素,本文方法優(yōu)于DMR、文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]。

4 結(jié) 語(yǔ)

本文面向分組密碼流處理器,提出了基于指令復(fù)制的低開(kāi)銷(xiāo)并發(fā)錯(cuò)誤檢測(cè)方法??紤]惡意故障注入時(shí)間、位置的傾向性,提出了指令攻擊脆弱性概念,并結(jié)合指令的時(shí)間脆弱性、物理脆弱性,設(shè)計(jì)了脆弱性感知的指令復(fù)制算法,可在性能開(kāi)銷(xiāo)約束下,有效提高處理器對(duì)隨機(jī)故障與惡意故障的檢測(cè)能力。實(shí)驗(yàn)證明,本文方法增加的面積開(kāi)銷(xiāo)僅占原處理器面積的1.5%;在錯(cuò)誤檢測(cè)能力上,相比于同類(lèi)方法,采用本文方法后處理器可更有效地檢測(cè)隨機(jī)故障與惡意故障;在性能開(kāi)銷(xiāo)上,采用本文指令復(fù)制算法實(shí)現(xiàn)全部指令復(fù)制后,典型SP(AES-128)、Feistel(SMS4)、LM(IDEA)結(jié)構(gòu)算法實(shí)現(xiàn)性能開(kāi)銷(xiāo)分別為25.6%、17.9%、15.7%,相比于同類(lèi)型方法,采用本文方法實(shí)現(xiàn)全指令復(fù)制后密碼算法實(shí)現(xiàn)性能開(kāi)銷(xiāo)最低,面積能效比最高。由于實(shí)現(xiàn)指令復(fù)制后代碼規(guī)模增大,下一步將考慮通過(guò)動(dòng)態(tài)復(fù)制指令以減小代碼規(guī)模、降低存儲(chǔ)開(kāi)銷(xiāo)。

猜你喜歡
脆弱性時(shí)鐘指令
Kaiser模型在內(nèi)科診療護(hù)理風(fēng)險(xiǎn)脆弱性分析中的應(yīng)用研究
工控系統(tǒng)脆弱性分析研究
農(nóng)村家庭相對(duì)貧困的脆弱性測(cè)量及影響因素分析*
基于 Verilog HDL 的多周期 CPU 設(shè)計(jì)與實(shí)現(xiàn)
古代的時(shí)鐘
《單一形狀固定循環(huán)指令G90車(chē)外圓仿真》教案設(shè)計(jì)
基于PSR模型的上海地區(qū)河網(wǎng)脆弱性探討
這個(gè)時(shí)鐘一根針
有趣的時(shí)鐘
時(shí)鐘會(huì)開(kāi)“花”