向内存映射配置分配处理器转让专利

申请号 : CN201380071515.4

文献号 : CN105264506B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·巴沙

申请人 : 慧与发展有限责任合伙企业

摘要 :

本文的实施例涉及向内存映射配置分配处理器。可访问外设部件互连(PCI)段的不同总线的处理器被静默。向被静默的处理器分配内存映射配置。

权利要求 :

1.一种用于向内存映射配置分配处理器的设备,包括:主处理器,用于静默所述设备上运行的一个或多个从处理器,所述处理器中的每个能使用基于32位的内存映射配置来访问外设部件互连(PCI)段的不同总线;以及服务单元,用于在所述主处理器指示所述一个或多个从处理器被静默之后,切换至64位内存映射配置,其中在所述服务单元切换至所述64位内存映射配置之后,所述处理器中的每个被分配给所述PCI段的多个实例中的一个,所述多个实例中的每个能访问所述PCI段的所有总线。

2.根据权利要求1所述的设备,其中,

所述服务单元将通过边带机制切换至所述64位内存映射配置,并且所述边带机制是平台环境控制接口(PECI)和系统管理总线(SMBus)中的至少一个。

3.根据权利要求1所述的设备,其中,所述服务单元将在所述设备已开始以从基本输入/输出系统(BIOS)启动之后并且在将系统资源切换给所述设备的操作系统(OS)之前,切换至所述64位内存映射配置。

4.根据权利要求1所述的设备,其中,

所述主处理器将向所述服务单元的共享内存写入,以指示所述一个或多个从处理器被静默,所述服务单元将在所述一个或多个从处理器被静默之后,从所述主处理器接收所述设备的控制,并且所述服务单元将在所述服务单元切换至所述64位内存映射配置之后,向所述处理器返回所述设备的控制。

5.根据权利要求4所述的设备,其中,

被静默的处理器将轮询被静默的处理器中每一个的暂存寄存器,以确定标志是否被使能,并且在所述服务单元切换至所述64位内存映射配置之后,所述服务单元将使能所述标志。

6.根据权利要求5所述的设备,其中,

如果所述标志被使能,则被静默的处理器将从静默状态转变至活跃状态,并且如果所述标志被使能,则所述服务单元将向所述处理器转移所述设备的控制。

7.根据权利要求5所述的设备,其中,在所述标志被使能之后,所述主处理器将执行以下至少之一:走所述PCI总线,以向所述PCI段分配资源,以及构建高级配置和电源接口(ACPI)静态表及命名空间资源,以将与所述段相关的信息暴露给所述设备的操作系统(OS)。

8.根据权利要求1所述的设备,其中,所述服务单元将在所述主处理器静默所述一个或多个从存储器之后执行以下至少之一:预使能所述64位内存映射配置、编程地址及设置寄存器。

9.根据权利要求1所述的设备,其中,

在所述服务单元切换至所述64位内存映射配置之前,对所述内存映射配置的访问是在

32位范围内的,并且

在所述服务单元切换至所述64位内存映射配置之后,所述设备的硬件被初始化。

10.根据权利要求1所述的设备,其中,

被静默的处理器不通过所述处理器外部的结构传输业务,并且被静默的处理器不通过所述内存映射配置执行操作。

11.根据权利要求1所述的设备,其中,

所述服务单元配置所述设备的一个或多个资源,以将所述PCI段切换至所述64位内存映射配置,并且配置一个或多个资源包括以下至少之一:将所述处理器中每个处理器的PCI域的基数设置为零,配置每个根组件以解码所述64位内存映射配置。

12.一种用于向内存映射配 置分配处理器的方法,包括:在设备开始启动顺序之后,在多个处理器处接收来自基本输入/输出系统(BIOS)的32位指令;

选择所述多个处理器中的一个处理器,以静默所述多个处理器中余下的处理器;

将所述多个处理器分配为根据64位内存映射配置与外设部件互连(PCI)交互;以及在初始化通过所述PCI交互的硬件之前,激活被静默的多个处理器;

其中,

