首页> 中国专利> SIMD处理器中写合并和写撤销的处理装置和方法

SIMD处理器中写合并和写撤销的处理装置和方法

摘要

本发明提供了一种SIMD处理器中写合并和写撤销的处理装置和方法,体系结构寄存器堆作为指令的操作数存储部件,连接到处理器的执行单元;标记表的输出连接到标记分派单元;标记分派单元从标记表中对当前需要写回寄存器的指令分派一个标记,该标记与已经进入流水线中的指令分派的标记不同,并输出连接到标记寄存器堆;译码逻辑产生的目的寄存器的写信号控制标记分派单元分派的标记写入标记寄存器堆。本发明能够提高SIMD结构处理器的执行效率,降低或几乎不增加编译器设计的复杂度。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-15

    授权

    授权

  • 2015-02-25

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20141015

    实质审查的生效

  • 2015-01-28

    公开

    公开

说明书

技术领域

本发明适用于处理器体系结构设计领域,涉及SIMD结构处理器中支持写合并和 写撤销的指令结果写回逻辑的设计。

背景技术

目前处理器设计中,一方面处理指令集设计提供了更多的指令支持,如DSP处理 器提供的乘累加指令、支持浮点计算的处理器提供的单精度浮点指令,甚至扩展精度 浮点操作指令;另一方面为了提高处理器工作的主频,处理器的流水线被进一步细分, 完成一条复杂指令的执行甚至需要十多级流水操作。为了提高处理器的指令执行效率, 对指令的流水段划分会按照指令的功能分成不同长度的流水线,如寄存器传输、算术 逻辑等简单操作指令具有较短的流水线长度,而浮点计算等复杂操作指令有较长的流 水线。

对于SIMD结构的处理器,不同长度的流水线划分会导致以下冲突:

1.写资源冲突。流水线内的多条指令在同一拍提交执行指令执行结果,且指令写 回的目的寄存器是SIMD结构中同一组寄存器或不同组寄存器,由于寄存器端口限制, 每次只能一条指令写入寄存器,导致写资源冲突。

2.写后写冲突。由于指令周期数不同,会出现较短执行周期数指令先于较长执行 周期指令将结果写回寄存器,导致执行结果错误。

一般静态流水线的处理器设计中,会检测指令的各类相关性,并将导致相关的后 续指令停顿,待较老的指令执行完成后再解除较新指令的停顿。这样的结构设计方法, 对与具有较长流水段的指令引起的多拍停顿,指令执行效率不高。另一方面,需要大 量的相关检测逻辑来判断流水线中各指令的写操作,来避免冲突发生。尤其对于支持 SIMD结构的处理器,根据并行度不同,一条指令的执行结果会对多个寄存器进行写 操作,使得检测和解除相关的逻辑复杂度大幅增加。

发明内容

为了克服现有技术的不足,本发明提供一种SIMD处理器中写合并和写撤销的处 理装置,能够提高SIMD结构处理器的执行效率,对于具有多并行度的SIMD结构处 理器,本发明能有效减少由于不同流水线长度的指令执行结束提交结果时,由于各类 冲突引起的流水线停顿周期数;本发明可以使得编译器对于背景中提到的几类指令冲 突是透明的,降低或几乎不增加编译器设计的复杂度。

本发明解决其技术问题所采用的技术方案是:一种SIMD处理器写合并和写撤销 的处理装置包括体系结构寄存器堆、标记寄存器堆、标记分派单元和一个标记表。

所述的体系结构寄存器堆作为指令的操作数存储部件,连接到处理器的执行单元; 标记表的输出连接到标记分派单元;标记分派单元从标记表中对当前需要写回寄存器 的指令分派一个标记,该标记与已经进入流水线中的指令分派的标记不同,并输出连 接到标记寄存器堆;译码逻辑产生的目的寄存器的写信号控制标记分派单元分派的标 记写入标记寄存器堆;

所述标记寄存器堆是体系结构寄存器堆的标记存储单元,与体系结构寄存器堆一 一对应;标记寄存器用于当指令需要将数据写入寄存器时,在对应的标记寄存器上写 入一个分配给当前执行指令的标记;

所述标记表中包含一个独立的标记和一组可分配的标记;所述独立标记表示寄存 器不会被任何已进入执行单元的指令写入结果数据;所述标记表中的可分配标记由标 记分派单元分配给进入执行单元的指令;可分配标记用来对流水的指令和寄存器进行 标记;在寄存器的标记和指令携带的标记一致时,指令的结果数据才能写回寄存器。

所述体系结构寄存器堆包括W个寄存器,从0~(W-1)对寄存器依次索引;寄存器 堆的访问索引为w位,W=2w;W个寄存器分成M组,每组N个寄存器,其中,N=2n, N为SIMD结构的最大并行度,表明组内包含的寄存器的数量;M=2m,M为寄存器 堆的组数量;n,m都是非负整数,m+n=w;

所述体系结构寄存器堆中,寄存器访问的索引位宽为m+n位,m+n=w;其中,索 引的(m+n-1,n)位为组选择信号,索引的(n-1,0)位为组内选择信号;寄存器的读 操作根据指令的寄存器操作数索引,其中的高(m+n-1,n)位作为寄存器访问的组号, 从寄存器堆中读出一组寄存器,再根据低位索引(n-1,0)位和并行度P将相应的数据 放在数据总线上;寄存器的写操作同样由指令目的索引的高(m+n-1,n)位作为寄存 器堆写回的组号,由低位索引(n-1,0)位和并行度P译码出相应的写使能信号,对组 内的寄存器写入数据;

所述体系结构寄存器堆的物理访问和指令逻辑访问的映射关系是:寄存器堆的逻 辑访问索引为w位,W=2w;所述SIMD处理器支持多种并行度P,其中P=2p,0≤p ≤n;当访问的并行度为P时,由索引(w-1,p)位将寄存器堆逻辑地分成2(w-p)组, 每组内包括P=2p个寄存器;对应到物理访问上,索引的(w-1,n)位为寄存器的逻辑 组所在的物理寄存器组,索引的(n-1,p)位选择物理组内的P个寄存器作为指令的操 作数。

本发明还提供了一种SIMD处理器写合并和写撤销的处理方法,包括以下步骤:

步骤1、判断当前指令是否写回寄存器堆,如果指令的执行结果需要写回寄存器 堆,由所述标记分派单元为该指令分派一个标记;否则,标记分派单元不为指令分派 标记;根据并行度不同,指令的结果会写回一个或一组体系结构寄存器,但是对当前 指令仅分配一个标记;

步骤2、将分派的标记写入指令目的寄存器对应的标记寄存器中;

步骤3、指令携带分派的标记进入处理器执行单元,执行指令功能;

步骤4、指令执行结束写回体系结构寄存器时,将指令携带的标记与指令目的寄 存器的标记进行比对,如果标记相同,将指令的执行结果写回寄存器,进入步骤5; 否则,指令的执行结果不写回;

步骤5、如果寄存器写入,将对应的寄存器的标记清除。

所述步骤4包括以下步骤:

步骤4-1、从多个具有写回数据的流水段中按优先级由高到低选择一个写回的物 理寄存器组的组号;

步骤4-2、根据4-1得到的组号,从标记寄存器堆读出该组寄存器的标记;读出的 一组标记有N个,依次为tag0~tagN-1,N为最大并行度;

步骤4-3、从多个写回操作中,选择写回的寄存器数据,对结果数据总线进行重 排,产生写回数据总线,并产生组内的写使能信号;

在步骤4-3中,首先将每个指令写回的数据总线进行复制;复制的方法是:数据 总线的宽度为N个数据;如果并行度P=1,数据总线上第0个数据有效,将这个数据 赋值到数据0~N-1上;如果并行度为P,数据总线上第0~P-1个数据有效,将这P个 数据复制N/P份到数据P~N-1上;然后将多个写回指令携带的标记逐个分别与 tag0~tagN-1进行比较,如果标记一致,就将该指令对应复制后的数据总线的第i个数 据选择到写回数据总线上,并置该路数据的写使能信号为有效;否则,该路数据的写 使能信号无效;写回数据总线位置和组内的寄存器的位置一一对应;

