CN109101355B - 一种提取错误现场特征测试激励的处理器调试方法 - Google Patents

一种提取错误现场特征测试激励的处理器调试方法 Download PDF

Info

Publication number
CN109101355B
CN109101355B CN201810669150.XA CN201810669150A CN109101355B CN 109101355 B CN109101355 B CN 109101355B CN 201810669150 A CN201810669150 A CN 201810669150A CN 109101355 B CN109101355 B CN 109101355B
Authority
CN
China
Prior art keywords
instruction
information
orgtrace
register
execution data
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
Application number
CN201810669150.XA
Other languages
English (en)
Other versions
CN109101355A (zh
Inventor
孙龙鹏
苑佳红
郑帅克
游柏青
高军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phytium Technology Co Ltd
Original Assignee
Phytium Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN201810669150.XA priority Critical patent/CN109101355B/zh
Publication of CN109101355A publication Critical patent/CN109101355A/zh
Application granted granted Critical
Publication of CN109101355B publication Critical patent/CN109101355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种提取错误现场特征测试激励的处理器调试方法,本发明在运行环境中执行原始测试激励并记录原始执行数据流;根据指定的疑似错误指令的信息在原始执行数据流中查找得到热点指令得到热点指令列表;逐条分析热点指令列表提取指令依赖的寄存器信息;在原始执行数据流中查找所有热点指令的所有依赖信息对应的数据;将热点指令和对应的依赖数据转化为测试代码并编译生成可执行的特征测试激励;在测试环境中运行特征测试激励,记录运行特征测试激励的运行状态或者使用调试手段进行调试。本发明通过给定流程与信息自动从原始激励中提取特征测试激励减少调试过程中寻找错误点和重现错误的时间,从而减少整个调试过程所花费的时间和精力。

Description

一种提取错误现场特征测试激励的处理器调试方法
技术领域
本发明涉及微处理器设计中验证测试中的调试技术,具体涉及一种提取错误现场特征测试激励的处理器调试方法。
背景技术
测试是微处理器中必不可少的过程,为了确保处理器设计正确性尽可能多须进行测试。越早发现缺陷,那么修复缺陷的代价就越低,测试价值就越高,通过完整测试发现的缺陷数越少则表明设计质量越高。设计师解决发现的缺陷,必然需要分析测试激励,进行调试时更需要重现错误现场。
随着项目推进设计将越来越成熟,集成测试时会进行大量各类测试。这些测试中所使用的激励程序主要是一些定向功能测试激励或者使用工具通过随机方法产生的随机测试激励。在执行这些测试激励时,单个运行完成在十分钟到几个小时不等。因为通常在设计代码时不能完全保证设计正确性,因此在刚开始测试时出现大量测试错误,随着修复的缺陷越多,误数量也将逐步降低;在这个过程中需要对这些错误测试结果一一进行分析,确定其错误原因。
运行上述测试激励时产生执行流日志文件,通过在这冗长的日志文件中和参考模型执行流日志进行对比寻找错误点。引发错误的原因可能不是一条指令所引起,有可能是多条指令组合执行才引发,针对这种情形分析测试错误原因需要花费更多的时间。同时进行调试时将在调试环境重新运行这个测试激励,一般情况下调试环境比实际的测试环境运行要慢一些,但调试环境能够获取到更多的信息;经过漫长等待后,在调试环境中才能恢复到分析出的错误现场处。在调试过程中所花费的确定问题所花费的时间约在80%,其中寻找错误点、重现错误现场、分析出错原因是确定问题过程中占据时间最多的部分。分析出错原因这个过程与具体设计有关不能确定具体时间,比如通过一条指令执行的错误结果就能够确定设计中那个部分出错,则这个过程花费时间极短;另外的复杂问题需要分析波形、多次调试才能够确定设计问题所在。寻找错误点、重现错误现场的操作流程相对规范,因此可以通过某种方法减少这两个过程所花费的时间,从而提高调测试的效率。
因此如何通过某种方法能够快速的重现错误现场,以减少分析出错点以及不必要的运行时间,成为亟待解决的关键技术问题。经过分析发现测试激励在运行时记录下其执行流,在这个执行流数据中已经包含了分析错误原因的数据,因此可以通过指定疑似错误指令的信息自动的提取其依赖的数据生成一个很小的测试激励,然后只需要运行这个很小的测试激励即可重现 出错误现场。一般生成的这个测试激励只有数行汇编代码,在模拟环境中几乎能够瞬间执行完成,并生成调试需要的一些报告;或者直接进行信号调试都可以很快的定位到想要了解的信息。要完成这个很小的测试激励生成就需要分析指令的执行情况来完成依赖信息、依赖数据的提取,并通过这些信息自动生成这个测试程序。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种提取错误现场特征测试激励的处理器调试方法,本发明通过给定流程与信息自动从原始激励中提取特征测试激励减少调试过程中寻找错误点和重现错误的时间,从而减少整个调试过程所花费的时间和精力。
为了解决上述技术问题,本发明采用的技术方案为:
一种提取错误现场特征测试激励的处理器调试方法,实施步骤包括:
1)在运行环境中执行原始测试激励,记录原始测试激励在运行环境处理器中的原始执行数据流OrgTrace,所述原始执行数据流OrgTrace记录执行的每条指令的机器码、所影响的寄存器;确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns;
2)根据指定的疑似错误指令的信息,从起始指令位置Ns开始在原始执行数据流OrgTrace中查找信息匹配的指令得到热点指令,得到热点指令列表HotList;
3)逐条分析热点指令列表HotList中的热点指令信息,从指令信息中提取指令依赖的寄存器信息;
4)在原始执行数据流OrgTrace中查找所有热点指令的所有依赖信息对应的数据;
5)将热点指令和对应的依赖数据转化为测试代码并编译生成可执行的特征测试激励;
6)在测试环境中运行特征测试激励,记录运行特征测试激励的运行状态或者使用调试手段进行调试。
优选地,步骤1)中确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns的详细步骤包括:
1.1)预先获取原始测试激励的参考执行数据流RefTrace,所述参考执行数据流RefTrace 记录原始测试激励在参考模型环境下或者理论执行的每条指令的机器码、所影响的寄存器;
1.2)顺序比较原始执行数据流OrgTrace、参考执行数据流RefTrace两者的每一条指令直至找到第一次比较结果不同处的位置,并将该第一次比较结果不同处的位置作为原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns。
优选地,步骤2)的详细步骤包括:
2.1)解析指定的疑似错误指令的信息,所述疑似错误指令信息为指令汇编助记符表达式形式的疑似错误指令、或指令机器码形式的疑似错误指令、或疑似错误指令在原始执行数据流OrgTrace中的位置,将疑似错误指令信息格式化为可识别的数据,并将格式化后的疑似错误指令信息加入到列表ErrformatList中;
2.2)从列表ErrformatList中遍历获取一条未查找的当前疑似错误信息Ei并判断是否成功获取,如果没有成功获取到当前疑似错误信息Ei或者列表ErrformatList为空,则结束热点指令提取并跳转执行步骤3);否则,跳转执行下一步;
2.3)将原始执行数据流OrgTrace的读取指针Pt移动到当前疑似错误信息Ei的位置Ns 处;
2.4)将原始执行数据流OrgTrace的读取指针Pt向前移动一次;
2.5)通过原始执行数据流OrgTrace的读取指针Pt是否为空判断是否已扫描完原始执行数据流OrgTrace的所有数据,如果已经扫描完原始执行数据流OrgTrace的所有数据,则判定指定的疑似错误指令的信息有误,忽略指定的疑似错误指令的信息,设置忽略标志后跳转执行步骤2.2);否则,跳转执行步骤2.6);
2.6)将当前疑似错误信息Ei和原始执行数据流OrgTrace的读取指针Pt处的指令信息进行比较,判断原始执行数据流OrgTrace的读取指针Pt处的指令信息中是否包含当前疑似错误信息Ei,如果包含当前疑似错误信息Ei,则将原始执行数据流OrgTrace的读取指针Pt位置加入到热点指令列表HotList中,设置成功标志后继续执行步骤2.2);否则,跳转执行步骤2.4)。
优选地,步骤3)的详细步骤包括:
3.1)从热点指令列表HotList中遍历选择一条还未处理的当前热点指令Hi,如果HostList 中的所有热点指令都已经被处理则跳转执行步骤4);否则,跳转执行步骤3.2);
3.2)解析读取当前热点指令Hi的汇编字符串opcode;
3.3)判断汇编字符串opcode在预设的机器码索引依赖库是否有匹配的依赖关系,如果搜索到则提取匹配的依赖关系中的依赖寄存器信息Hrs,并跳转到步骤3.1);否则,跳转执行步骤3.4);
3.4)判断是否能够获取当前热点指令Hi的反汇编字符串,如果获取反汇编字符串成功,则跳转执行下一步;否则,忽略当前热点指令Hi,并跳转到步骤3.1);
3.5)解析当前热点指令Hi的反汇编字符串,通过反汇编字符串推导当前热点指令Hi 的依赖寄存器信息Hrs,跳转到步骤3.1)。
优选地,步骤3.5)中通过反汇编字符串推导当前热点指令Hi的依赖寄存器信息Hrs具体是指通过预先定义的寄存器命名匹配规则匹配当前热点指令Hi的反汇编字符串,如果匹配成功则获取对应的寄存器信息作为当前热点指令Hi的依赖寄存器信息Hrs。
优选地,步骤4)的详细步骤包括:
4.1)将热点指令列表HotList的指针Pi移动到末尾;
4.2)将热点指令列表HotList的指针Pi对应在OrgTrace中的前一个位置开始向前移动原始执行数据流OrgTrace的指针Pr,每移动一次就与热点指令列表HotList的指针Pi所指的热点指令信息依赖进行匹配,重复直到获取Pi所指热点指令所有依赖数据;
4.3)将热点指令列表HotList的指针Pi向前移动一次,检查热点指令列表HotList的指针Pi处是否还有未处理的热点指令,如果有则跳转执行步骤4.2);否则,跳转执行步骤5)。
优选地,步骤4.2)的详细步骤包括:
4.2.1)获取热点指令列表HotList的指针Pi处热点指令信息,获取由依赖解析生成的依赖的寄存器信息rHrs;
4.2.2)移动原始执行数据流OrgTrace的指针Pr到热点指令列表HotList的指针Pi所指的位置的前一个位置;
4.2.3)获取原始执行数据流OrgTrace的指针Pr处的指令信息,如果原始执行数据流 OrgTrace的指针Pr处的指令信息为空,则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.4)解析原始执行数据流OrgTrace的指针Pr处的指令执行后结果,获取影响的寄存器以及对应的寄存器数据值集合Trs;
4.2.5)针对依赖的寄存器信息rHrs遍历取出一个未被处理的当前寄存器信息Hr,判断是否取出当前寄存器信息Hr成功,如果不成功则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.6)判断当前寄存器信息Hr是否已经在寄存器以及对应的寄存器数据值集合Trs中搜索过,如果搜索过,则原始执行数据流OrgTrace的指针Pr前移一个位置,跳转执行步骤 4.2.3);否则,跳转执行步骤4.2.7);
4.2.7)在寄存器以及对应的寄存器数据值集合Trs中搜索当前寄存器信息Hr判断当前寄存器信息Hr是否在寄存器以及对应的寄存器数据值集合Trs中,如果是则跳转执行步骤 4.2.8);否则,跳转执行步骤4.2.5);
4.2.8)将当前寄存器信息Hr从依赖的寄存器信息rHrs中删除;
4.2.9)判断原始执行数据流OrgTrace的指针Pr对应的指令是否包含在热点指令列表 HotList中,如果在热点指令列表HotList中则跳转执行步骤4.2.10);否则,跳转执行步骤 4.2.11);
4.2.10)将热点指令列表HotList的指针Pi前移一个位置,跳转执行步骤4.2.3);
4.2.11)检查原始执行数据流OrgTrace的指针Pr之前的热点指令执行结果是否影响到了当前寄存器信息Hr,如果是则将当前寄存器信息Hr添加到热点指令列表HotList的指针Pi 处局部查找到的寄存器依赖列表中;否则,将当前寄存器信息Hr添加到全局查找到的寄存器依赖列表中;跳转执行步骤4.2.5)。
和现有技术相比,本发明具有下述优点:本发明在运行环境中执行原始测试激励,记录原始测试激励在运行环境处理器中的原始执行数据流OrgTrace;根据指定的疑似错误指令的信息,在原始执行数据流OrgTrace中查找信息匹配的指令得到热点指令,得到热点指令列表HotList;逐条分析热点指令列表HotList中的热点指令信息,从指令信息中提取指令依赖的寄存器信息;在原始执行数据流OrgTrace中查找所有热点指令的所有依赖信息对应的数据;将热点指令和对应的依赖数据转化为测试代码并编译生成可执行的特征测试激励;在测试环境中运行特征测试激励,记录运行特征测试激励的运行状态或者使用调试手段进行调试,通过给定流程与信息自动从原始激励中提取特征测试激励减少调试过程中寻找错误点和重现错误的时间,从而减少整个调试过程所花费的时间和精力。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例中步骤2)的流程图。
图3为本发明实施例中步骤3)的流程图。
图4为本发明实施例中步骤4)的流程图。
图5为本发明实施例中的热点指令依赖寄存器数据交叉依赖提取示例。
图6为本发明实施例中的热点指令依赖寄存器数据非交叉依赖提取示例。
具体实施方式
如图1所示,本实施例提取错误现场特征测试激励的处理器调试方法的实施步骤包括:
1)在运行环境中执行原始测试激励,记录原始测试激励在运行环境处理器中的原始执行数据流OrgTrace,所述原始执行数据流OrgTrace记录执行的每条指令的机器码、所影响的寄存器;确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns;
2)根据指定的疑似错误指令的信息,从起始指令位置Ns开始在原始执行数据流OrgTrace中查找信息匹配的指令得到热点指令,得到热点指令列表HotList;
3)逐条分析热点指令列表HotList中的热点指令信息,从指令信息中提取指令依赖的寄存器信息;
4)在原始执行数据流OrgTrace中查找所有热点指令的所有依赖信息对应的数据;
5)将热点指令和对应的依赖数据转化为测试代码并编译生成可执行的特征测试激励;
6)在测试环境中运行特征测试激励,记录运行特征测试激励的运行状态或者使用调试手段进行调试。
本实施例中,步骤1)中在运行环境中执行原始测试激励,并记录下测试激励在运行环境处理器中的执行数据流,为了描述方便将运行环境记录的原始执行数据流记作OrgTrace。为了能够进行错误现场特征测试激励提取,须要在OrgTrace中记录每条指令的机器码、所影响的寄存器。获取测试激励执行Trace须要通过运行环境所支持的方式。
确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns在调试过程中有多种方式获取到这个值,比如分析OrgTrace后给出起始指令的位置;优选的方式是自动的识别这个起始位置,这样可大大提高调试效率。本实施例给出一种简化的方式,假设获取到的 OrgTrace和RefTrace的指令执行数据流是一致的,只需按顺序比较OrgTrace,RefTrace中的每一条指令,直到第一次比较结果不同处的位置,并记录下该指令在OrgTrace中的位置编号,把这个位置编号记作Ns即查询起始疑似错误指令位置。本实施例中,步骤1)中确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns的详细步骤包括:
1.1)预先获取原始测试激励的参考执行数据流RefTrace,所述参考执行数据流RefTrace 记录原始测试激励在参考模型环境下或者理论执行的每条指令的机器码、所影响的寄存器;
1.2)顺序比较原始执行数据流OrgTrace、参考执行数据流RefTrace两者的每一条指令直至找到第一次比较结果不同处的位置,并将该第一次比较结果不同处的位置作为原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns。
如图2所示,步骤2)的详细步骤包括:
2.1)解析指定的疑似错误指令的信息,所述疑似错误指令信息为指令汇编助记符表达式形式的疑似错误指令、或指令机器码形式的疑似错误指令、或疑似错误指令在原始执行数据流OrgTrace中的位置,将疑似错误指令信息格式化为可识别的数据,并将格式化后的疑似错误指令信息加入到列表ErrformatList中;比如输入是指令位置:[120,100-102]则需要将其格式化为[100,101,102,120];输入的是汇编助记符或机器码时只需检查是否符合汇编指令规范或机器码规范,然后转换为大写字母即可;
2.2)从列表ErrformatList中遍历获取一条未查找的当前疑似错误信息Ei并判断是否成功获取,如果没有成功获取到当前疑似错误信息Ei或者列表ErrformatList为空,则结束热点指令提取并跳转执行步骤3);否则,跳转执行下一步;
2.3)将原始执行数据流OrgTrace的读取指针Pt移动到当前疑似错误信息Ei的位置Ns 处;位置Ns为迭代变量,第一次为查询起始疑似错误指令位置Ns,后续不断向后迭代;
2.4)将原始执行数据流OrgTrace的读取指针Pt向前移动一次(Pt=Pt->pre);
2.5)通过原始执行数据流OrgTrace的读取指针Pt是否为空判断是否已扫描完原始执行数据流OrgTrace的所有数据,如果已经扫描完原始执行数据流OrgTrace的所有数据,则判定指定的疑似错误指令的信息有误,忽略指定的疑似错误指令的信息,设置忽略标志后跳转执行步骤2.2);否则,跳转执行步骤2.6);
2.6)将当前疑似错误信息Ei和原始执行数据流OrgTrace的读取指针Pt处的指令信息进行比较,判断原始执行数据流OrgTrace的读取指针Pt处的指令信息中是否包含当前疑似错误信息Ei,如果包含当前疑似错误信息Ei,则将原始执行数据流OrgTrace的读取指针Pt位置加入到热点指令列表HotList中,设置成功标志后继续执行步骤2.2);否则,跳转执行步骤2.4)。
如图3所示,步骤3)的详细步骤包括:
3.1)从热点指令列表HotList中遍历选择一条还未处理的当前热点指令Hi,如果HostList 中的所有热点指令都已经被处理则跳转执行步骤4);否则,跳转执行步骤3.2);
3.2)解析读取当前热点指令Hi的汇编字符串opcode(机器码);
3.3)判断汇编字符串opcode在预设的机器码索引依赖库是否有匹配的依赖关系,如果搜索到则提取匹配的依赖关系中的依赖寄存器信息Hrs,并跳转到步骤3.1);否则,跳转执行步骤3.4);机器码索引依赖库需要预先建立,建立的方式可以是在每正确解析一条指令的寄存器依赖后自动写入到一个数据库文件中;或者是针对某些复杂指令不能够通过已有的指令信息完成自动解析时,手工将该类指令的依赖文件添加到机器码索引依赖库中,不能够自动识别出的该类指令是比较少的,因此手工建立机器码索引数据库工作量并不大。
3.4)判断是否能够获取当前热点指令Hi的反汇编字符串,如果获取反汇编字符串成功,则跳转执行下一步;否则,忽略当前热点指令Hi,并跳转到步骤3.1);
3.5)解析当前热点指令Hi的反汇编字符串,通过反汇编字符串推导当前热点指令Hi 的依赖寄存器信息Hrs,跳转到步骤3.1)。
本实施例中,步骤3.5)中通过反汇编字符串推导当前热点指令Hi的依赖寄存器信息 Hrs具体是指通过预先定义的寄存器命名匹配规则匹配当前热点指令Hi的反汇编字符串,如果匹配成功则获取对应的寄存器信息作为当前热点指令Hi的依赖寄存器信息Hrs。指令类型一般可分为以下几类:访存、分支、计算、异常,根据分类需要进行不同处理;由于异常指令与特定实现和体系结构有关,并不能够完全自动的获取需要的信息,因此本实施中需要排除异常指令。一般指令由操作名称和操作数构成,操作数只有立即数或者寄存器,立即数已包含在指令编码中,因此只需要解决指令操作数是否有寄存器。反汇编字符串中寄存器根命名具有相同的规则,通过预先定义的寄存器命名匹配规则,然后进行字符串提取即可获取到该指令所依赖的寄存器信息。
解析读取当前热点指令Hi的汇编字符串opcode(机器码)后,调用机器码索引数据库查询工具查询机器码索引依赖库,检测查询结果,判断是否成功获取到了Hi所依赖的寄存器信息;如果成功获取则提取出依赖的寄存器信息Hrs。机器码索引数据库查询工具查询机器码索引依赖库的执行过程如下:获取热点指令Hi的汇编字符串代码;要获取汇编字符串代码可以有多种方式,比如在获取OrgTrace的时候记录下汇编指令代码;或者获取热点指令Hi的机器码通过反编译工具获取机器码对应的汇编字符串,通常情况在对应指令集的编译工具链都拥有反编译工具;由于所有操作数的指令其操作数只有两类:立即数和寄存器;而为立即数时除了跳转指令需要额外处理外,其余类型都只需要关系以来的寄存器信息;因此需要获取到该指令操作数中所用到的寄存器信息;在一种指令集中其汇编指令的命名方式一般是固定的,只有几类,比如R1,X1,Q1等。要提取汇编指令中操作数中的寄存器,可以很方便通过各种编程语言或各种字符串工具进行正则匹配,从而提取到依赖的寄存器信息。
如图4所示,步骤4)的详细步骤包括:
4.1)将热点指令列表HotList的指针Pi移动到末尾;
4.2)将热点指令列表HotList的指针Pi对应在OrgTrace中的前一个位置开始向前移动原始执行数据流OrgTrace的指针Pr,每移动一次就与热点指令列表HotList的指针Pi所指的热点指令信息依赖进行匹配,重复直到获取Pi所指热点指令所有依赖数据;
4.3)将热点指令列表HotList的指针Pi向前移动一次,检查热点指令列表HotList的指针Pi处是否还有未处理的热点指令,如果有则跳转执行步骤4.2);否则,跳转执行步骤5)。
如图4所示,步骤4.2)的详细步骤包括:
4.2.1)获取热点指令列表HotList的指针Pi处热点指令信息,获取由依赖解析生成的依赖的寄存器信息rHrs;
4.2.2)移动原始执行数据流OrgTrace的指针Pr到热点指令列表HotList的指针Pi所指的位置(Pi->trace)的前一个位置(Pi->trace->pre);
4.2.3)获取原始执行数据流OrgTrace的指针Pr处的指令信息,如果原始执行数据流 OrgTrace的指针Pr处的指令信息为空,则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.4)解析原始执行数据流OrgTrace的指针Pr处的指令执行后结果,获取影响的寄存器以及对应的寄存器数据值集合Trs;
4.2.5)针对依赖的寄存器信息rHrs遍历取出一个未被处理的当前寄存器信息Hr,判断是否取出当前寄存器信息Hr成功,如果不成功则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.6)判断当前寄存器信息Hr是否已经在寄存器以及对应的寄存器数据值集合Trs中搜索过,如果搜索过,则原始执行数据流OrgTrace的指针Pr前移一个位置,跳转执行步骤 4.2.3);否则,跳转执行步骤4.2.7);
4.2.7)在寄存器以及对应的寄存器数据值集合Trs中搜索当前寄存器信息Hr判断当前寄存器信息Hr是否在寄存器以及对应的寄存器数据值集合Trs中,如果是则跳转执行步骤 4.2.8);否则,跳转执行步骤4.2.5);
4.2.8)将当前寄存器信息Hr从依赖的寄存器信息rHrs中删除;
4.2.9)判断原始执行数据流OrgTrace的指针Pr对应的指令是否包含在热点指令列表 HotList中,如果在热点指令列表HotList中则跳转执行步骤4.2.10);否则,跳转执行步骤 4.2.11);
4.2.10)将热点指令列表HotList的指针Pi前移一个位置,跳转执行步骤4.2.3);
4.2.11)检查原始执行数据流OrgTrace的指针Pr之前的热点指令执行结果是否影响到了当前寄存器信息Hr,如果是则将当前寄存器信息Hr添加到热点指令列表HotList的指针Pi 处局部查找到的寄存器依赖列表中;否则,将当前寄存器信息Hr添加到全局查找到的寄存器依赖列表中;跳转执行步骤4.2.5)。4.2.8)如果未包含则搜索Pr之前的热点指令执行结果是否影响到了该寄存器,因为Pr到Pi->trace之间不可能有热点指令修改Hr,如果有的话这个热点指令就是Pr,根据前面在热点指令中的搜索没有找到的话,说明肯定未在这个区间,如果查找到则将该依赖寄存器数据加到Pi指针处的热点指令局部查找到的依赖寄存器列表中。
如图1所示,本实施例步骤5)中编译生成可执行的特征测试激励(mini测试)时,是通过mini测试模板来编译生成可执行的特征测试激励(mini测试程序)。
如图1所示,本实施例步骤6)中在测试环境中运行特征测试激励(mini测试程序),即可获得mini测试程序的mini测试指令执行数据流,从而可以用于mini测试结果分析(记录运行特征测试激励的运行状态或者使用调试手段进行调试)。
如图5所示的热点指令依赖寄存器数据交叉依赖提取示例,其变换过程如下:在原始测试激励指令流中有A、B、C、D四条指令,从上到下表示指令的执行的先后顺序,在上面的指令标识先执行,在ABCD两两之间可能会有其他的指令。其中D指令依赖Rn和Rk寄存器,C指令执行影响Rn寄存器,B指令依赖Rm寄存器,执行影响Rn寄存器,在A指令之前的指令执行影响Rk,Rm寄存器;Rn,Rm,Rk寄存器不为同一个寄存器;其中D 指令所依赖的Rn寄存器由C指令提供,且BD指令都是热点指令。当Pi指向D指令,抓取D指令所有依赖的数据完成后的热点指令依赖寄存器状态如图4中间所示,由于C指令位于BD之间,且B指令是热点指令并会影响到Rn寄存器,因此D指令将会有一个指向C 指令的局部依赖寄存器Rn和全局依赖寄存器Rk。抓取完B指令依赖的寄存器后的寄存器依赖状态如图5中最右边框图所示,D指令一个局部寄存器依赖,全局依赖寄存器列表包含 Rk、Rm。
如图6所示的热点指令依赖寄存器数据非交叉依赖提取示例,其变换过程如下:左边图形所示为在原始测试激励指令流中有A、B、C、D四条指令,从上到下表示指令的执行的先后顺序,在上面的指令标识先执行,在ABCD两两之间可能会有其他的指令。其中D指令依赖Rn和Rk寄存器,B指令依赖Rn,Rm寄存器,在A指令之前的指令执行影响Rn, Rk,Rm寄存器;Rn,Rm,Rk寄存器不为同一个寄存器;且BD指令都是热点指令。中间图形所示为D指令抓取所有依赖寄存器数据后状态,全局寄存器列表将会加入Rn、Rk寄存器数据。右边部分表示抓取B指令依赖寄存器的后的状态,由于B指令依赖的寄存器Rn同时D指令也依赖,且在处理D指令的依赖时已将Rn加入到全局列表中,因此在解析B寄存器是不需要将Rn重复加入到全局依赖寄存器列表中。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种提取错误现场特征测试激励的处理器调试方法,其特征在于实施步骤包括:
1)在运行环境中执行原始测试激励,记录原始测试激励在运行环境处理器中的原始执行数据流OrgTrace,所述原始执行数据流OrgTrace记录执行的每条指令的机器码、所影响的寄存器;确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns;
2)根据指定的疑似错误指令的信息,从起始指令位置Ns开始在原始执行数据流OrgTrace中查找信息匹配的指令得到热点指令,得到热点指令列表HotList;
3)逐条分析热点指令列表HotList中的热点指令信息,从指令信息中提取指令依赖的寄存器信息;
4)在原始执行数据流OrgTrace中查找所有热点指令的所有依赖信息对应的数据;
5)将热点指令和对应的依赖数据转化为测试代码并编译生成可执行的特征测试激励;
6)在测试环境中运行特征测试激励,记录运行特征测试激励的运行状态或者使用调试手段进行调试。
2.根据权利要求1所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤1)中确定原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns的详细步骤包括:
1.1)预先获取原始测试激励的参考执行数据流RefTrace,所述参考执行数据流RefTrace记录原始测试激励在参考模型环境下或者理论执行的每条指令的机器码、所影响的寄存器;
1.2)顺序比较原始执行数据流OrgTrace、参考执行数据流RefTrace两者的每一条指令直至找到第一次比较结果不同处的位置,并将该第一次比较结果不同处的位置作为原始执行数据流OrgTrace的查询起始疑似错误指令位置Ns。
3.根据权利要求1所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤2)的详细步骤包括:
2.1)解析指定的疑似错误指令的信息,所述疑似错误指令信息为指令汇编助记符表达式形式的疑似错误指令、或指令机器码形式的疑似错误指令、或疑似错误指令在原始执行数据流OrgTrace中的位置,将疑似错误指令信息格式化为可识别的数据,并将格式化后的疑似错误指令信息加入到列表ErrformatList中;
2.2)从列表ErrformatList中遍历获取一条未查找的当前疑似错误信息Ei并判断是否成功获取,如果没有成功获取到当前疑似错误信息Ei或者列表ErrformatList为空,则结束热点指令提取并跳转执行步骤3);否则,跳转执行下一步;
2.3)将原始执行数据流OrgTrace的读取指针Pt移动到当前疑似错误信息Ei的位置Ns处;
2.4)将原始执行数据流OrgTrace的读取指针Pt向前移动一次;
2.5)通过原始执行数据流OrgTrace的读取指针Pt是否为空判断是否已扫描完原始执行数据流OrgTrace的所有数据,如果已经扫描完原始执行数据流OrgTrace的所有数据,则判定指定的疑似错误指令的信息有误,忽略指定的疑似错误指令的信息,设置忽略标志后跳转执行步骤2.2);否则,跳转执行步骤2.6);
2.6)将当前疑似错误信息Ei和原始执行数据流OrgTrace的读取指针Pt处的指令信息进行比较,判断原始执行数据流OrgTrace的读取指针Pt处的指令信息中是否包含当前疑似错误信息Ei,如果包含当前疑似错误信息Ei,则将原始执行数据流OrgTrace的读取指针Pt位置加入到热点指令列表HotList中,设置成功标志后继续执行步骤2.2);否则,跳转执行步骤2.4)。
4.根据权利要求1所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤3)的详细步骤包括:
3.1)从热点指令列表HotList中遍历选择一条还未处理的当前热点指令Hi,如果HostList中的所有热点指令都已经被处理则跳转执行步骤4);否则,跳转执行步骤3.2);
3.2)解析读取当前热点指令Hi的汇编字符串opcode;
3.3)判断汇编字符串opcode在预设的机器码索引依赖库是否有匹配的依赖关系,如果搜索到则提取匹配的依赖关系中的依赖寄存器信息Hrs,并跳转到步骤3.1);否则,跳转执行步骤3.4);
3.4)判断是否能够获取当前热点指令Hi的反汇编字符串,如果获取反汇编字符串成功,则跳转执行下一步;否则,忽略当前热点指令Hi,并跳转到步骤3.1);
3.5)解析当前热点指令Hi的反汇编字符串,通过反汇编字符串推导当前热点指令Hi的依赖寄存器信息Hrs,跳转到步骤3.1)。
5.根据权利要求4所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤3.5)中通过反汇编字符串推导当前热点指令Hi的依赖寄存器信息Hrs具体是指通过预先定义的寄存器命名匹配规则匹配当前热点指令Hi的反汇编字符串,如果匹配成功则获取对应的寄存器信息作为当前热点指令Hi的依赖寄存器信息Hrs。
6.根据权利要求1所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤4)的详细步骤包括:
4.1)将热点指令列表HotList的指针Pi移动到末尾;
4.2)将热点指令列表HotList的指针Pi对应在OrgTrace中的前一个位置开始向前移动原始执行数据流OrgTrace的指针Pr,每移动一次就与热点指令列表HotList的指针Pi所指的热点指令信息依赖进行匹配,重复直到获取Pi所指热点指令所有依赖数据;
4.3)将热点指令列表HotList的指针Pi向前移动一次,检查热点指令列表HotList的指针Pi处是否还有未处理的热点指令,如果有则跳转执行步骤4.2);否则,跳转执行步骤5)。
7.根据权利要求6所述的提取错误现场特征测试激励的处理器调试方法,其特征在于,步骤4.2)的详细步骤包括:
4.2.1)获取热点指令列表HotList的指针Pi处热点指令信息,获取由依赖解析生成的依赖的寄存器信息rHrs;
4.2.2)移动原始执行数据流OrgTrace的指针Pr到热点指令列表HotList的指针Pi所指的位置的前一个位置;
4.2.3)获取原始执行数据流OrgTrace的指针Pr处的指令信息,如果原始执行数据流OrgTrace的指针Pr处的指令信息为空,则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.4)解析原始执行数据流OrgTrace的指针Pr处的指令执行后结果,获取影响的寄存器以及对应的寄存器数据值集合Trs;
4.2.5)针对依赖的寄存器信息rHrs遍历取出一个未被处理的当前寄存器信息Hr,判断是否取出当前寄存器信息Hr成功,如果不成功则跳转执行步骤4.2.10);否则,跳转执行下一步;
4.2.6)判断当前寄存器信息Hr是否已经在寄存器以及对应的寄存器数据值集合Trs中搜索过,如果搜索过,则原始执行数据流OrgTrace的指针Pr前移一个位置,跳转执行步骤4.2.3);否则,跳转执行步骤4.2.7);
4.2.7)在寄存器以及对应的寄存器数据值集合Trs中搜索当前寄存器信息Hr判断当前寄存器信息Hr是否在寄存器以及对应的寄存器数据值集合Trs中,如果是则跳转执行步骤4.2.8);否则,跳转执行步骤4.2.5);
4.2.8)将当前寄存器信息Hr从依赖的寄存器信息rHrs中删除;
4.2.9)判断原始执行数据流OrgTrace的指针Pr对应的指令是否包含在热点指令列表HotList中,如果在热点指令列表HotList中则跳转执行步骤4.2.10);否则,跳转执行步骤4.2.11);
4.2.10)将热点指令列表HotList的指针Pi前移一个位置,跳转执行步骤4.2.3);
4.2.11)检查原始执行数据流OrgTrace的指针Pr之前的热点指令执行结果是否影响到了当前寄存器信息Hr,如果是则将当前寄存器信息Hr添加到热点指令列表HotList的指针Pi处局部查找到的寄存器依赖列表中;否则,将当前寄存器信息Hr添加到全局查找到的寄存器依赖列表中;跳转执行步骤4.2.5)。
CN201810669150.XA 2018-06-26 2018-06-26 一种提取错误现场特征测试激励的处理器调试方法 Active CN109101355B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810669150.XA CN109101355B (zh) 2018-06-26 2018-06-26 一种提取错误现场特征测试激励的处理器调试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810669150.XA CN109101355B (zh) 2018-06-26 2018-06-26 一种提取错误现场特征测试激励的处理器调试方法

