記憶の階層


(中間テストの注意)

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.1 命令パイプラインとメモリ

〇「低速大容量のメモリ」のよく使われる一部を「高速小容量のメモリ」にコピー

5.1.2 記憶階層と局所性

〇空間的局所性

〇時間的局所性

〇透過性 -- メモリの階層を意識せずプログラムできる

5.2.1 キャッシュメモリとはなにか (CACHE : CASHではなく、隠れ家の意味)

〇キャッシュメモリは命令パイプラインの速度で動作

〇ライン、ブロック

5.2.2 ライトスルーとライトバック

表5.1

以上