CN103942033B - 用于基于推测度量将资源分配给线程的方法和装置 - Google Patents

用于基于推测度量将资源分配给线程的方法和装置 Download PDF

Info

Publication number
CN103942033B
CN103942033B CN201410028442.7A CN201410028442A CN103942033B CN 103942033 B CN103942033 B CN 103942033B CN 201410028442 A CN201410028442 A CN 201410028442A CN 103942033 B CN103942033 B CN 103942033B
Authority
CN
China
Prior art keywords
instruction
thread
measurement
supposition
resource
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
CN201410028442.7A
Other languages
English (en)
Other versions
CN103942033A (zh
Inventor
H·杰克逊
P·罗兰
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.)
Hai Luo Software Co ltd
Mex Technology Co ltd
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to CN201810036114.XA priority Critical patent/CN108089883B/zh
Publication of CN103942033A publication Critical patent/CN103942033A/zh
Application granted granted Critical
Publication of CN103942033B publication Critical patent/CN103942033B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/30003Arrangements for executing specific machine instructions
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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 or 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Control Of Amplification And Gain Control (AREA)

Abstract

本文描述了基于推测度量将资源分配给线程。基于与每个线程关联的指令的推测程度,用于将资源分配给多个线程的方法、保留站和处理器。所述方法包括在保留站接收每个线程的推测度量。每个推测度量代表与特定线程关联的指令的推测程度。指令推测性越大,该指令就越可能被分支预测器不正确地预测。保留站然后基于推测度量将功能单元资源(例如管线)分配给线程,并且基于该分配从一个或多个线程选择若干指令。然后将所选择的指令发出到功能单元资源。

Description

