CN105446841B - 缓存一致性测试方法 - Google Patents
缓存一致性测试方法 Download PDFInfo
- Publication number
- CN105446841B CN105446841B CN201510830049.4A CN201510830049A CN105446841B CN 105446841 B CN105446841 B CN 105446841B CN 201510830049 A CN201510830049 A CN 201510830049A CN 105446841 B CN105446841 B CN 105446841B
- Authority
- CN
- China
- Prior art keywords
- communal space
- host process
- write operation
- read operation
- buffer consistency
- 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
Classifications
-
- 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/2205—Detection 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
-
- 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/2247—Verification or detection of system hardware configuration
-
- 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/2294—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by remote test
-
- 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
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种缓存一致性测试方法,包括:主进程申请一个共享空间;由主进程创建出多个子进程;在该共享空间中划分出四个共享空间部分;由主进程对读操作和写操作访问的内存块号进行排列,使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值。
Description
技术领域
本发明涉及多核处理器的缓存一致性验证的技术领域,具体涉及一种缓存一致性测试方法。
背景技术
高速缓存技术的采用是为了匹配处理器的速度和存储器的存取速度,在现代的大多数处理器上,几乎所有的内存访问都需要通过缓存来进行。随着多处理器、多核、众核技术的发展,处理器的速度越来越快,存储器层次结构也越来越复杂,高速缓存一致性(Cachecoherence)的问题也就变得越来越突出。高速缓存一致性是指保留在高速缓存中的共享资源保持数据一致性的机制。
随着处理器存储层次的增多,在相邻层次间和同一层之内都可能会出现数据不一致的问题,这个问题在多核、众核系统中特别突出。问题的根源是多核、众核系统往往使用多个层次、不同大小、不同共享属性的高速缓存,那么验证这种设计下的缓存一致性就显得极为复杂。
现在业界通常使用模拟仿真方式来进行缓存一致性的协议级验证,但这种验证方式效率低,而且随着状态空间的爆炸,很难保证遍历所有场景。因此高效简单的系统级缓存一致性协议正确性验证方法,已被业界逐渐采用,比如专利CN102681937A,其针对处理器域间缓存一致性芯片的正确性验证,其采用在BIOS代码中嵌入缓存一致性验证程序,在系统初始化初期、内存子系统初始化完成后,即开始执行验证程序。但该方法由于没有操作系统核心的打扰,降低了应用的复杂性,不足以涵盖真实的应用场景。
由于系统级验证中人工编写的并行一致性验证程序的访存模式类型有限,不能充分地验证处理器缓存的一致性,因此如何自动地生成涵盖多种访存模式的验证程序来充分地验证处理器的缓存一致性就是亟需要解决的问题。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种缓存一致性测试方法,能够针对多核处理器运行并行程序时缓存一致性场景多、遍历困难等问题,提出通过实现并行访存模式自动生成系统,来生成涵盖多种访存场景的并行验证程序,在芯片设计前期和样片阶段对处理器的缓存一致性进行充分的验证,以保证一次投片成功率,进而降低芯片设计成本,缩短研发周期。
根据本发明,提供了一种缓存一致性测试方法,包括:
由主进程申请一个共享空间,所述共享空间的大小为缓存大小的整数倍;
由主进程创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;
在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分;
由主进程对读操作和写操作访问的内存块号进行排列,并将排列好的序列针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;
在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;
在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值,如果权值相同则判定缓存一致性不存在问题。
优选地,所述主进程利用fork函数创建出多个子进程。
优选地,所述主进程是在操作系统引导后用户级测试程序的主进程。
优选地,所述操作系统是Linux。
优选地,所述主进程对读操作和写操作访问的内存块号进行排列的原则是要使多个进程同时对同一缓存段进行读操作和写操作。
优选地,所述第一共享空间部分所对应的物理空间是连续的,所述第二共享空间部分所对应的物理空间也是连续的。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了根据本发明优选实施例的缓存一致性测试方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明的基本构思是让多个进程并发地对不重复的内存地址进行读写访问,然后检查访问的结果是否正确,从而判断缓存一致性是否存在问题。但当内存空间很大时,并发访存的内存地址组合很多,因此,本发明选择最有可能造成缓存一致性问题的模式来进行遍历,即多个进程并发读写访问可能映射为同一缓存段的内存地址。
图1示意性地示出了根据本发明优选实施例的缓存一致性测试方法的流程图。如下面将要详细描述的那样,所述缓存一致性测试方法采用了并行访存模式。
如图1所示,根据本发明优选实施例的缓存一致性测试方法包括:
第一步骤S1、由主进程(作业号可以设为0)(主进程指的是在Linux之类的操作系统引导后用户级测试程序的主进程)在内存中申请一个共享空间,该共享空间大小为缓存大小的整数倍;
第二步骤S2、由主进程利用fork函数创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;
第三步骤S3、在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分。
其中,在本发明的设定中,使得所述第一共享空间部分所对应的物理空间是连续的,所述第二共享空间部分所对应的物理空间也是连续的。
第四步骤S4、由主进程对读操作和写操作访问的内存块号(即,第一共享空间部分和第二共享空间部分中的内存块号)按照一定的规则(访问同一缓存段)进行排列,并将排列好的序列(即,内存地址排列)针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中必须使读操作和写操作访问的内存地址不重叠,而且将其它进程(即所述多个子进程)进入同步接口;第四步骤S4一直持续到等待主进程结束排列操作;
具体地,所述主进程对读操作和写操作访问的内存块号进行排列是有原则的,要能使多个进程同时对同一缓存段进行读操作和写操作。
第五步骤S5、在所述其它进程(即所述多个子进程)同步成功后,读取所述排列好的序列,让所有进程(即所述主进程和所述多个子进程)同时进行读写操作;此时,由于在第四步骤S4中使读操作和写操作访问的内存地址不重叠,所以第五步骤S5中每个进程访问的内存块号互不相同;
第六步骤S6、在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的读空间和写空间分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值,如果相同则表示缓存一致性不存在问题。
实际上,上述处理的一些操作要重复,直到遍历所有有效内存地址排列。最后,在遍历完所有有效内存地址排列后,回收进程并释放共享空间。
本发明可具有如下特征:
(1)自动生成内存访问序列,使多个进程同时访问同一缓存段,并保证内存访问不重叠;
(2)内存访问序列排序的规则是,每个缓存段内访问顺序随机排列,每个缓存段之间按顺序访问;
(3)对任意不重叠的读写访问,用异或操作计算权值,从而校验读写访问结果的正确性。
本发明可以模拟真实的缓存一致性应用场景,生成涵盖多种访存场景的并行验证程序,此类验证程序可以运行在多种环境下,如硬件仿真器、FPGA以及实际芯片上,因此本发明可以提高对多核处理器的缓存一致性的验证效率,在流片前以及样片阶段进行充分的验证,以保证一次投片成功率,进而降低芯片设计成本,缩短研发周期。
需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (6)
1.一种缓存一致性测试方法,其特征在于包括:
由主进程申请一个共享空间,所述共享空间的大小为缓存大小的整数倍;
由主进程创建出多个子进程,使所述多个子进程和所述主进程都可以同时访问所申请的共享空间;
在该共享空间中划分出四个共享空间部分:用于读操作访问的第一共享空间部分、用于写操作访问的第二共享空间部分、用于保存读操作访问的逻辑内存块号的第三共享空间部分、以及用于保存写操作访问的逻辑内存块号的第四共享空间部分;
由主进程对读操作和写操作访问的内存块号进行排列,并将排列好的序列针对读操作和写操作分别保存到第三共享空间部分和第四共享空间部分中,其中使读操作和写操作访问的内存地址不重叠,而且使所述多个子进程进入同步接口;
在所述多个子进程同步成功后,读取所述排列好的序列,让所述主进程和所述多个子进程同时进行读写操作;
在所述主进程和所述多个子进程的读写操作都完成后,每个进程对自己访问的第一共享空间部分和第二共享空间部分分别用异或操作来计算权值,并且比较读操作和写操作访问的内存的权值,如果权值相同则判定缓存一致性不存在问题。
2.根据权利要求1所述的缓存一致性测试方法,其特征在于,主进程利用fork函数创建出多个子进程。
3.根据权利要求1或2所述的缓存一致性测试方法,其特征在于,所述主进程是在操作系统引导后用户级测试程序的主进程。
4.根据权利要求3所述的缓存一致性测试方法,其特征在于,所述操作系统是Linux。
5.根据权利要求1所述的缓存一致性测试方法,其特征在于,所述主进程对读操作和写操作访问的内存块号进行排列的原则是使多个进程同时对同一缓存段进行读操作和写操作。
6.根据权利要求1所述的缓存一致性测试方法,其特征在于,所述第一共享空间部分所对应的物理空间是连续的,所述第二共享空间部分所对应的物理空间也是连续的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830049.4A CN105446841B (zh) | 2015-11-24 | 2015-11-24 | 缓存一致性测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510830049.4A CN105446841B (zh) | 2015-11-24 | 2015-11-24 | 缓存一致性测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446841A CN105446841A (zh) | 2016-03-30 |
CN105446841B true CN105446841B (zh) | 2019-02-12 |
Family
ID=55557073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510830049.4A Active CN105446841B (zh) | 2015-11-24 | 2015-11-24 | 缓存一致性测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446841B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688515B (zh) * | 2016-12-23 | 2020-11-03 | 北京国睿中数科技股份有限公司 | 一种Bufferable模式的验证方法 |
CN107247578A (zh) * | 2017-06-12 | 2017-10-13 | 北京奇虎科技有限公司 | 配置参数存储方法及装置 |
CN110879748B (zh) * | 2018-09-06 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 一种共享资源分配方法、装置和设备 |
CN111078410B (zh) * | 2019-12-11 | 2022-11-04 | Oppo(重庆)智能科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN111782217B (zh) * | 2020-06-23 | 2023-05-09 | 上海赛昉科技有限公司 | 快速高效产生cache一致性测试C程序的系统及方法 |
CN111611120B (zh) * | 2020-06-28 | 2023-05-30 | 中国人民解放军国防科技大学 | 一种片上多核处理器Cache一致性协议验证方法、系统及介质 |
CN113254322B (zh) * | 2021-06-07 | 2023-03-21 | 恒为科技(上海)股份有限公司 | 一种Stream系统极限吞吐性能评估方法及系统 |
CN115712397B (zh) * | 2023-01-05 | 2023-05-09 | 摩尔线程智能科技(北京)有限责任公司 | 缓存验证装置、方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262608A (zh) * | 2011-07-28 | 2011-11-30 | 中国人民解放军国防科学技术大学 | 基于处理器核的协处理器读写操作控制方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079212A1 (en) * | 2010-09-23 | 2012-03-29 | International Business Machines Corporation | Architecture for sharing caches among multiple processes |
US9208094B2 (en) * | 2013-08-06 | 2015-12-08 | GlobalFoudries, Inc. | Managing and sharing storage cache resources in a cluster environment |
-
2015
- 2015-11-24 CN CN201510830049.4A patent/CN105446841B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262608A (zh) * | 2011-07-28 | 2011-11-30 | 中国人民解放军国防科学技术大学 | 基于处理器核的协处理器读写操作控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
Nios II多核系统缓存一致性解决方案;郑安兵 和 程小辉;《微计算机信息(嵌入式与SOC)》;20091231;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105446841A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446841B (zh) | 缓存一致性测试方法 | |
US7814378B2 (en) | Verification of memory consistency and transactional memory | |
US8457943B2 (en) | System and method for simulating a multiprocessor system | |
CN105930242B (zh) | 一种支持精确访存检测的多核处理器随机验证方法及装置 | |
US10241880B2 (en) | Efficient validation/verification of coherency and snoop filtering mechanisms in computing systems | |
US7779393B1 (en) | System and method for efficient verification of memory consistency model compliance | |
US9262299B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
US10528448B2 (en) | Post-silicon validation and debug using symbolic quick error detection | |
US9262305B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
US11194705B2 (en) | Automatically introducing register dependencies to tests | |
CN102681937A (zh) | 一种缓存一致性协议正确性验证方法 | |
CN113196243A (zh) | 使用编译器生成的仿真优化元数据改进仿真和跟踪性能 | |
US9134979B2 (en) | Convergence analysis in multithreaded programs | |
US9658849B2 (en) | Processor simulation environment | |
US8417508B2 (en) | Multiprocessor development environment | |
Hudson et al. | A Configurable Random Instruction Sequence (RIS) Tool for Memory Coherence in Multi-processor Systems | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
Tong et al. | Efficient data encoding for improving fault simulation performance on GPUs | |
US11200126B2 (en) | Utilizing translation tables for testing processors | |
Venkatesan et al. | A Case Study of Multiprocessor Bugs Found Using RIS Generators and Memory Usage Techniques | |
US10339229B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
Rambo et al. | Automatic generation of memory consistency tests for chip multiprocessing | |
Сохацкий | Use of Formal Methods to Resolve Actual Problems of ASIC Design Verification | |
ES2381961B2 (es) | Metodo y sistema de modelado de memoria cache | |
CN116108782B (zh) | 一种mcu外设控制寄存器行为模拟方法与相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |