CN112445528B - 基于流水线约束的结果自校验指令序列填充方法 - Google Patents
基于流水线约束的结果自校验指令序列填充方法 Download PDFInfo
- Publication number
- CN112445528B CN112445528B CN201910805780.XA CN201910805780A CN112445528B CN 112445528 B CN112445528 B CN 112445528B CN 201910805780 A CN201910805780 A CN 201910805780A CN 112445528 B CN112445528 B CN 112445528B
- Authority
- CN
- China
- Prior art keywords
- instruction
- constraint
- instructions
- result
- pipeline
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000009191 jumping Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 230000003111 delayed effect Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 abstract description 16
- 238000013461 design Methods 0.000 abstract description 4
- 238000004364 calculation method Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- G06F11/2236—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 to test CPU or processors
-
- 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/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种基于流水线约束的结果自校验指令序列填充方法,包括以下步骤:S1、对指令集合进行信息提取;S2、循环读取下一条指令;S3、对指令进行格式解析,S4、解析当前读取的指令,选择不在当前指令将要执行的流水线上且执行延迟为1拍的N‑1条指令;S5、随机选择满足条件的指令编号,创建CNF范式;S6、约束求解;S7、如果求解结果不满足,继续S5重新选择下一指令进行约束求解,否则继续下一步;S8、对求解结果进行解析,形成完整指令,并填充到当前指令序列末尾;S9、N‑1条指令已经全部生成则跳转至S3,否则跳转至S5继续。本发明既满足压力测试又能够对结果进行正确性校验,保证在设计阶段既能够对功耗进行测试也能够对正确性进行测试,避免测试盲区,还具有很好的适用性。
Description
技术领域
本发明涉及一种基于流水线约束的结果自校验指令序列填充方法,属于计算机技术领域。
背景技术
满流水指令片段能够对处理器的功耗进行有效测试。在处理器验证测试过程中,为满足特定验证场景的需要,通常会有指令满流水执行的需要,如高功耗测试、流水线极限发射等场景。满流水指令能够使得处理器的执行部件真正做到满流水运行、执行部件满负载,能够触及到处理器运行的极限情况以及高功耗等场景,对测试处理器在极限情况下是否能够正常工作、计算出正确的结果有着重要的意义。
对满流水指令片段的执行结果正确性进行校验通常是比较困难的事情:用户自编能够结果自校验并且满流水执行的程序通常只有经验丰富且对处理器指令执行过程具有丰富知识背景的专家型工程师才能有效的开展,即使如此,实施过程往往代价较大;而很多满足满流水条件的指令序列通常对结果往往不关心、这样的指令序列通常是以高功耗测试为目的。
编排能够进行自校验的满流水执行指令序列,需要同时考虑处理器资源信息、指令延迟以及结果校验机制等三个方面。现有技术很多是通过手工编排指令、在考虑数据相关性检查的基础上形成固定模板,需要设计人员或者理解指令执行过程的专家才能有效的开展。这种方式即使能够做到满流水与结果自校验,也不便于扩展与自动化,对特定算法需要花费大量的时间精力才能完成,代价通常比较大。
因此,同时满足流水线满负载与结果自校验的随机指令序列自动生成就成了验证人员必须要面对的课题,也成为本领域技术人员努力的方向。
发明内容
本发明的目的是提供一种基于流水线约束的结果自校验指令序列填充方法,该基于流水线约束的结果自校验指令序列填充方法既满足压力测试又能够对结果进行正确性校验,保证在设计阶段既能够对功耗进行测试也能够对正确性进行测试,避免测试盲区,还具有很好的适用性。
为达到上述目的,本发明采用的技术方案是:一种基于流水线约束的结果自校验指令序列填充方法,包括以下步骤:
S1、对处理器的指令集合进行信息提取,一一获取指令集合中的每个指令的指令操作数个数、各操作数类型,指令执行延迟、可执行流水线编号,其中操作数分别标记为标量寄存器、向量寄存器、立即数、偏移,并对指令集合中的所有指令进行编号;
S2、根据给定的算法核心段,循环读取算法核心段中的下一条指令,如果读取的算法核心段中的下一条指令为空,则停止,否则继续;
S3、根据S1中的指令编号对指令进行格式解析,如果该指令没有使用到寄存器,则跳转至S2,否则,缓存当前指令,并跳转至下一步;
S4、根据S1中的指令编号解析当前读取的指令,并检查当前指令与缓存中上一条指令是否存在数据相关性、流水线资源冲突并导致当前指令会延迟执行,即检查当前指令执行时仍然处于执行过程中的指令,判断指令之间的寄存器编号是否存在冲突,如果存在冲突,则根据指令编号在处理器的指令集合中,通过查表获取上一条指令需要的指令执行延迟数N,选择不在当前指令将要执行的流水线上且指令执行延迟为1个节拍的N-1条指令,并将其插入到当前指令之后的位置;
S5、随机选择S4中满足没有数据相关性与资源冲突的条件的指令编号,创建约束节点,使得当前指令与缓存中的指令满足寄存器各不相同的约束,并创建CNF范式;
S6、采用求解器进行约束求解;
S7、如果求解结果不满足,继续S5重新选择下一指令进行约束求解,否则继续下一步;
S8、对求解结果进行解析,形成完整指令,并填充到当前指令序列末尾;
S9、N-1条指令已经全部生成则跳转至S3,否则跳转至S5继续。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,所述指令集合包括运算类指令集合、访存类指令集合。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明基于流水线约束的结果自校验指令序列填充方法,通过对指令满流水执行过程进行问题分析与转化,形成约束求解模型;在不影响现有算法计算结果的基础上,对现有程序段的核心算法进行指令填充,使得核心段能够满流水执行,达到极限情况下测试处理器功能正确性与功耗的目的,且在满流水执行的同时兼具结果自校验特征,既满足压力测试又能够对结果进行正确性校验,保证在设计阶段既能够对功耗进行测试也能够对正确性进行测试,避免测试盲区,还具有很好的适用性。
附图说明
附图1为本发明结果自校验指令序列填充方法流程示意图;
附图2为本发明基于流水线约束的结果自校验指令序列填充方法流程图。
具体实施方式
实施例:一种基于流水线约束的结果自校验指令序列填充方法,包括以下步骤:
S1、对处理器的指令集合进行信息提取,一一获取指令集合中的每个指令的指令操作数个数、各操作数类型,指令执行延迟、可执行流水线编号,其中操作数分别标记为标量寄存器、向量寄存器、立即数、偏移,并对指令集合中的所有指令进行编号;
S2、根据给定的算法核心段,循环读取算法核心段中的下一条指令,如果读取的算法核心段中的下一条指令为空,则停止,否则继续;
S3、根据S1中的指令编号对指令进行格式解析,如果该指令没有使用到寄存器,则跳转至S2,否则,缓存当前指令,并跳转至下一步;
S4、根据S1中的指令编号解析当前读取的指令,并检查当前指令与缓存中上一条指令是否存在数据相关性、流水线资源冲突并导致当前指令会延迟执行,即检查当前指令执行时仍然处于执行过程中的指令,判断指令之间的寄存器编号是否存在冲突,如果存在冲突,则根据指令编号在处理器的指令集合中,通过查表获取上一条指令需要的指令执行延迟数N,选择不在当前指令将要执行的流水线上且指令执行延迟为1个节拍的N-1条指令,并将其插入到当前指令之后的位置;
S5、随机选择S4中满足没有数据相关性与资源冲突的条件的指令编号,创建约束节点,使得当前指令与缓存中的指令满足寄存器各不相同的约束,并创建CNF范式;
S6、采用求解器进行约束求解;
S7、如果求解结果不满足,继续S5重新选择下一指令进行约束求解,否则继续下一步;
S8、对求解结果进行解析,形成完整指令,并填充到当前指令序列末尾;
S9、N-1条指令已经全部生成则跳转至S3,否则跳转至S5继续。
上述指令集合包括运算类指令集合、访存类指令集合。
实施例进一步解释如下:
计算程序算法核心段指令序列的延迟间隔,得出需要填充的指令数目并填充与上下文无关的指令,使得原指令序列能满流水执行;且在填充程序算法核心段使其满流水执行的同时,能够保持原算法的功能不变,做到满流水与结果自校验同时满足,达到在极限测试情况下测试处理器功能正确性;且与具体算法实现无关,可以广泛适用于测试人员给定的程序。
第一步:对指令集合进行信息提取,对所有指令进行编号,一一获取指令操作数个数、各操作数类型、指令执行延迟、可执行流水线编号等信息,其中操作数分别标记为标量寄存器、向量寄存器、立即数、偏移等;
第二步:根据算法核心段,循环读取下一条指令:如果读取指令为空则停止;否则继续;
第三步:对指令进行格式解析,如果该指令没有使用到寄存器,则跳转至第二步继续;否则,缓存当前指令,并跳转至下一步继续;
第四步:解析当前读取的指令,检查当前指令与缓存中上一条指令是否存在数据相关性、流水线资源冲突并导致当前指令会延迟执行,如果是,则查表获取上一条指令需要的执行延迟数N,选择不在当前指令将要执行的流水线上且执行延迟为1拍的N-1条指令;
第五步:循环生成满足第四步要求的N-1条指令:随机选择满足条件的指令编号,创建约束节点,当前指令需要与缓存中的指令满足寄存器各不相同的约束,并创建CNF范式;需要说明的是为保证填充的指令不影响原指令序列的上下文内容,本发明选择的指令不会修改当前指令使用到的寄存器内容;
第六步:采用求解器进行约束求解;
第七步:如果求解结果不满足则,继续第五步重新选择下一指令进行约束求解;否则继续下一步;
第八步:对求解结果进行解析,形成完整指令,并填充到当前指令序列末尾;
第九步:N-1条指令已经全部生成则跳转至第三步;否则跳转至第五步继续。
采用上述基于流水线约束的结果自校验指令序列填充方法时,其通过对指令满流水执行过程进行问题分析与转化,形成约束求解模型;在不影响现有算法计算结果的基础上,对现有程序段的核心算法进行指令填充,使得核心段能够满流水执行,达到极限情况下测试处理器功能正确性与功耗的目的,且在满流水执行的同时兼具结果自校验特征,既满足压力测试又能够对结果进行正确性校验,保证在设计阶段既能够对功耗进行测试也能够对正确性进行测试,避免测试盲区,还具有很好的适用性。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种基于流水线约束的结果自校验指令序列填充方法,其特征在于:包括以下步骤:
S1、对处理器的指令集合进行信息提取,一一获取指令集合中的每个指令的指令操作数个数、各操作数类型,指令执行延迟、可执行流水线编号,其中操作数分别标记为标量寄存器、向量寄存器、立即数、偏移,并对指令集合中的所有指令进行编号;
S2、根据给定的算法核心段,循环读取算法核心段中的下一条指令,如果读取的算法核心段中的下一条指令为空,则停止,否则继续;
S3、根据S1中的指令编号对指令进行格式解析,如果该指令没有使用到寄存器,则跳转至S2,否则,缓存当前指令,并跳转至下一步;
S4、根据S1中的指令编号解析当前读取的指令,并检查当前指令与缓存中上一条指令是否存在数据相关性、流水线资源冲突并导致当前指令会延迟执行,即检查当前指令执行时仍然处于执行过程中的指令,判断指令之间的寄存器编号是否存在冲突,如果存在冲突,则根据指令编号在处理器的指令集合中,通过查表获取上一条指令需要的指令执行延迟数N,选择不在当前指令将要执行的流水线上且指令执行延迟为1个节拍的N-1条指令,并将其插入到当前指令之后的位置;
S5、随机选择S4中满足没有数据相关性与资源冲突的条件的指令编号,创建约束节点,使得当前指令与缓存中的指令满足寄存器各不相同的约束,并创建CNF范式;
S6、采用求解器进行约束求解;
S7、如果求解结果不满足,继续S5重新选择下一指令进行约束求解,否则继续下一步;
S8、对求解结果进行解析,形成完整指令,并填充到当前指令序列末尾;
S9、N-1条指令已经全部生成则跳转至S3,否则跳转至S5继续。
2.根据权利要求1所述的基于流水线约束的结果自校验指令序列填充方法,其特征在于:所述指令集合包括运算类指令集合、访存类指令集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910805780.XA CN112445528B (zh) | 2019-08-29 | 2019-08-29 | 基于流水线约束的结果自校验指令序列填充方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910805780.XA CN112445528B (zh) | 2019-08-29 | 2019-08-29 | 基于流水线约束的结果自校验指令序列填充方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445528A CN112445528A (zh) | 2021-03-05 |
CN112445528B true CN112445528B (zh) | 2022-09-13 |
Family
ID=74742171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910805780.XA Active CN112445528B (zh) | 2019-08-29 | 2019-08-29 | 基于流水线约束的结果自校验指令序列填充方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445528B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201331B (zh) * | 2022-02-17 | 2022-05-31 | 深圳佰维存储科技股份有限公司 | 固态硬盘的指令冲突检测方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05342055A (ja) * | 1992-06-05 | 1993-12-24 | Fujitsu Ltd | パイプライン動作検証用命令列の自動生成方式 |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
CN103902252A (zh) * | 2014-03-28 | 2014-07-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种用于流水线指令相关性的分析方法 |
-
2019
- 2019-08-29 CN CN201910805780.XA patent/CN112445528B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05342055A (ja) * | 1992-06-05 | 1993-12-24 | Fujitsu Ltd | パイプライン動作検証用命令列の自動生成方式 |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
CN103902252A (zh) * | 2014-03-28 | 2014-07-02 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种用于流水线指令相关性的分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112445528A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533294B2 (en) | Functional coverage driven test generation for validation of pipelined processors | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
US6732297B2 (en) | Pipeline testing method, pipeline testing system, pipeline test instruction generation method and storage method | |
US8365114B2 (en) | Logic modification synthesis | |
EP3264274A1 (en) | Input discovery for unknown program binaries | |
CN116341428B (zh) | 构建参考模型的方法、芯片验证方法及系统 | |
US7322016B2 (en) | Impact checking technique | |
CN112433762A (zh) | 基于数据相关性约束的随机指令序列生成方法 | |
JP5109143B2 (ja) | 検証装置および検証方法 | |
CN112445528B (zh) | 基于流水线约束的结果自校验指令序列填充方法 | |
US8683494B1 (en) | Constructing event sequences in event-driven programs | |
US20110131031A1 (en) | Dynamic generation of tests | |
US10606732B2 (en) | Hybrid genetic concolic co-verification of hardware and software | |
CN116383070B (zh) | 一种面向高mc/dc的符号执行方法 | |
US9117023B2 (en) | Dynamic generation of test segments | |
CN117131823A (zh) | 一种处理器形式化验证方法及系统 | |
US9436587B2 (en) | Test context generation | |
JP6155050B2 (ja) | 情報処理装置の論理検証方法及びプログラム | |
CN114564396A (zh) | 基于数据路径约束求解的随机指令测试程序生成方法 | |
CN113742252B (zh) | 一种检测内存乱序的方法及装置 | |
Pikus | The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples | |
CN116136810A (zh) | 寄存器传输级设计内存序检测方法及装置存储介质和终端 | |
Chibani et al. | Fast accurate evaluation of register lifetime and criticality in a pipelined microprocessor | |
EP2088521B1 (en) | Method for verifying | |
CN117313595B (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 |