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