【概念】
- 指令集/指令集架构(ISA, Instruction Set Architecture),是CPU中用来计算和控制计算机系统的一套指令的集合。指令强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。
- 指令集概念较为模糊和虚化,对于开发者而言,指令集是一个指令列表,涵盖了几百种CPU指令命令,对于CPU而言,指令集是一连串的“01010101”电信号,每种电信号代表一种运算命令。而CPU的设计当中,就必须固化好各种指令对应的芯片电路模块。
- CPU依靠指令来计算和控制系统,CPU在设计之初就规定了一系列与其硬件电路相配合的指令系统。与其他硬件电路相配合,决定的是这一款CPU的生态系统。因此,指令集搭建的是一个桥梁,是软硬件之间沟通的桥梁。不同的CPU指令集,决定了CPU设计的复杂程度。
- 根据现阶段的主流体系架构,指令集可分为复杂指令集(CISC)和精简指令集(RISC),对应微处理器也由此分为上述两类。
- CISC是一种为了便于编程和提高存储器访问效率的芯片设计体系(X86架构)。RISC是一种为了提高处理器运行速度的芯片设计体系(ARM架构、RISC-V、MIPS),其关键技术在于流水线操作(Pipelining),即在一个时钟周期内可完成多条指令,超流水线以及超标量技术已得到广泛使用。
- CISC的CPU执行的大多数时间是在访问存储器中的数据,而不是寄存器中的,导致系统处理速度相较缓慢(X86指令集只有8个通用寄存器),寻址范围小。其大量的复杂指令、可变的指令长度、多种的寻址方式增加了解码(X86 CPU所属,将长度不定的X86指令转换为长度固定的类似于RISC的指令,并交给RISC内核)的难度。
- 以RISC为架构体系的ARM指令集的指令格式统一,种类较少,寻址方式也较少。因而系统处理速度较快。其特点:体积小,低功耗,低成本,高性能;支持16 位的Thumb与32 位的ARM双指令集,兼容8 /16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定;流水线处理方式;load-store结构。
- ARM的部分非RISC思想的指令架构:允许一些特定指令的执行周期数字可变,以降低功耗,减小面积和代码尺寸;增加了桶形移位器来扩展某些指令的功能;使用了16位的Thumb指令集来提高代码密度;使用条件执行指令来提高代码密度和性能;使用增强指令来实现数字信号处理的功能。
- ARM指令集主要分为ARM指令和Thumb指令,分别针对不同的应用场景和性能需求。ARM指令:采用32位长度,每条指令能够携带更多的操作信息和寻址模式,支持更为复杂的操作。Thumb指令:采用16位长度,保持一定性能的同时,降低功耗和提高代码密度。相比ARM指令,Thumb指令集的紧凑性使得代码占用更少的存储空间。
【部分ARM指令实例】