Pertemuan IV Struktur dan Fungsi CPU III Organisasi

  • Slides: 39
Download presentation
Pertemuan IV Struktur dan Fungsi CPU (III) Organisasi Komputer STMIK – AUB SURAKARTA

Pertemuan IV Struktur dan Fungsi CPU (III) Organisasi Komputer STMIK – AUB SURAKARTA

Siklus Instruksi Masih ingat apa saja? Fetch Execute Interrupt Masih ada lagi?

Siklus Instruksi Masih ingat apa saja? Fetch Execute Interrupt Masih ada lagi?

Sub-siklus Instruksi § Fetch : membaca instruksi berikutnya dari memori ke dalam CPU §

Sub-siklus Instruksi § Fetch : membaca instruksi berikutnya dari memori ke dalam CPU § Execute : menginterpretasikan opcode dan melakukan operasi yang diindikasikan § Interrupt : Apabila interrupt diaktifkan dan interrupt telah terjadi, simpan status proses saat itu dan layani interrupt.

Siklus Tak Langsung § Eksekusi sebuah instruksi dapat melibatkan sebuah operand atau lebih di

Siklus Tak Langsung § Eksekusi sebuah instruksi dapat melibatkan sebuah operand atau lebih di dalam memori, yang masing memori memerlukan akses memori. § Pengambilan alamat-alamat yang tak langsung dapat dianggap sebagai sebuah subsiklus instruksi. (Buka kembali Arkom – Mode Pengalamatan – Indirect)

Siklus Instruksi

Siklus Instruksi

Diagram Status Siklus Instruksi

Diagram Status Siklus Instruksi

Aliran Data Siklus Pengambilan (Instruction Fetch) § Urutan kejadian selama siklus instruksi tergantung pada

Aliran Data Siklus Pengambilan (Instruction Fetch) § Urutan kejadian selama siklus instruksi tergantung pada rancangan CPU. § Umumnya : Sebuah komputer menggunakan § register memori alamat (MAR), § register memori buffer (MBR), § pencacah program (PC) dan § register instruksi (IR).

