徐海波
(北京賽迪軟件測(cè)評(píng)工程技術(shù)中心有限公司,北京 100048)
2021年,龍芯中科技術(shù)股份有限公司(簡(jiǎn)稱龍芯中科)官方發(fā)布了基于龍芯架構(gòu)的新一代處理器龍芯3A 50 0 0的消息,“龍芯3A 50 0 0實(shí)現(xiàn)了自主性和安全性的深度融合。龍芯3A5000中包括處理器核心、內(nèi)存控制器及相關(guān)PHY、高速IO接口控制器及相關(guān)PHY、鎖相環(huán)、片內(nèi)多端口寄存器堆等在內(nèi)的所有模塊均自主設(shè)計(jì)。龍芯3A5000處理器集成了安全可信模塊,支持可信計(jì)算體系。龍芯3A5000內(nèi)置了硬件加密模塊,支持商用密碼SM2/3/4及相關(guān)算法,其中SM3/4密碼處理性能達(dá)到5 Gbps以上[1]?!?/p>
針對(duì)此款處理器,為了驗(yàn)證其商用密碼指令集運(yùn)算性能,筆者第一時(shí)間拿到了成品及適配的主板等硬件,并在實(shí)驗(yàn)室開展了初步測(cè)試。為了比較該處理器在商用密碼運(yùn)算方面的性能,還選用了龍芯同期生產(chǎn)的3B5000處理器及市面上常見的英特爾處理器進(jìn)行了比較。
在測(cè)試工程中,經(jīng)向龍芯中科咨詢得知,目前產(chǎn)品手冊(cè)等白皮書還沒有發(fā)布。由于該款處理器剛剛發(fā)布,各操作系統(tǒng)廠商與之適配的操作系統(tǒng)、編譯器還在適配研制過程中,正式版尚未發(fā)布。因此此次測(cè)試尚未能檢測(cè)商用密碼算法通過處理器指令集的運(yùn)算性能。
測(cè)試共選取了8款處理器進(jìn)行對(duì)比測(cè)試,分別為龍芯3A5000、龍芯3B5000、龍芯3A4000、龍芯3B4000、英特爾賽揚(yáng)J1900、英特爾i5-2400、英特爾i7-2600、英特爾至強(qiáng)E5-2620V2。(其中3B5000、E5-2620V2為服務(wù)器架構(gòu),每臺(tái)安裝了兩顆相同的處理器),如表1所示。
表1 測(cè)試機(jī)機(jī)型、處理器、內(nèi)存、硬盤、操作系統(tǒng)版本等參數(shù)
表2 龍芯與英特爾處理器運(yùn)算商用密碼測(cè)試結(jié)果
2.3.1 龍芯與英特爾處理器執(zhí)行商用密碼算法的結(jié)果分析
由于英特爾處理器不支持商用密碼的指令集,龍芯處理器雖然支持,但操作系統(tǒng)和編譯器尚未適配,所以本次測(cè)試均為純軟件計(jì)算,以此比較不同處理器在各計(jì)算方式下的性能差別。測(cè)試結(jié)果表明:對(duì)于采用非對(duì)稱算法SM2的加解密操作,包括加密/解密,簽名/驗(yàn)簽操作,龍芯與英特爾處理器的性能差距比較大,基本相差一個(gè)數(shù)量級(jí)以上。但是隨著運(yùn)算位數(shù)的增大,性能差距在逐漸減小[2];在采用對(duì)稱算法SM4的運(yùn)算能力方面,龍芯與英特爾的賽揚(yáng)處理器性能相差不大,但與英特爾酷睿處理器還是有一定差距[3];在采用SM3的散列函數(shù)運(yùn)算能力方面,龍芯的計(jì)算性能與英特爾的酷睿處理器持平,基本接近至強(qiáng)服務(wù)器處理器的運(yùn)算能力[4]。
2.3.2 龍芯與英特爾處理器執(zhí)行國(guó)際加密算法的
結(jié)果分析
本次測(cè)試仍采用純軟件計(jì)算,以此比較不同處理器在各計(jì)算方式下的性能差別。對(duì)于非對(duì)稱算法,選取了常用的R SA算法進(jìn)行比較,在加密/解密,簽名/驗(yàn)簽操作方面,龍芯與英特爾處理器的性能差距非常大,英特爾的酷睿、至強(qiáng)處理器計(jì)算速度比龍芯快10~30倍以上,賽揚(yáng)處理器也要優(yōu)于龍芯處理器的處理能力;對(duì)于對(duì)稱算法,選擇了AES算法進(jìn)行比較,除英特爾至強(qiáng)服務(wù)器處理器優(yōu)勢(shì)相對(duì)明顯以外,各處理器表現(xiàn)相對(duì)比較平均,計(jì)算性能相差不大;對(duì)于散列函數(shù)算法,選擇了SHA1和SHA256兩種算法進(jìn)行比較,龍芯的計(jì)算性能基本達(dá)到英特爾的賽揚(yáng)處理器的水平,與酷睿、至強(qiáng)相比略有差距。
2.3.3 英特爾處理器AES算法采用指令集的能力
提升分析
英特爾公司在2008年3月提出了高級(jí)加密標(biāo)準(zhǔn)指令集(或稱英特爾高級(jí)加密標(biāo)準(zhǔn)新指令,簡(jiǎn)稱AESNI),是x86指令集架構(gòu)的擴(kuò)展,用于Intel和AMD微處理器,該指令集的目的是改進(jìn)應(yīng)用程序使用高級(jí)加密標(biāo)準(zhǔn)(AES)執(zhí)行加密和解密的速度。并在隨后生產(chǎn)的大部分處理器中嵌入了AES-NI指令集[5]。
在被測(cè)產(chǎn)品中,除賽揚(yáng)處理器不支持此指令集,酷睿系列及至強(qiáng)均支持此指令集。[6]由于指令集只針對(duì)對(duì)稱密碼算法AES設(shè)置,所以測(cè)試也只選擇了酷睿和至強(qiáng)的3款處理器,對(duì)AES-128、AES-256兩種常見算法的加密/解密進(jìn)行了測(cè)試。對(duì)于128位加解密算法,處理器指令集的處理效率比純軟件運(yùn)算有明顯的提升,運(yùn)算速度大約為6~10倍;對(duì)于256位加解密算法,處理器指令集的處理效率比純軟件運(yùn)算有明顯的提升,運(yùn)算速度大約為50倍。
2.3.4 龍芯處理器5000系列與4000系列對(duì)比能
力提升分析
龍芯處理器在軟件運(yùn)算速度和處理能力方面,與英特爾相比還有非常大的差距,尤其是在非對(duì)稱算法(RSA、SM2)的計(jì)算過程中,由于涉及大量乘除操作,導(dǎo)致處理速度遠(yuǎn)遠(yuǎn)落后于英特爾處理器;在對(duì)稱算法(AES、SM4)的計(jì)算過程中,大多數(shù)均為位移和異或等操作,所以與英特爾處理器的處理能力相差不大;對(duì)于散列函數(shù)(SHA、SM3)的計(jì)算,涉及位移和映射等操作,所以與英特爾處理器相比略有差距。
通過對(duì)英特爾處理器打開/關(guān)閉AES-NI指令集的測(cè)試發(fā)現(xiàn),在處理對(duì)稱加解密AES算法時(shí),對(duì)性能影響非常大,尤其是相比32位操作與16位操作,使用處理器指令集的運(yùn)行速度遠(yuǎn)遠(yuǎn)超過純軟件運(yùn)行速度。但英特爾處理器的加解密指令集僅限于酷睿以上的處理器且只支持AES算法。
龍芯5000系列與4000系列相比,各方面性能大約提升80%。
龍芯處理器雖已支持商用密碼指令集,但由于操作系統(tǒng)及編譯器適配的問題,還無法測(cè)試其性能有多大的提升,但根據(jù)英特爾指令集的測(cè)試,樂觀估計(jì)其性能應(yīng)該有10倍左右的提升。英特爾只有AESNI指令集,而龍芯的指令集完整地支持SM2/3/4,如果能對(duì)非對(duì)稱加解密的算法進(jìn)行指令集成,那性能提升將是巨大的,高性能的運(yùn)算也將為商用密碼的應(yīng)用帶來更加廣泛的前景。日前,龍芯官方表示“龍芯3A6000今年上半年會(huì)流片回來,單核性能比3A5000系列提升30%,浮點(diǎn)性能將提升60%?!弊屛覀兪媚恳源?,純國(guó)產(chǎn)、真自主、高性能、全生態(tài)的龍芯早日登場(chǎng)?!?/p>