Diktat Kuliah - Pipeline

dokumen-dokumen yang mirip
Pipeline pada x86. Sebagai contoh : Instruksi 1 : ADD AX,AX Instruksi 2 : ADD BX,CX

Diktat Kuliah intel 8088

Diktat Kuliah Instruksi dan Segmentasi

Set Instruksi & Mode Pengalamatan. Team Dosen Telkom University 2016

PETA MEMORI MIKROPROSESOR 8088

ARSITEKTUR KOMPUTER SET INSTRUKSI

Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

Kumpulan instruksi lengkap yang dimengerti

DCH1B3 Konfigurasi Perangkat Keras Komputer SAP-2

MAKALAH MODE DAN FORMAT PENGALAMATAN SET INSTRUKSI. Nama : Annisa Christyanti Kelas : XI TJA 3 NIS :

Diktat Kuliah Organisasi dan Interaksi

Arsitektur Set Instruksi. Abdul Syukur

Set Instruksi: Set instruksi?

Hal-hal yang perlu dilakukan CPU adalah : 1. Fetch Instruction = mengambil instruksi 2. Interpret Instruction = Menterjemahkan instruksi 3.

Pipelining. EdyWin 1

PERTEMUAN MINGGU KE-5 ARSITEKTUR SET INSTRUKSI

Simple As Possible (SAP) - 2. Abdul Syukur

Hanif Fakhrurroja, MT

SOAL UAS SISTEM KOMPUTER Kelas XI RPL & TKJ

10. Konsep Operasional Prosessor dan Memori

ARSITEKTUR SET INSTRUKSI. Ptputraastawa.wordpress.com

Karakteristik Instruksi Mesin

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

CENTRAL PROCESSING UNIT CPU

Diktat Kuliah Instruksi Mesin

PERTEMUAN. 1. Organisasi Processor. 2. Organisasi Register

CHAPTER 16 INSTRUCTION-LEVEL PARALLELISM AND SUPERSCALAR PROCESSORS

PAPER PIPELINE INSTRUKSI

Set Instruksi. Set Instruksi. Set Instruksi adalah kumpulan

Arsitektur SAP-2 W BUS ACKNOWLEDGE HEXADECIMAL KEYBOARD ENCODER ACCUMULATOR INPUT PORT 1 ALU FLAGS READY INPUT PORT 2 SERIAL IN PROGRAM COUNTER TMP

Arsitektur dan Organisasi Komputer. Set instruksi dan Pengalamatan

0F9C:0000 9A00009E0F CALL 0F9E:0000 0F9C: PUSH BP 0F9C: E5 MOV BP,SP 0F9C: C0 XOR AX,AX 0F9C:000A 9ACD029E0F CALL 0F9E:02CD

Pipeline adalah suatu cara yang digunakan untuk melakukan sejumlah kerja secara bersama tetapi dalam tahap yang berbeda yang dialirkan secara kontinu

Organisasi & Arsitektur Komputer

From M.R Zargham s book (Chapter 3.1)

William Stallings Computer Organization and Architecture. Chapter 9 Set Instruksi: Karakteristik dan Fungsi

Soal Komunikasi Data Kelas XI TKJ

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

ARSITEKTUR MIKROPROSESOR Z80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

Arsitektur dan Organisasi Komputer Set Intruksi

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

Simple As Posible 2 (bag-1)

KONFIGURASI PIN-PIN MIKROPROSESOR Z 80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

BAB I TUGAS MATA KULIAH SISTEM MIKROPROSESOR DOSEN PEMBERI TUGAS : FATAH YASIN, ST, MT.

Hanif Fakhrurroja, MT

Mikroprosesor. Bab 3: Arsitektur Mikroprosesor. INTEL 8086 Generasi Awal Prosesor PENTIUM. Arsitektur Mikroprosesor 1

INSTRUKSI DASAR Salahuddin, SST.

Struktur Fungsi CPU. Mata Kuliah Arsitektur Komputer Program Studi Sistem Informasi 2013/2014 STMIK Dumai -- Materi 03 --

Struktur dan Fungsi CPU. Ptputraastawa.wordpress.com

Simple As Possible (SAP) - 2. Abdul Syukur

BAB VII KOMPUTER SEDERHANA SAP-3 (SIMPLE AS POSSIBLE-3)

Pertemuan Ke-7 INSTRUCTION SET

