1.一种唤醒电路,其特征在于,所述唤醒电路包括比较器、指令执行辨别电路、寄存器;
所述比较器用于比较待发射指令的源寄存器编号和已发射指令的目的寄存器编号是否相等;若相等则送出唤醒信号;
所述指令执行辨别电路用于识别待发射指令的执行周期,并输出待发射指令的周期数;
所述寄存器用于根据所述指令执行辨别电路输出的待发射指令的周期数,对将要送出的唤醒信号进行寄存,从而确定待发射指令的唤醒信号顺序,根据唤醒信号顺序对待发射指令进行唤醒操作。
2.根据权利要求1所述的唤醒电路,其特征在于,所述指令执行辨别电路通过只读RAM实现,只读RAM中预先写好不同指令对应的执行周期数,通过输入指令的类别码作为地址来读出RAM中预先存放的周期数,从而得到相应指令的操作周期。
3.根据权利要求2所述的唤醒电路,其特征在于,若待发射指令的源寄存器编号和已发射指令的目的寄存器编号相等,则比较器输出高电平,作为唤醒信号,代表指令被唤醒;若不相等,则输出低电平,代表指令不被唤醒。
4.根据权利要求3所述的唤醒电路,其特征在于,所述唤醒电路在唤醒指令时,当具有前后顺序的指令中在前指令被发射后,乱序指令发射架构等待在前指令执行完毕后再唤醒在后指令。
5.一种指令唤醒方法,其特征在于,所述方法应用于权利要求1-4任一所述的唤醒电路中,所述方法根据待发射指令的周期数确定待发射指令的唤醒顺序,对执行周期短的指令延迟唤醒,对执行周期长的指令提前唤醒,以此保证流水线上的指令能够背靠背执行。
6.根据权利要求5所述的指令唤醒方法,其特征在于,所述方法包括:
获取待发射指令的源寄存器编号和已发射指令的目的寄存器编号,比较二者是否相等;
若相等则送出唤醒信号,同时获取待发射指令的执行周期,根据待发射指令的周期对将要送出的唤醒信号进行寄存,确定待发射指令的唤醒顺序。
7.一种乱序指令发射架构,其特征在于,所述乱序指令发射架构中的唤醒电路为权利要求1-4任一所述的唤醒电路。
8.根据权利要求7所述的乱序指令发射架构,其特征在于,所述乱序指令发射架构还包括指令分配电路和指令请求电路;
所述指令分配电路用于将物理寄存器发送过来的多条指令分配给发射队列中空闲的表项;
所述指令请求电路用于统计发射队列中表项空闲信号总数,并用特殊编码对空闲信号的数量进行编码,若经过该编码的空闲信号总数小于同样经过该编码的指令发射宽度,则向物理寄存器堆发出指令请求信号。
9.根据权利要求8所述的乱序指令发射架构,其特征在于,所述指令请求电路由两部分构成:类加法层和后log2(n/2)层移位逻辑层,n为处理器指令发射宽度;
在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,其中表项的空闲信号序列为一串n位的二进制序列,n为发射队列中的表项数,空闲信号序列的每一位代表发射队列中每一个表项是否空闲,若空闲则为0,非空闲则为1;将类加法层的输出送入后log2(n/2)层移位逻辑层,移位逻辑层层层相连,且呈树状结构,最终输出统计结果。统计结果与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号。
10.根据权利要求8所述的乱序指令发射架构,其特征在于,所述类加法层由类加法计算单元构成;所述将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,包括:在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,每个类加法单元输入空闲信号序列中的两个二进制数并分别作与运算和异或运算,然后比较二者的计算结果:若相等,且与运算结果为1,则输出代表1的编码:“01”,表示类加法单元的两个二级制数输入的和为1,并对其编码为“01”若相等,且与运算结果位0,则输出代表0的编码:“10”,表示类加法单元的两个二级制数输入的和为0,并对其编码为“10”;
若不相等,则输出代表2的编码:“00”,表示类加法单元的两个二级制数输入的和为2,并对其编码为“00”;
编码位数为n;
所述后log2(n/2)层移位逻辑层由右移移位器构成;所述将编码后的空闲信号总数类加法层的输出结果输入后log2(n/2)层移位逻辑层,与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号,包括:右移移位器把一类加法单元器输出作为待移位数据输入,把另一类加法单元器输出作为移位位数输入,待移位数通过右移移位器右移n位,其中n为移位位数所对应的十进制数。