(中間テストの注意)
1.出題範囲 教科書2章から4章、およびWEBにある関連資料、前回講義のアセンブラプログラム
2.試験中に教科書を参照するので、教科書、プリント、電卓は持ち込み可、 PCは使用不可。
3.とくに、以下ようなパイプライン図を習得しておくこと。
〇前回の4)のプログラムを例にパイプライン処理図を書いてみる、ただし、ループは2回だけ回るとする。
While ループのコンパイル i, j, k は$s3, $s4, $s5, &save[0] は$s6
While (save[i] == k)
i = i + j;@Loop: add $t1, $s3, $s3 # 2*i
A add $t1, $t1, $t1 # 4*i
B add $t1, $t1, $s6 # &save[i]=> $t1
C lw $t0, 0($t1)
D bne $t0, $s5, Exit
E add $s3, $s3, $s4 # i = i + j
F j Loop
GExit:
前提: データハザードがあると仮定する。JUMP命令アドレスは図4.11と同様にDステージ終了時に確定する。ブランチ命令では分岐予測は無く、Wステージ終了時に命令アドレスが確定する。
注意: 教科書4.6ではFステージは1サイクルごとに実行が開始され、その後ストールしているが、実際には下図のように、ある命令がDステージの実行を開始するときに、次命令はFステージを開始する。
〇「低速大容量のメモリ」のよく使われる一部を「高速小容量のメモリ」にコピー
〇空間的局所性
〇時間的局所性
〇透過性 -- メモリの階層を意識せずプログラムできる
〇キャッシュメモリは命令パイプラインの速度で動作
〇ライン、ブロック
表5.1
以上