CN114237705A - 验证方法、装置、电子设备和计算机可读存储介质 - Google Patents
验证方法、装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN114237705A CN114237705A CN202111571707.4A CN202111571707A CN114237705A CN 114237705 A CN114237705 A CN 114237705A CN 202111571707 A CN202111571707 A CN 202111571707A CN 114237705 A CN114237705 A CN 114237705A
- Authority
- CN
- China
- Prior art keywords
- result
- unit
- execution
- microinstruction
- processing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种验证方法、验证装置、电子设备和计算机可读存储介质。该验证方法包括:获取微指令以作为验证激励;由作为被验证对象的执行单元对所述微指令进行处理得到执行结果;由参考模型单元得到对应于所述微指令的参考结果;以及将所述执行结果与所述参考结果进行比较,以对所述执行单元进行验证。该验证方法能够验证对指令译码得到的微指令的执行情况,提高了验证效率。
Description
技术领域
本公开的实施例涉及一种验证方法、装置、电子设备和计算机可读存储介质。
背景技术
随着处理器制造工艺的提高,高性能处理器的设计规模日益增大,设计复杂度也随之增加。大规模的设计对处理器的功能验证提出了挑战。目前处理器验证主要有形式验证、模拟验证,硬件仿真加速等方法。
形式验证是通过数学方法遍历处理器的所有可能行为来验证处理器设计是否存在功能缺陷。模拟验证是通过检查处理器设计在测试激励下的功能正确与否来验证处理器设计的正确性。硬件仿真加速是通过频率指标低于处理器设计指标的硬件来验证功能正确性。
发明内容
本公开至少一个实施例提供一种验证方法,包括:获取微指令以作为验证激励;由作为被验证对象的执行单元对微指令进行处理得到执行结果;由参考模型单元得到对应于微指令的参考结果;以及将执行结果与参考结果进行比较,以对执行单元进行验证。
例如,在本公开一实施例提供的验证方法中,由作为被验证对象的执行单元对微指令进行处理得到执行结果,包括:由执行单元根据微指令生成处理请求,并且向数据处理单元发送处理请求;从数据处理单元得到处理请求的处理结果;以及基于处理结果得到执行结果。
例如,在本公开一实施例提供的验证方法中,由参考模型单元得到对应于微指令的参考结果,包括:由参考模型单元从数据处理单元获取处理结果;以及基于处理结果得到参考结果。
例如,在本公开一实施例提供的验证方法中,数据处理单元包括:访存单元和/或定浮点转换单元,对应地处理请求包括读写请求和/或定浮点转换请求,读写请求用于访问访存单元,定浮点转换请求用于访问定浮点转换单元。
例如,在本公开一实施例提供的验证方法中,由参考模型单元得到对应于微指令的参考结果,包括:由参考模型单元对微指令进行执行异常检查;以及根据执行异常检查的检查结果得到参考结果。
例如,在本公开一实施例提供的验证方法中,在执行单元访问数据处理单元以得到执行结果的情形中,由参考模型单元对微指令进行执行异常检查,包括:响应于微指令依赖于从数据处理单元获取的处理结果,由参考模型单元根据处理结果对微指令进行执行异常检查。
例如,在本公开一实施例提供的验证方法中,根据执行异常检查的检查结果得到参考结果,包括:响应于执行异常检查的检测结果为微指令无异常,执行微指令得到参考结果。
例如,在本公开一实施例提供的验证方法中,响应于执行异常检查的检测结果为微指令无异常,执行微指令得到参考结果,包括:确定微指令对应的操作数类型;以及根据操作数类型,对操作数进行定点类型运算或者浮点类型运算得到参考结果。
例如,在本公开一实施例提供的验证方法中,将执行结果与参考结果进行比较,以对执行单元进行验证,包括:确定微指令的指令类型;根据指令类型,确定执行结果与参考结果之间的比较信息;以及比较执行结果中的比较信息与参考结果中的比较信息是否一致。
例如,在本公开一实施例提供的验证方法中,根据指令类型,确定执行结果与参考结果之间的比较信息包括以下至少一种:响应于指令类型为读写类型,比较信息包括读写地址信息和读写地址对应的数据信息;响应于指令类型为定浮点转换类型,比较信息包括定浮点转换数据;响应于指令类型为更新目标寄存器,比较信息包括目标寄存器中的数据信息;或者响应于指令类型为更新标志位,比较信息包括标志位的数据信息。
例如,在本公开一实施例提供的验证方法中,根据执行异常检查的检查结果得到参考结果,包括:响应于检查结果为微指令异常,生成参考异常信息,参考异常信息作为参考结果。
例如,在本公开一实施例提供的验证方法中,将执行结果与参考结果进行比较,以对执行单元进行验证,包括:响应于执行结果中存在异常记录,将异常记录与参考异常信息进行比较,以对执行单元进行验证。
例如,在本公开一实施例提供的验证方法中,由参考模型单元得到对应于微指令的参考结果,包括:响应于执行单元执行微指令退休,由参考模型单元得到对应于微指令的参考结果。
例如,在本公开一实施例提供的验证方法中,获取微指令以作为验证激励,包括:对指令译码得到微指令以作为验证激励。
本公开至少一个实施例提供一种验证装置,包括:参考模型单元和记分板,参考模型单元配置为获取微指令以作为验证激励,并且得到对应于微指令的参考结果;记分板配置为获取参考结果和执行结果,并且比较参考结果和执行结果,执行结果为由作为被验证对象的执行单元对微指令进行处理得到。
例如,在本公开一实施例提供的验证装置中,还包括指令译码单元,配置为对所述指令译码得到所述微指令,并且向所述参考模型单元和所述执行单元发送所述微指令以作为所述验证激励。
例如,在本公开一实施例提供的验证装置中,还包括:至少一个数据处理单元,每个数据处理单元配置为接受来自执行单元的处理请求,以及生成处理请求的处理结果,并且向执行单元提供处理结果;执行单元根据微指令生成处理请求,并且向至少一个数据处理单元中响应处理请求的数据处理单元发送处理请求,执行单元根据处理结果得到执行结果。
本公开至少一个实施例提供一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序指令;其中,所述一个或多个计算机程序指令被存储在所述存储器中,并由所述处理器执行时实现本公开至少一实施例提供的验证方法的指令。
本公开至少一个实施例提供一种计算机可读存储介质,非暂时性存储有计算机可读指令,当计算机可读指令由处理器执行时实现本公开至少一实施例提供的验证方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了本公开至少一个实施例提供的验证方法的流程图;
图1B示出了本公开至少一个实施例提供的验证装置的示意图;
图2示出了本公开至少一个实施例提供的图1A中步骤S20的方法流程图;
图3示出了本公开至少一个实施例提供的图1A中步骤S30的方法流程图;
图4示出了本公开至少一个实施例提供的图1A中步骤S30的另一方法流程图;
图5示出了本公开至少一个实施例提供的另一验证方法的流程图;
图6示出了本公开至少一个实施例提供的参考模型单元的方框图;
图7为本公开一些实施例提供的一种电子设备的示意框图;
图8为本公开一些实施例提供的另一种电子设备的示意框图;以及
图9为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
处理器的架构不断发生变化,X86指令集也有增加,导致对处理器设计进行验证的验证空间巨大,并且处理器微架构的优化提升是功能验证的重点与难点。面对高性能微处理器验证这一业界难题,全球的处理器公司都投入了大量的人力财力。若利用形式验证的方法对处理器设计进行验证,则需要通过数学方法遍历处理器设计所有的可能行为,大规模的处理器设计的验证空间巨大,超出目前工具的验证能力。形式验证一般用于局部复杂逻辑的验证。利用模拟验证的方法对处理器设计进行验证,一般不受限于处理器设计的规模。利用硬件仿真的方法对处理器设计进行验证,难以对处理器设计中的问题进行定位。
中央处理器的结构可以分为前端架构和后端架构。处理器前端主要包括分支预测(Branch Predict)、指令提取(Instruction Fetch)、指令译码(Instruction Decode)等用于调取指令的模块。处理器后端主要包括用于执行指令的模块。为了提高处理器的运行速度,处理器前端应该尽快地提供更多的指令给处理器后端以用于执行。在处理器的流水线中,除了可以机器指令(也简称“指令”)的方式进行后续执行操作,还可以将机器指令译码为一条或多条微指令(Micro-operation,Uop),并将微指令发到处理器后端执行单元以进行后续执行操作。目前,处理器大都采用乱序执行、顺序退出(或退休(retire))技术,从而提高指令(或微指令)的并行度,当一条指令(或微指令)在被执行、提交之后,最后一步就是退出。
本公开至少一个实施例提供了一种验证方法,该验证方法包括:获取微指令以作为验证激励;由作为被验证对象的执行单元对微指令进行处理得到执行结果;由参考模型单元得到对应于微指令的参考结果;以及将执行结果与参考结果进行比较,以对执行单元进行验证。该验证方法能够验证对指令译码得到的微指令的执行情况,提高了验证效率。
图1A示出了本公开至少一个实施例提供的验证方法的流程图。
如图1A所示,该验证方法可以包括步骤S10~S40。
步骤S10:获取微指令以作为验证激励。
步骤S20:由作为被验证对象的执行单元对微指令进行处理得到执行结果。
步骤S30:由参考模型单元得到对应于微指令的参考结果。
步骤S40:将执行结果与参考结果进行比较,以对执行单元进行验证。
图1B示出了本公开至少一个实施例提供的验证装置的示意图。下面结合图1B对图1A中的验证方法进行说明。
如图1B所示,验证装置100用于对执行单元102的功能进行验证。验证装置100可以包括参考模型单元103和记分板104。
参考模型单元103配置为获取微指令以作为验证激励。记分板104配置为获取参考结果和执行结果,并且比较参考结果和执行结果,执行结果为由作为被验证对象的执行单元对微指令进行处理得到。
如图1B所示,验证装置100还可以包括指令译码单元101。
指令译码单元101配置为对指令译码得到微指令,并且向参考模型单元103和执行单元102发送微指令。
例如,指令译码单元101对指令进行译码可以得到一个或者多个微指令,然后向参考模型单元103和执行单元102提供该一个或者多个微指令。
对于图1A中的步骤S10,例如参考模型单元103获取指令译码单元101对指令进行译码得到的微指令,所得到的微指令作为验证激励。
执行单元102可是被验证对象。执行单元102例如可以是被验证的硬件电路模型,硬件电路模型例如可以是由硬件语言(例如,Verilog)编写得到的。被验证的硬件电路模型可以是处理器设计中的部分功能模块或者也可以是整个处理器设计。
例如,执行单元102可以是执行定点运算或者浮点运算的功能模块,但不限于此,也可以是其他类型的执行单元。
对于图1A中的步骤S20,例如,执行单元102接收来自指令译码单元101的一个或者多个微指令,并且依次处理该一个或者多个微指令得到每个微指令的执行结果。
在本公开的一些实施例中,执行结果可以包括执行微指令异常产生的异常记录,以及微指令无异常时执行微指令得到的运算结果。
在本公开的一些实施例中,执行单元102例如可以包括微指令队列,以依次存储待执行的多个微指令,待执行的多个微指令例如以先进先出的原则被执行单元102依次执行。或者,指令译码单元101包括微指令队列,以依次存储待执行的多个微指令,并根据后续执行单元102的处理状态,依次向执行单元102提供(发射)待执行的微指令,在这种情况下,执行单元102例如可以不包括微指令队列。
在本公开的一些实施例中,执行单元102可以访问数据处理单元以得到执行结果。
数据处理单元例如可以包括访存单元和/或定浮点转换单元。如图1B所示,验证装置除包括指令译码单元101、执行单元102、参考模型单元103和记分板104之外,还可以包括访存单元105和定浮点转换单元106。
访存单元105和定浮点转换单元106接收来自执行单元102的处理请求,并且响应处理请求,向执行单元102和参考模型单元103提供处理结果。
例如,执行单元102向定浮点转换单元106发送处理请求2,定浮点转换单元106响应处理请求2生成处理结果2,并且向执行单元102和参考模型单元103发送处理结果2。
又例如,执行单元102向访存单元105发送处理请求1,访存单元105响应处理请求1生成处理结果1,并且向执行单元102和参考模型单元103发送处理结果1。
下文图2描述了执行单元访问数据处理单元以得到执行结果的实施例,在此不再赘述。
在本公开的另一些实施例中,执行单元102可以不需要访问数据处理单元便可以得到执行结果。例如,微指令为对立即数进行操作,或者对其他微指令已经获取的操作数进行操作,则此时执行单元不需要访问数据处理单元,整个微指令的执行完全由执行单元自身完成。
对于图1A中的步骤S30,例如,参考模型单元103接收来自指令译码单元101的一个或者多个微指令,并且对一个或者多个微指令进行处理得到每个微指令的参考结果。
在本公开的一些实施例中,参考模型单元103可以包括微指令队列,配置为接收指令译码单元发送的一个或者多个微指令,并且按照先进先出的原则维护此微指令队列中记录的微指令内容。同样地,在指令译码单元101包括微指令队列的情形,参考模型单元103也可以不包括微指令队列。
在本公开的一些实施例中,参考模型单元103可以基于验证激励输出正确的参考结果。
例如,参考模型单元103可以以表的形式存储有每个验证激励的参考结果。在该实施例中,步骤S30可以是参考模型单元103通过查询表的方式来得到验证激励的参考结果。
又例如,参考模型单元103包括已经经过了验证的功能模块,该功能模块与执行单元具有相同的功能。在该实施例中,步骤S30可以是参考模型单元103利用已经经过了验证的功能模块响应验证激励得到参考结果。
在本公开的一些实施例中,参考模型单元103的对微指令的执行不需要时序,可以选择执行单元102在微指令退休(retire)的时刻作为参考模型单元103工作的起点。因此,步骤S30可以包括:响应于执行单元执行微指令退休,由参考模型单元得到对应于微指令的参考结果。也即,在执行单元执行微指令结束之后,参考模型单元基于微指令生成参考结果。
记分板104例如配置为接收来自参考模型单元103的参考结果和来自执行单元的执行结果,并且比较参考结果和执行结果。
对于图1A中的步骤S40,例如通过图1B中的记分板104来比较执行结果和参考结果。
通过比较执行结果和参考结果来验证执行单元对微指令的执行是否正确。
例如,若某个微指令的执行结果与参考结果一致,则执行单元对该微指令的执行正确。又例如,若某个微指令的执行结果与参考结果不一致,则执行单元对该微指令的执行存在问题。
该验证方法能够对一个指令拆分成的多个微指令的执行情况均进行检查,从而便于问题定位,并且该验证方法不需要等到整个指令执行完成才得到验证结果,提高了问题定位效率。同时,该验证方法具有良好的重用性,可以用于对各种执行单元进行验证。例如,参考模型单元和待验证的执行单元可以具有相同的接口,这样便于接触到更高层次的系统验证中,从而提高了验证方法的复用性。
图2示出了本公开至少一个实施例提供的图1A中步骤S20的方法流程图。
如图2所示,步骤S20可以包括步骤S21~S23。
步骤S21:由执行单元根据微指令生成处理请求,并且向数据处理单元发送处理请求。
步骤S22:从数据处理单元得到处理请求的处理结果。
步骤S23:基于处理结果得到执行结果。
该实施例中的执行单元可以访问数据处理单元,从而利用从数据处理单元得到的处理结果得到执行结果,使得执行单元的验证更加全面。例如,指令译码单元101、执行单元102、访存单元105和定浮点转换单元106可以作为一个处理器使用。
对于步骤S21,如图1B所示,例如微指令为读写类型的微指令,则执行单元102根据微指令生成用于访问访存单元105的处理请求,并且向访存单元105发送该处理请求。在该实施例中,处理请求可以为读写请求,用于访问访存单元105。例如,读写请求用于请求从访存单元105读取数据信息(例如,操作数),或者请求向访存单元105写入数据信息。
如图1B所示,例如微指令为定浮点转换类型的微指令,则执行单元102根据微指令生成用于访问定浮点转换单元106的处理请求,并且向定浮点转换单元106发送该处理请求。在该实施例中,处理请求可以为定浮点转换请求,用于访问定浮点转换单元106。例如,定浮点转换请求用于请求定浮点转换单元106将定点数转换为浮点数,或者将浮点数转换为定点数。
对于步骤S22,例如,执行单元102接收来自访存单元105的处理结果。该处理结果为访存单元105响应读写请求得到的。处理结果例如可以是访存单元105从读写请求中的地址对应的存储空间中读取到的操作数。
又例如,执行单元102接收来自定浮点转换单元106的处理结果。该处理结果为定浮点转换单元106响应定浮点转换请求得到的。处理结果例如可以是对定点数进行转换后得到的浮点数,或者对浮点数进行转换后得到的定点数。
对于步骤S23,在本公开的一些实施例中,步骤S23可以包括对处理结果进行运算得到执行结果。例如,执行单元对处理结果进行加减乘除运算等定点数运算得到运算结果。
在本公开的另一些实施例中,步骤S23可以包括将处理结果存储到目标寄存器中,则执行结果为将目标寄存器中的数据更新为该处理结果中包含的数据。
图3示出了本公开至少一个实施例提供的图1A中步骤S30的方法流程图。
如图3所示,步骤S30可以包括步骤S31~S32。
步骤S31:由参考模型单元从数据处理单元获取处理结果。
步骤S32:基于处理结果得到参考结果。
该实施例可以保证参考模型单元得到的处理结果与执行单元得到处理结果相同,至少部分地避免了参考模型单元与执行单元分别对不同的处理结果进行处理导致的验证结果不准确的问题。
对于步骤S31,例如参考模型单元监听数据处理单元的接口,从而从数据处理单元的接口获取处理结果。也即,数据处理单元响应于接收到来自执行单元的处理请求,在向执行单元发送处理结果的同时,也向参考模型单元发送处理结果。
例如,如图1B所示,访存单元105响应于接收到来自执行单元102的处理请求,在向执行单元102发送处理结果的同时,也向参考模型单元103发送处理结果,从而参考模型单元103接收来自访存单元105的处理结果。
又例如,如图1B所示,定浮点转换单元106响应于接收到来自执行单元102的处理请求,在向执行单元102发送处理结果的同时,也向参考模型单元103发送处理结果,从而参考模型单元103接收来自定浮点转换单元106的处理结果。
对于步骤S32,例如参考模型单元对处理结果进行计算得到参考结果,或者参考模型单元向目标寄存器中存储处理结果得到参考结果。
需要理解的是,在执行单元向目标寄存器存储处理结果,以及参考模型单元向目标寄存器存储处理结果的情景中,虽然执行单元和参考模型单元都向同一个目标寄存器存储处理结果,但是执行单元将处理结果存入的目标寄存器的物理地址和参考模型单元将处理结果存入的目标寄存器的物理地址是不相同的。
图4示出了本公开至少一个实施例提供的图1A中步骤S30的另一方法流程图。
如图4所示,步骤S30可以包括步骤S33~S34。
步骤S33:由参考模型单元对微指令进行执行异常检查。
步骤S34:根据执行异常检查的检查结果得到参考结果。
对于步骤S33,执行异常检查可以是指对微指令在执行过程中是否会产生异常进行检查。
在本公开的一些实施例中,参考模型单元可以根据当前系统状态检查微指令的执行过程中是否会产生异常。
当前系统状态例如可以包括目标寄存器中的值、标志位的值等。例如,微指令为对两个操作数进行除法操作,若除数对应的目标寄存器中的值为0,则微指令在执行过程中会产生异常。又例如,微指令为对操作数进行开方,若操作数为负数,则微指令在执行过程中会产生异常。
在本公开的一些实施例中,微指令依赖于从数据处理单元获取的处理结果,参考模型单元根据当前系统状态检查微指令的执行过程中是否会产生异常包括:参考模型单元根据处理结果对微指令进行执行异常检查。即,当前系统状态为验证装置或者处理器在得到处理结果之后的状态。
例如,对于除法运算的微指令,访存单元根据读写请求更新目标存储空间中的数据,而该目标存储空间的数据作为除数,因此在得到访存单元的处理结果之后,对微指令进行执行异常检查。
对于步骤S34,响应于检查结果为微指令异常(即,微指令在执行过程中会产生异常),生成参考异常信息,参考异常信息作为参考结果。
在本公开的一些实施例中,在检查结果为微指令异常的情形中,参考模型单元不再进行对微指令的后续处理,直接生成参考异常信息,即参考结果。例如,参考模型单元可以包括异常缓存组件,配置为存储参考异常信息,以便与执行单元中的执行结果进行比较。
例如,步骤S40可以为判断执行结果中是否存在异常记录,若存在异常记录,则将异常记录与参考异常信息进行比较,以对执行单元进行验证。
对于步骤S34,响应于执行异常检查的检测结果为微指令无异常(即,微指令在执行过程中不会产生异常),执行微指令得到参考结果。
例如,确定微指令对应的操作数类型,以及根据操作数类型,对操作数进行定点类型运算或者浮点类型运算得到参考结果。
在本公开的一些实施例中,例如,参考模型单元包括运算组件,运算组件可以是定点指令运算组件和/或浮点指令运算组件。定点指令运算组件配置为对定点类型的微指令进行运算,浮点指令运算组件配置为对浮点类型的微指令进行运算。
在该些实施例中,步骤S40包括:确定微指令的指令类型;根据指令类型,确定执行结果与参考结果之间的比较信息;以及比较执行结果中的比较信息与参考结果中的比较信息是否一致。
在本公开的一些实施例中,响应于指令类型为读写类型,比较信息包括读写地址信息和读写地址对应的数据信息。
读写类型的微指令例如可以是从访存单元中读取数据信息,或者向访存单元中写入数据信息。
例如,微指令为向某个地址对应的存储空间中写入数据信息,则比较信息包括被写入数据信息的目标地址,以及向该目标地址写入的操作数。
对于读写类型的微指令,例如可以将参考结果中的目标地址和执行结果中的目标地址进行比较,确定参考结果中的目标地址和执行结果中的目标地址是否一致,并且比较并确定参考结果中目标地址中的操作数和执行结果中目标地址中的操作数是否一致。
响应于指令类型为定浮点转换类型,比较信息包括定浮点转换数据。
例如,定浮点转换数据包括未经过定浮点转换的初始数据和初始数据经过定浮点转换得到的目标数据。
响应于指令类型为更新目标寄存器,比较信息包括目标寄存器中的数据信息。
响应于指令类型为更新标志位,比较信息包括标志位的数据信息。例如,标志位的数据信息可以是标志位的值。
需要说明的是,执行结果与参考结果可以根据需要进行多项比较信息的比对。例如,比较执行结果与参考结果的定浮点转换数据和标志位的数据信息等。
图5示出了本公开至少一个实施例提供的另一验证方法的流程图。
如图5所示,该验证方法可以包括步骤S501~S515。
步骤S501:参考模型单元等待执行单元退休微指令。
步骤S502:参考模型单元判断是否有微指令退休;若有微指令退休,则执行步骤S503;若无微指令退休,则返回步骤S501继续等待执行单元退休微指令。
步骤S503:参考模型单元对退休的微指令进行执行异常检查。
步骤S504:参考模型单元判断微指令是否会产生异常。若微指令会产生异常,则执行步骤S505。若微指令不会产生异常,则执行步骤S506。
步骤S505:记分板比对来自参考模型单元的参考异常信息和来自执行单元的异常记录,并且等待下一个微指令。
步骤S506:参考模型单元确定微指令类型,并且进行微指令运算。
步骤S507:若微指令为读写类型的微指令,则执行步骤S508。
步骤S508:记分板比对参考结果和执行结果中的读写地址信息和读写地址对应的数据信息是否一致。
步骤S509:若微指令为定浮点转换类型的微指令,则执行步骤S510。
步骤S510:记分板比对参考结果和执行结果中的定浮点转换数据信息是否一致。
步骤S511:若微指令为更新目标寄存器的微指令,则执行步骤S512。
步骤S512:记分板比对目标寄存器中的数据信息。
步骤S513:若微指令为更新标志位的微指令,则执行步骤S514。
步骤S514:记分板比对标志位的数据信息。
步骤S515:记分板生成比对结果,并且参考模型单元继续等待下一个微指令。
需要理解的是,图5所示的流程图中的步骤S508、S510、S512和S514不是互斥关系,对于一个微指令的执行结果和参考结果的比对可以执行步骤S508、S510、S512和S514的一个或者多个步骤。
在本公开的一些实施例中,比对结果可以包括执行结果和参考结果中不匹配的信息,例如将执行结果和参考结果中不匹配的信息记录到日志中以便于问题定位,之后结束本次匹配并等待下一个微指令退休。
本公开至少一个实施例提供了一种验证装置,该验证装置包括参考模型单元和记分板。参考模型单元配置为获取微指令,并且得到对应于微指令的参考结果。记分板配置为获取参考结果和执行结果,并且比较参考结果和执行结果,执行结果为由作为被验证对象的执行单元对微指令进行处理得到。该验证装置能够验证对指令译码得到的微指令的执行情况,提高了验证效率。
该验证装置例如可以是如图1B所示的验证装置100。如图1B所示,验证装置100可以包括参考模型单元103和记分板104。如图1B所示,验证装置100除可以包括参考模型单元103和记分板104之外,还可以包括指令译码单元。指令译码单元配置为对指令译码得到微指令,并且向参考模型单元和执行单元发送微指令。
例如,验证装置100用于对执行单元102的功能进行验证。执行单元102例如可以执行上文参考图1A所描述的步骤S20。
指令译码单元101配置为对指令译码得到微指令,并且向参考模型单元和执行单元发送微指令以作为验证激励。
参考模型单元103配置为获取对指令译码得到的微指令,并且得到对应于微指令的参考结果。
参考模型单元103例如执行上文参考图1A所描述的步骤S10和步骤S30。
记分板104配置为获取参考结果和执行结果,并且比较参考结果和执行结果。执行结果为由作为被验证对象的执行单元对微指令进行处理得到。
记分板104例如执行上文参考图1A所描述的步骤S40。
在本公开的一些实施例中,验证装置除包括指令译码单元、参考模型单元和记分板之外,还可以包括至少一个数据处理单元。每个数据处理单元配置为接受来自执行单元的处理请求,以及生成处理请求的处理结果,并且向执行单元提供处理结果。执行单元根据微指令生成处理请求,并且向至少一个数据处理单元中响应处理请求的数据处理单元发送处理请求,执行单元根据处理结果得到执行结果。
例如,如图1B所示,验证装置100除包括指令译码单元101、参考模型单元103和记分板104之外,还可以包括访存单元105和定浮点转换单元106。访存单元105和定浮点转换单元106为数据处理单元。
例如,访存单元105配置为接收来自执行单元102的读写请求,以及生成读写请求的处理结果,并且向执行单元102和参考模型单元103提供处理结果,使得执行单元102根据处理结果得到执行结果,参考模型单元103根据处理结果得到参考结果。
例如,访存单元105接收来自执行单元102的读请求,从读请求携带的地址对应的存储空间中获取数据信息,并且向执行单元102和参考模型单元103提供数据信息。
又例如,访存单元105接收来自执行单元102的写请求,并且将执行写请求的处理结果提供给执行单元102和参考模型单元103。这里处理结果例如可以指示这个处理写请求是否成功、是否存在异常、写入的地址、写入的数据等信息中的至少一个。
例如,定浮点转换单元106配置为接受来自执行单元102的定浮点转换请求,以及生成定浮点转换的处理结果,并且向执行单元102提供处理结果,使得执行单元102根据处理结果得到执行结果。
图6示出了本公开至少一个实施例提供的参考模型单元103的方框图。
如图6所示,该参考模型单元103可以包括微指令队列113和运算组件123。
微指令队列113配置为接收指令译码模单元101发送的微指令,按照先进先出的原则维护此队列中记录的微指令内容。
运算组件123配置为基于微指令生成参考结果。运算组件123例如可以执行上文参考图1A的步骤S30。
在本公开的一些实施例中,运算组件123例如可以包括定点指令运算组件和/或浮点指令运算组件。关于定点指令运算组件和/或浮点指令运算组件请参考上文的相关描述。
在本公开的实施例中,运算组件123相对独立,具有良好的可扩展性,针对微指令增加或者更改的情况,只需要增加或者更改运算组件123中的相应算法即可,不影响参考模型单元103的工作流程。
在本公开的一些实施例中,如图6所示,参考模型单元还包括异常检测组件133和异常缓存组件143。
异常检测组件133配置为根据当前系统状态检查微指令在执行过程中是否产生异常。也即,异常检测组件133执行上文参考图4中的步骤S33,对微指令进行执行异常检查。
若确定微指令在执行过程中会产生异常,则把异常信息记录到异常缓存组件143中,以用于与执行单元102的结果比对。
在本公开的一些实施例中,参考模型单元103还包括获取组件,获取组件配置为从数据处理单元得到处理请求的处理结果,以便运算组件123基于处理结果得到参考结果。
在本公开的一些实施例中,参考模型单元103例如还可以包括读写地址队列、读写数据队列和定浮点转换队列。
读写地址队列和读写数据队列用于记录参考模型单元执行微指令得到的参考结果,参考结果包括读写地址信息以及数据信息。
例如,响应于参考模型单元103对微指令进行执行异常检查的检查结果为无异常,若微指令为读写类型的微指令,则执行微指令得到的读写地址信息分配到读写地址队列中,将执行微指令得到的数据信息分配到读写数据队列,读写地址信息和数据信息分别在读写地址队列和读写数据队列中等待记分板将其与执行单元得到的执行结果进行比对。
定浮点转换队列用于记录执行定浮点数据转换的微指令得到的定浮点转换数据。
又例如,响应于参考模型单元103对微指令进行执行异常检查的检查结果为无异常,若微指令为定浮点转换类型的微指令,则将执行微指令得到参考结果中的定浮点转换数据分配到定浮点转换队列中,以等待记分板将定浮点转换数据与执行单元得到的执行结果进行比对。
不同指令类型的微指令的参考结果分别使用不同的队列来存储,这样便于记分板进行比对,提高了验证效率。
指令译码单元101、参考模型单元103和记分板104、访存单元105和定浮点转换单元106例如可以为硬件语言编写的硬件电路。
需要说明的是,本公开的实施例中,验证装置100的各个单元与前述的验证方法的各个步骤对应,关于验证装置100的具体功能可以参考关于验证方法的相关描述,此处不再赘述。图1B所示的验证装置100的组件和结构只是示例性的,而非限制性的,根据需要,该验证装置100还可以包括其他组件和结构。
本公开的至少一个实施例还提供了一种电子设备,该电子设备包括处理器;存储器,包括一个或多个计算机程序指令;一个或多个计算机程序指令被存储在存储器中,并由处理器执行时实现本公开至少一个实施例提供的验证方法的指令。该电子设备能够验证对指令译码得到的微指令的执行情况,提高了验证效率。
图7为本公开一些实施例提供的一种电子设备的示意框图。如图7所示,该电子设备700包括处理器710和存储器720。存储器720用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器710用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器710运行时可以执行上文所述的验证方法中的一个或多个步骤。存储器720和处理器710可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器710可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器710可以为通用处理器或专用处理器,可以控制电子设备700中的其它组件以执行期望的功能。
例如,存储器720可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器710可以运行一个或多个计算机程序模块,以实现电子设备700的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备700的具体功能和技术效果可以参考上文中关于验证方法的描述,此处不再赘述。
图8为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备800例如适于用来实施本公开实施例提供的验证方法。电子设备800可以是终端设备等。需要注意的是,图8示出的电子设备800仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。在RAM 830中,还存储有电子设备800操作所需的各种程序和数据。处理装置810、ROM 820以及RAM 830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
通常,以下装置可以连接至I/O接口850:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置860;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置870;包括例如磁带、硬盘等的存储装置880;以及通信装置890。通信装置890可以允许电子设备800与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但应理解的是,并不要求实施或具备所有示出的装置,电子设备800可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述验证方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述验证方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置890从网络上被下载和安装,或者从存储装置880安装,或者从ROM820安装。在该计算机程序被处理装置810执行时,可以实现本公开实施例提供的验证方法中限定的功能。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现上述的验证方法。利用该计算机可读存储介质,验证对指令译码得到的微指令的执行情况,提高了验证效率。
图9为本公开一些实施例提供的一种存储介质的示意图。如图9所示,存储介质900用于存储非暂时性计算机可读指令910。例如,当非暂时性计算机可读指令910由计算机执行时可以执行根据上文所述的验证方法中的一个或多个步骤。
例如,该存储介质900可以应用于上述电子设备700中。例如,存储介质900可以为图7所示的电子设备700中的存储器720。例如,关于存储介质900的相关说明可以参考图7所示的电子设备700中的存储器720的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种验证方法,包括:
获取微指令以作为验证激励;
由作为被验证对象的执行单元对所述微指令进行处理得到执行结果;
由参考模型单元得到对应于所述微指令的参考结果;以及
将所述执行结果与所述参考结果进行比较,以对所述执行单元进行验证。
2.根据权利要求1所述的方法,其中,由作为所述被验证对象的所述执行单元对所述微指令进行处理得到所述执行结果,包括:
由所述执行单元根据所述微指令生成处理请求,并且向数据处理单元发送所述处理请求;
从所述数据处理单元得到所述处理请求的处理结果;以及
基于所述处理结果得到所述执行结果。
3.根据权利要求2所述的方法,其中,由所述参考模型单元得到对应于所述微指令的所述参考结果,包括:
由所述参考模型单元从所述数据处理单元获取所述处理结果;以及
基于所述处理结果得到所述参考结果。
4.根据权利要求2或3所述的方法,其中,所述数据处理单元包括:访存单元和/或定浮点转换单元,
对应地所述处理请求包括读写请求和/或定浮点转换请求,
其中,所述读写请求用于访问所述访存单元,所述定浮点转换请求用于访问所述定浮点转换单元。
5.根据权利要求1所述的方法,其中,由所述参考模型单元得到对应于所述微指令的所述参考结果,包括:
由所述参考模型单元对所述微指令进行执行异常检查;以及
根据所述执行异常检查的检查结果得到所述参考结果。
6.根据权利要求5所述的方法,其中,在所述执行单元访问数据处理单元以得到所述执行结果的情形中,由所述参考模型单元对所述微指令进行执行异常检查,包括:
响应于所述微指令依赖于从所述数据处理单元获取的处理结果,由所述参考模型单元根据所述处理结果对所述微指令进行所述执行异常检查。
7.根据权利要求5所述的方法,其中,根据所述执行异常检查的检查结果得到所述参考结果,包括:
响应于所述执行异常检查的检测结果为所述微指令无异常,执行所述微指令得到所述参考结果。
8.根据权利要求7所述的方法,其中,响应于所述执行异常检查的检测结果为所述微指令无异常,执行所述微指令得到所述参考结果,包括:
确定所述微指令对应的操作数类型;以及
根据所述操作数类型,对所述操作数进行定点类型运算或者浮点类型运算得到所述参考结果。
9.根据权利要求7所述的方法,其中,将所述执行结果与所述参考结果进行比较,以对所述执行单元进行验证,包括:
确定所述微指令的指令类型;
根据所述指令类型,确定所述执行结果与所述参考结果之间的比较信息;以及
比较所述执行结果中的比较信息与所述参考结果中的比较信息是否一致。
10.根据权利要求9所述的方法,其中,根据所述指令类型,确定所述执行结果与所述参考结果之间的比较信息包括以下至少一种:
响应于所述指令类型为读写类型,所述比较信息包括读写地址信息和所述读写地址对应的数据信息;
响应于所述指令类型为定浮点转换类型,所述比较信息包括定浮点转换数据;
响应于所述指令类型为更新目标寄存器,所述比较信息包括目标寄存器中的数据信息;或者
响应于所述指令类型为更新标志位,所述比较信息包括标志位的数据信息。
11.根据权利要求5所述的方法,其中,根据所述执行异常检查的检查结果得到所述参考结果,包括:
响应于所述检查结果为所述微指令异常,生成参考异常信息,其中,所述参考异常信息作为所述参考结果。
12.根据权利要求11所述的方法,其中,将所述执行结果与所述参考结果进行比较,以对所述执行单元进行验证,包括:
响应于所述执行结果中存在异常记录,将所述异常记录与所述参考异常信息进行比较,以对所述执行单元进行验证。
13.根据权利要求1所述的方法,其中,由所述参考模型单元得到对应于所述微指令的所述参考结果,包括:
响应于所述执行单元执行所述微指令退休,由所述参考模型单元得到对应于所述微指令的所述参考结果。
14.根据权利要求1所述的方法,其中,获取所述微指令以作为所述验证激励,包括:
对指令译码得到所述微指令以作为所述验证激励。
15.一种验证装置,包括:参考模型单元和记分板,其中,
所述参考模型单元配置为获取微指令以作为验证激励,并且得到对应于所述微指令的参考结果;
所述记分板配置为获取所述参考结果和执行结果,并且比较所述参考结果和所述执行结果,其中,所述执行结果为由作为被验证对象的执行单元对所述微指令进行处理得到。
16.根据权利要求15所述的装置,还包括:
指令译码单元,配置为对所述指令译码得到所述微指令,并且向所述参考模型单元和所述执行单元发送所述微指令以作为所述验证激励。
17.根据权利要求15所述的验证装置,还包括:
至少一个数据处理单元,其中,每个数据处理单元配置为接受来自所述执行单元的处理请求,以及生成所述处理请求的处理结果,并且向所述执行单元提供所述处理结果;
其中,所述执行单元根据所述微指令生成所述处理请求,并且向所述至少一个数据处理单元中响应所述处理请求的数据处理单元发送所述处理请求,所述执行单元根据所述处理结果得到所述执行结果。
18.一种电子设备,包括:
处理器;
存储器,包括一个或多个计算机程序指令;
其中,所述一个或多个计算机程序指令被存储在所述存储器中,并由所述处理器执行时实现权利要求1-14任一项所述的验证方法。
19.一种计算机可读存储介质,非暂时性存储有计算机可读指令,其中,当所述计算机可读指令由处理器执行时实现权利要求1-14任一项所述的验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111571707.4A CN114237705A (zh) | 2021-12-21 | 2021-12-21 | 验证方法、装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111571707.4A CN114237705A (zh) | 2021-12-21 | 2021-12-21 | 验证方法、装置、电子设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237705A true CN114237705A (zh) | 2022-03-25 |
Family
ID=80760321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111571707.4A Pending CN114237705A (zh) | 2021-12-21 | 2021-12-21 | 验证方法、装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237705A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840593A (zh) * | 2023-02-13 | 2023-03-24 | 飞腾信息技术有限公司 | 处理器中的执行部件的验证方法及装置、设备、存储介质 |
-
2021
- 2021-12-21 CN CN202111571707.4A patent/CN114237705A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840593A (zh) * | 2023-02-13 | 2023-03-24 | 飞腾信息技术有限公司 | 处理器中的执行部件的验证方法及装置、设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402468B2 (en) | Processing device for performing convolution operations | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
US9256428B2 (en) | Load latency speculation in an out-of-order computer processor | |
WO2017185396A1 (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
GB2249414A (en) | Predicting the performance of a computer system | |
US9851979B2 (en) | Split-level history buffer in a computer processing unit | |
US8707102B2 (en) | Method and program for verifying operation of processor | |
CN113779912B (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
CN106030532B (zh) | 用于事务存储器程序的软件回放器 | |
TWI567636B (zh) | 在硬體結構中排序元素的方法與設備 | |
CN114237705A (zh) | 验证方法、装置、电子设备和计算机可读存储介质 | |
JP6234639B2 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
WO2017185388A1 (zh) | 一种用于生成服从一定分布的随机向量的装置和方法 | |
US11106478B2 (en) | Simulation device, simulation method, and computer readable medium | |
US20150178090A1 (en) | Instruction and Logic for Memory Disambiguation in an Out-of-Order Processor | |
US7720669B2 (en) | Method, system and computer program product for register management in a simulation environment | |
US9715432B2 (en) | Memory fault suppression via re-execution and hardware FSM | |
CN108733625B (zh) | 运算装置及方法 | |
JP2014194746A (ja) | シミュレーション装置及びシミュレーション方法及びプログラム | |
US9460247B2 (en) | Memory frame architecture for instruction fetches in simulation | |
CN112214244A (zh) | 一种运算装置及其操作方法 | |
US20240176616A1 (en) | Processor and method of controlling processor | |
US20240176621A1 (en) | Processor | |
JP6234640B2 (ja) | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム | |
US20150127318A1 (en) | Apparatus and method for simulating an operation of an out-of-order processor |
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 |