SET INSTRUKSI. Organisasi dan Arsitektur Komputer

Jumlah maksimum operand dalam suatu computer menunjukkan organisasi prosessor mesin tersebut.

PERINTAH-PERINTAH DASAR (UMUM)

Hanif Fakhrurroja, MT

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

Instructions Set. Element dari instruction. Representasi dari Op code

Sistem Operasi. Struktur Sistem Komputer. Adhitya Nugraha. Fasilkom 10/6/2014

Dua komponen yang menjalankan proses dalam komputer, yaitu : Central Processing Unit (CPU) Memory Kedua komponen tersebut terletak pada Motherboard.

Pada pembahasan kali ini, digunakan instruksi MOV untuk menjelaskan mode pengalamatan data. Format penulisannya adalah :

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

Oleh : Agus Priyanto, M.Kom

Pertemuan ke 7 Mode Pengalamatan. Computer Organization Eko Budi Setiawan

Oleh: 1. Singgih Gunawan Setyadi ( ) 2. Handung Kusjayanto ( ) 3. Wahyu Isnawan ( )

STRUKTUR FUNGSI CPU. Menjelaskan tentang komponen utama CPU. Membahas struktur dan fungsi internal prosesor, organisasi ALU, control unit dan register

CENTRAL PROCESSING UNIT (CPU) Sebuah mesin tipe von neumann

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

STRUKTUR CPU. Arsitektur Komputer

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1

Sistem Komputer. Komputer terdiri dari CPU, Memory dan I/O (Arsitektur Von-Neumann) Ada tiga bus dalam sistem komputer

Organisasi Komputer. Candra Ahmadi, MT

Diktat Kuliah Memory Hardware

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

Pertemuan 6-7 : Set Instruksi

Meningkatkan Kinerja dengan Pipelining

SISTEM KERJA MIKROPROSESOR

3. ALU. Tugas utama adalah melakukan semua perhitungan aritmatika dan melakukan keputusan dari suatu operasi logika.

Organisasi Komputer II STMIK AUB SURAKARTA

BAB VI ARSITEKTUR KOMPUTER

Pertemuan 2 Organisasi Komputer II. Struktur & Fungsi CPU (I)

PENGANTAR ORGANISASI DAN ARSITEKTUR KOMPUTER CENTRAL PROCESSING UNIT

MIKROPROSESOR REGISTER-REGISTER MIKROPROSESOR INTEL

Struktur Central Processing Unit Universitas Mercu Buana Yogyakarta

Bagian 2 STRUKTUR CPU

Aditya Wikan Mahastama

BAHASA MESIN. PDE - bahasa mesin 1

Mikroprosesor. Nuryono Satya Widodo, S.T.,M.Eng. Mikroprosesor 1

Materi 6: Control Unit Operations

MODE PENGALAMATAN PROGRAM MEMORI

Pengantar Teknologi Informasi A. Pertemuan 7. Prossesor & Memori

Kuis : Bahasa Rakitan (UAS)

Mikroprosesor. Pertemuan 8. By: Augury

ARSITEKTUR DAN ORGANISASI KOMPUTER

Arsitektur dan Organisasi

SISTEM KOMPUTER.

CENTRAL PROCESSING UNIT (CPU)

ORGANISASI KOMPUTER DASAR

ARSITEKTUR DAN ORGANISASI KOMPUTER

MODUL I PENGENALAN ASSEMBLY

Transkripsi:

Mikroprosesor dan Antarmuka Diktat Kuliah - Pipeline Nyoman Bogi Aditya Karna Sisfo IMTelkom bogi@imtelkom.ac.id http://bogi.blog.imtelkom.ac.id Institut Manajemen Telkom http://www.imtelkom.ac.id

