Instruction Set Architecture
本页旨在提供一些各种类型指令集的解释。 列出了从最简单到最复杂指令集的指令集类型。
另见 Historical Notes on CISC and RISC。
丘奇-图灵的论文
艾伦·图灵 (1912-1954) 在计算机科学的早期具有很高的影响力。 Church-Turing论文指出,任何可由人类计算的算法 (没有时间和内存限制,也没有故障) 都可以由“图灵机”计算。
要实现“图灵完备”,一台机器必须能够加载数据,根据一组规则对数据进行更改,然后再将数据进行存储。 加载和存储值是不言自明的,有趣的部分是处理。
常见算法:
- 逻辑运算: 可能不会注意到,但是例如大脑在日常挑战中使用的决策是一种简单的状态机,每个状态机都可以用逻辑运算表示。
- 比较运算: 这个红色比这个亮吗?答: 是或否。 请考虑上面的示例。 比较是通过加法、减法(这里更确切地说是减法)来实现的。 比较运算可以通过逻辑运算实现。
- 乘法/除法运算: 使用f.e.在施加权重的情况下。 可以通过加法和减法实现,加法可以通过逻辑运算来实现,因此...
- 并集/差集运算: 任何物理定律都可以通过使用并集和差集来描述实现。 可以通过乘法、除法(这里更确切地说是除法)来实现,而这都可以通过算术和逻辑函数来实现。
您可能已经注意到,所有内容都可以通过逻辑运算实现。 这很重要: 能够执行任何逻辑运算意味着具有Church-Turing能力。
确切地说,只需要具有两个输入和一个输出的单个逻辑运算能力,例如 NAND。 也可以找到其他 “完整” 逻辑运算函数集,但NAND是最常见的。
任何指令集体系结构 (ISA) 都是具有Church-Turing能力的。
= 弗林(Flynn)的瓶颈和费舍尔(Fisher)的乐观 =
1970年,M. J.弗林 (* 1934) 发现一个非常有趣的事实: 如果每个周期仅获取 (加载) 一条指令,则每个周期将永远不会获得多条已执行指令。 (这对每个物理ALU都有效。)
J.A. Fisher (* 1946) 在1984年认为,数组 (打包) 数据结构可以实现每个周期更多的执行指令。
当谈到RISC/CISC的问题/优势时,这将变得很重要。
单指令集
所谓的终极精简指令集计算机 (URISC) 或单指令集计算机 (OISC) 仅由一条指令编程。 该指令必须能够决定、移动数据、计算和跳转到指令流中的不同目标。 通常这些这只有在复杂的指令下才有可能。
由该指令集架构编程的计算机的应用程序会具有冗长的程序,因此该指令架构仅具有理论意义。 有关更多信息,请参阅wikipedia上的 单指令集计算机。
最小指令集 Minimal Instruction Set
它由少于32条指令定义 (不能真正区分MISC和RISC)。大多数情况下,misc是堆栈机器。 由于缺少安全功能和冗长的程序,此指令集架构也不再使用,但对它的说明包含在了更复杂的指令集架构中。 有关更多信息,请参阅 最小指令集计算机。 这类指令集已在一些早期的计算机如 ENIAC 上使用。
精简指令集 Reduced Instruction Set
RISC提供快速和简单的基本指令,例如条件跳跃、逻辑函数、加法/减法、乘法/除法等。 它的执行环境很简单,因为RISC不能提供复杂的指令。 这可能会导致安全问题。 通常,Flynn的瓶颈适用是因为数据不能在高级结构中处理,因为指令集架构必须是简单的定义。 RISC 指令集的实用例子包括以前的 ARM 和 MIPS 时代。
复杂指令集
CISC实现化了简单和额外的复杂指令。 它主要带有不同的执行环境和安全功能。 特别是像SSE(Streaming SIMD Extensions,单指令多数据流扩展)这样的流水线扩展设计必须要点名提出来。 它是当今单纯的RISC处理器几乎消失的原因。 Flynn瓶颈问题仍适用,但是通过使用流水线扩展,减少其影响力并CPU转向Fisher乐观的机会就会很快增加。 另外其他高级功能还可能会起到减少内存访问的好处,内存访问会导致CPU中的空闲时间。 显然,CISC体系结构的优势在于它们的功能,但这种复杂性也是一个缺点,并且可能导致它需要处理严重的安全问题。 CISC体系结构,例如 M68K 或 6502,在计算的早期很常见,当时优化编译器技术还并不先进。 还有一个仍在使用的CISC架构是x86 (包括x86_64)。
混合指令集
现代cpu建立在混合RISC-CISC架构之上。 RISC处理器可以更轻松地构建,有更快的节奏时钟,但是缺少CISC的高级指令。 为了两全其美,我们建造了一种混合架构。 RISC用作ALU,并由CISC环境包裹。 任何指令均由此CISC解释,并被拆分为一个或多个子指令,称为RISC的 “微操作码(micro-opcodes)”。 此外,CISC包装提供了安全性以及操作系统的稳定性和控制性。 如今,只有微控制器还使用纯RISC; 任何其他CPU或多或少都是混合RISC-CISC CPU。