You are on page 1of 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

$%

ï 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



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

ï 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)
++
, )' *
+
+-+, 
)

*
ï 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)
++-+
, )' *

#


)+-+
+-+, *
ï 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
+-++-+
, )' *
|

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

  

ï 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.e. Register tidak dinamai secara spesifik
,$
  
ï 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 instruksi
ï Dengan tanda di belakang R yang
mengalokasikan register
ï Catatan : R3a R3b R3c

 

ï 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

You might also like