1. MP Spec简介

    MP Spec即MultiProcessor Specification,简称MPS,中文翻译为多重处理器规范,定义了MP系统配置的数据结构。BIOS构建MP配置数据结构,将硬件以已知格式呈现给标准设备驱动程序或操作系统的硬件抽象层。该规范的总体概念如图 1.1所示。

    SylixOS x86中断探测(二)_中断

    图 1.1 总体概念

    MP Spec提供了两种将信息传递给操作系统的方法:一种符合一组常见硬件默认设置的最小配置方法,以及一种在硬件设计中提供最大灵活性的最大方法。图 1.2显示了MP配置数据结构的总体布局。

    SylixOS x86中断探测(二)_中断_02

    图 1.2 MP配置数据结构体

    MP兼容系统必须实现Floating Pointer Structure,该结构是16字节的倍数的可变长度数据结构。目前,只定义了一个16字节的数据结构。要确定系统是否符合MP规范,操作系统必须按照规范定义的顺序搜索Floating Pointer Structure。图 1.3显示了该结构的格式。其中Physical Address Pointer字段表明MP Configuration Table的起始地址。如果MP Configuration Table不存在则全为0。MP Feature Information Byte 1字段指定MP系统的默认配置类型。如果非零,则系统配置符合其中一个默认配置。

    SylixOS x86中断探测(二)_x86_03

    图 1.3 Floating Pointer Structure

    MP Configuration Table Header的格式如图 1.4所示。

    SylixOS x86中断探测(二)_中断_04

    图 1.4 MP Configuration Table Header

    MP Configuration Table Header之后跟着数量不固定的且长度可变的条目。每个条目的第一个字节标识条目类型。每个条目类型具有已知的固定长度。MP Configuration Table的总长度取决于系统的配置。软件必须遍历Base Table中的每个条目,直到达到Entry Count。 条目按照Entry Type升序排序。图 1.5给出了Entry Type的每个值的含义。

    SylixOS x86中断探测(二)_SylixOS_05

    图 1.5 Base MP Configuration Table Entry Types

    配置表包含一个或多个I/O APIC条目,每个I/O APIC条目的格式如图 1.6所示。

    SylixOS x86中断探测(二)_中断_06

    图 1.6 I/O APIC Entry

    I/O Interrupt Assignment Entries条目指示哪个中断源连接到各个I/O APIC中断输入。每个连接的I/O APIC中断输入都有一个条目。图 1.7显示了每个条目的格式。

    SylixOS x86中断探测(二)_SylixOS_07

    图 1.7 I/O Interrupt Entry

    其中中断类型有图 1.8所示几种。

    SylixOS x86中断探测(二)_x86_08

    图 1.8 Interrupt Type Values

  2. 参考资料

    《Intel Multiprocessor Specification》