问答题
李工负责设计CPU单元的BIT测试算法,通过对每组指令分别设计一组测试用例,定义不同的操作数、操作码和预期值,在指令运行后比较结果与预期值。由于该系统选用的处理器集成了多级Cache(高速缓存),并且指令缓存和数据缓存是分开的,执行指令功能测试前需要刷新指令Cache,以保证与内存中的测试代码一致。每个测试项的测试结果正确为0,故障为1。
以32位字比较指令cmpw测试为例,cmpw将寄存器rA和rB内数据比较的结果(大于、小于、等于)放入条件寄存器crx,其操作码为0x7C000000,测试用例数据如表2所示。
表2 字比较指令cmpw测试用例数据
|
|
cmpw
|
用例输入
|
预期输出
|
|
操作码
|
操作数Ra
|
操作数rB
|
|
用例1
|
Ox7C000000
|
123
|
123
|
0x02
|
|
用例2
|
0x7C000000
|
123
|
133
|
0x08
|
|
用例3
|
0x7C000000
|
123
|
113
|
0x04
|
cmpw指令功能测试的算法流程示意如图3所示。请补全流程图3中的执行操作。
【正确答案】
【答案解析】(1)刷新指令Cache(高速缓存)
(2)将res与测试用例表中的预期结果进行比较
(3)测试结果ret=1
根据cmpw指令功能测试的算法流程示意图,结合题干中的描述信息,可以得出该测试算法的流程如下:
a)初始化测试结果为正确;
b)从测试用例表中获取一个测试用例数据;
c)根据测试用例动态生成测试过程汇编代码;
d)由于该系统选用的处理器集成了多级Cache(高速缓存),并且指令缓存和数据缓存是分开的,执行指令功能测试前需要刷新指令Cache,以保证与内存中的测试代码一致;
e)执行测试过程,比较测试用例中的两个操作数,并返回比较结果;
f)将测试用例执行的结果与测试用例表中的预期结果进行比较,判断是否相等;
g)如果相等,继续从测试用例表中获取下一个测试用例数据,进行执行,直至全部执行完所有测试用例;
h)如果不相等,则置测试结果为故障;
i)返回测试结果。