CN112579373B - 用于分支预测器的验证方法、***、设备以及存储介质 - Google Patents

用于分支预测器的验证方法、***、设备以及存储介质 Download PDF

Info

Publication number
CN112579373B
CN112579373B CN202011441569.3A CN202011441569A CN112579373B CN 112579373 B CN112579373 B CN 112579373B CN 202011441569 A CN202011441569 A CN 202011441569A CN 112579373 B CN112579373 B CN 112579373B
Authority
CN
China
Prior art keywords
information
branch
feedback
instruction
branch predictor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011441569.3A
Other languages
English (en)
Other versions
CN112579373A (zh
Inventor
时兴
崔泽汉
薛大庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011441569.3A priority Critical patent/CN112579373B/zh
Publication of CN112579373A publication Critical patent/CN112579373A/zh
Application granted granted Critical
Publication of CN112579373B publication Critical patent/CN112579373B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2247Verification or detection of system hardware configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种用于分支预测器的验证方法、***、设备以及存储介质。该验证方法包括:接收待验证分支预测器产生的第一预测信息,接收复现测试程序执行过程中各条指令的动态轨迹的分支信息,根据第一预测信息和分支信息,产生第一反馈信息,根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能。该用于分支预测器的验证方法可以降低验证环境的复杂度要求,同时还提高了分支预测器性能验证的速度和效率。

Description

用于分支预测器的验证方法、***、设备以及存储介质
技术领域
本公开的实施例涉及一种用于分支预测器的验证方法、***、设备以及存储介质。
背景技术
为了提升处理器的运行速度,处理器中多采用分支预测器,以对执行程序的流程进行预测,来提高运算速度。在分支指令执行结束之前,分支预测器***哪一路分支指令将会执行,以提高处理器的指令流水线的性能。分支预测器作为处理器中的一个关键部件,它的预测准确性是关系到处理器性能的一个关键要素。
发明内容
本公开的实施例提供一种用于分支预测器的验证方法、***、设备以及存储介质。用于分支预测器的验证方法可以不但降低了验证环境的复杂度要求,同时提高了分支预测器性能验证的速度和效率。
本公开至少一个实施例提供了一种用于分支预测器的验证方法,该验证方法包括:接收待验证分支预测器产生的第一预测信息,其中,所述第一预测信息为所述待验证分支预测器响应于轨迹信息产生,且对应于由所述待验证分支预测器预测在所述目标指令之后将被执行的分支指令,其中,所述轨迹信息对应于测试程序的执行,所述测试程序包括关联的多条指令,所述多条指令包括多条分支指令;接收复现所述测试程序执行过程中各条指令的动态轨迹的分支信息;根据所述第一预测信息和所述分支信息,产生第一反馈信息;以及根据所述第一反馈信息生成第一性能验证报告,基于所述第一性能验证报告来验证所述待验证分支预测器的性能。
例如,本公开至少一实施例提供的验证方法还包括:接收参考分支预测器产生的第二预测信息,其中,所述第二预测信息为所述参考分支预测器响应于所述轨迹信息产生,且对应于由所述参考分支预测器预测在所述目标指令之后将被执行的分支指令;根据所述第二预测信息和所述分支信息,产生第二反馈信息;根据所述第二反馈信息生成第二性能验证报告;其中,基于所述第一性能验证报告来验证所述待验证分支预测器的性能,包括:比较所述第一性能验证报告和所述第二性能验证报告,以验证所述待验证分支预测器的性能。
例如,在本公开至少一实施例提供的验证方法中,所述第一预测信息包括所述将被执行的分支指令的执行路径,所述执行路径包括所述将被执行的分支指令的跳转类型以及目标地址,其中,所述跳转类型包括跳转或非跳转。
例如,在本公开至少一实施例提供的验证方法中,当所述第一预测信息包括跳转的分支指令或所述第一预测信息包括当前被执行的指令的地址需要跳转时,所述待验证分支预测器发送所述第一预测信息并根据所述第一预测信息设置下一条分支指令的目标地址;当所述第一预测信息包括非跳转的分支指令,所述待验证分支预测器发送所述第一预测信息并顺序获取下一条分支指令的地址。
例如,本公开至少一实施例提供的验证方法还包括:将所述第一反馈信息发送至所述待验证分支预测器,所述待验证分支预测器根据所述第一反馈信息进行对应操作。
例如,在本公开至少一实施例提供的验证方法中,所述第一反馈信息包括反馈错误信息或反馈正确信息,所述待验证分支预测器根据所述第一反馈信息进行对应操作,包括:使用第一反馈信息对所述待验证分支预测器进行训练;当所述第一反馈信息为所述反馈正确信息时,所述待验证分支预测器将对应于所述第一反馈信息的第一预测信息的相关数据释放;当所述第一反馈信为反馈错误信息时,所述待验证分支预测器将对应于所述第一反馈信息的第一预测信息以及所述第一预测信息之后产生的第一预测信息全部删除,并根据所述反馈错误信息,将所述第一预测信息修正,基于修正后的所述第一预测信息对下一条分支指令进行预测。
例如,在本公开至少一实施例提供的验证方法中,比较所述第一预测信息与所述分支信息,当所述将被执行的分支指令的执行路径相同时,产生反馈正确信息,当所述第一预测信息的所述将被执行的分支指令的执行路径,与所述分支信息中对应于所述将被执行的分支指令的动态轨迹的路径不同时,产生反馈错误信息。
例如,在本公开至少一实施例提供的验证方法中,所述反馈错误信息包括第一反馈错误信息和第二反馈错误信息,其中,所述跳转的分支指令包括非条件跳转的分支指令和间接跳转的分支指令,比较所述第一预测信息与所述分支信息,当所述第一预测信息中没有发现跳转的分支指令而在所述分支信息中出现非条件跳转的分支指令,或在所述第一预测信息中发现的分支指令的目标地址与所述分支信息中的目标地址不同时,产生所述第一反馈错误信息;当所述第一预测信息中发现的间接跳转的分支指令,而所述间接跳转的分支指令的目标地址与所述分支信息中的间接跳转的分支指令的目标地址不同,或所述第一预测信息中发现非条件跳转的分支指令,而所述非条件跳转的分支指令的跳转方向与分支信息中与所述发现的非条件跳转分支指令的跳转方向不同时,产生第二反馈错误信息。
例如,本公开至少一实施例提供的验证方法还包括:将所述第一反馈信息存储在缓存器中,并基于所述第一反馈信息包括的内容设置对应的反馈延时,将所述生成第一反馈信息的时刻加上对应的反馈延时存储在所述缓存器中,当对应于所述第一反馈信息的反馈延时达到后,发送所述第一反馈信息。
例如,在本公开至少一实施例提供的验证方法中,在所述缓存器中分别对应设置所述反馈正确信息、所述第一反馈错误信息以及所述第二反馈错误信息的反馈延时为第一反馈延时、第二反馈延时以及第三反馈延时,其中,所述第一反馈延时、所述第二反馈延时以及所述第三反馈延时不同。
例如,在本公开至少一实施例提供的验证方法中,当被发送的所述第一反馈信息包括所述反馈错误信息时,所述缓冲器将在所述反馈错误信息之后存储的还未发送的所述第一反馈信息删除。
例如,在本公开至少一实施例提供的验证方法还包括:读取和解析描述所述测试程序运行的轨迹描述文件,以得到所述测试程序的运行过程,从而复现所述测试程序执行的动态轨迹的所述分支信息。
例如,在本公开至少一实施例提供的验证方法中,所述轨迹描述文件包括所述各个分支指令的静态信息和跳转信息以及所述测试程序运行过程中的整体运行轨迹,其中,所述静态信息包括指令地址、指令编码、指令长度以及指令类型的其中至少之一,所述跳转信息包括跳转类型、目标地址以及前一条分支指令到当前分支指令之间的指令数量信息的其中至少之一。
例如,在本公开至少一实施例提供的验证方法中,根据所述第一反馈信息生成所述第一性能验证报告,包括发送所述第一反馈信息至评估单元,所述评估单元根据所述第一反馈信息进行分类统计生成所述第一性能验证报告。
例如,在本公开至少一实施例提供的验证方法中,根据所述第二反馈信息生成所述第二性能验证报告,包括:发送所述第二反馈信息至评估单元,所述评估单元根据所述第二反馈信息进行分类统计生成所述第二性能验证报告。
例如,在本公开至少一实施例提供的验证方法中,所述待验证分支预测器为从寄存器传输级仿真中分离出来的,所述待验证分支预测器与其他功能模块的接口信号被统一设置;所述参考分支预测器为从模拟器中分离出来的,所述参考分支预测器的接口信号被进行与所述待验证分支预测器相同的设置。
例如,在本公开至少一实施例提供的验证方法中,所述寄存器传输级仿真用于对包括所述待验证分支预测器的处理器进行硬件级仿真,所述模拟器用于对包括所述参考分支预测器的处理器进行软件级仿真。
本公开至少一个实施例还提供了一种用于分支预测器的验证***,包括:预测信息接收模块、分支信息接收模块、反馈信息产生模块以及性能验证模块。预测信息接收模块配置为接收待验证分支预测器产生的第一预测信息,其中,所述第一预测信息为所述待验证分支预测器响应于测试程序的目标指令产生,且对应于由所述待验证分支预测器预测在所述目标指令之后将被执行的分支指令,所述测试程序包括关联的多条指令,所述多条指令包括多条分支指令。分支信息接收模块配置为接收复现所述测试程序执行过程中各条指令的动态轨迹的分支信息。反馈信息产生模块配置为根据所述第一预测信息和所述分支信息,产生第一反馈信息。性能验证模块配置为根据所述第一反馈信息生成第一性能验证报告,基于所述第一性能验证报告来验证所述待验证分支预测器的性能。
本公开至少一个实施例还提供了一种用于分支预测器的验证设备,所述设备包括存储器和处理器,其中所述存储器中存有可执行代码,当利用所述处理器执行所述可执行代码时,使得所述处理器执行如前任一所述的用于分支预测器的验证方法。
本公开至少一个实施例还提供了一种计算机可读存储介质,其上存储有可执行代码,所述可执行代码在被处理器执行时,使得所述处理器执行如前任一所述的用于分支预测器的验证方法。
本公开至少一实施例提供的一种用于分支预测器的验证方法、***、设备以及存储介质,该用于分支预测器的验证方法通过根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能,不但降低了验证环境的复杂度要求,同时提高了分支预测器性能验证的速度和效率。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开至少一实施例提供的一种用于分支预测器的验证方法的流程示意图;
图2为本公开至少另一实施例提供的一种用于分支预测器的验证方法的流程示意图;
图3为本公开至少一实施例提供的一种用于分支预测器的验证方法执行过程的示意图;
图4为本公开至少一实施例提供的测试程序执行过程中各条指令的动态轨迹的示意图;
图5为本公开至少一实施例提供的一种用于分支预测器的验证***的示意图;
图6为本公开至少一实施例提供的一种用于分支预测器的验证设备的结构示意图;以及
图7为本公开至少一实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
在处理器的验证环节,由于分支预测器(BP,Branch Prediction)的预测好坏只影响处理器的执行性能,不影响功能。所以对分支预测器的验证不能按照传统的处理器验证方法,例如将采集指令执行完的状态与目标状态进行对比对分支预测器进行验证。而是需要综合处理器执行特定程序后的一些统计信息,与目标模拟器(例如处理器的仿真软件)或者***(例如,处理器的硬件模拟)执行该特定程序后的信息,进行对比来验证分支预测器的性能。
目前处理器分支预测器的性能验证大多是在寄存器传输级(RTL,RegisterTransfer Level)仿真硬件(例如,处理器的RTL仿真硬件)上仿真整个处理器,并运行不同的测试程序。同时,在对应的用于处理器的模拟器(例如仿真软件)上也运行相同的测试程序。对比上述两种仿真方式得到的处理器的分支预测器的性能差异,然后根据差异进行对分支预测器进行调试和校准。
然而,上述对处理器的分支预测器的性能验证主要有以下不足。在仿真硬件上需要仿真整个处理器,造成仿真速度非常慢。通常仿真一个简单的测试程序需要数天乃至数月时间。并且,这种对于整个处理器整体进行性能验证的方法同时要求处理器的其他模块实现的准确性非常高。由于处理器是一个非常复杂庞大的***装置。在对整个处理器进行软件仿真的过程中,当模拟器与寄存器传输级仿真(即硬件仿真)产生性能上不一致的情况时,这有可能是分支预测器导致的,也可能是处理器中除了分支预测器之外的任何一个模块实现上存在问题导致的。此时,需要确定性能不一致是否是分支预测器所导致的,增加了对分支预测器验证的复杂程度,同时也增加了分支预测器调试的难度。所以,现有的对于分支预测器的性能验证方法不但效率低,而且复杂程度高。
本公开至少一实施例提供一种用于分支预测器的验证方法。该验证方法包括:接收待验证分支预测器产生的第一预测信息,第一预测信息为待验证分支预测器响应于轨迹信息产生,且对应于由待验证分支预测器预测在目标指令之后将被执行的分支指令,其中,所述轨迹信息对应于测试程序的执行,测试程序包括关联的多条指令,多条指令包括多条分支指令,接收复现测试程序执行过程中各条指令的动态轨迹的分支信息,根据第一预测信息和分支信息,产生第一反馈信息,根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能。
本公开上述实施例提供的用于分支预测器的验证方法,通过根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能,不但降低了验证环境的复杂度要求,同时提高了分支预测器性能验证的速度和效率。
下面结合附图对本公开的实施例及其示例进行详细说明。
图1为本公开至少一实施例提供的一种用于分支预测器的验证方法的流程示意图;图3为本公开至少一实施例提供的一种用于分支预测器的验证方法执行过程的示意图。
图1所示本公开实施例提供的用于分支预测器的验证方法包括步骤S110-S140。图3所示本公开实施例提供的用于分支预测器的验证方法的执行过程包括步骤S310-S320。
步骤S110:接收待验证分支预测器产生的第一预测信息。
例如,在一些实施例中,如图3所示,待验证分支预测器BP1为独立的,从寄存器传输级(RTL)仿真(例如也被称为RTL实现)中分离出来的。待验证分支预测器与其他功能模块的接口信号被统一设置。例如,寄存器传输级仿真用于对包括待验证分支预测器BP1(以及其他功能模块)的处理器进行硬件级仿真。即,寄存器传输级仿真包括对整个处理器的验证。
例如,待验证分支预测器BP1是从整个处理器的硬件级仿真中单独分离出来,对于待验证分支预测器BP1与指令缓存部件、页表管理单元、二级缓存等模块的接口信号根据需求置为准备就绪(ready)。也就是说,与待验证分支预测器BP1连接的其它模块的接口信号都假设为正确的,而不会对待验证分支预测器BP1的性能验证造成其它影响,以排除待验证分支预测器BP1之外的其它模块的性能不良对待验证分支预测器BP1的验证结构造成干扰,这进一步降低了待验证分支预测器BP1验证的复杂度,也能提高性能验证的准确度。
例如,在一些实施例中,第一预测信息为待验证分支预测器响应于轨迹信息产生,且对应于由待验证分支预测器预测在目标指令之后将被执行的分支指令,轨迹信息对应于测试程序的执行,测试程序包括关联的多条指令,多条指令包括多条分支指令。例如,如图3所示,待验证分支预测器BP1根据轨迹信息中第一条指令(也就是目标指令)的地址设置好起始的程序计数器地址。例如,轨迹信息为执行测试程序中的指令的轨迹。后续将对轨迹信息做详细介绍。例如,程序计数器中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,程序计数器中的数值将根据指令字长度而自动递增。例如,初始化完成之后,待验证分支预测器BP1通过各种分支预测算法从程序计数器地址开始预测分支指令执行(即目标指令之后将被执行的分支指令)的路径,并封装成第一预测信息BPW1。
例如,在一些实施例中,第一预测信息BPW1包括将被执行的分支指令的执行路径,执行路径包括将被执行的分支指令的跳转类型以及目标地址。跳转类型包括跳转(take)或非跳转(not take)。例如,待验证分支预测器BP1遇到跳转的分支指令(预测将被执行的分支指令为跳转)。当待验证分支预测器BP1在执行目标指令时,遇到执行目标指令的结束地址是处理器中存放目标指令数据的最后一个字节的地址,此时,待验证分支预测器BP1执行下一个指令时也需要进行跳转。在本公开实施例中也将由于到了最后一个字节的地址不得不跳转的情况可以视为产生第一预测信息BPW1包括跳转的指令。例如,待验证分支预测器BP1遇到两个非跳转的分支指令,此时,第一预测信息BPW1包括非跳转的分支指令。需要说明的是,这里的两个跳转的分支指令与硬件资源的限制有关,例如分支目标缓冲区(Branchtarget buffer),定义上述非跳转的分支指令的个数相关的规则。本公开实施例不以待验证分支预测器BP1预测到的非跳转分支指令的个数为限。
例如,在一些实施例中,当所述第一预测信息包括跳转的分支指令或第一预测信息包括当前被执行的指令的地址需要跳转时,待验证分支预测器发送第一预测信息并根据第一预测信息设置下一条分支指令的目标地址。例如,如图3所示,当待验证分支预测器BP1遇到跳转的分支指令,待验证分支预测器BP1发送第一预测信息BPW1至信息处理和反馈驱动模块CRF,并且待验证分支预测器BP1根据第一预测信息BPW1将程序计数器地址设置为分支指令的目标地址,从而待验证分支预测器BP1下一次从新的程序计数器地址开始读取指令,再生成新的第一预测信息BPW1。例如,当待验证分支预测器BP1遇到执行目标指令的结束地址是处理器中存放目标指令数据的最后一个字节的地址,程序计数器地址也将自动跳转到其它地址,以读取指令。
例如,在一些实施例中,当第一预测信息包括非跳转的分支指令,待验证分支预测器发送第一预测信息并顺序获取下一条分支指令的地址。例如,如图3所示,当待验证分支预测器BP1遇到非跳转的分支指令,待验证分支预测器BP1发送第一预测信息BPW1至信息处理和反馈驱动模块CRF,并顺序获取一条分支指令的地址。
例如,如图3所示,信息处理和反馈驱动模块CRF接收待验证分支预测器BP1产生的第一预测信息BPW1。
例如,如图1所示,步骤S120:接收复现测试程序执行过程中各条指令的动态轨迹的分支信息。
需要说明的是步骤S120和步骤S110中所用的测试程序的内容是相同的,以获得测试程序在不同执行过程后结果的差异。
例如,如图3所示,行为轨迹解析器TP1读取和解析描述测试程序运行的轨迹描述文件TF1,以得到所述测试程序的运行过程,从而复现测试程序执行的动态轨迹的分支信息。例如,轨迹描述文件TF1(Branch Trace File)是对一个测试程序运行过程中行为轨迹的描述。例如,轨迹信息包括轨迹描述文件TF1中的内容。以下对轨迹描述文件TF1详细介绍。
在测试程序执行过程中,每遇到一个分支指令都会记录这个分支指令的目标地址,跳转方向(taken或者not taken)、指令程序计数器地址、指令长度、从上一个分支指令到当前分支指令之间的指令数目等信息。轨迹描述文件TF1的部分内容如下。
Figure BDA0002822440210000101
上述轨迹描述文件TF1是另外的一个简单的模拟器,该模拟器执行测试程序得到多条指令的执行路径。上述模拟器可以根据需要选择,这里不再赘述。需要说明的是,上述轨迹描述文件TF1是示例性示出的一部分,以对本公开实施例进行解释说明,不用于对本公开实施例的限制。
需要说明的是,本公开实施例不对轨迹描述文件TF1的格式和具体实现进行限定,可以采用任何定义的Trace格式或者其他开源格式。轨迹描述文件TF1的生成可以是直接在功能性模拟器上或者真机上直接运行真实的应用程序,记录程序运行过程中程序的动态轨迹,跳转信息等所关心的内容。
例如,在一些实施例中,轨迹描述文件包括各个分支指令的静态信息和跳转信息以及测试程序运行过程中的整体运行轨迹。静态信息包括指令地址、指令编码、指令长度以及指令类型的其中至少之一,跳转信息包括跳转类型、目标地址以及前一条分支指令到当前分支指令之间的指令数量信息的其中至少之一。例如,在轨迹描述文件TF1中,Node表示一个分支指令的静态信息,如指令地址(physical_address),指令编码(opcode),指令长度(size),指令类型(class)等。例如,静态信息还可以包括指令的程序计数器地址(vaddress)。EDEG表示分支指令的跳转信息。在测试程序执行过程中,每遇到一个分支指令都会记录这个分支指令的目标地址(br_virt_target),跳转方向(taken或者not taken在上述轨迹描述文件TF1中分别记为T或N),从上一个分支指令到当前分支指令之间的指令数目(inst_cnt)等信息。SEQUENCE表示整个测试程序运行过程中整体的运行轨迹。在上述轨迹描述文件TF1中,测试程序的运行轨迹数字表示,从id编号为0的分支片段(NODE),跳转到id编号为1的分支片段,之后执行指令的编号依次为:2、3、1、2、3、1、2。
图4为本公开至少一实施例提供的测试程序执行过程中各条指令的动态轨迹的示意图。
例如,如图4所示,从图中看到测试程序的运行轨迹为从分支片段NODE-0(数字0表示指令的编号id的值),遇到跳转信息EDGE-0,跳转信息EDGE-0包括非跳转的分支指令。此时,顺序执行下一个分支片段,进入执行分支片段NODE-1,遇到跳转信息EDGE-1,跳转信息EDGE-1包括非跳转的分支指令。此时,顺序执行下一个分支片段,进入分支片段NODE-2。按照图4所示的运行轨迹,执行分支片段NODE-3之后,遇到包括跳转的分支指令的跳转信息EDGE-3,进入执行分支片段NODE-1的执行。
例如,如图3所示,行为轨迹解析器TP1读取和解析描述测试程序的轨迹描述文件TF1,复现该测试程序执行过程中程序的行为轨迹。行为轨迹解析器TP1每当遇到轨迹描述文件TF1中记录的跳转信息时,按照分支指令的目标地址,跳转方向,指令长度等信息,复现和还原测试程序执行的动态轨迹。行为轨迹解析器TP1将得到的分支信息RI30发送至信息处理和反馈驱动模块CRF。分支信息RI30相当于提供了测试程序执行的正确过程的所有信息,以用于与第一预测信息BPW1进行对比,根据对比结果可以发现第一预测信息BPW1中的执行过程或者分支指令的预测等是否有误,以对待验证分支预测器BP1进行性能验证。
例如,如图1所示,步骤S130:根据第一预测信息和分支信息,产生第一反馈信息。
例如,如图3所示,步骤S310:信息处理和反馈驱动模块CRF比较第一预测信息BPW1和分支信息BI1产生第一反馈信息RI1。例如,在一些实施例中,信息处理和反馈驱动模块CRF比较第一预测信息BPW1与分支信息RI30,当将被执行的分支指令的执行路径相同时,产生反馈正确信息RI10。即,第一预测信息BPW1预测的被执行的分支指令对应的跳转信息与轨迹描述文件TF1中的信息相同(跳转类型、目标地址等都相同),从而测试程序执行的路径能够与图4所示的执行路径重合。当第一预测信息BPW1的将被执行的分支指令的执行路径,与分支信息BPW1中对应于将被执行的分支指令的动态轨迹的路径不同时,产生反馈错误信息RI20。很多种情况都可以视为可以产生错误反馈信息RI20,例如,当第一预测信息BPW1中没有发现绝对跳转的分支指令,或者分支指令的目标地址不知,分支指令的跳转类型预测错误,目标地址不正确定等。需要说明的是,在本公开实施例中绝对跳转的分支指令也是跳转类型的分支指令,这种分支指令一定会带来程序计数器地址的跳转。
例如,在一些实施例中,如图3所示,反馈错误信息RI20包括第一反馈错误信息RI21和第二反馈错误信息RI22。跳转的分支指令包括非条件跳转的分支指令和间接跳转的分支指令。例如,非条件跳转的分支指令为一定会发生跳转的分支指令,也就是说不需要任何其它条件。间接跳转的分支指令为需要一定条件才会发生跳转的指令,比例跳转的方向,目标地址等符合要求才能跳转。比较第一预测信息BPW1与分支信息RI30,当第一预测信息BPW1中没有发现跳转的分支指令而在分支信息RI30中出现非条件跳转的分支指令,或在第一预测信息中发现的分支指令的目标地址与分支信息RI30中的目标地址不同时,产生第一反馈错误信息RI21。当第一预测信息BPW1中发现的间接跳转的分支指令,而间接跳转的分支指令的目标地址与分支信息RI30中的间接跳转的分支指令的目标地址不同,或第一预测信息BPW1中发现非条件跳转的分支指令,而非条件跳转的分支指令的跳转方向与分支信息RI30中与发现的非条件跳转分支指令的跳转方向不同时,产生第二反馈错误信息RI22。
例如,当对应于图4所示的运行轨迹中,的跳转信息EDGE-2包括非跳转的分支指令,而对应于第一预测信息BPW1中所预测的将要执行的分支指令为跳转,此时,第一预测信息BPW1的预测结果是错误的。也就是说,第一预测信息BPW1可以对将要执行的分支指令做出了预测但是预测的方向是错误的,这个方向错误可以是跳转方向,也可以是分支指令的目标地址,本公开实施例不以此为限。
例如,如图1所示,步骤S140:根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能。
例如,在一些实施例中,根据第一反馈信息生成第一性能验证报告,包括:发送第一反馈信息至评估单元,评估单元根据第一反馈信息进行分类统计生成第一性能验证报告。如图3所示,信息处理和反馈驱动模块CRF将第一反馈信息RI1发送至性能统计和评估模块SCI。性能统计和评估单元SCI根据第一反馈信息RI1进行分类统计生成第一性能验证报告。第一性能验证报告包括对待验证分支预测器准确率的评价。
图2为本公开至少另一实施例提供的一种用于分支预测器的验证方法的流程示意图。图2所示的用于分支预测器的验证方法包括步骤S210至步骤S240。
步骤S210:接收参考分支预测器产生的第二预测信息。例如,如图3所示,参考分支预测器BP2为独立的,从模拟器(例如仿真软件)中分离出来的,参考分支预测器BP2的接口信号被进行与待验证分支预测器BP1相同的设置,即将参考分支预测器BP2与指令缓存部件、页表管理单元、二级缓存等模块的接口信号根据需求置为准备就绪(ready)。例如,模拟器用于对包括参考分支预测器的处理器进行软件级仿真。参考分支预测器BP2是经过验证之后的分支预测器,将参考分支预测器BP2和待验证分支预测器BP1执行相同的测试程序,也就是说参考分支预测器BP2和待验证分支预测器BP1被执行相同的验证方法,按照图3所示的流程进行相同的处理,以将两者得到的预测准确度等进行比较,以验证待验证分支预测器BP1的性能。也就是说,本公开上述实施例的验证方法被并行且无差别地执行在参考分支预测器BP2和待验证分支预测器BP1上。
例如,如图3所示,第二预测信息BPW2与第一预测信息BPW1是对应的,两者分别来自于参考分支预测器BP2和待验证分支预测器BP1,都被发送至信息处理和反对驱动模块CRF。
步骤S220:根据第二预测信息和所述分支信息,产生第二反馈信息。步骤S220对应于图1中的步骤S130。如图3所示,步骤S310:信息处理和反馈驱动模块CRF比较第二预测信息BPW2与分支信息BI1产生第二反馈信息RI2。第二反馈信息RI2也包括反馈正确信息和反馈错误信息,反馈错误信息包括第一反馈错误信息和第二反馈错误信息。产生第二反馈信息RI2的过程和内容可以参考第一反馈信息RI1这里不再赘述。
步骤S230:根据第二反馈信息生成第二性能验证报告。
例如,在一些实施例中,根据第二反馈信息生成第二性能验证报告,包括:发送第二反馈信息至评估单元,评估单元根据第二反馈信息进行分类统计生成第二性能验证报告。如图3所示,信息处理和反馈驱动模块CRF将第二反馈信息RI2发送至性能统计和评估模块SCI。性能统计和评估单元SCI根据第二反馈信息RI2进行分类统计生成第二性能验证报告。第二性能验证报告包括对参考分支预测器准确率的评价。
步骤S240:比较第一性能验证报告和第二性能验证报告,以验证待验证分支预测器的性能。例如,如图3所示,性能统计和评估单元SCI通过对比第一性能验证报告和第二性能验证报告,可以看到两者之间的详细性能差异,以此来达到提高分支预测器性能验证的速度和效率的目的。
需要说明的是,在本公开至少一实施例提供的用于分支预测器的验证方法中,对于参考分支预测器BP2和待验证分支预测器BP1都进行了相同的验证过程,现以待验证分支预测器BP1为例对详细过程做介绍,而参考分支预测器BP2的验证过程不再赘述。
例如,在一些实施例中,本公开实施例提供的用于分支预测器的验证方法,还包括:将第一反馈信息发送至待验证分支预测器,待验证分支预测器根据第一反馈信息进行对应操作。例如,如图3所示,信息处理和反馈驱动模块CRF发送第一反馈信息R11至待验证分支预测器BP1(例如,也会发送第二反馈信息R12至参考分支预测器BP2)。
例如,例如,在一些实施例中,待验证分支预测器根据第一反馈信息进行对应操作,包括:使用第一反馈信息对所述待验证分支预测器进行训练;当第一反馈信息为反馈正确信息时,待验证分支预测器将对应于第一反馈信息的第一预测信息的相关数据释放。当第一反馈信为反馈错误信息时,待验证分支预测器将对应于第一反馈信息的第一预测信息以及所述第一预测信息之后产生的第一预测信息全部删除,并根据反馈错误信息,将第一预测信息修正,基于修正后的第一预测信息对下一条分支指令进行预测。
例如,如图3所示,对待验证分支预测器BP1根据第一反馈信息进行训练,从而待验证分支预测器BP1将本次的第一反馈信息产生记忆,以避免错误预测信息的产生。如果信息处理和反馈驱动模块CRF发送过来的第一反馈信息R11为反馈错误信息R120(包括第一反馈错误信息RI21和第二反馈错误信息RI22),说明之前的第一预测信息BPW1是错误的,本次第一预测信息BPW1之后再得到的其它第一预测信息都已经处于一个错误的分支路径上。待验证分支预测器BP1根据第一反馈信息R11,把比本次第一预测信息BPW1以及之后产生的所有第一预测信息都擦除,释放出相关的数据结构。待验证分支预测器BP1还并把程序计数器地址更正为反馈错误信息纠正的地址。待验证分支预测器BP1从正确的地址继续预测并给出新的第一预测信息BPW1。如果信息处理和反馈驱动模块CRF发送过来的第一反馈信息R11为反馈正确信息R110,这说明之前待验证分支预测器BP1发送的这次第一预测信息BPW1是正确的,为了提高验证的效率,这里假设分支指令已经被正确的“执行”完成。待验证分支预测器BP1收到反馈正确信息R110后会释放内部与这次第一预测信息BPW1相关的数据结构,以用来存放新的预测信息。此外,反馈错误信息R120和馈正确信息R110除了更正错误的分支预测信息,保证测试程序执行的轨迹与分支信息RI30描述的轨迹相同之外,它们还作为训练待验证分支预测器BP1的一个输入。待验证分支预测器BP1根据这些输入,通过不同的算法训练和校准分支预测器。
例如,在本公开至少一实施例中,在待验证分支预测器BP1进行性能验证的过程中不需要处理器译码单元、执行单元、存储单元等的参与,不需要真正的译码和执行指令,以提高验证的速度。
例如,在一些实施例中,本公开实施例提供的用于分支预测器的验证方法,还包括:将第一反馈信息存储在缓存器中,并基于所述第一反馈信息包括的内容设置对应的反馈延时,将所述生成第一反馈信息的时刻加上对应的反馈延时存储在所述缓存器中,当对应于所述第一反馈信息的反馈延时达到后,发送所述第一反馈信息。
例如,如图3所示,信息处理和反馈驱动模块CRF统一将第一反馈信息RI1(以及第二反馈信息RI2)发送到缓冲器BF1中缓存。缓冲器BF1用于存放被处理完的第一预测信息BPW1的第一反馈信息RI1,等待合适的时间发送给待验证分支预测器BP1、性能统计和评估模块SC1等。缓冲器BF1中共设置的存储项数与待验证分支预测器BP1具体实现相关。基于第一反馈信息RI1包括的内容在存储时设置对应的反馈延时,每个搜索逻辑(search)都遍历查找缓冲器BF1中所有的与第一预测信息BPW1对应的第一反馈信息RI1,看是否有第一预测信息BPW1达到应该发送反馈的时刻。例如,当第一预测信息BPW1的反馈延时达到之后,再将第一预测信息BPW1发送出去。
例如,在一些实施例中,在缓存器中分别对应设置反馈正确信息、第一反馈错误信息以及第二反馈错误信息的反馈延时为第一反馈延时、第二反馈延时以及第三反馈延时。第一反馈延时、第二反馈延时以及第三反馈延时不同。例如,如图3所示,反馈正确信息RI10的第一反馈延时T1设置为15个循环(cycles),第一反馈错误信息RI21的第二反馈延时T2为9个循环(cycles),第二反馈错误信息RI22的第三反馈延时T3为13个循环(cycles)。根据以上设置,信息处理和反馈驱动模块CRF在第15个循环(cycles)后发送反馈正确信息RI10,第9个循环(cycles)后发送第一反馈错误信息RI21,第13个循环(cycles)后发送第二反馈错误信息RI22。
例如,如图3所示,当信息处理和反馈驱动模块CRF将第一反馈信息RI1发送至待验证峰值预测器BP1以及性能统计和评估模块SC1等之后,对应于这个第一反馈信息RI1的缓存器BF1中的空间也会被释放。
需要说明的是,第一反馈延时T1、第二反馈延时T2以及第三反馈延时T3的具体参数可以根据不同的环境进行调整,并且三者之间没有固定的大小顺序。
例如,在一些实施例中,当被发送的第一反馈信息包括反馈错误信息时,缓冲器将在反馈错误信息之后存储的还未发送的第一反馈信息删除。例如,如图3所示,当第一反馈信息RI1为反馈错误信息RI20时,将该反馈错误信息RI20发送至缓冲器BF1,缓冲器BF1会遍历比较找到比这个反馈错误信息RI20之后存储的还没被发送的第一反馈信息RI1对应的第一预测信息BPW1,缓冲器BF1删除与这些第一预测信息BPW1的相关信息。
例如,本公开至少一实施例还提供一种用于分支预测器的验证***。图5为本公开至少一实施例提供的一种用于分支预测器的验证***的示意图。
例如,在一些实施例中,如图5所示,用于分支预测器的验证***300包括:预测信息接收模块310、分支信息接收模块320、反馈信息产生模块330以及性能验证模块340。
例如,预测信息接收模块310配置为预测信息接收模块,配置为接收待验证分支预测器产生的第一预测信息,第一预测信息为待验证分支预测器响应于测试程序的目标指令产生,且对应于由待验证分支预测器预测在目标指令之后将被执行的分支指令,测试程序包括关联的多条指令,多条指令包括多条分支指令。例如,第一预测信息BPW1包括将被执行的分支指令的执行路径,执行路径包括将被执行的分支指令的跳转类型。跳转类型包括跳转(take)或非跳转(not take)。
例如,分支信息接收模块320配置为接收复现测试程序执行过程中各条指令的动态轨迹的分支信息。例如,如图3所示,行为轨迹解析器TP1读取和解析描述测试程序运行的轨迹描述文件TF1,以得到所述测试程序的运行过程,从而复现测试程序执行的动态轨迹的分支信息。
例如,反馈信息产生模块330配置为根据第一预测信息和分支信息,产生第一反馈信息。例如,如图3所示,步骤S310:信息处理和反馈驱动模块CRF比较第一预测信息BPW1和分支信息BI1产生第一反馈信息RI1。
例如,性能验证模块340配置为根据第一反馈信息生成第一性能验证报告,基于第一性能验证报告来验证待验证分支预测器的性能。例如,如图3所示,信息处理和反馈驱动模块CRF将第一反馈信息RI1发送至性能统计和评估模块SCI。性能统计和评估单元SCI根据第一反馈信息RI1进行分类统计生成第一性能验证报告。第一性能验证报告包括对待验证分支预测器准确率的评价。
例如,在一些实施例中,如图3所示,参考分支预测器BP2为从模拟器(例如仿真软件)中分离出来的,参考分支预测器BP2的接口信号被进行与待验证分支预测器BP1相同的设置。参考分支预测器BP2和待验证分支预测器BP1被执行相同的验证方法,按照图3所示的流程进行相同的处理,以将两者得到的预测准确度等进行比较,以验证待验证分支预测器BP1的性能。
例如,在一些实施例中,预测信息接收模块310还配置为接收参考分支预测器产生的第二预测信息。反馈信息产生模块330还配置为根据第二预测信息和所述分支信息,产生第二反馈信息。反馈信息产生模块330还配置为根据第二反馈信息生成第二性能验证报告。性能验证模块340还配置为比较第一性能验证报告和第二性能验证报告,以验证参考分支预测器的性能。如图3所示,信息处理和反馈驱动模块CRF将第二反馈信息RI2发送至性能统计和评估模块SCI。性能统计和评估单元SCI根据第二反馈信息RI2进行分类统计生成第二性能验证报告。第二性能验证报告包括对待验证分支预测器准确率的评价。性能统计和评估单元SCI通过对比第一性能验证报告和第二性能验证报告,可以看到两者之间的详细性能差异,以此来达到提高分支预测器性能验证的速度和效率的目的。
上述实施例提供的用于分支预测器的验证***,基于第一性能验证报告来和第二性能验证报告的差异来验证待验证分支预测器的性能,不但降低了验证环境的复杂度要求,同时提高了分支预测器性能验证的速度和效率。
图6为本公开至少一实施例提供的一种用于分支预测器的验证设备的结构示意图。
图6所示的用于分支预测器的验证设备400例如适于用来实施本公开实施例提供的用于分支预测器的验证方法。用于分支预测器的验证设备400可以是个人电脑、笔记本电脑、平板电脑、移动电话等终端设备也可以是工作站、服务器、云服务等。需要注意的是,图6示出的用于分支预测器的验证设备400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图6所示,用于分支预测器的验证设备400可以包括处理装置(例如中央处理器、图形处理器等)410,其可以根据存储在只读存储器(ROM)420中的程序或者从存储装置480加载到随机访问存储器(RAM)430中的程序而执行各种适当的动作和处理。在RAM 430中,还存储有用于分支预测器的验证设备400操作所需的各种程序和数据。处理装置410、ROM 420以及RAM 430通过总线440彼此相连。输入/输出(I/O)接口450也连接至总线440。
通常,以下装置可以连接至I/O接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许用于分支预测器的验证设备400与其他电子设备进行无线或有线通信以交换数据。虽然图6示出了包括各种装置的用于分支预测器的验证设备400,但应理解的是,并不要求实施或具备所有示出的装置,用于分支预测器的验证设备400可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述用于分支预测器的验证方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述用于分支预测器的验证方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从ROM420安装。在该计算机程序被处理装置410执行时,可以执行本公开实施例提供的用于分支预测器的验证方法中限定的功能。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机程序可执行代码(例如计算机可执行指令),当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的用于分支预测器的验证方法;或者,当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的用于分支预测器的验证方法。
图7为本公开至少一实施例提供的一种存储介质的示意图。如图7所示,存储介质500非暂时性地存储有计算机程序可执行代码501。例如,当计算机程序可执行代码501由计算机执行时可以执行根据上文所述的用于分支预测器的验证方法中的一个或多个步骤。
例如,该存储介质500可以应用于上述用于分支预测器的验证设备400中。例如,存储介质500可以为图7所示的用于分支预测器的验证设备400中的存储器420。例如,关于存储介质500的相关说明可以参考图7所示的用于分支预测器的验证设备400中的存储器420的相应描述,此处不再赘述。
除了上述描述之外,有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (20)

1.一种用于分支预测器的验证方法,包括:
接收待验证分支预测器产生的第一预测信息,其中,所述第一预测信息为所述待验证分支预测器响应于轨迹信息产生,且对应于由所述待验证分支预测器预测在目标指令之后将被执行的分支指令,其中,所述轨迹信息对应于测试程序的执行,所述测试程序包括关联的多条指令,所述多条指令包括多条分支指令;
接收复现所述测试程序执行过程中各条指令的动态轨迹的分支信息;
根据所述第一预测信息和所述分支信息,产生第一反馈信息;以及
根据所述第一反馈信息生成第一性能验证报告,基于所述第一性能验证报告来验证所述待验证分支预测器的性能。
2.根据权利要求1所述的验证方法,还包括:
接收参考分支预测器产生的第二预测信息,其中,所述第二预测信息为所述参考分支预测器响应于所述轨迹信息产生,且对应于由所述参考分支预测器预测在所述目标指令之后将被执行的分支指令;
根据所述第二预测信息和所述分支信息,产生第二反馈信息;
根据所述第二反馈信息生成第二性能验证报告;
其中,基于所述第一性能验证报告来验证所述待验证分支预测器的性能,包括:
比较所述第一性能验证报告和所述第二性能验证报告,以验证所述待验证分支预测器的性能。
3.根据权利要求1所述的验证方法,其中,
所述第一预测信息包括所述将被执行的分支指令的执行路径,所述执行路径包括所述将被执行的分支指令的跳转类型以及目标地址,其中,所述跳转类型包括跳转或非跳转。
4.根据权利要求3所述的验证方法,其中,
当所述第一预测信息包括跳转的分支指令或所述第一预测信息包括当前被执行的指令的地址需要跳转时,所述待验证分支预测器发送所述第一预测信息并根据所述第一预测信息设置下一条分支指令的目标地址;
当所述第一预测信息包括非跳转的分支指令,所述待验证分支预测器发送所述第一预测信息并顺序获取下一条分支指令的地址。
5.根据权利要求4所述的验证方法,还包括:
将所述第一反馈信息发送至所述待验证分支预测器,所述待验证分支预测器根据所述第一反馈信息进行对应操作。
6.根据权利要求5所述的验证方法,其中,所述第一反馈信息包括反馈错误信息或反馈正确信息,
所述待验证分支预测器根据所述第一反馈信息进行对应操作,包括:
使用第一反馈信息对所述待验证分支预测器进行训练;
当所述第一反馈信息为所述反馈正确信息时,所述待验证分支预测器将对应于所述第一反馈信息的第一预测信息的相关数据释放;
当所述第一反馈信为反馈错误信息时,所述待验证分支预测器将对应于所述第一反馈信息的第一预测信息以及所述第一预测信息之后产生的第一预测信息全部删除,并根据所述反馈错误信息,将所述第一预测信息修正,基于修正后的所述第一预测信息对下一条分支指令进行预测。
7.根据权利要求6所述的验证方法,其中,
比较所述第一预测信息与所述分支信息,当所述将被执行的分支指令的执行路径相同时,产生反馈正确信息,
当所述第一预测信息的所述将被执行的分支指令的执行路径,与所述分支信息中对应于所述将被执行的分支指令的动态轨迹的路径不同时,产生反馈错误信息。
8.根据权利要求6所述的验证方法,其中,所述反馈错误信息包括第一反馈错误信息和第二反馈错误信息,其中,所述跳转的分支指令包括非条件跳转的分支指令和间接跳转的分支指令,
比较所述第一预测信息与所述分支信息,当所述第一预测信息中没有发现跳转的分支指令而在所述分支信息中出现非条件跳转的分支指令,或在所述第一预测信息中发现的分支指令的目标地址与所述分支信息中的目标地址不同时,产生所述第一反馈错误信息;
当所述第一预测信息中发现的间接跳转的分支指令,而所述间接跳转的分支指令的目标地址与所述分支信息中的间接跳转的分支指令的目标地址不同,或所述第一预测信息中发现非条件跳转的分支指令,而所述非条件跳转的分支指令的跳转方向与分支信息中与所述发现的非条件跳转分支指令的跳转方向不同时,产生第二反馈错误信息。
9.根据权利要求8所述的验证方法,还包括:
将所述第一反馈信息存储在缓存器中,并基于所述第一反馈信息包括的内容设置对应的反馈延时,将所述生成第一反馈信息的时刻加上对应的反馈延时存储在所述缓存器中,
当对应于所述第一反馈信息的反馈延时达到后,发送所述第一反馈信息。
10.根据权利要求9所述的验证方法,其中,
在所述缓存器中分别对应设置所述反馈正确信息、所述第一反馈错误信息以及所述第二反馈错误信息的反馈延时为第一反馈延时、第二反馈延时以及第三反馈延时,
其中,所述第一反馈延时、所述第二反馈延时以及所述第三反馈延时不同。
11.根据权利要求9所述的验证方法,其中,
当被发送的所述第一反馈信息包括所述反馈错误信息时,缓冲器将在所述反馈错误信息之后存储的还未发送的所述第一反馈信息删除。
12.根据权利要求1所述的验证方法,还包括:
读取和解析描述所述测试程序运行的轨迹描述文件,以得到所述测试程序的运行过程,从而复现所述测试程序执行的动态轨迹的所述分支信息。
13.根据权利要求12所述的验证方法,其中,所述轨迹描述文件包括所述各个分支指令的静态信息和跳转信息以及所述测试程序运行过程中的整体运行轨迹,
其中,所述静态信息包括指令地址、指令编码、指令长度以及指令类型的其中至少之一,
所述跳转信息包括跳转类型、目标地址以及前一条分支指令到当前分支指令之间的指令数量信息的其中至少之一。
14.根据权利要求1-13任一所述的验证方法,其中,根据所述第一反馈信息生成所述第一性能验证报告,包括:
发送所述第一反馈信息至评估单元,所述评估单元根据所述第一反馈信息进行分类统计生成所述第一性能验证报告。
15.根据权利要求2所述的验证方法,其中,根据所述第二反馈信息生成所述第二性能验证报告,包括:
发送所述第二反馈信息至评估单元,所述评估单元根据所述第二反馈信息进行分类统计生成所述第二性能验证报告。
16.根据权利要求2所述的验证方法,其中,所述待验证分支预测器为从寄存器传输级仿真中分离出来的,所述待验证分支预测器与其他功能模块的接口信号被统一设置;
所述参考分支预测器为从模拟器中分离出来的,所述参考分支预测器的接口信号被进行与所述待验证分支预测器相同的设置。
17.根据权利要求16所述的验证方法,其中,所述寄存器传输级仿真用于对包括所述待验证分支预测器的处理器进行硬件级仿真,
所述模拟器用于对包括所述参考分支预测器的处理器进行软件级仿真。
18.一种用于分支预测器的验证***,包括:
预测信息接收模块,配置为接收待验证分支预测器产生的第一预测信息,其中,所述第一预测信息为所述待验证分支预测器响应于测试程序的目标指令产生,且对应于由所述待验证分支预测器预测在所述目标指令之后将被执行的分支指令,所述测试程序包括关联的多条指令,所述多条指令包括多条分支指令;
分支信息接收模块,配置为接收复现所述测试程序执行过程中各条指令的动态轨迹的分支信息;
反馈信息产生模块,配置为根据所述第一预测信息和所述分支信息,产生第一反馈信息;以及
性能验证模块,配置为根据所述第一反馈信息生成第一性能验证报告,基于所述第一性能验证报告来验证所述待验证分支预测器的性能。
19.一种用于分支预测器的验证设备,包括:
处理器;和
存储器,其中,所述存储器中存储有计算机可执行代码,所述计算机可执行代码当由所述处理器运行时,执行如权利要求1-17任一所述的用于分支预测器的验证方法。
20.一种计算机可读存储介质,其上存储有可执行代码,所述可执行代码在被处理器执行时,使得所述处理器执行如权利要求1-17任一所述的用于分支预测器的验证方法。
CN202011441569.3A 2020-12-08 2020-12-08 用于分支预测器的验证方法、***、设备以及存储介质 Active CN112579373B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011441569.3A CN112579373B (zh) 2020-12-08 2020-12-08 用于分支预测器的验证方法、***、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011441569.3A CN112579373B (zh) 2020-12-08 2020-12-08 用于分支预测器的验证方法、***、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN112579373A CN112579373A (zh) 2021-03-30
CN112579373B true CN112579373B (zh) 2022-10-11

Family

ID=75132092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011441569.3A Active CN112579373B (zh) 2020-12-08 2020-12-08 用于分支预测器的验证方法、***、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN112579373B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113868899B (zh) * 2021-12-03 2022-03-04 苏州浪潮智能科技有限公司 一种分支指令处理方法、***、设备及计算机存储介质
CN115658455B (zh) * 2022-12-07 2023-03-21 北京开源芯片研究院 处理器性能评估方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984526A (zh) * 2013-02-07 2014-08-13 上海芯豪微电子有限公司 一种指令处理***及方法
CN108228239A (zh) * 2016-12-13 2018-06-29 龙芯中科技术有限公司 基于快速模拟器qemu的分支指令抓取方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101432996A (zh) * 2006-05-01 2009-05-13 英特尔公司 利用基于延迟的信道状态预测进行信道反馈
US9014880B2 (en) * 2010-12-21 2015-04-21 General Electric Company Trajectory based sense and avoid
CN103514107B (zh) * 2012-06-27 2018-04-06 上海芯豪微电子有限公司 高性能数据缓存***和方法
US10534613B2 (en) * 2017-04-28 2020-01-14 Intel Corporation Supporting learned branch predictors
US20190004802A1 (en) * 2017-06-29 2019-01-03 Intel Corporation Predictor for hard-to-predict branches
CN111459550B (zh) * 2020-04-14 2022-06-21 上海兆芯集成电路有限公司 具高度领先分支预测器的微处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984526A (zh) * 2013-02-07 2014-08-13 上海芯豪微电子有限公司 一种指令处理***及方法
CN108228239A (zh) * 2016-12-13 2018-06-29 龙芯中科技术有限公司 基于快速模拟器qemu的分支指令抓取方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于跳转轨迹的分支目标缓冲研究;熊振亚等;《计算机科学》;20170315(第03期);全文 *

Also Published As

Publication number Publication date
CN112579373A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN112579373B (zh) 用于分支预测器的验证方法、***、设备以及存储介质
US20070055911A1 (en) A Method and System for Automatically Generating a Test-Case
US20100180263A1 (en) Apparatus and method for detecting software error
US9626267B2 (en) Test generation using expected mode of the target hardware device
US8271252B2 (en) Automatic verification of device models
CN113779912B (zh) 一种芯片验证***、方法、装置、电子设备及存储介质
CN110737631A (zh) 一种基于Flink引擎的数据解析方法及装置
US20070157134A1 (en) Method for testing a hardware circuit block written in a hardware description language
CN113051163A (zh) 单元测试方法、装置、电子设备及存储介质
CN113742221A (zh) 生成测试用例的方法、电子设备及存储介质
US20090271171A1 (en) Emulator device, and a method for testing a test target device
US20180143890A1 (en) Simulation apparatus, simulation method, and computer readable medium
CN113064816A (zh) 一种可编程逻辑器件软件的测试装置及测试方法
CN110261758B (zh) 待测器件验证装置及相关产品
CN117076330A (zh) 一种访存验证方法、***、电子设备及可读存储介质
US11775718B2 (en) Methods and apparatus to simulate metastability for circuit design verification
US7990980B2 (en) Modeling non-deterministic priority queues for efficient model checking
CN110908882A (zh) 一种应用程序的性能分析方法、装置、终端设备及介质
CN107678967B (zh) 单元测试覆盖率生成方法、装置、可读存储介质及设备
CN114428642B (zh) 一种基于新型处理器架构的随机指令生成环境
CN113535580B (zh) 一种cts测试方法、装置及测试设备
CN113535578B (zh) 一种cts测试方法、装置及测试设备
CN109144793A (zh) 一种基于数据流驱动计算的故障校正装置和方法
US11227089B2 (en) System and method for implementing functional logics of verification IP using state design pattern based FSMs
CN117112447B (zh) 一种数据传输方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant