CN112364600A - 一种处理器微架构设计验证方法 - Google Patents
一种处理器微架构设计验证方法 Download PDFInfo
- Publication number
- CN112364600A CN112364600A CN201910675839.8A CN201910675839A CN112364600A CN 112364600 A CN112364600 A CN 112364600A CN 201910675839 A CN201910675839 A CN 201910675839A CN 112364600 A CN112364600 A CN 112364600A
- Authority
- CN
- China
- Prior art keywords
- litmus test
- result
- processor
- instruction
- case
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012942 design verification Methods 0.000 title abstract description 3
- 238000012360 testing method Methods 0.000 claims abstract description 33
- 238000010586 diagram Methods 0.000 claims abstract description 26
- 238000013461 design Methods 0.000 claims abstract description 23
- 238000001514 detection method Methods 0.000 claims abstract description 5
- 238000007363 ring formation reaction Methods 0.000 claims abstract description 5
- 244000144980 herd Species 0.000 claims description 4
- 238000013475 authorization Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000010998 test method Methods 0.000 claims 1
- 238000012795 verification Methods 0.000 description 18
- 230000003068 static effect Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种处理器微架构设计验证方法,其步骤包括:1)对每一所选石蕊测试程序用例进行解析,并根据解析结果生成执行对应石蕊测试程序用例的若干μhb图;所选石蕊测试程序用例为待验证处理器微架构所采用的内存一致性模型相关的石蕊测试程序用例,每一μhb图对应石蕊测试程序在待验证处理器微架构设计下的一执行结果;2)对生成的μhb图进行成环检测;3)将石蕊测试用例i的成环判断结果与石蕊测试用例i给出的结果进行比对,判断石蕊测试用例i是否满足内存一致性模型,如果各所选石蕊测试用例所对应的μhb图成环的结果分别与对应石蕊测试用例所给出的结果相一致,则判定待验证处理器微架构满足其所采用的内存一致性模型。
Description
技术领域
本发明涉及一种基于形式化的内存一致性模型验证方法,属于软件工程技术领域。
背景技术
内存一致性模型定义了在共享内存上对来自各处理器核的读写指令间顺序的约束规则。目前有许多不同的内存一致性模型,如顺序一致性模型,TSO(Total Store Order)内存一致性模型,PSO(Partial Store Order)内存一致性模型等。一个处理器微架构的设计实现是否满足其所采用的内存一致性模型,是判断其正确性的重要标准之一。目前内存一致性模型的验证方法可以分为动态验证方法和静态验证方法。动态方法通过随机生成读写指令,在执行过程中通过分析中间结果对是否满足所采用的内存一致性模型进行判断。静态方法通过定义相应的公理语义以构建待验证处理器的形式化模型,枚举特定执行程序的所有可能状态,根据这些状态判断处理器的设计是否满足所采用的内存一致性模型。
静态方法中构建的形式化模型主要分为两类:Axiomatic模型与Operational模型。本发明中使用了Axiomatic模型,模型中用happens-before有向图来表示事件的先后关系。通过公理语义描述happens-before有向图的构建约束。
以往方法中,PipeCheck方法将happens-before图细化为微架构级happens-before图,简称μhb(microarchitecturrally happens-before)图。μhb图中的中每一个节点代表一条指令的在执行过程中的某一阶段,连接两个节点的有向边表示两个不同执行阶段之间被执行的先后顺序关系,通过枚举的方法列举出目标程序在运行过程中指令不同执行状态之间的先后关系,每一种执行结果由一张μhb图与之相对应。PipeCheck并未考虑缓存一致性协议对于各级缓存的影响,CCICheck进行了改进,主要考虑了缓存一致性协议对于实现内存一致性模型的影响,通过ViCL四元组描述各地址对缓存行的占用情况侧面反映实现缓存一致性协议过程中各缓存状态,并在μhb图以特定类型的节点中加以表现。但是,CCICheck仍然无法提供缓存一致性实现中的一些细节,例如对于一些仲裁逻辑可能造成的影响。
发明内容
本发明技术解决问题:克服现有内存一致性模型验证方法在模型描述能力上的不足,提供一种体现仲裁逻辑影响的内存一致性模型验证方法ArbLCheck。待验证的处理器微架构设计大概结构如图1所示,共三级缓存,其中一二级缓存是各处理器核私有,三级缓存由各处理器核共享。在三级缓存位于处理器的非核部分(Uncore),非核可以管理来自各处理器核的访问一二级缓存未命中时所产生的访问三级缓存的读写请求。非核的结构概图如图2所示:非核通过仲裁机制确定可访问三级缓存的请求。请求调度逻辑有可能会打乱原有的读写指令顺序,因此可能会导致处理器微架构设计违背其所采用的内存一致性模型。本发明主要用于检测共享存储请求调度逻辑对内存一致性造成的影响。在ArbLCheck中实现对此种处理器设计的建模以及提供了相应的验证流程。
本发明采用的技术方案如下:
一种基于形式化的内存一致性模型验证方法,其步骤包括:
1)将待验证处理器微架构所采用的内存一致性模型相关的石蕊测试程序用例使用Herd工具解析后作为输入,其中解析的结果主要为:指令的类型(读取指令、写入指令)、指令访存的地址、指令在相应地址上读取或写入的数据以及此石蕊测试所给出的结果,此结果是在石蕊测试程序用例执行完后各地址上的值。此结果可以是禁止的(forbidden),也可以是允许的(allowed)。利用μhb图生成模块生成执行石蕊测试程序用例的所有可能μhb图,其中每一张μhb图对应石蕊测试程序在此微架构设计下可能的执行结果;
2)对生成的所有μhb图进行成环检测,得到是否成环的结果;
3)成环判断结果与当前石蕊测试用例给出的结果(由石蕊测试用例给出)进行比对,从而判断是否满足所采用的内存一致性模型,如果此石蕊测试用例所对应的所有μhb图成环的结果与石蕊测试用例所给出的结果相一致,则此石蕊测试用例下,待验证处理器微架构满足其所采用的内存一致性模型,否则不满足。如果所有石蕊测试用例均被满足,则此待验证处理器的微架构设计满足其对应的内存一致性模型。
μhb图生成模块分为以下几个部分:
1)根据指令类型(读取指令或写入指令)为解析后的每条指令生成在执行过程中在待验证处理器中可能处于的执行状态,这些状态是预定义的,并根据一条指令在处理器中不同阶段被不同部件处理的顺序来确定这些状态之间的顺序,这些状态发生的顺序如下:
Fetch(取指)、Decode(译码)、Execute(执行)、Memory(访存)、WriteBack(写)回、StoreBuffer(存储缓冲)、Completed(完成)、Core ViCL Create(开始访问核内缓存)、CoreViCL Expire(结束访问核内缓存)、ArbL Enter(进入仲裁)、ArbL Leave(仲裁结束)、LLCViCL Create(开始访问末级缓存)以及LLC ViCL Expire(结束访问末级缓存);
2)根据石蕊测试用例所提供的程序序对各指令取指阶段状态进行排序,其中每一种可能的指令间顺序的对应着一个μhb图;石蕊测试是一段简短的多线程程序,每个线程下指令间会有程序序,可以根据石蕊测试用例来确定,但不同线程见的指令间顺序可能会有所不同,因此会有多种可能的排列,比如3条指令序号分别为0,1,2,则顺序有3!共六种:012,021,102,120,201,210,这六种情况分别对应着一个μhb图。
3)由于待验证处理器调度指令访问三级缓存时会通过仲裁机制实现,但此仲裁机制可能会打乱原有的读写指令顺序,因此各指令访问三级缓存的顺序不确定,即每一种可能的顺序都可能会出现,因此利用全排列方法模拟各指令通过调度访问末级缓存的所有可能先后顺序,在μhb图中主要表现为不同指令间ArbL Enter节点与ArbL Leave节点的顺序;
4)在每一个μhb图中,即每种可能的执行结果下,根据步骤3)中得到的各指令访问末级缓存的顺序与由石蕊测试用例程序中执行结果确定的各指令之间依赖关系进行比对:如果步骤3)中模拟的不同指令状态间顺序与依赖关系所表示的顺序一致,则步骤3)中模拟的顺序合理,应在此μhb图中添加有向边对此顺序进行表示,否则不必添加。
5)针对每一个μhb图,按照μhb图是否成环的结果,确定此μhb图对应的执行结果是否在此处理器上发生:如果成环,则表明此次执行并不会发生,如果无环,则表明此次执行可能发生。如果所有的μhb图均成环,则确定此处理器模型在执行此石蕊测试用例程序时永远不会出现给定的结果,记为Not observable,否则记为Observable。根据检测结果是Notobservable还是Observable与石蕊测试用例给出结果是禁止的还是允许的进行对比,得到的结果如表1所示,根据比对得到的结果可以对待验证的处理器微架构设计是否满足其所采用的内存一致性模型,如果满足,则表明此设计是正确的,如不满足,则此设计错误。
表1为比对依据
与现有技术相比,本发明的积极效果为:
本发明的基于形式化的内存一致性模型验证方法,其中验证方法的关键是通过分析待验证处理器微架构设计中的非核仲裁逻辑访问末级共享缓存的影响,并根据此构建符合待验证处理器的形式化模型,通过对此模型模拟执行石蕊测试用例集的所有可能的执行状态进行分析从而判断待验证处理器的微架构设计是否满足所采用的内存一致性模型。该方法通过特定的验证流程对待验证处理器微架构的设计进行验证,此验证流程逐步构建每条指令在执行过程中可能流经的状态,各指令访问末级缓存的顺序,以及从读写结果添加各指令间的依赖关系从而得到执行过程中所有可能的执行结果,从而达到可以分析所有执行结果的目的。同时,由于该方法通过构待验证处理器的形式化模型进行验证,所以实现过程中并不需要在特定的处理器上运行程序。
附图说明
图1为待验证处理器架构概图;
图2为非核部件结构图;
图3为验证流程图;
图4为四条指令以i4->i2->i3->i1的顺序访问末级缓存在μhb图中的示意图。
具体实施方式
下面通过具体实施例和附图,对本发明做进一步详细说明。
图1是本发明需验证的处理器架构概图。本发明通过分析待验证处理器中实现原理,检查非核请求调度对于来自各处理器核的访问末级缓存读写请求间顺序的影响。对各指令访问共享的末级缓存的先后顺序的所有可能性进行枚举,从而达到模拟所有可能执行结果的目的,同时考虑根据此顺序考虑指令间的依赖是否成立。
1.本发明是在CCICheck验证流程中添加了与非核请求仲裁逻辑相关的节点类型:ArbL Enter(进入仲裁)节点以及ArbL Leave(仲裁结束)节点。并在枚举所有可能指令顺序,同时维护指令依赖关系从而进行内存一致性模型满足情况的确认。
非核请求调度可能分为多个阶段,这有可能出现破坏指令间原本保持的顺序。因此本文引入了ArbL机制,表示一条指令在非核停留等待访问末级缓存的阶段,记录该指令因仲裁成功而访问末级缓存的顺序。本发明通过新建两种类型的节点:ArbL Enter与ArbLLeave节点,利用节点ArbL Enter记录一条指令在非核停留等待访问末级缓存的阶段,该指令因仲裁成功而访问末级缓存的顺序,节点ArbL Leave记录一条指令获得访问末级共享缓存的授权从而离开非核调度单元并访问末级缓存这一事件。
2.生成非核请求处理顺序
通过全排列的方法对所有指令进行定序,如果当前程序有n条指令,则此n条指令离开非核调度单元的所有顺序情况共有n!种,在μhb图中每一种顺序情况则对应着ArbL相关节点的顺序,图4即为一例具有四条指令的程序,其中指令从左至右分别为i1,i2,i3与i4,图4是四条指令以i4->i2->i3->i1的顺序访问末级缓存在μhb图中的表示,其中连接所属不同列的节点的斜有向边则表示了通过仲裁的顺序。
3.还原指令依赖
引入ArbL类型结点之后,对目前的已有类型结点之间的顺序进行约束的公理定义。非核通过授权机制与仲裁机制确定能够访问末级缓存的指令,并以一定周期决定出进入末级缓存的指令。由于影响仲裁结果的因素复杂,因此指令通过中心进入末级缓存的顺序是不确定的,但确实产生了一个顺序,且这个顺序会影响不同指令间顺序的关系。由于请求管理的存在,需要检查是否会对内存一致性造成影响。根据两条指令读得与写入的值对两条访问同一地址的指令进行判断此两条指令间的顺序。在μhb图中,隶属于某一指令的全部结点均记录着此指令的相关信息,如指令的读写类型,访问地址以及对此地址进行写入或读取的值,但因为仲裁器已经确定了这些顺序,如果根据结果对序进行判断,则会出现矛盾。即写指令s与读指令d根据读写结果判断出存在依赖,即d读到了s写入的值,此时如果仲裁器给出的顺序结果是s在d之后发生,显然s与d的读写结果与实际顺序是矛盾的。
对本发明的实验验证:
实验环境采用Intel Core i7-2600 CPU,3.4GHz的处理器,内存8G,操作系统为Fedora 26,实验过程中结合Coq和OCaml以及注入Herd和Graphviz的外部工具进行实现,Herd与Graphviz是已有的开源工具,但主要的分析程序是通过Coq进行编写,通过使用Coq可以对关于命题的正确性采用形式化的陈述和证明,而且Coq有着极强的可靠性。已现有的石蕊测试集作为测试用例,在发现待验证处理器设计问题上与CCICheck进行了对比,对比结果如表2所示。
表2为实验结果列表
实验结果中,如果是满足,则说明所有的运行结果满足内存一致性模型,则是正确的。如不满足,则存在错误。从实验结果看出,本发明提出的ArbLCheck在验证过程中发现了CCICheck无法发现的设计错误,相应的石蕊测试用例分别为mp与mp+staleld。同时也能发现CCICheck原本可以发现的错误,即在石蕊测试用例rfi001下CCICheck与ArbLCheck均发现了处理器的设计错误。由于ArbLCheck发现了CCICheck所不能发现的设计错误,因此在验证能力上,ArbLCheck强于CCICheck。
本发明方法适用于对非核末级缓存访问进行管理的处理器微架构设计的内存一致性检测,此类处理器的验证属于本发明保护的范围。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (7)
1.一种处理器微架构设计验证方法,其步骤包括:
1)对每一所选石蕊测试程序用例进行解析,并根据解析结果生成执行对应石蕊测试程序用例的若干μhb图;其中,所选石蕊测试程序用例为待验证处理器微架构所采用的内存一致性模型相关的石蕊测试程序用例,每一张μhb图对应石蕊测试程序在该待验证处理器微架构设计下的一执行结果;
2)对生成的μhb图进行成环检测,得到是否成环的结果;
3)将步骤2)得到的石蕊测试用例i的成环判断结果与石蕊测试用例i给出的结果进行比对,根据比对结果判断石蕊测试用例i是否满足所采用的内存一致性模型,如果各所选石蕊测试用例所对应的μhb图成环的结果分别与对应石蕊测试用例所给出的结果相一致,则判定待验证处理器微架构满足其所采用的内存一致性模型。
2.如权利要求1所述的方法,其特征在于,步骤1)中,将解析结果输入μhb图生成模块,生成执行石蕊测试程序用例的若干μhb图;其方法为:
11)根据指令类型为解析结果中每条指令生成在执行过程中在待验证处理器中可能处于的执行状态,并确定这些状态之间的顺序;
12)根据石蕊测试用例所提供的程序序对各指令取指阶段状态进行排序,其中每一种可能的指令间顺序的对应一个μhb图;
13)利用全排列方法模拟各指令通过调度访问末级缓存的所有可能先后顺序;
14)在每一个μhb图中,根据步骤13)中得到的各指令访问末级缓存的顺序与由石蕊测试用例程序中执行结果确定的各指令之间依赖关系进行比对:如果步骤13)中模拟的不同指令状态间顺序与所述依赖关系所表示的顺序一致,则在对应μhb图中添加有向边对此顺序进行表示,否则不必添加。
3.如权利要求2所述的方法,其特征在于,步骤13)中,一条指令在非核停留等待访问末级缓存的阶段,记录各指令因仲裁成功而访问末级缓存的顺序。
4.如权利要求3所述的方法,其特征在于,设置两种类型的节点:ArbL Enter节点与ArbL Leave节点;节点ArbL Enter记录一条指令在非核停留等待访问末级缓存的阶段,该指令因仲裁成功而访问末级缓存的顺序,节点ArbL Leave记录一条指令获得访问末级共享缓存的授权从而离开非核调度单元并访问末级缓存这一事件。
5.如权利要求2所述的方法,其特征在于,所述指令类型为装载指令或读取指令。
6.如权利要求1或2所述的方法,其特征在于,针对每一个μhb图,按照μhb图是否成环的结果,确定此μhb图对应的执行结果是否在此处理器上发生:如果成环,则表明此次执行并不会发生,如果无环,则表明此次执行可能发生;如果所有的μhb图均成环,则确定此处理器模型在执行此石蕊测试用例程序时永远不会出现给定的结果;根据检测结果与石蕊测试用例给出结果进行对比;然后根据比对结果确定待验证的处理器微架构设计是否满足其所采用的内存一致性模型。
7.如权利要求1所述的方法,其特征在于,使用Herd工具对每一所选石蕊测试程序用例进行解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910675839.8A CN112364600B (zh) | 2019-07-25 | 2019-07-25 | 一种处理器微架构设计验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910675839.8A CN112364600B (zh) | 2019-07-25 | 2019-07-25 | 一种处理器微架构设计验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112364600A true CN112364600A (zh) | 2021-02-12 |
CN112364600B CN112364600B (zh) | 2022-06-17 |
Family
ID=74516289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910675839.8A Expired - Fee Related CN112364600B (zh) | 2019-07-25 | 2019-07-25 | 一种处理器微架构设计验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112364600B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118114623A (zh) * | 2024-04-30 | 2024-05-31 | 沐曦集成电路(上海)有限公司 | 一种指令调度仲裁器的验证方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201420116D0 (en) * | 2014-11-12 | 2014-12-24 | Ibm | Verifying a graph-based coherency verification tool |
CN105117369A (zh) * | 2015-08-04 | 2015-12-02 | 复旦大学 | 一种基于异构平台的多种并行错误检测体系架构 |
CN105354011A (zh) * | 2015-12-08 | 2016-02-24 | 中国人民解放军国防科学技术大学 | 面向多核并行程序的确定性懒惰释放一致性实现方法 |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
-
2019
- 2019-07-25 CN CN201910675839.8A patent/CN112364600B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201420116D0 (en) * | 2014-11-12 | 2014-12-24 | Ibm | Verifying a graph-based coherency verification tool |
CN105117369A (zh) * | 2015-08-04 | 2015-12-02 | 复旦大学 | 一种基于异构平台的多种并行错误检测体系架构 |
CN105354011A (zh) * | 2015-12-08 | 2016-02-24 | 中国人民解放军国防科学技术大学 | 面向多核并行程序的确定性懒惰释放一致性实现方法 |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
Non-Patent Citations (1)
Title |
---|
王朋宇等: "片上多核处理器存储一致性验证", 《软件学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118114623A (zh) * | 2024-04-30 | 2024-05-31 | 沐曦集成电路(上海)有限公司 | 一种指令调度仲裁器的验证方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112364600B (zh) | 2022-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Černý et al. | Quantitative synthesis for concurrent programs | |
Mador-Haim et al. | Generating litmus tests for contrasting memory consistency models | |
US10943041B2 (en) | Electronic system level parallel simulation method with detection of conflicts of access to a shared memory | |
US8327302B2 (en) | Techniques for analysis of logic designs with transient logic | |
US20060206840A1 (en) | Systems and methods for design verification using selectively enabled checkers | |
US7779393B1 (en) | System and method for efficient verification of memory consistency model compliance | |
CN103365776A (zh) | 基于确定性重放的并行系统弱一致性的验证方法和系统 | |
US20110154110A1 (en) | Verifying a Register-Transfer Level Design of an Execution Unit | |
US8141082B2 (en) | Node-based representation of multi-threaded computing environment tasks, and node-based data race evaluation | |
JP2007249884A (ja) | ソフトウェア検証プログラム、ソフトウェア検証装置、ソフトウェア検証方法 | |
US8392891B2 (en) | Technique for finding relaxed memory model vulnerabilities | |
Donaldson et al. | Counterexample-guided abstraction refinement for symmetric concurrent programs | |
Abdulla et al. | Parameterized verification under TSO is PSPACE-complete | |
Yuan et al. | Partial order aware concurrency sampling | |
US6539523B1 (en) | Automatic formulation of design verification checks based upon a language representation of a hardware design to verify the intended behavior of the hardware design | |
JP2002099584A (ja) | 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体 | |
US6571375B1 (en) | Determining dependency relationships among design verification checks | |
CN106844215B (zh) | 一种基于约束求解的原子违背探测方法 | |
US8412507B2 (en) | Testing the compliance of a design with the synchronization requirements of a memory model | |
CN117075969A (zh) | 面向risc-v处理器特权指令集一致性的形式验证方法及装置 | |
CN109522207B (zh) | 一种基于约束求解的原子集合序列化违背探测方法 | |
CN112364600B (zh) | 一种处理器微架构设计验证方法 | |
US20080288902A1 (en) | Circuit design verification method and apparatus and computer readable medium | |
US9378000B1 (en) | Determination of unreachable elements in a design | |
US6704912B2 (en) | Method and apparatus for characterizing information about design attributes |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220617 |