的缓存缺失率,最终检验则是检测采样的代码是否具有整个基准测试程序的行为特点,即是否具有代表性。虽然随机采样的方法最终得到的采样结果可以代表整个基准测试程序,但这种方法也存在明显的缺陷,首先是确定采样集时反复采样、验证非常耗时,其次所取得的采样集不一定是最小集合。统计采样?SMARTS[48](SimulationviaRigorousStatisticalSampling,通过严格统计采样进行的模拟)是一种新的基于统计的采样方法,它通过对变化差异进行测量从而使得采样出的代码能够反映出程序的变化,并采用统计的方法使得采样集为可以代表整个程序的最小采样集。为了使模拟器在运行采样代码前缓存、分支预测单元等部件处于正确的状态,SMARTS不仅仅对采样后的代码片断进行模拟,同时对采样代码片断之间的代码也进行模拟,只是对这两个阶段模拟的详细程度不同。SMARTS的一个采样样本通常包括大量的小的采样单元,每个小的采样单元可以小到只有1000条指令。SMARTS技术中,模拟过程包括功能模拟和详细模拟两个步骤。功能模拟主要为即将到来的详细模拟构建正确的体系结构状态,如缓存、变换索引缓冲(TLB)translationlookasidebuffer,亦有译成“旁路转换缓冲”,即存放虚拟地址到物理地址的转换结果的页表.等部件的内容;详细模拟阶段所有的体系结构的状态都将被模拟出来。为了加速功能模拟,陈(ShelleyChen)[32]提出了将功能模拟采用直接执行的方法。舍伍德(Sherwood)[49]提出了基于基本块采样的方法,将程序执行过程中基本块的执行频率记录下来,然后把基本块的执行频率乘以基本块中的指令条数作为结果存储在BBV(basicblockvector)中。接着对BBV向量降低维度,并计算向量间的欧拉距离。将距离近的向量作为一组,再从每组中选出一个向量作为代表,就形成了整个采样集。