在处理器中的指令流水线中插入代理读取指令制造技术

技术编号:37616191 阅读:19 留言:0更新日期:2023-05-18 12:07
公开了在处理器的指令流水线中插入代理读取指令。调度器电路被配置为:识别由指令流水线中的生产者指令的执行所生成的产生值何时将不能通过数据转发路径被消费以用于处理后续消费者指令。在该情况下,调度电路被配置为:在指令流水线中插入代理读取指令以引起操作的执行,以生成与指令流水线中生产者指令的先前执行所生成的产生值相同的产生值。因此,产生值将在指令流水线中保持可用,以通过数据转发路径对指令流水线的更早阶段再次可用,以由消费者指令消费,这可以避免流水线停顿。这可以避免流水线停顿。这可以避免流水线停顿。

【技术实现步骤摘要】
【国外来华专利技术】在处理器中的指令流水线中插入代理读取指令
[0001]优先权申请
[0002]本申请要求2020年08月03日提交的、题目为“INSERTING APROXY READ INSTRUCTION IN AN INSTRUCTION PIPELINE IN A PROCESSOR”的美国专利申请序列号16/983445的优先权,通过引用以其整体并入本文。


[0003]本公开的技术一般涉及处理中央处理单元(CPU)中的指令流水线中的指令,并且更具体地涉及将由生产者指令的执行所生成的产生数据,数据转发到指令流水线中的更早阶段,以由其消费者指令消费。

技术介绍

[0004]微处理器在各种各样的应用中执行计算任务。常规的微处理器包括一个或多个中央处理单元(CPU)。CPU包括一个或多个处理器核,每个处理器核执行软件指令,软件指令指示处理器从存储器中的位置提取数据、使用所提取的数据执行一个或多个处理器操作,并且在存储器中生成存储结果。处理器可以包括用于处理指令的一个或多个指令流水线(pipeline),也被称为“指令通道”。指令流水线是一种处理技术,通过指令流水线可以增加处理器执行的计算机指令的吞吐量。在这方面,每个指令的处理被拆分成一系列步骤,而不是每个指令被顺序地处理并且在处理下一个指令之前被完全执行。这些步骤在由多个阶段组成的指令流水线中被执行。当指令流过指令流水线的各个流水线阶段时,在从存储器提取指令的时间直到实际执行该指令的时间之间存在多个周期。处理器也可以具有多个指令流水线来将指令的处理并行化。
>[0005]如果指令流水线中的所有阶段都能够在指令被插入在指令流水线中时同时并且顺序地处理指令,则可以实现最佳处理器性能。然而,在指令流水线中可能出现危险,从而在不导致错误的计算结果的情况下无法执行下一个指令。一种类型的危险是写后读(RAW)危险。当指令需要(即,消费)先前发出但属于尚未完成指令的结果时,出现RAW危险。例如,如果在指令流水线的指令流中处理具有相同目的地(即,目标)的一系列乘积累加(MAC)指令,则来自先前MAC指令(作为生产者指令)的产生值被用作后续MAC指令(作为消费者)的源值。如果先前MAC指令没有完成执行,则后续MAC指令的源值将不会被更新,并且后续MAC指令将使用先前存储的、可能不正确的源值作为其源。为了解决RAW危险,指令流水线中的调度器电路可以停顿(stall)消费者指令,直到其生产者指令被完全执行,以避免RAW危险,但代价是指令吞吐量减小。
[0006]为了避免或减少指令流水线停顿,指令流水线可以被配置有电路系统以使能数据转发。数据转发是指令流水线中的一种机制,其中来自生产者指令的、已提交但尚未被写入到寄存器堆的产生值被转发到指令流水线的更早阶段,以用于由后面的消费者指令消费。处理器中的寄存器堆是处理器的硬件电路元件,寄存器堆包括寄存器阵列,每个寄存器被配置为存储值。寄存器堆中的寄存器可以是物理寄存器或逻辑寄存器,当在处理指令中被
调用时可以被动态地重命名。以该方式,即使产生值尚未被写入寄存器堆且在寄存器堆中可用,产生值也可以及时可用以由消费者指令消费,而无需停顿指令流水线中的消费者指令。例如,处理器支持的指令集架构(ISA)可以包括MAC指令,MAC指令支持根据格式Vx+=op(Vu,Vv)对要乘在一起的两个矢量源和累加的目标进行命名。在该示例中,Vu和Vv标识用于两个源矢量的源矢量寄存器,该两个源矢量要被乘在一起并且与第三矢量源寄存器Vx中的第三矢量寄存器累加。第三源矢量寄存器Vx也是用于存储累加的矢量结果的目标寄存器。因此,具有数据转发能力的指令流水线的执行阶段可以仅需要具有两个寄存器读取输入端口,来支持在指令流水线中处理的指令数据流中执行具有相同目的地的多个MAC指令。两个读取输入端口可以用于访问源矢量寄存器Vu和Vv中的矢量。数据转发可以用于将来自在指令流水线中执行的先前MAC指令的矢量目标中的累加的目标矢量,作为输入矢量,转发到指令流水线中执行的后续MAC指令。
[0007]然而,在该示例中,如果在与先前MAC指令具有相同目的地的后续MAC指令准备好消费目标矢量之前,该先前MAC指令已经将累加的目标矢量写入到寄存器堆,则数据转发不能用于将由该先前MAC指令生成的目标矢量作为输入转发到后续MAC指令。在该情况下,在执行该后续MAC指令时必须从寄存器堆读取目标矢量。然而,如果指令流水线的执行阶段仅具有两个输入读取端口,则不能同时读取两个经命名的乘法源输入和累加源输入,这是因为没有三(3)个输入端口可用。为了避免扩展读取输入端口的数目(这可能增加指令流水线中的电路系统面积),可以在两个分开的指令流水线中处理MAC指令,以便总共有四(4)个读取输入端口可用。然而,这种技术会消耗附加的指令流水线中的吞吐量,不然附加的指令流水线可以能够处理其他指令。

