CN115712397B - 缓存验证装置、方法及系统 - Google Patents
缓存验证装置、方法及系统 Download PDFInfo
- Publication number
- CN115712397B CN115712397B CN202310010848.1A CN202310010848A CN115712397B CN 115712397 B CN115712397 B CN 115712397B CN 202310010848 A CN202310010848 A CN 202310010848A CN 115712397 B CN115712397 B CN 115712397B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- request
- read
- verification
- 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
- 238000012795 verification Methods 0.000 title claims abstract description 461
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000006399 behavior Effects 0.000 claims description 187
- 230000004044 response Effects 0.000 claims description 36
- 238000010200 validation analysis Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 230000003542 behavioural effect Effects 0.000 claims description 16
- 238000011010 flushing procedure Methods 0.000 claims description 15
- 230000001680 brushing effect Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 238000013500 data storage Methods 0.000 description 81
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 18
- 238000003860 storage Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 230000002159 abnormal effect Effects 0.000 description 8
- 238000000605 extraction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000007849 functional defect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种缓存验证装置、方法及系统,所述装置包括一致性校验模块、缓存模型和下游行为级模型;所述一致性校验模块用于根据输入所述缓存的验证请求确定待校验的数据,并基于所述待校验的数据确定校验结果;所述下游行为级模型用于在接收所述缓存基于读请求发送的数据读取请求的情况下返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据;所述缓存模型用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据。本申请可解决目前缓存验证时间长、效率低的问题。
Description
技术领域
本申请涉及缓存验证技术领域,特别涉及图形处理器技术领域,尤其涉及一种缓存验证装置、方法及系统。
背景技术
缓存能够正确的执行写请求写入数据,以及按照地址读取符合预期的数据,是处理器能够正确存储和读取数据,保证正常运行的关键。
如何高效地实现对缓存的一致性验证,是亟待解决的问题。
发明内容
本申请的一个目的在于提供一种缓存验证装置,解决目前缓存验证时间长、效率低的问题。本申请的另一个目的在于提供一种缓存验证方法。本申请的再一个目的在于提供一种缓存验证系统。本申请的还一个目的在于提供一种计算机设备。本申请的还一个目的在于提供一种可读介质。本申请的还一个目的在于提供一种计算机程序产品。
为了达到以上目的,本申请一方面公开了一种缓存验证装置,包括一致性校验模块、缓存模型和下游行为级模型;
所述一致性校验模块,用于根据输入所述缓存的验证请求确定待校验的数据,并基于所述待校验的数据确定校验结果,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型中的数据以及下游行为级模型的数据中的至少两种;
所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据;
所述缓存模型,用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据。
优选的,所述一致性校验模块进一步包括:
参数化模块,用于基于所述缓存的参数配置对所述验证请求进行参数化提取得到验证参数;
格式转换模块,用于根据所述验证参数和预设数据结构得到通用化验证请求,所述通用化验证请求用于确定所述待校验的数据。
优选的,所述验证请求包括读请求,所述通用化验证请求为只读缓存的验证请求,
所述下游行为级模型,用于响应于接收到所述缓存基于所述读请求发送的所述数据读取请求,生成随机数据,将所述随机数据作为所述预读数据;
所述缓存模型,用于将所述预读数据存储为所述读请求对应的数据;
所述一致性校验模块,用于将缓存发送的回读数据以及基于所述回读数据从缓存模型中确定的预期数据确定为待校验的数据,其中,所述回读数据与所述预期数据对应于相同的读请求。
优选的,所述验证请求包括读请求以及写请求,所述通用化验证请求为顺序读写缓存的验证请求,
所述缓存模型,用于存储写请求对应的写入数据;
所述一致性校验模块,用于将根据所述读请求从所述缓存模型中确定的预期数据以及所述缓存响应于读请求发送的回读数据确定为待校验的数据。
优选的,所述验证请求包括写请求以及数据刷出请求,所述通用化验证请求为刷出验证请求;
所述缓存模型,用于存储与每个写请求对应的写入数据;
所述下游行为级模型,还用于存储所述缓存响应于所述数据刷出请求发送的与写请求对应的所有写入数据;
所述一致性校验模块,用于将缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据确定为待校验的数据。
优选的,所述一致性校验模块,进一步用于将所述缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据进行双向比对以确定数据刷出是否成功。
优选的,所述验证请求包括读请求以及写请求,所述通用化验证请求为乱序读写缓存的验证请求,
所述缓存模型,用于存储每个写请求对应的写入数据;
所述一致性校验模块,用于将所述缓存响应于读请求发送的回读数据以及根据所述回读数据从所述缓存模型中确定的预期数据确定为待校验的数据,
其中,所述预期数据包括目标读请求地址对应的所有历史写入数据,所述目标读请求地址为所述回读数据对应的读请求地址。
优选的,所述一致性校验模块,用于在所述所有历史写入数据中存在与所述回读数据相同的写入数据的情况下,确定乱序读写缓存验证成功。
优选的,所述验证请求包括重取标记请求以及对重取缓存数据的读请求,所述通用化验证请求为重取标记验证请求;
所述下游行为级模型,用于根据下游数据修改请求,更新待重取的目标下游数据,并形成对应的重取标记请求,将所述重取标记请求发送至所述缓存以使所述缓存根据所述重取标记请求对所述目标下游数据对应的重取缓存数据设置重取标记,其中,所述重取标记用于指示缓存在接收到对所述重取缓存数据的读请求时,将从所述下游行为级模型获取的与所述读请求对应的下游数据确定为回读数据;
所述缓存模型,用于将所述待重取的目标下游数据存储为与所述重取缓存数据对应的数据;
所述一致性校验模块,用于将所述缓存输出的与所述读请求对应的回读数据以及从所述缓存模型中获取与所述读请求对应的数据作为预期数据,确定为待校验的数据。
优选的,所述一致性校验模块,还用于响应于所述预期数据与所述回读数据一致,确定重取标记验证成功;响应于所述预期数据与所述回读数据不一致,确定重取标记验证失败。
优选的,所述验证请求包括数据无效化请求以及读请求,所述数据无效化请求用于无效缓存中的目标缓存数据,所述读请求是针对所述目标缓存数据的读请求,所述通用化验证请求为数据无效化验证请求;
所述下游行为级模型,用于将与所述数据无效化验证请求对应的数据修改为默认值;
所述缓存模型,用于将与所述数据无效化验证请求对应的数据修改为默认值;
所述一致性校验模块,用于将缓存响应于所述读请求输出的回读数据以及所述缓存模型中与所述读请求对应的预期数据确定为待校验的数据,响应于所述回读数据与所述预期数据相同,确定数据无效化验证成功。
优选的,所述下游行为级模型,还用于在接收到所述缓存基于写请求发送的写入数据的情况下,存储所述写入数据。
优选的,所述下游行为级模型,还用于在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址未存储过所述写入数据的情况下,根据初始化数据确定所述预读数据;在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址存储过所述写入数据的情况下,根据最后一次的写入数据确定所述预读数据。
优选的,所述一致性校验模块,用于在所述缓存模型中与所述回读数据对应的读请求的地址未存储过写入数据和/或预读数据的情况下,根据初始化数据确定所述预期数据;在所述缓存模型中与所述回读数据对应的读请求的地址存储过写入数据和/或预读数据的情况下,根据最后一次存储的数据确定所述预期数据。
优选的,所述一致性校验模块进一步包括请求队列;
所述一致性校验模块,用于将所述验证请求存储至所述请求队列,基于所述验证请求确定所述待校验的数据。
优选的,所述一致性校验模块进一步包括预期数据队列;
所述一致性校验模块用于将所述待校验的数据中的至少一种存储至所述预期数据队列,从所述预期数据队列中获取存储的待校验的数据以确定校验结果。
本申请还公开了一种缓存验证系统,包括缓存和如上所述的缓存验证装置。
本申请还公开了一种缓存验证方法,应用于缓存验证装置,所述缓存验证装置包括缓存模型和下游行为级模型,所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据,所述缓存模型,用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据;
所述方法包括:
根据输入所述缓存的验证请求确定待校验的数据,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型中的数据以及下游行为级模型的数据中的至少两种;
基于所述待校验的数据确定校验结果。
本申请还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述方法。
本申请还公开了一种计算机可读介质,其上存储有计算机程序,
该程序被处理器执行时实现如上所述方法。
本申请缓存验证装置包括一致性校验模块、缓存模型和下游行为级模型。该一致性校验模块可基于输入缓存的验证请求的不同确定对应的待校验的数据,并根据待校验的数据确定校验结果。其中,验证请求至少包括读请求和/或写请求,待校验的数据可以是缓存发送的回读数据、缓存模型中的数据以及下游行为级模型中的数据的至少两种。从而,本申请可识别验证请求的请求类型,并可根据验证请求对缓存的回读数据、缓存模型和下游行为级模型中的数据的至少两种进行校验,实现缓存的不同缓存类型的自动化和通用化验证,降低缓存验证的人力成本,缩短缓存验证时间,提高缓存验证效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出相关技术中图形处理器缓存具体实施例的结构图;
图2示出本申请缓存验证装置具体实施例的结构图;
图3示出本申请缓存验证装置具体实施例包括参数化模块和格式转换模块的结构图;
图4示出本申请缓存验证装置具体实施例一致性校验模块包括请求队列的结构图;
图5示出本申请缓存验证装置具体实施例一致性校验模块包括预期数据队列的结构图;
图6示出本申请缓存验证装置具体实施例只读缓存验证的示意图;
图7示出本申请缓存验证装置具体实施例读写缓存验证的示意图;
图8示出本申请缓存验证装置具体实施例数据刷出验证的示意图;
图9示出本申请缓存验证装置具体实施例重取标记验证的示意图;
图10示出本申请缓存验证装置具体实施例数据无效化验证的示意图;
图11示出本申请缓存验证方法具体实施例的流程图;
图12示出适于用来实现本申请实施例的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
缓存作为处理器与外部存储器进行数据交互的数据暂存模块,对于提高处理器的数据吞吐率具有至关重要的作用,因此被大量使用在处理器内部。图形处理器(GPU)具有高带宽、高并行化的特点,缓存对于提高图形处理器的数据吞吐率具有至关重要的作用。缓存对于数据读写的一致性具有很高要求,缓存能够正确的执行写请求写入数据,以及按照地址读取符合预期的数据,是各类处理器能够正确存储和读取数据,保证正常运行的关键。
为便于理解,下文以图形处理器的缓存作为示例进行说明,应理解,本公开并不限制该缓存验证装置、方法的应用场景。
相关技术中,如图1所示,图形处理器的缓存包括用于存储缓存下游的数据的缓存区和用于接收外部请求的输入接口,该缓存区包括缓存行0、缓存行1、缓存行2…缓存行n等存储区,输入接口包括输入接口1、输入接口2…输入接口n等接口。其中,图形处理器的缓存可缓存其对应的缓存下游的部分数据,在接收外部输入的数据请求后,若对缓存中存储的缓存数据进行处理或者获取缓存中存储的缓存数据,缓存可直接进行数据处理或者返回缓存数据。若需要对缓存下游存储的下游数据进行处理或获取下游数据时,图形处理器的缓存会根据输入的数据请求进一步向缓存下游传输数据请求,实现对缓存下游存储的下游数据进行处理或获取下游数据。
本公开实施例中,在一个图形处理器中,会存在数十种缓存类型的数据请求。例如,缓存可设置用于接收外部请求的n个端口,包括输入端口1、输入端口2…输入端口n。从而按照数据请求的输入端口数量可分为单端口输入和多端口输入。其中,单端口输入表示只有一个端口对缓存发送数据读写请求;多端口输入表示有多个端口同时对缓存发送数据读写请求。按照输入请求类型分类可分为只读缓存和读写缓存。其中,只读缓存表示输入请求只存在读取数据请求;读写缓存表示输入请求既存在读请求,也存在写请求。读写缓存按照请求执行顺序分类可分为顺序执行和乱序执行。其中,顺序执行表示缓存按照接收请求的先后时间顺序执行,即缓存分别先后接收到请求A->B,则缓存内部执行的顺序也是A->B。乱序执行表示缓存不一定按照请求的先后时间顺序执行,即缓存分别接收到请求A->B,则缓存内部执行的顺序即可能是A->B,也可能是B->A。
此外,本公开实施例的图形处理器的缓存还可以支持到一些功能特性,这些功能特性执行的正确性同样需要进行验证。这些功能特性可包括缓存数据刷出、数据重取标记和缓存数据无效化等功能。其中,缓存数据刷出可以是指对于缓存(例如,读写缓存),缓存支持将已经写入到缓存内的数据全部刷出到缓存下游(下游模块或外部存储器),这个功能主要用于不同缓存之间的数据同步。数据重取标记可以是指下游模块中的下游数据发生变化时,下游模块会形成重取标记请求并发送给缓存,以使缓存对发生变化的下游数据对应的缓存数据设置重取标记。从而当缓存接收到读取该具有重取标记的缓存数据的读请求时,缓存会重新从下游模块中获取发生变化的下游数据作为回读数据返回。缓存数据无效化是指对于缓存中的缓存数据,可向缓存输入数据无效化请求,以使缓存根据数据无效化请求将缓存中对应的缓存数据无效化,从而后续缓存接收到读取被无效化的缓存数据的读请求时将会从缓存的下游模块中重新读取被无效化的缓存数据对应的下游数据作为读请求的回读数据。
应理解,在图形处理器缓存的验证过程中,对于不同缓存类型的验证,需要分别构建对应的测试环境进行验证,从而需要分别投入不同的人力分进行验证,大量人力投入不同缓存类型的验证,存在大量重复的验证工作,导致了巨大的人力和时间开销,进而导致缓存验证的人力成本高和缓存验证时间长、效率低的问题。为了减少对图形处理器中缓存验证的重复性工作,及由此导致的大量人力开销,本申请提出一种缓存验证方法、装置及系统,自动识别验证请求的请求类型,并可根据验证请求对缓存的回读数据、缓存模型和下游行为级模型中的数据的至少两种进行校验,实现缓存的不同缓存类型的自动化和通用化验证,降低缓存验证的人力成本,缩短缓存验证时间,提高缓存验证效率。
根据本申请的一个方面,本实施例公开了一种缓存验证装置10。如图2所示,本实施例中,所述装置包括一致性校验模块11、缓存模型12和下游行为级模型13。
其中,所述一致性校验模块11用于根据输入所述缓存的验证请求确定待校验的数据,并基于所述待校验的数据确定校验结果,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型12中的数据以及下游行为级模型13的数据中的至少两种。
所述下游行为级模型13用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据。
所述缓存模型12用于存储缓存中的至少部分数据和/或所述下游行为级模型13返回的至少部分数据。
本申请的一致性校验模块11可基于输入缓存的验证请求的确定对应的待校验的数据,并根据待校验的数据确定校验结果。其中,验证请求至少包括读请求和/或写请求,待校验的数据可以是缓存发送的回读数据、缓存模型12中的数据以及下游行为级模型13中的数据的至少两种。从而,本申请可识别不同的验证请求,并可根据验证请求对缓存的回读数据、缓存模型12和下游行为级模型13中的数据的至少两种进行校验。由此,缓存验证装置10可支持缓存的不同缓存类型的自动化和通用化验证,降低缓存验证的人力成本,缩短缓存验证时间,提高缓存验证效率。
需要说明的是,本公开不限制验证请求的类型,如前所述,可以是针对只读缓存、读写缓存(例如,顺序读写缓存、乱序读写缓存等)等各类缓存类型的验证请求,还可以是针对缓存功能特性的验证请求,例如,数据刷出请求验证、重取标记验证请求、数据无效化验证请求等。本公开实施例基于验证请求及其类型,可以确定对应的待校验的数据,并进行校验。本公开实施例的一次性校验模块、缓存模型以及下游行为级模型可以交互即可,本公开对其从属关系不作限制,例如,一次性校验模块可以包括缓存模型,缓存模型也可以独立于一次性校验模块。
在一些可选的实施例中,所述下游行为级模型,还用于在接收到所述缓存基于写请求发送的写入数据的情况下,存储所述写入数据。
需要说明的是,在部分验证请求,例如,对只读缓存的验证请求的情况下,所述下游行为级模型可以不存储缓存发来的写入数据,具体内容详见下文。
在一些可选的实施例中,所述下游行为级模型,还用于在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址未存储过所述写入数据的情况下,根据初始化数据确定所述预读数据;在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址存储过所述写入数据的情况下,根据最后一次的写入数据确定所述预读数据。
在一些可选的实施例中,所述一致性校验模块,用于在所述缓存模型中与所述回读数据对应的读请求的地址未存储过写入数据和/或预读数据的情况下,根据初始化数据确定所述预期数据;在所述缓存模型中与所述回读数据对应的读请求的地址存储过写入数据和/或预读数据的情况下,根据最后一次存储的数据确定所述预期数据。
在一些可选的实施例中,例如,在验证请求为针对读写缓存的验证请求的情况下,所述缓存在接收到读请求后,若该读请求待读取的目标数据存储于缓存中,则直接从缓存中获取读请求对应的目标数据作为回读数据返回,若缓存中并没有存储读请求待读取的目标数据,则缓存基于读请求待读取的目标数据形成数据读取请求,并发送给下游行为级模型13以从下游行为级模型13中读取与所述读请求对应的目标数据。下游行为级模型13可模拟缓存的下游模块的功能,则下游行为级模型13在接收到缓存发送的数据读取请求后,确定与读请求待读取的目标数据对应的下游数据,将该下游数据作为预读数据返回至缓存以使缓存将该预读数据作为回读数据发送出去,实现缓存基于读请求返回对应的目标数据的功能。需要说明的是,在部分验证场景下,例如,重取标记验证请求、数据无效化验证请求时,即使该读请求待读取的目标数据存储于缓存中,缓存也需要基于读请求形成数据读取请求,并发送给下游行为级模型13以从下游行为级模型13中读取与所述读请求对应的目标数据,具体内容详见下文。
应理解,本公开实施例的缓存验证装置,可以是根据输入所述缓存的验证请求,灵活确定待校验数据,例如,在验证请求为针对只读缓存的验证请求的情况下,确定对应只读缓存的验证请求的待校验的数据,在验证请求为数据刷出请求的情况下,确定对应数据刷出请求的待校验的数据。还可以是对输入缓存的验证请求进行参数化提取,确定对应的验证参数,并基于验证参数确定通用化验证请求,以基于通用化验证请求确定对应的待校验的数据,本公开对此不作限制。其中,确定的通用化验证请求可以包括与输入缓存的验证请求相关的各类信息,例如,包括验证请求及地址、验证请求的类型以及初始化数据等,初始化数据可如前所述用于确定预期数据、预读数据等,本公开对此不作限制。
本公开实施例的缓存验证方法无需针对不同缓存类型的验证请求分别构建测试环境进行缓存验证,而是灵活地基于验证请求,确定待校验的数据,能够解决针对不同缓存验证请求,需要分别投入不同的人力资源进行验证,存在大量的重复过程,进而导致缓存验证的人力成本高和缓存验证时间长、效率低的问题。
在优选的实施方式中,如图3所示,所述一致性校验模块11进一步包括参数化模块111和格式转换模块112。
其中,参数化模块111用于基于所述缓存的参数配置对所述验证请求进行参数化提取得到验证参数。
格式转换模块112用于根据所述验证参数和预设数据结构得到通用化验证请求,所述通用化验证请求用于确定所述待校验的数据。
示例性地,可以理解的是,相关技术中,对于只读缓存、顺序读写缓存和乱序读写缓存等不同缓存类型的验证,需要建立不同的测试环境分别进行测试。为了提供一种可适用于不同缓存类型验证的缓存验证装置10,在该优选的实施方式中,可预先根据待验证缓存的基本参数形成缓存的参数配置,通过缓存的参数配置可对不同缓存类型的验证请求进行参数化提取得到不同缓存类型的验证请求中相同属性的参数,以便于对验证请求进行请求类型等属性的识别。
其中,缓存的参数配置可根据待验证缓存的基本参数得到。在可选的实施方式中,缓存的参数配置可包括输入接口类型、输入接口数目、输入请求地址位宽、输入请求数据位宽、缓存行数据位宽和缓存行初始化数据等缓存的基本参数。根据参数配置的基本参数从输入缓存的验证请求中提取与参数配置中基本参数对应的参数值,实现参数化提取过程。
进一步的,可预设与基本参数和验证请求等信息对应的数据结构,将参数化提取得到的基本参数和参数值对应设置于预设数据结构中,实现将不同类型的验证请求转化为通用化验证请求的目的。由此,通过参数化提取和预设数据结构的转换可将输入缓存的不同验证请求转化为通用化验证请求,一致性校验模块11即可通过通用化验证请求识别验证请求的请求类型和待验证的缓存类型等属性,进一步根据通用化验证请求确定对应的待校验的数据并对待校验的数据执行对应的校验过程得到校验结果,实现对多种缓存类型的自动化和通用化验证,从而本申请的缓存验证装置10可用于不同缓存类型的验证过程,无需再针对不同的缓存类型分别搭建不同的测试环境,极大的降低了缓存验证的人力成本,缩短缓存验证的验证时间,提高验证效率。
其中,预设数据结构可根据参数化提取过程可得到的基本参数和验证请求进行设置。在可选的实施方式中,统一的数据结构可包括请求类型(trans_type)、请求地址(address)、读写数据(data)、数据掩码(mask)、请求标号(id)和用户定义(user_define)等字段。其中,请求类型标志读请求还是写请求。请求地址标志读写的地址。读写数据存储写入数据/回读数据。数据掩码标识掩码位对应数据是否会被写入缓存,例如,一个写请求对应的写入数据可能不会全部写入,可用mask标志哪些数据需要被写入缓存,例如写入一个64bit数据,会有8bit掩码,从而可确定该写请求实际的写入数据,用于后续的一致性校验。请求标号是指每笔请求具有唯一的标号,标志回读数据和请求之间的对应关系。用户定义支持用户对不同缓存类型验证过程中的验证请求结构进行扩展。例如,用户可以在用户定义的位置定义写请求的有效位,如果为1,则表示该笔写请求无效,不会写入缓存,直接丢弃,如果为0则表示写请求有效,将正常写入缓存。当然,在实际应用中,本领域技术人员可根据实际需求进行用户定义,以适用多种缓存数据的验证场景,本申请对此并不作限定。
在可选的实施方式中,一致性校验模块11可通过拦截器或在缓存中设置监听程序获取输入缓存的验证请求。当然,在其他实施方式中,一致性校验模块11还可通过其他方式获取输入缓存的验证请求,本申请对此并不作限定。
在优选的实施方式中,如图4所示,所述一致性校验模块11进一步包括请求队列113,用于存储所述验证请求。
所述一致性校验模块11用于将所述验证请求存储至所述请求队列113,基于所述验证请求确定所述待校验的数据。
示例性地,可以理解的是,一致性校验模块11中可设置请求队列113,该请求队列113可用于存储验证请求。一致性校验模块11可将接收的验证请求存储至请求队列113,当对缓存进行验证时,可从请求队列113中获取验证请求并根据该验证请求确定对应的待校验的数据进行校验。
例如,在具体例子中,待校验的数据包括缓存返回的回读数据和缓存模型12中的数据时,一致性校验模块11可从请求队列113中获取该回读数据对应的验证请求,根据验证请求从缓存模型12中获取对应的数据与回读数据形成待校验的数据,对缓存模型中的数据和所述回读数据进行一致性校验。其中,在一个或多个可选的实施方式中,接收的验证请求可按顺序存储至请求队列113,同时,缓存返回的回读数据也是按顺序返回至一致性校验模块11。则根据接收到的回读数据,依次从请求队列113中获取验证请求,即为当前回读数据对应的验证请求。在其他实施方式中,可在验证请求中设置请求标号,接收的验证请求也可不按顺序存储至请求队列113,则缓存返回的回读数据中需设置请求标号,根据回读数据中的请求标号可从请求队列113中获取请求标号对应的验证请求。
在优选的实施方式中,验证请求为读请求时,一致性校验模块11可根据所述读请求确定所述回读数据的数据存储地址,根据所述数据存储地址从所述缓存模型12中获取所述数据存储地址对应的数据,得到与所述读请求对应的所述预期数据。
其中,请求队列存储的所述验证请求除了是输入到缓存的验证请求,还可以是前文所述的通用化验证请求,本公开对此不作限制。
在优选的实施方式中,一致性校验模块11接收验证请求后,可根据验证请求更新缓存模型12。从而,缓存模型12中可存储验证请求对缓存和/或下游行为级模型13的数据处理操作。例如,当一致性校验模块11接收的验证请求为写请求时,可将待写入缓存或缓存下游的数据存储地址及写入数据存储至缓存模型12。由此,缓存模型里可以记录验证请求对缓存和缓存下游的所有写请求的写入操作。则当一致性校验模块11接收的验证请求为读请求时,可确定验证请求中的数据存储地址,该数据存储地址在缓存模型12中可能存在预先根据写请求执行写入操作的数据存储地址和对应的缓存数据,根据数据存储地址从缓存模型12中获取与数据存储地址对应的缓存数据,即得到预期数据。如前所述,该数据存储地址可能多次写入缓存数据,该预期数据可以是与数据存储地址对应的最后一次(或称最近一次)写入的缓存数据。该数据存储地址也可能未写入过数据,例如,未存储过写入数据和/或预读数据,该预期数据可以是初始化数据。
在优选的实施方式中,如图5所示,所述一致性校验模块11进一步包括预期数据队列114。
所述一致性校验模块11具体用于将所述待校验的数据中的至少一种存储至所述预期数据队列114,从所述预期数据队列114中获取存储的待校验的数据以确定校验结果。
可以理解的是,待校验的数据中的数据通常并非一致性校验模块11同时接收的,从而一致性校验模块11中可设置预期数据队列114,该预期数据队列114可用于存储待校验的数据中的至少一种,在确定校验结果时,从预期数据列队114中读取存储的至少部分的待校验的数据完成校验过程。其中,可以是在获取到验证请求、接收到回读数据之前或者接收到回读数据的情况下,确定预期数据,并将预期数据存储至该预期数据队列,本公开对获取预期数据、存储至预期数据队列的时机不作限制。
例如,在一个或多个实施方式中,验证请求包括读请求,待校验的数据包括缓存返回的回读数据和缓存模型12中的缓存数据,该缓存数据包括缓存中的至少部分数据和/或下游行为级模型中的至少部分数据。一致性校验模块11可从缓存模型12中确定与读请求对应的缓存数据作为预期数据存储至预期数据队列114中。在缓存返回的回读数据按照缓存接收验证请求的先后顺序返回时,一致性校验模块11也可按接收验证请求的先后顺序依次获取缓存模型12中的预期数据,并将预期数据依次存储在预期数据队列114中。则当对回读数据进行校验时,可按照回读数据的顺序依次从预期数据队列114中获取预期数据进行一致性校验确定校验结果,通过设置该预期数据队列114可便于回读数据的快速校验,提高缓存验证效率。
在其他实施方式中,可在验证请求中设置请求标号,将根据验证请求获取的预期数据与对应的请求标号对应设置在预期数据队列114中。进一步的,缓存返回的回读数据中也包括请求标号,根据回读数据中的请求标号可从预期数据队列114中获取请求标号对应的预期数据,用于一致性校验。
在优选的实施方式中,如图6所示,所述验证请求包括读请求,所述通用化验证请求为只读缓存的验证请求。
所述下游行为级模型13,用于响应于接收到所述缓存基于所述读请求发送的所述数据读取请求,生成随机数据,将所述随机数据作为所述预读数据。
所述缓存模型12,用于将所述预读数据存储为所述读请求对应的数据。
所述一致性校验模块11,用于将缓存发送的回读数据以及基于所述回读数据从缓存模型12中确定的预期数据确定为待校验的数据,其中,所述回读数据与所述预期数据对应于相同的读请求。
在对验证请求进行参数提取和格式转换后得到通用化验证请求,一致性校验模块11可根据通用化验证请求确定待验证的缓存类型。其中,通用化验证请求中的缓存类型可以是从验证请求中通过参数化提取得到的,也可以是一致性校验模块11通过格式转换过程将预设的缓存类型设置在通用化验证请求中得到的,本申请对此并不作限定。
当一致性校验模块11确定通用化验证请求为只读缓存的验证请求时,该验证请求为读请求,待校验的数据包括缓存发送的回读数据和缓存模型12中的数据。下游行为级模型13在接收到缓存基于读请求发送的数据读取请求时,生成随机数据,将所述随机数据作为所述预读数据返回至缓存以使缓存将该预读数据作为回读数据发送出去,所述缓存模型也将所述预读数据存储为所述读请求对应的数据。
可选的,当对只读缓存的缓存类型进行验证时,可在下游行为级模型13中预设预读数据的数据模式为随机模式,则下游行为级模型13在随机模式下,响应于接收到缓存发送的数据读取请求,生成随机数据作为数据读取请求对应的预读数据。可选的,下游行为级模型13在随机模式下,响应于接收到缓存发送的数据写入请求时,可以不执行写入操作。
由于该随机数据是由下游行为级模型13随机生成的,该随机数据并没有存储在缓存模型12中,为了对缓存发送的回读数据进行验证,下游行为级模型13同时将预读数据发送给缓存模型12,缓存模型12将预读数据存储并作为所述读请求对应的预期数据。所述一致性校验模块11将读请求对应的缓存发送的回读数据以及基于所述回读数据从缓存模型12中获取对应的预期数据确定为待校验的数据进行校验,实现只读缓存的缓存验证,其中,回读数据与预期数据对应于相同的读请求。
示例性地,在验证过程中,缓存与缓存模型中已存储部分缓存数据,其中,相同的缓存数据在缓存以及缓存模型中对应相同的数据存储地址,本公开不限制缓存以及缓存模型中存储缓存数据的方式。若响应于读请求,缓存命中,则缓存直接返回读请求中数据存储地址对应的数据。若未命中,则缓存基于接收的验证请求向下游行为级模型13发送包括数据存储地址的数据读取请求,下游行为级模型13生成随机数据,将随机数据作为预读数据返回至缓存,并将该预读数据存储为缓存模型中该数据存储地址对应的缓存数据。
在只读缓存的验证过程中,通过设置下游行为级模型13生成随机数据,能够解决未写入数据的数据存储地址每次返回的预读数据均为预设初始化数据的情况而无法确定性的判别只读缓存是否验证通过的问题。
例如,在一个例子中,下游行为级模型13接收到缓存发送的数据读取请求,该数据读取请求为缓存基于只读缓存的验证请求发出的数据读取请求。下游行为级模型13接收到该数据读取请求后,生成随机数据A,将该随机数据A作为预读数据返回给缓存,若缓存运行状态正常,缓存会将预读数据作为回读数据发送出去,即将随机数据A作为回读数据发送出去。为了对缓存返回的回读数据进行校验,下游行为级模型13同时将预读数据发送至缓存模型12,即将生成的随机数据A发送至缓存模型12。一致性校验模块11接收缓存发回的回读数据,根据回读数据对应的只读缓存的读请求从缓存模型12中获取对应的预期数据,即随机数据A,通过该预期数据A对回读数据进行校验得到校验结果。示例性地,若回读数据与预期数据相同,即回读数据和预期数据均为随机数据A,表示缓存返回的回读数据为从下游行为级模型13中获取的随机数据,只读缓存校验通过;反之,若回读数据与预期数据不相同,即回读数据和预期数据并非均为随机数据A,表示缓存返回的回读数据不是从下游行为级模型13中获取的随机数据,只读缓存校验不通过,缓存的只读功能异常。
在可选的实施方式中,缓存模型12将所述随机数据作为读请求的预期数据存储至所述缓存模型12中时,缓存模型12可从验证请求中确定数据存储地址,将数据存储地址与随机数据关联存储以更新缓存模型12中的数据。一致性校验模块11接收缓存基于所述验证请求返回的回读数据,根据回读数据对应的读请求确定数据存储地址,并从所述缓存模型12中获取所述数据存储地址对应的数据,即得到所述随机数据作为预期数据。当一致性校验模块11接收到缓存返回的回读数据时,从缓存模型12中获取预期数据,该预期数据为随机数据。若缓存的只读过程正常运行时,缓存返回的回读数据为下游行为级模型13生成的随机数据,此时回读数据和预期数据均为随机数据。从而,若回读数据与预期数据比对一致,表示缓存的只读过程正常运行,只读缓存的缓存类型验证通过;若回读数据与预期数据比对不一致,表示缓存的只读过程异常,只读缓存的缓存类型验证不通过。
需要说明的是,在对只读缓存的验证场景下,验证请求还可以包括写请求,缓存、缓存模型以及下游行为级模型可以忽略该写请求。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为只读缓存的验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求为对只读缓存的验证请求的情况下,确定针对只读缓存的验证请求对应的待校验的数据。
示例性地,本公开实施例的缓存验证装置包括一致性校验模块、缓存模型和下游行为级模型,验证请求至少包括读请求;
所述一致性校验模块,用于在确定输入缓存的验证请求为针对只读缓存的验证请求的情况下,将缓存基于验证请求包括的读请求确定的回读数据以及缓存模型中的与该所述回读数据对应的预期数据,确定为待校验的数据,并基于待校验的数据确定校验结果,
所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,生成随机数据,将所述随机数据作为所述预读数据,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据;
所述缓存模型,用于将所述预读数据存储为所述读请求对应的数据。
其中,所述回读数据与所述预期数据对应于相同的读请求。
在一种可能的实现方式中,所述缓存响应于验证请求包括的读请求,确定命中(例如,缓存中存储有读请求对应的有效数据),将命中的读请求对应的数据作为所述回读数据,若未命中,则向下游行为级模型发送基于读请求发送的数据读取请求,并基于下游行为级模型返回的预读数据确定回读数据。所述缓存模型至少存储有缓存中存储的有效数据。
所述一致性校验模块,用于响应于回读数据以及缓存模型中的与该回读数据对应的缓存数据一致,确定通过一致性校验,响应于回读数据以及缓存模型中的与该回读数据对应的缓存数据不一致,确定未通过一致性校验。
通过这种方式,可以准确地实现对只读缓存的一致性校验。
示例性地,所述一致性校验模块,用于在确定输入缓存的验证请求为针对只读缓存的验证请求的情况下,配置为精确模式。该精确模式可以包括在所述缓存模型中与所述回读数据对应的读请求的地址未存储过写入数据和/或预读数据的情况下,根据初始化数据确定为所述预期数据。在所述回读数据对应的读请求的地址过写入数据和/或预读数据的情况下,将该地址最后一次写入的数据确定为所述预期数据。
通过这种方式,下游行为级模型响应于数据读取请求,生成随机数据并返回,相比于返回固定数值(例如初始化数值或者之前写过的一个数值),可以更好地对其他外部主机对下游缓存或者存储器写数据带来回读数据改变进行模拟,对只读缓存构建了较为复杂的实际应用场景,能够高效、快速发现回读数据与下游行为级模型返回的随机数据不一致的错误,快速发现只读缓存可能存在的功能缺陷。
在一种可能的实现方式中,所述一致性校验模块,用于在接收到回读数据的情况下,从所述缓存模型中获取预期数据。
其中,确定回读数据对应的预期数据可以是按照回读数据对应的请求标号,从请求队列中查找该请求标号对应的读请求,以将缓存模型中确定该读请求对应的预期数据确定为待校验的数据。在回读数据按照读请求顺序返回的情况下,可以按照顺序从请求队列中查找该读请求对应的预期数据确定为待校验的数据。
在优选的实施方式中,如图7所示,所述验证请求包括读请求以及写请求,所述通用化验证请求为顺序读写缓存的验证请求。
所述缓存模型12,用于存储写请求对应的写入数据。
所述一致性校验模块11,用于将根据所述读请求从所述缓存模型12中确定的预期数据以及所述缓存响应于读请求发送的回读数据确定为待校验的数据。
示例性地,可以理解的是,当一致性校验模块11确定通用化验证请求为顺序读写缓存的验证请求时,验证请求包括写请求和读请求。一致性校验模块11将写请求对缓存和缓存下游的写入数据写入缓存模型12,则缓存模型12中自然的存储有读请求的预期数据,待校验的数据包括缓存响应于读请求发送的回读数据和缓存模型12中与读请求对应的预期数据。
在一种可能的实现方式中,一致性校验模块可以被配置为精确模式,如前所述,在此不再赘述。
在一种可能的实现方式中,下游行为级模型可以被配置为固定模式。固定模式可以包括在接收到所述缓存基于写请求发送的写入数据的情况下,存储所述写入数据,在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址未存储过所述写入数据的情况下,根据初始化数据确定所述预读数据;接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址存储过写入数据的情况下,将最后一次存储的写入数据确定为预读数据。
在一种可能的实现方式中,一致性校验模块,用于在获取到读请求的情况下,从所述缓存模型中确定的预期数据。
由此,当待验证缓存类型为顺序读写时,缓存接收到读请求,读请求待读取的目标数据存储在缓存中时,缓存将该目标数据作为回读数据发送出去。当读请求待读取的目标数据不在缓存中时,缓存需要从下游行为级模型13中实时获取该目标数据。从而,缓存可基于读请求形成获取目标数据的数据读取请求并发送给下游行为级模型13。下游行为级模型13在接收到数据读取请求时,确定目标数据对应的下游数据,将该下游数据作为预读数据返回给缓存以使缓存将该预读数据作为回读数据发送出去。
在校验过程中,由于缓存模型12中存储了缓存中写入的缓存数据,从而,可从缓存模型12中获取读请求对应的缓存数据作为预期数据,校验回读数据以确定顺序读写缓存是否通过验证。
示例性地,当待验证缓存类型为顺序读写缓存时,一致性校验模块11接收写请求后,可将写请求中写入数据的数据存储地址和写入数据作为缓存数据存储至缓存模型12,以更新缓存模型12。
缓存接收写请求后,根据写请求得到写入数据的数据存储地址和写入数据并存储在缓存中,同时,可以根据写入数据和数据存储地址形成数据写入请求并发送至下游行为级模型13中以更新下游行为级模型13中的下游数据。
下游行为级模型13在接收到缓存基于写请求发送的数据写入请求时,该数据写入请求中包括写入数据,下游行为级模型13存储数据写入请求中的写入数据的数据存储地址和写入数据以更新下游行为级模型13存储的下游数据。
在校验过程中,当一致性校验模块11接收读请求后,接收所述缓存基于所述验证请求返回的回读数据,根据所述读请求确定数据存储地址,从所述缓存模型12中获取所述数据存储地址对应的缓存数据,得到所述预期数据。其中,当下游行为级模型13接收到读请求时,确定读请求中数据存储地址对应的下游数据,将该下游数据作为预读数据返回给缓存以使缓存将该预读数据作为回读数据发送出去。
由于缓存模型12中存储了缓存中的缓存数据及对应的数据存储地址,可从缓存模型12中获取读请求的数据存储地址对应的缓存数据作为预期数据,校验回读数据以确定顺序读写缓存是否验证通过。其中,由于缓存模型12中记录了所有通过写请求向缓存和缓存下游行为级模型13的数据写入操作,并在每次写入数据时更新数据存储地址对应的数据,缓存、缓存模型12和下游行为级模型13中最终存储的数据均为最后一次写入数据存储地址的写入数据。从而,当缓存读写缓存运行正常时,缓存返回的回读数据与预期数据一致,均为对于数据存储地址最后一次写请求的写入数据,则通过预期数据对回读数据进行一致性校验可确定缓存的顺序读写缓存是否验证通过。示例性地,若回读数据与预期数据比对一致,表示缓存的顺序读写过程正常运行,顺序读写缓存验证通过;若回读数据与预期数据比对不一致,表示缓存的顺序读写过程异常,顺序读写缓存验证不通过。
例如,在一个例子中,当对顺序读写缓存进行校验时,缓存依次接收到三次写请求,三次写请求分别为向数据存储地址X写入数据A1、A2和A3。在顺序读写时,三次写请求之后缓存中数据存储地址X最终存储的数据为A3。一致性校验模块11依次获取到输入缓存的三次写请求。其中,在接收到第一个写请求时,将写入数据A1作为缓存数据与对应的数据存储地址X一并写入缓存模型12中;在接收到第二个写请求时,用写入数据A2替换缓存模型12中数据存储地址X对应的写入数据A1,此时,缓存模型12中数据存储地址X对应的缓存数据为A2;在接收到第三个写请求时,用写入数据A3替换缓存模型12中数据存储地址X对应的写入数据A2,此时,缓存模型12中数据存储地址X对应的缓存数据为A3。
为了对顺序读写缓存进行校验,可向缓存发送读请求,该读请求为读取数据存储地址X的读请求,缓存接收到该读请求后,可从缓存或下游行为级模型13中获取数据存储地址X对应的数据。若缓存运行正常,缓存基于读请求返回的数据为写入数据A3。此时,缓存模型中数据存储地址X对应的缓存数据为写入数据A3。从而,一致性校验模块11在接收缓存返回的回读数据后,基于回读数据对应的读请求从缓存模型12中获取对应的预期数据,即写入数据A3。进而,通过预期数据对回读数据进行校验,若回读数据与预期数据相同,即回读数据与预期数据均为A3,校验通过;反之,若回读数据与预期数据不同,即回读数据与预期数据并非均为A3,校验不通过,缓存顺序读写功能异常。
示例性地,一致性校验模块可以获取输入缓存的写请求以及读请求,响应于获取到写请求,将写请求对应的写入数据更新到缓存模型中,缓存模型存储写请求对应的写入数据及写入地址。响应于获取到读请求,可以根据读请求携带的读请求地址从缓存模型中获取预期数据并存储至预期数据队列。一致性校验模块根据缓存发送的回读数据以及从预期数据队列中获取的与回读数据对应的预期数据进行比较,以确定缓存顺序读写功能是否正常。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为顺序读写缓存的验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求为顺序读写缓存的验证请求的情况下,确定针对顺序读写缓存的验证请求对应的待校验的数据。
本公开实施例的缓存验证装置包括一致性校验模块、缓存模型和下游行为级模型,验证请求包括读请求以及写请求;
所述缓存模型,用于存储写请求对应的写入数据;
所述一致性校验模块,用于将根据所述读请求从所述缓存模型中确定的预期数据以及所述缓存响应于读请求发送的回读数据确定为待校验的数据,并基于待校验的数据确定校验结果,
其中,所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据。
应理解,缓存根据验证请求包括的写请求和读请求,分别执行写操作和读操作。
所述一致性校验模块,用于响应于根据所述读请求从所述缓存模型中确定的预期数据以及所述缓存响应于读请求发送的回读数据一致,确定通过一致性校验,响应于根据所述读请求从所述缓存模型中确定的预期数据以及所述缓存响应于读请求发送的回读数据不一致,确定未通过一致性校验。
在优选的实施方式中,如图7所示,所述验证请求包括读请求以及写请求,所述通用化验证请求为乱序读写缓存的验证请求。
其中,所述缓存模型12用于存储每个写请求对应的写入数据。
所述一致性校验模块11用于将所述缓存响应于读请求发送的回读数据以及根据所述回读数据从所述缓存模型12中确定的预期数据确定为待校验的数据,其中,所述预期数据包括目标读请求地址对应的所有历史写入数据,所述目标读请求地址为所述回读数据对应的读请求地址。
在一种可能的实现方式中,所述一致性校验模块,用于在所述所有历史写入数据中存在与所述回读数据相同的写入数据的情况下,确定乱序读写缓存验证成功。
在一种可能的实现方式中,一致性校验模块可以被配置为模糊模式。模糊模式可以包括确定回读数据对应读请求的目标读请求地址,将缓存模型中存储的该目标请求地址对应的所有历史写入数据确定为预期数据,并在所述所有历史写入数据中存在与所述回读数据相同的写入数据的情况下,确定乱序读写缓存验证成功。若不存在与回读数据相同的写入数据的情况下,确定乱序读写缓存验证失败。
在一种可能的实现方式中,下游行为级模型可以被配置为固定模式,如前所述,在此不再赘述。
示例性地,所述一致性校验模块获取到输入缓存的写请求,将写请求对应的写入数据更新给缓存模型,所述缓存模型存储每个写请求对应的写入数据以及数据存储地址。所述一致性校验模块获取到输入缓存的读请求,可以将该读请求存入请求队列,并在接收到缓存返回的回读数据的情况下,从所述缓存模型中确定回读数据对应的预期数据确定为待校验的数据。其中,所述预期数据包括目标读请求地址对应的所有历史写入数据,所述目标读请求地址为所述回读数据对应的读请求地址。例如,基于回读数据,确定对应的读请求以及目标读请求地址,将该目的读请求地址对应的所有历史写入数据确定为预期数据。
示例性地,可以是基于请求标号,确定回读数据对应的预期数据,如前所述,在此不再赘述,并在所述所有历史写入数据中存在与所述回读数据相同的写入数据的情况下,确定乱序读写缓存验证成功。若不存在与回读数据相同的写入数据的情况下,确定乱序读写缓存验证失败。
通过这种方式,将用于比对的预期数据的比对空间扩大到目标读请求地址对应的所有历史写入数据,能够对乱序读写缓存数据写入错误地址等一致性错误进行验证,可以及时发现乱序读写缓存可能存在的潜在功能错误。
示例性地,可以理解的是,当一致性校验模块11确定通用化验证请求为乱序读写缓存的验证请求时,验证请求包括写请求和读请求。一致性校验模块11将写请求对缓存和缓存下游的所有历史写入数据写入缓存模型12,则缓存模型12中自然的存储有读请求的预期数据,待校验的数据包括缓存响应于读请求发送的回读数据和缓存模型12中与读请求对应的预期数据,该预期数据为缓存模型12中读请求的目标读请求地址对应所有历史写入数据。
其中,当待验证缓存类型为乱序读写缓存时,缓存接收到读请求,读请求待读取的目标数据存储在缓存中时,缓存将该目标数据作为回读数据发送出去。当读请求待读取的目标数据不在缓存中时,缓存需要从下游行为级模型13中实时获取该目标数据。从而,缓存可基于读请求形成获取目标数据的数据读取请求并发送给下游行为级模型13。下游行为级模型13在接收到数据读取请求时,确定目标数据对应的下游数据,将该下游数据作为预读数据返回给缓存以使缓存将该预读数据作为回读数据发送出去。
在校验过程中,由于缓存模型12中存储了缓存中所有历史写入数据,从而,可从缓存模型12中获取读请求的目标读请求地址对应的所有历史写入数据作为预期数据,校验回读数据和所有历史写入数据以确定乱序读写缓存是否通过验证。
示例性地,当待验证缓存类型为乱序读写缓存时,一致性校验模块11接收写请求后,可将写请求中写入数据的数据存储地址和写入数据作为缓存数据存储至缓存模型12,以更新缓存模型12。
缓存接收写请求后,根据写请求得到写入数据的数据存储地址和写入数据并存储在缓存中,同时,可以根据写入数据和数据存储地址形成数据写入请求并发送至下游行为级模型13中以更新下游行为级模型13中的下游数据。
下游行为级模型13在接收到缓存基于写请求发送的数据写入请求时,该数据写入请求中包括写入数据,下游行为级模型13存储数据写入请求中的写入数据的数据存储地址和写入数据以更新下游行为级模型13存储的下游数据。
在校验过程中,当一致性校验模块11接收读请求后,接收所述缓存基于所述读请求返回的回读数据,根据回读数据确定对应的读请求,并根据所述读请求确定读请求地址(目标读请求地址),从所述缓存模型12中获取所述读请求地址的数据存储地址对应的所有写入数据,得到所述预期数据。其中,当下游行为级模型13接收到数据读取请求时,确定数据读取请求中读请求地址对应的下游数据,将该下游数据作为预读数据返回给缓存以使缓存将该预读数据作为回读数据发送出去。
由于缓存模型12中存储了缓存中的所有历史写入数据及对应的数据存储地址,可从缓存模型12中获取读请求的数据存储地址对应的所有历史写入数据作为预期数据,校验回读数据是否存在于预期数据中以确定乱序读写缓存是否验证通过。其中,由于缓存模型12中记录了所有通过写请求向缓存和缓存下游行为级模型13的数据写入操作,即缓存模型12在乱序读写缓存验证时存储了写入缓存的数据存储地址中的所有历史写入数据。由于乱序读写时无法确定写入顺序,为了实现对乱序读写缓存的验证且保证缓存验证效率,当缓存读写缓存运行正常时,缓存返回的回读数据应当存在于预期数据中,即回读数据存在于读请求地址的所有历史写入数据中,则可通过预期数据对回读数据进行校验以确定缓存的乱序读写缓存是否验证通过。示例性地,若回读数据与预期数据中的其中之一比对一致,表示缓存的乱序读写过程正常运行,乱序读写缓存验证通过;若回读数据不存在于预期数据中,表示缓存的乱序读写过程异常,乱序读写缓存验证不通过。
例如,在一个具体例子中,当对乱序读写缓存进行校验时,缓存依次接收到三次写请求,三次写请求分别为向数据存储地址X写入数据A1、A2和A3。在乱序读写时,缓存并非按照接收请求的顺序对三次写请求进行处理,则三次写请求之后缓存中数据存储地址X最终存储的数据不确定,可能是A1、A2和A3中的任意一个。在此基础上,一致性校验模块11依次获取到输入缓存的三次写请求。其中,在接收到第一个写请求时,将写入数据A1作为缓存数据与对应的数据存储地址X一并写入缓存模型12中;在接收到第二个写请求时,将写入数据A2作为缓存数据与对应的数据存储地址X一并写入缓存模型12中;在接收到第三个写请求时,将写入数据A3作为缓存数据与对应的数据存储地址X一并写入缓存模型12中。
为了对乱序读写缓存进行校验,可向缓存发送读请求,该读请求为读取数据存储地址X的读请求,缓存接收到该读请求后,可从缓存或下游行为级模型13中获取数据存储地址X对应的数据。若缓存运行正常,缓存基于读请求返回的数据为写入数据A1、A2和A3中的一个。此时,缓存模型中数据存储地址X对应的缓存数据为写入数据A1、A2和A3。从而,一致性校验模块11在接收缓存返回的回读数据后,基于回读数据对应的读请求从缓存模型12中获取对应的预期数据,即数据存储地址X对应的所有写入数据A1、A2和A3。进而,通过预期数据对回读数据进行校验,若回读数据与预期数据中的一个相同,即回读数据为A1、A2和A3中的一个,则认为校验通过;反之,回读数据并非预期数据中的一个,即回读数据并非A1、A2和A3中的一个,则认为校验不通过,缓存乱序读写功能异常。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为乱序读写缓存的验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求为对为乱序读写缓存的验证请求的情况下,确定针对为乱序读写缓存的验证请求对应的待校验的数据。如前所述,在此不再赘述。
在优选的实施方式中,如图8所示,所述验证请求包括写请求以及数据刷出请求,所述通用化验证请求为刷出验证请求。
所述缓存模型12用于存储与每个写请求对应的写入数据。
所述下游行为级模型13还用于存储所述缓存响应于所述数据刷出请求发送的与写请求对应的所有写入数据。
所述一致性校验模块11用于将缓存模型12中与每个写请求对应的写入数据以及下游行为级模型13中的与写请求对应的所有写入数据确定为待校验的数据。
可以理解的是,缓存数据刷出是指对于缓存(例如,读写缓存),缓存支持将已经写入到缓存内的数据全部刷出到缓存下游。为了对缓存数据刷出是否成功进行验证,在该优选的实施方式中,可定义验证请求的一个请求类型为数据刷出请求,验证请求可包括写请求以及数据刷出请求。一致性校验模块11可根据通用化验证请求确定验证请求为刷出验证请求。
示例性地,所述验证请求为写请求时,一致性校验模块11接收写请求后,可将写请求中写入数据的数据存储地址和写入数据作为缓存数据存储至缓存模型12,以更新缓存模型12。
缓存接收写请求后,根据写请求得到写入数据的数据存储地址和写入数据并存储在缓存中。
所述验证请求为数据刷出请求时,缓存根据所有写入数据和数据存储地址形成数据写入请求并发送至下游行为级模型13中以更新下游行为级模型13中的下游数据。
下游行为级模型13在接收到缓存基于写请求发送的数据写入请求时,该数据写入请求中包括所有写入数据,下游行为级模型13存储数据写入请求中的所有写入数据的数据存储地址和所有写入数据以更新下游行为级模型13存储的下游数据,完成缓存中的所有写入数据的刷出。
所述缓存模型12中存储有与所有写请求对应的写入数据。所述下游行为级模型13中存储有缓存刷出的所有写请求对应的写入数据。从而,若缓存数据刷出成功,下游行为级模型13中的下游数据应当包括缓存模型12中所有写请求对应的写入数据。因此,在进行缓存数据刷出验证时,待校验的数据包括缓存模型12中所有写请求对应的写入数据和下游行为级模型13中所有数据写入请求的写入数据。一致性校验模块11可直接获取下游行为级模型13中存储的所有下游数据和缓存模型12中存储的所有写入数据作为预期数据,将下游数据和预期数据进行比对以确定缓存中的数据是否成功刷出至下游行为级模型13。即当预期数据均存在于下游行为级模型13的下游数据中时,可确认缓存中的所有数据均成功刷出至下游行为级模型13中。
例如,在一个具体例子中,缓存中存储有A、B和C的缓存数据,在数据刷出时,缓存会将数据A、B和C通过数据写入请求写入下游行为级模型13。若数据刷出成功,下游行为级模型13中会存储有数据A、B和C。其中,数据A、B和C是通过写请求写入缓存中的,一致性校验模块11可获取写入数据A、B和C的写请求,将数据A、B和C及对应的数据存储地址一并存储至缓存模型12。由此,缓存模型12中存储有缓存的缓存数据,可对缓存刷出至下游行为级模型13的数据进行校验。获取缓存模型12中的数据A、B和C作为预期数据,将该预期数据与下游行为级模型13中的下游数据一起作为待校验的数据,将预期数据与下游行为级模型13中的下游数据进行校验以确定数据刷出是否成功。示例性地,若缓存模型12中的数据A、B和C存在于下游行为级模型13中的下游数据中,则表示缓存中的数据全部成功刷出至下游行为级模型13中。
在优选的实施方式中,所述一致性校验模块11,进一步用于将所述缓存模型12中与每个写请求对应的写入数据以及下游行为级模型13中的与写请求对应的所有写入数据进行双向比对以确定数据刷出是否成功。
示例性地,可以理解的是,在缓存将缓存中的写入数据刷出至下游行为级模型13中时,可能存在刷出错误,以使下游行为级模型13中多出部分写入数据。从而,在该优选的实施方式中,为了进一步提高缓存数据刷出验证的验证准确性,对缓存模型12中的所有写入数据作为预期数据和下游行为级模型13中的下游数据进行双向比对,当预期数据与下游数据双向比对一致时,确定缓存刷出的数据和下游行为级模型13中的下游数据完全一致,缓存数据刷出成功。
例如,在一个具体例子中,缓存中存储有A、B和C的缓存数据,在数据刷出时,缓存会将数据A、B和C通过数据写入请求写入下游行为级模型13。若数据刷出成功,下游行为级模型13中会存储有数据A、B和C。其中,数据A、B和C是通过写请求写入缓存中的,一致性校验模块11可获取写入数据A、B和C的写请求,将数据A、B和C及对应的数据存储地址一并存储至缓存模型12。由此,缓存模型12中存储有缓存的缓存数据,可对缓存刷出至下游行为级模型13的数据进行校验。获取缓存模型12中的数据A、B和C作为预期数据,将该预期数据与下游行为级模型13中的下游数据一起作为待校验的数据,将预期数据与下游行为级模型13中的下游数据进行校验以确定数据刷出是否成功。示例性地,若缓存模型12中的数据A、B和C存在于下游行为级模型13中的下游数据中,则表示缓存中的数据全部刷出至下游行为级模型13中。而在数据迁移时,下游行为级模型13中的数据为空,在缓存中的数据刷出至下游行为级模型之后,若数据刷出成功,此时下游行为级模型13中的数据与缓存模型中缓存的数据完全一致。从而,可对缓存模型12和下游行为级模型13中的数据进行双向比对,即确定缓存模型12和下游行为级模型13中的数据是否完全一致,则一致,表示缓存数据刷出时,缓存中的数据全部刷出至下游行为级模型中,并且缓存数据刷出时也没有将错误数据写入下游行为级模型13,数据刷出成功。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为刷出验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求包括刷出验证请求的情况下,确定刷出验证请求对应的待校验的数据。
本公开实施例的缓存验证装置包括一致性校验模块、缓存模型和下游行为级模型,验证请求包括写请求以及数据刷出请求;
所述缓存模型,用于存储与每个写请求对应的写入数据;
所述下游行为级模型,用于存储所述缓存响应于所述数据刷出请求发送的与写请求对应的所有写入数据;
所述一致性校验模块,用于在确定输入所述缓存的验证请求包括刷出验证请求的情况下,将缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据确定为待校验的数据,并基于所述待校验的数据确定校验结果。
所述一致性校验模块,用于将所述缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据进行双向比对以确定数据刷出是否成功。
其中,通过双向比对可以理解为缓存模型中所有写入过数据的第一地址,在下游行为级模型中第一地址也被写入过数据,且二者数据相同,相应地,下游行为级模型中所有写入过数据的第二地址,在缓存模型中第二地址也被写入过数据,且二者数据相同。
这样,可以更准确地确保缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据的数据空间一致,从而确定数据全部刷出且正确以及没有额外的异常数据被刷出,解决单向比较无法确定所有写入数据均被刷出、无法确定是否有额外异常数据刷出等问题。
其中,本公开实施例的缓存验证装置执行刷出验证请求的实现方式可参考前文,在此不再赘述。
在优选的实施方式中,如图9所示,所述验证请求包括重取标记请求以及对重取缓存数据的读请求,所述通用化验证请求为重取标记验证请求。
其中,所述下游行为级模型13用于根据下游数据修改请求,更新待重取的目标下游数据,并形成对应的重取标记请求,将所述重取标记请求发送至所述缓存以使所述缓存根据所述重取标记请求对所述目标下游数据对应的重取缓存数据设置重取标记,其中,所述重取标记用于指示缓存在接收到对所述重取缓存数据的读请求时,将从所述下游行为级模型13获取的与所述读请求对应的下游数据确定为回读数据。
所述缓存模型12用于将所述待重取的目标下游数据存储为与所述重取缓存数据对应的数据。
所述一致性校验模块11,用于将所述缓存输出的与所述读请求对应的回读数据以及从所述缓存模型12中获取与所述读请求对应的数据作为所述预期数据,确定为待校验的数据。
其中,需要说明的是,为了实现缓存重取标记的验证,本申请的下游行为级模型13可对下游数据进行修改以更新下游行为级模型13存储的下游数据得到待重取的下游数据,基于更新后的待重取的下游数据形成重取标记请求并将该重取标记请求发送给缓存以使缓存对待重取的下游数据对应的重取缓存数据设置重取标记。
在对缓存进行重取标记验证时,下游行为级模型13可将待重取的下游数据修改为默认值,使待重取的下游数据与缓存中对应的重取缓存数据不再相同。进而,在缓存接收到读取具有重取标记的重取缓存数据时,若缓存重取标记设置成功,缓存可基于重取标记从下游行为级模型13中重新获取重取的下游数据作为回读数据,而缓存模型12中存储有缓存中的缓存数据,在重取标记验证时,需将与缓存中的重取缓存数据对应的数据同步修改为待重取的下游数据。则从缓存模型12中获取的与读请求对应的预期数据为待重取的下游数据。因此,若回读数据和预期数据相同,即回读数据和预期数据均为默认值,缓存返回的是重新从下游行为级模型13中获取的更新后的下游数据,重取标记设置成功,缓存运行状态正常。反之,若回读数据和预期数据不相同,回读数据并非默认值,缓存返回的并非重新从下游行为级模型13中获取的更新后的下游数据,重取标记设置失败,缓存运行状态异常。
例如,在一个具体例子中,下游行为级模型13中存储有下游数据A,缓存中存储有与该下游数据A完全相同的缓存数据A,下游行为级模型13将下游数据A更新为B,则下游行为级模型13形成下游数据A的重取标记请求,将该重取标记请求发送给缓存,缓存基于该重取标记请求确定待重取的下游数据A以及待设置重取标记的缓存数据A,为所述缓存数据A设置重取标记。同时,将缓存模型12中存储的缓存中的缓存数据A修改为缓存数据B,从而根据缓存模型12中的缓存数据B可对重取标记是否设置成功进行判定。
其中,默认值可以是不同于缓存中当前重取缓存数据的任意数值,例如,可以为设置的初始值,或者是随机且不同于缓存中当前重取缓存数据的数值,还可以是响应于外部主机传输的下游数据修改请求,并更新的不同于缓存中当前重取缓存数据的数值,本公开对此不作限制。
当缓存接收到读取缓存数据A的读请求后,识别缓存数据A的重取标记后从下游行为级模型13中重新获取缓存数据A对应的下游数据B,将该下游数据B作为回读数据返回。若回读数据为下游数据B,缓存模型12中对应的缓存数据为缓存数据B,则表示缓存从下游行为级模型13中实时获取下游数据返回,重取标记设置成功。若回读数据返回的仍为缓存数据A,则表示缓存并没有根据重取标记重新从下游行为级模型13中获取更新后的下游数据B,重取标记设置不成功。
所述下游行为级模型13可通过直接删除待重取的下游数据的方式实现将待重取的下游数据修改为默认值的目的,例如,执行删除操作后,所述下游行为级模型中所述重取缓存数据地址对应的下游数据直接被更新为初始值,使下游行为级模型13待重取的下游数据更新更简单、便捷。
在优选的实施方式中,所述重取标记请求为所述下游行为级模型13接收外部主机传输的下游数据修改请求,根据所述下游数据修改请求确定待重取的下游数据并更新所述待重取的下游数据,根据更新后的待重取的下游数据得到的。
本申请中的缓存模型中存储有缓存数据及对应的数据存储地址,其中,缓存模型的缓存数据可以包括缓存中的缓存数据,也可以包括下游行为级模型中存储的下游数据。示例性地,缓存模型中至少包括与所述重取缓存数据对应的缓存数据,与所述重取缓存数据对应的缓存数据在下游行为级模型发送的重取标记请求之前,可以为重取缓存数据,在下游行为级模型发送的重取标记请求之后,可以为下游行为级模型中与重取缓存数据对应、但不同于重取缓存数据的待重取的下游数据。缓存模型可以用于根据缓存数据的数据存储地址从缓存模型中查找得到对应的缓存数据。
示例性地,本申请中的缓存响应于读请求,确定读请求对应的缓存数据是否存在重取标记,若是,则将从所述下游行为级模型获取的与所述读请求对应的下游数据确定为回读数据,若否,则可以执行常规的命中判断,例如,若命中,则将该读请求对应的缓存数据作为回读数据,若未命中,则基于该读请求,向下游行为级模型发送数据请求,并基于下游行为级模型返回的下游数据确定回读数据。
其中,可以基于下游行为级模型更新的待重取的下游数据,修改缓存模型中与所述重取缓存数据对应的缓存数据,实现下游行为级模型以及缓存模型中,相同数据存储地址(对应于重取缓存数据的地址)对应的数据相同,且不同于缓存中该数据存储地址对应的重取缓存数据。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为重取标记验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求包括重取标记验证请求的情况下,确定与重取标记验证请求对应的待校验的数据。具体实现方式如前所述,在此不再赘述。
在优选的实施方式中,如图10所示,所述验证请求包括数据无效化请求以及读请求,所述数据无效化请求用于无效缓存中的目标缓存数据,所述读请求是针对所述目标缓存数据的读请求,所述通用化验证请求为数据无效化验证请求。
所述下游行为级模型13,用于将与所述数据无效化验证请求对应的数据修改为默认值。
所述缓存模型12,用于将与所述数据无效化验证请求对应的数据修改为默认值;
所述一致性校验模块11,用于将缓存响应于所述读请求输出的回读数据以及所述缓存模型12中与所述读请求对应的预期数据确定为待校验的数据,响应于所述回读数据与所述预期数据相同,确定数据无效化验证成功。
示例性地,可以理解的是,为了对数据无效化请求是否无效掉缓存中的目标缓存数据的请求处理结果进行验证,可根据输入缓存的数据无效化请求确定待无效化处理的目标缓存数据的目标数据存储地址,根据解析得到的目标数据存储地址将缓存模型12和下游行为级模型13中的缓存数据和下游数据均修改为默认值。则若缓存对目标缓存数据的无效化处理成功,缓存在接收到获取该无效化处理成功的目标缓存数据的读请求时,需要实时从下游行为级模型13中重新获取目标缓存数据对应的下游数据,即缓存会从下游行为级模型13中获取到默认值,将该默认值作为回读数据发送出去。而此时,缓存模型12中的目标数据存储地址对应的缓存数据也为默认值,该默认值即为读请求对应的预期数据。因此,可根据该预期数据对回读数据进行校验以确定数据无效化请求是否处理成功。若回读数据和预期数据相同,即回读数据和预期数据均为默认值,表示缓存基于读取目标缓存数据的读请求返回的回读数据为重新从下游行为级模型13中获取的下游数据,数据无效化处理成功,缓存运行状态正常。示例性地,默认值可以是不同于缓存中当前目标缓存数据的任意数值,例如,可以为设置的初始值,或者是随机且不同于缓存中当前目标缓存数据的数值,本公开对此不作限制。
例如,在一个具体例子中,下游行为级模型13中存储有下游数据A,缓存中存储有与该下游数据A完全相同的缓存数据A,缓存接收到缓存数据A的数据无效化请求,对缓存数据A作无效化处理。同时,将缓存模型12和下游行为级模型13中的缓存数据A和下游数据A分别修改为默认值B。
当缓存接收到读取缓存数据A的读请求后,若数据无效化处理成功,缓存不再返回缓存数据A,需要从下游行为级模型13中重新获取缓存数据A对应的下游数据,即从下游行为级模型13中获取缓存数据A对应的默认值B,将该默认值B作为回读数据返回。此时,缓存模型12中存储有缓存的缓存数据A对应的默认值B,即读请求对应的预期数据。由此,可根据缓存模型12中的默认值B对缓存数据A的数据无效化处理是否成功进行判定。若回读数据为默认值B,回读数据与预期数据一致,则表示缓存从下游行为级模型13中实时获取下游数据返回,缓存数据A的无效化处理成功。若回读数据与预期数据不一致,则表示缓存并没有重新从下游行为级模型13中获取缓存数据A对应的默认值B,缓存数据A的无效化处理不成功。
可选的,将所述缓存模型12和所述下游行为级模型13中所述目标数据存储地址对应的缓存数据和下游数据修改为默认值时,可通过删除所述缓存模型12和所述下游行为级模型13中所述目标数据存储地址对应的缓存数据和下游数据实现,例如,执行删除操作后,缓存模型和所述下游行为级模型中所述目标数据存储地址对应的缓存数据和下游数据直接被更新为初始值,使缓存模型12和下游行为级模型13的数据更新更简单、便捷。
本申请中的缓存模型中存储有缓存数据及对应的数据存储地址,其中,缓存模型的缓存数据可以包括缓存中的缓存数据,也可以包括下游行为级模型中存储的下游数据。示例性地,缓存模型中至少包括与所述目标缓存数据对应的缓存数据,与所述目标缓存数据对应的缓存数据在缓存执行数据无效化请求之前,可以为目标缓存数据,在缓存执行数据无效化请求之后,可以为下游行为级模型中与目标缓存数据对应、但不同于目标缓存数据的数据。缓存模型可用于根据缓存数据的数据存储地址从缓存模型中查找得到对应的缓存数据。
其中,本申请中的缓存响应于读请求,确定是否命中,若命中,则将该读请求对应的缓存数据作为回读数据,若未命中,则基于该读请求,向下游行为级模型发送数据请求,并基于下游行为级模型返回的下游数据确定回读数据。
需要说明的是,本申请中从缓存模型中获取的与所述回读数据对应的缓存数据可以是基于回读数据确定对应的读请求或者对应读请求的数据存储地址,从缓存模型中获取到、并作为预期数据的缓存数据,本公开对获取与所述回读数据对应的缓存数据的方式和时机均不做限制。
通过这种方式,在缓存无效化操作完成后,无需额外的验证逻辑,例如,无需窥探缓存内部是否有将对应颗粒度的缓存进行无效化操作,而是通过回读数据与预期数据比较进行验证,回读数据可以理解为是对缓存内部逻辑通路进行回读,从而本公开实施例还可以实现数据从缓存内部数据存储到回读缓存数据端口之间的逻辑通路的验证。
需要说明的是,上述以基于通用化验证请求确定输入缓存的验证请求为数据无效化验证请求为例进行说明,本公开的缓存验证装置也可以在确定获取到的输入所述缓存的验证请求包括数据无效化验证请求的情况下,确定与数据无效化验证请求对应的待校验的数据。如前所述,在此不再赘述。
综上,本申请可对不同验证请求的请求类型进行识别,并可基于待验证缓存类型和请求类型更新缓存模型12,下游行为级模型13也根据缓存传输的数据写入请求和待验证缓存类型更新下游数据,或者根据缓存传输的数据读取请求形成预读数据,从而可实现不同缓存类型的自动化验证,并可对缓存的功能特性进行验证,极大地提高了缓存验证装置10的广泛适用性,提供了一种通用的、快速适配和灵活性强的缓存验证装置10,实现不同缓存类型的缓存自动化验证,降低缓存验证的人力成本,缩短缓存验证时间,提高缓存验证效率。
基于相同原理,本实施例还公开了一种缓存验证方法。应用于本实施例的缓存验证装置,所述缓存验证装置包括缓存模型和下游行为级模型,所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据,所述缓存模型,用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据。如图11所示,本实施例中,所述方法包括:
S100:根据输入所述缓存的验证请求确定待校验的数据,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型中的数据以及下游行为级模型的数据中的至少两种。
S200:基于所述待校验的数据确定校验结果。
由于该方法解决问题的原理与以上装置类似,因此本方法的实施可以参见装置的实施,在此不再赘述。
基于相同原理,本实施例还公开了一种缓存验证系统。缓存验证系统包括缓存和如本实施例所述的缓存验证装置10。
由于该系统解决问题的原理与以上装置类似,因此本系统的实施可以参见装置的实施,在此不再赘述。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的计算机程序产品来实现。一种典型的实现设备为计算机设备,示例性地,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。
下面参考图12,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图12所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (20)
1.一种缓存验证装置,其特征在于,包括一致性校验模块、缓存模型和下游行为级模型;
所述一致性校验模块,用于根据输入所述缓存的验证请求确定待校验的数据,并基于所述待校验的数据确定校验结果,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型中的数据以及下游行为级模型的数据中的至少两种;
所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据;
所述缓存模型,用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据。
2.根据权利要求1所述的装置,其特征在于,所述一致性校验模块进一步包括:
参数化模块,用于基于所述缓存的参数配置对所述验证请求进行参数化提取得到验证参数;
格式转换模块,用于根据所述验证参数和预设数据结构得到通用化验证请求,所述通用化验证请求用于确定所述待校验的数据。
3.根据权利要求2所述的装置,其特征在于,所述验证请求包括读请求,所述通用化验证请求为只读缓存的验证请求,
所述下游行为级模型,用于响应于接收到所述缓存基于所述读请求发送的所述数据读取请求,生成随机数据,将所述随机数据作为所述预读数据;
所述缓存模型,用于将所述预读数据存储为所述读请求对应的数据;
所述一致性校验模块,用于将缓存发送的回读数据以及基于所述回读数据从缓存模型中确定的预期数据确定为待校验的数据,其中,所述回读数据与所述预期数据对应于相同的读请求。
4.根据权利要求2所述的装置,其特征在于,所述验证请求包括读请求以及写请求,所述通用化验证请求为顺序读写缓存的验证请求,
所述缓存模型,用于存储写请求对应的写入数据;
所述一致性校验模块,用于将根据所述读请求从所述缓存模型中确定的预期数据以及所述缓存响应于读请求发送的回读数据确定为待校验的数据。
5.根据权利要求2所述的缓存验证装置,其特征在于,所述验证请求包括写请求以及数据刷出请求,所述通用化验证请求为刷出验证请求;
所述缓存模型,用于存储与每个写请求对应的写入数据;
所述下游行为级模型,还用于存储所述缓存响应于所述数据刷出请求发送的与写请求对应的所有写入数据;
所述一致性校验模块,用于将缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据确定为待校验的数据。
6.根据权利要求5所述的装置,其特征在于,所述一致性校验模块,进一步用于将所述缓存模型中与每个写请求对应的写入数据以及下游行为级模型中的与写请求对应的所有写入数据进行双向比对以确定数据刷出是否成功。
7.根据权利要求2所述的装置,其特征在于,所述验证请求包括读请求以及写请求,所述通用化验证请求为乱序读写缓存的验证请求,
所述缓存模型,用于存储每个写请求对应的写入数据;
所述一致性校验模块,用于将所述缓存响应于读请求发送的回读数据以及根据所述回读数据从所述缓存模型中确定的预期数据确定为待校验的数据,
其中,所述预期数据包括目标读请求地址对应的所有历史写入数据,所述目标读请求地址为所述回读数据对应的读请求地址。
8.根据权利要求7所述的装置,其特征在于,所述一致性校验模块,用于在所述所有历史写入数据中存在与所述回读数据相同的写入数据的情况下,确定乱序读写缓存验证成功。
9.根据权利要求2所述的装置,其特征在于,所述验证请求包括重取标记请求以及对重取缓存数据的读请求,所述通用化验证请求为重取标记验证请求;
所述下游行为级模型,用于根据下游数据修改请求,更新待重取的目标下游数据,并形成对应的重取标记请求,将所述重取标记请求发送至所述缓存以使所述缓存根据所述重取标记请求对所述目标下游数据对应的重取缓存数据设置重取标记,其中,所述重取标记用于指示缓存在接收到对所述重取缓存数据的读请求时,将从所述下游行为级模型获取的与所述读请求对应的下游数据确定为回读数据;
所述缓存模型,用于将所述待重取的目标下游数据存储为与所述重取缓存数据对应的数据;
所述一致性校验模块,用于将所述缓存输出的与所述读请求对应的回读数据以及从所述缓存模型中获取与所述读请求对应的数据作为预期数据,确定为待校验的数据。
10.根据权利要求9所述的装置,其特征在于,
所述一致性校验模块,还用于响应于所述预期数据与所述回读数据一致,确定重取标记验证成功;响应于所述预期数据与所述回读数据不一致,确定重取标记验证失败。
11.根据权利要求2所述的装置,其特征在于,所述验证请求包括数据无效化请求以及读请求,所述数据无效化请求用于无效缓存中的目标缓存数据,所述读请求是针对所述目标缓存数据的读请求,所述通用化验证请求为数据无效化验证请求;
所述下游行为级模型,用于将与所述数据无效化验证请求对应的数据修改为默认值;
所述缓存模型,用于将与所述数据无效化验证请求对应的数据修改为默认值;
所述一致性校验模块,用于将缓存响应于所述读请求输出的回读数据以及所述缓存模型中与所述读请求对应的预期数据确定为待校验的数据,响应于所述回读数据与所述预期数据相同,确定数据无效化验证成功。
12.根据权利要求1、2以及4至11中任意一项所述的缓存验证装置,其特征在于,所述下游行为级模型,还用于在接收到所述缓存基于写请求发送的写入数据的情况下,存储所述写入数据。
13.根据权利要求12所述的缓存验证装置,其特征在于,所述下游行为级模型,还用于在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址未存储过所述写入数据的情况下,根据初始化数据确定所述预读数据;在接收到所述缓存基于读请求发送的数据读取请求、且所述数据读取请求对应读请求地址存储过所述写入数据的情况下,根据最后一次的写入数据确定所述预读数据。
14.根据权利要求3、4以及7至11中任意一项所述的缓存验证装置,其特征在于,所述一致性校验模块,用于在所述缓存模型中与所述回读数据对应的读请求的地址未存储过写入数据和/或预读数据的情况下,根据初始化数据确定所述预期数据;在所述缓存模型中与所述回读数据对应的读请求的地址存储过写入数据和/或预读数据的情况下,根据最后一次存储的数据确定所述预期数据。
15.根据权利要求1所述的缓存验证装置,其特征在于,所述一致性校验模块进一步包括请求队列;
所述一致性校验模块,用于将所述验证请求存储至所述请求队列,基于所述验证请求确定所述待校验的数据。
16.根据权利要求1所述的缓存验证装置,其特征在于,所述一致性校验模块进一步包括预期数据队列;
所述一致性校验模块用于将所述待校验的数据中的至少一种存储至所述预期数据队列,从所述预期数据队列中获取存储的待校验的数据以确定校验结果。
17.一种缓存验证系统,其特征在于,包括缓存和如权利要求1至16任一项所述的缓存验证装置。
18.一种缓存验证方法,其特征在于,应用于缓存验证装置,所述缓存验证装置包括缓存模型和下游行为级模型,所述下游行为级模型,用于在接收所述缓存基于读请求发送的数据读取请求的情况下,返回预读数据,所述预读数据用于缓存确定与所述读请求对应的回读数据,所述缓存模型,用于存储缓存中的至少部分数据和/或所述下游行为级模型返回的至少部分数据;
所述方法包括:
根据输入所述缓存的验证请求确定待校验的数据,其中,所述验证请求至少包括读请求和/或写请求,所述待校验的数据包括所述缓存发送的回读数据、缓存模型中的数据以及下游行为级模型的数据中的至少两种;
基于所述待校验的数据确定校验结果。
19.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述程序时实现如权利要求18所述方法。
20.一种计算机可读介质,其上存储有计算机程序,其特征在于,
该程序被处理器执行时实现如权利要求18所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310010848.1A CN115712397B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
CN202310552072.6A CN116627331B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310010848.1A CN115712397B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310552072.6A Division CN116627331B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115712397A CN115712397A (zh) | 2023-02-24 |
CN115712397B true CN115712397B (zh) | 2023-05-09 |
Family
ID=85236164
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310010848.1A Active CN115712397B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
CN202310552072.6A Active CN116627331B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310552072.6A Active CN116627331B (zh) | 2023-01-05 | 2023-01-05 | 缓存验证装置、方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN115712397B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116467133A (zh) * | 2023-04-12 | 2023-07-21 | 摩尔线程智能科技(北京)有限责任公司 | 测试缓存性能的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704150A (zh) * | 2021-08-13 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种用户态下dma数据缓存一致性方法、装置及系统 |
CN115374154A (zh) * | 2022-08-05 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 数据验证方法、装置、电子设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8306951B2 (en) * | 2009-09-18 | 2012-11-06 | Oracle International Corporation | Automated integrated high availability of the in-memory database cache and the backend enterprise database |
US8996812B2 (en) * | 2009-06-19 | 2015-03-31 | International Business Machines Corporation | Write-back coherency data cache for resolving read/write conflicts |
CN105446841B (zh) * | 2015-11-24 | 2019-02-12 | 无锡江南计算技术研究所 | 缓存一致性测试方法 |
CN107015991B (zh) * | 2016-01-28 | 2020-10-30 | 创新先进技术有限公司 | 数据一致性的自检方法、装置、系统和业务装置 |
CN107102896A (zh) * | 2016-02-23 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种多级缓存的操作方法、装置及电子设备 |
US9928174B1 (en) * | 2016-03-16 | 2018-03-27 | Amazon Technologies, Inc. | Consistent caching |
CN109213641B (zh) * | 2017-06-29 | 2021-10-26 | 展讯通信(上海)有限公司 | 缓存一致性检测系统及方法 |
CN110674055B (zh) * | 2019-09-11 | 2023-10-03 | 上海高性能集成电路设计中心 | 一种用于部件级和部件联合级的缓存一致性模拟验证方法 |
CN111897846B (zh) * | 2020-07-31 | 2024-02-09 | 深圳市虹红科技有限公司 | 缓存数据校验方法、装置、设备及存储介质 |
CN113836152B (zh) * | 2021-08-13 | 2023-07-18 | 苏州浪潮智能科技有限公司 | 一种高效率数据一致性校验方法、装置及存储介质 |
CN113760775A (zh) * | 2021-09-30 | 2021-12-07 | 唯品会(广州)软件有限公司 | 一种消息自动测试方法及装置 |
CN114741250A (zh) * | 2022-04-22 | 2022-07-12 | 北京奕斯伟计算技术有限公司 | 用于验证多级高速缓存器的系统及方法 |
-
2023
- 2023-01-05 CN CN202310010848.1A patent/CN115712397B/zh active Active
- 2023-01-05 CN CN202310552072.6A patent/CN116627331B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704150A (zh) * | 2021-08-13 | 2021-11-26 | 苏州浪潮智能科技有限公司 | 一种用户态下dma数据缓存一致性方法、装置及系统 |
CN115374154A (zh) * | 2022-08-05 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 数据验证方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116627331B (zh) | 2024-04-02 |
CN116627331A (zh) | 2023-08-22 |
CN115712397A (zh) | 2023-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860323B2 (en) | Method and apparatus for processing instructions using processing-in-memory | |
US8954673B1 (en) | Using a conditional read request and a hash to determine synchronization of data in a cache at a host with data in storage array | |
CN111611120B (zh) | 一种片上多核处理器Cache一致性协议验证方法、系统及介质 | |
US9836397B2 (en) | Direct memory access of dynamically allocated memory | |
TWI730690B (zh) | 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
CN109542636B (zh) | 一种数据更新的方法及装置 | |
CN109710185A (zh) | 数据处理方法及装置 | |
US11650754B2 (en) | Data accessing method, device, and storage medium | |
CN115130402B (zh) | 一种缓存验证方法、系统、电子设备及可读存储介质 | |
US11263150B2 (en) | Testing address translation cache | |
CN115712397B (zh) | 缓存验证装置、方法及系统 | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
WO2024103870A1 (zh) | 基于固态硬盘的顺序写方法、装置、电子设备及存储介质 | |
CN111639087B (zh) | 数据库中数据更新方法、装置和电子设备 | |
CN115826875B (zh) | 缓存数据无效化验证方法、装置及系统 | |
US11803317B2 (en) | Interrupted replicated write recognition | |
CN115202738A (zh) | 一种写穿策略下多核系统的验证方法和系统 | |
CN115061948A (zh) | 多核系统中非对齐访问的验证方法及系统 | |
CN110327626B (zh) | 虚拟服务器创建方法及装置 | |
CN114237715A (zh) | 多核访存指令验证系统与方法 | |
CN109582523B (zh) | 有效分析SSD前端NVMe模块性能的方法及系统 | |
CN109445686B (zh) | 一种存储磁盘以及存取数据的方法 | |
CN115756998B (zh) | 缓存数据重取标记验证方法、装置及系统 | |
CN117667964B (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 |