FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Gem5のインストール試行とベンチマーク実行 (NEON命令をGem5で動かす)

ちょっといくつか確認しなければならないことがあり、AArch64対応のGem5を試行してサイクル性能を測定している。

以下のようなループを作成して、FMLAのレイテンシがどのようになるのか観測したい。

  for (int i = 0; i < N / 4; i++) {
    float32x4_t va, vb, vc, vd;
    va = vld1q_f32(p_a);
    vb = vld1q_f32(p_b);
    vc = vld1q_f32(p_c);
    vd = vmlaq_f32(va, vb, vc);
    vst1q_f32(p_d, vd);

    p_a += 4;
    p_b += 4;
    p_c += 4;
    p_d += 4;
  }
../build/ARM/gem5.debug \
  --debug-flags=O3PipeView --debug-start=0 --debug-file saxpy_vec.aarch64.out ./configs/example/se.py --cpu-type=DerivO3CPU \
  --caches --cmd=/home/msyksphinz/work/gem5/app/neon/main

Gem5のO3情報をトレースしてみると以下のようになった。

あれ?FMLAの実行が1サイクルで終わるようになっている。これはどういうコンフィグレーションで実行されているのかなあ?いろいろとGem5の中身を確認してみたい。