FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「RISC-VとChiselで学ぶはじめてのCPU自作」を献本頂きました

最近発売になった、「RISC-VとChiselで学ぶはじめてのCPU自作」を献本頂きました。@ciniml 様、ありがとうございます。

私はChiselもRISC-Vもそこそこ知っていたので、完全に門外漢というわけではない。昨日入手したばかりなので詳細に読み込んでいるわけではないが、ざっくりと流れを読んでみた。

まずは、かずあるCPU自作の本の中で、「RISC-V」にターゲットを当て、「開発言語をChiselとする」ものはかなり限られる。 今秋発売になる予定のHarris & Harris がどの言語を使うつもりなのかが分からないが、Chisel+RISC-Vの自作CPU本で日本初であることは間違いない。

「なぜSystemVerilogではなくChiselで書いたのか」という所も知りたかったがざっと読んだ限りは書いていなかった。個人的にはChiselでセセコマシイCPUのパイプラインなどを書くのは、少し役者不足じゃないか(SiFiveに失礼だが)と思うところもある。ChiselがSiFive以外に普及しない理由もここらへんにある気がする。 (ちなみに、解説してあるChiselの文法は基本的なものなのでこれでRocket-Chipが読めるようになるわけではない。念のため)。

仮にSystemVerilogで同じ内容を書くと、5段パイプラインくらいなら、自作CPU本はかなりの数が出てきているので目新しさが無くなってしまう。そういう意味で、本書は少しニッチなところを狙っているようにも思える(ベクトル命令を解説しているあたりも、キワキワを攻めたいという意図を感じる)。

本書は大きく分けて以下のような構成になっていた。

  • コンピュータアーキテクチャについて
  • ScalaとChiselについて
  • シングルステージのCPUの実装
  • パイプラインCPUの実装
  • ベクトル命令の一部を実装
  • カスタム命令の実装

(個人的には、途中で出てくるDockerの説明が非常に役に立った。Docker全く知らなかったので)。

本書には「シミュレーション波形」というものが全く登場しない

自作CPUといえばRTLシミュレーションからの波形確認でしょ!というのは定番すぎるかもしれないが、本書では驚くべきことに「RTLシミュレーション」とか「波形」というものが一切登場しない。

最初からChiselTestを使っているあたり、最初からVerilogを生成してRTLシミュレーションすることなんて全く考えていないと思う。すべての動作確認はテキストメッセージの確認だけで行われているのは、かなり新しい。 (このことについては本書内でコメントされていなかったが、著者のポリシーだろうか?)

波形を使わない、というのはメリットとデメリットがあって:

  • デメリット: CPUが動いているという実感がわかない
  • メリット: 何となく敷居が低い

だからFPGAとかそういう話にもならないし、ハードウェア設計経験者なら「本当にこれ回路になってんのかいな?」という不安は残る気がする。まあそれがChiselである1

そういう意味では、ハードウェア本に多い図やタイミングダイアグラムなども本書はほぼ無いに等しい。最初の実装ではどのモジュールを実装しているのか一発で想像できなかった。まあそれはしっかりと読みこめば分かる。

という訳で、本書はChiselというキワキワの言語を使ってRISC-Vの自作CPUというキワキワを攻める、かなりマニアックな本だが、RISC-Vに興味がある人はぜひ読んでみると面白いと思う。


  1. ちゃんと前書きに「物足りなく感じてしまうかもしれない方々:HDLやプロセッサの設計知識がある人」と書いてあった。