1 CPU架构
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。目前市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,ARM公司是ARM架构。
2 指令集
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分。
复杂指令集,也称为CISC指令集,英文名是CISC,(Complex Instruction Set Computing的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即使是现在新起的X86-64(也被称为AMD64)都是属于CISC的范畴。
精简指令集(RISC:Reduced Instruction Set Computing RISC)是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。纽约约克镇IBM研究中心的John Cocke证明,计算机中约20%的指令承担了80%的工作,于1974年,他提出RISC的概念。许多当前的微芯片都使用RISC概念。
复杂指令集与精简指令集区别简化指令与复杂指令的区别!好文 – 楚广明 – 博客园 (cnblogs.com)
主流的CPU架构按照复杂和精简指令集可以按照如下区分:
CISC
:x86;RISC
:arm、RISC-V、LoongArc(龙芯)、MIPS;
3 x86、ARM、MIPS和loongARC架构的特点比较
(1) x86
架构特征:指令系统庞大,功能复杂,寻址方式多,且长度可变,有多种格式;各种指令均可访问内存数据;一部分指令需多个机器周期完成;复杂指令采用微程序实现;系统兼容能力较强。
架构优势:x86 架构兼容性强,配套软件及开发工具相对成熟,且 x86 架构功能强大,高效使用主存储器,因此在处理复杂指令和商业计算的运用方面有较大优势。
主要应用领域或使用场景:服务器、工作站和个人计算机等。
(2) ARM
架构特征:指令长度固定,易于译码执行;大部分指令可以条件式地执行,降低在分支时产生的开销,弥补分支预测器的不足;算数指令只会在要求时更改条件编码。
架构优势:ARM 结构具有低功耗、小体积的特点,聚焦移动端市场,在消费类电子产品中具有优势。
主要应用领域或使用场景:智能手机、平板电脑、工业控制、网络应用、消费类电子产品等。
(3) MIPS
架构特征:采用 32 位寄存器;大多数指令在一个周期内执行;所有指令都是 32 位,且采用定长编码的指令集和流水线模式执行指令;具有高性能高速缓存能力,且内存管理方案相对灵活。
架构优势:MIPS 结构 设计简单、功耗较低,在嵌入式应用场景具有优势。
主要应用领域或使用场景:桌面终端、工业、汽车、消费电子系统和无线电通信等专用设备等。
(4) loongARC
架构特征:融合X86/MIPS/ARM等主流指令系统的主要特点,高效支持二进制翻译。保持典型RISC风格:定长 32通用定/浮点 load-store结构;取消延迟槽,新增以PC为源操作的运算指令;实现位操作等多数指令集选择增加的指令。
4 CPU架构与指令集关系
CPU的硬件结构,即架构,一旦确定,那么使用该架构的CPU能实现的功能大体上是一样的,而且去实现该功能的指令集也大体上一样的。
设计CPU架构即决定了指令集,如X86指令集,是因为该CPU采用了X86结构,所以才叫X86指令集;指令集是指某种架构CPU能实现的所有功能,这些功能对应的代码编号构成指令集;代码编号应该就是指机器码这种底层代码,某种架构CPU架构确定后,代码编号就确定了,这些编号反映了CPU以什么样的方式去执行某些功能,决定了硬件的执行方式;前面说这些代码编号可能就是机器码,机器码就是二进制数字,二进制数字反映在电路上就是高低电平,从而驱动电路运行;不同代码编号的二进制数字排列就不同,所以驱动电路的高低电平就不同,所以电路执行的方式就不同。
相同的功能<-不同的电路实现<-不同架构的CPU<-不同的指令集<-汇编语言<-同一个程序
总结:不同架构的CPU,最终体现在CPU实现相同功能的方式不同,或者有的CPU具有其它CPU实现不了的功能,是某种架构独有的;而不同指令集实现对上层代码进行不同的翻译,对下操作不同的电路实现。
参考链接:关于CPU 架构与指令集的一些个人理解 – warmbeast – 博客园 (cnblogs.com)