デイビッド・A. パターソン ジョン・L. ヘネシー
日経BP社
売り上げランキング: 45976
仕事忙しくてブログにまとめてる時間がなかったけど,ざっくり書いておく。
今回の内容はかなり重かったので,勉強会後に読み直してみたりした。
制御ユニットの設計するところとかは説明が長いだけで,結局最後に「以上を図ほげほげにまとめる。」とか書いてあるので,そこだけ熟読すればなんとかなる・・・はず。
とりあえず以下適当にメモ。
概要
- 日時:'10/01/24 17:30~21:00
- 場所:短歌会館
- 参加者:4人
- 内容:前半は5章読み合わせの続き,後半はMIPSソフトウェアエミュレータ作成
5.5 マルチサイクルを用いた実現方式
- 単一クロックサイクルは効率悪いから,マルチサイクルに設計変更しようぜ!という話。
- マルチサイクルの利点①:各命令でクロックサイクル数がバラバラでもいい。単一クロックサイクルの時みたいに遅い命令に全部合わせる必要がなくなる。
- マルチサイクルの利点②:1つの命令の実行中に,空いている機能ユニットを共用出来る。例えばデコードしてる時に,次の命令のフェッチをするとか。
- どうやって実現するかというと,データパスの合間合間にレジスタかませて値を保持するようにするだけ。
- 詳細は本参照だけど,IR,MDR,A,B,ALUOUTというレジスタが追加される。
- あと,機能ユニットが異なる目的のために共有されるので,その切替のためにいくつかマルチプレクサも追加されている。→だから制御信号がより複雑になるorz
- で完成したのが図5.28になる。制御信号のほとんどは単一クロックサイクルの時と同じ。新しい制御信号は,新しく追加されたマルチプレクサへの切替信号がいくつかあるだけ。
- 命令実行の各ステップ(フェッチ→デコード→・・・などなど)については図5.30にまとまっている。
- 制御ユニットをどうやって設計するか?→制御仕様をどうやって記述するか?→有限状態機械を使えばいんじゃね?という流れ。
- 有限状態機械はdominion525さんのスーパーマリオの例えが面白かった。マリオがキノコ,フラワー,1upキノコ,クリボーにぶつかることを想定して有限状態機械を上手く説明してくれた。
- Moore方式とMealy方式についてはわかるVerilogHDL入門読書会をやった時に出てきたよね?
5.6 例外
- いままでは例外処理を考慮してなかったので追加しよう!という話。
- 例外と割込みは同じような意味で使われるけど,主としてエラーによるものを例外と呼んでいる。
- EPCレジスタ:問題を起こした命令のアドレスを記録しておくためのレジスタ。
- Causeレジスタ:例外の原因を記録するためのレジスタ。とりあえずここでは未定義命令と算術オーバフローの2つだけを考慮する。
- 未定義命令は単純にOpフィールドで判断出来る。算術オーバフローは付録BのALU設計を読め!ということらしい。
- 上記レジスタに書き込みを行うための制御線として,EPCWrite,CauseWriteも新たに追加する。あと例外原因を切り替えるマルチプレクサへの信号としてIntCauseというのも追加する。
5.7 マイクロプログラミング:制御設計の単純化
- PDFの内容だから省略。CISCの話だから誌面から省略されてるってことか?
5.8 ハードウェア設計言語を使用したディジタル設計の手ほどき
- PDFの内容だから省略。ちらっと見たらVerilogの話みたいだから,あとでコードリーディングとかしようぜ?
5.9 実例:最近のPentiumの実現方式の構成
- ハイパーIntelディスタイムだから省略。たぶんパイプラインとか頑張ってる話だよね?
5.10 誤信と落とし穴
- 複雑な命令をマイクロコードで実現しても,単純な命令の組み合わせよりも遅くなる可能性がある。→RISCプロセッサをCISCプロセッサでエミュレートしているような状態→μOpのこと。→x86ディス?
- 制御記憶に余裕があれば,新しい命令を追加するコストはかからない。→x86は上位互換しすぎてどうのこうの・・・。
5.11 おわりに
- 5章はMIPSサブセットに限定して実際にCPUを設計したりした。→MIPSソフトウェアエミュレータを作ろう!
- 制御部分が一番面倒くさい。→有限状態機械とかで制御仕様をわかりやすく記述することが重要。
最近のコメント