毎度,,ブログにまとめるのが遅くなりました。
今回でやっとパイプラインの章が終わり,パタヘネ本もゴールが見えてきた感じ。
本読み終わったら,次はPDFの内容に進もうという話になっている。
以下適当にメモなど。
概要
- 日時:'10/05/09 17:30~21:00
- 場所:短歌会館
- 参加者:3人
- 内容:6.6~6.12読み合わせ+MIPSエミュレータの製作
6.6 分岐ハザード
- 分岐判定を待つので遅れる,とかそんな話。
- 久し振りで忘れたけど,IMは命令メモリでDMがデータメモリな。
- 分岐ハザードは制御ハザードともいう。
- 分岐するかどうかが分かるのは当然ながら分岐命令実行後,これだと遅い。→分岐判定を前倒ししたい!→IDステージに移そう!
- よく起こるほうを分岐しないほうにしておく。→だから分岐予測で予測するデータが無い場合はデフォで不成立と予測するようになっている。
- 等しいかどうかのチェック→排他的ORして結果の全ビットをANDする。→なんかすげぇ頭いいな。
- P.383の真ん中ら辺で誤記発見。MRM/WBじゃなくてMEM/WBだよね?
- 動的分岐予測の実現形態として,分岐予測バッファ(分岐履歴テーブル)がある。このバッファに分岐が成立したか否かを示すビットを記憶しておく。
- 図6.39は図が悪すぎるだろ。成立①,②とかにして区別してくれよ。
6.7 ハードウェア記述言語によるパイプラインのモデル化と記述
- PDFの内容なのでとりあえず省略するけど,MIPSの実装に役立つと思うのであとで読もうぜ。
6.8 例外
- オーバフローとかそんなやつ。仕組みとしては分岐ハザードの時とほとんど同じ?
- 80000180て急に出てきたけど何これ?→例外ルーチンのアドレスみたいだけど,これはもう決まってるものなの?MIPSの仕様書調べないとわからん。
- パイプライン化されたコンピュータにおける例外,の上のところの線が青いんだけど。。
- MIPSでは,ハードウェアで複数の例外をソートし,先に実行された命令順に割込みをかけるようになっている。
- この節の自己診断,答えを見たけど全然分からない。
6.9 高度なパイプライン処理:性能のさらなる向上
- いきなりヘネパタ読めとか書いてあるんだけど?
- 命令レベルの並列性:パイプラインの段数を増やすこと。(もっと細かく切るということ。)
- 静的な複数命令発行:コンパイラが頑張る話。VLIWともいうが,IntelはEPICとか呼んでる。
- 動的な複数命令発行:スーパスカラとかね。
- 投機実行:見切り発車すること。これをやろうとすると実装が複雑になるらしい。
- Intelの話は適当に飛ばす。
6.10 実例:Pentium4のパイプライン
- 暇な時に読めばいんじゃね?
6.11 誤信と落とし穴
- Pentium4のパイプラインをVerilogで書くと数千行らしい。これは多いの?少なく感じるけど?
- 命令セットの設計でミスるとパイプライン化はより困難になる。
6.12 おわりに
- パイプラインはスループットを向上させるが,命令の実行時間つまりレイテンシを短縮するわけではない。
- Pentium4が素晴らしいだって?
MIPSエミュレータの製作
- dominion525氏による,MIPSエミュレータ製作で学ぶオブジェクト指向の講義になっていた件。(上の写真。)
- R形式,I形式,J形式とか全く別々に実装する必要はない。親のクラスとか子供のクラスとかちゃんと考えよう。→継承(extends)をちゃんと使おう。
- getなんちゃらとかsetなんちゃらとか,各形式で内容は異なるけど必ず実装するようなメソッドは,強制的に実装させた方がよい。→インタフェース(implements)をちゃんと使おう。

コメントする