步骤4-4、按照对应数据和寄存器的位置对应关系,在写使能有效的情况下将数 据写入寄存器内。

所述步骤5中,清除寄存器的标记的操作是将标记表中提到的一个独立的标记项 写入标记寄存器中。

本发明的有益效果是:处理方法及结构适用于多周期流水线的写回处理,提高了 写入的并发程度,减少的流水线的停顿;突破了传统处理器设计中每一个节拍仅允许 一条指令执行结果写回的限制。本发明提供的方法和结构可用于处理器设计技术的改 进,特别是SoC技术中处理器IP核的改进。

附图说明

图1是本发明实施实例指令译码的方法流程图;

图2是本发明实施实例写回操作合并和撤销的方法流程图。

具体实施方式

下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。

本发明提供一种SIMD结构处理器中指令执行结果写合并和写撤销的处理装置和 方法。

所述SIMD处理器写合并和写撤销的处理装置包括:体系结构寄存器堆、标记寄 存器堆、标记分派单元、一个标记表。

以上部件的连接关系为:体系结构寄存器堆作为指令的操作数存储部件,连接到 处理器的执行单元。标记表的输出连接到标记分派单元。标记分派单元从标记表中选 择一个标记,并输出连接到标记寄存器堆。译码逻辑产生的目的寄存器的写信号控制 标记分派单元分派的标记写入标记寄存器堆。其中译码逻辑和执行单元为处理器内的 通用部件,在本专利中不再赘述。

所述体系结构寄存器堆包括W个寄存器,从0~(W-1)对寄存器依次索引。寄存器 堆的访问索引为w位,W=2w.所述寄存器堆的物理实现结构是:W个寄存器分成M 组,每组N个寄存器。其中,N=2n,N为SIMD结构的最大并行度,表明组内包含的 寄存器的数量;M=2m,M为寄存器堆的组数量;n,m都是非负整数,m+n=w。寄存 器堆按照SIMD处理器的最大并行度N,将N个寄存器组成一组,整个寄存器堆分成 M组。

所述SIMD结构处理器内的体系结构寄存器堆在实现上是按组访问。由上述寄存 器堆的实现结构设计,寄存器访问的索引位宽为m+n位,m+n=w。其中,索引的(m+n-1, n)位为组选择信号,索引的(n-1,0)位为组内选择信号。寄存器的读操作根据指令 的寄存器操作数索引,其中的高(m+n-1,n)位作为寄存器访问的组号,从寄存器堆 中读出一组寄存器,再根据低位索引(n-1,0)位和并行度P将相应的数据放在数据总 线上。寄存器的写操作同样由指令目的索引的高(m+n-1,n)位作为寄存器堆写回的 组号,由低位索引(n-1,0)位和并行度P译码出相应的写使能信号,对组内的寄存器 写入数据。

所述寄存器堆的物理访问和指令逻辑访问的映射关系是:寄存器堆的逻辑访问索 引(即指令中出现的寄存器索引,同时该索引也是寄存器物理访问的索引)为w位, W=2w.所述SIMD处理器支持多种并行度P,其中P=2p,0≤p≤n.当访问的并行度 为P时,由索引(w-1,p)位将寄存器堆逻辑地分成2(w-p)组,每组内包括P=2p个寄 存器。对应到物理访问上,索引的(w-1,n)位为寄存器的逻辑组所在的物理寄存器组, 索引的(n-1,p)位选择物理组内的P个寄存器作为指令的操作数。

从上述结构实现可以看出,所述寄存器堆的寄存器物理访问操作的最小单元是一 组寄存器。当寄存器写入数据时,根据组内的写使能有效信号对组内全部或部分寄存 器产生写操作。这种写操作的访问方式有利于实现SIMD结构的写合并和写撤销功能。

所述标记寄存器堆是体系结构寄存器堆的标记存储单元,与体系结构寄存器堆一 一对应。标记寄存器用于当指令需要将数据写入寄存器时,在对应的标记寄存器上写 入一个分配给当前执行指令的标记。

