【问题标题】:What is the difference between Instruction Set and Instruction Set Architecture (ISA)?指令集和指令集架构(ISA)有什么区别?
【发布时间】:2017-09-03 18:31:57
【问题描述】:

我无法理解指令集和指令集架构之间的区别。

我知道什么是指令集。 指令集只是定义了我们可以给处理器的可能指令,以及指令是如何给处理器的(因此是指令格式)。

现在什么是指令集架构?

我查阅了维基百科,它有一个关于指令集的页面,在里面,第一行有一个指向指令集架构的链接,该链接重定向到计算机架构。

那么指令集架构和计算机架构一样吗?

请有人解释一下 IS 和 ISA 之间的具体区别,以便我了解什么是 ISA 以及 ISA 将什么添加到指令集中。

【问题讨论】:

    标签: assembly computer-science cpu-architecture instruction-set


    【解决方案1】:

    这两个术语可以互换。

    这段话在同一个句子中同时使用了指令集架构和指令。

    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 论文对于进一步阅读该主题是一个很好的参考。

    【讨论】:

    • ISA 还包括指令之外的语义,例如保证原子性和内存顺序、如何传递中断、硬件页表格式、控制寄存器内容。所有这些东西都(或可以)独立于实际指令及其机器编码。指令编码通常意味着寄存器的数量,而不是它们的宽度,但是是的,这是一个重要的架构参数。 (通常但并非总是如此:具有寄存器滑动窗口(如 SPARC 或 IA-64)的 ISA 在机器代码 reg 字段中的寄存器多于 2^bits...)
    • 在区分很重要的上下文中,“指令集”通常不用于谈论其他一些事情。例如“x86 指令集包括一个原子比较交换”将与 ISA 一起使用,但反过来在“x86 ISA 具有强排序内存模型,基本上是程序顺序加上一个存储缓冲区与存储 -转发”。内存顺序是与指令集分开的架构的一部分。 (例如 Intel 的 vol.2 手册记录了指令集,vol.1 是整体架构,vol.3 是系统编程)。
    • 所以是的,在某些情况下区别并不重要,例如您找到的引号。公平地说,RISC-V 对“新指令集”的使用确实暗示了与之配套的新架构,但你可以争辩说他们将它用作 ISA 的真正同义词,或者他们只是暗示新指令集将成为新架构的一部分。
    【解决方案2】:

    不是真正的计算机架构,因为计算机涉及外围设备和 PCB,可能还有机箱、按钮、连接器等。

    指令集架构是事物的架构、外观和感觉。就像建筑物的结构一样。指令集是实现该架构的指令集。 (正如 Brendan 指出的那样,您可以拥有多个实现相同架构的集合)。一个很好的例子是 ARM,ARMv7-m 定义了一些/大部分 cortex-m(产品系列的营销名称)内核的架构。 cortex-m3、cortex-m4、cortex-m7 符合 ARMv7-m 体系结构,该体系结构在 ARM v7-m 的 ARM 体系结构参考手册中定义。但是这些是不同的内核,它们可能是从头开始完全重写,它们可能有不同深度的管道,一个可能有缓存和/或 fpu,而另一个没有。在这种情况下,有一个由架构定义的指令集,它们都符合(fpu 在这种情况下是一个例外,并且没有在架构中定义)。

    建筑师可能会为麦当劳设计建筑物或建筑指南,当您开车经过时,您会看到该建筑物,而无需查看徽标,您就知道它是麦当劳、温迪或必胜客。但并非所有这些建筑物都是由同一施工人员使用来自同一工厂的木材或来自同一供应商的油漆等建造的。指令集架构定义了架构,并且可能指令集定义了它实现的机器代码,但特定的芯片或为符合该架构而制造的核心可能不会完全相同,从表面上看,架构看起来相同,它看起来像一个 Taco Bell,但它可能与隔壁城镇的 Taco Bell 不同,你仍然可以购买 tacos当您使用该设施时,味道几乎相同。就机器代码/指令集而言,对来自同一架构的两个不同内核进行编程的外观和感觉是相同的,炸玉米饼的味道是一样的。但实施可能会有所不同(他们可能会将西红柿放在酸奶油之前而不是之后)。

    好、坏或其他,这两个术语经常互换使用,表示同一事物(指令集,可能是所讨论事物的机器代码指令)。

    【讨论】:

    • 好的,所以我现在明白了,ISA 只是说明一切都是可行的(“指令集架构就是架构,就是事物的外观和感觉。”)。指令集是 CPU 支持的所有指令。那么,说两个不同的 CPU 拥有相同的 ISA 可以有不同的完全不同的指令集是否正确?
    • 我会说不,那是一种不同的架构。在一定程度上理解这些术语以及如何使用它们取决于意见。也许芯片之间的细微差异 99% 相同,但一个有一些指令,另一个没有,但完全不同,我称之为不同的架构。
    • 好的,我现在明白了,如果我告诉你我的计算机的指令集架构,那么你肯定知道我的处理器的能力以及它的指令集。我想这是对的?
    【解决方案3】:

    “指令集”是特定 CPU 实际支持的指令集。

    “指令集架构”是 CPU(实现该 ISA)可能支持或不支持的指令集。

    例如,“80x86 ISA”包括各种扩展(64 位、SSE、AVX 等);但是对于旧的 80486(实现“80x86 ISA”),指令集不支持 64 位、SSE、AVX 等。

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2021-07-06
      • 2020-01-04
      • 2017-08-02
      • 2020-01-04
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多