在一个实施例中,可编程处理器包括具有许多阶段的流水线。延迟控制器适合于预探测流水线其中一个阶段中的危险条件,并同步延迟流水线的另一个阶段。为在流水线中延迟其他信号,延迟控制器产生了附加延迟信号。(*该技术在2021年保护过期,可自由使用*)
【技术实现步骤摘要】
【国外来华专利技术】背景本专利技术涉及延迟可编程处理器。“流水线操作”是使用在常规可编程处理器,比如数字信号处理器中的一种技术。在这种可编程处理器中,为了增加总体处理速度,指令是被重复执行的。典型的流水线处理器处理大量的阶段性处理指令。指令依据系统时钟从一个阶段移动到另一个阶段,其中,典型的系统时钟有以流水线中最慢阶段决定的时钟速率。然而,处理器称为“危险因素”的指令和条件有时候阻止了指令流中下一条指令的执行。例如,当一条指令依赖于还没有从流水线中结束的前一条指令的结果时,数据危险因素就发生了。因此,危险导致流水线“阻塞”并降低了流水线的性能。普通的解决方法是附加硬件,这被称作流水线互锁,它检测危险因素并延迟流水线直到危险因素被清除。有代表性的是,流水线互锁通过特定指令,通常称作“NOP”来延迟流水线。其中,该“NOP”指令不需要流水线的操作,但它却消耗了指令流中的一个位置。图2是可编程处理器流水线范例的结构图。图3是延迟控制器一个实施例的结构图。图4是延迟发生器一个实施范例的示意图。图5是指令跟踪电路一个实施例的示意图。图6是单循环延迟的条件探测发生器一个实施例的示意图。图7是双循环延迟的条件探测器一个实施例的示意图。图8是N重循环条件探测器一个实施例的示意图。 具体实施例方式附图说明图1是具备执行流水线4和控制单元6的可编程处理器2的结构图。控制单元6控制流水线4中指令和数据的流动。例如,在处理指令时,控制单元6可以指引流水线的不同部分来对指令解码,并正确的执行相应的操作,比如说将结果写回内存。指令可以被载入流水线4的第一阶段,并由后续阶段处理。每个阶段与其他阶段并发处理。数据与系统时钟一致,在流水线4的阶段中通过。指令的结果快速接替的出现在流水线4的末端。延迟控制器8可以探测危险条件并维护(assert)到延迟流水线4的一个或多个延迟信号。如下所述,延迟控制器8同步产生依据系统时钟9的延迟信号。图2是依照本专利技术流水线4的例子图解。例如,流水线4可以有5个阶段取指令(IF)、指令解码(DEC)、地址计算(AC)、执行(EX)和回写(WB)。在第一阶段(IF),指令能通过取单元11从比如像主存或指令高速缓冲存储器这样的存储装置中取出,并在第二阶段(DEC)通过指令解码单元12来解码。在下一个时钟周期,结果被传送到第三阶段(AC),在那里数据地址发生器13计算存储地址并执行操作。在执行阶段(EX),执行单元15执行特定的操作,例如,将两个数相加或相乘。执行单元可能包含专门的硬件用来执行这样的操作,这包括像一个或多个算术逻辑单元(ALU’S)、浮点数单元(FPU)和桶转换器(barrel shifters)。数据的多样性可以适用于执行单元15,比如由数据地址发生器13产生的地址、从存储器17中重新得到的数据或从数据寄存器14中重新得到的数据。在末尾阶段(WB),结果被写回数据存储器或数据寄存器14中。流水线4的阶段包括阶段存储电路,比如阶段存储器19,它用来存储当前阶段的结果。典型的,阶段存储器19依据系统时钟来闭锁结果。阶段寄存器19接收到延迟信号18,这将控制阶段寄存器19是否闭锁前一阶段的结果。如此,延迟控制器8可以同步延迟流水线4中一个或多个阶段。特别的,控制器8在指令流中不插入非操作指令(“NOP”)的情况下,能有效的冻结流水线4。另外,如下面将要更详细讨论的,延迟控制器8可能在早于危险条件发生的一个或更多周期时,就探测到了危险条件,这样延迟信号18可能由存储电路的输出产生,该存储电路为比如像能支持高扇出(fan-out)需求的触发器。此外,流水线4不必包括附加硬件用来在延迟条件不再存在之前暂时存储操作的结果。图3是延迟控制器8一个实施例的结构图。延迟控制器8可包括延迟发生器32、条件探测器34和指令跟踪电路33。如下面将要详细描述的,指令跟踪电路33输出一个或多个阶段指示信号36来指示流水线4不同阶段中一种或多种类型指令的存在。例如,当分支指令在流水线4的地址计算(AC)阶段中时,指令跟踪电路33可以确定特别的阶段指示信号36。通常,指令跟踪电路33探测指令不同类型的存在与否,当某个阶段存在时,指令跟踪电路33就创建危险条件,这就需要流水线4延迟一个或多个周期。指令跟踪电路33确定阶段指示信号36,并将它作为通过流水线4的不同阶段并能导致潜在危险的指令流。条件探测器34接收到阶段指示信号36,并确定在流水线4不同阶段中指令的存在是否导致危险因素。如果如此,那么流水线4就需要延迟周期数。当在流水线4中探测到危险条件时,条件探测器34可能确定危险条件35一个或多个周期。延迟发生器32接收到危险条件信号35,并基于探测到的危险因素,可确定延迟信号18,并用一个或多个周期来延迟流水线4的一个或多个阶段。图4是延迟发生器32一个实施范例的示意图。延迟发生器可接收许多危险条件信号35,比如通过延迟_条件_8的延迟_条件_1,当各个延迟条件已被条件探测器34探测到时,这一点能确定。输入信号仅作为范例目的;例如,延迟发生器32可接收流水线4不同阶段的不同延迟条件的任何数目。响应于危险条件信号35,延迟发生器32可以产生延迟信号18来延迟流水线4。延迟发生器32可产生大多数的延迟信号18,这些延迟信号相应于流水线4的阶段。例如,当确定延迟_条件_1或延迟_条件_2,且处理器2没有被重置时,延迟发生器32可确定延迟_回写输出信号,这导至了流水线4回写阶段的延迟。特别的,延迟_回写输出信号被用来产生对流水线4较早阶段的延迟输出信号,比如延迟_执行输出信号。更明确的说,当确定延迟_条件_3、延迟_条件_4或延迟_回写,且处理器2没有被重置时,延迟发生器32确定了延迟_执行输出信号。如此,在回写阶段的延迟就迫使产生了执行阶段的延迟。类似的,延迟发生器32产生基于独立危险条件的延迟_地址计算和延迟_指令解码信号,也产生了流水线4较低阶段的延迟。图5是提供阶段指示信号36的指令跟踪电路33一个实施范例的图解。在图解实施例中,两种指令类型可被监控,但本专利技术不局限于此。指令跟踪电路33提供三种输出信号,用来指示第一指令类型的存在指令_类型1`_地址计算、指令_类型1_执行和指令_类型1_回写。这些信号分别指示地址计算、执行和回写阶段的第一指令类型的存在。另外,指令跟踪电路33提供指示第二指令类型存在的信号输出指令_类型2_地址计算。这个信号指示流水线4地址计算状态中第二指令类型的存在。指令跟踪电路33接收到许多输入,包括指令_类型1_解码和指令_类型2_解码。这些指令分别执行这样的操作,即由控制单元6中的解码逻辑给出,当第一指令类型或第二指令类型存在时被确定,并在解码阶段解码。这两个信号都适于确保解码阶段的指令是有效的且没有被“剔除(killed)”,例如由分支条件导致的指令流改变而引起“剔除”现象,这两个信号还适于确保解码阶段中指令没有被延迟。第一指令类型的存在引发确定信号在触发器51系列中的传播,这如同指令在流水线4中的流动一样。确定的信号在每个阶段中被进一步限定。同样的,在解码阶段第二指令类型的存在被探测到,并在单触发器中传播,用来提供输出指令_类型2_地址计算。第二指令类型的进程能在所有阶段中被监控;然而,下面描述的例子在地本文档来自技高网...
【技术保护点】
一种方法,其特征在于,包含: 在第一时钟周期,预探测流水线处理器中的危险条件; 在第二时钟周期,产生一系列延迟信号; 根据产生的流水线信号,延迟一个或多个流水线状态。
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:CP罗思,RP辛格,GA奥弗坎普,
申请(专利权)人:英特尔公司,模拟设备股份有限公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。