CN102662637A - 超长指令字处理器指令发射方法 - Google Patents
超长指令字处理器指令发射方法 Download PDFInfo
- Publication number
- CN102662637A CN102662637A CN2012100899136A CN201210089913A CN102662637A CN 102662637 A CN102662637 A CN 102662637A CN 2012100899136 A CN2012100899136 A CN 2012100899136A CN 201210089913 A CN201210089913 A CN 201210089913A CN 102662637 A CN102662637 A CN 102662637A
- Authority
- CN
- China
- Prior art keywords
- instruction
- launched
- row
- bag
- logic
- 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.)
- Granted
Links
Images
Landscapes
- User Interface Of Digital Computer (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种超长指令字处理器指令发射方法,目的是减小待发射指令选择逻辑的逻辑级数,减少指令发射的延时。技术方案是先改进指令发射部件,即增加一个指令ID扩展逻辑,对指令缓冲区的位宽进行扩充,修改待发射指令选择逻辑,使得指令发射部件具有指令ID扩展和ID匹配功能;然后采用改进后的指令发射部件进行指令发射,即为取指包中的每条指令扩展一个ID,指令缓冲区存储ID扩展之后的取指包,待发射指令选择逻辑从指令缓冲区中选择可供发射的指令,并将其送至指令发射交叉开关,指令发射交叉开关将有效的待发射指令传送至相应的功能部件。采用本发明可消除串行相关性,简少待发射指令选择逻辑的逻辑级数,减少指令发射的延时。
Description
技术领域:本发明涉及超长指令字(VLIW:Very Long Instruction Word)处理器中的指令发射方法,特别是采用变长指令包技术的VLIW处理器中的指令发射方法。
背景技术:
VLIW处理器通过编译器发掘指令间的并行性,将可并行执行的指令封装在一个指令包中,构成一个超长指令字。早期的VLIW处理器采用定长指令包技术,如果处理器有n个功能部件,指令包中应有n个固定的指令字段,每个字段放置一条指令,各个字段与功能部件之间是一一对应的关系,指令发射时只需按位置对应关系将指令送至相应的功能部件。如果某个功能部件没有指令需要执行,则要把指令包中的相应字段置为无效。如果程序中指令的并行度不高,指令包中会有大量的无效字段,造成存储空间的浪费。
为了克服定长指令包技术存储空间浪费的缺点,目前许多VLIW处理器采用变长指令包技术,仅在指令包中存储有效指令,从而提高了指令存储效率。变长指令包中指令的条数是变化的,如果指令包最多可容纳n条指令,则指令包中实际的指令条数介于1~n之间。处理器取指总线的宽度是确定的,将处理器一次从存储器中取回的指令称为一个取指包,一个取指包中可能会包含1个或多个指令包,如附图2的取指包由3个指令包组成。为了进一步提高存储效率,指令包还可位于两个相邻的取指包中,称为指令包跨边界技术。附图3对指令包跨边界技术进行了说明,指令包k共有四条指令,前两条指令位于取指包j的末尾,后两条指令位于取指包j+1的开头。
变长指令包技术的优点是指令存储密度高,缺点是增加了设计实现的复杂性。为了实现变长指令包方法,首先需要对指令编码进行修改,在指令编码中增加一个新的字段,用于指定目标功能部件;其次要对处理器的流水线结构进行调整,在取指部件和功能部件之间增加一个专门的指令发射部件,指令发射部件由一个指令缓冲区、一个待发射指令选择逻辑和一个指令发射交叉开关组成,如图4所示。指令发射方法是:
1)取指部件从指令存储器中取回一个取指包,如指令缓冲区有空闲,则将取指包存入指令缓冲区;
2)待发射指令选择逻辑从指令缓冲区中选择出当前时钟节拍能够被发射的指令,并将待发射指令送至指令发射交叉开关;
3)指令发射交叉开关对待发射指令逐条进行分析,根据指令编码中携带的部件信息将指令送至相应的功能部件。
在上述指令发射方法中,从指令存储器取回的取指包未经任何处理便直接存入指令缓冲区,每个指令包在缓冲区中的起始位置是不确定的,而且指令包的长度也是不确定的,导致待发射指令选择逻辑的实现非常复杂。待发射指令选择逻辑要对指令缓冲区中的指令逐条进行检查,如果指令i是当前指令包的首指令,则指令i可被发射;否则,进一步检查其是否满足下面两个条件:1)指令i前一条指令i-1是否能够被发射,2)指令i与指令i-1是否位于同一指令包,若两个条件均满足则指令i可被发射,如有任一条件不满足指令i均不可被发射。上述两个条件的判断使得待发射指令选择逻辑产生了串行相关性,如果要一次发射k条指令,则待发射指令选择逻辑的最大逻辑级数应超过k。待发射指令选择逻辑的逻辑级数多和延时大是当前指令发射方法的主要缺点。
发明内容:
本发明要解决的技术问题是提供一种新的基于指令ID扩展与匹配的指令发射方法,消除VLIW处理器待发射指令选择逻辑中存在的串行相关性,减小待发射指令选择逻辑的逻辑级数,从而减少指令发射的延时。
本发明的技术方案包括以下步骤:
第一步,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是:
1.1增加一个指令ID扩展逻辑。指令ID扩展逻辑位于取指部件和指令缓冲区之间,它接收取指部件送来的取指包,为取指包中的每条指令扩展一个指令ID,并将扩展之后的取指包送至指令缓冲区。指令ID扩展逻辑为每条指令扩展一个ID字段,用于存储各条指令的ID。ID字段的位宽为l,l满足下述条件:2l≥S,其中S为指令缓冲区中能够存储的最大指令条数(令指令缓冲区共有m行,一行可存储k条指令,则S=m×k)。经过ID扩展后,同一指令包内指令的ID均相等,相邻指令包的ID是连续的。
1.2对指令缓冲区的位宽进行扩充,使指令缓冲区能够容纳下扩展了ID字段的指令。指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,一行存储一个取指包,共有m行。指令缓冲区一行可存储的指令条数k与取指包的指令条数相等,则指令缓冲区又可分为k列,一列最多有m条指令(与m行对应)。指令缓冲区的容量S=m×k。因为指令包的长度不大于取指包的长度,所以这种组织方法保证了同一指令包中的指令不会出现在指令缓冲区的同一列中,换言之,一列中至多有一条指令可被发射。
1.3基于ID匹配的方法修改待发射指令选择逻辑。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关。待发射指令选择逻辑由一个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连:
1.3.1ID寄存器逻辑由当前ID寄存器和寄存器维护逻辑组成。当前ID寄存器接收由寄存器维护逻辑计算出的下一可发射指令的ID,锁存后作为当前ID送至寄存器维护逻辑和k个列指令选择逻辑。当前ID寄存器的位宽与第1.1步中指令ID字段的宽度相等,当前ID指示了当前时钟节拍可发射指令的ID值。寄存器维护逻辑接收由当前ID寄存器送来的当前ID,计算下一可发射指令的ID送至当前ID寄存器。寄存器维护逻辑由一个加1器和一个模S取余模块组成:加1器接收当前ID寄存器送来的当前ID作为输入,对其加1后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。
1.3.2与指令缓冲区的k列对应,待发射指令选择逻辑设置k个列指令选择逻辑。每个列指令选择逻辑由m个ID比较器、一个m路选择器和一个m输入或门组成:m个ID比较器从指令缓冲区接收同一列的m个指令ID,从当前ID寄存器获得当前ID,将m个指令ID和当前ID分别进行比较,产生m个比较结果S1~Sm,并将S1~Sm分别送至m路选择器和m输入或门;m路选择器以S1~Sm作为选择信号,从指令缓冲区同一列的m条指令中选择出至多一条指令作为待发射指令输出;m输入或门对S1~Sm执行或运算,生成一个指令有效信号来指示当前列指令选择逻辑输出的待发射指令是否有效,为1表示有效,为0表示无效。k个列指令选择逻辑共产生k条待发射指令和k个指令有效信号送至指令发射交叉开关。
第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是:
2.1指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,按照下述方法为取指包中的每条指令扩展一个ID:
2.1.1将变量ID_Packet初始化为0;
2.1.2为取指包中的每条指令计算一个ID,方法是:
2.1.2.1将变量i初始化为0;
2.1.2.2令指令i为取指包中自首指令开始的第i条指令,按下述方法计算指令i的ID:
1)若指令i为取指包的首指令,则令IDi=ID_Packet,IDi为指令i的ID;
2)若指令i不是取指包的首指令,且指令i与指令i-1位于同一指令包内,令IDi=IDi-1;
3)若指令i不是取指包的首指令,且与指令i-1分属两个不同的指令包,则令IDi=(IDi-1+1)modS;
2.1.2.3更新变量i:i=i+1;
2.1.2.4若i<k,则跳转至2.1.2.2,否则执行2.1.3;
2.1.3更新变量ID_Packet:令指令l为取指包中的最后一条指令,若指令l为其所属指令包的最后一条指令,则ID_Packet=(ID1+1)modS;若指令l不为其所属指令包的最后一条指令,ID_Packet=ID1;
2.1.4将扩展了指令ID的取指包送至指令缓冲区,指令缓冲区执行2.2步;与此同时,如果有新的取指包到达,则跳转到第2.1.2步执行,否则继续等待。
2.2指令缓冲区接收并存储由指令ID扩展逻辑送来的ID扩展之后的取指包。指令缓冲区的一行存储一个取指包,从第1行开始顺序存储。如果第1行的指令发射完毕,则后序各行指令依次前移。如果指令缓冲区填满,则需要停顿取指流水线,直至指令缓冲区出现空槽。指令缓冲区将所有未发射指令及其ID送至待发射指令选择逻辑,待发射指令选择逻辑执行2.3步。
2.3待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关。方法如下:
2.3.1更新当前ID寄存器的值:寄存器维护逻辑对当前ID加1并按S取模,计算出下一可发射指令的ID,当前ID寄存器对下一可发射指令的ID进行锁存,作为新的当前ID;
2.3.2将当前ID寄存器的值当前ID输出给k个列指令选择逻辑;
2.3.3k个列指令选择逻辑并行工作,每个列指令选择逻辑从指令缓冲区一列的m条指令中选择出至多一条指令送至指令发射交叉开关,k个列指令选择逻辑共产生最多k个指令有效信号和k条待发射指令。下面以第i(1≤i≤k)个列指令选择逻辑为例,说明列指令选择逻辑的工作过程:
1)第i个列指令选择逻辑的m个ID比较器将一列中的m个指令ID分别与当前ID进行比较,共产生m个比较结果S1~Sm,若Sp为1表明当前列第p行(1≤p≤m)的指令可以在本拍发射,由于一列中的指令ID各不相同,所以S1~Sm至多有一个为1;
2)m路选择器以S1~Sm为选择信号,从一列的m条指令中选择Sp为1的第p行的指令作为待发射指令。由于S1~Sm至多有一个为1,所以至多有一条指令被选中;
3)m输入或门对S1~Sm进行或操作,生成当前列的指令有效信号,用于标识当前该列是否有指令可以被发射。如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。
2.3.4待发射指令选择逻辑将k条待发射指令和k个指令有效信号同时送至指令发射交叉开关。
2.4指令发射交叉开关接收待发射指令选择逻辑送来的k条待发射指令和k个指令有效信号,首先根据指令有效信号确定出有效的待发射指令,然后根据待发射指令携带的功能部件编码信息,通过指令发射交叉开关将有效的待发射指令传送至相应的功能部件。
采用本发明可以得到以下技术效果:
1.本发明第1.1步提出的指令ID扩展逻辑和第2.1步提出的指令ID扩展方法,为每条指令扩展了一个ID,同一指令包内指令的ID均相等,且指令缓冲区内不同指令包的ID各不相同,使得待发射指令选择逻辑可以用ID匹配的方法从指令缓冲区中将某个指令包的所有指令同时挑选出来,简化了待发射指令选择逻辑的实现方法;
2.本发明第1.2步提出的指令缓冲区一行可存储一个扩展了ID的取指包,其行列组织结构保证了同一列中的指令ID各不相同,即同一列中不会存在两条可供发射的指令,因此可以用并行的方法从各列中各挑选出至多一条待发射指令,使得待发射指令选择逻辑可以采用并行化的实现方法,消除了串行相关性;
3.本发明第1.3步提出的待发射指令选择逻辑和第2.3步提出的基于ID匹配的选择待发射指令的方法,通过设置k个列指令选择逻辑并行工作,只需要经过两级操作(一级ID比较+一级m路选择器,一级ID比较+一级m输入或门),就可以从指令缓冲区同时选择出所有待发射的指令,有效减少了逻辑级数和延时;
4.本发明第1.2步提出的指令缓冲区和第1.3步提出的待发射指令选择逻辑结构规整,易于实现和优化。
附图说明:
图1是背景技术定长指令包方法示意图;
图2是背景技术变长指令包方法取指包的示例图;
图3是背景技术指令包跨边界技术取指包的示例图;
图4是背景技术采用变长指令包方法指令发射部件的结构图;
图5是本发明第一步改进的指令发射部件的结构图;
图6是本发明第1.2步指令发射部件指令缓冲区的组织结构图;
图7是本发明第1.3步指令发射部件待发射指令选择逻辑的结构图;
图8是本发明第1.3.1步待发射指令选择逻辑中ID寄存器逻辑的结构图;
图9是本发明第1.3.2步待发射指令选择逻辑中一个列指令选择逻辑的结构图;
图10是本发明第2.1步指令ID扩展方法的应用示例;
图11是本发明的总体流程图。
具体实施方式
图1是背景技术所述的定长指令包方法示意图。如果有n个功能部件,指令包中应有n个固定的指令字段,每个字段与一个功能部件相对应,指令发射时只需按位置将各个字段的指令发射到相应的功能部件即可。
图2是背景技术所述的变长指令包方法取指包的示例图。在变长指令包方法中只存储有效指令,假定指令包的最大长度为n,即指令包中最多可包含n条子指令,则指令包的实际长度介于1~n之间。因为处理器取指总线的宽度是固定的,将处理器一次从存储器中取回的所有指令称为一个取指包,一个取指包中可能会包含1个或多个指令包。图中的取指包由3个指令包组成。
图3是背景技术所述的指令包跨边界技术取指包的示例图。指令包跨边界技术允许一个指令包跨越取指包的边界,存储在两个连续的取指包中。图中指令包k就同时存储在取指包j和取指包j+1中。
图4是背景技术所述的采用变长指令包方法的VLIW处理器指令发射部件的结构图。在取指部件和功能部件之间增加一个指令发射部件,指令发射部件由一个指令缓冲区、一个待发射指令选择逻辑和一个指令发射交叉开关组成:指令缓冲区一般与取指包的位宽相等,可以保存一个或数个取指包;待发射指令选择逻辑从指令缓冲区中选择出当前时钟节拍需要被发射的指令;指令发射交叉开关负责把选择出的待发射指令送至相应的功能部件。
图5是本发明第一步指令发射部件的结构图。在指令缓冲区前增加一指令ID扩展逻辑,指令ID扩展逻辑位于取指部件和指令缓冲区之间,它接收取指部件送来的取指包,为取指包中的每条指令扩展一个指令ID,并将扩展之后的取指包送至指令缓冲区。对指令缓冲区的位宽进行扩充,使其能够容纳下扩展了ID字段的指令。指令缓冲区接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,共有m行×k列。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,采用基于ID匹配的方法,从中挑选出可供发射的指令送至指令发射交叉开关。指令发射交叉开关接收待发射指令选择逻辑送来的指令和指令有效信号,首先根据指令有效信号确定出有效的待发射指令,然后根据待发射指令携带的功能部件信息,通过交叉开关将指令传送至对应的功能部件。
图6是本发明第1.2步指令缓冲区的组织结构图。指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,一行存储一个取指包,共有m行。令取指包的指令条数为k,则指令缓冲区又可分为k列,一列最多有m条指令(与m行对应)。因为指令包的长度不大于取指包的长度,所以这种组织方法保证了同一指令包中的指令不会出现在指令缓冲区的同一列中,换言之,一列中至多有一条指令可被发射。
图7是本发明第1.3步基于ID匹配的待发射指令选择逻辑的结构图。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关。待发射指令选择逻辑由一个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连。每个列指令选择逻辑分别与指令缓冲区的一列对应,其功能是从一列的m条指令中选择出至多一条指令进行发射。
图8是本发明1.3.1步ID寄存器逻辑的结构图。ID寄存器逻辑由一个当前ID寄存器和寄存器维护逻辑组成。当前ID寄存器接收由寄存器维护逻辑计算出的下一可发射指令的ID,锁存后作为当前ID送至寄存器维护逻辑和k个列指令选择逻辑。当前ID寄存器的位宽与本发明第1.1步中指令ID字段的宽度相等,当前ID指示了当前时钟节拍能可发射指令的ID值。寄存器维护逻辑接收由当前ID寄存器送来的当前ID,计算下一可发射指令的ID送至当前ID寄存器。寄存器维护逻辑由一个加1器和一个模S取余模块组成:加1器接收当前ID寄存器送来的当前ID作为输入,对其加1后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。
图9是本发明第1.3.2步待发射指令选择逻辑中一个列指令选择逻辑的结构图(第i列指令选择逻辑),第i列指令选择逻辑由m个ID比较器、一个m路选择器和一个m输入或门组成。ID比较器的输入有两个,一个输入是指令ID,另一个输入是从ID寄存器送来的当前ID,若两个输入相等,ID比较器的输出为1,否则输出0。m个ID比较器共产生m个选择信号S1~Sm,并将S1~Sm分别送至m路选择器和一个m输入或门。Sp为1表明当前列第p行的指令可以在本拍发射,由于一列中的指令ID各不相同,所以S1~Sm至多有一个为1。m路选择器以S1~Sm为选择信号,从一列的m条指令中选择Sp为1的第p行的指令作为待发射指令(第i列指令选择逻辑生成待发射指令i)。由于S1~Sm至多有一个为1,所以至多有一条指令被选中。m输入或门对S1~Sm通过或操作生成当前列的指令有效信号(第i列指令选择逻辑生成指令有效信号i),用于标识当前该列是否有指令可以被发射。如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。
图10以图2中的取指包为例,对本发明第2.1步中指令ID扩展方法进行了说明。指令ID扩展逻辑为每条指令扩展一个ID字段,ID字段与原先的指令合在一起构成新的指令。示例取指包中共有3个指令包,第一个指令包的ID为0,后两个指令包的ID依次加1递增,同一指令包内所有指令的ID均相等。
图11是本发明的总体流程图。本发明主要有两个步骤:
第一步,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是:1)增加一个指令ID扩展逻辑;2)对指令缓冲区的位宽进行扩充;3)基于ID匹配的方法修改待发射指令选择逻辑。
第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是:1)指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,为取指包中的每条指令扩展一个ID;2)指令缓冲区接收并存储ID扩展之后的取指包;3)待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关;4)指令发射交叉开关接收待发射指令选择逻辑送来的待发射指令和指令有效信号,通过交叉开关将有效的待发射指令送至相应的功能部件。
Claims (3)
1.一种超长指令字处理器指令发射方法,其特征在于包括以下步骤:
第一步,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是:
1.1增加一个指令ID扩展逻辑:指令ID扩展逻辑位于取指部件和指令缓冲区之间,它接收取指部件送来的取指包,为取指包中的每条指令扩展一个指令ID,并将扩展之后的取指包送至指令缓冲区;指令ID扩展逻辑为每条指令扩展一个ID字段,用于存储各条指令的ID;ID字段的位宽为l,l满足2l≥S,其中S为指令缓冲区的容量,即指令缓冲区中能够存储的最大指令条数,S=m×k,m为指令缓冲区的行数,k为指令缓冲区一行可存储的指令条数;
1.2对指令缓冲区的位宽进行扩充,使指令缓冲区能够容纳下扩展了ID字段的指令;指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑;指令缓冲区按行、列进行组织,一行存储一个取指包,共有m行,指令缓冲区一行可存储的指令条数k与取指包的指令条数相等,指令缓冲区分为k列,一列最多有m条指令;
1.3基于ID匹配的方法修改待发射指令选择逻辑:待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关;待发射指令选择逻辑由一个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连;
1.3.1 ID寄存器逻辑由当前ID寄存器和寄存器维护逻辑组成。当前ID寄存器接收由寄存器维护逻辑计算出的下一可发射指令的ID,锁存后作为当前ID送至寄存器维护逻辑和k个列指令选择逻辑;当前ID寄存器的位宽与指令ID字段的宽度相等,当前ID指示当前时钟节拍可发射指令的ID值;寄存器维护逻辑接收由当前ID寄存器送来的当前ID,计算下一可发射指令的ID送至当前ID寄存器;
1.3.2与指令缓冲区的k列对应,待发射指令选择逻辑设置k个列指令选择逻辑;每个列指令选择逻辑由m个ID比较器、一个m路选择器和一个m输入或门组成:m个ID比较器从指令缓冲区接收同一列的m个指令ID,从当前ID寄存器获得当前ID,将m个指令ID和当前ID分别进行比较,产生m个比较结果S1~Sm,并将S1~Sm分别送至m路选择器和m输入或门;m路选择器以S1~Sm作为选择信号,从指令缓冲区同一列的m条指令中选择出至多一条指令作为待发射指令输出;m输入或门对S1~Sm执行或运算,生成一个指令有效信号来指示当前列指令选择逻辑输出的待发射指令是否有效,为1表示有效,为0表示无效;k个列指令选择逻辑共产生k条待发射指令和k个指令有效信号送至指令发射交叉开关;
第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是:
2.1指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,按照下述方法为取指包中的每条指令扩展一个ID:
2.1.1将变量ID_Packet初始化为0;
2.1.2为取指包中的每条指令计算一个ID,方法是:
2.1.2.1将变量i初始化为0;
2.1.2.2令指令i为取指包中自首指令开始的第i条指令,按下述方法计算指令i的ID:
1)若指令i为取指包的首指令,则令IDi=ID_Packet,IDi为指令i的ID;
2)若指令i不是取指包的首指令,且指令i与指令i-1位于同一指令包内,令IDi=IDi-1;
3)若指令i不是取指包的首指令,且与指令i-1分属两个不同的指令包,则令IDi=(IDi-1+1)modS;
2.1.2.3i=i+1;
2.1.2.4若i<k,则跳转至2.1.2.2,否则执行2.1.3;
2.1.3更新变量ID_Packet:令指令l为取指包中的最后一条指令,若指令l为其所属指令包的最后一条指令,则ID_Packet=(ID1+1)modS;
若指令l不为其所属指令包的最后一条指令,ID_Packet=ID1;
2.1.4将扩展了指令ID的取指包送至指令缓冲区,指令缓冲区执行2.2步;与此同时,如果有新的取指包到达,指令ID扩展逻辑跳转到第2.1.2步执行,否则指令ID扩展逻辑继续等待;
2.2指令缓冲区接收并存储由指令ID扩展逻辑送来的ID扩展之后的取指包,指令缓冲区的一行存储一个取指包,从第1行开始顺序存储;如果第1行的指令发射完毕,则后序各行指令依次前移;如果指令缓冲区填满,则停顿取指流水线,直至指令缓冲区出现空槽;指令缓冲区将所有未发射指令及其ID送至待发射指令选择逻辑,待发射指令选择逻辑执行2.3步;
2.3待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关,方法如下:
2.3.1更新当前ID寄存器的值:寄存器维护逻辑对当前ID加1并按S取模,计算出下一可发射指令的ID,当前ID寄存器对下一可发射指令的ID进行锁存,作为新的当前ID;
2.3.2将当前ID寄存器的值当前ID输出给k个列指令选择逻辑;
2.3.3k个列指令选择逻辑并行工作,每个列指令选择逻辑从指令缓冲区一列的m条指令中选择出至多一条指令送至指令发射交叉开关,k个列指令选择逻辑共产生最多k个指令有效信号和k条待发射指令;
2.3.4待发射指令选择逻辑将k条待发射指令和k个指令有效信号同时送至指令发射交叉开关;
2.4指令发射交叉开关接收待发射指令选择逻辑送来的k条待发射指令和k个指令有效信号,首先根据指令有效信号确定出有效的待发射指令,然后根据待发射指令携带的功能部件编码信息,通过指令发射交叉开关将有效的待发射指令传送至相应的功能部件。
2.如权利要求1所述的一种超长指令字处理器指令发射方法,其特征在于所述寄存器维护逻辑由一个加1器和一个模S取余模块组成:加1器接收当前ID寄存器送来的当前ID作为输入,对其加1后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。
3.如权利要求1所述的一种超长指令字处理器指令发射方法,其特征在于所述每个列指令选择逻辑的工作过程是相同的,第i个列指令选择逻辑的工作过程是,1≤i≤k:
1)第i个列指令选择逻辑的m个ID比较器将一列中的m个指令ID分别与当前ID进行比较,共产生m个比较结果S1~Sm,若Sp为1表明当前列第p行的指令可以在本拍发射,1≤p≤m;
2)m路选择器以S1~Sm为选择信号,从一列的m条指令中选择Sp为1的第p行的指令作为待发射指令;
3)m输入或门对S1~Sm进行或操作,生成当前列的指令有效信号,如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210089913.6A CN102662637B (zh) | 2012-03-30 | 2012-03-30 | 超长指令字处理器指令发射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210089913.6A CN102662637B (zh) | 2012-03-30 | 2012-03-30 | 超长指令字处理器指令发射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662637A true CN102662637A (zh) | 2012-09-12 |
CN102662637B CN102662637B (zh) | 2014-10-15 |
Family
ID=46772138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210089913.6A Active CN102662637B (zh) | 2012-03-30 | 2012-03-30 | 超长指令字处理器指令发射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662637B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699466A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
CN108228236A (zh) * | 2017-12-06 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持流水的高效指令发射处理电路 |
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050246515A1 (en) * | 2002-06-05 | 2005-11-03 | Helge Betzinger | Method for the coding/decoding of vliw cached instructions |
CN101699392A (zh) * | 2009-11-12 | 2010-04-28 | 中国人民解放军国防科学技术大学 | 流处理器中io单元复用方法 |
-
2012
- 2012-03-30 CN CN201210089913.6A patent/CN102662637B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050246515A1 (en) * | 2002-06-05 | 2005-11-03 | Helge Betzinger | Method for the coding/decoding of vliw cached instructions |
CN101699392A (zh) * | 2009-11-12 | 2010-04-28 | 中国人民解放军国防科学技术大学 | 流处理器中io单元复用方法 |
Non-Patent Citations (2)
Title |
---|
QINGWEI ZHENG等: "Implementation of an instruction dispatch unit applied to digital signal processors with VLIW architecture", 《2010 SECOND PACIFIC-ASIA CONFERENCE ON CIRCUITS,COMMUNICATIONS AND SYSTEM》 * |
付志刚: "600MHz YHFT-DX取指派发部件设计优化与物理设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699466A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
CN104699466B (zh) * | 2015-03-26 | 2017-07-18 | 中国人民解放军国防科学技术大学 | 一种面向vliw体系结构的多元启发式指令选择方法 |
CN108228236A (zh) * | 2017-12-06 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持流水的高效指令发射处理电路 |
CN110858150A (zh) * | 2018-08-22 | 2020-03-03 | 上海寒武纪信息科技有限公司 | 一种具有局部实时可重构流水级的运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102662637B (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220107911A1 (en) | Apparatuses, methods, and systems for operations in a configurable spatial accelerator | |
CN104040491B (zh) | 微处理器加速的代码优化器 | |
CN111512298A (zh) | 用于可配置空间加速器中的条件队列的装置、方法和系统 | |
US7877401B1 (en) | Pattern matching | |
JP2019028865A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN100498691C (zh) | 指令处理电路和处理程序指令的方法 | |
CN104583941B (zh) | 用于在多线程处理系统中选择性激活恢复检查操作的方法和设备 | |
KR102279200B1 (ko) | 에뮬레이티드 공유 메모리 아키텍쳐를 위한 부동-소수점 지원가능한 파이프라인 | |
CN102662637A (zh) | 超长指令字处理器指令发射方法 | |
CN109062604B (zh) | 一种面向标量和向量指令混合执行的发射方法及装置 | |
KR20210156854A (ko) | 벡터 인덱스 레지스터 | |
CN110928832A (zh) | 异步流水线处理器电路、装置及数据处理方法 | |
US7945765B2 (en) | Method and structure for asynchronous skip-ahead in synchronous pipelines | |
US20110264892A1 (en) | Data processing device | |
US20080091924A1 (en) | Vector processor and system for vector processing | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
KR20210156860A (ko) | True/false 벡터 인덱스 레지스터 | |
CN111199277A (zh) | 一种卷积神经网络加速器 | |
KR20020039687A (ko) | 추론적 마이크로프로세서에서 명령을 변환하기위한 방법 | |
CN110086602A (zh) | 基于gpu的sm3密码散列算法的快速实现方法 | |
Cui et al. | mBWA: A massively parallel sequence reads aligner | |
CN106919368A (zh) | 一种流式数据流图关键路径的加速方法、加速系统、装置及芯片 | |
CN114970848A (zh) | 用于并行处理器的数据搬运装置及相应处理器 | |
CN102855120A (zh) | 超长指令字vliw的处理器和处理方法 | |
WO2019080091A1 (zh) | 代码处理方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |