Inter MultiProcessor specification Version 1.4

本文详细介绍了Inter MultiProcessor规范v1.4中的多核CPU启动机制,包括MP Floating Pointer Structure、MP Configuration Table及其各个组件如Processor Entries、Bus Entries、I/O APIC Entries等,阐述了操作系统如何获取和处理多核启动信息。

注意: PDF Link Inter MultiProcessor specification Version 1.4

3.9 多核CPU启动

操作系统必须允许访问多核启动信息配置。MP规范提供两个方法向操作系统传递这些信息: 一个是遵循一组常见硬件默认设置的简单方法、另一个是可以根据硬件灵活设计的复杂的方法。

MP Configuration Table

两个结构体作用:

  • MP Floating Pointer Structure 这个结构提供了一个物理地址指针,指向了MP 配置表和其他MP特征信息。如果这个结构存在,则当前系统符合MP规范。它必须储存在至少一个如下的内存区中,因为操作系统按照下面的顺序搜索这个结构体:
    • 在BIOS拓展空间(EBDA)的前1K字节中
    • 在系统基础内存的最后1K字节中(例如,系统基础内存为640KB 在639K-640K之间 ,或者系统内存为512KB 在511K-512K之间 )
    • 在BOIS ROM地址空间中(0F0000h 到 0FFFFFh)
  • MP Configuration Table 这个结构是可选的。这个结构由基础部分和拓展部分组成。基础部分包括完全向后兼容的先前版本的结构。拓展部份包括额外的入口标志。MP配置结构包括详细的高级可编程中断控制器,处理器,总线和中断信息。入口标志决定了这个结构的格式和长度。如果这个结构存在,它必须储存在non-reported系统内存区或者BIOS制度内存区。

如果系统设计和默认配置相对应则不需要MP配置表。注意,默认配置只针对那些总是配有两个处理器的设计。支持处理器数量可变的系统必须提供一个完整的MP配置表,它指示了可以提供的处理器数量。例如,只使用一个处理器的系统但是为以后的升级提供了两个处理器可能不使用默认的MP。
MP配置表可能位于下列的内存中

  • 在EBDA的前1K字节中
  • 在系统内存的后1K字节中
  • 在系统物理内存的开始
  • 在BIOS的只读内存中
MP Floating Pointer Structre

MP Floating Pointer Structre

struct _MP
{
    char signature[
### 多核处理器与多处理器架构的区别 在计算机体系结构中,核心(Core)、中央处理单元(CPU)、处理器(Processor)、多核处理器(Multicore Processor)以及多处理器系统(Multiprocessor System)是几个密切相关但具有不同含义的概念。 #### 核心(Core) 核心是指执行指令的一个独立计算单元。现代处理器通常由多个核心组成,每个核心可以独立运行不同的进程或线程[^1]。这意味着即使在一个单一的物理芯片上,也可以通过并行化提高性能。 #### 中央处理单元(CPU) CPU 是指整个微处理器芯片,它可能包含一个或者多个核心。因此,在讨论 CPU 的时候,我们实际上是在谈论一块完整的硅片及其所有的功能部件——不仅限于核心还包括缓存、控制逻辑等其他组件[^2]。 #### 单一处理器 vs. 多处理器 当提到 “处理器” 这个术语时,如果没有特别说明数量,则默认指的是只有一个单独工作的实体即单处理器环境;而在某些情况下会涉及到两个及以上相互协作完成任务的情况称为多处理器配置。后者允许更大规模的任务分配从而提升整体吞吐量但是也可能带来额外开销比如通信延迟等问题[^3]。 #### 多核处理器(Multicore Processors) 这是在同一颗硅晶圆内部集成了若干个同构或异构的核心的技术方案。这些共享同一地址空间并通过高速互连网络紧密相连起来形成统一的整体来共同承担工作负载。相比于传统意义上的SMP(Symmetric Multiprocessing),MC(Multi-Core) 更加紧凑高效因为它减少了跨节点间的数据交换次数进而降低了功耗需求同时也简化了编程模型使得开发者更容易利用硬件资源实现真正的并发操作[^4]。 #### 多处理器系统(Multiprocessor Systems) 相比之下,一个多处理器系统是由两台甚至更多完全分离却彼此关联在一起运作的一组机器构成的大规模分布式计算平台。它们之间一般通过外部总线或者其他形式专用链路进行消息传递以协调各自的行为模式达到最终目标—解决复杂科学工程难题或是提供高性能服务器端服务等功能应用场合下表现出色。然而值得注意的是这种类型的设置往往伴随着较高的初始购置费用以及维护成本还有潜在的安全隐患等方面因素需要考虑进去才行[^5]。 ```python # Example Python Code Demonstrating Multi-threading with Multiple Cores Using threading Module. import threading def worker(): """thread worker function""" print('Worker') threads = [] for i in range(5): t = threading.Thread(target=worker) threads.append(t) t.start() ``` 上述代码片段展示了如何使用Python标准库中的`threading`模块创建五个新线程,并让它们分别调用名为 `worker()` 的函数。虽然这里并没有直接涉及具体的CPU调度策略等内容,但它确实体现了多线程程序设计的基本思路之一:将可分割的工作分解成较小的部分交给不同的线程去执行以便充分利用系统的可用计算能力包括但不限于多核特性所带来的好处等等[^6]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值