Hall > Tips > 021 > 04
10/30
命令設計
コントロール命令
書き込みoperandがPCである命令
- 無条件分岐 — PCに値を格納
- 条件分岐 — 条件で違う値を格納
動作が条件により異なることが特殊→条件代入命令が類似
- CALL — PCに格納&戻り番地をどこかに格納
- RETURN — 戻り番地に戻る
- SYSCALL
- RTI
- 何故コントロール命令が特殊か
- オペランドの取り方の振る舞いが異なる
- 条件動作が入る — 書き込み2つ必要
- PCが決まらないと次に進めない
- サブルーチン動作が入る
- 頻繁に呼ばれる
- 3〜5命令に一つはコントロール命令
- 中でも分岐が多い
命令の種類設計
- 算術演算 — 四則演算、論理演算、ビット演算
- シフト — 算術、論理、回転
- 移動 — レジスタ間移動、メモリアクセス
- 分岐 — 無条件分岐、条件分岐
- サブルーチン — 呼び出し、リターン
- その他
- システムコール
- NOP
- HALT
- スタックレジスタウィンドウ操作
- I/O操作
- 特権操作
特権命令
- CPUの実行モード — ユーザー、システム、カーネル
- 保護の目的
- ユーザの保護
- 危険な動作の制限
- システムセキュリティの確保
- 保護の対象
- MMU(Memory Management Unit)動作
- メモリアクセス
- I/O操作
- システム情報の読み出し/書き込み
- 保護メカニズム
- 割り込み、割り出し、システムコールによる移行
- 引数に対する制限、チェック
- 復帰命令によるモードの設定
- PSW内フィールドによる特権モード設定
命令実行フェーズ
- フェーズ分け
- 時間仕事量の均等化 — パイプライン設計
- データパス設計からの制限
- 命令のステートの共有化
- 2フェーズ基本設計
- 命令処理 — 命令フェッチ、デコード
- 実行処理 — operand読み出し、演算、書き込み
- 5フェーズ基本設計
- フェッチ
- デコード
- operand読む
- 演算
- operand書く
データパス設計
- RTL設計 — データの流れから見た設計
- Register Transfer Level
- 各フェーズのRTL記述から得られるもの
ex)
PC ← f(PC);
IR ← MEM(PC);
- CPU内部バス設計 — ハードウェアから見た設計
- 必要なハードウェア資源の相互接続
- 1,2,3バス設計
CPUの制御
- CPUのデータパスを操作して、命令の解釈・実行を実現
- 制御対象
- ALU — 操作の種類(+-,&,ORなど)
- メモリ — 読み出し、書き込み
- レジスタ — 書き込み
- 一時レジスタ — 書き込み、チップセレクト
- MUX — 選択
- バス — OE(出力イネーブル)
- 制御への入力
- 現在のステート
- 命令(又はその一部)
- 算術フラグ
- 分岐条件 etc...
ハードワイヤード制御
- CPUのデータパスを組み合わせて論理回路とステートマシンの組み合わせで操作