CN102414659A - 用于在多线程微处理器中调度指令的发布的方法和设备 - Google Patents

用于在多线程微处理器中调度指令的发布的方法和设备 Download PDF

Info

Publication number
CN102414659A
CN102414659A CN2010800186759A CN201080018675A CN102414659A CN 102414659 A CN102414659 A CN 102414659A CN 2010800186759 A CN2010800186759 A CN 2010800186759A CN 201080018675 A CN201080018675 A CN 201080018675A CN 102414659 A CN102414659 A CN 102414659A
Authority
CN
China
Prior art keywords
instruction
thread
instructions
priority
limit priority
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.)
Granted
Application number
CN2010800186759A
Other languages
English (en)
Other versions
CN102414659B (zh
Inventor
A·D·韦伯
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.)
Harrow Software Co ltd
Imagination Technologies Ltd
MIPS Tech LLC
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
Publication of CN102414659A publication Critical patent/CN102414659A/zh
Application granted granted Critical
Publication of CN102414659B publication Critical patent/CN102414659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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

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

用于在多线程微处理器中调度指令的发布的方法和设备
技术领域
本发明涉及用于动态地优化在多线程微处理器指令的发布的方法和设备。特别地,本发明涉及在多线程微处理器的推测式(speculative)指令的发布,该多线程微处理器能够在每个时钟周期从多于一个的线程发布指令。
背景技术
像任何其它处理器一样,多线程处理器是具有执行单元、缓存和存储器等的微处理器,但是附加合并了多个执行的线程的概念。执行的线程由依照微处理器的资源动作的指令流组成,其中的一些指令是特定的线程私有的,一些指令可以在线程之间共享。资源包括寄存器、带宽以及缓存或存储器的空间。图1是现有技术中的多线程微处理器内核的示意图。在如图1所示的多线程微处理器内核中,若干线程2能够并行操作,根据它们的能力经由线程指令调度器1发布指令。线程可以被给于优先级顺序以允许调度器确定先发布哪些指令。
处理器能够将在相同的时钟周期来自多个线程的指令发布,假设它们不能使用相同的资源,比如相同的数据缓存3。调度器必须被配置成确定在每个时钟周期可以将哪些指令一起发布。
推测式指令是特殊类型的指令。在微处理器领域很容易理解推测式指令的提取和发布的概念。推测式指令以这样的形式来提取和发布:做出较早的程序指令结果的预测(prediction)然后在知道该预测是否被正确做出之前依据该预测提取和发布指令。预测结果动作的最普通的例子是程序具有分支,在该程序中基于条件测试做出关于采取什么代码路径的选择。如果后来确定预测正确,则处理器继续工作。如果确定预测不正确,那么有必要删除预测的指令和它们的影响,并从新确定的指令提取地址重新开始指令提取和发布。
使用术语预测是因为处理器需要在知道任何最近发布的指令的结果之前动作。例如,在比较或条件测试指令之后,分支可以立即很好地跟进。在流水线处理器中流水线可以是很多阶长度,并且典型地条件测试的结果在流水线下面很长的距离产生结果。然而,分支直接影响指令提取,并将因此在流水线的开始有影响权利。因为分支必须等待已知道条件测试结果,导致气泡或拖延。可替代这种等待的选择是猜测哪个分支有可能被选取,并且把该猜测作为路线跟随直到知道该猜测是对或错。在猜测和知道那个猜测的正确性之间提取和/或发布的指令不必要正确而且可以必须是松散的——因此用术语推测。猜测或者是基于简单的规则(例如,选取后向分支,不选取前向分支)或者是表明代码的给出部分以前最常做什么的历史数据。
像此处用到的,术语“推测式指令”意思是提取和/或发布的指令可以不是必须的,因为还不知道较早的程序指令的结果。
本发明应对如何在能够在相同时钟周期的从多个线程发布指令的处理器调度推测式指令的发布的问题。
发明内容
根据本发明的第一个方面,提供了一种用于在能够在每个时钟周期发布多个指令的多线程处理器,从多个可用指令中动态地确定在每个时钟周期中发布哪些指令的方法,该方法包括步骤:
从多个可用指令中确定最高优先级指令;
确定最高优先级指令与每个可用指令的兼容性,其中如果指令不需要相同的资源,则他们是互相兼容的;以及
在相同调度时钟周期,将最高优先级指令和既与最高优先级指令兼容又互相兼容的其他指令一起发布;
其中,最高优先级指令不能是推测式指令。
其的效果是推测式指令永远仅与至少一个非推测式指令一起被发布。
根据本发明的第二个方面,提供了一种用于在能够在每个时钟周期发布多个指令的多线程处理器发布指令的系统,该系统包括:
用于从多个可用的指令中确定最高优先级指令的装置;
用于确定最高优先级指令与每个剩余可用指令的兼容性的装置,其中如果指令不需要相同的资源,则他们是互相兼容的;以及
用于在相同的调度时钟周期中,将最高优先级指令和既与最高优先级指令兼容又互相兼容的其他指令一起发布的装置;
其中,最高优先级指令不能是推测式指令。
本发明优选实施方式解决了在能够从每个时钟周期上多个线程中发布指令的多线程微处理器推测式指令的高效调度的问题。
本发明这个和其他方面将定义在附带的权利要求中,现将参考附带的权利要求。
附图说明
以下的是参考附图以举例的方式提供的对本发明优选实施方式的详细描述,附图中:
图1示出了多线程微处理器内核;
图2示出了适合于使用在根据本发明的系统的指令提取子系统;
图3示出了用于推测式指令提取的系统;
图4示出了根据本发明的用于推测式指令提取和执行的系统;以及
图5示出了根据本发明一个方面的调度指令的发布所采取的过程步骤。
具体实施方式
图1是多线程微处理器的示意图。该微处理器支持并行操作的多个线程,根据它们的能力经由指令调度器1发布指令。在这个系统中,不同的可以同时发布线程,假设它们不试图同时使用相同的资源。线程指令使用的资源包括运算器4和5、包括指令缓存和数据缓存的缓存子系统3以及协处理器。另外,该系统可以包括小数量的能被存取的片上随机存取存储器(RAM)而不是基于简单地址映射的缓存子系统。系统可以合并指令RAM也可以合并数据RAM。
该微处理器包括若干流水线或并行操作的执行单元。如果一个线程正在向一个流水线发布指令,可能允许其他线程在相同的时钟周期上向其他流水线发布指令。为了这样做,在每个时钟周期从多个流水线来的指令必须可用于调度器,而且该调度器必须能阻止任何有冲突的资源需求。
图2示出了包含在提取指令中的元素以便在每个时钟周期从多个线程来的指令可用于调度器。这个子系统在共同未决的申请GB0802314.5中被描述。在图2示出的实施方式中,存在指令数据的两个主要来源——指令缓存20和片上RAM 22。为了优化性能,两个来源都可以在同时存取(虽然每个线程将只存取一个或另一个,不能两个都存取)。拥有两个指令数据来源使在每个周期将获得两个不同的线程的多达两个指令。
为了确定哪个线程将从指令缓存20或片上RAM 22存取指令,每个指令来源具有优先级仲裁器24,将该优先级仲裁器24联接在指令来源和每个线程的指令缓存单元25之间。
将每个优先级仲裁器联接到每个线程(线程0到线程n)的指令提取单元25。经由此连接,优先级仲裁器能够接收具有关联的优先数据的指令的请求并且能向指令提取单元25提供提取的指令。
每个指令提取单元25包括指令缓冲器,该指令缓冲器能够容纳多达八个在预备状态的指令以在向指令调度器28发布指令之前进给(feed to)到指令解码器和资源互锁单元26,所述指令解码器和资源互锁单元26将依次传递每个指令到处理器执行。
获得针对多个线程指令的指令调度器28,可以然后在一个位置在相同的周期将针对多个线程的指令发布。
为了使指令调度器28能在相同的时钟周期发布来自多个线程的指令,需要比对其他指令需要的资源测试每个线程的指令所需的资源。这能够保证相冲突的指令不能同时发布。这能够由指令解码单元26来完成,该指令解码单元当指令从相对应的指令提取单元25结果时执行对每个指令的预解码,然后比对针对在装置中活跃的其他线程并行确定的资源来针对本指令设定的资源进行“求与”。
可以测试这些资源需求缩小的组。选取一个简单的例子,线程可打算使用执行单元发送数据存储器提取请求以下载或储存一些数据。如果另一个线程也打算使用相同的执行单元或者打算使用该数据存储器提取的数据存储器端口,那么该线程将和第一个线程的执行不兼容,以使二者不能被同时发布。然而,如果另一个线程打算执行一组不同的指令,比如不需要那些资源的程序分支,它将被认为是兼容的并且按照被用于请求数据存储器提取线程同时被发布用于执行。
为了做正确的确定,所有现有的线程并行相互比对来测试它们设定所有的资源需求。这个过程是对称的,因为如果线程A与线程B兼容,那么,由定义,线程B也与线程A兼容。因此,在每对线程之间这种测试只需做一次。作为这种兼容性测试的结果,在每个配对的线程生成标志,并且这个标志的状态确定线程是否兼容。因此,比对所有其他线程测试每个线程的结果是生成针对每对线程的兼容性标志,兼容性标志的状态确定线程是否对于执行是兼容的。例如,是否只有两个线程同时重叠资源需求。
为了确定然后发布哪个指令,给予每个线程优先级等级。该优先级等级基于任意合适的度量标准,比如EP1639554中描述的自动MIPS分配(AMA)度量标准。然后,具有最高优先级等级的线程由于寄存器或资源互锁而不被阻止发布指令,然后被选择作为线程发布。被发现不需要同样资源的任何其他线程可以与来自最高优先级线程的自由发布的指令(叫作引导指令)成组为一个指令组以在该时钟周期发布。根据与已经包括在组中的指令的兼容性,可以按照优先级顺序将指令加到组中。
每个指令所需的资源的确定通过在指令解码单元26的指令预解码操作来实现。解码单元26产生每个指令需求资源的简短概要。然后,指令调度器比对其他线程的针对线程间兼容性测试资源需求以及比对机器状态针对资源测试资源需求以及测试寄存器的可用性。调度器把这些测试的结果和优先级等级相结合以提供在任意给定周期调度的最终的指令集合。
“推测”是本技术领域内熟知的概念,其采取这样的形式:做出预测,然后在知道该预测是否正确做出之前依据该预测发布指令。推测式指令结果的最普通的例子是分支,分支中给予条件测试做出关于采取什么代码路径的选择。推测仅应用于在短时期,之后,知道了指令的结果并且能够恢复正常的调度。
根据本发明的一个方面,被推测地执行的指令不使用上述的正常的线程指令优先级规则。被推测地执行的指令不应该使用这些规则,是因为在发布点不知道所述推测是否正确。使用普通优先级规则的替代方法是给这些线程最小的优先级。然而,这导致了许多设计上的挑战。因此,优选的安排是,除非和另一个线程配对时,被推测地执行的指令应该没有机会发布。
本发明优选的例子包括具有两个或更多线程(特别是2,3或4个线程)的多线程微处理器。微处理器中的每个线程有它自己的程序计数器(PC),该程序计数器被轮流使用来控制针对该线程的指令提取,以使每个线程拥有一块硬件以从指令存储器或指令缓存提取指令。每个线程也可以拥有它自己的指令存储器或指令缓存。然而,这需要每个线程与其需要的资源一起建立,而不管系统中的线程是否比相同的系统中其他线程需要更少的存储器。不希望这样。更好的策略是在所有线程之间共享指令存储器和指令缓存,以及在这些线程之间仲裁存取该存储器或缓存的权利。
因为每个线程拥有一定数量的针对它自己指令提取的硬件,所以有可能增加那些硬件来做关于指令流的预测。例如,在第一个例子中,预测硬件等待被发送的指令流中的分支指令,以发布并预测是否选取该分支。此后,指令提取依据预测情况(例如,选取或不选取分支)来改变提取模式。在这个阶段,系统可能被这样设置,指令提取等待直到分支它自己(在发布)的结果能够被确定,然后进一步进给指令或在改正的位置重新开始提取。图3中示出了预测的指令提取的这种性质。
从图3能够看出,针对每个线程的指令提取系统由生成新的请求(“地址进给”)的状态机30和进给指令到线程和其指令调度器(“数据进给”)的状态机32组成。状态机32包括图2中指令预解码和资源互锁测试26的功能。同样的,图3所示的是从返回提取数据中挑出分支指令的分支过滤器和预测单元34,该分支过滤器和预测单元34能够依据那些分支将去哪的预测更新关于将在哪读指令的地址进给。
在非多线程微处理器,如果指令的消耗少于最大请求率,指令提取流水线可能被拖延。然而,在非多线程系统,其中,指令提取在线程之间共享,这种拖延通常不可能,因为会在线程之间引入依赖性,以至于已经请求若干指令但没有使用这些指令的线程接下来可能拖延系统中所有其他线程。因此,每个线程指令提取单元合并能够针对固定数目的指令请求保持返回数据的指令缓冲器。有多少可以被传送的指令请求,都可以在指令缓冲器有可以被储存的位置。指令缓存器如块36所示。从指令缓冲器,指令经过指令数据进给单元32到指令调度器。
在这个系统,预测能够依据简单的规则,比如分支的方向(向前或向后)或者使用关于过去这个分支选取哪条路线的一些省略的历史的形式。在发布寄存器38处的对分支指令的实际发布被阻挡直到获知结果为止(即,诸如条件测试的预测能被确定)。一旦结果能够被确定,分支就能被发布,然后指令流能够拾起预测的提取数据或促使指令提取用正确的指令地址重新开始。
这样的系统对于隐藏一些卷入采取分支的时延是有用的。然而,这样的系统具有严重的限制,当等待确定分支条件测试结果时,总是存在被引入的拖延。
对这个系统的改进是在分支结果以前发布预测的指令,因此,分支预测的正确性已被确定。这种情况下,分支之后立即发布的指令被推测地执行(因为在发布点不知道分支预测是否正确)。因为分支结果在处理器流水线中被计算,预测是否正确地作出将最终变得明显。当预测被正确地做出时,指令的发布停止推测,并且线程正常进行。当预测被发现被错误地预测,那么有必要删除分支后发布的指令和它们的影响,并从新确定的提取地址重新开始指令提取。图4示出了这种推测式指令提取和发布。
图4示出了和图3的提取系统相同的特点,但是有推测式指令被发布的区别。图4示出了随这指令调度器的三阶段的执行流水线40,以及额外地返回到分支预测单元34的分支预测验证数据路径42。从图4能够看出,分支指令的评估能够花费数个周期。为了避免这些周期的拖延,线程需要能够从分支继续发布随后的指令。可以设置这些指令的动作是松散的。从图4能够看出,讨论中的指令数目典型地相当短——正如示出的至多是三或四个指令。
在多线程微处理器中可以适当有几个在任何给定周期拥有可用的将被发布的指令的线程。因此,较好的是从不存在指令被发布的正确性问题的其它线程(在这些指令是否应该被发布方面)发布非推测式指令。然而,如果推测式指令从未被发布,那么在线程的指令流中(正如其中只有提取被预测的安排)总是存在拖延。推测地发布指令的优点是如果能够做出良好的预测,那么对于如果/然后(if/then)判断,在指令流中能够以更少的拖延完成更有用的工作。
像这样能够在可能的地方推测地执行指令是有好处的,前提是发布不影响具有有其他指令准备运行的其他线程。这样做的一种方法是给出推测地执行最低优先级的线程。然而,这在具有在当前指令发布和将来优先级等级之间的反馈循环的系统很难实现。能被更容易实现的可选择方式是标志推测地执行指令为不适合第一或重要或最重要的发布者。这可以通过不将推测地执行的指令作为可用的指令呈现给主要的指令调节器——代替线程在这个阶段标志他们自己为互锁的或不可用的。
与对带有准备运行的指令的最高优先级线程的选择并行的,必须做出关于其他什么线程可能被允许与该线程同时发布的决定。由于与计算一整套负载平衡度量相比较所包括的门(gate)更少,因此能够在每一个周期针对所有线程进行计算。所需的门对照系统中的所有其他线程来测试某个线程的设定资源,给出与该线程的指令兼容的其他线程的列表。该信息接着能够与预先准备的线程优先级排序相结合成为一个完全的列表,在这个完全的列表中如果所述线程获得了初始调度决定,则这个完全的列表中的线程将随所述线程发布。
图5示出了根据本发明一个方面,在确定使用哪个指令时采取的步骤。在步骤500,对于每个拥有可用指令的线程,确定优先级等级。在这个阶段,不考虑由于资源或寄存器互锁而阻止发布指令的线程。拥有推测式指令的线程也标志它们自己为在这个阶段没有资格被考虑。在步骤510,选择能够发布指令的最高优先级的线程。从这个线程发布的指令被称为引导指令。如所述,这个引导指令不能是推测式指令。在步骤520,针对具有可用的指令的每个线程,编译兼容的线程的列表。在步骤530,从这个列表和优先级等级,用引导指令确定一组用于发布的指令。在步骤540,通过指令调度器发布该指令组。
因此,本发明提供了一种简单装置,当推测地执行指令时,线程能够通过该装置把它自己从常规的指令调度规则中取出,当它等待确定分支的结果时,调度器不得不拖延,然而由于能够先前地发布指令,仍然保持增加的吞吐量的可能性。这个方法用少量附加的门,并且作为结果,能够达到对于给定多线程微处理器设计不具有对时钟速度的负面影响。

