CN102193828A - 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 - Google Patents
从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 Download PDFInfo
- Publication number
- CN102193828A CN102193828A CN2011101002621A CN201110100262A CN102193828A CN 102193828 A CN102193828 A CN 102193828A CN 2011101002621 A CN2011101002621 A CN 2011101002621A CN 201110100262 A CN201110100262 A CN 201110100262A CN 102193828 A CN102193828 A CN 102193828A
- Authority
- CN
- China
- Prior art keywords
- thread
- logic
- threads
- logic thread
- physical
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000004044 response Effects 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000007704 transition Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
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/46—Multiprogramming arrangements
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的名称是“从处理器中的并发物理线程的数目中去耦合逻辑线程的数目”。一种用于管理线程的系统和方法,用于利用多个并发物理线程来支持多个逻辑线程,其中逻辑线程的数目可以大于或小于物理线程的数目。依照一个方法,把多个逻辑线程中的每个保持在等待状态、活动状态、消耗状态和停滞状态之一中。可以使用状态机和硬件定序器来根据触发事件和在逻辑线程中是否已经遇到可中断点来使所述逻辑线程在状态之间转变。在物理线程上调度逻辑线程以满足例如优先级、性能或公平性目标。还可以指定可用于每个逻辑线程的资源以满足这些及其它目标。在一个例子中,单个逻辑线程可以推测地使用一个以上的物理线程,挂起对应当提交的物理线程的选择。
Description
本申请是申请日为2004年12月20日、申请号为200480039419.2、发明名称为“从处理器中的并发物理线程的数目中去耦合逻辑线程的数目”的申请的分案申请。
技术领域
本发明实施例总体上涉及计算机。更具体地说,实施例涉及增强具有并发执行线程的计算机体系结构。
背景技术
由于对现今计算机增强功能的需求持续增长,处理器设计者以及制造商面临许多挑战。例如,对因特网和多媒体应用使用的稳定增长已经导致所多个进程或多个执行线程同时要求访问处理器和存储器资源。虽然诸如超线程之类的改进增加了处理器的吞吐量,所述超线程使单个处理器能够同时运行多个线程,但是还存在相当大的改进空间。特别地是,常规方法在于把线程的逻辑组件耦合到所述线程的物理组件。不幸地是,把线程的逻辑组件耦合到所述线程的物理组件可能存在与吞吐量以及推测有关的问题。例如,用于增加吞吐量的一个方法可能是增加并发线程的数目。然而,给定处理器中的物理资源受到与设计以及制造相关的许多成本因素的限制。结果,通过增加线程数目可以增加处理器吞吐量的程度受实际因素的约束。因此需要一种多线程方法,其能够在不要求增加实际线程数目的情况下增加有效的并发线程数目。
此外,在把每个线程的逻辑组件耦合到所述线程的物理组件的常规技术下不能实现推测,所述推测可能会使所述逻辑组件在不止一个线程物理组件上执行。结果,处理器性能的可改进的程度也受到了限制。因此需要一种能够推测性执行的多线程方法。
发明内容
根据第一实施例,本发明提供了一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
用于在吞吐量模式中操作处理器的部件,其中所述吞吐量模式包括维持在数量上多于所述处理器中的多个并发物理线程的多个逻辑线程,并且其中,所述多个逻辑线程中的每一个的逻辑组件将被从所述多个并发物理线程中去耦合;以及
用于将所述多个逻辑线程中的每一个保持在以下状态之一的部件:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件。
根据第二实施例,本发明提供了一种用于从处理器中的并发物理线程中去耦合逻辑线程的方法,包括:
在吞吐量模式中操作处理器,其中所述吞吐量模式包括维持在数量上多于所述处理器中的多个并发物理线程的多个逻辑线程,并且其中,所述多个逻辑线程中的每一个的逻辑组件将被从所述多个并发物理线程中去耦合;以及
将所述多个逻辑线程中的每一个保持在以下状态之一:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件。
根据第三实施例,本发明提供了一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
用于在推测模式中操作处理器的部件,其中所述推测模式包括维持在数量上少于所述处理器中的多个并发物理线程的多个逻辑线程;
用于将所述多个逻辑线程中的每一个保持在以下状态之一的部件:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件;以及
用于响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程的部件。
根据第四实施例,本发明提供了一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
在推测模式中操作处理器,其中所述推测模式包括维持在数量上少于所述处理器中的多个并发物理线程的多个逻辑线程;
将所述多个逻辑线程中的每一个保持在以下状态之一:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件;以及
响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程。
附图说明
通过参考附图,阅读以下描述及所附权利要求,本发明实施例的各个优点对本领域技术人员将变得更加清楚,其中:
图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用于把与逻辑线程相关联的宏指令映射到物理线程的下一个指令指针(next instruction pointerNIP)。逻辑线程可以被视为一个宏指令序列,所述宏指令被解码为微操作(或微指令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把逻辑线程保持在等待状态中直到遇到可用的物理线程。应当注意,尽管在所图示的例子中,把对应于多个逻辑线程的宏指令存储在系统存储器中,还可以从诸如跟踪高速缓存器、指令高速缓存器等“芯片内”存储器中获取指令及其相应的微指令。
还应当注意,逻辑线程可能处于的精确状态数目可以根据环境而改变。例如,为了使实际实现便于进行,消耗状态可以被拆分成许多状态,其中每个子状态表示“消耗”操作的一部分。
那些本领域技术人员根据上述描述可以理解,可以依照各种形式来实现本发明的广阔教导。因此,虽然已经结合特定的例子描述了本发明,然而本发明的真正范围不应当被这样限制,这是因为当学习附图、说明书和随后的权利要求之后其它修改对技术人员来说是显而易见的。
Claims (16)
1.一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
用于在吞吐量模式中操作处理器的部件,其中所述吞吐量模式包括维持在数量上多于所述处理器中的多个并发物理线程的多个逻辑线程,并且其中,所述多个逻辑线程中的每一个的逻辑组件将被从所述多个并发物理线程中去耦合;以及
用于将所述多个逻辑线程中的每一个保持在以下状态之一的部件:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件。
2.如权利要求1所述的装置,还包括用于转换所述多个逻辑线程中的每一个的部件:响应监视到触发事件而从所述活动状态转换到所述消耗状态;响应遇到可中断点而从所述消耗状态转换到所述停滞状态;响应监视到不存在所述触发事件而从所述停滞状态转换到所述等待状态;以及响应遇到所述多个并发物理线程中的可用物理线程而从所述等待状态转换到所述活动状态。
3.如权利要求2所述的装置,其中,用于响应遇到所述多个并发物理线程中的可用物理线程而将所述多个逻辑线程中的每一个从所述等待状态转换到所述活动状态的装置如果还响应所述多个逻辑线程之中的优先级则保持在所述等待状态。
4.如权利要求1所述的装置,还包括用于维持线程管理表以存储所述多个逻辑线程中的每一个的信息的装置。
5.如权利要求4所述的装置,其中,所述多个逻辑线程中的每一个的信息包括:所述逻辑线程中的每一个的状态和所述逻辑线程中的每一个的一个或多个触发事件。
6.一种用于从处理器中的并发物理线程中去耦合逻辑线程的方法,包括:
在吞吐量模式中操作处理器,其中所述吞吐量模式包括维持在数量上多于所述处理器中的多个并发物理线程的多个逻辑线程,并且其中,所述多个逻辑线程中的每一个的逻辑组件将被从所述多个并发物理线程中去耦合;以及
将所述多个逻辑线程中的每一个保持在以下状态之一:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件。
7.如权利要求6所述的方法,还包括用于转换所述多个逻辑线程中的每一个的部件:响应监视到触发事件而从所述活动状态转换到所述消耗状态;响应遇到可中断点而从所述消耗状态转换到所述停滞状态;响应监视到不存在所述触发事件而从所述停滞状态转换到所述等待状态;以及响应遇到所述多个并发物理线程中的可用物理线程而从所述等待状态转换到所述活动状态。
8.如权利要求7所述的方法,其中,用于响应遇到所述多个并发物理线程中的可用物理线程而将所述多个逻辑线程中的每一个从所述等待状态转换到所述活动状态的装置如果还响应所述多个逻辑线程之中的优先级则保持在所述等待状态。
9.如权利要求6所述的方法,还包括用于维持线程管理表以存储所述多个逻辑线程中的每一个的信息的装置。
10.如权利要求9所述的方法,所述多个逻辑线程中的每一个的信息包括:所述逻辑线程中的每一个的状态和所述逻辑线程中的每一个的一个或多个触发事件。
11.一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
用于在推测模式中操作处理器的部件,其中所述推测模式包括维持在数量上少于所述处理器中的多个并发物理线程的多个逻辑线程;
用于将所述多个逻辑线程中的每一个保持在以下状态之一的部件:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件;以及
用于响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程的部件。
12.如权利要求11所述的装置,其中,用于响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程的部件包括:用于遇到调用或所述同一逻辑线程中的其它间接程序结构的部件,以及用于响应遇到调用或所述同一逻辑线程中的其它间接程序结构以及在所述推测模式中操作所述处理器而在从所述调用或所述同一逻辑线程中的其它间接程序结构的返回点开始所述多个物理线程中的另外的并发物理线程的部件。
13.如权利要求11所述的装置,其中,用于在推测模式中操作处理器的部件还适于在包括推测模式和吞吐量模式的混合模式中操作所述处理器。
14.一种用于从处理器中的并发物理线程中去耦合逻辑线程的装置,包括:
在推测模式中操作处理器,其中所述推测模式包括维持在数量上少于所述处理器中的多个并发物理线程的多个逻辑线程;
将所述多个逻辑线程中的每一个保持在以下状态之一:等待状态,表明所述多个逻辑线程中的逻辑线程准备好在所述多个并发物理线程中的可用物理线程上执行;活动状态,表明所述多个逻辑线程中的逻辑线程正在所述多个并发物理线程中的物理线程上执行;消耗状态,表明所述多个逻辑线程中的逻辑线程正在监视所述逻辑线程的可中断点;或停滞状态,表明所述多个逻辑线程中的逻辑线程正在等待,直到不存在触发事件;以及
响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程。
15.如权利要求14所述的方法,其中,响应在所述推测模式中操作所述处理器而将所述多个并发物理线程中的多于一个并发物理线程分配给所述多个逻辑线程中的同一逻辑线程包括:遇到调用或所述同一逻辑线程中的其它间接程序结构,以及响应遇到调用或所述同一逻辑线程中的其它间接程序结构以及在所述推测模式中操作所述处理器而在从所述调用或所述同一逻辑线程中的其它间接程序结构的返回点开始所述多个物理线程中的另外的并发物理线程。
16.如权利要求14所述的方法,其中,用于在推测模式中操作处理器的部件还适于在包括推测模式和吞吐量模式的混合模式中操作所述处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/745527 | 2003-12-29 | ||
US10/745,527 US7797683B2 (en) | 2003-12-29 | 2003-12-29 | Decoupling the number of logical threads from the number of simultaneous physical threads in a processor |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800394192A Division CN1926514B (zh) | 2003-12-29 | 2004-12-20 | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193828A true CN102193828A (zh) | 2011-09-21 |
CN102193828B CN102193828B (zh) | 2013-06-12 |
Family
ID=34886484
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101002621A Expired - Fee Related CN102193828B (zh) | 2003-12-29 | 2004-12-20 | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 |
CN2004800394192A Expired - Fee Related CN1926514B (zh) | 2003-12-29 | 2004-12-20 | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800394192A Expired - Fee Related CN1926514B (zh) | 2003-12-29 | 2004-12-20 | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7797683B2 (zh) |
JP (1) | JP4599365B2 (zh) |
KR (1) | KR100856144B1 (zh) |
CN (2) | CN102193828B (zh) |
DE (2) | DE112004002505T5 (zh) |
WO (1) | WO2006057647A2 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7793291B2 (en) * | 2004-12-22 | 2010-09-07 | International Business Machines Corporation | Thermal management of a multi-processor computer system |
US9146745B2 (en) * | 2006-06-29 | 2015-09-29 | Intel Corporation | Method and apparatus for partitioned pipelined execution of multiple execution threads |
US7454596B2 (en) * | 2006-06-29 | 2008-11-18 | Intel Corporation | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
US7698540B2 (en) * | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US9032254B2 (en) | 2008-10-29 | 2015-05-12 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed and energy consumption of various processes |
US8307246B2 (en) * | 2008-10-29 | 2012-11-06 | Aternity Information Systems Ltd. | Real time monitoring of computer for determining speed of various processes |
WO2013015823A1 (en) * | 2011-07-27 | 2013-01-31 | Cypress Semiconductor Corporation | Method and apparatus for parallel scanning and data processing for touch sense arrays |
US9542236B2 (en) | 2011-12-29 | 2017-01-10 | Oracle International Corporation | Efficiency sequencer for multiple concurrently-executing threads of execution |
US9715411B2 (en) | 2014-02-05 | 2017-07-25 | International Business Machines Corporation | Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system |
US9213569B2 (en) * | 2014-03-27 | 2015-12-15 | International Business Machines Corporation | Exiting multiple threads in a computer |
US9898351B2 (en) * | 2015-12-24 | 2018-02-20 | Intel Corporation | Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture |
CN106325512A (zh) * | 2016-08-24 | 2017-01-11 | 韩龙潇 | 一种使用状态下监测周围环境的终端 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2078315A1 (en) * | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
JPH05181670A (ja) * | 1992-01-06 | 1993-07-23 | Fujitsu Ltd | マイクロプログラム方式計算機 |
JP2991598B2 (ja) * | 1993-09-09 | 1999-12-20 | 富士通株式会社 | Lsi設計装置及びlsi設計方法 |
JP3231571B2 (ja) | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US5913925A (en) * | 1996-12-16 | 1999-06-22 | International Business Machines Corporation | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order |
US6192514B1 (en) * | 1997-02-19 | 2001-02-20 | Unisys Corporation | Multicomputer system |
US5999734A (en) * | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
US7085670B2 (en) * | 1998-02-17 | 2006-08-01 | National Instruments Corporation | Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources |
US6557064B1 (en) * | 1999-02-19 | 2003-04-29 | Hewlett-Packard Development Company | Set up time adjust |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6708269B1 (en) * | 1999-12-30 | 2004-03-16 | Intel Corporation | Method and apparatus for multi-mode fencing in a microprocessor system |
US7103586B2 (en) * | 2001-03-16 | 2006-09-05 | Gravic, Inc. | Collision avoidance in database replication systems |
US6964049B2 (en) * | 2001-07-18 | 2005-11-08 | Smartmatic Corporation | Smart internetworking operating system for low computational power microprocessors |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7487504B2 (en) * | 2002-02-06 | 2009-02-03 | International Business Machines Corporation | Thread dispatch for multiprocessor computer systems |
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
-
2003
- 2003-12-29 US US10/745,527 patent/US7797683B2/en not_active Expired - Fee Related
-
2004
- 2004-12-20 WO PCT/US2004/043036 patent/WO2006057647A2/en active Application Filing
- 2004-12-20 DE DE112004002505T patent/DE112004002505T5/de not_active Withdrawn
- 2004-12-20 DE DE112004003142T patent/DE112004003142A5/de not_active Ceased
- 2004-12-20 CN CN2011101002621A patent/CN102193828B/zh not_active Expired - Fee Related
- 2004-12-20 JP JP2006547293A patent/JP4599365B2/ja not_active Expired - Fee Related
- 2004-12-20 CN CN2004800394192A patent/CN1926514B/zh not_active Expired - Fee Related
- 2004-12-20 KR KR1020067012966A patent/KR100856144B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20050193278A1 (en) | 2005-09-01 |
CN102193828B (zh) | 2013-06-12 |
KR100856144B1 (ko) | 2008-09-03 |
CN1926514B (zh) | 2011-06-08 |
WO2006057647A2 (en) | 2006-06-01 |
DE112004003142A5 (de) | 2013-03-21 |
CN1926514A (zh) | 2007-03-07 |
KR20060111626A (ko) | 2006-10-27 |
JP4599365B2 (ja) | 2010-12-15 |
DE112004002505T5 (de) | 2006-11-23 |
JP2007517322A (ja) | 2007-06-28 |
US7797683B2 (en) | 2010-09-14 |
WO2006057647A3 (en) | 2006-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7290261B2 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US7155600B2 (en) | Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor | |
CN100422940C (zh) | 在数据处理系统中仲裁线程访问共享资源的系统和方法 | |
US20040216101A1 (en) | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor | |
US8079031B2 (en) | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric | |
US7318128B1 (en) | Methods and apparatus for selecting processes for execution | |
JP3919764B2 (ja) | 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法 | |
JP5177141B2 (ja) | 演算処理装置、演算処理方法 | |
CN102193828B (zh) | 从处理器中的并发物理线程的数目中去耦合逻辑线程的数目 | |
KR100936601B1 (ko) | 멀티 프로세서 시스템 | |
GB2421328A (en) | Scheduling threads for execution in a multi-threaded processor. | |
US10437638B2 (en) | Method and apparatus for dynamically balancing task processing while maintaining task order | |
US8635621B2 (en) | Method and apparatus to implement software to hardware thread priority | |
IL135459A (en) | Thread switch control in a multi threaded processor system | |
US20050132138A1 (en) | Memory cache bank prediction | |
JP2001350638A (ja) | 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法 | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
CN108549574A (zh) | 线程调度管理方法、装置、计算机设备和存储介质 | |
US8769547B2 (en) | Reduced data transfer during processor context switching | |
EP2159686A1 (en) | Information processor | |
US8869172B2 (en) | Method and system method and system for exception-less system calls for event driven programs | |
US20210096914A1 (en) | Soft watermarking in thread shared resources implemented through thread mediation | |
US20060095905A1 (en) | Method and apparatus for servicing threads within a multi-processor system | |
CN110968418A (zh) | 基于信号-槽的大规模有约束并发任务的调度方法与装置 | |
KR100728899B1 (ko) | 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130612 Termination date: 20181220 |