我正在尝试编写一个支持多处理器的操作系统,但是我不知道如何为 AMD 引导多处理器,我已经搜索了 AMD 主页以找到 MP 规范,但没有找到,谁能告诉我链接地址?
2 回答
似乎没有特定于 AMD 的版本。我认为这是合理的,因为 AMD 的 x86 CPU 应该与 Intel x86 CPU 大部分兼容。
引用自维基百科:
x86 架构的多处理器规范 (MPS) 是一个开放标准,描述了对操作系统和固件的增强,这将允许它们在多处理器配置中与 x86 兼容处理器一起工作。
使用来自英特尔的那个。
有两个标准允许您获取有关系统中逻辑处理器的信息。首先是英特尔多处理器规范 (MP),其次是高级配置和电源接口 (ACPI)。
MP 较旧,现在已弃用。虽然它仍然可以在不存在 ACPI 表的旧机器上使用,但不应依赖于较新的机器。事实上,当 ACPI 表存在时,MP 表不需要是健全的并且很可能包含垃圾;这可能是您的代码在 32 位机器上工作的原因,而不是在 64 位机器上工作的原因。
在编写(S)MP代码时,首先要检查是否有ACPI表可用(查找RSDP,如果存在XSDT,则使用它,否则使用RSDT;接下来,查找MADT并解析表的LAPIC条目以查找LAPIC ID存在逻辑核心),并且仅当它们不存在时才回退到 MP。
所讨论的 CPU 是 AMD 还是 Intel 并不重要。它们大多是兼容的,除了少数极端情况下不兼容的指令实现或解释。不同 CPU 型号之间唯一可以改变的是 AP 启动顺序,但在这方面微架构之间的差异在 Intel 和 AMD 手册中有描述。