从处理器中的并发物理线程的数目中去耦合逻辑线程的数目的制作方法

文档序号:6503934阅读:191来源:国知局
专利名称:从处理器中的并发物理线程的数目中去耦合逻辑线程的数目的制作方法
技术领域
本发明实施例总体上涉及计算机。更具体地说,实施例涉及增强具有并发执行线程的计算机体系结构。
背景技术
由于对现今计算机增强功能的需求持续增长,处理器设计者以及制造商面临许多挑战。例如,对因特网和多媒体应用使用的稳定增长已经导致所多个进程或多个执行线程同时要求访问处理器和存储器资源。虽然诸如超线程之类的改进增加了处理器的吞吐量,所述超线程使单个处理器能够同时运行多个线程,但是还存在相当大的改进空间。特别地是,常规方法在于把线程的逻辑组件耦合到所述线程的物理组件。不幸地是,把线程的逻辑组件耦合到所述线程的物理组件可能存在与吞吐量以及推测有关的问题。例如,用于增加吞吐量的一个方法可能是增加并发线程的数目。然而,给定处理器中的物理资源受到与设计以及制造相关的许多成本因素的限制。结果,通过增加线程数目可以增加处理器吞吐量的程度受实际因素的约束。因此需要一种多线程方法,其能够在不要求增加实际线程数目的情况下增加有效的并发线程数目。
此外,在把每个线程的逻辑组件耦合到所述线程的物理组件的常规技术下不能实现推测,所述推测可能会使所述逻辑组件在不止一个线程物理组件上执行。结果,处理器性能的可改进的程度也受到了限制。因此需要一种能够推测性执行的多线程方法。