Aliran Data Siklus Pengambilan (Instruction Fetch) § Prosesnya: § Pada saat siklus pengambilan (fetch

Aliran Data Siklus Pengambilan (Instruction Fetch) § Prosesnya: § Pada saat siklus pengambilan (fetch cycle), instruksi dibaca dari memori. § PC berisi alamat instruksi berikutnya yang akan diambil. § Alamat ini akan dipindahkan ke MAR dan ditaruh di bus alamat. § Unit kontrol meminta pembacaan memori dan hasilnya disimpan di bus data dan disalin ke MBR dan kemudian dipindahkan ke IR. § PC naik nilainya 1, sebagai persiapan untuk pengambilan selanjutnya.

Aliran Data Siklus Pengambilan (Instruction Fetch) § Selanjutnya: § Siklus selesai, unit kontrol memeriksa

Aliran Data Siklus Pengambilan (Instruction Fetch) § Selanjutnya: § Siklus selesai, unit kontrol memeriksa isi IR untuk menentukan apakah IR berisi operand specifier yang menggunakan pengalamatan tak langsung. § Apabila pengalamatan tak langsung, maka siklus tak langsung akan dijalankan.

Aliran Data Siklus Tak Langsung § N bit paling kanan pada MBR, yang berisi

Aliran Data Siklus Tak Langsung § N bit paling kanan pada MBR, yang berisi referensi alamat, dipindahkan ke MAR. § Unit kontrol meminta pembacaan memori, agar mendapatkan alamat operand yang diinginkan ke dalam MBR.

Aliran Data Siklus Execute § Siklus pengambilan dan siklus tak langsung cukup sederhana dan

Aliran Data Siklus Execute § Siklus pengambilan dan siklus tak langsung cukup sederhana dan dapat diramalkan. § Siklus instruksi (instruction cycle) mengambil banyak bentuk karena bentuk bergantung pada bermacam-macam instruksi mesin yang terdapat di dalam IR. § Siklus meliputi pemindahan data di antara register-register, pembacaan atau penulisan dari memori, I/O, dan atau penggunaan ALU.

Aliran Data Siklus Interupsi § Isi PC saat itu harus disimpan sehingga CPU dapat

Aliran Data Siklus Interupsi § Isi PC saat itu harus disimpan sehingga CPU dapat melanjutkan aktivitas normal setelah terjadinya interrupt. § Proses : § Isi PC dipindahkan ke MBR untuk dituliskan ke dalam memori. § Lokasi memori khusus yang dicadangkan untuk keperluan ini dimuatkan ke MAR dari unit kontrol. § Lokasi ini berupa stack pointer. § PC dimuatkan dengan alamat rutin interrupt. § Akibatnya, siklus instruksi berikutnya akan mulai mengambil instruksi yang sesuai.

Prefetch § Siklus fetch mengakses memori utama § Siklus eksekusi tidak mengakses main memory

Prefetch § Siklus fetch mengakses memori utama § Siklus eksekusi tidak mengakses main memory § Pada saat CPU dapat mengambil instruksi berikutnya selama eksekusi sebuah instruksi dijalankan disebut instruction prefetch

§ Dari adanya siklus prefetch, muncullah ‘PIPELINING’

§ Dari adanya siklus prefetch, muncullah ‘PIPELINING’

Strategi Pipelining § Input baru akan diterima pada sebuah sisi sebelum input yang diterima

Strategi Pipelining § Input baru akan diterima pada sebuah sisi sebelum input yang diterima sebelumnya keluar sebagai output di sisi lainnya. § Pendekatan : § Pipelining instruksi mirip dengan penggunaan rangkaian perakitan pada pabrik. § Rangkaian perakitan memanfaatkan kelebihan yang didapat dari fakta bahwa suatu produk diperoleh dengan melalui berbagai tahapan produksi. § Dengan menaruh proses produksi di luar rangkaian perakitan, maka produk yang berada di berbagai tahapan dapat bekerja secara bersamaan.

Penerapan pipelining di dunia nyata § Suatu proses pembuatan mobil. § Ketika sebuah mobil

Penerapan pipelining di dunia nyata § Suatu proses pembuatan mobil. § Ketika sebuah mobil dibuat, mobil tersebut berjalan dengan berurutan, melewati beberapa stasiun. Pada setiap stasiun, dikerjakan sebagian proses konstruksi pada mobil itu, kemudian berpindah lagi ke stasiun berikutnya. § Perpindahan mobil itu dari satu stasiun ke stasiun lainnya, memungkinkan beberapa mobil berada pada baris perakitan pada waktu yang bersamaan, masing-masing pada stasiun yang terpisah. § Dengan demikian, hal ini mengakibatkan kita menghasilkan mobil dari baris perakitan satu persatu secara berurutan. Tanpa teknik baris perakitan seperti ini, pengerjaan suatu mobil tidak dapat dimulai sampai mobil yang sebelumnya benar -benar selesai.

Pipeline instruksi dua tahap

Pipeline instruksi dua tahap

Pipeline? Pengolahan Instruksi 1. Pengambilan instruksi 2. Pengeksekusian instruksi § § Terdapat waktu yang

Pipeline? Pengolahan Instruksi 1. Pengambilan instruksi 2. Pengeksekusian instruksi § § Terdapat waktu yang dibutuhkan selama proses eksekusi sebuah instruksi pada saat memori sedang tidak diakses. Waktu ini dapat digunakan untuk mengambil instruksi berikutnya secara paralel (bersamaan) dengan eksekusi instruksi saat itu.

Tahapan Pipeline § Tahapannya independen § Tiap tahapan bekerja sendiri § Kedua bekerja dalam

Tahapan Pipeline § Tahapannya independen § Tiap tahapan bekerja sendiri § Kedua bekerja dalam waktu yang bersamaan. § Berapa tahap?

2 Tahapan Pipeline § Tahapan pertama mengambil instruksi dan mem-buffer-kannya § Ketika tahapan kedua

2 Tahapan Pipeline § Tahapan pertama mengambil instruksi dan mem-buffer-kannya § Ketika tahapan kedua bebas, tahapan pertama mengirimkan instruksi yang dibuffer-kan tersebut. § Pada saat tahapan kedua sedang mengeksekusi instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk mengambil dan membufferkan instruksi berikutnya. § Proses ini disebut instruction prefetch atau fetch overlap.

Efek Pipeline § Mempercepat eksekusi instruksi § Apabila tahapan pengambilan dan eksekusi instruksi memerlukan

Efek Pipeline § Mempercepat eksekusi instruksi § Apabila tahapan pengambilan dan eksekusi instruksi memerlukan waktu yang sama, maka siklus instruksi akan berkurang menjadi separuhnya.

§ Penggandaan kecepatan eksekusi tidak akan terjadi apabila beberapa hal terjadi. § Apa alasannya?

§ Penggandaan kecepatan eksekusi tidak akan terjadi apabila beberapa hal terjadi. § Apa alasannya? § Bagaimana solusinya?

Alasan? § Umumnya waktu eksekusi akan lebih lama dibandingkan dengan pengambilan instruksi. Kenapa? §

Alasan? § Umumnya waktu eksekusi akan lebih lama dibandingkan dengan pengambilan instruksi. Kenapa? § Eksekusi ini akan meliputi pembacaan dan pemyimpanan operand serta kinerja sejumlah operasi sehingga tahapan pengambilan mungkin perlu menunggu beberapa saat sebelum mengosongkan buffer-nya. § Instruksi percabangan bersyarat akan membuat alamat instruksi berikutnya yang akan diambil tidak diketahui. § Tahapan pengambilan harus menunggu sampai menerima alamat instruksi berikutnya dari tahapan eksekusi. Dengan demikian tahap eksekusi harus menunggu pada saat fetch.

Solusi § Kerugian waktu yang diakibatkan tahapan kedua dapat dikurangi dengan jalan : Menebak

Solusi § Kerugian waktu yang diakibatkan tahapan kedua dapat dikurangi dengan jalan : Menebak = Prediksi

Aturan Prediksi § Instruksi percabangan bersyarat dikirimkan dari tahapan pengambilan ke tahapan eksekusi, tahapan

Aturan Prediksi § Instruksi percabangan bersyarat dikirimkan dari tahapan pengambilan ke tahapan eksekusi, tahapan pengambilan mengambil instruksi selanjutnya di dalam memori setelah terjadi instruksi percabangan tersebut. § Apabila percabangan tidak dilakukan, maka tidak akan terdapat waktu yang hilang. § Apabila percabangan dilakukan, instruksi yang diambil harus dibuang dan instruksi yang baru harus diambil

§ Kedua faktor tersebut mengurangi efektifitas pipelining dua tahap, namun terjadi juga beberapa percepatan.

§ Kedua faktor tersebut mengurangi efektifitas pipelining dua tahap, namun terjadi juga beberapa percepatan. § Untuk memperoleh percepatan lebih lanjut, pipelining harus memiliki lebih banyak tahapan

Pipelining § Fetch instruction (FI) § Membaca instruksi berikutnya ke dalam buffer § Decode

Pipelining § Fetch instruction (FI) § Membaca instruksi berikutnya ke dalam buffer § Decode instruction (DO) § Menentukan opcode dan operand specifier § Calculate operands (CO) § Menghitung alamat efektif operand sumber. § Fetch operands (FO) § Mengambil semua operand dari memori § Execute instructions (EI) § Melakukan operasi yang diindikasikan § Write result (WO) § Menyimpan hasilnya ke dalam memori § PIPELINING Overlap these operations

Timing of Pipelining

Timing of Pipelining

Faktor penghambat peningkatan kinerja § Keenam tahapan memiliki durasi waktu yang tidak sama, terjadi

Faktor penghambat peningkatan kinerja § Keenam tahapan memiliki durasi waktu yang tidak sama, terjadi waktu tunggu pada beberapa tahapan pipeline. § Instruksi percabangan bersyarat yang dapat menggagalkan beberapa pengambilan instruksi

Percabangan dalam Pipeline

Percabangan dalam Pipeline

Percabangan dalam Pipeline § Instruksi 3 adalah percabangan bersyarat instruksi 15 § Sampai saat

Percabangan dalam Pipeline § Instruksi 3 adalah percabangan bersyarat instruksi 15 § Sampai saat instruksi selesai dieksekusi, tidak ada cara untuk mengetahui instruksi mana yang akan terjadi kemudian. § Instruksi 4 sampai 14 tidak dilakukan eksekusi sehingga data harus dibersihkan dari jalurnya § Eksekusi dilanjutkan saat percabangan instruksi 15 sudah dilakukan.

Six Stage Instruction Pipeline

Six Stage Instruction Pipeline

Penanganan Percabangan § Untuk apa? § Menjamin terjadinya aliran instruksi yang stabil. § Kestabilan

Penanganan Percabangan § Untuk apa? § Menjamin terjadinya aliran instruksi yang stabil. § Kestabilan akan tergangggu saat instruksi mengalami percabangan karena belum bisa ditentukan tujuan percabangan tersebut § Beberapa metode dirancang untuk mengatasi hal tersebut.

Teknik Pendekatan 1. 2. 3. 4. 5. Multiple Streams Prefetch branch target Loop buffer

Teknik Pendekatan 1. 2. 3. 4. 5. Multiple Streams Prefetch branch target Loop buffer Branch prediction Delayed branch

Multiple Streams § Kedua instruksi percabangan diambil dengan dua buah streams. Kelemahan: § Adanya

Multiple Streams § Kedua instruksi percabangan diambil dengan dua buah streams. Kelemahan: § Adanya persaingan dalam mengakses register dan memori untuk dimasukkan dalam pipeline. § Bila dalam percabangan tersebut terdapat percabangan lagi, tidak mampu ditangani oleh dua stream. § Walaupun terdapat kelemahan tapi terbukti meningkatkan kinerja pipelining § Teknik ini diterapkan pada IBM 370/168 dan IBM 3033

Prefetch branch target § Apabila percabangan bersyarat telah diketahui Prosesnya: § Dilakukan pengambilan awal

Prefetch branch target § Apabila percabangan bersyarat telah diketahui Prosesnya: § Dilakukan pengambilan awal (prefetch) terhadap instruksi setelah percabangan dan target percabangan § Diterapkan pada IBM 360/91 Masalah: § Diperlukan buffer dan register untuk prefetch

Loop Buffer § Apabila terdapat percabangan maka perangkat keras memeriksa apakah target percabangan telah

Loop Buffer § Apabila terdapat percabangan maka perangkat keras memeriksa apakah target percabangan telah ada dalam buffer, bila telah ada maka instruksi berikutnya diambil dari buffer. § Perbedaan dengan prefetch adalah pada loop buffer akan membuffer instruksi ke depan dalam jumlah yang banyak, sehingga bila target tidak berjauhan lokasinya maka secara otomatis telah terbuffer. § Terkesan teknik ini seperti cache memori, namun terdapat perbedaan karena loop buffer masih mempertahankan urutan instruksi yang diambilnya.

Branch Prediction § Penganalisaan sejarah instruksi, kenapa? § Instruksi komputer seringkali terjadi berulang Sehingga:

Branch Prediction § Penganalisaan sejarah instruksi, kenapa? § Instruksi komputer seringkali terjadi berulang Sehingga: § Teknik prediksi ini juga diterapkan dalam pengambilan instruksi pada cache memory. § Diperlukan algoritma khusus untuk melakukan prediksi tersebut. § Patokan memprediksi target percabangan § Penganalisaan eksekusi-eksekusi yang telah terjadi dan aspek lokalitas § Aspek lokalitas memori adalah kecenderungan penyimpanan instruksi yang berhubungan dalam tempat yang berdekatan

Delayed Branch § Eksekusi pada tahapan pipeline yang melibatkan percabangan akan dilakukan penundaan proses

Delayed Branch § Eksekusi pada tahapan pipeline yang melibatkan percabangan akan dilakukan penundaan proses beberapa saat sampai didapatkan hasil percabangan. § Namun tahapan pipelining lainnya dapat berjalan seiring penundaan tersebut § Teknik penundaan ini disebut dengan menggunakan instruksi NOOP