1

在多处理器架构中,寄存器是如何组织的?

例如,在 4 核处理器中,一次至少可以运行 4 个进程。
堆栈指针、程序状态寄存器和程序计数器是如何组织的?

其他通用寄存器呢?

我的猜测是,每个内核都会有一组单独的寄存器。

4

2 回答 2

5

想象一下 4 台完全独立的计算机,每台计算机都有一个单核 CPU。4核计算机就是这样;除了:

  • 所有 CPU 共享相同的物理地址空间(并且都可以使用相同的 RAM、PCI 设备等)
  • 可以设计中断/IRQ 控制器,以便操作系统可以告诉它哪个 CPU/s 应该被 IRQ 中断
  • CPU 通常能够相互发送信号(例如“处理器间中断”)
  • 一些 CPU 可能共享一些缓存
  • 一些 CPU 可能共享一些控制寄存器(例如,用于电源管理、缓存配置等)
  • 对于现代 CPU,一些 CPU 可能共享部分或全部执行单元(SMT、超线程等)
  • 对于现代系统(内存控制器内置在物理芯片中),一些 CPU 可能共享相同的内存控制器

其中大部分对大多数软件来说都是“不可见的”。除非您正在编写控制电源管理的操作系统的一部分,否则您不需要关心电源管理是否在 CPU 之间共享;除非您正在编写操作系统/内核的低级 IRQ 处理,否则您不需要关心 IRQ 如何到达设备驱动程序等。

这同样适用于实际存在的 CPU 数量。操作系统/内核通常确保应用程序只需要关心更高级别的抽象(例如“线程”)。这种更高级别的抽象如何工作取决于操作系统——通常(对于大多数操作系统)操作系统/内核试图通过“足够快”地在它们之间切换来提供所有线程同时运行的错觉(如果只有 4 个 CPU最多 4 个线程实际上同时运行),但它通常比这复杂得多(涉及线程优先级、抢占规则等)并且(即使它相对罕见)它可能非常不同(例如,对于某些系统,同一线程可能会同时在多个 CPU 上运行,以实现容错/冗余目的;对于某些系统,可能只有一个函数队列及其数据,其中多个函数同时运行;ETC)。

于 2012-11-05T09:41:23.267 回答
1

多处理器意味着在同一个平台上至少有两个独立的处理器——通常在同一个主板上

  • 一个子集是分布式多处理,例如,两台 PC 被编程为具有两个处理器的单个系统

多核意味着大部分或全部 CPU 在单个芯片上多次复制。- 这也意味着堆栈、状态、程序计数器和所有通用寄存器都被复制。

  • 超线程是一种技术,管道的每个阶段都执行来自不同进程的命令。

多处理意味着在操作系统级别上,一个进程所包含的所有内容都会时不时地切换。

多线程是多处理的轻量级变体,其中线程例如共享相同的代码段和相同的数据段、相同的文件描述符等,但具有唯一的堆栈(当然还有唯一的状态寄存器和程序计数器)

  • 也意味着一般的多处理(硬件架构)
于 2012-11-05T09:40:19.593 回答