动态系统重新配置的制作方法

文档序号:6349574阅读:146来源:国知局
专利名称:动态系统重新配置的制作方法
技术领域
本发明总体上涉及动态系统重新配置。
背景技术
随着引入能够构建大型多处理器(MP)系统(例如,具有1 个插座)的可伸缩快速通道互联(QPI)服务器,系统的重新配置变得非常复杂。存储器控制器被集成到每个处理器插座中。此外,在未来,其他部件(例如IO根复合体、IO设备……)可能被集成到一个或更多处理器插座中。这进一步增加了地址路由的复杂性。诸如处理器热插拔和输入/输出中心(IOH)热插拔、存储器迁移、CPU迁移……等的可靠性、可用性和可服务性(RAS)特征被添加到特征列表。在该附加的复杂性和新特征的情况下,在硬件中实现动态系统重新配置解决方案是非常复杂的并且开发和验证非常昂贵。目前使用系统管理中断(SMI)实现RAS操作(尤其是在运行时影响系统重新配置的操作),其中,SMI汇集所有的处理器,执行QPI代理(例如处理器,IOH等)的停顿 (quiesce),并且对系统配置(例如QPI路由、地址解码器等)进行重新编程。然而,不管 QPI互连的链路特性如何,都必须原子地进行对所有QPI代理(处理器,IO中心……)的改变以防止误路由的数据业务。当该重新配置由自身在一致性存储器外部执行的SMI代码执行时,这会引起特殊挑战,所述SMI代码在一致性存储器外部执行在QPI路由改变期间是不能容忍的。还要注意,SMI操作是对OS(操作系统)透明的,并且因此需要将SMI延迟保持最小(通常为数百微秒的量级)以进行可靠的系统操作。


