低レイアの勉強(Chisel, RISC-V, ISA)
最近,僕が読んでるブログで,ChiselやRISC-Vなどの単語が結構出てきて, ナンジャラホイって感じなので勉強してみました.
Chiselってなに?
Scala言語のライブラリです. Scalaを使って,VerilogやVHDLを生成できます.
僕はScalaはやったことがないので,解説のリンクを貼っておきます.
一年ほどFPGAをガッツリ勉強していましたから, Verilogは使ったことがあります.
Pythonが好きなので,そっちでも似たようなライブラリがあった気がします. やっぱりみんなVerilogとか嫌いなんですね. (そういえば,家に使ってないPYNQがあるのを思い出した)
僕はVerilog書くのはあんまり嫌いじゃないですね(ただ慣れただけかも).
RISC-Vってなに?
こっちの方が最近はよく聞く気がします.
オープンな命令セットアーキテクチャ(ISA)です. 公式サイトを見ても,大企業が名を連ねていて強そうですね(小並).
僕自身の理解が甘いので,詳細は書きませんが, 要するにオープンなISAってあんまりないから,話題になっているらしいですね.
ちなみに,ChiselもRISC-VもUCBerkeleyがサポートしていて,流石!って感じですね.
命令セットアーキテクチャってなに?
ここまで来ると,僕の理解度では「命令セットアーキテクチャ」ってなんだっけ?ってなります.
っというわけで調べてみました.
東京大学の坂井先生の資料がわかりやすかったです.
https://www.mtl.t.u-tokyo.ac.jp/~sakai/hard/hard3.pdf
命令セットってのは,CPUが使用できる命令の集合(算術論理演算命令,データ移動命令,分岐命令など)です. 特定のCPUと同じ命令セットを持つと,互換プロセッサと呼ばれます.
っで,命令セットアーキテクチャっていうのは,命令の表現形式とその命令の動作を定めたものです. 表現形式ってのは,通信規格みたいなものなで,どのビットが何に対応するのかみたいなものです.
RISC vs CISC
ここで僕が昔インターンに行った頃に,少し習ったRISCとCISCの違いを書いておきます.
RISC ... Reduced Instruction Set Computer
CISC ... Complex Instruction Set Computer
簡単に言うと,CISCはいろんな命令をゴリゴリに積めば便利でしょって感じで作られたプロセッサです.
でも実際に利用するのは,簡単な命令がほとんどでコンパイラが出力するのが難しくなります.
そこで命令数が少なく,動作が単純なRISCに移行されました.