-3

CPU のプリフェッチャーをシミュレートするコードを c++ で記述しています。コードには、次のような定義がいくつかあります

#define x 5
...
for(int i = 0; i < x; i++)
...

シミュレーションの最後に、シミュレーターは平均アクセス時間を出力します。これは、プリフェッチャーがどの程度うまく機能したかを示す指標です。プリフェッチャーのパフォーマンスは、x およびその他の同様の定義に依存します。

x を変更し、新しいコードを再コンパイルして実行し、値を調べ、シミュレートされたアクセス時間の変化に基づいてプロセスを繰り返すプログラムが必要です。

手動で値を変更しない簡単な方法を知っている人はいますか?

編集:私は学習アルゴリズムをプログラムする必要がないことを明確にする必要があると思います.

4

1 に答える 1

0

現在のプログラムは次のようになっていると思います

 int main() {
 #define x 5
 <do the simulation>
 cout << "x=" << x << " time=" << aat << endl;

代わりに、明示的なパラメーターとして x を取り、平均アクセス時間を返すシミュレート関数を作成することができます...

double simulate( int x ) {
    <do simulation>
 }

そして、メインから呼び出します

 int main() {
   x= initial x value
   While ( necessary ) {
     Double aat = simulate(x)
     Cout << "x=" << x << " time=" << aat << endl;
     x = <updated x according to some strategy>

このようにして、x を学習するための機械学習がメインで行われます。

しかし ... CPU のプリフェッチをシミュレートするプログラムを作成している場合、これらすべてをすでに完全に理解していると思わざるを得ません。そもそもコンパイラを使用してシミュレーション パラメータを変更した理由がよくわかりません。

于 2015-02-26T06:51:37.060 に答える