智能上下文管理的制作方法
【专利摘要】用于线程切换的智能上下文管理通过确定寄存器组未被线程用于预定数目的分派并且响应地禁用寄存器组被该线程使用而得到实现。在每次线程被分派但是寄存器组不被使用时递增计数器。通过比较针对寄存器组的先前校验和和当前校验和而推断使用或不使用寄存器组。如果先前校验和和当前校验和匹配,则系统得出寄存器组未被使用的结论。如果线程尝试访问被禁用的组,则处理器中断,并且将对应的计数器复位。对于利用事务存储器的系统,优选地在线程处理开始时启用所有的寄存器组,以避免来自被懈怠上下文管理技术禁用的寄存器组的异常终止的事务。
【专利说明】智能上下文管理
【技术领域】
[0001]本发明总体涉及计算机系统,并且更特别地涉及一种管理多线程处理器中的线程上下文的方法。
【背景技术】
[0002]当今的高性能计算机系统使用多处理器来执行各种计算机程序,诸如软件应用和操作系统。在对称多处理器(SMP)计算机中,所有的处理单元通常是相同的,即,它们均使用共同的指令和协议的集或子集来操作,并且通常具有相同的架构。每个处理单元可以进一步包括多个实际执行程序指令来操作计算机的处理器核。处理器核可以根据精简指令集计算(RISC)技术运作,并且可以采用指令的流水线执行和乱序执行来进一步提高超标量架构的性能。
[0003]在超标量架构中,指令可以顺序或乱序完成。顺序完成意味着指令不能在其之iu分派(dispatch)的所有指令完成之如完成。乱序完成意味着允许指令在其之如分派的所有指令完成之前完成,只要满足了预定的规则。在流水线超标量处理器内,指令首先被提取、解码、并且然后被缓冲。指令可以被分派到执行单元作为资源,并且操作数变得可用。附加地,指令可以被提取并以关于选取的分支(branches taken)的预测为基础被推测地分派。结果是不同执行阶段中的指令的池,这些指令均未通过将最终结果写入系统存储器层次而完成。随着资源变得可用并且分支被分解,指令按程序顺序引退,因此保存了按程序顺序执行指令的机器外观。整体的指令吞吐量可以通过修改处理器内的硬件被进一步提高,例如,通过使单个处理器核内具有多个执行单元。
[0004]现代计算机系统还使用公知为硬件多线程的计算技术来独立地执行较小的指令序列,称为线程或上下文。当处理器不管何种原因停止并且无法继续处理或执行这些线程之一时,处理器可以切换到另一线程。计算机处理器架构【技术领域】的技术人员使用的术语“多线程”与该术语的软件使用不同,软件使用中进程被细分成多个相关的线程。软件多线程要求操作系统的实质参与,操作系统在线程切换可以发生之前通过实质参与对来自寄存器的数据进行操作并且将其保存至主存储器,并且维持相关且依赖的指令的程序顺序。软件多线程不要求或者其不涉及到硬件多线程,并且反之亦然。硬件多线程操作硬件架构的寄存器、执行单元和流水线处理器,以维持处理器硬件中的一个或多个独立执行的指令集(线程)的状态。硬件线程可以例如来源于多任务系统中的不同任务、从软件多线程系统编译的不同线程、或来源于不同的输入/输出处理器。在硬件多线程的这些示例的每个中,不止一个线程可以被独立地维持在处理器的寄存器中。图1图示了简化的多线程示例。三个任务上下文2相应具有相关联的线程上下文4,线程上下文4间歇地换出,以用于在四个处理器(处理器核)6中执行。来自同一任务的多个线程不需要在单个处理器上执行,而是可以在所有的可用处理器之间进行分配。当包括线程的指令集完成时,线程及其上下文从处理器引退。
[0005]同步多线程(SMT)是将硬件多线程与超标量处理器技术结合以允许多线程在每个循环发出指令的处理器设计特征。不像其他的其中任何给定的循环上仅单个硬件上下文(即,线程)活跃的硬件多线程架构,SMT允许所有的线程上下文同时竞争并共享处理器资源。不像传统的超标量处理器,其受缺乏每个线程的指令级并行(ILP)的限制,同时多线程使用多个线程来补偿低单线程ILP。性能结果是各种工作负荷上更高的指令吞吐量和程序加速,工作负荷包括多道程序和并行环境中的商业数据库、web服务器以及科学应用。
[0006]国际商用机器公司设计的P0WER7处理单元具有八个核并且可以在使用每核单个线程、两个线程、或四个线程的三种线程模式之间选择,以实现最多32个可能的线程同时在处理单元中运行。在POWER处理器架构中,软件可视机器状态(机器寄存器/上下文)在定点或通用寄存器(GPR)、浮点寄存器(FPR)、向量寄存器(VR)、以及向量-标量寄存器(VSR)之间划分。处理器硬件在机器状态寄存器中包括启用或禁用对FPR、VR和/或VSR的访问以用于上下文切换的比特。这一特征使得操作系统能够管理对那些诸如延迟(“懈怠(lazy)”)状态管理之类的设备或实施方案的访问。也即,当分派线程时,操作系统将仅恢复其定点状态(GPR),并且将禁用对其他设备(FPR、VR、VSR)的访问。如果线程其后尝试使用这些设备之一,将会导致中断并且操作系统可以继而恢复所需的状态并启用对所请求的设备的访问。
【发明内容】
[0007]本发明总体涉及一种用于通过确定给定的寄存器组未被特定线程使用预定数目个该特定线程的分派并且响应地禁用给定的寄存器组以供特定线程使用,来对处理器中的线程切换进行智能上下文管理的方法。在示意性实施方式中,通过每次线程被分派但是寄存器组不被使用时递增计数器来确定计数器组最近未被使用。通过比较针对来自先前分派的寄存器组的状态的先前校验和与针对来自当前分派的寄存器组的状态的当前校验和来推断使用或不使用寄存器组。如果先前校验和和当前检验和相同,则系统得出寄存器组未被使用的结论。发明可以被实现在软件(例如,计算机的操作系统)中或硬件(例如,嵌入在处理器核中的控制逻辑电路装置)中。对于利用事务存储器的系统,优选地在线程的处理开始时启用所有的寄存器组。在示例性实施例中,寄存器组包括通用寄存器、浮点寄存器、向量寄存器、以及向量-标量寄存器,但是仅浮点寄存器、向量寄存器、以及向量-标量寄存器被选择性地禁用,即,通用寄存器总是启用(存储/恢复)。
[0008]本发明的以上和附加目的、特征以及优点将在以下详细书面描述中变得明显。
【专利附图】
【附图说明】
[0009]通过参考附图,本发明可以得到更好的理解,并且其许多目的、特征以及优点将对本领域技术人员变得明显。
[0010]图1是传统的硬件多线程的简化示例的图形表示;
[0011]图2是根据本发明的一个实施例构造的计算机系统的框图,其中处理单元使用针对线程切换的智能上下文管理;
[0012]图3是根据本发明的一个实施例构造的处理器核的框图,处理器核具有包括各种执行单元和寄存器组的设备;
[0013]图4是图示如下内容的表格:如何针对所选择的处理器设备(寄存器组)维持校验和以确定给定的设备是否自特定线程的先前分派以后被特定线程使用,并且递增计数器以跟踪有多少分派在未使用给定的设备的特定线程的情况下发生;以及
[0014]图5A和图5B—起形成图不根据本发明的一个实施方式的针对图3的处理器核执行的智能上下文管理进程的逻辑流程的单个图表。
[0015]不同附图中使用相同的参考标号指示相似或相同项。
【具体实施方式】
[0016]尽管硬件多线程大大增加了现代微处理器的处理吞吐量,但是仍存在与不同的线程切换的途径相关联的许多限制。懈怠上下文管理在线程仅偶尔或间歇地需要访问FPR、VR、或VSR时起作用,由此减少正常上下文切换时间。然而,如果线程持续使用这些设备之一,则在每次上下文切换之后就有使状态恢复所需的持续中断造成的延迟增加。
[0017]这一问题在最新水平的系统中由于近来添加的事务存储器而被放大。事务存储器是确保原子性(atomicity)的、允许对共享存储器的投机并发访问的方式。其代替了锁定数据直到完成复杂工作的实践,一种可以使其他计算机操作减速的途径。事务存储器尝试通过允许一组加载和存储指令以原子方式执行来简化并发或并行编程。其或者保证事务的所有指令成功完成,或者保证事务的指令均不发生作用,即,事务被异常终止并且事务中的任何指令运行做出的任何改变都被回滚。当程序进入事务时,在回滚的情况下,所有的机器寄存器状态的快照在处理器芯片的内部被捕获。由于每个中断引起活跃事务异常终止并重新开始,事务中的线程因此不能使其寄存器状态被懈怠恢复以继续事务。
[0018]作为懈怠上下文管理的备选,线程控制逻辑可以总是在上下文切换时间保存并恢复FPR、VR、和VSR中的每一个。如果线程不断使用这些设备,则这一途径将起作用并且避免过度中断或干涉事务存储器。然而,如果线程需要不频繁地访问这些寄存器组之一(或仅一次使用),则每个上下文切换变得低效,因为其存储并恢复了不需要的状态信息。
[0019]根据前述内容,将期望设计出一种改进的上下文管理方法,其可以使得线程切换对于各种环境具有较少的计算密集性。如果方法可以保持诸如懈怠上下文管理之类的备选途径的益处将更加有利。本发明通过基于当前线程行为动态地调整并优化性能来实现这些目标。根据本发明的智能上下文管理系统可以在检测何时线程持续地在每个分派上使用所有的资源,以及何时线程未使用资源,允许状态/恢复的自调,以匹配当前需要。在示意性实施例中,操作系统维持多个机器状态校验和,每个校验和将被选择性地恢复功能单元各一个(例如,用于浮点状态的校验和、用于向量介质扩展状态的校验和、以及用于向量-标量状态的校验和),并且使用可调统计数据来将决定基于何时存储单元的状态、以及是否恢复其状态之上。
[0020]现在参考附图,并且尤其参考图2,描绘了根据本发明的一个实施方式构造的计算机系统的一个实施例10。计算机系统10是具有连接至系统总线14的多个处理单元12a、12b的对称多处理器(SMP)系统。处理单元12a、12b可以相应包括多个处理器核。系统总线14还连接至提供到系统存储器18的接口的合并的存储器控制器/主机桥(MC/HB) 16。系统存储器18可以是本地存储设备或备选地可以包括多个分布式存储设备,优选为动态随机存取存储器(DRAM)。存储器层次中可以存在未描绘的附加结构,诸如板上(LI)和二级(L2)或三级(L3)缓存。[0021]MC/HB16还具有去往外部部件互连(PCI)快捷链路20a、20b、20c的接口。每个PCI快捷(PCIe)链路20a、20b连接至相应的PCIe适配器22a、22b,并且每个PCIe适配器22a、22b连接至相应的输入/输出(I/O)设备24a、24b。MC/HB 16可以附加地具有到连接至开关(I/O结构)28的I/O总线26的接口。开关28为I/O总线提供到多个PCI链路20d、20e、20f的扇出。这些PCI链路连接至多个PCIe适配器22c、22d、22e,多个PCIe适配器22c、22d、22e继而支持多个I/O设备24c、24d、24e。I/O设备可以不受限制地包括键盘、图形定位设备(鼠标)、麦克风、显示器设备、扬声器、永久存储设备(硬盘驱动器)或此类存储器设备阵列、光盘驱动器、以及网卡。每个PCIe适配器提供PCI链路和相应I/O设备之间的接口。MC/HB16提供低延迟路径,处理单元12a、12b可以通过其访问被映射到总线存储器或I/O地址空间内的任何位置的PCI设备。MC/HB16还提供高带宽路径,以允许PCI设备访问存储器18。开关28可以提供不同末端之间的对等通信,并且如果这一数据流量不涉及缓存一致存储器转移,则其无需被转发至MC/HB16。开关28被示出为分离的逻辑部件,但是其可以被集成到MC/HB16中。
[0022]在该实施例中,PCI链路20c将MC/HB16连接至服务处理器接口 30,以允许在I/O设备24a和服务处理器32之间的通信。服务处理器32经由JTAG接口 34连接至处理器12a、12b,并且使用中断处理器12a、12b的操作的注意(attention)线36。服务处理器32可以具有其自己的本地存储器38,并且连接至存储各种用于系统启动的程序指令的只读存储器(ROM) 40。服务处理器32还可以利用硬件操作面板42来提供系统状态和诊断信息。
[0023]在备选实施例中,计算机系统10可以包括对这些硬件元件或其互联的修改、或附加元件,所以描述的示例不应被解释为暗示任何关于本发明的架构限制。
[0024]当计算机系统10最初被加电时,服务处理器32使用JTAG接口 34来询问系统(主机)处理单元12a、12b和MC/HB16。在完成询问之后,服务处理器32获得针对计算机系统10的详细信息和拓扑结构。服务处理器32继而执行诸如内建自测试(BIST)、基本保证测试(BAT)、以及计算机系统10的元件上的存储器测试之类的各种测试。在测试期间检测的针对故障的任何错误信息由服务处理器32报告至操作面板42。如果拿走在测试期间发现故障的元件之后系统资源的有效配置仍有可能,则允许计算机系统10继续。可执行代码被加载进存储器18并且服务处理器32释放主机处理器12a、12b以用于执行程序代码,例如,用于启动应用的操作系统(OS),其结果可以被存储在系统的硬盘驱动器(I/O设备24)中。主机处理器12a、12b执行程序代码时,服务处理器32可以进入监测并报告任何操作参数或错误的模式,诸如冷却风扇速度以及操作、热传感器、电源调节器、以及处理器12a、12b中任一个报告的可恢复和不可恢复错误、存储器18和MC/HB16。服务处理器32可以基于错误的类型或预定阈值采取进一步的措施。
[0025]本【技术领域】的技术人员将理解,本发明的方面可以被体现为系统、方法、或计算机程序产品。因此,本发明可以采取完全硬件实现、完全软件实现(包括固件、常驻软件、微代码等)或将均可通常称为“电路”、“模块”或“系统”的软件与硬件方面结合实现的形式。此夕卜,本发明可以采取体现在任何有形介质中的计算机程序产品的形式,该有形介质具有体现在介质中的计算机可用程序代码的表达。
[0026]可以使用一个或多个计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质可以例如是但不限于电、磁、光、电磁、红外、或半导体系统、装置、设备、或传播介质。计算机可读介质的更具体的示例(未穷尽列举)可以包括下列:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPR0M或闪存)、光纤、便携式压缩盘只读存储器(CDR0M)、光存储器设备、诸如那些支持因特网或内联网之类的传输介质、或磁存储器设备。计算机可用或计算机可读介质甚至可以是纸张或程序打印在其上的另一合适介质,因为程序可以例如经由对纸张或其他介质的光学扫描被捕获、继而被编译、解译、或另外以合适方式被处理,如果有必要,并且然后被存储到计算机存储器中。本发明的上下文中,计算机可用或计算机可读介质可以是包含、存储、通信、传播、或传输程序以供或结合指令执行系统、装置或设备使用的任何介质。计算机可用介质可以包括传播的数据信号,该数据信号具有利用其或者在基带中或者作为载波的一部分得到体现的计算机可用程序代码。计算机可用程序代码可以使用任何适当的介质发送,包括但不限于无线、有线、光纤电缆、RF等。
[0027]用于执行本发明的操作的计算机程序代码可以用一个或多个编程语言的任意组合编写,包括诸如Java、Smalltalk、C++之类的面向对象编程语言以及传统的面向过程变成语言,被编写用于诸如AIX环境的各种平台或诸如Wind0ws7或Linux之类的操作系统。程序代码可以完全在用户的计算机上、部分在用户的计算机上、作为孤立的软件包、部分在用户的计算机上并且部分在远程计算机上或完全在远程计算机或服务器上执行。后一场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任意类型的网络连接至用户的计算机,或者可以(例如,使用因特服务提供商通过因特网)连接至外部计算机。
[0028]下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图对本发明进行描述。将理解流程图和/或框图的每个方框,以及流程图和/或框图中的方框的组合可以由计算机程序指令实现。这些计算机程序指令可以被提供至通用计算机、专用计算机、或其他可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现流程图和/或框图框中指定的功能/行为的装置。
[0029]这些计算机程序指令还可以存储在可以指导计算机或其他可编程数据处理装置以特定方式运作的计算机可读介质中,该特定方式使得存储在计算机可读介质中的指令产生一件包括实现流程图和/或框图框中指定的功能/行为的指令装置的制造品。此种存储介质排除瞬态介质。
[0030]计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上以引起一系列操作步骤在计算机或其他可编程装置上被执行,从而产生计算机实现的处理操作,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图框中指定的功能/行为的处理。
[0031]附图中的流程图和框图说明了根据本发明的实施例的系统、方法以及计算机程序产品的可能实施方式的架构、功能和操作。在这一方面,流程图或框图中的每个方框可以表示代码模块、代码段或部分代码,其包括一个或多个用于实现指定的逻辑功能的可执行指令。一些备选实现中,方框中记录的功能可以不按附图中记录的顺序发生。例如,接连示出的两个方框事实上可以基本上并发执行,或方框可以偶尔逆序执行,这取决于所涉及的功能。框图和/或流程图的每个方框以及框图和/或流程图的方框的组合可以由执行指定的功能或行为的专用硬件系统实现、或者由专用硬件和计算机指令的组合实现。[0032]由于计算机系统10执行用于OR或软件应用的程序指令,因此其将新的上下文管理技术用于不同处理器核之间的线程切换。相应地,体现本发明的系统可以包括线程技术的常规方面,并且参考本公开,这些细节将对本领域的技术人员变得明显。
[0033]现在参考图3,描绘了根据本发明的一个实施例构造的处理器核的一个实施例50。图2的每个处理单元12a、12b可以包括处理器核50的多个实例,诸如每个处理单元八个处理器核。可以在处理器单元内包括其他未示出的特征,诸如用于每个核的L2缓存、以及同一单元上的所有核使用的L3缓存。
[0034]处理器50通常是单个集成的电路超标量微处理器,并且包括各种执行单元、寄存器、缓冲器、存储器、以及其他均由集成电路装置形成的功能单元。处理器50根据精简指令集计算(RISC)技术操作,并且经由处理器50内的总线接口单元(BIU)54耦合至系统或结构总线52。BIU54通过参与总线仲裁来控制处理器50和其他耦合至系统总线52的设备(诸如,主存储器或L2缓存存储器)之间的信息传递。处理器50、系统总线52、以及其他耦合至系统总线52的设备一起形成主机数据处理系统。
[0035]BIU54连接至处理器50内的指令缓存56和数据缓存58。高速缓存(诸如那些在指令缓存56和数据缓存58中的高速缓存)使得处理器50能够实现对之前从主存传递至缓存的数据或指令子集的相当快速的访问时间,因此提高了主机数据处理系统的操作速度。指令缓存56还耦合至提取器60,提取器60在每个循环期间从指令缓存56提取指令用于执行。提取器60将顺序指令临时存储在指令队列62中,以供处理器50内的其他执行电路装置执行。指令从指令队列62顺序地通过解码单元64,在解码单元64中它们被翻译成更简单的操作代码(iops)以及下游单元使用的许多控制信号。解码之后,指令被分派单元66处理,将它们集合成适于同时处理的组,并且将它们分派至发出单元90。指令缓存56、提取器60、指令队列62、解码单元64以及分派单元66统称为指令提取单元68。
[0036]处理器50的执行电路装置具有用于执行顺序指令的多个执行单元,包括一个或多个加载-存储单元(LSU) 70、一个或多个定点单元(FXU) 72、浮点单元(FPU) 74、分支处理单元(BPU)76、向量多媒体扩展(VMX)78、以及向量-标量扩展(VSX)80。这些执行单元70、72、74、76、78和80在每个处理器循环期间执行特定类型的序列指令中的一个或多个指令。例如,FXU72利用从指定的通用寄存器(GPR) 82接收的源操作数来执行定点数学和逻辑操作,诸如加法、减法、位移、环移、以及X0R。在定点指令执行之后,FXU72将指令的数据结果输出至所选的GPR82。FPU74在从浮点寄存器(FPR) 84接收的源操作数上执行单精度和双精度浮点算数和逻辑操作,诸如浮点乘法和除法。FPU74将从浮点指令的执行得到的数据输出至所选的FPR84。LSU70执行浮点或定点指令,其将数据从存储器(即,数据缓存58或主存储器)加载到所选的GPR82或FPR84中、或将来自所选的GPR82或FPR84的数据存储到系统存储器。BPU76执行条件代码操作指令和分支指令。VMX78执行作用于多个操作数上的单个指令操作,以使用向量计算产生多个结果,并且将从向量指令的执行得到的数据输出至所选的向量寄存器(VR) 86。VSX80执行向量-标量指令,其扩展单指令、多数据(SMD)处理,使其支持常规浮点、十进制浮点和向量执行,并且将从向量-标量指令的执行得到的数据输出至所选的向量-标量寄存器(VSR) 88。
[0037]处理器50可以采用流水线和乱序指令执行来进一步提高其超标量架构的性能,但是本发明在与顺序程序执行一起使用时或在乱序执行能力受限的情况下尤其有利。对于乱序处理,指令可以被LSU70、FXU72、FPU74、BPU76、VMX78以及VSX80以任意顺序执行,只要是遵守了数据相关性。此外,指令可以被这些设备中的每个按流水线阶段的序列处理,尤其是五个不同的流水线阶段:提取、解码/分派、执行、结束、以及完成。
[0038]在提取阶段期间,提取器60从指令缓存检索与一个或多个存储器地址相关联的一个或多个指令。从指令缓存56提取的序列指令被提取器60存储到指令队列62内。指令被解码单元64处理并通过分派单元66形成组。分派单元66将寄存器组82、84、86或88内的寄存器分配用于每个分派的指令的结果数据,并且发出单元90发出一个或多个指令至执行单元。在分派时,指令还被存储到完成单元92的多槽完成缓冲内以等待完成。处理器10在乱序执行期间利用唯一的指令标识符跟踪分派的指令的程序顺序。
[0039]在执行阶段期间,由于用于所指示的操作的操作数和执行资源变得可用,执行单元70、72、74、76、78和80伺机执行从发出单元90接收的指令。每个执行单元优选地配备有保留站,该保留站将分派的指令存储到该执行单元直到操作数或执行资源变得可用。然后,执行单元通知完成单元92哪些指令完成了执行。最终,指令在完成单元92的完成缓冲之外以程序顺序完成。FXU72、FPU72、VMX78以及VSX80执行的指令通过将指令的数据结果从执行单元传递至GPR82、FPR84、VR86以及VSR88而完成。LSU70执行的加载和存储指令通过将结束的指令传递至完成的存储队列或完成的加载队列而完成,所指示的加载/存储操作将从完成的存储队列或完成的加载队列中执行。
[0040]执行单元可以利用未示出的附加的寄存器,例如专用寄存器、条件寄存器、模型专用(机器专用)寄存器、控制和状态寄存器、或保存只读值的常数寄存器。处理器50的各个寄存器和执行单元可以被复制以允许多个线程在单个处理器核中处理。因此处理器50包括用于实现线程的并发操作的线程控制单元。单独线程必须彼此合作,因为一旦线程运行,其他线程均无法运行,直到当前线程释放控制。线程控制单元94包括用于使线程优先排序(调度)的一个或多个队列,用于控制被用于使被优先排序的线程的执行的仲裁器、以及用于执行控制在线程间转移的状态机器。
[0041]线程控制单元94还包括用于保存和恢复线程上下文(B卩,各个寄存器组82、84、86,88的状态)的保存区。然而,在本发明中,根据线程的实时行为仅保存或恢复被选择的设备。对于每个线程,OS可以被编程用于在线程机器状态保存区中维持FPU、VMX和VSX寄存器上下文上的校验和。当线程被切出(未分派)时,可以计算针对给定的单元(FPU、VMX、VSX)的内寄存器状态的校验和,并且与前一保存的校验和进行比较。如果针对一组的当前校验和匹配其旧的校验和,OS可以推断线程自同一线程的上一分派之后未使用对应的执行单元。校验和匹配不确定状态均未改变,因为状态可能改变但是非常碰巧计算得到了相同的校验和。然而,校验和匹配仍是指示线程可能不在使用该单元的智能提示。虽然可以采用更复杂的方案来更准确地跟踪寄存器组利用,但是可以快速生成校验和并且没有过多开销。
[0042]如果OS确定校验和匹配,其可以递增计数器以保持跟踪特定线程在未使用给定的寄存器组的情况下已经历多少分派。之后(当线程之后被重分派时),OS可以将组没有使用的分派的当前计数与某一预定阈值进行比较,并且如果OS确定阈值被超过,则其可以响应地禁用该组,直到线程再次尝试访问该组(例如,恢复至懈怠保存/恢复)。任何已被禁用的组在将来的上下文切出时无需被存储。如果线程之后确实访问该组,则OS可以复位针对该线程/组的计数器,并且重复前述过程。
[0043]针对未使用的分派计数的阈值优选为可配置(可编程),并且OS甚至可以基于其他因素调整阈值。例如,OS可以将阈值调高以用于使用事务存储器的线程,并且调低以用于未使用事务存储器的线程。还可以在调整阈值中将线程异常终止的事务的频率作为考虑因素。对于长寿命线程,OS还可以累积较长的推断(heuristics)采样并进一步调整阈值。例如,如果默认阈值N是校验和中没有改变的三个分派,但是OS随着时间的推移学习到特定的线程平均似乎总是在每四个或五个分派使用特定的功能单元,则OS可能想要将针对该线程将阈值调整成六个分派而不改变。OS可以在线程的寿命中继续将阈值调高或调低,从而尝试总是针对线程的最近行为处于最优设置。所有情况下,必须在确定阈值时考虑在保存和恢复每个上下文切换的附加状态的附加处理路径长度和通过延迟懈怠管理和/或减少事务存储器接口获得的效率之间的权衡。可以向不同设备提供不同阈值。
[0044]图4描绘了针对每个线程和每个目标设备的校验和和计数器单元的阵列96。阵列96优选位于线程控制单元94内,但可以位于其他位置,甚至片外。OS可以针对其管理的每个线程上下文维持单独的校验和和计数器单元。尽管示意性实施例使用OS (软件)来执行这一智能上下文管理的控制逻辑,本领域的技术人员将理解各个方面可以在硬件中实现,即,具有用于自动维护和比较校验和和/或自动递增计数器并将它们与阈值进行比较的控制逻辑电路装置98的未来处理器设计,从而使得线程切换的效率大大增加。有利地,由于计算校验和所需的所有数据已在寄存器中,因此除存入一对暂存(临时)寄存器之外,再无需存储器操作来计算总和。
[0045]在上下文切出时,如果针对单元的当前校验和不匹配线程的最后保存的校验和,OS得出线程仍在活跃使用单元的结论,并且清除相应的历史计数(重置到零)。校验和因此用作形成确定何时停止推测地保存/恢复状态并且反而恢复到懈怠(禁用和中断)方法的推断。由此,这一用于上下文管理的智能途径允许处理器实现懈怠上下文管理及其备选(总是保存/恢复寄存器组)的益处。如果针对线程的当前的和旧的校验和恰好跨N个间隔都匹配,即使存在寄存器状态的改变,最坏的情况仅仅是需要禁用对单元的访问并经由中断快速确定线程仍在使用单元,所以相比于传统的上下文管理技术可能出现的重复中断,不便是短暂且次要的。
[0046]执行本发明的OS可以初始地以两个可能的默认策略中的任何一个开始。在一个策略中,对目标设备(FPR、VR、VSR)的访问被初始禁用,并且一旦线程引用这些设备之一,对应访问比特就被启用,以允许该线程在每次上下文切换时的自动保存/恢复(直到其计数器超过预设阈值)。在另一策略中,OS恢复针对分派的线程的所有寄存器状态,并且通过访问所有单元进行分派。这一后者策略避免了任何额外中断并且还避免干涉事务存储器,所以其被认为优选用于利用事务存储器的系统。
[0047]还可以参考图5A和图5B的图标来进一步理解本发明,图5A和图5B示出了根据一个实施方式的用于智能上下文管理处理的逻辑流程。以将所有的校验和和计数器初始化为零并且启用针对任意线程的所有寄存器组开始该处理(102)。优先的线程然后开始执行
(104)。在处理线程的一段时间之后,其被OS切出,例如,由于其时间片期满、中断、I/O请求、产生(yield)等(106)。在这一实施方式中,总是在上下文切换时保存GPR。然而,必须进行进一步的处理来确定是否保存其他寄存器状态。这一确定通过检查每个目标设备当前是否启用用于该线程(由于方框102中的初始启用设置,它们将针对第一上下文切换)而开始。如果启用FPR (108),就保存该寄存器状态,并且计算并存储其校验和(110)。如果新的FPR校验和等于旧的校验和(112),则递增FPR计数器(114)。如果校验和不相同,则复位FPR计数器(116)。相同的流程发生于VR和VSR。如果启用VR (118),则保存该寄存器状态,并且计算并存储其校验和(120)。如果新的VR校验和等于旧的校验和(122),则递增VR计数器(124)。如果校验和不相同,则复位VR计数器(126)。如果启用VSR (128),则保存该寄存器状态,并且计算并且存储其校验和(130)。如果新的VSR校验和等于旧的校验和
(132),则递增VSR计数器(134)。如果校验和不相同,则复位VSR计数器(136)。不需要针对任何仍被禁用的单元在上下文切出时保存状态信息或计算校验和。
[0048]处理从图5A中的“A”气泡继续至图5B中的“A”气泡。“A”气泡表示线程未运行的时间段,例如,OS决定运行一些其他的线程,等待I/O等等,直到是时候再次运行该线程。此时,存在上下文切入并且GPR自动恢复(140)。目标设备然后再次被检查,以查看它们是否被启用。没有对任何被禁用的设备采取行动。如果启用FPR (142),则FPR计数器与阈值相比较(144)。如果计数器超过阈值,则禁用FPR (146)。如果计数器还未达到阈值,则FPR状态恢复(148)。如果启用VR (150),将VR计数器与阈值相比较(152)。如果计数器超过阈值,则禁用VR (154)。如果计数器还未达到阈值,则VR状态恢复(156)。如果启用VSR (158),则将VSR计数器与阈值相比较(160)。如果计数器超过阈值,则禁用VSR (162)。如果计数器还未达到阈值,则VSR状态恢复(164)。一旦恢复了任何需要的设备,线程就重新开始处理(166)。如果线程尝试访问被禁用的寄存器组(168),则处理器就中断,恢复所请求的寄存器,启用寄存器组,并且将针对组的寄存器复位到零(170)。如果线程处理完成
(172),则线程管理过程结束。否则,过程在“B”气泡处迭代继续,表示线程直到其再次被OS切出都在运行的时间段。
[0049]本领域的技术人员将理解这一自我优化、自我调整的状态管理的关键价值在于其如何使自己适应于工作加载行为和CPU功能单元利用的改变。效率对于使用事务存储器的系统尤其具有意义。随着传统的懈怠状态管理在每次使用事务存储器的线程被上下文切出,移除对FPU、VMX以及VSX的访问,直到线程需要再次使用它们。在下一分派之后,如果线程的第一使用在事务之下,处理器不仅需要中断来进行懈怠上下文恢复,还需要异常终止事务,其必须被重新启动。在最坏的情况下,线程试图在事务之下按顺序使用全部三个单元,因此在重分派之后可能遇到三个中断和三个异常终止/重新启动的事务。基于确定使用频率的更智能的上下文管理的新方法不仅总体上更有效,而且还有助于避免对事务存储器的这一干涉。
[0050]尽管已经参考特定实施例描述了本发明,但是这一说明并不意味着以限制意义被解释。参考本发明的描述时,对公开的实施例的各种修改以及本发明的备选实施例将对本领域的技术人员变得明显。例如,尽管优选的实施方式总是恢复GPR并且选择性地进恢复FPR、VR和VSR,处理器可以利用发明来选择性地恢复寄存器组或其他设备的任意组合。因此可预见可以做出此类修改而不脱离所附权利要求定义的本发明的精神和范围。
【权利要求】
1.一种用于具有执行单元和由所述执行单元使用的寄存器组的处理单元中的线程切换的智能上下文管理方法,所述方法包括: 确定给定的寄存器组没有被特定线程使用预定数目个所述特定线程的分派;以及 响应于所述确定,禁用所述给定的寄存器组被所述特定线程使用。
2.根据权利要求1所述的方法,其中所述确定包括: 在所述特定线程的当前分派之后推断所述特定线程自所述特定线程的先前分派以后未使用所述给定的寄存器组;以及 响应于所述推断,递增对应于所述特定线程以及所述给定的寄存器组超过预定阈值的计数器。
3.根据权利要求2所述的方法,其中所述推断包括: 存储针对来自所述先前分派的所述给定的寄存器组的状态的先前校验和;以及 确定针对来自所述当前分派的所述给定的寄存器组的状态的当前校验和等于所述先前校验和。
4.根据权利要求1所述的方法,其中所述确定和所述禁用由包括所述处理单元的计算机系统的操作系统软件控制。
5.根据权利要求1所述的方法,其中对所述特定线程的处理始于所有所述寄存器组被启用。
6.根据权利要求1所述的方法,其中: 所述寄存器组包括通用寄存器、浮点寄存器、向量寄存器以及向量-标量寄存器;以及 所述禁用选择性地禁用所述浮点寄存器、所述向量寄存器以及所述向量-标量寄存器之一 O
7.一种处理器,包括: 多个执行单元; 将程序指令集分派至所述执行单元的指令取得单元,所述集构成多个线程;以及 由所述执行单元使用的多个寄存器组;以及 管理所述多个线程的操作的线程控制单元,所述线程控制单元包括计数器,所述计数器指示在不使用所述寄存器组中的给定的寄存器组的情况下所述线程中的特定线程被分派多少次。
8.根据权利要求7所述的处理器,其中所述线程控制单元还包括针对所述寄存器组的内容的相应校验和。
9.根据权利要求8所述的处理器,其中所述线程控制单元还包括控制逻辑,所述控制逻辑存储针对来自先前分派的所述给定的寄存器组的状态的先前校验和,确定针对来自当前分派的所述给定的寄存器组的状态的当前校验和等于所述先前校验和,并且响应地递增所述计数器中与所述特定线程和所述给定的寄存器组对应的计数器。
10.根据权利要求7所述的处理器,其中: 所述寄存器组包括通用寄存器组、浮点寄存器组、向量寄存器组以及向量-标量寄存器组;以及 所述计数器仅被提供有所述浮点寄存器组、所述向量寄存器组以及所述向量-标量寄存器组。
11.一种计算机系统,包括: 具有处理构成多个线程的程序指令集的至少一个处理器核的至少一个处理单元,所述处理器核包括多个执行单元、由所述执行单元使用的多个寄存器组以及管理所述多个线程的操作的线程控制单元; 耦合至所述处理器核的系统存储器,所述系统存储器存储所述程序指令;以及 用于响应于确定给定的寄存器组未被特定线程使用所述特定线程的预定数目的分派而禁用所述给定的寄存器组被所述特定线程使用的装置。
12.根据权利要求11所述的计算机系统,其中所述禁用装置在所述特定线程的当前分派之后推断所述特定线程自所述特定线程的先前分派以后还未使用所述给定的寄存器组,并且响应地递增对应于所述特定线程和所述给定的寄存器组超过预定阈值的计数器。
13.根据权利要求12所述的计算机系统,其中所述禁用装置还存储针对来自所述先前分派的所述给定的寄存器的状态的先前校验和,并且确定针对来自所述当前分派的所述给定的寄存器组的状态的当前校验和等于所述先前校验和。
14.根据权利要求11所述的计算机系统,其中: 所述系统存储器包括操作系统;以及 所述操作系统控制所述禁用装置。
15.根据权利要求14所述的计算机系统,其中所述操作系统在所述特定线程的处理开始时启用所有所述寄存器组。
16.在提供具有执行单元和由所述执行单元使用的寄存器组的处理器核内的多个线程的并发执行的多线程计算机系统中,改进包括: 基于所述多个线程的实时行为动态地启用和禁用对选择的寄存器组的访问的控制逻辑。
17.根据权利要求16所述的改进,其中所述控制逻辑存储针对来自特定线程的先前分派的给定的寄存器组的状态的先前校验和,确定针对来自所述特定线程的当前分派的所述给定的寄存器组的状态的当前校验和等于所述先前校验和,并且响应地递增对应于所述特定线程和所述给定寄存器组的计数器。
18.根据权利要求17所述的改进,其中所述控制逻辑至少部分地体现在计算所述检验和和递增所述计数器的所述计算机系统的操作系统中。
19.根据权利要求17所述的改进,其中所述控制逻辑至少部分地体现在计算所述校验和和递增所述计数器的所述处理器核的硬件电路装置中。
20.根据权利要求16所述的改进,其中所述控制逻辑在特定线程的处理开始时启用所有所述寄存器组。
【文档编号】G06F9/38GK103810035SQ201310521980
【公开日】2014年5月21日 申请日期:2013年10月29日 优先权日:2012年11月1日
【发明者】R·C·斯旺贝格 申请人:国际商业机器公司