推测执行处理器中分支指令与分支预测功能的验证方法技术

技术编号:17265024 阅读:45 留言:0更新日期:2018-02-14 12:22
本发明专利技术提出一种推测执行处理器中分支指令与分支预测功能的验证方法,包括:S1:初始化驱动及监控信息;S2:处理器是否发起取指申请,若是,执行S3,否则,执行S2;S3:清空取指流水线信号是否有效,若是,终止本次操作,返回S2,否则,执行S4;S4:停顿取指流水线信号是否有效,如果是,执行S4,否则,执行S5;S5:模拟处理器的取指缓存逻辑,将获取的随机指令驱动到处理器的取指逻辑接口上,以消除指令与程序计数器之间的耦合关系,将对应的取指信号设置为有效状态;S6:在取指信号有效时,将指令信息打包并发送。本发明专利技术对推测执行处理器的分支指令及分支预测功能进行充分验证,大大提升随机指令的利用率与测试效率。

Conjecture the method of verification of branch instruction and branch prediction function in processor

The invention provides a method for branch prediction and speculative execution of branch instructions in the processor function verification method, including: S1: initialization driving and monitoring information; S2: if the processor initiated fetch request, if the implementation of S3, otherwise, S2; S3: empty the fetch pipeline signal is valid, if the termination of this operation, return S2, otherwise, S4; S4: a fetch pipeline is valid, if the signal is, the implementation of S4, otherwise, S5; S5: fetch cache logic simulation processor, random access instruction will drive to fetch logic interface on the processor, in order to eliminate the coupling relationship between instructions and procedures counter, the corresponding fetch signal into a valid state; S6: in the fetch signal effectively, the information package and send instructions. The invention fully verifies the branch instruction and branch prediction function of the execution processor, and greatly improves the utilization and test efficiency of the random instruction.