所述标记寄存器堆是结构寄存器,用户不可见。其物理实现结构和逻辑访问方式 与体系结构寄存器堆的结构一致,在此不再重复说明。

所述标记分派单元的作用是对当前需要写回寄存器的指令分派一个标记。该标记 与已经进入流水线中的指令分派的标记不同。

所述标记表中包含一个独立的标记和一组可分配的标记;所述独立标记表示寄存 器不会被任何已进入执行单元的指令写入结果数据;所述标记表中的可分配标记由标 记分派单元分配给进入执行单元的指令。可分配标记用来对流水的指令和寄存器进行 标记。在寄存器的标记和指令携带的标记一致时,指令的结果数据才能写回寄存器。

所述标记表中可分配的标记的最少数量为执行和写回逻辑的流水段数量。本专利 中不对标记的具体编码作权利要求。

为实现本发明的目的,专利还提供了一种SIMD处理器写合并和写撤销的处理方 法。该方法包括以下步骤:

步骤1、判断当前指令是否写回寄存器堆,如果指令的执行结果需要写回寄存器 堆,由所述标记分派单元为该指令分派一个标记;否则,标记分派单元不为指令分派 标记。根据并行度不同,指令的结果会写回一个或一组体系结构寄存器,但是对当前 指令仅分配一个标记。

步骤2、将分派的标记写入指令目的寄存器对应的标记寄存器中;

步骤3、指令携带分派的标记进入处理器执行单元,执行指令功能;

步骤4、指令执行结束写回体系结构寄存器时,将指令携带的标记与指令目的寄 存器的标记进行比对,如果标记相同,将指令的执行结果写回寄存器;否则,指令的 执行结果不写回。

步骤5、如果寄存器写入,将对应的寄存器的标记清除。

所述步骤5中,清除寄存器的标记的操作是将标记表中提到的一个独立的标记项 写入标记寄存器中。

所述步骤4的处理步骤进一步描述为:

步骤4-1、从多个具有写回数据的流水段中按优先级由高到低选择一个写回的物 理寄存器组的组号。

步骤4-2、根据4-1得到的组号,从标记寄存器堆读出该组寄存器的标记。读出的 一组标记有N个,依次为tag0~tagN-1,N为最大并行度。

步骤4-3、从多个写回操作中,选择写回的寄存器数据,对结果数据总线进行重 排,产生写回数据总线,并产生组内的写使能信号。

在步骤4-3中,首先将每个指令写回的数据总线进行复制。复制的方法是:数据 总线的宽度为N个数据。如果并行度P=1,数据总线上第0个数据有效,将这个数据 赋值到数据0~N-1上。如果并行度为P,数据总线上第0~P-1个数据有效,将这P个 数据复制N/P份到数据P~N-1上。

然后将多个写回指令携带的标记逐个分别与tag0~tagN-1进行比较,如果标记一 致,就将该指令对应复制后的数据总线的第i个数据选择到写回数据总线上,并置该 路数据的写使能信号为有效;否则,该路数据的写使能信号无效。

写回数据总线位置和组内的寄存器的位置一一对应。

步骤4-4、按照对应数据和寄存器的位置对应关系,在写使能有效的情况下将数 据写入寄存器内。

实施实例中优选的处理器模型的基本特征为:

下表所示是优选实例中寄存器堆的结构。寄存器堆中共有32×32个通用寄存器R, W=32,w=5,每个寄存位宽32位。寄存器堆的读端口有两个,分别对应指令集中的 两个源操作数的读;写端口只有一个,用于指令将结果写回通用寄存器。

R3 R2 R1 R0 R7 R6 R5 R4 R11 R10 R9 R8 R15 R14 R13 R12 R19 R18 R17 R16 R23 R22 R21 R20 R27 R26 R25 R24 R31 R30 R29 R28

处理器结构采用哈佛结构设计,有独立的数据存储器和程序存储器。指令位宽为 32位。处理器SIMD特征的并行度为P={1,2,4},0≤p≤2.P=1时,寄存器堆逻辑 地分成2(5-0)=32组,每组20=1个寄存器;P=2时,寄存器堆逻辑地分成2(5-1)=16 组,每组21=2个寄存器;P=4时,寄存器堆逻辑地分成2(5-2)=8组,每组22=4个寄 存器。

