Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Pipelining lts
2
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. A B C D Pekerjaan : Sub-pekerjaan 1 Sub-pekerjaan 2 Sub-pekerjaan 3 4 cucian Pencucian ( 40 menit) Pengeringan ( 30 menit) Penyetrikaan ( 20 menit ) Waktu total : 90 menit lts
3
Laundry sekuensial untuk 4 cucian.
Proses laundry 4 cucian secara sekuensial membutuhkan 1 mesin cuci, 1 pengering dan 1 tukang-setrika , waktu total = 4x90 menit A B C D 40 30 20 u r t a n c i waktu menit 90 menit 1 lts
4
Laundry Paralel untuk 4 cucian
Proses laundry 4 cucian secara paralel membutuhkan : 4 mesin cuci, 4 pengering dan 4 orang penyetrika, waktu total = 90 menit A B C D 40 30 20 waktu menit 90 menit 1 1 1 2 2 2 3 3 3 4 4 4 lts
5
Laundry Pipeline untuk 4 cucian
Proses laundry secara pipeline membutuhkan 1 mesin cuci, 1 pengering , 1 orang penyetrika waktu total = 6 x 40 menit = 240 menit A B C D 40 u r t a n c i waktu menit = 40 menit Tp = 1 Pipeline Cycle = Max { 40 , 30 , 20 } 1 Tp lts
6
Sekuensial : Pipelined :
Pekerjaan berikutnya baru bisa dimulai setelah peker-jaan sebelumnya diselesaikan. 2 pekerjaan diselesaikan 1 pekerjaan (A) 1 pekerjaan (B) 1 pekerjaan (C) 1 pekerjaan (D) Pipelined : Dengan mengoverlapkan sub-pekerjaan , pekerjaan berikut-nya bisa dimulai tanpa menunggu selesainya pekerjaan sebelumnya A B C 1 2 3 4 t 3 pekerjaan diselesaikan Pipelining meningkatkan throughput pekerjaan lts
7
Pipelined : D2 D3 DK D1 D1 , D2 , D3 Untuk pemrosesan secara pipeline,
Pecah setiap pekerjaan menjadi K sub-pekerjaan. sub pekerjaan 1 sub pekerjaan 2 sub pekerjaan 3 sub pekerjaan K D2 D3 DK D1 Bila Dk adalah tunda eksekusi sub-pekerjaan k , maka pipeline-cycle Tp = max D1 , D2 , D3 , ... , DK lts waktu
8
Gantt Chart 2 1 I1 I2 I3 I4 I5 In-1 In time space (= sub proses )
( Pipeline 2-ruas ) , Gantt Chartnya adalah sebagai berikut : 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 O1 O2 O3 O4 O5 On Oi : output pekerjaan i Ii : input pekerjaan i lts
9
Pada daerah latency , pipeline belum menghasilkan output
Contoh 2 : Pipeline 4-ruas, K = 4 output n output T 1 2 3 4 (k-1)T n.T In latency Pada daerah latency , pipeline belum menghasilkan output lts
10
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 on 1 2 3 4 Pipeline 4-ruas 1 2 3 4 Non-Pipeline lts
11
~ 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 : Waktu eksekusi = n.T + (k-1) . T (2) latency Peningkatan throughput = = (1) (2) n.k ~ k utk n >> 1 k + (n-1) ideal lts
12
Peningkatan throughput dengan pipeline
Peningkatan throughput eksekusi instruksi dengan pendekatan pipeline INSTRUCTION PIPELINE lts
13
Arsitektur pipeline untuk pekerjaan eksekusi instruksi
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. 1 instruction cycle mempunyai pola beraturan (sama untuk semua instruksi) Sub pekerjaan lts
14
1 Instruction Cycle = 1 set sub-cycle
= sub proses Instruction Fetch Decode Operand Execute Result Store Next sub-cycle 1; waktu yg dibutuhkan : D1 1 2 sub-cycle 2; waktu yg dibutuhkan : D2 3 sub-cycle 3; waktu yg dibutuhkan : D3 4 sub-cycle 4; waktu yg dibutuhkan : D4 5 sub-cycle 5; waktu yg dibutuhkan : D5 6 sub-cycle 6; waktu yg dibutuhkan : D6 lts
15
Dengan struktur pipeline, Di harus diseragamkan
Misal : D1 = 20 ndet D2 = 3 ndet maka, Pipeline Cycle = ? Tp = Max { D i } , untuk i = 1, ... ,6 D3 = 20 ndet D4 = 5 ndet D5 = 20 ndet Tp = 20 detik D1 = 3 ndet lts
16
Pengelompokan sub-cycle
Instruction Fetch Decode Operand Execute Result Store Next Instruction Fetch Decode Operand Execute Result Store Next masalah ! T 20 20 T idle 23 25 T 3 20 T 20 20 25 25 T T 5 20 T 20 20 23 25 T T 3 20 diatasi dengan Pengelompokan sub-cycle T=20 ndet lts T = Max{23,25,23} = 25 ndet
17
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 ID/OF EX MEM WB lts
18
Hardware untuk pipeline
C Instr. Mem. Reg. Array regA regB regW datW datA datB ALU 18:14 4:0 Data datIn addr datOut aluA aluB IncrPC Instr 29:25 Wdata Wdest Xtnd 12:0 n Xtnd << 2 21:0 STO IF instruction fetch ID/OF instruction decode/ operand fetch MEM memory access EX execute/ address calculation WB write back lts
19
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 diekseku- si pada instruction cycle berikutnya) ID: Instruction decode/operand-fetch A register [R1] B register [R2] Ex: Execute ALUOutput A op B MEM: Memory (nop = no operation, tidak ada nop penulisan hasil ALU ke memory) WB: Write back Register[R1] ALUOutput (menuliskan hasil ALU ke register R1) A dan B: register register pada bagian input ALU lts
20
ID: Instruction decode/operand-fetch A register [R1] B mem [M1]
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 nop no-operation, hasil tidak disimpan di register lts
21
Eksekusi instruksi percabangan bersyarat
BRZ a Branch if Zero displacement (relative addressing mode) IF: Instruction fetch IR IMemory[PC] PC incr.PC ID: Instruction decode/operand-fetch nop tidak ada operand-fetch Ex: Execute Target PC + displacement menghitung alamat target (= alamat instruksi berikutnya) MEM: Memory PC Target atau Bila syarat percabangan dipenuhi WB: Write back nop syarat percabangan alamat penyimpanan instruksi berikutnya tergantung dari hasil pengujian syarat (hasil ALU = 0 ? ) lts
22
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 Ij Ij+1 IN lts stall
23
terjadi akibat konflik penggunaan hardware resources
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 diketahui. lts
24
Structural hazards Sumber sumber hazard
: Bagian memory yang menyimpan instruksi (program) : Bagian memory yang menyimpan data (operand) Reg : Register register didalam CPU ALU Reg/ Md Reg Mi IF ID/OF EX MEM WB t Structural hazards lokasi operand : di memory atau didalam register CPU lokasi instruksi: di memory lts
25
t Reg Mi Ins.1 Ins.2 Ins.3 Ins.4 Ins.5 STRUCTURAL HAZARD IF ID/OF EX
MEM WB ALU Mi Reg/ Md Reg t Ins.1 Ins.2 Ins.3 Ins.4 Ins.5 Md: data memory Mi : instruction me- mory lts
26
Bila digunakan memory yang dual-port, sehingga akses ke Mi dan Md
dapat dilakukan serentak, maka konflik dapat dihindari. IF ID/OF EX MEM WB ALU Mi Reg/ Md Reg Ins.1 Ins.2 Ins.3 Ins.4 Ins.5 lts
27
port instruksi port instruksi/ data port data
Dual port memory Single port memory port instruksi instruksi/ program instruksi port instruksi/ data port data data data lts
28
DATA HAZARD akibat adanya ketergantungan data antar instruksi
ADD R1, R2, R3 SUB R4, R1, R3 AND R6, R1, R7 OR R8, R1, R9 XOR R10, R1, R11 ada ketergantungan data antar instruksi ! 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 : R4 = ? , R6 = ? , R8 = ? lts
29
harga r1 yang baru add r1,r2,r3 Mi Md r2,r3 Reg sub r4,r1,r3
t (clock cycles) add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 ALU Mi baca r2,r3 Md Reg r1, r7 r1, r9 r1,r11 DATA HAZARD harga r1 yang baru harga r1 lama harga r1 tak-tentu simpan r1 r1, r3 T1 T2 T4 T3 T5 T6 T7 lts
30
NON-PIPELINE PIPELINE ADD R1, R2, R3 SUB R4, R1, R3 AND R6, R1, R7
OR R8, R1, R9 XOR R10, R1, R11 1 8 4 2 5 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 11 3 NON-PIPELINE PIPELINE 3 4 8 13 atau 11 tidak sama lts
31
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 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. I I IJ lts
32
Deteksi sumber data hazard
LD R1, 45(R2) DADD R5, R6, R1 DSUB R8, R6, R7 OR R7, R5, R8 AND R7, R1, R5 write R1 read R1 write R8 read R8 read R6 read R5 DADD R5, R6, R7 DSUB R8, R1, R7 read R7 write R7 write R7 RAW RAR* WAR WAW lts
33
Contoh : Untuk format instruksi
opcode operand-tujuan , operand-sumber1 , operand-sumber2 Tipe Data Hazard Contoh Deteksi RAW Ii : LD R1, 45(R2) Ii+1 : DADD R5, R6, R1 operand tujuan pada instruksi Ii = operand sumber pada instruksi Ii+1 ? RAR Ii : DADD R5, R6, R1 Ii+1 : DSUB R8, R6, R7 operand sumber pada instruksi Ii = WAR Ii : DSUB R8, R1, R7 Ii+1 : OR R7, R5, R8 operand tujuan pada instruksi Ii+1 ? WAW Ii : OR R7, R5, R8 Ii+1 : AND R7, R1, R5 Deteksi dapat dilakukan secara hardware maupun secara software (oleh compiler) lts
34
Deteksi secara Software
Kompiler mengenali sumber data hazard dan menambahkan instruksi NOP (no operation) untuk mengeliminasi data hazard SUB R2, R1, R ; isi register R2 diubah NOP ; NOP ; instruksi no operation NOP ; AND R12, R2, R5 ; isi R2 yg baru sudah dapat digunakan OR R13, R6, R2 ADD R14, R2, R2 SW 100 (R2), R15 atau instruksi instruksi yang tidak menimbulkan data hazard lts
35
sub R2, R1,R3 and R4, R2,R5 or R8, R2,R6 add R9, R4,R2 slt R1, R6,R7
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 lts
36
membaca r2 yang sudah diubah oleh instruksi sub
t (clock cycles) IF ID/OF EX MEM WB harga r2 yang baru sub r2,r1,r3 Reg Mi Md Reg ALU bubble NOP bubble NOP bubble NOP Mi Reg and r12,r2,r5 ALU Md membaca r2 yang sudah diubah oleh instruksi sub lts
37
structural hazard, sehingga kompiler dapat menyisipkan instruksi NOP
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 ???? lts
38
Control Hazard Hazard tipe ini ditimbulkan oleh perubahan aliran
eksekusi instruksi, sebagai hasil eksekusi instruksi percabangan (BRANCH, JUMP, CALL, GOTO,...) atau interupsi Add BRZ a Load Sub Mult AND SHL 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. lts
39
Ia Ib 2 Ic Id Ie If Ig Ih Ii Ij Ik
displacement alamat instruksi Ia 1 Ib 2 Ic 3 Id 4 Ie 5 If 6 Ig 7 Ih 8 Ii 9 Ij 10 Ik Misalkan Ic = instruksi BRZ 4 Isi PC ( = 3), bila syarat tidak dipenuhi (menunjuk lokasi penyim- Panan Id) Alamat next-instruction = Isi PC = isi PC + 4 = 7 , bila syarat dipenuhi (menunjuk lokasi penyim- panan Ih) lts
40
Eksekusi instruksi percabangan bersyarat
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 nop Eksekusi instruksi percabangan bersyarat misal BRZ a Tergantung hasil pengujian syarat pada fase EX lts
41
Add BRZ ALU Reg Mem Load Sub Mult dibatalkan (flush) AND
lts CONTROL HAZARD
42
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 tak-bersyarat ? lts
43
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) menonaktifkan ruas ID/OF bagi Ii+1 , sehingga instruksi Ii+1 tidak diproses oleh ruas ID/OF. 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 setelah hasil instruksi Ii disimpan ke operand tujuan) lts
44
sub R2, R1, R3 and R12, R2, R5 or R13, R6, R2 add R14, R2, R2
Clock cycle Mi Reg Md CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 Bubble sub R2, R1, R3 IF ID EX Mem WB and R12, R2, R5 IF ID stall ID aktif IF stall ID stall or R13, R6, R2 IF aktif ID aktif IF stall ID stall add R14, R2, R2 lts
45
(b) Gambarkan Gantt Chartnya
(a) Identifikasikan Structural hazard ? DADD R1, R2, R3 DSUB R4, R1, R5 AND R6, R1, R7 OR R8, R1, R9 XOR R10, R1, R11 Data hazard ? LD R1, 0(R2) DSUB R4, R1, R5 AND R6, R1, R7 OR R8, R1, R9 (b) Gambarkan Gantt Chartnya lts
46
Waktu eksekusi n buah instruksi
Kinerja : WB MEM EX ID/OF IF tidak dihasilkan output stall AND n : Jumlah instruksi yg dieksekusi insruksi instuksi LOAD, SUB, MULT yang sudah terlanjur masuk pipeline k : Jumlah ruas pipeline Waktu eksekusi n buah instruksi = (k-1) T + n.T + S stall > (k-1) T + n.T Makin banyak stallnya maka kinerja pipeline akan menurun. lts
47
Peningkatan “kecepatan” dengan Pipelining
Average Instr. Time Unpipelined Average Instr. Time Pipelined Speedup from pipelining = = Tanpa stall = ~ 1 Ideal CPI = CPIunpipelined /Pipeline depth = Jumlah ruas pipeline Speedup = lts
48
Pipeline stall clock cycles per instr
Speedup = CPI = Ideal CPI + Pipeline stall clock cycles per instr pipelined Ideal CPI x Pipeline depth Clock Cycle unpipelined Speedup = Ideal CPI + Pipeline stall CPI Clock Cycle pipelined Untuk Ideal CPI , ~ 1 Pipeline depth Clock Cycle unpipelined Speedup = 1 + Pipeline stall CPI Clock Cycle pipelined lts
49
Pipeline Stall CPI = (3/10) cycle per instruction
WB MEM EX ID/OF IF tidak dihasilkan output stall 10 instruksi 3 cycle stall Pipeline Stall CPI = (3/10) cycle per instruction lts
50
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 Mesin A kali lebih cepat SpeedUp = Pipeline Depth / (1 + 0) (clock / clock ) A unpipe pipe = Pipeline Depth x 1/1 SpeedUp = Pipeline Depth / (1 + 0.4 (clock / ( 1/1,2 clock ) . B unpipe unpipe = (Pipeline Depth/1.4) x 1.2 = 0.86 Pipeline Depth SpeedUp / SpeedUp = Pipeline Depth/(0.86 Pipeline Depth) = 1.17 A B lts
51
Mengurangi Data Hazards dengan Forwarding (bypassing)
Mi Reg ALU Md ADD R2, R3, R4 OR R5, R3, R2 Hazard dapat dicegah dengan mem-bypass atau forward Output ALU dari operasi ADD ke input ALU untuk operasi OR (disamping menyimpan output ALU ke R2 seperti prosedur biasa) ID/EX EX/MEM MEM/WB Registers ALU Data Memory 1 lts
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. lts
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 R10, R1, R11 Pada tipe RAW : hasil ALU tidak hanya disimpan ke memory atau register, ttp juga diberikan langsung ke input ALU lts
54
DADD R1, R2, R3 LD R4, 0(R1) STO R4, 12(R1) lts
55
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 Non-aritmatik lts
56
untuk masalah yang tidak dapat dieliminasi dengan forwarding masih perlu
ditambahkan stall IM Reg ALU DM CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 Bubble lw R2, 10(R1) and R12, R2, R5 or R13, R6, R2 add R14, R2, R2 store R15, 100(R2) lts
57
(1) Identifikasikan forwardingnya
sub R2, R1, R3 and R6, R2, R5 or R13, R6, R2 add R14, R2, R2 sto R15, 100(R2) M Reg ALU IM DM CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 Mi Md lts
58
(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 lts
59
Jelaskan dengan contoh, teknik teknik software untuk mengatasi pipeline
hazard. lts
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.