Instruction Execution Phases Instruction Pipeline Design Hendra Rahmawan 23206017 Pipelined Instruction Processing Suatu instruksi yang dieksekusi biasanya terdiri atas urutan dari operasi-operasi (stages) : (F)etches, (D)ecode, (I)ssue, (E)xecute, (W)riteback. Adanya stages memungkinkan untuk melakukan k pipelining. i Instruction Execution Phases Instruction Execution Phases 1
Instruction Execution Phases Untuk melancarkan aliran pada pipeline Terdiri atas beberapa strategi : Prefetch Buffers Multiple Functional Units Internal Data Forwarding Hazard Avoidance Prefetch Buffers Meningkatkan performa pada Fetch stage dengan menambah beberapa buffer instruksi yang akan diumpankan pada pipeline stages berikutnya. Mempertimbangkan 2 jenis pipelining : insequence, out-of-sequence(branching target). 3 Jenis Buffer FIFO : Sequential Buffer in-sequence Target Buffer out-of-sequence Loop Buffer 2
Multiple Functional Units Suatu stage dalam a pipeline pe e dapat menimbulkan masalah ketika stage ini banyak dikunjungi (dapat dilihat dari reservation table) bottleneck. Solusi : dibuat beberapa copy dari stage yang sama dan akan berjalan secara simultan. Model yang diajukan Sohi(1990): Menggunakan Reservation Station (RS) sebagai ruang tunggu bagi instruksi-instruksi yang mengalamai masalah data dependence ataupun resource dependence sebelum memasuki stage. RS juga digunakan sebagai antarmuka antara (D)ecode dan (I)ssue unit dengan pipelined functional units lainnya. Tag Unit akan memonitor penggunaan RS dan registers. Internal Data Forwarding Beberapa operasi memory-access dapat digantikan dengan dengan operasi register transer. Dengan demikian akan mengurangi memory traffic yang akan menghasilkan waktu eksekusi yang lebih pendek. Ada 3 jenis DF : Store-load forwarding Load-load forwarding Store-store forwarding 3
Hazard Avoidance Read dan Write pada shared variables oleh instruksi-instruksi yang berbeda berpotensi menghasilkan nilai yang berbeda (tidak diinginkan) ketika urutan instruksi tidak semestinya Hazards. Ada 3 jenis logic hazards : Read-after-Write (RAW) hazard flow dependece Wit Write-after-Write Wit (WAW)hazard output t dpendence d Write-after-Read (WAR) hazard antidependence Hazards yang terkandung dalam instruksi-instruksi harus ditanggulangi sebelum memasuki pipeline. Hazard Avoidance Kondisi-kondisi yang memungkinkan munculnya hazards (necessary but not sufficient) : R(I) D(J) pada RAW hazard R(I) R(J) pada WAW hazard D(I) R(J) pada WAR hazard 4
Untuk memperkecil waktu eksekusi pipeline maka perlu dilakuka k scheduling terhadap instruksi-instruksi. Ada 2 jenis scheduling : Static scheduling Dynamic scheduling Static Scheduling Data dependencies es antar-instruksi s akan a menimbulkan interlocked relationship antarinstruksi execution time menjadi lama karena harus ada proses menunggu data. Static scheduling oleh compiler dapat meningkatkan pemisahan antara interlocked instructions. Static scheduling oleh compiler lebih murah untuk diimplementasikan. ik Pada high performance computer diperlukan special hardware untuk melakukan dynamic scheduling. Tumasulo s Algorithm Hardware dependence-resolution scheme. Menggunakan arsitektur hardware seperti pada model Sohi(1990). Pada Model 91 : 3 RS pada floating-poing adder dan 2 pasang RS pada floating-poing multiplier. Meresolve resource conflicts dan data dependences dengan menggunakan register tagging untuk mengalokasikan atau mendealokasikan source dan destination register. Tumasulo s Algorithm Issued instruction yang operandnya belum lengkap diforward ke sebuah RS milik functional unit yang akan digunakan. Instruksi tersebut akan menunggu hingga data dependeces telah diresolve sehingga operandnya menjadi lengkap/tersedia. Proses resolve dilakukan dengan memonitor result bus (common bus). Setelah seluruh operand lengkap, instruksi akan dikrim ke functional unit untuk dieksekusi. Seluruh register yang digukanan dalam eksekusi instruksi (working register) akan dcatat/dimonitor (tagged). Jika ada instruksi lain issued, tetapi source register sedang digunakan (busy) maka tag untuk source register akan diforward ke suab RS. Ketika register sudah tidak digunakan, tag tersebut (tag di RS) akan menysinyalkan hal tersebut. 5
CDC Scoreboarding Menggunakan multiple functional units+instruction buffer, tampak sebagai multiple execution pipelines. Adanya parallel units memungkinkan instruksiinstruksi tereksekusi sempurna di luar urutan program semestinya. Instruksi-instruksi akan selalu dimasukkan (issued) ke functional unit meskipun datanya belum lengkap (karena reigster masih digunakan). Menggunakan scoreboard untuk menentukan rute yang sesuai antara execution unts dengan register. Performa dari pipelined processor dibatasi i oleh adanya data dependeces d dan branch instructions. Data dependences dapat ditangani dengan instructions scheduling. Branch instructions yang sarat dengan probabilitas juga harus diatasi dengan strategi-strategi yang baik. 6
Branching Problem Effect of Branching Adanya penalti akibat munculnya delay slot (jumlah pipeline cycle yang terbuang (tak berguna) antara branch taken dan branch target. Throughput dari pipeline harus dihitung dengan melibatkan penalti tersebut. t Effect of Branching Effect of Branching 7
Branch Prediction Branch (taken or not taken) dapat diprediksi berdasarkan code types secara statistik atau berdasarkan branch history selama suatu program dieksekusi. Hasil prediksi (taken or not taken) biasanya ditanamkan (wired) ke dalam prosesor static, semi-static. Dynamic branch strategy menggunakan recent branch history untuk memprediksi. Agar akurat idealnya seluruh history digunakan untuk memprediksi infeasible dibatasi pada recent history Biasanya menggunakan BTB (Branch Target Buffer) untuk menyimpan recent branch information Delayed Branches Mereduksi/meminimasi delay slot (b) bahkan kalau bisa hingga 0 penalti. Menyusun ulang susunan instruksi-instruksi dalam suatu program sehingga branch instructions terjadi pada waktu yang akan datang. Memindahkan useful instruction ke dalam usefull slot. 8