用于基于推测度量将资源分配给线程的方法和装置
技术领域
这里描述的实施例通常涉及改善处理器中的并行处理。特别地,这里描述的处理器和方法实现分支预测和多线程,其中资源被基于推测度量指定给线程。
背景技术
存在大量提高中央处理单元(CPU)的吞吐量的技术。一种是通过使用超标量体系结构提高指令级别的并行度。这通过允许在每个时钟周期执行来自指令流中的不止一条指令,增加了单个线程的性能。另一种是通过使用可以允许来自不止一个线程的指令并行操作的多核或同步多线程体系结构来提高线程级别的并行度。
随着超标量体系结构宽度的增加(例如,每个时钟周期可执行的指令的数量增加),对应地,在管线里在同一时间有更多的指令可以影响程序流(例如分支)。此外,大量这些分支是有条件的,在先前的指令沿着管线进一步进展下去之前很难确定地知道这些分支的结果。因此,为了保持增加的吞吐量,使用称为“分支预测”的推测技术来预测分支的结果。通常,超标量处理器越宽,预测的推测性越大。而正确的预测能够显著提高指令吞吐量,不正确的预测指令不仅无助于指令吞吐量,而且它们还束缚了宝贵的资源。为了良好的预测精准度,分支预测硬件的尺寸变大。
尽管有这些缺点,但分支预测和其他推测性技术对于超标量处理器中良好的单线程吞吐量来说很重要。
多线程处理器通常每时钟周期每线程执行较少的指令,但是跨若干线程可以执行多个指令(通常称为同步多线程)。这些可以保持指令的高的总体吞吐量,同时具有较低的推测性的总体级别,因为每个线程并不尝试提前运行,即每个线程在任何一时刻具有较少的进行中的指令。
下面描述的实施例不限于解决已知处理器的任何或者所有缺点的实现。
发明内容
提供这个发明内容来以简化的形式介绍概念的选择,其在下面的具体实施方式中进一步描述。该发明内容并不旨在认定所述要求保护的主题的主要特征或重要特征,也不旨在用来辅助确定所述要求保护的主题的范围。
这里描述的方法、保留站和处理器用于基于与每个线程相关联的指令的推测程度,将资源分配给多个线程。该方法包括在保留站接收每个线程的推测度量。每个推测度量代表与特定线程相关联的指令的推测程度。指令推测性越大,该指令就越有可能被分支预测器不正确地预测。基于推测度量,保留站然后将功能单元资源(例如管线)分配给线程;并基于所述分配,从一个或多个线程选择若干指令。然后将选择的指令发出到功能单元资源。
第一方面提供一种在处理器的多个线程之间分配资源的方法,每个线程与多条指令相关联,该方法包括:在保留站接收多个推测度量,每个推测度量代表与特定线程相关联的指令的推测程度;基于推测度量,在保留站将功能单元资源分配给多个线程;基于功能单元资源的分配,在保留站选择与多个线程相关联的指令;以及在保留站将所选择的指令发出给所述功能单元资源。
第二方面提供了被安排用来在多个线程之间分配资源的保留站,该保留站包括:多个指令队列,每个指令队列被配置用来存储多个线程中的一个的指令;以及与多个指令队列通信的指令调度器,所述的指令调度器被配置用来:接收多个推测度量,每个推测度量代表与特定线程相关联的指令的推测程度;基于所述推测度量,将功能单元资源分配给所述多个线程;基于功能单元资源的所述分配,从所述多个指令队列选择指令;以及将所选择的指令发出给所述功能单元资源以供执行。
第三方面提供了被安排用来计算多个推测度量的推测度量计算器,该度量计算器包括:输入模块,其被被配置用来接收多条指令的信任值,每个信任值代表特定指令被正确预测的可能性;以及与输入模块通信的逻辑单元,该逻辑单元被配置用来基于信任值生成多个推测度量,每个推测度量代表与多个线程中的一个相关联的指令的推测程度。
第四方面提供了被安排用来在多个线程之间分配功能单元资源的处理器,包括:第二方面的保留站;以及与保留站通信的第三方面的推测度量计算器。
第五方面提供一种基本上如参考图1和图2描述的处理器。
第六方面提供一种基本上如参考图4描述的用来将资源分配给多个线程的方法。
这里描述的方法可以由在有形存储介质上的机器可读形式的软件执行,例如计算机程序形式,其包括计算机程序代码模块,当程序运行在计算机上时,适于执行这里所描述的任何方法的所有步骤,并且其中计算机程序可以具体实现在计算机可读介质中。有形的(或非瞬态的)存储介质的示例包括磁盘、拇指驱动、存储器卡等,但不包括传播信号。软件可以适合在并行处理器或串行处理器上执行,这样该方法步骤可以以任何合适的顺序或同时执行。
这承认了固件和软件可以是有价值的、可分别交易的商品。旨在包含其运行于“哑”或标准硬件上或控制“哑”或标准硬件的软件来执行所需的功能。也旨在包含“描述”或定义硬件的配置的软件来执行所需的功能,所述软件例如是HDL(硬件描述语言)软件,其用于设计硅芯片,或用于设置通用可编程芯片。
对于技术人员来讲明显的是,优选的特征可以适当地合并,并且可以与本发明的任何方面相结合。
附图说明
本发明的实施例将会参照以下附图通过示例的方式进行描述,其中:
图1是示例多线程超标量处理器的示意图;
图2是图1的示例保留站和相关联的功能单元的示意图;
图3是用于计算线程的推测度量的示例方法的流程图;
图4是用于基于推测度量在线程之间分配资源的示例方法的流程图;和
图5是用于发出指令到功能单元的示例方法的流程图。
贯穿各图,相同的参考数字用于指示相似的特征。
具体实施方式
本发明的实施例在下面仅通过示例的方式进行描述。这些例子代表了申请人目前所知将本发明付诸实践的最佳方法,但是它们并不是可以实现这点的唯一方法。该描述阐明了示例的功能和用于构建和运行示例的步骤的顺序。然而,相同或同等的功能和顺序可由不同的示例来完成。
这里描述的实施例结合了上面描述的超标量和多线程技术以改善处理器中的并行处理。特别地,这里描述的处理器和方法实现分支预测和多线程,其中资源被基于推测度量指定给线程。每个推测度量代表与特定的线程关联的指令的推测程度。指令推测性越大,该指令就越可能曾被不正确地预测。通过将资源分配给具有较少推测性指令的线程,并且对应地从具有较多推测性指令的线程释放(de-allocate)资源,处理器的吞吐量可以增加。具体而言,减缓从具有多个推测性指令的线程发出指令可以减少在管线中被不正确预测的指令的数量,所述指令有可能再次绕回(re-wind),因此不是资源的有效使用。
现在参考图1,其示出了具有两个线程102和104的多线程超标量处理器100,其中基于每个线程的推测度量将资源动态指定或分配给线程102或104。虽然图1的示例显示了具有两个线程102和104的多线程超标量处理器,但对于本领域的技术人员来说明显的是,这里描述的方法和原理可以同样应用于具有多于两个线程的处理器。
每个线程102和104包括:提取阶段106或108,其被配置为如程序计数器(PC)所指出的从程序取指令(以程序次序);以及解码和重命名阶段110或112,其被安排用来解释指令和执行寄存器重命名。如本领域技术人员所知,通过消除某些依赖性,例如先读后写(WAR)依赖关系,寄存器重命名能够使更多的指令无序执行。
在指令经过重命名阶段110或112后,所述指令(a)被提供给多个无序管线118以供执行;和(b)被插入到重排序缓冲区114或116(ROB)。重排序缓冲区114或116是使指令能够无序执行但顺序提交的缓冲区。重排序缓冲区114或116以程序次序保有插入它的指令,但在ROB 114或116内的指令可以通过无序管线118不按顺序执行。指令在它们被无序管线118执行之后,从重排序缓冲区114或116以程序次序输出到提交阶段120或122。提交阶段120或122然后提交指令的结果到寄存器/存储器。
在一些例子中,重排序缓冲区114或116可以形成为这样的循环缓冲区:头指向在ROB 114或116中的最旧的指令,尾指向在ROB 114或116中最新的指令。在这些例子中,当指令已经被无序管线118执行时,将所述指令从ROB 114或116的头输出,并且该头递增到ROB中下一个指令。
每个线程102和104还包括分支预测器124或125,其被设置用来在已知指令(例如分支指令)会造成可能的流变化的情况下预测程序流将会采用哪个方向。分支预测是有用的,因为它使指令在已知分支指令的结果之前能够由处理器100推测性地执行。每个分支预测器124或125可与对应的提取阶段106或108、解码和重命名阶段110或112和/或无序管线118通信。例如,提取阶段106和108可以使用来自对应的分支预测器124或125的信息来确定下一个提取哪个指令;解码和重命名阶段110和112可以提供信息到分支预测器124或125,指示哪些指令是分支指令(在其他情况下,指令可以在提取阶段106或108被解码);以及无序管线118可以为分支预测器124和125提供指示更新程序计数器的信息。
在一些情况下,除了预测程序将采用的方向,分支预测器124或125也可以生成每个预测的信任值。该信任值指示了预测是正确的可能性。在一些情况下,信任值越高,预测是正确的可能性越大;而信任值越低,预测是不正确的可能性越大。信任值可以是任何合适的形式。例如,信任值可以是以一位或多位实现的整数或百分比。当仅有一位用于每个信任值时,“0”可以指示不信任或0%信任,“1”可以指示信任或100%信任。所使用的位越多,可以指定的信任值越不同。
可以使用任何合适的方法或技术来确定信任值。例如,在一些情况下,对于特定的分支预测的信任值是使用二位饱和计数器计算的。每一次分支被采用,相关联的计数器会递增。同样,当分支没有被采用时,计数器则递减。如果在任何时间计数器具有低值(例如0或1),则分支很可能不被采用,并且如果计数器具有高值(例如2或3),则分支很可能被采用。在这种技术中,当分支多次以相同方式行进(例如采用或不采用)时,预测的信任增加。因此,极值(例如0和3)可以指示高信任,中值(例如1或2)可以指示低信任。其他可用于生成信任值的技术描述于Grunwald等人发表于ISCA'98Proceedings of the 25th annualinternational symposium on Computer architecture的论文“Confidence Estimationby Speculation Control”,122-131页。
处理器100还包括推测度量计算器126,其被配置为基于与线程关联的分支预测的信任值生成每个线程的推测度量。推测度量代表与线程关联的指令的推测程度。指令推测性越大,越可能曾对指令进行过不正确的预测。相反,指令推测性越小,越有可能对指令进行了正确的预测。
在一些情况下,推测度量计算器126可以被配置为:通过求和或者合并与那个线程关联的预定数量的指令的信任值,为特定的线程计算推测度量。
在其他情况下,推测度量计算器126可以被设置用来跟踪当分支通过处理器100时所述分支的信任值。当分支被预测时,推测度量计算器126可以添加相关联的信任值到适当线程的推测度量。一旦分支方向是已知的(即它已被执行),推测度量计算器126就可以从推测度量减去相关联的信任值。这可以产生比求信任值的和更准确的推测度量,但从实现所需的硬件上讲可能成本更高。
然后,由推测度量计算器126计算出的推测度量被提供给无序管线118,在那里它们被用来给线程分配资源。例如,在一些情况下,相比与较少推测性指令相关联的线程,给与较多推测性指令相关联的线程分配较少的资源。这可以通过减少管线中的错误路径(或不正确预测的)指令的数量来改善处理器的整体吞吐量。具体而言,减缓从具有多个推测性指令的线程指令可以减少管线中错误路径(或不正确预测的)指令的数量,所述指令有可能再次绕回,因此不是资源的有效使用。
在一些情况下,推测度量计算器126可以包括:输入模块132,用于从分支预测器124和125接收信任值;和逻辑单元134,用于基于接收到的信任值计算推测度量。输入模块132和/或逻辑单元134可以在硬件逻辑中实现。
如图1所示,无序管线118可以包括多个保留站128a、128b和128c,每个保留站与功能单元130a、130b或130c相关联。每个功能单元130a、130b和130c负责执行指令并可以包括一个或多个功能单元管线。功能单元130a、130b和130c可以被设置用来执行特定类型的指令。例如,一个或多个功能单元130a、130b和130c可以是加载/存储单元、整数单元、浮点单元(FPU)、数字信号处理(DSP)/单指令多数据(SIMD)单元、或者乘法累加(MAC)单元。加载/存储单元执行加载和存储存储器指令,整数单元执行整数指令,FPU执行浮点指令,DSP/SIMD单元具有多个处理元件同时在多个数据点执行相同的操作,以及MAC单元计算两个数的乘积并把那个乘积加到累加器。功能单元和其中的管线可能有不同的长度和/或复杂性。例如,FPU管线通常比整数执行管线更长,这是因为它通常执行更加复杂的操作。
保留站128a、128b和128c从线程102和104接收指令,并且基于由推测度量计算器126计算出的推测度量将功能单元资源(例如管线)分配给线程102和104。尽管图1显示了保留站128a、128b和128c与功能单元130a、130b和130c之间一对一的关系,但在其他情况下,可能有保留站128a、128b和128c与功能单元130a、130b和130c之间一对多的关系。例如,在一些情况下,保留站128a、128b和128c中至少一个可以被配置用来向多个功能单元130a、130b和/或130c提供指令。在其他情况下,可能只有单一的保留站128a、128b或128c被配置用来向所有的功能单元130a、130b和130c提供指令。将参考图2更详细的描述示例保留站128和相关联的功能单元130。
现在参考图2,其示出了图1的示例保留站128和相关联的功能单元130。如上所述,保留站128:(a)基于由推测度量计算器126计算出的推测度量,将功能单元130资源(例如管线)分配或指定给线程102和104;然后(b)基于所述分配,从线程发出指令到功能单元130资源(例如管线)。
图2的示例性保留站128包括用于处理器100中每个线程的指令队列202和204。在图1的处理器100中,有两个线程102和104,因此示例性保留站128具有两个指令队列202和204。然而,对于本领域的技术人员而言明显的是,保留站128可以根据处理器中的线程数量而具有更多或更少的指令队列。
每个指令队列202和204从对应的线程102或104的解码和重命名阶段110或112接收指令,并且将每个指令存储在可用的条目或槽中。指令在队列中等待,直到它的输入操作数的值可用。具体来说,保留站128可以监控功能单元130的输出,以发现在指令队列中每个指令的缺失操作数(就绪位设置为0的操作数)的匹配。一旦保留站128发现缺失操作数的匹配,它就为所述操作数将就绪位设置为1。在一些情况下,保留站128也从功能单元130输出拷贝操作数到指令队列。在其他情况下,在指令已经被发出给功能单元130后,从适当的寄存器文件读出操作数的值。例如,管线208、210、212或214的第一阶段可以被配置用来从适当的寄存器文件中读取操作数的值。这可以减少在从功能单元130输出复制操作数的值的情况下功能单元130和保留站128之间的连接数量。
一旦指令的所有操作数的值是可用的,则宣称指令为执行做好了准备,并且可以为那个指令设置就绪位来指示:指令准备好被发出到功能单元130。指令的操作数的值可以在更早、更晚的指令之前可用,使它可以在那些更早、更晚的指令之前离开队列。
图2的示例性保留站128还包括指令调度器206,其被配置用来从指令队列202和204发出指令到功能单元130以供执行。
功能单元130包括一个或多个相似管线208、210、212和214用以执行指令。图2的示例性功能单元130包括四个管线208、210、212和214;然而,对于本领域的技术人员明显的是,功能单元130可以包括更多或更少的管线。
每个时钟周期里,指令调度器206尝试为每个管线208、210、212和214提供来自指令队列202和204中的一个的指令。在传统的超标量、多线程处理器中,基于简单度量(例如,每个线程可以被分配相等数量的管线;或者基于线程性能而将管线分配给线程)将资源分配给线程。例如,如果有两个线程和四个管线(例如图2所示的例子),则每个线程可以自动分配两个管线。这意味着,指令调度器206尝试从第一指令队列202中选择两个就绪指令,从第二指令队列204中选择两个就绪指令,然后将选择的指令发出到管线208、210、212和214。
然而,如果在特定的指令队列202或204中没有两个就绪指令,则指令调度器206可以从其他队列选择就绪指令,这样向每个管线发出指令。如上所述,当指令的所有操作数的值可用时,宣称指令就绪。
就绪的指令可以优先。例如,它们可以在程序次序上或者在保留站中的时间长度上优先。通常最高优先级的指令被选择首先发出。
在图1和2显示的示例中,不是简单地在线程102和104之间同等地分配功能单元资源,而是指令调度器206使用由推测度量计算器126计算出的推测度量,来将功能单元130资源(例如管线208、210、212和214)分配给不同的线程102和104。
在一些情况下,指令调度器206被配置用来基于推测度量的比较来分配功能单元130资源(例如管线208、210、212和214)。例如,指令调度器206可以被配置用来:将附加功能单元130资源(例如管线208、210、212和214)分配给线程,其中该线程的推测度量指示线程与较少推测性指令相关联;以及用来从线程对应地释放资源,其中该线程的推测度量指示线程与较多推测性指令相关联。
当较高的推测度量指示线程与较少推测性指令相关联,并且较低的推测度量指示线程与较多推测性指令相关联时,指令调度器206可以将更多的功能单元130资源(例如管线208、210、212和214)分配给具有较高的推测度量的线程。例如,指令调度器206可以将三个管线(例如管线208、210和212)分配给具有较高的推测度量的线程(例如线程0),而仅将一个管线(例如管线214)分配给具有较低的推测度量的线程(例如线程1)。在这个示例中,在适当的时钟周期,从与具有较高推测度量的线程(例如线程0)相关联的指令队列(例如指令队列202)选择三个就绪指令,而从与具有较低推测度量的线程(例如线程1)相关联的指令队列(例如指令队列204)仅选择一个就绪指令。
在一些情况下,如果推测度量和至少一个其他推测度量之间的差超过预定阈值,指令调度器206可以被配置为仅将额外的资源分配给具有较少推测性指令的线程。这是为了确保当推测度量指示相似级别的风险或推测时,系统不从一个线程带走资源并把它们给另一个线程。
在一些情况下,如果两个推测度量之间的差超过第一预定阈值,那么指令调度器206可以被配置用来:从与较低推测度量相关联的线程释放功能单元130资源(例如管线208、210、212或214)之一,并将那个功能单元130资源(例如管线208、210、212或214)重新分配给与较高推测度量相关联的线程。在一些情况下,如果两个推测度量之间的差超过第二预定阈值,则指令调度器206可以被配置用来:释放所有被分配给具有较低推测度量的线程的功能单元130资源(例如管线208、210、212或214),并且将那些功能单元130资源(例如管线208、210、212或214)重新分配给具有较高推测度量的线程。
在一些情况下,在确定是否从一个线程重新分配资源到另一个线程时,指令调度器206可以进一步被配置为考虑实际的推测度量。例如,如果第一线程的推测度量为0,第二线程的推测度量为2,即使差大于预定的阈值(例如1),指令调度器206也可以不在两个线程之间重新分配资源,因为两个线程的推测度量指示与其相关联的指令是高推测性的。相反,如果第一线程的推测度量为6,第二线程的推测为8,则指令调度器206可以在两个线程之间重新分配资源,因为差大于预定的阈值(例如1),并且推测度量为8指示与第二线程相关联的指令不是非常有风险的或推测性的。
在一些情况下,在每个时钟周期,指令调度器206可以被配置用来执行以推测度量为基础的分配。然而,在每个时钟周期执行分配需要大量的电力。因此,为了节约电力,在一些情况下,指令调度器206可以被配置为周期性地(例如每4、8或16个时钟周期)执行以推测度量为基础的分配。因为在每个周期指令仍发出到管线208、210、212和214,所以在不执行分配的周期,指令调度器206可以被配置为使用最近计算出的分配来发出指令。然而,与在另一线程不能使用所有分配给它的资源(例如管线)的情况下的分配中所规定的相比,使用最近计算出的分配不会阻止指令调度器206发出来自特定线程更多的指令。具体地说,如果线程没有足够的就绪指令来使用所有分配给它的资源(例如管线),那么指令调度器206可以从另一线程选择额外的就绪指令来使用资源(例如管线)。
在一些情况下,软件程序员可以有能力为每个线程选择可接受的风险级别。特别是软件程序员可以有能力为每个线程设置可以接受的推测度量。这在特定程序看起来有风险(例如高推测性的)但是对于该特定程序的预测往往是正确的时是有用的。在这些情况下,仅当线程的推测度量指示风险高于可接受的风险时,资源将被重新分配给另一线程,否则资源将根据默认分配而被划分。默认分配可以通过软件程序员或硬编码配置。在一些情况下,默认分配设置为每个线程被分配相等数量的资源。例如,当较低的推测度量指示较高风险或推测性的线程,且较高的推测度量指示较低风险或推测性的线程时,如果那个线程的推测度量低于由程序员设置的可接受的推测度量,则指令调度器206可以被配置用来从线程释放资源。
因为每个管线208、210、212和214能够以来自不止一个线程的指令结束,当指令调度器206发出指令到管线208、210、212和214时,它也可以向管线208、210、212和214提供指令与哪个线程相关联的指示。然后,如果不正确预测的指令发生在管线208、210、212和214,要求管线208、210、212和214绕回,则管线208、210、212和214可以仅仅绕回或清除那些与具有不正确预测的指令的线程相关联的指令,而不是绕回所有指令。在一些情况下,不正确预测的指令可以被允许在管线208、210、212或214中继续,直到所有的指令等到不正确预测的指令已被执行。在那时,来自特定线程的、在管线208、210、212和214和保留站128中的所有指令已经发生在不正确预测的指令之后,并且需要绕回或清除。
在一些情况下,指令调度器206可以被配置用来对具有管线中不正确预测的指令的任意线程去除优先级。一旦知道线程具有管线中不正确预测的指令,则可以保证存在与这个线程相关联的指令将被从管线中清除。具体而言,在不正确预测的指令之后的那个线程的管线中的任何指令均将必须被清除。因此,对任何具有不正确预测的指令的线程去除优先级,减少了在管线中将会被不得不清除的指令的数量。
一旦线程已被识别为具有管线中不正确预测的指令,线程可以被分配没有或预定的最小数量的资源(例如一个管线)。当线程不被分配任何资源时,来自那个线程的指令仅当从其他线程没有足够的指令来满足分配时,才可以被发出到管线。
在一些情况下,在预定的时间段之后、在线程的性能降低到预定阈值以下之后、或者在管线已经为那个线程被清除了之后,可以以正常方式(例如基于推测度量)分配资源给具有不正确预测的指令的线程。
现在参考图3,其示出了方法300,该方法可以由图1的推测度量计算器126执行,用来确定特定线程的推测度量。在步骤302中,推测度量计算器126从分支预测器124接收针对特定线程(例如线程0)的特定分支预测的信任值。如上所述,信任值代表预测是正确的可能性。在一些情况下,信任值越高则预测就越有可能是正确的,信任值越低则预测就越有可能是不正确的。一旦已接收到信任值,方法300进行到步骤304。
在步骤304中,推测度量计算器126把接收到的信任值加到特定线程(例如线程0)的推测度量。一旦信任值被加到特定线程的推测度量,方法300进行到步骤306。
在步骤306中,推测度量计算器126确定是否已达到预定数量的周期(例如八个周期)。特别地,在一些情况下,特定线程的推测度量是在预定数量的周期数上通过求和或组合信任值而计算出的。预定数量的周期选择为足够大,使得系统不会太快地分配或释放资源(例如,如线程具有一个高推测性的指令那么快),但是足够小,使得它会响应与线程相关联的指令的推测性质中的通常变化。预定数量的周期可以基于实验进行调整。如果预定数量的周期已达到,则方法300行进到步骤308。然而,如果预定数量的周期没有达到,那么方法300回到步骤302。
在步骤308中,推测度量计算器126为保留站128提供推测度量。在步骤310中,重新设置推测度量。一旦推测度量已被重新设置,方法300回到步骤302。
可以为处理器中的每个线程并行运行方法300的实例。
虽然方法300描述了在预定数量的周期数上通过对信任值求和来计算推测度量,但是在其他实施例中,取代在预定数量的周期之后重新设置推测度量,推测度量计算器126可以监控任何通过处理器的分支,并且一旦被执行,则从推测度量减去与特定分支相关联的信任值。在这些情况下,推测度量可周期性采样,并提供给保留站以执行分配。
此外,方法300描述了在预定数量的周期上通过对信任值求和来计算推测度量,但是在其他实施例中,可以在预定数量的指令上通过对信任值求和来计算推测度量。在这些实施例中,推测度量计算器126可以被配置用来接收来自另一阶段或部件的输入,例如提取阶段106或108,其指示已处理的指令数量。
现在参考图4,其示出了方法400,该方法可以由图2的指令调度器206执行,用于基于与线程相关联的推测度量在多个线程之间分配资源。在步骤402中,指令调度器206确定自上次分配后是否发生了预定数量的周期。如果发生了预定数量的周期,则方法行进到步骤404。然而,如果预定数量的周期尚未发生,那么方法回到步骤402。
预定数量的周期确定多久进行一次分配。例如,如果预定数量的周期被设置为1,那么每个时钟周期可以执行分配。然而,如果预定数量的周期大于1(例如4、8或16),那么仅可以周期性地进行分配。
在一些情况中,方法400中使用的周期的预定数量与方法300中使用的周期的预定数量相同。这保证了时间和资源没有被推测度量计算器126和/或指令调度器206浪费。例如,如果方法300中使用的周期的预定数量少于方法400中使用的周期的预定数量,那么推测度量计算器126可能正在浪费时间和资源来计算不会被指令调度器206使用的推测度量。相似地,如果方法300中使用的周期的预定数量大于方法400中使用的周期的预定数量,那么指令调度器206可能正在浪费时间和资源来基于自上次分配后没有变化的推测度量来分配功能单元资源。
在方法400中使用的周期的预定数量与方法300中使用的周期的预定数量相同的情况下,可以存在单一的计数单元用来对周期数进行计数。在一些情况下,当已达到预定数量的周期时,单一的计数单元可以将指示提供给推测度量计算器126和指令调度器206。在其他情况下,计数单元可以将指示提供给推测度量计算器126,推测度量计算器126作为响应将推测度量提供给指令调度器206。在这些情况下,当指令调度器206从推测度量计算器126接收到推测度量时,指令调度器206可以确定已达到预定数量的周期。在另一些情况下,计数单元可以将指示提供给指令调度器206,指令调度器206作为响应从推测度量计算器126请求推测度量。在这些情况下,当推测度量计算器126接收到来自指令调度器206的请求时,推测度量计算器126可以确定已达到预定数量的周期。
在步骤404中,指令调度器206接收和存储来自推测度量计算器126的每个线程(例如线程102和104)的推测度量。如上所述,在一些情况下,一旦已达到预定数量的周期,指令调度器206就从推测度量计算器126拉取(pull)推测度量。在其他情况下,一旦已达到预定数量的周期,推测度量计算器126就将推测度量提供给指令调度器206。一旦指令调度器206已接收到推测度量,方法400进行到步骤406。
在步骤406中,指令调度器206基于接收到的推测度量将功能单元130资源(例如管线208、210、212和214)分配给线程(例如线程102和104)。在一些情况下,将功能单元130资源(例如管线208、210、212和214)分配给线程包括比较不同线程的推测度量。例如,指令调度器206可以被配置用来:将额外的资源分配给推测度量指示较少推测性的指令集的线程,并且对应地释放已分配给推测度量指示较多推测性的指令集的线程的资源。在较高推测度量指示较低风险或推测性的指令集而较低推测度量指示较高风险或推测性的指令集的情况下,指令调度器206可以被配置用来将额外的资源分配给与较高推测度量相关联的线程,并且对应地释放已分配给具有较低推测度量的线程的资源。
例如,如图2所示有四个管线(例如管线208、210、212和214)和两个线程(例如线程0和线程1),每个线程初始可以被分配两个管线。在接收到线程的推测度量之后,指令调度器可以增加分配给具有较高推测度量的线程(如线程0)的资源,这样它分配了三个管线,并且对应地减少分配给具有较低推测度量的线程(例如线程1)的资源,这样它仅分配了一个管线。
在其他情况下,如果推测度量和至少一个其它推测度量之间的差超过预定阈值,则将资源仅分配给推测度量指示较少推测性的指令集的线程。
在另外的情况下,将功能单元130资源(例如管线208、210、212和214)分配给线程包括:比较线程的推测度量和程序员设置的可接受的推测度量。如上所述,程序员可能有能力为每个线程设置可接受的推测度量级别。
在这些情况下,如果特定线程的推测度量降低到为那个线程规定的可接受的推测度量以下,则资源(例如管线208、210、212和214)被从那个线程释放,并重新分配给另一线程。例如,如图2所示如果有两个线程(例如线程0和线程1)和四个管线(例如管线208、210、212和214),并且每个线程初始分配了两个管线,如果一个线程(例如线程1)的推测度量低于为那个线程规定的可接受的推测度量,那么为那个线程(例如线程1)分配的资源可以下降,这样线程仅分配一个管线,并且对应地分配给另一线程(例如线程0)的资源可以增加,这样它配置了三个管线。
在一些情况下,当每个线程的推测度量低于其相关联的可接受的推测度量时,那么可以基于默认分配而对线程分配资源。在一些情况下,默认分配可以指定资源将在线程之间相等地分配。
现参考图5,其示出了方法500,该方法可由图2的指令调度器206执行,用于从多个线程102和104发出指令到功能单元130。
在步骤502中,指令调度器206基于分配给线程的资源数量,从将被发出给功能单元130的线程选择指令。例如,可以根据方法400完成分配。在一些情况下,从每个线程选择的指令的数量基于分配给每个线程的管线数量。例如,如果一个线程分配了三个管线,而另一线程分配了一个管线,那么指令调度器206可以尝试从分配了三个管线的线程选择三条指令,且从分配了一个管线的线程选择一条指令。正如上面提到的,仅当指令准备好执行时,它才可以被选择用于执行(即,它的操作数的值是可用的)。因此,有可能指令调度器206无法按照分配给线程的资源来选择足够的就绪指令以填充管线。因此,在指令调度器206基于资源分配已经选择了将发出到功能单元的指令之后,方法500进行到步骤504。
在步骤504中,指令调度器206确定指令调度器206是否能够在步骤502中选择足够的就绪指令来填充对应的功能单元130中的管线。如果确定在步骤502中选择了足够的就绪指令来填充对应的功能单元130中的管线(例如每个管线一条指令),那么方法500直接进行到步骤508。然而,如果确定在步骤502中没有选择足够的就绪指令来填充对应的功能单元130中的管线(例如每个管线小于一条指令),那么方法进行到步骤506。
在步骤506中,指令调度器206尝试从任何线程选择额外的就绪指令来填充管线。例如,如果有四个管线,且指令调度器206仅能够根据分配在步骤502中选择三条就绪指令,那么指令调度器206可以尝试从任何线程选择一条额外的就绪指令来填充管线。然而,有可能从任何线程都没有更多的就绪指令。因此,一旦选择完成或者确定没有额外的就绪指令,方法500进行到步骤508。
在步骤508中,通过在管线的开始写入指令代码和操作数的值,指令调度器206尝试发出一条选择的指令到每个管线208、210、212和214。例如,如果有四个管线并且从步骤502和步骤506选择了四条指令,那么一条选择的指令发出到每个管线。然而,如果有四个管线并且从步骤502和步骤506仅选择了三条指令,那么一条选择的指令发出到三个管线中的每个。
哪条指令被发出到哪个管线一般不重要。然而,在一些情况下,来自特定线程的指令可能会以预定的顺序发出到管线。例如,如图2所示,如果有四个管线编号0至3,从第一线程(例如线程0)选择的任何指令可以以升序首先发出到第一管线(例如管线0)然后到后续管线(例如管线1);从第二线程(例如线程1)选择的任何指令可以以降序首先发出到最后的管线(例如管线3)然后到后续管线(例如管线2)。一旦选择的指令被发出到管线以供执行,方法500结束。
在一些情况下,方法500在每个时钟周期执行一次。
这里给出的任何范围或设备值均可以被扩展或改变而不丧失所追求的效果,这对于技术人员来说是明显的。
应当理解,上述好处和优点可以与一个实施例有关,或者与几个实施例有关。实施例不限于那些解决任何或所有所述问题的实施例,或者那些有任何或所有所述好处和优点的实施例。
任何关于“一”项目的引用是指一个或多个那些项目。本文所使用的术语“包括”意思是包括识别出的那些方法块或元件,但那样的块或元件不包括排他性的列表,并且方法或装置可以包含额外的块或元件。
这里所描述的方法的步骤可以以任何合适的顺序进行,或者在适当的地方同时进行。此外,个别的块可以从任何的方法删除而不偏离这里描述的主题的精神和范围。任何上述示例的方面可以结合描述的任何其他示例的方面来形成进一步的示例,而不丧失所追求的效果。附图的元件显示为通过箭头连接,应当领会,这些箭头仅仅显示了元件之间的一个示例通信流(包括数据和控制消息)。元件之间的流可以是任何方向或双方向的。
应当理解,以上对优选实施例的描述仅是通过示例的方式给出的,并可以由本领域的技术人员做出各种修改。尽管上面描述的各种实施例具有一定程度的特定性,或参考了一个或多个个别实施例,但本领域技术人员可以对公开的实施例做出许多修改而不脱离本发明的精神或范围。

