分支预测器中的逆向工程历史模式长度

时间:2016-08-09 01:17:00

标签: reverse-engineering branch-prediction

我试图在计算机处理器的分支预测器中找到历史模式的长度。我生成了可变长度的位数组,并且if条件基于位的值。然后,我将绘制函数的不同执行的运行时间,并在图中搜索拐点。但是我没有在图表中看到任何这样的观点。我究竟做错了什么?任何的想法?

这是我的代码:

vector<int> randomArr(int n)
{
    vector<int> arr (n);

  for ( int i=0; i <n; i++){
      arr[i] = rand() % 2;
  }

 return arr;
}

int branchy(vector<int> & arr){

      int a = 0 ;
      int b = 0 ;

      for ( int i = 0 ; i < arr.size() ; i++ ) {

          if ( arr[i] == 0)
              a++;
          else
              b++;
      }

    return a^b;
}


int main() {

    long int iterations = 100000; 
    int start_s;
    int stop_s;


    ofstream runtimesFile;
    runtimesFile.open("runtimesFile.txt");

    for (int j=0; j <iterations ; j++){
        vector<int> arr = randomArr(j);
        start_s=clock();
        branchy(arr);
        stop_s=clock();
        runtimesFile<< to_string(stop_s-start_s)<<"\n";


    }
    runtimesFile.close();
    return 0;
}

enter image description here

0 个答案:

没有答案