CN104484256A - 一种验证sparc v8处理器寄存器堆纠检错功能的方法 - Google Patents
一种验证sparc v8处理器寄存器堆纠检错功能的方法 Download PDFInfo
- Publication number
- CN104484256A CN104484256A CN201410742112.4A CN201410742112A CN104484256A CN 104484256 A CN104484256 A CN 104484256A CN 201410742112 A CN201410742112 A CN 201410742112A CN 104484256 A CN104484256 A CN 104484256A
- Authority
- CN
- China
- Prior art keywords
- register
- error correction
- detection function
- error
- processor
- 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
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种验证SPARC V8处理器寄存器堆纠检错功能的方法,通过软件编程的方法使其产生错误并注入到regfile的寄存器中,模拟regfile发生错误,之后再对注入错误的regfile进行读取,触发regfile的纠检错功能,再通过软件程序的执行结果判断regfile纠检错功能的正确性。这种方法可以实现对高可靠SPARC V8处理器的regfile数据位和校验位精确到位的错误注入,能够验证regfile纠检错功能,同时由于采用软件完成,实现简便,成本低、速度快,也能够与应用程序相结合,实现对应用程序中regfile错误处理程序功能的验证。
Description
技术领域
本发明涉及一种验证高可靠SPARC V8处理器寄存器堆(regfile)纠检错功能的方法,属于处理器功能验证领域。
背景技术
regfile是高可靠SPARC V8处理器的重要部件,其作用是保存处理器执行过程中需要使用的数据和指令执行完成后的结果数据。regfile保存数据的正确与否对于高可靠SPARC V8处理器的功能是否正确至关重要,为了提高处理器的可靠性,在regfile的设计中加入了容错设计,即对regfile中的每一个32位的寄存器进行汉明编码,形成7位校验码,通过在regfile读出数据时进行数据校验实现了检测/纠正一位错和检测两位错。
由于regfile设计中含有纠检错功能,并在硬件上具有对32位数据位和7位校验位进行错误注入的能力,这就构成了在高可靠SPARC V8处理器原型验证阶段采用软件方法验证regfile纠检错功能的基础。然而,国外同类高可靠SPARC V8处理器通过软件仅能对regfile的校验位进行纠检错功能验证,不能对数据位进行纠检错功能验证,因此必须在软件方法上进行创新,实现对regfile的数据位和校验位进行纠检错功能验证。而国内的公开资料中也没有见到通过软件对regfile进行纠检错功能验证的方法。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供一种验证SPARC V8处理器寄存器堆纠检错功能的方法,实现对regfile中数据位和校验位纠检错功能的验证,而且当发生纠检错功能错误时,可以准确地知道出错的具体寄存器。
本发明的技术解决方案是:一种验证SPARC V8处理器寄存器堆纠检错功能的方法,包括下列步骤:
(1)对寄存器堆中的所有寄存器进行编码;
(2)确定需要注入错误的寄存器,并生成写入该寄存器的数据;
(3)对步骤(2)生成数据的一位或两位进行错误注入,并将错误注入后的数据写入到需要注入错误的寄存器中;
(4)从步骤(3)被注入错误的寄存器中读取数据,根据读出的数据或处理器是否进入寄存器堆纠检错陷阱判断该寄存器的纠检错功能是否正确;具体判断方式如下:
当该寄存器处于检错功能时:如果处理器进入寄存器堆纠检错陷阱,则认为该寄存器的检错功能正确;否则该寄存器的检错功能不正确;
当该寄存器处于纠检错功能时:
如果仅对步骤(2)生成数据的一位进行了错误注入,则判断读出数据是否与步骤(2)生成的数据一致,如果一致,则该寄存器的纠检错功能正确,否则该寄存器的纠检错功能不正确;
如果对步骤(2)生成数据的两位进行了错误注入,则判断处理器是否进入寄存器堆纠检错陷阱,如果是,则认为该寄存器的纠检错功能正确;否则该寄存器的纠检错功能不正确;
(5)完成对SPARC V8处理器寄存器堆纠检错功能的验证。
所述步骤(1)中采用“窗口号+寄存器号”对寄存器进行编码,所述窗口号及寄存器号与SPARC V8处理器的定义一致。
所述步骤(2)中的数据包含数据位和校验位。
所述步骤(3)中对步骤(2)生成数据的一位或两位进行错误注入,具体包括如下三种情况:
情况一:仅对数据位的一位或两位进行错误注入;
情况二:仅对校验位的一位或两位进行错误注入;
情况三:对数据位的一位和校验位的一位进行错误注入。
本发明与现有技术相比的有益效果是:
(1)本发明通过软件操作实现regfile的错误注入,可以准确地将错误注入到高可靠SPARC V8处理器regfile中需要验证错误检查和/或纠正功能的具体位,既可实现对数据位的错误注入,也可实现对校验位的错误注入,功能验证对象明确、完整,从而保证验证针对性、结果准确。
(2)本发明采用“窗口号+寄存器号”对寄存器进行编码,当发生纠检错功能错误时,可以准确地知道出错的具体窗口的寄存器,实现精确定位。
(3)本发明验证regfile纠检错功能利用软件实现,可以使验证程序与应用程序结合在一起,从而实现在调试高可靠SPARC V8处理器应用程序时,模拟错误发生,实现对应用程序中regfile错误处理程序功能验证,降低了应用程序的验证难度。
(4)本发明可以在一般的高可靠SPARC V8处理器应用开发板或者嵌入式系统中进行,不需要复杂的监控系统,方法简单,易于实现,验证速度快,成本低廉。
附图说明
图1是本发明工作流程示意图。
具体实施方式
针对高可靠SPARC V8处理器原型验证阶段,提出一种高可靠SPARC V8处理器regfile纠检错功能验证的方法,该方法通过软件编程实现。这种方法利用高可靠SPARC V8处理器内部控制regfile纠检错的特殊寄存器,以及SPARCV8处理器原型验证阶段执行程序容易且速度快的特点,通过软件编程实现对regfile中每个32位寄存器及其7位校验位任意位的错误注入,模拟regfile发生数据出错,并获得regfile对错误处理的结果,从而实现regfile纠检错功能的验证。这种方法不但可以实现对regfile中数据位和校验位纠检错功能的验证,而且当发生纠检错功能错误时,可以准确地知道出错的具体窗口的寄存器。
如图1所示为本发明的方法流程图,具体步骤如下:
(1)对regfile中的所有寄存器进行编码;
由于高可靠SPARC V8处理器的regfile采用寄存器窗口方式,程序指令执行时只能看到regfile中的一个窗口,为了验证所有的窗口,并能准确辨认验证的对象是哪个窗口中的哪个寄存器,需要对regfile中的所有窗口的所有寄存器进行编码。编码方式采用“窗口号+寄存器号”,编号完成后,编号将作为验证用的数据写入到regfile中。
(2)确定需要注入错误的寄存器,并生成写入该寄存器的数据,包含数据位和校验位;
(3)对步骤(2)生成数据的一位或两位进行错误注入,并将错误注入后的数据写入到需要注入错误的寄存器中;
对步骤(2)生成数据的一位或两位进行错误注入,具体包括如下三种情况:
情况一:仅对数据位的一位或两位进行错误注入;
情况二:仅对校验位的一位或两位进行错误注入;
情况三:对数据位的一位和校验位的一位进行错误注入。
确定需要对regfile中的寄存器注入错误的位,利用高可靠SPARC V8处理器中regfile的控制逻辑,通过编程打开相应位的错误注入功能,并把数据写入到需要注入错误的寄存器中,完成对regfile中数据的错误注入。
(4)从步骤(3)已经注入错误的寄存器中读取数据,触发高可靠SPARCV8处理器regfile的纠检错功能,之后根据读出的数据或处理器是否进入寄存器堆纠检错陷阱判断该寄存器的纠检错功能是否正确;具体判断方式如下:
当该寄存器处于检错功能时:如果处理器进入寄存器堆纠检错陷阱,则认为该寄存器的检错功能正确;否则该寄存器的检错功能不正确;
当该寄存器处于纠检错功能时:
如果仅对步骤(2)生成数据的一位进行了错误注入,则判断读出数据是否与步骤(2)生成的数据一致,如果一致,则该寄存器的纠检错功能正确,否则该寄存器的纠检错功能不正确;
如果对步骤(2)生成数据的两位进行了错误注入,则判断处理器是否进入寄存器堆纠检错陷阱,如果是,则认为该寄存器的纠检错功能正确;否则该寄存器的纠检错功能不正确。
(5)完成对SPARC V8处理器寄存器堆纠检错功能的验证。
实施例:
高可靠SPARC V8处理器的regfile(寄存器堆)中包含有8个寄存器窗口,每个寄存器窗口包含16个寄存器。根据这种硬件设计对寄存器进行编码,8个寄存器窗口的编码分别为“0x00~0x0f”、“0x10~0x1f”、“0x20~0x2f”、“0x30~0x3f”、“0x40~0x4f”、“0x50~0x5f”、“0x60~0x6f”、“0x70~0x7f”。
对regfile中的寄存器进行编码的方式为“窗口号+寄存器号”,如对第一个寄存器窗口的第一个寄存器的编码为0x11,其中第一个“1”为窗口号,第二个“1”为寄存器号。
假设需要注入错误的寄存器为第一个寄存器窗口的第一个寄存器,写入该寄存器的数据为“0xaaaaaaaa”,之后确定需要进行错误注入的具体位。在高可靠SPARC V8处理器中,通过regfile纠检错控制寄存器可以实现regfile的错误注入。进行错误注入时,首先将regfile纠检错控制寄存器中与数据位中要进行错误注入的某一位(如第0位)对应的位置1,再将数据“0xaaaaaaaa”写入到第一个寄存器窗口的第一个寄存器中,写入后的数据按照对应regfile纠检错控制寄存器中置1的值发生改变(假设改变后的值为0xaaaaaaa8),实现错误注入。之后,设置regfile的容错工作模式,并通过执行指令读取regfile的值,触发纠检错功能。若regfile的容错工作模式设置为检错模式,将产生一个陷阱,程序如果分支到陷阱处理程序中执行,则检错功能正确,否则检错功能不正确;若设置regfile的容错工作模式为纠检错模式,读取第一个寄存器窗口的第一个寄存器,如果该数据为“0xaaaaaaaa”,则纠检错功能正确;否则不正确。
假设对写入到第一个寄存器窗口的第一个寄存器中的数据“0xaaaaaaaa”中的两位注入错误,若regfile的容错工作模式设置为检错模式,将产生一个陷阱,程序如果分支到陷阱处理程序中执行,则检错功能正确,否则检错功能不正确;若设置regfile的容错工作模式为纠检错模式,程序如果分支到陷阱处理程序中执行,则纠检错功能正确,否则不正确。
本发明说明书中未作详细描述的内容属本领域专业技术人员的公知技术。
Claims (4)
1.一种验证SPARC V8处理器寄存器堆纠检错功能的方法,其特征在于包括下列步骤:
(1)对寄存器堆中的所有寄存器进行编码;
(2)确定需要注入错误的寄存器,并生成写入该寄存器的数据;
(3)对步骤(2)生成数据的一位或两位进行错误注入,并将错误注入后的数据写入到需要注入错误的寄存器中;
(4)从步骤(3)被注入错误的寄存器中读取数据,根据读出的数据或处理器是否进入寄存器堆纠检错陷阱判断该寄存器的纠检错功能是否正确;
具体判断方式如下:
当该寄存器处于检错功能时:如果处理器进入寄存器堆纠检错陷阱,则认为该寄存器的检错功能正确;否则该寄存器的检错功能不正确;
当该寄存器处于纠检错功能时:
如果仅对步骤(2)生成数据的一位进行了错误注入,则判断读出数据是否与步骤(2)生成的数据一致,如果一致,则该寄存器的纠检错功能正确,否则该寄存器的纠检错功能不正确;
如果对步骤(2)生成数据的两位进行了错误注入,则判断处理器是否进入寄存器堆纠检错陷阱,如果是,则认为该寄存器的纠检错功能正确;否则该寄存器的纠检错功能不正确;
(5)完成对SPARC V8处理器寄存器堆纠检错功能的验证。
2.根据权利要求1所述的一种验证SPARC V8处理器寄存器堆纠检错功能的方法,其特征在于:所述步骤(1)中采用“窗口号+寄存器号”对寄存器进行编码,所述窗口号及寄存器号与SPARC V8处理器的定义一致。
3.根据权利要求1所述的一种验证SPARC V8处理器寄存器堆纠检错功能的方法,其特征在于:所述步骤(2)中的数据包含数据位和校验位。
4.根据权利要求3所述的一种验证SPARC V8处理器寄存器堆纠检错功能的方法,其特征在于:所述步骤(3)中对步骤(2)生成数据的一位或两位进行错误注入,具体包括如下三种情况:
情况一:仅对数据位的一位或两位进行错误注入;
情况二:仅对校验位的一位或两位进行错误注入;
情况三:对数据位的一位和校验位的一位进行错误注入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410742112.4A CN104484256B (zh) | 2014-12-05 | 2014-12-05 | 一种验证sparc v8处理器寄存器堆纠检错功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410742112.4A CN104484256B (zh) | 2014-12-05 | 2014-12-05 | 一种验证sparc v8处理器寄存器堆纠检错功能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104484256A true CN104484256A (zh) | 2015-04-01 |
CN104484256B CN104484256B (zh) | 2017-01-11 |
Family
ID=52758800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410742112.4A Active CN104484256B (zh) | 2014-12-05 | 2014-12-05 | 一种验证sparc v8处理器寄存器堆纠检错功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104484256B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710551A (zh) * | 2018-04-28 | 2018-10-26 | 北京轩宇信息技术有限公司 | 基于sparc处理器单粒子翻转故障注入的测试方法及系统 |
CN110333978A (zh) * | 2019-07-09 | 2019-10-15 | 上海微小卫星工程中心 | 一种通过软件模拟sparc处理器的故障的方法 |
CN112349343A (zh) * | 2020-11-06 | 2021-02-09 | 海光信息技术股份有限公司 | 电路结构、芯片以及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731346A (zh) * | 2005-08-15 | 2006-02-08 | 中国航天时代电子公司第七七一研究所 | 微处理器的整数单元中五级容错流水结构的实现方法 |
CN101281481A (zh) * | 2008-05-23 | 2008-10-08 | 北京时代民芯科技有限公司 | 一种存储器抗单粒子翻转的纠错检错方法 |
US20110219266A1 (en) * | 2010-03-04 | 2011-09-08 | Qualcomm Incorporated | System and Method of Testing an Error Correction Module |
CN103413571A (zh) * | 2013-07-29 | 2013-11-27 | 西北工业大学 | 存储器和利用该存储器实现检错纠错的方法 |
-
2014
- 2014-12-05 CN CN201410742112.4A patent/CN104484256B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731346A (zh) * | 2005-08-15 | 2006-02-08 | 中国航天时代电子公司第七七一研究所 | 微处理器的整数单元中五级容错流水结构的实现方法 |
CN101281481A (zh) * | 2008-05-23 | 2008-10-08 | 北京时代民芯科技有限公司 | 一种存储器抗单粒子翻转的纠错检错方法 |
US20110219266A1 (en) * | 2010-03-04 | 2011-09-08 | Qualcomm Incorporated | System and Method of Testing an Error Correction Module |
CN103413571A (zh) * | 2013-07-29 | 2013-11-27 | 西北工业大学 | 存储器和利用该存储器实现检错纠错的方法 |
Non-Patent Citations (1)
Title |
---|
解严等: "基于单片SRAM的EDAC电路设计", 《微计算机信息》, vol. 27, no. 7, 31 July 2011 (2011-07-31), pages 99 - 101 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710551A (zh) * | 2018-04-28 | 2018-10-26 | 北京轩宇信息技术有限公司 | 基于sparc处理器单粒子翻转故障注入的测试方法及系统 |
CN108710551B (zh) * | 2018-04-28 | 2021-12-07 | 北京轩宇信息技术有限公司 | 基于sparc处理器单粒子翻转故障注入的测试方法及系统 |
CN110333978A (zh) * | 2019-07-09 | 2019-10-15 | 上海微小卫星工程中心 | 一种通过软件模拟sparc处理器的故障的方法 |
CN112349343A (zh) * | 2020-11-06 | 2021-02-09 | 海光信息技术股份有限公司 | 电路结构、芯片以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104484256B (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9336100B2 (en) | Efficient debugging of memory miscompare failures in post-silicon validation | |
CN107430540A (zh) | 用于硬件验证的运行时间ecc错误注入方案 | |
CN104484256A (zh) | 一种验证sparc v8处理器寄存器堆纠检错功能的方法 | |
CN101339519B (zh) | 面向嵌入式微处理器的软硬结合控制流检测方法 | |
CN102270166A (zh) | 基于模拟器的处理器故障注入及跟踪方法及模拟器 | |
CN104156311A (zh) | 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法 | |
CN107924356B (zh) | 零开销代码覆盖分析 | |
US8453082B2 (en) | Soft error verification in hardware designs | |
Muske et al. | Efficient elimination of false positives using bounded model checking | |
Ren et al. | A dynamic taint analysis framework based on entity equipment | |
CN114510723B (zh) | 一种智能合约权限管理漏洞检测方法及装置 | |
US8560987B2 (en) | Test functionality integrity verification for integrated circuit design | |
CN103294837A (zh) | 一种集成电路的验证调试方法及系统 | |
CN105718366B (zh) | 基于Matlab的模型自动测试方法 | |
CN112001138A (zh) | 一种高效的数字电路算法验证装置 | |
CN103365775B (zh) | 基于内部状态检查的单元测试方法 | |
CN103150254B (zh) | 基于状态依赖概率建模的软件错误定位方法 | |
De Blaere et al. | A compiler extension to protect embedded systems against data flow errors | |
CN102508697A (zh) | 一种Java实现8位嵌入式CPU仿真运行环境的方法 | |
Grieco et al. | A stack model for symbolic buffer overflow exploitability analysis | |
CN108121627B (zh) | 一种VxWorks操作系统调试方法 | |
CN104199778A (zh) | 测试软件注册算法错误的方法 | |
CN105718375A (zh) | 嵌入式系统的可恢复性度量方法 | |
Mueller-Gritschneder et al. | Safety evaluation based on virtual prototypes: fault injection with multi-level processor models | |
CN105302686A (zh) | 一种存储器目标测试方法 |
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 |