CN114168200B - 多核处理器访存一致性的验证系统及方法 - Google Patents
多核处理器访存一致性的验证系统及方法 Download PDFInfo
- Publication number
- CN114168200B CN114168200B CN202210131860.3A CN202210131860A CN114168200B CN 114168200 B CN114168200 B CN 114168200B CN 202210131860 A CN202210131860 A CN 202210131860A CN 114168200 B CN114168200 B CN 114168200B
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory
- simulator
- processor core
- checker
- 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
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提出一种多核处理器访存一致性的验证系统及方法,其中,该系统包括:仿真器、模拟器、检查器和全局共享内存,其中,仿真器,用于将存数指令存入与处理器核对应的第一缓冲区,并将存数指令从与处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将仿真器中的指令执行结果发送给检查器;模拟器,用于将存数指令存入与处理器核对应的第二缓冲区,并将存数指令从与处理器核对应的第二缓冲区中写入全局共享内存,以及将模拟器中的指令执行结果发送给检查器;检查器,用于对仿真器中的指令执行结果和模拟器中的指令执行结果进行一致性验证。本申请实现了多个处理器核对访存指令的定序,及仿真器和模拟器结果的可对比,从而验证仿真结果正确性。
Description
技术领域
本申请涉及处理器技术领域,尤其涉及一种多核处理器访存一致性的验证系统及方法。
背景技术
相关技术中,在进行处理器设计时,需要对处理器设计的中间阶段进行功能验证,以保证最终的设计实现与设计规范的功能一致性。在对多核心处理器进行访存验证时,由于访问次序的不同,造成读写结果不同,从而使得对多核处理器仿真结果的正确性验证较为困难。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种多核处理器访存一致性的验证系统,以实现多个处理器核对访存指令的定序,并实现对处理器核的仿真器和模拟器对同一访存指令执行结果的对比,以验证仿真结果正确性。
本申请的第二个目的在于提出用于多核处理器访存一致性的验证系统中的方法。
为达上述目的,本申请第一方面提出了一种多核处理器访存一致性的验证系统,包括:仿真器、模拟器、检查器和全局共享内存,所述仿真器内设置有多个第一缓冲区,所述模拟器内设置有多个第二缓冲区,所述多个第一缓冲区与所述多个第二缓冲区一一对应,且每个处理器核对应一个所述第一缓冲区和一个所述第二缓冲区,其中,所述仿真器,用于在采集到处理器核接收的访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第一缓冲区,并将所述存数指令从与所述处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将所述仿真器中的指令执行结果发送给所述检查器;所述模拟器,用于模拟所述处理器核接收所述访存指令,并在所述访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第二缓冲区,并将所述存数指令从与所述处理器核对应的第二缓冲区中写入所述全局共享内存,以及将所述模拟器中的指令执行结果发送给所述检查器;所述检查器,用于对所述仿真器中的指令执行结果和所述模拟器中的指令执行结果进行一致性验证。
在一种实现方式中,所述第一缓冲区和所述第二缓冲区包括存数指令写队列。
在一种实现方式中,所述高速缓冲存储器为一级高速缓冲存储器,和/或二级高速缓冲存储器。
在一种实现方式中,所述仿真器还用于在所述采集到对应处理器核接收的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;所述模拟器还用于在模拟所述处理器核接收到的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;所述检查器还用于将所述仿真器对所述非存数指令的执行结果与所述模拟器对所述非存数指令的执行结果进行一致性验证。
在一种实现方式中,所述仿真器与对应模拟器的指令执行过程同时进行。
在一种实现方式中,所述检查器还用于在验证所述仿真器中的指令执行结果与所述模拟器中的指令执行结果不一致时,进行报错处理。
在一种可选地实现方式中,所述检查器在验证有错误发生时将出错的访存指令信息打印至文件中,或者将所述出错的访存指令信息输出至显示屏幕上。
在一种实现方式中,所述检查器为一个或多个。
本申请实施例的系统,可以实现多个处理器核对访存指令的定序,并将每个处理器核的仿真器及模拟器的指令执行结果比对,从而实现仿真器和模拟器结果的对比,同时实现方法简单、扩展性好且便于调试。
为达上述目的,本申请第二方面提出了一种用于本申请所述多核处理器访存一致性的验证系统中的方法,包括:处理器核的仿真器在采集到处理器核接收的访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第一缓冲区,并将所述存数指令从与所述处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将所述仿真器中的指令执行结果发送给所述检查器;模拟器模拟所述处理器核接收所述访存指令,并在所述访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第二缓冲区,并将所述存数指令从与所述处理器核对应的第二缓冲区中写入所述全局共享内存,以及将所述模拟器中的指令执行结果发送给所述检查器;所述检查器对所述仿真器中的指令执行结果和所述模拟器中的指令执行结果进行一致性验证。
在一种实现方式中,所述第一缓冲区和所述第二缓冲区包括存数指令写队列。
在一种实现方式中,所述高速缓冲存储器为一级高速缓冲存储器,和/或二级高速缓冲存储器。
在一种实现方式中,该方法还包括:所述仿真器在采集到处理器核接收的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;所述模拟器在模拟所述处理器核接收到的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;所述检查器将所述仿真器对所述非存数指令的执行结果与所述模拟器对所述非存数指令的执行结果进行一致性验证。
在一种实现方式中,该方法还包括:所述仿真器与对应模拟器的方法步骤同时进行。
在一种实现方式中,该方法还包括:所述检查器在验证所述仿真器中的指令执行结果与所述模拟器中的指令执行结果不一致时,进行报错处理。
在一种可选地实现方式中,所述进行报错处理,包括:将出错的访存指令信息打印至文件中,或者将所述出错的访存指令信息输出至显示屏幕上。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为相关技术中多核处理器结构的示意图;
图2为本申请实施例提供的一种多核处理器访存一致性的验证系统的示意图;
图3为本申请实施例提供的另一种多核处理器访存一致性的验证系统的示意图;
图4为本申请实施例提供的一种用于多核处理器访存一致性的验证系统的方法流程图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。其中,在本申请的描述中“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
可以理解,对于单核处理器的访存验证来说,对内存空间的取数操作的结果,即为最近一次对相同地址的内存空间的存数操作写入的值,因此存数操作的值唯一确定了此后对同一地址取数操作的结果。即单核处理器环境下的串行程序每次运行的结果具有唯一确定性。
与单核处理器不同,相关技术中,如图1所示,片上多核处理器采用共享存储系统,多个处理器核读写同一存储单元时,多个处理器核对共享存储的访存,由于定序不同,其结果不唯一。这种访存结果的不唯一性使得进行多核处理器仿真验证时,确定其结果正确性,成为一个复杂度较高,且难于解决的问题。
特别对于高性能处理器核,会采用提交存数指令写队列(Store Buffer)技术,即通过预先缓存提交的存数指令,让存数指令尽快退出访存队列和指令重定序缓存(ReorderBuffer),在提交存数指令写队列中等待写高速缓存。
为进一步提高执行效率,如图1所示,会将所有提交的存数操作指令存到StoreBuffer内,组成存数指令写队列。此时该存数操作指令还未写入高速缓冲存储器(Cache),而预先缓存在存数队列中,当存数指令在存数指令写队列中时,只对本处理器核的访存指令可见,对其他处理器核的访存指令不可见。即只有本处理器核的取数指令可以获取该存数指令的结果,其他处理器核的取数指令得不到该存数指令的结果。由于其它处理器核只会通过缓存一致性协议访问本处理器核的缓存,而看不到本处理器核的存数指令写队列里面的值,就会导致访存指令执行出来的结果会有不确定性。又因为模拟器都是行为级的模拟,并不涉及各种缓冲区、队列、存数指令写队列等的处理器微架构的模拟,这就导致将处理器核的仿真对于访存指令的执行结果,与模拟器对于同一访存指令的执行结果进行比对较为困难。
基于上述问题,本申请提供了一种多核处理器访存一致性的验证系统及方法,通过在每个处理器核的模拟器中增加存数指令写队列,使得该存数指令写队列中的数据在未写到全局共享内存前,模拟器的存数结果仅对应处理器核可见,对于其他处理器核都不可见,这样可以保证全局共享内存中的存数结果为模拟器的运行结果,从而可以解决模拟器给出的参考结果,与处理器给出的结果,在满足存储一致性模型前提下的访存结果不确定的问题,使得仿真器和模拟器结果的对比成为可能。下面参考附图描述本申请实施例的多核处理器访存一致性的验证系统及方法。
需要说明的是,本申请的实施例中的处理器以CPU(Central Processing Unit,中央处理器)为例。请参见图2,图2为本申请实施例提供的多核处理器访存一致性的验证系统的示意图。该多核处理器访存一致性的验证系统,将待验证处理器核写缓存,作为存数指令对多核处理器全局生效的定序点。在每个处理器核的模拟器中都增加第二缓冲区,每个第一缓冲区及每个第二缓冲区都包括Store Buffer,Store Buffer中的数据在没有写入至全局共享内存前,存数结果仅对于该模拟器对应的处理器核可见,而对于其他处理器核都不可见。全局共享内存中的数据对于所有的处理器核都可见。在进行仿真验证的待验证处理器核写缓存时,将对应的模拟器的Store buffer中的值更新到共享全局内存中,检查器将待验证的多核处理器的每个处理器核的仿真器的指令运行结果,与每个处理器核对应的模拟器的指令运行结果进行对比,以完成对多核处理器访存一致性的验证。
如图2所示,该多核处理器访存一致性的验证系统可以包括仿真器201、模拟器202、检查器203及全局共享内存204,仿真器201内设置有多个第一缓冲区,模拟器202内设置有多个第二缓冲区,多个第一缓冲区与所多个第二缓冲区一一对应,且每个处理器核对应一个第一缓冲区和一个第二缓冲区。其中,第一缓冲区可包括存数指令写队列;第二缓冲区可包括存数指令写队列。
需要说明的是,仿真器201、模拟器202及检查器203可以是一个也可以是多个,即仿真器201、模拟器202及检查器203的数量可以与处理器核的数量相同,或者也可以少于处理器核的数量,图2以一个仿真器201、一个模拟器202及一个检查器203为例。
其中,仿真器201用于:在采集到处理器核接收的访存指令为存数指令时,将存数指令存入与处理器核对应的第一缓冲区,并将存数指令从与处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将仿真器201中的指令执行结果发送给检查器203。
举例而言,仿真器201响应于采集到对应处理器核接收到的访存指令为存数指令时,将该存数指令存入该处理器核对应的第一缓冲区,并将该存数指令从该第一缓冲区写入高速缓冲存储器,同时使用仿真工具,将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。
在一种实现方式中,高速缓冲存储器可以为一级高速缓冲存储器,和/或二级高速缓冲存储器。
举例而言,仿真器201将采集到对应处理器核接收到的存数指令从第一缓冲区写入高速缓冲存储器时,可以根据实际情况,将该存数指令从该第一缓冲区写入一级高速缓冲存储器;或者,将该存数指令从该第一缓冲区写入二级高速缓冲存储器;或者,将该存数指令从该第一缓冲区,同时写入一级高速缓冲存储器及二级高速缓冲存储器。
需要说明的是,在对多个处理器核进行仿真验证时,可使用同一个仿真器201对多个处理器核的接收到的访存指令进行采集并执行,每个处理器核对应仿真器201中的一个第一缓冲区,或者,也可为每个处理器核分配一个仿真器201,以对该处理器核的访存指令进行采集及执行。作为一种示例,请参见图3,图3为本申请实施例提供的另一种多核处理器访存一致性的验证系统的示意图。如图3所示,可为每个处理器核设置一个对应的仿真器301,每个仿真器301中设置有一个与该处理器核对应的第一缓冲区。其中,图3中的仿真器301与图2中的仿真器201具有相同的功能。
作为一种示例,仿真器201使用的仿真工具可以包括但不限于:Verilator、VCS(Verilog Compiler Simulator,编译型Verilog模拟器)。
需要说明的是,仿真器201将存数指令存入处理器核对应的第一缓冲区时,该存数指令只对该处理器核的访存指令可见,而对其他处理器核的访存指令不可见。
在一种实现方式中,第一缓冲区包括存数指令写队列。
举例而言,仿真器201响应于采集到对应处理器核接收到的访存指令为存数指令时,将该存数指令存入该处理器核对应的第一缓冲区的存数指令写队列,按照队列次序将该存数指令从该第一缓冲区写入高速缓冲存储器,同时使用仿真工具,将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。在一种实现方式中,仿真器201还用于:在采集到处理器核接收的访存指令为非存数指令时,执行非存数指令,并将非存数指令的执行结果发送给检查器203。
举例而言,仿真器201响应于采集到处理器接收到的访存指令为非存数指令时,使用仿真工具,将该非存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。
模拟器202,用于模拟处理器核接收访存指令,并在访存指令为存数指令时,将存数指令存入与处理器核对应的第二缓冲区,并将存数指令从与处理器核对应的第二缓冲区中写入全局共享内存,以及将模拟器202中的指令执行结果发送给检查器203。
举例而言,模拟器202响应于模拟处理器核接收的访存指令为存数指令时,将该存数指令存入与该处理器核对应的第二缓冲区,并将该存数指令从与该处理器核对应的第二缓冲区中写入全局共享内存,同时将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。
需要说明的是,在本申请实施例中,模拟器202运行与仿真器201相同的应用程序或随机生成的指令序列,并使用高级汇编语言(如:C语言)对接收到的访存指令进行行为级模拟,从而在不涉及处理器的具体微架构的情况下,直接计算出接受到的存数指令的对应执行结果。
在对多个处理器核进行仿真验证时,可使用一个模拟器202对多个处理器核的接收到的访存指令进行模拟接收并执行,并为每个处理器核设置一个对应第二缓冲区,或者,也可为每个处理器核分配一个模拟器202,以对该处理器核的访存指令进行模拟接受及执行。作为一种示例,请参见图3。如图3所示,可为每个处理器核设置一个对应的模拟器302,每个模拟器302中设置有一个与该处理器核对应的第二缓冲区。其中,图3中的模拟器302与图2中的模拟器202具有相同的功能。
在一种实现方式中,第二缓冲区包括存数指令写队列。
举例而言,模拟器202响应于模拟处理器核接收的访存指令为存数指令时,将该存数指令存入与该处理器核对应的第二缓冲区的存数指令写队列,按照队列次序将该存数指令从该第二缓冲区写入全局共享内存,同时将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。
在一种实现方式中,模拟器202还用于在模拟处理器核接收到的访存指令为非存数指令时,执行非存数指令,并将非存数指令的执行结果发送给检查器203。
举例而言,模拟器202响应于模拟处理器核接收的访存指令为非存数指令时,将该非存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器203。
还值得注意的是,仿真器201接收访存指令,将指令的数据存入对应缓冲区,模拟器202同步,即模拟器202同步接收同一访存指令,将指令的数据存入对应缓冲区。仿真器201将数据写入高速缓冲存储器(Cache),模拟器202同步,即模拟器202同步将相同数据存入全局共享内存。仿真器201将指令的执行结果发送至检查器203,模拟器202同步,即模拟器202同步将同一指令的执行结果发送至检查器203。
检查器203,用于对仿真器201中的指令执行结果和模拟器202中的指令执行结果进行一致性验证。
在一种实现方式中,检查器203还用于:在验证仿真器201中的指令执行结果与模拟器202中的指令执行结果不一致时,进行报错处理。
举例而言,检查器203在接受到同一处理器核的仿真器201及模拟器202发送的对同一指令的两个执行结果后,对两个指令执行结果进行一致性验证;响应于两个指令执行结果一致,则不做处理;响应于两个指令执行结果不一致,则进行报错处理。
在一种实现方式中,本申请实施例提供的验证系统中,仿真器201与对应模拟器202的指令执行过程同时进行。
举例而言,仿真器201将采集到对应处理器核接收的存数指令存入与该处理器核对应的第一缓冲区的同时,模拟器202同步将模拟同一处理器核接收的存数指令存入与该处理器核对应的第二缓冲区;仿真器201将该存数指令从该处理器核对应的第一缓冲区中第二存数指令写队列写入高速缓冲存储器的同时,模拟器202同步将该存数指令从与该处理器核对应的第二缓冲区中的第一存数指令写队列写入全局共享内存;仿真器201将该指令的执行结果发送给检查器203的同时,模拟器202同步将该指令的执行结果发送给同一检查器203。由此保持对比的一致性。
在一种实现方式中,检查器203还用于将仿真器201对非存数指令的执行结果与模拟器202对非存数指令的执行结果进行一致性验证。
需要说明的是,在本申请的实施例中,检查器203还可对处理器核能够执行的任意指令进行检查,并在指令执行结果不一致时,进行报错处理。
在一种可选地实现方式中,检查器203用于:在验证有错误发生时将出错的访存指令信息打印至文件中,或者将出错的访存指令信息输出至显示屏幕上。
在一种实现方式中,该系统中的检查器203为一个或多个。
举例而言,在同时对多个处理器核进行仿真验证时,可使用同一个检查器203对对仿真器201与模拟器202对每个处理器核的同一指令的指令执行结果进行一致性验证;或者,可为每个处理器核分配一个检查器203,以对仿真器201与模拟器202对每个处理器核的同一指令的指令执行结果进行一致性验证。
需要说明的是,本申请实施例中的指令执行结果,可以为指令提交时的执行结果,或为指令执行过程中的执行结果。
通过实施本申请实施例,可以实现多个处理器核对访存指令的定序,并将每个处理器核的仿真器及模拟器的指令执行结果比对,从而实现仿真器和模拟器结果的对比,实现简单、扩展性好且便于调试。
请参见图4,图4为本申请实施例提供的一种用于多核处理器访存一致性的验证系统的方法的流程图。如图4所示,该方法可以包括以下步骤。
步骤S401,在采集到处理器核接收的访存指令为存数指令时,将存数指令存入与处理器核对应的第一缓冲区,并将存数指令从与处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将仿真器中的指令执行结果发送给检查器。在一种实现方式中,仿真器在采集到处理器核接收的访存指令为非存数指令时,执行非存数指令,并将非存数指令的执行结果发送给检查器。
举例而言,仿真器响应于采集到处理器核接收到的访存指令为存数指令时,将该存数指令存入该处理器核对应的第一缓冲区,并将该存数指令从该第一缓冲区写入高速缓冲存储器,同时使用仿真工具,将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器;或者,响应于采集到处理器接收到的访存指令为非存数指令时,使用仿真工具,将该非存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器。
在一种实现方式中,第一缓冲区包括存数指令写队列。
举例而言,仿真器响应于采集到对应处理器核接收到的访存指令为存数指令时,将该存数指令存入该处理器核对应的第一缓冲区的存数指令写队列,按照队列次序将该存数指令从该第一缓冲区写入高速缓冲存储器,同时使用仿真工具,将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器。
在一种实现方式中,高速缓冲存储器为一级高速缓冲存储器,和/或二级高速缓冲存储器。
举例而言,仿真器将采集到对应处理器核接收到的存数指令从第一缓冲区写入高速缓冲存储器时,可以根据实际情况,将该存数指令从该第一缓冲区写入一级高速缓冲存储器;或者,将该存数指令从该第一缓冲区写入二级高速缓冲存储器;或者,将该存数指令从该第一缓冲区,同时写入一级高速缓冲存储器及二级高速缓冲存储器。
步骤S402,模拟器模拟处理器核接收访存指令,并在访存指令为存数指令时,将存数指令存入与处理器核对应的第二缓冲区,并将存数指令从与处理器核对应的第二缓冲区中写入全局共享内存,以及将模拟器中的指令执行结果发送给检查器。
在一种实现方式中,模拟处理器核接收到的访存指令为非存数指令时,执行非存数指令,并将非存数指令的执行结果发送给检查器。
举例而言,模拟器响应于模拟处理器核接收的访存指令为存数指令时,将该存数指令存入与该处理器核对应的第二缓冲区,并将该存数指令从与该处理器核对应的第二缓冲区中写入全局共享内存,同时将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器;或者,在模拟处理器核接收到的访存指令为非存数指令时,执行非存数指令,并将非存数指令的执行结果发送给检查器。
在一种实现方式中,第二缓冲区包括存数指令写队列。
举例而言,模拟器响应于模拟处理器核接收的访存指令为存数指令时,将该存数指令存入与该处理器核对应的第二缓冲区的存数指令写队列,按照队列次序将该存数指令从该第二缓冲区写入全局共享内存,同时将该存数指令输入预先设置的应用程序或随机生成的指令序列,以得到执行结果,并将该执行结果发送给检查器。
进一步地,在本申请的一种实现方式中,步骤S401及步骤S402是同步进行的。
举例而言,仿真器将采集到对应处理器核接收的存数指令存入与该处理器核对应的第一缓冲区的同时,模拟器同步将模拟同一处理器核接收的存数指令存入与该处理器核对应的第二缓冲区;仿真器将该存数指令从该处理器核对应的第一缓冲区中第二存数指令写队列写入高速缓冲存储器的同时,模拟器同步将该存数指令从与该处理器核对应的第二缓冲区中的第一存数指令写队列写入全局共享内存;仿真器将该指令的执行结果发送给检查器的同时,模拟器同步将该指令的执行结果发送给同一检查器。由此保持对比的一致性。
步骤S403,检查器对仿真器中的指令执行结果和模拟器中的指令执行结果进行一致性验证。
在一种实现方式中,检查器还将仿真器对非存数指令的执行结果与模拟器对非存数指令的执行结果进行一致性验证。
在一种实现方式中,检查器在验证仿真器中的指令执行结果与模拟器中的指令执行结果不一致时,进行报错处理。
举例而言,检查器在接受到仿真器及模拟器发送的对同一处理器核的同一访存指令的两个执行结果后,对两个访存指令执行结果进行一致性验证;响应于两个指令执行结果一致则不做处理;或者,响应于两个指令执行结果不一致,则进行报错处理。
进一步地,在本申请实施例的一种可能的实现方式中,进行报错处理包括:将出错的访存指令信息打印至文件中,或者将出错的访存指令信息输出至显示屏幕上。
举例而言,检查器可将出错的访存指令信息,打印至相应的文件中,以方便用户进行调阅或存档,或直接在屏幕上进行显示。
需要说明的是,本申请实施例中的指令执行结果,可以为指令提交时的执行结果或为指令执行过程中的执行结果,在此不做具体限定。
通过实施本申请实施例,可以实现多个处理器核对访存指令的定序,并将每个处理器核的仿真器及模拟器的指令执行结果比对,从而实现仿真器和模拟器结果的对比,实现方法简单、扩展性好且便于调试。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (15)
1.一种多核处理器访存一致性的验证系统,其特征在于,包括:仿真器、模拟器、检查器和全局共享内存,所述仿真器内设置有多个第一缓冲区,所述模拟器内设置有多个第二缓冲区,所述多个第一缓冲区与所述多个第二缓冲区一一对应,且每个处理器核对应一个所述第一缓冲区和一个所述第二缓冲区,其中,
所述仿真器,用于在采集到处理器核接收的访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第一缓冲区,并将所述存数指令从与所述处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将所述仿真器中的指令执行结果发送给所述检查器;
所述模拟器,用于模拟所述处理器核接收所述访存指令,并在所述访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第二缓冲区,并将所述存数指令从与所述处理器核对应的第二缓冲区中写入所述全局共享内存,以及将所述模拟器中的指令执行结果发送给所述检查器;
所述检查器,用于对所述仿真器中的指令执行结果和所述模拟器中的指令执行结果进行一致性验证。
2.根据权利要求1所述的验证系统,其特征在于,所述第一缓冲区和所述第二缓冲区包括存数指令写队列。
3.根据权利要求1所述的验证系统,其特征在于,所述高速缓冲存储器为一级高速缓冲存储器,和/或二级高速缓冲存储器。
4.根据权利要求1所述的验证系统,其特征在于,所述仿真器还用于在所述采集到对应处理器核接收的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;
所述模拟器还用于在模拟所述处理器核接收到的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;
所述检查器还用于将所述仿真器对所述非存数指令的执行结果与所述模拟器对所述非存数指令的执行结果进行一致性验证。
5.根据权利要求1所述的验证系统,其特征在于,所述仿真器与对应模拟器的指令执行过程同时进行。
6.根据权利要求1所述的验证系统,其特征在于,所述检查器还用于在验证所述仿真器中的指令执行结果与所述模拟器中的指令执行结果不一致时,进行报错处理。
7.根据权利要求5所述的验证系统,其特征在于,所述检查器在验证有错误发生时将出错的访存指令信息打印至文件中,或者将所述出错的访存指令信息输出至显示屏幕上。
8.根据权利要求1至7中任一项所述的验证系统,其特征在于,所述检查器为一个或多个。
9.一种用于如权利要求1至8中任一项所述的验证系统中的方法,其特征在于,包括:
处理器核的仿真器在采集到处理器核接收的访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第一缓冲区,并将所述存数指令从与所述处理器核对应的第一缓冲区中写入高速缓冲存储器,以及将所述仿真器中的指令执行结果发送给所述检查器;
模拟器模拟所述处理器核接收所述访存指令,并在所述访存指令为存数指令时,将所述存数指令存入与所述处理器核对应的第二缓冲区,并将所述存数指令从与所述处理器核对应的第二缓冲区中写入所述全局共享内存,以及将所述模拟器中的指令执行结果发送给所述检查器;
所述检查器对所述仿真器中的指令执行结果和所述模拟器中的指令执行结果进行一致性验证。
10.根据权利要求9所述的方法,其特征在于,所述第一缓冲区和所述第二缓冲区包括存数指令写队列。
11.根据权利要求9所述的方法,其特征在于,所述高速缓冲存储器为一级高速缓冲存储器,和/或二级高速缓冲存储器。
12.根据权利要求9所述的方法,其特征在于,还包括:
所述仿真器在采集到处理器核接收的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;
所述模拟器在模拟所述处理器核接收到的访存指令为非存数指令时,执行所述非存数指令,并将所述非存数指令的执行结果发送给检查器;
所述检查器将所述仿真器对所述非存数指令的执行结果与所述模拟器对所述非存数指令的执行结果在进行一致性验证。
13.根据权利要求9所述的方法,其特征在于,所述仿真器与对应模拟器的方法步骤同时进行。
14.根据权利要求9所述的方法,其特征在于,还包括:
所述检查器在验证所述仿真器中的指令执行结果与所述模拟器中的指令执行结果不一致时,进行报错处理。
15.根据权利要求14所述的方法,其特征在于,所述进行报错处理,包括:
将出错的访存指令信息打印至文件中,或者将所述出错的访存指令信息输出至显示屏幕上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210131860.3A CN114168200B (zh) | 2022-02-14 | 2022-02-14 | 多核处理器访存一致性的验证系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210131860.3A CN114168200B (zh) | 2022-02-14 | 2022-02-14 | 多核处理器访存一致性的验证系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114168200A CN114168200A (zh) | 2022-03-11 |
CN114168200B true CN114168200B (zh) | 2022-04-22 |
Family
ID=80489909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210131860.3A Active CN114168200B (zh) | 2022-02-14 | 2022-02-14 | 多核处理器访存一致性的验证系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168200B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116167310A (zh) * | 2023-04-25 | 2023-05-26 | 上海芯联芯智能科技有限公司 | 一种验证多核心处理器缓存一致性的方法及装置 |
CN116431422B (zh) * | 2023-06-14 | 2023-09-29 | 睿思芯科(深圳)技术有限公司 | 用于多仿真环境的访存验证系统、方法及相关设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732359B2 (en) * | 2011-12-07 | 2014-05-20 | The Mathworks, Inc. | Data sharing in high-fidelity simulation and real-time multi-core execution |
CN102880770B (zh) * | 2012-10-29 | 2014-12-24 | 无锡江南计算技术研究所 | 基于宏指令队列的cpu访存序列仿真模型 |
CN105959176B (zh) * | 2016-04-25 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 基于Gem5模拟器的一致性协议测试方法和系统 |
CN109032879B (zh) * | 2017-06-09 | 2021-08-20 | 展讯通信(上海)有限公司 | 多核处理器访存数据检测验证系统及方法 |
CN109213641B (zh) * | 2017-06-29 | 2021-10-26 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
FR3101987B1 (fr) * | 2019-10-11 | 2021-10-01 | Commissariat Energie Atomique | Procédé de simulation parallèle reproductible de niveau système électronique mis en œuvre au moyen d'un système informatique multi-cœurs de simulation à événements discrets |
-
2022
- 2022-02-14 CN CN202210131860.3A patent/CN114168200B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114168200A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115841089B (zh) | 一种基于uvm的系统级芯片验证平台及验证方法 | |
CN114168200B (zh) | 多核处理器访存一致性的验证系统及方法 | |
US20060130029A1 (en) | Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium | |
US11302412B2 (en) | Systems and methods for simulated device testing using a memory-based communication protocol | |
US6571204B1 (en) | Bus modeling language generator | |
CN105930242B (zh) | 一种支持精确访存检测的多核处理器随机验证方法及装置 | |
JPH10228393A (ja) | 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ | |
CN113779912B (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
US9300716B2 (en) | Modelling dependencies in data traffic | |
CN110765716A (zh) | 数字产品的仿真信号查看方法及系统 | |
CN103713977A (zh) | 一种微处理器ip核比较验证的实现方法 | |
US7228513B2 (en) | Circuit operation verification device and method | |
US8627273B2 (en) | Model checking of liveness property in a phase abstracted model | |
US20100161305A1 (en) | Performance evaluation device, performance evaluation method and simulation program | |
CN113535499B (zh) | 一种支持多核心共享访问的多类型并存访存流验证方法 | |
US20050209839A1 (en) | Data processing apparatus simulation | |
US7720669B2 (en) | Method, system and computer program product for register management in a simulation environment | |
CN107688467A (zh) | 处理器随机指令复用的验证方法 | |
US8219379B2 (en) | System, method and computer program product for testing software | |
CN112416687B (zh) | 验证访存操作的方法与系统以及验证设备和存储介质 | |
JP3214459B2 (ja) | シミュレーション方法及び装置 | |
US20230054303A1 (en) | System and method for electronic circuit resimulation | |
CN115840593A (zh) | 处理器中的执行部件的验证方法及装置、设备、存储介质 | |
CN118245305A (zh) | 一种dpu引擎的多线程命令执行的验证系统和方法 | |
CN118035022A (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 |