日前,外媒報道MIPS Technologies宣布將放棄繼續(xù)設計MIPS處理器,轉(zhuǎn)向了RISC-V。在MIPS加盟RISC-V陣營后,有人鼓吹龍芯要完,但事實上,這完全是不了解龍芯具體情況的臆測。特別是在龍芯開發(fā)自主指令集LoongArch之后,已經(jīng)在指令集方面走上了獨立自主道路。鐵流認為,MIPS投RISC-V,對于龍芯而言,是新征程的開始。
MIPS投RISC-V對龍芯無影響
在MIPS加盟RISC-V陣營后,有觀點鼓吹龍芯要完,但事實上,這完全是不了解龍芯具體情況的臆測,是拿ARM陣營CPU公司的情況硬生生往龍芯身上套用。
由于MIPS學院風很重,在技術授權(quán)上比較開放。技術上的開放一方面使MIPS在學院派中頗受青睞,很多大學至今依然在使用MIPS進行教學,另一方面,客戶可以自由添加指令集,而這直接導致MIPS的生態(tài)破碎化。
ARM則在商業(yè)上比較開放,但在技術上卡的非常嚴格,在ARM32時代,ARM僅對蘋果、高通等不超過5家公司授權(quán)過ARM32指令集,而且禁止客戶修改、添加指令,其他的一律是IP核授權(quán)。
誠然,ARM64在授權(quán)方面比ARM32開放很多,但價格異常昂貴,還有很多附加條款,比如使用范圍局限于服務器CPU,禁止修改添加指令等等。ARM在技術授權(quán)方面比MIPS更加保守,但恰恰是這種保守的舉措,比如禁止客戶修改、添加指令等條款使ARM避免了MIPS生態(tài)破碎化的命運。
目前,市場上絕大多數(shù)ARM芯片都是從ARM購買的公版架構(gòu),高通、聯(lián)發(fā)科、麒麟、展銳的手機芯片基本都是IP授權(quán)。以麒麟為例,從最早的K3開始,到最新的麒麟9000,在過去十年中,麒麟芯片的CPU核全部從ARM購買。
由于手機芯片廠商在CPU上高度依賴ARM,一旦無法買到ARM的最新IP,那就意味著在技術迭代中落后。以麒麟芯片為例,當年美國制裁時,BBC就爆料ARM內(nèi)部文件,稱ARM斷絕了和HW的技術合作。之后的麒麟990則繼續(xù)使用麒麟980上的A76,而競爭對手的芯片則用上了A77。最近,麒麟9000用上了A77,競爭對手已經(jīng)用上了A78。
相比之下,龍芯則不存在這方面的問題,由于龍芯的IP從頭開始就是自主研發(fā),歷經(jīng)二十年先后研發(fā)了GS132、GS132e、GS232、GS232e/GS264、GS464、GS464e、GS464V等數(shù)代CPU核,以及一些未正式命名的小改版本(3A2000和3A3000雖然都是基于GS464e,但其實是兩個版本,IPC提升了15%;3A4000和3A5000在公開資料里都是GS464v,但其實連指令集都不一樣,完全是兩個版本,IPC提升在15%以上),基于這些CPU核又研發(fā)了幾十款CPU。由于龍芯實現(xiàn)了核心IP完全自主設計,這使龍芯并不依賴MIPS的IP,因此,MIPS是否繼續(xù)研發(fā)MIPS處理器,對龍芯毫無影響。相對于眾多ARM陣營手機芯片廠商需要持續(xù)從ARM那里購買IP才能保證技術迭代,龍芯本來就不需要從MIPS購買IP核。
龍芯的目標就是完全自主可控
早期,龍芯基于MIPS設計CPU,之后不斷添加指令,在十多年里,龍芯基于MIPS進行添加了1000多條指令形成了LoongISA,龍芯3A4000以前的處理器,都是基于LoongISA。
不過,MIPS畢竟是一家美國公司,即便獲得了MIPS永久授權(quán),一旦發(fā)生緊急情況,還是存在未知風險。加上MIPS是第一款商用RISC處理器,由于一直保持向下兼容,積累了很多歷史包袱,很多被人詬病的問題由于保持兼容的原因一直未修改。在技術飛速發(fā)展的大背景下,僅僅基于MIPS進行添加指令已經(jīng)無法滿足龍芯的需求。在外在風險和內(nèi)在需求的雙重刺激下,龍芯開發(fā)自主指令集LoongArch。
由于不少人懷疑LoongArch又是龍芯基于MIPS魔改,鐵流特意向一位中科院計算所研究員求證,獲得的回復是“LoongArch自定義指令集,通過二進制翻譯技術兼容MIPS”。該研究員是RISC-V的支持者,為RISC-V在中國的推廣做出了巨大貢獻。有鑒于這位研究員與龍芯沒有任何利益關系,其表態(tài)可靠性極高。
至于有網(wǎng)友懷疑LoongArch是龍芯拿出來危機公關的言論,其實只要稍微對龍芯有一點了解就可以粉碎這個謠言。因為3A5000就是基于LoongArch設計,且已經(jīng)有樣片,將在2021年投放市場,從確定新指令集到基于新指令將設計一款CPU,再到完成流片,需要漫長的周期,龍芯不可能在幾年前就預測到MIPS將于2021年3月宣布投身RISC-V。很顯然,LoongArch是龍芯籌謀已久的成果,絕非某些廠商用來應對危機公關的“按揭開源”產(chǎn)品。
由于采用了LoongArch,徹底杜絕了MIPS指令集一些飽受詬病的問題,龍芯自定義指令有一些比MIPS指令更優(yōu)秀,代碼執(zhí)行效率更高,因而在局部(并非全部都更好)出現(xiàn)了二進制翻譯后,不僅沒有性能損失,反而性能比直接用MIPS還要好的情況。為此,鐵流咨詢了行業(yè)人士,獲得的回復是“二進制翻譯領域,翻譯后效率超過100%,這個是有先例的”。
一位開發(fā)者告知:LoongArch和MIPS沒有關系了,新指令集LoongArch基本和MIPS可以一一對應,當前l(fā)oongArch已經(jīng)非常成熟了,經(jīng)過了一年的磨合,基本所有的包都編譯好了,debian的系統(tǒng)和我們常用的ubuntu系統(tǒng)一樣,apt-get install安裝就可以了,感覺不到是新的指令集。
從龍芯最初基于MIPS添加指令,到發(fā)展出基于MIPS的LoongISA,再到最新的LoongArch,龍芯的目的是非常明確的,也是顯而易見的,那就是盡一切可能掌握主導權(quán),堅定不移走自主之路。
3A5000是龍芯開啟指令集自主的里程碑
在過去這些年,無論是Imagination,還是Wave Computing都沒有在MIPS投入多少資源,都只是在拿MIPS的IP賺錢,盡可能榨取MIPS的剩余價值,主要精力分別放在各自的主營業(yè)務——GPU和AI芯片上。直接的結(jié)果就是MIPS的CPU發(fā)展非常慢,如今,龍芯3A4000的性能已經(jīng)大幅超越了MIPS CPU,龍芯3A5000則在裸CPU性能上相對于龍芯3A4000進一步提升50%至60%,堪稱當下最好的自主CPU。
Imagination、Wave Computing在硬件上是如此,在軟件上亦是如此。就軟件生態(tài)方面,由于過去這些年Imagination、Wave Computing的不作為,其實很多方面已經(jīng)是龍芯挑大梁了。
在龍芯對很多軟件進行移植優(yōu)化的時候,也不忘同時帶上其他MIPS處理器的支持,在v8,OpenJDK等JIT虛擬機中,龍芯都已經(jīng)成為了整個MIPS架構(gòu)的代碼維護者。半年前UOS也把Loongson內(nèi)核與x86內(nèi)核、ARM內(nèi)核并列,其中一項更新是增加了對龍芯3A4000的支持。
過去,龍芯在MIPS的軟件生態(tài)方面已經(jīng)獲得了一定的主導地位。龍芯完成了.NET的移植,成為了Java運行環(huán)境OpenJDK 13的一大貢獻者,現(xiàn)在維護著上游MIPS架構(gòu)和龍芯擴展的代碼。諸多多媒體庫,例如FFmpeg,libvpx,OpenH264,libyuv等,都已經(jīng)由龍芯針對自己的MMI以及MIPS的MSA等向量指令進行優(yōu)化并提交給上游。有些庫支持龍芯擴展指令甚至比支持MIPS的擴展指令還早。Linux內(nèi)核的上游也一樣被龍芯生態(tài)鏈成員維護著。龍芯在開源軟件方面已經(jīng)獲得了一定的發(fā)言與控制權(quán)。
MIPS原本的生態(tài)絕大部分已經(jīng)是歷史,龍芯如今的軟件生態(tài)主要是來自龍芯自己維護的各種開源項目,以及國內(nèi)各家軟件開發(fā)商對產(chǎn)品的移植,本質(zhì)上已經(jīng)不能再稱為MIPS軟件生態(tài),而應當稱為龍芯生態(tài)。事實上,在移植一些軟件的時候,已經(jīng)要區(qū)分龍芯版本和MIPS版本了。
LoongArch是龍芯籌劃多年的產(chǎn)品,這一點從LoongArch在3A5000 CPU完成流片后才亮相就可能看出來。龍芯確立LoongArch之后,龍芯和MIPS已經(jīng)分道揚鑣,毫無關系了。對于龍芯而言,無論MIPS存在與否,都不影響龍芯獨立自主建生態(tài),龍芯過去是這么做的,現(xiàn)在依然這么做,未來還是這么做。
過去幾年中,龍芯是全球還在發(fā)展MIPS高性能處理器的玩家,在龍芯退出MIPS,立起LoongArch大旗之后,龍芯3A4000極有可能被定格為最強MIPS處理器。在失去龍芯這個玩家,MIPS投奔RISC-V后,MIPS也將成為歷史。LoongArch是獨立生態(tài)的基本點,3A5000則是龍芯開啟LoongArch新征程的里程碑。