2021:BKSC 割り込みやモード

 これでユーザーモードに必要な分は定義できたので、あとは周辺。

 メモリなどを保護するための特権モードとユーザモードの切替について。SPARC V9の制限されたモードからスタートして特権モードに移る方式とRISC-Vの全アクセスできるマシンモードからスーパーバイザーモード/ユーザーモードを持つ。ここではRISC-Vにならって3つのモードを持つことにする。ただしリセット直後は全リソースにはアクセスできるがストロングメモリオーダリングなど動作をより安全側に倒しておく。
ユーザーモードでアクセスできないメモリ空間は0~63のうち32~63に割り当てる。ここにI/O空間や診断用の空間を割り当てる。よりシステムに近い診断用の空間、キャッシュメモリ内へのアクセスなどはマシンモードでのみアクセス可能。

0~31 全アクセス可能な空間 各種ステータスレジスタなどの読み書き
32~47 スーパーバイザ用空間 MMU設定など
48~63 システム空間 キャッシュメモリのタグやデータなど診断アクセス
この空間番号は0~63だが~4096に拡張してもよい。
各空間のアドレスの最低限の範囲は0~255とする。つまり1バイトの範囲。

 そのモード切替だが空間0の特定アドレスにモード切替レジスタを用意する。権限の低いモードから権限の高いモードに切り替えようとしても無視される。ユーザーモードから上位のモードに遷移するためにはトラップを使用する。
 トラップは特権モードよりも低い権限で動かす。例えば命令エミュレーショントラップはメモリ管理やI/Oアクセスをすることがないため余計なリソースには触らせないという考え。



ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント