読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

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

RISC-V BOOMについて、とビルド試行 (1. チェックアウトとビルド、シミュレーションまで)

RISC-V

https://riscv.org/wp-content/uploads/2015/01/riscv-logo.png

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でなくてもサポートできるものと思うが。

github.com

  • BOOM Design Specification

https://github.com/ccelio/riscv-boom-doc/raw/gh-pages/boom-spec.pdf

資料を読んでみると、かなり詳細にパイプラインの中身が書いてある。ほぼハードウェア仕様書と言っても良いくらいじゃないかな?

https://people.eecs.berkeley.edu/~celio/images/boom-diagram.svg

そして、この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のページからチェックアウトできる。

github.com

私のローカルでのUbuntu on Vagrantで試行した。ビルド自体は本当に以下のコマンドを叩くことで実行可能なのだが、2016/10/16日時点での最新ビルドを利用すると何故かビルドに失敗してしまう。

以下のコミットに切り替えると、正常にビルドできるようになった。

github.com

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でスクリプト化したいのだが、まだ原因不明のエラーで失敗している。これも直す予定。