一种支持多重循环软件流水的移位旋转式硬件控制装置的制作方法

文档序号:6428831阅读:120来源:国知局
专利名称:一种支持多重循环软件流水的移位旋转式硬件控制装置的制作方法
技术领域
本发明涉及一种支持多重循环软件流水的移位旋转式硬件控制装置,它属于计算机技术领域中的超长指令字处理器技术领域。
循环是程序中最富有并行性、最费执行时间的一部分代码。软件流水是开发循环中指令级并行性的一种主要的编译技术。在这一领域,循环并行化因其重要性而成为发明和研究的焦点,因其难度而局限于单重循环。
美国专利名称为“多重循环软件流水的体系结构支持”,专利号为US5958048提出了一种处理器结构,其中包含了对多重循环软件流水的支持。其原理是提供一套循环参数与状态寄存器和多路分支转移控制结构,以控制循环执行过程,从而产生这样的效果一个内层循环的排空部分可以和另一个内层循环的装入部分重叠。于是编译器只要生成循环参数与状态寄存器的设置代码,而不必生成控制执行的代码。这样,编译器可能更有效地对多重循环进行软件流水。
上述美国专利代表了目前绝大多数多重循环软件流水技术。它们的根本思路都是首先对最内层循环进行软件流水;然后将新的最内层循环看作一个不可分割的原子操作,于是它的外层循环就可以看作一个单重循环,继续用同样的方法进行软件流水(相当于重叠两个相邻最内层循环的排空和装入部分)。这个过程可以一直扩展到最外层循环。所开发出来的并行性主要取决于最内层循环。上述美国专利就是对这种过程产生的代码,提供了执行上的支持。
但是,最大并行性不一定存在于最内层循环。它可能存在于任何一层循环中。这取决于循环本身。当最内层循环并行性很小时,通过上述过程,继续对外层循环进行软件流水也不可能显著增加并行性。因为并行性是循环所固有,而非上述美国专利中的装置所能改变,因此,它将无法充分发挥潜力。这是设计思路上的一个根本缺陷。
此外,上述美国专利对装入和排空都进行特殊控制,并要求循环满足两个要求(1)内存读操作必须位于逻辑循环体的第一个阶段;(2).具有副作用(例如内存写、循环中断等)操作必须位于逻辑循环体的最后一个阶段。
本发明的目的是设计一种支持多重循环软件流水的移位旋转式硬件控制装置,以克服上述现有技术的缺点,将多重循环软件流水生成的唯核心代码自动转换为可执行指令序列。
本发明设计的支持多重循环软件流水的移位旋转式硬件控制装置,包括启停控制与时钟生成模块、寄存器组、下核心生成模块、移位旋转控制模块、逻辑列有效性选择生成模块、逻辑列寄存器选择生成模块、映射网络、以及指令生成模块;其中启停控制与时钟生成模块在接到开始电流信号后,向寄存器组发出时钟信号1,时钟信号1进入寄存器组后,寄存器组更新并稳定,将寄存器内容分别输出至下核心生成模块、逻辑列有效性选择生成模块、逻辑列寄存器选择生成模块、以及指令生成模块;然后,下核心生成模块产生下一个时钟信号1到来时应设置的新核心,输出至寄存器组;逻辑列有效性选择生成模块和逻辑列寄存器选择生成模块分别生成所有逻辑列的有效性选择和寄存器选择,并送入映射网络,输出成为物理操作有效性和寄存器选择;同时,指令生成模块输出当前核心所对应的所有物理指令。
在本发明的一种实施例中,从启停控制与时钟生成模块向映射网络和指令生成模块输出另一个时钟信号2,该信号使指令生成模块输出当前核心所包含的一条物理指令,使映射网络输出该指令中所有物理操作所对应的物理操作有效性选择和寄存器选择。
本发明还可以具有另一种结构形式。不同之处在于指令生成模块的输入不是来自寄存器组,而是来自下核心生成模块,以该模块所产生的新核心为输入。
本发明的上述装置中,其中的寄存器组包括m个一维下标寄存器H1、H2、……、Hm;m个主逻辑列选择位寄存器C1、C2、……、Cm;m个当前核心逻辑列选择位寄存器S1、S2、……、Sm;n-1对下标寄存器,其中,一对2维下标寄存器i2和i2′,一对3维下标寄存器i3和i3′,……,一对n维下标寄存器in和in';以及当前核心寄存器K,其中,m是指令格式所规定的最大操作个数;n是多重循环的最大嵌套层数;所述的每个一维下标寄存器Hx的输出通过三态门连接到总线1,如果x=1,所述的寄存器Hx的输入从总线1和所述的寄存器Hx的值减1两者之中选择,如果x≠1,所述的寄存器Hx的输入从总线1和所述的寄存器Hx-1两者之中选择;所述的每个主逻辑列选择位寄存器Cx的输出通过三态门连接到总线2,如果x=1,所述的寄存器Cx的输入从总线2和一个无效标志两者之中选择,如果x≠1,所述的寄存器Cx的输入从总线2和所述的寄存器Cx-1两者之中选择;所述的每个当前核心逻辑列选择位寄存器Sx的输出通过三态门连接到总线3,如果x=1,所述的寄存器Sx的输入从总线3和一个有效标志两者之中选择,如果x≠1,所述的寄存器Sx的输入从总线3和所述的寄存器Sx-1两者之中选择;所述的每个下标寄存器ix的输入从x维下标上界或者所述的寄存器ix的值减1两者之中选择;所述的每个下标寄存器ix′的输入从所述的寄存器ix或者0两者之中选择。
本发明设计的支持多重循环软件流水的移位旋转式硬件控制装置,具有如下有益效果(1)对于本发明所适用的无〈型相关的一大类多重(包括单重)循环(〈型相关的定义是相关距离向量第2到n维分量中,第一个非0分量小于0),一般情况下,本发明所支持的并行性不低于上述现有技术。与现有技术不同,本发明的基本思路是“选择具有最大并行性的那一层进行软件流水(即并行化),其它层串行化”。编译器根据这一思路生成多重循环的核心代码,将它送给本发明所述装置,该装置便为该核心代码动态产生一个指令序列。理论上,这种并行化代码的并行性至少不低于上述现有技术产生的代码,所以本发明所支持的并行性至少不低于上述现有技术。当最内层循环并行性很小而其它层中存在较大并行性时,本发明所支持的并行性将显著大于上述现有技术。(2)本发明不需要装入和排空控制。装入、排空是与核心不加区分地统一控制的。因此简化了控制。装入和排空在移位过程中,会自然产生和结束装入开始于第一次移位,此时,一些逻辑列由于对应的当前核心逻辑列选择无效而不被选择;排空开始于最后一次旋转之后的移位,此时,一些逻辑列由于对应的第一维下标小于0而不被选择。(3)本发明对于循环中操作的具体位置没有任何要求。
此外,本发明的一个优点体现在实现代价较低。它采用操作不动,下标移位或旋转的方法,使得映射网络的输入是每一逻辑列的寄存器选择和有效性选择(只有两根线);而如果采用下标不动,操作移位或旋转的方法,则映射网络的输入至少包含每一逻辑列的有效性选择,以及该列中一个操作的所有根线(总数必然大大多于2)。