【技术实现步骤摘要】
推测执行处理器中分支指令与分支预测功能的验证方法
本专利技术涉及处理器分支预测
,特别涉及一种推测执行处理器中分支指令与分支预测功能的验证方法。
技术介绍
分支预测可以左右处理器的性能,一个准确度高的分支预测器是提高处理器性能的关键部件。因此,对于推测执行处理器,分支指令以及分支预测功能的验证也越来越重要。在现有技术下,分支指令以及分支预测功能的验证工作主要是在处理器级的验证环境中进行的。处理器验证环境中主要包含待测处理器、参考模型和计分板。在处理器验证环境中,指令与数据存储在同一个存储器中,处理器根据程序计数器去存储器中取到对应的指令,然后供处理器执行。推测执行处理器指令的执行过程可分为取指(fetch)、译码(decode)、发射(issue)、执行(excute)、写回(write_back)和提交(commit)六个步骤。首先,处理器根据程序计数器通过缓存单元从存储器中获取将要执行的指令,将该指令被传递到译码阶段。当处理器在译码阶段翻译到该指令为分支类指令时,首先会根据分支预测算法来预测分支是否发生,然后根据预测结果的地址,通过缓存单元去存储器中预取指令。该分支指令之后顺次进入发射、执行与写回阶段,并在写回阶段校验该分支指令在译码阶段的预测结果是否正确。如果分支预测正确,则继续执行;如果分支预测错误,则需要将错误预取到的指令清空,并去正确的地址重新取指。因此,推测执行处理器在取指阶段总是根据自身猜测的结果去取指令,在指令的写回阶段对指令进行检查与纠正,以保证处理器最终按正确的程序流执行指令。而在处理器验证环境中,由于参考模型是抽象建模,其并不具备分支预测的功能。所以参考模型会根据程序流中的指令逐条执行,不会有分支预测相关的操作,从而也避免了分支预测对程序流的影响。处理器验证环境执行的测试程序可分为定向测试程序与随机测试程序。定向测试程序是由验证工程师使用较高级编程语言编写,然后经过编译器和汇编器的编译与链接,形成处理器可执行的二进制代码;随机测试程序则是由随机指令生成器直接生成的可执行的二进制代码。在验证过程中,无论是定向测试程序还是随机测试程序,当存储器中的指令与数据确定后,程序流也即确定下来。处理器验证环境中的待测处理器与参考模型同时执行相同的程序,在每笔指令完成提交阶段后,根据提交指令的指令地址以及提交后处理器的状态,可判断指令以及指令流是否被正确处理,从而验证分支指令和分支预测功能是否正确。现有的分支以及分支预测功能相关的验证激励主要来自于定向测试程序与随机测试程序两种方式。由于定向测试程序难以达到验证工作的快速收敛,且容易受验证工程师固有的思维方式影响,比较容易发生功能点漏测的现象。所以,随机测试成了分支以及分支预测功能验证的主要手段。现有的技术首先通过随机指令生成器生成一段随机测试程序,之后将随机测试程序放入存储器的连续地址空间中。即随机测试程序从程序起始地址开始,每个地址填充一条指令,地址要与指令一一对应。处理器通过缓存单元去存储器中取指、执行,验证平台框架如图1所示,其中,随机程序同时被顺序初始化到虚拟存储器(virtual_mem)的参考存储器(ref_mem)和待测设计存储器(dut_mem),然后参考模型(ref_core)与待测处理器(core)分别去对应的存储器(mem)中取随机指令。这种方法存在以下问题。第一,随机测试程序并不是顺序执行的,当随机程序中存在较多的分支指令,随机测试程序会在存储器中跳跃执行,导致大量随机指令没有被执行到,随机指令的利用率较低。第二,随机指令按连续地址保存在存储器中,由于存在分支指令,当分支指令向前跳转时,测试程序会形成死循环,导致随机测试不充分。另一种随机测试程序生成技术是,首先单独启动参考模型,参考模型去存储器中取指,如果在存储器中该地址不存在指令,则由随机指令发生器产生一条随机的二进制指令,并填充到程序计数器对应的存储器地址中,供待测处理器之后使用;如果存储器中该地址已经存在指令,则参考模型可直接去获取该指令。即随机指令生成器只根据程序流,填充部分地址空间,剩余未填充指令的地址空间全部做填0处理。参考模型每执行完一条指令,将运行结果保存起来。之后启动待测处理器,处理器读取存储器中预存的指令,执行随机测试程序,然后将指令执行结果与之前参考模型的执行结果进行比对。验证平台框架如图2所示,其中,程序由随机指令生成器指令代理(insn_agent)生成,当虚拟存储器(virtual_mem)中没有指令地址(PC)对应的指令时,需要从指令代理(insn_agent)随机出一条指令,同时放入参考存储器(ref_mem)和待测设计存储器(dut_mem)中。通过这种技术,可以解决随机指令利用率低的问题;但由于分支指令向前跳转依旧会产生死循环,导致了随机分支指令仍有测试不充分的问题存在。同时,这种方法还引入了其他新的问题:第一、由于参考模型与待测处理器不是同步执行,参考模型无法获取外部中断等实时事件,导致参考模型与待测处理器两者的指令流将会发生不匹配的情况,会引起仿真失败。第二、由于在现有技术中,指令与数据处在同一个存储器中,如果在随机过程中,可能会发生存储器访问指令修改其他已经生成的随机指令,引起随机指令丢失的情况。因此参考模型与待测处理器的执行结果就会不同,从而无法正常对待测处理器进行验证。综上所述,上述两种方案都存在一定的问题,无法同时解决随机指令利用率低下与随机测试不充分的问题。
技术实现思路
本专利技术旨在至少解决上述技术问题之一。为此,本专利技术的目的在于提出一种推测执行处理器中分支指令与分支预测功能的验证方法,该方法能够对推测执行处理器的分支指令及分支预测功能进行充分验证,大大提升了随机指令的利用率与测试效率。为了实现上述目的,本专利技术的实施例提出了一种推测执行处理器中分支指令与分支预测功能的验证方法,包括:待测处理器取指逻辑代理过程,包括以下步骤:S1:初始化取指逻辑代理下的驱动及监控信息;S2:判断所述待测处理器是否发起取指申请,如果是,则执行步骤S3,否则,继续执行所述S2,直至所述待测处理器发起取指申请;S3:判断所述待测处理器清空取指流水线信号是否有效,如果有效,则终止本次操作,并返回执行所述S2,以等待下一次取指申请,否则,执行步骤S4;S4:判断所述待测处理器停顿取指流水线信号是否有效,如果有效,则继续执行所述S4,直至所述停顿取指流水线信号无效,否则,执行步骤S5;S5:从所述取指逻辑代理中获取随机指令,模拟所述待测处理器的取指缓存逻辑,并将获取到的所述随机指令直接驱动到所述待测处理器的取指逻辑接口上,以消除指令与程序计数器之间的耦合关系,并将取指逻辑接口对应的取指信号设置为有效状态;S6:所述取指逻辑代理下的监控模块监控所述取指逻辑接口对应的取指信号,并在所述取指信号有效时,将对应的指令信息打包,并发送出所述取指逻辑代理。另外,根据本专利技术上述实施例的推测执行处理器中分支指令与分支预测功能的验证方法还可以具有如下附加的技术特征:在一些示例中,还包括:添加用于缓存指令的UVM(UniversalVerificationMethodology,通用验证方法学)功能部件的过程,包括以下步骤:S10:初始化指令缓存队列;S2本文档来自技高网
...
推测执行处理器中分支指令与分支预测功能的验证方法

