CN1529845A - 用于解决多线程处理器中指令饥饿的方法及设备 - Google Patents
用于解决多线程处理器中指令饥饿的方法及设备 Download PDFInfo
- Publication number
- CN1529845A CN1529845A CNA028124340A CN02812434A CN1529845A CN 1529845 A CN1529845 A CN 1529845A CN A028124340 A CNA028124340 A CN A028124340A CN 02812434 A CN02812434 A CN 02812434A CN 1529845 A CN1529845 A CN 1529845A
- Authority
- CN
- China
- Prior art keywords
- thread
- instruction
- processor
- hunger
- threshold counter
- 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
- 235000003642 hunger Nutrition 0.000 title claims abstract description 40
- 230000037351 starvation Effects 0.000 title abstract 4
- 238000000034 method Methods 0.000 claims description 26
- 238000003860 storage Methods 0.000 claims description 24
- 230000015572 biosynthetic process Effects 0.000 claims description 15
- 238000005755 formation reaction Methods 0.000 claims 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 240000004859 Gamochaeta purpurea Species 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009466 transformation Effects 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
- 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/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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 or 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
在多线程处理器中,在存储器中设置线程优先级变量。根据本发明的实施例,对几个条件进行监视,以便判断可能正接近指令端饥饿的指示。如果正接近这种饥饿,则根据阈值计数器等的到期来解决所述饥饿。
Description
发明背景
本发明涉及处理器或类似设备的操作。更具体而言,本发明涉及为多线程处理器中的线程解决指令饥饿。
正如本领域所公知的那样,处理器包括各种子模块,每个子模块都适于执行专门任务。在一个公知的处理器中,这些子模块包括以下各项:指令高速缓存器,用于从指令高速缓存器中读取适当指令的取指单元;译码逻辑,其将指令译码为最终格式或中间格式,微操作逻辑,其将中间指令转换成用以执行的最终格式;以及执行单元,其执行最终格式指令(在一些例子中,这些指令来自于译码逻辑,或者在另一些例子中这些指令来自于微操作逻辑)。这里所用的最终格式指令被称为:微操作。
待由处理器执行的程序代码,有时可以被分解成几个较小部分,其称为“线程”。线程是一系列指令,而执行这一系列指令能够完成指定的任务。例如,在视频电话应用中,可以请求处理器执行代码,以处理视频图像数据以及音频数据。可以存在相互独立的代码序列,这些代码序列的执行被设计成处理这些数据类型中的每一种数据。由此,第一线程可包括用于处理视频图像数据的指令,而第二线程可以是用于处理音频数据的指令。换一种方式来讲,线程是自包含程序,所述自包含程序通常与线程标识符相关联,并且当在多线程环境中执行期间,在执行来自于另一线程的指令的同时,能够保持其体系结构状态。
在多数处理器中,线程是由处理器来连续处理的。一般而言,处理线程的认可作法是:已译码的微操作的执行应当优先于新的、未译码指令的提取发生。这是因为已译码的微操作将会被适当地执行,而新的、提取的指令也许会由于例如分支误预测而最终被“杀死”(killed),这种情况是很有可能的。然而,在执行这些微操作之后启动指令提取通常是不受屏蔽的,这造成某一延迟周期以等待译码的指令来再充填执行流水线。因此,执行一个线程的指令会带来负面影响。
在本领域中,已建议使用多线程处理器。在这种处理器中,可以在执行两个或更多线程之间切换。在其它多线程处理器中,可以同时执行线程。在这些处理器的任何一个中,可能没有叙述线程之间是如何处理的。具体而言,为来自一个线程的代码指定同来自另一个线程的代码相同的优先级。 这将会对整个***性能产生负面影响,这在临界代码的执行因执行非临界代码而被挂起或减慢之时尤其如此。特别是,如果已译码的微操作是针对第一线程的,而待提取的指令是针对将要与第一线程同时(或并行)被处理的第二线程的,那么优于新指令的提取而优先选择执行微操作这一认可作法就可能会增加多线程处理器中的负面影响。可能存在这样的情形,即第一线程的处理会阻塞或者会不适当地延迟第二线程的指令提取。对于第二线程而言,这可以称为指令端(Iside:I端)饥饿。
考虑到上述原因,就需要检测并解决多线程处理器中的指令饥饿。
附图简要说明
图1是根据本发明实施例来操作的计算机***的框图。
图2是根据本发明实施例构建的一部分处理器***的框图。
图3是根据本发明实施例检测和解决指令饥饿的状态图。
详细说明
现在参照图1,示出了根据本发明实施例来操作的计算机***的框图。在这个例子中,计算机***1包括:处理器10,它能够执行存储在存储器5中的代码。在此实施例中,存储器5存储几个线程的代码,比如线程0的代码(8)、线程1的代码(9)等。正如本领域所公知的那样,所述两个线程的代码可以是用户应用的一部分,而且适用于操作***。
现在参照图2,示出了根据本发明实施例来操作的处理器***(例如,微处理器、数字信号处理器或类似物)的框图。在这个实施例中,所述处理器是多线程处理器,其中理论上将所述处理器10分成两个或更多逻辑处理器。这里所用的术语“线程”指的是指令代码序列。例如,在视频电话应用中,可以请求处理器执行代码,以处理视频图像数据以及音频数据。可以存在相互独立的代码序列,这些代码序列的执行被设计成处理这些数据类型中的每一种数据。因此,第一线程可包括用于处理视频图像数据的指令,而第二线程可以是用于处理音频数据的指令。在这个例子中,存在一个或多个执行单元(例如,包括执行单元41),所述执行单元可以一次执行一条或多条指令。然而,可以将所述处理器***10视为两个逻辑处理器:执行来自于第一线程的指令的第一逻辑处理器,和执行来自于第二线程的指令的第二逻辑处理器。
在处理器***10的这个实施例中,由取指单元11读取每个线程的指令和/或数据字节,并且把它们提供给队列13并存储为线程0队列或线程1队列的一部分。本领域的技术人员都将认识到:在处理器***10中所使用的队列,可用来存储两个以上的线程。把来自于这两个线程的指令提供给多路复用器(MUX)15,并且利用控制逻辑17来控制是否把来自于线程0还是线程1的指令提供给译码单元21。译码单元21可将一条指令转换成两条或多条微指令,并将这些微指令提供给队列23(在RISC(精简指令集代码)处理器中,这些指令可能已经处于已译码格式,而所述译码单元21将它们转换成执行格式)。把队列23的输出提供给MUX25,所述MUX25根据控制逻辑27的操作、把来自于线程0或线程1的指令提供给重命名/分配单元31。重命名/分配单元31又依次把指令提供给队列33。MUX35根据调度控制逻辑37的操作、在线程0队列与线程1队列之间进行选择,例如所述MUX35可根据执行单元41中的可用资源来从线程0和线程1中选择指令。在此实施例中,把MUX35的输出提供给乱序执行单元41,由所述执行单元41执行所述指令。接着,将所述指令置于队列43中。把队列43的输出提供给MUX45,所述MUX45根据控制逻辑47的操作、将来自于线程0和线程1的指令发送给引退单元51。
在图2中,可以增加分支预测电路来在处理器***10的效率方面提供帮助。例如,可将分支预测电路添加到读取单元11中。正如本领域所公知的那样,与预测有关的分支预测可以把过去执行代码序列的历史作为依据,例如,是否将采取分支指令(例如,若不相等则BNE-分支)。一旦预测到分支,就将下一条指令加载到“流水线”中(例如,作为执行单元41先导的单元),以便于如果像预测的那样采取所述分支,则执行单元就可立即获得所述适当指令。如果分支预测错误,那么所述流水线中的指令也就是错误的,而且必须将其逐出并将适当的指令加载到所述流水线中。
在多线程处理器的一个例子中,可以并行处理两个线程。这里所给出的教导,可将本发明扩展成并行处理三个或更多线程。在这个实施例中,术语“并行”包括:同时和/或连续处理/执行指令。正如这里所使用的那样,当两个线程同时都需要使用同一资源时,利用线程优先级来确定哪个线程可以开始使用共享资源。线程优先级可以由存储在处理器10(例如,在图1的存储区域4中)中的一个或多个信号来指示。例如,线程0优先级和线程1优先级将指示两个线程(线程0或线程1)中的哪一个具备更高的优先级。在一个例子中,如果两个信号都被关断,那么任何一个线程都不具备高于另一线程的优先级。
如上所述,可能会出现这种情形,即第一线程将比另一个线程更有权使用共享资源。例如,第一线程可能具有许多在处理器中执行的已译码的微操作,而同时第二线程正在等待来自于执行第一线程所得到的指定结果。如果第二线程在等待所述结果的同时已经占用许多共享资源,则这可能会严重影响对第一线程的处理,并且有可能会完全阻塞第一线程的处理。例如,由第二线程支配的这一部分资源,可能会有效地阻止提取第一线程的指令。因此,对第一与第二线程的处理的明显拖延,导致了处理器不良的执行性能。作为这个问题的另一种情形,第一线程可能正在执行到高速缓存器的更高级或者主存储器的存储操作,第二线程试图在其中检索指令。通常为存储器的数据操作指定高于同一存储器的指令提取操作的优先级。因此,如果第一线程有大量存储操作要执行,则将会有效阻塞第二线程提取指令以及使执行的进程前进。
根据本发明的实施例,针对任何一个线程检测指令端饥饿。现在参照图3,示出了用于检测和解决I端饥饿的状态图。在一个实施例中,I端可能正接近的指示(即“担忧”I端饥饿),以许多条件的满足为基础。一般而言,I端饥饿是当一线程由于其它线程已有效阻塞它提取指令而不能提取指令的时候。正如这里所用的那样,接近的I端饥饿的指示是这样一种指示,即对于线程而言这种情况可能正在接近。接近的I端饥饿的第一条件就是:比较单线程处理器模式而言,所述处理器是处于多线程处理模式下的,并且一个以上的线程是激活的。在图3中,块101表明处理器是处于单线程(ST)模式下的。这就意味着,控制信号表明:这种模式已被设置、或者处于处理器一次仅处理两个线程的情况下,其中这些线程之一在执行中被暂停。在这种情况下,控制起始于块103(ST模式)。如果由于处理器至少正在尝试从至少第一和第二线程中提取和/或执行指令,因而两个线程都是激活的(块105),那么控制就转移至块107(正常MT(多线程)模式)。如上所指出的那样,线程可能变为指令端饥饿的指示以几个条件的满足为基础。当所有这些条件都满足时(块109),控制移至块111。上述的第一条件就是:处理器处于多线程模式下。其它条件可以包括:
2.考虑中的线程(例如线程0或线程1)在执行流水线中并不具有任何指令(例如,在MUX35处不存在任何指令正在等待调度控制逻辑37来引发其微作被传递到所述执行单元41(图2))。
3.由于考虑中的线程已经填充了所需的资源,因此不阻塞向执行流水线发布新的指令。在这个实施例中,执行流水线包括:来自于MUX35通过执行单元41的指令的处理。例如,所述执行单元41可包括:用于考虑中的线程的并填充有存储指令的存储缓冲器。在这种情况下,线程的处理虽然未必已受到缺乏指令提取的负面影响,但受执行存储指令的延迟的影响。此外,采取措施来增加指令提取,常不会可观地改善线程性能,这是因为缺乏资源可用性常会负面影响这些指令的执行。
4.除考虑中的线程以外的任何线程,均未被给予对处理器部件的完全或独占的访问。在这种情况下,在考虑中的部分线程上的任何指令饥饿,常在意料之中。
5.考虑中的线程处于正试图提取指令的状态下。例如,在包含英特尔公司(Santa Clara,California)所生产的那些处理器的许多处理器当中,包括有“停止时钟(Stop Clock)”管脚。这个管脚上的信号有效,使处理器清除其资源。在这种情况下,可以为考虑中的线程的可执行指令清除所有资源。因此,在这种情况下,常不把指令提取的缺乏视为饥饿。从多线程模式切换到单线程模式是不应当把指令饥饿视为问题时的另一个例子。
6.较高阶性能节约协议是不活动的。例如,如果存在能有效将优先级从一个线程切换为另一个线程的另一种协议,那么连同本发明的指令饥饿处理一起运行这种协议,就可能对处理器性能有负面影响。
7.指令饥饿使能位被设定(即,能由控制逻辑加以设定以关断I端饥饿检测/解决的位)。
8.考虑中的线程当前并未等待着已经离开芯片(go off-chip)的指令提取(例如,离开处理器,比如主存储器)。
在这个实施例中,如果所有被监视的条件都满足,那么就存在一个线程的接近的I端饥饿的指示。尽管在上面显示了八种条件,但是本发明可以扩展到附加条件或较少数条件。例如,接近的I端饥饿的指示,可仅仅以上述条件1、2和5为真作为基础。另外,图3中流程图的实现,可以通过适当配置的控制逻辑来完成(例如,包括在图2中的控制逻辑37)。作为选择,控制逻辑可以是处理器10的子模块,该子模块执行指令以实现图3中的流程图。
现在返回到图3,在这个实施例中,如果所有七个条件都满足,那么控制就传递至块111,所述控制块111意指:线程的指令饥饿可能发生的指示。由此,启动I端饥饿阈值计数器来执行计数操作。在这个实施例中,阈值计数器53(图1)可以是递减计数器,所述计数器根据***时钟、从装入值递减计数到0。例如,待装入此计数器中的值可以通过控制逻辑或在处理器中操作微代码被设定(或通过任何其它硬件或固件加以实现)。如果任何上述条件均不再有效(块112),那么控制就传递至块113,所述块表明不再考虑I端饥饿。如果阈值计数器53达到预定值,(例如,超时或计数降至0)(块114),控制传递至表示指令端饥饿的块115。在这个实施例中,阈值计数器55给考虑中的线程一个机会加载指令,由此否定掉一个或多个上述条件。
根据本发明的实施例,可以解决线程的指令端饥饿,以便恢复为饥饿线程指令提取操作。现在返回到图3,当指令饥饿的线程不具备优先级时,控制停留于块115,(例如,如线程0优先级和线程1优先级信号所示),并且任何锁指令均是激活的(块116)。在这个实施例中,锁指令是需要独占访问存储单元的指令。例如,“原子”操作是这样一种操作,即:在该操作下数据值从存储单元中被获取、修改、继而恢复为相同的存储单元。在这种原子操作中,必须要锁定指定的存储单元,以便于对所述存储单元没有中间访问,直到所述操作结束为止。当给指令饥饿的线程分配了优先级并且没有任何加锁机制是激活之时(块117),控制就传递至块118以主动地解决I端饥饿。在本发明的实施例中,I端饥饿的解决包括一个或多个操作的执行,从而为饥饿的线程提供指令执行。这可以通过执行一个或多个以下操作来实现:
1.将来自于不饥饿的线程的指令从执行流水线移动至临时存储区域(例如,重放队列33a),以供后来执行。作为选择,激活的指令可以被“杀死”并在稍后被重新发布。
2.防止锁指令被从不饥饿的线程启动;
3.逐出高速缓冲存储器当中所有的写回缓冲区,以便于为指令饥饿的线程释放那个资源。
4.为高速缓存器重新设定保留寄存器(例如,除去对可以为不饥饿的线程设置的资源的独占访问);和
5.让控制逻辑37不从不饥饿的线程那里选择指令。
一旦不再满足作为I端饥饿正在接近的指示的所述条件之一,控制继而就移回至块113,以便重置处理器的状态,以表明对任何线程的指令端饥饿不再有任何紧接着的担忧。
利用本发明的方法及设备,就能以有效的方式来检测和解决线程的指令端饥饿。本发明的实施例能显著地降低其确保让没有访问到资源的线程获得访问而占用的时间量。
尽管这里对几个实施例作了具体说明和描述,但是应当认识到,在不脱离本发明精神及既定范围的情况下,上述教导涵盖了本发明的修改及变形并且这些修改及变形皆落入所附权利要求的范围内。
Claims (30)
1.在多线程处理器中,一种分配线程优先级的方法,包括:
判断对于至少两个线程中的第一线程,是否存在接近的指令端饥饿的指示。
2.如权利要求1所述的方法,进一步包括:
响应于所述第一线程的接近的指令端饥饿的指示,设定阈值计数器来执行计数操作。
3.如权利要求2所述的方法,进一步包括:
在所述阈值计数器结束其计数操作之后,解决指令饥饿。
4.如权利要求3所述的方法,其中所述解决指令饥饿包括:
将所述处理器的执行流水线中的指令从第一线程移动至临时存储区域。
5.在操纵至少第一和第二线程的并行处理的处理器中,一种分配线程优先级的方法,包括:
判断所述第一线程的多个条件是否均为真,所述条件包括:
处理器是否正在多线程处理模式下操作;
第一线程是否在所述处理器的执行流水线中没有指令;和
第一线程是否正试图从存储器中提取指令。
6.如权利要求5所述的方法,进一步包括:
如果所述多个指令均为真,则就设定阈值计数器以执行计数操作。
7.如权利要求6所述的方法,进一步包括:
在所述阈值计数器结束其计数操作之后,解决指令饥饿
8.如权利要求5所述的方法,进一步包括:
通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域,来解决所述第一线程的指令饥饿。
9.一种多线程处理器,包括:
第一和第二线程队列;
控制逻辑,其耦合于所述第一和第二线程队列,所述控制逻辑用于判断对于至少第一和第二线程中的第一线程,是否存在接近的指令端饥饿的指示。
10.如权利要求9所述的处理器,进一步包括阈值计数器,用于执行计数操作,其中如果存在所述第一线程的接近的指令端饥饿的指示,则所述控制逻辑就设定所述阈值计数器。
11.如权利要求10所述的处理器,其中所述控制逻辑将在所述阈值计数器结束其计数操作之后解决指令饥饿。
12.如权利要求11所述的处理器,进一步包括执行流水线和临时存储区域,其中所述控制逻辑将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域。
13.一种操纵至少第一和第二线程的并行处理的处理器,包括:
第一和第二线程队列;
控制逻辑,其耦合于所述第一和第二线程队列,所述控制逻辑用于判断指示所述第一线程的接近的指令端饥饿的多个条件是否均为真,所述条件包括:
处理器是否正在多线程处理模式下操作;
第一线程是否在所述处理器的执行流水线中没有指令;和
第一线程是否正试图从存储器中提取指令。
14.如权利要求13所述的处理器,进一步包括阈值计数器,用于执行计数操作,其中如果存在所述第一线程的接近的指令端饥饿的指示,则所述处理器就设定所述阈值计数器。
15.如权利要求14所述的处理器,其中所述处理器将在所述阈值计数器结束其计数操作之后解决指令饥饿。
16.如权利要求15所述的处理器,进一步包括执行流水线和临时存储区域,其中所述处理器通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域来解决所述第一线程的指令饥饿。
17.一种操纵至少第一和第二线程的并行处理的计算机***,包括:
存储器,用于存储第一和第二线程的指令;
处理器,其耦合于所述存储器,并且包括:
第一和第二线程队列,用于存储来自于所述第一和第二线程的指令;
控制逻辑,其耦合于所述第一和第二线程队列,所述控制逻辑用于判断是否存在所述第一线程的接近的指令端饥饿的指示。
18.如权利要求17所述的计算机***,其中所述处理器进一步包括阈值计数器,用于执行计数操作,其中如果存在所述第一线程的接近的指令端饥饿的指示,则所述控制逻辑就设定所述阈值计数器。
19.如权利要求18所述的计算机***,其中所述控制逻辑将在所述阈值计数器结束其计数操作之后解决指令饥饿。
20.如权利要求19所述的计算机***,其中所述处理器进一步包括执行流水线和临时存储区域,其中所述控制逻辑用于将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域。
21.一种操纵至少第一和第二线程的并行处理的计算机***,包括:
存储器,用于存储第一和第二线程的指令;
处理器,其耦合于所述存储器,并且包括:
第一和第二线程队列,用于存储来自于所述第一和第二线程的指令;
控制逻辑,其耦合于所述第一和第二线程队列,所述控制逻辑用于判断是否指示所述第一线程的接近的指令端饥饿的多个条件均为真,所述条件包括:
处理器是否正在多线程处理模式下操作;
第一线程是否在所述处理器的执行流水线中没有指令;和
第一线程是否正试图从存储器中读取指令。
22.如权利要求21所述的计算机***,其中所述处理器进一步包括阈值计数器,以用于执行计数操作,其中如果存在所述第一线程的接近的指令端饥饿的指示,则所述处理器就设定所述阈值计数器。
23.如权利要求22所述的计算机***,其中所述处理器将在所述阈值计数器结束其计数操作之后解决指令饥饿。
24.如权利要求23所述的计算机***,进一步包括执行流水线和临时存储区域,其中所述处理器通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域来解决所述第一线程的指令饥饿。
25.一种驻留在存储介质中的指令集,所述指令集能由处理器来执行,以操纵至少第一和第二线程的并行处理,并分配线程优先级,包括:
判断是否存在所述第一线程的接近的指令端饥饿的指示。
26.如权利要求25所述的指令集,其中所述方法进一步包括:如果存在所述第一线程的接近的指令端饥饿的指示,则就设定阈值计数器以执行计数操作。
27.如权利要求26所述的指令集,其中所述方法进一步包括:在所述阈值计数器结束其计数操作之后解决指令饥饿。
28.如权利要求27所述的指令集,其中所述解决指令饥饿包括:将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域。
29.如权利要求25所述的指令集,其中判断是否存在所述第一线程的接近的指令端饥饿的指示包括判断是否多个条件均为真,所述条件包括:
处理器是否正在多线程处理模式下操作;
第一线程是否在所述处理器的执行流水线中没有指令;和
第一线程是否正试图从存储器中提取指令。
30.如权利要求29所述的指令集,其中所述方法进一步包括:通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域,来解决所述第一线程的指令饥饿。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/888,274 | 2001-06-22 | ||
US09/888,274 US6651158B2 (en) | 2001-06-22 | 2001-06-22 | Determination of approaching instruction starvation of threads based on a plurality of conditions |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100488590A Division CN100524205C (zh) | 2001-06-22 | 2002-04-18 | 用于解决多线程处理器中指令饥饿的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1529845A true CN1529845A (zh) | 2004-09-15 |
CN100557564C CN100557564C (zh) | 2009-11-04 |
Family
ID=25392897
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100488590A Expired - Fee Related CN100524205C (zh) | 2001-06-22 | 2002-04-18 | 用于解决多线程处理器中指令饥饿的方法及设备 |
CNB028124340A Expired - Fee Related CN100557564C (zh) | 2001-06-22 | 2002-04-18 | 分配优先级的方法和多线程处理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100488590A Expired - Fee Related CN100524205C (zh) | 2001-06-22 | 2002-04-18 | 用于解决多线程处理器中指令饥饿的方法及设备 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6651158B2 (zh) |
EP (3) | EP1399810B1 (zh) |
CN (2) | CN100524205C (zh) |
BR (1) | BR0210938A (zh) |
HK (1) | HK1069648A1 (zh) |
WO (1) | WO2003001368A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031877B (zh) * | 2004-09-23 | 2010-05-05 | 英特尔公司 | 线程活锁单元 |
CN112764904A (zh) * | 2021-01-22 | 2021-05-07 | 珠海亿智电子科技有限公司 | 基于多任务***中防止低优先级任务饿死的方法 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7518993B1 (en) * | 1999-11-19 | 2009-04-14 | The United States Of America As Represented By The Secretary Of The Navy | Prioritizing resource utilization in multi-thread computing system |
US6954846B2 (en) * | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
US7065596B2 (en) * | 2002-09-19 | 2006-06-20 | Intel Corporation | Method and apparatus to resolve instruction starvation |
GB2395307A (en) * | 2002-11-15 | 2004-05-19 | Quadrics Ltd | Virtual to physical memory mapping in network interfaces |
US7013400B2 (en) * | 2003-04-24 | 2006-03-14 | International Business Machines Corporation | Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode |
US20040216103A1 (en) * | 2003-04-24 | 2004-10-28 | International Business Machines Corporation | Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment |
US7614056B1 (en) | 2003-09-12 | 2009-11-03 | Sun Microsystems, Inc. | Processor specific dispatching in a heterogeneous configuration |
US7363369B2 (en) * | 2003-10-16 | 2008-04-22 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
US7263599B2 (en) * | 2004-02-06 | 2007-08-28 | Infineon Technologies | Thread ID in a multithreaded processor |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
US7890734B2 (en) | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US7861063B1 (en) * | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7353364B1 (en) * | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7733898B2 (en) * | 2004-08-25 | 2010-06-08 | Intel Corporation | Method and apparatus for preventing starvation in a slotted-ring network |
US9626194B2 (en) | 2004-09-23 | 2017-04-18 | Intel Corporation | Thread livelock unit |
US7765547B2 (en) * | 2004-11-24 | 2010-07-27 | Maxim Integrated Products, Inc. | Hardware multithreading systems with state registers having thread profiling data |
US7434033B2 (en) * | 2006-04-14 | 2008-10-07 | International Business Machines Corporation | Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
US7437539B2 (en) * | 2006-04-14 | 2008-10-14 | International Business Machines Corporation | Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline |
US20080263379A1 (en) * | 2007-04-17 | 2008-10-23 | Advanced Micro Devices, Inc. | Watchdog timer device and methods thereof |
WO2008155797A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 演算装置 |
US8260990B2 (en) * | 2007-11-19 | 2012-09-04 | Qualcomm Incorporated | Selective preclusion of a bus access request |
US7559061B1 (en) * | 2008-03-16 | 2009-07-07 | International Business Machines Corporation | Simultaneous multi-threading control monitor |
US9395983B2 (en) * | 2008-08-20 | 2016-07-19 | Freescale Semiconductor, Inc. | Debug instruction for execution by a first thread to generate a debug event in a second thread to cause a halting operation |
US8365177B2 (en) * | 2009-01-20 | 2013-01-29 | Oracle International Corporation | Dynamically monitoring and rebalancing resource allocation of monitored processes based on execution rates of measuring processes at multiple priority levels |
US8695002B2 (en) * | 2009-10-20 | 2014-04-08 | Lantiq Deutschland Gmbh | Multi-threaded processors and multi-processor systems comprising shared resources |
US8560814B2 (en) * | 2010-05-04 | 2013-10-15 | Oracle International Corporation | Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations |
US9639396B2 (en) | 2014-09-16 | 2017-05-02 | Nxp Usa, Inc. | Starvation control in a data processing system |
US9940264B2 (en) * | 2014-10-10 | 2018-04-10 | International Business Machines Corporation | Load and store ordering for a strongly ordered simultaneous multithreading core |
US9348658B1 (en) * | 2014-12-12 | 2016-05-24 | Intel Corporation | Technologies for efficient synchronization barriers with work stealing support |
US11671382B2 (en) * | 2016-06-17 | 2023-06-06 | Intel Corporation | Technologies for coordinating access to data packets in a memory |
WO2019017947A1 (en) * | 2017-07-20 | 2019-01-24 | Hewlett-Packard Development Company, L.P. | PERFORMANCE PREDICTION OF A COMPUTER SYSTEM |
CN110995781B (zh) * | 2019-11-01 | 2022-01-11 | 腾讯科技(深圳)有限公司 | 点赞信息处理方法、装置及*** |
CN111913809B (zh) * | 2020-07-28 | 2024-03-19 | 阿波罗智能技术(北京)有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
US11940928B2 (en) * | 2022-08-29 | 2024-03-26 | Micron Technology, Inc. | Parking threads in barrel processor for managing cache eviction requests |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220653A (en) | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
DE69429204T2 (de) | 1993-03-26 | 2002-07-25 | Cabletron Systems Inc | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6542921B1 (en) * | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6748593B1 (en) * | 2000-02-17 | 2004-06-08 | International Business Machines Corporation | Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system |
-
2001
- 2001-06-22 US US09/888,274 patent/US6651158B2/en not_active Expired - Lifetime
-
2002
- 2002-04-18 CN CNB2005100488590A patent/CN100524205C/zh not_active Expired - Fee Related
- 2002-04-18 WO PCT/US2002/012340 patent/WO2003001368A1/en not_active Application Discontinuation
- 2002-04-18 EP EP02723907.8A patent/EP1399810B1/en not_active Expired - Lifetime
- 2002-04-18 CN CNB028124340A patent/CN100557564C/zh not_active Expired - Fee Related
- 2002-04-18 EP EP10196212.4A patent/EP2339454B1/en not_active Expired - Lifetime
- 2002-04-18 EP EP17170628.6A patent/EP3236349A1/en not_active Ceased
- 2002-04-18 BR BR0210938-7A patent/BR0210938A/pt not_active Application Discontinuation
-
2003
- 2003-10-10 US US10/682,427 patent/US7010669B2/en not_active Expired - Lifetime
-
2005
- 2005-03-11 HK HK05102172.1A patent/HK1069648A1/xx not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031877B (zh) * | 2004-09-23 | 2010-05-05 | 英特尔公司 | 线程活锁单元 |
CN101334721B (zh) * | 2004-09-23 | 2013-06-19 | 英特尔公司 | 线程活锁单元 |
CN112764904A (zh) * | 2021-01-22 | 2021-05-07 | 珠海亿智电子科技有限公司 | 基于多任务***中防止低优先级任务饿死的方法 |
Also Published As
Publication number | Publication date |
---|---|
US6651158B2 (en) | 2003-11-18 |
CN100524205C (zh) | 2009-08-05 |
EP1399810B1 (en) | 2017-05-17 |
EP2339454A3 (en) | 2011-07-20 |
WO2003001368A1 (en) | 2003-01-03 |
EP2339454A2 (en) | 2011-06-29 |
EP3236349A1 (en) | 2017-10-25 |
EP1399810A1 (en) | 2004-03-24 |
BR0210938A (pt) | 2004-06-08 |
CN1811699A (zh) | 2006-08-02 |
US20020199089A1 (en) | 2002-12-26 |
US7010669B2 (en) | 2006-03-07 |
HK1069648A1 (en) | 2005-05-27 |
EP2339454B1 (en) | 2013-10-16 |
US20040078794A1 (en) | 2004-04-22 |
CN100557564C (zh) | 2009-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100524205C (zh) | 用于解决多线程处理器中指令饥饿的方法及设备 | |
RU2271035C2 (ru) | Способ и устройство для приостановки режима выполнения в процессоре | |
KR101100145B1 (ko) | 명령실행 제어장치 및 명령실행 제어방법 | |
US7155600B2 (en) | Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor | |
US8516024B2 (en) | Establishing thread priority in a processor or the like | |
EP0827071B1 (en) | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream | |
US7877583B2 (en) | Method and apparatus for assigning thread priority in a processor or the like | |
US7134002B2 (en) | Apparatus and method for switching threads in multi-threading processors | |
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
US8195922B2 (en) | System for dynamically allocating processing time to multiple threads | |
US20040216101A1 (en) | Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor | |
CN101529383A (zh) | 任务处理装置 | |
JPH10124316A (ja) | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ | |
US6961847B2 (en) | Method and apparatus for controlling execution of speculations in a processor based on monitoring power consumption | |
CN102436393A (zh) | 任务处理装置 | |
US7430737B2 (en) | Processor and method for supporting compiler directed multithreading management | |
US20050138333A1 (en) | Thread switching mechanism | |
GB2410104A (en) | Method and apparatus for assigning thread priority in a multi-threaded processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1069648 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1069648 Country of ref document: HK |
|
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: 20091104 Termination date: 20210418 |