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 : A B C D 4 cucian Sub-pekerjaan 1 Pencucian ( 40 menit) Sub-pekerjaan 2 Sub-pekerjaan 3 Pengeringan ( 30 menit) Penyetrikaan ( 20 menit ) Waktu total : 90 menit EdyWin 2
Laundry sekuensial untuk 4 cucian. waktu t u r u t a n A B 40 30 20 40 30 20 40 30 20 40 30 20 1 1 1 1 1 1 menit c u c i a n C D 1 1 1 1 1 1 90 menit 90 menit 90 menit 90 menit Proses laundry 4 cucian secara sekuensial membutuhkan 1 mesin cuci, 1 pengering dan 1 tukang-setrika, waktu total = 4x90 menit EdyWin 3
Laundry Paralel untuk 4 cucian waktu t 40 30 20 menit A 1 1 1 Proses laundry 4 cucian secara paralel B C 2 2 3 3 2 3 membutuhkan : 4 mesin cuci, 4 pengering dan 4 orang penyetrika, waktu total = 90 menit D 4 4 4 EdyWin 4 90 menit
Laundry Pipeline untuk 4 cucian waktu t 40 40 40 40 40 40 40 40 40 menit u r u t a n c u c i a n A B C 1 1 1 1 1 1 1 1 1 Proses laundry secara pipeline membutuhkan 1 mesin cuci, 1 pengering, 1 orang penyetrika waktu total = 6 x 40 menit D 1 1 1 = 240 menit T p = 1 Pipeline Cycle = Max { 40, 30, 20 } T p T p T p T p T p T p = 40 menit EdyWin 5
Sekuensial : Pekerjaan berikutnya baru bisa dimulai setelah pekerjaan sebelumnya diselesaikan. 1 pekerjaan (A) 1 pekerjaan (B) 2 pekerjaan diselesaikan 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 C A B C A B C A B C Pipelining meningkatkan throughput pekerjaan 3 pekerjaan diselesaikan EdyWin 6 t
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 T p = max,..., waktu EdyWin 7
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 ) O i : output pekerjaan i O 1 O 2 O 3 O 4 O 5 O n 2 1 I 1 I 2 I 3 I 4 I 5 I n-1 I n time EdyWin 8 I i : input pekerjaan i
Contoh 2 : Pipeline 4-ruas, K = 4 0 output n output T 1 2 3 4 (k-1)t n.t I n 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 o 1 o n 1 2 3 4 Pipeline 4-ruas 1 2 3 4 Non-Pipeline EdyWin 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 : Waktu eksekusi = n.t + (k-1). T (2) 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 I 1 eksekusi instruksi I 2 eksekusi instruksi I 3 eksekusi instruksi I 4 t Eksekusi sebuah instruksi disebut 1 instruction-cycle. Sub pekerjaan 1 instruction cycle mempunyai pola beraturan (sama untuk semua instruksi) EdyWin 13
1 2 3 4 Instruction Fetch Instruction Decode Operand Fetch Execute 1 Instruction Cycle = 1 set sub-cycle sub-cycle 1; waktu yg dibutuhkan : 1 sub-cycle 2; waktu yg dibutuhkan : 2 sub-cycle 3; waktu yg dibutuhkan : 3 sub-cycle 4; waktu yg dibutuhkan : 4 = sub proses 5 Result Store sub-cycle 5; waktu yg dibutuhkan : 5 6 Next Instruction sub-cycle 6; waktu yg dibutuhkan : 6 EdyWin 14
Dengan struktur pipeline, i harus diseragamkan Misal : 1 = 20 ndet 2 = 3 ndet 3 = 20 ndet 4 = 5 ndet 5 = 20 ndet 1 = 3 ndet maka, Pipeline Cycle =? T p = Max { i }, untuk i = 1,...,6 T p = 20 detik EdyWin 15
Instruction Fetch Instruction Decode 20 20 3 20 masalah! idle 23 25 Instruction Fetch Instruction Decode Operand Fetch 20 20 25 25 Operand Fetch Execute 5 20 Execute Result Store Next Instruction T=20 ndet 20 20 3 20 23 25 diatasi dengan Pengelompokan sub-cycle Result Store Next Instruction EdyWin 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 ID/OF EX MEM WB EdyWin 17
Hardware untuk pipeline P C Instr. Mem. Instr 21:0 18:14 4:0 29:25 12:0 Xtnd << 2 rega regb datw regw Xtnd data. Array datb alua alub datin Data Mem. datout addr Wdest IncrPC n P C Wdata STO IF instruction fetch ID/OF instruction decode/ operand fetch EX execute/ address calculation MEM memory access WB write back EdyWin 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] B register [R2] Ex: Execute Output A op B A dan B: register register pada bagian input MEM: Memory nop (nop = no operation, tidak ada penulisan hasil ke memory) WB: Write back ister[r1] Output (menuliskan hasil ke register R1) EdyWin 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 Output A op B MEM: Memory Mem [M1] Output hasil disimpan di memory WB: Write back nop no-operation, hasil tidak disimpan di register EdyWin 20
Eksekusi instruksi percabangan bersyarat BRZ 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 Branch if Zero syarat percabangan tidak ada operand-fetch menghitung alamat target displacement (relative addressing mode) (= alamat instruksi berikutnya) Bila syarat percabangan dipenuhi alamat penyimpanan instruksi berikutnya tergantung dari hasil pengujian syarat (hasil = 0? ) EdyWin 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. o 1 o M ideal I 1 o 1 I M o N real N < M I 1 I j I j+1 stall EdyWin 22 I N
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 23 diketahui.
Structural hazards Sumber sumber hazard M i M d : Bagian memory yang menyimpan instruksi (program) : Bagian memory yang menyimpan data (operand) : ister register didalam CPU IF ID/OF EX MEM WB t M i / M d Md lokasi instruksi: di memory lokasi operand : di memory atau didalam register CPU EdyWin 24
Ins.1 IF ID/OF EX MEM WB M i / M d M d M d : data memory M i : instruction memory t Ins.2 M i / M d M d Ins.3 M i / M d M d Ins.4 M i / M d M d Ins.5 EdyWin STRUCTURAL HAZARD 25 M i / M d M d
Bila digunakan memory yang dual-port, sehingga akses ke M i dan M d dapat dilakukan serentak, maka konflik dapat dihindari. IF ID/OF EX MEM WB Ins.1 M i / M d M d Ins.2 M i / M d M d Ins.3 M i / M d M d Ins.4 M i / M d M d / M i M M d EdyWin d 26 Ins.5
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 ada ketergantungan data antar instruksi! OR 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 : R4 =?, R6 =?, R8 =? EdyWin 28
t (clock cycles) T1 T2 T3 T4 T5 T6 T7 IF ID/OF EX MEM WB harga r1 yang baru add r1,r2,r3 M i baca r2,r3 M d simpan r1 sub r4,r1,r3 M i baca r1, r3 M d and r6,r1,r7 M i baca r1, r7 M d or r8,r1,r9 harga r1 lama M i baca r1, r9 M d xor r10,r1,r11 harga r1 tak-tentu baca r1,r11 EdyWin 29 DATA HAZARD M i M d
NON-PIPELINE R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 5 1 2 4 8 1 ADD R1, R2, R3 3 1 2 4 8 1 SUB R4, R1, R3 3 1 2 1 4 8 1 AND R6, R1, R7 3 0 4 8 1 OR R8, R1, R9 3 11 8 1 XOR R10, R1, R11 3 1 2 1 0 11 8 8 1 PIPELINE 3 4 8 tidak sama 13 atau 11 EdyWin 30
Klasifikasi data hazards program Tipe ketergantungan data antar instruksi: (Instruksi I i adalah instruksi yang dieksekusi sebelum instruksi I J ) RAW -- read after write Instruksi J mencoba membaca data sebelum instruksi I mengubahnya. I I I J 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 R1, 45(R2) write R1 DADD R5, R6, R1 read R1 DSUB R8, R6, R7 write R8 RAW OR R7, R5, R8 read R8 AND R7, R1, R5 LD R1, 45(R2) DADD DSUB R5, R6, R1 R8, R6, R7 read R6 read R6 RAR* OR R7, R5, R8 read R5 AND R7, R1, R5 read R5 LD R1, 45(R2) DADD DSUB R5, R6, R7 R8, R1, R7 read R7 WAR OR R7, R5, R8 write R7 AND R7, R1, R5 LD R1, 45(R2) DADD R5, R6, R1 DSUB R8, R6, R7 WAW OR R7, R5, R8 write R7 EdyWin AND R7, R1, R5 write R7 32
Contoh : Untuk format instruksi opcode operand-tujuan, operand-sumber1, operand-sumber2 Tipe Data Hazard RAW RAR WAR Contoh I i : LD R1, 45(R2) I i+1 : DADD R5, R6, R1 I i : DADD R5, R6, R1 I i+1 : DSUB R8, R6, R7 I i : DSUB R8, R1, R7 I i+1 : OR R7, R5, R8 Deteksi operand tujuan pada instruksi I i = operand sumber pada instruksi I i+1? operand sumber pada instruksi I i = operand sumber pada instruksi I i+1? operand sumber pada instruksi I i = operand tujuan pada instruksi I i+1? WAW I i : OR R7, R5, R8 I i+1 : AND R7, R1, R5 operand tujuan pada instruksi I i = operand tujuan pada instruksi I i+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 ; isi register R2 diubah NOP ; NOP ; 3 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 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) IF ID/OF EX MEM WB harga r2 yang baru sub r2,r1,r3 M i M d NOP bubble bubble bubble bubble bubble NOP bubble bubble bubble bubble bubble NOP bubble bubble bubble bubble bubble and r12,r2,r5 EdyWin 36 M i membaca r2 yang sudah diubah oleh instruksi sub M d
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 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 AND SHL Add 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. EdyWin 38
alamat 0 1 2 3 4 5 6 7 8 9 10 instruksi I a I b I c I d I e I f I g I h I i I j I k Misalkan I c = instruksi BRZ 4 Alamat next-instruction = displacement isi PC (= 3), yaitu bila syarat tidak dipenuhi Alamat target = PC + 4, yaitu bila syarat dipenuhi EdyWin 39
Eksekusi instruksi percabangan bersyarat IF: Instruction fetch IR IMemory[PC] PC incr.pc misal alamat next-instruction BRZ ID: Instruction decode/operand-fetch nop tidak ada operand-fetch Ex: Execute pengujian syarat apakah hasil = 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 Tergantung hasil pengujian syarat pada fase EX EdyWin 40
Add Mem Mem BRZ Mem Mem Load Mem Mem Mem Sub Mem Mem Mult dibatalkan (flush) Mem AND Mem CONTROL HAZARD EdyWin 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 I i+1 yang sudah berada dalam register instruksi (hasil dari fase IF untuk instruksi I i+1 ) dengan bagian operand dari instruksi I i. Memberikan tunda (stall) a) menonaktifkan ruas ID/OF bagi I i+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 43 setelah hasil instruksi I i disimpan ke operand tujuan)
CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 sub R2, R1, R3 M i M d and R12, R2, R5 Bubble Bubble M i M d IF ID stall ID aktif or R13, R6, R2 IF stall ID stall M i M d IF aktif ID aktif add R14, R2, R2 IF stall ID stall M i M d EdyWin 44
(a) Identifikasikan Structural hazard? Data hazard? DADD DSUB AND OR XOR R1, R2, R3 R4, R1, R5 R6, R1, R7 R8, R1, R9 R10, R1, R11 LD R1, 0(R2) DSUB R4, R1, R5 AND R6, R1, R7 OR R8, R1, R9 (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 Waktu eksekusi n buah instruksi n : Jumlah instruksi yg dieksekusi k : Jumlah ruas pipeline = (k-1) T + n.t + stall > (k-1) T + n.t Makin banyak stallnya maka kinerja pipeline akan menurun. EdyWin 46
Peningkatan kecepatan dengan Pipelining Speedup from pipelining = Average Instr. Time Unpipelined Average Instr. Time Pipelined = CPI unpipelined CPI pipelined Clock Cycle unpipelined Clock Cycle pipelined Tanpa stall = CPI unpipelined CPI pipelined Clock Cycle unpipelined Clock Cycle pipelined Ideal CPI = CPI unpipelined /Pipeline depth ~ 1 = Jumlah ruas pipeline Speedup = Ideal CPI Pipeline depth CPI pipelined Clock Cycle unpipelined Clock Cycle pipelined EdyWin 47
Speedup = Ideal CPI Pipeline depth CPI pipelined Clock Cycle unpipelined Clock Cycle pipelined CPI pipelined = Ideal CPI + Pipeline stall clock cycles per instr Speedup = Ideal CPI x Pipeline depth Ideal CPI + Pipeline stall CPI Clock Cycle unpipelined Clock Cycle pipelined Untuk Ideal CPI ~ 1, Speedup = Pipeline depth 1 + Pipeline stall CPI Clock Cycle unpipelined Clock Cycle pipelined EdyWin 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
Mesin A: Dual ported memory Contoh : Dual-port vs. Single-port 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 A / SpeedUp B Pipeline Depth/(0.86 Pipeline Depth) = 1.17 Mesin A 1.17 kali lebih cepat EdyWin 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) ADD R2, R3, R4 Mi Md OR R5, R3, R2 Mi Md Hazard dapat dicegah dengan mem-bypass atau forward Output dari operasi ADD keinput untuk operasi OR (disamping menyimpan output ke R2 seperti prosedur biasa) ID/EX EX/MEM MEM/WB isters Data Memory 0 1 EdyWin 52
Bila pada sebuah cycle hardware mendeteksi adanya permintaan Read dan permintaan Write untuk ister yang sama, maka data yang akan dituliskan diforward ke input. 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 XOR R8, R1, R9 R10, R1, R11 Pada tipe RAW : hasil tidak hanya disimpan ke memory atau register, ttp juga diberikan langsung ke input 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 CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 lw R2, 10(R1) IM DM and R12, R2, R5 IM Bubble DM or R13, R6, R2 IM Bubble DM add R14, R2, R2 IM DM store R15, 100(R2) IM EdyWin 58
(1) Identifikasikan forwardingnya CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 sub R2, R1, R3 M i M d and R6, R2, R5 M i M d or R13, R6, R2 M i IM DM M d add R14, R2, R2 IM M i M d DM sto R15, 100(R2) EdyWin 59 M i IM DM M d
(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