一种以内升温方式检测时延故障的定温指令级自测试方法_3

文档序号:8380840阅读:来源:国知局
],但是它们会被映射到相同的cache页面上。如图4所示,测试程序中第一和第二的load指令都是将它们基址保存在相同的寄存器RlO中,而它们的偏移地址分别是0x0000和0xFC04。在直接相联cache中,这两条指令虽然访问不同的存储器页面却会对应到相同的cache页面,进而它们会导致cache miss。通过这种方式,无论指令load或指令store发生,它们对应的存储器页面都会在cache中缺失,这些页面将被加载并且替换原有的cache页面。
[0095]3、基于贪心的定温测试程序调度算法
[0096]基于贪心策略的调度算法被设计出来用于动态调整测试程序变形与它们的次序,以节省测试开销,并且保证测试温度在给定的范围内。算法的核心策略是“低开销的程序变形优先,升温高的程序模块优先”。具体而言,本算法会优先从低开销的程序变形中,选择可行模块。程序变形的开销包括测试时间和存储空间,由于指令级自测试方法是在线执行的,因此存储空间的开销要优先于测试时间开销。同时,本算法还会优先选择将处理器的温度加热到最高程序模块。这样,它就为低功耗的程序模块预留了更多的温度空间,这样可以迅速地为整个测试程序找到可行调度方案。
[0097]如图(5a)所示,基于贪心的定温测试程序调度算法具体为:
[0098]5.1)以测试温度区间的下界为初始温度;
[0099]5.2)根据低开销程序变形优先策略,从TH)开始搜索,根据初始温度计算TH)中未执行程序模块的终态温度;
[0100]5.3)根据所述终态温度判断TH)是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.4);
[0101]5.4)根据低开销程序变形优先策略,从TF2开始搜索,根据初始温度计算TF2中未执行程序模块的终态温度;
[0102]5.5)根据所述终态温度判断TF2是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块(FET),并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.6);
[0103]5.6)根据低开销程序变形优先策略,从TFl开始搜索,根据初始温度计算TFl中未执行程序模块的终态温度;
[0104]5.7)根据所述终态温度判断TFl是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.8);
[0105]5.8)根据低开销程序变形优先策略,从TF3开始搜索,根据初始温度计算TF3中未执行程序模块的终态温度;
[0106]5.9)根据所述终态温度判断TF3是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则终止。
[0107]如果无法在任何集合中搜索到可行模块,那么程序无法搜索到满足给定温度的可行程序调度。
[0108]如图(5c)所示,未执行程序模块的终态温度采用四阶runge-kutta算法(RK4)计算获得,具体为:
[0109]al)获得未执行程序模块i的测试时间time和功耗power ;
[0110]a2)根据初始温度计算未执行程序模块i在一个采样间隔interval后的终态温度Te ;
[0111]具体而言,终态温度Te采用runge-kutta算法通过求解P = C*dT/dt+T/R直接计算获得,其中,P在interval时间内的平均功耗,T是电路的温度,C和R分别是电路热容和热阻,而dT和dt分别是温度的微分和时间的微分。
[0112]a3)将终态温度Te设置成下一个采样周期的初始温度Ts ;
[0113]a4)重复步骤al)?a3)M次,得到最终的终态温度Te ;
[0114]其中,M为循环变量,M = time/interval。
[0115]如图(5b)所示,根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中具体为:
[0116]bl)初始化最高温度Temax等于首个可行模块的终态温度,最高温模块序号max等于该程序模块的序号i ;
[0117]b2)判断是否存在其它可行模块,若是,则选择另一可行模块j,执行步骤b3),若否,则执行步骤b4);
[0118]b3)判断可行模块j的终态温度是否大于最高温度Temax,若是,则将可行模块j的终态温度作为最高温度Temax,同时将序号max更新为j,返回步骤b2),若否,则直接返回步骤 b2);
[0119]b4)将最高温度Temax对应的可行模块加入到可行调度中,并将该可行模块标记为已执行程序模块。
[0120]以miniMIPS处理器的ALU单元为例,上述算法成功搜索到一组可行调度,确保实施定温测试,其中ALU单元的测试程序包括23个程序模块。根据工业报告数据,我们设定处理器高温范围是[105,110]。首先,采用平均功耗为2瓦的程序将芯片加热到105.02度,初始温度Ts也被设置成这个温度。然后,开始逐个搜索和执行程序模块。具体而言,它利用RK4函数首先逐个计算TH)中每个未被执行的程序模块的终态温度Te。当前ALU单元的23个程序模块都未被执行,因此需要将它们在TFO中的测试时间除以采样间隙,作为迭代调用RK4函数的次数,逐个计算出每个程序模块的终态温度Te,最后获得最高终态温度Te。不幸的是,当前TH)的最高终态温度仍然低于给定的高温区间,因此在TH)中不存在可行程序模块,能够保证测试温度在给定范围内。根据“低开销程序变形优先”的贪心策略,它将从TF2中搜索可行的程序模块。这时,搜索到6个程序模块,能够满足给定的温度要求。根据“高温度模块优先”的贪心策略,程序模块20由于能够将提高芯片温度最高,达到1.67度,因此被选中添加到最终的调度中。同时,它的终态温度106.69度被作为下一次调度选择时的初始温度Ts。在新的初始温度Ts下,算法在TFO中搜索到了多个可行调度。同样,根据“高温度模块优先”的贪心策略,选中了 TH)中程序模块18。虽然该模块导致了测试温度下降了 0.5度,达到106.19度,但是它不需要引入任何额外的测试开销,终态温度也满足给定的高温范围。继续上述步骤,能够快速搜索到一个优化后的可行调度,如图6所示。
[0121]在采用miniMIPS处理器的实验系统中,我们评估了原始指令级自测试程序,采用程序变形方式内升温的自测试程序在功耗、测试时间以及存储开销的实际数值。然后,将这些数据作为数据库,采用基于贪心的定温测试调度算法,搜索优化后的可行调度,确保测试温度在给定范围内,进而有效地测试高温条件下的时延故障。在实验系统中,处理器miniMIPS被插入一个基于直接映射的数据cache,然后实验系统采用90nm的工艺库进行综合,它的工作频率设置为10MHZ。本实验以miniMIPS处理器的ALU单元作为测试对象,它可以直接报告各种程序模块的测试时间和存储空间。然后,模拟过程产生模拟信息输入到功耗模拟的商业工具中,就可以得到程序模块的平均功耗。
[0122]如图7所示,这些程序变形显著地提高了测试程序的功耗。第一,与原始程序模块相比,采用循环展开变形的程序模块集合TFl平均提升了高达40.2%的功耗。由于这种程序变形去除了由于循环跳转导致停顿,因此流水线变得更加紧凑,最终增加了信号跳变的密度。第二,采用触发cache miss变形的程序模块集合TF3也平均提升了原始程序模块40%的功耗。这是因为cache通常占据了现代处理器的大部分功耗,频繁cache miss导致的cache刷新一定会导致庞大的功耗。第三,如果这两种方法同时工作,它们叠加作用将导致最高的功耗。如图7所示,采用两种变形的程序模块集合TF3通常导致原始程序模块的功耗翻倍。第四,不同程序模块的功耗变化较大,因此需要合适的调度算法实现定温测试。总而言之,程序变形可以显著地提升程序的功耗,通过运行程序加热处理器是可行的。
[0123]图8和图9分别显示了各种程序模块的存储空间开销和测试时间。第一,循环展开是一种昂贵的提升功耗的方法,因为它需要将程序模块复制N遍,其中N的值等于程序的循环次数。在图8中,采用循环展开程序变形的模块集合TFl和TF3,它们的存储空间线远高于其它集合的曲线。与循环展开程序变形相比,激活cache miss的程序变形在考虑存储开销时,就非常可取了。这种变形不会导致任何额外的存储空间开销,它的存储开销线TFO与原始程序的开销线TF2完全重合,同时采用循环展开程序变形的存储开销线TFl和TF3也是完全重复。这是因为这种程序变形仅仅改变了 load和store指令的偏移地址,但是并没有增加额外的指令。第二,激活cache miss变形会导致额外的测试时间开销,但是循环展开程序变形不仅不会增大测试时间,反而会减少测试时间。在图9中,TF2的测试时间线是最高的,而且测试时间的增长比例变化显著。这是因为这种程序变形需要额外的时间来刷新cache,各种程序模块的增长比例依赖与load和store指令的频率。例如,逻辑左移指令sllv (模块3)包含5条这种指令,它测试时间
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1