3A5000基于龍芯自主定義的LoongArch,自3A5000之后,龍芯就與MIPS徹底分道揚鑣,沒有任何關系了。這里著重介紹一下LoongArch。
過去這些年,國內CPU公司引進過X86、ARM、Power、SPARC等指令集,但始終沒能建立起自己的Wintel,原因就在于始終保持著一種跟生態的心態,而且在軟件上的投入嚴重不足。如今,國際大環境的變化使購買國外指令集授權充滿了不確定因素,在這種情況下,開發自主指令集是規避風險的良策。
當然,自主定義指令集存在一個問題,那就是軟件生態壓力巨大,而龍芯的LoongArch則采用二進制翻譯的方式實現兼容。LoongArch的指令系統在設計時,以先進性、擴展性、兼容性為目標,融合了X86、ARM、MIPS、RISC-V指令系統的主要功能,定義專門產生EFLAG結果的運算類指令加速X86、ARM架構下獨有的EFLAG值模擬,設計浮點寄存器的棧訪問模式加速X87浮點協處理器指令的模擬,實現RISC-V中豐富的同步指令。
LoongArch 是全新的指令集,包含基礎指令 337 條、虛擬機擴展 10 條、二進制翻譯擴展 176 條、128 位向量擴展 1024 條、256 位向量擴展 1018 條,共計 2565 條原生指令。
LoongArch 的"指令格式"是 MIPS 的超集,仍為RISC且兼容MIPS指令格式,但二進制不同。相對于MIPS,摒棄了部分不適合現代CPU的指令,又做了大量改進和擴展。重新設計的指令格式可以包含更多的指令槽,有利于以后的長遠發展。
MIPS只有3種指令格式,LoongArch重新設計了指令格式 ,使可用的格式多達10種 ,其包含3種無立即數格式和7種有立即數格式。例如單條指令支持的立即數從MIPS的最大16位擴展到最大24位,分支跳轉偏移也從64K擴展到1M字節,以及尋址空間從固定分段改變為單一平面等,都有效減少了編譯結果的目標指令條數和訪存次數,提高了效能。
LoongArch 仍為RISC指令集,32位定長指令、32個通用寄存器、32個浮點/向量寄存器。取消轉移指令延遲槽,直接跳轉指令的目標地址相對PC計算,增加相對轉移偏移量。新增將PC作為源操作數的運算指令。
龍芯還提供基于 LoongArch 的 Linux 操作系統,在此操作系統中除了運行原生的 LoongArch 程序,還能通過翻譯的方式兼容 MIPS、x86、ARM、RISC-V 這幾種指令集的 Linux 程序。
使用LoongArch翻譯任何指令時大致流程都相同,只是隨著指令系統的差異而在效率上也會有所差異。其中MIPS盡管二進制編碼與LoongArch不同,但大部分LoongArch基礎指令仍與MIPS相似,因此翻譯開銷極小。對ARM和RISC-V的翻譯效率也比x86更高。龍芯還會提供以LoongArch為目標架構的編譯器,已知編譯器已經實現把 MIPS 匯編代碼編譯為 LoongArch 二進制,內嵌MIPS匯編的C/C++源代碼甚至不用修改就能編譯。
另外,官方PPT里還有幾個亮點:
一是已完成龍芯 GS132、GS264、GS464 三大系列 IP 核指令系統修改。
二是基礎軟件 OS 方面,已經完成 BIOS、編譯器的內核改造,可以在 FPGA 平臺上運行 SPEC CPU 等復雜應用;正在開展完整操作系統編譯工作、開展 Java、JavaScript、.NET 虛擬機遷移工作。
三是二進制翻譯系統 LAT 已基本完成開發,開始調試優化。MIPS 和 X86 用戶態二進制翻譯持續改進中;X86 系統二進制翻譯已經基本跑通,最難的地址翻譯已經調通。
四是權威第三方機構對 LoongArch指令系統進行知識產權分析,2020年底完成國內部分,2021年完成國際部分。
五是龍芯希望組建自主指令系統聯盟。龍芯將把 LoongArch 免費開放,并開放相當于Cortex-A53 以下性能處理器 IP 核,條件是聯盟內企業彼此間不能發生指令系統訴訟,期望最終能夠形成對第三方的 CPU 防御聯盟。同時,還將嘗試在高校推廣百條指令左右的 Loongarch 小系統。
很顯然,龍芯是希望短期兼容MIPS遺留生態過度,建設自己的軟件生態,建立中國版的Wintel。龍芯的目標宏偉,實現難度很大,但如果做成了,對產業安全和國家安全的積極作用是異常巨大。
相關文章
「 支持烏有之鄉!」
您的打賞將用于網站日常運行與維護。
幫助我們辦好網站,宣傳紅色文化!