Pipelining
EdyWin
1
Pipelining adalah teknik pemrosesan dengan mengoverlapkan eksekusi beberapa sub-proses. Tenik pemrosesan : (a) Sekuensial, (b) Paralel (c) Pipeline Contoh : Proses pencucian baju. Ani, Budi, Cindy dan Dani masing masing mempunyai sekeranjang baju kotor yang harus dicuci, dikeringkan dan kemudian disetrika.
Pekerjaan :
Sub-pekerjaan 1
Sub-pekerjaan 2
Sub-pekerjaan 3 EdyWin
A
B
C
D
Pencucian
4 cucian
( 40 menit)
Pengeringan ( 30 menit)
Penyetrikaan ( 20 menit )
Waktu total : 90 menit 2
Laundry sekuensial untuk 4 cucian. waktu t
u r u t a n c u c i a n
A
40
30
1
1
20 40
30
20 40
30
20 40
30
20
menit
1
B
1
1
1
C
1
1
D
1
1 90 menit
90 menit
90 menit
1
1
90 menit
Proses laundry 4 cucian secara sekuensial membutuhkan 1 EdyWin mesin cuci, 1 pengering dan 1 tukang-setrika , waktu total = 4x90 menit 3
Laundry Paralel untuk 4 cucian t waktu 40 A
1
30 1
20
menit
1
Proses laundry 4 cucian secara paralel B
2
2
C
3
3
2
membutuhkan : 4 mesin cuci, 4 pengering dan 4 orang penyetrika,
3
waktu total = 90 menit D EdyWin
4
4
4
90 menit
4
Laundry Pipeline untuk 4 cucian t
waktu
u r u t a n c u c i a n
A
40
40
1
1
40
40
40
40
40
40
40
menit
1
Proses laundry secara pipeline B
1
1
1
1
1
C
membutuhkan 1 mesin cuci, 1 pengering , 1 orang penyetrika
1
1
D
1
1
waktu total = 6 x 40 menit = 240 menit Tp = 1 Pipeline Cycle = Max { 40 , 30 , 20 }
EdyWin
Tp
Tp
Tp
Tp
Tp
Tp
= 40 menit
5
Sekuensial :
Pekerjaan berikutnya baru bisa dimulai setelah pekerjaan sebelumnya diselesaikan. 2 pekerjaan diselesaikan
1 pekerjaan (A) 1 pekerjaan (B)
1 pekerjaan (C) 1 pekerjaan (D)
Pipelined : Dengan mengoverlapkan sub-pekerjaan , pekerjaan berikutnya bisa dimulai tanpa menunggu selesainya pekerjaan sebelumnya 1 2 3 4
A
B A
C B A
C B A
C B
Pipelining meningkatkan throughput EdyWin pekerjaan
C
t 3 pekerjaan diselesaikan
6
Pipelined : Untuk pemrosesan secara pipeline, Pecah setiap pekerjaan menjadi K sub-pekerjaan.
sub pekerjaan 1
sub pekerjaan 2
sub pekerjaan 3
sub pekerjaan K
Bila k adalah tunda eksekusi sub-pekerjaan k , maka pipeline-cycle Tp = max , ... ,
EdyWin
7 waktu
Gantt Chart Gantt Chart adalah diagram ruang-waktu yang digunakan untuk menggambarkan aktifitas proses pipelining. Contoh 1 : Untuk sebuah proses yang dapat didekomposisi menjadi 2 sub-proses ( Pipeline 2-ruas ) , Gantt Chartnya adalah sebagai berikut : space (= sub proses )
Oi : output pekerjaan i O1
O2 O3
O4
O5
On
2 1 time I1 EdyWin
I2
I3
I4
I5
In-1 Ii : input pekerjaan i
In 8
Contoh 2 : 0 output
Pipeline 4-ruas, K = 4
n output
T 1 2 3 4
(k-1)T
n.T
In
latency Pada daerah latency , pipeline belum menghasilkan output EdyWin
9
Berapakah jumlah pekerjaan yang dapat diselesaikan oleh (a) proses pipeline (b) proses non-pipeline ??? Berapakah peningkatan throughput oleh proses pipeline ???? (k-1)T
n.T o1
1 2 3 4
1 2 3 EdyWin 4
on
Pipeline 4-ruas
Non-Pipeline 10
Peningkatan throughput (jumlah pekerjaan yang dapat diselesaikan per satuan waktu) dengan pipeline k-ruas : Untuk eksekusi n buah pekerjaan, Non-pipeline : Waktu eksekusi = n . k .T
(1)
Pipeline
(2)
: Waktu eksekusi = n.T + (k-1) . T latency
Peningkatan throughput =
(1) (2) n.k
= k + (n-1)
~ ~
k
utk n >> 1
ideal EdyWin
11
Peningkatan throughput dengan pipeline
Peningkatan throughput eksekusi instruksi dengan pendekatan pipeline
INSTRUCTION PIPELINE
EdyWin
12
INSTRUCTION PIPELINE Arsitektur pipeline untuk pekerjaan eksekusi instruksi
eksekusi instruksi I1 eksekusi instruksi I2 eksekusi instruksi I3 eksekusi instruksi I4 t Eksekusi sebuah instruksi disebut 1 instruction-cycle. Sub pekerjaan EdyWin
1 instruction cycle mempunyai pola beraturan (sama untuk semua instruksi) 13
1 Instruction Cycle = 1 set sub-cycle = sub proses
Instruction 1
Fetch Instruction
2
Decode Operand
3 4
sub-cycle 3; waktu yg dibutuhkan : 3
Execute
sub-cycle 4; waktu yg dibutuhkan : 4
Store Next
6
Instruction EdyWin
sub-cycle 2; waktu yg dibutuhkan : 2
Fetch
Result
5
sub-cycle 1; waktu yg dibutuhkan : 1
sub-cycle 5; waktu yg dibutuhkan : 5 sub-cycle 6; waktu yg dibutuhkan : 6 14
Dengan struktur pipeline, i harus diseragamkan
Misal :
1 = 20 ndet 2 = 3 ndet 3 = 20 ndet 4 = 5 ndet 5 = 20 ndet
maka, Pipeline Cycle = ?
Tp = Max { i } , untuk i = 1, ... ,6 Tp = 20 detik
1 = 3 ndet
EdyWin
15
masalah !
Instruction Fetch Instruction Decode Operand Fetch Execute Result Store Next Instruction EdyWin T=20
ndet
Instruction
20 20
idle
23 25
Fetch
Instruction 3 20
Decode Operand
20 20
25 25
Fetch
Execute
5 20
Result 20 20 23 25
Store Next
3 20
diatasi dengan
Instruction
Pengelompokan sub-cycle 16 T = Max{23,25,23} = 25 ndet
Instruction Pipeline 5-ruas IF
: Baca satu instruksi dari memory (Instruction Fetch)
ID/OF : Instruksi di interpretasikan (Instruction Decode) dan Operand dibaca dari register atau dari memory (Operand Fetch) EX
: Laksanakan perintah yang dimaksud oleh instruksi (Execution)
STO : Simpan hasil eksekusi ke memory (MEM : Memory)) atau Simpan hasil eksekusi ke register (WB: Write Back) STO
IF EdyWin
ID/OF
EX
MEM
WB 17
Hardware untuk pipeline Instr
datIn
Data Mem.
21:0
Xtnd << 2 18:14
regA
4:0
P C
Instr. Mem.
datA
addr
aluA
regB Reg. Array datW datB regW
29:25
12:0
datOut
ALU aluB
Xtnd
Wdest IncrPC n P C
Wdata STO IF
instruction fetch EdyWin
ID/OF
EX
MEM
WB
instruction decode/ operand fetch
execute/ address calculation
memory access
write back 18
Eksekusi instruksi RR (operand operandnya terletak dalam register) reg[R1] reg[R1] op reg[R2] • IF: Instruction fetch IR Memory[PC] PC increment [PC]
(alamat instruksi yang akan dieksekusi pada instruction cycle berikutnya)
• ID: Instruction decode/operand-fetch A register [R1] A dan B: register register pada bagian B register [R2] input ALU • Ex: Execute ALUOutput A op B • MEM: Memory nop
(nop = no operation, tidak ada penulisan hasil ALU ke memory)
• WB: Write back Register[R1] EdyWin
ALUOutput
(menuliskan hasil ALU ke register R1) 19
Eksekusi instruksi dengan operand sumber1 di register, operand sumber2 dan operand hasil di memory mem[M1] r[R1] op mem[M1] • IF: Instruction fetch IR <-- IMemory[PC] PC Incr [PC] • ID: Instruction decode/operand-fetch A register [R1] B mem [M1] • Ex: Execute ALUOutput A op B • MEM: Memory Mem [M1] ALUOutput
hasil disimpan di memory
• WB: Write back EdyWin –
nop
no-operation, hasil tidak disimpan di register20
Eksekusi instruksi percabangan bersyarat • IF: Instruction fetch IR IMemory[PC] PC incr.PC • ID: Instruction decode/operand-fetch nop • Ex: Execute Target PC + displacement • MEM: Memory PC Target atau • WB: Write back nop
EdyWin
BRZ
Branch if Zero syarat percabangan
displacement (relative addressing mode)
tidak ada operand-fetch menghitung alamat target (= alamat instruksi berikutnya) Bila syarat percabangan dipenuhi
alamat penyimpanan instruksi berikutnya tergantung dari hasil pengujian syarat (hasil ALU = 0 ? ) 21
Pipeline Hazards Hazard adalah keadaan yang dapat menimbulkan tunda (delay, stall) pada pipeline. Pada keadaan stall, pipeline tidak menghasilkan output sehingga peningkatan throughput ideal tidak dapat dicapai. o1
oM
ideal
I1
IM
o1
oN
real
N<M I1 EdyWin
Ij
Ij+1
IN
stall
22
Tiga tipe hazard : Structural hazards: terjadi akibat konflik penggunaan hardware resources (memory, register, unit fungsional,...) Data hazards contoh : sebuah instruksi membutuhkan data yang belum selesai diproses oleh instruksi sebelumnya Control hazards keputusan kendali sebagai hasil eksekusi instruksi sebelumnya belum diketahui. contoh : alamat instruksi yang harus dieksekusi berikutnya (setelah instruksi percabangan bersyarat) belum EdyWin diketahui.
23
Structural hazards Sumber sumber hazard Mi : Bagian memory yang menyimpan instruksi (program) Md : Bagian memory yang menyimpan data (operand) Reg : Register register didalam CPU IF
ID/OF
EX
MEM
WB t
Reg/ Md
ALU
Mi
Md
Reg
lokasi operand : di memory atau didalam register CPU EdyWin lokasi
instruksi: di memory
24
Mi
Reg/ Md
Mi
MEM
WB
Md
Reg
Reg/ Md
Md
Reg
Reg/ Md
Md
Reg/
ALU
Mi
Ins.4
Mi
Ins.5 EdyWin STRUCTURAL
Reg/ Md
HAZARD
Reg
ALU
Mi
Md
Md: data memory Mi : instruction memory
ALU
Ins.3
EX
ALU
Ins.2
ID/OF
ALU
Ins.1
IF
t
Md
Reg
Md 25
Bila digunakan memory yang dual-port, sehingga akses ke Mi dan Md dapat dilakukan serentak, maka konflik dapat dihindari.
EdyWin
Md
Reg
Reg/ Md
Md
Mi
Reg/ Md
Mi
Reg/ Md
Mi
Reg
Md
Reg
Md
Reg/ Md
ALU
Ins.5
Mi
WB
ALU
Ins.4
Reg/ Md
MEM
ALU
Ins.3
Mi
EX
ALU
Ins.2
ID/OF
ALU
Ins.1
IF
Reg
Md 26
Dual port memory
Single port memory port instruksi
instruksi/ program
instruksi port instruksi/ data
port data data data
EdyWin
27
DATA HAZARD
akibat adanya ketergantungan data antar instruksi
ADD R1, R2, R3 SUB R4, R1, R3 AND R6, R1, R7 OR
ada ketergantungan data antar instruksi !
R8, R1, R9
XOR R10, R1, R11
Misalkan mula mula nilai R1 = 5 , R2 = 1, R3 = 2, R7 = 4, R9 = 8, berapakah seharusnya nilai akhir R4, R6 dan R8 ? Non-pipeline : R4 = ? , R6 = ? , R8 = ? Pipeline EdyWin
: R4 = ? , R6 = ? , R8 = ? 28
T1
ID/OF
EX
MEM
Mi
baca r2,r3
Md
or r8,r1,r9
EdyWin
DATA HAZARD
baca r1, r9
Mi
Reg
Md
Reg
Md
baca r1,r11
ALU
xor r10,r1,r11
harga r1 tak-tentu
harga r1 yang baru
r1
baca r1, r7
Mi
T7
simpan
Md
harga r1 lama
T6
ALU
Mi
and r6,r1,r7
WB
ALU
Mi
baca r1, r3
T5
ALU
sub r4,r1,r3
IF
ALU
add r1,r2,r3
T2
t (clock cycles) T3 T4
Reg
Md 29
NON-PIPELINE
R1
R2
R3
5
1
2
4
8
1
ADD R1, R2, R3
3
1
2
4
8
1
SUB R4, R1, R3
3
1
2
4
8
1
AND R6, R1, R7
3
4
8
1
OR
3
11
8
1
11
8
R8, R1, R9
XOR R10, R1, R11
PIPELINE
3
R4
R5
R6
1 0
1
2
1
0
3
4
R7
R8
R9
R10 R11
8
1
8 13 atau 11
tidak sama EdyWin
30
Klasifikasi data hazards
program
Tipe ketergantungan data antar instruksi: (Instruksi Ii adalah instruksi yang dieksekusi sebelum instruksi IJ) – RAW -- read after write – Instruksi J mencoba
II IJ
membaca data sebelum instruksi I mengubahnya. – WAR -- write after read –instruksi J mencoba mengubah (write) data sebelum data tersebut dibaca oleh instruksi I. – WAW -- write after write – Instruksi J mencoba menulis (mengubah) sebuah data sebelum data tersebut diubah oleh instruksi I. Urutan penulisan salah.
EdyWin
31
Deteksi sumber data hazard LD DADD DSUB OR AND
R1, 45(R2) R5, R6, R1 R8, R6, R7 R7, R5, R8 R7, R1, R5
LD DADD DSUB OR AND
R1, 45(R2) R5, R6, R1 R8, R6, R7 R7, R5, R8 R7, R1, R5
LD DADD DSUB OR AND
R1, 45(R2) R5, R6, R7 R8, R1, R7 R7, R5, R8 R7, R1, R5
LD DADD DSUB OR EdyWin AND
R1, 45(R2) R5, R6, R1 R8, R6, R7 R7, R5, R8 R7, R1, R5
write R1 read R1 write R8 read R8
read R6 read R6
RAW
RAR* read R5 read R5
read R7 write R7
WAR
WAW write R7 write R7
32
Contoh : Untuk format instruksi opcode Tipe Data Hazard
operand-tujuan , operand-sumber1 , operand-sumber2 Contoh R1, 45(R2) R5, R6, R1
Deteksi
RAW
Ii : LD Ii+1 : DADD
RAR
Ii : DADD Ii+1 : DSUB
R5, R6, R1 R8, R6, R7
operand sumber pada instruksi Ii = operand sumber pada instruksi Ii+1 ?
WAR
Ii : DSUB Ii+1 : OR
R8, R1, R7 R7, R5, R8
operand sumber pada instruksi Ii = operand tujuan pada instruksi Ii+1 ?
WAW
Ii : OR Ii+1 : AND
R7, R5, R8 R7, R1, R5
operand tujuan pada instruksi Ii = operand tujuan pada instruksi Ii+1 ?
operand tujuan pada instruksi Ii = operand sumber pada instruksi Ii+1 ?
EdyWin 33 Deteksi dapat dilakukan secara hardware maupun secara software (oleh compiler)
Deteksi secara Software Kompiler mengenali sumber data hazard dan menambahkan instruksi NOP (no operation) untuk mengeliminasi data hazard
SUB
R2, R1, R3
;
NOP
;
NOP
;
NOP
;
AND
R12, R2, R5
OR
R13, R6, R2
ADD
R14, R2, R2
SW
100 (R2), R15
;
isi register R2 diubah 3 instruksi no operation isi R2 yg baru sudah dapat digunakan
atau instruksi instruksi yang tidak menimbulkan data hazard EdyWin
34
Untuk ruas program dibawah ini, dimana saja instruksi NOP harus disisipkan ?
sub R2, R1,R3 and R4, R2,R5 or R8, R2,R6 add R9, R4,R2 slt R1, R6,R7
EdyWin
35
t (clock cycles)
Mi
Reg
bubble
NOP NOP
EX
bubble
bubble
MEM
Md
bubble
bubble
bubble
NOP
WB
harga r2 yang baru
Reg
bubble
bubble
bubble
bubble
bubble
bubble
Mi
Reg
membaca r2 yang sudah diubah oleh instruksi sub
bubble
bubble
ALU
and r12,r2,r5 EdyWin
ID/OF
ALU
sub r2,r1,r3
IF
bubble
Md 36
Disamping Data Hazard, kompiler juga dapat mendeteksi potensi terjadinya structural hazard, sehingga kompiler dapat menyisipkan instruksi NOP pada saat kompilasi.
Apa kelemahan penyisipan instruksi NOP untuk mengatasi data-hazard atau Structural hazard ????
EdyWin
37
Control Hazard
Add BRZ Load Sub Mult
AND SHL Add
EdyWin
Hazard tipe ini ditimbulkan oleh perubahan aliran eksekusi instruksi, sebagai hasil eksekusi instruksi percabangan (BRANCH, JUMP, CALL, GOTO,...) atau interupsi Bila dari hasil pengujian syarat dipenuhi maka instruksi berikutnya adalah instruksi AND, tetapi bila syarat tidak dipenuhi maka instruksi berikutnya adalah instruksi Load Dari eksekusi instruksi BRZ, alamat instruksi berikutnya (target) baru diketahui pada waktu instruksi BRZ berada pada ruas MEM, atau setelah syarat diuji (pada ruas EX) Pada saat itu instruksi2 Load, Sub dan Mult sudah (terlanjur) masuk pipeline.
38
alamat
instruksi
0
Ia
1
Ib
2
Ic
3
Id
4
Ie
5
If
6
Ig
7
Ih
8
Ii
9
Ij
10
Ik
EdyWin
displacement
Misalkan Ic = instruksi BRZ 4 isi PC (= 3), yaitu bila syarat tidak dipenuhi Alamat next-instruction = Alamat target = PC + 4, yaitu bila syarat dipenuhi
39
Eksekusi instruksi percabangan bersyarat misal
BRZ
• IF: Instruction fetch IR IMemory[PC] PC incr.PC alamat next-instruction • ID: Instruction decode/operand-fetch nop tidak ada operand-fetch • Ex: Execute pengujian syarat apakah hasil ALU = 0 ? Target PC +displacement menghitung alamat target (alamat instruksi berikutnya) • MEM: Memory PC Target Bila syarat percabangan dipenuhi. Bila tidak dipenuhi mk digunakan isi PC hasil inrement pada fase IF • WB: Write back Tergantung hasil pengujian nop EdyWin syarat pada fase EX
40
Mem
Mem
Reg
Mem
Load
Reg
Reg
Mem
EdyWin
Reg
Mem CONTROL HAZARD
Mem
Reg
Reg
ALU
AND
Mem
Reg
ALU
dibatalkan (flush)
Reg
Mem
ALU
Mult
Mem
Mem
Sub
Reg
ALU
Mem
ALU
BRZ
Reg
ALU
Add
41
Deteksi control hazard secara software oleh kompiler dapat dilakukan. Instruksi NOP akan disisipkan dibawah instruksi percabangan. Berapa jumlah instruksi NOP yang harus dididipkan dibawah intruksi percabangan bersyarat dan berapa untuk instruksi percabangan takbersyarat ?
EdyWin
42
DETEKSI HAZARD dan STALL SECARA HARDWARE Untuk deteksi hazard dan stall secara hardware, sebuah modul hardware akan :
Mendeteksi hazard Dengan membandingkan bagian operand dari instruksi Ii+1 yang sudah berada dalam register instruksi (hasil dari fase IF untuk instruksi Ii+1 ) dengan bagian operand dari instruksi Ii. Memberikan tunda (stall) a) menonaktifkan ruas ID/OF bagi Ii+1 , sehingga instruksi Ii+1 tidak diproses oleh ruas ID/OF. b) menonaktifkan ruas IF bagi instruksi instruksi Ii+2, Ii+3, ... tidak dapat masuk kedalam pipeline. Ruas IF dan ID/OF diaktifkan kembali setelah hazard diatasi (misal EdyWin setelah hasil instruksi Ii disimpan ke operand tujuan)
43
sub R2, R1, R3
and R12, R2, R5
CC1
CC2
Mi
Reg
Mi IF
or R13, R6, R2
add R14, R2, R2 EdyWin
CC3
CC4
Md
Bubble
Bubble
CC6
CC7
CC8
Reg
Reg
Md
Reg
ID aktif
ID stall IF stall
CC5
ID stall
IF stall
Mi
Reg
IF aktif
ID aktif
ID stall
Mi
Md
Reg
Reg
Md 44
(a) Identifikasikan
Structural hazard ?
Data hazard ?
DADD DSUB
R1, R2, R3 R4, R1, R5
LD
AND
R6, R1, R7
OR
R8, R1, R9
AND
R6, R1, R7
XOR
R10, R1, R11
OR
R8, R1, R9
R1, 0(R2)
DSUB R4, R1, R5
(b) Gambarkan Gantt Chartnya EdyWin
45
Kinerja :
stall
tidak dihasilkan output
WB MEM EX ID/OF IF AND
insruksi instuksi LOAD, SUB, MULT yang sudah terlanjur masuk pipeline
n : Jumlah instruksi yg dieksekusi
k : Jumlah ruas pipeline
Waktu eksekusi n buah instruksi = (k-1) T + n.T + stall > (k-1) T + n.T Makin banyak stallnya maka kinerja pipeline akan menurun.46 EdyWin
Peningkatan “kecepatan” dengan Pipelining Speedup from pipelining =
= Tanpa stall
=
Average Instr. Time Unpipelined Average Instr. Time Pipelined
CPI unpipelined Clock Cycle CPI pipelined Clock Cycle
CPI unpipelined CPI pipelined
Ideal CPI = CPIunpipelined /Pipeline depth
unpipelined pipelined
Clock Cycle unpipelined Clock Cycle pipelined
~ 1 = Jumlah ruas pipeline
Clock Cycleunpipelined Ideal CPI Pipeline depth Speedup = CPI pipelined Clock Cyclepipelined EdyWin 47
Clock Cycleunpipelined Ideal CPI Pipeline depth Speedup = CPI pipelined Clock Cyclepipelined CPI pipelined = Ideal CPI + Pipeline stall clock cycles per instr
Clock Cycle Ideal CPI x Pipeline depth Speedup = Ideal CPI + Pipeline stall CPI Clock Cycle
unpipelined pipelined
Untuk Ideal CPI ~ 1 ,
Clock Cycle Pipeline depth Speedup = 1 + Pipeline stall CPI Clock Cycle EdyWin
unpipelined pipelined
48
stall
tidak dihasilkan output
WB MEM EX ID/OF IF
10 instruksi
3 cycle stall
Pipeline Stall CPI = (3/10) cycle per instruction
EdyWin
49
Contoh : Dual-port vs. Single-port •
Mesin A: Dual ported memory
•
Mesin B: Single ported memory, tetapi pipeline-nya menggunakan pesat clock yang 1.2 kali lebih cepat
•
Ideal CPI =1 untuk keduanya
•
40%dari instruksi yang dieksekusi adalah instruksi Load dan Store
SpeedUp
A
Pipeline Depth / (1 + 0) (clock
unpipe
/ clock
pipe
)
Pipeline Depth SpeedUp
B
Pipeline Depth / (1 + 0.4
(clock unpipe / ( 1,2 clock ) . pipe
(Pipeline Depth/1.4)
1.2
0.86 Pipeline Depth SpeedUp EdyWin A Mesin
A
/ SpeedUp
B
Pipeline Depth/(0.86
1.17 kali lebih cepat
Pipeline Depth)
= 1.17 50
• Pentium: – 2 pipelines, masing masing 5 cycles – Pentium Pro/II/III – 3 pipelines, masing masing 12 cycles
EdyWin
51
Mengurangi Data Hazards dengan Forwarding (bypassing)
Reg
Reg
Mi
OR R5, R3, R2
Md
ALU
Mi
ALU
ADD R2, R3, R4
Reg
Md
Reg
Hazard dapat dicegah dengan mem-bypass atau forward Output ALU dari operasi ADD keinput ALU untuk operasi OR (disamping menyimpan output ALU ke R2 seperti prosedur biasa) ID/EX
EdyWin
ALU
Registers
EX/MEM
MEM/WB
0 Data Memory
1
52
Bila pada sebuah cycle hardware mendeteksi adanya permintaan Read dan permintaan Write untuk Register yang sama, maka data yang akan dituliskan diforward ke input ALU.
EdyWin
53
Bypassing (Forwarding)
•Beberapa data hazard dapat dieliminasi dengan: bypassing atau forwarding
DADD R1, R2, R3
DSUB R4, R1, R5
AND
R6, R1, R7
OR
R8, R1, R9
XOR
Pada tipe RAW : hasil ALU tidak hanya disimpan ke memory atau register, ttp juga diberikan langsung ke R10, R1, R11 input ALU
EdyWin
54
Dengan Stall (tanpa Forwarding)
DADD R1, R2, R3
DSUB R4, R1, R5
AND
R6, R1, R7
OR
R8, R1, R9
XOR
R10, R1, R11
EdyWin
55
DADD R1, R2, R3 LD R4, 0(R1) STO R4, 12(R1)
EdyWin
56
Data Hazard Stalls : Tidak semua data hazard dapat di eliminasi Contoh :
LD
R1, 0(R2)
DSUB R4, R1, R5
AND
R6, R1, R7
OR
R8, R1, R9
EdyWin
57
untuk masalah yang tidak dapat dieliminasi dengan forwarding masih perlu ditambahkan stall
Reg
IM
and R12, R2, R5
or R13, R6, R2
add R14, R2, R2
CC6
CC7
DM
Reg
Reg
Bubble
IM
Bubble
Reg
IM
Reg
IM
Reg
DM
CC8
Reg
DM
Reg
DM
ALU
store EdyWinR15, 100(R2)
CC5
ALU
IM
CC4
ALU
CC3
ALU
CC2
ALU
lw R2, 10(R1)
CC1
58
(1) Identifikasikan forwardingnya CC2
CC3
sub R2, R1, R3 MMi
Reg
ALU
M Md
and R6, R2, R5
Mi M
Reg
ALU
IM M i
Reg
ALU
DM M
Mi IM
Reg
ALU
Md DM
M IMi
Reg
ALU
CC1
or R13, R6, R2
add R14, R2, R2
sto R15, 100(R2) EdyWin
CC4
CC5
CC6
CC7
CC8
Reg
Md
Reg
d
Reg
Reg
Md DM 59
(2)
Tunjukkan stalls dan forwarding untuk kode dibawah ini
add R3, R2, R1 load R4, 100(R3) and R6, R4, R3 sub R7, R6, R2
EdyWin
60
Jelaskan dengan contoh, teknik teknik software untuk mengatasi pipeline hazard.
EdyWin
61