一种实现读指令执行的方法及装置制造方法及图纸

技术编号:7192242 阅读:283 留言:0更新日期:2012-04-11 18:40
本发明专利技术披露了实现读指令执行的方法及装置,其中方法包括:在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。本发明专利技术可实现大范围的推测式访存数据前递来减少读指令的执行延迟,从而可有效地提高处理器读指令执行的性能。

【技术实现步骤摘要】

本专利技术涉及现代微处理器及其应用系统的设计,尤其涉及超标量处理器实现读指令执行的方法及装置
技术介绍
随着集成电路制造工艺的飞速发展,处理器与存储器之间的性能差距逐渐拉大, 从而使得访存延迟,尤其是读指令访存延迟,逐渐成为现代超标量处理器性能提升的主要瓶颈。在传统超标量处理器中,通过访存指令之间数据前递O^rwarding)完成的读指令仅占所有读指令的15%,通常它们访存所占用的时间在一个处理器时钟周期内;其它读指令均通过访问一级(最靠近处理器的高速数据缓存级)或者更低一级高速数据缓存来得到所需数据。这些高速数据缓存的访问时间均会超过一个处理器时钟周期,而且随着线延迟的不断增加,这些高速数据缓存的访问时间将进一步增加。现有的读指令重执行技术(LRE,Load Re-Execution)是一种典型的针对读指令队列(Load Queue)的优化技术,它消除了读指令队列的相联查找逻辑所面临的麻烦。该技术完全依靠读指令在按序提交前的重执行来保证单处理器和多处理器的存储顺序要求,因此只需要使用简单的先进先出队列(FIFO)保存读指令的相关信息。读指令的这两次执行分别称为预读(premature load)和重读(r印lay load)。当两次执行结果相同时,存储相关被正确地保持;否则意味着发生了存储顺序违例或存储同一性违例,需要采取恢复措施。该技术将复杂度从流水线中的时序关键部件转移到流水线后端,故解决了复杂度处于流水线中时序关键部件所面临的诸多问题。过多的读指令重执行会带来严重的性能损失。通过基于写指令序列Bloom过滤器(SSBF,Store Sequence Bloom Filter)的读指令重执行过滤技术,可以有效地降低需要重新执行的Load指令数目。该技术通过SSBF追踪所有最近提交(commit)的写指令序列号(SSN,Store Sequence Number,亦可称写指令顺序标识)来判断读指令是否需要重执行,亦即当执行一条读指令时,通过访问SSBF获取最近提交的具有与该读指令相同访存地址的SSN,记为SSNnvul,当提交该读指令时,该读指令将再次访问SSBF并得到SSNfilter, 并判断SSNmml是否小于SSNfilter,如果不小于,则说明该读指令执行时得到的数据不正确,需要重新执行读指令。读指令重执行的关键在于,在读指令的两次执行中,重执行将保证该指令执行的正确性,因此第一次执行完全可以进行推测式或者预测式执行,甚至不执行,从而为优化读指令执行阶段的性能同时简化实现结构带来了可能。由此,为了进一步提高读指令的执行性能,需要提供一种通过推测式的大范围访存数据前递实现读指令执行的方法及装置,使得读指令执行性能得到优化及结构得到简化
技术实现思路
本专利技术所要解决的技术问题是提供一种实现读指令执行的方法及装置,能够实现读指令执行性能的优化。为了解决上述技术问题,本专利技术提供了一种实现读指令执行的方法,其特征在于, 包括在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。进一步地,该方法还包括在写指令进入过滤流水级时,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。进一步地,多路组相联的活跃写指令窗口的组内相应的路记录的所述写指令的信息至少包含写指令顺序标识、地址标签以及写数据;多路组相联的写指令序列Bloom过滤器的组内相应的路记录的写指令的信息至少包含写指令顺序标识及地址标签。进一步地,在写指令的执行阶段之前还包括为每个写指令分配一个计数器,作为写指令唯一的顺序标识;当写指令进入指令重命名流水级时,将相应的计数器当前的计数值赋值给该写指令的写指令顺序标识,并将该计数器加一单位增量。进一步地,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照写指令的访存地址访问活跃写指令窗口相应的组,并将该写指令的写指令顺序标识、地址标签及写数据写入该组相应路的表项中,同时将活跃写指令窗口的组内所有表项中写指令顺序标识最小的记录表项替换出。进一步地,采用多路组相联的写指令序列Bloom过滤器中相应的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出,具体包括按照写指令的访存地址访问多路组相联的写指令序列Bloom过滤器相应的组,并将该写指令的写指令顺序标识及地址标签写入该组相应路的表项中,同时将多路组相联的写指令序列Bloom过滤器的组内所有表项中写指令顺序标识最小的记录表项替换出。进一步地,该方法还包括在读指令的执行阶段,通过访问活跃写指令窗口和/或多路组相联的写指令序列 Bloom过滤器获得相应写指令前递的数据。进一步地,通过访问所述活跃写指令窗口和/或多路组相联的写指令序列Bloom 过滤器获得相应写指令前递的数据,具体包括根据读指令的访存地址索引到所述活跃写指令窗口对应的组,并通过该访存地址与该组中每一表项的地址标签比较,若判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录;若判断没有命中路记录,则通过该访存地址访问到所述多路组相联的写指令序列Bloom过滤器中对应的组,并将该访存地址与该组中每一路记录的地址标签比较,如判断有多个命中路记录,则选取命中项中写指令顺序标识最大对应的路记录; 将选取的路记录中的写数据作为前递数据返回。进一步地,该方法还包括在读指令进入过滤流水级时,通过活跃写指令窗口和多路组相联的写指令序列 Bloom过滤器过滤读指令的重执行。进一步地,通过活跃写指令窗口和多路组相联的写指令序列Bloom过滤器过滤读指令的重执行,具体包括在读指令的执行阶段,将选取的路记录中所述写指令顺序标识作为前递写指令顺序标识返回;在读指令进入过滤流水级并访问多路组相联的写指令序列Bloom过滤器时,通过该读指令的访问地址索引该写指令序列Bloom过滤器对应的组,并通过该访存地址与该组中每一路记录的地址标签比较,若判断有多个命中路记录,则选取命中路记录中最大的写指令顺序标识作为所述读指令的过滤写指令顺序标识,若判断没有命中路记录,则返回该写指令序列Bloom过滤器的组内所有路记录中最大的写指令顺序标识作为读指令的过滤写指令顺序标识;比较该读指令的前递写指令顺序标识是否等于过滤写指令顺序标识,如果不相等则重执行该读指令。进一步地,该方法还包括将重执行读指令访问一级高速数据缓存得到的数据与执行读指令得到的数据比较,如果不相等,则重执行该读指令之后的数据相关指令;否则直接提交该读指令。为了解决上述技术问题,本专利技术提供了一种实现读指令执行的装置,除了包括指令队列和寄存器堆外,还包括活跃写指令窗口,其中指令队列和寄存器堆,用于通过加法器形成写指令的访存地址;活跃写指令窗口,用于在写指令的执行阶段于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路记录中最旧的写指令记录替换出。进一步地,该装置还包括多路组相联的写指令序列Bloom过滤器,用于在写指令进入过滤流水级时于多路组相联的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出ο进本文档来自技高网
...

【技术保护点】
1.一种实现读指令执行的方法,其特征在于,包括:在写指令的执行阶段,采用多路组相联的活跃写指令窗口的组内相应的路记录写指令的信息,并将该组的所有路中最旧的写指令记录替换出。

【技术特征摘要】

【专利技术属性】
技术研发人员:程旭张栚滈王箫音佟冬易江芳陆俊林王克义
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:11

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

1