https://www.amazon.co.jp/dp/4434218484
上腕二頭筋に ALU やらレジスタファイル書かれている面白い本を読み終わった。 この本は本の大きさがそもそもでかくて読みづらい嫌な側面があったが、ドラゴンブックみたいに変な道の逸れ方はしないので読みやすかった。 気合の入った演習問題集・口頭試問集みたいのが各章末についており、やる気のある人にはとても良さそう。ほぼやらなかったけど。
前半の 1~3 章くらいはおそらく大学だと情報/電気電子みたいなところだと学ばされるかな、と言った内容で、その次は SystemVerilog/VHDL の言語の話が続く。 その次の章は、CPU を作るためのライブラリ (ビルディングブロック) づくりの仕方を学ぶ。レジスタとか。Enable を立ててクロックの立ち上がりで書き込む、みたいな。
そこまでの章で大体の道具は揃ったので、実際に ARM ISA の CPU を作っていく。単一サイクルプロセッサ、マルチサイクルプロセッサ、パイプラインプロセッサの 3 種類。 単一サイクルプロセッサで、データパスとコントローラ (必要なあらゆる制御信号を管理するやつ) の作り方を見て、マルチサイクルプロセッサでは Moore-FSM (直前の状態にのみ依存する) で状態を管理しつつ制御信号の処理をうまいことやる話が、パイプラインプロセッサではパイプラインレジスタを途中で挟んで処理する話、各種ハザードを処理していく話が乗っている。
商用製品はパイプラインプロセッサなので、やはりそこらの話が気になった。 紹介されていたハザードの処理はフォワーディングかストールで、それくらいは確かに話としては聞いたことがあっても、回路レベルで実際に処理する部分は見たことがなかったので、なかなか面白い。
ここまででもそれなりに面白いのだが、教材/演習でやっていない領域には命令/データのキャッシュ機構とか複数命令デコード/スーパースカラ実行/アウトオブオーダ実行みたいなものもあるわけで、まだまだ深みを感じる。
ところで、RISC-V の OoO するやつ https://github.com/riscv-boom/riscv-boom もあるみたいなので、やる気になればこれを読んだりすれば上でいったような機構を学ぶ/遊べそうではある。Chisel という Scala DSL を読み解く必要があるけれど。 この先に進んでいくには実際に開発/評価ボードを買ってやっていく、という多少のお金とそれなりのやる気が必要な道になる。