進入 32 位時代,誰能成為下一個8051?
RISC-V架構在極短的時間內便引起了業界的高度關注,從眾多反應快速的小公司到實力雄厚的巨頭公司(如NVIDIA、西部資料等)均開始使用RISC-V架構開發產品。“舊時王謝堂前燕,飛入尋常百姓家”,在摩爾定律逐步逼近極限的今天,開放的RISC-V架構的誕生,催生出了一輪新的CPU創新熱潮。
RISC-V在全世界範圍內的興起與風靡,在國內也引起了廣泛的關注,當前國內的眾多院校與公司都開始研究並使用RISC-V架構,將其用於學術或者工程專案中。尤其是在深嵌入式領域,無論是硬體處理器核,還是軟體工具鏈,RISC-V架構處理器已經具備了替代傳統商用深嵌入式處理器(譬如ARM Cortex-M處理器)的能力。但是由於RISC-V誕生時間太短,在很多方面亟需系統而翔實的中文資料來幫助初學者快速掌握這一門新興的處理器架構。今天的介紹的《RISC-V架構與嵌入式開發快速入門》是一本介紹RISC-V架構嵌入式開發的入門書籍。
本書的姊妹版《手把手教你設計CPU——RISC-V處理器篇》已經出版,提供了一個非常高效的超低功耗開源RISC-V處理器學習案例——蜂鳥E203,並對其進行了全方面剖析和講解,解決了在CPU硬體設計方面中文資料欠缺的問題。
但是,有關RISC-V嵌入式軟體開發方面的中文資料仍然欠缺,體現在如下方面。
-
目前的RISC-V文件是英文原版的指令集手冊,雖然此文件非常精簡短小,但是該文件比較專業,處理器架構研究不深的讀者難以理解。因此,學習者最好有對RISC-V指令集架構介紹的中文資料。
-
對於RISC-V的軟體開發工具鏈,包括嵌入式和Windows軟體開發工具的下載和使用方法、簡單嵌入式開發平臺的搭建等,也沒有很好的中文資料系統介紹。
-
對於RISC-V的組合語言開發、典型的RISC-V嵌入式開發平臺和環境的使用、典型示例程式等,也沒有很好的中文資料系統介紹。
綜上,雖然部分專業人士已經能夠嫻熟地使用RISC-V進行嵌入式開發,但是初學者卻無從下手。為了促進RISC-V在國內的普及,尤其是被廣大初學者接受和快速入門,本書將分享和總結一些使用RISC-V進行嵌入式開發的相關技術和經驗,主要面向對RISC-V感興趣的入門使用者,包括嵌入式軟體開發和硬體設計人員。
本文通過幾個輕鬆的話題,討論一下CPU的基本知識以及深嵌入式領域的趣事。
磨刀不誤砍柴工——CPU 基礎知識介紹
CPU,全稱為中央處理器單元,簡稱為處理器,是一個不算年輕的概念。早在20世紀60年代便已誕生了第一款CPU。
請注意區分“處理器”和“處理器核”,以及“CPU”和“Core”的概念。嚴格來說,“處理器核”和“Core”是指處理器內部最核心的部分,是真正的處理器核心;而“處理器”和“CPU”往往是一個完整的SoC,包含了處理器核心和其他的裝置或者儲存器。但是在現實中大多數文章往往不會嚴格地遵循兩者的差別,時常混用,因此讀者需要根據上下文自行甄別體會具體的含義。
經過幾十年的發展,到今天已經相繼誕生或消亡過了幾十種不同的CPU架構。表1-1為近幾十年來知名CPU架構的誕生時間表。什麼是CPU架構?下面讓我們來探討區分CPU的主要標準:CPU的靈魂—指令集架構(Instruction Set Architecture,ISA)。
表1-1 知名CPU架構的誕生時間表
1.1.1 ISA—CPU的靈魂
指令集,顧名思義是一組指令的集合,而指令是指處理器進行操作的最小單元(譬如加減乘除操作或者讀/寫儲存器資料)。
指令集架構,有時簡稱為“架構”或者稱為“處理器架構”。有了指令集架構,便可以使用不同的處理器硬體實現方案來設計不同效能的處理器。處理器的具體硬體實現方案稱為微架構(Microarchitecture)。雖然不同的微架構實現可能造成效能與成本的差異,但是,軟體無須做任何修改便可以完全執行在任何一款遵循同一指令集架構實現的處理器上。因此,指令集架構可以理解為一個抽象層,如圖1-1所示。該抽象層構成處理器底層硬體與運行於其上的軟體之間的橋樑與介面,也是現在計算機處理器中重要的一個抽象層。
圖1-1 指令集架構示意圖
為了讓軟體程式設計師能夠編寫底層的軟體,指令集架構不僅僅是一組指令的集合,它還要定義任何軟體程式設計師需要了解的硬體資訊,包括支援的資料型別、儲存器(Memory)、暫存器狀態、定址模式和儲存器模型等。如圖1-2所示,IBM 360指令集架構是第一個里程碑式的指令集架構,它第一次實現了軟體在不同IBM硬體機器上的可移植性。
圖1-2 IBM 360架構指令集圖卡
綜上可見,指令集架構才是區分不同CPU的主要標準,這也是Intel和AMD公司多年來分別推出了幾十款不同的CPU晶片產品的原因。雖然來自於兩個不同的公司,但是它們仍被統稱為x86架構CPU。
1.1.2 CISC與RISC
指令集架構主要分為複雜指令集(Complex Instruction Set Computer,CISC)和精簡指令集(Reduced Instruction Set Computer,RISC),兩者的主要區別如下。
-
CISC不僅包含了處理器常用的指令,還包含了許多不常用的特殊指令。其指令數目比較多,所以稱為複雜指令集。
-
RISC只包含處理器常用的指令,而對於不常用的操作,則通過執行多條常用指令的方式來達到同樣的效果。由於其指令數目比較精簡,所以稱為精簡指令集。
在CPU誕生的早期,CISC曾經是主流,因為其可以使用較少的指令完成更多的操作。但是隨著指令集的發展,越來越多的特殊指令被新增到CISC指令集中,CISC的諸多缺點開始顯現出來。譬如:
-
典型程式的運算過程中所使用到的80%指令,只佔所有指令型別的20%,也就是說,CISC指令集定義的指令,只有20%被經常使用到,而有80%則很少被用到。
-
那些很少被用到的特殊指令尤其讓CPU設計變得極為複雜,大大增加了硬體設計的時間成本與面積開銷。
基於以上原因,自從RISC誕生之後,基本上所有現代指令集架構都選擇使用RISC架構。
1.1.3 32位與64位架構
除了CISC與RISC之分,處理器指令集架構的位數也是一個重要的概念。通俗來講,處理器架構的位數是指通用暫存器的寬度,其決定了定址範圍的大小、資料運算能力的強弱。譬如32位架構的處理器,其通用暫存器的寬度為32位,能夠定址的範圍為232Byte,即4GB的定址空間,運算指令可以操作的運算元為32位。
注意:處理器指令集架構的寬度和指令的編碼長度無任何關係。並不是說64位架構的指令長度為64位(這是一個常見的誤區)。從理論上來講,指令本身的編碼長度越短越好,因為可以節省程式碼的儲存空間。因此即便在64位的架構中,也大量存在16位編碼的指令,且基本上很少出現過64位長的指令編碼。
綜上所述,在不考慮任何實際成本和實現技術的前提下,理論上來講:
-
通用暫存器的寬度,即指令集架構的位數越多越好,因為這樣可以帶來更大的定址範圍和更強的運算能力。
-
指令編碼的長度越短越好,因為這樣可以更加節省程式碼的儲存空間。常見的架構位數分為8位、16位、32位和64位。
-
早期的微控制器以8位和16位為主,譬如知名的8051微控制器是使用廣泛的8位架構。•目前主流的嵌入式微處理器均在向32位架構轉移。對此內容感興趣的讀者可以在網際網路上搜索作者曾在媒體上發表的文章《進入32位時代,誰能成為下一個8051》。
-
目前主流的移動手持、個人計算機和伺服器領域,均使用64位架構。
1.1.4 ISA眾生相
第1.1.1節中提到,經過幾十年的發展,全世界範圍內至今已經相繼誕生或消亡過了幾十種不同的指令集架構。下面將針對幾款比較知名的指令集架構加以論述。
注意:下列章節中列舉的資訊來自於本書成書時的公開資訊,非官方正式資訊,請讀者以最新官方資訊為準。
1.x86
x86是由Intel公司推出的一種複雜指令集(CISC),於1978年推出的Intel 8086處理器中首度出現,如圖1-3所示。8086在3年後為IBM所選用,之後Intel與微軟公司結成了所謂的Windows-Intel(Wintel)商業聯盟,壟斷了個人計算機(Personal Computer,PC)軟硬體平臺至今幾十年而獲得了豐厚的利潤。x86架構也因此幾乎成為了個人計算機的標準處理器架構,而Intel的廣告標誌更是深入人心,如圖1-4所示。
圖1-3 Intel 8086處理器
圖1-4 Intel Inside廣告標語
除Intel之外最成功的製造商之一為AMD。Intel與AMD公司是現今主要的x86處理器晶片提供商。其他公司也曾經制造過x86架構的處理器,包括Cyrix(為VIA所收購)、NEC、IBM、IDT以及Transmeta。
x86架構由Intel與AMD共同經過數代的發展,相繼從最初的16位架構發展到如今的64位架構。在x86架構剛誕生的時代,CISC還是業界主流,因此,x86架構是具有代表性的可變指令長度的CISC指令架構。雖然之後RISC已經取代CISC成為現代指令集架構的主流,但是,由於Intel公司的巨大成功以及為了維護軟體的向後相容性,x86作為一種CISC架構被一直保留下來。事實上,Intel公司通過內部“微碼化”的方法克服掉了CISC架構的部分缺點,加上Intel高超的CPU設計水平與工藝製造水平,使得x86處理器一直保持著旺盛的戰鬥力,不斷重新整理個人計算機處理器晶片效能的極限。所謂“微碼化”是指將複雜的CISC指令先用硬體解碼器翻譯成對應的內部簡單指令(微碼)序列,然後送給處理器流水線執行的方法,使得x86的處理器核也變成了一種RISC的形式,從而能夠借鑑RISC架構的優點。不過,額外的硬體解碼器同樣也會帶來額外的複雜度與面積開銷,這是x86架構作為一種CISC架構不得不付出的代價。
x86架構不僅在個人計算機領域取得了統治性的地位,還在伺服器市場取得了巨大成功。相比x86架構,IBM的Power架構和Sun的SPARC架構都曾有著很明顯的效能優勢,也曾佔據著相當可觀的伺服器市場。但是Intel採用僅提供處理器晶片而不直接生產伺服器的策略,利用廣大的第三方伺服器生產商,結合Wintel的強大軟硬體聯盟,成功地將從處理器晶片到伺服器系統一手包辦的IBM與Sun公司擊敗。至今x86架構佔據了超過90%的伺服器市場。
2.SPARC
1985年,Sun公司設計出SPARC指令集架構,全稱為“可擴充處理器架構(Scalable Processor ARChitecture,SPARC)”,是一種非常有代表性的高效能RISC架構。之後,Sun公司和TI公司合作開發了基於該架構的處理器晶片。SPARC處理器為Sun公司贏得了當時高階處理器市場的領先地位。1995年,Sun公司推出了UltraSPARC處理器,開始進入64位架構。SPARC架構設計的出發點是服務於工作站,它被應用在Sun、富士通等製造的大型伺服器上,如圖 1-5 所示。1989年SPARC還作為獨立的公司而成立,其目的是向外界推廣SPARC,以及為該架構進行相容性測試。Oracle收購Sun公司之後,SPARC架構歸Oracle所有。
由於SPARC架構是面向伺服器領域而設計的,其最大的特點是擁有一個大型的暫存器視窗,SPARC架構的處理器需要實現從72到640個之多的通用暫存器,每個暫存器寬度為64位,組成一系列的暫存器組,稱為暫存器視窗。這種暫存器視窗的架構由於可以切換不同的暫存器組快速地響應函式呼叫與返回,因此能夠帶來非常高的效能,但是這種架構由於功耗面積代價太大而並不適用於PC與嵌入式領域處理器。
圖1-5 基於SPARC架構的伺服器
前面提到了Sun公司在伺服器領域與Intel競爭逐漸落敗,因此,SPARC架構在伺服器領域的份額也逐步縮減。而SPARC架構又不適用於PC與嵌入式領域,使得其局面十分尷尬。
SPARC架構應用的另外一個比較知名的領域是航天領域。由於美國的航天星載系統中普遍使用的Power架構,歐洲太空局為了獨立發展自己的航天能力而選擇了開發基於SPARC架構的LEON處理器,並對其進行了抗輻射加固設計,使之能夠應用於航天環境中。
值得強調的是,歐洲太空局選擇在航天領域使用SPARC架構並不代表SPARC架構特別適用於航天領域,而是因為SPARC在當時是一種相對開放的架構。SPARC架構也更罔談壟斷或佔據航天領域的優勢地位,因為從本質上來講,航天領域處理器對於指令集架構本身並無特殊要求,其需求的主要特性是提供工藝上的加固單元和硬體系統的容錯性處理(為了防止外太空強輻射造成電路失常)。因此,很多的航天處理器也採用了其他的處理器架構,譬如目前新開發的很多航天處理器也在使用新的ARM或者RISC-V架構(有關RISC-V架構見第1.5節)。
2017年9月,Oracle公司宣佈正式放棄硬體業務,自然也包括了收購自Sun的SPARC處理器,至此,SPARC處理器可以說正式退出了歷史舞臺。此訊息一經發出,引起了很多業內人士的惋惜,感興趣的讀者請在網路上自行搜尋文章《再見SPARC處理器,再見Sun》。
3.MIPS
MIPS(Microprocessor without Interlocked Piped Stages Architecture)亦為Millions of Instructions Per Second的相關語,是一種簡潔、優化的RISC架構。MIPS可以說是出身名門,由斯坦福大學的Hennessy教授(計算機體系結構領域泰斗之一)領導的研究小組研製開發。
由於MIPS是經典的RISC架構,因此是如今除了ARM之外被人耳熟能詳的RISC架構。最早的MIPS架構是32位,最新的版本已有64位。
自從1981年由MIPS科技公司開發並授權後,MIPS架構曾經作為最受歡迎RISC架構被廣泛應用在許多電子產品、網路裝置、個人娛樂裝置與商業裝置上。它曾經在嵌入式裝置與消費領域裡佔據很大的份額,如SONY、Nintendo的遊戲機、Cisco的路由器和SGI超級計算機都有MIPS的身影。
但是由於一些商業運作的原因,MIPS被同屬RISC陣營的ARM後來居上。2013年MIPS被英國公司Imagination Technologies收購,可惜的是,MIPS被Imagination收購後,非但沒有發展,反而日漸衰落。2017年Imagination自身出現危機而整體尋求出售,MIPS再次面臨被出售的命運。
4.Power
Power架構是IBM開發的一種RISC架構指令集。1980年IBM推出了全球第一臺基於RISC架構的原型機,證明RISC相比CISC在高效能領域優勢明顯。1994年IBM基於此推出PowerPC604處理器,其強大的效能在當時處於全球領先地位。
基於Power架構的IBM Power伺服器系統在可靠性、可用性和可維護性等方面表現出色,使得 IBM從晶片到系統所設計的整機方案有著獨有的優勢。Power架構的處理器在超算、銀行金融、大型企業的高階伺服器等多個方面應用十分成功。IBM至今仍在不斷開發新的Power架構處理器:
-
2013年,IBM宣佈了新一代伺服器處理器Power8。Power8的核心數量達12個,而且每個核心都支援8執行緒,匯流排程多達96個。它採用了8派發、10發射、16級流水線的設計,各項規格均強大得令人驚歎。
-
2016年IBM公司公佈了其Power9處理器,IBM於2017年推出Power9擁有24個計算核心,是Power8晶片的兩倍。
-
IBM計劃在2020年推出Power10,2023年推出Power11處理器。
5.Alpha
Alpha也稱為 Alpha AXP,是一種64位的RISC指令集架構,由DEC公司設計開發,被用於DEC自己的工作站和伺服器中。
Alpha是一款優秀的處理器,它不僅是最早跨過GHz的企業級處理器,而且還是最早計劃採用雙核,甚至是多核架構的處理器。然而,Alpha晶片和採用此晶片的伺服器並沒有得到整個市場的認同,只有少數人選擇了Alpha伺服器。據稱其價格高昂、安裝複雜,部署實施遠遠超過一般企業IT管理人員所能承受的難度。2001年,康柏收購DEC之後,逐步將其全部64位伺服器系列產品轉移到Intel的安騰處理器架構之上。2004年,惠普收購康柏,從此Alpha架構逐漸淡出了人們的視野。
6.ARM
由於ARM架構過於聲名顯赫,後續會有專門的小節重點論述ARM,在此不單獨論述。
7.ARC
ARC架構處理器是Synopsys公司推出的32位RISC結構微處理器系列IP。ARC處理器的IP產品線覆蓋了從低端到高階各個領域的嵌入式處理器,如圖1-6所示。
圖1-6 ARC處理器IP系列
ARC架構處理器以極高的能效比見長,出色的硬體微架構使得ARC處理器的各項指標均令人印象深刻。ARC處理器IP以追求功耗效率比(DMIPS/mW)和麵積效率比(DMIPS/mm2)最優化為目標,以滿足嵌入式市場對微處理器產品日益提高的效能要求。
ARC處理器的另外一個最大的特點是其高度可配置性,可通過增加或刪除功能模組,滿足不同的應用需求,通過配置不同屬性實現快速系統整合,做到“量體裁衣”。
ARC是除了ARM之外的全球第二大嵌入式處理器IP供應商,全球已有超過170家客戶使用Synopsys ARC處理器,這些客戶每年總共產出高達15億塊基於ARC的晶片。
8.Andes
Andes架構處理器是我國臺灣的晶心(Andes)公司推出的一系列32位RISC架構處理器IP。據2016年的統計數字,採用Andes指令集架構的系統晶片出貨量超過4.3億顆,總累計出貨量超過19億顆。2017年,Andes釋出最新一代的AndeStar™處理器架構,成為商用主流CPU IP公司中第一家納入開放RISC-V 指令集架構的公司。
9.C-Sky
C-SKY架構處理器是由我國杭州中天微系統有限公司開發的一系列32位高效能低功耗嵌入式處理器IP。杭州中天是國內CPU IP公司的翹楚,C-SKY系列嵌入式CPU核,具有低功耗、高效能、高程式碼密度、易使用等特點。
1.1.5 CPU的領域之分
本節將對CPU的不同應用領域加以探討。在傳統的計算機體系結構分類中,處理器應用分為3個領域——伺服器領域、PC領域和嵌入式領域。
-
伺服器領域在早期還存在著多種不同的架構呈群雄分立之勢,不過,由於Intel公司商業策略上的成功,目前Intel的x86處理器晶片幾乎成為了這個領域的霸主。
-
PC領域本身是由Windows/Intel軟硬體組合發展而壯大,因此,x86架構是目前PC領域的壟斷者。
-
傳統的嵌入式領域所指範疇非常廣泛,是處理器除了伺服器和PC領域之外的主要應用領域。所謂“嵌入式”是指在很多晶片中,其所包含的處理器就像嵌入在裡面不為人知一樣。
近年來隨著各種新技術新領域的進一步發展,嵌入式領域本身也被髮展成了幾個不同的子領域而產生了分化。
-
首先是隨著智慧手機(Mobile Smart Phone)和手持裝置(Mobile Device)的發展,移動(Mobile)領域逐漸發展成了規模匹敵甚至超過PC領域的一個獨立領域,其主要由ARM的Cortex-A系列處理器架構所壟斷。Mobile領域的處理器由於需要載入Linux作業系統,同時涉及複雜的軟體生態,因此和PC領域一樣具有對軟體生態的嚴重依賴。目前既然ARM Cortex-A系列已經取得了絕對的統治地位,其他的處理器架構很難再進入該領域。
-
其次是實時(Real Time)嵌入式領域。該領域相對而言沒有那麼嚴重的軟體依賴性,因此沒有形成絕對的壟斷,但是由於ARM處理器IP商業推廣的成功,目前仍然以ARM的處理器架構佔大多數市場份額,其他處理器架構譬如Synopsys ARC等也有不錯的市場成績。
-
最後是深嵌入式領域。該領域更像前面所指的傳統嵌入式領域。該領域的需求量非常之大,但往往注重低功耗、低成本和高能效比,無須載入像Linux這樣的大型應用作業系統,軟體大多是需要定製的裸機程式或者簡單的實時作業系統,因此對軟體生態的依賴性相對比較低。在該領域很難形成絕對的壟斷,但是由於ARM處理器IP商業推廣的成功,目前仍然以ARM的Cortex-M處理器佔據大多數市場份額,其他的架構譬如Synopsys ARC和Andes等也有非常不錯的表現。
表1-2是對目前CPU典型應用領域及其主流的架構進行的總結。
表1-2 處理器的應用領域及主流架構
綜上所述,由於移動(Mobile)領域崛起成為一個獨立的分類領域,現在通常所指的嵌入式領域往往是指深嵌入式領域或者實時嵌入式領域。說到此處,我們就不得不提及一位前輩“老炮兒”—8051核心。
1.1.6 8位時代的傳奇“前輩”——8051
說起8051核心,熟悉嵌入式領域的朋友,幾乎無人不知無人不曉。8051作為一款誕生了數十年之久的微處理器核心,在8位嵌入式微處理器核心領域,它是當之無愧的傳奇“前輩”。
自從Intel於1980年為嵌入式系統開發Intel MCS-51(通常簡稱 8051)單晶片微控制器(簡稱微控制器)至今,8051核心架構已經走過將近40個年頭。Intel還以專利轉讓的形式把8051核心轉讓給了許多其他半導體公司,這些公司進一步發展出不同型號基於8051核心的微控制器晶片,因此形成了一個龐大的8051家族。
幾十年發展下來的龐大的使用者群和生態環境,以及多年來眾多備受肯定的成功產品,可以說8051核心幾乎成為8位微處理器核心的業界標杆。8051核心架構在1998年失去專利保護,久經沙場的它再次迸發出強大的二次生命力,各種形式的8051架構MCU(微控制器Microcontroller Unit)進一步湧入市場,各種基於8051核心的晶片產品層出不窮,各種免費版本的8051核心IP也可以從各種渠道獲取。
當然由於8051核心並沒有一個統一的組織和標準進行管理,所以也存在著體系結構混亂,各種增強型複雜多樣的問題。雖然時常也都自稱為8051核心,但是其實各有差別,琳琅滿目讓人難以分辨。但是這絲毫不影響8051核心的經典地位,時至今日,雖然目前微處理器核心正在經歷著向32位架構遷移的大趨勢,但是8051核心仍然有著舉足輕重的地位,在大量的MCU、數模混合訊號晶片、SoC晶片中仍能看到8051核心的身影,並且在相當長的時間內,在適合8位架構處理器核心的應用領域中都將繼續使用8051核心,可以說是“廉頗雖老,尚能飯也”。
8051核心能在嵌入式領域取得如此成功的地位,可以歸功於如下幾個方面的原因。
-
廣泛的被認知度,簡單的體系結構。
-
沒有智慧財產權的限制,商業和開源的版本眾多,非常適合中小型晶片公司採用。
-
龐大的使用者群以及相應的生態系統。
-
成熟且免費的軟體工具鏈支援。
儘管如此,8051作為一款誕生了接近40年的8位CISC(複雜指令集)架構核心,雖然是“老驥伏櫪,壯心不已”,但是由於其效能低下,定址範圍受限,已經難以適應更多的新興應用領域。隨著IoT的發展和崛起,雖然嵌入式領域對於處理器核心的需求更加井噴,但是更多的是開始採用32位架構,且很多傳統的8位應用領域也在開始向著32位架構遷移。
1.1.7 IoT的崛起——32位時代的到來
物聯網(Internet of Things,IoT)這個概念的提出和全面進入人們的視線其實並不久遠,應該IoT說是時下最熱點的技術應用領域之一。即便近一年來火爆的AI風頭更勁,但是IoT也是AI的基礎支撐技術,以智慧家居和智慧城市為例,IoT終端裝置支撐和AI的邊緣智慧計算便是很重要的兩項技術基礎設施,IoT與AI呈現出相輔相成進一步提速發展之勢。根據麥肯錫全球機構的最新報告預測,全球物聯網市場規模可望在2025年以前達到11萬億美元,這意味著物聯網將有潛力在2025年時達到約11%的全球經濟佔有率。
物聯網的新興應用需要使用到效能更高的32位架構微處理器核心。以MCU為例,工業物聯網、可穿戴式裝置和智慧家居為目前MCU市場的主要驅動力,而32位架構更是當前驅動MCU成長的重要領域。以智慧家居為例,智慧家居中的有些應用需要更精確的測量和控制、更好的能效,都需要有更復雜的數學模型和運算,這就要求MCU的運算速度大幅提升,以滿足能耗和運算的需求。32位MCU執行效能更佳,能夠滿足眾多物聯網應用對資料處理能力要求,能夠兼顧物聯網的低功耗和高效能要求。有分析稱,從2015年統計資料來看,全年全球32位MCU的出貨量就已經超過4/8/16位MCU的總和。
談及32位架構微處理器核心,就難以繞開該領域的“學霸”ARM Cortex-M了。
無敵是多麼寂寞——ARM 統治著的世界
ARM(Advanced RISC Machines)是一家誕生於英國的處理器設計與軟體公司,總部位於英國的劍橋,其主要業務是設計ARM架構的處理器,同時提供與ARM處理器相關的配套軟體,各種SoC系統IP、物理 IP、GPU、視訊和顯示等產品。
雖然在普通人眼中,ARM公司的知名度遠沒有Intel公司的辨識度高,甚至不如華為、高通、蘋果、聯發科和三星等這些廠商那般耳熟能詳。但是,ARM架構處理器卻以“潤物細無聲”的方式滲透到我們生活中的每個角落。從我們每天日常使用的電視、手機、平板電腦以及手環、手錶等電子產品,到不起眼的遙控器、智慧燈和充電器等我們想到和想不到的方方面面,均有ARM架構處理器的身影。在白色家電、工業控制與汽車電子領域,ARM架構處理器更是無處不在;乃至我們熟知桌面PC、伺服器和超級計算機領域,ARM架構也在朝其滲透。可以說,ARM架構處理器統治著這些領域,支撐著我們這個世界的執行。
1.2.1 獨樂樂與眾樂樂——ARM公司的盈利模式
ARM公司雖然設計開發基於ARM架構的處理器核,但是商業模式並不是直接生產處理器晶片,而是作為智慧財產權(Intellectual Property,IP)供應商,轉讓授權許可給其合作伙伴。目前,全世界有幾十家大的半導體公司都使用ARM公司的授權,從ARM公司購買其設計的ARM處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的ARM處理器晶片進入市場。
至此,我們提到了若干名詞“ARM架構”“ARM架構處理器”或“ARM處理器”“ARM處理器晶片”“晶片”。為了能夠闡述清楚其彼此的關係,並理解ARM公司的商業模式,下面通過一個形象的比喻加以闡述。
假設將“生產晶片”比喻為“製造一輛汽車”,我們知道在市場上有幾十家品牌汽車生產商,譬如“大眾”“豐田”“本田”等。那麼晶片領域也有眾多的晶片生產商,譬如“高通”“聯發科”“三星”“德州儀器”等。有的晶片是以處理器的功能為主,我們稱為“處理器晶片”,有的晶片中的處理器只是輔助的功能,我們稱之為“普通晶片”或“晶片”。
就像每一輛汽車都需要一臺發動機,汽車生產商需要向其他的發動機生產商採購發動機一樣。每一款晶片都需要一個或者多個處理器,因此“高通”“聯發科”“三星”“德州儀器”等晶片生產商需要採購處理器,於是他們可以從ARM公司採購處理器。
-
所謂“ARM架構”就好像是發動機的設計圖樣一樣,是由ARM公司發明並專利保護的“處理器架構”,ARM公司基於此架構設計的處理器便是“ARM架構處理器”或“ARM處理器”。ARM由於主要以IP的形式授權其處理器,因此常稱為“ARM處理器IP”。
-
通過直接授權“ARM處理器IP”給其他的晶片生產商(合作伙伴),這便是ARM公司的主要盈利模式。
晶片公司每設計一款晶片,如果購買了ARM公司提供的“ARM處理器IP”,晶片公司需要支付一筆前期授權費(Upfront License Fee),之後,如果該晶片被大規模生產銷售,則每賣出一片晶片均需要按其售價向ARM公司支付一定比例(譬如售價的1%~2%)的版稅(Royalty Fee)。
由於ARM架構佔據了絕大多數的市場份額,形成了完整的軟體生態環境,在移動和嵌入式領域的晶片廠商,購買ARM處理器IP幾乎成為這些廠商的首選。
就像有些有實力的汽車生產商可以自己設計製造發動機一樣。有實力的晶片公司也想自己設計處理器,因此有3個選擇。
-
第1個選擇:自己發明一種處理器架構。
-
第2個選擇:購買其他商業公司的“非ARM架構”處理器IP。
-
第3個選擇:購買ARM公司的“ARM架構授權”而不是直接購買“ARM處理器IP”,自己定製開發基於ARM架構的處理器。
在前面的章節,我們曾經闡述了處理器架構及其衍生出的軟體生態環境的重要性,探討了為什麼“非ARM架構”無法取得如ARM般巨大的成功,因此上述“第1個選擇”和“第2個選擇”在ARM架構佔主導(譬如移動手持裝置)的領域具有極大的風險。那麼“第3個選擇”便成為了這些有實力的晶片公司的幾乎唯一選擇。
-
就像汽車公司可以購買發動機公司的圖樣,然後按照自己的產品需求深度定製其發動機一樣。晶片公司也可以通過購買ARM公司的“ARM架構授權”,按照自己的產品需求深度定製其自己的處理器。
-
轉讓“ARM架構授權”給其他的晶片生產商(合作伙伴),這便是ARM公司的另外一種盈利模式。
使用這種自主研發處理器的晶片在大規模生產銷售後無需向ARM公司逐片支付版稅,從而達到降低產品成本和提高產品差異性的效果。
只有實力最為雄厚的晶片公司才具備購買“ARM架構授權”的能力。首先,因為ARM架構授權價格極其昂貴(高達千萬美元量級),遠遠高於直接購買“ARM處理器IP”所需的前期授權費;其次,深度定製其自研處理器需要攻克極高的技術難度與投入高昂的研發成本。目前有能力堅持做到這一點的也僅有“蘋果”“高通”“華為”等巨頭。
綜上可以看出,“ARM架構處理器”可以分為兩種。
-
由ARM公司開發並出售的IP,也俗稱為公版ARM。
-
由晶片公司基於ARM架構授權自主開發的私有核心,也俗稱為定製自研ARM。
相對應的,ARM公司的主要盈利模式也可以分為兩種。
-
授權“ARM處理器IP”給其他的晶片生產商(合作伙伴),收取對應的前期授權費(Upfront License Fee),以及量產後的版稅。
-
轉讓“ARM架構授權”給其他的晶片生產商(合作伙伴),收取對應的架構授權費。ARM公司的強大之處便在於其與眾多合作伙伴一起構建了強大的ARM陣營,如圖1-7所示。全世界目前幾乎大多數主流晶片公司都直接或者間接地在使用ARM架構處理器。
圖1-7 ARM公司合作伙伴圖譜
ARM公司自2004年推出ARMv7核心架構時,便摒棄了以往“ARM+數字”這種處理器命名方法(之前的處理器統稱經典處理器系列),啟用Cortex來命名,並將Cortex系列細分為3大類,如圖1-8所示。
圖1-8 Cortex-A/R/M系列
-
Cortex-A:面向效能密集型系統的應用處理器核。
-
Cortex-R:面向實時應用的高效能核。
-
Cortex-M:面向各類嵌入式應用的微控制器核。其中,Cortex-A系列與Cortex-M系列的成功尤其引人矚目。接下來的章節將對Cortex-M系列與Cortex-A系列的成功分別加以詳細論述。
1.2.2 小個子有大力量——無處不在的Cortex-M系列
Cortex-M是一組用於低功耗微控制器領域的32位RISC處理器系列,包括Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4(F)、Cortex-M7(F)、Cortex-M23和Cortex-M33(F)。如果Cortex-M4 / M7 / M33處理器包含了硬體浮點運算單元(FPU),也稱為Cortex-M4F/M7F/M33F。表1-3列出了Cortex-M系列各處理器的釋出時間和特點。
表1-3 ARM Cortex-M系列各處理器釋出時間和特點
Cortex-M的應用場景雖然不像Cortex-A系列那樣光芒四射,但是其應用的嵌入式領域需求量巨大。有資料顯示,2018年物聯網裝置的數量將會超過移動裝置,到了2021年,我們將會擁有18億臺PC、86億臺移動裝置和157億臺物聯網裝置。譬如有一些物聯網裝置可能需要在幾年的時間裡運轉,而且僅依靠自身所帶的電池,Cortex-M0 由於其體積非常之小而且功耗極低,就非常適合這類產品,比如感測器。而Cortex-M3是Cortex產品家族中最為廣泛使用的一款晶片,它本身的體積也非常小,可以廣泛應用於各種各樣嵌入智慧裝置,比如智慧路燈、智慧家居溫控器和智慧燈泡等。2009年Cortex-M0這款超低功耗的32位處理器問世後,打破了一系列的授權記錄,成了各製造商競相爭奪的香餑餑,僅9個月時間,就有15家廠商與ARM簽約。至今全球已有超過60家公司獲得了ARM Cortex-M的授權,我國僅大陸地區廠商也有近十家。Cortex-M3與Cortex-M0的合計出貨量已經超過200億片,其中有一半的出貨是在過去幾年完成的,據稱每30分鐘的出貨量就可以達到25萬片。
Cortex-M另一個取得巨大成功的領域便是微控制器(Microcontroller Unit,MCU)。隨著越來越多的電子廠商不斷為物聯網(IoT)推出新產品,全球微控制器(MCU)市場出貨量出現巨大成長動能,且呈現出量價齊升的情況。據市場調研機構預測,2016~2020年全球微控制器(MCU)出貨量與銷售額將持續創新高。
在ARM推出Cortex-M之前,全球主要的幾個MCU晶片公司大多采用8位、16位核心或者其自有的32位架構的處理器。ARM推出Cortex-M處理器之後,迅速受到市場青睞,一些主流MCU供應商開始選擇這款核心生產MCU。
-
2007年6月,ST推出基於ARM Cortex-M3處理器核的STM32 F1系列MCU使之大放光芒。
-
2009年3月,恩智浦半導體NXP率先推出了第一款基於ARM Cortex-M0處理器的LPC1100系列MCU。
-
2010年8月,飛思卡爾半導體Freescale(2015年被NXP併購)率先推出了第一款基於ARM Cortex-M4處理器的Kinetis K系列MCU。
-
2012年11月,恩智浦半導體NXP繼續率先推出了第一款基於ARM Cortex-M0+處理器的LPC800系列MCU。
-
2014年9月,意法半導體ST率先推出了第一款基於ARM Cortex-M7處理器的STM32 F7系列MCU。
各家供應商採用Cortex-M處理器核加之以自己特別的開發,在市場中提供差異化的MCU產品,有些產品專注最佳能效、最高效能,而有些產品則專門應用於某些細分市場。
至今,主要的MCU廠商中幾乎都有使用ARM 的Cortex-M核心的產品線。可以肯定地說,Cortex-M之於32位MCU就如同8051(受到眾多供應商支援的工業標準核心)之於8位MCU。未來Cortex-M系列的MCU產品替代傳統的8051或其他專用架構是大勢所趨。甚至有聲音表示:“未來,MCU產品將不再按8位、16位和32位來分,而是會按照M0核、M3核以及M4核等ARM核心的種類來分。”作者不得不替非ARM架構的商業處理器廠商們拊膺長嘆:“既生瑜,何生亮啊。”
1.2.3 移動王者——Cortex-A系列在手持裝置領域的巨大成功
Cortex-A是一組用於高效能低功耗應用處理器領域的32位和64位RISC處理器系列。32位架構的處理器包括Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15、Cortex-A17和Cortex-A32。64位架構的包括 ARM Cortex-A35、ARM Cortex-A53、ARM Cortex-A57、ARM Cortex-A72和 ARM Cortex-A73。Cortex-A、Cortex-M和Cortex-R架構的最大區別是前者包含了儲存器管理單元(Memory Management Unit,MMU),因此可以支援作業系統的執行。
ARM在2005年向市場推出Cortex-A8處理器,是第一款支援 ARMv7-A 架構的處理器。在當時的主流工藝下,Cortex-A8處理器的速率可以在600MHz~1GHz的範圍調節,能夠滿足那些需要工作在300mW以下的功耗優化的移動裝置的要求,以及滿足那些需要2000 Dhrystone MIPS的效能優化的消費類應用的要求。當 Cortex-A8 在2008 年投入批量生產時,高頻寬無線連線(3G)已經問世,大螢幕也用於移動裝置,Cortex-A8 晶片的推出正好趕上了智慧手機大發展的濫觴。
推出Cortex-A8 之後不久,ARM 又推出了首款支援ARMv7-A架構的多核處理器Cortex-A9。Cortex-A9 利用硬體模組來管理CPU叢集中1~4個核的快取記憶體一致性,加入了一個外部二級快取記憶體。在2011年年底和2012年年初,當移動SoC設計人員可以採用多個核之後,效能得到進一步提升。旗艦級高階智慧手機迅速切換到4核Cortex-A9。除了開啟了多核效能大門之外,與Cortex-A8相比,每個Cortex-A9處理器的單時鐘週期指令吞吐量提高了大約25%。這個效能的提升是在保持相似功耗和芯片面積的前提下,通過縮短流水線並亂序執行,以及在流水線早期階段整合NEON SIMD和浮點功能而實現的。
如果說Cortex-A8牛刀小試讓ARM初嘗甜頭,那麼Cortex-A9則催生了智慧手機的井噴期,Cortex-A9幾乎成了當時智慧手機的標配,大量的智慧手機採用了該核心,ARM為此掙了個盆滿鉢盈。自此,ARM便開始了它開掛的“下餃子”模式,以平均每年一款或多款的速度瘋狂推出各款不同的Cortex-A處理器,迅速拉開與競爭對手的差距。具體ARM Cortex-A系列各處理器的釋出時間和特點,見表1-4。
表1-4 ARM Cortex-A系列各處理器釋出時間和特點
ARM推出Cortex-A系列各款處理器的速度之快、之多,顯示了其研發機器的超強生產力,由於其推出的處理器型號太多、太快,阿拉伯數字都不夠用了,如表1-4所示,其型號的編號規則逐漸令作者都傻傻分不清了。同時,由於其推出的處理器型號太多、太快,乃至於令眾多授權ARMv7/8-A架構進行自研處理器的巨頭都疲於奔命。在Cortex-A8/A9時代,多家有實力的巨頭均選擇授權ARMv7/8-A架構進行自研處理器以差異化其產品並降低成本。這些巨頭包括高通、蘋果、Marvell、博通、三星、TI以及LG等。作者便曾經在其中的一家巨頭供職擔任CPU高階設計工程師,開發其自研的Cortex-A系列高效能處理器。如前所述,研發一款高效能的應用處理器需要解決挑戰極高的技術難題以及投入數年時間,而當ARM以年均一款新品之勢席捲市場時,使得自研處理器沒有能夠來得及推出便已過時。
眾巨頭們紛紛棄甲丟盔,相繼有TI、博通、Marvell和LG等巨頭放棄了自研處理器業務。乃至自研處理器做的最為成功的高通(以其Snapdragon系列應用處理器風靡市場)也在其中低端SoC產品中放棄了自研處理器轉而採購ARM的Cortex-A系列處理器,僅在高階SoC中保留了自研的處理器。值得一提的是,由於中國的巨大市場與產業支援,在巨頭們放棄自研處理器的趨勢下,中國的華為與展訊逆勢而上,開始授權ARMv8-A架構進行自研處理器的研發,並取得了令人欣喜的成果。
Cortex-A系列的巨大成功徹底地奠定了ARM在移動領域的統治地位。由於Cortex-A系列的先機與成功,ARM架構在移動領域構築了城寬池闊的軟體生態環境。至今,ARM架構已經應用到全球85%的智慧移動裝置中,其中有超過95%的智慧手機都基於ARM的設計,基本上使得其他架構的處理器失去了進入該領域的可能性。ARM攜Cortex-A系列移動領域一統江山,就如坦格利安人駕著噴火的巨頭征服維斯特洛大陸般如入無人之境。ARM除了一步步提升Cortex架構效能之餘,也找到了很多“志同道合”的夥伴,比如高通、谷歌和微軟等,並與合作伙伴們形成了強大的生態聯盟。攜此餘威,傳統x86架構的PC與伺服器領域就成為了ARM的下一步發展目標。有道是“驅巨獸鼎定移動地,Cortex-A劍指服務區”。預知後事如何,且聽下節分解。
1.2.4 進擊的巨人——ARM進軍PC與伺服器領域的雄心
PC與伺服器市場是一個超千億規模的大蛋糕,而這個市場長時間由另外一個巨頭Intel把持,同為x86陣營的AMD常年屈居老二,分享著有限的蛋糕份額。Intel在此領域的巨大成功,是其豐厚盈利的主要來源。
上一節提到ARM劍指PC與伺服器領域,谷歌ChromeBook就是ARM揮師PC市場的先行軍,在(海外的)入門級市場受到了廣泛好評,ARM處理器可以幫助此類裝置變得更輕、更省電。微軟對ARM的支援同樣給力,2016年12月舉行的WinHEC 2016大會上,微軟與高通宣佈將採用下一代驍龍處理器(基於ARM架構)的移動計算終端上支援Windows 10系統,微軟演示了搭載驍龍820處理器的筆記本執行Windows 10,驍龍820在4GB儲存器支撐下(效能可以和Intel i3媲美),一臺Windows 10企業版系統筆記本能夠流暢地執行Edge、外接繪圖板、觀看高清視訊、使用PS定向濾鏡等,同時支援多工後臺。
2017年,高通宣佈正在對其自研驍龍835進行優化,將這款處理器擴充套件到執行Windows 10的移動PC當中,而搭載驍龍835的Windows 10移動PC計劃在2017年第四季度推出。除此之外,在資料中心領域,高通也與微軟達成了合作,未來執行Windows Server的伺服器也可以搭載高通10nm Centriq處理器,這也是業內首款10nm伺服器處理器。微軟還宣佈將在未來的Windows 10 RedStone 3當中正式提供ARM裝置對完整版Windows 10的相容支援,這意味著基於ARM處理器的裝置可以執行x86程式,跨平臺融合正式到來。
至此,我們已經介紹ARM公司及其ARM架構的強大之處,瞭解了Cortex-M處理器在嵌入式領域內的巨大成功,Cortex-A處理器在移動領域內的王者之位,甚至於在PC與伺服器領域內的雄心。
1.2.5 遊戲終結者之ARM
至此,我們已經介紹ARM公司及其ARM架構的強大之處,瞭解了Cortex-M處理器在嵌入式領域內的巨大成功,Cortex-A處理器在移動領域內的王者之位,甚至於在PC與伺服器領域內的雄心。
2016年7月,日本軟銀集團以約243億英鎊(約合320億美元)和高達43%的溢價收購ARM公司。軟銀高價收購ARM也是因為ARM正在成為智慧硬體和物聯網裝置的標配。在收購ARM公司時,軟銀CEO孫正義曾表示:“這是我們有史以來最重要的收購,軟銀集團正在捕捉物聯網帶來的每一個機遇,ARM則非常符合軟銀的這一戰略,期待ARM成為軟銀物聯網戰略前進的重要支柱。”之後,孫正義更表示:“未來20年內,ARM架構晶片的年出貨量將達到1萬億顆,ARM能夠立刻收集所有實時資料”。
似乎ARM即將統治這個世界,毫無疑問地成為32位嵌入式處理器領域的下一個8051了。然而就在此時,RISC-V走向了臺前。
東邊日出西邊雨,道是無晴卻有晴——RISC-V 登場
RISC-V架構主要由美國加州大學伯克利分校(簡稱伯克利)的Krste Asanovic教授、Andrew Waterman和Yunsup Lee等開發人員於2010年發明,並且得到了計算機體系結構領域的泰斗David Patterson的大力支援。伯克利的開發人員之所以發明一套新的指令集架構,而不是使用成熟的x86或者ARM架構,是因為這些架構經過多年的發展變得極為複雜和冗繁,並且存在著高昂的專利和架構授權問題。並且修改ARM處理器的RTL程式碼是不被支援的,而x86處理器的原始碼根本不可能獲得到。其他的開源架構(譬如SPARC、OpenRISC)均有著或多或少的問題(第2章將詳細論述)。有感於計算機體系結構和指令集架構已經過數十年的發展非常成熟,但是像伯克利這樣的研究機構竟然“無米下鍋”(選擇不出合適的指令集架構供其使用)。伯克利的教授與研發人員決定發明一種全新的、簡單且開放免費的指令集架構,於是RISC-V架構誕生了。
有關RISC-V的誕生,有興趣的讀者可以自行到網路中查閱文章《伯克利希望將RISC-V開源架構推向主流》。RISC-V(英文讀作“risk-five”),是一種全新的指令集架構。“V”包含兩層意思,一是這是Berkeley從RISC I開始設計的第五代指令集架構;二是它代表了變化(Va r i a t i o n)和向量(Vectors)。
經過幾年的開發,伯克利為RISC-V架構開發出了完整的軟體工具鏈以及若干開源的處理器例項,得到越來越多的人的關注。2016年,RISC-V基金會(Foundation)正式成立開始運作。RISC-V基金會是一個非營利性組織,負責維護標準的RISC-V指令集手冊與架構文件,並推動RISC-V架構的發展。
-
RISC-V架構的目標如下。成為一種完全開放的指令集,可以被任何學術機構或商業組織所自由使用。
-
成為一種真正適合硬體實現且穩定的標準指令集。
RISC-V基金會負責維護標準的RISC-V架構文件和編譯器等CPU所需的軟體工具鏈,任何組織和個人可以隨時在RISC-V基金會網站上免費下載(無須註冊)。RISC-V的推出以及基金會的成立,受到了學術界與工業界的巨大歡迎。著名的科技行業分析公司Linley Group 將RISC-V評為“2016年最佳技術”,如圖1-9所示。
圖1-9 RISC-V架構標誌圖
開放而免費的RISC-V架構誕生,不僅對於高校與研究機構是個好訊息,為前期資金缺乏的創業公司、成本極其敏感的產品、對現有軟體生態依賴不大的領域,都提供了另外一種選擇,而且得到了業界主要科技公司的擁戴,包括谷歌、惠普、Oracle和西部資料等矽谷巨頭都是RISC-V基金會的創始會員,如圖1-10所示。眾多的晶片公司已經開始使用(譬如,三星、英偉達等)或者計劃使用RISC-V開發其自有的處理器用於其產品。
圖1-10 RISC-V基金會創始會員,鉑金、金、銀級會員圖譜
RISC-V基金會組織每年舉行兩次公開的專題討論會(Wo r k s h o p),以促進RISC-V陣營的交流與發展,任何組織和個人均可以從RISC-V基金會的網站上下載到每次Workshop上演示的PPT與文件。RISC-V第六次Workshop於2017年5月在中國的上海交通大學舉辦,如圖1-11所示,吸引了大批的中國公司和愛好者參與。
圖1-11 上海交通大學舉辦的RISC-V第六次Workshop
由於許多現在主流的計算機體系結構英文教材(譬如,計算機體系結構量化研究方法、計算機組成與設計等)的作者本身也是RISC-V架構的發起者,因此這些英文教材都相繼推出了以RISC-V架構為基礎的新版本教材,如圖1-12所示。這意味著美國的大多數高校都將開始採用RISC-V作為教學範例,也意味著若干年後的高校畢業生都將對RISC-V架構非常熟知。
但是,一款指令集架構(ISA)最終能否取得成功,很大程度上取決於軟體生態環境。羅馬不是一天建成的,x86與ARM架構經過多年的經營,構建了城寬池闊的軟體生態環境,可以說是兵精糧足,非常強大。因此,作者認為RISC-V架構在短時間內還無法對x86和ARM架構形成撼動。但是隨著越來越多的公司和專案開始採用RISC-V架構的處理器,相信RISC-V的軟體生態也會逐步壯大起來。
圖1-12 經典教材計算機組成與設計最新版本
本節雖然陳述了若干RISC-V蓬勃發展的具體案例,但是由於RISC-V陣營正在快速地向前發展,可能在本書成書時,RISC-V陣營又誕生了更加令人欣喜的案例,請讀者自行查閱網際網路更新見聞。
RISC-V 和其他開放架構有何不同
如果僅從“免費”或“開放”這兩點來評判,RISC-V架構並不是第一個做到免費或開放的處理器架構。
下面將通過論述幾個具有代表性的開放架構,來分析RISC-V架構的不同之處以及為什麼其他開放架構沒能取得足夠的成功。
1.4.1 “平民英雄”—OpenRISC
OpenRISC是OpenCores組織提供的基於GPL協議的開放原始碼RISC處理器,它具有以下特點。
-
採用免費開放的32/64位 RISC架構。•用Verilog HDL(硬體描述語言)實現了基於該架構的處理器原始碼。
-
具有完整的工具鏈。
OpenRISC被應用到很多公司的專案中,可以說,OpenRISC是應用非常廣泛的一種開源處理器實現。
OpenRISC的不足之處在於其側重實現一種開源的CPU Core,而非立足於定義一種開放的指令集架構,因此其架構的發展不夠完整。指令集的定義也不具備RISC-V架構的優點,更沒有上升到成立專門的基金會組織的高度。OpenRISC更多被認為是一個開源的處理器核,而非一種優美的指令集架構。此外,OpenRISC的許可證為GPL,這意味著所有的指令集改動都必須開源(而RISC-V則無此約束)。
1.4.2 “豪門顯貴”—SPARC
SPARC架構作為經典的RISC微處理器架構之一,於1985年由Sun公司所設計。SPARC也是SPARC國際公司的註冊商標之一,SPARC公司於1989年成立,目的是向外界推廣SPARC架構以及為該架構進行相容性測試。該公司為了推廣SPARC的生態系統,將標準開放,並授權予多家生產商使用,包括德州儀器、Cypress半導體和富士通等。由於SPARC架構也對外完全開放,因此也出現了完全開放原始碼的LEON處理器(見第1.1.4節的介紹)。不僅如此,Sun公司還於1994年推動SPARC v8架構成為IEEE標準(IEEE Standard 1754-1994)。
由於SPARC架構的初衷是面向伺服器領域,其最大的特點是擁有一個大型的暫存器視窗,符合SPARC架構的處理器需要實現從72到640個之多的通用暫存器,每個暫存器寬度為64bit,組成一系列的暫存器組,稱為暫存器視窗。這種暫存器視窗的架構,由於可以切換不同的暫存器組快速地響應函式呼叫與返回,因此能夠產生非常高的效能,但是這種架構功耗面積代價太大,而並不適用於PC與嵌入式領域處理器。而SPARC架構也不具備模組化的特點,使使用者無法裁剪和選擇,很難作為一種通用的處理器架構對商用的x86和ARM架構形成替代。設計這種超大伺服器CPU晶片又非普通公司與個人所能完成,而有能力設計這種大型CPU的公司也沒有必要投入巨大的成本來挑戰x86的統治地位。隨著Sun公司的衰弱,SPARC架構現在基本上退出了人們的視野。
1.4.3 “名校優生”——RISC-V
多年來在CPU領域已經出現過多個免費或開放的架構,很多高校也在科研專案中推出過多種指令集架構。因此當作者第一次聽說RISC-V時,以為又是一個玩具,或純粹學術性質的科研專案而不以為意。
而作者在通讀了RISC-V的架構文件以後,不禁為其先進的設計理念所折服。同時,RISC-V架構的各種優點也得到了眾多專業人士的青睞、好評,眾多商業公司相繼加盟,並且2016年RISC-V基金會的正式啟動在業界引起了不小的影響。如此種種,使得RISC-V成為至今為止最具革命性意義的開放處理器架構。
有興趣的讀者可以自行到網路中查閱文章《RISC-V登場,Intel和ARM會怕嗎》《直指移動晶片市場,開源的處理器指令集架構釋出》和《三星開發RISC-V架構自主CPU核心》。
結語:進入 32 位時代,誰能成為深嵌入式領域的下一個 8051?
本文系統地論述了CPU的基本知識,也簡述了ARM的如何強大以及開放RISC-V架構的誕生。一言以蔽之,開放而免費RISC-V架構使得任何公司與個人均可受用,極大地降低了CPU設計的准入門檻。有了RISC-V架構,CPU將不再是“權貴的遊戲”,有道是:“舊時王謝堂前燕,飛入尋常百姓家”—每個公司和個人都可以依照RISC-V標準設計自己的處理器。
原本“學霸”ARM Cortex-M將毫無疑問地成為8051的接班人而掌管深嵌入式領域的32位時代。但是不期而至的新生RISC-V卻自帶光環,讓這場遊戲出現了一絲變數。
前文中總結了傳奇“老炮兒”8051的先進事蹟,分析了它的幾個成功因素。在此,我們將其歸納為表格,並且將ARM Cortex-M與RISC-V進行橫向對比,如表1-5所示。
表1-5 ARM Cortex-M和RISC-V對比8051的成功因素
對於軟體的依賴相對比較低。並且,雖然RISC-V資歷非常淺,但是其架構在開放至今很短的時間內取得了令人驚異的發展速度,越來越多的公司和專案開始採用RISC-V架構的處理器,相信RISC-V的軟體生態也會逐步壯大起來。
從另一方面來說,ARM作為商業架構下的處理器IP,具有如下缺點:不能夠進行差異化定製,不具備可擴充套件性,受私有智慧財產權保護,指令集架構需要支付商業授權費用等。這些缺點在開放的RISC-V架構中都不存在,可謂是後生可畏。
是商業巨擘ARM將徹底統治這個世界?還是自由戰士RISC-V將別開生面?誰又能最終成為32位時代深嵌入式領域內的下一個8051?作者認為,世界需要ARM,同時也需要一個開放而標準的指令集RISC-V,因此,二者都將擁有其不同的生態系統和使用者群體,共榮共生互為補充,構建出一幅更加繁華的景象。
《RISC-V架構與嵌入式開發快速入門》
胡振波 著
本書是一本介紹RISC-V架構嵌入式開發的入門書籍,以通俗的語言系統介紹了嵌入式開發的基礎知識和RISC-V架構的內容,力求幫助讀者快速掌握RISC-V架構的嵌入式開發技術。
本書共分為兩部分。第一部分為第1~14章,基本涵蓋了使用RISC-V架構進行嵌入式開發所需的所有關鍵知識。第二部分為附錄部分,詳細介紹了RISC-V指令集架構,輔以作者加入的背景知識解讀和註解,以便於讀者理解。