Anda di halaman 1dari 27

|  




  |   .

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

  ï Sebagian besar operasi dilakukan pada kuantitas skalar ï Penyempurnaan operasi-operasi ini untuk memperoleh penyempurnaan secara keseluruhan .

   .

 ï 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 .

! "  .

# ï Paralel pada level instruksi ï Optimisasi berbasis Compiler ï Teknik tingkat perangkat keras ï Dibatasi oleh Ketergantungan data sesungguhnya Ketergantungan Prosedural Benturan sumberdaya Ketergantungan luaran Antidependensi .

r1 (r3 := r1. $% ï ADD r1.) ï MOVE r3.) ï Dapat melakukan fetch dan decode instruksi kedua secara paralel terhadap instuksi pertama ï Tidak dapat mengeksekusi instruksi kedua sampai instruksi pertama selesai . r2 (r1 := r1+r2.

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

 # ï 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) .

 &' .

' ï 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 .

#( # )! !%* ï Diurutkan secara bagaimana instruksi diambil (fetched) ï Diurutkan secara bagaimana instruksi di eksekusi (executed) ï Diurutkan secara bagaimana instruksi mengubah register dan memori .

#  )+ +. * ï Menerbitkan instruksi sesuai urutan kejadian ï Tidak sangat efisien ï Boleh menerbitkan lebih dari 1 instruksi ï Bila perlu instruksi harus stall (terhenti) .

++ . )' * .

merupakan ketergantungan luaran (read-write) . (I3) I2 tergantung pada hasil dari I1 ƛ ketergantungan data Bila I3 selesai sebelum I1. (I1) R4:= R3 + 1. hasil dari I1 akan menjadi salah.+ +-+. (I2) R3:= R5 + 1.  )  * ï Ketergantungan Luaran R3:= R3 + R5.

++-+ . )' * .

proseso rdapat melihat instruksi berikutnya . * ï 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. #  )+-+ +-+.

+-++-+ . )' * .

(I4) I3 tidak dapat selesai sebelum I2 dimulai seperti halnya I2 memerlukan nilai dari R3 dan I3 mengubah R3 . (I1) R4:=R3 + 1. (I3) R7:=R3 + R4. (I2) R3:=R5 + 1.| ï Arite-write dependency R3:=R3 + R5.

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

$    ï R3b:=R3a + R5a (I1) ï R4b:=R3b + 1 (I2) ï R3c:=R5a + 1 (I3) ï R7b:=R3c + R4b (I4) ï Tanpa tanda di belakang R (R1. R3. dst) yang merujuk ke register lojikal dalam instruksi ï Dengan tanda di belakang R yang mengalokasikan register ï Catatan : R3a R3b R3c . R2..

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

 !# )!$ !* ï 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 .

ï 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 . !#%'  .

! .

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