超长指令字处理器指令发射方法

文档序号:6367363阅读:194来源:国知局
专利名称:超长指令字处理器指令发射方法
技术领域
本发明涉及超长指令字(VLIW Very Long Instruction Word)处理器中的指令发射方法,特别是采用变长指令包技术的VLIW处理器中的指令发射方法。
背景技术
VLIff处理器通过编译器发掘指令间的并行性,将可并行执行的指令封装在一个指令包中,构成一个超长指令字。早期的VLIW处理器采用定长指令包技术,如果处理器有n个功能部件,指令包中应有n个固定的指令字段,每个字段放置一条指令,各个字段与功能部件之间是一一对应的关系,指令发射时只需按位置对应关系将指令送至相应的功能部件。 如果某个功能部件没有指令需要执行,则要把指令包中的相应字段置为无效。如果程序中指令的并行度不高,指令包中会有大量的无效字段,造成存储空间的浪费。为了克服定长指令包技术存储空间浪费的缺点,目前许多VLIW处理器采用变长指令包技术,仅在指令包中存储有效指令,从而提高了指令存储效率。变长指令包中指令的条数是变化的,如果指令包最多可容纳n条指令,则指令包中实际的指令条数介于I n之间。处理器取指总线的宽度是确定的,将处理器一次从存储器中取回的指令称为一个取指包,一个取指包中可能会包含I个或多个指令包,如附图2的取指包由3个指令包组成。为了进一步提高存储效率,指令包还可位于两个相邻的取指包中,称为指令包跨边界技术。附图3对指令包跨边界技术进行了说明,指令包k共有四条指令,前两条指令位于取指包j的末尾,后两条指令位于取指包j+1的开头。变长指令包技术的优点是指令存储密度高,缺点是增加了设计实现的复杂性。为了实现变长指令包方法,首先需要对指令编码进行修改,在指令编码中增加一个新的字段,用于指定目标功能部件;其次要对处理器的流水线结构进行调整,在取指部件和功能部件之间增加一个专门的指令发射部件,指令发射部件由一个指令缓冲区、一个待发射指令选择逻辑和一个指令发射交叉开关组成,如图4所示。指令发射方法是I)取指部件从指令存储器中取回一个取指包,如指令缓冲区有空闲,则将取指包存入指令缓冲区;2)待发射指令选择逻辑从指令缓冲区中选择出当前时钟节拍能够被发射的指令,并将待发射指令送至指令发射交叉开关;3)指令发射交叉开关对待发射指令逐条进行分析,根据指令编码中携带的部件信息将指令送至相应的功能部件。在上述指令发射方法中,从指令存储器取回的取指包未经任何处理便直接存入指令缓冲区,每个指令包在缓冲区中的起始位置是不确定的,而且指令包的长度也是不确定的,导致待发射指令选择逻辑的实现非常复杂。待发射指令选择逻辑要对指令缓冲区中的指令逐条进行检查,如果指令i是当前指令包的首指令,则指令i可被发射;否则,进一步检查其是否满足下面两个条件1)指令i前一条指令i_l是否能够被发射,2)指令i与指令i-1是否位于同一指令包,若两个条件均满足则指令i可被发射,如有任一条件不满足指令i均不可被发射。上述两个条件的判断使得待发射指令选择逻辑产生了串行相关性,如果要一次发射k条指令,则待发射指令选择逻辑的最大逻辑级数应超过k。待发射指令选择逻辑的逻辑级数多和延时大是当前指令发射方法的主要缺点。

