検索
連載

FPGAソフトコアCPUにおける最適化を検証するMAX 10 FPGAで学ぶFPGA開発入門(14)(5/7 ページ)

MAX10搭載開発ボード「MAX 10 NEEK」でソフトコアCPU「NIOS II」を利用する際、最適化しないことを推奨されるが、設定自体は施せる。では最適化すると速くなるのか?有償版も含めて検証する。

Share
Tweet
LINE
Hatena

 さてプログラムの説明はこのあたりにして、ビルドして動かしてみたい。ビルドのためにはまずdhry.hをプロジェクトに追加(Photo05)し、さらにEclipseからBSP Editorを呼び出して(Photo06)、sys_clk_timerにTimer_1msが指定されている事を確認しておく(Photo07)。このあたりの話は以前こちらで説明した通りだ。

photo
Photo05:dhry.hをドラッグ&ドロップでEclipseのNEEK_Dhryにコピーするとこのダイアログが出てくるので、"Copy files"を選ぶとプロジェクトフォルダにコピーされ、プロジェクトにも追加される
photo
Photo06:これはNEEK_Dhryを右クリックして呼び出す形
photo
Photo07:なぜか筆者がビルドしたときは自動的に指定されていたが、されない場合もあるので注意

 さて、ここまで完了したらビルドして実行する。ちなみにNUMBER_OF_RUNSにリスト通りの数値(100万)を指定すると30分以上帰ってこないので、まずデバッグがてらこれを10000に書き換えて実行してみる。結果はPhoto08の様に、1万回で2006〜2007msという結果になった。

 前にも書いた通り、VAX 11/780の数字が1757.0 Dhrystone/secで、今回はおおむね4982.6 Dhrystone/secだから2.84 DMIPSという計算になる。MAX10 Evaluation Boardで試した時には3.34 DMIPSという数値だったが、今回は1ms毎に(Alarm_Int()内で)IORD_ALTERA_AVALON_PIO_DATA()を呼び出してキー押下を確認しているので、このオーバーヘッドの分遅くなったと思えば、まぁ納得できる数字である。

NIOS IIにおける最適化の効果

 さて今回の本題はここから。以前こちらで紹介したが、NIOS IIを使う場合、OptimizingをOffにする事が推奨というか指示されている。理由は“compiler optimization may cause some problems while running the program”ということであるが、これをOffにしていたらそれは性能が出ないのも当然である(Photo09)。

photo
Photo08:右のNios II Consoleを参照。1万回のループなので2秒ごとに結果出力となっている

 ではこれをOnにするとどうなるか?

関連キーワード

アルテラ | FPGA関連 | FPGA


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る