CN111133414A - 存储器初始化前多线程并行计算平台 - Google Patents
存储器初始化前多线程并行计算平台 Download PDFInfo
- Publication number
- CN111133414A CN111133414A CN201780095259.0A CN201780095259A CN111133414A CN 111133414 A CN111133414 A CN 111133414A CN 201780095259 A CN201780095259 A CN 201780095259A CN 111133414 A CN111133414 A CN 111133414A
- Authority
- CN
- China
- Prior art keywords
- memory
- executing
- thread
- core
- bsp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Abstract
提供了在系统存储器的初始化之前实现多线程并行处理计算平台的计算设备(100)。为了实现此种平台,计算设备(100)执行增强固件(116),该增强固件(116)定义在自举处理器(BSP)的控制下的多个应用处理器(AP)。BSP通过将交叉参考电路(例如,可编程属性映射)配置成用于将由AP生成的、被寻址到唤醒缓冲器的存储器访问请求重新路由至重定向存储器地址来保持AP的向后兼容性。重定向存储器地址处的存储器存储AP初始化指令以及用于检取并处理存储在其他地方(例如,在快速访问高速缓存存储器中)的早期阶段过程指令的指令。AP并行地执行初始化指令以及高速缓存中所存储的用于完成早期阶段过程(诸如存储器训练)的早期阶段过程指令。
Description
背景技术
在引导操作系统之前执行的系统软件包括基本输入/输出(BIOS)软件或统一可扩展固件接口(UEFI)软件。此类系统软件执行准备计算系统的平台组件以用于操作的各种初始化过程。这些平台组件包括一个或多个处理器以及可由该一个或多个处理器访问的系统存储器。在对一个或多个处理器的初始化和对存储器的初始化完成之后,在计算系统上执行的软件可以利用多个处理器达到有益效果。然而,常规计算系统仅在对系统存储器的初始化完成之后可以执行利用多个处理器的软件。
附图说明
图1是图示出根据本公开的示例的计算设备的框图,该计算设备包括被增强以用于支持在系统存储器的初始化之前对多线程并行处理的执行的固件。
图2是图示出根据本公开的示例的图1中示出的增强固件的操作的框图。
图3是图示出根据本公开的示例的、增强固件内所定义的自举(boot-strap)处理器初始化过程的流程图。
图4是图示出根据本公开的示例的、增强固件内所定义的应用处理器初始化过程的流程图。
图5是图示出根据本公开的示例的图1中示出的增强固件的另一示例的操作的框图。
图6和图8是图示出根据本公开的示例的、增强固件内所定义的系统自举处理器初始化过程的流程图。
图7和图9是图示出根据本公开的示例的、增强固件内所定义的节点自举处理器初始化过程的流程图。
图10是图示出根据本公开的示例的图1中示出的增强固件的操作的框图,其中,增强固件被配置成用于训练系统存储器。
图11是根据本公开的示例可实现的各种多线程并行处理的另一计算设备的示意图。
具体实施方式
本文中所公开的系统和方法在系统存储器初始化和操作系统引导之前实现多线程并行处理计算平台。可以利用此种计算平台来执行各种早期阶段处理,诸如,对系统存储器的训练和其他硅初始化过程。在一些示例中,为了实现此种平台,计算设备包括增强固件。在这些示例中,增强固件被配置成用于实现平台以及维持向后兼容性两者。
在一些示例中,增强固件被配置成用于执行第一线程以实现自举处理器(BSP)并且用于执行一个或多个第二线程以实现一个或多个应用处理器(AP)。第一线程和一个或多个第二线程可由单个处理器或不同的处理器来执行。例如,在至少一个示例中,充当BSP的线程由多核处理器的第一核执行,并且充当一个或多个AP的一个或多个线程由多核处理器的一个或多个另外的核执行。
一般而言,BSP被配置成用于控制AP的初始化。作为该初始化的部分,BSP向每个AP传送消息。在一些示例中,这些消息包括启动处理器间中断(startup inter-processorinterrupt;SIPI)。SIPI包括唤醒缓冲器的存储器地址。唤醒缓冲器存储指令,该指令可由AP执行以执行其初始化过程的至少部分。为了确保与先前制造的硬件的向后兼容性,AP在实模式下开始执行。出于此种原因,唤醒缓冲器的存储器地址必须符合特定的要求。例如,在一些示例中,唤醒缓冲器必须驻留在可访问存储器的第一兆字节(MB)内并且在4千字节(KB)边界上对齐。这些要求限制了可被存储在唤醒缓冲器中的指令的数量。
为了克服此种障碍,在一些示例中,BSP经由增强固件被配置成用于在向AP传送任何消息之前初始化交叉参考电路。在一些示例中,交叉参考电路包括互操作以重定向存储器请求的可编程属性映射(PAM)和平台控制器中枢(platform controller hub;PCH)。在其他示例中,交叉参考电路包括通过微代码编程以重定向存储器请求的核。不论其特定的实现方式,交叉参考电路当在由BSP配置之后执行时将访问目标地址范围(例如,0xC0000~0xFFFFF)内的目标存储器地址(例如,唤醒缓冲器的存储器地址)的请求重新路由至重定向地址范围内的重定向存储器地址。重定向存储器地址可从重定向地址范围的起始偏移与目标存储器地址从目标地址范围的起始偏移的量相同的量。在一些示例中,重定向存储器地址驻留在第一MB边界之外。例如,重定向存储器地址可以是可由AP执行的增强固件的部分的地址。
以此种方式使用交叉参考电路使得BSP能够将SIPI传送至向后兼容的AP,并且还使得BSP能够给AP提供相较于唤醒缓冲器中可以存储的指令数量相对大数量的指令。例如,在一些示例中,重定向存储器地址处所存储的增强固件的部分包括可由AP执行以检取并处理来自高速缓存存储器中预先配置部分的指令的指令,高速缓存存储器中预先配置部分驻留在1MB边界之外。在这些示例中,BSP经由增强固件被配置成用于在向AP传送消息之前将实现所期望的早期阶段过程的指令存储在高速缓存存储器中的该预先配置部分中。在存储这些指令之后,BSP可以向AP传送消息以启动AP对所期望的早期阶段过程的执行。在一些示例中,AP能够比增强固件更快速地访问高速缓存存储器中所存储的指令。在这些示例中,检取并执行来自高速缓存存储器的指令提高了执行速度。进一步地,高速缓存存储器中所存储的指令可以由AP并行地执行,进一步提高了执行速度。
在一些示例中,一旦早期阶段过程完成,则BSP被配置成用于评估由AP执行的处理的结果并且执行这些结果可能指示需要的任何后续处理。进一步地,在一些示例中,BSP被配置成继续引导过程,这以操作系统的实例化而告终。作为该引导过程的部分,BSP可复位交叉参考电路以防止将后续存储器访问请求重定向至唤醒缓冲器。
在其中计算设备包括多个节点的示例中,增强固件被配置成用于执行第一线程以实现系统BSP(SBSP)并且用于执行一个或多个其他线程以实现节点BSP(NBSP)。在这些示例中,每节点仅一个线程可充当BSP,因此在多核、多模式计算设备的情境中,充当SBSP或NBSP的线程中的每个线程在不同的节点和核上执行。
总体而言,SBSP经由增强固件被配置成用于控制NBSP和驻留在计算设备中的AP的初始化。类似地,每个NBSP被配置成用于控制与NBSP驻留在同一节点上的AP的初始化。如同上文所描述的BSP一样,SBSP和NBSP各自被配置成用于控制交叉参考电路以及与该SBSP或NBSP在同一节点上的AP。
为了控制NBSP的初始化,SBSP被配置成利用处理器互连(例如,快速路径(QuickPath)互连)。例如,在一些示例中,SBSP被配置成用于通过初始化处理器互连来启动NBSP的执行。而且,在这些示例中,SBSP被配置成用于经由通过处理器互连实现的管道请求来控制与每个节点的NBSP(并且由此,与该节点的AP)的同步。
更具体地,在一些示例中,NBSP经由增强固件被配置成用于在节点的初始化期间在某些点处暂停以等待来自SBSP的指令。在这些示例中,NBSP和SBSP还被配置成用于使要由AP执行的指令同步(例如,交换指令的副本)。进一步地,SBSP被配置成用于接收并处理由AP在其节点或主控NBSP的节点上的执行生成的结果。
另外的其他方面,下文详细讨论示例和优势。而且,应理解的是,前述信息和以下详细描述两者都仅仅是各方面和示例的说明性示例,并且旨在为理解所要求保护的方面和示例的本质和特性提供概述或框架。对“示例”、“其他示例”、“一些示例”、“某些示例”、“替代示例”、“各种示例”、“一个示例”、“至少一个示例”、“另一示例”、“此示例和其他示例”等等的引用不必是相互排斥的,并且旨在指示结合该示例描述的特定特征、结构或特性可被包括在至少一个示例中。本文中此类术语的出现不一定全部指代同一示例。本文中所公开的任何示例可与任何其他示例组合。
而且,本文中所使用的措辞和术语是出于描述的目的,而不应被认为是限制性的。在本文中以单数形式引用的系统和方法的示例、组件、要素或动作也可包含包括复数的示例,并且在本文中以复数形式引用的任何示例、组件、要素或动作也可包含仅包括单数的示例。以单数或复数形式引用不旨在限制当前所公开的系统或方法、它们的组件、动作或要素。本文使用的“包括摂、“含有”、“具有”、“包含”、“涉及”及其变型意在涵盖其后列出的项及其等效方案以及附加项。对“或”的引用可被解释为包含性的,使得使用“或”描述的任何术语可指示以下各项中的任一者:单个所描述的术语中、多于一个所描述的术语、以及所有所描述的术语。另外,在本文档和通过引用并入本文的文档之间的术语用法不一致的情况下,在所并入的引用中的术语用法应当被认为是对本文档的术语用法的补充;对于不可调和的不一致,以本文档中的术语用法为准。
总体概述
一些常规计算设备初始化技术是低效率的并且消耗比必要的时间更多的时间。例如,具有全套双列直插存储器模块的一些计算设备可花费100秒或更多来完成初始化。在检查时,应用已确定该初始化时间的大约90%被存储器训练消耗。尽管多模式计算设备的每个节点能够并行地执行不同的存储器训练过程,但这不是对资源的高效使用。使用每个集成存储器控制器或更好地,用于执行并行存储器训练的节点的每个通道可引起4到8或更多倍的性能增强并且可以将整体初始化时间减少50%或更多。
因此,并且根据本文中所公开的至少一些示例,计算设备在系统存储器的初始化之前实现多线程并行处理计算平台。为了实现该平台,计算设备执行增强固件。增强固件由充当BSP控制下的多个AP的线程来执行。BSP通过将交叉参考电路(例如,PAM)配置成用于将由AP生成的、被寻址到唤醒缓冲器的存储器访问请求重新路由至重定向存储器地址来保持AP的向后兼容性。重定向存储器地址处的存储器存储AP初始化指令以及用于检取并处理存储在其他地方(例如,在快速访问高速缓存存储器中)的早期阶段过程指令的指令。AP并行地执行初始化指令以及高速缓存中所存储的用于完成早期阶段过程(诸如存储器训练)的早期阶段过程指令。
系统架构
图1图示出被配置成用于在初始化系统存储器之前实现多线程并行处理计算平台的计算设备100。如图1中所示,计算设备100包括一个或多个节点102A-102N(统称为节点102)、连接器122、以及固件存储设备114。固件存储设备114存储增强固件116,该增强固件被配置成用于执行本文中所描述的各种创新性过程。固件存储设备114包括具有用于存储计算设备100的固件(例如,BIOS、UEFI等等)的尺寸的非易失性存储(例如,可擦除可编程只读存储器、闪存等等)。节点102中的每一个包括处理器106、一个或多个存储器控制器112A-112N(统称为存储器控制器112)、以及一个或多个系统存储器单元104A-104M(统称为系统存储器104)。如图1中所图示,处理器106和固件存储设备114经由连接器122彼此耦合并交换数据。连接器122包括系统总线、高级可编程中断控制器(APIC)总线、或者主板组件的某种其他物理连接器。
在由图1所图示的某些示例中,每个处理器106包括APIC 118、多个核108A-108N(统称为核108)、多个高速缓存存储器单元110A-110N(统称为高速缓存存储器110)、以及PAM寄存器和相关联的逻辑电路120。每个APIC 118包括被配置成用于处理各种中断的电路,这些中断包括如下文更详细地描述的SIPI。核108中的每一个包括可以执行由受该核支持的指令集定义的指令的各种计算电路,诸如,控制单元、算数逻辑单元、以及寄存器存储器。在执行指令时,核108中的每一个可对寄存器存储器中所存储的数据进行操作,由此生成经操纵的数据。每个高速缓存存储器110包括可由与该高速缓存存储器相关联的核108中的一个或多个本地地访问的易失性存储器,诸如,第3级高速缓存存储器。
在一些示例中,PAM 120包括可由与该PAM 120相关联的核108中的一个以及相关联的逻辑电路本地地访问的寄存器存储器。在一些示例中,该相关联的逻辑电路可包括PCH。在这些示例中,PAM 120存储使得被寻址到包括0xC0000~0xFFFFF的范围的存储器访问请求(读取和/或写入)被映射到PCH的数据。PCH进而将存储器访问请求重定向到0xFFFC0000~0xFFFFFFFF内的对应的偏移。因此,当被适当地初始化时,PAM和相关联的逻辑120充当将针对特定存储器地址的存储器请求重定向到重定向存储器地址的交叉参考电路。示例不限于交叉参考电路的特定实现方式。例如,在其他示例中,PAM 120和相关联的逻辑电路通过核108中的一个以及可由该核执行的微代码来实现。
存储器控制器112中的每一个包括被配置成用于对系统存储器104进行访问(例如,读取和/或写入)的电路。该电路可支持单通道、双通道、或四通道访问。系统存储器104可包含易失性和/或非易失性数据存储(例如,只读存储器、随机存取存储器、闪存、和/或某种其他计算机可读且可写的介质)。系统存储器104具有存储可由核108执行的程序以及在一些示例中由这些程序在执行期间使用的数据中的一些数据的尺寸,并且被配置成用于存储可由核108执行的程序以及在一些示例中由这些程序在执行期间使用的数据中的一些数据。系统存储器104的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、以及静态RAM(SRAM)。
在一些示例中,增强固件116被配置成用于在初始化系统存储器之前实现多线程并行处理计算平台。为了实现该平台,增强固件116经由计算设备100的硬件组件执行各种过程。图2-图10图示出这些过程以及执行它们的组件中的一些。由增强固件116实现的多线程并行处理计算平台可执行各种早期阶段过程中的任何早期阶段过程。这些早期阶段过程的一个示例是存储器训练,并且该示例在下文参考图10进一步描述。
单节点示例
在其中计算设备100包括和/或使用单个节点102A用于早期阶段处理的示例中,计算设备100被配置成用于在功率被供应给主板之后不久选择核108中的一个来作为BSP执行并且选择核108中的一个或多个其他核来作为AP执行。BSP执行增强固件116中在引导操作系统之前配置APIC 118、分配系统范围数据结构、并初始化AP的部分。根据这些示例,图2图示出包括BSP 202、多个AP 204A-204N(统称为AP 204)以及存储器映射200的存储器初始化前多处理器系统250。在实现每核单个线程的示例中,在核108中的一个与BSP 202之间以及在核108中的其他核与AP 204之间存在一对一的对应关系。在实现多线程的示例中,在核与BSP 202和AP 204中的一个或多个之间存在一对多的对应关系。因此,核108中的单个核可执行多个线程,其中,单个线程充当BSP 202并且一个或多个线程充当AP 204或多个AP204。在一些示例中,BSP 202被配置成用于执行下文参考图3进一步描述的BSP初始化过程300,并且AP 204中的每一个被配置成用于执行下文参考图4进一步描述的AP初始化过程400。经由这些过程的执行,BSP 202和AP 204实现可以执行早期阶段过程的多线程并行处理计算平台。
在一些示例中,存储器映射200是被存储在处理器106的高速缓存存储器110中的数据结构。存储器映射200描述可由处理器106的核108访问的存储器区域。因此,存储器映射200可由BSP 202和AP 204访问。在每个存储器映射中引用的存储器区域可被物理地存储在一个或多个存储器设备中。例如,存储器映射200可描述被物理地存储在高速缓存存储器110和/或固件存储设备114中的存储器区域。
如图2中所示,存储器映射200包括固件区域206、无驱逐模式(NEM)数据区域208和唤醒缓冲器210。在一些示例中,唤醒缓冲器210映射到高速缓存存储器110的子集,并且NEM数据区域208映射到高速缓存存储器110的被配置为高速缓存作为RAM(cache-as-RAM)的另一子集。NEM数据区域208引用多个任务指令212A-212N(统称为任务指令212)。任务指令212可由AP 204执行以在系统存储器104的初始化之前执行整个过程。在一些示例中,固件区域206映射到固件存储设备114,该固件存储设备114存储如上文所描述的增强固件116。在其他示例中,固件区域206的至少部分映射到高速缓存存储器110中的一个或多个地址。在这些示例中,BSP 202可将增强固件116的子集的副本存储在高速缓存存储器110中的这些一个或多个地址处以实现对AP 204的更快速的后续执行。
如由存储器映射200所指示,唤醒缓冲器210位于可访问的存储器(例如,高速缓存存储器110)的第一MB内,并且必须具有在4KB边界处对齐的入口点。支持与先前制造的处理器的向后兼容性需要唤醒缓冲器210的此种定位要求。而且如所示,固件区域206和NEM数据区域在存储器映射200内位于唤醒缓冲器210上方,但位于可访问存储器的第一4GB内。
现在将组合地参考图1-图4来解释在BSP初始化过程300和AP初始化过程400的执行期间图2中所图示的各组件的操作。在一些示例中,BSP初始化过程300和AP初始化过程400两者均在单个节点(例如,节点102A)内执行。在这些示例中的一些示例中,由第一核(例如,核108A)实现的第一线程执行BSP初始化过程300,并且由第一核或其他核(例如,核108B-108N)实现的其他线程执行AP初始化过程400。在这些示例中的其他示例中,由第一核实现的第一线程执行BSP初始化过程300,并且由其他核(例如,核108B-108N)实现的其他线程执行AP初始化过程400。
如图3中所示,BSP初始化过程300开始于动作302,其中,BSP 202初始化非核(uncore)。非核包括与核108紧密相关但不被包括在其中的组件(例如,高速缓存存储器110、处理器互连控制器等等)。在动作304中,BSP202初始化访问唤醒缓冲器210的请求到固件区域206中所引用的存储器地址的重定向。例如,在一些示例中,BSP 202将建立如上所述的存储器访问请求的重定向(即,从常规1MB范围内的地址到恰低于4GB的地址的重定向)的值存储在PAM 120中。通过建立此种重定向机制,BSP 202使得AP 204能够在实模式下执行,这对于向后兼容性是必需的。此种重定向还使得AP 204能够执行固件区域206(即,增强固件116)内所引用的代码,该代码定义了AP初始化过程400。
在动作306中,BSP 202加载其处理器微代码,以确保其指令集是现行的。在动作308中,BSP 202分配高速缓存存储器110中被配置为高速缓存作为RAM的部分内的NEM数据区域208。在动作310中,BSP 202初始化处理器106的存储器类型范围寄存器(MTRR)。在动作312中,BSP 202初始化节点(例如,节点102A)的芯片组,其中,该芯片组正在该节点中执行。
在动作314中,BSP 202将SIPI广播至AP 204。SIPI包括唤醒缓冲器210的物理地址。如图3和图4中所示,由AP 204(例如,经由它们的APIC 118)对SIPI的接收使得各自启动AP初始化过程400。AP初始化过程400开始于动作402,其中,AP(例如,AP 204中的任一个)尝试(例如,经由存储器访问请求)访问唤醒缓冲器以取出其中所存储的代码。然而,由于PAM120的配置,该尝试由PAM 120和相关联的逻辑电路(例如,PCH)重定向到固件区域206。在动作404中,AP执行从固件区域206中所引用的地址取出的增强固件116的部分以执行基本AP初始化并判定NEM数据区域208中是否引用任何未执行的任务。如果是,则AP执行动作408。否则,AP执行动作406。
在动作406中,AP加载其微代码,以确保其指令集是现行的。在动作412中,AP进入睡眠状态(例如,其中AP等待另一SIPI的状态),并且AP初始化过程结束。领会到在AP初始化过程400的第一执行期间没有任务在NEM数据区域208中被引用。由此,第一执行简单地加载用于AP处理器的微代码并进入睡眠状态。还领会到AP 204中的每一个将响应于接收到来自BSP 202的SIPI广播而执行AP初始化过程400。
返回到图3,在动作316中,BSP 202将任务队列分配在NEM数据区域208中所引用的存储器地址处并将任务指令212存储在那些存储器地址处。任务指令212可由AP 204执行以执行诸如存储器训练之类的早期阶段过程。在动作318中,BSP 202将另一SIPI广播至AP204。SIPI包括唤醒缓冲器210的物理地址。如上文所描述,SIPI启动由AP 204中的每一个对AP初始化过程400的执行。AP初始化过程400开始于动作402,其中,执行AP初始化过程400的AP尝试访问唤醒缓冲器以取出其中所存储的代码。然而,由于PAM的配置,该尝试由PAM重定向到固件区域206。在动作404中,AP执行从固件区域206中所引用的地址取出的增强固件116的部分以判定NEM数据区域208中是否引用任何未执行的任务。如果是,则AP执行动作408。否则,AP执行动作406。
在动作408中,AP执行NEM数据区域208中所引用的用于AP的任务指令212。在动作410中,AP将通过执行任务指令212所生成的结果数据存储在NEM数据区域208中所引用的存储器地址处。在动作412中,AP进入睡眠状态并且AP初始化过程400结束。
返回到图3,在动作320中,BSP 202检取并处理结果数据。在结果数据指示保证进一步的处理以完成整个早期阶段处理的情况下,可由BSP 202执行此类进一步的处理。在动作322中,BSP 202继续引导操作系统。动作322可包括复位PAM 120。
在组合中,图1-图4中所描述的组件和动作实现可以执行多线程并行早期阶段处理的多处理器计算平台。可以使用该平台来提高早期阶段过程的执行速度,这些早期阶段过程诸如存储器训练和其他硅初始化过程。
多节点示例
在一些示例中,计算设备100包括和或使用多个节点102来进行早期阶段处理。在这些示例中,计算设备100被配置成用于在功率被供应给主板之后不久选择节点102中的一个节点的核108中的一个核来作为系统自举处理器(SBSP)执行并且选择节点102中的其他节点的核108中的一个或多个其他核来作为节点自举处理器(NBSP)执行。总体而言,SBSP和NBSP中的每一者包含上文已描述的BSP的特征和功能。由此,SBSP和NBSP中的每一者被配置成用于执行增强固件116中在由SBSP对操作系统的引导之前配置处理器106中的每个处理器的APIC 118、分配节点范围数据结构、并执行其他初始化过程的部分。另外,SBSP和NBSP中的每一者被配置成用于执行增强固件116中协作以实现多处理器计算平台的部分,在该多处理器计算平台中,AP使用多个线程并行地执行早期阶段处理。
图5图示出根据一些示例的包括SBSP 500、一个或多个NBSP 502A-502N(统称为NBSP 502)、AP 204、处理器互连504、以及多个存储器映射200A-200N的存储器初始化前多处理器系统550。如同上文参考图2所描述的BSP 202一样,在实现每核单个线程的示例中,在核108中的一个与SBSP 500之间或者与NBSP 502中的任何一个之间存在一对一的对应关系。在实现多线程的示例中,在核与SBSP 500以及在同一节点内执行的AP 204之间存在一对多的对应关系。类似地,在实现多线程的示例中,在核与NBSP 502以及在同一节点内执行的AP 204中的任何一者之间存在一对多的对应关系。因此,核108中的单个核可执行多个线程,其中,单个线程充当SBSP 500并且一个或多个线程充当AP 204,或者其中,单个线程充当NBSP 502中的任何一个并且一个或多个线程充当AP 204,或者其中,该多个线程充当多个AP 204。然而,注意,仅一个BSP(SBSP 500或NBSP 502中的一个NBSP)由任何一个处理器106在节点102中的任何一个节点内执行。在一些示例中,SBSP 500执行如下文参考图6进一步描述的SBSP初始化过程600,并且NBSP 502中的每一个执行下文参考图7进一步描述的NBSP初始化过程700。经由这些过程的执行,SBSP 500和NBSP 502与AP 204互操作以实现可以执行早期阶段过程的多线程并行处理计算平台。
在一些示例中,多个存储器映射200A-200N中的每个存储器映射是被存储在处理器106的高速缓存存储器110中的数据结构。多个存储器映射200A-200N中的每个存储器映射描述可由处理器106的核108访问的存储器区域。因此,每个存储器映射可由通过核108执行的线程(例如,SBSP、NBSP、Ap)访问。在每个存储器映射中引用的存储器区域可被物理地存储在一个或多个存储器设备中。例如,每个存储器映射可描述被物理地存储在给定节点内的高速缓存存储器110中和/或存储在固件存储设备114中的存储器区域。
如图5中所示,存储器映射200A可由SBSP 500和在同一节点内执行的AP 204中的任一者访问;存储器映射200B可由NBSP 502A和在同一节点内执行的AP 204中的任一者访问;并且存储器映射200N可由NBSP 502N和在同一节点内执行的AP 204中的任一者访问。因此,节点102中的每一个存储不同的存储器映射。如图5中所示,每个存储器映射是存储器映射200的副本并且由此包括固件区域206、NEM数据区域208、以及唤醒缓冲器210。NEM数据区域208引用任务指令212的存储器地址。固件区域206引用增强固件116的存储器地址。在一些示例中,固件区域206的至少部分映射到高速缓存存储器110中的一个或多个地址。在这些示例中,SBSP 500和/或NBSP 502可将增强固件116的子集的副本存储在高速缓存存储器110中的这些一个或多个地址处以实现对AP 204的更快速的后续执行。
现在将组合地参考图1和图5-图9来解释在SBSP初始化过程600和NBSP初始化过程700的执行期间图5中所图示的各组件的操作。如图6中所示,SBSP初始化过程600包括上文参考图3描述的BSP初始化过程300的动作中的许多动作。为了简洁起见,将不重复对这些动作的描述。然而,在SBSP初始化过程600内,这些动作由SBSP 500而不是BSP 202来执行。
在动作602中,SBSP 500初始化处理器互连504,SBSP 500通过该处理器互连504与NBSP 502通信。如图6和图7中所示,处理器互连504的初始化使得NBSP 502中的每一个启动NBSP初始化过程700。如图7中所示,NBSP初始化过程700包括上文参考图3描述的BSP初始化过程300的动作中的许多动作。为了简洁起见,将不重复对这些动作的描述。然而,在NBSP初始化过程700内,这些动作由NBSP 502而不是BSP 202来执行。在动作704中,NBSP 502暂停,同时等待来自另一处理器(例如,SBSP 500)的管道请求。
返回到图6,在动作604中,SBSP 500向驻留在主控SBSP 500的节点上的AP 204以及驻留在主控NSBP 502的节点上的AP 204广播SIPI。这些AP 204如上文参考图3和图4所描述地接收和处理SIPI。领会到在一些示例中,NSBP 502还可接收并处理由SBSP 500广播的SIPI。在动作606中,SBSP 600将任务队列分配在由NEM数据区域208引用的高速缓存存储器内。在动作608中,SBSP 500将请求每个NBSP将任务队列分配在它们各自的高速缓存存储器内的管道请求传送至NBSP 502。
返回到图7,在动作706中,NBSP接收由SBSP 500传送的管道请求。在动作708中,NBSP将任务队列分配在由NEM数据区域208引用的高速缓存存储器内。在动作710中,NBSP暂停,同时等待另一管道请求。
返回到图6,在动作610中,SBSP 500将任务指令212存储在由NEM数据区域208引用的高速缓存存储器内,这些任务指令212可由驻留在主控SBSP 500的节点内的AP 204执行。这些任务指令212可被编码以执行诸如存储器训练之类的早期阶段过程。在动作612中,SBSP 500将请求每个NBSP将任务指令与其同步的管道请求传送至NBSP 502。
返回到图7,在动作712中,NBSP接收由SBSP 500传送的管道请求。在动作714中,NBSP将其任务指令与主控SBSP 500的节点中所存储的任务指令同步。例如,NBSP可存储先前分配在由驻留在主控该NBSP的节点上的存储器映射的NEM数据区域208引用的高速缓存存储器内的任务队列内的任务指令212的副本。
返回到图6,在动作614中,SBSP 500向驻留在主控SBSP 500的节点上的AP 204以及驻留在主控NSBP 502的节点上的AP 204广播SIPI。继续到图8,图8继续图6的流程图,在动作616中,SBSP 500等待由NBSP 502和AP 204执行的所有任务的完成。
继续到图7,其继续图7的流程图,在动作718中,NBSP等待由驻留在主控NBSP的节点上的AP 204执行的所有任务的完成。在动作720中,NBSP检取并处理由驻留在主控该NBSP的节点上的AP 204生成的结果数据。在结果数据指示保证进一步的处理以完成整个早期阶段处理的情况下,可由NBSP执行此类进一步的处理。在动作720中,处理结果数据之后,NBSP等待来自另一处理器的管道请求。
组合参考图8和图9,在动作618中,SBSP 500将请求由NBSP 502和驻留在主控这些NBSP的节点上的AP 204生成的结果数据的管道请求传送至NBSP 502。在动作722中,NBSP接收该管道请求。在动作724中,NBSP将所请求的结果数据传送至SBSP 500。在726中,NBSP准备其驻留节点用于OS引导。动作726可包括复位PAM 120。在动作726之后,NBSP初始化过程700结束。
在动作620中,SBSP 500接收在动作618中所请求的结果数据。在动作622中,SBSP500检取由驻留在主控该SBSP 500的节点上的AP 204生成的结果数据并处理该数据和在动作620中接收的结果数据。在结果数据指示保证进一步的处理以完成整个早期阶段处理的情况下,可由SBSP 500执行此类进一步的处理。在动作624中,SBSP 500继续引导操作系统。动作624可包括复位PAM 120。
在组合中,图1和图5-图9中所描述的组件和动作实现可以执行多线程并行早期阶段处理的多处理器计算平台。可以使用该平台来提高早期阶段过程的执行速度,这些早期阶段过程诸如存储器训练和其他硅初始化过程。
本文所公开的过程中的每一个描绘特定示例中的一个特定的动作序列。可通过或使用如本文中所讨论的专门配置的一个或多个计算设备来执行这些过程中所包括的动作。一些动作是任选的,并且由此可根据一个或多个示例被省略。另外,可改变动作的次序,或者可添加其他动作,而不背离本文中所讨论的系统和方法的范围。
存储器训练示例
图10图示出被配置成用于使用并行执行的多个线程来训练系统存储器的计算设备。如所示,图10包括四个节点1000A-1000D。这些节点中的每一个包括AP 204、多个通道1006A-1006H、以及系统存储器104。另外,节点1000A主控SBSP 1002,并且节点1000B-1000D中的每一个分别主控NBSP 1004A-1004C。多个通道1006A-1006H由存储器控制器112提供。
图10的示例实现上文所描述的多节点示例的特征中的至少一些。在该特定示例中,任务指令212在由AP 204并行地执行时训练系统存储器。在这些任务指令212的执行期间执行的动作可包括:检测存储器配置和拓扑结构,配置存储器操作时钟,配置存储器操作电压,确定存储器等级配置,配置双倍数据速率信号达到最佳信号质量,测试存储器,以及创建用于操作系统的存储器映射。可使用各种处理方案来确保在训练存储器时不遭遇竞争状况或其他资源争用问题。例如,AP 204中的每一个可承担训练系统存储器的不同部分的任务。
虽然图10中所图示的示例包括四个节点使用并行执行的多个线程来训练系统存储器,但本文中所公开的示例不限于此种配置。例如,其他示例可包括单个节点、两个节点、或者八个或更多个节点。
可使用硬件元件、软件元件或两者的组合来实现各示例。硬件元件的示例可包括:处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。硬件元件和/或软件元件是否被使用可根据任何数量的因素而从一个实施例到下一实施例有所不同,这些因素诸如,所期望的计算速率、功率水平、热容限、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。
例如,一些实施例可使用可存储指令或指令集合的非瞬态机器可读介质或制品或计算机程序产品来实现,这些指令或指令集合如果由机器执行则可使得该机器执行根据本公开的示例的方法和/或操作。此类机器可包括例如,任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等等,并且可使用硬件和软件的任何合适的组合来实现。机器可读介质或制品可包括例如任何合适类型的存储器单元、存储器设备、存储器制品、存储器介质、存储设备、存储制品、存储介质和/或存储单元,例如,存储器、可移除或不可移除介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、紧凑盘只读存储器(CD-ROM)、可记录紧凑盘(CD-R)、可重写紧凑盘(CD-RW)、光盘、磁介质、磁光介质、可移除存储卡或盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带等等。指令可包括使用任何合适的高级、低级、面向对象的、可视的、编译的和/或解译的编程语言实现的任何合适类型的可执行代码。
图11图示出本文中所描述的可以用于实现各种组件的另一计算设备。更具体地,图11图示出能够执行本文中所描述的增强固件的示例系统1200。
在由图11图示出的一些示例中,系统1200是机架式服务器。替代地,系统1200可以是任何其他类型的计算设备或系统。所图示的示例的系统1200包括底座1202,该底座1202包括可移除地附连的电源1204以及可移除地附连的服务器1206。如图11中所示,电源区别于所附连的服务器1206且与所附连的服务器1206分开,其中,每个电源耦合至多个所附连的服务器1206以向其提供功率。在所图示的示例中,服务器1206包括图1中所图示的计算设备100及其组件,这些组件中的许多为清楚起见没有示出。
所图示的示例的服务器1206还包括耦合至连接器122的示例接口电路1100。示例接口电路1100可由任何类型的接口标准实现,诸如,以太网接口、光学接口、通用串行总线(USB)、和/或PCI快速(PCI express)接口。示例服务器1206中的每一个可经由接口电路1100通信地耦合至其他计算设备或系统。这些其他计算设备或系统可位于同一底座1202内、同一机架中的不同底座内、或不同机架中的不同底座内。
另外或替代地,服务器1206可包括附加组件,诸如,非易失性存储器、输入设备、输出设备、大容量存储设备、和/或其他计算资源。领会到,耦合至服务器1206的任何大容量存储设备可明确地设置并且远离于服务器硬件的其余部分。
进一步的示例
下列示例涉及进一步的实施例,根据这些实施例,众多置换和配置将是显而易见的。
示例1是一种计算设备,该计算设备包括:固件存储设备,该固件存储设备存储固件指令;第一交叉参考电路,该第一交叉参考电路被配置成用于将被寻址到至少一个目标存储器地址的存储器访问请求重定向到至少一个重定向存储器地址;以及至少一个核,该至少一个核耦合至第一交叉参考电路和固件存储设备。至少一个核用于和被配置成用于:执行第一线程以实现自举处理器(BSP);执行至少一个第二线程以实现至少一个应用处理器(AP);经由BSP向该至少一个AP传送消息,该消息标识至少一个目标存储器地址;经由至少一个AP请求至少一个目标存储器地址处所存储的指令;以及经由第一交叉参考电路的执行接收至少一个重定向存储器地址处所存储的固件指令的子集。
示例2包括如示例1所述的主题,其中,第一交叉参考电路包括可编程属性映射和相关联的逻辑电路,消息包括启动处理器间中断,并且至少一个目标存储器地址包括唤醒缓冲器的存储器地址。
示例3包括如示例1或示例2所述的主题,其中,至少一个核包括第一核和区别于该第一核的第二核,并且第一核被配置成用于执行第一线程且第二核被配置成用于执行至少一个第二线程。
示例4包括如示例1至3中任一项所述的主题,进一步包括耦合至至少一个核的高速缓存存储器,其中,至少一个重定向存储器地址驻留在高速缓存存储器或固件存储设备中。
示例5包括如示例4所述的主题,其中,至少一个核进一步被配置成用于:将高速缓存存储器的至少部分配置为无驱逐模式存储器;以及经由BSP将可经由至少一个AP执行的任务指令存储在该无驱逐模式存储器中。
示例6包括如示例5所述的主题,其中,固件指令的子集包括用于执行无驱逐模式存储器中所存储的任务指令的固件指令,并且至少一个核进一步被配置成用于经由至少一个AP执行固件指令的子集。
示例7包括如示例6所述的主题,进一步包括:至少一个存储器控制器,该至少一个存储器控制器耦合至至少一个核;以及系统存储器,该系统存储器耦合至至少一个存储器控制器,其中,无驱逐模式存储器中所存储的任务指令包括用于经由该至少一个存储器控制器来训练系统存储器的任务指令。
示例8包括如示例1至7中任一项所述的主题,进一步包括:多个节点,该多个节点包括第一节点和区别于该第一节点的第二节点,第一节点包括第一交叉参考电路和至少一个核,第二节点包括第二交叉参考电路和耦合至该第二交叉参考电路与固件存储设备的一个或多个核,其中:至少一个核经由处理器互连耦合至一个或多个核,BSP是系统BSP(SBSP),一个或多个核被配置成用于执行第三线程以实现节点BSP(NBSP)并且用于执行至少一个第四线程以实现一个或多个应用处理器(AP),并且SBSP被配置成用于至少部分通过初始化处理器互连来启动NBSP。
示例9包括如示例8所述的主题其中,至少一个核被配置成用于通过经由SBSP传送的一个或多个管道请求而将指令与一个或多个核同步。
示例10是一种使用计算设备来执行存储器初始化前多线程并行处理的方法,该方法包括:执行第一线程以实现自举处理器(BSP);执行至少一个第二线程以实现至少一个应用处理器(AP);经由BSP向该至少一个AP传送消息,该消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;经由至少一个AP请求至少一个目标存储器地址处所存储的指令;以及经由第一交叉参考电路的执行接收至少一个重定向存储器地址处所存储的固件指令的子集。
示例11包括如示例10所述的主题,其中,传送消息包括传送将至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且接收固件指令的子集包括经由与可编程属性映射相关联的逻辑电路的执行来接收该子集。
示例12包括如示例10或示例11所述的主题,其中,执行第一线程包括经由区别于第二核的第一核来执行该第一线程;并且执行至少一个第二线程包括经由第二核来执行该至少一个第二线程。
示例13包括如示例10至12中任一项所述的主题,其中,传送消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
示例14包括如示例13所述的主题,其中,重定向存储器地址驻留在高速缓存存储器中,并且方法进一步包括:将该高速缓存存储器的至少部分配置为无驱逐模式存储器;以及经由BSP将可经由至少一个AP执行的任务指令存储在该无驱逐模式存储器中。
示例15包括如示例14所述的主题,其中,固件指令的子集包括用于执行无驱逐模式存储器中所存储的任务指令的固件指令,并且方法进一步包括经由至少一个AP执行固件指令的子集。
示例16包括如示例15所述的主题,其中,无驱逐模式存储器中所存储的任务指令包括用于训练系统存储器的任务指令,并且方法进一步包括经由至少一个存储器控制器至少部分地通过执行无驱逐模式存储器中所存储的任务指令来训练系统存储器。
示例17包括如示例10至16中任一项所述的主题,其中,执行第一线程以实现BSP包括执行第一线程以实现区别于计算设备的第二节点的计算设备的第一节点上的SBSP,并且方法进一步包括:执行第二节点上的第三线程以实现节点BSP(NBSP),经由第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动NBSP。
示例18包括如示例17所述的主题,进一步包括:至少部分地通过经由SBSP传送一个或多个管道请求而将第二节点中所存储的指令与第一节点中所存储的指令同步。
示例19是一种非瞬态计算机可读介质,编码有指令,这些指令可由至少一个核执行以执行用于提供存储器初始化前多线程并行计算平台的过程,该过程包括:执行第一线程以实现自举处理器(BSP);执行至少一个第二线程以实现至少一个应用处理器(AP);经由BSP向至少一个AP传送消息,该消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;经由至少一个AP请求该至少一个目标存储器地址处所存储的指令;以及经由第一交叉参考电路的执行接收至少一个重定向存储器地址处所存储的固件指令的子集。
示例20包括如示例19所述的主题,其中,传送消息包括传送将至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且接收固件指令的子集包括经由与可编程属性映射相关联的逻辑电路的执行来接收该子集。
示例21包括如示例19或示例20所述的主题,其中,执行第一线程包括经由区别于第二核的第一核来执行该第一线程;并且执行至少一个第二线程包括经由第二核来执行该至少一个第二线程。
示例22包括如示例19至21中任一项所述的主题,其中,传送消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
示例23包括如示例22所述的主题,过程进一步包括:将高速缓存存储器的至少部分配置为无驱逐模式存储器;以及经由BSP将可经由至少一个AP执行的任务指令存储在该无驱逐模式存储器中。
示例24包括如示例23所述的主题,其中,固件指令的子集包括用于执行无驱逐模式存储器中所存储的任务指令的固件指令,并且过程进一步包括经由至少一个AP执行固件指令的子集。
示例25包括如示例24所述的主题,其中,无驱逐模式存储器中所存储的任务指令包括用于训练系统存储器的任务指令,并且过程进一步包括经由至少一个存储器控制器至少部分地通过执行无驱逐模式存储器中所存储的任务指令来训练系统存储器。
示例26包括如示例19至25中任一项所述的主题,其中,执行第一线程以实现BSP包括执行该第一线程以实现区别于计算设备的第二节点的计算设备的第一节点上的SBSP,并且过程进一步包括:执行第二节点上的第三线程以实现节点BSP(NBSP),经由第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动NBSP。
示例27包括如示例26所述的主题,过程进一步包括:至少部分地通过经由SBSP传送一个或多个管道请求而将第二节点中所存储的指令与第一节点中所存储的指令同步。
本文中已采用的术语和表达被用作描述性而非限制性的术语,并且在使用此类术语和表达时,不旨在排除所示出的和所描述的特征(或其部分)的任何等效内容,而且应当认识到,在权利要求书的范围之内各种修改都是可能的。相应地,权利要求书旨在涵盖所有此类等效内容。本文中已描述了各种特征、方面和实施例。如本领域技术人员将理解,这些特征、方面和实施例易于彼此组合以及进行变化和修改。本公开应当因此被认为包含此类组合、变型和修改。本公开的范围不是旨在限于该详细说明书限制而是由所附权利要求限定。未来提出的要求本申请优先权的申请能以不同的方式要求保护所公开的主题,并且一般可包括如在本文中以各种方式公开或以其他方式展示的一个或多个要素的任何集合。
权利要求书(按照条约第19条的修改)
1.一种计算设备,包括:
固件存储设备,所述固件存储设备存储固件指令;
第一交叉参考电路,所述第一交叉参考电路被配置成用于将被寻址到至少一个目标存储器地址的存储器访问请求重定向到至少一个重定向存储器地址;以及
至少一个核,所述至少一个核耦合至所述第一交叉参考电路和所述固件存储设备并且被配置成用于:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识所述至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由所述第一交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的所述固件指令的子集。
2.如权利要求1所述的计算设备,其中,所述第一交叉参考电路包括能编程属性映射和相关联的逻辑电路,所述消息包括启动处理器间中断,并且所述至少一个目标存储器地址包括唤醒缓冲器的存储器地址。
3.如权利要求1所述的计算设备,其中,所述至少一个核包括第一核和区别于所述第一核的第二核,并且所述第一核被配置成用于执行所述第一线程且所述第二核被配置成用于执行所述至少一个第二线程。
4.如权利要求1至3中任一项所述的计算设备,进一步包括耦合至所述至少一个核的高速缓存存储器,其中,所述至少一个重定向存储器地址驻留在所述高速缓存存储器或所述固件存储设备中。
5.如权利要求4所述的计算设备,其中,所述至少一个核进一步被配置成用于:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
6.如权利要求5所述的计算设备,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述至少一个核进一步被配置成用于经由所述至少一个AP执行所述固件指令的所述子集。
7.如权利要求6所述的计算设备,进一步包括:
至少一个存储器控制器,所述至少一个存储器控制器耦合至所述至少一个核;以及
系统存储器,所述系统存储器耦合至所述至少一个存储器控制器,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于经由所述至少一个存储器控制器来训练所述系统存储器的任务指令。
8.如权利要求1所述的计算设备,进一步包括多个节点,所述多个节点包括第一节点和区别于所述第一节点的第二节点,所述第一节点包括所述第一交叉参考电路和所述至少一个核,所述第二节点包括第二交叉参考电路和耦合至所述第二交叉参考电路与所述固件存储设备的一个或多个核,其中
所述至少一个核经由处理器互连耦合至所述一个或多个核,
所述BSP是系统BSP(SBSP),
所述一个或多个核被配置成用于执行第三线程以实现节点BSP(NBSP)并且用于执行至少一个第四线程以实现一个或多个应用处理器(AP),并且
所述SBSP被配置成用于至少部分地通过初始化所述处理器互连来启动所述NBSP。
9.如权利要求8所述的计算设备,其中,所述至少一个核被配置成用于通过经由所述SBSP传送的一个或多个管道请求而将指令与所述一个或多个核同步。
10.一种使用计算设备来执行存储器初始化前多线程并行处理的方法,所述方法包括:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的固件指令的子集。
11.如权利要求10所述的方法,其中:
传送所述消息包括传送将所述至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且
接收固件指令的所述子集包括经由与能编程属性映射相关联的逻辑电路的执行来接收所述子集。
12.如权利要求10所述的方法,其中:
执行所述第一线程包括经由区别于第二核的第一核来执行所述第一线程;并且
执行所述至少一个第二线程包括经由所述第二核来执行所述至少一个第二线程。
13.如权利要求10至12中任一项所述的方法,其中,传送所述消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
14.如权利要求13所述的方法,其中,所述重定向存储器地址驻留在所述高速缓存存储器中,并且所述方法进一步包括:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
15.如权利要求14所述的方法,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述方法进一步包括经由所述至少一个AP执行所述固件指令的所述子集。
16.如权利要求15所述的方法,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于训练系统存储器的任务指令,并且所述方法进一步包括经由至少一个存储器控制器至少部分地通过执行所述无驱逐模式存储器中所存储的所述任务指令来训练所述系统存储器。
17.如权利要求10所述的方法,其中,执行所述第一线程以实现所述BSP包括执行所述第一线程以实现区别于所述计算设备的第二节点的所述计算设备的第一节点上的SBSP,并且所述方法进一步包括:执行所述第二节点上的第三线程以实现节点BSP(NBSP),经由所述第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动所述NBSP。
18.一种非瞬态计算机可读介质,编码有指令,所述指令能由至少一个核执行以执行用于提供存储器初始化前多线程并行计算平台的过程,所述过程包括:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的固件指令的子集。
19.如权利要求18所述的计算机可读介质,其中:
传送所述消息包括传送将所述至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且
接收固件指令的所述子集包括经由与能编程属性映射相关联的逻辑电路的执行来接收所述子集。
20.如权利要求18所述的计算机可读介质,其中:
执行所述第一线程包括经由区别于第二核的第一核来执行所述第一线程;并且
执行所述至少一个第二线程包括经由所述第二核来执行所述至少一个第二线程。
21.如权利要求18至20中任一项所述的计算机可读介质,其中,传送所述消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
22.如权利要求21所述的计算机可读介质,所述过程进一步包括:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
23.如权利要求22所述的计算机可读存储介质,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述过程进一步包括经由所述至少一个AP执行所述固件指令的所述子集。
24.如权利要求23所述的计算机可读介质,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于训练系统存储器的任务指令,并且所述过程进一步包括经由至少一个存储器控制器至少部分地通过执行所述无驱逐模式存储器中所存储的所述任务指令来训练所述系统存储器。
25.如权利要求18所述的计算机可读介质,其中,执行所述第一线程以实现所述BSP包括执行所述第一线程以实现区别于所述计算设备的第二节点的所述计算设备的第一节点上的SBSP,并且所述过程进一步包括:执行所述第二节点上的第三线程以实现节点BSP(NBSP),经由所述第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动所述NBSP。
Claims (25)
1.一种计算设备,包括:
固件存储设备,所述固件存储设备存储固件指令;
第一交叉参考电路,所述第一交叉参考电路被配置成用于将被寻址到至少一个目标存储器地址的存储器访问请求重定向到至少一个重定向存储器地址;以及
至少一个核,所述至少一个核耦合至所述第一交叉参考电路和所述固件存储设备并且被配置成用于:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识所述至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由所述第一交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的所述固件指令的子集。
2.如权利要求1所述的计算设备,其中,所述第一交叉参考电路包括能编程属性映射和相关联的逻辑电路,所述消息包括启动处理器间中断,并且所述至少一个目标存储器地址包括唤醒缓冲器的存储器地址。
3.如权利要求1所述的计算设备,其中,所述至少一个核包括第一核和区别于所述第一核的第二核,并且所述第一核被配置成用于执行所述第一线程且所述第二核被配置成用于执行所述至少一个第二线程。
4.如权利要求1至3中任一项所述的计算设备,进一步包括耦合至所述至少一个核的高速缓存存储器,其中,所述至少一个重定向存储器地址驻留在所述高速缓存存储器或所述固件存储设备中。
5.如权利要求4所述的计算设备,其中,所述至少一个核进一步被配置成用于:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
6.如权利要求5所述的计算设备,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述至少一个核进一步被配置成用于经由所述至少一个AP执行所述固件指令的所述子集。
7.如权利要求6所述的计算设备,进一步包括:
至少一个存储器控制器,所述至少一个存储器控制器耦合至所述至少一个核;以及
系统存储器,所述系统存储器耦合至所述至少一个存储器控制器,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于经由所述至少一个存储器控制器来训练所述系统存储器的任务指令。
8.如权利要求1所述的计算设备,进一步包括多个节点,所述多个节点包括第一节点和区别于所述第一节点的第二节点,所述第一节点包括所述第一交叉参考电路和所述至少一个核,所述第二节点包括第二交叉参考电路和耦合至所述第二交叉参考电路与所述固件存储设备的一个或多个核,其中
所述至少一个核经由处理器互连耦合至所述一个或多个核,
所述BSP是系统BSP(SBSP),
所述一个或多个核被配置成用于执行第三线程以实现节点BSP(NBSP)并且用于执行至少一个第四线程以实现一个或多个应用处理器(AP),并且
所述SBSP被配置成用于至少部分地通过初始化所述处理器互连来启动所述NBSP。
9.如权利要求8所述的计算设备,其中,所述至少一个核被配置成用于通过经由所述SBSP传送的一个或多个管道请求而将指令与所述一个或多个核同步。
10.一种使用计算设备来执行存储器初始化前多线程并行处理的方法,所述方法包括:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由所述第一交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的固件指令的子集。
11.如权利要求10所述的方法,其中:
传送所述消息包括传送将所述至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且
接收固件指令的所述子集包括经由与能编程属性映射相关联的逻辑电路的执行来接收所述子集。
12.如权利要求10所述的方法,其中:
执行所述第一线程包括经由区别于第二核的第一核来执行所述第一线程;并且
执行所述至少一个第二线程包括经由所述第二核来执行所述至少一个第二线程。
13.如权利要求10至12中任一项所述的方法,其中,传送所述消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
14.如权利要求13所述的方法,其中,所述重定向存储器地址驻留在所述高速缓存存储器中,并且所述方法进一步包括:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
15.如权利要求14所述的方法,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述方法进一步包括经由所述至少一个AP执行所述固件指令的所述子集。
16.如权利要求15所述的方法,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于训练系统存储器的任务指令,并且所述方法进一步包括经由至少一个存储器控制器至少部分地通过执行所述无驱逐模式存储器中所存储的所述任务指令来训练所述系统存储器。
17.如权利要求10所述的方法,其中,执行所述第一线程以实现所述BSP包括执行所述第一线程以实现区别于所述计算设备的第二节点的所述计算设备的第一节点上的SBSP,并且所述方法进一步包括:执行所述第二节点上的第三线程以实现节点BSP(NBSP),经由所述第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动所述NBSP。
18.一种非瞬态计算机可读介质,编码有指令,所述指令能由至少一个核执行以执行用于提供存储器初始化前多线程并行计算平台的过程,所述过程包括:
执行第一线程以实现自举处理器(BSP);
执行至少一个第二线程以实现至少一个应用处理器(AP);
经由所述BSP向所述至少一个AP传送消息,所述消息标识与至少一个重定向存储器地址对应的至少一个目标存储器地址;
经由所述至少一个AP请求所述至少一个目标存储器地址处所存储的指令;以及
经由所述第一交叉参考电路的执行接收所述至少一个重定向存储器地址处所存储的固件指令的子集。
19.如权利要求18所述的计算机可读介质,其中:
传送所述消息包括传送将所述至少一个目标存储器地址标识为唤醒缓冲器的存储器地址的启动处理器间中断;并且
接收固件指令的所述子集包括经由与能编程属性映射相关联的逻辑电路的执行来接收所述子集。
20.如权利要求18所述的计算机可读介质,其中:
执行所述第一线程包括经由区别于第二核的第一核来执行所述第一线程;并且
执行所述至少一个第二线程包括经由所述第二核来执行所述至少一个第二线程。
21.如权利要求18至20中任一项所述的计算机可读介质,其中,传送所述消息包括传送标识与驻留在高速缓存存储器或固件存储设备中的重定向存储器地址对应的目标存储器地址的消息。
22.如权利要求21所述的计算机可读介质,所述过程进一步包括:
将所述高速缓存存储器的至少部分配置为无驱逐模式存储器;以及
经由所述BSP将能经由所述至少一个AP执行的任务指令存储在所述无驱逐模式存储器中。
23.如权利要求22所述的计算机可读存储介质,其中,所述固件指令的所述子集包括用于执行所述无驱逐模式存储器中所存储的所述任务指令的固件指令,并且所述过程进一步包括经由所述至少一个AP执行所述固件指令的所述子集。
24.如权利要求23所述的计算机可读介质,其中,所述无驱逐模式存储器中所存储的所述任务指令包括用于训练系统存储器的任务指令,并且所述过程进一步包括经由至少一个存储器控制器至少部分地通过执行所述无驱逐模式存储器中所存储的所述任务指令来训练所述系统存储器。
25.如权利要求18所述的计算机可读介质,其中,执行所述第一线程以实现所述BSP包括执行所述第一线程以实现区别于所述计算设备的第二节点的所述计算设备的第一节点上的SBSP,并且所述过程进一步包括:执行所述第二节点上的第三线程以实现节点BSP(NBSP),经由所述第二节点上的第四线程执行至少一个AP,以及至少部分地通过初始化处理器互连来启动所述NBSP。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/118214 WO2019126921A1 (en) | 2017-12-25 | 2017-12-25 | Pre-memory initialization multithread parallel computing platform |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111133414A true CN111133414A (zh) | 2020-05-08 |
Family
ID=67064379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780095259.0A Pending CN111133414A (zh) | 2017-12-25 | 2017-12-25 | 存储器初始化前多线程并行计算平台 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11354135B2 (zh) |
EP (1) | EP3732567A4 (zh) |
KR (1) | KR102623918B1 (zh) |
CN (1) | CN111133414A (zh) |
WO (1) | WO2019126921A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3732567A4 (en) | 2017-12-25 | 2021-08-04 | Intel Corporation | MULTI-WIRE PARALLEL COMPUTER PLATFORM FOR PRE-MEMORY INITIALIZATION |
CN112416053B (zh) * | 2019-08-23 | 2023-11-17 | 北京希姆计算科技有限公司 | 多核架构的同步信号产生电路、芯片和同步方法及装置 |
CN115004155A (zh) * | 2020-02-24 | 2022-09-02 | 英特尔公司 | 在运行时实现外部存储器训练 |
WO2022036536A1 (en) * | 2020-08-18 | 2022-02-24 | Intel Corporation | Improving memory training performance by utilizing compute express link (cxl) device-supported memory |
KR102635807B1 (ko) * | 2021-06-30 | 2024-02-13 | 한국전자통신연구원 | 펌웨어 메모리 맵 정보 추출 장치 및 방법 |
CN116701292A (zh) | 2022-02-24 | 2023-09-05 | 平头哥(上海)半导体技术有限公司 | 用于芯片间通信的处理系统和通信方法 |
WO2023225792A1 (en) * | 2022-05-23 | 2023-11-30 | Intel Corporation | Techniques to multiply memory access bandwidth using a plurality of links |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3584446D1 (de) * | 1985-06-18 | 1991-11-21 | Ibm | Mikroprozessor. |
US5768585A (en) * | 1995-11-21 | 1998-06-16 | Intel Corporation | System and method for synchronizing multiple processors during power-on self testing |
US6687818B1 (en) * | 1999-07-28 | 2004-02-03 | Unisys Corporation | Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system |
US6934873B2 (en) * | 2002-02-28 | 2005-08-23 | Dell Products L.P. | Automatic BIOS recovery in a multi-node computer system |
US7493435B2 (en) | 2003-10-06 | 2009-02-17 | Intel Corporation | Optimization of SMI handling and initialization |
FR2862397A1 (fr) * | 2003-11-13 | 2005-05-20 | St Microelectronics Sa | Demarrage securise d'un appareil electronique a architecture smp |
US7979699B2 (en) * | 2004-05-19 | 2011-07-12 | Intel Corporation | Processing capacity on demand |
CN100356325C (zh) * | 2005-03-30 | 2007-12-19 | 中国人民解放军国防科学技术大学 | 大规模并行计算机系统分组并行启动方法 |
US7437546B2 (en) | 2005-08-03 | 2008-10-14 | Intel Corporation | Multiple, cooperating operating systems (OS) platform system and method |
US7600109B2 (en) * | 2006-06-01 | 2009-10-06 | Dell Products L.P. | Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory |
CN100504779C (zh) * | 2006-06-30 | 2009-06-24 | 联想(北京)有限公司 | 一种加速bios运行的方法 |
US7779244B2 (en) * | 2006-12-28 | 2010-08-17 | Intel Corporation | Multi-socket boot |
US8458726B2 (en) * | 2007-12-03 | 2013-06-04 | Intel Corporation | Bios routine avoidance |
US20080222423A1 (en) * | 2007-03-06 | 2008-09-11 | Secude International | System and method for providing secure authentication of devices awakened from powered sleep state |
US7805597B2 (en) * | 2007-03-30 | 2010-09-28 | Intel Corporation | Parallel link reset in link based system |
US7987348B2 (en) * | 2007-03-30 | 2011-07-26 | Intel Corporation | Instant on video |
US8032681B2 (en) * | 2007-09-06 | 2011-10-04 | Intel Corporation | Processor selection for an interrupt based on willingness to accept the interrupt and on priority |
US7818560B2 (en) * | 2007-09-21 | 2010-10-19 | Intel Corporation | System information synchronization in a links-based multi-processor system |
US7987352B2 (en) | 2007-11-30 | 2011-07-26 | Intel Corporation | Booting with sub socket partitioning |
US8645965B2 (en) * | 2007-12-31 | 2014-02-04 | Intel Corporation | Supporting metered clients with manycore through time-limited partitioning |
US8578138B2 (en) * | 2009-08-31 | 2013-11-05 | Intel Corporation | Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode |
US8307198B2 (en) | 2009-11-24 | 2012-11-06 | Advanced Micro Devices, Inc. | Distributed multi-core memory initialization |
US9171165B2 (en) * | 2009-12-23 | 2015-10-27 | Intel Corporation | Methods, systems, and apparatuses to facilitate configuration of a hardware device in a platform |
US9015455B2 (en) * | 2011-07-07 | 2015-04-21 | Intel Corporation | Processsor integral technologies for BIOS flash attack protection and notification |
GB2493340A (en) * | 2011-07-28 | 2013-02-06 | St Microelectronics Res & Dev | Address mapping of boot transactions between dies in a system in package |
TWI454905B (zh) * | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
US20130097412A1 (en) * | 2011-10-17 | 2013-04-18 | International Business Machines Corporation | Performing A Boot Sequence In A Multi-Processor System |
US8793528B2 (en) | 2011-11-30 | 2014-07-29 | Oracle International Corporation | Dynamic hypervisor relocation |
US9558012B2 (en) * | 2013-02-21 | 2017-01-31 | Applied Micro Circuits Corporation | System boot with external media |
US9727345B2 (en) * | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
EP3732567A4 (en) | 2017-12-25 | 2021-08-04 | Intel Corporation | MULTI-WIRE PARALLEL COMPUTER PLATFORM FOR PRE-MEMORY INITIALIZATION |
-
2017
- 2017-12-25 EP EP17936697.6A patent/EP3732567A4/en not_active Withdrawn
- 2017-12-25 CN CN201780095259.0A patent/CN111133414A/zh active Pending
- 2017-12-25 WO PCT/CN2017/118214 patent/WO2019126921A1/en unknown
- 2017-12-25 KR KR1020207014580A patent/KR102623918B1/ko active IP Right Grant
- 2017-12-25 US US16/648,770 patent/US11354135B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3732567A4 (en) | 2021-08-04 |
EP3732567A1 (en) | 2020-11-04 |
KR102623918B1 (ko) | 2024-01-11 |
US11354135B2 (en) | 2022-06-07 |
KR20200097247A (ko) | 2020-08-18 |
US20200249957A1 (en) | 2020-08-06 |
WO2019126921A1 (en) | 2019-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11354135B2 (en) | Pre-memory initialization multithread parallel computing platform | |
US8230201B2 (en) | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
US8225120B2 (en) | Wake-and-go mechanism with data exclusivity | |
US8082315B2 (en) | Programming idiom accelerator for remote update | |
US20100268915A1 (en) | Remote Update Programming Idiom Accelerator with Allocated Processor Resources | |
JP2014075147A (ja) | システム管理モードのためのプロセッサにおける状態記憶の提供 | |
US7493435B2 (en) | Optimization of SMI handling and initialization | |
JP2015507772A (ja) | マルチコアプラットフォームにおける制約ブート法 | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
JP2017102919A (ja) | 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造 | |
US10620966B2 (en) | Method to coordinate system boot and reset flows and improve reliability, availability and serviceability (RAS) among multiple chipsets | |
WO2017172220A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
GB2216306A (en) | Load and synchronize computer architecture and process | |
US10459747B2 (en) | Exitless timer access for virtual machines | |
US8392640B2 (en) | Pre-memory resource contention resolution | |
JPS6030984B2 (ja) | 多重共通バスを有するデ−タ処理システム | |
US11093441B2 (en) | Multi-core control system that detects process dependencies and selectively reassigns processes | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
US11455261B2 (en) | First boot with one memory channel | |
JP2023070069A (ja) | 仮想マシンにおけるユーザレベル割り込み | |
US20150242330A1 (en) | Guest-programmable location of advanced configuration and power interface (acpi) tables in virtualized systems | |
US9710359B2 (en) | Executing debug program instructions on a target apparatus processing pipeline | |
US20060156291A1 (en) | System and method for managing processor execution in a multiprocessor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |