simpoint算法介绍

simpoint

  • 是什么
    • 局部代表整体
      • simpoint试图用局部的代码段来代表整个程序。
  • 为什么
    • CPU性能模型自身限制导致
      • 模型的运行效率慢,运行大型的性能验证程序,如specint,运行时间按月计算;
  • 经典的simpoint流程
    • 输入
      • 特征信息
        • 可以理解为从整个程序抽象出来特征信息,用特征信息来代表整个程序;
        • 特征值(特征信息)BBV(basic block vector)
          • BB
            • basic block
              • 简单来说,basic block就是一段顺序执行的代码块,而且只有一个出口和入口;(等于就是按照跳转指令做划分,出现跳转指令就新化BB,leader pc地址相同的BB是一个BB)
              • 可以理解为程序执行的基本元素
          • BBV
            • 可以理解为一个向量,或者数组,代表BB+BB的某个特征
              • 例如下BBV:BB id和BB的执行指令数
        • 参数
          • BBV的大小:
            • 自己划分:可以把整个程序存到一个BBV里,也可以每隔多少个特定的值(指令数,BB数),划分BBV;
            • 一个BBV就是一个切片(代码段),BBV的大小就是切片的大小
    • simpoint算法(官方的simpoint算法)
      • 聚类
        • 就是对输入的所有BBV进行分类
        • 聚类算法
          • BBV降维
            • 对每一个BBV进行降维,默认降到15维
              • 就是从一个BBV中,取15个bb和bb对应的特征;
          • 随机选择K个随机点作为聚类中心的初始化
          • 把相似的BBV分到一类,相似的判断依据使用曼哈顿或者欧几里得距离
            • 曼哈顿距离的计算
              • 对BBV进行归一化处理,例如:BBV存的是bb和bb的次数,就是把这bb和bb的次数这两个数值进行归一化处理(可以消除奇异样本数据导致的不良影响)变为一个值,然后计算曼哈顿距离,也就是两个BBV各个值相减的绝对值的和;
              • 归一化
                • BBV通过将每个元素除以向量中所有元素的和来归一化;
            • 欧几里得距离:平方和的平方根
          • 聚类中心不断修正:更改为其集群中所有点的质心,(质心计算为簇中所有数据点的平均值)
            • 也就是类里面每多一个点,聚类中心就会修正一次;
        • k-means算法
          • 从1到最大的K值,重复上面的聚类过程,使用BIC(贝叶斯信息准则)对每个聚类的拟合进行评分,选择k值最小且满足在最佳得分90%以上的作为最终的聚类个数,也就是切片的个数;
      • 选择
        • 从每个聚类里选择一个最典型的BBV(切片)
        • 选择算法
          • 距离聚类中心最近的点,这个点也就是BBV,也就是切片;
      • 权重的计算
        • 最终选择的BBV(切片)所在的聚类占所有BBV的比重;
      • 参数
        • K值:聚类中类的最大个数
    • 输出
      • 能代表整个程序的局部代码段,也就是一部分BBV,也就是切片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值