最近RISC-Vは熱いらしいというのを見たので[どこで?]、キャッチアップしなくてはと思いRISC-VとChiselで学ぶ はじめてのCPU自作を買って読んだ。 この本を選んだ理由はRISC-VとCPU自作で検索したときに一番最初にヒットしたからという単純な理由。
そもそもCPUとは何ぞや?といったところから始まり論理回路、コンピュータアーキテクチャっと続く。 ここらへんは基本情報処理の範囲なので流し読みしつつ復習していく。 その後、RISC-Vのアーキテクチャ、そしてChiselの説明に移っていく。 一通りの説明が終わると、Chiselを使ったRISC-V CPUの自作が始まる。
Chisel*1は、ScalaのDSLで実現されていることもありとっつきやすかった。 また、本書では開発環境としてDockerを利用するため環境が作れなくてリタイアする…というのがなくてよかった。 ちなみに、著者の方がDockerイメージをDocker Hubで公開してくれているのだが、これが6GBくらいあってギョッとする。 しかしながら自分で作ってもそのくらいのサイズになるし、色々ビルドをしていくと30分くらいかかるので素直にこのイメージを使ったほうがよい。
Chiseを使ったCPUの作成は思った以上に簡単だった。 最初におまじない的に定数や命令bit列の定義が必要だったが、それ以外の実装は至ってシンプルであった。 また、各命令を実装後に毎回テストコードを作って動作確認できるのもよかった。 gccでコンパイルしたC言語のコードが自分で作ったCPUで動くとすごく感動する! RISC-Vの基本的な命令の他に、パイプラインの実装やベクトル拡張命令の実装、そしてカスタム命令の実装までカバーされていてRSIC-V CPUの自作入門にはぴったりな本だった。
Chiselを使ってCPUを作ると追加投資なくCPUの自作を体験できるのはとても良いことだ。 しかしながら、あくまでChiselでCPUが動いたということしかわからず、本当に物理でCPUとして動かくどうかがわからず、なんとかして物理に落とし込みたい…!という欲に駆られている。 その欲を満たすためにFPGAの評価ボードを見ていいお値段…っとなったのであった。
そういえば、この分野の名著であるCPUの創り方を持っていたので次はこっちも読んでみよう。
*1:めちゃくちゃググらビリティが低くて困る…