发明内容
本发明要解决的技术问题是提供一种新的基于指令ID扩展与匹配的指令发射方法,消除VLIW处理器待发射指令选择逻辑中存在的串行相关性,减小待发射指令选择逻辑的逻辑级数,从而减少指令发射的延时。本发明的技术方案包括以下步骤第一步,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是I. I增加一个指令ID扩展逻辑。指令ID扩展逻辑位于取指部件和指令缓冲区之 间,它接收取指部件送来的取指包,为取指包中的每条指令扩展一个指令ID,并将扩展之后的取指包送至指令缓冲区。指令ID扩展逻辑为每条指令扩展一个ID字段,用于存储各条指令的ID。ID字段的位宽为1,I满足下述条件21 > S,其中S为指令缓冲区中能够存储的最大指令条数(令指令缓冲区共有m行,一行可存储k条指令,则S = mX k)。经过ID扩展后,同一指令包内指令的ID均相等,相邻指令包的ID是连续的。I. 2对指令缓冲区的位宽进行扩充,使指令缓冲区能够容纳下扩展了 ID字段的指令。指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,一行存储一个取指包,共有m行。指令缓冲区一行可存储的指令条数k与取指包的指令条数相等,则指令缓冲区又可分为k列,一列最多有m条指令(与m行对应)。指令缓冲区的容量S = mXk。因为指令包的长度不大于取指包的长度,所以这种组织方法保证了同一指令包中的指令不会出现在指令缓冲区的同一列中,换言之,一列中至多有一条指令可被发射。I. 3基于ID匹配的方法修改待发射指令选择逻辑。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关。待发射指令选择逻辑由一个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连I. 3. IID寄存器逻辑由当前ID寄存器和寄存器维护逻辑组成。当前ID寄存器接收由寄存器维护逻辑计算出的下一可发射指令的ID,锁存后作为当前ID送至寄存器维护逻辑和k个列指令选择逻辑。当前ID寄存器的位宽与第I. I步中指令ID字段的宽度相等,当前ID指示了当前时钟节拍可发射指令的ID值。寄存器维护逻辑接收由当前ID寄存器送来的当前ID,计算下一可发射指令的ID送至当前ID寄存器。寄存器维护逻辑由一个加I器和一个模S取余模块组成加I器接收当前ID寄存器送来的当前ID作为输入,对其加I后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。I. 3. 2与指令缓冲区的k列对应,待发射指令选择逻辑设置k个列指令选择逻辑。每个列指令选择逻辑由m个ID比较器、一个m路选择器和一个m输入或门组成m个ID比较器从指令缓冲区接收同一列的m个指令ID,从当前ID寄存器获得当前ID,将m个指令ID和当前ID分别进行比较,产生m个比较结果SI Sm,并将SI Sm分别送至m路选择器和m输入或门;m路选择器以SI Sm作为选择信号,从指令缓冲区同一列的m条指令中选择出至多一条指令作为待发射指令输出;m输入或门对SI Sm执行或运算,生成一个指令有效信号来指示当前列指令选择逻辑输出的待发射指令是否有效,为I表示有效,为O表示无效。k个列指令选择逻辑共产生k条待发射指令和k个指令有效信号送至指令发射交叉开关。第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是2. I指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,按照下述方法为取指包中的每条指令扩展一个ID 2. I. I 将变量 ID_Packet 初始化为 0 ;2. I. 2为取指包中的每条指令计算一个ID,方法是2. I. 2. I将变量i初始化为0 ;2. I. 2. 2令指令i为取指包中自首指令开始的第i条指令,按下述方法计算指令i的ID I)若指令i为取指包的首指令,则令IDi = ID_Packet, IDi为指令i的ID ;2)若指令i不是取指包的首指令,且指令i与指令i_l位于同一指令包内,令IDi=IDi-I ;3)若指令i不是取指包的首指令,且与指令i_l分属两个不同的指令包,则令IDi=(IDi-Al)IiiodS ;2. I. 2. 3 更新变量 i :i = i+1 ;2. I. 2. 4 若 i < k,则跳转至 2. I. 2. 2,否则执行 2. I. 3 ;2. I. 3更新变量ID_Packet :令指令I为取指包中的最后一条指令,若指令I为其所属指令包的最后一条指令,则ID_Packet = (IDj+DmodS ;若指令I不为其所属指令包的最后一条指令,ID_Packet = ID1 ; 2. I. 4将扩展了指令ID的取指包送至指令缓冲区,指令缓冲区执行2. 2步;与此同时,如果有新的取指包到达,则跳转到第2. I. 2步执行,否则继续等待。2. 2指令缓冲区接收并存储由指令ID扩展逻辑送来的ID扩展之后的取指包。指令缓冲区的一行存储一个取指包,从第I行开始顺序存储。如果第I行的指令发射完毕,则后序各行指令依次前移。如果指令缓冲区填满,则需要停顿取指流水线,直至指令缓冲区出现空槽。指令缓冲区将所有未发射指令及其ID送至待发射指令选择逻辑,待发射指令选择逻辑执行2. 3步。2. 3待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关。方法如下2. 3. I更新当前ID寄存器的值寄存器维护逻辑对当前ID加I并按S取模,计算出下一可发射指令的ID,当前ID寄存器对下一可发射指令的ID进行锁存,作为新的当前ID ;
2. 3. 2将当前ID寄存器的值当前ID输出给k个列指令选择逻辑;2. 3. 3k个列指令选择逻辑并行工作,每个列指令选择逻辑从指令缓冲区一列的m条指令中选择出至多一条指令送至指令发射交叉开关,k个列指令选择逻辑共产生最多k个指令有效信号和k条待发射指令。下面以第i (I < i < k)个列指令选择逻辑为例,说明列指令选择逻辑的工作过程I)第i个列指令选择逻辑的m个ID比较器将一列中的m个指令ID分别与当前ID进行比较,共产生m个比较结果SI Sm,若Sp为I表明当前列第p行(I彡p彡m)的指令可以在本拍发射,由于一列中的指令ID各不相同,所以SI Sm至多有一个为I ;
2)m路选择器以SI Sm为选择信号,从一列的m条指令中选择Sp为I的第p行的指令作为待发射指令。由于SI Sm至多有一个为1,所以至多有一条指令被选中;3)m输入或门对SI Sm进行或操作,生成当前列的指令有效信号,用于标识当前该列是否有指令可以被发射。如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。2. 3. 4待发射指令选择逻辑将k条待发射指令和k个指令有效信号同时送至指令发射交叉开关。2. 4指令发射交叉开关接收待发射指令选择逻辑送来的k条待发射指令和k个指令有效信号,首先根据指令有效信号确定出有效的待发射指令,然后根据待发射指令携带的功能部件编码信息,通过指令发射交叉开关将有效的待发射指令传送至相应的功能部件。采用本发明可以得到以下技术效果I.本发明第I. I步提出的指令ID扩展逻辑和第2. I步提出的指令ID扩展方法,为每条指令扩展了一个ID,同一指令包内指令的ID均相等,且指令缓冲区内不同指令包的ID各不相同,使得待发射指令选择逻辑可以用ID匹配的方法从指令缓冲区中将某个指令包的所有指令同时挑选出来,简化了待发射指令选择逻辑的实现方法;2.本发明第I. 2步提出的指令缓冲区一行可存储一个扩展了 ID的取指包,其行列组织结构保证了同一列中的指令ID各不相同,即同一列中不会存在两条可供发射的指令,因此可以用并行的方法从各列中各挑选出至多一条待发射指令,使得待发射指令选择逻辑可以采用并行化的实现方法,消除了串行相关性;3.本发明第I. 3步提出的待发射指令选择逻辑和第2. 3步提出的基于ID匹配的选择待发射指令的方法,通过设置k个列指令选择逻辑并行工作,只需要经过两级操作(一级ID比较+ —级m路选择器,一级ID比较+ —级m输入或门),就可以从指令缓冲区同时选择出所有待发射的指令,有效减少了逻辑级数和延时;4.本发明第I. 2步提出的指令缓冲区和第I. 3步提出的待发射指令选择逻辑结构规整,易于实现和优化。


