Microblaze 動作周波数測定

Microblaze 動作周波数測定

EDK が届いたので Microblaze の動作周波数を調べてみた。
まだケーブルが無いのでインプリメントのみ。(ああ、そういえば USB から書けるんだった)
システム条件は以下に示す SMP 構成とした。

・ハードウェア
Xilinx Spartan-3E Starter Kit

・EDK IP core
Microblaze core
データメモリ(Local Memory Bus 8KB)
命令メモリ(Local Memory Bus 8KB)
外部バス(On chip Peripheral Bus)
UART(システム全体で 1 個)

・結果
Microblaze x 1
Minimum period: 12.306ns (Maximum frequency: 81.261MHz)
Microblaze x 2
Minimum period: 14.138ns (Maximum frequency: 70.731MHz)
Microblaze x 4
Minimum period: 15.533ns (Maximum frequency: 64.379MHz)
# RAM への Clock が 4 分岐されたので負荷多すぎるよ Warning が出た。
# core x 4 を配置した時点で使用 slice は 59% だった。
Microblaze x 6
#この辺が配置の限界だと思うけどぎっしり詰め込んでも意味がないので暇なときにする。

まず、動作周波数が結構高い。50MHz がせいぜいなのかと思っていた。ARM7TDMI のsynthesizable 版でも 70MHz くらいだったのでこれはかなり良い結果だろう。EDK9.1 では Microblaze core v6.1 が提供されるらしい。これは 5 段パイプラインなので、更なる動作周波数の向上が期待できそうだ。

# 追記
ARM の話はあまり正確ではなかった。ARM7TDMI の synthesizable 版(ARM7TDMI-S)は以下のページによると 90nm の Standard Cell で最大 245 MHz で動作するようだ。市販の CPU はプロセスルールや低消費電力化の要求などによって常に core の最大動作周波数で動かすとは限らない。なので一般ユーザレベルで core の性能を判断するのは難しい。
http://www.arm.com/products/CPUs/ARM7TDMIS.html
# ここまで

また、suzaku の Spartan-3/400 だと core 1 個で slice 使用量が 50% を超えていたことから Spartan-3E/500 でもそんなもんだろうと予想していたが簡易的とは言え Quad Core の配置が可能になった。汎用プロセッサを同一ダイ上に Quad 実装(可能)した事実は CPU 開発において Intel に先行したと考えて良いだろう。

プロセッサコアとしては他に割り込みコントローラとタイマが必要だろうか。システム全体だと DDR SDRAMVGA も使用したい。DDR SDRAM は一個しかないので各 CPU にキャッシュも用意したほうがいいだろう。
まぁ欲張ったところでこの SMP ボードで現実的な問題を解決するわけではないのでゆっくりやろうと思う。単純に IP を定義するだけだと難しくないけどこれらと、ソフトの開発手順を連携させる手順を理解するのは大変そうだし。
将来的にはこっちの分野でもお金が貰えるように準備しておかなければ。

なお、EDK 上の作業を行う上で以下のページが大変参考になった。画面のスクリーンショットをとりつつページを作るのは大変だろうに。大変感謝している。
http://www.fpga-lab.org/index.html