CPU、架构和操作系统

CPU、架构和操作系统
  1. 我想知道操作系统、指令集、CPU 寄存器、从 CPU 到内存的数据总线以及从 CPU 到内存的地址总线的位是否在某种意义上必须一致,以及如何一致?
  2. 当我们讨论架构的各个部分时,它指的是上述哪一个?
  3. 当我们说 CPU 的位时,它指的是上述哪一个?
  4. 为什么在表中 http://en.wikipedia.org/wiki/Comparison_of_CPU_architectures,寄存器的位有时比架构的位大,有时小?它们不是应该更大吗?
  5. 当我们说操作系统或应用程序的位时,它是什么意思?是什么意思?它们必须与指令集的位相同吗?

感谢致敬!

答案1

  1. 任何特定阶段(寄存器、数据总线、地址总线甚至指令)的位宽不必与任何其他阶段的位宽相匹配。无论在该 CPU 上运行什么操作系统,都必须了解每个阶段的限制并加以考虑。

  2. 通常,当我们说 32 位或 64 位时,我们指的是 CPU 可用的地址线数量,这通常与地址寄存器位宽同义,因为这是最受限制的因素。可以使用少量数据线通过多次传输来传输数据,但内存地址却不能这样。每个地址都必须通过地址物理选择线并且至少要有足够的地址线和地址位。

  3. 与2号相同。

  4. 寄存器(尤其是特殊数据寄存器,如 SSE)可以处理比数据总线的一般位宽更多的数据,并且虽然有些指令规定“从内存位置 X 中获取该字节并存储在寄存器 y 中”,但也有指令规定“从内存位置 x 和 x + 1 中获取数据并存储在特殊寄存器 z 中”,这些指令将使用两次内存传输来获取两条数据,并且只有在寄存器 z 填充了两条数据后指令才会返回。

    这样,数据寄存器的内部宽度就不必与外部数据总线宽度匹配,因为您可以简单地等待更长时间让数据被拉入处理器。这仅适用于数据用于内存。

  5. 再次,我们通常指的是可用的地址位数,以及可用的内存量。

您可能需要考虑在简单的 CPU 上进行编程,例如Z80因为它是一个众所周知且相对简单的 CPU,但可以让您深入了解它和当前 CPU 的限制和使用方式。虽然现代 CPU 的复杂程度要高出几个数量级,指令也多得多,但 Z80 可以让您很好地了解通用 CPU 的工作原理的基本原理。

答案2

32 位与 64 位指的是硬件(特别是 CPU)的地址空间。CPU 使用单个 32 位或 64 位整数来访问内存。

例如,无符号 32 位整数只能访问 40 亿个地址,即 4 GB 的 RAM。如果操作系统只有 32 位,而 CPU 是 64 位,那么 CPU 只会使用 32 位寻址空间。

另一方面,指令集定义了操作系统发送给 CPU 的代码,以便完成工作。这些代码包括移动、复制等。这些操作发生在寄存器之间。CPU 寄存器永远不足以容纳所有可能的 CPU 寻址空间。无论如何,这只有在谈论 RAM 时才会真正产生影响。

寄存器仅用于存储中间计算中的值,例如存储常用的整数。如果您查看 MIMIX 架构,它是 64 位的,但有 256 个寄存器。寄存器的数量是芯片规格的一部分,而不是某些硬件限制。

寄存器的数量和类型是芯片设计优化,取决于 CPU 的预期用途。更一致的设计(如 x86 和 x86-64)意味着操作系统开发人员可以进行更多通用设计,而更具体的设计则是针对特定操作系统开发的。

我不太了解低级芯片设计,但这是我从大学电子工程课程和维基百科中了解到的知识=)。

相关内容