ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回...
TRANSCRIPT
1
ハード/ソフト・コデザインの基礎
第8回
神原弘之
京都高度技術研究所(ASTEM RI)
http://www.metsa.astem.or.jp/RUECHIP2/
2
これまでの講義
❚ 第1回 イントロダクション
❚ 第2回 プロセッサとは?プログラムとは
❚ 第3回 プロセッサ(MIPS)の命令の解説
❚ 第4回 プロセッサ(MIPS)の命令の解説(つづき)❚ 第5回 2進数による数値の表現と四則演算
❙ 加算、減算、乗算
❚ 第6回 ソフトウェアの高速実行化(パイプライン)
❚ 第7回 ソフトウェアの高速実行化(ハザード)
3
今日とこれからの講義
❚ 第8回 前回の復習
乗算のハードウェア化による高速化
レポート
❚ 第9回 高位合成について(イントロダクション)
4
ソフトウェアの高速実行化(データハザード)
前回の復習
❚ データハザード
❙ フォワーディングによる解決
❙ ロード遅延スロット
❙ 分岐遅延スロット
5
データハザードとは?
IF
ID $1,$2
EX
MEM
WB $3 add $3, $1, $2
sub $11, $3, $4
;❚ ある命令の実行によるレジスタの値の更新が
後続する命令のレジスタ参照に間に合わない
IF
ID $3,$4
EX
MEM
WB $11
IF
ID
EX
MEM
WB
6
ID ステージ EX ステージ WB ステージMEM ステージ
「 add $3,$1,$2 」 「sub $6, $3, $4 」の実行 (フォワーディングなし、データハザード発生)
データメモリDmem[ ]
命令メモリ
Imem[ ]
ALU MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
A ALUout
PC 8
DAR 2
PC 12
LMD 3
$0 0 $1 2 $2 3 $3 5 : : : $31
Imm
IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4
IR add
A 2
B 3
ALUout 5 ALU
PC 16
IR sub add IR
PC 20
add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4
C 5
add add sub sub
7
ソフトウェアの高速実行化(データハザード)
前回の復習
❚ データハザード
❙ フォワーディングによる解決
❙ ロード遅延スロット
❙ 分岐遅延スロット
8
データハザードの解消方法
IF
ID $1,$2
EX +
MEM
WB $3 add $3, $1, $2
sub $11, $3, $4
;
❚ フォワーディング(バイパシング)
❙ (WBステージでの)レジスタへの書き込みを待たずに
パイプラインの途中の演算結果を利用する方法
IF
ID $3,$4
EX
MEM
WB $11
IF
ID
EX
MEM
WB $11
9
データハザードの解消方法(つづき)
IF
ID $1,$2
EX +
MEM
WB $3 add $3, $1, $2
sub $11, $3, $4
;
❚ フォワーディング(バイパシング)
❙ (WBステージでの)レジスタへの書き込みを待たずに
パイプラインの途中の演算結果を利用する方法
IF
$3,$4
EX
MEM
WB $11
IF
ID
EX
MEM
WB
10
データハザードの解消方法(つづき)
IF
ID $1,$2
EX +
MEM
WB $3 add $3, $1, $2
sub $11, $3, $4
;
❚ フォワーディング(バイパシング)
❙ (WBステージでの)レジスタへの書き込みを待たずに
パイプラインの途中の演算結果を利用する方法
IF
$3,$4
MEM
WB $11
IF
ID
EX
MEM
WB
11
データハザードの解消方法(つづき)
IF
ID $1,$2
EX +
MEM
WB $3 add $3, $1, $2
sub $11, $3, $4
;
❚ フォワーディング(バイパシング)
❙ (WBステージでの)レジスタへの書き込みを待たずに
パイプラインの途中の演算結果を利用する方法
IF
$3,$4
WB $11
IF
ID
EX
MEM
WB
12
ID ステージ EX ステージ WB ステージMEM ステージ
「 add $3,$1,$2 」 「sub $6, $3, $4 」の実行 (フォワーディングによるハザードの回避)
データメモリDmem[ ]
命令メモリ
Imem[ ]
ALU MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
A ALUout
DAR 2
LMD 3
Imm
IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4
A 2
B 3
ALUout 5 +
add
PC
add sub add IR sub
A 5
13
IF ステージ add $3,$1,$2 nop sub $5,$3,$4
WB ステージ
「 add $3,$1,$2 」 「nop」 「sub $6, $3, $4 」の実行 (フォワーディングによるハザードの回避)
データメモリDmem[ ]
命令メモリ
Imem[ ]
ALU MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
A ALUout
PC
DAR 2
LMD 3
$0 0 $1 2 $2 3 $3 5 : : : $31
Imm
A 2
B 3
ALUout 5 ALU
IR sub
C 5
add nop
A 5
MEM ステージ
14
add $3,$1,$2 nop nop sub $5, $3, $4
「 add $3,$1,$2 」 「nop」 「nop」 「sub $6, $3, $4 」の実行(フォワーディングによるハザードの回避)
データメモリDmem[ ]
命令メモリ
Imem[ ]
MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
A ALUout
PC
DAR 2
LMD 3
$0 0 $1 2 $2 3 $3 5 : : : $31
Imm
A 2
B 3
ALUout 5 ALU
add add sub
C 5
add add sub nop nop IR sub
A 5
WB ステージ
15
ソフトウェアの高速実行化(データハザード)
前回の復習
❚ データハザード
❙ フォワーディングによる解決
❙ ロード遅延スロット
❙ 分岐遅延スロット
16
ロード遅延スロットとは
(パイプラインでフォワーディングを行っても)
❚ ロード命令の直後の命令は(直前の)ロード命令でレジスタに読み込まれた値を参照できない
❚ ロード遅延スロットと呼ぶ
(解決方法は)
❚ ロード命令の実行に影響を与えない命令を ロード遅延スロットに挿入する
17
DAR
ID ステージ EX ステージ WB ステージMEM ステージ
「 lw $3, 0($1) 」 「sub $6, $3, $4 」の実行 (フォワーディングしたがハザードは発生)
データメモリDmem[ ]
命令メモリ
Imem[ ]
MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
ALUout
LMD 3
Imm
IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 lw $3, 0($1) sub $5,$3,$4
IR
A
B
PC
lw IR sub
DAR
+
18
IF ステージ MEM ステージlw $3, 0($1) nop sub $5,$3,$4 WB ステージ
「 lw $3, 0($1) 」 「nop」 「sub $6, $3, $4 」の実行 (ロード遅延スロットへの nop 命令挿入によるハザードの回避)
データメモリDmem[ ]
命令メモリ
Imem[ ]
ALU MUX
$0 0 $1 2 $2 3 $3 ? : : : $31
C
SMD
B
ALUout
PC
DAR
LMD 3
$0 0 $1 2 $2 3 $3 5 : : : $31
Imm
A ALUout
IR IR sub lw nop
19
ソフトウェアの高速実行化(データハザード)
前回の復習
❚ データハザード
❙ フォワーディングによる解決
❙ ロード遅延スロット
❙ 分岐遅延スロット
20
分岐遅延スロットとは
(パイプラインでフォワーディングを行っても)
❚ 分岐命令の直後の命令は実行されてしまう
❚ 1命令の遅れで分岐 → 遅延分岐(Delayed Branch)
❚ 分岐遅延スロットと呼ぶ
(解決方法は)
❚ 分岐命令の実行に影響を与えない命令を 分岐遅延スロットに挿入する
21
本日の講義
前回の復習
❚ データハザード
❙ ロード遅延スロット
❙ 分岐遅延スロット
❚ 乗算のハードウェアによる高速化について
❚ レポートについて
22
0 0 1 1 1 1
2進数の乗算その1
310×510は?(10進数での3×5) 符号ビットを除く
0 1 1 × 1 0 1
0 0 1 1 0 0 0 0
+) 0 0 1 1
被乗数 乗数
積
23
2進数の乗算その1(つづき)
a2 a1 a0
× b2 b1 b0
p02 p01 p00
pij = bi ・ aj
p12 p11 p10
+) p22 p21 p20
m5 m4 m3 m2 m1 m0
pij を部分積と呼ぶ
pij はajと biの論理積
部分積の和が積
24
0 0 0 1 0 1
2進数の乗算その2 (Booth)
310×510は?(10進数での3×2) 符号ビットを除く
0 1 1
+
0 1 1 1 0 1 加算 0 0 1 1 1 0 右シフト0 0 1 1 1 0 なし0 0 0 1 1 1 右シフト0 1 1 1 1 1 加算 0 0 1 1 1 1 右シフトP B
A A に被乗数をセットB に 乗数をセットP は 0をセット
P に積の上位ビットB に積の下位ビット
25
2進数の乗算その2(Booth つづき)
B の最下位ビットP = P + A
(P, B ) を1ビット右シフト
繰り返し回数
1 0
A に被乗数、B に乗数、P を0にセット
n
n 未満
(P, B ) に積
26
2進数の乗算その2(Booth つづき)
310×510は?(10進数での3×2) 符号ビットを除く
011 000 101 A 被乗数 P B 乗数
011 011 101P =P +A
011 001 110(P, B) を右に1ビットシフト
P はそのまま
011 000 111011 011 111
(P, B ) を右に1ビットシフト
011 001 110
P =P +A
(P, B) を右に1ビットシフト 011 001 111
A に被乗数、B に乗数、P を0にセット
27
本日の講義
前回の復習
❚ データハザード
❙ ロード遅延スロット
❙ 分岐遅延スロット
❚ 乗算のハードウェアによる高速化について
❚ レポートについて
28
2進数の乗算その3(配列型乗算器)
入力が2つのn ビット幅2進数の時
❚ 回路の規模:FA(Full Adder) が n2 に比例
❚ 回路の段数: FA(Full Adder) が n 段
❚ 構造が単純で規則正しい(LSI で実現しやすい)
29
2進数の乗算その3(配列型乗算器つづき)
m5 m4 m3 m2 m1 m0
a2・b0 a1・b0 a0・b0
a1・b1 a0・b1
a2・b1
a1・b2 a0・b2
a2・b2
0
0 0
FA FA
FAFA
FA FA
a Cin b
Cout s
FA
30
2進数(2の補数)の加算 (おさらい)
Full Adder:全加算器とは
a b cin cout s
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
0 00 10 11 00 11 01 01 1
a Cin b
Cout s
FA
31
2進数の乗算その4(Wallace Tree)
m5 m4 m3 m2 m1 m0
0 a2・b0 a1・b0 a0・b0 a2・b1 a1・b1 a0・b1
0
a2・b2 a1・b2 a0・b2 0
FA FA
FA
FA FAFA
FA
Carry Look-Ahead Adder 0
0
a Cin b
Cout s
FA
32
2進数の乗算その4(Wallace Tree)
入力が2つのn ビット幅2進数の時
❚ 回路の規模:FA(Full Adder) が n2 に比例
❚ 回路の段数: FA(Full Adder) が (log n) 段に比例
❚ 配線が複雑になる(LSI で実現しにくい)
33
本日の講義
前回の復習
❚ データハザード
❙ ロード遅延スロット
❙ 分岐遅延スロット
❚ 乗算のハードウェアによる高速化について
❚ レポートについて
34
レポートについて
締切
❚ 11月29日(火)の本講義(の終了前まで)、紙で提出
フォーマット (Microsoft Word2000 形式)
❚ http://www.metsa.astem.or.jp/codesign/report08.doc
手書き
❚ 本日配布資料に記入して、提出
35
レポートの課題
課題1
❚ 以下のCプログラムを MIPS のアセンブリ記述プログラムに変換してみよ
❚ for ( i=0; i<100; i = i +1) { a[i] = b[i] + c; }
36
レポートの課題(つづき)
課題1 前提条件
❚ aと b は配列で、そのデータメモリ上の開始アドレスはそれぞれ 1000 と 2000 とする。
❚ 変数 i は $2、変数 c は $3 を用いる。
❚ また、$4 には整数1、$5 には整数 100 が格納されているものとする
❚ ロード遅延スロットと分岐遅延スロットによるデータハザードについて、考慮すること。
37
レポートの課題(つづき)
課題1 ヒント
❚ b[i] の参照は、以下のように変換される
(b[] は $6 を用いるとすると)
❚ lw $6, 2000($2)
38
レポートの課題(つづき)
課題2
❚ パイプライン化された MIPS プロセッサが「beq $1, $2, Label」命令を実行した際、直後の分岐スロットの命令は、分岐が発生する場合も発生しない場合も実行されることを図を用いて説明せよ。
❚ (IF ステージと ID ステージのレジスタのデータのやり取りを図で説明すること)
39
40
41
レポートの課題(つづき)課題3
❚ Sony Computer Entertainment 社のゲーム機: PS、PS2、PSP、PS3について、各機種で用いられているプロセッサについて調べ、(機種間のプロセッサの)共通点、相違点、互換性、(世代交代で)強化された機能、について述べよ
42
レポートの課題(つづき)
課題3 のヒント
❚ Google などのインターネット検索エンジン
❚ 日経エレクトロニクスの過去数年間の記事
43
レポートの課題(つづき)
課題4 Wallace Tree を用いて乗算器を構成する方法について調査を行い、
❚ ❚ 課題4.1 Wallace Tree で乗算器を構成する方法を述べよ
❚ ❚ 課題4.2 2つの5ビット幅の2進数を入力とする Wallace
Tree を用いた乗算器を設計して(FAを用いた)回路図で示すこと
44
レポートの課題(つづき)
課題4 ヒント
❚ インターネット上で Wallace Tree もしくは Wallace木で検索
❚ 情報処理学会誌 1996年1月号、2月号を参考にする