Claims (15)

1.一种在能够在每个时钟周期发布多个指令的多线程处理器中从多个可用指令中动态地确定在每个时钟周期发布哪些指令的方法,该方法包括下列步骤:
从所述多个可用指令中确定最高优先级指令;
确定所述最高优先级指令与每个可用指令的兼容性,其中如果指令不需要相同的资源,则所述指令是互相兼容的;以及
在相同的时钟周期,将所述最高优先级指令和既与所述最高优先级指令兼容又互相兼容的其他指令一起发布;
其中,所述最高优先级指令不能是推测式指令。
2.根据权利要求1所述的方法,其中确定所述最高优先级指令的步骤包括确定能够发布指令的最高优先级线程以及从该线程中选择所述指令作为所述最高优先级指令。
3.根据权利要求1所述的方法,当确定所述最高优先级指令的步骤不可用时,该方法还包括以下步骤:标记推测式指令或具有推测式指令的线程。
4.根据权利要求1、2或3中任一项权利要求所述的方法,该方法还包括以下步骤:为所述多个可用指令确定优先级等级,其中,按照优先级等级的顺序将兼容的指令随所述最高优先级指令发布。
5.根据权利要求4所述的方法,其中,推测式指令被给予比非推测式指令更低的优先级等级。
6.根据权利要求4或5所述的方法,其中,为所述多个可用指令确定优先级等级的步骤包括为每个具有可用指令的线程确定优先级等级。
7.根据前述任一项权利要求所述的方法,该方法还包括以下步骤:为每个所述可用指令确定兼容或不兼容指令的列表。
8.一种用于在能够在每个时钟周期发布多个指令的多线程处理器中发布指令的系统,该系统包括:
用于从所述多个可用的指令中确定最高优先级指令的装置;
用于确定所述最高优先级指令与每个剩余可用指令的兼容性的装置,其中如果指令不需要相同的资源,则所述指令是互相兼容的;以及
用于在相同的时钟周期将所述最高优先级指令和既与所述最高优先级指令兼容又互相兼容的其他指令一起发布的装置;
其中,所述最高优先级指令不能是推测式指令。
9.根据权利要求8所述的系统,其中,用于确定所述最高优先级指令的装置包括用于确定能够发布指令的最高优先级线程以及从该线程中选择所述指令作为所述最高优先级指令的装置。
10.根据权利要求8或9所述的系统,该系统还包括当所述最高优先级指令被认为不可用时用于标记推测式指令或具有推测式指令的线程的装置。
11.根据权利要求8、9或10中任一项权利要求所述的系统,该系统还包括用于为所述多个可用指令确定优先级等级的装置,其中,所述用于发布的装置被配置成按照优先级等级的顺序将兼容的指令随所述最高优先级指令发布。
12.根据权利要求11所述的系统,其中,所述用于为所述多个可用指令确定优先级等级的装置包括用于为每个具有可用指令的线程确定优先级等级的装置。
13.根据权利要求8至12中任一项权利要求所述的系统,该系统还包括用于为每个所述可用指令确定兼容或不兼容指令的列表的装置。
14.一种实质上参考附图在此描述的、在能够在每个时钟周期发布多个指令的多线程处理器中从多个可用指令中动态地确定在每个时钟周期发布哪些指令的方法。
15.一种实质上参考附图在此描述的、用于在能够在每个时钟周期发布多个指令的多线程处理器中发布指令的系统。
CN201080018675.9A 2009-04-28 2010-04-27 用于在多线程微处理器中调度指令的发布的方法和设备 Active CN102414659B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0907286A GB2469822B (en) 2009-04-28 2009-04-28 Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
GB0907286.9 2009-04-28
PCT/GB2010/000832 WO2010125336A1 (en) 2009-04-28 2010-04-27 Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor

