用于多线程处理器的线程去加重指令的制作方法

文档序号:6477138阅读:129来源:国知局
专利名称:用于多线程处理器的线程去加重指令的制作方法
技术领域
本发明涉及多线程处理器,并且尤其涉及多线程处理器的线
程管理。
背景技术
由于高速缓存未命中(cache misses)或其他存储器事务而引发的指令流水线停止(stall),可能降低处理器的效率。该问题在多线程处理器中尤为严重,由于一个线程引起的指令流水线停止可能延迟其他线程的执行。有些处理器独立于程序流对停止的指令流水线进行监视,并且响应于停止,而许可除了引起停止的线程之外的线程在流水线中被执行的优先级。然而,在指令流水线中监视停止通常是困难的,并且需要额外的处理器开销。因此,需要一种改进的技术,用于在多线程处理器中向线程分配处理器资源。


图1是数据处理设备的具体实施例的框图2是图1中处理器的具体实施例的框图3是图2中线程优先级模块的具体实施例的框图4是描述调度线程的方法的具体实施例的图表;
图5是描述调度线程的方法的另一具体实施例的图表;以及[OOOS]图6是描述调度线程的示例方法的具体实施例的图表。
具体实施例方式公开了一种在处理器中调度线程的执行的技术。该技术包括执行线程的线程去加重(de-emphasis)指令,其对线程进行去加重,直到与线程相关联的未决存储器事务,诸如高速缓存未命中,的数目等于或小于阈值。当线程被去加重时,在处理器中具有较高优先级的其他线程可以被执行或被指配系统资源。因此,降低了处理器中停止的可能性。在一个实施例中,线程去加重指令是程序流中的这样一种指令该指令在与第一线程相关联的未决存储器事务的数目超过阈值时,通过改变第一线程的优先级状况来对第一线程进行去加重。 一旦未决存储器事务的数目等于或低于阈值,即可以恢复第一线程的优先级状
况。阈值可以基于线程去加重指令的操作对象(opemnd),或可以基于预定值。在具体实施例中,阈值是零,从而线程去加重指令对线程进行去加重,直到已经解决了所有与线程相关联的未决存储器事务。例如,可以针对特定的存储器事务类型对线程进行去加重。线程去加重指令可以基于与线程相关联的高速缓存未命中数目来对该线程进行去加重。另一种线程去加重指令可以基于与线程相关联的不可高速缓存的存储器访问的数目(即,对标识为不可高速缓存的地址进行的存储器访问的数目)来对线程进行去加重。可替代实施例可以基于除了存储器事务的数目之外的特性来对线程进行去加重。此外,可替代实施例可以通过改变除了线程优先级状况之外的线程特性,诸如改变与线程相关联的"可直接运行(ready-to-mn)"比特,来对线程进行去加重。相比其他线程,去加重线程被给予较低的处理器资源优先级。例如,如果处理器采用粗粒度多线程,使得在某一时间只有一个线程被指配到指令流水线,那么去加重线程将不会在指令流水线中被执行,直到它相对其他线程不再被去加重。如果处理器采用细粒度多线程,使得在某一时间与不同线程相关联的指令可以在指令流水线的不同级被执行,那么与去加重程序相关联的指令不在指令流水线的特定级被执行,直到执行了与在该级未决的较高优先级的线程相关联的指令。此外,在指令流水线的某些级,去加重线程可以比其他线程具有更低的优先级,但在其他级仍保持其优先级。去加重线程也可以在其他处理器资源的分配中被给予较低的优先级。例如,针对高速缓存访问、存储队列访问、完成缓冲条目、指令获取等,去加重线程可被给予较低的优先级。此外,线程可以相对于某些线程被去加重,但相对于其他线程仍维持优先级。参考图1,描述了数据处理设备100的具体实施例的框图。数据处理设备IOO包括处理器102、存储器控制器104、以及存储器106。处理器102和存储器控制器分别连接到总线105。存储器106包括与存储器控制器104的双向连接。存储器控制器104经由总线105接收存储器访问信息,并且基于该信息来访问存储器106。存储器106可以存储软件程序和例程,其包括用于在处理器102中执行的指令。存储器106可以是易失性存储器,诸如RAM存储器,或非易失性存储器,诸如闪速存储器或硬盘驱动器。在特定实施例中,存储器106和存储器控制器104集成在与处理器102相同的半导体衬底上。在另一具体实施例中,存储器106处在与处理器102和存储器控制器104分离的半导体衬底上。处理器102可以是微处理器、微控制器、ASIC等等。该处理器102是多线程处理器,其被配置用于执行多个线程。线程可以与不同的软件程序或例程相关联,或者可以与单个软件程序或程序或其组合的不同任务相关联。在图1所示的实施例中,处理器102包括指令高速缓存110、线程控制模块!12、指令流水线U4和数据高速缓存116。指令高速缓存110对于指令流水线114和线程控制模块112是可访问的。指令流水线U4对于线程控制模块112是可访问的。此外,数据高速缓存116对于指令流水线114是可访问的。
8
指令高速缓存IIO存储指令数据,该指令数据表示要在处理器102中执行的指令。高速缓存的指令数据可以是存储在存储器106中的软件程序数据的拷贝。指令流水线U4执行指令,以执行任务,诸如存储器访问、算术运算等等。例如,响应于特定的指令,指令流水线114可以访问数据高速缓存116以检索数据。响应于另一指令,指令流水线114可以经由存储器控制器104从存储器106中请求数据,并将请求的数据存储在数据高速缓存116中。线程控制模块112存储用于指示每个线程的状况的状态信息,包括每个线程的优先级状况。基于每个线程的优先级状况和其他属性,线程控制模块112分配处理器102的资源,诸如通过调度在指令流水线114中执行线程的顺序。线程控制模块112也跟踪与每个线程相关联的未决存储器事务的数目。指令高速缓存IIO包括明确的线程去加重指令120。在线程去加重指令120的执行过程中,指令流水线114通知线程控制模块112,
第--线程的优先级应该已被去加重,直到与第一线程相关联的未决存储器事务的数目等于或低于阈值。在特定实施例中,线程去加重指令i20具有无操作(no-op)指令的特殊形式,其指示线程应被去加重,直到没有与该线程相关联的存储器事务是未决的。响应于指令流水线114中线程去加重指令120的执行,线程控制模块112调整第一线程的优先级状态,以相对于其他线程对该线程进行去加重。在特定实施例中,这是通过清除与该线程相关联的"可直接运行"比特来实现的。只要该比特被清除,该线程将被给予低的执行优先级。即使当该比特被清除时,线程控制模块仍可以针对该线程跟踪其他的优先级信息,使得当可直接运行比特被设置时,给予该线程适当的优先级。此外,线程控制模块112监视指令流水线114,并且跟踪与第一线程相关联的未决存储器事务的数目。 一旦已经解决了由线程去加重指令120指示的未决存储器事务的数目,线程控制模块112即设置优先级状态使得第一线程不再被去加重。因此,线程去加重指令120可用于对特定的线程进行去加重,直到与该线程相关联的存储器事务数目等于或低于阈值。这允许程序员或编译器有效地分配指令流水线114的资源。例如,线程去加重指令120可以在用户认为将导致指令流水线114的停止的指令之后或之前的线程的程序流中实施,诸如在一系列加载指令之后,其可导致大量的高速缓存未命中。线程被去加重,直到解决了与加载指令相关联的存储器事务,当存储器事务正在解决时,允许指令流水线114执行与其他线程相关联的指令。参考图2,示出了对应于诸如图1的处理器102的处理器的处理器202的框图。处理器202包括指令高速缓存210、线程控制模块212、指令流水线214和数据高速缓存216。指令高速缓存210可由线程控制模块212经由总线296访问以及可由指令流水线214访问。数据高速缓存216可由指令流水线214访问。指令高速缓存210包括与线程相关联的指令集合,包括线程A指令221和线程B指令222。线程A指令221包括线程去加重指令220,以相对于线程B对线程A进行去加重,直到与线程A相关联的未决存储器事务已经得到解决。线程控制模块212包括连接到线程优先级模块235的线程调度器模块230。线程优先级模块235包括连接到总线290的输入,以接收已经完成了线程的存储器事务的指示。该线程调度器模块230包括连接到总线291、总线292、总线293、总线294、总线295及总线296的输出。该线程调度器模块230在每个总线291-296上提供控制信息,用于在指令流水线214的各级调度指令的执行。线程优先级模块235针对处理器202中的每个线程存储优先级状态信息,包括线程A和线程B,并且基于优先级状态信息,将优先级状况信息提供给线程调度器模块230。基于优先级状况信息,线程调度器模块230在总线291-296上提供控制信息,用于在指令流水线214的各级调度指令的执行。指令流水线214包括指令获取级240、解码级242、调遣级244和加载/存储单元246、执行单元248和执行单元249。执行单元248和249可以是加载/存储单元、浮点运算单元、整数运算单元等等。指令流水线214还包括缓冲器250-254。指令获取级240包括连接到指令高速缓存210的输入和输出。缓冲器250包括连接到指令获取级240的输出的输入、连接到总线295的输入、和输出。解码级242包括连接到缓冲器250的输入和输出。缓冲器251包括连接到解码级240的输出的输入、连接到总线294的输入、和输出。调遣级244包括连接到缓冲器251的输出的输入和三个输出。缓冲器252包括连接到调遣级244的第一输出的输入、连接到总线292的输入、和输出。加载/存储单元246包括连接到缓冲器251的输出的输入、至总线290的连接和至数据高速缓存216的连接。缓冲器253包括连接到调遣级244的第二输出的输入、连接到总线293的输入、和输出。执行单元248包括连接到缓冲器253的输出的输入。缓冲器254包括连接到调遣级244的第三输出的输入、连接到总线291的输入、和输出。执行单元249包括连接到缓冲器254的输出的输入。
指令获取级240从指令高速缓存210获取指令数据并且向缓冲器250提供所获取的指令数据。基于经由总线293接收到的控制信息,解码部分242访问来自缓冲器250的指令。解码级242对在缓冲器250中访问的指令进行解码,并将解码指令提供给缓冲器251。基于经由总线292接收到的控制信息,调遣级访问在缓冲器251中的解码指令。调遣级244确定加载/存储单元246、执行单元248、和执行单元249中的哪个执行单元,并基于该确定将解码指令发送到缓冲器252-254之一。缓冲器252存储由调遣级244提供的解码指令。基于经由总线292提供的控制信息,加载/存储单元246访问解码指令。基于从缓冲器252接收到的指令,加载/存储单元246在数据高速缓存216处执行加载和存储操作。此外,加载/存储单元可对处理器202外部的存储器执行加载和存储操作。例如,当数据高速缓存216处发生高速缓存未命中时,加载/存储单元通过从数据高速缓存216的外部存储器加载与高速缓存未命中相关联的数据来解决高速缓存未命中。而且,加载/存储经由总线2 90提供关于每个线程的未决存储器事务的信息。例如,在与某线程相关联的高速缓存未命中得到解决之后,加载/存储单元246经由总线290提供这样的信息该信息指示与该线程相关联的未决高速缓存未命中的数目已减小了一。缓冲器253存储由调遣级244提供的解码指令。基于经由总线293提供的控制信息,执行单元248访问解码指令。执行单元248执行由缓冲器253提供的指令。缓冲器254存储由调遣级244提供的解码指令。基于经由总线291提供的控制信息,执行单元249访问解码指令。执行单元249执行在缓冲器254中访问的指令。在操作过程中,线程调度器模块230从线程优先级模块235接收优先级信息。基于该优先级信息,线程调度器模块230向缓冲器250-254以及指令高速缓存210提供控制信息,以控制处理器资源的分配,包括在指令流水线214的每级执行线程指令的顺序。例如,基于接收到的优先级信息,线程调度器模块230可以确定在解码级242中,应当给予线程A指令221比线程B指令222高的优先级。因此,线程调度器模块230经由总线295向缓冲器250提供控制信息,使得存储在缓冲器250中的线程A指令在存储在缓冲器250的线程B指令被提供之前被提供给解码级242。因此,通过向指令高速缓存210和缓冲器250-254提供适当控制信息,线程调度器模块230控制在指令流水线214的每级执行线程指令的顺序。线程调度器模块230基于存储在线程优先级模块235中的优先级信息,确定线程指令的执行顺序。在加载/存储单元246中通过执行线程去加重指令220,可以改变线程优先级信息。响应于线程去加重指令220的执行,加载/存储单元246向线程优先级模块235提供这样的信息该信息指示线程A应被去加重,直到与该线程相关联的未决存储器事务数目低于阈值。加载/存储单元246也可以基于线程去加重指令220的操作对象,提供用于设置该阈值的信息。作为响应,线程优先级模块235确定与线程A相关联的未决存储器事务的数目,并且如果该数目超过阈值,则改变与线程A相关联的优先级状态,以便使其相对于线程B去加重。当加载/存储单元246解决了与线程A相关联的未决存储器事务时,它经由总线2卯通知线程优先级模块235。作为响应,线程优先级模块235调整与线程A相关联的未决存储器事务的数目,并且当存储器事务的数目低于阈值时,调整线程A的优先级状态,以使它相对于线程B不再被去加重。因此,当未决存储器事务的数目下滑至低于阈值时,线程A的优先级状况自动恢复到其以前的状况。参考图3,图3示出对应于图2的线程优先级模块235的线
13程优先级模块335的框图。线程优先级模块335包括存储器事务控制 模块302、存储器事务寄存器集合304、存储器事务计数器集合306、 优先级状况寄存器集合308、和优先级确定模块310。存储器事务控制 模块302包括至存储器事务寄存器集合304以及至存储器事务计数器 集合306的双向连接。存储器事务控制模块还包括来自加载/存储单元 246 (图2)的输入和输出。优先级状况寄存器集合308包括连接到存 储器事务控制模块302的输出的输入和输出。优先级确定模块310包 括连接到优先级状况寄存器集合308的输出的输入和连接到线程调度 器模块230的输出(图2)。存储器事务控制模块302被配置用于接收来自加载/存储单 元246的控制信息,并且基于该信息对存储在存储器事务寄存器集合 304中、存储器事务计数器集合306中、以及优先级状况寄存器集合 308中的值进行适当调整。存储器事务寄存器集合304包括寄存器320,其用于存储与 线程A相关联的存储器事务的阈值,和寄存器321,其用于存储与线 程B相关联的存储器事务的阈值,存储在寄存器320和321中的存储 器事务的阈值可以基于加载/存储单元246提供的信息,通过存储器事 务控制模块302被设置,例如基于线程去加重指令的操作对象的信息。 在另一实施例中,存储器事务阈值是由ROM存储器、操作系统等等固 定的值。存储器事务计数器集合306包括计数器330,其存储与线程 A相关联的未决存储器事务的数目,以及计数器331,其存储与线程B 相关联的未决存储器事务的数目。存储器事务控制模块302可以单独 地调整存储在计数器330和331中的值。优先级状况寄存器集合308包括寄存器340,其存储与线程 A相关联的优先级状况信息,以及寄存器341,其存储与线程B相关联的优先级状况信息。存储器事务控制模块302可以单独地调整存储在
寄存器340和341中的状态信息。优先级确定模块基于存储在寄存器340和341中的优先级状 况状态信息,确定线程A和线程B的优先级。基于每个线程的优先级, 优先级确定模块向线程调度器模块230提供控制信息,以使与每个线 程相关联的指令以适当的顺序在指令流水线214的每级被执行(图2)。在操作过程中,存储器事务控制模块302接收来自加载/存 储单元246的信息,该信息指示与线程相关联的存储器事务未决,或 者指示与线程相关联的存储器事务已得到解决。作为响应,存储器事 务控制模块302调整存储在存储器事务计数器集合306中的值。例如,加载Z存储单元246可以向存储器事务控制模块302 指示由于与线程A相关联的指令发生了高速缓存未命中。作为响应, 存储器事务控制模块302调整存储在计数器330中的值,以反映该高 速缓存未命中未决。在该高速缓存未命中解决之后(即通过从外部存 储器获得数据并将其加载到数据高速缓存216 (图2)),加载/存储单 元246向存储器事务控制模块302指示高速缓存未命中已解决。作为 响应,存储器事务控制模块302调整存储在计数器330中的值,以反 映该存储器事务已得到解决。因此,存储在计数器330和331中的值 反映与线程A和线程B分别相关联的未决存储器事务的数目。此外,加载/存储单元246可以向存储器事务控制模块302 提供信息,该信息指示已经接收到与线程相关联的线程去加重指令。 作为响应,存储器事务控制模块302将如存储器事务计数器集合306 所反映的与线程相关联的未决存储器事务的数目和如存储器事务计数 器集合304所反映的与该线程相关联的存储器事务阈值相比较。基于 比较结果,存储器事务控制模块302通过在优先级状况寄存器308中 调整线程的状况状态,来调整线程的优先级。
15
例如,如果线程去加重指令与线程B相关联,则存储器事 务控制模块302将存储在计数器331中的值和存储在寄存器321中的 阈值进行比较。如果比较表明,与线程B相关联的未决存储器事务的 数目超过阈值,则存储器事务控制模块302调整寄存器321所存储的 值,以使线程B去加重。参考图4 ,图4示出了调度线程执行的方法的具体实施例的 图示。在框402中,在时间to基于每个线程的优先级状况执行线程。 在示出的示例中,线程A的优先级高于线程B,使得线程A指令在线 程B指令之前执行。在框404中,在时间t,处理线程A中的线程去加重指令。 该线程去加重指令的执行导致线程A的去加重,从而给予线程B最高 优先级。因此,在框406中,线程A的执行被暂停,直到与线程A相 关联的未决存储器事务已经得到解决。因此,在示出的实施例中,在 时间12只有线程B指令被执行,直到线程A的未决存储器事务己经得 到解决。进行至框408,在线程A的未决存储器事务已经得到解决 之后,在时间13恢复线程A的优先级状况。因此,如图所示线程A重 新获得高于线程B的执行优先级。参考图5,图5示出了调度线程执行的方法的另一个具体实 施例的图示。在框502,在时间tc基于每个线程的优先级状况执行线程。 在示出的示例中,线程A的优先级高于线程B和C,而线程B的优先 级高于线程C。 . .在框504中,在时间t,接收到针对线程A的线程去加重指 令,导致线程A的去加重。因此,在框506中,线程A被去加重,直到与线程A相关联的未决存储器事务已经得到解决。因此,在示出的
示例中,在框506中,在时间t2线程B具有高于线程A的执行优先级。 然而,线程A的优先级仍保持高于线程C。因此,在示出的示例中, 可以相对于其他线程单独地对线程进行去加重。进行至框508,在线程A的未决存储器事务已经得到解决 之后,在时间13恢复线程A的优先级状况。因此,如图所示线程A的 优先级重新获得高于线程B的优先级。参考图6,图6示出了在指令流水线中调度线程执行的示 例性方法602和604的框图。方法602描述了在没有线程去加重指令 时指令流水线中的线程调度。相反,方法604描述了当从线程A执行 线程去加重指令时,在指令流水线中的线程调度。如图所示,对于两 种方法602和604,在缺少明确的去加重的情况下,线程A通常具有 高干线程B的优先级。参考方法602,在框610,在指令高速缓存中存储两个指令, 第一个与线程A相关联,第二个与线程B相关联。在框612中,根据 每个指令的当前优先级,指令流水线的获取级获得指令,使得线程A 指令先于线程B指令被获得。在框614中,在指令流水线的解码级在缓冲器中存储两个 指令。在框616中,基于每个指令的当前优先级状况对指令进行解码, 使得线程A指令先于线程B指令被解码。因此,如果线程A指令导致 停止,则直到停止得到解决才对线程B指令进行解码。参考方法604,在框620中,在指令高速缓存中存储两个指 令,第一个与线程A相关联,第二个与线程B相关联。在框622中, 根据每个指令的当前优先级状况,指令流水线的获取级获得指令,使 得线程A指令先于线程B指令被获得。
在框624中,在指令流水线的解码级在缓冲器中存储两个 指令。如图所示,在框624,缓冲器接收控制信息,该控制信息指示与 线程A相关联的线程去加重指令已经在指令流水线的另一级中被执 行。响应于线程去加重指令,线程A的优先级状况相对于线程B被去 加重。因此,在框626,基于每个指令的当前优先级状况对指令进行解 码,使得线程B指令先于线程A指令被解码。因此,如果线程A指令 导致停止,则在停止被解决的同时对线程B指令进行解码,这导致指 令流水线的操作相对于方法602更高效。在此文档中,关系术语,诸如"第一"和"第二",等等,可以 仅用于将一个实体或动作与另一个实体或动作区分开,而不必要求或 暗示这些实体和动作之间的任何实际的这种关系或顺序。术语"包括", 或其任何其他变形,是用以涵盖非排他的内含物,使得包括一系列元
素的过程、方法、物品或装置不仅仅包括那些元素,还可能包括没有 明确列出的或该过程、方法、物品或装置所固有的其他元素。在没有 更多的限制的情况下,以"包括...一"开始的元素,并没有排除在包括该 元素的过程、方法、物品或装置中存在其他同等元素。术语"或"往往指 包含性的"或",以使得在"或"条件性的两个条件都得到满足时,条件性 得到满足。术语"范围"可以包括只包括单个值的范围。本文中所使用的术语"另一个",被定义为至少第二或更多。 本文中所使用的术语"包括"、"具有"及其任何变形被定义为包括。此外 使用的术语"耦合",参考电-光技术,被定义为连接,尽管不必是直接 连接,也不必是机械连接。此处使用的术语"总线"用于指可以用于传输一个或多个不 同类型的信息,诸如数据、地址、控制或状况的多个信号或导体。此 处所讨论的导体,可示出或描述为单个导体、多个导体、单向导体或 双向导体。然而,不同实施例可以改变导体的实现方式。例如,可以使用独立的单向导体而非双向导体,反之亦然。而且,多个导体可由 单个导体替换,其串行传输或以时间复用方式传输多个信号。同样, 承载多个信号的单个导体可被分割成多个不同的导体来承载这些信号 的子集。因此,存在用于传输信号的许多选项。只要考虑到此处公开的说朋书和实践,该发明的其它实施 例、使用和优点对于本领域技术人员来说将是显而易见的。例如,虽 然此处公开的性能事件监视技术是相对于单个处理器讨论的,但类似 的技术也可以应用于具有多个处理器核的设备。每个处理器核可以与 不同的性能事件监视相关联,或设备的每个性能事件监视可与多个处 理器核相关联。说明书和附图应当仅仅作为示例,并且本发明的范围 相应地仅由所附权利要求及其等效范围所限定。
权利要求
1.一种方法,包括在处理器中执行第一线程的第一线程去加重指令;以及响应于执行所述第一线程去加重指令,基于与所述第一线程相关联的未决存储器事务的数目与第一阈值之间的第一关系,对所述第一线程的优先级状况进行去加重。
2. 根据权利要求1所述的方法,进一步包括响应于对所述第一 线程的优先级状况进行去加重,暂停所述第一线程的执行,所述第一 线程的优先级状况被设置为第一状态。
3. 根据权利要求1所述的方法,进一步包括当所述第一线程的 优先级状况被去加重时,在所述处理器中执行第二线程。
4. 根据权利要求1所述的方法,进一步包括基于所述第一线程 的优先级状况,指配所述处理器中的处理器资源。
5. 根据权利要求1所述的方法,进一步包括.-当所述第一线程的优先级状况被去加重时,接收与所述第一线程 相关联的未决存储器事务的数目改变的指示;响应于所述指示,将所述第一线程的优先级状况恢复为第二状态。
6. 根据权利要求5所述的方法,进一步包括响应于对所述第一线程的优先级状况进行去加重,暂停所述第一 线程的执行;以及响应于恢复所述第一线程的优先级状况,而再继续所述第一线程 的执行。
7. 根据权利要求1所述的方法,其中与所述第一线程相关联的未决存储器事务的数目是基于与所述第一线程相关联的高速缓存未命中的数目。
8. 根据权利要求l所述的方法,其中与所述第一线程相关联的未决存储器事务的数目是基于与所述第一线程相关联的不可高速缓存的存储器事务的数目。
9. 根据权利要求1所述的方法,其中与所述第一线程相关联的未决存储器事务的数目与第一存储器事务类型相关联,所述第一存储器事务类型是基于所述第一线程去加重指令。
10. 根据权利要求1所述的方法,其中所述第一阈值是基于所述第 一 线程去加重指令的操作对象。
11. 根据权利要求1所述的方法,其中所述第一线程去加重指令是无操作指令。
12. 根据权利要求1所述的方法,进一步包括在所述处理器中接收第二线程的第二线程去加重指令;响应于接收所述第二线程去加重指令,基于与所述第二线程相关联的未决存储器事务数目与第二阈值之间的第 一 关系,对所述第二线程的优先级状况进行去加重。
13. —种设备,包括指令流水线,所述指令流水线被配置用于执行多个线程的指令;以及线程控制模块,包括线程调度器模块,所述线程调度器模块被配置为基于所述多个线程中的每一个线程的优先级水平,调度所述指令流水线中多个线程的指令的执行;以及优先级控制模块,所述优先级控制模块被配置为响应于所述指令流水线中第一线程去加重指令的执行,基于与所述第一线程相关联的未决存储器事务数目与第一阈值之间的第一关系,对所述多个线程中的第一线程的优先级状况进行去加重。
14. 根据权利要求13所述的设备,其中所述线程调度器模块被配置为响应于对所述第一线程的优先级状况进行去加重,而暂停所述第一线程的执行。
15. 根据权利要求13所述的设备,其中所述线程调度器模块被配置为基于所述多个线程中的每一个线程的优先级状况,分配所述指令流水线的资源。
16. 根据权利要求13所述的设备,其中优先级控制模块被配置为响应于所述指令流水线中第—二指令的执行,而将所述多个线程中的第二线程的优先级水平设置为第一状态,基f与所述第二线程相关联的未决存储器事务数目与第二阈值之问的第 一关系,将所述第二线程的优先级水平设置为所述第一状态。
17. 根据权利要求13所述的设备,其中所述第一阈值是基于所述第一线程去加重指令的操作对象。
18. 根据权利要求13所述的设备,其中与所述第一线程相关联的未决存储器事务的数目是基于与所述第一线程相关联的高速缓存未命中的数冃。
19. 根据权利要求13所述的设备,其中与所述第 -线程相关联的未决存储器事务的数目是基于与所述第一线程相关联的不可高速缓存的存储器事务的数目。
20. —种包括用于操控处理器的多个指令的计算机可读介质,所述多个指令包括用于在处理器中执行多个线程中的第一线程的第一线程去加重指令的指令;以及用于基于与所述第一线程相关联的未决存储器事务数目与第一阈值之间的第一关系来对所述第一线程的优先级状况进行去加重的指令。
全文摘要
本发明公开了一种在处理器(102)中调度线程(221,222)的执行的技术。该技术包括执行线程(221)的线程去加重指令(220),其对线程进行去加重直至与该线程相关联的未决存储器事务(330),如高速缓存未命中,的数目等于或小于阈值(320)。当线程被去加重时,处理器中具有较高优先级的其他线程,可以被执行或被指配系统资源。因此,减小了处理器中发生停止的可能性。
文档编号G06F9/38GK101689124SQ200880015444
公开日2010年3月31日 申请日期2008年4月28日 优先权日2007年5月10日
发明者克拉斯·M·布鲁斯, 加里·L·惠森亨特, 塞尔吉奥·舒勒, 迈克尔·D·斯奈德, 马特·B·斯米特尔 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1