Proses Kerja (tahapan pengerjaan instruksi oleh up) Urutan kerja yang harus dilakukan oleh CU dalam mengerjakan suatu instruksi tergantung pada desainnya. Arsitektur VLI (Variable Length Instruction) seperti pada x86 menggunakan 3 tahapan sebagai berikut : 1. Penjemputan Instruksi (IF = Instruction Fetch) IR Mem[CS+IP] Proses kerja dimulai dengan penjemputan instruksi baru bagian operation codenya (opcode) dari memori ke Instruction Register (IR). Untuk dapat menjemput opcode instruksi baru tersebut, Control Unit (CU) harus menerjemahkan isi dari register Code Segment dan Instruction Pointer (CS+IP) untuk menentukan letak dari instruksi baru tersebut di memori. Hasil terjemahan isi CS+IP ini dikirim CU ke pengontrol memori melalui bus alamat, yang kemudian oleh pengontrol memori, isi dari cell memori yang bersesuaian diletakkan di bus data. CU kemudian memasukkannya ke IR. 2. Dekoding Instruksi (ID = Instruction Decode) Isi baru dari IR tersebut kemudian diterjemahkan oleh CU untuk mengetahui apa saja yang diinginkan oleh instruksi baru tersebut. Untuk penterjemahan ini, CU menggunakan bantuan tabel instruksi untuk memahami isi dari opcode tersebut. Karena belum tentu opcode yg ada di IR tersebut adalah instruksi lengkapnya, maka ada kemungkinan akan terjadi penjemputan kembali ke memori untuk melengkapi instruksinya. Contoh : PUSH AX = 50 instruksi 1 byte yg berarti tidak perlu lagi penjemputan ke memori MOV AX,0007 = B8 07 00 hanya opcode = B8 yg dijemput pada tahap IF. Ini menyebabkan perlunya pengaksesan memori kembali untuk menjemput data 07 00 3. Eksekusi Instruksi (EX = Execution) Tergantung dari hasil penterjemahan instruksi diatas, CU akan melaksanakan satu dari tiga fungsi, yaitu : Data Transfer: CU akan memindahkan data dari suatu elemen memori ke elemen memori lainnya contoh : MOV, PUSH, POP Aritmetika dan Logika: CU akan meminta ALU (Arithmetic and Logic Unit) untuk melakukan kalkulasi, contoh : ADD, SUB, XOR, AND Control: CU akan melompat ke suatu lokasi memori dengan cara mengubah isi register CS dan IP contoh : JMP, JE, JZ, CALL, RET Instruksi 1 byte (contoh: PUSH & POP) DE Instruksi >1 byte (contoh: MOV, ADD, JMP) DE IF EX IF EX proses: IF DE EX proses: IF DE IF DE EX

Set Instruksi Di dalam CPU terdapat daftar instruksi yang dapat dikerjakan hanya oleh CPU itu sendiri. Daftar ini sering disebut sebagai microcode dan setiap kali CPU menerima sebuah instruksi, CPU akan menterjemahkan kode instruksi tersebut (decoding) dan kemudian melihat arti dari masing-masing pecahan tersebut di microcode. Ini menunjukkan bahwa tidak semua CPU memiliki microcode yg sama. Beda arsitektur berarti berbeda juga microcodenya. Sebagai contoh, program yang dapat dijalankan di IBM PC tidak akan jalan di Apple Macintosh. Tipe-tipe instruksi dapat dikategorikan menjadi 8, yaitu : No Type Instruksi Contoh 1 Data Transfer Load-Stores (memindahkan informasi dari dan ke CPU dengan pengalamatan memori) 2 Arithmetic dan Logical Aritmetika integer dan operasi logika : ADD, AND 3 Control Branch, Jump, Procedure call dan return, Traps 4 System Operating System call, manajemen virtual memory 5 Floating Point Operasi floating point : tambah, kali 6 Decimal Penjumlahan/Perkalian desimal, Konversi desimal-ke-karakter 7 String String move, String compare, String search 8 Graphics Operasi pixel, Operasi kompresi/dekompresi Semua CPU menyediakan fasilitas pengoperasian terhadap ketiga tipe pertama. Sedangkan support untuk tipe instruksi keempat System berbeda jauh pada tiap-tiap arsitektur. Sedangkan empat tipe terakhir akan berbeda untuk masing-masing arsitektur dari tidak ada sama sekali sampai pengembangan secara khusus. Contoh: AMD K6/2 dengan 3Dnow! yang merupakan tambahan instruksi untuk operasi Graphics. Jika CPU mengerjakan instruksi yang memerlukan pengalamatan, instruksi tersebut pasti termasuk ke salah satu jenis pengalamatan (addressing mode) di bawah ini : Jenis Contoh instruksi Arti Register Add R4, R3 Reg[R4] Reg[R4] + Reg[R3] Immediate Add R4, #3 Reg[R4] Reg[R4] + 3 Displacement Add R4, 100(R1) Reg[R4] Reg[R4] + Mem[100+Reg[R3]] Register Indirect Add R4, (R1) Reg[R4] Reg[R4] + Mem[Reg[R1]] Indexed Add R3, (R1+R2) Reg[R3] Reg[R4] + Mem[Reg[R1]+Reg[R2]] Direct or Absolute Add R1, (1001) Reg[R1] Reg[R1] + Mem[1001] Memory Indirect Add R1, @(R3) Reg[R1] Reg[R4] + Mem[Mem[Reg[R3]]] Autoincrement Add R1, (R2)+ Reg[R1] Reg[R1] + Mem[Reg[R2]] Reg[R2] Reg[R2] + d Autodecrement Add R1, -(R2) Reg[R2] Reg[R2] d Reg[R1] Reg[R1] - Mem[Reg[R2]] Scaled Add R1, 100(R2)[R3] Reg[R1] Reg[R1] + Mem[100+Reg[R2]+Reg[R3]*d]

