RISC-VとChiselで学ぶ はじめてのCPU自作
RISC-V は既に Polyphony で作成済みではあるが、 再度 Verilog-HDL でつくろうとして(というより Verilisp で作る) この本を購入。
パイプライン化の参考にできそう。 私の使い方は参考書。 実際に手は動かしていない(みながら verilisp で書き下してはいるが Chisel は使っていない)。
そういえば、筆者の一人はリアルで知り合い。 世間は狭いなぁ。
書籍は5部構成。
V だからかな?I部でCPUとは何か?とコンピュータ・アーキテクチャ とScalaとChiselと論理回路まで説明している。 素晴らしい構成。 取り敢えずこの本を買っておけば、何を勉強すればいいかわかる。 巻末にお勧め書籍が載っている。
Scala の知識が必要
昨今の言語は文法が難しい。Go言語とかもそう。 記号列をパッと見てすぐわかるようにはなっていない。 その思想と書き方をわからないと理解できない。Perlほど記号記号はしていないけど Scala も私にとってはわかりにくいなぁ。
ステップ・バイ・ステップ
非常に丁寧に書かれているうえに、実行環境として Docker まで用意されている。 ってことは Docker の知識もある程度必要です。ハイ。 第II部ではひとつひとつ丁寧に実装していっている。 最初はPC動かしてメモリアクセスするだけ。から始まりLWという オペコードを実装。てな具合でステップ・バイ・ステップ。
かなりアカデミックな感じの伝統的なCPUの作り方なので それなりにCPUの知識は必要という印象。どちらかというと以前CPUを 作った人向けの構成にはなっている。「WBって何よ?」 とか思ったらお勧め資料で調べていくことになるでしょう。
Chisel
Scala に精通していて SystemVerilog が好きなら、たぶん、 Chisel は好きになれると思う。 そういう意味では、Scala言語に詳しいハード設計者の為の言語。 HDL 一筋とかいままでアプリよりでしたという人は苦労するかも。
実際にChiselをいろいろ動かして学んでいくことになるのだと思う。 たとえば簡単なCPUの実装ではあれ?パイプライン組んでないのに ステージという言葉があるけどどうして?じゃ、Chiselはどう 動くのだ?といった感じで、脱線しながら進めることになるのでしょう。
Chisel に限らないけど、基本的に高位合成を"学ぶ"なら その前に Verilog-HDL と VHDL を勉強しておいた方がよい。 どっちにしてもその時間を捉えるという感覚がないと プログラミングは難しい。
LW より先
現時点(2022/1/1)で私は中途半端にverilispでLWを実装しただけ。 とりあえず動きましたよ。この本は第III部でパイプラインでの 設計をしている。そして、第IV部ではなんとベクトル命令の 実装までしている。すげ~。
第V部は、、、Vという名称を使いたかったんだろうなぁ。