徐志偉
(中國科學院計算技術研究所 北京 100190)
我國的 CPU 研發(fā)應采用兼容指令集還是自主研發(fā)指令集是學術界和產(chǎn)業(yè)界長期爭論的一個話題,由于研制指令集及其軟件生態(tài)的難度和工作量受很多因素影響而難以精確量化,不同背景的人對它們的認知差異很大,結果往往是誰都說服不了對方.龍芯團隊的這篇論文分享了龍架構指令集的設計和實踐經(jīng)驗,針對這個話題給出了有參考價值的觀點和數(shù)據(jù).
1.該文提出,可以通過技術手段達到既自主又兼容,解決自主研發(fā)指令集的最大障礙.傳統(tǒng)的軟件二進制翻譯技術已經(jīng)能夠?qū)崿F(xiàn)不同指令集平臺之間的軟件兼容運行,但存在性能損失過大的問題.龍架構通過指令集擴展,實現(xiàn)了比開源QEMU翻譯器高幾倍到幾十倍的性能效率.對語義差異相對較小的MIPS指令集,翻譯運行性能和MIPS原生性能相當.該文作者認為,再經(jīng)過一兩年的軟硬件磨合迭代,能夠消除單一指令系統(tǒng)的壁壘, 使得不同指令集的系統(tǒng)及應用軟件能夠融合到統(tǒng)一的龍架構平臺上, 不加區(qū)別地運行.如果這個目標能夠順利達成,那么指令集就成了可軟件定義的一個新的虛擬化層次,大量軟件將不必針對不同指令集進行重復開發(fā),在節(jié)約社會資源的同時帶來更多的技術創(chuàng)新空間.正如在云計算中,人們通過軟硬件協(xié)同實現(xiàn)了逼近物理機的虛擬機性能,帶來了新的計算范式和更高的運營效率.
2.該文給出了建設一個新生態(tài)的可行路徑和量化的工作量參考.龍芯3A5000的軟件生態(tài)構建實踐表明, 在深入掌握“3+3+3”的主要編譯系統(tǒng)技術的基礎上, 充分利用開源軟件, 在較短的時間內(nèi)構建一個新指令集的生態(tài)是可行的.該文介紹了龍架構的4個建設階段以及移植一個完整Linux發(fā)行版的架構相關支持代碼量等數(shù)據(jù),它們都是寶貴的一手經(jīng)驗,能夠為同行提供參考.
3.該文介紹了龍架構指令集諸多具體設計選擇.數(shù)據(jù)表明,在相同的微架構和編譯器版本下,龍架構能用比MIPS少的指令數(shù)完成同樣的任務,實現(xiàn)更高的性能.SPEC CPU2006基準程序集龍架構平均性能比MIPS高7%,部分應用的性能甚至比MIPS版本高30%以上.拋棄一些過時的指令集特征,引入現(xiàn)代操作系統(tǒng)和應用程序需要的一些支持,能夠有效地提升軟件的性能.
指令集的設計是一項系統(tǒng)性、基礎性的工作,龍芯團隊能獨立研制龍架構并在短短3年的時間內(nèi)達到商用應用的成熟程度,離不開過去20年在芯片設計和軟件生態(tài)建設方面的長期積累.恰當?shù)貦嗪庵噶罴黜椩O計選擇需要深入理解指令集與軟硬件實現(xiàn)的相互作用,而建設軟件生態(tài)更需要掌握一大批包括“3+3+3”的主要編譯系統(tǒng)在內(nèi)的基礎軟件技術.
一個優(yōu)秀指令集的形成往往需要經(jīng)歷長時間的研究和實踐迭代過程.龍架構走出了很好的第一步,但也還有很大的成長空間.如何更好地適應當代工作負載、如何科學地權衡新指令和新特性的引入、如何進一步加速軟件生態(tài)的繁榮等等,都需要龍芯團隊和國內(nèi)外同仁的繼續(xù)努力.可喜的是,龍芯團隊選擇以開放的態(tài)度發(fā)展龍架構.據(jù)了解,開源社區(qū)的大量軟件都已經(jīng)添加了對龍架構的支持,包括UEFI固件、Linux內(nèi)核、GCC/GLIBC/Binutils/GDB、LLVM、GoLang、.NET、QEMU 和 Chromimum/Firefox等關鍵基礎軟件.該文作者也宣布了龍架構指令集本身也將對外開放.我相信,在這種開放協(xié)作的模式下,龍架構將成為很好的學術研究和產(chǎn)業(yè)實踐的平臺.
評述專家:
徐志偉,《計算機研究與發(fā)展》主編,研究員.主要研究方向為高性能計算架構和分布式系統(tǒng).
亮點論文:
胡偉武,汪文祥,吳瑞陽,王煥東,曾露,徐成華,高翔,張福新.龍芯指令系統(tǒng)架構技術[J].計算機研究與發(fā)展,2023,60(1):2?16.DOI:10.7544/issn1000-1239.202220196