所述多个处理器中的每个处理器将在所述分配之前访问单个PCI段的单独总线,并且所述多个处理器中的每个处理器将在所述分配之后访问所述PCI段总线的不同实例的所有总线。

13.一种非暂时性计算机可读存储介质,存储指令,该指令如果由设备的处理器执行则引起所述处理器:初始化多个处理器,以访问外设部件互连(PCI)段的不同总线,所述不同总线中的每个被分配给所述多个处理器中的仅一个处理器;

静默所述多个处理器;

将所述设备的控制从被静默的处理器中的至少一个处理器转移给服务单元;

在加载所述设备的操作系统(OS)之前,通过所述服务单元向所述多个处理器中的每个处理器分配访问所有总线的内存映射配置,所述多个处理器中的每个处理器被分配给所述PCI段的不同实例;以及从所述服务单元向被静默的处理器中的至少一个处理器返回所述设备的控制。

14.根据权利要求13所述的非暂时性计算机可读存储介质,在控制被返回被静默的处理器中的至少一个处理器之后,会走所述PCI总线,并且高级配置和电源接口(ACPI)被设置。

说明书 :

向内存映射配置分配处理器

技术领域

[0001] 本发明涉及计算机技术,特别涉及一种用于向内存映射配置分配处理器的设备和方法。

背景技术

[0002] 由于最近的技术创新,用户正在寻求更大量的输入/输出(I/O)资源。但是,由于I/O标准和/或带宽限制,设备不能支持更大数量的I/O设备提供I/O资源。系统供应商面临向用户提供更大量I/O资源的挑战。

发明内容

[0003] 有鉴于此,本发明提供了一种用于向内存映射配置分配处理器的设备和方法。
[0004] 一种用于向内存映射配置分配处理器的设备,包括:
[0005] 主处理器,用于静默所述设备上运行的一个或多个从处理器,所述处理器中的每个能使用基于32位的内存映射配置来访问外设部件互连(PCI)段的不同总线;以及[0006] 服务单元,用于在所述主处理器指示所述一个或多个从处理器被静默之后,切换至64位内存映射配置,其中
[0007] 在所述服务单元切换至所述64位内存映射配置之后,所述处理器中的每个被分配给所述PCI段的多个实例中的一个,所述多个实例中的每个能访问所述PCI段的所有总线。
[0008] 较佳的,其中,
[0009] 所述服务单元将通过边带机制切换至所述64位内存映射配置,并且[0010] 所述边带机制是平台环境控制接口(PECI)和系统管理总线(SMBus)中的至少一个。
[0011] 较佳的,其中,所述服务单元将在所述设备已开始以从基本输入/输出系统(BIOS) 启动之后并且在将系统资源切换给所述设备的操作系统(OS)之前,切换至所述64 位内存映射配置。
[0012] 较佳的,其中,
[0013] 所述主处理器将向所述服务单元的共享内存写入,以指示所述一个或多个从处理器被静默,
[0014] 所述服务单元将在所述一个或多个从处理器被静默之后,从所述主处理器接收所述设备的控制,并且
[0015] 所述服务单元将在所述服务单元切换至所述64位内存映射配置之后,向所述处理器返回所述设备的控制。
[0016] 较佳的,其中,
[0017] 被静默的处理器将轮询被静默的处理器中每一个的暂存寄存器,以确定标志是否被使能,并且
[0018] 在所述服务单元切换至所述64位内存映射配置之后,所述服务单元将使能所述标志。
[0019] 较佳的,其中,
[0020] 如果所述标志被使能,则被静默的处理器将从静默状态转变至活跃状态,并且[0021] 如果所述标志被使能,则所述服务单元将向所述处理器转移所述设备的控制。
[0022] 较佳的,其中,在所述标志被使能之后,所述主处理器将执行以下至少之一:
[0023] 走所述PCI总线,以向所述PCI段分配资源,以及
[0024] 构建高级配置和电源接口(ACPI)静态表及命名空间资源,以将与所述段相关的信息暴露给所述设备的操作系统(OS)。
[0025] 较佳的,其中,所述服务单元将在所述主处理器静默所述一个或多个从存储器之后执行以下至少之一:预使能所述64位内存映射配置、编程地址及设置寄存器。
[0026] 较佳的,其中,
[0027] 在所述服务单元切换至所述64位内存映射配置之前,对所述内存映射配置的访问是在32位范围内的,并且
[0028] 在所述服务单元切换至所述64位内存映射配置之后,所述设备的硬件被初始化。
[0029] 较佳的,其中,
[0030] 被静默的处理器不通过所述处理器外部的结构传输业务,并且
[0031] 被静默的处理器不通过所述内存映射配置执行操作。
[0032] 较佳的,其中,
[0033] 所述服务单元配置所述设备的一个或多个资源,以将所述PCI段切换至所述64 位内存映射配置,并且
[0034] 配置一个或多个资源包括以下至少之一:将所述处理器中每个处理器的PCI域的基数设置为零,配置每个根组件以解码所述64位内存映射配置。
[0035] 本发明还提供了一种用于向内存映射配 置分配处理器的方法,包括:
[0036] 在设备开始启动顺序之后,在多个处理器处接收来自基本输入/输出系统(BIOS) 的32位指令;
[0037] 选择所述多个处理器中的一个处理器,以静默所述多个处理器中余下的处理器;
[0038] 将所述多个处理器分配为根据64位内存映射配置与外设部件互连(PCI)交互;以及
[0039] 在初始化通过所述PCI交互的硬件之前,激活被静默的多个处理器;
[0040] 其中,
[0041] 所述多个处理器中的每个处理器将在所述分配之前访问单个PCI段的单独总线,并且
[0042] 所述多个处理器中的每个处理器将在所述分配之后访问所述PCI段总线的不同实例的所有总线。
[0043] 本发明还提供了一种非暂时性计算机可读存储介质,存储指令,该指令如果由设备的处理器执行则引起所述处理器:
[0044] 初始化多个处理器,以访问外设部件互连(PCI)段的不同总线,所述不同总线中的每个被分配给所述多个处理器中的仅一个处理器;
[0045] 静默所述多个处理器;
[0046] 将所述设备的控制从被静默的处理器中的至少一个处理器转移给服务单元;
[0047] 在加载所述设备的操作系统(OS)之前,通过所述服务单元向所述多个处理器中的每个处理器分配访问所有总线的内存映射配置,所述多个处理器中的每个处理器被分配给所述PCI段的不同实例;以及
[0048] 从所述服务单元向被静默的处理器中的至少一个处理器返回所述设备的控制。
[0049] 较佳的,在控制被返回被静默的处理器中的至少一个处理器之后,会走所述PCI 总线,并且高级配置和电源接口(ACPI)被设置。