技术实现思路

[0008]本文公开的方面包括在处理器中的指令流水线中插入代理读取指令。代理读取指令的插入可以在指令流水线中维持产生值以供消费。提供了一种处理器,该处理器包括指令处理电路,指令处理电路包括一个或多个指令流水线,每个指令流水线包括多个指令处理阶段,指令处理阶段被配置为对提取的指令进行流水线处理和执行。调度器电路被包括在调度阶段的指令处理电路中,以调度要在其指令流水线中被执行的指令的发出。所执行的指令包括生产者指令,生产者指令使指令流水线的执行阶段中的执行电路生成产生值。所执行的指令还包括在被执行时消费这些产生值的消费者指令。产生值可以通过指令流水线中的回写阶段中的回写电路被写回存储器(诸如寄存器堆),以供随后的处理指令访问。(多个)指令流水线可以包括数据转发机制,由此将来自生产者指令的、已提交但尚未被写入到寄存器堆的产生值转发到指令流水线的更早阶段,以对后面的消费者指令的消费可用。然而,如果产生值在准备好被消费者指令的处理所消费之前在指令流水线中被生成得太早,则可能导致流水线停顿,以在稍后在处理消费者指令时从寄存器堆取回该产生值。
[0009]在本文公开的示例性方面中,为了避免流水线停顿,指令流水线中的调度器电路被配置为:识别由指令流水线中的生产者指令的执行所生成的产生值何时将不能通过数据转发路径用来供后续消费者指令的处理来消费。在该情况下,调度电路被配置为在指令流水线中插入代理读取指令。代理读取指令使处理器执行操作,以生成与指令流水线中的生产者指令的先前执行所生成的产生值相同的产生值。因此,产生值将在指令流水线中保持
可用,以通过数据转发路径再次对指令流水线的更早阶段可用,以供消费者指令消费。以该方式,产生值再次可用来作为消费者指令的消费进行处理,而不必在处理消费者指令时从寄存器堆取回这种产生值。如果必须从寄存器堆取回由生产者指令的执行所生成的产生值以用于处理消费者指令所消费,则可能导致指令流水线中的停顿,否则如果产生值通过数据转发路径可用,则不需要该停顿。
[0010]调度器电路可以被配置为:针对仅某些类型的指令,在指令流水线中仅插入代理读取指令作为转发机制,该些指令已知具有消本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种处理器,包括:寄存器堆,包括多个寄存器条目,每个寄存器条目被配置为存储数据值;以及指令处理电路,包括:提取电路,被配置为将多个指令提取到指令流水线中,所述多个指令包括生产者指令和消费者指令;所述指令流水线,包括:执行电路,被配置为:执行包括源寄存器和目标寄存器的所述生产者指令,以生成要被写入到所述寄存器堆中的所述目标寄存器的产生值;以及调度器电路,被配置为:接收提取的消费者指令,所述消费者指令包括对应于所述生产者指令的所述目标寄存器的源寄存器;并且响应于确定所述产生值将不能在所述指令流水线中用来作为所述消费者指令的所述源寄存器被消费:在所述指令流水线中插入代理读取指令,所述代理读取指令包括存储所述产生值的所述目标寄存器。2.根据权利要求1所述的处理器,其中所述调度器电路还被配置为:确定由所述生产者指令的执行所生成的所述产生值是否将在所述指令流水线中的至少一个数据转发路径中被转发,以能够在所述执行电路中用来作为所述消费者指令的所述源寄存器被消费。3.根据权利要求1所述的处理器,其中所述调度器电路还被配置为:响应于确定所述产生值将能够在所述至少一个数据转发路径中用来作为所述消费者指令的所述源寄存器被消费:不在所述指令流水线中插入代理读取指令,所述代理读取指令包括存储所述产生值的所述目标寄存器。4.根据权利要求1所述的处理器,其中所述执行电路还被配置为:在所述至少一个数据转发路径中转发由所述生产者指令的执行所生成的所述产生值,以作为所述消费者指令的所述源寄存器被消费。5.根据权利要求1所述的处理器,其中所述执行电路还被配置为:执行所述代理读取指令,以重新生成所述产生值;并且在所述至少一个数据转发路径中转发重新生成的所述产生值。6.根据权利要求5所述的处理器,其中:所述代理读取指令包括复制指令;并且所述执行电路被配置为:通过被配置为将所述产生值复制到所述目标寄存器中,来执行所述代理读取指令以重新生成所述产生值。7.根据权利要求5所述的处理器,其中:所述代理读取指令包括移动指令;并且所述执行电路被配置为:通过被配置为将所述产生值移动到所述目标寄存器中,来执行所述代理读取指令以重新生成所述产生值。8.根据权利要求5所述的处理器,其中:所述代理读取指令包括包含与所述目标寄存器是相同寄存器的源寄存器的指令,其中
所述源寄存器包含所述产生值;并且所述执行电路被配置为:执行所述代理读取指令,以重新生成所述产生值。9.根据权利要求5所述的处理器,其中所述执行电路还被配置为:将重新生成的所述产生值作为要被执行的所述消费者指令的所述源寄存器来消费。10.根据权利要求1所述的处理器,其中所述调度器电路被配置为:通过被配置为执行如下操作来确定所述产生值是否将在所述指令流水线中被转发以能够在所述执行电路中用来作为所述消费者指令的所述源寄存器被消费,所述操作包括:确定与所述产生值能够从所述至少一个数据转发路径作为所述消费者指令的所述源寄存器被消费相比,所述产生值是否将更早地在所述至少一个数据转发路径中被转发。11.根据权利要求1所述的处理器,其中:所述指令流水线还包括回写电路,所述回写电路被配置为:将由所述执行电路通过执行生产者指令所生成的所述产生值回写到与所述生产者指令的所述目标寄存器相对应的所述寄存器堆中;并且所述调度器电路被配置为:通过被配置为确定由所述生产者指令的执行所生成的、要作为所述消费者指令的所述源寄存器被消费的所述产生值是否被写回到所述寄存器堆,来确定与所述产生值能够从所述至少一个数据转发路径作为所述消费者指令的所述源寄存器被消费相比,所述产生值是否将更早地在所述至少一个数据转发路径中被转发。12.根据权利要求11所述的处理器,其中所述调度器电路被配置为:通过被配置为确定在所述消费者指令被所述调度器电路调度之前,由所述生产者指令的执行所生成的、要作为所述消费者指令的所述源寄存器被消费的所述产生值是否被写回到所述寄存器堆,来确定所述产生值是否被写回到所述寄存器堆。13.根据权利要求11所述的处理器,其中:所述调度器电路还被配置为:分派在所述执行电路中要被执行的所述消费者指令;并且所述调度器电路被配置为:通过被配置为确定由所述生产者指令的执行所生成的、要作为所述消费者指令的所述源寄存器被消费的所述产生值是否在所述消费者指令被分派到所述执行电路之前被写回到所述寄存器堆,来确定所述产生值是否被写回到所述寄存器堆。14.根据权利要求1所述的处理器,其中所述调度器电路还被配置为:确定由所述生产者指令的执行所生成的、要作为所述消费者指令的所述源寄存器被消费的所述产生值是否将在至少一个数据转发路径中被转发太晚而不能从所述至少一个数据转发路径作为所述消费者指令的所述源寄存器被消费;并且响应于确定所述产生值将在所述至少一个数据转发路径中被转发太晚而不能从所述至少一个数据转发路径作为所述消费者指令的所述源寄存器被消费,停顿所述指令流水线中的所述消费者指令。15.根据权利要求1所述的处理器,其中:所述执行电路包括耦合到...

【专利技术属性】
技术研发人员:E
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1