我无法理解指令集和指令集架构之间的区别。
我知道什么是指令集。 指令集只定义了我们可以给处理器的指令以及指令如何给处理器(因此指令格式)。
现在什么是指令集架构?
我查了维基百科,它有一个关于指令集的页面,在第一行有一个指向集架构的链接,它重定向到计算机体系结构。
指令集架构与计算机架构相同吗?
请有人解释IS和ISA之间的具体区别,以便我能理解什么是ISA以及ISA添加到指令集的内容。
答案 0 :(得分:1)
“指令集”是特定CPU实际支持的指令集。
“指令集架构”是CPU(实现该ISA)可能支持或不支持的指令集。
例如,“80x86 ISA”包括各种扩展(64位,SSE,AVX等);但对于旧的80486(实现“80x86 ISA”),指令集不支持64位,SSE,AVX等。
答案 1 :(得分:1)
作为计算机,计算机体系结构并非真正涉及外围设备和PCB,也可能涉及机箱,按钮,连接器等。
指令集架构是架构,事物的外观和感觉。就像建筑的建筑一样。指令集是实现该体系结构的指令集。 (正如Brendan指出的那样,你可以有多个实现相同架构的集合)。一个很好的例子是ARM,ARMv7-m定义了部分/大部分cortex-m(产品系列的营销名称)核心的架构。 cortex-m3,cortex-m4,cortex-m7符合ARMv7-m架构,该架构在ARMv7-m的ARM架构参考手册中定义。但这些是不同的核心,它们可能是从头开始完全重写,它们可能有不同的深度管道,一个可能有一个缓存和/或fpu,而另一个不。在这种情况下,有一个由它们都符合的架构定义的指令集(在这种情况下fpu是一个例外,在架构中没有定义)。
建筑师可以为麦当劳设计建筑物或建筑指南,当你开车时,你会看到那栋建筑,而不看徽标,你知道这是一个麦当劳或者一个小屋或一个披萨小屋。但并非这些建筑物的每个人都是由同一建筑人员使用同一工厂的木材或同一供应商的油漆等建造的。指令集架构定义了架构,可能还有指令集,它所实现的机器代码,但具体的芯片或为了符合该架构而制造的核心可能不是同样建造的,表面看起来相同,它看起来像塔可钟,但它可能与下一个城镇的塔可钟不同,你仍然可以买到炸玉米饼当你使用那个设施时,味道几乎一样。就机器代码/指令集编程而言,来自相同架构的两个不同核心的外观和感觉相同,炸玉米饼味道相同。但实施可能会有所不同(他们可能会把西红柿放在酸奶之前而不是之后)。
好,坏或者其他,这两个术语经常互换使用,意思相同(指令集,可能的机器代码说明)。
答案 2 :(得分:0)
这两个术语可以互换。
这段话在同一句话中同时使用了指令集架构和指令。
https://en.wikipedia.org/wiki/Instruction_set_architecture
<块引用>指令集架构有别于微架构,微架构是在特定处理器中用于实现指令集的一组处理器设计技术。具有不同微架构的处理器可以共享一个通用指令集。例如,Intel Pentium 和 Advanced Micro Devices Athlon 实现了几乎相同版本的 x86 指令集,但内部设计完全不同。
本文解释了 RISC-V 的另一个例子:https://digitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2016-1.pdf
大部分论文使用指令集架构或 ISA,但第 2 章的标题是“为什么要开发新指令集?”。接下来是这段话:
<块引用>同样重要的是流行的商业说明的巨大复杂性 集。它们很难在硬件中完全实现,但几乎没有动力 创建更简单的子集ISA
您再次看到指令集和指令集架构 (ISA) 可以互换使用。
指令集架构/指令集最好被认为是“接口”。符合该接口的机器代码将在任何实现该接口的 CPU 上运行(无论该 CPU 的微架构/实现细节如何)。
这包括更多,而不仅仅是一组说明。组成指令的字节必须与操作数和其他参数一起正确定位。寄存器的数量和大小以及其他细节(如内存对齐和字节序)很重要,机器代码必须符合这些细节才能在 CPU 上正确运行。上述 RISC-V 论文是进一步阅读该主题的重要参考。