Pipeline pada x86 (catatan: Pipeline baru dikenal sejak 80386) Karena untuk setiap tahap pengerjaan instruksi, komponen yang bekerja berbeda, maka dimungkinkan untuk mengisi kekosongan kerja di komponen tersebut. Sebagai contoh : Instruksi 1 : ADD AX,AX Instruksi 2 : ADD BX,CX Setelah CU menjemput instruksi 1 dari memori (IF), CU akan menerjemahkan instruksi tersebut (ID). Pada saat CU menerjemahkan instruksi 1 tersebut, komponen IF tidak bekerja. Adanya teknologi pipeline menyebabkan IF akan menjemput instruksi 2 pada saat ID menerjemahkan instruksi 1. Demikian seterusnya, pada saat CU menjalankan instruksi 1 (EX), instruksi 2 diterjemahkan (ID). Contoh pengerjaan instruksi tanpa pipeline t = 1 2 3 4 5 6 7 8 9 10 ADD AX,AX IF DE IF DE EX ADD BX,CX IF DE IF DE EX Disini instruksi baru akan dijemput jika instruksi sebelumnya telah selesai dilaksanakan. Contoh pengerjaan instruksi dengan pipeline t = 1 2 3 4 5 6 7 8 9 10 ADD AX,AX IF DE IF DE EX ADD BX,CX IF DE IF DE EX ADD DX,DX IF DE IF DE EX Disini instruksi baru akan dijemput setelah tahap IF menganggur (t2). Dengan adanya pipeline dua instruksi selesai dilaksanakan pada detik keenam (sedangkan pada kasus tanpa pipeline baru selesai pada detik kesepuluh). Dengan demikian telah terjadi percepatan sebanyak 1,67x dari 10T menjadi hanya 6T. Sedangkan untuk pengerjaan 3 buah instruksi terjadi percepatan sebanyak 2,14x dari 15T menjadi hanya 7T. Untuk kasus pipeline sendiri, 2 instruksi dapat dikerjakan dalam 6T (CPI = 3) dan 3 instruksi dapat dikerjakan dalam 7T (CPI = 2,3) dan untuk 4 instruksi dapat dikerjakan dalam 8T (CPI = 2). Ini berarti untuk 100 instruksi akan dapat dikerjakan dalam 104T (CPI = 1,04). Pada kondisi ideal CPI akan mencapai harga 1. Kelemahan pipeline adalah untuk mencapai keadaan ideal tersebut, setiap instruksi yang berdekatan harus tidak tergantung dari instruksi disekitarnya. Inilah yang disebut paralelism yaitu dimana instruksi-instruksi disusun sedemikian sehingga mereka dapat dijalankan secara bersamaan (paralel).

