经常使用单片机开发应用的软件工程师,大部分时候不会留意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(精简指令集与复杂指令集)比较》



基于CISC的指令集有:X86

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

(三) CPU,中央处理器

CPU(Center Processing Unit)是基于ISA具体的硬件实现,其一般包括输入输出单元,控制单元,运算单元及存储单元。比如大家通常说的Cortex-M3就是一个CPU,其实现的指令集是ARMv7-M。CPU之于ISA就好比图纸与实物。关于ARM指令集与Cortex-Mx系列的对应关系及相关介绍,可以参考下面的文章

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

(四) SOC,片上系统

SOC(System On Chip),在使用单片机的时候,大家通常会谈到一些资源,比如Flash, RAM, ADC,PWM,AES,Timer等等,这些就是SOC的片上外设,所以SOC是基于CPU,加上外设后实现的。所以同样基于Cortex-M3,Cortex-M4的处理器,其外设部不一样,原因之一就是SOC可以选择配套对应的CPU外设。SOC也就是我们常说的单片机(MCU)了