Publications (2)

Publication Number Publication Date
CN102414659A true CN102414659A (zh) 2012-04-11
CN102414659B CN102414659B (zh) 2014-10-29

Family

ID=40791924

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080018675.9A Active CN102414659B (zh) 2009-04-28 2010-04-27 用于在多线程微处理器中调度指令的发布的方法和设备

Country Status (6)

Country Link
US (2) US9189241B2 (zh)
EP (1) EP2425329B8 (zh)
JP (1) JP5631976B2 (zh)
CN (1) CN102414659B (zh)
GB (1) GB2469822B (zh)
WO (1) WO2010125336A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108279927A (zh) * 2017-12-26 2018-07-13 芯原微电子(上海)有限公司 可调整指令优先级的多通道指令控制方法及系统、控制器
CN108710506A (zh) * 2018-05-31 2018-10-26 北京智行者科技有限公司 车辆的指令处理方法
CN111984387A (zh) * 2020-08-26 2020-11-24 上海兆芯集成电路有限公司 用于调度发布队列中指令的方法及处理器

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063291B (zh) * 2011-01-13 2013-08-28 上海大学 一种前瞻线程的多级并行执行方法
US20140007087A1 (en) * 2012-06-29 2014-01-02 Mark Scott-Nash Virtual trusted platform module
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
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
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor
US11656877B2 (en) 2021-03-31 2023-05-23 Advanced Micro Devices, Inc. Wavefront selection and execution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583089A2 (en) * 1992-08-12 1994-02-16 Advanced Micro Devices, Inc. Instruction decoder
US20060136915A1 (en) * 2004-12-17 2006-06-22 Sun Microsystems, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
CN101324851A (zh) * 2007-06-12 2008-12-17 华为技术有限公司 线程调度方法及其装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08179946A (ja) * 1994-12-26 1996-07-12 Toshiba Corp プロセッサ
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7051195B2 (en) * 2001-10-26 2006-05-23 Hewlett-Packard Development Company, L.P. Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset
JP3816844B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US20040168045A1 (en) * 2003-02-21 2004-08-26 Dale Morris Out-of-order processor executing speculative-load instructions
US20040225870A1 (en) * 2003-05-07 2004-11-11 Srinivasan Srikanth T. Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
GB2415060B (en) 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US7631308B2 (en) * 2005-02-11 2009-12-08 International Business Machines Corporation Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
JP2006343872A (ja) * 2005-06-07 2006-12-21 Keio Gijuku マルチスレッド中央演算装置および同時マルチスレッディング制御方法
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0583089A2 (en) * 1992-08-12 1994-02-16 Advanced Micro Devices, Inc. Instruction decoder
US20060136915A1 (en) * 2004-12-17 2006-06-22 Sun Microsystems, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
CN101324851A (zh) * 2007-06-12 2008-12-17 华为技术有限公司 线程调度方法及其装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108279927A (zh) * 2017-12-26 2018-07-13 芯原微电子(上海)有限公司 可调整指令优先级的多通道指令控制方法及系统、控制器
CN108279927B (zh) * 2017-12-26 2020-07-31 芯原微电子(上海)股份有限公司 可调整指令优先级的多通道指令控制方法及系统、控制器
CN108710506A (zh) * 2018-05-31 2018-10-26 北京智行者科技有限公司 车辆的指令处理方法
CN108710506B (zh) * 2018-05-31 2021-01-22 北京智行者科技有限公司 车辆的指令处理方法
CN111984387A (zh) * 2020-08-26 2020-11-24 上海兆芯集成电路有限公司 用于调度发布队列中指令的方法及处理器