Masalah-masalah pada Pipeline Dengan adanya persyaratan bahwa setiap instuksi yang berdekatan harus tidak saling bergantung, maka ada kemungkinan terjadinya situasi dimana pipeline gagal dilaksanakan (instuksi berikutnya tidak bisa dilaksanakan). Situasi ini disebut Hazards. Hazards mengurangi performansi dari CPU dimana percepatan ideal tidak dapat dicapai. Ada 3 kelompok Hazards : 1. Structural Hazards muncul dari konflik resource sistem yaitu ketika hardware tidak dapat mensuport semua kemungkinan kombinasi pelaksanaan instruksi 2. Data Hazards muncul ketika data untuk suatu instruksi tergantung pada hasil instruksi sebelumnya 3. Control Hazards muncul pada pelaksanaan instruksi yang mengubah PC (contoh : branch) Adanya Hazards menyebabkan pipeline terhambat (stalled). Tidak ada instruksi baru yang dijemput sampai hambatan itu selesai. Ini berarti instruksi-instruksi selanjutnya akan ditunda pula penjemputannya. Structural Hazards Ketika suatu mesin di-pipeline, eksekusi dari instruksi yang bertumpukan tersebut membutuhkan pemasangan pipeline pada unit-unit fungsional dan duplikasi resource untuk memperbolehkan semua kemungkinan kombinasi pelaksanaan instruksi di pipeline. Jika beberapa kombinasi dari instruksi tidak dapat diakomodasikan karena konflik resource, CPU tersebut dikatakan memliki structural hazards Sebagai contoh, sebuah mesin yang memiliki sistem memori dengan hanya 1 port (1 set address bus dan 1 set data bus) untuk membaca dan menulis, akan menghasilkan stall setiap kali tahapan EX dan IF terjadi bersamaan dimana suatu instruksi pada tahap EX ingin menulis memori dan pada saat yang bersamaan instruksi lainnya ada pada tahap IF yang berarti pembacaan memori. t = 1 2 3 4 5 6 7 PUSH AX IF DE EX PUSH BX IF DE EX ADD AX,AX IF DE IF DE EX Pada t3 terjadi dua buah akses ke memori. Yang pertama untuk mengirim isi register AX ke stack dan yg kedua untuk menjemput instruksi ketiga (ADD). Jika memori tidak mendukung 2 pembacaan sekaligus seperti ini, maka akan terjadi Structural Hazard dimana penjemputan instruksi ketiga (ADD) akan ditunda sampai detik keempat. Untuk menghilangkan terjadinya Structural Hazard, maka setiap resource harus diduplikasi sebanyak jumlah stage dalam pipeline (= jumlah tahapan pengerjaan instruksi). Seperti misalnya instruksi kedua dan ketiga dieksekusi pada saat yg bersamaan, maka ini berarti komponen-komponen yg terlibat dalam eksekusi harus diduplikasi. Salah satu untuk mengeksekusi instruksi pertama, dan satunya lagi untuk mengeksekusi instruksi kedua. Data Hazards Data hazards terjadi ketika pipeline merubah urutan baca/tulis ke operand sehingga urutannya menjadi berbeda dengan urutan yang dilihat dengan menjalankan instruksi-instruksi tersebut pada mesin yang tidak di-pipeline. Data Hazards dapat diklasifikasikan menjadi 3 tipe dilihat dari urutan operasi baca-tulis oleh instruksi yang berdekatan. Jika ada 2 instruksi X dan Y dimana instruksi X dikerjakan lebih dahulu dari instruksi Y :