Claims (10)

1.一种在处理器的多个线程之间分配资源的方法,每个线程与多条指令相关联,所述方法包括:
在保留站接收多个线程中每个线程的推测度量,每个推测度量代表与该线程相关联的指令的推测程度;
基于所述推测度量,在所述保留站将功能单元资源分配给所述多个线程,包括:
比较所述推测度量以识别具有较少推测性指令的线程;
确定具有较少推测性指令的线程的推测度量和另一线程的推测度量之间的差;以及
响应于确定所述差超过阈值,将额外的功能单元资源分配给具有较少推测性指令的线程(406);
基于功能单元资源的分配,在所述保留站选择与多个线程相关联的指令(502);以及
在所述保留站将所选择的指令发出到功能单元资源(508)。
2.根据权利要求1所述的方法,进一步包括:
在推测度量计算器处接收所述多条指令的信任值(302),每个信任值代表特定指令已被正确预测的可能性;
基于所述信任值,在所述推测度量计算器处生成推测度量(304、306、310);以及
从所述推测度量计算器将推测度量提供给所述保留站(308)。
3.根据权利要求2所述的方法,其中生成特定线程的推测度量包括:对在预定数量的周期上与所述特定线程相关联的指令的信任值求和(304、306、308、310)。
4.根据权利要求2所述的方法,其中生成特定线程的推测度量包括:将与关联所述特定线程的特定指令相关联的生成的信任值加到所述特定线程的推测度量,并且一旦相关联的指令已被执行,就从所述特定线程的推测度量减去信任值。
5.根据前述任一权利要求所述的方法,其中功能单元资源的分配是在每时钟周期执行一次。
6.根据权利要求1至4中任何一项所述的方法,其中功能单元资源的分配是周期性地执行的。
7.根据权利要求1至4中任何一项所述的方法,其中功能单元资源包括多个管线,并且将功能单元资源分配给线程包括:不分配、分配一个或者多个管线给每个线程。
8.根据权利要求7所述的方法,其中基于分配选择与多个线程相关联的指令包括:从特定线程选择若干就绪指令,其中就绪指令的数量等于分配给所述特定线程的管线的数量。
9.根据权利要求8所述的方法,其中如果基于分配选择的指令的数量少于管线的数量(504),则从任何线程选择就绪指令以使得选择的指令的数量等于管线的数量(506)。
10.一种包括被安排用来在多个线程(102、104)之间分配资源的保留站(128)的装置(100),所述保留站(128)包括:
多个指令队列(202、204),每个指令队列被配置用来存储多个线程中的一个的指令;以及
与所述多个指令队列通信的指令调度器(206),所述指令调度器被配置用来:
接收每个线程的推测度量,每个推测度量代表与该线程(102、104)相关联的指令的推测程度;
基于所述推测度量,将功能单元(130)资源(208、210、212、214)分配给所述多个线程(102、104),包括:
比较所述推测度量以识别具有较少推测性指令的线程(102、104);
确定具有较少推测性指令的线程(102、104)的推测度量和另一线程(102、104)的推测度量之间的差;以及
响应于确定所述差超过预定阈值,将额外的功能单元(130)资源(208、210、212、214)分配给具有较少推测性指令的线程(102、104);
基于功能单元(130)资源(208、210、212、214)的分配,从所述多个指令队列(202、204)选择指令;以及
将所选择的指令发出到功能单元(130)资源(208、210、212、214)以供执行。
CN201410028442.7A 2013-01-21 2014-01-21 用于基于推测度量将资源分配给线程的方法和装置 Active CN103942033B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810036114.XA CN108089883B (zh) 2013-01-21 2014-01-21 基于推测度量将资源分配给线程

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1301041.8 2013-01-21
GB1301041.8A GB2509974B (en) 2013-01-21 2013-01-21 Allocating resources to threads based on speculation metric

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810036114.XA Division CN108089883B (zh) 2013-01-21 2014-01-21 基于推测度量将资源分配给线程

