連載
» 2016年02月16日 07時00分 公開

FPGAのソフトコアCPUをベンチマークで測定するMAX 10 FPGAで学ぶFPGA開発入門(7)(5/6 ページ)

[大原 雄介,MONOist]

ソフトウェアを対応させる

 次はソフトウェア側の対応である。ここでは追加した「sys_clk_timer」をシステムタイマーとして利用する事を教えてやらなければいけない。

 Eclipseの画面で「NIOS II」→「BSP Editor」を呼び出し(Photo08)、「Dhrystone_bsp」の下にあるsettings.bspを読み込むと、「timestamp_timer」の値が「none」になっているはずなので(Photo09)、これを「sys_clk_timer」とする。これが終わったら右下のGenerateボタンを押してBSPを生成し直す。

Photo08:ディレクトリはプロジェクト名がDhrystoneの場合にはプロジェクトディレクトリの下の"software\Dhrystone_bsp"の下になる Photo08:ディレクトリはプロジェクト名がDhrystoneの場合にはプロジェクトディレクトリの下の"software\Dhrystone_bsp"の下になる
Photo09:ちなみに今回はtimestamp系のHAL APIを使ったのでtimestamp_timerを有効にしたが、逆にsys_clk_timer系のAPIを使いたければこちらを有効にする Photo09:ちなみに今回はtimestamp系のHAL APIを使ったのでtimestamp_timerを有効にしたが、逆にsys_clk_timer系のAPIを使いたければこちらを有効にする

 次にこれをプロジェクトに反映する。EclipseでBSP側を右クリックし、「NIOS II」→「Generate BSP」を選択した後にビルドしなおすと、今度はシステムクロックがちゃんと存在する状態でプログラムが構築される。そこで実行するとPhoto12の様に、キチンと所要時間が表示されるようになった。

Photo12:これが出てきたときには思わず安堵(あんど)のため息が(笑) Photo12:これが出てきたときには思わず安堵(あんど)のため息が(笑)

 さて、この所要時間は、実際にはTics(何Clock経過したか)なので、実際には50MHz駆動で8億5300万173clockということで、17.06秒ほどの時間となる。10万回で17.06秒なので性能は大体5861.7 Dhrystone/secという数値になる。基準となるVAX11/780のスコア(1757.0 Dhrystone/sec)と比較すると3.34 DMIPSという計算である。

 これが速いか遅いかはどう使うか次第ではあるが、こちらのページに記載されている値に比べると、MAXQよりやや遅い程度でTexas InstrumentsのMSP430F149よりは高速、というのはそう悪くないのではと思う。

 ちなみにQSYSでプロセッサの設定を見ていただく(Photo13〜15)と分かるのだが、今回はリソース最適化でプロセッサを構成しているので、このあたりを変更すればもっと性能は上がる可能性がある。興味のある方はぜひ、いろいろと設定を変えてみていただきたい。

 ということでプロセッサが実用に耐えることが分かったので、次はもう少しデバイスと組み合わせてみたい。

CPUコアを「Nios II/e」にするとリソース最適モードとなり余分なオプションは一切使えず性能も低い Photo13:CPUコアを「Nios II/e」にするとリソース最適モードとなり余分なオプションは一切使えず性能も低い。これを「Nios II/f」にするといろいろなオプションが使えるようになる
Photo14:「Nios II/f」にすると、ここでキャッシュの有無やサイズなどを選べるようになる Photo14:「Nios II/f」にすると、ここでキャッシュの有無やサイズなどを選べるようになる
Photo15:乗除算性能が必要な場合はNios II/fではこれらをハードウェアで実行させることも可能。デフォルトはソフトウェアエミュレーションなので遅い Photo15:乗除算性能が必要な場合はNios II/fではこれらをハードウェアで実行させることも可能。デフォルトはソフトウェアエミュレーションなので遅い

Copyright © ITmedia, Inc. All Rights Reserved.