一种实现处理器预执行的方法及相应的装置制造方法及图纸

技术编号:6546298 阅读:200 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种实现处理器预执行的方法及相应的装置,方法包括:处理器在正常执行指令期间,当检测到发生长延时缓存失效时备份寄存器;在预执行指令期间,对预执行的每一指令标记预执行结果的状态;对引发长延时缓存失效的Load指令进行值预测,并使用经该值预测的预测值预执行与该Load指令数据相关的后续指令;按程序顺序将预执行结果保存在指令复用队列IRQ,并根据标记的状态设置相应的标志。本发明专利技术结合值预测和指令复用两种技术,充分发挥了各自的优势,在提高处理器性能的同时降低其预执行的能耗开销,因此提高处理器的能效性。

【技术实现步骤摘要】

本专利技术涉及现代微处理器及其应用系统的设计,尤其涉及实现现代处理器预执行的方法及相应的装置。
技术介绍
随着集成电路制造工艺的飞速发展,处理器设计将面临日趋严重的功耗、线延迟和设计复杂度等挑战,按序执行处理器凭借其在能耗、面积以及复杂度等方面的优势,获得了广泛的应用。但是,按序执行流水线在遇到缓存失效等事件时将被迫停顿,从而限制了处理器的性能,尤其是单线程性能。随着处理器与存储器之间速度差距的日益扩大,访存延时逐渐成为制约处理器单线程性能的主要瓶颈。预执行技术是一种典型的对访存延时包容的技术。当发生长延时缓存失效时,预执行技术利用处理器等待访存完成的空闲周期预先执行发生长延时缓存失效的访存指令 (以下简称失效访存指令)的后续指令,通过将多个访存延时相重叠来提升访存性能。根据预执行过程中指令提交方式的不同,预执行技术可主要分为以下两类第一类为非阻塞执行技术,即在预执行过程中,与失效访存指令数据无关的指令能够继续执行并提交,与失效访存指令数据相关的指令则退出流水线并被单独保存,等到访存完成后再重新进入流水线执行并提交。由于要实现指令的乱序提交,该类技术需要处理器支持访存指令重执行、寄存器相关和存储相关跟踪等机制以确保程序执行的正确性, 这大大增加了设计复杂度和硬件开销。第二类技术以Rimahead(意指预先运行)技术为典型代表,即在预执行过程中, 与失效访存指令数据无关的指令能够继续执行,并提前发起存储访问或产生有效的计算结果,与失效访存指令数据相关的指令则直接被移出流水线;所有预执行的指令均不提交。当引发预执行的失效访存指令完成访存后,处理器退出预执行,并从该失效访存指令开始重新执行并提交所有预执行指令。可以看出,该类技术不需要改变原处理器的执行与提交机制,设计复杂度较低,在能耗和硬件开销方面更有优势。从以上两类技术的预执行过程可以看出,与失效访存指令数据相关的后续指令因操作数未就绪无法预先执行。在链表、树等链式数据结构较多的程序中存在大量的指针型 Load指令,该类Load指令的读数据被用于计算后续Load指令的访存地址。若失效访存指令为指针型Load指令,预执行技术无法对与其数据相关的失效访存指令提前发起存储访问,影响了对处理器性能的优化效果。已有研究通过值预测技术来提前获得发生缓存失效的指针型Load指令的读数据,以预先执行与该Load指令数据相关的后续指令,特别是其中的长延时访存指令,从而进一步提高处理器的性能。常见的针对指针型Load指令的值预测方法包括Mride和 AVD(Address-Value Delta)等方法。通常,对链式数据结构最频繁的操作是遍历各节点。 ^ride预测方法主要面向许多链式数据结构节点大小相同且地址连续的情景,对相邻节点的起始地址之差是常值时获取节点地址的指针型Load指令进行值预测;AVD预测方法则主要面向节点大小不同或地址不连续的情况,它对访存地址与读数据之差为常值时获取节点地址的指针型Load指令进行值预测。可以看出,两种值预测方法具有一定的互补性。已有研究在Runahead技术的基础上提出了基于AVD值预测的Runahead-AVD方法,在预执行过程中对失效访存Load指令进行值预测,并使用预测值执行与该Load指令数据相关的后续指令,以对其中的长延时访存指令提前发起存储访问。由于Rimahead方法在预执行过程中不提交指令,故即使值预测错误,也不影响程序执行的正确性。因此, Rimahead-AVD方法不需要错误恢复机制,从而能够以较低的复杂度进一步提高处理器性能。对于Runahead方法以及基于Runahead的Runahead-AVD方法,在退出预执行后, 需重新执行所有预执行指令,包括已产生有效结果的指令,造成了性能和能耗的浪费。已有研究在Runahead中结合指令复用技术来解决该问题,即处理器在预执行过程中保存产生的有效结果,并在退出预执行后复用保存的有效结果,以避免重复执行已正确完成的指令, 从而降低预执行的能耗开销。由上述分析可以看出,值预测技术侧重于提高预执行的性能,而复用技术则侧重于降低预执行的能耗开销。现有的预执行方法均未在预执行中同时结合两种技术,而仅在Rimahead技术中结合两种技术中的一种,因此未能充分发挥两者的优势。
技术实现思路
本专利技术所要解决的技术问题是提供实现处理器预执行的方法及相应的装置,能够进一步取得处理器的能效优化效果。为了解决上述技术问题,本专利技术提供了一种实现处理器预执行的方法,其特征在于,包括处理器执行的以下步骤在正常执行指令期间,当检测到发生长延时缓存失效时备份寄存器;在预执行指令期间,对预执行的每一指令标记预执行结果的状态;对引发长延时缓存失效的Load指令进行值预测,并使用经该值预测的预测值预执行与该Load指令数据相关的后续指令;按程序顺序将预执行结果保存在指令复用队列IRQ,并根据标记的状态设置相应的标志。进一步地,当检测到发生长延时缓存失效时备份寄存器,具体包括当检测到发生长延时缓存失效时,建立检查点,并为寄存器配置状态标志域;使用建立的检查点备份寄存器堆中的寄存器。进一步地,在预执行指令期间对预执行的指令标记的预执行结果的状态,包括通过状态标志域标记的无效状态、预测可复用状态、预测不可复用状态以及有效状态中的一种。进一步地,在预执行指令期间对引发长延时缓存失效的Load指令进行值预测,并使用经该值预测的预测值预执行与Load指令数据相关的后续指令,具体包括对于引发所述预执行的Load指令且成功地从Load值预测器LVP获得预测值, 则将该预测值作为值预测结果写入目标寄存器,并标记该目标寄存器为预测可复用状态, 以及将使用该预测值对与该Load指令数据相关的指令预执行的结果标记为预测可复用状态;若引发预执行的不是Load指令,或者是Load指令但未成功地从LVP获得预测值,则标记目标寄存器为无效状态; 对于在预执行期间引发长延时缓存失效的Load指令,通过查询LVP预测该Load 指令的读数据,作为值预测结果写入目标寄存器,并标记该目标寄存器为预测不可复用状态,以及将使用该值预测结果对与该Load指令数据相关的指令预执行的结果标记为预测不可复用状态。进一步地,通过LVP对符合Stride模式和/或AVD模式的引发长延时缓存失效的 Load指令的读数据进行捕获和值预测,LVP包括多个表项,每一表项包括标签域,用于通过保存指令地址的高位值标识Load指令;表项有效标识域,用于标识本表项是否有效;最近读值域、读值差域和预测阶段标识域用于实现Stride模式的值预测,其中最近读值域,用于记录Load指令最近一次执行的读数据;读值差域,用于记录Load指令相邻两次执行的读数据之差;预测阶段标识域,用于标识Stride模式的值预测当前是处于训练阶段或预测阶段AVD域、可信度域用于实现AVD模式的值预测,其中AVD域,用于记录Load指令最近一次执行的访存地址与读数据之差;可信度域,用于表示AVD模式的值预测的可信度值,当该可信度值高于可信度阈值上,进行AVD模式的值预测。进一步地,通过LVP对符合Stride模式和/或AVD模式的引发长延时缓存失效的 Load指令的读数据进行捕获和值预测,具体包括本文档来自技高网
...

