Hall > Tips > 021 > 05
11/06
マイクロプログラム、割り込み
マイクロプログラム方式の変形
- 水平マイクロプログラム方式の命令幅圧縮
- マイクロ命令のフィールド分割
- 排他的動作を用いた圧縮
- 可変フィールド分割方式
- 実際に使用されるマイクロ言語の組み合わせで最適化コーディング
- マイクロ命令ステップ数を最小にする最適化
↑これらは共にNP困難
- 垂直マイクロプログラムとの境界は不明確
- 垂直マイクロプログラム方式
- マイクロ命令幅の更なる縮小 — 横のものを縦に(命令幅は小さいが制御ビットの総量は変わらない
- 垂直マイクロプログラムが廃れた理由
↓
IPCの著しい低下
ユニバーサルインタプリタ
- プログラミング言語に適応したマイクロプログラミング
- B1700の実例
- ビットアドレッシング能力を持つ万能マイクロエンジン
- 残念ながら普及せず
- 最近、万能インタプリタが再び脚光
(ユニバーサルインストラクションセットマシン)
割り込み機構の目的
- 3個の異なる目的
- アーキテクチャの拡張
- 機能のソフトウェア・ハードウェア協調による実現
- 割り込み処理時間による速度低下 → 割り込み処理の高速化機構
- ex) syscall, float exception, page fault
- 保護機構の実現
- 特権レベルの乱用に対する保護
- 命令実行と並行したハードウェアによる違反検出
- 精密な設計によるセキュリティ・ホールの回避 → メモリ保護機構
- ex) MMU トラップ
- 非同期事象との同期
- ハードウェアによるサブルーチン呼び出し
- 実時間制約を満たすための優先度処理の実現 → 優先度機構
- ex) タイマ
- 割り込み原因
- マシンチェック
- リセット(ハードウェアリセット)
- 外部(I/O)割り込み → 1からN要因まで
- タイマー(2本程度)
- バスエラー(バスのタイムアウト)
- ページフォールト(TLBミス)
- MMU 割り込み
- 未定義命令の実行
- 命令特権レベルエラー(ユーザモードでの特権命令実行)
- 浮動小数演算
- 整数演算
- ブレークポイント
命令実行と割り込みタイミング
- 完了
- 中止
- 先を続けられない → 中止、前状態で割り込み
- page fault, exception ...
- 中断
同期 / 非同期割り込み
- 同期 = 実行中の命令が原因の割り込み
→ 中止、割り込み
- 非同期 = 外部からの割り込み
→ 現在の命令を完了してから
割り込み優先度
- 優先度 / 割り込みマスクの必要性
- 割り込み処理の相互排他
- 不必要な割り込みの抑制
- リアルタイム性の確保
- デッドロック抑止
- Unmasked が最低一つ必要
割り込みシーケンス
- ハード
- 要因の検出 → ∑INTi & MASKi
- 完了、中止、中断を待つ
- 割り込み要因に基づき割り込みベクトル(割り込みハンドらの実行開始番地)生成
- 実行中の情報(PCなど)を退避・格納
- (割り込み要因情報退避)
- 特権モードに切り替え
- 優先度の低い割り込み禁止
- 割り込みベクトルへ
- 割り込みハンドラ(ソフトウェア)
- マスクの設定
- 状態退避(レジスタ)
- 要因解析
- デバイス等
- OSへの要求キュー操作、実行
- 復帰準備
- 復帰
実現の困難さ
- 可変長命令
- 命令境界のソフトウェアによる検出(巻き戻しなど)
- 実行途中での割り込み(メモリへの変更途中など)
- 非常に長い命令中でのページフォールト(リアルタイム性の確保)
- 状態の退避・格納と復帰への命令オーバーヘッド
- レジスタ・PSW
- 仮想記憶実現に必要な情報
- システムレジスタ
- セキュリティの確保
- 保護システム設計との関連
— Capability方式、リング、キー方式、ドメイン、メモリアクセス保護、プロセス保護、通信保護...
- 特権命令設計
- 現在のCPUセキュリティは設計の完全性に依存している(ex. CPUをとめるユーザプログラム)
アーキテクチャへの支援
- 命令長
- 固定長、固定operand
- load、store 分離
- 状態の退避・格納、オーバーヘッド
- セキュリティの確保
割り込みシーケンスの実現
- ハードウェアによる方法
- マイクロプログラムによる方法