通过参考附图,阅读以下描述及所附权利要求,本发明实施例的各个优点对本领域技术人员将变得更加清楚,其中图1是依照本发明一个实施例的状态机的例子的图;图2是依照本发明一个实施例用于把逻辑线程保持在活动状态中的过程的例子的流程图;
图3是依照本发明一个实施例用于把逻辑线程保持在消耗(drain)状态中的过程的例子的流程图;图4是依照本发明一个实施例用于把逻辑线程保持在停滞(stall)状态中的过程的例子的流程图;图5是依照本发明一个实施例用于把逻辑线程保持在等待状态中的过程的例子的流程图;图6是依照本发明一个实施例的线程管理表的图;图7是依照本发明一个实施例的吞吐量操作模式的例子的图;图8是依照本发明候选实施例的推测性操作模式的例子的图;和图9是依照本发明一个实施例的计算机系统的例子的图。
具体实施例方式
用于管理线程的系统和方法利用多个并发物理线程来支持多个逻辑线程,以便在没有与常规方法相关联的制造和设计缺陷的情况下实现更大的效率。图1中的图解10示出了一种技术,所述技术把多个逻辑线程中的每个保持在等待状态12、活动状态14、消耗状态16和停滞状态18之一中。每个逻辑线程保持在活动状态14中直到存在一个或多个触发事件,其中所述触发事件可以涉及许多关系,诸如等待时间、公平性、优先级等。当存在触发事件时,逻辑线程进入消耗状态16,在所述消耗状态16中处理器在所述逻辑线程中寻找可中断点。可中断点被定义为可以保存逻辑线程状态的点。可中断点还取决于所遇到的触发事件类型。一旦遇到可中断点,那么把逻辑线程置于停滞状态18中直到不存在任何触发事件,或者发信号通知具有比原始触发事件更高优先级的另一事件。当存在任何一种情况时,逻辑线程被切换到等待状态12。例如,当触发事件为高速缓存器未命中时,逻辑线程保持在停滞状态18中直到已经从存储器服务所述高速缓存器未命中。逻辑线程保持在等待状态中直到遇到可用的物理线程并且可以把所述逻辑线程切换到活动状态14。因而,当逻辑线程被从活动状态14“驱逐”出去时,其它逻辑线程可以被无缝地切换到所述活动状态14。结果,在逻辑线程和并发物理线程之间获得了唯一的去耦合效果。
现在转向图2,非常详细地示出了用于把逻辑线程保持在活动状态中的一个方法。特别地是,处理块20用于把与逻辑线程相关联的宏指令映射到物理线程的指令指针(instruction pointer NIP)。逻辑线程可以被视为一个宏指令序列,所述宏指令被解码为微操作(或微指令uop)。例如,“调用”宏指令可以被解码为“存储”、“测试”和“跳转”微指令。每个并发物理线程具有一个对应的NIP,用于有效地表示所要处理的宏指令的地址。据此,当给定逻辑线程的宏指令被映射到NIP时,它们可以被取出、解码为微指令并且馈送到其余的处理器流水线。
这些技术同样适用于精简指令集计算机(RISC)体系结构和复杂指令系统计算机(CISC)体系结构。宏指令到微操作序列的转换不是必需的。
块22用于针对一个或多个触发事件来监视处理器。触发事件可以包括但不局限于存储器等待时间事件、睡眠请求和线程优先级事件。例如,存储器等待时间事件可以是高速缓存器未命中,其要求相对较长的等待时间来从存储器中读取数据。在这种情况下,触发事件被从执行流水线传送到线程管理逻辑。作为另一例子,存储器等待时间事件可以是预测的高速缓存器未命中,其可能会要求从存储器分级体系更下游的存储器中取出数据或指令(需要更长的等待时间)。可以利用任何可用的技术来完成预测高速缓存器未命中。例如,一种算法可以当在解码时间中加载微操作比未解决的分支更年轻时向其分配更高的概率,其中所述加载微操作在高速缓存器中未命中。特定的预测技术并非是本论述的中心,并且以上例子仅仅是用于产生触发事件的一种方式。触发事件还可以是这样的事实,只利用弱置信度来预测条件分支——在等待状态中存在可用的逻辑线程的情况下,执行这些逻辑线程可能比在推测性模式中执行当前逻辑线程更高效。预测置信度的强度还可以取决于当前逻辑线程的优先级。
另一类型的触发事件是睡眠请求,例如当执行HALT或MONITOR/MWAIT指令时,其可能命令线程管理体系结构中止处理逻辑线程直到遇到对特定地址的存储或直到接收了“复活”信号(例如外部中断)。触发事件还可以是来自具有比所述活动逻辑线程更高优先级的另一逻辑线程的中断命令。这种高优先级逻辑线程的例子可以是屏幕更新线程,如果不能获得对物理线程的访问,那么所述屏幕更新线程可能会呈现所不想要的“闪烁”显示。此外,线程优先级事件可能依照公平性规则出现,所述公平性规则允许由逻辑线程对并发物理线程平均或加权地访问。
在任何情况下,如果块24确定存在一个或多个触发事件,那么在块26可以使映射停止并且在块28中把逻辑线程切换到消耗状态。块30用于把逻辑线程保持在活动状态中直到存在一个或多个触发事件。
图3非常详细地示出了用于把逻辑线程保持在消耗状态中的一个方法。在块32针对可中断点来监视逻辑线程。如已经所论述的那样,当处理逻辑线程时,典型情况下宏指令被解码为一个或多个微指令。微指令可以根据情况而被标记为宏指令的开始(BOM)或宏指令的结束(EOM)。在这种情况下,可中断点可以对应于被标记为EOM的微指令。这种方法可能会消除与互相依赖相关联的某些困难并且实际上还可能会进一步增强效率。可中断点还可以仅仅对应于从所讨论的逻辑线程中最后微指令的离开。如果在块34确定已经遇到可中断点,那么块36用于把逻辑线程切换到停滞状态。块38用于把逻辑线程保持在消耗状态中直到遇到可中断点。
现在转向图4,非常详细地示出了用于把逻辑线程保持在停滞状态中的一个方法。特别地是,块40用于针对一个或多个触发事件来监视处理器。如已经所讨论的那样,触发事件可以包括但不局限于等待时间事件、睡眠请求和线程优先级事件等。如果在块42确定不存在任何触发事件,那么块44用于把逻辑线程切换到等待状态。块46用于把逻辑线程保持在停滞状态中直到不存在任何触发事件。例如,逻辑线程被保持在停滞状态中直到已经服务高速缓存器未命中触发事件并且存在数据。应当注意,使逻辑线程切换到消耗状态的触发事件可以相同于或不同于把逻辑线程带出停滞状态的触发事件。
应当注意,使逻辑线程切换到消耗状态的触发事件可以相同于或不同于把逻辑线程带出停滞状态的触发事件。例如,逻辑线程可以通过执行HALT指令被带入停滞状态中,并且可以保持在所述停滞状态中直到接收了外部中断。作为另一例子,逻辑线程可以通过执行未命中高速缓存器的加载指令而被带入停滞状态中,并且可以通过接收外部中断而被带出所述停滞状态,这是因为服务外部中断常常比等待推测性高速缓存器未命中完成更重要。
图5非常详细地示出了用于把逻辑线程保持在等待状态中的一个方法。特别地是,在块48针对可用物理线程来监视多个并发物理线程。如果在块50确定已经遇到可用的物理线程,那么块52用于把所述逻辑线程切换到活动状态。块54用于把逻辑线程保持在等待状态中直到遇到可用的物理线程。因而,在等待状态中的所有逻辑线程都已准备好在物理线程上执行。当物理线程变得可用时,逻辑线程被选择并且移到活动状态。物理线程可以依照上述例子而变得可用。逻辑线程的选择可以基于但不局限于在逻辑线程之间的优先级和/或公平性要求。
现在转向图6,示出了线程管理表56。线程管理表56存储逻辑线程信息,所述逻辑线程信息可以为多个逻辑线程中每个识别状态和一个或多个触发事件。例如,所图示的T0处于活动状态中并且可以触发具体的存储器请求或外部存储器以便监视地址AF09。另一方面,线程T1处于停滞状态中并且触发外部存储器以便监视地址AF09和“MWAIT”命令。还可以在线程管理表56中存储附加信息,诸如当激活时所要使用的IP和用于支持逻辑线程所需要的硬件资源简档。在这点上应当注意,不必在所有逻辑线程上平均地分配资源。所述资源包括但不局限于在处理器中用来支持快速推测性执行的临时寄存器,典型情况下更多资源意味着更快速地执行。实际上,系统中的任何平台资源可以被包括在硬件资源简档中并且依照这种方式来控制。例如,可以向更多要求的逻辑线程分配比向较少要求的逻辑线程更多资源。资源分配还可以包括但不局限于使用优先级、性能反馈或公平性输入。还应当注意,线程管理表56的组件可以按照实际实现方式关系的要求来在处理器的不同部分上分布,并且不必位于中心。
图7示出了其中多个逻辑线程58比多个并发物理线程60在数目上要大的例子。在这种情况下,线程管理体系结构依照“吞吐量模式”操作,这是因为并发物理线程60可以通过连续地激活已经准备好处理的逻辑线程来保持尽可能地忙碌。另一方面在图8中,多个逻辑线程62比多个并发物理线程64在数目上要小以便获得操作的“推测性模式”。可以通过当遇到程序调用或其它间接程序结构时向相同的逻辑线程分配附加的并发物理线程来实现推测。例如在程序调用的情况下,可以推断适当编写的、具有调用指令的程序最后会返回到调用点。据此,可能希望在所预计的返回点开始附加的并发物理线程,并且当出现实际返回时相对于所述实际返回来测试所推测的返回。如果测试成功,那么已经由附加并发物理线程所处理的微指令有效。还应当注意,线程管理体系结构可以容易地被配置为在“混合”操作模式中运行,其中上述吞吐量和推测模式并发操作。
现在转向图9,示出了计算机系统66。计算机系统66具有用于存储宏指令的系统存储器68。系统存储器可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器等。系统总线70被耦合到系统存储器68和处理器72以获取宏指令。处理器72具有线程管理体系结构74,所述线程管理体系结构74具有状态机76和硬件定序器78。状态机76可以依照与在图10中所图示的状态机类似的方式操作(图1)。状态机76通过把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中来利用多个并发物理线程支持对应于宏指令的多个逻辑线程。硬件定序器78针对对应于逻辑线程的可用物理线程来监视多个并发物理线程。状态机76把逻辑线程保持在等待状态中直到遇到可用的物理线程。应当注意,尽管在所图示的例子中,把对应于多个逻辑线程的宏指令存储在系统存储器中,还可以从诸如跟踪高速缓存器、指令高速缓存器等“芯片内”存储器中获取指令及其相应的微指令。
还应当注意,逻辑线程可能处于的精确状态数目可以根据环境而改变。例如,为了使实际实现便于进行,消耗状态可以被拆分成许多状态,其中每个子状态表示“消耗”操作的一部分。
那些本领域技术人员根据上述描述可以理解,可以依照各种形式来实现本发明的广阔教导。因此,虽然已经结合特定的例子描述了本发明,然而本发明的真正范围不应当被这样限制,这是因为当学习附图、说明书和随后的权利要求之后其它修改对技术人员来说是显而易见的。
权利要求
1.一种用于管理线程的方法,包括利用多个并发物理线程来支持多个逻辑线程。
2.如权利要求1所述的方法,还包括把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中。
3.如权利要求2所述的方法,其中第一逻辑线程被保持在所述活动状态中,所述方法还包括把与所述第一逻辑线程相关联的宏指令映射到物理线程的下一指令指针;并且针对触发事件来监视处理器;把所述第一逻辑线程保持在所述活动状态中直到存在触发事件。
4.如权利要求3所述的方法,还包括如果存在触发事件,那么使映射停止;并且把所述第一逻辑线程切换到所述消耗状态。
5.如权利要求3所述的方法,其中所述触发事件包括存储器等待时间事件、睡眠请求和线程优先级事件中的至少一个。
6.如权利要求2所述的方法,其中第一逻辑线程被保持在所述消耗状态中,所述方法还包括针对可中断点来监视所述第一逻辑线程;并且把所述第一逻辑线程保持在所述消耗状态中直到遇到可中断点。
7.如权利要求6所述的方法,还包括如果遇到可中断点,那么把所述第一逻辑线程切换到所述停滞状态。
8.如权利要求6所述的方法,其中可中断点对应于所述第一逻辑线程中的宏指令的结束或与所述第一逻辑线程相关联的最后微操作的退出。
9.如权利要求2所述的方法,其中第一逻辑线程被保持在所述停滞状态中,所述方法还包括针对触发事件来监视处理器;并且把所述第一逻辑线程保持在所述停滞状态中直到不存在触发事件。
10.如权利要求9所述的方法,还包括如果不存在触发事件,那么把所述第一逻辑线程切换到所述等待状态。
11.如权利要求9所述的方法,还包括如果发信号通知具有比所述触发事件更高优先级的另一事件,那么把所述第一逻辑线程切换到所述等待状态。
12.如权利要求9所述的方法,其中所述触发事件包括存储器等待时间事件、睡眠请求和线程优先级事件中的至少一个。
13.如权利要求2所述的方法,其中第一逻辑线程被保持在所述等待状态中,所述方法还包括针对可用物理线程来监视多个并发物理线程;并且把所述第一逻辑线程保持在等待状态中直到遇到可用的物理线程。
14.如权利要求13所述的方法,还包括如果遇到可用的物理线程,那么把所述第一逻辑线程切换到所述活动状态。
15.如权利要求1所述的方法,还包括把线程信息存储在线程管理表中,所述线程信息用于为多个逻辑线程中的每个识别状态、一个或多个触发事件和线性指令指针。
16.如权利要求15所述的方法,其中所述线程信息还包括用于多个逻辑线程中的每个的资源要求简档。
17.如权利要求1所述的方法,其中所述多个逻辑线程比多个并发物理线程在数目上要大。
18.如权利要求1所述的方法,其中所述多个逻辑线程比多个并发物理线程在数目上要小。
19.一种用于利用多个并发物理线程来支持多个逻辑线程的方法,包括把与第一逻辑线程相关联的宏指令映射到并发物理线程的下一指令指针;针对第一次的触发事件来监视处理器;把所述第一逻辑线程保持在活动状态中直到存在触发事件;如果存在触发事件,那么使映射停止并且把所述第一逻辑线程切换到消耗状态;针对可中断点来监视所述第一逻辑线程;把所述第一逻辑线程保持在所述消耗状态中直到遇到可中断点;如果遇到可中断点,那么把所述第一逻辑线程切换到停滞状态;针对第二次的触发事件来监视处理器;把所述第一逻辑线程保持在所述停滞状态中直到不存在触发事件;如果不存在触发事件,那么把所述第一逻辑线程切换到等待状态;针对可用物理线程来监视多个并发物理线程;把所述第一逻辑线程保持在等待状态中直到遇到可用的物理线程;并且如果遇到可用的物理线程,那么把所述第一逻辑线程切换到所述活动状态。
20.如权利要求19所述的方法,其中所述触发事件包括存储器等待时间事件、睡眠请求和线程优先级事件中的至少一个。
21.如权利要求19所述的方法,其中可中断点对应于所述第一逻辑线程中的宏指令结束或与第一逻辑线程相关联的最终微操作的退出。
22.如权利要求19所述的方法,还包括把线程信息存储在线程管理表中,所述线程信息用于为多个逻辑线程中的每个识别状态、一个或多个触发事件和线性指令指针。
23.一种线程管理体系结构,包括状态机,用于通过把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中来利用多个并发物理线程支持多个逻辑线程。
24.如权利要求23所述的线程管理体系结构,其中所述状态机将把与第一逻辑线程相关联的宏指令映射到物理线程的下一指令指针,针对触发事件来监视处理器并且把所述第一逻辑线程保持在所述活动状态中直到存在触发事件。
25.如权利要求23所述的线程管理体系结构,其中所述状态机将针对可中断点来监视第一逻辑线程,并且把所述第一逻辑线程保持在所述消耗状态中直到遇到可中断点。
26.如权利要求23所述的线程管理体系结构,其中所述状态机将针对触发事件来监视处理器,并且把第一逻辑线程保持在所述停滞状态中直到不存在触发事件。
27.如权利要求23所述的线程管理体系结构,还包括硬件定序器,所述硬件定序器用于针对可用物理线程来监视多个并发物理线程,所述状态机用于把所述第一逻辑线程保持在所述等待状态中直到遇到可用的物理线程。
28.一种计算机系统,包括随机访问存储器,用于存储宏指令;系统总线,被耦合到所述存储器,和耦合到所述系统总线的处理器,用于获取所述宏指令,所述处理器包括具有状态机的线程管理体系结构,所述状态机通过把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中来利用多个并发物理线程支持对应于所述宏指令的多个逻辑线程。
29.如权利要求28所述的计算机系统,其中所述状态机将把与第一逻辑线程相关联的宏指令映射到物理线程的下一指令指针,针对触发事件来监视所述处理器,并且把所述第一逻辑线程保持在所述活动状态中直到存在触发事件。
30.如权利要求28所述的计算机系统,其中所述状态机将针对可中断点来监视第一逻辑线程,并且把所述第一逻辑线程保持在所述消耗状态中直到遇到可中断点。
31.如权利要求28所述的计算机系统,其中所述状态机将针对触发事件来监视所述处理器并且把第一逻辑线程保持在所述停滞状态中直到不存在触发事件。
32.如权利要求28所述的计算机系统,其中所述线程管理体系结构还包括硬件定序器,所述硬件定序器用于针对对应于第一逻辑线程的可用物理线程来监视多个并发物理线程,所述状态机用于把所述第一逻辑线程保持在所述等待状态中直到遇到可用的物理线程。
33.如权利要求28所述的计算机系统,还包括线程管理表,用于存储线程信息,所述线程信息用于为多个逻辑线程中的每个识别状态、一个或多个触发事件和线性指令指针。
34.如权利要求33所述的计算机系统,其中所述线程信息还将为多个逻辑线程中的每个识别资源要求简档。
35.如权利要求28所述的计算机系统,其中所述多个逻辑线程将比多个并发物理线程在数目上要大。
36.如权利要求28所述的计算机系统,其中所述多个逻辑线程将比多个并发物理线程在数目上要小。
全文摘要
一种用于管理线程的系统和方法,用于利用多个并发物理线程来支持多个逻辑线程,其中逻辑线程的数目可以大于或小于物理线程的数目。依照一个方法,把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中。可以使用状态机和硬件定序器来根据触发事件和在逻辑线程中是否已经遇到可中断点来使所述逻辑线程在状态之间转变。在物理线程上调度逻辑线程以满足例如优先级、性能或公平性目标。还可以指定可用于每个逻辑线程的资源以满足这些及其它目标。在一个例子中,单个逻辑线程可以推测地使用一个以上的物理线程,挂起对应当提交的物理线程的选择。
文档编号G06F9/48GK1926514SQ200480039419
公开日2007年3月7日 申请日期2004年12月20日 优先权日2003年12月29日
发明者P·哈马伦德, A·法西, M·马登, D·卡米恩, P·米肖, R·欣顿 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1