CN111258657B - 流水线控制方法及相关设备 - Google Patents
流水线控制方法及相关设备 Download PDFInfo
- Publication number
- CN111258657B CN111258657B CN202010076315.XA CN202010076315A CN111258657B CN 111258657 B CN111258657 B CN 111258657B CN 202010076315 A CN202010076315 A CN 202010076315A CN 111258657 B CN111258657 B CN 111258657B
- Authority
- CN
- China
- Prior art keywords
- level difference
- target
- clock cycle
- operand
- instruction
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
Abstract
本发明公开一种流水线控制方法及相关设备,确定当前的时钟周期所要发送的目标指令;在目标指令执行时需要条件和操作数时,确定目标指令执行时所需的条件的条件请求级差,确定目标指令执行时所需的操作数的操作数请求级差;确定目标指令所需的条件所在的第一目标条件寄存器资源,确定条件请求级差是否不小于第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果;确定目标指令所需的操作数所在的第一目标数据寄存器资源,确定操作数请求级差是否不小于第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果;在第一判断结果和第二判断结果均为是时,在当前的时钟周期发送目标指令。本发明降低了CPU负担。
Description
技术领域
本发明涉及处理器性能优化领域,尤其涉及流水线控制方法及相关设备。
背景技术
流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。但是流水线技术也存在着数据冒险的问题。
现有的用于顺序执行CPU的中央指令计分板算法,在顺序执行的CPU当中维护所有正在执行的指令的信息。发射每一条新的指令之前,该算法都会检查当前指令和所有正在执行的指令的资源冲突。如果每个时钟周期发射N条指令,最长流水线深度(代表最多未完成的指令的数目)是L,那么该算法需要检查的资源冲突关系数目是N*L*N。
这就使得数据冒险的检测过程十分复杂,增加了CPU的处理负担。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的流水线控制方法及相关设备,技术方案如下:
一种流水线控制方法,包括:
确定当前的时钟周期所要发送的目标指令;
在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差;
确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令。
可选的,还包括:
在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差;
对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
可选的,还包括:
确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存;
确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
可选的,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,所述方法还包括:在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
可选的,还包括:
在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,将所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差减1,并将计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,确定所述目标指令产生的操作数的第三生效级差,将所述第三生效级差减1,并将计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
一种流水线控制装置,包括:目标指令确定单元、请求级差确定单元、第一级差判断单元、第二级差判断单元和目标指令发送单元,
所述目标指令确定单元,用于确定当前的时钟周期所要发送的目标指令;
所述请求级差确定单元,用于在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差;
所述第一级差判断单元,用于确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述第二级差判断单元,用于确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述目标指令发送单元,用于在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令。
可选的,还包括:生效级差确定单元、第一级差比较单元和第二级差比较单元,
所述生效级差确定单元,用于在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差;
所述第一级差比较单元,用于对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
所述第二级差比较单元,用于对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
可选的,还包括:第一流水线级确定单元和第二流水线级确定单元,
所述第一流水线级确定单元,用于确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存;
所述第二流水线级确定单元,用于确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
可选的,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,所述装置还包括:生命周期取反单元,用于在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
一种流水线控制设备,包括:至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述的任一种流水线控制方法。
一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现上述的任一种流水线控制方法。
一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的任一种流水线控制方法。
借由上述技术方案,本发明提供的一种流水线控制方法及相关设备,确定当前的时钟周期所要发送的目标指令;在目标指令执行时需要条件和操作数时,确定目标指令执行时所需的条件的条件请求级差,确定目标指令执行时所需的操作数的操作数请求级差;确定目标指令所需的条件所在的第一目标条件寄存器资源,确定条件请求级差是否不小于第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果;确定目标指令所需的操作数所在的第一目标数据寄存器资源,确定操作数请求级差是否不小于第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果;在第一判断结果和第二判断结果均为是时,在当前的时钟周期发送目标指令。本发明可以通过条件最大级差和操作数最大级差来确定是否发送指令,每个指令在发送前只需要与上述最大级差相比即可,相比于现有的用于顺序执行CPU的中央指令计分板算法,可以大大降低数据冒险的检测复杂度,降低了CPU的处理负担。同时,本发明能够帮助有效快速寻找CPU流水线暂停最小条件,避免传统设计方法解决复杂问题时CPU流水线过多的暂停,可以有效提高CPU性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种流水线控制方法的流程图;
图2示出了本发明实施例提供的另一种流水线控制方法的流程图;
图3示出了本发明实施例提供的一种流水线控制装置的结构示意图;
图4示出了本发明实施例提供的一种流水线控制设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明实施例提供的一种流水线控制方法,可以包括:
S001、确定当前的时钟周期所要发送的目标指令。
其中,目标指令的类型可以有多种,如无条件写指令,有条件写指令,读指令等。根据不同的指令类型,本发明可以进行相应的处理。
可选的,每个时钟周期都可以发送N个指令,对每个指令都可以进行本发明实施例提供的流水线控制方法中的部分或全部处理。本发明中,时钟周期可以用T0至Tn表示,其中,T0可以表示第一个时钟周期,以此类推,Tn表示第n个时钟周期。
S002、在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差。
有条件写指令执行时需要条件和操作数,其中,条件和操作数可以均为向量。本发明可以根据指令查找表确定各个指令的条件请求级差和操作数请求级差。指令查找表中可以保存有指令需要条件的流水线级和指令需要操作数的流水线级。其中,条件请求级差是目标指令在当前的时钟周期的流水线级与所述目标指令需要条件的流水线级之间的流水线级差。例如:目标指令在当前的时钟周期的流水线级为EX1,目标指令需要条件的流水线级为EX3,则条件请求级差为2。操作数请求级差是目标指令在当前的时钟周期的流水线级与所述目标指令需要操作数的流水线级之间的流水线级差。例如:目标指令在当前的时钟周期的流水线级为EX1,目标指令需要操作数的流水线级为EX4,则条件请求级差为3。
具体的,指令查找表中除保存有指令需要条件的流水线级和指令需要操作数的流水线级外,还可以保存有指令内容、指令产生条件的流水线级、指令产生操作数的流水线级、指令的发送时刻所在的时钟周期、执行指令的功能单元等。
表1为本发明实施例提供的一种可选的指令查找表的举例。
表1
表1中的PC为指令地址,VR req stage为指令需要操作数的流水线级,VR availstage为指令产生操作数的流水线级,Cond req stage为指令需要条件的流水线级,Condavail stage为指令产生条件的流水线级,FU为执行指令的功能单元的标识。其中,每一个新的时钟周期可以发送一个新的指令,该指令的PC在前一时钟周期发射的指令的PC的基础上增加4。表1中PC为0的指令可以在时钟周期T0发送,PC为4的指令可以在时钟周期T1发送,以此类推。
S003、确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差。
其中,寄存器资源可以包括条件寄存器资源和数据寄存器资源两种,具体的,一个处理器中的条件寄存器资源可以为一个或多个,一个处理器中的数据寄存器资源可以为多个,如:32个。其中,数据寄存器资源可以具体为:通用向量寄存器资源。例如:某CPU有通用向量寄存器资源32个,声明结构1份VR[31:0];条件寄存器资源1个。具体的,可以用cond作为该条件寄存器资源的标识,可以用VR作为通用向量寄存器资源的标识。由于通用向量寄存器资源可以为多个,因此可以在VR后增加阿拉伯数字来区分各通用向量寄存器资源,如:VR0、VR1……VR31。这些通用向量寄存器资源的标识可以保存于声明结构中。
每个指令执行时都有可能会涉及到对寄存器资源的读和写,例如表1中的指令(cond,VR3)=VMUL(VR1,VR2,cond),该指令的含义为:在条件寄存器资源cond中的条件向量下,将数据寄存器资源VR1中的操作数向量和数据寄存器资源VR2中的操作数向量相乘,将向量乘的数据结果写到数据寄存器资源VR3中,将向量乘的条件结果写到条件寄存器资源cond中。其中,VMUL(VR1,VR2,cond)中的cond为指令所需的条件所在的目标条件寄存器资源。VMUL(VR1,VR2,cond)中的VR1和VR2为指令所需的操作数所在的目标数据寄存器资源。(cond,VR3)中的cond为指令产生的条件所要写入的目标条件寄存器资源。(cond,VR3)中的VR3为指令产生的操作数所要写入的目标数据寄存器资源。
具体的,本发明可以根据指令产生的条件的生效级差与该产生的条件所要写入的条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为该条件寄存器资源在下一时钟周期的条件最大级差。具体的,本发明可以在每个时钟周期都对条件最大级差进行更新。
由于条件最大级差为从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差,因此当第一判断结果为否时,说明目标指令所需的条件在需要的时刻并未准备好,该目标指令不能发送。其中,前向推送网络在CPU里面一般是指的是解决写后读(RAW,Read After Write)问题时用的数据定向技术的物理数据走线或传送网络。数据定向技术又称为向前传递(forwarding)技术或者旁路(bypass)技术,是指流水线中将计算结果从其产生的地方直接送到真正需要它的地方,而不是从寄存器文件读出使用,它是一种解决数据相关问题的技术。
在实际应用中,本发明可以通过预设标识来体现寄存器资源在前向推送网络里是否有效,例如:通过1代表有效,通过0代表无效。
S004、确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差。
其中,步骤S004与步骤S003原理类似,不再赘述。
由于操作数最大级差为从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差,因此当第二判断结果为否时,说明目标指令所需的操作数在需要的时刻并未准备好,该目标指令不能发送。
S005、在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令。
当第一判断结果和所述第二判断结果均为是时,说明目标指令所需的操作数在需要的时刻已准备好,且目标指令所需的条件在需要的时刻已准备好,因此目标指令可以在当前的时钟周期发送,从而开始在流水线中执行目标指令。
需要说明的是,并不是所有的指令都需要条件,因此对于不需要条件的指令,可以不用执行步骤S003,相应的,步骤S005具体包括:在第二判断结果均为是时,在当前的时钟周期发送所述目标指令。
可选的,步骤S003和步骤S004的执行先后顺序本发明不做限定。
本发明实施例提供的一种流水线控制方法,可以通过条件最大级差和操作数最大级差来确定是否发送指令,每个指令在发送前只需要与上述最大级差相比即可,相比于现有的用于顺序执行CPU的中央指令计分板算法,可以大大降低数据冒险的检测复杂度,降低了CPU的处理负担。同时,本发明能够帮助有效快速寻找CPU流水线暂停最小条件,避免传统设计方法解决复杂问题时CPU流水线过多的暂停,可以有效提高CPU性能。
在图1所示实施例基础上,如图2所示,本发明实施例提供的另一种流水线控制方法,还可以包括:
S006、在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差。
在其他实施例中,当目标指令为产生操作数的写指令时,本发明可以仅确定所述目标指令产生的操作数的第二生效级差,然后执行步骤S008即可,无需执行步骤S007。
其中,第一生效级差为目标指令产生条件的流水线级与目标指令当前所处的流水线级之间的级差。第二生效级差为目标指令产生操作数的流水线级与目标指令当前所处的流水线级之间的级差。
S007、对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差。
可选的,第一目标条件寄存器和第二目标条件寄存器可以为相同或不同的寄存器。
其中,条件最大级差和操作数最大级差均为寄存器资源的属性,本发明可以对每个寄存器资源的最大级差均进行维护。数据寄存器资源具有操作数最大级差的属性,条件寄存器资源具有条件最大级差的属性。
由于每经过一个时钟周期,目标指令都会处理一个的流水线级(例如:时钟周期为T1时,目标指令位于流水线级EX1,则时钟周期为T2时,目标指令位于流水线级EX2),因此本发明可以确定将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差。
由于条件最大级差为从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差,因此每到一个时钟周期,该时钟周期发送的指令从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的级差都有可能会大于之前的最大级差。所以每个时钟周期,本发明都可以执行步骤S007和步骤S008的处理,以及时更新条件最大级差和操作数最大级差。
S008、对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
可选的,第一目标数据寄存器和第二目标数据寄存器可以为相同或不同的寄存器。
其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差。
步骤S008和步骤S007的原理类似,不再赘述。
可选的,步骤S006至步骤S008可以在步骤S001至步骤S005之前或之后执行,步骤S006至步骤S008也可以和步骤S001至步骤S005并行执行。因此,本发明不对步骤S006至步骤S008和步骤S001至步骤S005之间的执行先后顺序做限定。
在图2所示实施例基础上,本发明实施例提供的另一种流水线控制方法,还可以包括:
确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存。
确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
通过将当前流水线级与最大级差对应保存,可以方便的跟随当前流水线级的变化来更新最大级差。
在本发明其他实施例中,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,上述实施例所提供的流水线控制方法还可以包括:在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
通过生命周期标识,使得指令发送出去后,可以在前向推送网络上根据该生命周期标识来确定哪些数据是该指令的前向推送源,无需重新做一次数据冒险检查。
进一步,上述实施例所提供的流水线控制方法还可以包括:在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,将所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差减1,并将计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差。
在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,确定所述目标指令产生的操作数的第三生效级差,将所述第三生效级差减1,并将计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
与上述方法实施例相对应,本发明还提供了一种流水线控制装置,如图3所示,该装置可以包括:目标指令确定单元100、请求级差确定单元200、第一级差判断单元300、第二级差判断单元400和目标指令发送单元500,
所述目标指令确定单元100,用于确定当前的时钟周期所要发送的目标指令;
所述请求级差确定单元200,用于在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差;
所述第一级差判断单元300,用于确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述第二级差判断单元400,用于确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述目标指令发送单元500,用于在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令。
其中,图3所示装置还可以包括:生效级差确定单元、第一级差比较单元和第二级差比较单元,
所述生效级差确定单元,用于在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差;
所述第一级差比较单元,用于对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
所述第二级差比较单元,用于对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
进一步,图3所示装置还可以包括:第一流水线级确定单元和第二流水线级确定单元,
所述第一流水线级确定单元,用于确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存;
所述第二流水线级确定单元,用于确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
在本发明其他实施例中,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,图3所示装置还可以包括:生命周期取反单元,用于在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
本发明实施例提供的一种流水线控制装置,可以通过条件最大级差和操作数最大级差来确定是否发送指令,每个指令在发送前只需要与上述最大级差相比即可,相比于现有的用于顺序执行CPU的中央指令计分板算法,可以大大降低数据冒险的检测复杂度,降低了CPU的处理负担。同时,本发明能够帮助有效快速寻找CPU流水线暂停最小条件,避免传统设计方法解决复杂问题时CPU流水线过多的暂停,可以有效提高CPU性能。
所述流水线控制装置包括处理器和存储器,上述目标指令确定单元、请求级差确定单元、第一级差判断单元、第二级差判断单元和目标指令发送单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来进行流水线控制。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现本发明实施例提供的任一种流水线控制方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行本发明实施例提供的任一种流水线控制方法。
本发明实施例提供了一种流水线控制设备70,如图4所示,可以包括:至少一个处理器701、以及与所述处理器701连接的至少一个存储器702、总线703;其中,所述处理器701、所述存储器702通过所述总线703完成相互间的通信;所述处理器701用于调用所述存储器702中的程序指令,以执行本发明实施例提供的任一种流水线控制方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有本发明实施例提供的任一种流水线控制方法的程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种流水线控制方法,其特征在于,包括:
确定当前的时钟周期所要发送的目标指令;
在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差;
确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令;
在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差;
对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
2.根据权利要求1所述的方法,其特征在于,还包括:
确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存;
确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
3.根据权利要求1或2所述的方法,其特征在于,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,所述方法还包括:在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
4.根据权利要求3所述的方法,其特征在于,还包括:
在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,将所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差减1,并将计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,确定所述目标指令产生的操作数的第三生效级差,将所述第三生效级差减1,并将计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
5.一种流水线控制装置,其特征在于,包括:目标指令确定单元、请求级差确定单元、第一级差判断单元、第二级差判断单元和目标指令发送单元、生效级差确定单元、第一级差比较单元和第二级差比较单元,
所述目标指令确定单元,用于确定当前的时钟周期所要发送的目标指令;
所述请求级差确定单元,用于在所述目标指令执行时需要条件和操作数时,确定所述目标指令执行时所需的条件的条件请求级差,确定所述目标指令执行时所需的操作数的操作数请求级差;
所述第一级差判断单元,用于确定所述目标指令所需的条件所在的第一目标条件寄存器资源,确定所述条件请求级差是否不小于所述第一目标条件寄存器资源在当前的时钟周期的条件最大级差,获得第一判断结果,其中,所述条件最大级差为:从当前的时钟周期开始到所述第一目标条件寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述第二级差判断单元,用于确定所述目标指令所需的操作数所在的第一目标数据寄存器资源,确定所述操作数请求级差是否不小于所述第一目标数据寄存器资源在当前的时钟周期的操作数最大级差,获得第二判断结果,其中,所述操作数最大级差为:从当前的时钟周期开始到所述第一目标数据寄存器资源在前向推送网络里从无效变为有效的时钟周期的最大级差;
所述目标指令发送单元,用于在所述第一判断结果和所述第二判断结果均为是时,在当前的时钟周期发送所述目标指令;
所述生效级差确定单元,用于在所述目标指令为产生条件和操作数的有条件写指令时,确定所述目标指令产生的条件的第一生效级差,确定所述目标指令产生的操作数的第二生效级差;
所述第一级差比较单元,用于对所述目标指令产生的条件所要写入的第二目标条件寄存器资源:将所述第一生效级差与所述第二目标条件寄存器资源在当前的时钟周期的条件最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标条件寄存器资源在下一时钟周期的条件最大级差;
所述第二级差比较单元,用于对所述目标指令产生的操作数所要写入的第二目标数据寄存器资源:将所述第二生效级差与所述第二目标数据寄存器资源在当前的时钟周期的操作数最大级差进行比较,将较大的级差减1后的计算结果作为所述第二目标数据寄存器资源在下一时钟周期的操作数最大级差。
6.根据权利要求5所述的装置,其特征在于,还包括:第一流水线级确定单元和第二流水线级确定单元,
所述第一流水线级确定单元,用于确定所述第一生效级差与所述当前的时钟周期的条件最大级差中的较大的级差对应的指令的第一当前流水线级,将所述第一当前流水线级与所述下一时钟周期的条件最大级差对应保存;
所述第二流水线级确定单元,用于确定所述第二生效级差与所述当前的时钟周期的操作数最大级差中的较大的级差对应的指令的第二当前流水线级,将所述第二当前流水线级与所述下一时钟周期的操作数最大级差对应保存。
7.根据权利要求5或6所述的装置,其特征在于,数据寄存器资源还具有生命周期标识,所述生命周期标识为1或0,所述装置还包括:生命周期取反单元,用于在所述目标指令为对所述第二目标数据寄存器资源的无条件写指令时,对所述第二目标数据寄存器资源的生命周期标识取反。
8.一种流水线控制设备,其特征在于,包括:至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至4任一项所述的流水线控制方法。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至4任一项所述的流水线控制方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1至4任一项所述的流水线控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076315.XA CN111258657B (zh) | 2020-01-23 | 2020-01-23 | 流水线控制方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010076315.XA CN111258657B (zh) | 2020-01-23 | 2020-01-23 | 流水线控制方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111258657A CN111258657A (zh) | 2020-06-09 |
CN111258657B true CN111258657B (zh) | 2020-11-20 |
Family
ID=70945469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010076315.XA Active CN111258657B (zh) | 2020-01-23 | 2020-01-23 | 流水线控制方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111258657B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129369A (zh) * | 2021-03-26 | 2022-09-30 | 上海阵量智能科技有限公司 | 命令分发方法、命令分发器、芯片以及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
CN1678988A (zh) * | 2002-09-04 | 2005-10-05 | Arm有限公司 | 数据处理设备中的流水线之间的同步化 |
CN101151589A (zh) * | 2005-01-13 | 2008-03-26 | Nxp股份有限公司 | 处理器及其指令发布方法 |
CN101395573A (zh) * | 2006-02-28 | 2009-03-25 | Mips技术公司 | 乱序处理器中的分布式记分板调度 |
WO2013103823A1 (en) * | 2012-01-04 | 2013-07-11 | Qualcomm Incorporated | Processor with hazard tracking employing register range compares |
US9336003B2 (en) * | 2013-01-25 | 2016-05-10 | Apple Inc. | Multi-level dispatch for a superscalar processor |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944746B2 (en) * | 2002-04-01 | 2005-09-13 | Broadcom Corporation | RISC processor supporting one or more uninterruptible co-processors |
CN1761940B (zh) * | 2003-03-19 | 2010-06-16 | 皇家飞利浦电子股份有限公司 | 指令处理设备,指令执行方法和装置,指令编译方法和装置 |
CN105824604B (zh) * | 2015-11-24 | 2017-08-29 | 中国科学院计算技术研究所 | 多输入多输出处理器流水线数据同步装置及方法 |
-
2020
- 2020-01-23 CN CN202010076315.XA patent/CN111258657B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
CN1678988A (zh) * | 2002-09-04 | 2005-10-05 | Arm有限公司 | 数据处理设备中的流水线之间的同步化 |
CN101151589A (zh) * | 2005-01-13 | 2008-03-26 | Nxp股份有限公司 | 处理器及其指令发布方法 |
CN101395573A (zh) * | 2006-02-28 | 2009-03-25 | Mips技术公司 | 乱序处理器中的分布式记分板调度 |
WO2013103823A1 (en) * | 2012-01-04 | 2013-07-11 | Qualcomm Incorporated | Processor with hazard tracking employing register range compares |
US9336003B2 (en) * | 2013-01-25 | 2016-05-10 | Apple Inc. | Multi-level dispatch for a superscalar processor |
Also Published As
Publication number | Publication date |
---|---|
CN111258657A (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
KR102185287B1 (ko) | 벡터 연산 장치 | |
CN111310910A (zh) | 一种计算装置及方法 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
JP2019204492A (ja) | ニューロモルフィック・アクセラレータ・マルチタスキング | |
WO2018120016A1 (zh) | 用于执行lstm神经网络运算的装置和运算方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US11599384B2 (en) | Customized root processes for individual applications | |
CN111027690B (zh) | 执行确定性推理的组合处理装置、芯片和方法 | |
US20220413900A1 (en) | Customized root processes for groups of applications | |
WO2023082575A1 (zh) | 一种面向神经网络模型计算的图执行流水并行方法和装置 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
US20240086359A1 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
US20200319893A1 (en) | Booting Tiles of Processing Units | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN111258657B (zh) | 流水线控制方法及相关设备 | |
US11093245B2 (en) | Computer system and memory access technology | |
US9430244B1 (en) | Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers | |
CN103513959A (zh) | 无需执行的特殊情况寄存器更新 | |
US20140013312A1 (en) | Source level debugging apparatus and method for a reconfigurable processor | |
CN110825502A (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
US11216377B2 (en) | Hardware accelerator automatic detection of software process migration | |
US9501667B2 (en) | Security domain prediction |
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 |