Hall > Tips > 021 > 02
10/09
命令セットアーキテクチャ
命令形式
- 命令
- CPUに具体的動作を伝える
- CPUの動作環境を規定
- CPU動作を決めるもの
- 命令 - メモリ・レジスタ・内部レジスタの値から次の値を設定
- 外部からのメモリバスアクセス(キャッシュメモリの一貫性)
- 外部割込み信号(CPUに動作の変更を通知)
- オペランド - メモリ・レジスタ・システムレジスタ・即値・スタック・キュー
- 命令長
- 固定長 - データ基本長 = 命令長ならば、即値に問題
- 可変長 - パイプライン設計の困難、命令シーケンス
- オペランド数
- 4 : 入力1,2,出力,次アドレス
- 3 : 入力1,2,出力 + 分岐命令
- 2 : 入力1,入出力2 + 分岐命令,MOV命令
- 1 : 入出力1 + アキュムレータ + 分岐命令
- 0 : オペランドはスタックトップ、スタック計算機
- VLIW (多数のオペランドを取る)
命令形式設計
- 歴史的変遷 〜ハードウェア制約、ソフトウェア制約
- 1→4→2→0
1→4→2→3→多数(VLIW)
- 固定→可変→固定→長い固定
固定→可変→固定→短い固定
- 現在
- 固定長→基本Data長と同じ(32,16bit)
- 可変長→バイトコード
- ILP→命令設計へ新たな視点
- VLIW→非常に長い命令
命令設計の要点
- Userのプログラムが
- 短い動的命令実行数
- 短い静的命令実行数
- 短いクロック同期
- 短いCPI
- キャッシュミスをより少なく発生→小さい命令、プリフェッチ等
- パイプラインハザードが少ない→命令レベル並列性の使いやすさ
- 分岐ミスを少なく発生→場面に応じた分岐命令,分岐予測メカニズムとの相性
- システムプログラムが
- 安全 — 保護メカニズムの完全性,カーネル↔ユーザ,ユーザ↔ユーザ
- 高速
- システムの切り替えの高速性(processorのState数,メモリコンテクスト)
- ハードウェアが
メモリのアドレス付け
- バイトアドレス→アラインメント問題
- ワードアドレス→文字列の扱い
- 均一アドレス→命令オーバーヘッド小
- セグメント拡張アドレス→アドレス指定幅小
- 多彩なアドレシングモード
- アドレス計算に要する命令数の減少
- クリーンなコードの生成
- アクセス属性の欠如