一种用于存算融合式处理器的取指流水线的制作方法

    专利查询2022-07-12  152



    1.本发明涉及流水线取指技术领域,尤其是一种用于存算融合式处理器的取指流水线。


    背景技术:

    2.随着处理器与存储器的工艺提升差的增大,冯诺依曼体系结构下存储墙剪刀叉也不断增大,访存功耗墙的问题也日益突出,工业界和学术界的专注点开始从聚焦计算转移到聚焦存储。与此同时,高访存、高并行、低精度的人工智能和类脑计算等应用的快速发展也驱动了计算型存储/存算一体/存内计算的快速发展,计算型存储/存算一体/存内计算的快速发展势必也带来更大的数据吞吐率需求。
    3.取指令(instructionfetch,if)阶段是将一条指令从主存中取到指令寄存器的过程。为了最大限度地发挥计算型存储/存算一体/存内计算的优势,需要设计与其吞吐率相配套的取指逻辑。目前,传统的取指模块采用icache对指令机器码进行缓存,但是icache的容量通常较小,发生cache缺失的几率较大,而cache缺失的代价通常较大。为了最大限度地提高存算融合式处理器的运算性能,宜采用较大的指令存储器imem(sram)和高速缓存icache(sram)替代传统取指模块中的icache及其相关的多级缓存,减少cache缺失率,提高取指性能,但是更大的存储会带来更大的延迟,降低系统执行效率。


    技术实现要素:

    4.针对现有取指流水线应用于采用较大指令存储器和高速缓存的存算融合式处理器存在的延迟问题,本发明提供了一种用于存算融合式处理器的取指流水线,有效提高程序执行效率。
    5.一种用于存算融合式处理器的取指流水线,包含f1-f6六级流水式取指逻辑,分别为:
    6.f1级流水单元,根据应用程序的执行特征,产生正确的取指地址;
    7.f2级流水单元,发送icache/imem的读地址及相关控制信号,相关控制信号包括但不限于读使能信号;
    8.f3级流水单元,当流水发生停顿时,寄存icache/imem返回的读数据;当流水停顿况解除时,将寄存的读数据发送至f4级流水单元;
    9.f4级流水单元,判断icache/imem是否命中,当icache缺失时,产生f1、f2、f3的流水停顿信号,启动aximaster读取外部存储器的数据并更新icache,根据命中的判断结果选择icache、imem或aximaster读数据存储器返回的指令包,对返回的指令包做分支预测,并将预测结果发送至f5级流水单元,分支预测结果在f5级流水生效;
    10.f5级流水单元,通过指令缓冲fifo进行指令包的缓冲,同时将分支预测目标地址送往f1级流水单元;
    11.f6级流水单元,根据指令缓冲fifo中的内容以及指令行结束标志,将指令包转换
    为执行包,并将执行包送至到执行流水线。
    12.进一步的,f1级流水单元包含取指地址产生电路,取指地址产生电路主要由多路选择器和寄存器构成,多路选择器的取指来源包括但不限于复位信号、中断控制器输出、分支跳转、分支预测、顺序执行,其中,中断控制器输出包括因中断、中断返回或中断撤销产生的输出。
    13.进一步的,f4级流水单元包含分支预测器,该分支预测器采用局部两位预测方案;上电复位后,分支预测寄存器中的所有寄存器单元全部设置成2'b10,分支预判时,利用条件分支指令所处指令行pc[9:0]访问该分支预测器prediction,若prediction[pc[9:0]][1]=1'b1,则表示分支需要跳转,否则不跳;若分支预测结果为跳转,则在f5级流水单元产生f1、f2、f3、f4的流水刷新信号;
    [0014]
    分支预测寄存器中的内容根据条件分支的最终计算结果更新,该分支预测器对指令包的8个slot均进行预测,指令包中分支指令行出现跨行情况时,即分支指令行中有一部分指令位于f3级的指令包中,当f3级中残余的指令包到达f4级时不能做分支预测,同时当分支预测结果到达f5级时,不清除f4级的流水线。
    [0015]
    进一步的,f5级流水单元包含指令缓冲fifo,fifo有一个6bit的读指针fifo_rd和一个3bit的写指针fifo_wr,fifo_rd[4:3]用作fifo行读指针,fifo_rd[2:0]用作fifo行内偏移指针,fifo_wr[1:0]用作fifo行写指针;
    [0016]
    fifo的空状态和满状态由fifo_rd与fifo_wr预判,当fifo_wr=fifo_rd,fifo预判为空;当fifo_wr={~fifo_rd[5],fifo_rd[4:3]},且f4级指令包有效时,fifo预判为满;当fifo预判为满时,产生f1、f2、f3、f4的流水停顿信号;
    [0017]
    当指令包为全零时,fifo将全零指令包发送出去,同时fifo读指针加8。
    [0018]
    本发明设计的六级流水式取指逻辑,取代原有四级流水式取指逻辑,缩短了关键路径的时长,而系统时钟频率由关键路径时长决定,因此提升了系统时钟频率,进而大幅度提高了系统执行效率;虽然取指流水级数增多,但由于分支预测器和指令缓冲fifo的存在,使得取指流水线的性能并未降低。
    附图说明
    [0019]
    图1是存算融合式处理器架构取指流水线;
    [0020]
    图2是取指地址产生电路;
    [0021]
    图3是两位分支预测方案状态图;
    [0022]
    图4是指令缓冲fifo结构。
    具体实施方式
    [0023]
    下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
    [0024]
    实施例1
    [0025]
    一种用于存算融合式处理器的取指流水线,如图1所示,包含f1-f6六级流水式取指逻辑,下面对这六级流水单元进行展开介绍。
    [0026]
    1、f1级流水单元
    [0027]
    f1级流水单元包含取指地址产生电路,用于根据应用程序的执行特征,产生正确的取指地址。指令来源有三个,分别为icache、imem和biu,biu为内核与外部设备的通讯接口,通过biu读取外部存储器的数据。
    [0028]
    取指地址产生电路主要由多路选择器和寄存器构成,如图2所示,多路选择器的取指来源包括但不限于复位信号、中断控制器输出、分支跳转、分支预测、顺序执行,其中,中断控制器输出包括因中断、中断返回或中断撤销产生的输出。
    [0029]
    2、f2级流水单元
    [0030]
    发送icache/imem的读地址及相关控制信号,相关控制信号包括但不限于读使能信号。
    [0031]
    3、f3级流水单元
    [0032]
    当流水发生停顿时,寄存icache/imem返回的读数据;当流水停顿解除时,将寄存的读数据发送至f4级流水单元。流水发生停顿/停顿解除,根据各级流水单元的流水停顿信号的状态判断,流水停顿信号stall=1则流水发生停顿,流水停顿信号stall=0则流水停顿解除。
    [0033]
    4、f4级流水单元
    [0034]
    判断icache/imem是否命中:若取值地址在imem地址范围内,则imem命中,选择接收imem读数据存储器返回的指令包;若取值地址不在imem地址范围内,则先访问icache,判断icache中是否有对应指令,若有则icache命中,选择接收icache读数据存储器返回的指令包,若无则icache缺失。
    [0035]
    当icache缺失时,产生f1、f2、f3的流水停顿信号(即置位stall),启动aximaster读取外部存储器的数据并更新icache,选择接收aximaster读数据存储器返回的指令包。
    [0036]
    f4级流水单元包含分支预测器(采用局部两位分支预测方案),对返回的指令包做分支预测,并将预测结果发送至f5级流水单元。
    [0037]
    上电复位后,分支预测寄存器中的所有寄存器单元全部设置成2'b10,分支预判时,利用条件分支指令所处指令行pc[9:0]访问该分支预测器prediction,其中pc[9:0]为寻址分支预测表地址,该地址位宽根据分支预测表结构大小改变。若prediction[pc[9:0]][1]=1'b1,则表示分支需要跳转,否则不跳。若分支预测结果为跳转,则在f5级流水单元产生f1、f2、f3、f4的流水刷新信号flush,用于刷新前级流水。flush信号为一个clk时钟周期的高电平,在此期间,流水中的中间结果重置为初始值(包括清除stall)。
    [0038]
    两位分支预测方案状态图如图3所示,分支预测器prediction存储的值对应于状态图3中的各个状态值。分支预测寄存器中的内容根据条件分支的最终计算结果更新,该分支预测器对指令包的8个slot均进行预测,指令包中分支指令行出现跨行情况时,即分支指令行中有一部分指令位于f3级的指令包中,当f3级中残余的指令包到达f4级时不能做分支预测,同时当分支预测结果到达f5级时,不清除f4级的流水线。
    [0039]
    5、f5级流水单元
    [0040]
    f5级流水单元包含指令缓冲fifo,通过指令缓冲fifo进行指令包的缓冲,同时将
    分支预测目标地址送往f1级流水单元。
    [0041]
    指令缓冲fifo有一个6bit的读指针fifo_rd和一个3bit的写指针fifo_wr,fifo_rd[4:3]用作fifo行读指针,fifo_rd[2:0]用作fifo行内偏移指针,fifo_wr[1:0]用作fifo行写指针,如图4所示。
    [0042]
    fifo的空状态和满状态由fifo_rd与fifo_wr预判,当fifo_wr=fifo_rd,fifo预判为空;当fifo_wr={~fifo_rd[5],fifo_rd[4:3]},且f4级指令包有效时,fifo预判为满。
    [0043]
    当fifo预判为满时,产生f1、f2、f3、f4的流水停顿信号;当fifo满解除时,清除f1、f2、f3、f4的流水停顿信号;当指令包为全零时,fifo将全零指令包发送出去,同时fifo读指针加8(fifo的一行对应8个指令槽)。
    [0044]
    6、f6级流水单元,根据指令缓冲fifo中的内容以及指令行结束标志,将指令包转换为执行包,并将执行包送至到执行流水线。
    [0045]
    显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
    转载请注明原文地址:https://tc.8miu.com/read-4587.html

    最新回复(0)