日経BP社
売り上げランキング: 19229
今回からみんな大好きパイプライン。
RISCプロセッサだとパイプラインが一番アツい内容らしいので,前々から楽しみでした。
以下適当にメモ。
概要
- 日時:'10/02/14 17:30~21:00
- 場所:短歌会館
- 参加者:3人
- 内容:前半は「6章 パイプラインを用いた性能向上」の頭の方を読み合わせ。後半はMIPSエミュレータの製作。
6.1 パイプライン処理の概要
- パイプライン処理とは,複数の命令を少しずつずらして同時並行的に実行する実現方式。
- 最近のMIPSは17ステージくらいあるらしいよ?→そんなに分けて何やってんの?
- MIPSを簡易的に5ステージで考えるなら,洗濯物の例も5ステージにすべきだろjk
- 例題でjumpが含まれていないけど,jumpされるとパイプラインが上手く機能しないからだよね。
- μOPって外部に公開されてるの?
- 構造ハザード:一緒に実行される命令の組み合わせにハードウェアが対応出来ない。もうどうしようもない。
- データハザード:まだ前の処理が終わっていなくて計算に必要なデータが揃わない状態。解決策としてフォワーディングという手法がある。フォワーディングとは,計算結果のデータがレジスタやメモリに保存される前に,内部バッファから引き出して使用すること。例題読めばだいたい分かる。
- 制御ハザード(分岐ハザード):条件分岐があるせいで,後続する命令が実行すべき命令か否か判断出来ない状況。解決策はストール,分岐予測,遅延分岐の3つがある。
- ストール:ようはnopして分岐を待つだけ。
- 分岐予測:分岐結果を予測して先行して処理を進めること。履歴から動的分岐予測をすると的中率は90%程度にもなるしい。
- 遅延分岐:依存関係があるものを後回しにして,依存関係がない命令を先に実行すること。
MIPSエミュレータの製作
- MIPSサブセットに絞って,エミュレータを作ろう!
- 各自好きな言語使っていいので,僕はとりあえずJavaにしたけど,Scalaで書けとか言われてる。あとの二人はRubyとHaskellだそうです。
- とりあえずテキストファイルから4byteずつ読み出すだけのファイル処理部分を書いたら時間切れになった。



最近のコメント