FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages/

Rocket-Chipにおけるコンフィグレーション別の面積比較(各種構成での面積比較)

前回の続き。多少は面積比較できる程度に環境が構築できてきたので、いろんな構成でもってVivadoで合成して面積を比較してみた。

まず大前提の問題として、Vivadoの面積レポートはとても読みにくい。まあSynopsysのDesign Compilerのように、単純にゲート数で比較することができないから大変だろうけど、もう少しCSVとか、テキストで解析しやすいようにしてくれればありがたいのだが。。。

とりあえず現状で調査した構成は以下の通りだ。パラメータについては、ソースコードを読みながら調査しているので、間違いがあるかもしれない。

Rocket DefaultConfig Rocket DefaultSmallConfig Rocket TinyConfig boom-v1 BOOMConfig boom-v2 BOOMConfig Freedom E300 Arty
コア機能 ビット幅 64 64 32 64 64
VM 指定なし(あり) なし なし 指定なし(あり) 指定なし(あり) なし
演算器 mulUnroll 8 指定なし(なし) 8 8 不明 指定なし(なし)
mulEarlyOut あり 指定なし(なし) 指定なし(なし) あり 不明 指定なし(なし)
divEarlyOut あり 指定なし(なし) 指定なし(なし) あり 不明 指定なし(なし)
FPU 指定なし(あり) なし なし 指定なし(あり) あり なし
Dキャッシュ rowBits システムバスと同じサイズ システムバスと同じサイズ システムバスと同じサイズ 64 システムバスと同じサイズ
セット数 指定なし(64) 64 256 64 64 256
ウェイ数 4 1 1 4 8 1
TLBエントリ数 32 4 4 8 8 4
MSHR数 0 0 0 2 4 0
ブロックバイト数 CacheBlockBytes CacheBlockBytes CacheBlockBytes 不明 CacheBlockBytes
命令キャッシュ rowBits システムバスと同じサイズ システムバスと同じサイズ システムバスと同じサイズ 不明 システムバスと同じサイズ
セット数 64 64 64 64 64 64
ウェイ数 4 1 1 4 8 1
TLBエントリ数 32 4 4 8 8 4
ブロックバイト数 CacheBlockBytes CacheBlockBytes CacheBlockBytes 不明 不明
TotalLUT 28734 6318 4646 115043 93773 4803
TotalFF 13187 2657 2221 44852 26971 2241

面積を比較したものをGraphにすると以下のようになる。すべてVivado 2017.2 ZYNQをターゲットにして合成した。

f:id:msyksphinz:20171120235637p:plain

Rocket CoreのDefaultConfigを基準として、DefaultSmallConfigやTinyConfigはとことん小さくした構成だ。 一方でBOOMConfigは非常に大きなものとなっており、原因としてはやはりコア内の面積比率が大きく、リオーダバッファや分岐予測器などが面積を消費しているものと思われる。

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com