寄存器堆的实现结构按照最大并行度划分,N=22,M=23,将4个寄存器组成一 组,整个寄存器堆分成8组。

处理器的执行分为取指→译码→执行→写回四个周期。流水段划分为 PF→FE→DC→EX1→EX2→EX3→EX4→EX5八个流水段。根据指令执行周期的不同, 在EX1,EX3,EX5三个流水段内都有对应类型的指令执行结束,产生写回操作。

发明中所述的标记表的一个优选编码格式为:0000标记表示寄存器不会被任何已 进入执行流水线的指令写入数据,该标记不会被标记分配单元分配给指令。DC段之 后有5个流水段,设计了5个标记项1000,1001,1010,1011,1100用于标记分派单 元分配给进入执行单元的指令。这5个标记项,在指令流水过程中由指令携带,当指 令执行完成写回数据后,该标记被分派单元回收,因此5个标记按照轮转的方式分配 给进入流水线的指令。

相应地,处理器硬件实现设置一个标记寄存器堆TAG,TAG寄存器与通用寄存器 R一一对应。TAG中每个寄存器位宽为4位,用于存储上述标记。

寄存器标记值是允许覆盖的,在给目的寄存器分配标记值后,若该寄存器又有写 入操作,则它的标记标记会被更新成和较新指令对应。

如图1的具体方法流程。按发明内容中所述的方法,结合实施实例中的SIMD结 构处理器模型,具体的实施步骤详述如下:

步骤1、在译码阶段,如果处理的指令有寄存器写回操作,则由标记分派逻辑分 配一个标记给指令,具体在本例中是分配一个非零标记。如指令ADDI R0,R4R8完成 R0+R4→R8的定点加法操作,当指令进入DC译码时,指令要对寄存器完成数据写回 操作,那么标记分配单元按轮转方式将标记表中的1000分配给ADDI指令。这里列举 并行度为1的指令的标记分配,在本发明的方法中,标记的分配与并行度无关,对进 入执行单元的指令分配唯一的一个标记。

步骤2、将分派的标记写入目的寄存器对应的标记寄存器中。步骤2的寄存器标 记与并行度有关。按照指令的并行度,指令的逻辑目的寄存器组对应的标记寄存器都 要写入步骤1为指令分配的标记。如ADDI(2)R0,R4R8指令的并行度为2,需要将标 记1000写入目的寄存器组{R8,R9}对应的标记寄存器TAG[8]和TAG[9]中。按照发 明内容中TAG寄存器的实现结构,TAG[8,9]属于标记寄存器堆的第2组,组内第0和 第1路寄存器,那么第2组的写使能和组内第0路寄存器的写使能有效,将标记1000 写入。

步骤3、指令携带标记发射到执行单元。在本例中,ADDI指令进入流水线的同时, 标记1000随指令在执行流水线上流动。

如图2所示的写回操作合并和撤销操作流程。为方便说明实施过程,步骤4被进 一步详细描述为以下步骤:

步骤4-1、从三个具有写回数据的流水段EX5、EX3、EX1上选择一个写回的物 理目的寄存器组号。

三个流水段的写回操作的选择具有优先级,其中EX5的优先级最高,EX3次之, EX1最低。这是因为从EX5提交的指令是最先进入流水线的指令,按照程序的执行的 逻辑顺序应该要先于EX3和EX1上的指令执行完成。

这样的选择有以下两种情况:

(a)、EX5、EX3和EX1写入的逻辑寄存器组位于同一物理寄存器组内。由于不同 的并行度,EX5、EX3和EX1的逻辑目的寄存器组可能完全不重叠,即没有索引相同 的寄存器。但是物理寄存器堆按照最大并行度分组,使得三个流水段的逻辑目的索引 位于同一组内。这种情况下,该物理寄存器组成为写回的组号。