图1是本发明装置的结构框图。
图2是本发明装置的一个实施例。
图3是本发明的另一种结构框图。
图4是本发明装置中的移位旋转控制模块中寄存器H、C、S的控制电路原理图。
图5是本发明输入输出的一个例子。
所有图中,单个位信号用细线表示,多个位信号用粗线表示。
下面详细介绍本发明的内容,并结合附图,介绍本发明的工作原理和实施例。
现在参看图1。寄存器组101中的一维下标寄存器H1、H2、……、Hm统称为H,主逻辑列选择位寄存器C1、C2、……、Cm统称为C,当前核心逻辑列选择位寄存器S1、S2、……、Sm统称为S。
C、H、K的输出直接耦合到下核心生成模块102的输入,该模块输出下一个核心K',耦合到当前核心寄存器K和移位旋转控制模块103的输入。如果C表明主逻辑列不是当前核心的最后一列,那么K′=K;否则,如果对于第x层循环,主逻辑列不是该循环核心的最后一列或者Hx≠0,而对于其内部的任意一个循环,如第y层循环,主逻辑列是该循环核心的最后一列且Hy=0,那么,使K′表示第x层循环的核心。
移位旋转控制模块103控制寄存器组的更新。首先,它控制H、C、S的输入选择和输出三态门。具体地说,1、当K′指示最外层循环核心时,对于每一组Hx、Cx、Sx,使它们输出通往总线1、总线2、总线3的三态门处于高阻状态;选择Hx-1(如果x=1)或Hx-1(如果x≠1)作为Hx的输入;选择无效标志(如果x=1)或Cx-1(如果x≠1)作为Cx的输入,选择有效标志(如果x=1)或Sx-1(如果x≠1)作为Sx的输入。
2、否则,若K′的第一个逻辑列和最后一个逻辑列分别是逻辑核心第x列和第y列,则使Hy、Cy、Sy输出通往总线1、总线2、总线3的三态门打开(允许输出传到总线),使其他所有三态门处于高阻状态;对于每一组Hz、Cz、Sz(x<z≤y),分别选择Hz-1、Cz- 1、Sz-1作为输入;对于Hx、Cx、Sx,分别选择总线1、总线2、总线3作为输入;对于其它每一组Hu、Cu、Su(u>y或者u<x),使它们保持。
移位旋转控制模块103也控制其它寄存器的输入选择。具体地说,1、当K′指示最外层循环核心时,选择0作为i2′、i3′、……、in′的输入,选择N2、N3、……、Nn作为i2、i3、……、in的输入。
2、否则,选择i2、i3、……、in作为i2′、i3'……、in′的输入;设K′指示第x层循环的核心,使i2、i3、……、ix-1保持,选择ix-1作为ix的输入,选择Nx+1、Nx+2、……、Nn作为ix+1、ix+2、……、in的输入。
此外,当前核心寄存器K的输入总是K'。
逻辑列有效性选择生成模块104以H、S为输入,为每个逻辑列产生一个有效性选择信号,输出到映射网络106。例如,对于第x个逻辑列,产生一个有效性选择信号Ex如果Sx有效且Hx≥0,则使Ex有效,否则无效。
逻辑列寄存器选择生成模块105以C为输入,为每个逻辑列产生一个寄存器选择信号,输出到映射网络106。例如,对于第x个逻辑列,产生一个寄存器选择信号Rx如果C表明主逻辑列是第y个逻辑列,而x>y,则使Rx具有特定值(例如,高电平),表示该逻辑列所有操作的2~n维下标来自i2′、i3′、……、in′;反之,使Rx具有另一个特定值(例如,低电平),表示该逻辑列所有操作的2~n维下标来自i2、i3、……、in。
映射网络106表达一个逻辑核心到物理核心的映射关系,将逻辑核心每行每列的有效性选择和寄存器选择映射到物理核心相应的行和列上去,输出成为物理操作有效性选择和寄存器选择。例如,如果逻辑核心的第x行第y列的操作位于物理核心的第x行第z列,则将它的有效性选择Ey、寄存器选择Ry映射到物理核心第x行指令第z个操作,使之成为该操作的有效性选择和寄存器选择,即如果Ey无效,则该操作将不被执行;反之,该操作将被执行,并在执行时根据Ry的值决定引用i2′、i3′、……、in′还是i2、i3、……、in。映射网络106的实现方法很多,是本领域内一般工程技术人员所熟悉的。最一般地,可以用十字交叉网络。
指令生成模块107以当前核心K为输入,输出K所对应的所有物理指令。也可以有多种实现方法可以将物理核心存放在一些寄存器中,然后将其中K所对应的所有物理指令一次性全部输出,或者一条指令一条指令地输出。这也是本领域内一般工程技术人员所容易做到的。
启停控制与时钟生成模块108以一个开始信号为输入,输出一个时钟信号1到寄存器组101。
从总体上看,该装置的输入是开始信号,输出是指令、物理操作有效性选择和寄存器选择、1~n维下标。输出可以直接送到功能部件执行,也可以放入指令缓冲区,这取决于处理器的具体需要。
下面介绍本发明装置的工作原理。在开始信号到来后,启停控制与时钟生成模块108产生时钟信号1。时钟信号1送入寄存器组101后,寄存器组更新。具体地说,由于上述移位旋转控制模块103对寄存器输入输出的控制,使得1、当K′指示最外层循环核心时,H、C、S移位。即H2、H3、……、Hm的值分别变为原来H1、H2、……、Hm-1的值,H1减1;C2、C3、……、Cm的值分别变为原来C1、C2、……、Cm-1的值,C1置为无效;S2、S3、……、Sm的值分别变为原来S1、S2、……、Sm-1的值,S1置为有效。唯一的例外是如果此时K指示的不是最外层循环核心,则C不移位,而是被强制指示最内层循环核心的第一个逻辑列。即使每个Cx置为有效(如果逻辑核心第x列是最内层循环核心的第一个逻辑列)或者置为无效(如果逻辑核心第x列不是最内层循环核心的第一个逻辑列)。
2、否则,H、C、S对应于K′的那部分旋转。即若K′的第一个逻辑列和最后一个逻辑列分别是逻辑核心第x列和第y列,则Hy、Hy-1、……、Hx+1的值分别变为原来Hy-1、Hy-2、……、Hx的值,Hx变为原来Hy的值;Cy、Cy-1、……、Cx+1的值分别变为原来Cy-1、Cy-2、……、Cx的值,Cx变为原来Cy的值;Sy、Sy-1、……、Sx+1的值分别变为原来Sy-1、Sy-2、……、Sx的值,Sx变为原来Sy的值。其它Hu、Cu、Su(u>y或者u<x)寄存器均不变。
对于其它寄存器,由于移位旋转控制模块103对其输入的选择,使得K变为K′的值,并且1、当K′指示最外层循环核心时,i2′、i3′、……、in'清0,i2、i3、……、in分别变为N2、N3、……、Nn。
2、否则,i2′、i3′、……、in′分别变为原来i2、i3、……、in的值;设K′指示第x层循环的核心,则i2、i3、……、ix-1不变,ix减1,ix+1、ix+2、……、in分别变为Nx+1、Nx+2、……、Nn。
在寄存器组101完成上述更新后,下核心生成模块102产生下一个时钟信号1到来时应设置的新核心;逻辑列有效性选择生成模块104和逻辑列寄存器选择生成模块105分别生成所有逻辑列的有效性选择和寄存器选择,并送入映射网络106,输出成为物理操作有效性和寄存器选择;同时,指令生成模块107输出当前核心所对应的所有物理指令。
在上述工作完成后,如果C表明主逻辑列不是最外层循环核心的最后一列,或者H1≠0,则启停控制与时钟生成模块108产生下一个时钟信号1,否则不产生下一个时钟信号1(装置停止工作)。
图2示出了本发明的一个实施例。其组成与图1.完全一致,但是更具体了一点指令生成模块107采取一条指令一条指令进行输出的办法。为达到这一目的,而增加了一个信号从启停控制与时钟生成模块108输出到映射网络106和指令生成模块107的时钟信号2。此外,K输出到启停控制与时钟生成模块108。
启停控制与时钟生成模块108向寄存器组101发出时钟信号1,在寄存器组更新并稳定输出之后,向映射网络106和指令生成模块107发出x个时钟信号2(假设当前核心K包含x条指令),每个时钟信号2使指令生成模块107输出当前核心K所包含的一条物理指令,使映射网络106输出该指令中所有物理操作所对应的物理操作有效性选择和寄存器选择。
在上述工作完成后,如果C表明主逻辑列不是最外层循环核心的最后一列,或者H1≠0,则重复上述过程,否则,不产生下一个时钟信号1和时钟信号2(装置停止工作)。
图3是本发明的另一种结构形式框图。它与图2基本相同,但是,指令生成模块107的输入不是当前核心K,而是下核心K′。这样将使得寄存器组更新和指令生成、选择信号映射不再象图2那样串行进行,而是重叠并行,因此效率更高。原理如下1、发出开始信号之前,初始化寄存器组101,使得C1、S1有效,K指示最外层循环核心,H1=N1,i2、i3、……、in分别为N2、N3、……、Nn。
2、发出开始信号之后,启停控制与时钟生成模块108不发出时钟信号1,而是向映射网络106和指令生成模块107发出x个时钟信号2(假设最外层循环核心包含x条指令),每个时钟信号2使指令生成模块107输出最外层循环核心所包含的一条物理指令(无论输入K′是什么),使映射网络106输出该指令中所有物理操作所对应的物理操作有效性选择和寄存器选择。
3、如果C表明主逻辑列是最外层循环核心的最后一列,并且H1=0,则启停控制与时钟生成模块108不再产生时钟信号1和时钟信号2(装置停止工作)。否则,它发出一个时钟信号1,同时开始发出x个时钟信号2(假设K′包含x条指令)。于是,寄存器组更新,同时指令生成模块107为K′生成对应的所有物理指令,映射网络106输出这些指令中所有物理操作所对应的物理操作有效性选择和寄存器选择。就是说,在寄存器组101正在更新,尚未稳定输出之时,指令生成模块107就已经为这个尚未产生的新当前核心K'生成指令了,映射网络106也已经为之生成选择信号了。这种时间上的重叠,使得功能模块无等待地得到所需指令与选择信号。
4、重复步骤3直至停止。
现在参看图4。图4是图1、图2、图3所示的移位旋转控制模块103中寄存器H、C、S的控制电路原理图。H、C、S的连接关系如上所述。Ux是当K′为第x层循环时,H、C、S的输出三态门控制信号、使能信号、以及输入选择信号。信号F指示最内层循环核心的第一个逻辑列。旋转结束判断模块219在K′指示最外层循环核心、而K不指示最外层循环核心时,产生旋转结束信号,作为C的另一个输入选择。
图4所示的控制电路原理图的工作原理如下当K′为第x层循环时,n选1选择器201在K′的控制下,选择Ux作为H、C、S的输出三态门控制信号、使能信号、以及输入选择信号。例如从Ux得到Hm、Cm、Sm的输出三态门控制信号202、使能信号203、以及输入选择信号204。输入选择信号204控制输入选择模块213的输入第一组205(来自总线1、总线2、总线3),第二组220(来自Hm-1、Cm-1、Sm-1),图中,同一组输入用圈连起来表示。其它寄存器的情况完全类似。当时钟信号1到来时,各个寄存器将根据这些控制信号,决定是否能够输出到总线;是保持原内容不变,还是更新内容为输入值;如果更新,选择哪组输入。
唯一的特例是如果旋转结束判断模块219产生旋转结束信号,那么,该信号将强制输入选择模块选择F作为C的输入(例如,该信号强制输入选择模块213选择F的第m位224作为Cm的输入),从而当时钟信号1到来时,C变为F的值。
图5是说明本发明输入输出的一个例子。图5a是一个二重循环,有三个物理操作O1、O2、O3,假定每个操作的执行时延为1。数据相关图如图5b所示。其中,每条边上标的是相关距离向量。
由于所有相关距离向量的第一维分量都是0,这说明不同的外层循环体间没有相关关系,而在同一外层循环中,由于相关回路O1→O2→O3→O1,使得内层循环必须串行执行。因此,编译器按照当前技术为上述美国专利所能生成的核心代码如图5c所示,按照“选择具有最大并行性的那一层进行软件流水(即并行化),其它层串行化”的方法为本发明装置所生成的核心代码如图5d所示。在两种核心代码中,外层和内层循环核心都是相同的。
假设N1=6,N2=2。将图5c所示核心代码送入上述美国专利所述装置,产生图5e所示运行结果。每个操作右边是其下标。可见,其执行过程完全是串行的,并行度为1。
将图5d所示核心代码送入本发明装置,产生图5f所示运行结果。可见,其执行过程中,同时总有3个外层循环体在执行,并行度为3,执行时间仅是上述美国专利所述装置的1/3。
虽然上面参照附图详细描述了本发明,但是这些详述并不能限制所附权利要求书中所要求的本发明的范围。
权利要求
1.一种支持多重循环软件流水的移位旋转式硬件控制装置,其特征在于,该装置包括启停控制与时钟生成模块、寄存器组、下核心生成模块、移位旋转控制模块、逻辑列有效性选择生成模块、逻辑列寄存器选择生成模块、映射网络、以及指令生成模块;其中启停控制与时钟生成模块在接到开始电流信号后,向寄存器组发出时钟信号1,时钟信号1进入寄存器组后,在移位旋转控制模块的控制下,寄存器组更新并稳定,将寄存器内容分别输出至下核心生成模块、逻辑列有效性选择生成模块、逻辑列寄存器选择生成模块、以及指令生成模块;然后,下核心生成模块产生下一个时钟信号1到来时应设置的新核心,输出至寄存器组和移位旋转控制模块;逻辑列有效性选择生成模块和逻辑列寄存器选择生成模块分别生成所有逻辑列的有效性选择和寄存器选择,并送入映射网络,输出成为物理操作有效性和寄存器选择;同时,指令生成模块输出当前核心所对应的所有物理指令。
2.如权利要求1中所述的装置,其特征在于,从所述的启停控制与时钟生成模块向所述的映射网络和所述的指令生成模块输出另一个时钟信号2,该信号使所述的指令生成模块输出当前核心所包含的一条物理指令,使所述的映射网络输出该指令中所有物理操作所对应的物理操作有效性选择和寄存器选择。
3.一种支持多重循环软件流水的移位旋转式硬件控制装置,其特征在于,该装置包括启停控制与时钟生成模块、寄存器组、下核心生成模块、移位旋转控制模块、逻辑列有效性选择生成模块、逻辑列寄存器选择生成模块、映射网络、以及指令生成模块;其中启停控制与时钟生成模块在接到开始电流信号后,向寄存器组发出时钟信号1,时钟信号1进入寄存器组后,在移位旋转控制模块的控制下,寄存器组更新并稳定,将寄存器内容分别输出至下核心生成模块、逻辑列有效性选择生成模块、以及逻辑列寄存器选择生成模块;然后,下核心生成模块产生下一个时钟信号1到来时应设置的新核心,分别输出至寄存器组、移位旋转控制模块和指令生成模块;逻辑列有效性选择生成模块和逻辑列寄存器选择生成模块分别生成所有逻辑列的有效性选择和寄存器选择,并送入映射网络,输出成为物理操作有效性和寄存器选择;在寄存器组更新的同时,指令生成模块以下核心生成模块输出的下核心为输入,产生该核心所对应的所有物理指令。
4.如权利要求1和3所述的装置,其特征在于,其中,所述的寄存器组包括m个一维下标寄存器H1、H2、……、Hm;m个主逻辑列选择位寄存器C1、C2、……、Cm;m个当前核心逻辑列选择位寄存器S1、S2、……、Sm;n-1对下标寄存器,其中,一对2维下标寄存器i2和i2′,一对3维下标寄存器i3和i3′,……,一对n维下标寄存器in和in′;以及当前核心寄存器K,其中,m是指令格式所规定的最大操作个数;n是多重循环的最大嵌套层数;所述的每个一维下标寄存器Hx的输出通过三态门连接到总线1,如果x=1,所述的寄存器Hx的输入从总线1和所述的寄存器Hx的值减1两者之中选择,如果x≠1,所述的寄存器Hx的输入从总线1和所述的寄存器Hx-1两者之中选择;所述的每个主逻辑列选择位寄存器Cx的输出通过三态门连接到总线2,如果x=1,所述的寄存器Cx的输入从总线2和一个无效标志两者之中选择,如果x≠1,所述的寄存器Cx的输入从总线2和所述的寄存器Cx-1两者之中选择;所述的每个当前核心逻辑列选择位寄存器Sx的输出通过三态门连接到总线3,如果x=1,所述的寄存器Sx的输入从总线3和一个有效标志两者之中选择,如果x≠1,所述的寄存器Sx的输入从总线3和所述的寄存器Sx-1两者之中选择;所述的每个下标寄存器ix的输入从x维下标上界或者所述的寄存器ix的值减1两者之中选择;所述的每个下标寄存器ix′的输入从所述的寄存器ix或者0两者之中选择。
全文摘要
本发明涉及一种支持多重循环软件流水的移位旋转式硬件控制装置,该装置中的启停控制与时钟生成模块向寄存器组发出时钟信号1,寄存器组更新并稳定,将内容分别输出至下核心生成模块等,然后,下核心生成模块产生新核心;选择生成模块分别生成有效性选择和寄存器选择,并送入映射网络,产生操作有效性和寄存器选择;指令生成模块输出当前核心所对应的所有物理指令。本发明将多重循环软件流水生成的唯核心代码自动转换为可执行指令序列。
文档编号G06F9/44GK1294345SQ0013353
公开日2001年5月9日 申请日期2000年11月7日 优先权日2000年11月7日
发明者容红波, 汤志忠 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1