图I是背景技术定长指令包方法示意图;图2是背景技术变长指令包方法取指包的示例图;图3是背景技术指令包跨边界技术取指包的示例图4是背景技术采用变长指令包方法指令发射部件的结构图;图5是本发明第一步改 进的指令发射部件的结构图;图6是本发明第I. 2步指令发射部件指令缓冲区的组织结构图;图7是本发明第I. 3步指令发射部件待发射指令选择逻辑的结构图;图8是本发明第I. 3. I步待发射指令选择逻辑中ID寄存器逻辑的结构图;图9是本发明第I. 3. 2步待发射指令选择逻辑中一个列指令选择逻辑的结构图;图10是本发明第2. I步指令ID扩展方法的应用示例;图11是本发明的总体流程图。
具体实施例方式图I是背景技术所述的定长指令包方法示意图。如果有n个功能部件,指令包中应有n个固定的指令字段,每个字段与一个功能部件相对应,指令发射时只需按位置将各个字段的指令发射到相应的功能部件即可。图2是背景技术所述的变长指令包方法取指包的示例图。在变长指令包方法中只存储有效指令,假定指令包的最大长度为n,即指令包中最多可包含n条子指令,则指令包的实际长度介于I n之间。因为处理器取指总线的宽度是固定的,将处理器一次从存储器中取回的所有指令称为一个取指包,一个取指包中可能会包含I个或多个指令包。图中的取指包由3个指令包组成。图3是背景技术所述的指令包跨边界技术取指包的示例图。指令包跨边界技术允许一个指令包跨越取指包的边界,存储在两个连续的取指包中。图中指令包k就同时存储在取指包j和取指包j+1中。图4是背景技术所述的采用变长指令包方法的VLIW处理器指令发射部件的结构图。在取指部件和功能部件之间增加一个指令发射部件,指令发射部件由一个指令缓冲区、一个待发射指令选择逻辑和一个指令发射交叉开关组成指令缓冲区一般与取指包的位宽相等,可以保存一个或数个取指包;待发射指令选择逻辑从指令缓冲区中选择出当前时钟节拍需要被发射的指令;指令发射交叉开关负责把选择出的待发射指令送至相应的功能部件。图5是本发明第一步指令发射部件的结构图。在指令缓冲区前增加一指令ID扩展逻辑,指令ID扩展逻辑位于取指部件和指令缓冲区之间,它接收取指部件送来的取指包,为取指包中的每条指令扩展一个指令ID,并将扩展之后的取指包送至指令缓冲区。对指令缓冲区的位宽进行扩充,使其能够容纳下扩展了 ID字段的指令。指令缓冲区接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,共有m行Xk列。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,采用基于ID匹配的方法,从中挑选出可供发射的指令送至指令发射交叉开关。指令发射交叉开关接收待发射指令选择逻辑送来的指令和指令有效信号,首先根据指令有效信号确定出有效的待发射指令,然后根据待发射指令携带的功能部件信息,通过交叉开关将指令传送至对应的功能部件。图6是本发明第I. 2步指令缓冲区的组织结构图。指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑。指令缓冲区按行、列进行组织,一行存储一个取指包,共有m行。令取指包的指令条数为k,则指令缓冲区又可分为k列,一列最多有m条指令(与m行对应)。因为指令包的长度不大于取指包的长度,所以这种组织方法保证了同一指令包中的指令不会出现在指令缓冲区的同一列中,换言之,一列中至多有一条指令可被发射。图I是本发明第I. 3步基于ID匹配的待发射指令选择逻辑的结构图。待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关。待发射指令选择逻辑由一个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连。每个列指令选择逻辑分别与指令缓冲 区的一列对应,其功能是从一列的m条指令中选择出至多一条指令进行发射。图8是本发明I. 3. I步ID寄存器逻辑的结构图。ID寄存器逻辑由一个当前ID寄存器和寄存器维护逻辑组成。当前ID寄存器接收由寄存器维护逻辑计算出的下一可发射指令的ID,锁存后作为当前ID送至寄存器维护逻辑和k个列指令选择逻辑。当前ID寄存器的位宽与本发明第I. I步中指令ID字段的宽度相等,当前ID指示了当前时钟节拍能可发射指令的ID值。寄存器维护逻辑接收由当前ID寄存器送来的当前ID,计算下一可发射指令的ID送至当前ID寄存器。寄存器维护逻辑由一个加I器和一个模S取余模块组成加I器接收当前ID寄存器送来的当前ID作为输入,对其加I后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。图9是本发明第I. 3. 2步待发射指令选择逻辑中一个列指令选择逻辑的结构图(第i列指令选择逻辑),第i列指令选择逻辑由m个ID比较器、一个m路选择器和一个m输入或门组成。ID比较器的输入有两个,一个输入是指令ID,另一个输入是从ID寄存器送来的当前ID,若两个输入相等,ID比较器的输出为1,否则输出O。m个ID比较器共产生m个选择信号SI Sm,并将SI Sm分别送至m路选择器和一个m输入或门。Sp为I表明当前列第P行的指令可以在本拍发射,由于一列中的指令ID各不相同,所以SI Sm至多有一个为I。m路选择器以SI Sm为选择信号,从一列的m条指令中选择Sp为I的第p行的指令作为待发射指令(第i列指令选择逻辑生成待发射指令i)。由于SI Sm至多有一个为1,所以至多有一条指令被选中。m输入或门对SI Sm通过或操作生成当前列的指令有效信号(第i列指令选择逻辑生成指令有效信号i),用于标识当前该列是否有指令可以被发射。如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。图10以图2中的取指包为例,对本发明第2. I步中指令ID扩展方法进行了说明。指令ID扩展逻辑为每条指令扩展一个ID字段,ID字段与原先的指令合在一起构成新的指令。示例取指包中共有3个指令包,第一个指令包的ID为0,后两个指令包的ID依次加I递增,同一指令包内所有指令的ID均相等。图11是本发明的总体流程图。本发明主要有两个步骤
第一步,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是1)增加一个指令ID扩展逻辑;2)对指令缓冲区的位宽进行扩充;3)基于ID匹配的方法修改待发射指令选择逻辑。

