使用延迟重构程序顺序的选择逻辑的制作方法

文档序号:8460716阅读:694来源:国知局
使用延迟重构程序顺序的选择逻辑的制作方法
【技术领域】
[0001]本公开内容涉及处理设备的领域,且尤其涉及使用重构程序顺序(reconstructedprogram order)的用于多串乱序处理器的指令调度器的选择逻辑。
[0002]背景
[0003]带有有序提取和乱序执行能力的当代通用超标量处理器的性能受到指令级并行性(ILP)的利用率的限制,指令级并行性(ILP)表征程序算法的固有并行性。更好地利用ILP的一个障碍是大多数程序代码的连续性质以及相应的指令提取的有序性质。除了依赖于乱序分派和执行能力来利用ILP之外,某些处理器也依赖于更深的管线,因为管线化允许处理器利用ILP。
[0004]在这样的处理器中,为了取得所期望的性能目标(用每周期指令数(IPC)衡量),可以被称为关键循环的一些逻辑片段在单个执行周期中评估,否则它们对以上所描述的更深的管线化来说是障碍。一个这样的关键循环包括由唤醒逻辑和选择逻辑构成的指令调度逻辑。
[0005]唤醒逻辑包括跟踪数据依赖性和检查指令所需要的源操作数是否可用,唤醒逻辑判断何时准备好发送指令以供执行。基于某种策略,选择逻辑判断应当发送这些就绪指令中的哪些以供执行。选择逻辑仅仅当存在比可用执行资源的数量更多的就绪指令时才可应用。由于指令不能被唤醒逻辑“认证为就绪”直到其所依赖的所有指令被选择并发送以供执行,唤醒逻辑和选择逻辑形成关键循环以供执行。另外,选择逻辑需要选择正确的指令来调度给执行单元,以使得它可以在该关键路径上向前移动指令(即,唤醒相关的指令)。因而,对于具有乱序指令执行的每一处理器,如果存在准备好占用单个执行资源且符合单周期调度循环的计时预算的多个指令,选择逻辑就确定首先选择哪个指令,这样的选择逻辑对取得所期望的性能来说是重要的。
[0006]对于多串乱序处理器(mult1-strand out-of-order processor)来说,单周期调度循环的关键程度和正确的选择逻辑的重要性也是相关的,多串乱序处理器实现乱序提取技术(即,它能够从由编译器产生的多串程序表示的不同串乱序提取指令)。因而,不同于提取已经排序的指令序列并把它们按顺序分配给等待缓冲器的一些常规处理器,多串乱序处理器不知晓在串(strand)内的指令相对于来自也在等待缓冲器内分配的其他串的指令的程序顺序。
[0007]存在当前由常规乱序处理器中的选择逻辑使用的多种调度策略,诸如例如基于年龄的策略、基于位置的策略、循环法策略、编译器辅助的优先级策略、拆分调度窗口方法和免选择调度。然而,当与多串乱序处理器一起使用时,这些常规的策略具有显著的局限。例如,基于年龄的策略基于何时分配指令来调度指令以供执行,这是不适用的,这是由于这些指令是乱序分配的。基于位置的策略和循环法策略基于指令在等待缓冲器中的位置确定指令的优先级,它们具有较低的硬件成本,但需要忍受降低的性能。免选择调度通过把选择逻辑管线化成I周期唤醒循环和2周期选择循环从关键路径移除选择逻辑,它增加了时钟频率,但付出了折衷IPC的成本。
[0008]因而,需要这样的选择逻辑调度策略:可以利用ILP来在IPC方面取得更高性能,同时仍满足关键单周期调度循环的时序要求,而不增加多串乱序处理器中的选择逻辑的复杂性。
[0009]附图简述
[0010]作为示例而非限制在附图的各图中示出本公开内容。
[0011]图1是示出根据一种实施例使用延迟重构程序顺序在多串乱序处理器中的指令调度流程的框图。
[0012]图2是示出根据一种实施例把程序顺序信息附加到程序指令的流程的框图。
[0013]图3是示出根据一种实施例使用延迟重构程序顺序调度指令的方法的流程图。
[0014]图4是示出根据一种实施例重构程序顺序的方法的流程图。
[0015]图5是示出根据一种实施例重构程序顺序的硬件配置的框图。
[0016]图6是示出根据一种实施例基于重构程序顺序排序指令的方法的流程图。
[0017]图7是示出根据一种实施例基于重构程序顺序排序指令的系统的框图。
[0018]图8是示出根据一种实施例的计算机系统的框图。
[0019]详细描述
[0020]下列描述陈述了众多特定的细节,例如特定的系统、组件、方法等等的示例,以便提供对本发明的若干实施例的充分理解。然而,本领域中的技术人员应明显看出,无需这些特定的细节就可以实践本发明的至少一些实施例。在其他实例中,没有详细示出或者以简单的框图格式呈现众所周知的组件或方法,以免不必要地模糊本发明。因而,所陈述的特定细节仅仅是示例性的。特定实现可以不同于这些示例性细节,且仍然被认为是落在本发明的范围内。
[0021]在此描述的是使用延迟重构程序顺序在多串乱序处理器中调度指令的方法和系统。在一种实施例中,使用多串乱序处理器中的各串的延迟重构程序顺序(RPO)创建准备好被分派的指令的有序列表以供执行。这一列表可以管理指令将被分派以供每一周期执行的次序。在一种实施例中,可以引入特定数量的执行周期(例如,2个或3个周期)的延迟,以使得基于来自先前若干周期的有序列表选择被分派以供在给定周期中执行的指令。这从关键路径移除了选择逻辑的一部分(即,创建有序列表),而不会降低性能。这种方法在复杂性方面可以类似于普遍流行的选择逻辑策略(例如,基于年龄的策略),但在乱序提取处理器中得到更好的性能(即,更高的每周期执行指令数(IPC))。
[0022]在一种实施例中,在多串乱序处理器中使用延迟重构程序顺序调度指令相比于其他选择逻辑策略更好地利用了指令级并行性(ILP),指令级并行性(ILP)表征程序算法的内在并行性。在一种实施例中,该策略通过使用延迟重构程序顺序值,也通过从循环的关键路径移除选择逻辑中用于创建有序列表的部分优化调度(即,唤醒和选择)循环,而不会损害IPC性能(相比于在一些乱序机器中实现的免选择调度,免选择调度优化该循环但降低了 IP性能)。在一种实施例中,该策略也使得编译器免于对各串的明确地和静态地指定专用附加优先权的需求(相比于类似“分支路径”、“链长度”和“最大依赖(maximumdependents) ”的策略,这些策略使用编译器支持来提供优先级信息)。另外,延迟RPO策略使得指令调度适应动态情形,且允许处理非确定性等待时间,例如缓存未命中和延时变化,这比类似“链长度”、“最大依赖”和“分支路径”的静态调度策略好得多,这些静态调度策略完全依赖于编译器设置优先级。此外,不需要独立的硬件逻辑来计算所执行的指令指针(EIP),EIP保存在所有当前执行的各串当中最老的或最小的程序顺序值,且用于在引退时排序指令,这是由于延迟RPO策略的一部分(即创建有序列表)可以重复用于这一目的。
[0023]由于乱序提取能力和程序代码的基于串的表示,在一种实施例中,处理器可以取得非常大的指令窗口。为了可以完全利用ILP且维持高度持续的执行宽度(high sustainedexecut1n width),有必要选择正确的串(且因而选择正确的指令),它们可能处于从调度器中的可用的准备好被分派的串中分派的关键路径上。
[0024]在一种实施例中提出的串选择算法负责标识每一周期分派的正确的串,这又将促进相依指令的唤醒,且因此可以取得机器的高度持续的执行宽度。该算法基于每一串的延迟RPO创建准备好被分派的指令的有序列表,该有序列表管理在被分派以供每一周期执行的指令的次序。
[0025]由于多串乱序处理器实现乱序指令提取技术,该处理器通常不拥有关于指令相对于程序算法中的其他指令的程序顺序的信息。在一种实施例中,在编译时间把显式程序顺序信息附加到目标代码中的指令。这可以是仅仅针对将改变系统的状态的指令(这些指令例如存储器指令(例如,加载或存储))或可以引起中断的指令的情况。在一种实施例中,为了节省指令尺寸中的空间,在指令中仅编码对实际程序顺序的递增。这可以被称为递增程序顺序(IPO) O编译器保证严格按顺序把程序顺序值指派给在串内的各指令,从而在该串中形成程序顺序值的发展序列。
[0026]由于此后各指令被乱序分配,在一种实施例中,通过把指令中已编码的IPO添加到相同的串中先前分派的指令的程序顺序(或RP0),处理器的选择逻辑重构该串的实际程序顺序。指令调度单元(ISU)中的等待缓冲器中的每一条目保存被考虑用于调度的该串的RP0,以及用于计算该串中的下一指令的RPO的ΙΡ0。在一种实施例中,等待缓冲器可以作
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1