一种动态延迟唤醒电路及乱序指令发射架构

文档序号:1242146 发布日期:2020-08-18 浏览:24次 >En<

阅读说明:本技术 一种动态延迟唤醒电路及乱序指令发射架构 (Dynamic delay wake-up circuit and out-of-order instruction transmitting architecture ) 是由 虞致国 马晓杰 魏敬和 顾晓峰 于 2020-04-07 设计创作,主要内容包括:本发明公开了一种动态延迟唤醒电路及乱序指令发射架构,属于处理器设计领域。所述动态延迟唤醒电路,包括比较器、指令执行辨别电路和寄存器,通过指令执行辨别电路识别待发射指令的执行周期,并输出待发射指令的周期数,寄存器通过待发射指令的周期数对将要送出的唤醒信号进行寄存,从而达到对唤醒信号顺序调整的目的,对执行周期短的指令延迟唤醒,对执行周期长的指令提前唤醒,从而保证了流水线上的指令能够背靠背执行,提高了流水线的效率。(The invention discloses a dynamic delay wake-up circuit and an out-of-order instruction transmitting framework, and belongs to the field of processor design. The dynamic delay awakening circuit comprises a comparator, an instruction execution distinguishing circuit and a register, wherein the instruction execution distinguishing circuit is used for identifying the execution period of an instruction to be transmitted and outputting the period number of the instruction to be transmitted, the register registers an awakening signal to be sent out according to the period number of the instruction to be transmitted, so that the aim of adjusting the sequence of the awakening signal is fulfilled, the instruction with a short execution period is awakened in a delayed mode, the instruction with a long execution period is awakened in advance, the instructions on a production line can be executed back to back, and the efficiency of the production line is improved.)

一种动态延迟唤醒电路及乱序指令发射架构

技术领域

本发明涉及一种动态延迟唤醒电路及乱序指令发射架构,属于处理器设计领域。

背景技术

处理器中发射电路的工作过程就是不断发射指令的过程,因此指令发射架构是实现处理器高性能的重要架构之一;为了获得高性能,指令发射架构必须在低延迟的情况下实现高 IPC(Instructions per clock,每周期执行指令数),而指令发射架构想要实现低延时,就要求其所包括的指令分配电路、指令请求电路以及唤醒电路能够尽可能的实现低延时。

唤醒电路作为指令发射架构的构成部分,用于唤醒即将被发射的指令;传统唤醒电路不经过延迟就对可以被唤醒的指令进行唤醒,或者延迟固定周期对可以被唤醒的指令进行唤醒。在现代超标量乱序发射处理器中,各个指令的执行周期差异很大,按照传统唤醒电路的逻辑来唤醒指令,会有前一个指令还没执行完成,下一个指令就被唤醒并发射的情况发生。

这种情况的发生就会造成流水线中产生延迟气泡,降低流水线的效率,影响处理器的 IPC。因此,针对上述需求和挑战,针对低延迟、高IPC等条件,提供一种动态延迟唤醒电路的设计是非常迫切的。

发明内容

为了解决在运用传统唤醒电路时,存在指令间存有气泡,流水线效率不高的问题,本发明提供了一种动态延迟唤醒电路及乱序指令发射架构,所述技术方案如下:

一种唤醒电路,所述唤醒电路包括比较器、指令执行辨别电路、寄存器;

所述比较器用于比较待发射指令的源寄存器编号和已发射指令的目的寄存器编号是否相等;若相等则送出唤醒信号;

所述指令执行辨别电路用于识别待发射指令的执行周期,并输出待发射指令的周期数;

所述寄存器用于根据所述指令执行辨别电路输出的待发射指令的周期数,对将要送出的唤醒信号进行寄存,从而确定待发射指令的唤醒信号顺序,根据唤醒信号顺序对待发射指令进行唤醒操作。

可选的,所述指令执行辨别电路通过只读RAM实现,只读RAM中预先写好不同指令对应的执行周期数,通过输入指令的类别码作为地址来读出RAM中预先存放的周期数,从而得到相应指令的操作周期。