第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是1)指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,为取指包中的每条指令扩展一个ID ;2)指令缓冲区接收并存储ID扩展之后的取指包;3)待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关;4)指令发射交叉开关接收待发射指令选择逻辑送来的待发射指令和指令有效信号,通过交叉开关将有效的待发射指令送至相应的功能部件。
权利要求
1.一种超长指令字处理器指令发射方法,其特征在于包括以下步骤 第一歩,改进指令发射部件,使得指令发射部件具有指令ID扩展和ID匹配功能,方法是 I.I増加ー个指令ID扩展逻辑指令ID扩展逻辑位于取指部件和指令缓冲区之间,它接收取指部件送来的取指包,为取指包中的每条指令扩展ー个指令ID,并将扩展之后的取指包送至指令缓冲区;指令ID扩展逻辑为每条指令扩展ー个ID字段,用于存储各条指令的ID ;ID字段的位宽为1,I满足21 > S,其中S为指令缓冲区的容量,即指令缓冲区中能够存储的最大指令条数,S = mXk,m为指令缓冲区的行数,k为指令缓冲区一行可存储的指令条数; I.2对指令缓冲区的位宽进行扩充,使指令缓冲区能够容纳下扩展了 ID字段的指令;指令缓冲区位于指令ID扩展逻辑和待发射指令选择逻辑之间,接收并存储指令ID扩展逻辑送来的取指包,将未发射的指令及其指令ID送至待发射指令选择逻辑;指令缓冲区按行、列进行组织,一行存储ー个取指包,共有m行,指令缓冲区一行可存储的指令条数k与取指包的指令条数相等,指令缓冲区分为k列,一列最多有m条指令; I.3基于ID匹配的方法修改待发射指令选择逻辑待发射指令选择逻辑位于指令缓冲区和指令发射交叉开关之间,接收来自指令缓冲区内未被发射的指令及其指令ID,从中挑选出可供发射的指令送至指令发射交叉开关;待发射指令选择逻辑由ー个ID寄存器逻辑和k个列指令选择逻辑组成,ID寄存器逻辑的输出同时送至k个列指令选择逻辑,k个列指令选择逻辑之间是并列关系,均是一端与指令缓冲区的一列和ID寄存器逻辑相连,另一端与指令发射交叉开关相连; I.3. I 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个比较结果SI Sm,并将SI Sm分别送至m路选择器和m输入或门;m路选择器以SI Sm作为选择信号,从指令缓冲区同一列的m条指令中选择出至多一条指令作为待发射指令输出邱输入或门对SI Sm执行或运算,生成ー个指令有效信号来指示当前列指令选择逻辑输出的待发射指令是否有效,为I表示有效,为O表示无效;k个列指令选择逻辑共产生k条待发射指令和k个指令有效信号送至指令发射交叉开关; 第二步,采用改进后的指令发射部件进行基于指令ID扩展和ID匹配的指令发射,方法是 ·2.I指令ID扩展逻辑获得取指部件从指令存储器取回的取指包后,按照下述方法为取指包中的每条指令扩展ー个ID · 2.I. I将变量ID_Packet初始化为O ;.2.I. 2为取指包中的每条指令计算ー个ID,方法是 .2.1.2. I将变量i初始化为O ; .2.I. 2. 2令指令i为取指包中自首指令开始的第i条指令,按下述方法计算指令i的ID .1)若指令i为取指包的首指令,则令IDi= ID_Packet, IDi为指令i的ID ; .2)若指令i不是取指包的首指令,且指令i与指令i_l位于同一指令包内,令IDi=IDh ; .3)若指令i不是取指包的首指令,且与指令i_l分属两个不同的指令包,则令IDi=(ID^j+l) modS ; .2. I. 2. 3i = i+1 ;.2. I. 2. 4若i < k,则跳转至2. I. 2. 2,否则执行2. I. 3 ; .2.I. 3更新变量ID_Packet :令指令I为取指包中的最后一条指令,若指令I为其所属指令包的最后一条指令,则ID_Packet = (ID^l) modS ; 若指令I不为其所属指令包的最后一条指令,ID_Packet = ID1 ; .2.I. 4将扩展了指令ID的取指包送至指令缓冲区,指令缓冲区执行2. 2歩;与此同吋,如果有新的取指包到达,指令ID扩展逻辑跳转到第2. I. 2步执行,否则指令ID扩展逻辑继续等待; .2.2指令缓冲区接收并存储由指令ID扩展逻辑送来的ID扩展之后的取指包,指令缓冲区的一行存储ー个取指包,从第I行开始顺序存储;如果第I行的指令发射完毕,则后序各行指令依次前移;如果指令缓冲区填满,则停顿取指流水线,直至指令缓冲区出现空槽;指令缓冲区将所有未发射指令及其ID送至待发射指令选择逻辑,待发射指令选择逻辑执行2. 3 步; .2.3待发射指令选择逻辑运用ID匹配的方法从指令缓冲区中选择出可供发射的指令,并将其送至指令发射交叉开关,方法如下 .2.3. I更新当前ID寄存器的值寄存器维护逻辑对当前ID加I并按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.如权利要求I所述的ー种超长指令字处理器指令发射方法,其特征在于所述寄存器维护逻辑由ー个加I器和ー个模S取余模块组成加I器接收当前ID寄存器送来的当前ID作为输入,对其加I后送至模S取余模块;模S取余模块对其输入以S为模进行取余运算,运算结果作为下一可发射指令的ID输出给当前ID寄存器。
3.如权利要求I所述的ー种超长指令字处理器指令发射方法,其特征在于所述每个列指令选择逻辑的工作过程是相同的,第i个列指令选择逻辑的工作过程是,I ^ i = 1)第i个列指令选择逻辑的m个ID比较器将一列中的m个指令ID分别与当前ID进行比较,共产生m个比较结果SI Sm,若Sp为I表明当前列第P行的指令可以在本拍发射1I≤P≤m ; 2)m路选择器以SI Sm为选择信号,从一列的m条指令中选择Sp为I的第p行的指令作为待发射指令; 3)m输入或门对SI Sm进行或操作,生成当前列的指令有效信号,如果指令有效信号为1,表明选择出的指令是可以被发射的;否则,表明该列不存在可以被发射的指令。
全文摘要
本发明公开了一种超长指令字处理器指令发射方法,目的是减小待发射指令选择逻辑的逻辑级数,减少指令发射的延时。技术方案是先改进指令发射部件,即增加一个指令ID扩展逻辑,对指令缓冲区的位宽进行扩充,修改待发射指令选择逻辑,使得指令发射部件具有指令ID扩展和ID匹配功能;然后采用改进后的指令发射部件进行指令发射,即为取指包中的每条指令扩展一个ID,指令缓冲区存储ID扩展之后的取指包,待发射指令选择逻辑从指令缓冲区中选择可供发射的指令,并将其送至指令发射交叉开关,指令发射交叉开关将有效的待发射指令传送至相应的功能部件。采用本发明可消除串行相关性,简少待发射指令选择逻辑的逻辑级数,减少指令发射的延时。
文档编号G06F9/38GK102662637SQ20121008991
公开日2012年9月12日 申请日期2012年3月30日 优先权日2012年3月30日
发明者付志刚, 刘尧, 刘必慰, 刘祥远, 刘蓬侠, 刘衡竹, 唐涛, 李勇, 李振涛, 梁斌, 胡春媚, 郭阳, 陈书明, 陈吉华 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1