【技术保护点】
1.一种实现处理器预执行的方法,其特征在于,包括处理器执行的以下步骤:在正常执行指令期间,当检测到发生长延时缓存失效时备份寄存器;在预执行指令期间,对预执行的每一指令标记预执行结果的状态;对引发所述长延时缓存失效的Load指令进行值预测,并使用经所述值预测的预测值预执行与所述Load指令数据相关的后续指令;按程序顺序将所述预执行结果保存在指令复用队列IRQ,并根据标记的所述状态设置相应的标志。

【技术特征摘要】
1.一种实现处理器预执行的方法,其特征在于,包括处理器执行的以下步骤 在正常执行指令期间,当检测到发生长延时缓存失效时备份寄存器;在预执行指令期间,对预执行的每一指令标记预执行结果的状态;对引发所述长延时缓存失效的Load指令进行值预测,并使用经所述值预测的预测值预执行与所述Load指令数据相关的后续指令;按程序顺序将所述预执行结果保存在指令复用队列IRQ,并根据标记的所述状态设置相应的标志。2.按照权利要求1所述的方法,其特征在于,所述当检测到发生长延时缓存失效时备份寄存器,具体包括当检测到发生所述长延时缓存失效时,建立检查点,并为所述寄存器配置状态标志域;使用所述检查点备份寄存器堆中的所述寄存器。3.按照权利要求2所述的方法,其特征在于,在预执行指令期间对预执行的指令标记的所述预执行结果的状态,包括通过所述状态标志域标记的无效状态、预测可复用状态、预测不可复用状态以及有效状态中的一种。4.按照权利要求3所述的方法,其特征在于,在预执行指令期间对引发所述长延时缓存失效的Load指令进行值预测,并使用经所述值预测的预测值预执行与所述Load指令数据相关的后续指令,具体包括对于引发所述预执行的Load指令且成功地从Load值预测器LVP获得预测值,则将该预测值作为值预测结果写入目标寄存器,并标记该目标寄存器为所述预测可复用状态,以及将使用该值预测结果对与该Load指令数据相关的指令预执行的结果标记为所述预测可复用状态;若引发所述预执行的不是所述Load指令,或者是所述Load指令但未成功地从所述LVP获得预测值,则标记所述目标寄存器为所述无效状态;对于在所述预执行期间引发所述长延时缓存失效的Load指令,通过查询所述LVP预测该Load指令的读数据,作为值预测结果写入目标寄存器,并标记该目标寄存器为所述预测不可复用状态,以及将使用该值预测结果对与该Load指令数据相关的指令预执行的结果标记为所述预测不可复用状态。5.按照权利要求4所述的方法,其特征在于,通过所述LVP对符合Mride模式和/或 AVD模式的引发所述长延时缓存失效的Load指令的读数据进行捕获和值预测,所述LVP包括多个表项,每一表项包括标签域,用于通过保存指令地址的高位值标识所述Load指令; 表项有效标识域,用于标识本表项是否有效;最近读值域、读值差域和预测阶段标识域用于实现所述^ride模式的值预测,其中 最近读值域,用于记录所述Load指令最近一次执行的读数据; 读值差域,用于记录所述Load指令相邻两次执行的读数据之差; 预测阶段标识域,用于标识所述Mride模式的值预测当前是处于训练阶段或预测阶段;AVD域、可信度域用于实现所述AVD模式的值预测,其中 AVD域,用于记录所述Load指令最近一次执行的访存地址与读数据之差; 可信度域,用于表示所述AVD模式的值预测的可信度值,当该可信度值高于可信度阈值上,进行所述AVD模式的值预测。6.按照权利要求5所述的方法,其特征在于,通过所述LVP对符合Mride模式和/或 AVD模式的引发所述长延时缓存失效的Load指令的读数据进行捕获和值预测,具体包括对于所述引发所述长延时缓存失效的Load指令,用该Load指令的地址查询所述LVP 的标签域,若有命中表项,且所述预测阶段标识域标识出是处于所述预测阶段,则用所述最近读值域的值与所述读值差域的值之和作为预测值读取;若所述预测阶段标识域标识出是处于所述训练阶段,则查询所述可信度域的可信度值,若该可信度值大于所述可信度阈值, 则用该Load指令的访存地址与所述AVD域的值之和作为预测值读取;若所述可信度值不大于所述可信度阈值,则表明该Load指令不可值预测;若所述查询没有未命中表项,则为该 Load指令在所述LVP创建新的表项,并初始化所述LVP的各域;对于成功读取所述预测值的所述Load指令,用所述预测值更新相应的目标寄存器,并且,对于所述引发预执行的Load指令标记该目标寄存器为所述预测可复用状态,对于所述在预执行期间引发所述长延时缓存失效的Load指令标记该目标寄存器为所述预测不可复用状态;对于不可值预测的所述Load指令以及所述查询没有命中表项,则标记相应的目标寄存器为所述无效状态;在所述Load指令获取真实的读数据时,使用该Load指令的地址查询所述LVP的标签域,若...

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

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

1