可选的,若待发射指令的源寄存器编号和已发射指令的目的寄存器编号相等,则比较器输出高电平,作为唤醒信号,代表指令被唤醒;若不相等,则输出低电平,代表指令不被唤醒。

可选的,所述唤醒电路在唤醒指令时,当具有前后顺序的指令中在前指令被发射后,处理器等待在前指令执行完毕后再唤醒在后指令。

本发明还提供一种指令唤醒方法,所述方法应用于上述唤醒电路中,所述方法根据待发射指令的周期数确定待发射指令的唤醒顺序,对执行周期短的指令延迟唤醒,对执行周期长的指令提前唤醒,以此保证流水线上的指令能够背靠背执行。

可选的,所述方法包括:

获取待发射指令的源寄存器编号和已发射指令的目的寄存器编号,比较二者是否相等;

若相等则送出唤醒信号,同时获取待发射指令的执行周期,根据待发射指令的周期对将要送出的唤醒信号进行寄存,确定待发射指令的唤醒顺序。

本发明还提供一种乱序指令发射架构,所述乱序指令发射架构中包含上述唤醒电路

可选的,所述乱序指令发射架构还包括指令分配电路和指令请求电路;

所述指令分配电路用于将物理寄存器发送过来的多条指令分配给发射队列中空闲的表项;

所述指令请求电路用于统计发射队列中表项空闲信号总数,并用特殊编码对空闲信号的数量进行编码,若经过该编码的空闲信号总数小于同样经过该编码的指令发射宽度,则向物理寄存器堆发出指令请求信号。

可选的,所述指令请求电路由两部分构成:类加法层和后log2(n/2)层移位逻辑层,n 为乱序指令发射架构指令发射宽度;

在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,其中表项的空闲信号序列为一串n位的二进制序列,n为发射队列中的表项数,空闲信号序列的每一位代表发射队列中每一个表项是否空闲,若空闲则为0,非空闲则为1;将类加法层的输出送入后log2(n/2)层移位逻辑层,移位逻辑层层层相连,且呈树状结构,最终输出统计结果。统计结果与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号。

可选的,所述类加法层由类加法计算单元构成;所述将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,包括:

在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,每个类加法单元输入空闲信号序列中的两个二进制数并分别作与运算和异或运算,然后比较二者的计算结果:

若相等,且与运算结果为1,则输出代表1的编码:“01”,表示类加法单元的两个二级制数输入的和为1,并对其编码为“01”

若相等,且与运算结果位0,则输出代表0的编码:“10”,表示类加法单元的两个二级制数输入的和为0,并对其编码为“10”;

若不相等,则输出代表2的编码:“00”,表示类加法单元的两个二级制数输入的和为 2,并对其编码为“00”;

编码位数为n;

所述后log2(n/2)层移位逻辑层由右移移位器构成;所述将编码后的空闲信号总数类加法层的输出结果输入后log2(n/2)层移位逻辑层,与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号,包括:

右移移位器把一类加法单元器输出作为待移位数据输入,把另一类加法单元器输出作为移位位数输入,待移位数通过右移移位器右移n位,其中n为移位位数所对应的十进制数。

本发明有益效果是:

本发明通过提供一种动态延迟唤醒电路,包括比较器、指令执行辨别电路和寄存器,通过指令执行辨别电路识别待发射指令的执行周期,并输出待发射指令的周期数,寄存器通过待发射指令的周期数对将要送出的唤醒信号进行寄存,从而达到对唤醒信号顺序调整的目的,对执行周期短的指令延迟唤醒,对执行周期长的指令提前唤醒,从而保证了流水线上的指令能够背靠背执行,提高了流水线的效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的唤醒电路的组成示意图。

图2为经过唤醒电路调整唤醒顺序的流水线示意图。

图3为多指令乱序发射架构总体组成示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一:

本实施例提供一种动态延迟唤醒电路,参见图1,所述唤醒电路由比较器、指令执行周期辨别电路、寄存器构成;比较器输入待发射指令的源寄存器编号和已发射指令的目的寄存器编号;指令执行周期辨别电路根据输入指令编码识别指令执行周期,寄存器输入比较器的输出和指令执行周期辨别电路的输出,根据指令执行周期决定对比较器输出延迟几个周期输出。

唤醒电路的输入为待发射指令的源寄存器编号和已发射指令的目的寄存器编号,通过比较器来比较待发射指令的源寄存器编号和已发射指令的目的寄存器编号是否相等,若相等则送出唤醒信号;同时唤醒电路通过指令执行辨别电路识别待发射指令的执行周期,并输出待发射指令的周期数,寄存器通过待发射指令的周期数对将要送出的唤醒信号进行寄存,从而达到对唤醒信号顺序调整的目的,对执行周期短的指令延迟唤醒,对执行周期长的指令提前唤醒,以此保证流水线上的指令能够背靠背执行,提高流水线的效率。

所述比较器用于比较待发射指令的源寄存器编号和已发射指令的目的寄存器编号是否相等,若相等则输出高电平,表示该指令被唤醒;若不相等则输出低电平,表示该指令不被唤醒。

所述指令辨别电路为一只读RAM,输入为不同指令的类别码,该RAM中预先写好不同指令对应的执行周期数,通过输入指令的类别码作为地址来读出RAM中预先存放的周期数,从而得到相应指令的操作周期。

所述唤醒信号寄存电路,输入待发射指令的周期数,寄存电路通过该周期数,对比较器输出的唤醒信号进行寄存,寄存周期为相应待发射指令的周期数。

唤醒方法步骤如下:

获取待发射指令的源寄存器编号和已发射指令的目的寄存器编号,比较二者是否相等;

若相等则送出唤醒信号,同时获取待发射指令的执行周期,根据待发射指令的周期对将要送出的唤醒信号进行寄存,确定待发射指令的唤醒顺序。

如图2所示为,经过指令唤醒调整的流水线示意图。指令A需3个执行周期,指令B、C、D各需一个执行周期,经过唤醒电路的唤醒顺序调整,使指令D延迟指令A两个周期唤醒,可使指令A、D之间插入两条背靠背执行的指令B、C,从而保证4条指令全部背靠背执行,不存在延迟气泡,提高流水线的执行效率。

而如果采用传统的唤醒电路,则指令与指令间会存在延迟气泡,造成处理器流水线的效率低下,本发明通过对指令的动态唤醒,使得各指令能够尽可能背靠背执行,消除指令间的延迟气泡,提高流水线效率。

实施例二

本实施例提供一种多指令乱序发射电路,所述多指令乱序指令发射架构中的唤醒电路采用实施例一所述的动态延迟唤醒电路。

该乱序指令发射电路包含指令分配电路、指令请求电路、仲裁电路与实施例一给出的动态延迟唤醒电路。

该乱序指令发射电路为非数据捕捉型结构,即存在于物理寄存器堆的指令在被发射前不会正真进入发射队列,取而代之的是该指令的寄存器编号,当该指令被发射以后,发射电路通过指令的寄存器编号在物理寄存器堆中寻求相对应的指令送入执行部件执行。指令的寄存器编号通过指令分配电路分配,进入发射队列的空闲表项,并进行暂存。

仲裁电路对各表项中代表指令的寄存器标号进行选择,选出适合发射的代表指令的寄存器标号。同时,唤醒电路输入指令编码、待发射指令的源寄存器编号和已发射指令的目的寄存器编号,唤醒电路通过比较被仲裁电路选中的待发射指令的源寄存器编号与已发射指令的目的寄存器编号,若相等,则输出高电平代表唤醒信号,并通过该指令的执行周期决定延迟输出该唤醒信号的周期数,延迟唤醒相对应的指令,指令被唤醒是指令能被仲裁发射的前提条件。

指令请求电路每个时钟周期会接收表项空闲信号序列,扫描发射队列中空闲表项并通过累加操作统计空闲表项数,若空闲表项数量大于指令发射宽度,则指令请求电路会向物理寄存器堆发送请求信号,请求新的指令送入发射电路。

实施例三

本实施例提供一种多指令乱序发射电路,所述多指令乱序指令发射架构中的唤醒电路采用实施例一所述的动态延迟唤醒电路,多指令乱序指令发射架构中的指令请求电路采用类加法逻辑和右移移位逻辑统计空闲表项数,若经过该编码的空闲信号总数小于同样经过该编码的指令发射宽度,则向物理寄存器堆发出指令请求信号。参见图3。

该乱序指令发射电路包含指令分配电路、指令请求电路、仲裁电路与唤醒电路。该乱序指令发射电路为非数据捕捉型结构,即存在于物理寄存器堆的指令在被发射前不会正真进入发射队列,取而代之的是该指令的寄存器编号,当该指令被发射以后,发射电路通过指令的寄存器编号在物理寄存器堆中寻求相对应的指令送入执行部件执行。指令的寄存器编号通过指令分配电路分配,进入发射队列的空闲表项,并进行暂存。

仲裁电路对各表项中代表指令的寄存器标号进行选择,选出适合发射的代表指令的寄存器标号。同时,唤醒电路输入指令编码、待发射指令的源寄存器编号和已发射指令的目的寄存器编号,唤醒电路通过比较被仲裁电路选中的待发射指令的源寄存器编号与已发射指令的目的寄存器编号,若相等,则输出高电平代表唤醒信号,并通过该指令的执行周期决定延迟输出该唤醒信号的周期数,延迟唤醒相对应的指令,指令被唤醒是指令能被仲裁发射的前提条件。

指令请求电路每个时钟周期会接收表项空闲信号序列,扫描发射队列中空闲表项并通过类加法逻辑和右移移位统计空闲表项数,若空闲表项数量大于指令发射宽度,则指令请求电路会向物理寄存器堆发送请求信号,请求新的指令送入发射电路。具体的,所述指令请求电路由两部分构成:类加法层和后log2(n/2)层移位逻辑层,n为处理器指令发射宽度;

在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,其中表项的空闲信号序列为一串 n位的二进制序列,n为发射队列中的表项数,空闲信号序列的每一位代表发射队列中每一个表项是否空闲,若空闲则为0,非空闲则为1;将类加法层的输出送入后log2(n/2)层移位逻辑层,移位逻辑层层层相连,且呈树状结构,最终输出统计结果。统计结果与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号。

所述类加法层由类加法计算单元构成;所述将表项的空闲信号序列输入类加法层,对表示空闲信号的数量进行特殊编码,得出经过特殊编码后的空闲信号总数,包括:

在统计表项空闲信号总数时,将表项的空闲信号序列输入类加法层,每个类加法单元输入空闲信号序列中的两个二进制数并分别作与运算和异或运算,然后比较二者的计算结果:

若相等,且与运算结果为1,则输出代表1的编码:“01”,表示类加法单元的两个二级制数输入的和为1,并对其编码为“01”

若相等,且与运算结果位0,则输出代表0的编码:“10”,表示类加法单元的两个二级制数输入的和为0,并对其编码为“10”;

若不相等,则输出代表2的编码:“00”,表示类加法单元的两个二级制数输入的和为 2,并对其编码为“00”;

编码位数为n;

所述后log2(n/2)层移位逻辑层由右移移位器构成;所述将编码后的空闲信号总数类加法层的输出结果输入后log2(n/2)层移位逻辑层,与同样经过特殊编码的指令发射宽度进行比较,以确定是否需要发送指令请求信号,包括:

右移移位器把一类加法单元器输出作为待移位数据输入,把另一类加法单元器输出作为移位位数输入,待移位数通过右移移位器右移n位,其中n为移位位数所对应的十进制数。

本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种点击操作的识别方法及电子设备、存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!