RISC-V アーキテクチャ(2)
RV32E(組み込み分野向け)
汎用レジスタ本数を16本に減らしたRV32I.
利点
- チップ面積が小さい.
拡張命令
- M / A / C のみOK.
問題
- しかし,16本にするということは,スタックへ退避するための命令コードが増加する.これは,C拡張命令(16ビット)と組み合わせることで解消できる?
リトルエンディアン
RISC-Vの命令配置はリトルエンディアン(バイト毎に下位側(右側)から並べる)に限定.
11223344(4バイトの16進数データ)→ 44332211(リトルエンディアン順)
エンディアン変換
16ビット可変長命令
C拡張命令の16ビットの命令を,32ビットの命令と混合して手軽に実行できる.
命令をエンコードする際,命令ビットの下位2ビットから命令長を判別できる.(16ビットかどうか分かる)
命令エンコードの工夫
汎用レジスタの位置を固定
ゆえに,デコード前にアクセスできる.
符号拡張した即値が,各命令形式で同じ桁
- 符号拡張した即値は,各命令形式において出来る限り同じ位置になっている.
ゆえに,即値生成に用いる回路を共有できる.
符号拡張した即値の符号ビット / 最上位ビット(MSB)の位置を固定
- 即値の符号ビットの位置が必ず最上位ビット(31番目)に位置している.
ゆえに,即値にの符号拡張命令処理を共通化 / 簡単化できる.
実行レベル/モード(特権状態)
各実行モードで参照できる資源を限定することで,ディペンダブル性を高めている.
プロセッサの実行モードは4段階
M ... マシンモード
H ... ハイパーバイザモード
S ... スーパバイザモード
U ... ユーザモード
組み合わせ
M ... 単純な組み込みシステム
M, U ... セキュアなく組み込みシステム
M, S, U ... UNIXに似たOSが動くシステム
M, H, S, U ハイパバイザで仮想化を行うシステム
それでは.いろはにへとへと.