Publications (2)

Publication Number Publication Date
CN109101355A CN109101355A (zh) 2018-12-28
CN109101355B true CN109101355B (zh) 2021-12-10

Family

ID=64845046

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810669150.XA Active CN109101355B (zh) 2018-06-26 2018-06-26 一种提取错误现场特征测试激励的处理器调试方法

Country Status (1)

Country Link
CN (1) CN109101355B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241823A (zh) * 2020-01-07 2020-06-05 北京字节跳动网络技术有限公司 一种依赖配置的管理方法、装置、电子设备及存储介质
CN116431416B (zh) * 2023-06-05 2023-08-11 飞腾信息技术有限公司 处理器、调试方法、计算设备及计算机可读存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7076713B1 (en) * 2000-10-31 2006-07-11 Lucent Technologies Inc. Test generator for converting a model of computer component object behavior and stimulus values to test script
US7743304B2 (en) * 2006-02-17 2010-06-22 Verigy (Singapore) Pte. Ltd. Test system and method for testing electronic devices using a pipelined testing architecture
CN101446986A (zh) * 2007-11-27 2009-06-03 上海高性能集成电路设计中心 一种大型测试激励高效模拟验证装置
CN102201022A (zh) * 2011-04-22 2011-09-28 青岛海信信芯科技有限公司 用于fpga验证的方法和装置
CN104536885A (zh) * 2014-12-17 2015-04-22 记忆科技(深圳)有限公司 一种生成Soc随机验证平台的方法
CN105095079B (zh) * 2015-07-27 2018-01-12 电子科技大学 一种热点模块指令跟踪的方法及设备
CN105589993B (zh) * 2015-12-18 2019-01-15 中国科学院微电子研究所 微处理器功能验证设备及微处理器功能验证方法
CN105975664B (zh) * 2016-04-28 2019-01-18 福州瑞芯微电子股份有限公司 一种芯片功耗评估平台的评估方法
CN107301102B (zh) * 2017-06-22 2020-05-26 湖南国科微电子股份有限公司 一种处理器调试方法及***
CN107423505A (zh) * 2017-07-21 2017-12-01 山东华芯半导体有限公司 一种模块级和SoC级可重用的验证***及验证方法
CN107463473B (zh) * 2017-09-01 2023-06-27 珠海泰芯半导体有限公司 基于uvm和fpga的芯片软硬件仿真环境

Also Published As

Publication number Publication date
CN109101355A (zh) 2018-12-28

Similar Documents

Publication Publication Date Title
CN109739755B (zh) 一种基于程序追踪和混合执行的模糊测试***
US20150370685A1 (en) Defect localization in software integration tests
US8938383B2 (en) Enabling test script play back in different locales
CN109145534B (zh) 针对软件虚拟机保护的反混淆***及方法
CN107329889B (zh) 一种c编译器自动化测试的方法
CN103914657A (zh) 一种基于函数特征的恶意程序检测方法
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN112579437B (zh) 一种程序运行过程符合性验证方法
CN109101355B (zh) 一种提取错误现场特征测试激励的处理器调试方法
CN111797006B (zh) 一种线程测试的方法、装置、设备以及存储介质
Madeiral et al. Towards an automated approach for bug fix pattern detection
CN114385491A (zh) 一种基于深度学习的js转译器缺陷检测方法
CN110990282B (zh) 一种自动化单元测试方法
CN115422865B (zh) 仿真方法及装置、计算设备、计算机可读存储介质
CN115168131A (zh) 一种故障注入的cpu异常功能验证方法
CN109977019B (zh) 一种基于增量采样的编译器优化序列测试方法
CN113806234A (zh) 一种芯片寄存器提取及测试方法
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
US20050159925A1 (en) Cache testing for a processor design
CN111078193A (zh) 一种面向数据分析***的软件开发方法及***
CN110362463A (zh) 一种自动挑选测试用例进行回归测试的方法和装置
KR101136122B1 (ko) 디에스피 탑재 소프트웨어 단위시험을 위한 브레이크 포인트 분석 방법
CN114610320B (zh) 一种基于llvm的变量类型信息修复与比较方法及***
CN116383070B (zh) 一种面向高mc/dc的符号执行方法
CN113420516B (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
CB02 Change of applicant information

Address after: 300452 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Applicant after: Feiteng Information Technology Co.,Ltd.

Address before: 300452 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Applicant before: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant