RISC-Vについては様々な団体からISAを実装したプロセッサコアが登場していうが、そもそもRISC-Vを提唱した Berkeley が開発したRISC-Vプロセッサコアは、以下の2種類であるという理解でいる。
- RocketCore
- BOOM (Berkeley Out-of-Order Machine)
RocketCoreについては、昔Zynq ZedBoard向けにビルドして試行したことがあるが、BOOMについては、実はまだちゃんと試行したことが無い。今回はこのBOOMプロセッサについてまとめて、ビルド試行をしてみよう。
BOOM(Berkeley Out-of-Order Machine)について
BOOMはその名の通り、アウトオブオーダパイプラインを採用したプロセッサコアの名前だ。バークレイが開発しているが、おそらくはBOOMと言えばRISC-Vのアーキテクチャを実装したプロセッサコアの名前になると思う。 アーキテクチャ的にはRISC-Vでなくてもサポートできるものと思うが。
- BOOM Design Specification
https://github.com/ccelio/riscv-boom-doc/raw/gh-pages/boom-spec.pdf
資料を読んでみると、かなり詳細にパイプラインの中身が書いてある。ほぼハードウェア仕様書と言っても良いくらいじゃないかな?
そして、このBOOM自体も、Chiselというハードウェア記述言語で書いてある。ChiselはRISC-Vを開発するために新たに開発されたハードウェア言語であると言っても良く、CPUを設計するのに都合が良いハードウェア仕様となっている。
さらに以下の資料を参照すると、2-wayと4-wayの実装が進んでおり、かなりの性能が出せることが分かっている。
- The Berkeley Out-of-Order Machine (BOOM): An IndustryCompetitive, Synthesizable, Parameterized RISC-V Processor
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-167.pdf
やるなあ、BOOM。
BOOMのビルド
BOOMをビルドして、まずはソフトウェアのシミュレーションを出来るようになりたい。BOOMのソースコードのダウンロードは、以下のgithubのページからチェックアウトできる。
私のローカルでのUbuntu on Vagrantで試行した。ビルド自体は本当に以下のコマンドを叩くことで実行可能なのだが、2016/10/16日時点での最新ビルドを利用すると何故かビルドに失敗してしまう。
以下のコミットに切り替えると、正常にビルドできるようになった。
git checkout 431edb6ea1fd4cc5a54ed7cf9ca63071e951c7b6
ビルド自体は、以下で実行可能。
sudo aptitude install -y autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf gcc libc6-dev pkg-config bridge-utils uml-utilities zlib1g-dev libglib2.0-dev autoconf automake libtool libsdl1.2-dev emacs git default-jre default-jdk git clone https://github.com/ucb-bar/rocket-chip.git cd rocket-chip git checkout boom git submodule update --init cd emulator; make run CONFIG=BOOMConfig
ビルドとテストは実行できるようなので、これをChef-soloでスクリプト化したいのだが、まだ原因不明のエラーで失敗している。これも直す予定。