【技术保护点】
一种推测执行处理器中分支指令与分支预测功能的验证方法,其特征在于,包括:待测处理器取指逻辑代理过程,包括以下步骤:S1:初始化取指逻辑代理下的驱动及监控信息;S2:判断所述待测处理器是否发起取指申请,如果是,则执行步骤S3,否则,继续执行所述S2,直至所述待测处理器发起取指申请;S3:判断所述待测处理器清空取指流水线信号是否有效,如果有效,则终止本次操作,并返回执行所述S2,以等待下一次取指申请,否则,执行步骤S4;S4:判断所述待测处理器停顿取指流水线信号是否有效,如果有效,则继续执行所述S4,直至所述停顿取指流水线信号无效,否则,执行步骤S5;S5:从所述取指逻辑代理中获取随机指令,模拟所述待测处理器的取指缓存逻辑,并将获取到的所述随机指令直接驱动到所述待测处理器的取指逻辑接口上,以消除指令与程序计数器之间的耦合关系,并将取指逻辑接口对应的取指信号设置为有效状态;S6:所述取指逻辑代理下的监控模块监控所述取指逻辑接口对应的取指信号,并在所述取指信号有效时,将对应的指令信息打包,并发送出所述取指逻辑代理。

【技术特征摘要】
1.一种推测执行处理器中分支指令与分支预测功能的验证方法,其特征在于,包括:待测处理器取指逻辑代理过程,包括以下步骤:S1:初始化取指逻辑代理下的驱动及监控信息;S2:判断所述待测处理器是否发起取指申请,如果是,则执行步骤S3,否则,继续执行所述S2,直至所述待测处理器发起取指申请;S3:判断所述待测处理器清空取指流水线信号是否有效,如果有效,则终止本次操作,并返回执行所述S2,以等待下一次取指申请,否则,执行步骤S4;S4:判断所述待测处理器停顿取指流水线信号是否有效,如果有效,则继续执行所述S4,直至所述停顿取指流水线信号无效,否则,执行步骤S5;S5:从所述取指逻辑代理中获取随机指令,模拟所述待测处理器的取指缓存逻辑,并将获取到的所述随机指令直接驱动到所述待测处理器的取指逻辑接口上,以消除指令与程序计数器之间的耦合关系,并将取指逻辑接口对应的取指信号设置为有效状态;S6:所述取指逻辑代理下的监控模块监控所述取指逻辑接口对应的取指信号,并在所述取指信号有效时,将对应的指令信息打包,并发送出所述取指逻辑代理。2.根据权利要求1所述的推测执行处理器中分支指令与分支预测功能的验证方法,还包括:添加用于缓存指令的UVM功能部件的过程,包括以下步骤:S10:初始化指令缓存队列;S20:检测接收待测处理器取指逻辑代理下的监控模块是否发出打包的指令信息,如果是,则执行步骤S30,否则执行步骤S40;S30:将所述指令信息存放入先进先出队列fifo中;S40:检测待测处理器是否提交指令,如果是,则执行步骤S50,否则执行步骤S60;S50:根据所述待测处理器一次提交的指令数,从所述先进先出队列fifo中取出与所述指令数相同数量的指令发送给参考模型;S60:判断是否存在清空取指流水线的操作,如果存在,则执行步骤S70,否则,返回执行步骤S20;S70:判断本次清空取指流水线的操作是否为分支预测错误导致的,如果是,则执行步骤S80,否则执行步骤S90;S80:将所述先进先出队列fifo部分清空,并返回执行所述S...

【专利技术属性】
技术研发人员:商家玮王梦觉
申请(专利权)人:北京国睿中数科技股份有限公司
类型:发明
国别省市:北京,11

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

1