CN112416687B - 验证访存操作的方法与系统以及验证设备和存储介质 - Google Patents

验证访存操作的方法与系统以及验证设备和存储介质 Download PDF

Info

Publication number
CN112416687B
CN112416687B CN202011401740.8A CN202011401740A CN112416687B CN 112416687 B CN112416687 B CN 112416687B CN 202011401740 A CN202011401740 A CN 202011401740A CN 112416687 B CN112416687 B CN 112416687B
Authority
CN
China
Prior art keywords
memory access
write operation
access
operation instruction
memory
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
CN202011401740.8A
Other languages
English (en)
Other versions
CN112416687A (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 CN202011401740.8A priority Critical patent/CN112416687B/zh
Publication of CN112416687A publication Critical patent/CN112416687A/zh
Application granted granted Critical
Publication of CN112416687B publication Critical patent/CN112416687B/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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors

Landscapes

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

Abstract

本公开提供一种验证访存操作的方法与系统以及验证设备和存储介质,该方法包括:访存单元获取待处理的目标访存写操作指令,进行处理并确定访存单元的目标访存写操作指令对应的第一执行事务;访存写操作参考模型模块获取与访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;将访存单元输出的第一执行事务和访存写操作参考模型模块输出的第二执行事务发送至访存写操作记分板;访存写操作记分板将第一执行事务和第二执行事务进行比较,判断两者是否一致,以检查验证访存单元的第一执行事务。本公开实现对访存单元执行写操作指令的各种行为机制的检查验证。

Description

验证访存操作的方法与系统以及验证设备和存储介质
技术领域
本公开的实施例涉及一种验证访存操作的方法与系统以及验证设备和存储介质。
背景技术
随着集成电路工艺水平以及计算机体系结构技术的不断发展,处理器的性能在过去的几十年中呈指数级的增长,伴随而来的是处理器设计规模以及复杂度也快速增加。随之而来就是验证的难度急剧增加。
高性能处理器核的验证方法的形成取决于以下几个方面:
(1)处理器核的架构发展变化,比如指令集架构;
(2)处理器核的微架构发展,处理器的微架构是在不断的优化提升;
(3)验证方法学的发展,比如UVM验证方法学。
由于高性能处理器的架构和微架构非常复杂,要进行充分验证必须要通过有效的方法进行快速验证,尽快收敛。
发明内容
本公开的实施例提供了一种验证访存操作的方法与系统以及验证设备和存储介质,实现了对访存单元执行写操作指令的各种行为机制的检查验证。
本公开至少一实施例提供了一种验证访存操作的方法,包括:
访存单元获取待处理的目标访存写操作指令,进行处理并确定所述访存单元的目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块获取与所述访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定所述访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;
将所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务发送至访存写操作记分板;
所述访存写操作记分板将所述第一执行事务和所述第二执行事务进行比较,判断两者是否一致,以检查验证所述访存单元的所述第一执行事务。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述访存单元获取待处理的目标访存写操作指令,包括:
前端模型模块向所述访存单元发送访存指令,基于所述访存指令包括的初始访存写操作指令,所述访存单元获取所述目标访存写操作指令。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述前端模型模块向所述访存单元发送访存指令,基于所述访存指令包括的初始访存写操作指令,所述访存单元获取所述目标访存写操作指令,包括:
通过所述前端模型模块发送的所述访存指令包括的初始访存写操作指令经过预处理,得到预处理后的访存写操作指令,所述访存单元接收到所述预处理后的访存写操作指令,并将所述预处理后的访存写操作指令作为目标访存写操作指令。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述访存写操作参考模型模块获取与所述访存单元的目标访存写操作指令相同的目标访存写操作指令,包括:
所述访存单元将所述预处理后的访存写操作指令反馈至所述前端模型模块,所述前端模型模块的状态实时更新,
在所述预处理后的访存写操作指令退休之后,所述前端模型模块将所述预处理后的访存写操作指令作为所述访存写操作参考模型模块的目标访存写操作指令发送至所述访存写操作参考模型模块。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,其中,在所述前端模型模块向所述访存单元发送访存指令时,所述前端模型模块同时向所述访存写操作参考模型模块发送与所述访存指令包括的初始访存写操作指令相同的另一初始访存写操作指令。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述访存单元的目标访存写操作指令与所述访存指令包括的初始访存写操作指令相同,所述访存写操作参考模型模块的目标访存写操作指令与所述另一初始访存写操作指令相同;
或者,所述访存单元的目标访存写操作指令与所述访存指令包括的初始访存写操作指令不相同,所述访存写操作参考模型模块的目标访存写操作指令与所述另一初始访存写操作指令不相同,其中,所述访存指令包括的初始访存写操作指令经过预处理得到预处理后的访存写操作指令,所述访存单元接收到所述预处理后的访存写操作指令并将所述预处理后的访存写操作指令作为目标访存写操作指令。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述访存单元、所述访存写操作参考模型模块、所述访存写操作记分板用于单一处理器或多核处理器的多个处理器核之一。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,在所述访存单元将数据写入存储系统之前,将所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务发送至访存写操作记分板。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述存储系统包括一级数据缓存,和/或,存储模型模块,其中,所述存储模型模块配置为模拟二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述第二执行事务包括通过所述访存写操作参考模型模块模拟进行处理并确定的控制信号、物理地址和数据,所述第一执行事务包括通过所述访存单元进行处理并确定的控制信号、物理地址和数据;所述第二执行事务是以事务级模型的方式被发送至所述访存写操作记分板,所述第一执行事务是以事务级模型的方式被发送至所述访存写操作记分板。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,所述访存写操作参考模型模拟进行处理,包括以下的一种或多种:
判断所述访存写操作指令是否为设定字节对齐、判断所述访存写操作指令是否为设定页表对齐、实现虚拟地址到物理地址的转换、判断所述访存写操作指令是否需要进行纠错码读后写。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,还包括:
根据纠错码读后写条件判断出所述目标访存写操作指令需要进行纠错码读后写,则对所述一级数据缓存进行读操作,将所述目标访存写操作指令的写数据和从所述一级数据缓存进行读操作获取的数据合并成一个写数据,得到第二融合写数据。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,被写入所述存储系统的数据包括所述目标访存写操作指令的写数据和/或所述融合写数据。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,还包括:响应于所述第一执行事务包括的数据和物理地址分别与所述第二执行事务包括的数据和物理地址一致,所述访存单元将所述数据写入所述一级数据缓存或所述存储模型模块。
例如,在本公开至少一实施例提供的一种验证访存操作的方法中,还包括:响应于所述第一执行事务包括的物理地址属于存储到可缓存区,所述访存单元将所述数据写入所述一级数据缓存;响应于所述述第一执行事务包括的物理地址属于不会存储到可缓存区,所述访存单元将所述数据写入所述存储模型模块。
本公开至少一实施例提供了一种验证访存操作的系统,包括:
访存单元,配置为接收访存指令并根据所述访存指令包括的待处理的目标访存写操作指令,进行处理并确定所述目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块,配置为接收所述目标访存写操作指令,模拟进行处理并确定所述目标访存写操作指令对应的第二执行事务;
访存写操作记分板,配置为接收所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务,并将所述第一执行事务和所述第二执行事务进行比较,判断两者是否一致,以检查验证所述访存单元的所述第一执行事务。
例如,在本公开至少一实施例提供的一种验证访存操作的系统中,所述访存单元、所述访存写操作参考模型模块、所述访存写操作记分板用于单一处理器或多核处理器的多个处理器核之一。
例如,在本公开至少一实施例提供的一种验证访存操作的系统中,还包括存储系统,其中,所述访存单元配置为与所述存储系统工作连接,用以将数据写入所述存储系统,所述访存写操作记分板配置为,在所述访存单元将数据写入所述存储系统之前,接收所述第一执行事务和所述第二执行事务。
例如,在本公开至少一实施例提供的一种验证访存操作的系统中,所述存储系统包括一级数据缓存,和/或,存储模型模块,其中,所述存储模型模块配置为模拟二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种。
例如,在本公开至少一实施例提供的一种验证访存操作的系统中,还包括前端模型模块,其中,所述前端模型模块与所述访存单元和所述访存写操作参考模型模块工作连接,配置为向所述访存单元和所述访存写操作参考模型模块提供所述目标访存写操作指令。
本公开至少一实施例提供了一种验证设备,包括:处理器和存储器,其中,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现如上述任一示例中所述的验证访存操作的方法。
本公开至少一实施例提供了一种计算机可读存储介质,其中,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现如上述任一示例中所述的验证访存操作的方法。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一些实施例提供的一种验证访存操作的方法的流程图;
图2为本公开一些实施例提供的一种验证访存操作的系统的示意图;
图3为本公开又一些实施例提供的一种验证访存操作的系统的示意图;
图4为本公开一些实施例提供的一种验证访存操作的方法的操作流程图;
图5为本公开另一些实施例提供的一种验证访存操作的系统的示意图;
图6为本公开一些实施例提供的一种访存写操作参考模型模块的原理示意图;
图7为本公开一些实施例提供的一种访存写操作记分板的原理示意图;
图8为本公开一些实施例提供的一种验证设备的示意框图;以及
图9为本公开一些实施例提供的用于双核处理器的验证访存操作的系统的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另有定义,本公开实施例使用的所有术语(包括技术和科学术语)具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非本公开实施例明确地这样定义。
本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本公开实施例中使用了流程图用来说明根据本公开实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步。
访存单元(LSU,Load Store Unit)是高性能处理器(例如CPU,CentralProcessing Unit,中央处理器)中用来执行访存操作(读/写)的逻辑部件。访存单元的验证是高性能处理器的验证中的一个重要方面,访存单元的验证工作在处理器设计中非常关键并贯穿于整个设计过程中。访存单元的验证的难度越来越高,主要也是因为访存单元是处理器核的验证中最复杂的模块之一。当访存单元实现的功能越多,访存单元的高性能需求导致逻辑越来越复杂,并且电路的集成复杂度就越高,验证工作的复杂度和工作量也就越大,如何简单科学地验证访存单元就变得至关重要。
发明人发现:访存指令的访存写操作指令相关的行为涉及到处理器的各种复杂特性的支持和微架构的优化,要检查这些复杂机制和微架构优化的正确性是很困难的,例如检查验证处理器的访存单元,因此,需要科学地设计一种验证访存操作的方法和系统来简单准确地检查验证访存单元。
本公开至少一实施例提供了一种验证访存操作的方法,包括:
访存单元获取待处理的目标访存写操作指令,进行处理并确定访存单元的目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块获取与访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;
将访存单元输出的第一执行事务和访存写操作参考模型模块输出的第二执行事务发送至访存写操作记分板;
访存写操作记分板将第一执行事务和第二执行事务进行比较,判断两者是否一致,以检查验证访存单元的第一执行事务。
本公开至少一实施例还提供了一种验证访存操作的系统,包括:
访存单元,配置为获取待处理的目标访存写操作指令,进行处理并确定访存单元的目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块,配置为获取与访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;
访存写操作记分板,配置为接收访存单元输出的第一执行事务和访存写操作参考模型模块输出的第二执行事务,并将第一执行事务和第二执行事务进行比较,判断两者是否一致,以检查验证访存单元的第一执行事务。
本公开上述实施例的验证访存操作的方法或系统,将通过预设的访存写操作参考模型模块模拟进行处理并确定的有关目标访存写操作指令的执行事务,与通过访存单元进行处理并确定的有关目标访存写操作指令的执行事务进行比较,使得快速检查验证访存单元的执行事务的正确性,从而简单准确地实现对访存单元执行写操作指令的各种行为机制的检查验证。在本公开至少一个示例中,验证访存操作的方法或系统应用于芯片的逻辑代码设计阶段,能够避免因前期阶段中访存单元的错误设计而导致后续生产制造错误,从而减少大量的时间和金钱成本。
图1为本公开一些实施例提供的一种验证访存操作的方法的流程图。图2为本公开一些实施例提供的一种验证访存操作的系统的示意图。
如图1所示,本公开至少一实施例提供的验证访存操作的方法包括步骤S1至步骤S3。如图2所示,本公开至少一实施例提供的验证访存操作的系统包括访存单元100、访存写操作参考模型模块200和访存写操作记分板300。该访存写操作参考模型模块200是与访存单元100并行存在并模拟了访存单元100的各种处理访存写操作指令的行为。该访存写操作记分板300通过接收来自访存单元100和访存写操作参考模型模块200的执行事务并进行比较验证。
步骤S1、访存单元100获取待处理的目标访存写操作指令A1,进行处理并确定访存单元100的目标访存写操作指令A1对应的第一执行事务B1;并且,访存写操作参考模型模块200获取与访存单元100的目标访存写操作指令A1相同的目标访存写操作指令A2,模拟进行处理并确定访存写操作参考模型模块200的目标访存写操作指令A2对应的第二执行事务B2。
步骤S2、将访存单元100输出的第一执行事务B1和访存写操作参考模型模块200输出的第二执行事务B2发送至访存写操作记分板300。
步骤S3、访存写操作记分板300将第一执行事务B1和第二执行事务B2进行比较,判断两者是否一致,以检查验证访存单元100的第一执行事务B1。
图3为本公开又一些实施例提供的一种验证访存操作的系统的示意图。图4为本公开一些实施例提供的与图3对应的验证访存操作的方法的操作流程图。
对于步骤S1,例如,在一些示例中,访存单元100获取待处理的目标访存写操作指令A1,进一步包括:访存单元接收访存指令,并基于访存指令包括的初始访存写操作指令获取目标访存写操作指令。访存单元获取的目标访存写操作指令可以与访存指令的初始访存写操作指令相同,也可以与访存指令的初始访存写操作指令不相同。
例如,在一些示例中,如图3所示,访存单元100接收访存指令A11,该访存指令A11不仅包括访存写操作指令A1101(即初始访存写操作指令A1101),还包括访存读操作指令(未图示),该访存单元100的功能是用来执行访存读操作和/或写操作。例如,图3中的访存写操作参考模型模块200只接收访存写操作指令A2,即该访存写操作参考模型模块200只实现了访存写操作的功能,并没有实现访存读操作的功能,这意味着,本公开一些实施例提供的验证访存操作的方法主要是针对验证访存写操作的方法。
一般来说,访存单元或访存写操作参考模型模块在接收到访存写操作指令时,也意味着同时接收到该访存写操作指令所对应的要写的数据与要写的地址等信息,为了表述方便,本公开实施例主要描述了接收访存写操作指令,并未详细描述同时接收到该指令对应的各种信息,但这并不影响本领域技术人员对本公开实施例的理解,也不会对本公开实施例的方案起到任何限制作用。
例如,在一些示例中,如图3~图4所示,验证访存操作的系统还包括前端模型模块400。前端模型模块400与100访存单元和访存写操作参考模型模块200工作连接,配置为分别向访存单元100和访存写操作参考模型模块200提供所需的目标访存写操作指令。
例如,在一些示例中,前端模型模块400模拟了处理器的指令分发、指令发射、指令执行和指令退休等,对应地,该前端模型模块400包括处理器(例如CPU)中的指令分配单元、调度队列、执行单元等模型单元。鉴于前端模型模块400并不是本公开实施例需要阐述的重点,为了保证本公开实施例的说明清楚以及简洁,本公开实施例省略前端模型模块400具体组成的相关内容,本领域技术人员可以根据本文的相关描述以及本领域的背景技术能够得知前端模型模块400的相关内容,本公开实施例在此不做详细阐述。
例如,在一些示例中,如图3~图4所示,验证访存操作的方法包括:通过前端模型模块400将访存指令A11包括的初始访存写操作指令A1101向访存单元100进行发送,该初始访存写操作指令A1101在发送的中途可能会被预处理,则访存单元100接收该预处理后的访存写操作指令并作为访存单元100的目标访存写操作指令,即访存单元获100获取的目标访存写操作指令和初始访存写操作指令A1101不相同;再将返回的访存指令A12包括的访存写操作指令A1201(即上述预处理后的访存写操作指令)反馈至前端模型模块400,并且前端模型模块400的状态实时更新,然后在访存写操作指令A1201退休之后,前端模型模块400再将访存写操作指令A1201作为目标访存写操作指令A2发送至访存写操作参考模型模块200。
又例如,在一些示例中,在前端模型模块400向访存单元100发送访存指令A11的中途过程中,若访存指令A11包括的初始访存写操作指令A1101未有任何变化,访存单元100接收到该初始访存写操作指令A1101并将其作为目标访存写操作指令,则访存单元100获取的目标访存写操作指令和访存指令A11的初始访存写操作指令A1101相同,最终前端模型模块400发送给访存写操作参考模型模块200的目标访存写操作指令A2即是该初始访存写操作指令A1101。
图5为本公开另一些实施例提供的一种验证访存操作的系统的示意图。
例如,在一些示例中,如图5所示,验证访存操作的方法包括:前端模型模块400同时向访存单元100和访存写操作参考模型模块200分别发送访存指令A1包括的初始访存写操作指令A13和初始访存写操作指令A2,其中,初始访存写操作指令A13和初始访存写操作指令A2及其数据与地址(如虚拟地址)等信息均是相同。
例如,在前端模型模块400向访存单元100发送访存指令A1的中途过程中,若访存指令A1包括的初始访存写操作指令A13未有任何变化,访存单元100接收到该初始访存写操作指令A13,则访存单元100获取的目标访存写操作指令和初始访存写操作指令A13相同。
又例如,在前端模型模块400向访存单元100发送访存指令A1的中途过程中,若访存指令A1包括的初始访存写操作指令A13因为一些因素发生了变化,即访存单元100接收到的目标访存写操作指令是基于该初始访存写操作指令A13并被预处理后的访存写操作指令,所以,访存单元100最后获取到的目标访存写操作指令和初始访存写操作指令A13不再相同。例如,在一些示例中,初始访存写操作指令A13可能在发送中途会丢掉部分内容,比如被发送的初始访存写操作指令A13包括5个部分的内容,但是在中途该访存写操作指令A13可能会丢掉第1和第2部分的内容,则访存单元100接收到的是丢掉该内容之后的访存写操作指令。这种情况下,若要顺利进行访存单元的检查验证,访存写操作参考模型模块200需要基于初始访存写操作指令A2去增加用于寻找上述丢掉的第1和第2部分内容的过程和机制,增加了访存写操作参考模型模块200以及整个验证方法与系统的难度和复杂度。
由上可知,无论是图5中所述的前端模型模块400同时向访存单元100和访存写操作参考模型模块200发送访存写操作指令的情况,还是图3中所述的前端模型模块400先后向访存单元100和访存写操作参考模型模块200发送访存写操作指令的情况,无论是访存指令的初始访存写操作指令在发送指令中途有无发生变化,该访存单元100的目标访存写操作指令及其数据与地址(如虚拟地址)等信息和该访存写操作参考模型模块200的目标访存写操作指令及其数据与地址(如虚拟地址)等信息均是相同的,使得后续能够准确地检查验证访存单元的执行事务,实现访存单元的检查验证。
值得说明的是,对于图3的示例,如果访存写操作参考模型模块200接收到的目标访存写操作指令是由访存单元100反馈到端模型模块400的访存写操作指令,这样能够避开访存单元的很多技术细节,能够加速对目标访存写操作指令的验证和收敛。
具体而言,如图3所示,前端模型模块400向访存单元100发送访存指令,因为一些因素使得访存指令包括的初始访存写操作指令A1101在发送中途会发生变化,例如初始访存写操作指令A1101可能会丢掉部分内容,比如,被发送的初始访存写操作指令A1101包括5个部分的内容,但是在中途该访存写操作指令A1101可能会丢掉第1和第2部分的内容,则访存单元100接收到丢掉该内容之后的访存写操作指令A1201(即预处理后的访存写操作指令),该预处理后的访存写操作指令作为访存单元100的目标访存写操作指令,并且访存单元100将访存写操作指令A1201发送到前端模型模块400,该前端模型模块400将已经丢掉部分内容的访存写操作指令A1201作为访存写操作参考模型模块200的目标访存写操作指令A2发送给访存写操作参考模型模块200,这样的话,访存写操作参考模型模块200不必基于初始访存写操作指令去增加寻找上述丢掉的第1和第2部分内容的过程和机制,能够避开访存单元的很多技术细节,从而能够加速对目标访存写操作指令的验证和收敛。
例如,在一些示例中,对于前端模型模块400的状态实时更新,还包括:访存单元100每执行一次访存读或写操作,都要对前端模型模块400的状态进行更新。
例如,在一些示例中,验证访存操作的系统还包括存储系统,访存单元与存储系统工作连接,用以将数据写入存储系统。
为了清楚简洁地描述,下文相关内容的目标访存写操作指令均由访存写操作指令进行替代,但注意的是,这仅是一种文字表述方式的替换,并不影响本领域技术人员对本公开实施例的理解,也不会对本公开实施例的内容和特征起到任何限制作用。
发明人发现:如果数据已经写入处理器的存储系统之后,若要检查出处理器的复杂机制和微架构优化的正确性是很困难的,例如,若要再检查数据和地址的正确性,就会变得非常困难,甚至需要花费多好几倍的时间,如果错误的数据被写入了存储系统或根据错误的地址将数据写入存储系统,则需要在大量的数据和地址中找出错误的数据和地址,对错误进行定位,就会非常困难,例如难度会呈指数倍增加。因此,本公开的一些实施例采用在处理器内核将数据写入存储系统之前检查验证访存单元的执行事务(比如检查是否有错误的数据和地址)的正确性,由此,能够在数据写入存储系统之前检查验证访存写操作指令的各种行为,从而避免花费大量的时间去定位错误,例如,至少一实施例能够避免根据错误的地址将数据写入存储系统,也能避免将错误的数据写入存储系统。
对于步骤S2,例如,在一些示例中,在访存单元100将数据写入存储系统之前,就将访存单元100输出的第一执行事务B1和访存写操作参考模型模块200输出的第二执行事务B2发送至访存写操作记分板300。例如,存储系统包括一级数据缓存500和/或存储模型模块600,如图3和图5所示。
例如,在一些示例中,该一级数据缓存500配置为待用于实际制造阶段所设计的数据缓存,以更好地检查验证访存单元100。由于在实际情况下,访存单元100的输出端除了工作连接一级数据缓存500,还有可能工作连接二级数据缓存或三级数据缓存或四级数据缓存或主存等,若是将所有可能的实际情况考虑到位而进行验证,导致加大整个验证方法或系统的难度和复杂度,由此,在一些示例中,将该存储模型模块600配置为模拟二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种的某些行为机制,简单快速地实现检查验证。
发明人还发现:实际上验证访存单元对访存写操作指令进行处理之后,以及访存写操作参考模型模块对访存写操作指令模拟进行处理之后,两者得到的执行事务进行比较检查的时间点有很多。例如,尽管满足了在数据被写入存储系统之前来检查验证访存单元的执行事务的条件,但是如果一味过早地进行检查,那也很可能无法检查验证访存单元的执行事务的正确性。
由此,在一些示例中,验证访存操作的方法包括:选择在访存单元100将数据写入存储系统(例如一级缓存500或存储模型模块600)之前的最后一个时间点,将访存单元100输出的第一执行事务B1和访存写操作参考模型模块200输出的第二执行事务B2发送至访存写操作记分板300,以进行后续的比较判断,从而实现第一执行事务和第二执行事务的一系列的对比检查。
需要注意的是,本公开实施例对上述最后一个时间点的绝对时间不作限制,比如,其一般与系统设定的一个时间单位相对应,具体根据实际需要进行自由调整。据前所述,上述示例选择进行检查验证的时间点是非常有效的时间点,既不算早,也不算晚,能够以非常快的速度进行完整全面的检查验证。
例如,在一些示例中,访存单元100接收到访存指令之后,并相应地执行访存写操作,如果访存写操作执行完成后,访存单元100相应地输出第一执行事务B1,并进行后续的检查验证过程。如果访存写操作未执行完成,则进入等待状态,直到访存写操作执行完成。
例如,在一些示例中,第二执行事务B2包括通过访存写操作参考模型模块200模拟进行处理并确定的控制信号、物理地址和数据,第一执行事务B1包括通过访存单元100进行处理并确定的控制信号、物理地址和数据。
例如,在一些示例中,第二执行事务B2是以事务级模型的方式被发送至访存写操作记分板300,第一执行事务B1是以事务级模型的方式被发送至访存写操作记分板300。该事务级模型的方式是指将各种控制信号、地址和数据信号等一些列信号打包好再发送到访存写操作记分板300。
例如,在一些示例中,当第一执行事务B1包括的数据和物理地址分别与第二执行事务B2包括的数据和物理地址一致时,访存单元100将数据(如C1或C2)写入一级数据缓存500或存储模型模块600,如图3~图5所示。
进一步地,在一些示例中,当第一执行事务B1包括的物理地址属于存储到可缓存区(cacheable),访存单元100将数据C1写入一级数据缓存500;当第一执行事务B1包括的物理地址属于不会存储到缓存区(non-cacheable),访存单元100将数据C2写入存储模型模块600,如图3~图5所示。
例如,在一些示例中,在一级数据缓存500需要升级时或在一级数据缓存500命中缺失时,该一级数据缓存500发送请求至存储模型模块600,向存储模型模块600请求获取数据,对应地,该存储模型模块600响应一级数据缓存500的请求,提供该一级数据缓存500所需的数据。
图6为本公开一些实施例提供的一种访存写操作参考模型模块的原理示意图。例如,在一些示例中,如图6所示,对于访存写操作参考模型模块200模拟进行处理,包括以下的一种或多种:判断访存写操作指令是否为设定字节对齐、判断访存写操作指令是否为设定页表对齐、实现虚拟地址到物理地址的转换、判断访存写操作指令是否需要进行纠错码读后写。
值得说明的是,本公开的访存写操作参考模型模块200模拟进行处理的具体操作并不仅限于上述列举的几种示例,还可以是其他合理的操作,本公开实施例对此不作限制,并且也不做穷举和赘述。
例如,在一些示例中,判断访存写操作指令是否为设定字节对齐,进一步包括:访存写操作参考模型模块200判断访存写操作指令是否为32字节对齐,并产生相应的控制信号,例如该控制信号属于上文中第二执行事务包括的控制信号,并记为第一类控制信号。
比如,当访存写操作参考模型模块200判断出访存写操作指令是32字节对齐时,则访存写操作参考模型模块200产生相应的第一类控制信号。
又比如,当访存写操作参考模型模块200判断出访存写操作指令不是32字节对齐时,则产生相应的第一类控制信号,并根据该第一类控制信号将该访存写操作指令分拆为2个背靠背的写操作指令,再将分拆的2个背靠背的写操作指令进行输出。例如,一个访存写操作指令为OpWr,如果它不是32字节对齐,那么这个OpWr将会被拆成OpWr1和OpWr2(指令OpWr1和OpWr2分别具有各自的地址和数据等信息),并且OpWr1和OpWr2必须是连续的,即中间不能插入其他的操作,从而将一个指令拆成两个背靠背的写操作。
例如,在一些示例中,判断访存写操作指令是否为设定页表对齐,进一步包括:访存写操作参考模型模块200判断访存写操作指令是否为4k字节页表对齐,并产生相应的控制信号,例如该控制信号属于上文中第二执行事务包括的控制信号,并记为第二类控制信号。
比如,当访存写操作参考模型模块200判断出访存写操作指令4k字节页表对齐时,则访存写操作参考模型模块200产生相应的第二类控制信号。
又比如,当访存写操作参考模型模块200判断出访存写操作指令不满足4k字节页表对齐时,则产生相应的第二类控制信号,并根据该第二类控制信号将该访存写操作指令分拆为2个背靠背的写操作指令,再将分拆的2个背靠背的写操作指令进行输出。例如,一个访存写操作指令为OpWr,如果它不是4k字节页表对齐,那么这个OpWr将会被拆成OpWr1和OpWr2,并且OpWr1和OpWr2必须是连续的,即中间不能插入其他的操作,从而将一个指令拆成两个背靠背的写操作。
例如,在一些示例中,在实现虚拟地址到物理地址的转换过程中,还产生访存写操作指令的访存类型,其中,该访存类型决定是将数据写入一级数据缓存500还是写入存储模型模块600。值得说明的是,在访存单元100或未经访存写操作参考模型模块200执行地址转换之前,访存写操作指令的地址均是指虚拟地址,在已经过访存单元100或经过访存写操作参考模型模块200的地址转换过程之后,访存写操作指令的地址均是指物理地址。
例如,在一些示例中,对于判断访存写操作指令是否需要进行纠错码读后写,访存写操作参考模型模块200根据纠错码读后写条件判断访存写操作指令是否需要进行纠错码读后写,并产生相应的控制信号,例如该控制信号属于上文中第二执行事务包括的控制信号,并记为第三类控制信号。
比如,当访存写操作参考模型模块200根据纠错码读后写条件判断出访存写操作指令不需要进行纠错码读后写,则产生相应的第三类控制信号。
又比如,当访存写操作参考模型模块200根据纠错码读后写条件判断出访存写操作指令需要进行纠错码读后写,则产生相应的第三类控制信号,并根据第三类控制信号对一级数据缓存进行读操作以及将访存写操作指令的写数据和从一级数据缓存进行读操作获取的数据合并成一个写数据,得到融合写数据。其中,该纠错码读后写条件包括:访存写操作指令的写数据小于4字节时,则此时需要进行纠错码读后写。
例如,在一些示例中,即将被写入存储系统的数据可以包括访存写操作指令的写数据,还可以包括融合写数据。
对于步骤S3,例如,在一些示例中,访存写操作记分板300将访存单元100输出的第一执行事务B1和访存写操作参考模型200输出的第二执行事务B2进行比较,判断两者是否一致,包括以下的一种或多种:
(1)访存写操作记分板300将第一执行事务B2包括的物理地址与第二执行事务B2包括的物理地址进行比较,判断两者是否一致,用以检查验证第一执行事务B1的物理地址的正确性。
(2)访存写操作记分板300将第一执行事务B2包括的数据与第二执行事务B2包括的数据进行比较,判断两者是否一致,用以检查验证第一执行事务B1的数据的正确性。
(3)访存写操作记分板300将第一执行事务B2包括的控制信号与第二执行事务B2包括的控制信号进行比较,判断两者是否一致,用以检查验证第一执行事务B1的控制信号的正确性。
图7为本公开一些实施例提供的一种访存写操作记分板的原理示意图。
例如,在一些示例中,如图6和图7结合所示,访存写操作记分板300可以检查验证以下有关访存单元100事项的一种或多种:要写的物理地址的正确性、要写的数据(例如访存写操作指令的写数据和/或融合写数据)的正确性、写操作的访存类型的正确性、是否需要进行纠错码读后写的正确性。
比如,当第一执行事务B1的数据和/或物理地址,与第二执行事务B2的数据和/或物理地址不一致时,说明第一执行事务B1的数据和/或物理地址有误,表明访存单元有问题,则验证系统的报错机制会进行报错,此时停止将数据写入存储系统,即不会发生根据错误的地址将数据写入存储系统和/或将错误的数据写入存储系统。反之,当第一执行事务B1的数据和物理地址与第二执行事务B2的数据和物理地址一致时,说明第一执行事务B1的数据和物理地址正确,表明访存单元没有问题,此时正常地根据物理地址将数据写入存储系统。由此可见,本公开上述实施例能够快速验证处理器前端的单元写入存储系统的数据是否正确。
又比如,针对访存写操作记分板300比较第一执行事务B1包括的控制信号和第二执行事务B2包括的控制信号并进行检查验证,进一步包括:
(a)对于判断访存写操作指令是否为32字节对齐的情况,具体而言,访存写操作记分板300将第一执行事务B1包括的第一类控制信号或者包括的第一类控制信号和分拆得到的2个背靠背的写操作指令,与第二执行事务B2包括的第一类控制信号或者包括的第一类控制信号和分拆得到的2个背靠背的写操作指令进行比较判断,若不一致,则表明访存单元有问题,反之,表明访存单元没有问题。
(b)对于判断访存写操作指令是否为4k字节页表对齐的情况,具体而言,访存写操作记分板300将第一执行事务B1包括的第二类控制信号或者包括的第二类控制信号和分拆得到的2个背靠背的写操作指令,与第二执行事务B2包括的第二类控制信号或者包括的第二类控制信号和分拆得到的2个背靠背的写操作指令进行比较判断,若不一致,则表明访存单元有问题,反之,表明访存单元没有问题。
(c)对于产生访存写操作指令的访存类型的情况,具体而言,访存写操作记分板300将第一执行事务B1包括的访存类型,与第二执行事务B2包括的访存类型进行比较判断,若不一致,则表明访存单元有问题,反之,表明访存单元没有问题。
(d)对于判断访存写操作指令是否需要进行纠错码读后写的情况,具体而言,访存写操作记分板300将第一执行事务B1包括的第三类控制信号或者包括的第三类控制信号和融合写数据,与第二执行事务B2包括的第三类控制信号或者包括的第三类控制信号和融合写数据进行比较判断,若不一致,则表明访存单元有问题,反之,表明访存单元没有问题。需要说明的是,这里的融合写数据的检查验证也涵盖在上文所述的数据的检查验证的保护范围内,这里再次列出融合写数据的检查验证是为了本领域技术人员更好地理解访存写操作记分板300的比较检查的过程,不会限制和影响本公开实施例。由此可见,本公开上述实施例能够快速验证是否需要进行纠错码读后写及其条件是否正确,也能快速验证纠错码读后写的融合写数据是否正确。
值得说明的是,本公开实施例的访存写操作记分板300进行比较验证的具体事项并不仅限于上述列举的几种示例,其主要是与图6的访存写操作参考模型模块模拟进行处理的各种操作相对应,以利于本领域技术人员理解本公开实施例,即本公开实施例对比较验证的具体事项不作限制,并且也不做穷举和赘述。
需要注意的是,本公开实施例的验证访存操作的方法不仅适用于单一处理器结构中的访存写操作的验证,即访存单元、访存写操作参考模型模块、访存写操作记分板可用于单一处理器,本公开实施例的验证访存操作的方法也同样适用于多核(例如N核,N为大于等于2的整数,比如双核、四核、八核等)处理器结构中访存写操作的验证,即访存单元、访存写操作参考模型模块、访存写操作记分板可用于多核处理器的多个处理器核之一,对此本公开实施例不作限制。
例如,上文的图2~图5所示可表示单一处理器结构中的访存写操作的验证,也可以表示多核处理器结构中至少一个处理器核进行的访存写操作的验证,附图仅为示意图,不会对本公开实施例适用的对象和场景等造成限制。下文以适用于双核处理器结构中的访存写操作的验证为例进行阐述说明。
图9为本公开一些实施例提供的用于双核处理器的验证访存操作的系统的示意图。例如,在一些示例中,如图9所示,双核处理器结构包括核0和核1。
例如,对于核0的访存写操作的验证,包括:通过前端模型模块940将访存指令A11包括的初始访存写操作指令A1101向访存单元910进行发送,该初始访存写操作指令A1101在发送的中途可能会被预处理,则访存单元910接收该预处理后的访存写操作指令并作为访存单元910的目标访存写操作指令,即访存单元获910获取的目标访存写操作指令和初始访存写操作指令A1101不相同;再将返回的访存指令A12包括的访存写操作指令A1201(即上述图9示例中预处理后的访存写操作指令)反馈至前端模型模块940,并且前端模型模块940的状态实时更新,然后在访存写操作指令A1201退休之后,前端模型模块940再将访存写操作指令A1201作为目标访存写操作指令A2发送至访存写操作参考模型模块920。
例如,如图9所示,对于核0的访存写操作的验证,还包括:选择在访存单元910将数据写入存储系统(例如一级缓存950或存储模型模块9600)之前,将访存单元910输出的第一执行事务B1和访存写操作参考模型模块920输出的第二执行事务B2发送至访存写操作记分板930,以进行后续的比较判断,从而实现第一执行事务B1和第二执行事务B2的一系列的对比检查。
例如,如图9所示,当第一执行事务B1包括的数据和物理地址分别与第二执行事务B2包括的数据和物理地址一致时,访存单元910将数据(如C1或C2)写入一级数据缓存950或存储模型模块9600。进一步地,例如,当第一执行事务B1包括的物理地址属于存储到可缓存区(cacheable),访存单元910将数据C1写入一级数据缓存950;当第一执行事务B1包括的物理地址属于不会存储到缓存区(non-cacheable),访存单元910将数据C2写入存储模型模块9600。
例如,如图9所示,对于核1的访存写操作的验证,包括:通过前端模型模块941将访存指令A111包括的初始访存写操作指令A11101向访存单元911进行发送,该初始访存写操作指令A11101在发送的中途可能会被预处理,则访存单元911接收该预处理后的访存写操作指令并作为访存单元911的目标访存写操作指令,即访存单元获911获取的目标访存写操作指令和初始访存写操作指令A11101不相同;再将返回的访存指令A112包括的访存写操作指令A11201(即上述图9示例的预处理后的访存写操作指令)反馈至前端模型模块941,并且前端模型模块941的状态实时更新,然后在访存写操作指令A11201退休之后,前端模型模块941再将访存写操作指令A11201作为目标访存写操作指令A21发送至访存写操作参考模型模块921。
例如,如图9所示,对于核1的访存写操作的验证,还包括:选择在访存单元911将数据写入存储系统(例如一级缓存951或存储模型模块9600)之前,将访存单元911输出的第一执行事务B11和访存写操作参考模型模块921输出的第二执行事务B21发送至访存写操作记分板931,以进行后续的比较判断,从而实现第一执行事务B11和第二执行事务B21的一系列的对比检查。
例如,如图9所示,当第一执行事务B11包括的数据和物理地址分别与第二执行事务B21包括的数据和物理地址一致时,访存单元911将数据(如C11或C21)写入一级数据缓存951或存储模型模块9600。进一步地,例如,当第一执行事务B11包括的物理地址属于存储到可缓存区(cacheable),访存单元911将数据C11写入一级数据缓存951;当第一执行事务B11包括的物理地址属于不会存储到缓存区(non-cacheable),访存单元911将数据C21写入存储模型模块9600。
对于核0,访存单元910对应的存储系统包括一级缓存950和/或存储模型模块9600;对于核1,访存单元911对应的存储系统包括一级缓存951和/或存储模型模块9600。该存储模型模块9600可以配置为模拟用于核0和核1的二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种的某些行为机制,简单快速地实现检查验证。
例如,在一些示例中,核0和核1的访存写操作的验证方法可以是本文中相同示例的方法,例如图9中核0和核1均是对应图3示例,又例如,图9中的核0和核1中的一个核可以参照图3的示例,而另一个核可以参照图5的示例,再例如,图9中的核0和核1可以均参照图5的示例,即,对于核0和核1的访存写操作的验证方法均分别参照上述图1~8对应的任一示例,本公开实施例对此不作限制,在此也不做赘述。对于上述双核处理器的示例,核0和核1可以都进行访存写操作的验证,也可以是核0进行单独的验证,也可以是核1进行单独的验证,本公开实施例对此不作限制。
例如,在一些示例中,多核处理器的多个处理器核之间的一级数据缓存和存储模型模块之间的存在数据交互,并且数据缓存的数据最终要写入存储模型模块,比如当一级数据缓存的数据被替换的时候,该被替换的数据会写入存储模型模块。
比如,如图9所示,当核1的一个写操作发现数据没有在一级数据缓存951找到,则此时需要发请求D给存储模型模块9600,如果存储模型模块9600中也没有所需的数据但是发现核0的一级数据缓存950包括该数据,因此需要向核0发送请求E,使得从核0的一级数据缓存950获取该数据F并返回到存储模型模块9600,然后再从存储模型模块9600将数据G发送到核1的一级数据缓存951,从而写操作把新的数据写入核1的一级数据缓存951。所以,处理器核的一级数据缓存的数据能被写入存储模型模块,存储模型模块也能请求一级数据缓存获取数据。
另外,对于包括其他数目处理器核的多核处理器的访存写操作的验证可以参照上述双核处理器的示例,本公开实施例在此不赘述。
本公开上述实施例的验证访存操作的方法通过预设的访存写操作参考模型模块以及访存写操作记分板,能够快速准确地检查验证访存单元的执行事务的正确性,实现了访存写操作的各种行为机制的检查,解决了目前检查处理器复杂机制和微架构优化的正确性十分困难的问题。需要说明的是,本公开的实施例中,验证访存操作的系统的具体功能和技术效果可以参考上文中关于验证访存操作的方法的描述,此处不再赘述。
值得注意的是,上文描述了访存写操作参考模型模块是与访存单元并行存在并模拟了访存单元的一些处理访存写操作指令的行为,但这不意味着该访存写操作参考模型模块的体系架构、功能和操作等与访存单元一致,本公开实施例的访存写操作参考模型模块是基于访存单元的理想操作而形成且体系架构、功能和操作比访存单元更为简单直观及针对性更强的模块,本公开实施例对访存写操作参考模型模块的设计细节不作限制,并且不做赘述。
此外,值得说明的是,上述实施例的访存写操作记分板并受限于其名称,其仅为一种命名的方法,不会对该访存写操作记分板起到任何限制作用,访存写操作记分板细节设计只要以上述实施例实现的功能和操作为准即可,本公开实施例对此不作限制,并且不做赘述。
例如,在一些示例中,本公开实施例的验证访存操作的方法或系统应用于芯片的逻辑代码设计阶段,能够避免因前期阶段的访存单元的错误设计而导致生产制造错误,从而减少大量的时间和金钱成本。但是本公开实施例又不仅限于应用于芯片的逻辑代码设计阶段,还可以应用于其他的合理的阶段,只要能按照上文示例实现访存单元的验证即可,本公开实施例在此不做赘述。
以上实施例中的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。
需要说明的是,尽管以上在描述验证访存操作的系统时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在验证访存操作的系统不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。
例如,在一些示例中,本公开实施例的验证访存操作的方法可被记录在计算机可读记录介质中。具体地,本公开实施例可提供一种存储有计算机可执行指令的计算机可读记录介质,当计算机可执行指令被该计算机的处理器执行时,可促使该计算机处理器执行如上所述的验证访存操作。计算机可读记录介质的示例可包括磁介质(例如硬盘、软盘和磁带);光学介质(例如CD-ROM和DVD);磁光介质(例如,光盘);以及特别配制用于存储并执行程序指令的硬件装置(例如,只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。
图8本公开一些实施例提供的一种验证设备的示意框图。如图8所示,本公开实施例还可提供一种验证设备800,该验证设备800包括处理器810(即用于验证的处理器810)和存储器820,该存储器820中存储有计算机可执行指令,其中,当该计算机可执行指令被该处理器810执行时,促使处理器810执行如上所述的验证访存操作的方法。计算机可执行指令的示例包括例如由编译器产生的机器码和包含可使用解释器由计算机执行的高级代码的文件。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (22)

1.一种验证访存操作的方法,包括:
访存单元获取待处理的目标访存写操作指令,进行处理并确定所述访存单元的目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块获取与所述访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定所述访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;
将所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务发送至访存写操作记分板;
所述访存写操作记分板将所述第一执行事务和所述第二执行事务进行比较,判断两者是否一致,以检查验证所述访存单元的所述第一执行事务。
2.如权利要求1所述的验证访存操作的方法,其中,所述访存单元获取待处理的目标访存写操作指令,包括:
前端模型模块向所述访存单元发送访存指令,基于所述访存指令包括的初始访存写操作指令,所述访存单元获取所述目标访存写操作指令。
3.如权利要求2所述的验证访存操作的方法,其中,所述前端模型模块向所述访存单元发送访存指令,基于所述访存指令包括的初始访存写操作指令,所述访存单元获取所述目标访存写操作指令,包括:
通过所述前端模型模块发送的所述访存指令包括的初始访存写操作指令经过预处理,得到预处理后的访存写操作指令,所述访存单元接收到所述预处理后的访存写操作指令,并将所述预处理后的访存写操作指令作为目标访存写操作指令。
4.如权利要求3所述的验证访存操作的方法,其中,所述访存写操作参考模型模块获取与所述访存单元的目标访存写操作指令相同的目标访存写操作指令,包括:
所述访存单元将所述预处理后的访存写操作指令反馈至所述前端模型模块,所述前端模型模块的状态实时更新,
在所述预处理后的访存写操作指令退休之后,所述前端模型模块将所述预处理后的访存写操作指令作为所述访存写操作参考模型模块的目标访存写操作指令被发送至所述访存写操作参考模型模块。
5.如权利要求2所述的验证访存操作的方法,其中,
在所述前端模型模块向所述访存单元发送访存指令时,所述前端模型模块同时向所述访存写操作参考模型模块发送与所述访存指令包括的初始访存写操作指令相同的另一初始访存写操作指令。
6.如权利要求5所述的验证访存操作的方法,其中,
所述访存单元的目标访存写操作指令与所述访存指令包括的初始访存写操作指令相同,所述访存写操作参考模型模块的目标访存写操作指令与所述另一初始访存写操作指令相同;
或者,所述访存单元的目标访存写操作指令与所述访存指令包括的初始访存写操作指令不相同,所述访存写操作参考模型模块的目标访存写操作指令与所述另一初始访存写操作指令不相同,其中,所述访存指令包括的初始访存写操作指令经过预处理得到预处理后的访存写操作指令,所述访存单元接收到所述预处理后的访存写操作指令并将所述预处理后的访存写操作指令作为目标访存写操作指令。
7.如权利要求1所述的验证访存操作的方法,其中,
所述访存单元、所述访存写操作参考模型模块、所述访存写操作记分板用于单一处理器或多核处理器的多个处理器核之一。
8.如权利要求1~7任一所述的验证访存操作的方法,其中,
在所述访存单元将数据写入存储系统之前,将所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务发送至访存写操作记分板。
9.如权利要求8所述的验证访存操作的方法,其中,
所述存储系统包括一级数据缓存,和/或,存储模型模块,其中,所述存储模型模块配置为模拟二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种。
10.如权利要求9所述的验证访存操作的方法,其中,
所述第二执行事务包括通过所述访存写操作参考模型模块模拟进行处理并确定的控制信号、物理地址和数据,所述第一执行事务包括通过所述访存单元进行处理并确定的控制信号、物理地址和数据;
所述第二执行事务是以事务级模型的方式被发送至所述访存写操作记分板,所述第一执行事务是以事务级模型的方式被发送至所述访存写操作记分板。
11.如权利要求10所述的验证访存操作的方法,其中,所述访存写操作参考模型模拟进行处理,包括以下的一种或多种:
判断所述目标访存写操作指令是否为设定字节对齐、判断所述目标访存写操作指令是否为设定页表对齐、实现虚拟地址到物理地址的转换、判断所述目标访存写操作指令是否需要进行纠错码读后写。
12.如权利要求11所述的验证访存操作的方法,还包括:
根据纠错码读后写条件判断出所述目标访存写操作指令需要进行纠错码读后写,则对所述一级数据缓存进行读操作,将所述目标访存写操作指令的写数据和从所述一级数据缓存进行读操作获取的数据合并成一个写数据,得到融合写数据。
13.如权利要求12所述的验证访存操作的方法,其中,
被写入所述存储系统的数据包括所述目标访存写操作指令的写数据和/或所述融合写数据。
14.如权利要求10~13任一所述的验证访存操作的方法,还包括:
响应于所述第一执行事务包括的数据和物理地址分别与所述第二执行事务包括的数据和物理地址一致,所述访存单元将所述数据写入所述一级数据缓存或所述存储模型模块。
15.如权利要求14所述的验证访存操作的方法,还包括:
响应于所述第一执行事务包括的物理地址属于存储到可缓存区,所述访存单元将所述数据写入所述一级数据缓存;
响应于所述述第一执行事务包括的物理地址属于不会存储到可缓存区,所述访存单元将所述数据写入所述存储模型模块。
16.一种验证访存操作的系统,包括:
访存单元,配置为获取待处理的目标访存写操作指令,进行处理并确定所述访存单元的目标访存写操作指令对应的第一执行事务;
访存写操作参考模型模块,配置为获取与所述访存单元的目标访存写操作指令相同的目标访存写操作指令,模拟进行处理并确定所述访存写操作参考模型模块的目标访存写操作指令对应的第二执行事务;
访存写操作记分板,配置为接收所述访存单元输出的所述第一执行事务和所述访存写操作参考模型模块输出的所述第二执行事务,并将所述第一执行事务和所述第二执行事务进行比较,判断两者是否一致,以检查验证所述访存单元的所述第一执行事务。
17.如权利要求16所述的验证访存操作的系统,其中,
所述访存单元、所述访存写操作参考模型模块、所述访存写操作记分板用于单一处理器或多核处理器的多个处理器核之一。
18.如权利要求16或17所述的验证访存操作的系统,还包括存储系统,
其中,所述访存单元配置为与所述存储系统工作连接,用以将数据写入所述存储系统,
所述访存写操作记分板配置为,在所述访存单元将数据写入所述存储系统之前,接收所述第一执行事务和所述第二执行事务。
19.如权利要求18所述的验证访存操作的系统,其中,
所述存储系统包括一级数据缓存,和/或,存储模型模块,其中,所述存储模型模块配置为模拟二级数据缓存、三级数据缓存、四级数据缓存、主存中的一种或多种。
20.如权利要求16或17或19所述的验证访存操作的系统,还包括前端模型模块,
其中,所述前端模型模块与所述访存单元和所述访存写操作参考模型模块工作连接,配置为向所述访存单元和所述访存写操作参考模型模块提供所述目标访存写操作指令。
21.一种验证设备,包括:
处理器和存储器,
其中,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至15中任一项所述的验证访存操作的方法。
22.一种计算机可读存储介质,其中,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至15中任一项所述的验证访存操作的方法。
CN202011401740.8A 2020-12-02 2020-12-02 验证访存操作的方法与系统以及验证设备和存储介质 Active CN112416687B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011401740.8A CN112416687B (zh) 2020-12-02 2020-12-02 验证访存操作的方法与系统以及验证设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011401740.8A CN112416687B (zh) 2020-12-02 2020-12-02 验证访存操作的方法与系统以及验证设备和存储介质

Publications (2)

Publication Number Publication Date
CN112416687A CN112416687A (zh) 2021-02-26
CN112416687B true CN112416687B (zh) 2022-07-12

Family

ID=74830173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011401740.8A Active CN112416687B (zh) 2020-12-02 2020-12-02 验证访存操作的方法与系统以及验证设备和存储介质

Country Status (1)

Country Link
CN (1) CN112416687B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187892A (zh) * 2006-11-17 2008-05-28 上海高性能集成电路设计中心 实时监测处理器内部状态的装置
CN101763251A (zh) * 2010-01-05 2010-06-30 浙江大学 多线程微处理器的指令译码缓冲装置
CN107391400A (zh) * 2017-06-30 2017-11-24 中国科学院计算技术研究所 一种支持复杂访存指令的内存扩展方法和系统
WO2018059337A1 (zh) * 2016-09-28 2018-04-05 华为技术有限公司 数据处理装置和方法
CN109032879A (zh) * 2017-06-09 2018-12-18 展讯通信(上海)有限公司 多核处理器访存数据检测验证系统及方法
CN111611120A (zh) * 2020-06-28 2020-09-01 中国人民解放军国防科技大学 一种片上多核处理器Cache一致性协议验证方法、系统及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101187892A (zh) * 2006-11-17 2008-05-28 上海高性能集成电路设计中心 实时监测处理器内部状态的装置
CN101763251A (zh) * 2010-01-05 2010-06-30 浙江大学 多线程微处理器的指令译码缓冲装置
WO2018059337A1 (zh) * 2016-09-28 2018-04-05 华为技术有限公司 数据处理装置和方法
CN109032879A (zh) * 2017-06-09 2018-12-18 展讯通信(上海)有限公司 多核处理器访存数据检测验证系统及方法
CN107391400A (zh) * 2017-06-30 2017-11-24 中国科学院计算技术研究所 一种支持复杂访存指令的内存扩展方法和系统
CN111611120A (zh) * 2020-06-28 2020-09-01 中国人民解放军国防科技大学 一种片上多核处理器Cache一致性协议验证方法、系统及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HybridTCache:一种基于专用事务Cache的软硬件协同事务内存系统;王绍刚等;《计算机学报》;20081115(第11期);全文 *
一种支持事务内I/O操作的事务存储系统结构;刘轶等;《电子学报》;20090215(第02期);全文 *

Also Published As

Publication number Publication date
CN112416687A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN101031887B (zh) 在冗余多线程环境中执行检验指令的方法、设备和系统
US7320114B1 (en) Method and system for verification of soft error handling with application to CMT processors
US20110106776A1 (en) Incremental implementation of undo/redo support in legacy applications
US20210049715A1 (en) Blockchain-based data procesing method, apparatus, and electronic device
US10769013B1 (en) Caching error checking data for memory having inline storage configurations
CN111611120B (zh) 一种片上多核处理器Cache一致性协议验证方法、系统及介质
US6732297B2 (en) Pipeline testing method, pipeline testing system, pipeline test instruction generation method and storage method
CN113743950B (zh) 在区块链系统中执行交易的方法、节点和区块链系统
CN110727584B (zh) 一种处理器硅前验证用的rtl与参考模型实时比较方法
CN109918226A (zh) 一种静默错误检测方法、装置及存储介质
US8788766B2 (en) Software-accessible hardware support for determining set membership
CN106030532B (zh) 用于事务存储器程序的软件回放器
US8392891B2 (en) Technique for finding relaxed memory model vulnerabilities
CN114168200B (zh) 多核处理器访存一致性的验证系统及方法
CN110674055A (zh) 一种用于部件级和部件联合级的缓存一致性模拟验证方法
WO2023184052A1 (zh) 一种数据处理方法、区块链节点及区块链系统
US20120059997A1 (en) Apparatus and method for detecting data race
CN114741250A (zh) 用于验证多级高速缓存器的系统及方法
CN112416687B (zh) 验证访存操作的方法与系统以及验证设备和存储介质
CN102799414B (zh) 改进推测多线程的方法及装置
Garashchenko et al. System of Combined Specialized Test Generators for the New Generation of VLIW DSP Processors with Elcore50 Architecture
CN115269199A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US8417508B2 (en) Multiprocessor development environment
JP5882800B2 (ja) リスト命令の検証機能を有する情報処理装置、リスト命令の検証方法、及びリスト命令の検証のためのプログラム
CN116136810A (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