一种加快芯片流水线处理的方法

文档序号:6547681阅读:217来源:国知局
一种加快芯片流水线处理的方法【专利摘要】本发明公开了一种加快芯片流水线处理的方法,本发明通过重命名机制,指令从IF级发射之后,进入重命名模块,对寄存器进行重命名,重命名之后的指令进入发射级,从寄存器中取出对应的操作数或者操作数的Tag,解决了WAW和WAR的数据冲突问题,应用于流水线芯片设计中,极大地提高了芯片流水线处理效率。【专利说明】一种加快芯片流水线处理的方法【
技术领域
】[0001]本发明涉及芯片设计领域,尤其涉及一种加快芯片流水线处理的方法。【
背景技术
】[0002]指令间的依赖关系是阻碍指令调度发挥作用,进而影响指令级并行的主要障碍。指令调度是现代优化编译器后端很重要的一个阶段,它能在一个基本块(basicblock,BB)里或者跨越基本块重排指令,使得程序关键路径上的指令执行时间尽可能短。有效的指令调度可以充分地利用处理器资源,提高指令级并行性(ILP)。指令之间的依赖关系是阻碍指令调度发挥作用的主要障碍。指令之间的依赖关系可分为3类:数据依赖、名字依赖和控制依赖。数据依赖又称流依赖,指令j数据依赖于指令i,指的是j直接或间接引用了指令i定义的结果。可知这是写后读(RAW)依赖。名字依赖指的是2个指令之间使用了相同的寄存器或主存单元,即是同一个名字,但是数据并没有沿着这个名字在2个指令间流动,名字依赖分为两种:反依赖和输出依赖。指令j反依赖于指令i是说j定义了一个名字,i引用了这个名字,即读后写(WAR)依赖。指令i和指令j输出依赖是说二者定义了同一个名字,即写后写(WAW)依赖。控制依赖揭示了一个一般指令和分支指令之间的关系,即分支指令是否发生控制转移影响了这个一般指令是否被执行到。【
发明内容】[0003]本发明的目的在于针对现有技术的不足,提供一种加快芯片流水线处理的方法。[0004]本发明的目的是通过以下技术方案来实现的,一种加快芯片流水线处理的方法,包括以下步骤:[0005](I)从IF级取指令时,先把源操作数寄存器对应的Tag标号从MapTableFIFO(队列)中相应的项中返回给指令,检查目的操作数寄存器Tag标号对应的MapTableFIFO中的项条目,将该项中的标号压入PTRQ队列;[0006]从FreeListFIFO队列中压出一个标号覆盖上述MapTableFIFO中的项条目;[0007]把被更换的MapTableFIFO中项条目中的寄存器名返回给指令;[0008](2)指令执行完后更新寄存器,重命名模块得到写回级中相关标志位已经置位后,标号从PTRQFIFO中压出,进入FreelistFIFO,重新参与重命名循环使用。[0009]本发明的有益效果:本发明通过重命名机制,指令从IF级发射之后,进入重命名模块,对寄存器进行重命名,重命名之后的指令进入发射级,从寄存器中取出对应的操作数或者操作数的Tag,解决了WAW和WAR的数据冲突问题,应用于流水线芯片设计中,极大地提高了芯片流水线处理效率。【专利附图】【附图说明】[0010]图1是寄存器重命名模块结构图;【具体实施方式】[0011]下面结合附图对本发明作进一步详细说明。[0012]如图1所示,整个单线程的重命名模块(Rename)由maptableFIFO和两个循环队列组成,两个循环队列为FreelistFIFO和PendingtargetreturnqueueFIFO(PTRQ队列)。[0013]本发明一种加快芯片流水线处理的方法,包括以下步骤:[0014](I)从IF级取指令时,先把源操作数寄存器对应的Tag标号从MapTableFIFO中相应的项中返回给指令,检查目的操作数寄存器Tag标号对应的MapTableFIFO中的项条目,将该项中的标号压入PTRQ队列;[0015]从FreeListFIFO队列中压出一个标号覆盖上述MapTableFIFO中的项条目;[0016]把被更换的MapTableFIFO中项条目中的寄存器名返回给指令;[0017]在这个过程之中,要注意FreeListFIFO和PTRQFIFO指针的控制。因为重命名是为了消除WAW,WAR的冲突,这就势必要保证相邻的写操作用的不是同一个寄存器,先读后写的操作,用的也不是同一个寄存器,这就需要读不改变寄存器的标号,而写则会改变寄存器的标号。但是真数据相关应保留,如RAW冲突,这就要求写后读的那个寄存器应当是之前写的那个。所以,每次只有指令的目的寄存器标号对应的MapTableFIFO项中的标号改变,且是应当先压入新的标号,然后再把新的标号返回给指令。[0018](2)指令执行完后更新寄存器,重命名模块(Rename)得到写回级(WB)中相关标志位已经置位后,标号从PTRQFIFO中压出,进入FreelistFIFO,重新参与重命名循环使用。[0019]MaptableFIFO有16个项,分别表不16个结构寄存器ARF(ArchitecturalRegisterFile),每个项对应一个5bit数据,5bit数据用来表示24个寄存器(包括16个结构寄存器+8个重命名寄存器)。[0020]FreelistFIFO包含空闲的寄存器标号,这些标号所指示的寄存器可以进行重命名;程序初始的时候,由于没有发生过重命名,maptableFIFO中的16个项分别对应24个寄存器中的0-15号寄存器,而FreelistFIFO中对应16-23号寄存器。[0021]PendingtargetreturnqueueFIFO包含的是已经用作重命名但是又需要再次被重命名的寄存器,比如:[0022]Rl—R2+R3[0023]Rl—R4+R5[0024]该程序段中,I指令进入重命名模块的时候分配完Rl后,即使用另一个重命名寄存器R16,2指令进入重命名模块的时候再次分配R17作为重命名寄存器,则在pendingtargetreturnqueue队列当中保存的就是R16,而在Rl对应的maptableFIFO中保存的是R17,解决了WAW的数据冲突问题,WAR的数据冲突也可以用本发明发明来解决,本发明应用于流水线芯片设计中,可以提高芯片流水线处理效率。【权利要求】1.一种加快芯片流水线处理的方法,其特征在于,包括以下步骤:(1)从IF级取指令时,先把源操作数寄存器对应的Tag标号从MapTableFIFO中相应的项中返回给指令,检查目的操作数寄存器Tag标号对应的MapTableFIFO中的项条目,将该项中的标号压入PTRQ队列;从FreeListFIFO队列中压出一个标号覆盖上述MapTableFIFO中的项条目;把被更换的MapTableFIFO中项条目中的寄存器名返回给指令;(2)指令执行完后更新寄存器,重命名模块得到写回级中相关标志位已经置位后,标号从PTRQFIFO中压出,进入FreelistFIFO,重新参与重命名循环使用。【文档编号】G06F9/38GK104035749SQ201410226058【公开日】2014年9月10日申请日期:2014年5月26日优先权日:2014年5月26日【发明者】沈海斌,张伟林申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1