Pipelining lts.

Slides:



Advertisements
Presentasi serupa
Nama kelmpok : maskar nurlailah. r
Advertisements

Struktur CPU Delta Ardy Prima, S.ST.
Basic I/O Operations and Processing Unit
Struktur CPU.
Struktur CPU Organisasi Komputer TATA SUMITRA M.KOM HP
PERTEMUAN MINGGU KE-13 PIPELINE DAN RISC.
Organisasi Komputer : Struktur dan Fungsi Komputer 2
Arsitektur Komputer “Instruksi Set Arsitektur”
FUNGSI DAN KOMPONEN UTAMA CPU
BY AYU ANGGRIANI H 1 MATA KULIAH: PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI.
PERTEMUAN MINGGU KE-13 PIPELINE DAN RISC OLEH SARI NY.
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Organisai dan arsitektur komputer
SISTEM KOMPUTER STRUKTUR CPU NI KETUT ESATI, S.Si.
BAB 3 Struktur CPU.
CPU (CENTRAL PROCESSING UNIT)
PERTEMUAN MINGGU KE-13 PIPELINE DAN RISC.
ARSITEKTUR SET INSTRUKSI
ORGANISASI & ARSITEKTUR KOMPUTER 2 STRUKTUR & FUNGSI CPU IBP WIDJA, MT
PIPELINE DAN PROSESOR PARALEL
PIPELINING INSTRUCTION
Reduced Instruction Set Computers
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
Organisasi dan arsitektur komputer
Central Processing Unit
Instruksi dalam CPU.
PROSESOR DLX.
Desain Unit Pemrosesan
Arsitektur & Organisasi Komputer BAB IIi STRUKTUR CPU Oleh : Bambang Supeno, ST., MT. Sep-17 Arsitektur & Organisasi Komputer.
ARSITEKTUR SET INSTRUKSI
Pipeline Hazard Arsitektur Komputer.
PIPELINE DAN PROSESOR PARALEL
Komponen CPU (2) ALU,I/O Interconnection & Interupsi
Struktur dan Fungsi CPU (II)
Pertemuan 4 STRUKTUR CPU Author: LINDA NORHAN, ST.
Pertemuan III SET Instruksi.
MODE PENGALAMATAN DAN SET INSTRUKSI
CPU (CENTRAL PROCESSING UNIT)
ARSITEKTUR SET INSTRUKSI
Struktur CPU.
Organisasi dan Arsitektur Komputer
PIPELINING Arsitektur Komputer.
Mode Pengalamatan &Jenis-Jenis Instruksi
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
12. Teknologi Pipeline By Serdiwansyah N. A..
Pertemuan 12 (PIPELINING)
Reduced Instruction Set Computers
Organizes Sistem Komputer
CPU (CENTRAL PROCESSING UNIT)
PENGANTAR TEKNOLOGI INFORMASI
PERTEMUAN MINGGU KE-11 PIPELINE DAN RISC.
ARSITEKTUR SET INSTRUKSI
ORGANISASI & ARSITEKTUR KOMPUTER
Komponen & fungsi komputer
Pertemuan ke - 6 Organisasi Komputer
Organisasi dan Arsitektur Komputer
Pertemuan IV Struktur dan Fungsi CPU (III)
Pertemuan ke - 5 Struktur CPU
ARSITEKTUR & ORGANISASI KOMPUTER
Pertemuan ke 3 Struktur CPU
PROCESSOR.
Struktur CPU.
ARSITEKTUR SET INSTRUKSI
Struktur CPU.
Universitas Trunojoyo
SISTEM OPERASI Desi Ramayanti, S.Kom 11/16/2018
CPU (CENTRAL PROCESSING UNIT)
PERTEMUAN MINGGU KE-13 PIPELINE DAN RISC.
ARSITEKTUR SET INSTRUKSI
Struktur CPU.
Transcript presentasi:

Pipelining lts

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

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

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

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

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

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

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

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

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

~ 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

Peningkatan throughput dengan pipeline Peningkatan throughput eksekusi instruksi dengan pendekatan pipeline INSTRUCTION PIPELINE lts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 lts

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

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

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

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

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

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

Add BRZ ALU Reg Mem Load Sub Mult dibatalkan (flush) AND lts CONTROL HAZARD

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

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

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

(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

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

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

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

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

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 1.17 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

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

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

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

DADD R1, R2, R3 LD R4, 0(R1) STO R4, 12(R1) lts

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

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

(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

(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

Jelaskan dengan contoh, teknik teknik software untuk mengatasi pipeline hazard. lts