当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于解决多线程处理器中指令饥饿的方法及设备技术

技术编号:2851035 阅读:303 留言:1更新日期:2012-04-11 18:40
在多线程处理器中,在存储器中设置线程优先级变量。根据本发明专利技术的实施例,对几个条件进行监视,以便判断可能正接近指令端饥饿的指示。如果正接近这种饥饿,则根据阈值计数器等的到期来解决所述饥饿。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

技术介绍
本专利技术涉及处理器或类似设备的操作。更具体而言,本专利技术涉及为多线程处理器中的线程解决指令饥饿。正如本领域所公知的那样,处理器包括各种子模块,每个子模块都适于执行专门任务。在一个公知的处理器中,这些子模块包括以下各项指令高速缓存器,用于从指令高速缓存器中读取适当指令的取指单元;译码逻辑,其将指令译码为最终格式或中间格式,微操作逻辑,其将中间指令转换成用以执行的最终格式;以及执行单元,其执行最终格式指令(在一些例子中,这些指令来自于译码逻辑,或者在另一些例子中这些指令来自于微操作逻辑)。这里所用的最终格式指令被称为微操作。待由处理器执行的程序代码,有时可以被分解成几个较小部分,其称为“线程”。线程是一系列指令,而执行这一系列指令能够完成指定的任务。例如,在视频电话应用中,可以请求处理器执行代码,以处理视频图像数据以及音频数据。可以存在相互独立的代码序列,这些代码序列的执行被设计成处理这些数据类型中的每一种数据。由此,第一线程可包括用于处理视频图像数据的指令,而第二线程可以是用于处理音频数据的指令。换一种方式来讲,线程是自包含程序,所述自包含程序通常与线程标识符相关联,并且当在多线程环境中执行期间,在执行来自于另一线程的指令的同时,能够保持其体系结构状态。在多数处理器中,线程是由处理器来连续处理的。一般而言,处理线程的认可作法是已译码的微操作的执行应当优先于新的、未译码指令的提取发生。这是因为已译码的微操作将会被适当地执行,而新的、提取的指令也许会由于例如分支误预测而最终被“杀死”(killed),这种情况是很有可能的。然而,在执行这些微操作之后启动指令提取通常是不受屏蔽的,这造成某一延迟周期以等待译码的指令来再充填执行流水线。因此,执行一个线程的指令会带来负面影响。在本领域中,已建议使用多线程处理器。在这种处理器中,可以在执行两个或更多线程之间切换。在其它多线程处理器中,可以同时执行线程。在这些处理器的任何一个中,可能没有叙述线程之间是如何处理的。具体而言,为来自一个线程的代码指定同来自另一个线程的代码相同的优先级。这将会对整个系统性能产生负面影响,这在临界代码的执行因执行非临界代码而被挂起或减慢之时尤其如此。特别是,如果已译码的微操作是针对第一线程的,而待提取的指令是针对将要与第一线程同时(或并行)被处理的第二线程的,那么优于新指令的提取而优先选择执行微操作这一认可作法就可能会增加多线程处理器中的负面影响。可能存在这样的情形,即第一线程的处理会阻塞或者会不适当地延迟第二线程的指令提取。对于第二线程而言,这可以称为指令端(IsideI端)饥饿。考虑到上述原因,就需要检测并解决多线程处理器中的指令饥饿。附图简要说明附图说明图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的输出提供给MUX 25,所述MUX 25根据控制逻辑27的操作、把来自于线程0或线程1的指令提供给重命名/分配单元31。重命名/分配单元31又依次把指令提供给队列33。MUX 35根据调度控制逻辑37的操作、在线程0队列与线程1队列之间进行选择,例如所述MUX 35可根据执行单元41中的可用资源来从线程0和线程1中选择指令。在此实施例中,把MUX 35的输出提供给乱序执行单元41,由所述执行单元41执行所述指令。接着,将所述指令置于队列43中。把队列43的输出提供给MUX 45,所述MUX 45根据控制逻辑47的操作、将来自于线程0和线程1的指令发送给引退单元51。在图2中,可以增加分支预测电路来在处理器系统10的效率方面提供帮助。例如,可将分支预测电路添加到取指单元11中。正如本领域所公知的那样,与预测有关的分支预测可以把过去执行代码序列的历史作为依据,例如,是否将采取分支指令(例如,若不相等则BNE-分支)。一旦预测到分支,就将下一条指令加载到“流水线”中(例如,作为执行单元41先导的单元),以便于如果像预测的那样采取所述分支,则执行单元就可立即获得所述适当指令。如果分支预测错误,那么所述流水线中的指令也就是错误的,而且必须将其逐出并将适当的指令加载到所述流水线中。在多线程处理器的一个例子中,可以并行处理两个线程。这里所给出的教导,可将本专利技术扩展成并行处理三个或更多线程。在这个实施例中,术语“并行”包括同时和/或连续处理/执行指令。正如这里所使用的那样,当两个线程同时都需要使用同一资源时,利用线程优先级来确定哪个线程可以开始使用共享资源。线程优先级可以由存储在处理器10(例如,在图1的存储区域4中)中的一个或多个信号来指示。例如,线程0优先级和线程1优先级将指示两个线程(线程0或线程1)中的哪一个具备更高的优先级。在一个例子中,如果两个信号都被关断,那么任何一个线程都不具备高于另一线程的优先级。如上所述,可能会出现这种情形,即第一线程将比另一个线程更有权使用共享资源。例如,第一线程可能具有许多在处理器中执行的已译码的微操作,而同时第二线程正在等待来自于执行第一线程所得到的指定结果。如果第二线程在等待所述结果的同时已经占用许多共享资源,则这可能会严重影响对第一线程的处理,并且有可能会完全阻塞第一线程的处理。例如,由第二线程支配的这一本文档来自技高网...

