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

徐志偉,《計算機研究與發展》主編,研究員.主要研究方向為高性能計算架構和分布式系統.
亮點論文:
胡偉武,汪文祥,吳瑞陽,王煥東,曾露,徐成華,高翔,張福新.龍芯指令系統架構技術[J].計算機研究與發展,2023,60(1):2?16.DOI:10.7544/issn1000-1239.202220196