Also Published As

Publication number Publication date
EP2425329A1 (en) 2012-03-07
US10360038B2 (en) 2019-07-23
CN102414659B (zh) 2014-10-29
WO2010125336A1 (en) 2010-11-04
EP2425329B1 (en) 2017-12-27
GB0907286D0 (en) 2009-06-10
US9189241B2 (en) 2015-11-17
GB2469822B (en) 2011-04-20
US20160055002A1 (en) 2016-02-25
GB2469822A (en) 2010-11-03
US20100275211A1 (en) 2010-10-28
JP2012525620A (ja) 2012-10-22
JP5631976B2 (ja) 2014-11-26
EP2425329B8 (en) 2018-10-24

Similar Documents

Publication Publication Date Title
CN102414659B (zh) 用于在多线程微处理器中调度指令的发布的方法和设备
CN108595157B (zh) 区块链数据的处理方法、装置、设备和存储介质
US5303170A (en) System and method for process modelling and project planning
CN102648453B (zh) 存储器初始化的方法和装置
CN105612502B (zh) 虚拟重试队列
CN104346223A (zh) 基于类型的优先化指令
CN104412233B (zh) 流水线调度中混叠寄存器的分配
US9280349B2 (en) Decode time instruction optimization for load reserve and store conditional sequences
US10061728B2 (en) Arbitration and hazard detection for a data processing apparatus
CN109101276A (zh) 在cpu中执行指令的方法
CN110648124B (zh) 在区块链中并发执行交易的方法和装置
US20070022424A1 (en) Technique for processing a computer program
Verhoef Modeling and validating distributed embedded real-time control systems
CN105074656A (zh) 管理并发谓词表达式的方法和装置
CN104641352B (zh) 用于周期控制系统的流水线操作
CN110381150A (zh) 区块链上的数据处理方法、装置、电子设备及存储介质
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
US9880813B2 (en) RTE code generating method and apparatus performing the same
US10332035B1 (en) Systems and methods for accelerating model training in machine learning
WO2017148508A1 (en) Multi-phase high performance business process management engine
US11593184B2 (en) Accelerated operation of a graph streaming processor
CN101303751B (zh) 交替处理的方法、系统和计算机程序产品
Anand et al. Synthesizing and verifying multicore parallelism in categories of nested code graphs
Rafailescu et al. Fault tolerant consensus protocol for distributed database transactions
US20240160494A1 (en) Job schedule quality prediction and job scheduling

Legal Events

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

Address after: Hertfordshire

Patentee after: MIPS TECHNOLOGIES, Inc.

Address before: Hertfordshire

Patentee before: Harrow Software Co.,Ltd.

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

Effective date of registration: 20180906

Address after: Delaware

Patentee after: Imagination Technologies Ltd.

Address before: Hertfordshire

Patentee before: Mips Technologies, Inc.

Effective date of registration: 20180906

Address after: Hertfordshire

Patentee after: Harrow Software Co.,Ltd.

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.

TR01 Transfer of patent right