通过下面给出的详细描述和本发明的一些实施例的附图将更全面地理解本发明, 然而,这些详细描述和附图不应当用于将本发明限制到所描述的特定实施例,而是仅用于解释和理解。图1说明了根据本发明的一些实施例的系统。图2说明了根据本发明的一些实施例的系统。图3说明了根据本发明的一些实施例的系统。图4说明了根据本发明的一些实施例的流程。图5说明了根据本发明的一些实施例的流程。图6说明了根据本发明的一些实施例的流程。图7说明了根据本发明的一些实施例的流程。图8说明了根据本发明的一些实施例的系统。图9说明了根据本发明的一些实施例的系统。图10说明了根据本发明的一些实施例的流程。图11说明了根据本发明的一些实施例的流程。
具体实施例方式本发明的一些实施例涉及动态系统重新配置。图1说明了根据一些实施例的系统100。在一些实施例中,系统100包括多个处理器和/或中央处理单元(CPU),包括例如CPUO 102、CPUl 104、CPU2 106禾口 CPU3 108。在一些实施例中,系统100附加地包括多个存储器,包括例如存储器112、存储器114、存储器 116和存储器118。在一些实施例中,处理器102、104、106和108的每一个具有存储器控制器。在一些实施例中,系统100附加地包括一个或多个输入/输出中心(IOH),包括例如 IOHO 122和IOHl 124。在一些实施例中,IOHl IM耦合到快速PCI总线132和/或快速 PCI总线134,和/或IOHO 122耦合到快速PCI总线136、快速PCI总线138和/或输入/ 输出控制器中心(ICH) 140。在一些实施例中,处理器102、104、106和108以及IOH 122和 IOH IM通过多个链路和/或互连耦合在一起。在一些实施例中,耦合处理器102、104、106 和108以及IOHO 122和IOHl 124的链路和/或互连是多个一致性链路,例如在一些实施例中,是快速通道互联(QPI)链路和/或多个通用系统接口(CSI)链路。在一些实施例中,系统100是四插座基于QPI的系统。在一些实施例中,使用英特尔QPI链路连接QPI部件(例如,处理器插座和/或I/O中心)并且通过英特尔QPI端口控制QPI部件。在一些实施例中,使用源地址解码器(SAD)和路由器(RTA)来使得能够在 QPI部件之间进行通信。源地址解码器(SAD)解码对特定节点地址的带内地址访问。QPI 路由器在QPI部件中路由业务以及将业务路由到其他QPI部件。根据一些实施例,QPI平台需要系统中的所有源地址解码器和路由器被相同地编程以防止业务的误路由。在引导操作期间,可以在任何控制被移交给操作系统(0 之前在基本输入/输出系统¢10 中完成该编程。在一些实施例中,在系统被引导到OS之后,可靠性、可用性和可服务性(RAQ事件能够改变系统配置。例如,RAS事件包括诸如以下的操作处理器添加、处理器移除、IOH添力口、IOH移除、存储器添加、存储器移动、存储器迁移、存储器镜像、存储器备用、处理器热插拔、存储器热插拔、热插拔插座、热插拔Ι0Η(Ι/0中心),域分区等。这些和其他类型的RAS 事件需要QPI部件在OS继续运行时被动态编程。它们需要在OS运行时动态地改变系统。 由于SAD和路由器在所有时间都被相同编程的要求,这些RAS操作需要“原子地”进行对QPI 配置的任何更新(即,当重新配置QPI时必须没有一致性业务在进行)。此外,由于在这些 RAS事件期间OS继续运行,因此需要在窄时间窗口(例如,通常是数百微秒量级)内完成重新配置以防止OS超时。高端RAS特征,例如,热插拔插座、热插拔处理器、热插拔存储器、热插拔I/O中心 (Ι0Η)、存储器的热插拔、I/O芯片组的热插拔,I/O控制器中心(ICH)的热插拔、处理器的在线/离线、存储器的在线/离线、I/O芯片组的在线/离线、I/O控制器中心(ICH)的在线/ 离线、存储器迁移、存储器镜像、处理器(和/或CPU)迁移、域分区等,是高端关键任务多处理器服务器平台的关键区别。基于诸如QPI的链路的服务器和/或多处理器平台被设计为允许诸如这些的高端RAS特征。如上所提及的,对基于QPI的系统中的这些RAS流的共同要求是需要在所有的QPI代理上(例如,在所有的处理器和I/O中心上)原子地更新QPI 配置(例如,QPI路由改变、源地址解码器改变、广播列表等)。除了要是原子的,还需要以OS透明的方式进行这些改变,而不影响正在运行的OS。根据一些实施例,系统管理模式(SMM)用于使用系统管理中断(SMI)来完成路由改变。 传统的SMI代码执行在存储器外部运行,所述存储器可以位于系统中的任何QPI插座上。然而,如果不在重新配置期间阻止存储器访问,那么在QPI配置改变期间的存储器访问导致可能误路由的分组并且损害系统的完整性。此外,由于OS实时访问的期望,SMI延迟被限制为数百微秒的量级。根据一些实施例,以原子的方式执行动态QPI系统重新配置(即,当重新配置正在进行时没有诸如存储器访问的一致性业务发生),并且动态QPI系统重新配置满足操作系统/虚拟存储器管理器(OS/VMM)实时响应要求。图2说明了根据一些实施例的系统200。在一些实施例中,系统200包括多个处理器和/或中央处理单元(CPU),包括例如CPUO 202、CPUl 204、CPU2 206和CPU3 208。在一些实施例中,系统200附加地包括多个存储器,包括例如存储器212、存储器214、存储器 216和存储器218。在一些实施例中,处理器202、204、206和208的每一个具有存储器控制器。在一些实施例中,系统200附加地包括一个或多个输入/输出中心(IOH),包括例如 IOHO 222和IOHl 224。在一些实施例中,处理器202、204、206和208以及IOH 222和IOH 224通过多个链路和/或互连耦合在一起。在一些实施例中,耦合处理器202、204、206和 208以及IOHO 222和IOHl 224的链路和/或互连是多个一致性链路,例如在一些实施例中,是快速通道互联(QPI)链路和/或多个通用系统接口(CSI)链路。图2的系统200假设CPU3 208 (和/或图1的系统中的CPU3 108)在系统被引导时不存在,并且CPU3 208需要热添加到正在运行的系统。图2说明了系统中QPI代理202、 204、206、208、222和224的每一个的端口信息。其他处理器202、204和206以及IOH 222 和2M之间的链路(例如,QPI链路)被示出为已初始化且正在工作的链路,而CPU3 208 和其他部件之间的链路在图2中用虚线示出,这是因为这些链路还没有被初始化。为了处理CPU3 208的热添加,首先需要进行关于正在运行的系统是如何与添加的CPU3 208连接的发现。根据一些实施例,在CPU3 208以及所有其他QPI部件202、204、206、222和2M上的路由器(RTA)和源地址解码器(SAD)需要被配置(或重新配置),以使CPU3 208和存储器218能够被添加到该正在运行的系统。图3说明了根据一些实施例的系统300。在一些实施例中,系统300包括多个处理器和/或中央处理单元(CPU),包括例如CPUO 302、CPUl 304、CPU2 306和CPU3 308。在一些实施例中,系统300附加地包括多个存储器,包括例如,存储器312、存储器314、存储器 316和存储器318。在一些实施例中,处理器302、304、306和308的每一个具有存储器控制器。在一些实施例中,系统300附加地包括一个或多个输入/输出中心(IOH),包括例如 IOHO 322和IOHl 324。在一些实施例中,处理器302、304、306和308以及IOH 322和IOH 324通过多个链路和/或互连耦合在一起。在一些实施例中,耦合处理器302、304、306和 308以及IOHO 322和IOHl 324的链路和/或互连是多个一致性链路,例如在一些实施例中,是快速通道互联(QPI)链路和/或多个通用系统接口(CSI)链路。图3的系统300假设IOHl 324 (和/或图1的系统中的IOHl IM和/或图2的系统中的IOHl 224)在系统被引导时不存在,并且IOHl 3M需要热添加到正在运行的系统。图3说明了系统中QPI代理302、304、306、308、322和324的每一个的端口信息。处理器302、304、306和308以及其他I0H0322之间的链路(例如,QPI链路)被示出为已初始化且正在工作的链路,而IOHl 324和其他部件之间的链路在图3中用虚线示出,这是因为这些链路还没有被初始化。为了处理IOHl 3M的热添加,首先需要进行关于正在运行的系统是如何与添加的IOHI 324连接的发现。在IOHl 324以及所有其他QPI部件302、304、 306,308和322上的路由器(RTA)和源地址解码器(SAD)需要被配置(或重新配置),以使 IOHl 324能够被添加到该正在运行的系统。根据一些实施例,系统重新配置代码和数据被缓存,并且对存储器的任何直接或间接访问被阻止。在一些实施例中,由于系统重新配置在高速缓存外部执行时被执行,因此任何QPI链路路由或源地址解码器改变仍不会影响代码执行。根据一些实施例,仅一个处理器核心被允许在重新配置时间窗口期间运行,并且所有其他核心被阻止实现任何外发(outbound)访问。在一些实施例中,在停顿-取消停顿窗口外部计算重新配置数据以减少SMI延迟。根据一些实施例,使用运行时固件流程完成 QPI平台的动态重新配置,所述运行时固件流程使用QPI停顿操作。在一些实施例中,通过从存储器中读取停顿代码来对所述停顿代码进行缓存。停顿数据被缓存,并且通过执行数据读取和写入操作以使得高速缓存线处于修改后状态来阻止对该数据的任何修改被写回到存储器中。禁止预取以避免系统重新配置代码执行期间的存储器访问。通过避开除了停顿代码和数据之外的所有地址区域而不进行从存储器的推测性加载。非核心被清洗以确保在执行任何系统重新配置操作之前完成了所有的未完成事务。在系统重新配置代码在核心中执行时,所有其他线程被同步,以确保它们在高速缓存外部执行。在系统重新配置窗口期间停止所有带外(OOB)调试钩子。根据一些实施例,QPI部件支持停顿模式,通过所述停顿模式,所有QPI代理暂停除了停顿之外的正常业务。根据一些实施例,下面示出了处理器的停顿模式特定寄存器 (MSR)的定义。该寄存器可以根据一些实施例用于软件来通过处理器MSR发起停顿、取消停顿和非核心屏障操作。Iw 默认
20 非核心屏障清洗由MSRwr在其上执行的核心发
出的所有未完成非核心事务以及这些事务的任何高速缓存副作用。 1-非核心屏障
___0-无改变_
10 取消停顿发起系统的取消停顿操作。允许广播列
表中所列的所有QPI代理恢复操作 1-退出停顿状态
___0-无改变_
00 停顿发起系统的停顿操作,广播列表中所列的
QPI代理进入停顿状态。 1-进入停顿状态
__0-无改变_图4说明了根据一些实施例的流程400。在一些实施例中,流程400是停顿数据生成流程。首先,在402确定和/或识别RAS操作。然后,如果需要的话,在404初始化新的链路(例如,QPI链路)。然后,在406(如果需要的话,例如使用周期SMI)计算诸如SAD、 链路路由(和/或QPI路由)、广播列表等的停顿数据。在408,设置停顿请求标志。然后在410生成停顿SMI#。在一些实施例中,仅一个处理器核心(例如,“Monarch”处理器)被允许在重新配置窗口期间运行,并且阻止所有其他核心的任何外发访问。在一些实施例中,在停顿-取消停顿窗口外部计算重新配置数据以减少SMI延迟。图5、6和7说明了根据一些实施例的流程500、600和700。在一些实施例中,流程 500,600和700说明了用于实现诸如QPI平台的平台的动态重新配置的流程。在一些实施例中,流程500、600和700使用实现QPI停顿的运行时固件流程。从系统中所有可用核心中选择停顿Monarch核心来执行停顿、系统重新配置和取消停顿操作。停顿核心可能具有多个线程。每一个停顿核心线程需要确保其在重新配置操作期间不访问任何存储器。例如,在图5、6和/或7中,该操作被概括为MonarchAP(应用处理器,即,非Monarch处理器)线程。在图5的502,确定SMI是否运行在被识别为允许在重新配置期间运行的一个处理器的Monarch QPI代理(例如,Monarch处理器)上。如果在502不是SMI Monarch,则在 504执行常规SMI AP (应用处理器,S卩非-Monarch处理器)自旋循环。如果在502是SMI Monarch,则在506确定停顿请求标志是否被设置。如果在506没有设置停顿请求标志,则在508执行常规SMI Monarch代码。然而,如果在506设置了停顿请求标志,则在510实现唤醒Monarch AP线程(例如,如果Monarch AP线程是活动的)。在一些实施例中,如果每个线程在进入AP自旋循环之前检查停顿请求标志,则可以避免唤醒。在512,停顿Monarch禁止任何外部代理对存储器或配置备用寄存器(CSR)的访问。RTA和SAD被正常实现为CSR,从而在重新配置阶段期间对CSR的访问可能导致证实错误内容。在一些实施例中,这通过配置实现特定MSR或通过请求带外(OOB)设备(例如, 基带管理控制器(BMC)、系统服务处理器(SSP)和/或管理引擎(ME))来实现。在一些实施例中,可以例如通过禁止处理器调试钩子或通过禁止通过处理器边带接口的访问来实现在512的外部代理对存储器或CSR的访问。在514确定是否已经禁止了外部代理的CSR访问。如果在514还没有禁止,则该线程中的流程保持在514直到已经禁止为止。一旦确定在514已经禁止了外部代理的CSR访问,则在516通过设置QUIESCE_CTL寄存器中的停顿比特(例如,通过设置QUIESCE_CTL1. Quiesce = 1),和在一些实施例中将MonarchMatus 设置为“QUIESCE_0N”,来发起停顿操作。该操作确保所有的QPI代理进入停顿状态并且不发起任何新的事务。在Monarch AP线程中,流程保持在522直到确定MonarchMatus已经被设置为“QUIESCE_0N”为止。流程从516移动到图6中的“Monl”,并且流程从522移动到图6中的“MAPT1”。一旦系统处于停顿状态,则如图6中的Monarch线程流程所示,Monarch线程对代码和数据二者进行缓存并且开始在高速缓存外部进行执行,而没有外部存储器访问。在 602,进行关于MonarchAPMatus是否是“准备好重新配置”的确定。在一些实施例中,仅当存在Monarch AP时才对此进行检查。一旦Monarch AP状态是“准备好重新配置”,则在604发生禁止预取操作。在一些实施例中,这在604通过以下操作来实现保存MISC_ FEATURE_C0NTR0L,然后执行“MFENCE”(存储器屏障——例如,串行化操作,其保证程序次序在MFENCE指令之前的每个加载和存储指令是在MFENCE指令之后的任何加载或存储指令全局可见之前全局可见的)和/或然后将MISC_FEATHURE_C0NTR0L设置为(Fh。在一些实施例中,这在604通过保存预取控制、MFENCE和禁止预取来实现。在606,针对具有WB (写回缓存属性)属性的停顿代码和数据区和具有UC(未缓存的缓存属性)属性的CSR访问区建立页表。建立这些页表,以使得在停顿代码区外部不存在推测性加载。建立这些页表,以使得仅停顿代码区是UC。这间接地确保不在停顿代码区外部执行推测性加载。在608,读取停顿代码区以对代码进行缓存。在610,执行停顿数据区的读取和写入。在一些实施例中 (未在图6中示出),然后执行到所缓存的代码的跳转(例如,跳转到停顿Monarch代码)。 在该步骤,在高速缓存外部,而非从存储器执行代码。在614,设置UnCorei^nce比特(例如,QUIESCE_CTL 1. UnCoreFence = 1)。在图6中使用停顿Monarch代码来对停顿代码和数据进行缓存。例如,在622,发生禁止预取操作。在一些实施例中,保存预取控制,MFENCE并禁止预取。在一些实施例中, 这在622通过以下操作来实现保存MISC_FEATURE_C0NTR0L,然后执行“MFENCE” (存储器屏障)和/或然后将MISC_FRETURE_C0NTR0L设置为(Fh。在624,针对具有WB属性的停顿代码区和具有UC属性的CSR访问区建立页表。建立这些页表,以使得在停顿代码和数据区外部不存在推测性加载。建立这些页表,以使得仅停顿代码和数据区是UC。这间接地确保不在停顿代码和数据区外部执行推测性加载。在626,读取停顿代码区以对代码进行缓存。 读取和写入停顿数据区,以对处于修改后状态的数据进行缓存。这确保在系统重新配置期间任何停顿数据访问不会导致存储器访问。在628,实现到停顿Monarch代码(和/或停顿 AP代码)的跳转。在该步骤,在高速缓存外部执行代码。在630,MonarchAPMatus被设置为“准备好重新配置”。流程从614移动到图7中的“Mon2”并且流程从630移动到图7中的“MAPT2”。执行非核心屏障以确保来自核心、非核心和插座的包括高速缓存牺牲业务的所有未完成事务被排净(drain)。此时,所有的代码和数据访问都是来自高速缓存的,并且没有存储器访问被执行。根据一些实施例,Monarch停顿通过对每个插座上的RTA、SAD等进行编程来对系统进行重新配置。系统被设置为取消停顿,并且所有的核心能够从先前暂停的位置继续。恢复预取和外部代理的CSR访问。这例如根据图7来实现。在702,系统被重新配置(例如, 通过对QPI路由、SAD、广播列表等进行编程来进行)。在704,将Monarch状态设置为“已完成重新配置”。在706进行关于MonarchAPMatus是否是“AP_D0NE”的确定。在一些实施例中,仅在Monarch AP存在时才对此进行检查。一旦在706确定Monarch AP状态是“已完成AP”,则在708恢复预取控制。在710,“QUIESCE_CTL1. UnQuiesce”比特被设置为“ 1 ”, 并且“QuiesceStatus”被设置为“QUIESCE_0FF”。然后在712执行到常规SMI Monarch代码的返回。在722,进行关于MonarchMatus是否被设置为“已完成重新配置”的确定。如果是,则在7 恢复预取控制。在726,将MonarchAPMatus设置为“AP_D0NE”。然后在728 执行到常规SMI AP代码的返回。具有诸如QPI的一致性链路、多个处理器(MP)、多个存储器控制器和多个芯片组的系统正在被设计出来并且正在变得越来越普及。包括但不限于处理器热插拔、处理器迁移、存储器热插拔、存储器镜像、存储器迁移和存储器备用等的高级RAS特征将在服务器市场细分中变得普及。RAS特征要求基本输入/输出系统¢10 在运行时期间完成很多工作。根据一些实施例,系统重新配置在不需要昂贵硬件钩子的情况下被实现。基于快速通道互联(QPI)(和/或CSI)的服务器系统引入的高级RAS特征包括但不限于处理器热插拔、存储器热插拔、存储器镜像、存储器迁移和存储器备用等。这些特征要求在操作系统(OS)正在运行时动态地改变系统配置。当前使用系统管理中断(SMI)来实现这些操作,其中,SMI汇集所有的处理器,执行API代理(例如,处理器、IOH等)的停顿, 并且对系统配置(例如QPI路由、地址解码器等)进行重新编程。然而,SMI在存储器外部执行,这在QPI路由改变期间是不能容忍的。因此,在一些实施例中,SMI处理程序代码和数据被加载到高速缓存中并且在其外部执行。这使得运行时配置流程与高速缓存架构是非常相关的。此外,通过SMI代码执行进行的对代码的缓存和对QPI路由和地址解码器的重新编程将花费相当长的时间。由于在SMI延迟上的OS限制,需要在严格的时间约束下小心地写入SMI停顿和QPI编程代码以满足延迟要求。这些因素使得先前的停顿流程变得非常复杂,并且难以编码和验证。根据一些实施例,影子寄存器允许硬件执行停顿操作并且改变系统配置,而在停顿下不执行任何BIOS和/或SMI代码。这允许对系统配置的快速改变、低SMI延迟(或无 SMI延迟),并且移除对处理器高速缓存架构的相关性和相关联的复杂化。图8说明了根据一些实施例的系统800。在一些实施例中,系统800包括多个处理器和/或中央处理单元(CPU),包括例如CPUO 802、CPUl 804、CPU2 806和CPU3 808。在一些实施例中,系统800附加地包括多个存储器,包括例如,存储器812、存储器814、存储器 816和存储器818。在一些实施例中,处理器802、804、806和808的每一个具有存储器控制器。在一些实施例中,系统800附加地包括一个或多个输入/输出中心(Ι0Η),包括例如 IOHO 822和IOHl 824。在一些实施例中,处理器802、804、806和808以及IOH 822和IOH 824通过多个链路和/或互连耦合在一起。在一些实施例中,耦合处理器802、804、806和 808以及IOHO 822和IOHl 824的链路和/或互连是多个一致性链路,例如在一些实施例中,是快速通道互联(QPI)链路和/或多个通用系统接口(CSI)链路。图8的系统800假设当系统被引导时CPU3 808(和/或图1的系统中的CPU3 108) 存在,但是要被从正在运行的系统中热移除。其他处理器802、804和806以及IOH 822和拟4之间的链路(例如,一致性链路和/或QPI链路)被示出为已初始化其正在工作的链路,而CPU3 808和其他部件之间的链路在图8中使用虚线示出,这是因为这些链路在CPU3 808的热移除后不再需要是活动的。为了处理CPU3 808的热移除,OS将需要停止使用CPU3 808和耦合到CPU3 808的存储器818。系统必须被停顿,CPU3 808在所有插座中的地址路由必须被移除,并且到CPU3 808的链路路由(例如,QPI路由)必须在所有插座中被移除。 然后,系统需要被取消停顿,以便继续OS。图9说明了根据一些实施例的系统900。在一些实施例中,系统900包括多个处理器和/或中央处理单元(CPU),包括例如CPUO 902、CPUl 904、CPU2 906和CPU3 908。在一些实施例中,系统900附加地包括多个存储器,包括例如,存储器912、存储器914、存储器 916和存储器918。在一些实施例中,处理器902、904、906和908的每一个具有存储器控制器。在一些实施例中,系统900附加地包括一个或多个输入/输出中心(Ι0Η),包括例如 IOHO 922和IOHl 924。在一些实施例中,处理器902、904、906和908以及IOH 922和IOH 924通过多个链路和/或互连耦合在一起。在一些实施例中,耦合处理器902、904、906和 908以及IOHO 922和IOHl 924的链路和/或互连是多个一致性链路,例如在一些实施例中,是快速通道互联(QPI)链路和/或多个通用系统接口(CSI)链路。图9的系统900假设当系统被引导时IOHl 924 (和/或图1的系统中的IOHl 124) 存在,但是要被从正在运行的系统中热移除。处理器902、904、906和908以及其他I0H0922 之间的链路(例如,一致性链路和/或QPI链路)被示出为已初始化其正在工作的链路,而 IOHl拟4和其他部件之间的链路在图9中使用虚线示出,这是因为这些链路在IOHl拟4的热移除后不再需要是活动的。为了处理IOHl拟4的热移除,OS将需要停止使用I0H19M。 系统必须被停顿,IOHl拟4在所有插座中的地址路由必须被移除,并且到IOHl 924的链路路由(例如,QPI路由)必须在所有插座中被移除。然后,系统需要被取消停顿,以便继续 OS。在一些实施例中,每个代理(例如,每个QPI代理)提供用于链路路由(例如,QPI 路由)、地址解码器、广播列表的一组影子寄存器和会影响系统重新配置的任何其他寄存器。为了执行配置改变,在一些实施例中,用软件以新的配置寄存器对影子寄存器进行编程,并且该软件发起硬件请求以执行配置切换。一完成配置切换,新的配置就生效。图10说明了根据一些实施例的流程1000。在一些实施例中,流程1000是配置改变软件流程。流程1000在1002开始。在1004,用新的一组配置值对影子寄存器进行编程。 在1006,从在配置改变之后没有被移除的诸如QPI代理的代理发起配置改变请求。通过对诸如模式特定寄存器(MSR)或配置空间寄存器(CSR)的硬件寄存器进行写入来发起配置改变。在1008,硬件执行配置改变操作。在一些实施例中,在1008,硬件例如以与图11中说明的并且后面将进一步详细描述的流程1100类似或相同的方式,来执行配置改变操作。硬件基于影子寄存器(例如在一些实施例中,如在图11中说明并在下文描述的那样)执行停顿并且切换到新的配置寄存器。在1010,系统现在包含新的配置,并且系统操作现在可以以新的配置继续。流程1000在1012结束。图11说明了根据一些实施例的流程1100。在一些实施例中,流程1100表示硬件配置改变流程。流程1100在1102开始。在1104发送请求以停顿每个QPI代理(或在一些实施例中停顿其他类型的代理)。这阻止直接存储器访问(DMA),并且阻止来自除了停顿发起代理之外的任何QPI代理的任何新事务的生成。在一些实施例中,对于要完成的所有未完成事务进行轮询。在1106,流程1100等待所有的QPI代理返回确认,该确认表明代理已经进入停顿,并且已经排净所有的未完成事务。对所有的QPI代理作出请求,以根据影子寄存器对寄存器组(和/或新的配置)进行重新编程(和/或将寄存器组切换到影子寄存器)。例如,基于影子寄存器中设置的信息发送回确认。在一些实施例中,寄存器数据包含基于生成树要响应的对象。在例如以下文献中可以找到关于在一些实施例中这是如何进行的进一步的信息美国专利申请序列号为11/011,801、在2006年6月15日公开为美国专利公开US-2006-0126656-A1 并且名称为"Method,System,and Apparatus for System Level hitialization”的美国专利申请。在1108,广播配置改变请求。在1110进行关于是否所有的子生成树已经返回完成的确定。在一些实施例中,进行完成系统重新配置的确认。一旦在1110所有的子生成树已经返回了完成,则在1112将取消停顿请求发送到所有的QPI代理(和/或新的代理)。在 1114,进行关于是否所有的代理(和/或新的代理)都返回了确认的确定。一旦在1114所有的代理(和/或新的代理)已经返回了确认,则在1116恢复正常操作。这(例如,通过返回到执行代码)去除对DMA的阻止并且允许事务继续。在一些实施例中,影子(和/或复制)寄存器保存新的配置信息。在一些实施例中,由软件实现配置改变的发起。在一些实施例中,硬件执行系统停顿并且将影子配置切换到当前配置,以及还执行取消停顿以便然后继续系统操作。在一些实施例中,硬件执行检查以确保在发起配置寄存器切换操作之前所有的QPI代理处于停顿状态。在一些实施例中, 包含生成树的影子寄存器用于在重新配置之后返回数据。当前服务器系统实现基于MSR的机制以发起停顿和取消停顿。SMI代码需要将所有的处理器带到集合点并发起停顿。SMI需要对代码和数据进行缓存,并且需要确保在它改变系统之前阻止预取和推测性加载(处理器不提供直接控制来禁止推测性加载,因此需要复杂的未缓存的和缓存的代码设置序列)。否则,存储器访问、监听、预取和推测性加载将导致QPI路由改变期间的SMI代码/数据访问问题并且导致系统错误。SMI代码和形成这种特征所涉及的其他设置的验证非常复杂,并且可能导致SMI延迟超过SMI的OS允许时间限制。在一些实施例中,使用能够在SMI和/或停顿/取消停顿时间窗口外部计算和编程的影子寄存器组。此外,通过硬件而非复杂的软件流程来进行影子寄存器切换。这有助于减少SMI延迟。
—些实施例不依赖于代码和/或数据缓存行为,并且因此是架构无关的。在一些实施例中,由于影子寄存器切换在硬件中进行,并且每个QPI代理包含影子寄存器组,因此提供了可伸缩的解决方案。已有的基于SMI的解决方案需要SMI中的所有线程。随着QPI代理和/或核心数量的增加,需要花费很长时间来完成操作,并且违反了 OS SMI延迟要求。在一些实施例中,解决方案从一代到另一代是更可扩展的并且是可伸缩的(例如,跨越方法可伸缩的)。在一些实施例中,带外(OOB)固件(例如,系统服务处理器或SSP)被允许来改变系统配置而不会超过OS延迟限制,即使在使用慢边带接口时也是如此。当使用先前已有的解决方案时,SSP不能改变运行时系统配置。当前QPI解决方案(其是支持QPI平台上RAS特征的关键)是高速缓存架构相关、 非常复杂、且难以验证的,并且固件处理程序需要手动调整来适应OS延迟要求。诸如从直接连接的闪存对QPI路由和地址解码器进行运行停顿和重新编程的其他替代是非常慢的, 并且违反SMI延迟的OS要求。根据一些实施例克服了这些问题。在一些实施例中,在停顿时段内不进行影子寄存器的编程,因此减少了停顿的延迟以及执行停顿和系统配置改变流程的固件的复杂性。根据一些实施例,去除了对高速缓存架构的相关性,并且移除了对复杂固件流程的需要。在一些实施例中,由硬件执行配置改变,并且在配置改变期间不需要软件干涉。用这种方式,与改变系统配置有关的总延迟比现有解决方案低得多,并且能够对终端用户进行实时响应。如本文中所描述的,支持高端RAS特征是高端服务器市场细分中的平台的关键, 所述高端RAS特征包括但不限于处理器、存储器的热插拔,在线/离线等。需要有效的QPI 操作来实现这些RAS流。用于RAS的当前QPI停顿流程是由于高速缓存架构相关而特定于处理器代别的,这是因为停顿代码必须从高速缓存运行,而不生成外部存储器访问/监听/ 推测性加载等。这种流程对于编码而言是极为复杂的并且难以验证,并且因此可能严重地限制了在QPI上的RAS支持。在一些实施例中,使用了独立于处理器高速缓存架构的更简单的停顿解决方案。此外,在对于更大的多处理器(MP)平台伸缩良好的QPI平台上使得能够支持高端RAS特征。一些实施例已在本文中描述为适用于系统管理中断(SMI)技术。然而,其他实现涉及其他运行时接口。例如,在一些实施例中,使用平台管理中断(PMI)。一些实施例已在本文中被描述和说明为包括例如处理器核心和/或集成存储器的插座。然而,在一些实施例中,另外的部件被集成到插座中。例如,在一些实施例中,I/O 根复合体被集成到例如处理器插座中。在一些实施例中,I/O设备被集成到处理器插座中。 集成到处理器插座的额外部件的进一步的实施例在当前和未来的实施例实现中也是显而易见的。尽管一些实施例已在本文中被描述为可适用于基于QPI的系统,但是根据一些实施例,可以不需要这些特定实现。即,本文描述的实施例在一些实施例中可适用于任何一致性链路而不限于QPI。在一些实施例中,实现了非基于QPI的系统。在一些实施例中,实现了基于节点控制器的系统。尽管已经参考特定实现描述了一些实施例,但是其他实现根据一些实施例也是可能的。此外,在附图中说明的和/或本文中描述的电路元件或其他特征的布置和/或顺序不需要以所说明和描述的特定方式来布置。许多其他布置根据一些实施例也是可能的。在附图中所示的每个系统中,在某些情况中的元件可能分别具有相同附图标号或不同附图标号,以表明所表示的元件可以是不同和/或类似的。然而,元件可以足够灵活以具有不同的实现并且与本文中所示出或描述的一些或所有系统一起工作。附图中所示的各个元件可以是相同或不同的。哪个被称为第一元件以及哪个被称为第二元件是任意的。在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应该理解,这些术语并非旨在作为彼此的同义词。而是在特定的实施例中,“连接”可以用于表明两个或更多元件相互之间是直接物理或电接触的。“耦合”可以表明两个或更多元件是直接物理或电接触的。然而,“耦合”还可以表明两个或更多元件不是直接彼此接触的,但是仍然相互协作或交互。本文中的算法一般被认为是导致期望结果的动作或操作的自相容序列。这些包括对物理量的物理操纵。通常但不是必须的,这些量采用能够被存储、传送、组合、比较和其他方式操纵的电或磁信号的形式。主要为了通用的原因,有时将这些信号称为比特、值、要素、 符号、字符、项或数字等已经被证实是方便的。然而,应当理解,所有这些和类似术语应当与适当的物理量相关联并且仅仅是应用到这些量的方便标记。可以用硬件、固件和软件中的一个或组合实现一些实施例。还可以将一些实施例实现为存储在机器可读介质上的指令,这些指令可以被计算平台读取和执行以执行本文中所描述的操作。机器可读介质可以包括用于以可由机器(例如,计算机)读取的形式存储或传输信息的任何机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器设备;电、光、声或其他形式的传播信号 (例如,载波、红外信号、数字信号、发送和/或接收信号的接口等)以及其他。实施例是本发明的实现或示例。在本说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合这些实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但是不必然被包括在本发明的所有的实施例中。在各处出现的“实施例”、“一个实施例”或“一些实施例”不必然都指的是相同的实施例。不是本文中所说明的所有的部件、特征、结构、特性等均需要被包括在特定实施例或多个实施例中。例如,如果说明书声明部件、特征、结构或特性“可以”(may)、“可能”(might)、“能够”(can)或“能”(could)被包括,则该特定部件、特征、结构或特性不必须被包括。如果说明书或权利要求提及“一个”(“a”或“an”)元件,这并不意味着仅有一个该元件。如果说明书或权利要求提及“一个附加的”元件,这并不排除有一个以上的所述附加元件。尽管本文中可能使用了流程图和/或状态图来描述实施例,但是本发明不限于本文中的这些图或对应的描述。例如,流程不必移动通过每个说明的框或者状态,或者以与本文中所说明和描述的完全相同的顺序来移动。本发明不限于本文中所列出的特定细节。实际上,从本公开获益的本领域技术人员将理解,可以在本发明的范围内对以上描述和附图进行许多其他变型。因此,由包括对其的任意修改的所附权利要求限定本发明的范围。
权利要求
1.一种方法,包括缓存要用于执行系统的动态硬件重新配置的系统重新配置代码和数据,其中所述系统包括多个处理器核心;在所述动态硬件重新配置期间阻止任何直接或间接存储器访问; 由所述多个处理器核心或线程中执行所缓存的系统重新配置代码和数据的一个处理器核心或线程来实现所述动态硬件重新配置。
2.根据权利要求1所述的方法,还包括仅允许所述多个处理器核心中的一个在所述动态硬件重新配置期间运行。
3.根据权利要求1所述的方法,还包括阻止除了所允许的一个处理器核心之外的所有所述多个处理器核心的任何外发存储器访问。
4.根据权利要求1所述的方法,还包括在所述动态硬件重新配置期间禁止预取以避免存储器访问。
5.根据权利要求1所述的方法,还包括避免推测性存储器加载。
6.根据权利要求1所述的方法,还包括清洗所述多个处理器核心中的一个或多个,以确保在执行所述动态硬件重新配置之前完成所有未完成的事务。
7.根据权利要求1所述的方法,还包括在所述动态硬件重新配置期间避免任何带外调试钩子。
8.根据权利要求1所述的方法,还包括从所述多个处理器核心中选择所述一个处理器核心来执行所述动态硬件重新配置。
9.根据权利要求1所述的方法,其中,所述动态硬件重新配置包括热添加、热移除、热插拔、热交换、热处理器添加、热处理器移除、热存储器添加、热存储器移除、热芯片组添加、 热芯片组移除、热输入/输出中心添加、热输入/输出中心移除、存储器迁移、存储器镜像、 运行时链路重新配置、运行时错误注入和/或处理器迁移中的一个或多个。
10.根据权利要求1所述的方法,其中,所述动态硬件重新配置包括可靠性、可用性和可服务性特征。
11.根据权利要求1所述的方法,其中,以对操作系统透明的方式执行所述动态硬件重新配置。
12.根据权利要求1所述的方法,其中,所述动态硬件重新配置是所述系统中一个或多个硬件设备的原子更新。
13.根据权利要求1所述的方法,其中,所述动态硬件重新配置包括停顿操作。
14.根据权利要求1所述的方法,还包括用新的一组配置值对影子寄存器进行编程。
15.根据权利要求1所述的方法,还包括通过对硬件寄存器进行写入来发起配置改变。
16.根据权利要求15所述的方法,其中,所述硬件寄存器是模式特定寄存器或配置空间寄存器。
17.根据权利要求1所述的方法,还包括响应于硬件寄存器中的值而执行配置改变。
18.一种装置,包括高速缓存,用于存储缓存要用来执行动态硬件重新配置的系统重新配置代码和数据;以及多个处理器核心,其中,所述多个处理器核心中的一个用于执行所缓存的系统重新配置代码和数据以执行所述动态硬件重新配置,其中,在所述动态硬件重新配置期间,阻止由所述多个处理器核心进行的直接或间接存储器访问。
19.根据权利要求18所述的装置,其中,所述多个处理器核心中仅有一个处理器核心被允许在所述动态硬件重新配置期间运行。
20.根据权利要求18所述的装置,其中,阻止除了所允许的一个处理器核心之外的所有所述多个处理器核心的任何外发存储器访问。
21.根据权利要求18所述的装置,其中,在所述动态硬件重新配置期间禁止预取以避免存储器访问。
22.根据权利要求18所述的装置,其中,避免推测性存储器加载。
23.根据权利要求18所述的装置,其中,清洗所述多个处理器核心中的一个或多个以确保在执行所述动态硬件重新配置之前完成所有未完成的事务。
24.根据权利要求18所述的装置,其中,在所述动态硬件重新配置期间避免任何带外调试钩子。
25.根据权利要求18所述的装置,其中,所述动态硬件重新配置包括热添加、热移除、 热插拔、热交换、热处理器添加、热处理器移除、热存储器添加、热存储器移除、热芯片组添力口、热芯片组移除、热输入/输出中心添加、热输入/输出中心移除、存储器迁移、存储器镜像、运行时链路重新配置、运行时错误注入和/或处理器迁移中的一个或多个。
26.根据权利要求18所述的装置,其中,所述动态硬件重新配置包括可靠性、可用性和可服务性特征。
27.根据权利要求18所述的装置,其中,以操作系统透明的方式执行所述动态硬件重新配置。
28.根据权利要求18所述的装置,其中,所述动态硬件重新配置是所述系统中一个或多个硬件设备的原子更新。
29.根据权利要求18所述的装置,其中,所述动态硬件重新配置包括停顿操作。
30.根据权利要求18所述的装置,还包括用新的一组配置值来编程的影子寄存器。
31.根据权利要求18所述的装置,所述多个处理器核心中的至少一个通过对硬件寄存器进行写入来发起配置改变。
32.根据权利要求31所述的装置,其中,所述硬件寄存器是模式特定寄存器或配置空间寄存器。
33.根据权利要求18所述的装置,还包括存储值的硬件寄存器,其中,所述多个处理器核心中的所述一个响应于在所述硬件寄存器中存储的所述值而执行配置改变。
全文摘要
在一些实施例中,要用来执行包括多个处理器核心的系统的动态硬件重新配置的系统重新配置代码和数据被缓存,并且在动态硬件重新配置期间的任何直接或间接存储器访问被阻止。所述多个处理器核心中的一个执行所缓存的系统重新配置代码和数据以便动态地对硬件进行重新配置。描述了并要求保护其他实施例。
文档编号G06F15/177GK102473169SQ201080025194
公开日2012年5月23日 申请日期2010年12月10日 优先权日2009年12月31日
发明者C-C·王, M·J·库马尔, M·K·纳奇姆苏 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1