ARSITEKTUR DAN ORGANISASI KOMPUTER PART 3: THE CENTRAL PROCESSING UNIT CHAPTER 12: PROCESSOR STRUCTURE AND FUNCTION PRIO HANDOKO, S.KOM., M.T.I. CHAPTER 12: PROCESSOR STRUCTURE AND FUNCTION Kompetensi Dasar Mahasiswa memiliki pengetahuan mengenai fungsi dan struktur CPU Agenda Processor Organization Register Organization Instruction Cycle Instruction Pipelining 3 12.1 Processor Organization Fetch instructions: Prosesor membaca sebuah instruksi dari memori (register, cache, main memory) Interpret instructions: Instruksi di decode untuk menentukan action yang diperlukan Fetch data: Pengeksekusian sebuah instruksi bisa memerlukan pembacaan data dari memori atau I/O module Process data: Pengeksekusian sebuah instruksi (operasi ALU) Write data: Hasil eksekusi bisa memerlukan penulisan data ke memory atau I/O Module 4 1
The CPU with the System Bus Internal Structure of the CPU 11/26/2014 12.1 Processor Organization (cont ) 12.1 Processor Organization (cont ) 5 6 12.2 Register Organization Register dalam prosesor memiliki 2 peran: 1. User-visible register Register yang dapat direferensi menggunakan bahasa mesin/rakitan/assembler (machine language) 2. Control and Status Register: Register yang digunakan oleh control unit untuk mengendalikan operasi pengolahan prosesor User-visible Register Dikelompokkan menjadi: 1. General Purpose Register 2. Data Register 3. Address Register 4. Condition Codes Register 7 8 2
1. General Purpose Register Bisa digunakan sebagai operand untuk setiap instruksi (true general purpose) Hanya beberapa yang bisa digunakan sebagai operand pada instruksi tertentu (restricted) Pada beberapa kasus bisa digunakan untuk addressing function (register indirect, displacement) Bisa digunakan untuk menyimpan data atau address. Data: Accumulator Addressing: Segment Make them general purpose Fleksibilitas tinggi dan keleluasan pemrograman Instruksi lebih panjang (lebih rumit) Make them specialized Instruksi lebih pendek (kinerja lebih baik) Kurang fleksibel 9 10 2. Data Register Jumlah register sekitar 8 23 Banyaknya register berpengaruh pada rancangan set instruksi Lebih banyak register, maka semakin banyak juga bit operand-nya Semakin sedikit register, maka memori utama akan lebih sering direferensi 4. Condition Codes Register Register yang menampung condition codes (flags). Condition codes berupa bit yang yang diset oleh perangkat keras prosesor sebagai hasil dari suatu operasi. Dapat dibaca oleh program. Tidak dapat diset oleh program. 11 12 3
Control and Status Register Terdapat 4 register yang umumnya digunakan untuk eksekusi instruksi: 1. Program Counter (PC) 2. Instruction Register (IR) 3. Memory Address Register (MAR) 4. Memory Buffer Register (MBR) Status register: register yang menampung condition code pengolahan yang disebut dengan program status word (PSW), terdiri dari: Sign (hasil akhir dari operasi ALU) Zero (diset jika hasil akhir operasi ALU = 0) Carry Equal Overflow Interrupt enable/disable Supervisor (supervisor atau user mode) 13 14 12.3 Instruction Cycle Terdiri dari 3 tahapan: 1. Fetch 2. Execute 3. Interrupt Terdapat 1 tambahan tahapan siklus instruksi yang dikenal dengan nama indirect cycle Indirect Cycle Eksekusi instruksi mungkin membutuhkan lebih dari satu operand, Setiap kali operand dibutuhkan, maka hal ini akan membutuhkan akses ke memori, Setiap kali melakukan akses ke memori, maka indirect address dilakukan, dan Setiap kali indirect address dilakukan, maka dibutuhkan tambahan akses ke memori. 15 16 4
Fetch Diaram Indirect Diaram 11/26/2014 The instruction cycle (with) indirect cycle The instruction cycle (with) indirect cycle 17 18 Data Flow (instruction Fetch) 19 20 5
Interrupt Diaram 11/26/2014 Instruction Prefetch Pengambilan instruksi selanjutnya ketika prosesor tengah melakukan eksekusi intruksi Mengapa hal ini dapat dilakukan? Karena, ketika prosesor melakukan eksekusi, prosesor tidak mengakses memori 21 22 12.4 Pipelining Instruksi pipeline serupa dengan penggunaan assembly line pada pabrikpabrik perakitan Contoh assembly line? Pipeline, input baru diterima di salah satu ujung sebelum input yang diterima sebelumnya muncul sebagai output diujung lainnya. Common instruction stage Pipelining instruction stage 23 24 6
Waktu eksekusi pada umumnya lebih lama dari waktu fetch, sehingga tahapan fetch menunggu untuk beberapa waktu untuk mengosongkan buffer. Conditional branch instruction akan membuat instruksi berikutnya yang akan diambil tidak jelas, jadi tahapan fetch harus menunggu sampai alamat instruksi dari tahapan eksekusi. Tahapan eksekusi harus menunggu ketika instruksi selanjutnya tengah di-fetch Hal ini akan meningkatkan kecepatan (speed up) pengolahan Speed up dapat ditingkatkan dengan menambahkan lagi beberapa tahapan (stage): Fetch instruction (FI) Decode instruction (DI) Calculate operands (CO) Fetch operands (FO) Execute instructions (EI) Write operand (WO) 25 26 Nonpipeline operation Pipeline operation Berapakah waktu yang dibutuhkan untuk menyelesaikan 9 instruksi pengolahan, jika setiap instruksi, diselesaikan dalam 6 stage dan setiap stage berdurasi 1 unit waktu? Jawab: 1 instruksi x 6 stage x 1ms = 6 unit waktu 9 instruksi x 6 stage x 1ms = 54 unit waktu Berapakah waktu yang dibutuhkan untuk menyelesaikan 9 instruksi pengolahan, jika setiap instruksi, diselesaikan dalam 6 stage dan setiap stage berdurasi 1 unit waktu? Jawab: 14 unit waktu 27 28 7
Timing Diagram for Instruction Pipeline Operation Faktor penghambat pipelining: 1. Jika ke-6 stage memerlukan durasi yang berbeda, maka yang lebih cepat harus menunggu. 2. Adanya conditional branch instruction. 29 30 The Effect of a Conditional Branch on Instruction Pipeline Operation Six-Stage CPU Instruction Pipeline Pengecekan ada atau tidaknya conditional branch selalu dilakukan setelah stage CO dilakukan Pada saat ini prosesor belum mengetahui instruksi apa yang akan di-fetch hingga instruksi dieksekusi 31 32 8
An Alternative Pipeline Depiction Dealing with Branches Berbagai pendekatan untuk menangani Branch Multiple Streams Prefetch Branch Target Loop buffer Branch prediction Delayed branching 33 34 Multiple Streams Kedua instruksi percabangan (branch) diambil dengan dua buah stream Prefetch setiap branch kedalam pipeline yang terpisah Menggunakan pipeline yang sesuai Masalah dengan pendekatan ini: Akan terjadi perebutan dan delay untuk akses register dan memori Instruksi branch tambahan bisa masuk lagi sebelum instruksi branch utama diselesaikan, sehingga tidak mampu ditangani oleh sistem. 35 36 9
Loop Buffer Menggunakan very fast memory Very good for small loops or jumps Branch Prediction 37 38 Berbagai teknik digunakan untuk memprediksi apakah suatu branch akan diambil antara lain: Predict never taken Assume that jump will not happen Always fetch next instruction Predict always taken Assume that jump will happen Always fetch target instruction Berdasarkan studi lebih dari 50% branch dilaksanakan As soon as the branch is decoded and the target address is computed, we assume the branch to be taken and begin fetching and executing at the target address. Predict by Opcode Prosesor berasumsi jump akan dilaksanakan pada instruksi dengan opcode terterntu saja. Can get up to 75% success Taken/Not taken switch Based on previous history Good for loops Branch History Table Menyimpan history instruksi-instruksi branch yang baru saja dieksekusi 39 40 10
Branch Prediction Flowchart Branch Prediction State Diagram 41 42 Contoh Soal Contoh Soal Diketahui prosesor tanpa pipeline dengan 6 tahapan eksekusi instruksi masing-masing memerlukan waktu sebagai berikut: 50 ns, 50 ns, 60 ns, 60 ns, 50 ns, dan 50 ns. Hitung: a) Instruction latency b) Total waktu untuk mengeksekusi 100 instruksi Jawab: a) (50+50+60+60+50+50) ns = 320 ns b) 100 instruksi * 320 ns = 32.000 ns 43 Menyambung soal di atas, jika prosesor menggunakan pipeline dimana memerlukan waktu tambahan (overhead) untuk pindah dari satu stage ke stage yang lainnya. Hitung waktu yang diperlukan untuk menjalankan 100 instruksi! Jawab: The length of pipelined stage = MAX(lengths of unpipelined stages) + overhead 60 + 5 = 65 ns Instruction latency = 65 ns Time to execute 100 instructions = 65x6 + 65x99 = 390 + 6.435 = 6.825 ns 44 11
Contoh Soal Contoh Soal Dari kedua soal diatas hitung speed up-nya! Jawab: Average instruction time not pipelined = 320 ns Average instruction time pipelined = 65 ns Speedup = 320 ns/ 65 ns = 4.92 ns Bagaimana dengan pipelining pada operasi aritmatika? 45 46 PART 3: THE CENTRAL PROCESSING UNIT CHAPTER 12: PROCESSING STRUCTURE AND FUNCTION - THANK YOU - 12