17.
基本的なパイプライン
5段のパイプライン!
IF:命令フェッチ!
RF:命令デコード!
EX:命令実行!
MEM:保存先計算!
WR:保存(メモリ、レジスタ)
IF RF EX MEM WR
18.
クイズ1
命令の実行時間を考える
19.
問題1
次の二つのパイプラインがあります。!
1命令を何クロックで実行できるでしょう
か?
IF RF EX MEM WR
IF RF EX MEM WR
2 1 3
その1
その2
Clock数
20.
回答1
どちらも10クロックです。
IF RF EX MEM WR
2 2 2 2 2
IF RF EX MEM WR
2 1 3
その1
その2
Clock数2 2
21.
クイズ2
もしステージごとの動作クロッ
クがバラバラだとどうなる?
22.
問題2
次の二つのパイプラインがあります。!
20クロックで何命令実行できるでしょうか?
IF RF EX MEM WR
IF RF EX MEM WR
2 1 3
その1
その2
Clock数
23.
回答2
その1:6命令
IF RF EX ME WR
IF RF EX ME WR
IF RF EX ME WR
IF RF EX ME WR
IF RF EX ME WR
IF RF EX ME WR
命令1
命令2
命令6
・パイプラインの各ステージ:スレッド!
・クロックの立ち上がり:周期タイマーイベント!
をイメージすると分かりやすいかも
24.
回答2
その2:4命令
IF EX MEM WR
IF EX MEM WR
IF EX MEM WR
IF EX MEM WR
IF EX MEM
未完了
命令1
命令2
命令4
命令5
27.
問題3
このパイプラインは1クロックに1命令を実行
できません。なぜでしょうか?
IF RF EX MEM WR
Cache
RAM
各ステージは1クロックで動
作するとします。
28.
回答3
1つのメモリ(キャッシュ)に対し、同時に
「読み出し」、「書き込み」は不可能。
IF RF EX MEM WR
Cache
RAM
読み出し中は書き込み不可!
書き込み中は読み出し不可
29.
ハーバードアーキテクチャ
命令とデータを同時にアクセスするには、命
令バスとデータバスを分ける必要がある。!
CPUには「命令キャッシュ」と「データ
キャッシュ」がある。
IF RF EX MEM WR
Inst!
Cache
Data!
Cache
30.
クイズ4
連続した命令の問題
31.
問題4
次のようなプログラムがあります。!
この場合、1クロックに1命令を実行すること
は不可能です。なぜでしょうか?
ADD, R0, R1! // R0 = R0 + R1!
CMP, R0, R2! // R0 = R2 ?!
a = a + b;!
if (a == c) {!
32.
回答4
命令1の結果がR0に書き込まれる前に、命令2
がR0を使うから。!
これをハザードと呼びます。
IF RF EX ME WR
IF RF EX ME WR
命令1
命令2
ADD, R0, R1! // R0 = R0 + R1!
CMP, R0, R2! // R0 = R2 ?!
33.
解決策
フォワーディング!
IF RF EX ME WR
!
IF RF EX ME WR
命令スケジューリング!
命令順序入れ替え、NOP命令挿入!
インターロック!
パイプラインをストールする
命令1
命令2
34.
クイズ5
分岐命令の問題
35.
問題5
条件分岐命令があります。分岐する、しない
をどのように判断したら良いでしょうか?
命令1
IF RF EX ME WR
命令2
IF RF EX ME WR
命令3 IF RF EX ME WR
分岐命令
分岐しなけ
れば命令2
分岐するなら命令3 IF RF EX ME WR
命令1がEXステージを完了しないと、どちらを読むか確定しない。!