現代信息技術的應用都是以計算機為基礎,CPU是計算機中的信息處理中樞。CPU指令集是CPU邏輯電路與操作系統和應用程序交流信息時,對詞匯和語義的精確約定,決定了操作系統和應用軟件能否與CPU兼容,CPU的硬件接口規范又決定了各種核心硬件能否匹配。因此CPU與其它硬件的根本區別,不僅在于技術難度,更在于它是一切軟硬件和應用生根的土壤。能夠在某種指令集的CPU上運行的軟件的集合,稱為這種指令集的軟件生態,能夠與某種CPU配套的各種硬件,則是這種CPU的硬件生態。
當前最流行的幾種CPU指令集,都被半導體技術領先的美國直接和間接掌控。經過數十年的發展,在其強大的半導體工業基礎,和深厚的人才及技術儲備的支撐下,美國的通用CPU不但性能超群絕倫,更是通過與同樣在它掌控下的操作系統結合,積累了完善的軟硬件生態。目前在桌面電腦和服務器上使用得最多的CPU產品都來自Intel和AMD,在移動設備中使用最多的則是來自ARM。X86/AMD64指令集與Windows系統的組合,為計算機在各個行業中的應用普及做出了巨大的貢獻,ARM指令集與Android的組合,也加速了智能手機的推廣和應用。同時,它們也為了攫取了整個行業中最大的利潤,而一直在爭取并已經成功實現了對行業的霸權,因此有能力掌控世界任何國家信息技術產業的興衰,決斷產業鏈中任何下游企業的生死。
1985年時,Intel挾著它推動通過的《半導體保護法》割起了韭菜,收回了對日本企業的x86指令集授權,使日本企業對x86 CPU進行的一切推廣和改進都付諸東流,對x86生態的貢獻反而成為了打擊日本自主CPU的武器。同時美國政府也對日本半導體行業實施打壓,使日本的半導體行業一落千丈。因為日本企業并沒有對x86指令集的主導權,包括配套的硬件也只能按照Intel的標準設計和生產,一旦失去了與x86兼容的許可,就只能任由美國政府和Intel宰割。不只是對國外,Intel對美國國內的企業也一視同仁,同樣在1985年,Intel嘗試收回對AMD的x86指令集授權,然后打了許多年官司,AMD才保住了授權。但擁有x86授權的其它企業沒有這么幸運,即使扛過了官司,也沒能抵擋住Intel的其它手段。即便是AMD也仍然時不時地被Intel借著各種專利問題敲打,直到它抓住了CPU從32位發展到64位的時機,自主設計了兼容x86的AMD64指令集并得到市場認可,才獲得了主動權。AMD通過與Intel完成各種交叉授權,擁有了平起平坐的地位,從此與Intel的競爭只是CPU性能上的競爭,擺脫了被狹制的命運。
2000年左右,我國臺灣的VIA意氣風發,它的主板芯片組全球市場占有率超過了50%,于是通過收購奄奄一息的Cyrix和Centaur獲得了x86指令集授權,開始進軍CPU市場。兼容x86指令集可以依附現成的x86生態,不存在市場壁壘,但它的美國子公司Centaur設計的CPU性能一直不高,VIA只能依靠管腳兼容與Intel中低端CPU競爭。Intel也沒有忘記時不時地敲打VIA一番,在2010年時VIA使出渾身解數,才爭取到Intel把x86指令集和相關專利授權延期到了2018年。然而Intel也給VIA作出了兩條要命的限制,一是不再授權VIA設計和生產與Intel CPU兼容的主板芯片組,二是不允許VIA的CPU與Intel的CPU管腳兼容,也就是不再可以與Intel的CPU原位替換。因此VIA失去了最核心的主板芯片組和集成GPU業務,CPU也迅速從市場消失,經營陷入困境,連帶整個臺灣的半導體行業都遭受巨大損失。
2008年Google發布了Android 1.0系統,只支持ARM指令集。短短幾年時間,ARM和Android的組合就占據了智能手機市場的絕對份額,而Intel和微軟都無力阻止這一切的發生,究其原因,只是因為ARM和Android是自己創造了一個體系,能夠完全自主。ARM和Android不依附x86和Windows的原有生態,Intel和微軟也因此沒有能力控制這個新興產業。當ARM和Android主導了整個移動通信行業后,它們也同樣不會放棄對整個行業的霸權。凡是想要背離它們的,以及對美國利益造成影響的,都會受到它們致命的打擊。如果沒有國家的斡旋,近幾年已有多家知名半導體企業慘遭毒手。
自1949年開始,發達國家就持續對我國境內禁運高等級的技術和產品,但仍然不能阻止我國在各個領域都取得巨大成就。近幾年我國各方面的國際競爭力都迅速提升,以美國為首的部分國家也就不再維持表面的友好。信息技術產業作為現代化的基礎,也一直在承受著充滿敵意的各種試探。為了應對可能出現的危機,我國也一直在探索信息技術產業自主的方法。CPU以及配套的軟硬件生態自主是信息技術產業自主的基礎,從20年前開始,龍芯和申威等陸續開始了自主通用CPU的設計。
龍芯在2001年起步時,主要目標是在CPU核心技術禁運的條件下,解決通用CPU從無到有的問題,同時兼顧自主發展軟硬件生態的權力,于是選擇了兼容MIPS指令集。MIPS公司自己不生產和銷售CPU,就不會像Intel那樣既當裁判長又當運動員。MIPS還允許自行擴展指令集,這樣就可以在保障獲得基礎生態的同時,還能建立具有自我保護能力的自主生態,避免被國外的MIPS兼容CPU輕易取代。申威選擇的路線更加極端,它在吸收了Alpha指令集的優點后,自主設計了SW64指令集用于超算CPU,暫時避開了缺少軟硬件生態的難題,但從超算回歸桌面也仍然需要把自主生態之路重走一遍。國內也有一些公司選擇了與x86或ARM兼容的路線,比如與VIA合資得到Intel截至2018的指令集使用權,比如購買ARMv8指令集的授權。它們依附于主流生態,降低了開發和布署成本,合作者也可以隨時換成國外同類的CPU產品降低項目風險。這樣的策略降低了CPU產品銷售難度,同時也被套上了沉重的鎖鏈。因為產品的性能難以達到主流水平,指令集的主導者又從不放松管控,它們更難發展出自主并且可控的生態。又因為它們可以隨時被進口的同類產品取代,所以在產業鏈上的所有努力和成果,都可能會重復當年日本的x86 CPU和Intel的故事。何況主流指令集在不斷發展,除非能夠一直跟進x86和ARM的最新版本,否則若干年后就必然會失去對生態的兼容性,然后被主流市場拒絕,如果不改變思路,那就沒有未來。
龍芯在自主設計的CPU達到可實用的水平后,十多年來圍繞自主生態建設開展了大量卓有成效的工作。比如積極參與CPU配套的產業鏈建設,協助設計和推廣各種成套的軟硬件方案。比如在與整機商的合作中盡可能使用國產硬件,與其它自主硬件都有良好的合作。比如推動在中小學的計算機教育中使用Linux系統和自主CPU,與高校合作培養和挖掘在CPU設計方面的人才。為了建設軟件生態,龍芯完成了系統軟件和大量基礎庫的開發和移植,例如為了使大量JAVA應用能在龍芯CPU上正常運行,而開發了龍芯平臺上的JAVA虛擬機,因此對OpenJDK的貢獻在2019和2020都居世界前列。對.net core和瀏覽器的移植和優化,也同樣解決了大量應用軟件環境依賴的問題。對ffmpeg和UE4的移植和優化,也為龍芯CPU在影視和娛樂方面的應用做好了準備。
十幾年間龍芯在CPU和應用結合的實踐工作中,對永久授權的MIPS指令集進行了大量擴展,形成了自主的LoongISA指令集。LoongISA補充了MIPS自身的不足,使它更能適應現代的CPU技術和理論,延長了這一指令集的生命周期。但在長期的實踐中,也逐漸發現了一些問題,這些問題與更高層次的自主和可控產生了矛盾。最嚴重的沖突是龍芯自主發展的LoongISA指令集不能授權給其它企業,因為龍芯對MIPS指令集只能使用和擴展,像AMD/VIA那樣只能對第三方授權IP(設計好的CPU核心),而無權授權指令集。建設自主軟件生態不是龍芯一家公司可以獨立完成的任務,無論x86還是MIPS以及ARM的擴張方式,都是授權給其它IC企業一起開發產品,共同建設軟硬件生態,龍芯如果繼續使用MIPS,這條路就走不通。其次就是技術沖突,CPU技術一直在發展,指令集也必須與時俱進,MIPS在設計時的歷史局限性,造成了許多歷史負擔,但MIPS的授權不允許對基礎指令大刀闊斧地修剪,龍芯對指令集的許多研究成果無法在MIPS上實現。盡管MIPS在與x86的戰爭中衰敗流亡,但美國仍然一直阻止中資收購MIPS,盡管龍芯已經成為MIPS桌面和服務器生態的實際領導者,MIPS也仍然能干擾和限制龍芯在技術和商業上的發展。另外近幾年國際上的一些情況,也使龍芯認識到指令集的永久授權也有不可控的風險,美國隨時制造一個借口就可能單方取消授權,任何商業合同都會把“國家政策”寫進“不可抗力”的條款。于是在約兩年前,龍芯決定設計完全自主的指令集LoongArch,在LoongArch相關消息透露并確認之后不過幾個月,擁有MIPS版權的WaveComputing就宣布了破產重組。
龍芯為了實踐和推廣自己十多年的研究成果,實現更高層次的自主和可控,放棄了以MIPS為基礎的發展路線,于今年4月15日正式發布了完全自主的LoongArch指令集。龍芯的研究人員把他們對CPU指令集的研究和理解,具現成了可以應用和傳播的“知識”,創新設計了既適合現代CPU技術和理論,又能兼顧以后繼續擴展的自主指令集,還能通過與系統軟件結合,以二進制翻譯的方式兼容其它指令集的軟件生態。Intel也曾經為了擺脫x86指令集設計上的歷史包袱,重新設計了更先進的Itanium指令集,但它自己也無法取代自己的x86,龍芯又怎樣保證一定能夠成功呢?因為x86的生態體系十分龐大,指令集的過渡需要漫長的時間,所以在AMD等還在一旁虎視眈眈的時候,Intel無法做到為了推廣Itanium而停止銷售自己的x86產品。龍芯卻沒有同樣的負擔,龍芯CPU的生態足夠獨立,無論軟件還是硬件產業鏈都自成一體。首款使用LoongArch指令集的CPU產品3A5000與新款3A4000管腳兼容,合作企業在硬件方面的改換成本也可以降至最低。在軟件方面,龍芯使用的Linux內核是由龍芯自己維護,各種基礎庫也都由龍芯自己負責,生態系統中主要的軟件開發商都與龍芯有深度的合作關系,可以迅速地完成對指令集的改換。LoongArch還實現了對原MIPS應用程序高效的二進制翻譯,即使部分應用軟件不能及時跟進,也仍然能高效地正常運行,不會因指令集改變而產生困擾。龍芯與Apple進行過的兩次改變指令集的方式相似,都是在軟硬件可控的前提下,輔以二進制翻譯避免軟件生態真空。Apple的產品向來以整機方式發售,為了防止軟件生態被對手侵蝕和利用,牢牢地把持了自己的操作系統,第二次改變指令集時CPU也自主設計,加強了CPU與應用的結合,更加自主和可控。Apple模式一直是龍芯研究和學習的對象,但因產品和目標與Apple不同,龍芯的方略和Apple有顯著的區別。龍芯的主要產品是CPU,目標是促進整個信息技術產業的自主和可控,因此它需要在自主的前提下盡可能開放,必須與數量龐大的合作者共同建立自主產業鏈,推動自主的信息技術產業健康發展。
龍芯為了推廣LoongArch指令集,加速LoongArch生態的建設,而計劃建立自主指令集聯盟,聯盟成員都可以免費獲得自主指令集的使用權。今年將與10所高校合作,圍繞自主指令集進行教學和研究,以及基于精簡版本的指令集開展CPU設計實驗。龍芯還計劃向聯盟成員開源部分CPU核心設計,這些核心的最高性能達到ARM A53的水平,這比只開放指令集的RISC-V更有魄力。這些舉動將有助于增強國內整體的CPU設計水平,降低芯片行業的產品研發成本,提高生存和參與國際競爭的能力。龍芯自己維護了Linux內核的龍芯分支,以及大量基礎庫和開源軟件,并歡迎任何開發者參與開發和優化。龍芯給各種Linux發行版提供一致的內核,以保證各種發行版與龍芯的CPU有最佳的兼容性,并在使用龍芯CPU的電腦上有幾乎同等的性能表現,但龍芯本身并不參與國產操作系統的競爭。龍芯為軟件開發人員編寫了大量教材,以及開展各種專題講座,降低了在龍芯電腦上開發和移植軟件的成本,保持和提高軟件行業自主創新的主動性。龍芯向各個硬件合作企業提供CPU和芯片組產品,以及主板設計方案,但本身并不生產和銷售主板,更加不會像Apple那樣成為整機商,以保證產業鏈中各級企業的利益不會被侵犯。對于各種嵌入式應用,龍芯還提供了大量成套的設計方案,和豐富的技術支持,既有利于推廣龍芯產品,也能縮減合作企業的研發成本。龍芯在重點地區興建了不少產業園,有利于產業鏈企業區域化集中,降低物流及各企業協作成本,縮短新品研發的周期。龍芯為了信息技術產業的自主已經做了許多工作和準備,相信在眾多企業的共同努力下一定能有所作為。
目前龍芯的自主生態正在循序漸進地發展,最大的困難仍然是如何切入主流市場。不只是龍芯,我國信息技術產業的各種基礎軟硬件都面對同樣的難題。沒有足夠的市場,各種技術產品都難以迭代更新,產品性能不足,成熟度不夠,用戶不選擇,就無法代替國外的同類產品,也就談不上信息技術自主和可控。
近幾年美國對我國信息技術產業的干涉越來越嚴重,國家也迫切需要使用國產的軟硬件保障信息安全,為了催化國產軟硬件發展,縮短自主信息技術產業成熟的時間,而在關系到國計民生的行業中大力推廣應用國產的軟硬件,生生地創造了一個市場。在這個市場中各種自主軟硬件初期的價格會比較偏高,因為各個企業都需要在產品單價上均攤研發成本。不過對于國家來說,只要資金是在國內的單位和企業間流動,就只是把錢從左兜放到右兜,始終還在自己身上。國家不但沒有損失,還能催生出各種技術創新,培養一批優秀企業,有利于人民。當然這個特殊市場也不會長期存在,也就保持一兩年的時間快速增長,只有優秀的軟硬件產品才能獲得足夠的機會,用出貨量攤薄成本,用更易被接受的性價比加速推廣。在這個市場出現之前,龍芯就一直致力于產業鏈的培養,與眾多企業有深入的合作。與其它依附于x86和ARM生態的國產CPU相比,在使用國產Linux系統的條件下,龍芯在辦公和行業應用方面的軟件生態反而更加豐富,以至于有企業把從龍芯平臺移植軟件到其它平臺的技術作為“重大成果”,委實可笑。
隨著用戶規模擴大,應用領域不斷擴展,基于LoongArch指令集的自主生態也能得到快速完善,將能滿足大多數普通用戶的需求。隨著出貨量增加,龍芯產業鏈中各個企業的生產和研發成本也能攤薄,促使整機價格降低到普通消費者可接受的水平。龍芯CPU的性能現在已邁入主流的門檻,一兩年后的3A6000應能接近市場中高端桌面CPU產品的水準。綜合這些條件之后,龍芯才能保證進入大眾消費市場后具有較高水平的競爭力,在爭奪Intel/AMD桌面CPU固有市場的戰爭才能更加順利。
龍芯一直保持技術自主、生態自主,就是為了進入大眾消費市場后,避免被國外企業牽制。LoongArch指令集是龍芯自主設計,已經通過了嚴謹的知識產權調查證實不存在侵權的成分。龍芯的CPU是自主設計,不依賴其它企業的技術授權。LoongArch的軟硬件生態體系是自主建設,具有很高的可控性。龍芯不屬于x86/ARM生態的一部分,Intel/ARM等也就無法在它們的絕對領域內操控龍芯,相反LoongArch既獨立自主又有包容并蓄的特性,可以通過二進制翻譯對x86/ARM的軟件生態進行吞并。
LoongArch中包含的二進制翻譯技術與眾不同,它的目標是消除指令集壁壘,完成生態融合。龍芯的二進制翻譯無論是技術路線還是商業路線,在歷史上都沒有出現過相同的考量。例如全美達的二進制翻譯,為了兼容x86而完全放棄了自立的能力,只能寄生于x86生態是它敗亡的重要原因。APPLE和微軟的二進制翻譯都只為轉移自有軟件,是一種消極的方案。龍芯的二進制翻譯則具有進攻的能力,它是一種軟硬件協同的翻譯技術。基本原理是在CPU中以硬件實現各種指令集的共性,同時也對各流行指令集差異化特征進行針對性的硬件支持,然后通過系統軟件的控制,實現同時運行多種指令集的應用程序。LoongArch指令集在功能上可以說是各種流行指令集的并集,軟硬協同的二進制翻譯在理論上能接近純硬件翻譯的效率,同時又具有軟件翻譯的靈活性和擴展能力,既能運行各種主流指令集的應用程序,又保證了以自己的軟件生態為主體。LoongArch具有收割其它指令集軟件生態的能力,雖然在誕生之初還不能完全做到這一點,但隨著軟硬件協同中的軟件部分逐漸完善,達成這個目標只是時間上的問題。
當龍芯的二進制翻譯技術成熟時,不只是在消費市場大有可為,在云服務器方面也能表現出很大的優點。在一臺服務器上可以同時運行各種指令集甚至各種操作系統的應用程序,而性能又沒有明顯的降低,用戶可以在服務器的軟件環境搭建方面有更加靈活的組合。有些公司的業務服務器存在多種系統和架構的組合,往后可能就只需要龍芯服務器這一種架構,甚至把原本多個服務器上的應用都放在龍芯服務器上,可以大幅降低使用成本和管理維護的難度。對于軟件開發者而言,特別是跨平臺的軟件項目,在基于龍芯LoongArch的CPU上進行開發和測試,也可以減少許多負擔。利益于國產系統的廣泛使用,龍芯的軟件生態也將在LoongArch發布后得到爆發式的增長。
龍芯對產業鏈和自主生態建設已經有了豐碩的成果,對未來的發展也有成熟的思路及計劃,用自主的LoongArch指令集奠定了堅實的基礎。只要與眾多合作企業攜手并進,向著信息技術產業自主和可控的目標堅定前進,目標就一定能夠達成。
「 支持烏有之鄉!」
您的打賞將用于網站日常運行與維護。
幫助我們辦好網站,宣傳紅色文化!