move pages to top directory authored by Toru Koizumi's avatar Toru Koizumi
性能評価
============
CPU の性能を測るために Coremark という標準ベンチマークソフトを動かしてみましょう。Coremark は様々な計算処理を含んでおり、この Coremark の開始から終了までにかかった時間を計測することで、作った CPU の性能を評価することができます。
## FPGA へのプログラム書き込み
b3exp/benchmarks/Coremark_for_Synthesis の中に Coremark のソースが用意してあります。
この中で
```bash
$ make
```
とすると、 prog.hex と data.hex が生成されます。 $readmemh を使って前者を ROM に、後者を RAM に読み込むことで、 Coremark を実行することができます。
Coremark の実行をすべてシミュレーションで確認するのは時間がかかるので、 10,000 us 程度まで確認して問題がなければ実機での動作確認へと移りましょう。
実機への書き込み方法は他のプログラムと同様です。
## GTKTERM のインストール
Coremark の実行結果を確認するためにシリアル通信確認用のソフトウェアのインストールが必要です。以下のコマンドでインストールが可能です。
```bash
$ sudo apt install gtkterm
```
## PC と FPGA の接続
プログラム書き込みのときとは異なり、 `UART` という端子に USB ケーブルを接続します。
PC と 接続したのち、
```bash
$ sudo gtkterm
```
とすると、 gtkterm が起動します。
上部タブの Configuration をクリックして、 CR/LF auto にチェックを入れましょう。また、 port から、シリアル通信ポートの設定を以下のようにおこないましょう。
![Screenshot_from_2018-10-18_19-04-33](uploads/49ffe7a8e520e7fc3545964ef9c618a9/Screenshot_from_2018-10-18_19-04-33.png)
## Coremark の実行
接続とターミナルの設定が終わったら、いよいよ Coremark の実行です。FPGA上の、 `CPU_RESET` 等を押して何秒か待つと、実行結果が表示されるはずです。
![Screenshot_from_2018-10-18_20-32-55](uploads/2662137aca344eb76180658cbed3644f/Screenshot_from_2018-10-18_20-32-55.png)
Iterations/Sec が Coremark スコアの値です。また、これを動作周波数[MHz]で割った値が、 Coremark/MHz です。前者の値は動作周波数まで考えに入れた実行性能を、後者は1サイクルあたりの実行の効率を表しています。
[公式サイト](https://www.eembc.org/coremark/scores.php)に様々な商用プロセッサの Coremark スコアが掲載されているので、今回作った CPU の値と比較してみましょう。