缓存辅助的向量寄存器堆的缓冲方法技术

技术编号:14945416 阅读:37 留言:0更新日期:2017-04-01 11:50
本发明专利技术公开一种缓存辅助的向量寄存器堆的缓冲方法,包括:对短生命周期变量进行标识;寄存器堆读过程,在流水线的译码阶段从VBUF中查找相应的寄存器id,若存在,则从VBUF中读取;若不存在,则从MVRF中读取,并判断是否有端口冲突,若有端口读冲突会暂停取指-译码的流水,则分两次从MVRF中读取;寄存器堆写过程,判断结果是否为SLV,若是SLV,则判断是否在bypass中被相关指令消费,如果未消费,写入到VBUF中;若不是SLV,则判断端口是否冲突,若冲突,则需要缓冲变量到VBUF;若无冲突,则直接写入MVRF。

【技术实现步骤摘要】

本专利技术涉及一种缓存辅助的向量寄存器堆的缓冲方法
技术介绍
寄存器缓冲,英文名buffer或cache,主要用于缓冲寄存器值数据来消除寄存器堆访问时的端口冲突及空间不足。如图1所示。该专利用于寄存器文件资源不可用(寄存器端口或空间不足)时,把数据缓冲到405寄存器缓存(registercache),该专利具体体现在写回算法上,主要实现如下及图1所示。图2主要描述了寄存器堆空间不足时缓存寄存器堆写入数据的操作方法,首先,在701步处理器会检查寄存器堆是否有空间及端口,如果有则把数据写入寄存器堆,再继续判断是否可以解锁寄存器缓冲(711步),如果可以解锁则写入(716步)。如果判断寄存器堆空间及端口不足,继续判断是否可以解锁寄存器缓冲(710步),如果可以解锁则写入(715步),接下来会等待寄存器堆空闲时写入(721步)。上面图3主要描述了寄存器堆访问带宽不足时缓存寄存器堆写入数据的操作方法,首先,在801步处理器会检查数据是否有效,如有效则解锁寄存器缓冲(805步),如无效,则判断是否有足够的寄存器堆写带宽,如果是,则把数据写入寄存器堆(815步),如带宽不足,则会继续810步。上面寄存器堆与缓冲中的数据为包含关系,主要减少了读操作。另外此专利并没有区分变量的类型。现有技术方案只考虑辅助缓冲用于寄存器端口及存储空间冲突解决的情况,未考虑减少寄存器堆能耗时,可以同时缓冲短生命周期变量的情况。此外,未考虑用作向量功能单元作用时,向量寄存器堆的缓冲及功耗开销。
技术实现思路
针对上述问题,本专利技术提供一种节约寄存器堆的访问功耗,减少端口的使用的缓存辅助的向量寄存器堆的缓冲方法。为达到上述目的,本专利技术缓存辅助的向量寄存器堆的缓冲方法,包括:对短生命周期变量进行标识;寄存器堆读过程,在流水线的译码阶段从VBUF中查找相应的寄存器id,若存在,则从VBUF中读取;若不存在,则从MVRF中读取,并判断是否有端口冲突,若有端口读冲突会暂停取指-译码的流水,则分两次从MVRF中读取;寄存器堆写过程,判断结果是否为SLV,若是SLV,则判断是否在bypass中被相关指令消费,如果未消费,写入到VBUF中;若不是SLV,则判断端口是否冲突,若冲突,则需要缓冲变量到VBUF;若无冲突,则直接写入MVRF。进一步地,向量寄存器缓冲VBUF失效时,同时无效2条冲突时的临时寄存器项,将所述临时寄存器项写入寄存器堆。本专利技术缓存辅助的向量寄存器堆的缓冲方法,同时存储短生命周期值SLV及端口冲突时的临时寄存器项,共享存储空间,有效利用寄存器缓冲的空间。寄存器堆及寄存器缓冲间为互斥关系,对寄存器缓冲访问有优先权,数据量唯一位置存储,存储开销小。当向量寄存器缓冲VBUF失效时,会同时无效掉2条冲突时的临时寄存器项,并将其写入寄存器堆,批量写入数据,可以减少对主寄存器访问次数。附图说明图1现有的寄存器堆缓冲技术;图2寄存器堆空间不足时缓存寄存器堆写入数据的操作方法;图3寄存器堆访问带宽不足时缓存寄存器堆写入数据的操作方法;图4是向量寄存器堆的缓冲结构;图5是向量寄存器缓冲的数据项格式;图6是读寄存器堆时的流水线状态图;图7是写寄存器堆时的流水线状态图;图8是短生命周期量SLV读写策略;图9是VBUF空间不足时的替换策略。具体实施方式下面结合附图对本专利技术做进一步的描述。说明:SLV—短生命周期变量;VBUF—向量寄存器堆数据缓冲;Bypass—数据旁路;MVRF—主向量寄存器堆。在对数据进行计算的过程中,为了减少寄存器堆的访问及降低寄存器堆的能耗开销,可以采用把一些临时变量缓冲到Buffer的方法。如短生命周期变量,生命周期只有几条指令,没有必要写回到寄存器堆,可以借助cache实现数据的缓冲,如下面代码段所示:上面代码中,寄存器vr6,vr1在第1行定义,第2行使用,第3行被重新定义,寄存器vr6,vr1的值没有必要写回寄存器堆,可以通过寄存器缓冲或bypass网络中获得,从而减少寄存器堆的访问功耗开销。短生命周期变量SLV,从第n次变量定义Dn到变量使用Un仅仅间隔数条指令,下一次n+1重新定义Dn+1,使用深度Ln,空闲周期Sn。Ln=Un-Dn,Sn=Dn+1-Un(1)当Ln较小(一般小于5)且在Un及Dn+1未使用过该变量,那么该变量实质上在Un使用后就消亡了,因此被称为短生命周期变量。本专利技术采用一种新的方法,利用VBUF缓存短生命周期变量和主寄存器堆端口共享结合起来,从而进一步减少寄存器堆访问开销及功耗。针对现有技术未考虑暂存短生命周期变量的问题,本专利技术提出了一种复合的寄存器buffer结构,用于节约寄存器堆的访问功耗,以及减少端口的使用。本专利技术充分考虑了短生命周期变量及MVRF端口冲突的情况,并把两者很好的结合在一起,共享VBUF存储的使用,如图4所示。1)正常访问:当数据通路中功能单元FU1,FU2,FU3使用端口数小于主寄存器堆MVRF的端口个数,通过MUX复用实现共享主寄存器堆MVRF端口。2)访问带宽冲突:当数据通路中功能单元FU1,FU2,FU3使用端口数大于主寄存器堆MVRF的端口个数,需要MVRF寄存器Buffer缓冲解决。3)短生命周期变量:对于没有必要写回主寄存器堆MVRF的变量,通过MVRF寄存器Buffer缓冲实现。3短生命周期变量的暂存:1)短生命周期变量通过编译器标识。2)对于深度1-3的临时变量通过流水线bypass使用后释放3)对对深度4-5的短什么周期变量,通过VBUF来缓冲。4VBUF(vectorregisterfilebuffer)项的格式:四项结构:Item(VR-id,value,type,valid),表示如图5所示:算法方面的实现,主要有:1)寄存器堆读策略,2)寄存器堆写策略3)短生命周期变量SLV的存储策略。1)寄存器堆读策略,如图6所示,主要说明:在流水线的译码阶段从VBUF中查找相应的寄存器id,如果存在就从VBUF中读取;如果不存在,则从MVRF中读取,并判断是否有端口冲突。如果有端口读冲突会暂停取指-译码的流水,则分两次从MVRF中读取。2)寄存器堆写策略,如图7所示,主要说明:在写回阶段判断结果是否为SLV,如果是SLV则写入到VBUF中。如果不是SLV,则判断端口是否冲突,如果冲突,则需要缓冲变量到VBUF。如果无冲突,则直接写入MVRF。3)短生命周期变量分配及释放策略,如图8所示,主要说明:在译码阶段检测SLV标示,并设置内部寄存器(map_slv)。在Execute阶段根据bypass判断SLV是否被消费了。在写回阶段,根据Map_slv的指示判断目的结果写入哪里:如果不是SLV变量则写回MVRF,如果是,则写一步判断是否本文档来自技高网...

