一種專用指令處理器的設(shè)計(jì)驗(yàn)證方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及嵌入式技術(shù)領(lǐng)域,特別是涉及一種專用指令處理器的設(shè)計(jì)驗(yàn)證方法。
【背景技術(shù)】
[0002] 與其他公鑰密碼算法相比,橢圓曲線密碼算法(Elliptic curve cryptography, ECC)具有抗攻擊能力強(qiáng)、計(jì)算量小以及處理速度快等優(yōu)點(diǎn),已成為下一代公鑰密碼體制的 標(biāo)準(zhǔn)。相比于被廣泛使用的公鑰密碼算法RSA,ECC在相同的安全強(qiáng)度下所要求的密鑰強(qiáng)度 僅是RSA的1/6。即對(duì)于q元有限域上的ECC,當(dāng)q為160bit時(shí)(該模數(shù)目前仍然是安全的),RSA 需要1024bit的模數(shù)才能達(dá)到同等的安全強(qiáng)度。該優(yōu)勢(shì)使得ECC能夠獲得更快的處理速度、 更少的網(wǎng)絡(luò)帶寬和存儲(chǔ)空間需求,在實(shí)際應(yīng)用中具有更大的潛在使用價(jià)值。
[0003] 處理器的性能是公鑰密碼算法高效運(yùn)行的瓶頸,尤其在嵌入式應(yīng)用背景下,較低 的處理器性能和有限的可用資源進(jìn)一步降低了公鑰密碼算法的運(yùn)算速度和執(zhí)行效率。隨著 ECC在嵌入式領(lǐng)域的廣泛應(yīng)用,如何提高其執(zhí)行效率成為目前研究的熱點(diǎn)問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種專用指令處理器的設(shè)計(jì)驗(yàn)證方法,目的在于以犧牲少量 硬件資源為代價(jià)大幅提升算法的執(zhí)行效率并大幅降低指令代碼的存儲(chǔ)空間。
[0005] 為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種專用指令處理器的設(shè)計(jì)驗(yàn)證方法,包括:
[0006] 對(duì)目標(biāo)算法進(jìn)行優(yōu)化;
[0007] 將所述目標(biāo)算法劃分為多個(gè)基本指令塊;
[0008] 將所述基本指令塊轉(zhuǎn)化為數(shù)據(jù)流圖,采用近似最優(yōu)解的方法,根據(jù)預(yù)設(shè)的指令設(shè) 計(jì)規(guī)則在所述基本指令塊中查找出可優(yōu)化指令塊;
[0009] 為查找到的所述可優(yōu)化指令塊設(shè)計(jì)專用指令,對(duì)原始指令集進(jìn)行擴(kuò)展;
[0010] 建立專用指令處理器模型,對(duì)所述專用指令處理器模型進(jìn)行仿真驗(yàn)證。
[0011] 可選地,所述將所述目標(biāo)算法劃分為多個(gè)基本指令塊包括:
[0012] 對(duì)LD/ST類訪存指令進(jìn)行單獨(dú)劃分。
[0013] 可選地,所述預(yù)設(shè)的指令設(shè)計(jì)規(guī)則為:擴(kuò)展后的指令集兼容原有處理器模型的指 令格式;新指令操作碼長(zhǎng)度與所述原有處理器模型中指令操作碼長(zhǎng)度相同,并且新指令操 作碼和操作數(shù)的總和不超出所述原始指令集的指令位數(shù);指令設(shè)計(jì)過(guò)程中采用連續(xù)寄存器 存儲(chǔ);新指令在單個(gè)時(shí)鐘周期內(nèi)執(zhí)行完成。
[0014] 可選地,所述根據(jù)預(yù)設(shè)的指令設(shè)計(jì)規(guī)則在所述基本指令塊中查找出可優(yōu)化指令塊 包括:
[0015] 從所述數(shù)據(jù)流圖的葉子節(jié)點(diǎn)開(kāi)始查找,把所有(G-G')中有邊指向以的節(jié)點(diǎn)加入 到G'中進(jìn)行判斷;如果新加入的節(jié)點(diǎn)使圖G滿足預(yù)設(shè)的約束條件,則將所述新加入的節(jié)點(diǎn)加 入到G'圖中;
[0016] 所述約束條件為:查找到的所述可優(yōu)化指令塊的輸入數(shù)據(jù)的元素個(gè)數(shù)不大于用戶 定義的新設(shè)計(jì)指令的最大輸入數(shù)個(gè)數(shù);查找到的所述可優(yōu)化指令塊內(nèi)輸出數(shù)據(jù)的數(shù)目不大 于用戶定義的新設(shè)計(jì)指令的最大輸出數(shù)據(jù)個(gè)數(shù);通過(guò)所述數(shù)據(jù)流圖查找所述可優(yōu)化指令塊 不允許有一條從Vi到Vi+ι的有向邊;
[0017] 其中,G為經(jīng)轉(zhuǎn)換后得到的數(shù)據(jù)流圖,G'為已查找到的可優(yōu)化指令圖,VlEG',if 為可優(yōu)化指令塊內(nèi)的節(jié)點(diǎn),并且至少有一條可優(yōu)化指令塊外節(jié)點(diǎn)指向該節(jié)點(diǎn)集合內(nèi)的任意 一個(gè)節(jié)點(diǎn)。
[0018] 可選地,在所述對(duì)目標(biāo)算法進(jìn)行優(yōu)化之前還包括:
[0019] 根據(jù)處理器模型的特點(diǎn),對(duì)目標(biāo)算法進(jìn)行實(shí)現(xiàn)。
[0020] 可選地,所述對(duì)目標(biāo)算法進(jìn)行優(yōu)化包括:
[0021 ]通過(guò)混合坐標(biāo)系、Montgomery曲線、多項(xiàng)式平方優(yōu)化運(yùn)算、模約減優(yōu)化運(yùn)算和 Montgomery優(yōu)化運(yùn)算的方法對(duì)所述目標(biāo)算法進(jìn)行優(yōu)化。
[0022]可選地,在所述建立專用指令處理器模型,對(duì)所述專用指令處理器模型進(jìn)行仿真 驗(yàn)證之后還包括:
[0023]將所述專用指令處理器模型轉(zhuǎn)換為Verilog/VHDL RTL級(jí)描述的處理器模型;
[0024]對(duì)所述處理器模型進(jìn)行RTL級(jí)仿真,以驗(yàn)證模型設(shè)計(jì)的正確性。
[0025] 可選地,在對(duì)所述處理器模型進(jìn)行RTL級(jí)仿真之后還包括:
[0026]將RTL級(jí)描述的處理器模型轉(zhuǎn)換為處理器模型對(duì)應(yīng)的門(mén)級(jí)電路,燒錄到FPGA中。 [0027] 可選地,在燒錄到FPGA之后還包括:
[0028]在FPGA上對(duì)所述專用指令處理器模型的正確性進(jìn)行驗(yàn)證。
[0029]本發(fā)明所提供的專用指令處理器的設(shè)計(jì)驗(yàn)證方法,對(duì)目標(biāo)算法進(jìn)行優(yōu)化;將目標(biāo) 算法劃分為多個(gè)基本指令塊;將基本指令塊轉(zhuǎn)化為數(shù)據(jù)流圖,采用近似最優(yōu)解的方法,根據(jù) 預(yù)設(shè)的指令設(shè)計(jì)規(guī)則在基本指令塊中查找出可優(yōu)化指令塊;為查找到的可優(yōu)化指令塊設(shè)計(jì) 專用指令,對(duì)原始指令集進(jìn)行擴(kuò)展;建立專用指令處理器模型,對(duì)專用指令處理器模型進(jìn)行 仿真驗(yàn)證。本發(fā)明所提供的專用指令處理器的設(shè)計(jì)驗(yàn)證方法,通過(guò)指令集自擴(kuò)展的方法來(lái) 提高目標(biāo)算法實(shí)現(xiàn)過(guò)程中執(zhí)行復(fù)雜度較高模塊的運(yùn)算速度,提高了算法的執(zhí)行效率。
【附圖說(shuō)明】
[0030] 圖1為本發(fā)明所提供的專用指令處理器的設(shè)計(jì)驗(yàn)證方法的一種【具體實(shí)施方式】的流 程圖;
[0031] 圖2為本發(fā)明所提供的專用指令處理器的設(shè)計(jì)驗(yàn)證方法的另一種【具體實(shí)施方式】的 流程圖
[0032] 圖 3 為EXT1 的 DFG 圖;
[0033] 圖 4 為EXT1 的 RDFG 圖;
[0034]圖5為EXT1指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0035]圖6為EXT2指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0036]圖7為EXT3指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0037]圖8為EXT4指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0038]圖9為EXT5指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0039]圖10為EXT6指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖;
[0040] 圖11為EXT7指令的擴(kuò)展指令執(zhí)行部件硬件模型示意圖。
【具體實(shí)施方式】
[0041] 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和【具體實(shí)施方式】 對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是 全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提 下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]本發(fā)明所提供的專用指令處理器的設(shè)計(jì)驗(yàn)證方法的一種【具體實(shí)施方式】的流程圖 如圖1所示,該方法包括:
[0043] 步驟S101:對(duì)目標(biāo)算法進(jìn)行優(yōu)化;
[0044] 該過(guò)程的核心是優(yōu)化目標(biāo)算法的實(shí)現(xiàn)流程,使得流程更加合理,運(yùn)行更加高效。 [0045] 對(duì)目標(biāo)算法進(jìn)行優(yōu)化具體可以采用但并不限于采用混合坐標(biāo)系、Montgomery曲 線,多項(xiàng)式平方優(yōu)化運(yùn)算、模約減優(yōu)化運(yùn)算或Montgomery優(yōu)化運(yùn)算等優(yōu)化方法。
[0046]步驟S102:將所述目標(biāo)算法劃分為多個(gè)基本指令塊;
[0047] 基本指令塊(Basic Instruction Block,BIB)是查找可優(yōu)化指令塊的基本單元。 作為一種【具體實(shí)施方式】,可具體結(jié)合下述約束條件做出判斷。一般情況下,一個(gè)目標(biāo)算法的 實(shí)現(xiàn)可以劃分出多個(gè)基本指令塊即BIBn BIBn-fBIBiBIBo。
[0048] 在基本指令塊的劃分過(guò)程中,可以具體根據(jù)算法的功能模塊進(jìn)行劃分(如AES的 Sbox字節(jié)置換),也可以根據(jù)算法實(shí)現(xiàn)語(yǔ)句進(jìn)行劃分(如for循環(huán)語(yǔ)句會(huì)單獨(dú)劃分為一個(gè)基 本指令塊,因循環(huán)內(nèi)語(yǔ)句重復(fù)且使用頻繁)。這均不影響本發(fā)明的實(shí)現(xiàn)。
[0049]作為一種優(yōu)選實(shí)施方式,本實(shí)施例在BIB的劃分過(guò)程中,可以將LD/ST類訪存指令 進(jìn)行單獨(dú)劃分,避免與其他運(yùn)算指令劃分到一個(gè)BIB內(nèi)。因?yàn)檫@類訪存指令的執(zhí)行時(shí)間較 長(zhǎng),往往決定了處理器的最壞路徑執(zhí)行時(shí)間,進(jìn)而影響處理器的最高運(yùn)行頻率。因此這樣的 設(shè)置可以在一定程度上提高處理器的性能,降低對(duì)處理器運(yùn)行頻率的影響。
[0050] 步驟S103:將所述基本指令塊轉(zhuǎn)化為數(shù)據(jù)流圖,采用近似最優(yōu)解的方法,根據(jù)預(yù)設(shè) 的指令設(shè)計(jì)規(guī)則在所述基本指令塊中查找出可優(yōu)化指令塊;
[0051] 針對(duì)新指令設(shè)計(jì),指令設(shè)計(jì)規(guī)則可以具體包括:(1)擴(kuò)展后指令集兼容原有處理器 模型的指令格式,保證譯碼部件的正常運(yùn)行;(2)新指令操作碼長(zhǎng)度和原有處理器模型中指 令操作碼長(zhǎng)度相同,并且新指令操作碼和操作數(shù)的總和不能超出原指令集的指令位數(shù);(3) 指令設(shè)計(jì)過(guò)程中可采用連續(xù)寄存器存儲(chǔ)方法,即只需知道指令的第一個(gè)寄存器位置,通過(guò) 連續(xù)的寄存器存儲(chǔ)其他輸入輸出數(shù)據(jù),以此來(lái)解決指令位數(shù)不足的問(wèn)題;(4)新指令需要在 單個(gè)時(shí)鐘周期內(nèi)執(zhí)行完成;(5)新指令的執(zhí)行結(jié)構(gòu)或部件不能過(guò)于復(fù)雜,否則難以實(shí)現(xiàn)并且 會(huì)引起較大時(shí)延,降低算法的執(zhí)行效率;(6)新指令條數(shù)不宜過(guò)多,即指令集擴(kuò)展后占用的 硬件資源數(shù)不能過(guò)多,否則難以滿足特定應(yīng)用背景的需求;(7)不應(yīng)對(duì)重復(fù)的語(yǔ)句進(jìn)行重復(fù) 優(yōu)化,否則會(huì)造成硬件資源的浪費(fèi)。
[0052]首先將基本指令塊(BIB)轉(zhuǎn)換成數(shù)據(jù)流圖數(shù)據(jù)流圖(Data Flow Graph,DFG),本實(shí) 施例中可具體采用在DFG圖中根據(jù)指令設(shè)計(jì)規(guī)則,引入近似最優(yōu)解方法來(lái)查找可優(yōu)化指令 塊。
[0053]假設(shè)BIB經(jīng)轉(zhuǎn)換后得到的DFG圖為6=(¥3),6為一個(gè)有向無(wú)環(huán)圖,節(jié)點(diǎn)集合¥表示 BIB內(nèi)的某一步操作,邊集合E表示BIB內(nèi)每一步操作的數(shù)據(jù)依賴關(guān)系。簡(jiǎn)單舉例,一個(gè)加法 操作c = a+b可以轉(zhuǎn)換成DFG圖的一部分,其中+號(hào)表示操作節(jié)點(diǎn),整個(gè)操作對(duì)應(yīng)3條有向邊, 在圖中表示為產(chǎn)生a和b