(b)、EX5、EX3和EX1分别对应的逻辑目的寄存器组部分或全部位于不同的物理 寄存器组内。这种情况下选择当前最高优先级的写回操作,该操作的目的寄存器映射 到的物理寄存器组成为写回的序号。没有被选中的写回操作被阻塞或进入队列中。

EX5、EX3和EX1三者中部分有写回操作的处理与上述情况处理相同。

我们将在后续的具体程序片段分析中看到,步骤4-1的选择方法,会对SIMD指 令的写回操作产生有益的效果,使得流水线关于写冲突的停顿减少,提高指令的执行 效率。

步骤4-2、根据4-1得到的组号,从标记寄存器堆读出对应的4个标记,按组内索 次序依次为tag3,tag2,tag1和tag0,这4个标记将要与流水段中的标记进行匹配, 以确定对应位置上的数据是否写入组内对应寄存器中。

步骤4-3、组内写使能产生及结果总线重排。

对流水段写回数据根据并行度进行处理,取EX1、EX3、EX5段在输出有效时的 128位输出数据作为输入,处理过程如下:

并行度为1:取输入数据的低32位,复制3份分别到最高32位、次高32位、次 低32位,拼合成128位输出数据;

并行度为2:取输入数据的低64位,复制1份到高64位,拼合成128位输出数 据;

并行度为4:取输入数据的128位送至输出数据;

和3个写入流水段相对应,3组128位输出数据用作数据重排操作的输入,这样 就可以使得数据总线在最高并行度下和组内寄存器位置对应,在写合并阶段就无需考 虑写并行度,对128位总线的每一路(32位)单独进行写操作即可。

组内写使能逻辑和数据重排按如下操作进行:

假如当前节拍EX5/EX3/EX1三个流水段都提交了数据写回操作。判断 EX5/EX3/EX1段结果数据输出信号有效时,用各自流水段中的指令携带的标记和步骤 4-2取出的寄存器标记tag3~0作比较。以tag0为例,即用3不同流水段的标记与tag0 比较,若匹配成功,则将对应流水段的输入数据截取低32位,送至寄存器写入总线的 低32位,并将该路的写入使能设为有效;若匹配不成功,将该路的写入使能设为无效。 tag1,tag2,tag3的处理过程和tag0处理过程相同,依次得到寄存器写入总线数据的 次低32位,次高32位和高32位,拼合在一起就是完整的128位写入数据,这样就实 现了多流水段写数据操作的合并。三个流水段的标记与tag3~0不能匹配的情况,说明 寄存器标记已被较新指令所更新,写入操作被迫撤销。

对于写入寄存器不在当前寄存器组内的而没有成功进行写合并的流水段,将在下 一节拍尝试写合并。只有部分流水段提交写回操作的情况与上述处理过程相同。

步骤4-4、将结果写入目的寄存器。

经过重排后的结果总线由高到低与组内4个寄存器是一一对应的

经过步骤4-3的处理,组内四个寄存器对应的写使能信号和数据已经产生,按照 使能逻辑是否有效,将数据写入对应寄存器。同时,根据使能有效信号将组内对应的 标记寄存器清除。清除的方法就是将前述标记表中独立的标记编码0000写入标记寄存 器中。原来的标记值被分派逻辑回收,用于后续指令的表记分派。

步骤5、如果对目的寄存器写入数据,将目的寄存器对应的标记寄存器内的标记 清除。在实施实例中,是将标记0000写入标记寄存器中。

所述步骤4中,由于SIMD结构处理器支持多种并行度的指令执行,对寄存器的 逻辑写入也是按最大并行度为对一组寄存器写入数据。如果在同一个时钟节拍同时有 多条指令执行结束,可以将同一组内的寄存器的写回操作合并起来,作为一次写操作, 完成多条指令执行结果的合并写回。

所述步骤4中,由于处理器指令流水线长度不同,较新的指令会将较老的指令的 目的寄存器的标记覆盖,这样在指令执行结束写回寄存器时,由于较老指令携带的标 记和目的寄存器的标记不相同,那么较老指令的执行结果不会写回寄存器,这是写撤 销的情况。同时,由于SIMD结构支持多种并行度,存在对一条SIMD指令中部分寄 存器被写回,部分寄存器的结果被撤销的情况。此外,如果指令在同一拍提交的目的 寄存器不在同一物理组内,会导致较新的指令被阻塞,等待较老指令执行完成后才能 写回,这是写阻塞的情况。

下面分别结合实例对步骤4的对写操作处理方式逐一说明。

首先说明本发明中提出的写合并处理。实施示例程序为:

MPYF R0,R1  R0

NOP

ADDI R3,R4  R1

NOP

LD(2)R7    R2

NOP

上述程序片段中,MPYF和ADDI指令的并行度为1,LD指令的并行度为2.其 中,MPYF为浮点操作指令,浮点操作需要4个流水段,在EX5将结果写回;ADDI 指令为定点指令,定点操作2个流水段,在EX3将结果写回;LD指令为寄存器传输 指令,在EX1将结果写回。上述指令按顺序进入流水线,由于不存在指令相关引起的 停顿,三条指令在同一拍内执行结束,提交写回结果。

传统的指令写回处理方式中,检测指令的相关性,对流水线产生停顿,使得三条 指令依次写入寄存器。为了提高指令的执行效率,在本发明所述的方法中,采用了写 合并的方法处理上述指令同时写回的情况。这是对步骤4实现的第一种效果。

假设进入程序片段之前标记分派单元的候选待分配标记为1000。

根据前述的步骤1~3.从MPYF指令进入译码段开始,标记分派单元依次为需要分 派标记的指令MPYF、ADDI、LD依次分派标记1000、1001、1010.该标记也同时和 指令进入执行单元,分别由各指令携带在流水线中流动。同时,在译码阶段对标记寄 存器的修改依次为TAG[0]=1000;TAG[1]=1001;{TAG[2]=1010;TAG[3]=1010;}。上述 程序片段直到LD指令提交写回结果,标记寄存器对的状态不会再改变。

写合并的具体操作为:

(1)、上述指令片段中,EX5段的MPYF指令提交的目的寄存器R0、EX3段的 ADDI指令目的寄存器R1、EX1段的LD指令的目的寄存器{R2,R3},这些寄存器对 应的物理寄存器是第0组寄存器。因此,第0组寄存器作为写回的目的寄存器组。

(2)、从标记寄存器堆的第0组中读取标记{tag3,tag2,tag1,tag0}={1010,1010, 1001,1000}.

(3)、MPYF在EX5提交的写回数据为A(32位),同时携带的指令标记为1000; ADDI在EX3提交的写回数据为B(32位),同时携带的指令标记1001;LD在EX1 提交的写回数据为{D,C}(64位),同时携带的指令标记为1010.总线复制后的128 位数据总线分别为{A,A,A,A}EX5_BUS、{B,B,B,B}EX3_BUS、{D,C,D,C}EX1_BUS.经 过步骤4-3的合并处理后,寄存器组的写回数据按高低位置次序组合出的128位总线 为{DLD,CLD,BADDI,AMPYF},并且组内4个寄存器的写使能有效。

(4)、将总线{D,C,B,A}按位置对应写入4个寄存器。

从上述指令的执行过程可以看出,程序片段中的MPYF、ADDI、LD指令虽然在 不同的节拍进入流水线,由于不同流水段的设置,3条指令在同一节拍提交写回数据。 按照传统的写回方法,指令按照先后顺序依次写入数据,这样ADDI、LD的写回数据 将分别被延迟写入,一方面需要额外的硬件逻辑处理延迟,另一方面降低了流水线效 率。在本发明中,通过写合并将上述3条指令的结果在一个时钟节拍同时提交到通用 寄存器组中,通过简单的机制解决了上述问题。示例中说明了一个优选例子,在更复 杂、流水线更细致的结构中,可以按发明中提出的办法实现多条指令的结果一次写回。 即使对于没有SIMD结构特征的处理器,本发明中寄存器文件的逻辑和物理组织结构, 以及写回操作的处理仍有很大使用价值。

对于组内4路寄存器只有部分写回的情况与上述处理相同,通过控制组内写使能 控制更新组内寄存器。

下述实例说明本发明中提出的写撤销处理。实施示例程序为:

MPYF(4)    R0,R1  R0

NOP

ADDI(2)    R9,R4  R1

NOP

LD(2)      R7     R2

NOP

上述指令片段的流水段与前面例子中介绍的相同。MPYF指令的并行度为4,ADDI 指令并行度为2.标记分派单元为指令每次分配一个标记,标记的分配与并行度无关。 仍然假设进入上述指令片段前候选待分配标记为1000,对上述修改寄存器的指令分配 的标记依次为1000、1001、1010.各指令在译码阶段对标记寄存器的修改依次为 {TAG[0]=1000;TAG[1]=1000;TAG[2]=1000; TAG[3]=1000}MPYF(4)→{TAG[0]=1001;TAG[1]=1001}ADDI(2)→{TAG[2]=1010; TAG[3]=1010}LD(2).

上述3条指令同时执行结束,提交写回结果。根据指令的目的寄存器组索引得到, 第0组物理寄存器作为写回操作的寄存器组。相应地,从标记寄存器堆的第0组读取 的标记此刻是:{tag3,tag2,tag1,tag0}={1010,1010,1001,1001}.

设MPYF提交的数据为{E,F,G,A};ADDI提交的数据为{H,B};LD提交的 数据为{D,C}。总线复制后的128位数据总线分别为{E,F,G,A}EX5_BUS、{H, B,H,B}EX3_BUS、{D,C,D,C}EX1_BUS。按照步骤4-3中的操作,组内第0路位 置上ADDI指令携带的标记与tag0相同,因此重排后数据线最低一组的数据选择ADDI 指令提交的数据B选择到写回数据线上。对高3组处理后,重建后写回数据总线为 {DLD,CLD,HADDI,BADDI}。组内4个寄存器写使能有效,将重建后的数据写回 寄存器,完成上述指令的执行。

可见,MPYF提交的数据完全没有出现在写回数据总线上,MPYF指令的执行结 果被撤销。这是因为,后续指令进入流水线后,将MPYF的目的寄存器的标记清除掉, 当MPYF指令提交时,它携带的标记与目的标记不匹配,结果不能写入寄存器。从程 序运行角度看,上述指令片段的执行效果是R0~3寄存器内的数据最终是ADDI和LD 指令执行的结果,所述“写撤销”的效果与程序的执行从逻辑上也是一致的。通过“写 撤销”的处理,MPYF指令的结果被丢弃,没有占用写回操作的时间,而当前的写回 节拍被交给ADDI和LD的指令,两者将结果合并写入。

以上两个示例的目的寄存器都映射到同一组物理寄存器上。在此,说明一种同时 映射到多组物理寄存器的实施实例。实施示例程序为:

MPYF(4)    R0,R1  R0

INTF(2)    R8     R8

ADDI(2)    R9,R4  R1

SUB        R15,4  R15

LD(2)      R7     R4

NOP

上述示例中,MPYF和ADDI指令的目的寄存器映射到第0组物理寄存器上, LD指令的目的寄存器映射到第1组物理寄存器上。按照步骤4-1选择的优先级,第0 组被选择为当前拍写回的寄存器组。由于寄存器堆的物理实现上,只有一个写入的端 口,LD指令的写回数据被阻塞,到下一拍再次提交结果。从上述示例中还可以看到, 由于INTF(EX5提交写回)和SUB(EX3提交写回)指令连续提交写回结果,LD指 令的写回被连续阻塞两拍,直到第4拍写回逻辑才处理LD指令的写回操作,这与程 序执行的逻辑顺序也是相同的。这个实例说明了本发明的设计中,如果有多个不同物 理寄存器组写入时,写回操作被阻塞的情况。

上述实例还说明了,在没有指令写后读相关的情况下,指令的写回顺序并不一定 按指令的顺序进行,但是从逻辑上并不影响程序的执行结果。上例中,指令写回顺序 为:MPYF/ADDI→INTF→SUB→LD.

实施实例中以通用寄存器堆的写回作为优选实例说明了本发明的具体操作方法。 其他寄存器的写回处理也可以使用本发明的处理方法来提高执行效率。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号