Instr Paralel n Superscalar

Preview:

Citation preview

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

Recommended