Instr Paralel n Superscalar

download Instr Paralel n Superscalar

of 27

  • date post

    26-Jun-2015
  • Category

    Documents

  • view

    146
  • download

    0

Embed Size (px)

Transcript of Instr Paralel n Superscalar

ARSITEKTUR KOMPUTER MINGGU VIIIBAB 13 Paralel Tingkat Instruksi dan Prosesor Superskalar

Apa itu Superskalar?

z Instruksi Umum (Aritmatika, load/store, pencabangan kondisional) dapat diawali dan dieksekusi secara independen/mandiri z Dapat diaplikasikan setara pada RISC & CISC z Biasanya diaplikasikan pada RISC

Mengapa Superskalar?z Sebagian besar operasi dilakukan pada kuantitas skalar z Penyempurnaan operasi-operasi ini untuk memperoleh penyempurnaan secara keseluruhan

Organisasi Umum Superskalar

Superpipelinz Banyak tahapan pipeline memerlukan clock cycle kurang dari setengah z Clock speed internal dua kali ganda dua dapat memperoleh 2 tugas pada tiap external clock cycle z Superscalar mengijinkan operasi fetch dan execute secara paralel

Superscalar vs Superpipeline

Keterbatasanz z z z Paralel pada level instruksi Optimisasi berbasis Compiler Teknik tingkat perangkat keras Dibatasi olehy y y y y Ketergantungan data sesungguhnya Ketergantungan Prosedural Benturan sumberdaya Ketergantungan luaran Antidependensi

Ketergantungan data sesungguhnyaz ADD r1, r2 (r1 := r1+r2;) z MOVE r3,r1 (r3 := r1;) z Dapat melakukan fetch dan decode instruksi kedua secara paralel terhadap instuksi pertama z Tidak dapat mengeksekusi instruksi kedua sampai instruksi pertama selesai

Ketergantungan Proseduralz Tidak dapat mengeksekus instruksi setelah pencabangan secara paralel terhadap instruksi sebelum pencabangan z Juga, bila panjang instruksi tidak tetap, instruksi-instruksi harus didekode untuk memperolehhmenghasilkan berapa banyak fetch yang diperlukan z Hal ini akan mencegah fetch secara simultan/serempak

Benturan Sesumberz Dua atau lebih instruksi memerlukan akses terhadap sesumber yang sama pada saat yang samay Mis: dua instruksi aritmatik

z Dapat menduplikasi sesumbery Mis: memiliki 2 unti aritmatik (ALU)

Ketergantung an/Dependensi

Isu Desainz Paralel Level Instruksiy Instruksi-instruksi dalam sebuah urutan salling independent y Eksekusi dapat dilakukan secara tumpang-tindaih (overlapped) y Diatur oleh ketergantungan data dan prosedural

z Paralel Mesiny Kemampuan untuk mendapatkan keuntungan dari paralel level instruksi y Diatur oleh jumlah pipeline yang paralel

Kebijakan Penerbitan Instruksi (Instruction Issue Policy)z Diurutkan secara bagaimana instruksi diambil (fetched) z Diurutkan secara bagaimana instruksi di eksekusi (executed) z Diurutkan secara bagaimana instruksi mengubah register dan memori

Penerbitan Sesuai Urutan Pelengkapan Sesuai Urutan (In-Order Issue In-Order Completion)z z z z Menerbitkan instruksi sesuai urutan kejadian Tidak sangat efisien Boleh menerbitkan lebih dari 1 instruksi Bila perlu instruksi harus stall (terhenti)

In-Order Issue In-Order Completion (Diagram)

In-Order Issue Out-of-Order Completion (Pelengkapan tidak sesuai urutan)z Ketergantungan LuaranR3:= R3 + R5; (I1) R4:= R3 + 1; (I2) R3:= R5 + 1; (I3) I2 tergantung pada hasil dari I1 ketergantungan data y Bila I3 selesai sebelum I1, hasil dari I1 akan menjadi salah, merupakan ketergantungan luaran (read-write) y y y y

In-Order Issue Out-of-Order Completion (Diagram)

Penerbitan tidak Sesuai Urutan Pelengkapan tidak Sesuai Urutan

(Out-of-Order IssueOut-of-Order Completion)

z Pipeline dekode Decouple dari eksekusi pipeline (Decouple decode pipeline from execution pipeline) z Dapat dilanjutkan ke fetch dan decode sampai seluruh pipeline selesai z Saat unti fungsional diperoleh, sebuah instruksi dapat dieksekusi z Karena instruksi telah didekode, proseso rdapat melihat instruksi berikutnya

Out-of-Order Issue Out-of-Order Completion (Diagram)

Antidependensiz Write-write dependencyy y y y y R3:=R3 + R5; (I1) R4:=R3 + 1; (I2) R3:=R5 + 1; (I3) R7:=R3 + R4; (I4) I3 tidak dapat selesai sebelum I2 dimulai seperti halnya I2 memerlukan nilai dari R3 dan I3 mengubah R3

Penamaan ulang Registerz Ketergantungan luaran dan antidependensi terjadi karena isi register mungkin merefleksikan urutan yang benar dari yang diuturkan dari program z Mungkin dihasilkan dalampipeline stall z Register dialokasikan secara dinamisy i.e. Register tidak dinamai secara spesifik

Contoh Penamaan Ulang RegisterR3b:=R3a + R5a (I1) R4b:=R3b + 1 (I2) R3c:=R5a + 1 (I3) R7b:=R3c + R4b (I4) Tanpa tanda di belakang R (R1, R2, R3, dst) yang merujuk ke register lojikal dalam instruksi z Dengan tanda di belakang R yang mengalokasikan register z Catatan : R3a R3b R3c z z z z z

Paralel MesinDuplikasi sesumber Penerbitan tidak sesuai urutan Penamaan ulang Fungsi-fungsi duplikasi tak bermakna tanpa penamaan ulang register z Memerlukan jendela instruksi yang cukupp besar (lebih dari 8) z z z z

Prediksi Pencabangan (Branch Prediction)z Fetch pada 80486 dapat terjadi next sequential instruction after branch (instruksi berikkutnya setelah pencabangan) maupun branch target instruction (instruksi target pencabangan) z Memberikan penundaan 2 siklus bila mengambil pencabangan

Pencabangan yang Ditunda pada RISCz Menghitung hasil dari pencabangan sebelum instruksi yang tidak digunakan di prefetch z Selslu mengeksekusi instruksi tunggal segera mengikuti pencabangan z Menjaga pipeline berjalan penuh selama laju pengambilan instruksi baru z Tidak sebaik superscalary Instruksi ganda perlu dieksekusi dalam slot tunda y Masalah ketergantungan instruksi

z Berbalik ke prediksi pencabangan

Eksekusi Superscalar

Implementasi Superscalarz Fetch instruksi ganda secara serempak z Logika untuk menentukan dependensi murni termasuk nilai register z Mekanisme untuk mengkomunikasikan nilai-nilai register z Mekanisme untuk memulai instruksi ganda secara paralel z Sesumbar-sesumbar untuk eksekusi paralel dari instruksi ganda z Mekanisme untuk melakukan keadaan proses dengan urutan yang benar