2021:モード

 リソースを保護する目的でプロセッサはモードを持つことがある。特権モードはすべてのリソースにアクセスでき、ユーザーモードはI/Oやメモリ管理関連の制御が制限される。これによりユーザーモードで動くプログラムは特権モードで割り当てられるメモリ領域と、デバイスドライバ経由でアクセスできるI/Oにより他のユーザープログラムに影響を与えない。これは2つのモードを持つが、リング状にアクセス制限して4つの保護モードを持つプロセッサもある。
 階層的ではなく制限の異なるモードを持つプロセッサもある。SPARC V9はリセット直後はRED MODEというリソースを制限された状態で動く。ここから特権モードに移るが復帰不可能なトラップが発生した場合はRED MODEへ遷移しプロセッサを安全に停止できるようにする。これにより特権モードでハードウェアの故障が発生し、すべてのリソースがアクセスできる状態で暴走することを抑止する。また、RISC-Vはマシンモード/カスーパーバイザーモード/ユーザーモードを持つ。実装によってはスーパーバイザーモードやユーザーモードを省略できる。
 その他、仮想化のためのハイパーバイザーモードも存在する。

 プログラムの互換性のために、過去の命令セットを実行できるモードを備えたプロセッサもある。8080に対するZ80は上位互換だがモード切替はない。6809に対する6309はモード切替のビットを持ち、扱えるリソースが増える。6502に対する65816は同じ命令なのに操作対象のビット幅が拡大し、オペランドとして使う即値のバイト長が変わる。8086に対するV20では8080エミュレーションモードを持ち、命令セットのデコードそのものが変わる。ARMのThumb命令も命令セットのサイズ削減のため、命令セットが変わるものと解釈できる。SPARC V9はレジスタ幅を32bitから64bitに拡張したことで影響を受ける種類の命令にはxを付けて区別している。srl命令は32bitの範囲で右シフトだがsrlx命令は64bitの範囲で右シフトするので結果が異なる場合がある。


以上から考えた必要なもの:
・リソースの制限による保護モード
・アーキテクチャの拡張をあらかじめ考慮し、命令セットにはモードを持たない

ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 0

この記事へのコメント