经常使用单片机开发应用的软件工程师,大部分时候不会留意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)了