CN102736897B - 多线程处理的线程选择 - Google Patents

多线程处理的线程选择 Download PDF

Info

Publication number
CN102736897B
CN102736897B CN201210097657.5A CN201210097657A CN102736897B CN 102736897 B CN102736897 B CN 102736897B CN 201210097657 A CN201210097657 A CN 201210097657A CN 102736897 B CN102736897 B CN 102736897B
Authority
CN
China
Prior art keywords
program threads
instruction
program
thread
threads
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.)
Active
Application number
CN201210097657.5A
Other languages
English (en)
Other versions
CN102736897A (zh
Inventor
弗拉基米尔·瓦斯金
艾伦·约翰·斯基尔曼
安德鲁·克里斯多佛·罗斯
安东尼·约翰·彭顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN102736897A publication Critical patent/CN102736897A/zh
Application granted granted Critical
Publication of CN102736897B publication Critical patent/CN102736897B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

本发明提供了多线程处理的线程选择。多线程处理器(4)使来自不同程序线程的程序指令交错以执行细粒度多线程。线程性能监视电路(30)监视个体程序线程的性能参数以生成性能值。发射控制电路(28)当线程切换事件发生时读取这些性能值以确定哪个程序线程接下来被选择为活动。所测量的性能参数可包括程序线程能够在其中提供供处理器(4)内的执行电路(12)执行的程序指令的周期的比例。

Description

多线程处理的线程选择
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及对在多线程处理系统中执行的程序线程的选择。
背景技术
提供利用粗粒度多线程和/或细粒度多线程的处理系统是已知的。在粗粒度多线程中,在不同的时间不同的程序线程可被选择为活动的。在细粒度多线程中,来自不同程序线程的程序指令被相互交错并且作为将要执行的程序指令的流被馈送给执行机构。在细粒度多线程的情况下,供执行的程序线程将比可被同时交错的程序线程更多是常见情况。因此,就哪些程序线程在给定时间是活动的做出选择。
简单的选择机构可以以粗粒度水平依次选择不同的程序线程用于执行。该方法的问题在于,当来自当前活动程序线程的程序指令被交错时,每个程序线程可能无法在每个周期发射程序指令以供执行。例如,程序线程内的程序指令之间的数据依赖性可能需要程序指令在可被发射之前停止以等待更早程序指令的完成。当前活动的不同程序线程有可能能够使用在其期间另一程序线程被停止的周期。然而,还有可能的是,同时活动的若干程序线程可能这样:它们都经受大量停止,数据处理系统的资源因而被低效使用,这是因为活动线程无法在每个周期发射程序指令。
发明内容
从一个方面看,本发明提供了一种用于处理数据的装置,包括:
执行电路,该执行电路被配置为执行程序指令;
发射控制电路,该发射控制电路被耦合到所述执行电路并且被配置为从多个程序线程中选择程序指令以组成要发射到所述执行电路的程序指令的序列,所述发射控制电路被配置为选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;以及
线程性能监视电路,该线程性能监视电路被耦合到发射控制电路并且被配置为测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述发射控制电路被配置为根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射到所述执行电路。
本技术认识到以上问题并且提供了用于测量多个性能值的线程性能监视电路,这些性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数。用于选择哪些程序线程活动的发射控制电路然后可以使用这些性能值来以可以提高执行电路利用效率的方式选择哪些程序线程将会活动。
将会认识到,性能监视电路值可以监视各种性能参数。然而,在一些实施例中,性能值为程序线程中的每一个指示该线程的程序指令已经可用于发射的周期的比例。很少遭受停止的程序线程将具有指示如下周期的高比例的性能值,这些周期是在其中来自该程序线程的程序指令曾可用于发射的周期。相反地,遭受大量数据依赖冒险和/或分支未命中预测的程序线程将具有指示该程序线程能够发射程序指令的周期的比例相对低的性能值。
在这种性能值的上下文中,发射控制电路可以选择将从中发射程序指令的下一程序线程以使得该程序线程将补充将与之同时活动的一个或多个程序线程。具体而言,如果活动程序线程一起组合使得其性能值指示在它们当中它们将能够在其中发射程序指令的周期的比例接近一,则是高效的。因此,具有指示高比例周期上的程序指令可用性的性能值的程序线程可被与具有指示程序指令在低比例周期上可用的性能值的程序线程相匹配,使得程序指令可用于发射的周期的比例总共大体是一(即,它们一起能够大体在每个周期发射程序指令)。
使程序线程的测量性能特性相匹配使得可以避免其中程序线程被组合因而低效利用执行资源的情形以及其中程序线程被组合因而相互低效竞争执行资源的情形。可被应用的另一选择标准是预计得到使用的发射周期的组合比例将不小于一。
程序线程之所以无法在任何给定周期发射程序指令可能有各种原因。具体的这种情形包括指令之间的操作数依赖以及例如由于分支未命中预测而尚未从存储器中提取将在线程中发射的下一指令。特定程序线程之所以无法在给定周期发射其下一指令可能有其他原因。
线程性能监视电路可包括与每个活动程序线程相关联的计数器,其中该计数器被配置为根据相应线程在每个周期是否具有可用于发射的程序指令来累积计数值。所累积的计数值可以对指令可在其中用于发射的周期进行计数,或者相反地对指令在其中不可用于发射的周期进行计数。这两种计数都可被用于指示该程序线程曾能够利用的可用周期的比例。该所测得性能被用于预测该程序线程当接下来被选择时的行为,并且因此可被发射控制电路用于选择与具有互补处理要求的程序线程组合执行的程序线程。
计数器可被配置为在预定累积时段内累积计数值,此后计数值被重置并且累积被重新启动。这有效地形成了活动程序线程的性能值被确定的测量时段。该预定累积时段可被制成用户可配置参数,使得性能监视电路可被针对正被执行的程序线程的类型来调谐。
为了避免其中特定程序线程由于其性能特性与其他程序线程不兼容而从未被选择用于执行的情形,在一些实施例中,发射控制电路可被配置为独立于性能值来选择来自如下程序线程的程序指令用于发射:在长于由发射控制电路做出的预定次数的线程选择的时间内尚未选择来自该程序线程的程序指令。因此,在已经不活动太久的程序线程的情况下可以不考虑(override)对性能值的使用。
本技术对按次序执行环境特别有用,因为这些环境通常更有程序线程停止倾向,这是因为它们缺乏能够乱序选择程序指令以供执行的灵活性。
活动程序线程的程序指令可被方便地保存在指令队列中以形成准备好运行的指令的池。
发射控制电路可以在线程切换事件发生时执行其对将会活动的下一程序线程的选择(以及从执行中冲掉当前活动线程)。线程切换事件可包括如下中的一种或多种:高速缓存存储器内的未命中、定时器触发的事件、转换后备缓冲器内的未命中、一个或多个外部中断或者执行指示其应当将执行交给另一线程的指令的线程本身。
发射控制电路可被用在支持单发射或多发射操作的执行环境中。
发射控制电路可以使大量程序线程交错,但是当发射控制电路使两个程序线程交错时可以实现具有较小额外开销并且仍具有显著提高执行资源利用的能力的细粒度交错。
将会认识到上面已经描述了优选实施例,其中性能值指示程序线程能够在其中提供供发射的程序指令的周期的比例。性能监视电路所测量的性能值可以采用不同形式。在支持不同类型的多个执行流水线(例如算术流水线、向量处理流水线、加载/存储流水线等)的处理环境中,那么所测量的性能值可以指示给定程序线程内利用这些不同流水线的程序指令的比例。这样,当程序线程具有互补的流水线使用模式时,它们可被选择为一起使用,例如大量使用算术流水线的程序线程被选择为与大量使用加载/存储流水线的程序线程同时活动以使得这两个线程将不会竞争使用执行机构内的相同流水线。性能值的另外示例也是可能的。
从另一方面看,本发明提供了一种用于处理数据的装置,包括:
执行装置,用于执行程序指令;
发射控制装置,该发射控制装置被耦合到所述执行装置并且用于从多个程序线程中选择程序指令以组成要发射到所述执行装置的程序指令的序列,所述发射控制装置选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;以及
线程性能监视装置,该线程性能监视装置被耦合到发射控制装置并且用于测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述发射控制装置根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射到所述执行装置。
从另一方面看,本发明提供了一种处理数据的方法,包括以下步骤:
从多个程序线程中选择程序指令以组成要发射的程序指令的序列,所述选择步骤操作来选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;
执行被发射的所述程序指令;以及
测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述选择步骤根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射到所述执行装置。
根据将结合附图阅读的以下对示例性实施例的详细描述,本发明的以上和其他目的、特征和优点将会显而易见。
附图说明
图1示意性地图示出利用粗粒度和细粒度多线程来处理数据的装置;
图2示意性地图示出发射控制电路、性能监视电路以及用于控制线程选择的发射队列;
图3是示意性地图示出性能值收集的流程图;并且
图4是示意性地图示出线程选择的流程图。
具体实施方式
图1示意性地图示出用于处理数据的装置,包括与存储器6相耦合的处理器核心4。存储器6存储将要操纵的操作数数据8以及组成多个程序线程的程序指令10。这些程序线程中的每一个包含程序指令的序列。其中将要执行的程序指令10可被划分为多个程序线程的这类布置对本领域技术人员而言将是熟悉的。本技术的多线程可被用于使得处理器4能够从编程者视角看起来是各自单独执行相应程序线程的多个处理器。当程序线程不再活动时,其数据(例如,寄存器内容、程序计数器值、指针以及其他状态数据)可被从处理器4冲掉(flush),并且当有关程序线程将被重新启动时,该状态数据被恢复到处理器4,并且以从编程者视角看好像执行是连续的并且程序线程具有对处理器4的独占使用的方式来继续执行。
处理器4包括执行电路12,执行电路12在该示例中包括诸如算术数据路径14、流水线电路16和指令译码器18之类的元件。将会明白,电路12的该表示是程式化的,并且在实践中执行电路12可以采用各种不同形式,例如包括各自被调整为适应特定形式程序指令的多个执行流水线,例如算术流水线、加载/存储流水线、单指令多数据流水线等。处理器核心4包括其中可存储有来自存储器6的数据值的高速缓存存储器20。程序线程切换事件可能出现的一个原因是由于该高速缓存存储器20内的高速缓存未命中。这种高速缓存未命中将通常需要对于存储器的高等待时间存储器提取,因而当该高速缓存未命中被解决并且所需要的数据被提取到高速缓存20中时切换到不同程序线程的执行将会更高效。
处理器4包括用于从存储器6预取程序指令并将这些程序指令提供给发射队列(IQ)24的预取电路22,这些程序指令在发射队列24处组成准备好发射的程序指令的池。预取电路22可以利用2个分别指向两个不同程序线程的程序指令的程序计数器值,所述两个不同程序线程是活动的并且应当为这两个不同程序线程提取程序指令。分支预测电路26可被用于根据已知技术预测所提取指令内的条件分支。不保证这种分支预测是正确的,分支未命中预测因而是当执行电路12能够接受程序指令以供执行时来自当前活动程序线程的程序指令之所以可能无法在每个处理周期可用于从发射队列24发射的一个原因。
图1中还图示出发射控制电路28和线程性能监视电路30。发射控制电路28控制来自发射队列24的哪些程序指令在每个程序周期被发射到执行电路12。发射控制电路28因而可以通过在当前活动的程序线程之间交错被发射到执行电路的程序指令来执行细粒度多线程。在任何时间有多个程序线程(通常是两个程序线程)活动。发射控制电路28还负责选择哪些程序线程将在给定时间活动。不活动的程序线程当不在使用中时使其上下文数据(例如,寄存器内容、指针等)被保存到处理器4内的专用存储器。当程序线程被发射控制电路28选择以变为活动时,该状态数据可被迅速恢复。
发射控制电路28在确定哪些程序线程应当被选择为在任何给定时间活动时响应于由线程性能监视电路30测量到的性能值。触发发射控制电路28冲掉当前活动线程(使之退休)并选择将会活动的新程序线程的线程切换事件可以采取各种形式。如先前讨论的,这些形式之一可以是高速缓存20内的高速缓存未命中。线程切换事件的另一形式可以是定时器触发的事件,例如从看门狗定时器得到的触发器。线程切换事件的另一形式可以是程序指令在程序线程内的执行,该程序指令规定程序线程本身应当被退休,即由另一线程事件接替。另外的线程切换事件包括转换后备缓冲器(translationlookasidebuffer)内的未命中以及一个或多个外部中断。
线程性能监视电路30监视当前活动程序线程的一个或多个性能参数。所测量的这些性能参数可被用来预测哪些程序线程在被选择为一起活动的情况下将相互补充。发射控制电路28因而被配置为根据指示有关程序线程上次被执行时的性能参数的这些所测量性能值来选择将活动的下一程序线程。可被测量的性能参数的一种形式是指示在其中给定程序线程能够提供可用来发射的程序指令的周期的比例的性能参数,例如,程序线程遭受防止程序指令在每个周期可用于发射的数据互锁、分支误预测的可能性。
性能值和性能参数的其他形式也是可能的。这些性能值和性能参数与单独程序线程和该程序线程的特性有关。发射控制电路28利用这些已经在程序线程的实际执行期间实时测量到的特性来确定被选择为活动的下一程序线程,以更高效地利用执行电路12。
图2示意性地图示出发射队列24、发射控制电路28以及线程性能监视电路30。发射队列24从预取单元22接收程序指令并且将程序指令提供给执行电路12。将指令提供给执行电路12是程序指令的发射。在该示例中,发射队列24可以使来自两个当前活动线程TA、TB的程序指令的发射交错,以实现细粒度多线程(FGMT)。指示在当前活动线程TA、TB中的任一个中出现的数据互锁的信号被提供给发射队列24,使得个体程序线程在该程序线程中出现数据冒险时可被停止。未停止的程序线程优选应当能够利用其他程序线程被停止的周期来继续发射程序指令并因而高效利用执行电路12。
在发射队列24可向执行电路12发射程序指令的每个周期,信号TAAV和TBAV被生成并被提供给性能监视电路30内的相应计数器32、34,以分别指示线程A在该周期内是否有指令可用于发射以及线程B在该处理周期内是否有指令可用于发射。这些计数器32、34内在预定累积时段内的累积值因而将提供指示在其中有关程序线程能够提供可用于发射的程序指令的周期的比例的性能参数。
性能监视电路中还存在周期计数器36和累积(Acc)时段寄存器38。累积时段寄存器38存储用于定义计数器32、34累积其值的时间窗口并相应定义性能参数被测量的时间窗口的用户可编程累积时段值。比较器40将累积时段寄存器38的内容与周期计数器36相比较,并且当这些相等时,发射用于重置计数器32、34以使这些归零的重置信号以及用于将所累积计数值的一部分从计数器32、34复制到相应部件或者性能值(PV)寄存器42的复制信号。
虽然充分累积的计数可能可被存储为性能值,但是在实践中这提供了过高的分辨率水平并且存储该数据的开销不合理。因此,通过将累积值的最高有效位部分存储为性能值,可以获得关于有关线程的性能参数的足够信息。最高有效位部分可以具有根据累积时段寄存器38内存储的当前编程的累积时段值而选择的宽度。如果累积时段较短,那么为了保证关于不同程序线程的性能的可区分性能参数信息被捕捉到,更大的最高有效位部分需要被采样。复用器44用于将来自计数器32、34的值引导到适当的性能值寄存器42。在该示例中,八个程序线程被支持。在任何给定时间点TA、TB处活动的程序线程可以是这八个程序线程中的任何程序线程。因此,当复制信号被比较器40生成时,性能值被复用器44引导以被存储在性能值寄存器42中的适当性能值寄存器中。性能值寄存器42中存储的性能值因而表示由性能监视电路30在有关程序线程上次活动时所测得的性能值。
发射控制电路28包括下一线程选择电路46,下一线程选择电路46接收来自性能值寄存器42的性能值以及指示如先前讨论的线程切换事件的信号。不活动线程寄存器48按照当前不活动线程的最近活动时间的顺序来存储它们的线程标识符(ID)。当前活动线程使其线程标识符被存储在活动线程寄存器50、52中。不活动线程寄存器48还可以存储指示相关不活动线程的状态数据位于处理器4的专用片上存储器内何处的指针值。
当当前活动线程被冲掉并被致使不活动时,其被添加到不活动线程寄存器48内的不活动线程列表的末尾。下一线程选择电路46此时检查保持活动的程序线程的性能值并且确定如其性能值所指示的、未被该活动程序线程使用的程序发射周期的可用比例。因此,如果保持活动的程序线程具有指示0.75的比例的性能值,那么该活动程序线程将与具有指示0.25的比例的性能值的程序线程同时被良好匹配为活动者,这是因为这些在一起将组合指示一的使用比例。下一线程选择电路46被配置为依次搜索与在不活动线程寄存器48中标识出的线程相关联的性能值,以确定这些中的哪一个具有指示其与保持活动的程序线程同时适合于活动者的性能值。该适合性可被判断为指示所使用的发射周期的比例的性能值的组合是超过一的最小值(或者替代地不少于一的值)。如果两个当前不活动程序线程的性能值与保持活动的程序线程的性能值同等良好匹配,那么已经不活动最久的不活动程序线程可被选择为下一程序线程。发射控制电路28在选择哪些程序线程将在任何给定时间时活动的动作将执行粗粒度多线程(CGMT)。
下一线程选择电路46另外包括保证给定程序线程不永久保持不活动的机构。因此,如果程序线程在大于发射控制电路28做出预定次数线程选择的时间内尚未被选择,那么发射控制电路28独立于性能值寄存器42内的性能值将该程序线程选择为将会活动的下一线程。这有效地保证了程序线程无论与其他程序线程多不兼容都将至少获得一些执行时间。
指令队列24在该示例实施例中从每个程序线程中执行按次序的指令发射。如果适当支持额外的复杂度,那么执行乱序指令发射的其他实施例也是可能的。发射队列24可以每个周期发射单个程序指令,或者在其他实施例中在每个周期发射多个指令。
图3是示意性地图示出性能监视电路30在收集性能值时的操作的流程图。在步骤54处,处理在每个处理周期开始之前等待。步骤56然后确定当前累积时段是否已经结束。如果当前累积时段已经结束,那么步骤58将累积值的最高有效位(MSB)部分从计数器32、34复制到性能值寄存器42中的适当性能值寄存器。步骤60然后重置计数器32、34并且处理返回到步骤54。
如果步骤56处的判定是累积时段尚未结束,那么处理继续进行到步骤62,在步骤62处当前活动线程TA、TB中的每一个线程的累积值被增加,如果该程序线程在该周期期间有可用于发射的指令的话。由于例如数据冒险或者分支误预测已经发生使得程序线程的程序指令仍然正被从存储器6中提取并且仍未到达指令队列24之类的原因,该程序线程可能没有可用于发射的程序指令。
图4是示意性地图示出发射控制电路28响应于线程切换事件而执行的线程选择的流程图。在步骤64处,处理在线程切换事件发生之前等待。步骤66然后冲掉退休线程和其相关状态数据。步骤68确定任何当前不活动线程是否在多于最大允许数目的线程选择指令的时间内尚未被选择。如果识别到这种线程,那么步骤70强迫将该线程选择为将被执行的下一线程并且处理返回到步骤64。
如果步骤68处的判定是不存在在多于最大允许数目的线程选择的时间内尚未被选择的当前不活动程序线程,那么处理继续进行到步骤72,在步骤72处将保持不活动的一个或多个线程的性能值之和被读取。当只有一个将保持活动的线程时(即,使两个程序线程交错的系统),那么该步骤72可以只是对将保持活动的程序线程的性能值的读取。然而,如果多于两个程序线程被支持为在任何给定时间活动,并且多个程序线程因而将保持活动,那么步骤72然后可以对其性能值求和。
鉴于将保持活动的程序线程的要求,步骤74然后计算将可用于下一个被选择线程的发射槽的可用部分。步骤76然后识别出新线程,该新线程根据其性能值而具有估计出的所需发射槽比例,其产生超过一的所需最小发射槽总比例。这两个线程如果按预测执行则将大体充分利用执行电路12,但是将不会为了执行资源而过度彼此竞争。步骤78然后选择识别出的线程并且处理返回到步骤64。

Claims (18)

1.一种用于处理数据的装置,包括:
执行电路,该执行电路被配置为执行程序指令;
发射控制电路,该发射控制电路被耦合到所述执行电路并且被配置为从多个程序线程中选择程序指令以组成要发射到所述执行电路的程序指令的序列,所述发射控制电路被配置为选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;以及
线程性能监视电路,该线程性能监视电路被耦合到发射控制电路并且被配置为测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述发射控制电路被配置为根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射到所述执行电路,其中,所述发射控制电路选择供在发射周期序列中的每个发射周期处发射的程序指令,并且所述多个性能值为所述多个程序线程中的每一个程序线程指示在所述发射周期序列内所述多个程序线程中的所述一个程序线程的程序指令可用于发射的发射周期的比例。
2.如权利要求1所述的装置,其中,所述发射控制电路选择从中发射程序指令的下一程序线程,使得在与当前被选择的那些程序线程相结合的情况下,被所述性能值预测为将在其中发射程序指令的发射周期的比例是超过一的最小值。
3.如权利要求1所述的装置,其中,所述发射控制电路选择从中发射程序指令的下一程序线程,使得在与当前被选择的那些程序线程相结合的情况下,将在其中发射程序指令的发射周期的比例不小于一。
4.如权利要求1所述的装置,其中,所述发射控制电路被配置为在如下情况中的任一种情况下确定所述多个程序线程中的所述一个程序线程的程序指令在发射周期内不可用于发射:
(i)将从所述多个程序线程中的所述一个程序线程中发射的下一指令对尚不可用的操作数值具有数据依赖;以及
(ii)将从所述多个程序线程中的所述一个程序线程中发射的下一指令尚有待于竞争被从存储该下一指令的存储器中提取。
5.如权利要求1所述的装置,其中,所述线程性能监视电路包括针对被选择来发射程序指令的每个程序线程的计数器,并且所述计数器被配置为根据所述多个程序线程中的相应程序线程是否具有可用于发射的程序指令来累积计数值。
6.如权利要求5所述的装置,其中,所述计数器被配置为在预定累积时段内累积所述计数值,此后所述计数值被重置并且累积被重新启动。
7.如权利要求6所述的装置,其中,所述预定累积时段是用户可配置参数。
8.如权利要求1所述的装置,其中,所述发射控制电路被配置为独立于所述多个性能值来从如下程序线程选择程序指令用于发射:在长于由所述发射控制电路做出的预定次数的线程选择的时间内尚未选择来自该程序线程的程序指令。
9.如权利要求1所述的装置,其中,所述发射控制电路被配置为在所述多个程序线程中的每一个中执行按次序的程序指令发射。
10.如权利要求1所述的装置,包括发射队列电路,该发射队列电路被配置为存储所述多个程序线程中的每一个程序线程的程序指令以形成准备好运行的指令的池。
11.如权利要求1所述的装置,其中,所述发射控制电路被配置为在线程切换事件发生之前继续从所述多个程序线程中的给定程序线程中选择要发射的程序指令,当线程切换事件发生时,所述发射控制电路根据所述多个性能值来选择程序指令将从所述多个程序线程中的哪些程序线程发射到所述执行电路。
12.如权利要求11所述的装置,其中,所述线程切换事件是如下事件中的至少一种:
(i)高速缓存存储器内的未命中;
(ii)定时器触发的事件;
(iii)由另一线程事件接替;
(iv)转换后备缓冲器内的未命中;以及
(v)外部中断请求。
13.如权利要求1所述的装置,其中,所述发射控制电路被配置为一次向所述执行电路发射一个或多个程序指令。
14.如权利要求1所述的装置,其中,所述发射控制电路被配置为使来自两个程序线程的程序指令交错。
15.一种用于处理数据的装置,包括:
执行装置,用于执行程序指令;
发射控制装置,该发射控制装置被耦合到所述执行装置并且用于从多个程序线程中选择程序指令以组成要发射到所述执行装置的程序指令的序列,所述发射控制装置选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;以及
线程性能监视装置,该线程性能监视装置被耦合到发射控制装置并且用于测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述发射控制装置根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射到所述执行装置,其中,所述发射控制装置选择供在发射周期序列中的每个发射周期处发射的程序指令,并且所述多个性能值为所述多个程序线程中的每一个程序线程指示在所述发射周期序列内所述多个程序线程中的所述一个程序线程的程序指令可用于发射的发射周期的比例。
16.一种处理数据的方法,包括以下步骤:
从多个程序线程中选择程序指令以组成要发射的程序指令的序列,所述选择步骤操作来选择所述程序指令以使得来自所述多个程序线程中的不同程序线程的程序指令被交错在所述序列内;
执行被发射的所述程序指令;以及
测量多个性能值,所述多个性能值中的每一个性能值指示所述多个程序线程中的一个程序线程的性能参数;其中
所述选择步骤根据所述多个性能值来选择程序指令将被从所述多个程序线程中的哪些程序线程发射用于执行,其中,所述选择步骤选择供在发射周期序列中的每个发射周期处发射的程序指令,并且所述多个性能值为所述多个程序线程中的每一个程序线程指示在所述发射周期序列内所述多个程序线程中的所述一个程序线程的程序指令可用于发射的发射周期的比例。
17.如权利要求16所述的方法,其中,所述选择步骤选择从中发射程序指令的下一程序线程,使得在与当前被选择的那些程序线程相结合的情况下,被所述性能值预测为将在其中发射程序指令的发射周期的比例是超过一的最小值。
18.如权利要求16所述的方法,其中,所述选择步骤选择从中发射程序指令的下一程序线程,使得在与当前被选择的那些程序线程相结合的情况下,将在其中发射程序指令的发射周期的比例不小于一。
CN201210097657.5A 2011-04-05 2012-03-30 多线程处理的线程选择 Active CN102736897B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1105724.7 2011-04-05
GB1105724.7A GB2489708B (en) 2011-04-05 2011-04-05 Thread selection for multithreaded processing

Publications (2)

Publication Number Publication Date
CN102736897A CN102736897A (zh) 2012-10-17
CN102736897B true CN102736897B (zh) 2016-03-09

Family

ID=44071959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210097657.5A Active CN102736897B (zh) 2011-04-05 2012-03-30 多线程处理的线程选择

Country Status (4)

Country Link
US (1) US8954715B2 (zh)
JP (1) JP6022173B2 (zh)
CN (1) CN102736897B (zh)
GB (1) GB2489708B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
JPWO2021255926A1 (zh) * 2020-06-19 2021-12-23

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070009A (en) * 1997-11-26 2000-05-30 Digital Equipment Corporation Method for estimating execution rates of program execution paths
JP3209205B2 (ja) * 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6578065B1 (en) * 1999-09-23 2003-06-10 Hewlett-Packard Development Company L.P. Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6918116B2 (en) * 2001-05-15 2005-07-12 Hewlett-Packard Development Company, L.P. Method and apparatus for reconfiguring thread scheduling using a thread scheduler function unit
KR100498482B1 (ko) * 2003-01-27 2005-07-01 삼성전자주식회사 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7353517B2 (en) 2003-09-25 2008-04-01 International Business Machines Corporation System and method for CPI load balancing in SMT processors
US7197652B2 (en) * 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring
US7890738B2 (en) * 2005-01-20 2011-02-15 International Business Machines Corporation Method and logical apparatus for managing processing system resource use for speculative execution
US7870406B2 (en) * 2005-02-03 2011-01-11 International Business Machines Corporation Method and apparatus for frequency independent processor utilization recording register in a simultaneously multi-threaded processor
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7631308B2 (en) * 2005-02-11 2009-12-08 International Business Machines Corporation Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors
US7853950B2 (en) * 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
EP2159685B1 (en) * 2007-06-20 2013-08-21 Fujitsu Limited Processor
US8161493B2 (en) * 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores

Also Published As

Publication number Publication date
US8954715B2 (en) 2015-02-10
GB201105724D0 (en) 2011-05-18
GB2489708B (en) 2020-04-15
GB2489708A (en) 2012-10-10
JP2012234519A (ja) 2012-11-29
JP6022173B2 (ja) 2016-11-09
CN102736897A (zh) 2012-10-17
US20120260070A1 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
CN102736897B (zh) 多线程处理的线程选择
EP1399810B1 (en) Method and apparatus for resolving instruction starvation in a multithreaded processor
EP1256054B1 (en) Method and apparatus for pausing execution in a processor
US20080263325A1 (en) System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
US10628160B2 (en) Selective poisoning of data during runahead
US11256505B2 (en) Using loop exit prediction to accelerate or suppress loop mode of a processor
KR20070055554A (ko) 스레드 라이브록 유닛
US9891972B2 (en) Lazy runahead operation for a microprocessor
TW201030610A (en) Method for performing fast conditional branch instructions and executing two types of conditional branch instructions and related microprocessor, computer program product and pipelined microprocessor
US6338133B1 (en) Measured, allocation of speculative branch instructions to processor execution units
JP5201140B2 (ja) 同時マルチスレッドの命令完了制御装置
US10740102B2 (en) Hardware mechanism to mitigate stalling of a processor core
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
KR20100005686A (ko) 쓰레드 스케줄링 장치 및 시스템
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation
EP1058186A2 (en) Issuing dependent instructions in a data processing system based on speculative secondary cache hit
JP6477248B2 (ja) 演算処理装置及び演算処理装置の処理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant