一种指令流水线的预译码系统及方法

文档序号:1520545 发布日期:2020-02-11 浏览:1次 >En<

阅读说明:本技术 一种指令流水线的预译码系统及方法 (Pre-decoding system and method of instruction pipeline ) 是由 吴汉明 朱敏 于 2019-09-02 设计创作,主要内容包括:本发明公开了一种指令流水线的预译码系统及方法,预译码系统包括:依次连接的指令流水线、指令存储器、预译码逻辑和下一级存储器,指令存储器与下一级存储器连接;预译码逻辑用于当确定从下一级存储器中取出的当前指令为转移指令时根据当前指令的地址和第一转移指令编码信息得到当前指令的第二转移指令编码信息并输出至指令存储器;指令流水线用于根据从指令存储器中取得的当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。本发明所提供的系统及方法,避免了重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。(The invention discloses a pre-decoding system and a method of an instruction assembly line, wherein the pre-decoding system comprises: the instruction pipeline, the instruction memory, the pre-decoding logic and the next-stage memory are connected in sequence, and the instruction memory is connected with the next-stage memory; the pre-decoding logic is used for obtaining second transfer instruction coding information of the current instruction according to the address of the current instruction and the first transfer instruction coding information when the current instruction taken out from the next-level memory is determined to be the transfer instruction, and outputting the second transfer instruction coding information to the instruction memory; the instruction pipeline is used for obtaining the address of the branch target instruction of the current instruction according to the second branch instruction coding information of the current instruction and the address of the current instruction, which are obtained from the instruction memory. The system and the method provided by the invention avoid repeated pre-decoding actions and can effectively reduce the dynamic power consumption of the front section of the processor pipeline.)

一种指令流水线的预译码系统及方法

技术领域

本发明涉及处理器技术领域,具体涉及一种指令流水线的预译码系统及方法。

背景技术

现代处理器设计中,指令流水线从一级指令缓冲中取得指令并提交执行部件执行。一级指令缓存中存放的指令二进制编码,指令流水线读取指令的二进制编码后,将其转换成控制信号,指示各部件的运行。

为了维护正确的指令流,并且支持高效的指令执行,指令流水线中设置了预译码部件和转移预测部件,用于检测指令流中存在的转移类指令,尽早计算其转移方向,并进行适时的信息更新和指令流方向调整。

由于一级指令缓存中存放的指令均会被多次取出并多次执行,因此对于转移类指令来说,其预译码动作(判断转移指令类型,计算程序的转移方向)会多次进行。由于大部分转移类指令每次预译码的结果均是相同的,可以认为重复的预译码动作是冗余的,因此这些预译码动作的重复造成了处理器运行时动态功耗的浪费。

发明内容

针对现有技术中存在的缺陷,本发明的目的在于提供一种指令流水线的预译码系统及方法,避免了重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。

为实现上述目的,本发明采用的技术方案如下:

一种指令流水线的预译码系统,所述预译码系统包括:依次连接的指令流水线、指令存储器、预译码逻辑和下一级存储器,所述指令存储器与所述下一级存储器连接;

所述预译码逻辑用于当确定从所述下一级存储器中取出的当前指令为转移指令时根据当前指令的地址和第一转移指令编码信息得到当前指令的第二转移指令编码信息并输出至所述指令存储器;

所述指令流水线用于根据从所述指令存储器中取得的当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

进一步,如上所述的一种指令流水线的预译码系统,所述第一转移指令编码信息包括指令类型和转移偏移量,所述第二转移指令编码信息包括转移指令标识、简化后指令类型和转移目标信息,所述简化后指令类型包括预译码已识别信息和转移指令子类型;

所述转移指令标识用于标识当前指令是否为转移指令;

所述预译码已识别信息用于标识该转移指令是否已经通过所述预译码逻辑获取对应的第二转移指令编码信息;

所述转移目标信息用于记录该转移指令的转移目标指令的地址;

所述转移指令子类型用于标识该转移指令的具体类型。

进一步,如上所述的一种指令流水线的预译码系统,所述预译码逻辑用于:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,根据计算得到的当前指令的转移目标指令的地址和当前指令的第一转移指令编码信息得到当前指令的第二转移指令编码信息。

进一步,如上所述的一种指令流水线的预译码系统,所述预译码逻辑用于:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,将计算得到的当前指令的转移目标指令的地址划分为高段和低段,将低段部分作为当前指令的第二转移指令编码信息中的转移目标信息;

根据高段部分的值与当前指令的地址高段的值,对当前指令的第二转移指令编码信息中的预译码已识别信息进行标识。

进一步,如上所述的一种指令流水线的预译码系统,所述预译码逻辑用于:

当确定当前指令的转移目标指令的地址高段部分的值等于当前指令的地址高段的值时,将当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别。

进一步,如上所述的一种指令流水线的预译码系统,所述预译码逻辑用于:

根据当前指令的第一转移指令编码信息中的指令类型判断当前指令是否为转移指令,并根据判断结果对当前指令的第二转移指令编码信息中的转移指令标识和转移指令子类型进行标识。

进一步,如上所述的一种指令流水线的预译码系统,所述指令流水线用于:

根据从所述指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息确定是否根据当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

进一步,如上所述的一种指令流水线的预译码系统,所述指令流水线用于:

当确定从所述指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别时,将当前指令的第二转移指令编码信息中的转移目标信息与当前指令的地址高段拼接得到当前指令的转移目标指令的地址。

一种指令流水线的预译码方法,所述预译码方法包括:

(1)当确定从所述下一级存储器中取出的当前指令为转移指令时根据当前指令的地址和第一转移指令编码信息得到当前指令的第二转移指令编码信息并输出至所述指令存储器;

(2)根据从所述指令存储器中取得的当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

进一步,如上所述的一种指令流水线的预译码方法,所述第一转移指令编码信息包括指令类型和转移偏移量,所述第二转移指令编码信息包括转移指令标识、简化后指令类型和转移目标信息,所述简化后指令类型包括预译码已识别信息和转移指令子类型;

所述转移指令标识用于标识当前指令是否为转移指令;

所述预译码已识别信息用于标识该转移指令是否已经通过所述预译码逻辑获取对应的第二转移指令编码信息;

所述转移目标信息用于记录该转移指令的转移目标指令的地址;

所述转移指令子类型用于标识该转移指令的具体类型。

本发明的有益效果在于:本发明所提供的系统及方法,通过预译码逻辑对转移类指令进行提前解析,得到第二转移指令编码信息存储在指令存储器中,当流水线的控制逻辑从指令存储器中取指时,可以直接通过将指令存储中存储的当前指令的第二转移指令编码信息中的转移目标信息与当前指令的地址高段拼接得到当前指令的转移目标指令的地址,避免了重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。

附图说明

图1为本发明实施例中提供的传统流水线同预译码逻辑的关系示意图;

图2为本发明实施例中提供的一种指令流水线的预译码系统的结构示意图;

图3为本发明实施例中提供的下一级存储器中存储的转移指令编码格式示意图;

图4为本发明实施例中提供的指令存储器中存储的转移指令编码格式示意图;

图5为图4中的简化后指令类型的示意图;

图6为本发明实施例一中提供的预译码逻辑工作机制示意图;

图7为本发明实施例中提供的一种指令流水线的预译码方法的流程示意图.

具体实施方式

下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。

传统流水线同预译码逻辑的关系如图1所示,处理器的缓存一般组织成多级结构,指令流水线从一级指令缓存中取得指令,一级指令缓存从更下级的缓存中取得指令。指令流水线取得指令之后,送入预译码部件,其中主要包含指令类型的解析和转移类执行转移方向的计算。由于一级指令缓存中存放的指令均会被多次取出并多次执行,因此对于转移类指令来说,其预译码动作(判断转移指令类型,计算程序的转移方向)会多次进行。由于大部分转移类指令每次预译码的结果均是相同的,可以认为重复的预译码动作是冗余的,因此这些预译码动作的重复造成了处理器运行时动态功耗的浪费。

针对上述缺陷,本发明提出的一种指令流水线的预译码系统及方法,如图2所示,主要结构包括三方面:1)将预译码逻辑放置在一级指令缓存同下一级缓存之间;2)一级指令缓存中指令存储结构设计;3)指令流水线中转移目标地址拼接。本发明设计将预译码部件提前至一级指令缓存的写入通路,将转移类指令提前解析,并提前计算转移方向,避免重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。

如图2所示,本发明提供一种指令流水线的预译码系统,预译码系统包括:依次连接的指令流水线、指令存储器、预译码逻辑和下一级存储器,指令存储器与下一级存储器连接;

预译码逻辑用于当确定从下一级存储器中取出的当前指令为转移指令时根据当前指令的地址和第一转移指令编码信息得到当前指令的第二转移指令编码信息并输出至指令存储器;

指令流水线用于根据从指令存储器中取得的当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

第一转移指令编码信息包括指令类型和转移偏移量,第二转移指令编码信息包括转移指令标识、简化后指令类型和转移目标信息,简化后指令类型包括预译码已识别信息和转移指令子类型;

转移指令标识用于标识当前指令是否为转移指令;

预译码已识别信息用于标识该转移指令是否已经通过预译码逻辑获取对应的第二转移指令编码信息;

转移目标信息用于记录该转移指令的转移目标指令的地址;

转移指令子类型用于标识该转移指令的具体类型。

预译码逻辑用于:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,根据计算得到的当前指令的转移目标指令的地址和当前指令的第一转移指令编码信息得到当前指令的第二转移指令编码信息。

预译码逻辑用于:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,将计算得到的当前指令的转移目标指令的地址划分为高段和低段,将低段部分作为当前指令的第二转移指令编码信息中的转移目标信息;

根据高段部分的值与当前指令的地址高段的值,对当前指令的第二转移指令编码信息中的预译码已识别信息进行标识。

预译码逻辑用于:

当确定当前指令的转移目标指令的地址高段部分的值等于当前指令的地址高段的值时,将当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别。

预译码逻辑用于:

根据当前指令的第一转移指令编码信息中的指令类型判断当前指令是否为转移指令,并根据判断结果对当前指令的第二转移指令编码信息中的转移指令标识和转移指令子类型进行标识。

指令流水线用于:

根据从指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息确定是否根据当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

指令流水线用于:

当确定从指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别时,将当前指令的第二转移指令编码信息中的转移目标信息与当前指令的地址高段拼接得到当前指令的转移目标指令的地址。

本发明通过预译码逻辑对转移类指令的第一转移指令编码信息进行提前解析,得到第二转移指令编码信息存储在指令存储器中,当流水线的控制逻辑从指令存储器中取指时,可以直接通过将指令存储中存储的当前指令的第二转移指令编码信息中的转移目标信息与当前指令的地址高段进行拼接,得到当前指令的转移目标指令的地址,避免重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。

工作原理:

本发明通过将预译码逻辑放置在一级指令缓存与下一级缓存之间,所有从下一级缓存取得的指令均需要经过预译码逻辑的解析,识别出转移指令,并且计算出转移方向。对于大部分转移类指令,其转移目标的计算在每次执行时是不变的,这类指令的转移目标计算方法包括:

转移目标=本指令地址+本指令编码中部分字段 式一

预译码逻辑识别出指令的转移类型并计算出转移方向后,将该信息(包括转移类型和转移方向)写入一级指令缓存。在传统处理器设计中,一级指令缓存(图1中的指令存储器)中写入的指令编码信息同下一级缓存(图1中的下一级存储器)中指令的编码信息完全一致,传统处理器中的转移指令编码信息如图3所示。在本发明中,给出了一种新的指令编码信息格式,主要为了以最小开销区别出转移类指令和非转移类指令,同时在该指令编码中记录预译码逻辑识别出的转移指令信息。

如图2所示,下一级存储器传递给预译码逻辑的信息包含若干条指令,每条指令的信息均如图3所示,即第一转移指令编码信息,预译码逻辑传递给指令存储器的信息对应上述若干条指令,每条指令的信息如图4所示,即第二转移指令编码信息。

本发明的转移指令编码信息如图4所示,与图3的标准指令编码结构的主要区别在于:

(1)在图3的指令编码宽度上增加1比特,用以标识当前指令是否为转移类指令,即图4中的C位。

(2)缩短图3中的“指令类型”字段,图3中的“指令类型”字段需要编码处理器能够识别的所有指令类型,图4中“简化后指令类型”仅需要区分出不同的转移指令即可,即图5中的“转移指令子类型”,具有针对性,其中“预译码已识别”标记为1位,标记该转移指令的编码是否已经经过预译码逻辑完全转换。不能被预译码逻辑完全转换的指令包括两类:

a)转移目标计算方法不属于上文中列举的转移目标计算方法;

例如:转移目标地址=某寄存器的值+本指令地址,其中,某寄存器的值需要经过一次读寄存器操作获取。

处理器需要处理的转移指令有许多类型,其中一种类型为a)类情况所示,其转移目标地址的计算需要在每次执行时是动态改变的(根源在于其目标地址计算需要获取一个动态的寄存器的值),因此无法提前计算。本发明适用于另一类转移指令,其转移目标计算仅依赖于静态信息,因此可以实现提前计算。

b)预译码逻辑计算出的转移目标无法在图4中的“转移目标”字段中有效存储的转移指令。发生a)、b)两种情况时,本发明的预译码逻辑将保留指令原转移指令编码信息中的“转移偏移量”字段,不会将其转换为下文描述的“转移目标”字段。

(3)将图3中的“转移偏移量”字段转换为图4中的“转移目标”字段,用于记录该转移指令的转移目标指令的地址。由于处理器的指令地址宽度通常超过指令编码宽度,因此,图4中的“转移目标”字段无法完全储存完整的转移目标地址。本发明中,将预译码逻辑计算得到当前指令的转移目标指令的地址(转移目标地址)划分为高低两段,其中低段存储在图4所示的“转移目标”字段中,流水线执行转移指令时,存在两个地址:转移指令本身的地址和转移目标指令的地址。流水线自身会有专门的结构存储并维护转移指令本身的地址,本发明中,转移目标指令的地址的高段直接使用转移指令本身的地址的高段。

若“当前指令地址”高段的值等于“转移目标地址”高段,则置位“预译码已识别”标记,表示这条指令从图2所示的指令存储器输出时,可以利用第二转移指令编码信息中的“转移目标”字段与“当前指令的地址”高段直接拼接得到转移目标地址,判断和置位均由预译码逻辑负责。

若“当前指令地址”高段的值不等于“转移目标地址”高段,则对应于上文b)类情形,预译码逻辑计算出的转移目标无法在图4中的“转移目标”字段中有效存储,本发明的预译码逻辑将保留指令原转移指令编码信息中的“转移偏移量”字段,不会将其转换为“转移目标”字段。该指令从图2所示的指令存储器输出时,将重新利用上文式一计算得到转移目标地址。

实施例一

如图6所示,预译码逻辑从下一级存储器中取出一条图3格式的指令,并对该指令进行解析,识别出该指令的指令类型为转移指令,并根据该转移指令地址[50:0]和转移偏移量[20:0]计算出该指令的转移目标地址[50:0],将转移目标地址划分为高低两段,其中低段部分[25:0]存储在指令存储器内的图4格式的“转移目标”字段中,高段部分[50:26]用于后续判断。

从图中可知,“当前指令地址”高段的值[50:26]等于计算出的“转移目标地址”高段[50:26],则表明当前指令的编码已经被预译码逻辑完全转化,此时,预译码逻辑置位“预译码已识别”标记,当这条指令“指令存储器”输出时,控制逻辑直接从指令存储器中的该条指令存储位置的“转移目标”字段得到,对于已经置位了“预译码已识别”的转移类指令来说,可以直接将“转移目标”字段作为转移目标地址的低段。

流水线自身的硬件逻辑将控制逻辑从指令存储器中取出的“转移目标”字段,与自身存储的“当前指令地址”高段进行拼接,得到当前指令的转移目标地址,进而从转移目标地址重新取指,避免在流水线前端重复执行预译码动作。

本发明通过位于指令存储器和下一级存储器之间的预译码逻辑对转移类指令提前解析,并提前计算转移方向,当流水线的控制逻辑从指令存储器中取指时,可以直接取出“转移目标”字段,通过硬件逻辑进行拼接得到转移目标地址,避免重复的预译码动作,可以有效减少处理器流水线前段的动态功耗。

如图7所示,一种指令流水线的预译码方法,预译码方法包括:

S100、当确定从下一级存储器中取出的当前指令为转移指令时根据当前指令的地址和第一转移指令编码信息得到当前指令的第二转移指令编码信息并输出至指令存储器;

S200、根据从指令存储器中取得的当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

第一转移指令编码信息包括指令类型和转移偏移量,第二转移指令编码信息包括转移指令标识、简化后指令类型和转移目标信息,简化后指令类型包括预译码已识别信息和转移指令子类型;

转移指令标识用于标识当前指令是否为转移指令;

预译码已识别信息用于标识该转移指令是否已经通过预译码逻辑获取对应的第二转移指令编码信息;

转移目标信息用于记录该转移指令的转移目标指令的地址;

转移指令子类型用于标识该转移指令的具体类型。

S100包括:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,根据计算得到的当前指令的转移目标指令的地址和当前指令的第一转移指令编码信息得到当前指令的第二转移指令编码信息。

S100包括:

当确定当前指令为转移指令时根据当前指令的第一转移指令编码信息中的转移偏移量和当前指令的地址计算得到当前指令的转移目标指令的地址,将计算得到的当前指令的转移目标指令的地址划分为高段和低段,将低段部分作为当前指令的第二转移指令编码信息中的转移目标信息;

根据高段部分的值与当前指令的地址高段的值,对当前指令的第二转移指令编码信息中的预译码已识别信息进行标识。

S100包括:

当确定当前指令的转移目标指令的地址高段部分的值等于当前指令的地址高段的值时,将当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别。

S100包括:

根据当前指令的第一转移指令编码信息中的指令类型判断当前指令是否为转移指令,并根据判断结果对当前指令的第二转移指令编码信息中的转移指令标识和转移指令子类型进行标识。

S200包括:

根据从指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息确定是否根据当前指令的第二转移指令编码信息和当前指令的地址得到当前指令的转移目标指令的地址。

S200包括:

当确定从指令存储器中取得的当前指令的第二转移指令编码信息中的预译码已识别信息标识为已识别时,将当前指令的第二转移指令编码信息中的转移目标信息与当前指令的地址高段拼接得到当前指令的转移目标指令的地址。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种操作系统的切换方法、终端和计算机存储介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!