CN104424032A - 多线程处理器中分支预测资源的调度方法、设备和系统 - Google Patents
多线程处理器中分支预测资源的调度方法、设备和系统 Download PDFInfo
- Publication number
- CN104424032A CN104424032A CN201310386082.3A CN201310386082A CN104424032A CN 104424032 A CN104424032 A CN 104424032A CN 201310386082 A CN201310386082 A CN 201310386082A CN 104424032 A CN104424032 A CN 104424032A
- Authority
- CN
- China
- Prior art keywords
- branch prediction
- thread
- prediction unit
- threads
- mentioned
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 238000001514 detection method Methods 0.000 claims 1
- 101150076031 RAS1 gene Proteins 0.000 description 58
- 101150045048 Ras85D gene Proteins 0.000 description 10
- 108091006597 SLC15A4 Proteins 0.000 description 10
- 102100021484 Solute carrier family 15 member 4 Human genes 0.000 description 10
- 238000010586 diagram Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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)
Abstract
本发明实施例涉及计算机技术领域,公开了一种多线程处理器中分支预测资源的调度方法、系统和多线程处理器。其中,所述多线程处理器能够同时执行至少二个线程,所述多线程处理器包括至少一个分支预测部件,该方法包括:设置所述至少二个线程与所述至少一个分支预测部件的对应关系;将第一分支预测部件分配给第一线程独享使用;所述至少一个分支预测部件的数量小于所述至少二个线程的数量,所述至少一个分支预测部件包括所述第一分支预测部件,所述至少二个线程包括所述第一线程。实施本发明实施例,可以减少分支预测资源的硬件开销,提高分支预测的准确性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种多线程处理器中分支预测资源的调度方法、设备和系统。
背景技术
目前,多数处理器都使用流水线方式使指令的执行可以重叠以提高效率,当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令程序中。分支预测技术便是为解决这一问题而出现的,分支预测可包括对条件分支指令的目标跳转方向的预测以及对子程序返回地址的预测。
现有技术中存在一种多线程处理器的分支预测方法,在该方法中每个线程独自占有一个子程序RAS(Return Address Stack,返回地址栈)用于子程序返回地址的预测。RAS采用LIFO(Last In First Out,后进先出)结构,ControlLogic(控制逻辑)控制返回地址的入栈与出栈逻辑。在指令对call/ret(请求/返回)中,call指令在fetch(取指令)流水级时将返回地址push(入栈)到RAS中,子程序结束时ret指令在fetch流水级时将返回地址从RAS中pop(出栈)。以32个线程的多线程处理器为例,则需要32个RAS,若每个RAS中有4个entry(条目),则共有128个entry,同时每个RAS还需要一个控制逻辑,这样导致硬件开销太大。但如果将每个RAS中的entry减少为2个,开销虽然降低,但每个线程独自享有的资源变少了,可能经常发生溢出而影响性能。
现有技术中还存在一种多线程处理器的分支预测方法,在该方法中,每个线程有自己独立的GHR(Global History Register,全局历史寄存器),多个线程共享PHT(pattern history table,模式历史表)进行分支跳转方向的预测。该方法中,虽然每个线程之间共享PHT,减少了一定的硬件开销,但也会导致线程间的相互干扰,降低分支预测的准确性。
发明内容
本发明实施例提供一种多线程处理器中分支预测资源的调度方法、设备和系统,用于减少分支预测资源的硬件开销,提高分支预测的准确性。
本发明实施例提供一种多线程处理器中分支预测资源的调度方法,所述多线程处理器能够同时执行至少二个线程,所述多线程处理器包括至少一个分支预测部件,所述方法包括:
设置所述至少二个线程与所述至少一个分支预测部件的对应关系;
将第一分支预测部件分配给第一线程独享使用;所述至少一个分支预测部件的数量小于所述至少二个线程的数量,所述至少一个分支预测部件包括所述第一分支预测部件,所述至少二个线程包括所述第一线程。
相应的,本发明实施例还提供一种多线程处理器中分支预测资源的调度系统,所述多线程处理器能够同时执行至少二个线程,所述多线程处理器包括至少一个分支预测部件,所述系统包括:
设置单元,用于设置所述至少二个线程与所述至少一个分支预测部件的对应关系;所述至少一个分支预测部件的数量小于所述至少二个线程的数量;
分配单元,用于将第一分支预测部件分配给第一线程独享使用;所述至少一个分支预测部件包括所述第一分支预测部件,所述至少二个线程包括所述第一线程。
相应的,本发明实施例还提供一种多线程处理器,所述多线程处理器包括:
至少一个分支预测部件以及如前所述的分支预测资源的调度系统。
本发明实施例中提供的多线程处理器中分支预测资源的调度方法、系统和多线程处理器,该多线程处理器中分支预测部件的数量小于多线程处理器的线程的数量,可节约硬件开销,另外,将一个分支预测部件分配给多线程处理器可执行的多个线程中的其中一个线程独享使用,也克服了现有技术中共享分支预测资源所带来的线程间的相互干扰的问题,提高了分支预测的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的多线程处理器中分支预测资源的调度方法的流程示意图;
图2是本发明实施例二提供的多线程处理器中分支预测资源的调度方法的流程示意图;
图3是本发明实施例三提供的多线程处理器中分支预测资源的调度方法的流程示意图;
图4本发明实施例四提供的多线程处理器中分支预测资源的调度系统的结构示意图;
图5是本发明实施例五提供的多线程处理器中分支预测资源的调度系统的结构示意图;
图6是本发明实施例六提供的多线程处理器中分支预测资源的调度系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提供了一种多线程处理器中分支预测资源的调度方法、系统和多线程处理器,用于节约分支预测资源的硬件开销,提高分支预测的准确性。以下分别进行详细说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一:
参考图1,本发明提供一种多线程处理器中分支预测资源的调度方法,该多线程处理器能够同时执行至少二个线程,该多线程处理器包括至少一个分支预测部件,如图1所示,该方法包括:
101、设置上述至少二个线程与上述至少一个分支预测部件的对应关系;
本实施例中,分支预测部件可以为模式历史表PHT或返回地址栈RAS;
102、将第一分支预测部件分配给第一线程独享使用;
其中,上述至少一个分支预测部件的数量小于上述至少二个线程的数量,上述至少一个分支预测部件包括上述第一分支预测部件,上述至少二个线程包括上述第一线程,且上述第一线程与上述第一分支预测部件存在对应关系。
本实施例中,多线程处理器中分支预测部件的数量小于多线程处理器的可同时执行的线程的数量,可节约硬件开销,另外,将一个分支预测部件分配给多个线程中的其中一个线程独享使用,也克服了现有技术中共享分支预测资源所带来的线程间的相互干扰的问题,提高了分支预测的准确性。
实施例二:
本发明还提供一种多线程处理器中分支预测资源的调度方法,该多线程处理器能够同时执行至少二个线程,该多线程处理器包括至少一个分支预测部件,如图2所示,该方法包括:
201、设置上述至少二个线程与上述至少一个分支预测部件的对应关系;
本实施例中,分支预测部件可以为模式历史表PHT或返回地址栈RAS;
202、检测上述至少二个线程中各个线程的优先级;
203、将第一分支预测部件分配给第一线程独享使用;
其中,上述至少一个分支预测部件的数量小于上述至少二个线程的数量,上述至少一个分支预测部件包括上述第一分支预测部件,上述至少二个线程包括上述第一线程,且上述第一线程是与第一分支预测部件对应的线程中优先级最高的线程;
204、将上述第一分支预测部件的所有条目置为无效;
在将第一分支预测部件分配给第一线程独享使用之后,由于第一分支预测部件可能保存着上一个线程中的分支预测历史信息,这些分支预测历史信息可能对第一线程的分支预测没有用处,因此可将第一分支预测部件的所有条目(entry)置为无效,以清空对第一线程无效的分支预测历史信息;
205、保存指示上述第一分支预测部件被分配给上述第一线程独享使用的分配信息。
具体地,如果上述分支预测部件是PHT,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个模式历史表PHT的对应关系,上述预先设置的至少二个线程与至少一个模式历史表PHT的对应关系的信息可以保存在分支线程寄存器(BTR,Branch Thread Register)中,该分支线程寄存器可以是只写(Write-only)寄存器;同样,也可以将指示上述第一PHT被分配给上述第一线程独享使用的分配信息保存在分支线程寄存器,每个PHT可配置一个BTR用于保存与该PHT相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个PHT,预先设置为:PHT0对应于thread0、thread1、thread2、thread3,PHT1对应于线程thread4、thread5、thread6、thread7,对于PHT0,将其分配给thread0、thread1、thread2、thread3中优先级最高的线程独享使用。对于PHT1,将其分配给thread4、thread5、thread6、thread7中优先级最高的线程独享使用。操作系统可以每隔预定时间对各个线程的优先级进行判断,以更新PHT的分配。
当然,PHT的分配方式不限于上述的优先级高的方式,也可以采用其它分配方式,例如随机选择的分配方式。
具体地,如果分支预测部件是RAS,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个返回地址栈RAS的对应关系,上述预先设置的至少二个线程与至少一个返回地址栈RAS的对应关系的信息可以保存在返回地址栈_线程寄存器(RAS_TR,Return Address Stack_Thread Register)中,该RAS_TR可以是只读(Read-only)寄存器;同样,也可以将指示上述第一RAS被分配给上述第一线程独享使用的分配信息保存在RAS_TR中,每个RAS可配置一个RAS_TR用于保存与该RAS相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个RAS,预先设置为:RAS0对应于thread0、thread1、thread2、thread3,RAS1对应于线程thread4、thread5、thread6、thread7,对于RAS0,将其分配给thread0、thread1、thread2、thread3中优先级最高的线程独享使用。对于RAS1,将其分配给thread4、thread5、thread6、thread7中优先级最高的线程独享使用。操作系统可以每隔预定时间对各个线程的优先级进行判断,以更新RAS的分配。
当然,RAS的分配方式不限于上述的优先级高的方式,也可以采用其它分配方式,例如随机选择的分配方式。
本实施例中提供的多线程处理器中分支预测资源的调度方法,可方便于从操作系统层面对分支资源进行灵活的调度和分配,可控性地进行分支预测,提高了分支预测的准确率;从硬件角度看,在多线程处理器中,本实施例的方案与现有技术中的方案相比,节约了分支预测硬件资源;从而很好地平衡了分支预测中资源开销和准确率之间的冲突。
实施例三:
参考图3,本发明还提供一种多线程处理器中分支预测资源的调度方法,该多线程处理器能够同时执行至少二个线程,该多线程处理器包括至少一个分支预测部件,如图3所示,该方法包括:
301、设置上述至少二个线程与上述至少一个分支预测部件的对应关系;
本实施例中,分支预测部件可以为模式历史表PHT或返回地址栈RAS;
302、将第一分支预测部件分配给第一线程独享使用;
其中,上述至少一个分支预测部件的数量小于上述至少二个线程的数量;上述至少一个分支预测部件包括上述第一分支预测部件,上述第一线程固定为与上述第一分支预测部件对应的线程中的其中一个;
303、将上述第一分支预测部件的所有条目置为无效;
在将第一分支预测部件分配给第一线程独享使用之后,由于第一分支预测部件可能保存着上一个线程中的分支预测历史信息,这些分支预测历史信息可能对第一线程的分支预测没有用处,因此可将第一分支预测部件的所有条目(entry)置为无效,以清空对第一线程无用的分支预测历史信息;
304、保存指示上述第一分支预测部件被分配给上述第一线程独享使用的分配信息;
305、将第二线程中需要进行分支预测的任务调度到上述第一线程进行执行;上述第二线程为与上述第一分支预测部件对应的线程中的任意一个,且与上述第一线程不同;
本实施例中,与实施例二不同的是,对于一个分支预测部件,其将被分配给固定的一个线程独享使用,当其他线程中存在需要分支预测的任务时,为了完成这些任务,可将其他线程中的需要分支预测的任务调度到第一线程中进行执行。
具体地,如果上述分支预测部件是PHT,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个模式历史表PHT的对应关系,上述预先设置的至少二个线程与至少一个模式历史表PHT的对应关系的信息可以保存在分支线程寄存器(BTR,Branch Thread Register)中,该分支线程寄存器可以是只写(Write-only)寄存器;同样,也可以将指示上述第一PHT被分配给上述第一线程独享使用的分配信息保存在分支线程寄存器,每个PHT可配置一个BTR用于保存与该PHT相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个PHT,预先设置为:PHT0对应于thread0、thread1、thread2、thread3,PHT1对应于线程thread4、thread5、thread6、thread7。对于PHT0,将其分配给thread0独享使用,当thread1、thread2、thread3的任意一个线程中存在需要分支预测的任务时,可以将这些需要分支预测的任务都调度到thread0来执行,在调度之前,可将与PHT0的所有条目置为无效。对于PHT1,将其分配给thread4独享使用,同样,当thread5、thread6、thread7的任意一个线程中存在需要分支预测的任务时,可以将这些需要分支预测的任务都调度到thread4来执行,在调度之前,可将与PHT1的所有条目置为无效。
具体地,当分支预测部件是RAS时,操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个返回地址栈RAS的对应关系,上述预先设置的至少二个线程与至少一个返回地址栈RAS的对应关系的信息可以保存在返回地址栈_线程寄存器(RAS_TR,Return Address Stack_Thread Register)中,该RAS_TR可以是只读(Read-only)寄存器;同样,也可以将指示上述第一RAS被分配给上述第一线程独享使用的分配信息保存在RAS_TR中,每个RAS可配置一个RAS_TR用于保存与该RAS相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个RAS,预先设置为:RAS0对应于thread0、thread1、thread2、thread3,RAS1对应于线程thread4、thread5、thread6、thread7。对于RAS0,将其分配给thread0独享使用,对于RAS1,将其分配给thread4独享使用。如果thread1(或thread2,或thread3)中存在需要进行分支预测的任务,可将该任务调度到thread0上进行执行,在调度之前,可将与RAS0中的内容置为无效。同理,也可将thread5(或thread6,或thread7)中的需要分支预测的任务调度到thread4上进行执行,在调度之前,也可将与RAS1中的内容置为无效。
本实施例中提供的多线程处理器中分支预测资源的调度方法,可方便于从操作系统层面对分支资源进行灵活的调度和分配,可控性地进行分支预测,提高了分支预测的准确率;从硬件角度看,在多线程处理器中,本实施例的方案与现有技术中的方案相比,节约了分支预测硬件资源;从而很好地平衡了分支预测中资源开销和准确率之间的冲突。
实施例四:
本发明还提供一种多线程处理器中的分支预测资源的调度系统,该多线程处理器能够同时执行至少二个线程,且该多线程处理器包括至少一个分支预测部件,如图4所示,该系统可包括:
设置单元100,用于设置上述至少二个线程与上述至少一个分支预测部件的对应关系;上述至少一个分支预测部件的数量小于上述至少二个线程的数量;
分配单元200,用于将第一分支预测部件分配给与上述第一分支预测部件对应的第一线程独享使用;上述至少一个分支预测部件包括上述第一分支预测部件,上述至少二个线程包括上述第一线程。
本实施例中,分支预测部件可以是模式历史表PHT或返回地址栈RAS。
本实施例中提供的多线程处理器中分支预测资源的调度系统可用于为包括至少一个分支预测部件的多线程处理器进行分支预测资源的调度,本实施例中,多线程处理器中分支预测部件的数量小于多线程处理器的可同时执行的线程的数量,可节约硬件开销,另外,将一个分支预测部件分配给多个线程中的其中一个线程独享使用,也克服了现有技术中共享分支预测资源所带来的线程间的相互干扰的问题,提高了分支预测的准确性。
实施例五:
本发明还提供一种多线程处理器中的分支预测资源的调度系统,该多线程处理器能够同时执行至少二个线程,且该多线程处理器包括至少一个分支预测部件,如图5所示,该系统可包括:
设置单元100,用于设置上述至少二个线程与上述至少一个分支预测部件的对应关系;上述至少一个分支预测部件的数量小于上述至少二个线程的数量;
分配单元200,用于将第一分支预测部件分配给第一线程独享使用;上述至少一个分支预测部件包括上述第一分支预测部件,上述至少二个线程包括上述第一线程,上述第一线程为与所述第一分支预测部件对应的线程中优先级最高的线程;
优先级检测单元300,与分配单元200连接,用于检测上述至少二个线程中各个线程的优先级;
无效单元400,与分配单元200连接,用于在分配单元200将第一分支预测部件分配给上述第一线程独享使用之后,将上述第一分支预测部件的所有条目置为无效;
保存单元500,与分配单元200连接,用于保存指示上述第一分支预测部件被分配给上述第一线程独享使用的分配信息。
本实施例中,分支预测部件可以为模式历史表PHT或返回地址栈RAS。
具体地,如果上述分支预测部件是PHT,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个模式历史表PHT的对应关系,上述预先设置的至少二个线程与至少一个模式历史表PHT的对应关系的信息可以保存在分支线程寄存器(BTR,Branch Thread Register)中,该分支线程寄存器可以是只写(Write-only)寄存器;同样,也可以将指示上述第一PHT被分配给上述第一线程独享使用的分配信息保存在分支线程寄存器,每个PHT可配置一个BTR用于保存与该PHT相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个PHT,预先设置为:PHT0对应于thread0、thread1、thread2、thread3,PHT1对应于线程thread4、thread5、thread6、thread7,对于PHT0,将其分配给thread0、thread1、thread2、thread3中优先级最高的线程独享使用。对于PHT1,将其分配给thread4、thread5、thread6、thread7中优先级最高的线程独享使用。操作系统可以每隔预定时间对各个线程的优先级进行判断,以更新PHT的分配。
当然,PHT的分配方式不限于上述的优先级高的方式,也可以采用其它分配方式,例如随机选择的分配方式。
具体地,如果分支预测部件是RAS,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个返回地址栈RAS的对应关系,上述预先设置的至少二个线程与至少一个返回地址栈RAS的对应关系的信息可以保存在返回地址栈_线程寄存器(RAS_TR,Return Address Stack_Thread Register)中,该RAS_TR可以是只读(Read-only)寄存器;同样,也可以将指示上述第一RAS被分配给上述第一线程独享使用的分配信息保存在RAS_TR中,每个RAS可配置一个RAS_TR用于保存与该RAS相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个RAS,预先设置为:RAS0对应于thread0、thread1、thread2、thread3,RAS1对应于线程thread4、thread5、thread6、thread7,对于RAS0,将其分配给thread0、thread1、thread2、thread3中优先级最高的线程独享使用。对于RAS1,将其分配给thread4、thread5、thread6、thread7中优先级最高的线程独享使用。操作系统可以每隔预定时间对各个线程的优先级进行判断,以更新RAS的分配。
当然,RAS的分配方式不限于上述的优先级高的方式,也可以采用其它分配方式,例如随机选择的分配方式。
本实施例中提供的多线程处理器中分支预测资源的调度系统,可方便于从操作系统层面对分支资源进行灵活的调度和分配,可控性地进行分支预测,提高了分支预测的准确率;从硬件角度看,在多线程处理器中,本实施例的方案与现有技术中的方案相比,节约了分支预测硬件资源;从而很好地平衡了分支预测中资源开销和准确率之间的冲突。
实施例六:
本发明还提供一种多线程处理器中的分支预测资源的调度系统,该多线程处理器能够同时执行至少二个线程,且该多线程处理器包括至少一个分支预测部件,如图6所示,该系统可包括:
设置单元100,用于设置上述至少二个线程与上述至少一个分支预测部件的对应关系;上述至少一个分支预测部件的数量小于上述至少二个线程的数量;
分配单元200,用于将第一分支预测部件分配给第一线程独享使用;上述至少一个RAS包括上述第一RAS,上述至少二个线程包括上述第一线程,且上述第一线程固定为与上述第一分支预测部件对应的线程中的其中一个;
无效单元400,与分配单元200连接,用于在分配单元200将第一分支预测部件分配给上述第一线程独享使用之后,将上述第一分支预测部件的所有条目置为无效;
保存单元500,与分配单元200连接,用于保存指示上述第一分支预测部件被分配给上述第一线程独享使用的分配信息;
调度单元600,与保存单元500连接,用于将第二线程中需要进行分支预测的任务调度到上述第一线程进行执行;上述第二线程为与上述第一分支预测部件对应的线程中的任意一个,且与上述第一线程不同。
本实施例中,与实施例五不同的是,对于一个分支预测部件,其将被分配给固定的一个线程独享使用,当其他线程中存在需要分支预测的任务时,为了完成这些任务,可将其他线程中的需要分支预测的任务调度到第一线程中进行执行。
具体地,如果上述分支预测部件是PHT,则操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个模式历史表PHT的对应关系,上述预先设置的至少二个线程与至少一个模式历史表PHT的对应关系的信息可以保存在分支线程寄存器(BTR,Branch Thread Register)中,该分支线程寄存器可以是只写(Write-only)寄存器;同样,也可以将指示上述第一PHT被分配给上述第一线程独享使用的分配信息保存在分支线程寄存器,每个PHT可配置一个BTR用于保存与该PHT相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个PHT,预先设置为:PHT0对应于thread0、thread1、thread2、thread3,PHT1对应于线程thread4、thread5、thread6、thread7。对于PHT0,将其分配给thread0独享使用,当thread1、thread2、thread3的任意一个线程中存在需要分支预测的任务时,可以将这些需要分支预测的任务都调度到thread0来执行,在调度之前,可将与PHT0的所有条目置为无效。对于PHT1,将其分配给thread4独享使用,同样,当thread5、thread6、thread7的任意一个线程中存在需要分支预测的任务时,可以将这些需要分支预测的任务都调度到thread4来执行,在调度之前,可将与PHT1的所有条目置为无效。
具体地,当分支预测部件是RAS时,操作系统可以通过MSR(movegeneral purpose register to system register)类型的指令设置至少二个线程与至少一个返回地址栈RAS的对应关系,上述预先设置的至少二个线程与至少一个返回地址栈RAS的对应关系的信息可以保存在返回地址栈_线程寄存器(RAS_TR,Return Address Stack_Thread Register)中,该RAS_TR可以是只读(Read-only)寄存器;同样,也可以将指示上述第一RAS被分配给上述第一线程独享使用的分配信息保存在RAS_TR中,每个RAS可配置一个RAS_TR用于保存与该RAS相关的对应关系和分配信息。
例如,一个8线程处理器,其中包括2个RAS,预先设置为:RAS0对应于thread0、thread1、thread2、thread3,RAS1对应于线程thread4、thread5、thread6、thread7。对于RAS0,将其分配给thread0独享使用,对于RAS1,将其分配给thread4独享使用。如果thread1(或thread2,或thread3)中存在需要进行分支预测的任务,可将该任务调度到thread0上进行执行,在调度之前,可将与RAS0中的内容置为无效。同理,也可将thread5(或thread6,或thread7)中的需要分支预测的任务调度到thread4上进行执行,在调度之前,也可将与RAS1中的内容置为无效。
本实施例中提供的多线程处理器中分支预测资源的调度系统,可方便于从操作系统层面对分支资源进行灵活的调度和分配,可控性地进行分支预测,提高了分支预测的准确率;从硬件角度看,在多线程处理器中,本实施例的方案与现有技术中的方案相比,节约了分支预测硬件资源;从而很好地平衡了分支预测中资源开销和准确率之间的冲突。
实施例七:
本发明还提供一种多线程处理器,所述多线程处理器包括:
至少一个分支预测部件以及如实施例四或实施例五或实施例六所述的分支预测资源的调度系统。
上述分支预测部件可以是PHT或RAS。
该多线程处理器可以进行分支跳转方向和/或返回地址的预测,具体地,可参考实施例四或五或六的描述,在此不予赘述。
需要说明的是,以上各实施例均基于同一发明构思,在各实施例中描述各有侧重,个别实施例描述未详尽之处,可参考其他实施例中的描述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
以上对本发明实施例所提供的多线程处理器中分支预测资源的调度方法、系统和多线程处理器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种多线程处理器中分支预测资源的调度方法,其特征在于,所述多线程处理器能够同时执行至少二个线程,所述多线程处理器包括至少一个分支预测部件,所述方法包括:
设置所述至少二个线程与所述至少一个分支预测部件的对应关系;
将第一分支预测部件分配给第一线程独享使用;所述至少一个分支预测部件的数量小于所述至少二个线程的数量,所述至少一个分支预测部件包括所述第一分支预测部件,所述至少二个线程包括所述第一线程。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一分支预测部件的所有条目置为无效;
保存指示所述第一分支预测部件被分配给所述第一线程独享使用的分配信息。
3.根据权利要求2所述的方法,其特征在于,在所述将第一分支预测部件分配给第一线程独享使用之前,所述方法还包括:
检测所述至少二个线程中各个线程的优先级;
所述第一线程为与所述第一分支预测部件对应的线程中优先级最高的线程。
4.根据权利要求2所述的方法,其特征在于,所述第一线程为与所述第一分支预测部件对应的线程中的其中一个;
在所述将第一分支预测部件分配给第一线程独享使用之后,所述方法还包括:
将第二线程中需要进行分支预测的任务调度到所述第一线程进行执行;所述第二线程为与所述第一分支预测部件对应的线程中的任意一个,且与所述第一线程不同。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述分支预测部件为返回地址栈或模式历史表。
6.一种多线程处理器中分支预测资源的调度系统,其特征在于,所述多线程处理器能够同时执行至少二个线程,所述多线程处理器包括至少一个分支预测部件,所述系统包括:
设置单元,用于设置所述至少二个线程与所述至少一个分支预测部件的对应关系;所述至少一个分支预测部件的数量小于所述至少二个线程的数量;
分配单元,用于将第一分支预测部件分配给第一线程独享使用;所述至少一个分支预测部件包括所述第一分支预测部件,所述至少二个线程包括所述第一线程。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
无效单元,与所述分配单元连接,用于在所述分配单元将第一分支预测部件分配给所述第一线程独享使用之后,将所述第一分支预测部件的所有条目置为无效;
保存单元,与所述分配单元连接,用于保存指示所述第一分支预测部件被分配给所述第一线程独享使用的分配信息。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
优先级检测单元,与所述分配单元连接,用于检测所述至少二个线程中各个线程的优先级;
所述第一线程为与所述第一分支预测部件对应的线程中优先级最高的线程。
9.根据权利要求7所述的系统,其特征在于,所述第一线程为与所述第一分支预测部件对应的线程中的其中一个;
所述系统还包括:
调度单元,与所述保存单元连接,用于将第二线程中需要进行分支预测的任务调度到所述第一线程进行执行;所述第二线程为与所述第一分支预测部件对应的线程中的任意一个,且与所述第一线程不同。
10.根据权利要求6-9任一项所述的系统,其特征在于,所述分支预测部件为返回地址栈或模式历史表。
11.一种多线程处理器,其特征在于,所述多线程处理器包括:
至少一个分支预测部件以及如权利要求6-10任一项所述的多线程处理器中分支预测资源的调度系统。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310386082.3A CN104424032A (zh) | 2013-08-29 | 2013-08-29 | 多线程处理器中分支预测资源的调度方法、设备和系统 |
PCT/CN2014/083883 WO2015027810A1 (zh) | 2013-08-29 | 2014-08-07 | 多线程处理器中分支预测资源的调度方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310386082.3A CN104424032A (zh) | 2013-08-29 | 2013-08-29 | 多线程处理器中分支预测资源的调度方法、设备和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104424032A true CN104424032A (zh) | 2015-03-18 |
Family
ID=52585537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310386082.3A Pending CN104424032A (zh) | 2013-08-29 | 2013-08-29 | 多线程处理器中分支预测资源的调度方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104424032A (zh) |
WO (1) | WO2015027810A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113504943A (zh) * | 2021-09-03 | 2021-10-15 | 广东省新一代通信与网络创新研究院 | 用于降低资源使用的混合分支预测装置实现方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200172927A1 (en) * | 2017-05-15 | 2020-06-04 | The Trustees Of Columbia University In The City Of New York | Reprogramming metabolism by inhibiting vhl for treatment of neurodegeneration |
GB2622362A (en) * | 2022-09-09 | 2024-03-20 | Advanced Risc Mach Ltd | Methods and apparatus controlling prediction units |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514354A (zh) * | 2002-12-31 | 2004-07-21 | ����̩ƽ | 面向构件基于系统内核的进程池/线程池管理方法 |
US20040215720A1 (en) * | 2003-04-28 | 2004-10-28 | International Business Machines Corporation | Split branch history tables and count cache for simultaneous multithreading |
TW200809631A (en) * | 2006-08-11 | 2008-02-16 | Inventec Corp | A method for distributing threads of a multi-core central processing units computer system based on hardware |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
CN103003791A (zh) * | 2010-07-16 | 2013-03-27 | 高通股份有限公司 | 分配共享堆栈的部分的系统和方法 |
-
2013
- 2013-08-29 CN CN201310386082.3A patent/CN104424032A/zh active Pending
-
2014
- 2014-08-07 WO PCT/CN2014/083883 patent/WO2015027810A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514354A (zh) * | 2002-12-31 | 2004-07-21 | ����̩ƽ | 面向构件基于系统内核的进程池/线程池管理方法 |
US20040215720A1 (en) * | 2003-04-28 | 2004-10-28 | International Business Machines Corporation | Split branch history tables and count cache for simultaneous multithreading |
TW200809631A (en) * | 2006-08-11 | 2008-02-16 | Inventec Corp | A method for distributing threads of a multi-core central processing units computer system based on hardware |
CN101344842A (zh) * | 2007-07-10 | 2009-01-14 | 北京简约纳电子有限公司 | 多线程处理器及其多线程处理方法 |
CN103003791A (zh) * | 2010-07-16 | 2013-03-27 | 高通股份有限公司 | 分配共享堆栈的部分的系统和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113504943A (zh) * | 2021-09-03 | 2021-10-15 | 广东省新一代通信与网络创新研究院 | 用于降低资源使用的混合分支预测装置实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015027810A1 (zh) | 2015-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9804666B2 (en) | Warp clustering | |
CN102004719B (zh) | 支持同时多线程的超长指令字处理器结构 | |
JP6509248B2 (ja) | コンピュータ内の複数のスレッドを管理する制御エリアを提供するためのシステム、方法、およびコンピュータ・プログラム製品 | |
AU2015238706B2 (en) | Start virtual execution instruction for dispatching multiple threads in a computer | |
US20080195851A1 (en) | Multi-Threaded Processor | |
US10268519B2 (en) | Scheduling method and processing device for thread groups execution in a computing system | |
CN103383651A (zh) | 半导体装置 | |
US9213569B2 (en) | Exiting multiple threads in a computer | |
CN104731560A (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
US11947999B2 (en) | Multi-phased and multi-threaded program execution based on SIMD ratio | |
TW201610854A (zh) | 在電腦中分派多執行緒 | |
CN104899181A (zh) | 用于处理向量操作数的数据处理装置和方法 | |
WO2021218633A1 (zh) | Cpu指令处理方法、控制器和中央处理单元 | |
CN104424032A (zh) | 多线程处理器中分支预测资源的调度方法、设备和系统 | |
WO2009074946A1 (en) | Data processing system and method of interrupt handling | |
KR20220127326A (ko) | 협력 워크-스틸링 스케줄러 | |
US7617494B2 (en) | Process for running programs with selectable instruction length processors and corresponding processor system | |
CN108139938A (zh) | 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
US20030172250A1 (en) | Multidispatch cpu integrated circuit having virtualized and modular resources and adjustable dispatch priority | |
US20220129327A1 (en) | Latency sensitive workload balancing | |
EP3134815B1 (en) | Memory efficient thread-level speculation | |
EP1378825B1 (en) | A method for executing programs on selectable-instruction-length processors and corresponding processor system | |
CN103744641B (zh) | 禁止已翻译指令序列执行的方法、装置和虚拟机 | |
JPH04262452A (ja) | プログラムの命令の並列処理のための方法およびプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150318 |
|
RJ01 | Rejection of invention patent application after publication |