【技术保护点】
一种缓存辅助的向量寄存器堆的缓冲方法,其特征在于,包括:对短生命周期变量进行标识;寄存器堆读过程,在流水线的译码阶段从VBUF中查找相应的寄存器id,若存在,则从VBUF中读取;若不存在,则从MVRF中读取,并判断是否有端口冲突,若有端口读冲突会暂停取指‑译码的流水,则分两次从MVRF中读取;寄存器堆写过程,判断结果是否为SLV,若是SLV,则判断是否在bypass中被相关指令消费,如果未消费,写入到VBUF中;若不是SLV,则判断端口是否冲突,若冲突,则需要缓冲变量到VBUF;若无冲突,则直接写入MVRF。

【技术特征摘要】
1.一种缓存辅助的向量寄存器堆的缓冲方法,其特征在于,包括:
对短生命周期变量进行标识;
寄存器堆读过程,在流水线的译码阶段从VBUF中查找相应的寄存器id,
若存在,则从VBUF中读取;
若不存在,则从MVRF中读取,并判断是否有端口冲突,
若有端口读冲突会暂停取指-译码的流水,则分两次从MVRF中读取;
寄存器堆写过程,判断结果是否为SLV,
若是SLV...

【专利技术属性】
技术研发人员:刘智国刘钰朱子元苏泳涛石晶林
申请(专利权)人:北京中科晶上科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1