指令集(架构)与微架构
如果把处理器比作是一个算盘的话,指令集架构就是算盘运算时使用的“加减乘除”这些法则,你看不见摸不着,但确实是客观存在的法则;微架构就是算盘上的算珠,你能看得见摸得着。所以,微架构决定着CPU内部原件“长什么样子”,它们如何排列;而具体的工作原理就是指令集架构所规定的。
1.指令集的概念
从应用问题到机器语言程序的每次转换都属于软件的范畴,而机器语言程序所运行的计算机硬件和软件之间需要一个“桥梁”,这个在软件和硬件之间的界面就是指令集体系结构(Instruction Set Architecture,ISA),简称体系结构或系统结构(architecture),它是软件和硬件接口的一个完整定义。ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。
ISA规定的内容包括:数据类型及格式,指令格式,寻址方式和可访问地址空间大小,程序可访问的通用寄存器的个数、位数和编号,控制寄存器的定义,I/O空间的编址方式,中断结构,机器工作状态的定义和切换,输入\输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件可以感知到的部分(硬件也可感知),也称软件可见部分。
(简单表述就是:ISA是计算机体系结构中与程序设计有关的部分,包含了基本数据类型,寻址模式,存储体系,中断,异常处理以及外部I/O.指令集包含一系列操作码(机器语言),以及由特定处理器执行的基本命令。)
不同的处理器“家族”–如Intel的IA-32和x86-64、IBM/Freescale Power和ARM处理器家族–有不同的指令集架构.指令集通常分为复杂指令集(CISC)和精简指令集(RISC)两大类。
x86以及其64位扩展系统x86-64架构的Intel微处理器、都属于CISC,主要针对的OS是windows和macOS。
PowerPC、MIPS(我国自主研发的龙芯使用的就是MIPS指令集架构)、ARM都属于RISC,包括IOS、Android在内的绝大多数移动操作系统使用的都是ARM指令集架构,都运行在RISC处理器上
2.微架构的概念
机器语言程序就是ISA规定的一个指令序列,因此,计算机硬件执行机器语言程序的过程就是让其执行一条条指令的过程。ISA是对指令系统的一种规定或结构规范,具体实现的组织称为微体系结构,简称微架构。ISA和微架构属于两个不同层面上的概念。微架构是软件不可感知的部分。例如,加法器的实现是采用串行进位方式还是并行进位方式属于微架构。相同的ISA可采用不同的微架构实现,例如,对于Intel x86这种ISA,很多处理器的组织方式不同,即具有不同的微架构,但因为它们都具有相同的ISA,所以在一种处理器上可运行的程序,在另一种微处理器上也可运行。(为啥?)
(可简述为:微架构是指一套用于执行指令集的微处理器设计方法,使用不同微架构的处理器可以共享一种指令集。)
参考文献:
1.《计算机系统基础》.袁春风
2.维基百科 3.科研造假,更可怕!龙芯,在造假的阴影中差点死去!