instr paralel n superscalar
Embed Size (px)
TRANSCRIPT

ARSITEKTUR KOMPUTERMINGGU VIII
BAB 13Paralel Tingkat Instruksi dan Prosesor Superskalar

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

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

Organisasi Umum Superskalar

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

Superscalar vs
Superpipeline

Keterbatasan
Paralel pada level instruksiOptimisasi berbasis CompilerTeknik tingkat perangkat kerasDibatasi oleh
Ketergantungan data sesungguhnya Ketergantungan Prosedural Benturan sumberdaya Ketergantungan luaran Antidependensi

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

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

Benturan Sesumber
Dua atau lebih instruksi memerlukan akses terhadap sesumber yang sama pada saat yang sama Mis: dua instruksi aritmatik
Dapat menduplikasi sesumber Mis: memiliki 2 unti aritmatik (ALU)

Ketergantungan/Dependensi

Isu Desain
Paralel Level Instruksi Instruksi-instruksi dalam sebuah urutan salling
independent Eksekusi dapat dilakukan secara tumpang-
tindaih (overlapped) Diatur oleh ketergantungan data dan prosedural
Paralel Mesin Kemampuan untuk mendapatkan keuntungan
dari paralel level instruksi Diatur oleh jumlah pipeline yang paralel

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

Penerbitan Sesuai UrutanPelengkapan Sesuai Urutan
(In-Order Issue In-Order Completion)Menerbitkan instruksi sesuai urutan
kejadianTidak sangat efisienBoleh menerbitkan lebih dari 1 instruksiBila perlu instruksi harus stall (terhenti)

In-Order Issue In-Order Completion (Diagram)

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

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

Penerbitan tidak Sesuai Urutan Pelengkapan tidak Sesuai Urutan (Out-of-Order IssueOut-of-Order Completion)
Pipeline dekode Decouple dari eksekusi pipeline (Decouple decode pipeline from execution pipeline)
Dapat dilanjutkan ke fetch dan decode sampai seluruh pipeline selesai
Saat unti fungsional diperoleh, sebuah instruksi dapat dieksekusi
Karena instruksi telah didekode, proseso rdapat melihat instruksi berikutnya

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

Antidependensi
Write-write dependency 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 Register
Ketergantungan luaran dan antidependensi terjadi karena isi register mungkin merefleksikan urutan yang benar dari yang diuturkan dari program
Mungkin dihasilkan dalampipeline stallRegister dialokasikan secara dinamis
i.e. Register tidak dinamai secara spesifik

Contoh Penamaan Ulang Register
R3b:=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 instruksiDengan tanda di belakang R yang
mengalokasikan registerCatatan : R3a R3b R3c

Paralel Mesin
Duplikasi sesumberPenerbitan tidak sesuai urutanPenamaan ulangFungsi-fungsi duplikasi tak bermakna
tanpa penamaan ulang registerMemerlukan jendela instruksi yang
cukupp besar (lebih dari 8)

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

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

Eksekusi Superscalar

Implementasi SuperscalarFetch instruksi ganda secara serempak Logika untuk menentukan dependensi murni
termasuk nilai registerMekanisme untuk mengkomunikasikan nilai-nilai
registerMekanisme untuk memulai instruksi ganda secara
paralelSesumbar-sesumbar untuk eksekusi paralel dari
instruksi gandaMekanisme untuk melakukan keadaan proses
dengan urutan yang benar