附图说明

[0050] 下面的详细描述参照附图,其中:
[0051] 图1A和图1B是用于向内存映射配置分配处理器的设备的示例框图;
[0052] 图2是用于向内存映射配置分配处理器的设备的另一示例框图;
[0053] 图3是包括用于向内存映射位置分配处理器的指令的计算设备的示例框图;以及[0054] 图4是用于向内存映射位置分配处理器的方法的示例流程图。

具体实施方式

[0055] 在下面的描述中给出特定细节,以提供对实施例的深入理解,。但是,将理解,实施例可以在没有这些特定细节的情况下实施。例如,可以在框图中示出系统,以便不因不必要的细节模糊实施例,。在其它实例中,可以示出众所周知的过程、结构和技术,而没有不必要的细节,以便避免使实施例不清楚。
[0056] 由于信息时代的动态发展及其需求特性,IT公司生产可以容纳大量I/O资源的设备的障碍正在不断提升。例如,具有支持大量I/O资源的能力正在变得对虚拟化来说高度有价值,因为更多来宾操作系统(OS)尝试要求这样的资产的所有权。因此,随着像高端系统这样的设备上可用的I/O卡的数量增加以及向PCI Express(PCIe)设备添加增加更多虚拟功能,单个PCI段内的PCI总线数量正在变得日益稀少。
[0057] 通过支持多个PCI段,供应商能够提供更多总线数量。但是,支持多个PCI段通常要求使用被称为内存映射配置(MMCFG)的4GB以上的内存映射I/O范围。这造成以下问题:早期固件代码需要在仍处于32位模式下时访问MMCFG空间中的资源。另外,大多数供应商提供被配置用于32位支持的硬件初始化固件包。因此,在早期启动期间支持多个PCI段产生多个挑战。这样的挑战可以包括需要修改供应商提供的包,以在64位模式下操作,这接着可能导致支持更复杂的代码,支持更复杂的代码导致推迟产品发布。
[0058] 实施例可以允许在早期启动期间支持单个PCI段,以及随后在将系统资源切换给 OS之前使用处理器来适当地使能其它PCI段。例如,主处理器可以静默在设备上运行的一个或多个从处理器。这些处理器中的每个可以使用基于32位的内存映射配置来访问外设部件互连(PCI)段的不同总线。在主处理器指示该一个或多个从处理器静默之后,服务单元可以切换至64位内存映射配置。在服务单元切换至64位内存映射配置之后,可以将这些处理器中每个分配给PCI段的多个实例中的一个。这些实例中的每个可以访问该PCI段的所有总线。
[0059] 因此,通过推迟PCI段的多个实例的使能直至完成硬件初始化,实施例可以提供更多的PCI总线数,同时仍允许不修改地运行依赖于单个PCI段配置的系统固件代码。结果,实施例可以简单地实现,因为与重写32位代码以兼容64位关联的复杂度降低或消除。
[0060] 这可以进一步转化成开发日程的节省以及及时的产品发布。此外,根据实施例使能多个PCI段允许在硬件供应商之间更容易地交换固件包。例如,与处理多个模式相反(例如,32位模式及64位模式),供应商能够将其包构造为仅在32位模式下工作。使包支持单个模式可以减少支持多个模式所需的开发和验证周期。此外,实施例可以使用工业标准接口,如SMBus,因此允许容易实现。
[0061] 现在参照附图,图1A和图1B是用于向内存映射配置分配处理器120、122-1和 122-2的设备100的示例框图。设备100可以是例如服务器、安全微处理器、笔记本计算机、台式计算机、一体系统、网络设备、控制器、无线设备、或与外设部件互连 (PCI)接合的任意其它类型设备。
[0062] 术语PCI可以指用于附接计算机中的硬件设备的PCI局部总线标准和/或局部计算机总线的一部分。PCI总线可以支持处理器总线上找到的功能,但以独立于任何特定处理器的标准化格式。连接至总线的设备可能对处理器来说就像直接连接至处理器总线,且可以向连接至总线的设备分配处理器地址空间中的地址。设备可以装在主板本身(例如,平面器件)上或装在插入插槽中的扩展卡上。示例PCI卡可以包括网卡、声卡、调制解调器、附加端口(如USB或串口)、TV调谐器卡、磁盘控制器等等。
[0063] PCI支持内存空间的32位地址和64位地址。当设备100启动时,BIOS或系统固件(未示出)向PCI外设设备分配PCI地址域中的内存空间的区域。区域的基地址被存储在该设备的PCI配置空间的基地址寄存器中。每个区域的大小通常是二的幂数,并且所分配的基地址在等于该区域大小的边界上对齐。向如处理器的地址空间这样的主机地址域中内存映射(memory-map)内存空间中的PCI外设设备,使得对任何设备的数据访问可以通过处理器本身的加载指令或存储指令来执行。通过总线号、设备号及功能号来识别每个PCI外设设备。PCI规范允许单个系统或段管理多达256条总线,但如上面所解释的,对于许多较大型系统来说,256条总线可能不够。
[0064] 在图1A和图1B的实施例中,设备100包括服务单元110及多个处理器120、122-1 和122-2。服务单元110可以包括例如:包括用于实现下面描述的功能的电路的硬件设备,如控制逻辑和/或内存。此外或作为替代,服务单元110可以被实现为在机器可读存储介质上编码且由处理器执行的一系列指令。处理器120、122-1和122-2可以是中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)或适于获取及执行指令的其它硬件设备。
[0065] 例如,服务单元110可以是该设备内允许像系统重启动或PCI配置这样的一些服务任务的单独的计算机系统。只要对服务单元110供电,服务单元110就可用,甚至在设备100的主操作系统(OS)关闭、有缺陷或根本未安装时。
[0066] 图1A示出设备100在设备100已开始以从像基本输入/输出系统(BIOS)这样的系统固件(未示出)启动之后的状态。由于系统固件可能由32位指令构成,所以设备 100可以处于32位模式。因此,处理器120、122-1和122-2中的每个最初要使用基于32位的内存映射配置(未示出)来访问外设部件互连(PCI)段130的不同总线132。
[0067] 如上面所解释的,PCI规范允许单个系统或段管理最高仅256条总线。术语总线可以定义CPU和外设设备之间的低级别接口。例如,主处理器120可以访问PCI段 130中编号为0-84的总线132,第一从处理器122-1可以访问PCI段130中编号为85-169 的总线132,第二从处理器122-1可以访问PCI段130中编号为170-255的总线132。因此,如图1中示出的,处理器120、122-1和122-2中的每个最初可以包括限制其仅访问PCI段130中一部分的内存映射配置,其中没有两个处理器120、122-1和122-2 可访问相同的总线132。
[0068] 然后,服务单元110可以选择这些处理器中的一个处理器120作为主处理器。主处理器120可以接着静默在设备100上运行的一个或多个从处理器122-1和122-2。虽然图2示出两个从处理器122-1和122-2,但是实施例可以包括两个以上或两个以下从处理器。术语静默可以指暂停或改变在计算机或处理器上运行的过程的状态,如可以修改与像写请求这样的内存访问相关的信息的那些过程。
[0069] 被静默的处理器120、122-1和122-2可以不通过处理器120、122-1和122-2外部的结构传输业务,且可以不通过内存映射配置执行操作。在主存储器120指示一个或多个处理器122-1和122-2静默之后,服务单元110可以通过平台环境式控制接口 (PECI)和/或系统管理总线(SMBus)之类的边带机制将设备100切换至64位内存映射配置。
[0070] 服务单元110对设备100内的一个或多个资源进行配置,以将PCI段130切换至该64位内存映射配置。例如,服务单元110可以将处理器120、122-1和122-2中每个处理器的PCI域的基数重置为零,其中该基数被存储在处理器120、122-1及122-2 中每个处理器的内存映射配置中。
[0071] 此外,服务单元110可以配置每个根组件(未示出),以根据该64位内存映射配置进行解码。术语根组件(root-complex)可以指将处理器和内存子系统连接至由一个或多个交换设备(未示出)构成的PCI交换结构的设备。下面结合图2解释将设备100 切换至64位内存映射配置。此外,服务单元110可以预使能(但不允许使用)该64 位内存映射配置,如通过编程地址以及对PCI设置寄存器(未示出)。例如,服务单元 110可以设置寄存器,以规定处理器120、122-1和122-2中每个处理器可用的总线的范围。
[0072] 如图1B所示,在服务单元110将设备100切换至该64位内存映射配置之后,向处理器120、122-1和122-2中的每个分配PCI段130中的多个实例130-0至130-2中的一个。实例130-0至130-2中的每个将可访问所有总线132。例如,通过切换至64 位内存映射配置,服务单元110能够在处理器120、122-1和122-2中的每个处理器的内存映射配置中创建额外的多位实例字段(未示出)。此外,如上面解释的,服务单元 110可以配置根组件208,以根据该64位内存映射配置进行解码。
[0073] 例如,主处理器120的实例字段内的值“00”可以指示为其被分配给PCI段的第一实例130-0。而第一从处理器122-1的实例字段内的值“01”可以指示为其被分配给 PCI段的第二实例130-1。类似地,第二从处理器122-2的实例字段内的值“10”可以指示为其被分配给PCI段的第三实例130-0。通过在处理器120、122-1和122-2内创建PCI段130的实例130-0至130-2,处理器120、122-1和122-2中的每个可以访问由PCI规范对每个PCI段130允许的最大数量的或更多的总线132,如256个总线。
[0074] 服务单元110不仅会在设备100已开始以从基本输入/输出系统(BIOS)启动之后切换至64位内存映射配置,还会在将如设备驱动器这样的系统资源切换给设备100 的操作系统(OS)之前切换至64位内存映射配置。因此,实施例可以允许单个设备 100上的多个处理器120、122-1和122-2可访问更多PCI总线132,而不用将系统固件进行修改,如修改至类似64位模式的另一格式。
[0075] 图2是用于向内存映射配置分配处理器的设备200的另一示例框图。设备200可以是例如:服务器、安全微处理器、笔记本计算机、台式计算机机、一体系统、网络设备、控制器、无线设备、或与外设部件互连(PCI)接合的任意其它类型设备。此外,图2的设备200可以至少包括图1的设备100的功能和/或硬件。例如,在图2的设备 200中包括的服务单元110、主处理器120及从处理器122-1和122-2可以分别包括图 1的设备100中包括的服务单元110、主处理器120及从处理器122-1和122-2的功能。此外,图2的设备200还包括根组件208、BIOS 210、ACPI表/命名空间资源212以及PCI 214。
[0076] BIOS 210和ACPI表/命名空间资源212可以包括例如:包括用于实现下面描述的功能的电路的硬件设备,如控制逻辑和/或内存。此外或作为替代,BIOS 210和ACPI 表/命名空间资源212可以被实现为在机器可读存储介质上编码且可由处理器执行的一系列指令或微代码。PCI 214可以提供用于将一个或多个PCI外设设备(未示出)连接至设备200的处理器120、122-1和122-2中的一个或多个处理器的硬件和/或固件接口。
[0077] 在图2中,主处理器120被示出为向服务单元110的共享内存204写入,以指示一个或多个从处理器122-1和122-2被静默。服务单元110会在一个或多个从处理器 122-1和122-2静默之后从主处理器120接收设备200的控制。
[0078] 服务单元110会在服务单元110切换至64位内存映射配置之后,向处理器120、122-1和122-2返回设备200的控制。例如,在服务单元110切换至64位内存映射配置之后,服务单元110可以使能处理器120、122-1和122-2中一个或多个处理器的暂存寄存器(scratch register)204-1至204-3处的标志。同时,BIOS 210可以指导被静默的处理器120、122-1和
122-2来轮询其暂存寄存器204-1至204-3,以确定该标志是否被使能。如果该标志被使能,则被静默的处理器120、122-1和122-2可以从静默状态转换回活跃状态。如果该标志被使能,则服务单元110可以将设备的控制转移给处理器120、122-1和122-2。
[0079] 如上面在图1中解释的,在服务单元110切换至64位内存映射配置之后,处理器 120、122-1和122-2中的每个被分配为具有PCI段的不同实例,每个实例可访问所有 PCI总线。例如,主处理器120的内存映射配置(MMCFG)202-1可以访问第一实例 (PCI段0),第一从处理器122-1的MMCFG 202-2可以访问第二实例(PCI段1),并且第二从处理器122-2的MMCFG 
202-3可以访问第三实例(PCI段2),每个实例 (PCI段0-PCI段2)具有256条总线(0-255)。
[0080] 在标志被使能之后,主处理器120可以走PCI总线,以向PCI段(PCI段0-PCI 段2)分配资源。主处理器120还可以构造高级配置和电源接口(ACPI)静态表及命名空间资源212,以将与这些段有关的信息显露给设备200的OS(未示出)。
[0081] 例如,通过OS或固件,主处理器120可以在启动时(通过PCI配置空间)查询所有PCI总线,以找出存在什么设备以及每个需要什么系统资源(内存空间、I/O空间、中断线等)。随后,主处理器120可以分配这些资源并向每个设备通告其分配。虽然实施例参考32位模式和64位模式,但是实施例不限于此且还可以包括其它位模式。
[0082] 图3是包括向用于内存映射配置分配处理器的指令的计算设备300的示例框图。在图3的实施例中,计算设备300包括处理器310及机器可读存储介质320。机器可读存储介质320进一步包括用于向内存映射配置分配处理器(未示出)的指令321、 323、325、327和329。
[0083] 计算设备300可以是例如:安全微处理器、笔记本计算机、台式计算机机、一体系统、服务器、网络设备、控制器、无线设备或能够执行指令321、323、325、327 和329的任意其它类型设备。在特定示例中,计算设备300可以包括或可以连接至附加组件,如内存、控制器、处理器等等。
[0084] 处理器310可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、微控制器、由微代码控制的专用逻辑硬件或适于获取和执行在机器可读存储介质320中存储的指令的其它硬件设备或以上设备的组合。处理器310可以获取、解码并执行指令321、323、325、327和329,以实现向内存映射配置分配处理器。作为获取和执行指令的替代或除获取和执行指令之外,处理器310可以包括至少一个集成电路(IC)、其它控制逻辑、其它电路、或包括用于执行指令321、323、325、327和329的功能的多个电子组件的以上设备的组合。
[0085] 机器可读存储介质320可以为任意电的、磁的、光的、或其它物理存储设备,包含或存储可以执行指令。因此,机器可读存储介质320可以是例如:随机存取存储器 (RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、光盘只读存储器 (CD-ROM)等等。因此,机器可读存储介质320可以是非暂时性的。如下面将详细描述的,机器可读存储介质320可以被编码有用于向内存映射配置分配处理器的一系列可执行指令。
[0086] 此外,指令321、323、325、327和329在由处理器(例如,通过处理器的一个处理元件或多个处理元件)执行时可以引起该处理器执行过程,如图4的过程。例如,初始化指令321可以由处理器310执行,以初始化多个处理器来访问外设部件互连 (PCI)段的不同总线,不同总线中的每个被分配给多个处理器中的仅一个处理器。静默指令323可以由处理器310执行,以静默多个处理器。
[0087] 转移指令325可以由处理器310执行,以将设备的控制从被静默的多个处理器中的至少一个转移给服务单元(未示出)。分配指令327可以由处理器310执行,以在加载设备的操作系统(OS)以前通过服务单元向多个处理器中的每个分配访问所有总线的内存映射配置,多个处理器中的每个被分配给该PCI段的不同实例。返回指令329 可以由处理器310执行,以将设备的控制从服务单元返回给被静默的多个处理器中的至少一个。在控制被返回给被静默的多个处理器中的至少一个之后,将走PCI总线并且高级配置和电源接口(ACPI)被设置(未示出)。
[0088] 图4是用于向内存映射配置分配处理器的方法400的示例流程图。尽管下面参照设备200描述方法400的执行,但是可以利用用于执行方法400的其它合适的组件,如设备100。此外,用于执行方法400的组件可以分布在多个设备(例如,与多个输入设备和输出设备通信的处理设备)上。在特定场景下,协作行动的多个设备可以视为用于执行方法400的单个设备。可以以在像存储介质320这样的机器可读存储介质上存储的可执行指令的形式,和/或以电路的形式实现方法400。
[0089] 在框410中,在设备开始启动顺序之后,多个处理器120、122-1和122-2接收来自BIOS 210的32位指令。然后,在框420中,选择多个处理器120中的一个处理器,以静默多个处理器中余下的处理器122-1和122-2。接下来,在框430中,例如通过服务单元110,将多个处理器120、122-1和122-2分配为根据64位内存映射配置202-1 至202-3与PCI 214交互。
[0090] 在框430中的分配之前,多个处理器120、122-1和122-2中的每个将访问单个PCI 段130的单独总线132。在框430中的分配之后,多个处理器120、122-1和122-2中的每个将访问PCI段130总线的不同实例130-0至130-2的所有总线132。在框440 中,在初始化通过PCI交互的硬件之前,激活被静默的多个处理器120、122-1和122-2。
[0091] 根据前述内容,实施例提供用于推迟使能多个PCI段直至硬件初始化完成的方法和/或设备。因此,实施例可以提供更多的PCI总线数,同时仍允许不修改地运行依赖单个PCI段配置的系统固件代码。结果,实施例可以简单地实现,因为与重写32位代码以使其兼容64位关联的复杂度减少或消除。例如,实施例可以允许在早期启动期间支持单个PCI段,以及随后使用像服务处理器这样的处理器来在将系统资源切换给OS 之前适当地使能更多PCI段。