RAW (Read After Write) Y mencoba untuk membaca suatu cell memori sebelum X menulisnya sehingga Y mendapatkan harga lama dari memori tersebut. t = 1 2 3 4 5 6 MOV AX, 0000 IF DE IF DE EX MOV AX, FFFF IF DE IF DE EX PUSH AX IF DE EX Jika ketiga instruksi tersebut dikerjakan pada up tanpa pipeline, maka data yang di-push ke stack adalah FFFF. Namun ternyata jika dikerjakan pada up dengan pipeline, yang di-push ke stack adalah 0000. Hal ini disebabkan karena register AX akan diisi harga 0000 oleh instruksi pertama pada t5, dan kemudian akan ditumpuk oleh instruksi kedua dengan data FFFF pada t6. Instruksi ketiga akan membaca AX pada t5 sehingga yang dibaca adalah 0000 bukan FFFF. RAW adalah type yang paling sering terjadi diantara tipe yg lain. WAW (Write After Write) : Y mencoba untuk menulis suatu cell memori sebelum ditulis oleh X. Urutan penulisan menjadi terbalik sehingga isi dari memori adalah hasil proses instruksi X padahal yang diinginkan adalah hasil proses dari instruksi Y (tertumpuk oleh hasil instruksi X) t = 1 2 3 4 5 MOV AX,FFFF IF DE IF DE EX POP AX IF DE EX Jika kedua instruksi tersebut dikerjakan pada up tanpa pipeline, maka data yang ada di AX adalah dari stack. Namun ternyata jika dikerjakan pada up dengan pipeline, data yang ada di AX adalah 0000. Hal ini disebabkan karena register AX akan diisi data dari stack oleh instruksi kedua pada t4 sedangkan instruksi pertama akan menumpuknya dengan data 0000 karena instruksi kedua baru selesai pada t5. WAR (Write After Read) : Y mencoba untuk menulis suatu cell memori sebelum dibaca oleh X. t = 1 2 3 4 5 6 MOV AX,FFFF IF DE IF DE EX MOV BX,AX IF DE IF DE EX POP AX IF DE EX Jika ketiga instruksi tersebut dikerjakan pada up tanpa pipeline, maka data yang ada di BX adalah FFFF. Namun ternyata jika dikerjakan pada up dengan pipeline, data yang ada di BX berasal dari stack. Hal ini disebabkan karena register AX akan diisi data dari stack oleh instruksi ketiga pada t5, dan data ini akan menumpuk data FFFF yang diberikan oleh instruksi pertama. Beberapa Teknik untuk meminimisasi stall oleh Data Hazard Teknik yang pertama adalah forwarding atau bypassing dimana hasil dari suatu tahap pengerjaan instruksi diumpankan langsung ke tahapan dimana instruksi lainnya memerlukan hasil dari tahap tersebut. Sebagai contoh adalah output dari ALU (tahap EX) diumpankan langsung kembali ke ALU yang digunakan untuk melaksanakan proses selanjutnya. Teknik ini sederhana untuk dilakukan namun akan memperumit desain CPU dan tidak dapat digunakan untuk semua kasus Data Hazard. Teknik kedua adalah yang paling sering digunakan yaitu dengan penjadwalan instruksi (Instruction Scheduling). Disini instruksi-instruksi disusun sedemikian rupa agar tingkat kebergantungan antara instruksi yang berdekatan dapat dikurangi. Hal ini membutuhkan suatu compiler yang canggih dan pintar untuk melakukan penyusunan instruksi.

Contoh : Pada cuplikan program Pascal : a := b + c; d := a + e; dimana a = [0000], b = [0002], c = [0004], d = [0006], e = [0008] jika diterjemahkan ke instruksi mesin oleh compiler Pascal yg lugu : [asumsi: instruksi ADD hanya 1 byte] a := b + c d := a + e t = 1 2 3 4 5 6 7 8 9 10 11 12 MOV BX, [0002] IF DE IF DE EX MOV CX, [0004] IF DE IF DE EX ADD BX, CX IF DE EX MOV [0000], BX IF DE IF DE EX MOV AX, [0000] IF DE IF DE EX MOV BX, [0008] IF DE IF DE EX ADD AX, BX IF DE EX MOV [0006], AX IF DE IF DE EX Akan terjadi dua buah RAW Hazard : 1. antara instruksi ke-2 dan ke-3 dimana instruksi ketiga akan membaca CX sebelum diisi data [0004] oleh instruksi kedua. Untuk menghindarinya, kita harus menunda eksekusi instruksi ketiga sampai detik ke-7 agar CX yg dibaca adalah data dari [0004]. t = 1 2 3 4 5 6 7 8 9 10 MOV BX, [0002] IF DE IF DE EX MOV CX, [0004] IF DE IF DE EX ADD BX, CX IF DE EX MOV [0000], BX IF DE IF DE EX 2. antara instruksi ke-6 dan ke-7 dimana instruksi ketujuh akan membaca BX sebelum diisi data [0008] oleh instruksi keenam. Untuk menghindarinya, kita harus menunda eksekusi instruksi ketujuh sampai detik ke-13 agar BX yg dibaca adalah data dari [0008] (semua instruksi telah tergeser 2T karena penundaan instruksi ketiga diatas) t = 7 8 9 10 11 12 13 14 15 16 MOV AX, [0000] IF DE IF DE EX MOV BX, [0008] IF DE IF DE EX ADD AX, BX IF DE EX MOV [0006], AX IF DE IF DE EX Total waktu yg dibutuhkan untuk melaksanakan semua instruksi menjadi 16T karena ada 4 buah penundaan. Dengan hasil yang sama, delapan instruksi diatas dapat disusun ulang (reschedule) pengerjaannya menjadi : no t = 1 2 3 4 5 6 7 8 9 10 11 12 13 1 MOV BX, [0002] IF DE IF DE EX 2 MOV CX, [0004] IF DE IF DE EX 3 MOV AX, [0008] IF DE IF DE EX sisipan instruksi lain 4 ADD BX, CX IF DE EX 5 MOV [0000], BX IF DE IF DE EX sisipan instruksi lain 6 ADD AX, BX IF DE EX 7 MOV [0006], AX IF DE IF DE EX Dengan menyusun ulang instruksi waktu yang dibutuhkan sekarang menjadi 13T.

