指令集和指令集架构之间的区别?

问题描述

谁能用不同的方式解释它们?

我在互联网上搜索了不同之处,但找不到。

解决方法

这些术语没有足够具体的含义来表示存在完全不同。例如,它们是 Stack Overflow 上的标签同义词。

如果您包含架构的其他属性,例如保证原子性的操作、内存模型、页表布局、硬件中断处理的语义,您可能会使用术语 ISA。

但如果您只是说“指令集”,那么您更有可能指的是有关可用指令及其机器代码编码的具体内容,例如Intel x86 手册的 vol.2 部分(HTML 摘录 https://www.felixcloutier.com/x86/)。因此,例如,原子 CAS 可用作 lock cmpxchg [mem],reg,加宽乘法/缩小除法和带进位加法 (mul / div / adc) 可用于扩展-精密的东西。 popcnt 可用于计算一条硬件指令中寄存器中的设置位。

或者更一般地说,x86 主要是用于 add reg,r/m 等指令的 2 操作数 ISA,AVX 和其他一些扩展添加了 3 操作数指令,例如 vaddps xmm0,xmm1,[rdi]

但是,在谈论架构提供的指令时,您肯定可以使用“ISA”。这些术语没有严格而快速的特定含义,在很多情况下它们可以互换使用。

如果您只是专门讨论指令而不是其他行为,则省略缩写的“架构”部分是有意义的,但您不必这样做。 (事实上​​,我在这个答案中自己做到了,当时我说 x86 是“2 操作数 ISA”,而 MIPS 是 3 操作数架构。)

在某些方面,我只是因为您的要求而试图在含义上创造一个可能的差异。如果您从使用上下文中没有发现作者正在区分的线索,请假设他们没有。