CPU架构基础知识学习笔记
1)CPU
【中央处理器】Central Processing Unit,由内核、存储器和连接总线组成。内核中包括运算器和控制器,负责从存储器中提取数据并根据指令集解码、运算执行、然后将结果写回存储器。
CPU内核的基础是控制器中的指令集和微架构。
【指令集】(ISA,Instruction Set Architecture),规定了计算机可执行的所有微操作,包括一系列机器语言的、由特定处理器执行的基本命令(二进制操作码),还包括全部指令的指令格式、寻址方式和数据形式。一般被整合在操作系统内核最底层的硬件抽象层,是硬件与软件界限的接口,向操作系统定义了CPU的基本功能。
【微架构】完成指令集规定的微操作的底层电路设计,按照指令集的要求在硬件上实现相应的功能。相同的指令集可以存在不同的微架构。
【编译】程序被按照某种指令集的规范,翻译为CPU可识别的底层二进制代码的过程叫做编译(Compile)。
2)CPU架构
CPU的架构包含两个相关的部分:指令集架构和微架构,分别是不同层面的设计。对于一个CPU来说,首先要按其功能设计指令集,然后再按指令集的要求在硬件上实现底层电路的微架构。
根据CPU架构对应的指令系统是否精简,主要可以分为CISC和RISC。
【CISC】
复杂指令系统计算机(Complex Instruction Set Computer),是计算机诞生以来一直沿用的指令集方式。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。 顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。典型应用为X86、X64架构。
【RICS】
精简指令系统计算机(Reduced Instruction Set Computer),是一种执行较少类型计算机指令的微处理器。IBM研究中心的John Cocke证明,计算机中约20%的指令承担了80%的工作,他于1974年提出了RICS的概念。RISC能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。典型应用为ARM架构。
3)常见架构
【ARM】
是**“高级RISC机器”(Advanced RISC Machine)**的缩写。它是世界上授权最多、最广泛的处理器内核架构之一。
不同于x86等服务器体系结构,ARM架构的处理器只有25种基本指令类型,执行效率很高。这使得该架构的处理器拥有很多优点:成本效益高、体积小、运行功耗低等,十分适用于日益微型化的设备。
1978年,剑桥大学推出了第一款ARM处理器。1985年,Acorn Group Of Computers生产出第一款商用ARM处理器。ARM公司于1990年成立,其商业模式是向其他公司授权这些组件和指令集的知识产权。这样,其他公司就可以在这些处理器的基础上,结合自己的设计和ARM的设计构建系统。
ARM架构的初始设计为32位,但是随着时代的发展,目前也已经迭代到了64位的ARM64。
【x86】
泛指一系列基于Intel 8086且向后兼容的CPU指令集架构。Intel在早期以80x86这样的数字格式来命名处理器,包括Intel 8086、80186、80286、80386以及80486,由于以“86”作为结尾,因此该架构被称为“x86”,其中最早发布的8086是于1978年推出的16位处理器。x86的32位架构又被称作IA-32,全名为“Intel Architecture, 32-bit”,目前我们提到x86一般指的就是IA-32。
作为32位架构,IA-32必须在32位的RAM限制中运行,寻址空间只有32位,这意味着其内存极限是232Byte即4GB。随着计算机的发展,这对性能变成了一个极大的限制,Win7尚且可以接受这种限制,但对于服务器和工作站等性能大户来说,该架构已经逐渐变得捉襟见肘。
【x64】
指AMD于1999年设计的基于x86进行拓展的64位CPU指令集架构,可以认为是高级版的x86,向后兼容16位及32位的x86架构,也称为AMD64、x86-64,后来也被Intel所采用,Intel又称之为Intel64。
x64架构是当前Windows和Linux PC的主流架构,它建立在原始x86指令集的基础上而非完全取代它。其含有两种运行模式,分别为64位模式和兼容模式,后者允许用户运行16位和32位程序,由于整个x86指令集仍然在x64中运行,因此旧版本的程序在x64中运行几乎不会降低性能。这种渐进式的演变最大程度上保留了已经成熟的软件生态和用户数据,给用户从32位向64位的过渡留出了时间,最终使x64得以逐步取代x86,成为当前PC端的主流架构。
x64的最大进步是内存的寻址空间变成了64位,理论上可以达到1680万TB内存,远远高于目前操作系统可用的最大内存;且相对于x86的32位寄存器, 64位处理器拥有64位寄存器,因此x64允许CPU存储更多数据,并能更快地访问这些数据。
【闲话】
目前AMD和Intel是世界上最大的两家x86和x64的cpu厂家,相互之间渊源很深,专利交叉十分严重。
早期Intel设计了x86架构,之后AMD拿到了x86的授权也开始使用x86。在x64推出之前x86一直占据着PC端的主导地位,在发展中逐渐吸收了其他架构的优点,融入了很多RISC的思想进行优化,已经是一个相当成熟的生态了。
Intel也曾尝试迭代这种指令架构,在尝试向64位过渡时曾与惠普公司共同设计了IA-64架构,但由于和x86架构不兼容导致市场反应极差,大量用户在没有巨大性能提升的情况下很难有动力重新将使用转移到Intel的64位架构上。
此后AMD率先设计了兼容x86的的64位拓展即x86-64,市场反应良好,后来Intel也从AMD处拿到了该架构的授权并采用。因为是AMD首先设计的,所以x86-64也叫AMD64。现时英特尔也称之为“Intel 64”。
顺带一提,x86其实是Intel为进入大型高端服务器市场于1976年启动的8800计划的副产物。8800后来改名为iAPX 432(Intel Advanced Performance Architecture 432),Intel企图通过该计划打造可满足所有客户十年内需求的微型大型主机(Micro Mainframe)。最终iAPX 432造就了史无前例的极端复杂度,效能相当底下,被Intel于宣布完全放弃。而其副产物8086原名iAPX 86,本身是Intel为赚取8800计划研究经费顺带应付摩托罗拉等竞争对手的产物,而该系列却因在1979年得到IBM青睐从而开启了x86架构独霸PC端的时代,Intel更是在1985年推出了80386,将x86推进到32位架构。
4)参考文献
[Linux] CPU架构/指令集:RISC / CISC | arm | amd | X86/i386 | aarch64 - 千千寰宇 - 博客园 (cnblogs.com)
四大主流芯片架构,你了解多少?
回顾历史梦幻处理器:单芯片大型主机的幻梦与RISC崛起(80年代初)