CN111226196B - 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 - Google Patents

在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 Download PDF

Info

Publication number
CN111226196B
CN111226196B CN201880066923.3A CN201880066923A CN111226196B CN 111226196 B CN111226196 B CN 111226196B CN 201880066923 A CN201880066923 A CN 201880066923A CN 111226196 B CN111226196 B CN 111226196B
Authority
CN
China
Prior art keywords
instructions
instruction
issue queue
dependencies
groups
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
CN201880066923.3A
Other languages
English (en)
Other versions
CN111226196A (zh
Inventor
J·西尔贝曼
B·辛哈罗伊
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Priority claimed from US15/826,746 external-priority patent/US10564976B2/en
Priority claimed from US15/826,734 external-priority patent/US10929140B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111226196A publication Critical patent/CN111226196A/zh
Application granted granted Critical
Publication of CN111226196B publication Critical patent/CN111226196B/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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

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

在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵
技术领域
本发明的实施例总体上涉及乱序(OoO)处理器,并且更具体地涉及在乱序处理器的发布队列中具有一个或多个摘要位的可扩展依赖矩阵。
背景技术
在乱序处理器中,指令排序单元(ISU)将指令调度到各种发布队列,重命名寄存器以支持乱序执行,将来自各种发布队列的指令发布到执行流水线,完成已执行的指令并处理异常条件。寄存器重命名通常是在将指令放入各自的发布队列之前,由ISU中的映射器逻辑执行的。
ISU包括一个或多个发布队列,包含用于跟踪指令之间的依赖的依赖矩阵。对于每一条指令,依赖矩阵通常在发布队列中包括一行和一列。随着发布队列中的指令数量不断增加,每个依赖矩阵占用的空间和功耗也在增长。
发明内容
本发明的实施例包括用于实现乱序(OoO)处理器的发布队列中的具有一个或多个摘要位的可扩展依赖矩阵的方法、***和计算机程序产品。非限制性示例方法包括跟踪发布队列中的指令之间的依赖。对于发布队列中的每个指令,跟踪包括识别指令是否依赖于在该指令之前添加到发布队列的阈值数目的指令的每一个。
在具有多个摘要位的一个实施例中,跟踪还包括识别指令是否依赖于在未包括在阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令。将指令和其他指令的每一个之间依赖以多个组进行跟踪,跟踪通过基于识别指令和组中的至少一个指令之间的依赖指示指令和一个组之间存在依赖。每个其他指令都分配给至少一个组。至少部分地基于跟踪从发布队列发布指令。
在具有单个摘要位的另一实施例中,分别跟踪指令与每个阈值数目的指令之间的依赖。对于发布队列中的每个指令,跟踪还包括识别指令是否依赖于在未包括在阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令。将指令和其他指令之间的依赖作为一个单个组进行跟踪,跟踪包括通过基于识别指令和至少一个其他指令之间的依赖指示指令和其他指令的该单个组之间存在依赖。单个组包括发布队列中未包括在分别跟踪的阈值数目的指令中的所有指令。至少部分基于跟踪从发布队列发布指令。
通过本发明的技术实现了附加的特征和优点。在此详细描述本发明的其他实施例和方面,并且将其视为所要求保护的发明的一部分。为了更好地理解本发明的优点和特征,请参考说明书和附图。
附图说明
在说明书所附权利要求书中特别指出并明确要求保护本文所述的专有权的细节。通过以下结合附图的详细描述,本发明的实施例的前述以及其他特征和优点将变得显而易见,其中:
图1描绘了根据本发明一个或多个实施例的***的框图,该***100包括乱序处理器的指令排序单元(ISU),用于在发布队列中实现具有摘要位的可扩展依赖矩阵;
图2描绘了根据本发明一个或多个实施例的乱序处理器的ISU中的发布队列的框图;
图3描绘了根据本发明一个或多个实施例用于实现具有摘要位的可扩展依赖矩阵的乱序处理器的ISU中的发布队列的框图;
图4描绘了根据本发明一个或多个实施例的可扩展依赖矩阵的逻辑视图的框图;
图5描绘了根据本发明一个或多个实施例的梯形依赖矩阵的框图;
图6描绘了根据本发明一个或多个实施例的垂直压缩的梯形依赖矩阵的框图;
图7描绘了根据本发明一个或多个实施例的水平压缩的梯形依赖矩阵的框图;
图8描绘了可根据本发明一个或多个实施例实现的可扩展依赖矩阵的框图;
图9描绘了根据本发明一个或多个实施例的以单线程(ST)模式和同时多线程(SMT)模式操作的依赖矩阵的框图;
图10描绘了根据本发明一个或多个实施例的以ST模式和SMT模式操作的依赖矩阵的框图;和
图11是根据本发明一个或多个实施例的用于在乱序处理器中实现具有具有摘要位的可扩展依赖矩阵的一些或所有方面的计算机***的框图。
本文所描绘的图是说明性的。在不脱离本发明的精神的情况下,图或其中描述的操作可以有许多变型。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。同样,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且并不意味着元件之间没有中间元件/连接。它们之间所有这些变体都被视为说明书的一部分。
在附图和以下对所描述的实施例的详细描述中,在附图中示出的各个元件设有两个或三个数字的附图标记。除少数例外,每个参考数字的最左边的数字与该元素的第一个图相对应。
具体实施方式
如上所述,在当代发行队列中存储的指令数量继续增加。当代发行队列包括随指令数量的平方而增长的依赖矩阵,并且依赖矩阵的大小不断扩大可能会在某个时刻对时序产生影响。本文描述的本发明的一个或多个实施例在乱序处理器的指令排序单元(ISU)的发布队列中提供了尺寸减小的依赖矩阵。尺寸的减小是基于这样的认识,即,在彼此接近的时间范围内添加到发布队列的指令之间通常存在依赖。根据本发明的一个或多个实施例,分别跟踪指令对位于添加到发布队列的指令的接近时间范围之内的指令的依赖。根据本发明的一个或多个实施例,使用摘要位以单个组跟踪指令对位于添加到发布队列的指令的接近时间范围之外的指令的依赖。
根据本发明的一个或多个实施例,对于以单线程(ST)模式运行且具有包含64条指令(N=64)的发布队列的处理器,指令对先前32个指令(N/2)的依赖可以在发布队列中特异(例如,标识确定的指令)跟踪。可以用摘要位指示指令依赖于比N/2更早的任何指令。设置了摘要位的发布队列的依赖矩阵中的条目(指令)必须等到最早的N/2条目被清除才能指示该指令已准备好发布。精确跟踪(向前N/2)和不精确跟踪(比N/2更早的摘要位)的结合以及将发布队列实现为先进先出(FIFO)队列的组合,使依赖矩阵可扩展并在逻辑上实现为梯形,可以以节省存储空间的方式进行物理存储。另外,将发布队列实现为FIFO队列可消除对发布队列中包含使用期限数组(age array)的需要,从而节省了额外的存储空间。根据本发明的一个或多个实施例,当处理器以同时多线程(SMT)模式执行时,不使用摘要位,并且精确跟踪的量与跟踪属于给定线程的所有N/2-1个先前指令的现代实现相同。
根据本发明的一个或多个实施例,位于添加到发布队列的指令的接近时间范围之外的指令组(即,没有被特异跟踪的那些指令)被分解为一个或多个子组,每个子组使用自己的摘要位进行跟踪。在这些实施例中,利用多个摘要位来跟踪指令对指令组中指令的依赖。
根据本发明的一个或多个实施例,被特异跟踪的先前指令的数目是可选择/可编程的,并且不限于N/2个先前指令。
现在转到图1,总体上描绘了根据本发明一个或多个实施例的***框图,该***100包括乱序处理器的指令排序单元(ISU),用于在发布队列中实现具有摘要位的可扩展依赖矩阵。图1所示的***100包括指令获取单元/指令解码单元(IFU/IDU)106,获取并解码指令以输入到设置块108,该设置块108准备解码后的指令以输入到ISU的映射器110。根据一个或多个实施例,IFU/IDU 106可一次获取和解码来自线程的六个指令。根据本发明的一个或多个实施例,发送给设置块108的六个指令可以包括六个非分支指令,五个非分支指令和一个分支指令,或四个非分支指令和两个分支指令。根据一个或多个实施例,设置块108在将获取的指令发送到ISU中的这些块之前,检查例如发布队列、完成表、映射器和寄存器文件中的条目中否存在足够的资源。
图1所示的映射器110将编程器指令(例如,逻辑寄存器名称)映射到处理器的物理资源(例如,物理寄存器地址)。图1中示出的各种映射器110包括条件寄存器(CR)映射器、链接/计数(LNK/CNT)寄存器映射器、整数异常寄存器(XER)映射器、用于映射通用寄存器(GPR)和矢量标量寄存器(VSR)的统一映射器(UMapper)、用于映射GPR和VSR的架构化映射器(ARCH Mapper)以及浮点状态和控制寄存器(FPSCR)映射器。
来自设置块108的输出也被输入到全局完成表(GCT)112,用于跟踪ISU中当前的所有指令。设置块108的输出也输入到调度单元114,用于将指令调度到发布队列。图1所示的ISU的实施例包括CR发布队列-CRISQ116,接收并跟踪来自CR映射器的指令并将发布120给指令提取单元(IFU)124以执行CR逻辑指令和移动指令。图1中还显示了分支发布队列-分支ISQ 118,从LNK/CNT映射器接收并跟踪分支指令和LNK/CNT物理地址。如果预测的分支地址和/或方向不正确,则分支ISQ 118可以向IFU 124发出122指令以重定向指令获取。
来自调度逻辑的指令输出和来自LNK/CNT映射器,XER映射器,UMapper(GPR/VSR),ARCH映射器(GPR/VSR)和FPSCR映射器的重命名寄存器被输入到发布队列102。图1,发布队列102跟踪调度的定点指令(Fx),加载指令(L),存储指令(S)和矢量和缩放器单元(VSU)指令。如图1的实施例所示,发布队列102被分成两部分,ISQ0 1020和ISQ1 1021,每个部分保存N/2条指令。当处理器以ST模式执行时,发布队列102可用作包含ISQ0 1020和ISQ1 1021的单个逻辑发布队列,以处理单个线程的所有指令(在此示例中为所有N条指令)。
当处理器以SMT(同时多线程)模式执行时,ISQ0 1020可用于处理来自第一线程的N/2条指令,ISQ1 1021用于处理来自第二线程ISQ1 1021的N/2条指令。
如图1所示,发布队列102向执行单元104发出指令,该执行单元被分成两组执行单元1040和1041。图1所示的两组执行单元1040和1041包括完整定点执行单元(完整FX0,完整FX1),加载执行单元(LU0,LU1),简单定点、存储数据和存储地址执行单元(简单FX0/STD0/STA0,简单FX1/STD1/STA1),浮点、矢量多媒体扩展、十进制浮点和存储数据执行单元(FP/VMX/DFP/STD0,FP/VMX/DFP/STD1)。如图1所示,当处理器以ST模式执行时,第一组执行单元1040执行ISQ0 1020发布的指令,第二组执行单元1041执行ISQ1 1021发布的指令。在一个替代实施例中,当处理器以ST模式执行时,可以将发布队列102中的ISQ0 1020和ISQ1 1021两者发布的指令发布给第一组执行单元1040和第二组执行单元中1041的任何执行单元1040。
根据一个或多个实施例,当处理器以SMT模式执行时,第一组执行单元1040执行ISQ0 1020发布的第一线程的指令,第二组执行单元1041执行ISQ1 1021发布的第二线程的指令。
图1中所示的发布队列102中的条目的数目以及其他元素的大小(例如,总线宽度、队列大小)在本质上是示例性的,因为可以以各种不同大小的发布队列和其他元素实现本发明的实施例。根据本发明的一个或多个实施例,大小是可选择或可编程的。
现在转到图2,总体上示出了根据本发明一个或多个实施例的发布队列200的框图。图2中所示的发布队列200包括用于跟踪等待发布的指令的矩阵、表和向量。矩阵和表每个都包括要跟踪的每个指令的对应行,向量包括要跟踪的指令的条目。随着发布队列中的指令数量不断增加,每个矩阵、表和向量占用的空间和功耗越来越大。通过使用用于跟踪对较早指令的依赖的摘要位,本文所述的本发明的实施例可以用于减小发布队列200中的依赖矩阵202的大小。另外,通过将顺序接收到的指令存储到发布队列200中,可以从发布队列200中删除使用期限数组216。
发布队列200跟踪正在等待执行单元执行的指令.指令被调度并分配给发布队列200(例如,CR ISQ 116,分支ISQ 118,发布队列102)。当满足指令的依赖,即当指令已经发出且相应结果可用时,准备从发布队列200发布指令。发布队列200将指令发布到执行单元(例如,执行单元104)。在发布指令之后,发布队列200继续跟踪指令,至少直到指令通过拒绝点为止。对于不同的指令拒绝点不同,并且指不必重新发出指令的点(例如,在读取存储器操作中,一旦为读取数据访问了缓存,就可以通过拒绝点)。一旦指令通过拒绝点,就可以将其从发布队列中释放,并清除发布队列中的条目以供新指令重用。一旦执行单元对指令的执行完成,则指令结束。
图2所示的发布队列200包括:依赖矩阵202,用于跟踪发布队列200中指令之间的依赖;以及完成表204,用于指示指令的执行已经通过拒绝点,并且可以从发布队列200中释放该指令;指令分配单元206(例如,图1中的分配单元114),用于接收要添加到发布队列的指令;结果可用向量208,用于指示该指令所依赖的所有指令都已经发布;IV向量214,用于指示有效且可发布的指令;与(AND)逻辑210,用于将依赖矩阵的输出与IV向量进行逻辑与;就绪向量212,用于指示来自指令所依赖的所有指令的结果可用,并且指令是有效且可发布;使用期限数组216,用于跟踪指令进入发布队列的顺序以便当两个或更多指令准备执行时,可以在较新的指令之前选择较早的指令;重置IV控件218,用于更新IV状态以防止重新发布所选指令或在拒绝后允许重新发布;地址220,用作与选择发布的指令相对应的读取索引;数据阵列222包括执行单元用来执行指令的指令文本(例如,操作码、指向寄存器文件地址的指针、立即数据)。
如图2的依赖矩阵202所示,可以跟踪在发布队列中等待的N个指令,位置“u”处的指令取决于位置“v”和“w”处的指令。图2所示的依赖矩阵202具有N行和N列,一行和一列用于发布队列中的每个指令。如图2的年龄阵列216所示,位置“j”、“k”和“l”处的指令比位置“i”处的指令早。
现在转向图3,总体上示出了根据本发明一个或多个实施例的用于实现具有摘要位部分360的可扩展依赖矩阵的乱序处理器的ISU中的发布队列300的框图。图3中所示的发布队列300类似于以上参考图2描述的发布队列200,除了以FIFO顺序将指令***到矩阵、表和向量中并且由于按照接收顺序将指令***到矩阵,表和向量中而不需要与图2所示的使用期限数组216相关的逻辑或电路。代替图2的年龄阵列216,图3所示的发布队列300包括优先级选择逻辑324,用于基于在发布队列200中的相对位置从两个或多个就绪指令进行选择。因此,依赖矩阵302、完成表304、与矢量310、就绪矢量312、地址320和数据阵列322包含与从指令分配单元206接收的顺序对应的条目。此外,在依赖矩阵302中为每个条目提供摘要位部分360以跟踪对较早指令的依赖。摘要位部分360可包含一个或多个摘要位。
现在转到图4,总体上示出了根据本发明一个或多个实施例的可扩展依赖矩阵400的逻辑视图的框图。图4所示的可扩展依赖矩阵400表示一个发布队列,该队列保持N个指令并特异跟踪一个指令对四个其他指令(在该示例中为阈值)的依赖。可扩展依赖矩阵400中的条目以FIFO顺序***并因此例如紧接在第6行的指令之前将第5行的指令接收到发布队列中。
根据本发明的一个或多个实施例,可扩展依赖矩阵400可以环绕并因此例如紧接在第0行的指令之前将第N-1行的指令接收到发布队列中。当使用循环队列的环绕时,头和尾指针可用于跟踪最早和最新的条目,并且当头指针(最早条目)前进时清除摘要位。作为结果,所有比阈值(例如4)当前更接近头部的摘要位被清除,因为头部指针仅在条目被释放时才前进,这要求相应的指令已经发布并通过了它们的拒绝点。
在一个或多个示例性实施例中,代替使用环绕矩阵,每当随着队列位置被释放而使得空间可用于向上移位时,将指令在队列内朝顶部行移位。矩阵的内容可以上移和下移相等的量。在这种情况下,仅需要图4中的开放(无阴影)框,并且矩阵采用梯形形状。
如图4所示,用特异跟踪指令与紧接在指令之前***到发布队列中的四个指令之间的依赖,并在依赖矩阵400的第一部分(特异部分404)中对其进行单独标识;而使用依赖矩阵400的摘要位部分402跟踪指令与发布队列中的任何其他指令之间的依赖。
图4中所示的依赖矩阵400的特异部分404可以用于例如确定第6行中的指令是否依赖于第5行中的指令,第6行中的指令是否依赖于第4行中的指令,第6行中的指令是否依赖于第3行中的指令,以及第6行中的指令是否依赖于第2行中的指令。如果第6行中的指令依赖于第3行中的指令而不依赖于第5行、第4行和第2行中的指令(摘要位未设置),则只有第3行中的指令发布,第6行中的指令才就绪。依赖矩阵400的摘要位部分402可以用于确定第6行中的指令是否依赖于第0行至第1行以及第7行至第N-1行中的任何指令。一个摘要位可以表示第6行对第0行至第1行以及第7行至第N-1行中任何一个的依赖,因此,如果摘要位标识了依赖,则只有第1行以及第7行到第N-1行中的所有指令发布,才能发布第6行中的指令。如本文所述,当相应指令被释放时,摘要位或特异位被清除。
根据本发明的一个或多个实施例,当指令依赖于第0行至第1行以及第7行至第N-1行中的任何一个指令时,设置用于第6行中指令的摘要位部分402或其他锁存器,并且当指令6被调度时发布队列中存在的第1行以及第7行至第N-1行的所有指令都被发布、通过各自的拒绝点并被释放时进行重置。类似地,将特异部分404中的相应位或其他锁存器设置为指示第6行中的指令对特定先前指令的依赖,并在指令已经发布、通过拒绝点并且条目已经被释放时复位。一旦第6行中指令的所有依赖的得到满足(例如,指令已经发布),一旦所需的所有资源可用就可以发出第6行中的指令。
图4中所示的摘要位部分402可以包括单个摘要位,用于跟踪指令与紧接在指令之前的多于阈值数目的指令中的任何一个之间的依赖。在图4所示的本发明的实施例中,阈值为4,用单个摘要位将发布队列中除了紧接在指令之前***到发布队列的四个指令之外的指令作为单个组进行跟踪。单个组包括发布队列中除了紧接在指令之前***到发布队列的四个指令(本例中阈值为4)之外的所有指令。因此,如果指令依赖于该单个组中的指令之一,则必须等到该单个组中的所有指令都已发布(并通过了它们的拒绝点)之后才能满足依赖。然后,如果所有其他依赖得到满足,指令可以发布。只有当该单个组中的所有指令都已经从发布队列发布(并通过了它们的拒绝点),才重置单个摘要位。
根据本发明的一个或多个实施例,图4所示的摘要位部分402包括多个摘要位,用于跟踪指令与紧接在指令之前***到发布队列的任意大于阈值数目的指令之间的依赖。在本发明的实施例中,使用多个摘要位将发布队列中除了紧接在指令之前***到发布队列的阈值数目之外的指令作为多个组进行跟踪。指令以及发布队列中紧接在指令之前***到发布队列的阈值数目的每个指令包括在至少一个组中。多个组的内容可以互斥,也可以重叠。与未使用任何特异跟踪的任何指令使用单个摘要位相比,将多个摘要位用于多个组可以提供更好的粒度。
下面是简化描述的简化示例,其中N=16,阈值是N/2=8,并且在包括第0行到第15行的发布队列中的第15行***了一条指令。特异跟踪第15行中的指令对紧接在第15行中的指令之前***到发布队列的八条指令(即第14行、第13行、第12行、第11行、第10行、第9行、第8行和第7行中的指令)的依赖。因此,可以准确地确定第15行中的指令所依赖的发布队列的第14行、第13行、第12行、第11行、第10行、第9行、第8行和第7行中的哪一个或多个(如果有的话)。可以通过本发明的示例性实施例来实现表示对第0行、第1行、第2行、第3行、第4行、第5行和第6行中的指令的组中的指令的依赖的多个摘要位。例如,第一组可以包括发布队列中的第3行、第4行、第5行和第6行中的指令,第二组可以包括发布队列中的第0行、第1行和第2行中的指令。第15行中指令对第一组指令的依赖可以通过第一摘要位进行跟踪,而对第二组指令的依赖可以通过第二摘要位进行跟踪。或者,第一组可以包括发布队列中的第3行、第4行、第5行中的指令,第二组可以包括发布队列中的第6行和第2行中的指令,第三组可以包括发布队列中的第0行和第1行中的指令。可以使用第一摘要位跟踪行15中指令对第一组指令的依赖,使用第二摘要位跟踪对第二组指令的依赖,使用第三摘要位跟踪对第三组指令的依赖。在另一替代方案中,这些组可以重叠,例如第一组可以包括发布队列中的第0行、第1行、第2行、第3行、第4行、第5行和第6行中的指令而第二组包括发布队列中的第0行、第1行和第2行中的指令。
前述仅仅是示例,因为可以通过本发明的示例性实施例来实现任意数量的指令组和对应的摘要位。通常,组和摘要位的数量越大,就跟踪的位而言,成本越高,而吞吐量方面的成本越低。可以定制本发明的示例性实施例以基于实现要求来调整粒度。这两个极端包括提供最粗粒度的单个摘要位和提供最细粒度的用于每个指令的摘要位。
现在转到图5,总体上示出了根据本发明一个或多个实施例的梯形依赖矩阵500的框图。如图5所示,可扩展依赖矩阵可以导致依赖矩阵中的开放空间,例如图4所示的依赖矩阵400的特异部分404中。特异部分508A、508B、508C和508D包含在图5中所示的梯形依赖矩阵500的非连续部分中。图5中还示出了具有与每个指令相对应的条目的就绪向量,指示是否已满足指令的所有依赖(例如,所有特定指令都已发布)。图5所示的就绪向量被分解为就绪状态向量506A和就绪状态向量506B。图5还示出了具有与每个指令相对应的条目的可用向量,指示指令所依赖的先前发布指令的所有结果是否可用于该指令。图5中所示的可用向量被分解成可用向量502A和可用向量502B。图5中未示出的位的其他列保持摘要位,如果摘要位被置位,则其他逻辑可防止就绪向量指示指令已就绪。
现在转到图6,总体上示出了根据本发明一个或多个实施例的垂直压缩的梯形依赖矩阵600的框图。如图6所示,图5的梯形依赖矩阵500以垂直方式合并以去除特异部分508A、508B、508C和508D之间的开放空间。根据本发明的一个或多个实施例,垂直压缩的梯形依赖矩阵600是物理存储可扩展依赖矩阵以减小空间需求的一种方式。包含在502A中的可用性信息用于确定508A中的位特异指示的依赖是否满足,并且相应更新就绪状态506A1。同时用包含在502A中的可用性信息确定508C中的位特异指示的依赖是否满足,并且相应地更新就绪状态506B1。类似地,用502B中的可用性信息确定由508B和508D中的位特异指示的依赖是否满足,从而可以分别更新就绪状态506A2和506B2。就绪状态的两个组件(506A1和506A2或506B1和506B2)的对应单元必须指示特定依赖已满足,以表示所有依赖已满足。
现在转到图7,总体上示出了根据本发明一个或多个实施例的水平压缩的梯形依赖矩阵700的框图。如图7所示,图5的梯形依赖矩阵500以水平方式合并以去除特异部分508A、508B、508C和508D之间的开放空间。根据本发明的一个或多个实施例,水平压缩的梯形依赖矩阵700是物理存储可扩展依赖矩阵以减少空间需求的一种方式。包含在502A1中的可用性信息用于确定508D中的位特异指示的依赖是否满足,同时包含在502B1中的可用性信息用于确定508C中的位特异指示的依赖是否满足,并且用合并后的结果对就绪状态向量506A进行相应更新。包含在502A2中的可用性信息用于确定508B中的位特异指示的依赖是否满足,同时包含在502B2中的可用性信息用于确定508A中的位特异指示的依赖是否满足,并且用合并后的结果对就绪状态向量506B进行相应更新。
可以基于例如***工作流程的预期类型,选择图6所示的垂直压缩的梯形依赖矩阵600或图7所示的水平压缩的梯形依赖矩阵700来实施。
现在转向图8,总体上示出了根据本发明一个或多个实施例的依赖矩阵800的框图。如图8所示,当处理器以SMT模式执行时,第一线程使用逻辑依赖矩阵802的部分8020,第二线程使用逻辑依赖矩阵802的部分8021。逻辑依赖矩阵802可以物理地存储为物理依赖矩阵804,包括用于存储部分8020的内容的矩阵8040,以及用于存储部分8021的内容的矩阵8041。
如本文所述,当乱序处理器在ST模式下执行时,发布队列中的整个依赖矩阵用于跟踪指令之间的依赖。这与乱序处理器以SMT模式执行时通常仅使用一半的依赖矩阵形成对比。如本文所述,根据本发明的实施例,发布队列中的依赖矩阵被重新组织使得其在逻辑上是梯形的。在ST模式下,一个条目可以直接跟踪对先前N/2个条目的依赖,除此之外,它只能通过摘要位来跟踪集体依赖。设置了摘要位的条目(指令)必须等待,直到(至多)最早N/2个条目被清除。同一概念可用于特异跟踪少于N/2个条目。当处理器以SMT模式执行以跟踪发布队列的每一半中的N/2个条目的完全依赖(即,具有特异性)时,也可以使用本发明的示例性实施例。当处理器以ST模式执行时可以跟踪N个条目,但是对条目的前半部分的可见性有限。在图9中示出了这样的实施例,总体上示出了根据本发明一个或多个实施例的以ST模式和SMT模式操作的依赖矩阵900的框图。
现在转到图9,图9所示的依赖矩阵900包括如前所述的前半部分矩阵903和后半部分矩阵904,并为N条指令中的每条精确跟踪对N/2个先前指令的依赖。如图9中本发明的实施例所示,源可用性信息保持在可用位向量901A中,在第0行至第N/2-1行的指令发布之后由可用位向量901B设置,可用位向量901B在第N/2至N-1行的指令发布后设置。可用性信息通过每个矩阵上的N条线传送到依赖矩阵903和904。与前半部分矩阵903中的行相对应、具有在矩阵903A的所示下三角区域内设置的依赖位的指令直接从位向量901A接收可用性信息。在所示的上部三角形区域903B中设置有依赖位的这种指令通过多路复用器902接收可用性信息。多路复用器902可以在位向量901A和901B之间进行选择,并且在ST模式下,多路复用器902将可用性信息从位向量901B路由到区域903B。
类似地,与在所示下三角区域904A中的设置了依赖位的后半部分矩阵904的行相对应的指令从可用位向量901B接收可用性信息。在所示上三角形区域904B中设置了依赖位的这种指令从多路复用器902内的第二多路复用器接收可用性信息。多路复用器902可以在位向量901A和901B之间进行选择,并在ST模式下将信息从可用位向量901A路由到区域904B。通过多路复用器902如所描述的操作,依赖矩阵的每一行接收与由先前的N/2行中的指令产生的结果的可用性相对应的信息。由于指令是按照FIFO顺序添加到发布队列的,因此这对应于之前添加到队列的N/2条指令。图9的右侧示出了SMT模式下的可扩展依赖矩阵的示例性实施例的操作。在这种条件下,多路复用器902将包含在可用位向量901A和901B中的可用性信息分别传送到右上三角部分903B和904B。图9还示出了状态向量905A和905B。
因此,与具有依赖矩阵的行中包含的依赖信息的给定线程相对应的指令接收与在发布队列的相同一半中的指令所产生的结果相对应的可用性信息,结果对应于相同线程的所有指令。因此,图9中所示的本发明的示例性实施例在SMT模式下跨给定线程的所有指令提供了精确的依赖跟踪,而在ST模式下跨先前的N/2个指令提供精确的依赖跟踪,而由摘要位对较早依赖进行了不精确的跟踪。
在此描述的本发明的一个或多个实施例提供了一种可扩展的依赖矩阵,其中需要N行乘M列的依赖矩阵(例如,M=N/2),其中M小于N,而不要求包含N行乘N列的依赖矩阵。此外,以FIFO顺序将指令放入发布队列中可以节省使用期限数组的面积,并可以提高发布队列的性能。
现在转到图10,总体上示出了根据本发明一个或多个实施例的以ST模式和SMT模式操作的依赖矩阵1000的框图。图10所示的依赖矩阵10031004与图9所示的相依赖矩阵具有不同的行排列。通过图9中所示的连接拓扑,可以在ST和SMT模式下实现所需的行为,并在多路复用器控制的模式之间进行简单的切换。在不更改连接拓扑的情况下,可以对图9中的行进行排列。图10中显示了不更改连接拓扑的图9中行的许多示例排列之一。
现在转向图11,总体上示出了根据本发明一个或多个实施例的用于在乱序处理器中实现具有具有摘要位的可扩展依赖矩阵的一些或所有方面的计算机***1100的框图。本文描述的处理可以以硬件、软件(例如,固件)或其组合来实现。在示例性实施例中,所描述的方法可以至少部分地以硬件来实现,并且可以是专用或通用计算机***1100(例如移动设备、个人计算机、工作站、小型计算机、或大型机。
在示例性实施例中,如图11所示,计算机***1100包括处理器1105、耦合到存储器控制器1115的存储器1112以及一个或多个输入设备1145和/或输出设备1147,例如***设备,这些设备1147和1145通过本地I/O控制器1135通信地耦合。这些设备1147和1145可以包括例如打印机、扫描仪、麦克风等。常规键盘1150和鼠标1155可以耦合到I/O控制器1135。I/O控制器1135可以是例如本领域中已知的一条或多条总线或其他有线或无线连接。I/O控制器1135可以具有为了简化而被省略的附加元件,诸如控制器、缓冲器(高速缓存)、驱动器、转发器和接收器,以实现通信。
I/O设备1147、1145可以进一步包括输入和输出两者的设备,例如磁盘和磁带存储、网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、***、或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。
处理器1105是用于执行硬件指令或软件(特别是存储在存储器1112中的硬件指令或软件)的硬件设备。处理器1105可以是定制或商用处理器,中央处理器(CPU)、辅助处理器、与计算机***1100相关联的处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、微处理器或其他用于执行指令的设备。处理器1105可以包括高速缓存,例如但不限于用于加速可执行指令取回的指令高速缓存,用于加速数据取回和存储的数据高速缓存以及用于加速的转换后备缓冲器(TLB)。可执行指令和数据的虚拟到物理地址转换。可以将高速缓存组织为更多高速缓存级别(L1,L2等)的层次结构。
存储器1112可以包括易失性存储元件(例如,随机存取存储器、RAM,例如DRAM、SRAM、SDRAM等)和非易失性存储元件(例如,ROM、可擦除可编程只读存储器(EPROM),可电子擦除的可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软盘、盒带、盒式磁带等)。此外,存储器1112可以结合电子、磁性、光学或其他类型的存储介质。注意,存储器1112可以具有分布式架构,其中各种组件彼此远离放置,但是可以由处理器1105访问。
存储器1112中的指令可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图11的示例中,存储器712中的指令包括合适的操作***(OS)1111。操作***1111本质上可以控制其他计算机程序的执行,并提供调度、输入输出控制、文件和数据管理、内存管理、通讯控制和相关服务。
附加数据,例如包括用于处理器1105的指令或其他可检索信息,可以存储在存储器1127中,该存储器可以是诸如硬盘驱动器或固态驱动器的存储设备。存储器1112或存储器1127中存储的指令可以包括那些使处理器1105能够执行本公开的调度***和方法的一个或多个方面的指令。
计算机***1100可以进一步包括耦合至显示器1130的显示控制器1125。在示例性实施例中,计算机***1100可以进一步包括用于耦合至网络1165的网络接口1160。网络1165可以是基于IP的网络,用于经由宽带连接在计算机***1100与外部服务器、客户端等之间进行通信。网络1165在计算机***1100和外部***之间发送和接收数据。在示例性实施例中,网络1165可以是由服务提供商管理的被管理IP网络。可以以无线方式(例如,使用诸如WiFi,WiMax等的无线协议和技术)来实现网络1165。网络1165也可以是诸如局域网、广域网、城域网、区域网络、Internet或其他类似类型的网络环境之类的分组交换网络。网络1165可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人局域网(PAN)、虚拟专用网(VPN)、内联网或其他合适的网络***,并且可能包括用于接收和发送信号的设备。
这里描述的用于提供可扩展依赖矩阵的***和方法可以全部或部分地体现在计算机程序产品或计算机***1100中,如图11所示。
在此参考相关附图描述了本发明的各种实施例。在不脱离本发明范围的情况下,可以设计出替代实施例。尽管在以下描述和附图中在元件之间阐述了各种连接和位置关系(例如,在上方、下方、相邻等),但是本领域技术人员将认识到,本文所述的许多位置关系是取向-即使更改了方向,在保持所描述的功能时也可以独立使用。除非另有说明,否则这些连接和/或位置关系可以是直接的或间接的,并且本发明并不意图在这方面进行限制。因此,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接的位置关系。此外,本文描述的各种任务和过程步骤可以被合并到具有本文未详细描述的附加步骤或功能的更全面的过程或过程中。
以下定义和缩写将用于权利要求书和说明书的解释。如本文所使用的,术语“包括”、“包含”、“具有”或其任何其他变型旨在涵盖非排他包容。例如,包括一系列元素的组合物、混合物、过程、方法、物品或设备不一定仅限于那些元素,而是可以包括未明确列出或此类组合物、混合物、过程、方法、物品或设备所固有的其他元素。
另外,术语“示例性”在本文中用来表示“用作示例、实例或说明”。本文中被描述为“示例性”的任何实施例或设计不必被解释为比其他实施例或设计更优选或有利。术语“至少一个”和“一个或多个”应理解为包括大于或等于一的任何整数,即一个、两个、三个、四个等。术语“多个”应理解为包括。大于或等于2任何整数,即两个,三个,四个,五个等。术语“连接”可以包括间接“连接”和直接“连接”。
术语“约”、大约”、“基本上”及其变体意在包括与基于可用在提交申请时的设备的特定数量的测量相关的误差程度。例如,“约”可以包括给定值的±8%或5%,或2%的范围。
为了简洁起见,在此可以或可以不详细描述与制造和使用本发明的方面有关的常规技术。特别地,众所周知,实现本文所述的各种技术特征的计算***和特定计算机程序的各个方面。因此,为了简洁起见,在不提供公知的***和/或处理细节的情况下,本文仅简要提及或完全省略了许多常规的实施细节。
本发明可以是***,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及传统的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (31)

1.一种计算机实现的方法,包括:
跟踪发布队列中的指令之间的依赖,其中,跟踪包括对于发布队列中的每一个指令:
识别所述指令是否依赖于在所述指令之前添加到发布队列的阈值数目的指令的每一个,其中,分别跟踪所述指令和所述阈值数目的指令的每一个之间的依赖;和
识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中,将所述指令和所述其他指令的每一个之间的依赖作为一个组或多个组进行跟踪,跟踪通过基于识别所述指令和至少一个所述其他指令或所述多个组的组中的至少一个指令之间的依赖指示所述指令和所述一个组或多个组中的一个组之间存在依赖,所述一个组的其他指令包括发布队列中未包括在分别跟踪的阈值数目的指令中的所有指令,并且其中所述其他指令的每一个被分配给所述多个组中的至少一个组;并且
至少部分地基于跟踪从发布队列发布指令。
2.根据权利要求1所述的计算机实现的方法,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令之间的依赖作为一个单个组进行跟踪,跟踪通过基于识别所述指令和至少一个其他指令之间的依赖指示所述指令和其他指令的该单个组之间存在依赖,其他指令的该单个组包括发布队列中未包括在分别跟踪的所述阈值数目的指令中的所有指令。
3.根据权利要求1所述的计算机实现的方法,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令的每一个之间的依赖作为多个组进行跟踪,跟踪通过基于识别所述指令和组中的至少一个指令之间的依赖指示所述指令和多个组中的一个之间存在依赖,其中其他指令的每一个被分配给至少一个组。
4.根据权利要求1或2所述的计算机实现的方法,其中使用单个摘要位跟踪所述指令与其他指令的单个组之间的依赖性。
5.根据权利要求1或3所述的计算机实现的方法,其中为多个组的每一个使用不同的摘要位跟踪所述指令与多个组的每一个之间的依赖性。
6.根据权利要求4所述的计算机实现的方法,其中设置单个摘要位以指示所述指令与其他指令的单个组中的至少一个指令之间存在依赖,并且在设置所述单个摘要位之后重置摘要位,以至少部分地基于检测到其他指令的单个组中的所有其他指令都已经从发布队列发布以指示所述指令和其他指令的组之间不再存在依赖。
7.根据权利要求5所述的计算机实现的方法,其中设置用于多个组的每一个的摘要位以指示所述指令和该组中的至少一个指令之间存在依赖,并且在设置所述摘要位之后重置摘要位,以至少部分的基于检测到分配给该组的所有指令都已经从发布队列发布以指示所述指令和该组之间不再存在依赖。
8.根据权利要求1所述的计算机实现的方法,其中为所述阈值数目的指令的每一个用一个单独的位跟踪所述指令和所述阈值数目的指令的每一个之间的依赖性。
9.根据权利要求1所述的计算机实现的方法,其中发布队列是先进先出(FIFO)队列并且发布队列中的指令基于它们被添加到发布队列的顺序进行排序。
10.跟据权利要求1所述的计算机实现的方法,其中发布队列中的指令来自乱序处理器执行的单个线程。
11.根据权利要求1所述的计算机实现的方法,其中发布队列保持N个指令并且所述阈值数目的指令为N/2。
12.根据权利要求1所述的计算机实现的方法,其中所述阈值数目的指令的每一个的指令包括对应于多线程环境中的单个线程的发布队列中的所有指令。
13.根据权利要求1所述的计算机实现的方法,其中所述阈值数目是可编程的。
14.一种***,包括:
乱序处理器的发布队列中的依赖矩阵;
具有计算机可读指令的存储器;和
用于执行计算机可读指令的一个或多个处理器,该计算机可读指令控制一个或多个处理器以执行以下操作:
跟踪发布队列中的指令之间的依赖,其中,跟踪包括对于发布队列中的每一个指令:
识别所述指令是否依赖于在所述指令之前添加到发布队列的阈值数目的指令的每一个,其中,分别跟踪所述指令和所述阈值数目的指令的每一个之间的依赖;和
识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中,将所述指令和所述其他指令的每一个之间的依赖作为一个组或多个组进行跟踪,跟踪通过基于识别所述指令和至少一个所述其他指令或所述多个组的组中的至少一个指令之间的依赖指示所述指令和所述一个组或多个组中的一个组之间存在依赖,所述一个组的其他指令包括发布队列中未包括在分别跟踪的阈值数目的指令中的所有指令,并且其中所述其他指令的每一个被分配给所述多个组中的至少一个组;并且
至少部分地基于跟踪从发布队列发布指令。
15.根据权利要求14所述的***,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令之间的依赖作为一个单个组进行跟踪,跟踪通过基于识别所述指令和至少一个其他指令之间的依赖指示所述指令和其他指令的该单个组之间存在依赖,其他指令的该单个组包括发布队列中未包括在分别跟踪的所述阈值数目的指令中的所有指令。
16.根据权利要求14所述的***,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令的每一个之间的依赖作为多个组进行跟踪,跟踪通过基于识别所述指令和组中的至少一个指令之间的依赖指示所述指令和多个组中的一个之间存在依赖,其中其他指令的每一个被分配给至少一个组。
17.根据权利要求14或15所述的***,其中使用单个摘要位跟踪所述指令与其他指令的单个组之间的依赖性。
18.根据权利要求14或16所述的***,其中为多个组的每一个使用不同的摘要位跟踪所述指令与多个组的每一个之间的依赖性。
19.根据权利要求17所述的***,其中设置单个摘要位以指示所述指令与其他指令的单个组中的至少一个指令之间存在依赖,并且在设置所述单个摘要位之后重置摘要位,以至少部分地基于检测到其他指令的单个组中的所有其他指令都已经从发布队列发布以指示所述指令和其他指令的组之间不再存在依赖。
20.根据权利要求18所述的***,其中设置用于多个组的每一个的摘要位以指示所述指令和该组中的至少一个指令之间存在依赖,并且在设置所述摘要位之后重置摘要位,以至少部分的基于检测到分配给该组的所有指令都已经从发布队列发布以指示所述指令和该组之间不再存在依赖。
21.根据权利要求14所述的***,其中为所述阈值数目的指令的每一个用一个单独的位跟踪所述指令和所述阈值数目的指令的每一个之间的依赖性。
22.根据权利要求14所述的***,其中发布队列是先进先出(FIFO)队列并且发布队列中的指令基于它们被添加到发布队列的顺序进行排序。
23.根据权利要求14所述的***,其中发布队列中的指令来自乱序处理器执行的单个线程。
24.根据权利要求14所述的***,其中发布队列保持N个指令并且所述阈值数目的指令为N/2。
25.根据权利要求14所述的***,其中所述阈值数目的指令的每一个的指令包括对应于多线程环境中的单个线程的发布队列中的所有指令。
26.根据权利要求14所述的***,其中所述阈值数目是可编程的。
27.一种计算机可读存储介质,计算机可读存储介质具有体现在其上的程序指令,所述程序指令可由处理器执行以使所述处理器执行以下操作:
跟踪发布队列中的指令之间的依赖,其中,跟踪包括对于发布队列中的每一个指令:
识别所述指令是否依赖于在所述指令之前添加到发布队列的阈值数目的指令的每一个,其中,分别跟踪所述指令和所述阈值数目的指令的每一个之间的依赖;和
识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中,将所述指令和所述其他指令的每一个之间的依赖作为一个组或多个组进行跟踪,跟踪通过基于识别所述指令和至少一个所述其他指令或所述多个组的组中的至少一个指令之间的依赖指示所述指令和所述一个组或多个组中的一个组之间存在依赖,所述一个组的其他指令包括发布队列中未包括在分别跟踪的阈值数目的指令中的所有指令,并且其中所述其他指令的每一个被分配给所述多个组中的至少一个组;并且
至少部分地基于跟踪从发布队列发布指令。
28.根据权利要求27所述的计算机可读存储介质,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令之间的依赖作为一个单个组进行跟踪,跟踪通过基于识别所述指令和至少一个其他指令之间的依赖指示所述指令和其他指令的该单个组之间存在依赖,其他指令的该单个组包括发布队列中未包括在分别跟踪的所述阈值数目的指令中的所有指令。
29.根据权利要求27所述的计算机可读存储介质,包括:识别所述指令是否依赖于在未包括在所述阈值数目的指令的每一个的指令之前添加到发布队列的一个或多个其他指令,其中将所述指令和其他指令的每一个之间的依赖作为多个组进行跟踪,跟踪通过基于识别所述指令和组中的至少一个指令之间的依赖指示所述指令和多个组中的一个之间存在依赖。
30.根据权利要求27或28所述的计算机可读存储介质,其中使用单个摘要位跟踪所述指令与其他指令的单个组之间的依赖性;
设置单个摘要位以指示所述指令与其他指令的单个组中的至少一个指令之间存在依赖,并且
在设置所述单个摘要位之后重置摘要位,以至少部分地基于检测到其他指令的单个组中的所有其他指令都已经从发布队列发布以指示所述指令和其他指令的组之间不再存在依赖。
31.根据权利要求27或29所述的计算机可读存储介质,其中其他指令的每一个被分配给至少一个组,其中为多个组的每一个使用不同的摘要位跟踪所述指令与多个组的每一个之间的依赖性;
设置用于多个组的每一个的摘要位以指示所述指令和该组中的至少一个指令之间存在依赖,并且
在设置所述摘要位之后重置摘要位,以至少部分的基于检测到分配给该组的所有指令都已经从发布队列发布以指示所述指令和该组之间不再存在依赖。
CN201880066923.3A 2017-11-30 2018-11-09 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵 Active CN111226196B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/826,746 2017-11-30
US15/826,734 2017-11-30
US15/826,746 US10564976B2 (en) 2017-11-30 2017-11-30 Scalable dependency matrix with multiple summary bits in an out-of-order processor
US15/826,734 US10929140B2 (en) 2017-11-30 2017-11-30 Scalable dependency matrix with a single summary bit in an out-of-order processor
PCT/IB2018/058801 WO2019106462A1 (en) 2017-11-30 2018-11-09 Scalable dependency matrix with one or a plurality of summary bits in an out-of-order processor

Publications (2)

Publication Number Publication Date
CN111226196A CN111226196A (zh) 2020-06-02
CN111226196B true CN111226196B (zh) 2023-12-01

Family

ID=66665478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880066923.3A Active CN111226196B (zh) 2017-11-30 2018-11-09 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵

Country Status (5)

Country Link
JP (1) JP7403450B2 (zh)
CN (1) CN111226196B (zh)
DE (1) DE112018006103B4 (zh)
GB (1) GB2581945B (zh)
WO (1) WO2019106462A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327643B (zh) * 2022-03-11 2022-06-21 上海聪链信息科技有限公司 机器指令预处理方法、电子设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
CN101008928A (zh) * 2006-01-26 2007-08-01 国际商业机器公司 用于跟踪命令次序依赖性的方法和设备
CN101034345A (zh) * 2007-04-16 2007-09-12 中国人民解放军国防科学技术大学 流处理器中数据流、指令流的控制方法
CN102362257A (zh) * 2009-03-24 2012-02-22 国际商业机器公司 使用相关矩阵追踪解除分配的加载指令
CN104040492A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器和依赖性重排序方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US8255671B2 (en) 2008-12-18 2012-08-28 Apple Inc. Processor employing split scheduler in which near, low latency operation dependencies are tracked separate from other operation dependencies
CN102360309B (zh) * 2011-09-29 2013-12-18 中国科学技术大学苏州研究院 片上多核异构***的调度***与调度执行方法
US10235180B2 (en) 2012-12-21 2019-03-19 Intel Corporation Scheduler implementing dependency matrix having restricted entries
JP6520416B2 (ja) 2015-06-02 2019-05-29 富士通株式会社 演算処理装置および演算処理装置の処理方法
US10108417B2 (en) 2015-08-14 2018-10-23 Qualcomm Incorporated Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
CN101008928A (zh) * 2006-01-26 2007-08-01 国际商业机器公司 用于跟踪命令次序依赖性的方法和设备
CN101034345A (zh) * 2007-04-16 2007-09-12 中国人民解放军国防科学技术大学 流处理器中数据流、指令流的控制方法
CN102362257A (zh) * 2009-03-24 2012-02-22 国际商业机器公司 使用相关矩阵追踪解除分配的加载指令
CN104040492A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器和依赖性重排序方法

Also Published As

Publication number Publication date
DE112018006103T5 (de) 2020-09-17
CN111226196A (zh) 2020-06-02
DE112018006103B4 (de) 2022-04-21
JP7403450B2 (ja) 2023-12-22
GB202009499D0 (en) 2020-08-05
WO2019106462A1 (en) 2019-06-06
GB2581945B (en) 2021-01-20
JP2021504791A (ja) 2021-02-15
GB2581945A (en) 2020-09-02

Similar Documents

Publication Publication Date Title
US10884753B2 (en) Issue queue with dynamic shifting between ports
US10901744B2 (en) Buffered instruction dispatching to an issue queue
US10802829B2 (en) Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US11204772B2 (en) Coalescing global completion table entries in an out-of-order processor
US10564976B2 (en) Scalable dependency matrix with multiple summary bits in an out-of-order processor
US10942747B2 (en) Head and tail pointer manipulation in a first-in-first-out issue queue
CN111213124B (zh) 在乱序处理器中完成合并的全局完成表条目
US10922087B2 (en) Block based allocation and deallocation of issue queue entries
US10929140B2 (en) Scalable dependency matrix with a single summary bit in an out-of-order processor
US10209757B2 (en) Reducing power consumption in a multi-slice computer processor
US9652246B1 (en) Banked physical register data flow architecture in out-of-order processors
US10970079B2 (en) Parallel dispatching of multi-operation instructions in a multi-slice computer processor
US20190087195A1 (en) Allocating and deallocating reorder queue entries for an out-of-order processor
CN111226196B (zh) 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵
US10705847B2 (en) Wide vector execution in single thread mode for an out-of-order processor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant