RISC-VのCPUレジスタを見ていきたいと思います。

汎用レジスタが32個(ゼロレジスタを含む)に、PCを別に持っている構成になっています。

 

昨日の命令形式でrd,rs1,rs2が5ビットだったのは、この32個のレジスタを指定するためです。

他のCPUのレジスタを調べるとこんな感じですね。

多分、組込み領域では16か32で選択されますが、レジスタの数は命令長に影響するので設計者の方針で決まってしまう内容に見えます。特に32ビット命令だとコード効率が悪くなるので、16ビット命令を用意するのだと思います(たとえば、ArmのThumb命令)。

32本のレジスタを指定するためには5ビット必要で、3レジスタ方式では5ビットx3本でそれだけで15ビットも使用してしまいますね。2レジスタでも5ビットx2本=10ビットです。

16ビット命令で考えると、2レジスタ方式でも残りは6ビットということで、単純に残りで6ビットで命令を実装すると64命令になってしまいますね。16本のレジスタで2レジスタ方式であれば4ビットx2本=8ビット、残り8ビットで命令を実装すると256命令ですね。

 

RISC-Vでは基本命令RV32Eではレジスタ数を16に減らしていますが、命令セットは同じものを使っています。

また、RISC-Vではcompress(C拡張)で16ビット命令を採用しています。このあたりは、将来見ていきます。

 

制御レジスタはいろいろあります。このあたりは調べていく必要があります。