CN104699578A - 一种以内升温方式检测时延故障的定温指令级自测试方法 - Google Patents
一种以内升温方式检测时延故障的定温指令级自测试方法 Download PDFInfo
- Publication number
- CN104699578A CN104699578A CN201510012121.2A CN201510012121A CN104699578A CN 104699578 A CN104699578 A CN 104699578A CN 201510012121 A CN201510012121 A CN 201510012121A CN 104699578 A CN104699578 A CN 104699578A
- Authority
- CN
- China
- Prior art keywords
- temperature
- module
- final state
- feasible
- test
- 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
Abstract
本发明涉及一种以内升温方式检测时延故障的定温指令级自测试方法,对处理器进行高温时延测试,包括以下步骤:获取原始指令级自测试程序模块;对原始指令级自测试程序模块进行循环展开的变形;对原始指令级自测试程序模块进行基于触发cache miss的变形;在设定的测试温度区间内,采用定温测试程序调度算法,获取可行调度;将处理器加热到测试温度区间的下界,根据可行调度,执行相应程序,针对时延故障实施内升温的定温测试。与现有技术相比,本发明具有能有效地测试高温条件下的时延故障、保证高的故障覆盖率、减小处理器损失等优点。
Description
技术领域
本发明涉及半导体工艺技术领域,尤其是涉及一种以内升温方式检测时延故障的定温指令级自测试方法,是一种VLSI故障容忍高温条件下时延故障的检测方法。
背景技术
高温因素一直是影响计算机系统可靠性的关键因素之一。计算机系统在正常工作温度下可正确地工作。但是,一旦温度升高,计算机系统中将出现大量无法理解的故障。即使整个系统的芯片都经过了严格的制造测试,这种问题依然普遍存在。这种与温度相关的问题主要来源于最坏时延故障,即高温条件下的时延故障。随着芯片温度的提高,电路中信号传输的时延也会显著地提高,因此高温条件会加剧芯片原本的时延。然而糟糕的是,由于当前芯片有着日益递增的性能要求,设计中预留给高温和其它因素的时间边界被严重地消减了。在这种情况下,高温导致电路时延超过芯片的固有时延的故障成为了一项计算机系统的普遍问题。这个问题需要被妥当地处理,尤其是高可靠性要求的计算机系统。但是,当前的方法检测这种问题存在缺陷,因此需要设计合适测试方法检测高温条件下的时延故障。
当前的制造测试并不适用于测试高温条件下的时延故障。首先,针对正常的时延故障,制造测试自身就有缺陷。这种方法需要在被测电路上插入辅助测试电路(Design for Test,DFT),这样使得被测电路中的故障能够更容易被激活或被观测。但是,这种测试要求改变了原来的电路,会引入一些在正常工作中完全不会出现的向量(被称为非功能向量)。对于时延故障,制造测试将会引入的这种非功能向量比例极其高。这样,很多工作模式下能正常工作的芯片在制造测试过程中却被误认为是错误芯片。这种问题被称为过度测试问题,它会对芯片工业带来难以容忍的经济损失。其次,采用制造测试的方法检测高温条件下的时延故障是非常危险的。一方面,当温度提高后制造测试会加剧已经存在的过量测试问题。这是因为非功能向 量能够轻易地激活那些不可测的长通路,而当温度升高后,这部分故障首先被观测到。另一方面,当前的制造测试亟需降低测试温度,而不是测试高温条件下的时延故障。在制造测试中,它的信号跳变数目是正常工作模式下的数倍,这些不正常的信号跳变会迅速加热芯片,甚至直接烧毁芯片。因此,制造测试并不适用于测试高温条件下的时延故障。
老化测试常常用于测试芯片在高温条件下是否正常工作,但是它同样具有一些致命的问题。在老化测试中,被测芯片被烤炉从外部加热直到它到达给定的温度。然后,这种温度下,老化测试运行正常程序数个小时或者数天,藉此可以测试高温条件下芯片的缺陷。但是,老化测试会损坏被测芯片。由于长时间的烘烤,这种方法会损坏绝缘,进而降低芯片的寿命。更糟糕的是,老化测试不能有效地测试高温条件下的时延缺陷。首先,由于绝缘层的因素,老化测试可能加热芯片的表层,而并没有有效地加热芯片的内部电路。更进一步,正常的功能程序并不是专门针对时延故障,它们的故障覆盖率不高,难以完备地测试芯片。
指令级自测试方法是一种新型的测试技术,它通过运行普通的功能程序测试处理器或嵌入式系统,它最显著的特征是极高的故障覆盖率,堪比采用全扫描结构的制造测试。这种方法曾经被用于测试基于跳变故障模型的时延测试,并且达到了94%以上的故障覆盖率。同时,它也能够用于基于路径故障模型的时延测试,同样达到了较高的故障覆盖率。以往的指令级自测试方法仅考虑过低功耗或低温度,以减少测试开销。但是,没有工作考虑采用指令级自测试方法,检测高温条件下的时延故障。为了有效地检测最糟糕情况下的时延故障,指令级自测试方法需要运行在系统允许的最高温度范围内,即能够在高温范围内开展定温测试。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种能有效地测试高温条件下的时延故障、保证高的故障覆盖率、减小处理器损失的以内升温方式检测时延故障的定温指令级自测试方法。
本发明的目的可以通过以下技术方案来实现:
一种以内升温方式检测时延故障的定温指令级自测试方法,对处理器进行高温时延测试,包括以下步骤:
1)获取原始指令级自测试程序模块,形成未变形原始程序模块集合TF0;
2)对原始指令级自测试程序模块进行循环展开的变形;
3)对原始指令级自测试程序模块进行基于触发cache miss的变形;
4)根据步骤2)和3),形成基于循环展开变形的程序模块集合TF1、基于触发cache miss变形的程序模块集合TF2和同时采用循环展开和触发cache miss变形的程序模块集合TF3;
5)在设定的测试温度区间内,采用定温测试程序调度算法,从所述TF0、TF1、TF2、TF3中获取可行调度;
6)将处理器加热到测试温度区间的下界,根据可行调度,执行相应程序,针对时延故障实施内升温的定温测试。
所述步骤2)中,循环展开的变形具体为:
2.1)删除程序模块中循环语句的检测器;
2.2)提取循环次数,并将其作为变量N的值;
2.3)检查变量N是否大于0,若是,则进入步骤2.4),若否,则进入步骤2.6);
2.4)根据N的值,设置程序模块中load指令和store指令的偏移地址,并输出本次循环对应的指令序列;
2.5)变量N自减1,返回步骤2.3);
2.6)结束。
所述步骤3)中,进行基于触发cache miss的变形时,判断处理器的cache结构,根据所述cache结构触发原始指令级自测试程序模块中的cache miss。
所述cache结构包括直接映射cache、全相联cache或组相联cache。
所述步骤5)中,定温测试程序调度算法是基于贪心策略,从TF0、TF1、TF2、TF3中搜索满足设定的测试温度区间的测试程序调度方案。
所述贪心策略包括低开销程序变形优先策略和高温度模块优先策略。
所述定温测试程序调度算法具体为:
5.1)以测试温度区间的下界为初始温度;
5.2)根据低开销程序变形优先策略,从TF0开始搜索,根据初始温度计算TF0中未执行程序模块的终态温度;
5.3)根据所述终态温度判断TF0是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以 该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.4);
5.4)根据低开销程序变形优先策略,从TF2开始搜索,根据初始温度计算TF2中未执行程序模块的终态温度;
5.5)根据所述终态温度判断TF2是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.6);
5.6)根据低开销程序变形优先策略,从TF1开始搜索,根据初始温度计算TF1中未执行程序模块的终态温度;
5.7)根据所述终态温度判断TF1是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.8);
5.8)根据低开销程序变形优先策略,从TF3开始搜索,根据初始温度计算TF3中未执行程序模块的终态温度;
5.9)根据所述终态温度判断TF3是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则终止。
所述未执行程序模块的终态温度采用四阶runge-kutta算法计算获得。
所述未执行程序模块的终态温度的具体计算过程为:
a1)获得未执行程序模块i的测试时间time和功耗power;
a2)根据初始温度计算未执行程序模块i在一个采样间隔interval后的终态温度Te;
a3)将终态温度Te设置成下一个采样周期的初始温度Ts;
a4)重复步骤a1)~a3)M次,得到最终的终态温度Te;
其中,M为循环变量,M=time/interval。
所述根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中具体为:
b1)初始化最高温度Temax等于首个可行模块的终态温度,最高温模块序号 max等于该程序模块的序号i;
b2)判断是否存在其它可行模块,若是,则选择另一可行模块j,执行步骤b3),若否,则执行步骤b4);
b3)判断可行模块j的终态温度是否大于最高温度Temax,若是,则将可行模块j的终态温度作为最高温度Temax,同时将序号max更新为j,返回步骤b2),若否,则直接返回步骤b2);
b4)将最高温度Temax对应的可行模块加入到可行调度中,并将该可行模块标记为已执行程序模块。
与现有技术相比,本发明具有以下优点:
1、本发明采用程序变形方式,实现处理器芯片的内升温,确保了被测电路处于高温条件下;
2、自测试程序在功耗、测试时间以及存储开销的实际数值为基础,采用基于贪心的定温测试调度算法,搜索优化后的可行调度精简测试时间和存储开销,同时确保测试温度在给定范围内,进而有效地测试高温条件下的时延故障;
3、能够保证高的故障覆盖率,并且不会导致过量测试问题;
4、与老化测试相比,它避免了长时间烘烤对芯片绝缘层的损伤,进而避免芯片寿命的损失。
附图说明
图1是针对时延故障的指令级自测试方法示意图;
其中,(1a)为指令级自测试程序的时延测试框架,(1b)基于SLLV指令的程序模块示意图;
图2是本发明测试方法的流程示意图;
图3是测试程序模块循环展开的原理示意图;
其中,(3a)为循环展开的流程示意图,(3b)为循环展开前的程序模块,(3c)为循环展开后的程序模块;
图4是频繁Cache缺失的程序模块变形示意图;
图5是基于贪心的定温调度算法原理示意图;
其中,(5a)为定温调度算法流程示意图,(5b)为选取终态温度最高的可行模块的流程示意图,(5c)为终态温度计算流程示意图;
图6是ALU模块上最优测试程序调度的示意图;
图7是ALU模块上程序模块变形后测试程序片段的功耗图;
图8是ALU模块上程序模块变形后测试程序片段的时间开销图;
图9是ALU模块上程序模块变形后测试程序片段的存储开销图;
图10是原始测试程序、高功耗测试程序、定温测试程序的测试温度图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
一、指令级自测试方法
指令级自测试方法是一种非常有前景的处理器测试方法,它采用正常程序在功能模式下可以测试固定型和时延两类故障。当测试时延故障时,指令级自测试程序的执行过程如图1所示,图中信号线①表示下载测试代码和测试数据,②表示执行测试程序,③表示上传测试响应。在这个例子中,时延故障的测试向量对首先通过四条load指令,载入到四个寄存器中。然后,它利用add指令将寄存器R1和R2中的内容施加到被测电路上,初始化被测电路,接着它利用and指令将寄存器R3和R4中的内容施加到被测电路上,借助被测电路输入的切换检测时延故障。最后,测试结果被保存在寄存器R6中,通过store指令测试响应被传出处理器用于观测。通过这种方式,指令级自测试方法运用指令模块成功地测试了时延故障。
二、以内升温方式检测时延故障的定温指令级自测试方法
如图2所示,本实施例提供一种以内升温方式检测时延故障的定温指令级自测试方法,对处理器进行高温时延测试,包括步骤:
Step1:获取原始指令级自测试程序模块,形成未变形原始程序模块集合TF0;
Step2:对原始指令级自测试程序模块进行循环展开的变形;
Step3:对原始指令级自测试程序模块进行基于触发cache miss的变形;
Step4:根据步骤Step2和Step3,形成基于循环展开变形的程序模块集合TF1、基于触发cache miss变形的程序模块集合TF2和同时采用循环展开和触发cache miss变形的程序模块集合TF3;
Step5:在设定的测试温度区间内,采用定温测试程序调度算法,从所述TF0、 TF1、TF2、TF3中获取可行调度;
Step6:将处理器加热到测试温度区间的下界,根据可行调度,执行相应程序,针对时延故障实施内升温的定温测试。
各集合TF0、TF1、TF2、TF3中保存有各程序模块及其相应的存储空间、测试时间和功耗等信息。
1、测试程序模块循环展开
程序模块的循环展开是一种有效提升功耗的程序模块变形。通常,每个循环包含一个检测器,它用于判定循环是否继续执行。这种检测器不可避免地在流水线中引入停顿。假使程序中所有的循环都被展开,那么程序就不再需要检测器,也就不会引入额外的停顿。这样,展开程序中所有的循环能够使得程序的流水线更加紧凑,进而提高信号跳变的密度。因为循环操作常常覆盖了程序整个执行阶段的大部分,循环展开将极大地增大程序的功耗。
如图3所示,循环展开的变形具体为:
2.1)删除程序模块中循环语句的检测器;
2.2)提取循环次数,并将其作为变量N的值;
2.3)检查变量N是否大于0,若是,则进入步骤2.4),若否,则进入步骤2.6);
2.4)根据N的值,设置程序模块中load指令和store指令的偏移地址,让它们指向正确的存储位置,并输出本次循环对应的指令序列;
2.5)变量N自减1,返回步骤2.3);
2.6)结束。
例如,复制指令“sllv”的程序模块64次,进而展开了它的循环,新的输出程序总共需要704字的存储开销,包括256字的数据。
2、测试程序的频繁cache miss变形
触发程序中的cache miss是另外一项提升当代处理器功耗的有效程序变形。在当代处理器中,cache设备常常占据了大量的芯片空间,一旦它的存储页面发生更新,那将导致大量的功耗消耗。进行基于触发cache miss的变形时,判断处理器的cache结构,根据所述cache结构触发原始指令级自测试程序模块中的cache miss。cache结构包括直接映射cache、全相联cache或组相联cache。
在直接映射cache中,首先修改自测试程序,第奇数条load/store指令从存储器中的页面A读取或写回数据,而第偶数条load/store指令从存储器中的页面B读 取或写回数据,但是页面A和B将被映射在同一个cache页面中,最后将测试数据存放在对应的页面A或B上。
在全相联cache中,首先准备存储器页面组,它们的数目比cache页面数目多一个。接着,通过部分展开程序模块中的循环或者插入额外的load/store指令修改程序模块,使得load/store指令数目正好是存储器页面组中页面数目的倍数。然后,将程序模块中load/store指令按序从对应的存储器页面读取或写回数据。最后将测试数据存放在对应的页面A或B上。
在组相联cache中,首先准备存储器页面组,它们都会映射到cache中同一组页面上,数目比cache中每组页面的数目多一个。接着,通过部分展开程序模块中的循环或者插入额外的load/store指令修改程序模块,使得load/store指令数目正好是存储器页面组中页面数目的倍数。然后,将程序模块中load/store指令按序从对应的存储器页面读取或写回数据。最后将测试数据存放在对应的页面A或B上。
如图4所示,为了触发cache miss,测试程序需要根据如下三种情况,设置其中store指令(或者load指令)的页面标志。假设cache有n个页面,表示为(C[0]…C[n-1]);这个存储器m个页面,表示为(M[0]…M[m-1]);先进先出算法用于替换cache页面。此外,假设组相联cache含有s个组,每个组有k个页面(s*k=n)。首先,在直接映像的cache中,第t个存储器页面(M[t])将被直接映射到第(t mod n)个cache页面,其中mod是求余数运算符。如图4中表达式(1)所示,假使存储器页面M[t]的标志不等于cache页面C[(t mod n)]的标志,cache miss就发生了,同时存储器页面M[t]被载入,替换cache原来的页面。第二,在全相联的cache中,存储器的页面可能被映射到cache页面的任何位置。因此,如图4中表达式(2)所示,只有存储器页面M[t]的标志不同于cache中所有页面的标志时,cache miss就发生了,同时存储器页面被载入,替换cache中最先被加载进入的页面。第三,组相联cache将直接映射cache和全相联cache结合起来,存储器页面M[t]将被映射到第p个cache组中(p=(t/k)mod s)。如图4中表达式(3)所示,只有当存储器页面M[t]的标志不同于第p个cache组中所有页面[p*k,p*k+k-1]的标志时,cache miss就发生了,同时存储器页面被载入,替换第p个cache组中最先被加载进入的页面。
根据上述情况,测试程序只需要少量修改,它们就可以频繁地触发cache miss,进而导致大量的功耗。假设cache采用基于直接映射方式。为了触发cache miss, 变形后的测试程序只需要确保第偶数个load/store指令访问存储器页面M[i],而第奇数个load/store指令访问另外的存储器页面M[j],但是它们会被映射到相同的cache页面上。如图4所示,测试程序中第一和第二的load指令都是将它们基址保存在相同的寄存器R10中,而它们的偏移地址分别是0x0000和0xFC04。在直接相联cache中,这两条指令虽然访问不同的存储器页面却会对应到相同的cache页面,进而它们会导致cache miss。通过这种方式,无论指令load或指令store发生,它们对应的存储器页面都会在cache中缺失,这些页面将被加载并且替换原有的cache页面。
3、基于贪心的定温测试程序调度算法
基于贪心策略的调度算法被设计出来用于动态调整测试程序变形与它们的次序,以节省测试开销,并且保证测试温度在给定的范围内。算法的核心策略是“低开销的程序变形优先,升温高的程序模块优先”。具体而言,本算法会优先从低开销的程序变形中,选择可行模块。程序变形的开销包括测试时间和存储空间,由于指令级自测试方法是在线执行的,因此存储空间的开销要优先于测试时间开销。同时,本算法还会优先选择将处理器的温度加热到最高程序模块。这样,它就为低功耗的程序模块预留了更多的温度空间,这样可以迅速地为整个测试程序找到可行调度方案。
如图(5a)所示,基于贪心的定温测试程序调度算法具体为:
5.1)以测试温度区间的下界为初始温度;
5.2)根据低开销程序变形优先策略,从TF0开始搜索,根据初始温度计算TF0中未执行程序模块的终态温度;
5.3)根据所述终态温度判断TF0是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.4);
5.4)根据低开销程序变形优先策略,从TF2开始搜索,根据初始温度计算TF2中未执行程序模块的终态温度;
5.5)根据所述终态温度判断TF2是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块(FET),并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度 中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.6);
5.6)根据低开销程序变形优先策略,从TF1开始搜索,根据初始温度计算TF1中未执行程序模块的终态温度;
5.7)根据所述终态温度判断TF1是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.8);
5.8)根据低开销程序变形优先策略,从TF3开始搜索,根据初始温度计算TF3中未执行程序模块的终态温度;
5.9)根据所述终态温度判断TF3是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则终止。
如果无法在任何集合中搜索到可行模块,那么程序无法搜索到满足给定温度的可行程序调度。
如图(5c)所示,未执行程序模块的终态温度采用四阶runge-kutta算法(RK4)计算获得,具体为:
a1)获得未执行程序模块i的测试时间time和功耗power;
a2)根据初始温度计算未执行程序模块i在一个采样间隔interval后的终态温度Te;
具体而言,终态温度Te采用runge-kutta算法通过求解P=C*dT/dt+T/R直接计算获得,其中,P在interval时间内的平均功耗,T是电路的温度,C和R分别是电路热容和热阻,而dT和dt分别是温度的微分和时间的微分。
a3)将终态温度Te设置成下一个采样周期的初始温度Ts;
a4)重复步骤a1)~a3)M次,得到最终的终态温度Te;
其中,M为循环变量,M=time/interval。
如图(5b)所示,根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中具体为:
b1)初始化最高温度Temax等于首个可行模块的终态温度,最高温模块序号max等于该程序模块的序号i;
b2)判断是否存在其它可行模块,若是,则选择另一可行模块j,执行步骤b3),若否,则执行步骤b4);
b3)判断可行模块j的终态温度是否大于最高温度Temax,若是,则将可行模块j的终态温度作为最高温度Temax,同时将序号max更新为j,返回步骤b2),若否,则直接返回步骤b2);
b4)将最高温度Temax对应的可行模块加入到可行调度中,并将该可行模块标记为已执行程序模块。
以miniMIPS处理器的ALU单元为例,上述算法成功搜索到一组可行调度,确保实施定温测试,其中ALU单元的测试程序包括23个程序模块。根据工业报告数据,我们设定处理器高温范围是[105,110]。首先,采用平均功耗为2瓦的程序将芯片加热到105.02度,初始温度Ts也被设置成这个温度。然后,开始逐个搜索和执行程序模块。具体而言,它利用RK4函数首先逐个计算TF0中每个未被执行的程序模块的终态温度Te。当前ALU单元的23个程序模块都未被执行,因此需要将它们在TF0中的测试时间除以采样间隙,作为迭代调用RK4函数的次数,逐个计算出每个程序模块的终态温度Te,最后获得最高终态温度Te。不幸的是,当前TF0的最高终态温度仍然低于给定的高温区间,因此在TF0中不存在可行程序模块,能够保证测试温度在给定范围内。根据“低开销程序变形优先”的贪心策略,它将从TF2中搜索可行的程序模块。这时,搜索到6个程序模块,能够满足给定的温度要求。根据“高温度模块优先”的贪心策略,程序模块20由于能够将提高芯片温度最高,达到1.67度,因此被选中添加到最终的调度中。同时,它的终态温度106.69度被作为下一次调度选择时的初始温度Ts。在新的初始温度Ts下,算法在TF0中搜索到了多个可行调度。同样,根据“高温度模块优先”的贪心策略,选中了TF0中程序模块18。虽然该模块导致了测试温度下降了0.5度,达到106.19度,但是它不需要引入任何额外的测试开销,终态温度也满足给定的高温范围。继续上述步骤,能够快速搜索到一个优化后的可行调度,如图6所示。
在采用miniMIPS处理器的实验系统中,我们评估了原始指令级自测试程序,采用程序变形方式内升温的自测试程序在功耗、测试时间以及存储开销的实际数值。然后,将这些数据作为数据库,采用基于贪心的定温测试调度算法,搜索优化后的可行调度,确保测试温度在给定范围内,进而有效地测试高温条件下的时延故障。在实验系统中,处理器miniMIPS被插入一个基于直接映射的数据cache,然 后实验系统采用90nm的工艺库进行综合,它的工作频率设置为10MHZ。本实验以miniMIPS处理器的ALU单元作为测试对象,它可以直接报告各种程序模块的测试时间和存储空间。然后,模拟过程产生模拟信息输入到功耗模拟的商业工具中,就可以得到程序模块的平均功耗。
如图7所示,这些程序变形显著地提高了测试程序的功耗。第一,与原始程序模块相比,采用循环展开变形的程序模块集合TF1平均提升了高达40.2%的功耗。由于这种程序变形去除了由于循环跳转导致停顿,因此流水线变得更加紧凑,最终增加了信号跳变的密度。第二,采用触发cache miss变形的程序模块集合TF3也平均提升了原始程序模块40%的功耗。这是因为cache通常占据了现代处理器的大部分功耗,频繁cache miss导致的cache刷新一定会导致庞大的功耗。第三,如果这两种方法同时工作,它们叠加作用将导致最高的功耗。如图7所示,采用两种变形的程序模块集合TF3通常导致原始程序模块的功耗翻倍。第四,不同程序模块的功耗变化较大,因此需要合适的调度算法实现定温测试。总而言之,程序变形可以显著地提升程序的功耗,通过运行程序加热处理器是可行的。
图8和图9分别显示了各种程序模块的存储空间开销和测试时间。第一,循环展开是一种昂贵的提升功耗的方法,因为它需要将程序模块复制N遍,其中N的值等于程序的循环次数。在图8中,采用循环展开程序变形的模块集合TF1和TF3,它们的存储空间线远高于其它集合的曲线。与循环展开程序变形相比,激活cache miss的程序变形在考虑存储开销时,就非常可取了。这种变形不会导致任何额外的存储空间开销,它的存储开销线TF0与原始程序的开销线TF2完全重合,同时采用循环展开程序变形的存储开销线TF1和TF3也是完全重复。这是因为这种程序变形仅仅改变了load和store指令的偏移地址,但是并没有增加额外的指令。第二,激活cache miss变形会导致额外的测试时间开销,但是循环展开程序变形不仅不会增大测试时间,反而会减少测试时间。在图9中,TF2的测试时间线是最高的,而且测试时间的增长比例变化显著。这是因为这种程序变形需要额外的时间来刷新cache,各种程序模块的增长比例依赖与load和store指令的频率。例如,逻辑左移指令sllv(模块3)包含5条这种指令,它测试时间的增长比例就高于指令mfhi程序模块的比率,因为后者仅包含3条这种指令。在图9中,单纯循环展开TF1的测试时间线最低的。这是因为循环展开移除循环中的检测器,而且让流水线更加紧凑,因此它可以显著地减少测试时间。更进一步,由于TF1减少测试时间非常显著, 因此即使两种程序变形叠加(TF3),它们的测试时间依然低于原始程序模块的测试时间。总而言之,在合理的开销下,指令级自测试程序可以被变形成为功耗密集型程序。
本发明中的调度算法能够迅速搜索到可行的程序模块序列,保证测试温度保持在给定的高温范围内,成功实施定温的指令级自测试方法。图10给出了本算法的温度曲线,同时在室温条件下直接执行原始测试程序,在105.02度的初始温度下执行TF3中功耗密集程序,以及将本算法获得可行调度的功耗曲线直接载入温度模拟工具Hotspot,这三种情况下的温度曲线被作为参考。第一,本算法的温度曲线完全在给定的范围内[105,110],而且大多数程序模块的温度只是轻微地高于105度。本算法仅仅保证了温度下界,避免了采用高代价的程序变形,这意味着它找到一种优化后的程序调度。第二,参考1的温度曲线也出现了上升,但是它远小于给定的高温范围。这意味着原始程序无法检测最糟糕条件下的时延故障。第三,参考2的温度曲线常常超过了给定的温度范围。采用功耗密集的测试程序直接测试处理器非常危险,它们的测试温度有待控制。这是因为测试温度太高,可能在测试阶段烧毁处理器。第四,参考3的温度曲线几乎与本算法的温度曲线重合,这说明本算法计算温度非常准确,几乎等于hotspot的结果了。
最后,本算法也非常适合求解这类问题。一方面,即便RK4函数非常费时(平均0.01秒/次),本算法也仅花费8.484秒,就为ALU单元搜索到了定温测试的可行调度。这是因为本算法仅采用了两种非常简单的规则用于获取调度。更进一步,“高温程序模块优先”为下一次调度选择预留大量的空间,简化了下一次调度,进而加速了获取可行调度的计算过程。另一方面,根据“低开销变形优先”,算法通常在TF0和TF2中选择程序模块,如图7所示,这样避免了引入大量的存储开销。总而言之,本算法总计需要原始程序60.6%的额外存储空间,而功耗密集程序模块需要118%的额外存储空间。
由于计算机系统通常在高温条件下工作不稳定,主要原因是现代制造测试无法有效地测试高温条件下最糟糕的时延故障。而在高可靠性要求的计算机系统,这种不稳定常常导致灾难性的后果,造成难以弥补的损失。在高温条件下,恶化的时延缺陷是一项导致计算机系统高温不稳定的关键因素,然而现有的测试方法都无法有效地解决这种问题,本发明能够有效地高温条件下的时延故障,在高可靠性要求的计算机系统中有广泛的应用前景。
Claims (10)
1.一种以内升温方式检测时延故障的定温指令级自测试方法,对处理器进行高温时延测试,其特征在于,包括以下步骤:
1)获取原始指令级自测试程序模块,形成未变形原始程序模块集合TF0;
2)对原始指令级自测试程序模块进行循环展开的变形;
3)对原始指令级自测试程序模块进行基于触发cache miss的变形;
4)根据步骤2)和3),形成基于循环展开变形的程序模块集合TF1、基于触发cache miss变形的程序模块集合TF2和同时采用循环展开和触发cache miss变形的程序模块集合TF3;
5)在设定的测试温度区间内,采用定温测试程序调度算法,从所述TF0、TF1、TF2、TF3中获取可行调度;
6)将处理器加热到测试温度区间的下界,根据可行调度,执行相应程序,针对时延故障实施内升温的定温测试。
2.根据权利要求1所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述步骤2)中,循环展开的变形具体为:
2.1)删除程序模块中循环语句的检测器;
2.2)提取循环次数,并将其作为变量N的值;
2.3)检查变量N是否大于0,若是,则进入步骤2.4),若否,则进入步骤2.6);
2.4)根据N的值,设置程序模块中load指令和store指令的偏移地址,并输出本次循环对应的指令序列;
2.5)变量N自减1,返回步骤2.3);
2.6)结束。
3.根据权利要求1所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述步骤3)中,进行基于触发cache miss的变形时,判断处理器的cache结构,根据所述cache结构触发原始指令级自测试程序模块中的cachemiss。
4.根据权利要求3所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述cache结构包括直接映射cache、全相联cache或组相联cache。
5.根据权利要求1所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述步骤5)中,定温测试程序调度算法是基于贪心策略,从TF0、TF1、TF2、TF3中搜索满足设定的测试温度区间的测试程序调度方案。
6.根据权利要求5所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述贪心策略包括低开销程序变形优先策略和高温度模块优先策略。
7.根据权利要求6所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述定温测试程序调度算法具体为:
5.1)以测试温度区间的下界为初始温度;
5.2)根据低开销程序变形优先策略,从TF0开始搜索,根据初始温度计算TF0中未执行程序模块的终态温度;
5.3)根据所述终态温度判断TF0是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.4);
5.4)根据低开销程序变形优先策略,从TF2开始搜索,根据初始温度计算TF2中未执行程序模块的终态温度;
5.5)根据所述终态温度判断TF2是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.6);
5.6)根据低开销程序变形优先策略,从TF1开始搜索,根据初始温度计算TF1中未执行程序模块的终态温度;
5.7)根据所述终态温度判断TF1是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则执行步骤5.8);
5.8)根据低开销程序变形优先策略,从TF3开始搜索,根据初始温度计算TF3中未执行程序模块的终态温度;
5.9)根据所述终态温度判断TF3是否存在满足设定的测试温度区间的程序模块,若是,则将满足设定的测试温度区间的程序模块作为可行模块,并根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中,并以该终态温度作为初始温度,返回步骤5.2),若否,则终止。
8.根据权利要求7所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述未执行程序模块的终态温度采用四阶runge-kutta算法计算获得。
9.根据权利要求8所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述未执行程序模块的终态温度的具体计算过程为:
a1)获得未执行程序模块i的测试时间time和功耗power;
a2)根据初始温度计算未执行程序模块i在一个采样间隔interval后的终态温度Te;
a3)将终态温度Te设置成下一个采样周期的初始温度Ts;
a4)重复步骤a1)~a3)M次,得到最终的终态温度Te;
其中,M为循环变量,M=time/interval。
10.根据权利要求7所述的以内升温方式检测时延故障的定温指令级自测试方法,其特征在于,所述根据高温度模块优先策略,从所述可行模块中选取终态温度最高的一个加入可行调度中具体为:
b1)初始化最高温度Temax等于首个可行模块的终态温度,最高温模块序号max等于该程序模块的序号i;
b2)判断是否存在其它可行模块,若是,则选择另一可行模块j,执行步骤b3),若否,则执行步骤b4);
b3)判断可行模块j的终态温度是否大于最高温度Temax,若是,则将可行模块j的终态温度作为最高温度Temax,同时将序号max更新为j,返回步骤b2),若否,则直接返回步骤b2);
b4)将最高温度Temax对应的可行模块加入到可行调度中,并将该可行模块标记为已执行程序模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510012121.2A CN104699578B (zh) | 2015-01-09 | 2015-01-09 | 一种以内升温方式检测时延故障的定温指令级自测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510012121.2A CN104699578B (zh) | 2015-01-09 | 2015-01-09 | 一种以内升温方式检测时延故障的定温指令级自测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699578A true CN104699578A (zh) | 2015-06-10 |
CN104699578B CN104699578B (zh) | 2017-12-26 |
Family
ID=53346736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510012121.2A Expired - Fee Related CN104699578B (zh) | 2015-01-09 | 2015-01-09 | 一种以内升温方式检测时延故障的定温指令级自测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699578B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015160A (zh) * | 2019-05-31 | 2020-12-01 | 北京新能源汽车股份有限公司 | 一种故障温度确定方法及装置 |
CN113075529A (zh) * | 2021-03-23 | 2021-07-06 | 北京灵汐科技有限公司 | 芯片老化测试方法与装置、存储介质、测试设备 |
CN113205506A (zh) * | 2021-05-17 | 2021-08-03 | 上海交通大学 | 一种电力设备全空间信息三维重构方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032268A (en) * | 1987-09-04 | 2000-02-29 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
CN1361428A (zh) * | 2000-12-25 | 2002-07-31 | 中国科学院计算技术研究所 | 电路时延测试方法 |
CN1450617A (zh) * | 2003-05-21 | 2003-10-22 | 中国科学院计算技术研究所 | 基于电路静态时延特性的冒险检测和消除方法 |
US7174543B2 (en) * | 2001-08-29 | 2007-02-06 | Analog Devices, Inc. | High-speed program tracing |
CN101226567A (zh) * | 2008-02-02 | 2008-07-23 | 中国科学院计算技术研究所 | 一种可靠片上总线的设计方法和系统及其工作方法 |
-
2015
- 2015-01-09 CN CN201510012121.2A patent/CN104699578B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032268A (en) * | 1987-09-04 | 2000-02-29 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
CN1361428A (zh) * | 2000-12-25 | 2002-07-31 | 中国科学院计算技术研究所 | 电路时延测试方法 |
US7174543B2 (en) * | 2001-08-29 | 2007-02-06 | Analog Devices, Inc. | High-speed program tracing |
CN1450617A (zh) * | 2003-05-21 | 2003-10-22 | 中国科学院计算技术研究所 | 基于电路静态时延特性的冒险检测和消除方法 |
CN101226567A (zh) * | 2008-02-02 | 2008-07-23 | 中国科学院计算技术研究所 | 一种可靠片上总线的设计方法和系统及其工作方法 |
Non-Patent Citations (1)
Title |
---|
李华伟: "考虑时延偏差的数字电路时延测试综述", 《集成技术》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015160A (zh) * | 2019-05-31 | 2020-12-01 | 北京新能源汽车股份有限公司 | 一种故障温度确定方法及装置 |
CN113075529A (zh) * | 2021-03-23 | 2021-07-06 | 北京灵汐科技有限公司 | 芯片老化测试方法与装置、存储介质、测试设备 |
CN113205506A (zh) * | 2021-05-17 | 2021-08-03 | 上海交通大学 | 一种电力设备全空间信息三维重构方法 |
CN113205506B (zh) * | 2021-05-17 | 2022-12-27 | 上海交通大学 | 一种电力设备全空间信息三维重构方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104699578B (zh) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8122312B2 (en) | Internally controlling and enhancing logic built-in self test in a multiple core microprocessor | |
CN101788644B (zh) | 具有多个同构ip核的片上系统芯片测试装置和方法 | |
CN105760268B (zh) | 一种片上随机存取存储器内建自测试方法和装置 | |
US20080052488A1 (en) | Method for a Hash Table Lookup and Processor Cache | |
CN102841857B (zh) | 缓存预测执行的处理器与装置及方法 | |
US8612813B2 (en) | Circuit and method for efficient memory repair | |
CN104699578A (zh) | 一种以内升温方式检测时延故障的定温指令级自测试方法 | |
CN102073009B (zh) | 一种基于片上闪存的系统芯片jtag调试控制方法 | |
US8571847B2 (en) | Efficiency of static core turn-off in a system-on-a-chip with variation | |
Zhang et al. | Temperature-aware software-based self-testing for delay faults | |
CN103488563A (zh) | 并行程序的数据竞争检测方法、装置及多核处理系统 | |
Pomeranz et al. | A measure of quality for n-detection test sets | |
CN103473160A (zh) | 测试装置、cpu芯片及缓存的测试方法 | |
US7206979B1 (en) | Method and apparatus for at-speed diagnostics of embedded memories | |
US7213187B2 (en) | Digital logic test method to systematically approach functional coverage completely and related apparatus and system | |
CN104063307A (zh) | 一种软件测试方法和系统 | |
Zhang et al. | BMC-Based Temperature-Aware SBST for Worst-Case Delay Fault Testing Under High Temperature | |
Bernardi et al. | A DMA and CACHE-based stress schema for burn-in of automotive microcontroller | |
US7487421B2 (en) | Emulation cache access for tag view reads | |
CN112325920B (zh) | 一种传感器芯片标定测试调度方法及系统 | |
US11156663B2 (en) | Generating a test sequence of code based on a directed sequence of code and randomly selected instructions | |
CN214173417U (zh) | 一种传感器芯片标定测试调度装置 | |
CN104134464A (zh) | 地址线测试系统及方法 | |
CN101000640A (zh) | 在ic验证中描述pci接口配置流的方法 | |
CN109145338B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171226 Termination date: 20210109 |
|
CF01 | Termination of patent right due to non-payment of annual fee |