Control Hazard Control Hazards menyebabkan CPU kehilangan performansi yang sangat besar karena ketika suatu instruksi mengubah isi Program Counter (CS+IP), seluruh instruksi setelahnya akan dibatalkan meskipun sudah dijemput (IF). Hal ini terjadi jika instruksi tersebut adalah lompatan (jump), panggilan service (call), dan kembali ke alur program sebelumnya (return). Untuk jump, call, dan return, teknik minimisasi control hazard adalah dengan menghitung alamat tujuan terlebih dahulu dan menjemput instruksi di alamat tujuan tersebut. Hal ini karena ketiga instruksi tersebut perubahan isi PC pasti akan dilakukan (karena lompatan tanpa syarat). Sedangkan untuk lompatan bersyarat isi PC dapat berubah dan dapat juga tidak. Hal ini akan menyebabkan stall yang cukup besar jika instruksi yang dijemput adalah instruksi yang salah. Contoh : Pada cuplikan program Pascal : a := 0; repeat a := a+1; until a = 10; a := b; dimana b = stack jika diterjemahkan ke instruksi mesin oleh compiler Pascal yg lugu : offset t = 1 2 3 4 5 6 7 8 9 a := 0 0100 MOV AX, 0000 IF DE IF DE EX repeat 0103 MOV CX, 000A IF DE IF DE EX a := a + 1 0106 ADD AX, 0001 IF DE IF DE EX until a=10 0109 XOR CX, AX IF DE IF DE EX 010B JNZ 0103 IF DE IF DE EX a := b 010D POP AX IF DE EX Saat instruksi JNZ 0103 dieksekusi (t9), instruksi POP AX telah selesai dieksekusi (t8). Jika lompatan ternyata tidak dilakukan, maka hal ini tidak menjadi masalah karena memang instruksi berikutnya adalah POP AX. Namun jika lompatan ternyata dilakukan, maka hal ini akan menjadi masalah karena register AX telah diubah oleh instruksi POP AX. Ada dua cara yg dapat dilakukan untuk mengurangi Control Hazard : 1. dengan mendeteksi terlebih dahulu apakah lompatan bersyarat akan dilaksanakan atau tidak dengan mengetes instruksi yang mempengaruhi keputusan tersebut. Kelanjutan dari tes ini adalah menghitung alamat tujuan terlebih dahulu. Kelebihan dari cara ini adalah deteksinya 100% benar. Dan kekurangannya adalah diperlukannya hardware tambahan (yg cukup banyak) untuk dapat melakukan testing tersebut. 2. dengan mengasumsikan apakah lompatan bersyarat tersebut akan dilakukan atau tidak. a. Predict adalah menganggap semua lompatan bersyarat pasti dilakukan (pasti melompat) sehingga begitu terjemput suatu instruksi lompatan, maka yg dijemput kemudian adalah instruksiinstruksi di alamat tujuan lompatan tersebut. b. Predict Not adalah menganggap semua lompatan bersyarat pasti tidak dilakukan (pasti tidak melompat) sehingga jika terjemput suatu instruksi lompatan, maka yg dijemput kemudian adalah instruksi-instruksi setelah instruksi lompatan tersebut.

Pengembangan lebih lanjut dari kedua metode diatas (predict-taken dan predict-not-taken) adalah dgn suatu metode yg disebut scoreboard. Algoritma yg digunakan pada metode ini adalah Tomasulo. Not Predict Predict Not Predict Not Not Predict Not Not Dengan menggunakan algoritma Tomasulo di atas, metode scoreboard akan merekam setiap instruksi lompat. Sehingga disini pengambilan keputusan berdasarkan history. Misalnya saat ini scoreboard berisi 00 yg berarti setiap instruksi lompat dianggap akan diambil (predict taken). Sistem akan berubah menjadi predict not taken hanya jika telah terjadi 2x lompatan yg tidak diambil (2x tidak melompat) dimana scoreboard akan berisi harga 10.