【问题标题】:Factors in designing Instruction set Arcitecture设计指令集架构的因素
【发布时间】:2016-12-28 07:38:39
【问题描述】:

在设计指令集架构时要考虑的两个主要因素是什么?

我知道 ISA 是什么。但是要考虑哪些因素呢?我已经查看了 Wikipedia,但没有多大帮助。

我发现这是 ISA 的设计问题。

  • 向后兼容性
  • 是否需要中断?

但是这两个因素我是不是有点糊涂了!请帮助任何人!准备计算机组织和架构考试

【问题讨论】:

  • 抱歉英语不好!我来自尼泊尔。
  • “的”两大因素?有很多重要的因素。不明显的是,其中两个应该被称为比其他任何因素都更重要。例如,参见this article and the following discussion on Agner Fog's blog about designing a new ISA for high-performance computing,试图将 RISC 的高效解码优势与可变长度 CISC 的更高代码密度相结合。那里肯定有一些巧妙的想法。
  • 如果你正在准备考试,你可能应该问你的教授他/她认为什么是“两个主要因素”,因为我怀疑现实世界的 CPU 架构师会同意哪两个,除非我忽略了一些明显的东西。是否喜欢可变长度指令字,以及寄存器数量?一些 ISA(如 AVR)通过让一些指令只能在有限范围的寄存器上操作来解决寄存器计数问题。 AVR 有 32 个寄存器,因此每个寄存器需要 5 位,但大多数指令只有 16 位长。
  • 或许最重要的是它是否是一台注册机。您可以想象一种架构,其中所有指令仅使用内存操作数,没有寄存器。
  • 谢谢彼得!现在我可以将这与我所研究的内容联系起来。我确实找到了可变长度和寄存器数量!现在我有些自信了!非常感谢!

标签: cpu-architecture instruction-set


【解决方案1】:

您可以从here阅读全文 指令集设计的重要性

在本章中,我们将探讨 CPU 设计中最有趣和最重要的方面之一:CPU 指令集的设计。指令集架构(或 ISA)是 CPU 设计人员从一开始就必须解决的最重要的设计问题之一。缓存、流水线、超标量实现等功能都可以在原始设计过时很久之后移植到 CPU 设计中。但是,一旦 CPU 投入生产并且人们正在编写使用这些指令的软件,就很难更改 CPU 执行的指令。因此,必须谨慎选择 CPU 的指令。

您可能很想在指令集设计中采用“厨房水槽”方法1,并在指令集中包含尽可能多的指令。这种方法失败的原因有几个,我们将在下面的段落中讨论。指令集设计是妥协管理的缩影。良好的 CPU 设计是选择丢弃什么而不是留下什么的过程。说“让我们包含所有内容”很容易。困难的部分是一旦你意识到你不能把所有东西都放在芯片上,就决定要省略什么。

糟糕的现实#1:硅空间。“将其全部放在芯片上”的第一个问题是,每个功能都需要 CPU 的硅芯片上有一定数量的晶体管。 CPU 设计人员使用“硅预算”,并获得有限数量的晶体管可供使用。这意味着没有足够的晶体管来支持在 CPU 上“放置所有功能”。例如,最初的 8086 处理器的晶体管预算不到 30,000 个晶体管。 Pentium III 处理器的预算超过 800 万个晶体管。这两个预算反映了 1978 年与 1998 年半导体技术的差异。

糟糕的现实#2:成本。 虽然现在可以在 CPU 上使用数百万个晶体管,但使用的晶体管越多,CPU 的价格就越高。例如,奔腾 IV 处理器要花费数百美元(大约 2002 年)。一个只有 30,000 个晶体管的 CPU(也是 2002 年左右)只需几美元。对于低成本系统来说,减少一些功能并使用更少的晶体管可能更重要,从而降低 CPU 的成本。

糟糕的现实#3:可扩展性。“厨房水槽”方法的一个问题是很难预测人们会想要的所有功能。例如,添加了 Intel 的 MMX 和 SIMD 指令增强功能,使多媒体编程在 Pentium 处理器上更加实用。早在 1978 年,很少有人能够预料到需要这些说明。

糟糕的现实#4:遗留支持。这几乎与可扩展性相反。通常情况下,CPU 设计人员认为很重要的指令实际上并没有预期的那么有用。例如,80x86 CPU 上的 LOOP 指令在现代高性能程序中几乎没有使用。 80x86 ENTER 指令是另一个很好的例子。在使用“厨房水槽”方法设计 CPU 时,通常会发现程序几乎从不使用某些可用指令。不幸的是,您不能轻易删除处理器更高版本中的指令,因为这会破坏一些使用这些指令的现有程序。一般来说,一旦你添加了一条指令,你就必须在指令集中永远支持它。除非很少有程序使用该指令(并且您愿意让它们中断),或者您可以在软件中自动模拟该指令,否则删除指令是一件非常困难的事情。

糟糕的现实#4:复杂性。 新处理器的受欢迎程度很容易通过人们为该处理器编写的软件量来衡量。大多数 CPU 设计都会很快死亡,因为没有人编写特定于该 CPU 的软件。因此,CPU 设计人员必须考虑在引入芯片时将使用该芯片的汇编程序员和编译器编写者。虽然“厨房水槽”方法似乎对这些程序员有吸引力,但事实是没有人想学习一个过于复杂的系统。如果您的 CPU 在阳光下可以做所有事情,这可能会吸引已经熟悉 CPU 的人。但是,可怜那个不知道芯片的可怜的灵魂,必须一次学会它。

“厨房水槽”方法的这些问题都有一个共同的解决方案:设计一个简单的指令集作为开始,并为以后的扩展留出空间。这是 80x86 被证明如此受欢迎和寿命长的主要原因之一。英特尔从一个相对简单的 CPU 开始,多年来想出了如何扩展指令集以适应新功能。

【讨论】:

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