【技术保护点】
一种在操纵至少第一和第二线程的并行处理的处理器中判断是否有接近指令端饥饿的指示的方法,包括:判断第一线程的多个条件是否均为真,所述条件包括:所述处理器是否正在多线程处理模式下操作;第一线程是否在所述处理器的执行流水线 中没有指令;和第一线程是否正试图从存储器中提取指令;如果所述多个条件均为真,则就判断存在所述第一线程的接近指令端饥饿的指示。

【技术特征摘要】
US 2001-6-22 09/8882741.一种在操纵至少第一和第二线程的并行处理的处理器中判断是否有接近指令端饥饿的指示的方法,包括判断第一线程的多个条件是否均为真,所述条件包括所述处理器是否正在多线程处理模式下操作;第一线程是否在所述处理器的执行流水线中没有指令;和第一线程是否正试图从存储器中提取指令;如果所述多个条件均为真,则就判断存在所述第一线程的接近指令端饥饿的指示。2.如权利要求1所述的方法,进一步包括如果所述多个条件均为真,则就设定阈值计数器以执行计数操作。3.如权利要求2所述的方法,进一步包括在所述阈值计数器结束其计数操作之后,解决指令饥饿。4.如权利要求1所述的方法,进一步包括通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域,来解决所述第一线程的指令饥饿。5.一种用于在多线程处理器中分配线程优先级的方法,包括判断在所述处理器中是否存在多个条件;根据所述多个条件的满足情况,判断是否存在至少两个线程中的第一线程的接近指令端饥饿的指示。6.如权利要求5所述的方法,进一步包括响应于所述第一线程的接近指令端饥饿的指示,设定阈值计数器来执行计数操作.7.如权利要求6所述的方法,进一步包括在所述阈值计数器结束其计数操作之后,解决指令饥饿。8.如权利要求7所述的方法,其中所述解决指令饥饿包括将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域。9.一种用于在操纵至少第一和第二线程的并行处理的处理器中分配线程优先级的方法,包括判断所述第一线程的多个条件是否均为真,所述条件包括处理器是否正在多线程处理模式下操作;第一线程是否在所述处理器的执行流水线中没有指令;和第一线程是否正试图从存储器中提取指令;当所述多个条件均为真时,就判断出存在所述第一线程的接近指令端饥饿的指示。10.如权利要求9所述的方法,进一步包括如果所述多个指令均为真,则就设定阈值计数器以执行计数操作。11.如权利要求10所述的方法,进一步包括在所述阈值计数器结束其计数操作之后,解决指令饥饿。12.如权利要求9所述的方法,进一步包括通过将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域,来解决所述第一线程的指令饥饿。13.一种多线程处理器,包括第一和第二线程队列;控制逻辑,其耦合于所述第一和第二线程队列,所述控制逻辑用于判断在所述处理器中是否存在多个条件,并且根据所述多个条件的满足情况,判断是否存在至少第一线程和第二线程中的第一线程的接近指令端饥饿的指示。14.如权利要求13所述的处理器,进一步包括阈值计数器,用于执行计数操作,其中如果存在所述第一线程的接近指令端饥饿的指示,则所述控制逻辑就设定所述阈值计数器。15.如权利要求14所述的处理器,其中所述控制逻辑将在所述阈值计数器结束其计数操作之后解决指令饥饿。16.如权利要求15所述的处理器,进一步包括执行流水线和临时存储区域,其中所述控制逻辑将所述处理器的执行流水线中的指令从第二线程移动至临时存储区域。17....

【专利技术属性】
技术研发人员:D博格斯A凯克M乌普顿J阿伦D博恩斯
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有1条评论
  • 来自[未知地区] 2014年12月15日 14:41
    饿è基本字义1.肚子饥饿想吃东西与饱相对我不~你吃吧饥~~殍饿死的人2.使受饿注意别~坏了[1]
    0
1