前言
大家好,我是ZhengN。
近段嘗試著寫一些科普文。
本次來分享一些芯片相關(guān)的小科普文。作為嵌入式開發(fā)工程師,我們對芯片都需要有一定的了解。
指令集
1、指令集的體現(xiàn)
指令集,就是CPU中用來計算和控制計算機系統(tǒng)的一套指令的集合。而指令集的先進(jìn)與否,也關(guān)系到CPU的性能發(fā)揮,它也是CPU性能體現(xiàn)的一個重要標(biāo)志。
指令集也作為一種標(biāo)準(zhǔn)規(guī)范,用于規(guī)范芯片設(shè)計工程師及編譯器開發(fā)工程師:
因為芯片與IDE都遵循相同的指令集標(biāo)準(zhǔn),所以高級語言編寫的程序經(jīng)指定編譯器編譯后能直接運行在對應(yīng)的CPU上,反之則不能運行。
如arm-linux-gnueabihf-gcc編譯得到的程序并不能運行在X86 CPU上運行:
2、指令集的分類
從現(xiàn)階段的主流體系結(jié)構(gòu)講,指令集可分為復(fù)雜指令集和精簡指令集兩部分:
(1)復(fù)雜指令集
復(fù)雜指令集側(cè)重于硬件執(zhí)行指令的功能性,其對應(yīng)的硬件結(jié)構(gòu)很復(fù)雜。
復(fù)雜指令集的特點是指令長度不固定,執(zhí)行需要多個周期;其有很多用于特定目的的專用寄存器;處理器能夠直接處理寄存器中的數(shù)據(jù)。
復(fù)雜指令集主要應(yīng)用于電腦的處理器,我們的個人電腦處理器用的是X86:
(2)精簡指令集
精簡指令集側(cè)重于結(jié)構(gòu)簡單、處理速度更加快速上。
精簡指令集的特點是:一個周期執(zhí)行一條指令,指令長度固定,通過簡單指令的組合實現(xiàn)復(fù)雜的操作;其寄存器多是通用寄存器。精簡指令集主要用于嵌入式處理器上。
我們比較熟知的就是ARM指令集、MIPS指令集及RISC-V指令集。
① ARM
其中ARM指令集是目前用得最多的。ARM家族占比所有32位嵌入式處理器的75%,成為占全世界最多數(shù)的32位架構(gòu)。
ARM處理器廣泛使用在嵌入式系統(tǒng)設(shè)計,低耗電節(jié)能,非常適用移動通訊領(lǐng)域。
消費性電子產(chǎn)品,例如可攜式裝置(PDA、移動電話、多媒體播放器、掌上型電子游戲,和計算機),電腦外設(shè)(硬盤、桌上型路由器),甚至導(dǎo)彈的彈載計算機等軍用設(shè)施。
隨著處理器的不斷發(fā)展,應(yīng)用需求不斷提高,ARM指令集也發(fā)展了很多個版本:
ARM V1:最初版本,采用的地址空間是26位的,尋址空間是64MB,這個版本沒有商業(yè)化。
ARM V2:增加了乘法指令及支持協(xié)處理器指令。
ARM V3:實現(xiàn)了32位的地址空間。
ARM V4:增加了半字指令的讀取和寫入操作,增加了處理器系統(tǒng)模式,增加Thumb指令集。
ARM V5:增加了DSP指令、JAVA指令。
ARM V6:增加60多條SIMD指令。
ARM V7:采用了NEON技術(shù),將DSP和媒體處理能力提高了近4倍。并支持改良的浮點運算。
ARM V8:增加64位指令集、寄存器數(shù)量增加到31個。
② MIPS
在設(shè)計理念上MIPS指令集強調(diào)軟硬件協(xié)同提高性能,同時簡化硬件設(shè)計。
其指令系統(tǒng)經(jīng)過通用處理器指令體系MIPS I、MIPS II、MIPS III、MIPS IV到MIPS V,嵌入式指令體系MIPS16、MIPS32到MIPS64的發(fā)展已經(jīng)十分成熟。
在嵌入式方面,MIPS K系列微處理器是僅次于ARM的用得最多的處理器之一(1999年以前MIPS是世界上用得最多的處理器),其應(yīng)用領(lǐng)域覆蓋游戲機、路由器、激光打印機、掌上電腦等各個方面。
③ RISC-V
RISC-V(讀作“RISC-FIVE”)是基于精簡指令集計算(RISC)原理建立的開放指令集架構(gòu)(ISA)。
RISC-V指令集的設(shè)計考慮了小型、快速、低功耗的現(xiàn)實情況來實做,但并沒有對特定的微架構(gòu)做過度的設(shè)計。
主流的架構(gòu)為x86與ARM架構(gòu)為了能夠保持架構(gòu)的向后兼容性,其不得不保留許多過時的定義,導(dǎo)致其指令數(shù)目多。而RISC-V架構(gòu)則能完全拋棄包袱,從輕上路。
RISC-V基礎(chǔ)指令集則只有40多條,加上其他的模塊化擴展指令總共幾十條指令。
RISC-V特點:
- 完全開源:開源采用寬松的BSD協(xié)議,企業(yè)完全自由免費使用,同時也容許企業(yè)添加自有指令集拓展而不必開放共享以實現(xiàn)差異化發(fā)展。架構(gòu)簡單:RISC-V基礎(chǔ)指令集則只有40多條,加上其他的模塊化擴展指令總共幾十條指令。易于移植:RISC-V提供了詳細(xì)的特權(quán)級指令規(guī)范和用戶級指令規(guī)范的詳細(xì)信息,使開發(fā)者能非常方便的移植linux和unix系統(tǒng)到RISC-V平臺。模塊化設(shè)計:RISC-V其不同的部分以模塊化的方式組織在一起,用戶能夠靈活選擇不同的模塊組合,來實現(xiàn)自己定制化設(shè)備的需要。完整的工具鏈:芯片設(shè)計公司不再擔(dān)心工具鏈問題,只需專注于芯片設(shè)計,RISC-V社區(qū)已經(jīng)提供了完整的工具鏈。
阿里巴巴全資的半導(dǎo)體平頭哥半導(dǎo)體有限公司也有設(shè)計出基于RISC-V的芯片,如:
ARM處理器微架構(gòu)
指令集是一個很深層次的概念,在這之上我們還需要了解一個與此相關(guān)的概念:微架構(gòu)(Microarchitecture)
,上面RISC-V的介紹中也有提到這個概念。
微架構(gòu)的概念其實我們并不陌生,我們來看一個框圖:
這是STM32F103系列芯片的一個框圖。
微架構(gòu)其就是我們常說的xxx內(nèi)核(注:內(nèi)核有兩種概念,一種是硬件層面的概念,另一種是軟件層面的概念。這里指的是硬件層面的概念),比如STM32F103的內(nèi)核是ARM Cortex-M3內(nèi)核就是一種微架構(gòu)
。
一套指令集只能設(shè)計出一種微架構(gòu)?
顯然不是的。針對于不同的應(yīng)用場景如高性能、低功耗等不同的場景,可以基于同一套指令集設(shè)計出不同的微架構(gòu)。
比如我們嵌入式中接觸得比較多的應(yīng)該是基于ARMV7指令集的Cortex系列內(nèi)核:
ARM公司授權(quán)方式?
ARM公司自己并不生產(chǎn)芯片,也不賣芯片,而是靠IP授權(quán)盈利。其主要有以下三種授權(quán)方式:
1、架構(gòu)層級授權(quán)
架構(gòu)層級的授權(quán)是芯片廠商在付費獲得指令集授權(quán)之后,可以基于該指令集設(shè)計自己的內(nèi)核。
架構(gòu)層級方面,只有幾個手機方面的芯片廠商可以玩得起。目前只有幾個頭部芯片能獲得ARM架構(gòu)層級的授權(quán):
其中,高通、三星曾采用ARM公版+自研架構(gòu)的組合,但現(xiàn)在基本放棄自研架構(gòu),采用公版ARM微架構(gòu)。蘋果是目前是唯一一家能跟ARM這種商業(yè)模式做到五五開。
之前有一個疑問,蘋果實力這么強了,為何不自研指令集完全擺脫對于ARM的依賴?
網(wǎng)上查了一下,查到一些回答:
1、完全自研,你沒辦法保證上下游的開發(fā)者也有設(shè)備可用,沒可用設(shè)備的話,誰來給開發(fā)軟件?
2、完全自研,所有核心技術(shù)都得很多更專業(yè)的人來做,人力成本可能會比授權(quán)費還高。
3、ARM和蘋果的淵源很深,當(dāng)年蘋果是ARM的創(chuàng)始股東之一,后來蘋果陸續(xù)賣掉了ARM的股票,再后來蘋果基于ARM的架構(gòu)開始大搞自研芯片。其實蘋果現(xiàn)在就是在自研,可以理解為ARM的花式魔改。
華為目前在手機CPU方面現(xiàn)在并無自研微架構(gòu)。華為麒麟芯片用的還是公版的ARM微架構(gòu),但現(xiàn)在已經(jīng)被卡脖子了(停止內(nèi)核層級授權(quán)),這樣的形式不太樂觀。
雖然華為擁有ARMV8指令集永久授權(quán),但之前并沒有基于ARMV8自研出自己的微架構(gòu),可能已經(jīng)在研發(fā)中了。
雖然在手機CPU方面還沒有自研微架構(gòu),但已有自研云端AI芯片“昇騰(Ascend )”系列,基于自研的達(dá)芬奇架構(gòu)
。不知道自研NPU微架構(gòu)與自研CPU架構(gòu)的難度差距有多大,但還是希望華為能早點自研出手機CPU微架構(gòu)。
就算能成功自研出了自己的CPU微架構(gòu),華為的路也還是不好走啊。
假設(shè)之后研發(fā)成功了,也還需要長期的驗證才敢投入使用,畢竟華為手機市場那么大,搭載自研微架構(gòu)處理器地手機一旦翻車,損失巨大。另外,這只是擁有ARMV8指令集的永久授權(quán),之后如果指令集更新迭代了,技術(shù)豈不是又要落后別人好幾代了~
2、內(nèi)核層級授權(quán)
內(nèi)核層級的授權(quán)是ARM公司設(shè)計出不同的微架構(gòu),其他芯片公司可以購買這些微架構(gòu),再添加一些自己的一些外設(shè)模塊,就可以設(shè)計出一個芯片。比如:
ST公司購買了了ARM公司的Cortex-M3內(nèi)核,然后加上圖上的一些外設(shè)模塊如TIM、IIC、SPI等這些模塊之后就可以設(shè)計出STM32F103系列芯片。
ARM的內(nèi)核層級授權(quán)客戶很多,如:ST、TI、三星、海思、瑞芯微、全志等。
3、使用層級授權(quán)
使用層級的授權(quán)就是可以使用封裝好的ARM芯片,而不能進(jìn)行任何修改。
作為最低的授權(quán)等級,擁有使用授權(quán)的用戶只能購買已經(jīng)封裝好的ARM處理器核心,而如果想要實現(xiàn)更多功能和特性,則只能通過增加封裝之外的DSP核心的形式來實現(xiàn)(當(dāng)然,也可以通過對芯片的再封裝方法來實現(xiàn))。
最后
以上就是本次的分享。如有錯誤,歡迎指出!
碼字不易,如果覺得文章有幫助,麻煩幫忙轉(zhuǎn)發(fā)轉(zhuǎn)發(fā),謝謝!
參考資料:
1、《嵌入式C語言自我修養(yǎng)》
2、《ARM嵌入式體系結(jié)構(gòu)與接口技術(shù)》
3、一文讀懂ARM架構(gòu)
4、三星放棄自研CPU架構(gòu)采用公版arm架構(gòu)是明智的選擇
5、其它