在2015年12月的Nature網(wǎng)站上,由U.C. Berkeley等幾個(gè)大學(xué)的研究人員主導(dǎo)的一個(gè)開(kāi)發(fā)團(tuán)隊(duì)發(fā)表了一篇文章。文章中研究人員用標(biāo)準(zhǔn)的CMOS工藝制造了同時(shí)集成了RISC-V指令集的CPU和片上光通信器件的微芯片。這或許標(biāo)志著不久的未來(lái)微電子芯片的接口速率將會(huì)大幅的提高,不再受到原先電接口IO的速率限制。不過(guò)本篇文章要關(guān)注的,則是在這顆實(shí)驗(yàn)性的芯片上集成的另外一個(gè)主角,“RISC-V”(發(fā)音risk-five)。
1、CPU指令集(ISA)軟件和硬件之間溝通的橋梁
指令集(ISA)通俗地講可以理解為一臺(tái)機(jī)器(計(jì)算機(jī)中的CPU)可以執(zhí)行的“指令”集合,通過(guò)這些“指令”能夠?qū)崿F(xiàn)諸如加減乘除這樣的運(yùn)算,以及接收外部輸入(比如鍵盤(pán))和控制外部輸出(如顯示器)這樣的功能。
指令集也可以理解為軟件和硬件之間溝通的橋梁,不同的廠家可能會(huì)用不同的方法來(lái)實(shí)現(xiàn)相同的指令集,從而讓遵循相同指令集的軟件可以無(wú)需修改即可運(yùn)行。比如我們熟知的Intel和AMD都實(shí)現(xiàn)了x86指令集,這基本上統(tǒng)治了PC的市場(chǎng)。而出現(xiàn)較晚的ARM指令集則基本占領(lǐng)了移動(dòng)端處理器的大部分市場(chǎng)。
2、RISC指令集的發(fā)展歷史1980年Berkeley主導(dǎo)了RISC
了解了什么是指令集接下來(lái)還是讓我們來(lái)聊聊RISC的發(fā)展歷史。早期的微處理器大部分為復(fù)雜指令集(CISC)架構(gòu),即設(shè)計(jì)盡可能復(fù)雜的指令來(lái)完成任務(wù) ,原因之一是當(dāng)時(shí)的編譯技術(shù)并不發(fā)達(dá)。而隨著編譯器技術(shù)以及其他技術(shù)的發(fā)展,研究人員漸漸發(fā)現(xiàn)多數(shù)的復(fù)雜指令只在很少的時(shí)候被用到,而且復(fù)雜的指令限制了處理器速度的進(jìn)一步提高。精簡(jiǎn)指令集(RISC)技術(shù)應(yīng)運(yùn)而生,IBM 801可能是第一個(gè)用精簡(jiǎn)指令集的理念來(lái)設(shè)計(jì)的系統(tǒng),并發(fā)展成為了今天的Power架構(gòu)。1980年左右Berkeley的Dave Patterson主導(dǎo)了Berkeley RISC項(xiàng)目并設(shè)計(jì)了其第一代的處理器RISC I,這就是RISC這個(gè)名稱(chēng)的由來(lái)。Sun Microsystem(現(xiàn)在的Oracle)的SPARC處理器架構(gòu)也有很多Berkeley RISC影子在里面。差不多同時(shí),斯坦福的教授John Hennessy(現(xiàn)在已經(jīng)是斯坦福校長(zhǎng))和他的團(tuán)隊(duì)也從課程設(shè)計(jì)出發(fā)設(shè)計(jì)了MIPS處理器的早期雛形,并最終孵化為MIPS Technologies. Inc公司,后來(lái)被 Imagination Technologies收購(gòu)。我們能在很多家用路由器里見(jiàn)到他的影子。而ARM,迄今為止發(fā)展的最好的RISC指令集,已經(jīng)無(wú)處不在。
時(shí)間到了2010年,當(dāng)Berkeley的Krste Asanovic教授想要為接下來(lái)的一系列項(xiàng)目選擇一個(gè)微處理器指令集時(shí),他找不到一個(gè)合適的。Intel的X86是CISC指令集,過(guò)于復(fù)雜和龐大,而且存在專(zhuān)利問(wèn)題。而ARM除了專(zhuān)利問(wèn)題外,若想自行設(shè)計(jì)基于ARM指令集的處理器,需要非常昂貴的License。OpenRISC作為一個(gè)開(kāi)源的指令集架構(gòu),其許可證為GPL,這意味著所有的指令集改動(dòng)都必須開(kāi)源。而且,OpenRISC發(fā)展緩慢,設(shè)計(jì)過(guò)于老舊,64位架構(gòu)也不成熟。
?
Krste Asanovic教授 (http://www.eecs.berkeley.edu/~krste/)
3、RISC-V指令集的誕生“V”也表示變化(variation)和向量(vectors)
這一切都與Berkeley追求“開(kāi)放“的精神格格不入,要知道從Unix/BSD操作系統(tǒng)到現(xiàn)今在大數(shù)據(jù)領(lǐng)域流行的Spark框架,他們都是用一個(gè)非常寬松的名為BSD License的許可證的發(fā)布的。這個(gè)License簡(jiǎn)言之就是我發(fā)布的代碼你想怎么用怎么用,不用交錢(qián),改了也不用開(kāi)源,只要最終致謝作者即可。蘋(píng)果的OSX是基于BSD Unix的,而微軟 Windows中也包含修改過(guò)的BSD Unix代碼。
所以Krste教授決定帶領(lǐng)團(tuán)隊(duì)重新開(kāi)發(fā)一個(gè)完全開(kāi)放的、標(biāo)準(zhǔn)的、能夠支持各種應(yīng)用的新指令集,他也得到了RISC的發(fā)明者之一,Dave Patterson教授的大力支持。從2010年夏天開(kāi)始,大約花了四年的時(shí)間,這個(gè)團(tuán)隊(duì)設(shè)計(jì)和開(kāi)發(fā)了一套完整的新的指令集,同時(shí)也包含了移植好的編譯器、工具鏈、仿真器,并經(jīng)過(guò)數(shù)次流片驗(yàn)證。為了能夠加快開(kāi)發(fā)的效率,以便能夠快速的評(píng)估和修改設(shè)計(jì)以及提高可復(fù)用性,Chisel作為一種新的硬件構(gòu)建語(yǔ)言也被開(kāi)發(fā)了出來(lái)。簡(jiǎn)言之,你可以用scala這種函數(shù)式編程語(yǔ)言去設(shè)計(jì)硬件,并最終能夠生成傳統(tǒng)的Verilog HDL用于ASIC/FPGA,或者生成C++用于仿真。
這個(gè)新的指令集叫做RISC-V,“V”包含兩層意思,一是這是Berkeley從RISC I開(kāi)始設(shè)計(jì)的第五代指令集架構(gòu),二是它代表了變化(variation)和向量(vectors)。
4、RISC-V指令集的發(fā)展獲Google、HP、Oracle、WD支持
RISC-V包含一個(gè)非常小的基礎(chǔ)指令集和一系列可選的擴(kuò)展指令集。最基礎(chǔ)的指令集只包含40條指令,通過(guò)擴(kuò)展還支持64位和128位的運(yùn)算以及變長(zhǎng)指令,其他以完成的擴(kuò)展包括了乘除運(yùn)算、原子操作、浮點(diǎn)運(yùn)算等,正在開(kāi)發(fā)中的指令集還包括壓縮指令、位運(yùn)算、事務(wù)存儲(chǔ)、矢量計(jì)算等。 指令集的開(kāi)發(fā)也遵循開(kāi)源軟件的開(kāi)發(fā)方式,即由核心開(kāi)發(fā)人員和開(kāi)源社區(qū)共同完成。
通過(guò)這一系列的指令集擴(kuò)展,你幾乎可以構(gòu)建適用于任何一個(gè)領(lǐng)域的微處理器,比如云計(jì)算、存儲(chǔ)、并行計(jì)算、虛擬化/容器、MCU、應(yīng)用處理器、DSP處理器等等。從2015年開(kāi)始,每半年一次Workshop上已經(jīng)能夠看到很多有意義的項(xiàng)目。Berkeley自己開(kāi)發(fā)了多款開(kāi)源的處理器,可以覆蓋從高性能計(jì)算到嵌入式等應(yīng)用領(lǐng)域,并孵化出了初創(chuàng)公司SiFive并獲得了風(fēng)投。lowRISC是一個(gè)非營(yíng)利性組織,主導(dǎo)者是風(fēng)靡世界的開(kāi)源硬件樹(shù)莓派(Raspberry Pi)的創(chuàng)始人之一,lowRISC正在基于RISC-V開(kāi)發(fā)一款真正的開(kāi)源處理器芯片,希望以其來(lái)代替目前樹(shù)莓派上的由博通開(kāi)發(fā)的非開(kāi)源處理器。Gary Research在FPGA中放入了400個(gè)定制的RISC-V處理器并用片上網(wǎng)絡(luò)(NOC)連接在一起用來(lái)實(shí)現(xiàn)并行計(jì)算,未來(lái)有可能會(huì)被用到微軟的云計(jì)算平臺(tái)中,例如給Bing這樣的搜索引擎加速。
2016年初的Workshop上,RISC-V基金會(huì)成立,成員中包括了Google、惠普、Oracle、西部數(shù)據(jù)等硅谷巨頭,未來(lái)這些大公司非常有可能會(huì)將RISC-V運(yùn)用到他們自己的云計(jì)算設(shè)施或者智能手機(jī)芯片 中,以擺脫對(duì)X86的依賴(lài)或是減少昂貴的ARM指令集授權(quán)費(fèi)用。
5、RISC-V指令集的優(yōu)勢(shì)開(kāi)放源代碼是不可以逆轉(zhuǎn)的趨勢(shì)
可以說(shuō),RISC-V指令集是一個(gè)“活”的、現(xiàn)代的、沒(méi)有專(zhuān)利問(wèn)題和沒(méi)有歷史包袱的全新指令集,并且以BSD許可證發(fā)布。任何公司都可以在自己的產(chǎn)品中免費(fèi)使用,而修改也無(wú)需再開(kāi)源。和成就了ARM的授權(quán)模式相比,RISC-V不僅能讓公司收益,也能夠讓大學(xué)和研究機(jī)構(gòu)更好地研究新的處理器技術(shù)和架構(gòu)。要知道,一個(gè)ARM指令集架構(gòu)的許可證可能要上千萬(wàn)美元。
RISC-V能夠發(fā)展至今筆者認(rèn)為并非偶然。首先,指令集的開(kāi)發(fā)需要非常專(zhuān)業(yè)的團(tuán)隊(duì)和數(shù)年的時(shí)間,這對(duì)于商業(yè)公司來(lái)說(shuō)是很困難的,而一流大學(xué)的一流團(tuán)隊(duì)恰恰能滿(mǎn)足這樣的條件。其次,編譯器和FPGA等相關(guān)的技術(shù)在近十年來(lái)的蓬勃發(fā)展顯著地降低了新指令集開(kāi)發(fā)和驗(yàn)證的難度。再次,指令集通過(guò)幾十年的發(fā)展,不論是工業(yè)界還是學(xué)術(shù)界都已經(jīng)研究的非常透徹,很多設(shè)計(jì)上的技術(shù)選擇已經(jīng)有了現(xiàn)成的答案。最后,OpenRISC作為一個(gè)較為成功的開(kāi)源指令集項(xiàng)目也有很多可以學(xué)習(xí)的經(jīng)驗(yàn),使得專(zhuān)業(yè)團(tuán)隊(duì)+技術(shù)社區(qū)這樣的開(kāi)發(fā)模式能夠運(yùn)作的更好。
從過(guò)去的十幾年我們能夠看到的改變是,開(kāi)放源代碼作為一個(gè)不可以逆轉(zhuǎn)的趨勢(shì),創(chuàng)造了新的商業(yè)模式,提高了效率也降低了成本。我們能夠看到,很多個(gè)成功的商業(yè)產(chǎn)品都能夠找到與之相匹敵的開(kāi)源替代,而幾乎所有的技術(shù)變革中我們都能夠看到開(kāi)放源代碼的影子。從云計(jì)算、大數(shù)據(jù)到近幾年很火的容器技術(shù),開(kāi)源已經(jīng)無(wú)處不在。再看看硬件領(lǐng)域,像樹(shù)莓派和Arduino這樣在“板級(jí)層面”的開(kāi)源硬件已經(jīng)顯著降低了開(kāi)發(fā)者的門(mén)檻并讓越來(lái)越多的人參與其中。而在集成電路行業(yè),摩爾定律的終結(jié)和人們需求的更加多元化也會(huì)使FPGA和ASIC在很多領(lǐng)域 在成本曲線上出現(xiàn)交叉點(diǎn),而這也將極大的推動(dòng)開(kāi)源硬件在芯片領(lǐng)域的蓬勃發(fā)展。
6、RISC-V指令集的未來(lái)物聯(lián)網(wǎng)、移動(dòng)計(jì)算、人工智能
當(dāng)面對(duì)一個(gè)新的指令集時(shí),一個(gè)最常見(jiàn)的顧慮是現(xiàn)有的優(yōu)質(zhì)軟件在新指令集的平臺(tái)上的移植問(wèn)題。Wintel聯(lián)盟在過(guò)去十多年來(lái)正是靠著“向后兼容”而成功。每一代的Intel X86處理器都兼容過(guò)去所有的指令,而每一代的新Windows操作系統(tǒng)都基本上兼容過(guò)去版本的軟件。但現(xiàn)在,用戶(hù)并不需要過(guò)于擔(dān)心可移植問(wèn)題。首先,開(kāi)源軟件在這十幾年的飛速發(fā)展,已經(jīng)能夠讓我們?cè)诤芏囝I(lǐng)域無(wú)需過(guò)多擔(dān)心軟件移植的問(wèn)題。比如在服務(wù)器領(lǐng)域,大部分軟件完全開(kāi)源,而應(yīng)用多用腳本語(yǔ)言寫(xiě)成,可移植性非常好。其次,很多人或許并不知道,ARM也并不是一個(gè)完全向后兼容的指令集,為了能讓ARM CPU運(yùn)行在不同行業(yè)的應(yīng)用中 ,向后兼容帶來(lái)的包袱遠(yuǎn)大于其優(yōu)勢(shì),這對(duì)RISC-V來(lái)說(shuō)也是一樣。最后,總的發(fā)展的趨勢(shì)是,不論是物聯(lián)網(wǎng)、移動(dòng)計(jì)算、網(wǎng)絡(luò)服務(wù)還是人工智能,我們都需要成本更低、靈活性更高和可定制性更強(qiáng)的處理器。而“向后兼容”的重要性會(huì)越來(lái)越小,并將最終成為過(guò)去。
最近全球半導(dǎo)體聯(lián)盟(GSA)在一篇報(bào)告中大膽的提出這樣的問(wèn)題:“RISC-V會(huì)是開(kāi)源領(lǐng)域的下一個(gè)Linux嗎?”,“半導(dǎo)體行業(yè)是開(kāi)放源代碼最后一塊沒(méi)有攻克的陣地嗎?”。相比十幾年前開(kāi)源軟件發(fā)展的初期階段,如今開(kāi)源硬件的發(fā)展和當(dāng)時(shí)是如此相像。筆者相信,隨著RISC-V的成熟和更多的大公司加入,它非常有希望去挑戰(zhàn)Intel x86和ARM對(duì)市場(chǎng)的統(tǒng)治,從云計(jì)算到物聯(lián)網(wǎng),成為當(dāng)今這個(gè)互聯(lián)網(wǎng)世界的最基本的和不可或缺的“輪子”之一。
關(guān)于作者:
郭雄飛,目前在景略半導(dǎo)體任嵌入式系統(tǒng)設(shè)計(jì)經(jīng)理。開(kāi)源軟件和開(kāi)源硬件愛(ài)好者。
評(píng)論
查看更多