Publications (2)

Publication Number Publication Date
CN103942033A CN103942033A (zh) 2014-07-23
CN103942033B true CN103942033B (zh) 2018-02-13

Family

ID=47843655

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810036114.XA Active CN108089883B (zh) 2013-01-21 2014-01-21 基于推测度量将资源分配给线程
CN201410028442.7A Active CN103942033B (zh) 2013-01-21 2014-01-21 用于基于推测度量将资源分配给线程的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810036114.XA Active CN108089883B (zh) 2013-01-21 2014-01-21 基于推测度量将资源分配给线程

Country Status (4)

Country Link
US (2) US9086721B2 (zh)
CN (2) CN108089883B (zh)
DE (1) DE102014000384A1 (zh)
GB (2) GB2514956B (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
KR101966712B1 (ko) * 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2016097791A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
WO2016097814A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
WO2016097793A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on off-die control element access in out-of-order processor
US10146546B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Load replay precluding mechanism
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10108427B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10095514B2 (en) 2014-12-14 2018-10-09 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US9645827B2 (en) 2014-12-14 2017-05-09 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on page walks in an out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US9703359B2 (en) 2014-12-14 2017-07-11 Via Alliance Semiconductor Co., Ltd. Power saving mechanism to reduce load replays in out-of-order processor
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
WO2016097790A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
WO2016097792A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor
WO2016097802A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on long load cycles in an out-order processor
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US10114794B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
JP6286068B2 (ja) 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム
US20160274915A1 (en) * 2015-03-20 2016-09-22 Qualcomm Incorporated PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
JP2018019152A (ja) * 2016-07-26 2018-02-01 ルネサスエレクトロニクス株式会社 電源制御コントローラ、半導体装置及び半導体システム
US10896130B2 (en) * 2016-10-19 2021-01-19 International Business Machines Corporation Response times in asynchronous I/O-based software using thread pairing and co-execution
GB2580178B (en) * 2018-12-21 2021-12-15 Imagination Tech Ltd Scheduling tasks in a processor
US11068303B2 (en) * 2019-02-19 2021-07-20 International Business Machines Corporation Adjusting thread balancing in response to disruptive complex instruction
CN111538535B (zh) * 2020-04-28 2021-09-21 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
US11847458B2 (en) 2021-07-02 2023-12-19 International Business Machines Corporation Thread priorities using misprediction rate and speculative depth

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740417A (en) * 1995-12-05 1998-04-14 Motorola, Inc. Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states
US20040003215A1 (en) * 2002-06-28 2004-01-01 Evgeni Krimer Method and apparatus for executing low power validations for high confidence speculations
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US7334143B2 (en) * 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
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
EP2523101B1 (en) * 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8006070B2 (en) * 2007-12-05 2011-08-23 International Business Machines Corporation Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
US7849387B2 (en) * 2008-04-23 2010-12-07 Intel Corporation Detecting architectural vulnerability of processor resources
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US9619301B2 (en) * 2011-04-06 2017-04-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core memory model and speculative mode processor management
CN102566974B (zh) * 2012-01-14 2014-03-26 哈尔滨工程大学 基于同时多线程的取指控制方法
GB2506458B (en) * 2013-01-15 2015-01-14 Imagination Tech Ltd Method and circuit for controlling an automatic gain control circuit

Also Published As

Publication number Publication date
GB201416129D0 (en) 2014-10-29
GB2509974B (en) 2015-04-01
GB2514956A (en) 2014-12-10
GB201301041D0 (en) 2013-03-06
US9606834B2 (en) 2017-03-28
US20140218224A1 (en) 2014-08-07
DE102014000384A1 (de) 2014-07-24
CN103942033A (zh) 2014-07-23
CN108089883B (zh) 2021-10-01
CN108089883A (zh) 2018-05-29
US20150301863A1 (en) 2015-10-22
GB2509974A (en) 2014-07-23
US9086721B2 (en) 2015-07-21
GB2514956B (en) 2015-04-01

Similar Documents

Publication Publication Date Title
CN103942033B (zh) 用于基于推测度量将资源分配给线程的方法和装置
US8464271B2 (en) Runtime dependence-aware scheduling using assist thread
KR102074961B1 (ko) 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치
US8230177B2 (en) Store prefetching via store queue lookahead
US8301865B2 (en) System and method to manage address translation requests
US9122487B2 (en) System and method for balancing instruction loads between multiple execution units using assignment history
US7831812B2 (en) Method and apparatus for operating an age queue for memory request operations in a processor of an information handling system
US8887165B2 (en) Real time system task configuration optimization system for multi-core processors, and method and program
US20100318998A1 (en) System and Method for Out-of-Order Resource Allocation and Deallocation in a Threaded Machine
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
KR101730282B1 (ko) 지연된 재구성된 프로그램 순서를 이용한 선택 로직
CN103119580A (zh) 异构多处理器计算平台中的应用调度
WO2011155097A1 (ja) 命令発行制御装置及び方法
US8898390B2 (en) Scheduling workloads based on cache asymmetry
JP2010527071A (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス命令
US10372458B2 (en) Method and apparatus for a self-clocked, event triggered superscalar processor
US8504805B2 (en) Processor operating mode for mitigating dependency conditions between instructions having different operand sizes
US8943503B2 (en) Apparatus and method for thread progress tracking using deterministic progress index
US20140258697A1 (en) Apparatus and Method for Transitive Instruction Scheduling
CN109032665A (zh) 微处理器中指令输出处理方法及装置
JP7553551B2 (ja) スレッド調停を通じて実施されるスレッド共有リソースのソフトウォーターマーキング
JP7032647B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP6477248B2 (ja) 演算処理装置及び演算処理装置の処理方法
JP6381019B2 (ja) 情報処理装置及び制御方法
US12118355B2 (en) Cache coherence validation using delayed fulfillment of L2 requests

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Hertfordshire

Patentee after: Mex Technology Co.,Ltd.

Address before: Hertfordshire

Patentee before: Hai Luo Software Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20180720

Address after: California, USA

Patentee after: Imagination Technologies Ltd.

Address before: Hertfordshire

Patentee before: Mex Technology Co.,Ltd.

Effective date of registration: 20180720

Address after: Hertfordshire

Patentee after: Hai Luo Software Co.,Ltd.

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.

TR01 Transfer of patent right