1. 程式人生 > >談談ISA,CPU和SOC

談談ISA,CPU和SOC

著名:原文發表於智聯網事微信公眾號(iotthings), 作者在大型SOC外企工作六年,歡迎相關市場開發人員聯絡交流。

經常使用微控制器開發應用的軟體工程師,大部分時候不會留意CPU和SOC的區別,對ISA就更是不清楚,本文,本文將介紹ISA, CPU 和SOC的區別及相關的技術。

(一) ISA, CPU及SOC的概念

我們先以最近火熱的華為 Mate20主控麒麟980舉例:華為的麒麟980是一款處理器(SOC, System on a chip),其基於ARM Cortex-A76微架構(CPU,Central processing unit),而Cortex-A76是基於ARM公司的ARMv8.2-A指令集架構(ISA,Instruction SetArchitecture)設計的。這裡我們可以看到,從ISA到SOC,類似從一塊地到樓房一樣基於關係,ISA是基礎,CPU是處理核心,而SOC是系統。

(二) ISA,指令集體系結構

ISA(Instruction-Set Architecture)是計算機的一個抽象模型描述,它做為計算機硬體及軟體的一個服務介面,定義了一個硬體程式設計工程師(CPU設計師)設計需要的資訊,包括

支援的資料型別

儲存體系,暫存器及其對應的操作(定址,讀寫)

指令集及指令集編碼

輸入輸出模型

基於一個ISA實現的處理器(CPU)效能可能不同,但是,其軟體支援的執行程式碼是可以相容的。目前常見的兩種指令集架構包括CISC(Complex Instruction Set Computer) 和RISC (Reduced Instruction Set Computer)。針對CISC及RISC的更多技術知識,可以參考文章

《RISC與CISC(精簡指令集與複雜指令集)比較》

https://blog.csdn.net/u010275850/article/details/46129071

基於CISC的指令集有:X86

基於RISC的指令集有:PowerPC,MIPS,SPARC

(三) CPU,中央處理器

CPU(Center Processing Unit)是基於ISA具體的硬體實現,其一般包括輸入輸出單元,控制單元,運算單元及儲存單元。比如大家通常說的Cortex-M3就是一個CPU,其實現的指令集是ARMv7-M。CPU之於ISA就好比圖紙與實物。關於ARM指令集與Cortex-Mx系列的對應關係及相關介紹,可以參考下面的文章

《分清Cortex-M系列處理器指令集》

https://blog.csdn.net/chenhaifeng2016/article/details/70314238

(四) SOC,片上系統

SOC(System On Chip),在使用微控制器的時候,大家通常會談到一些資源,比如Flash, RAM, ADC,PWM,AES,Timer等等,這些就是SOC的片上外設,所以SOC是基於CPU,加上外設後實現的。所以同樣基於Cortex-M3,Cortex-M4的處理器,其外設部不一樣,原因之一就是SOC可以選擇配套對應的CPU外設。SOC也就是我們常說的微控制器(MCU)了

歡迎關注智聯網事,並留言交流。