Ide awal dari VLIW adalah adanya komputasi paralel Alan Turing pada tahun
1946 dan Maurice Wilkes pada tahun 1951 saat melakukan pekerjaan microprogramming. CPU
Microprogrammed memiliki macroinstruction yang sesuai dengan setiap instruksi
program. Masing-masing macroinstructions memiliki urutan yang sesuai
microinstructions dan disimpan
dalam ROM pada CPU. Microinstructions ini dapat di-order di dalam set yang luas dari sinyal
kontrol. Hal ini dinamakan
microprogramming horisontal.
Ketika Joseph Fisher bekerja menulis microcode horisontal untuk emulator-6600 CDC pada tahun 1979, ia mulai memikirkan teknik untuk menghasilkan instruksi yang panjang dari sekuensial yang singkat. Teknik-teknik yang dikembangkan, disebut "jejak penjadwalan", sangat penting untuk menghasilkan kode VLIW yang kompatibel.
Pada tahun 1984, Fisher dan rekan-rekannya dari Universitas Yale membentuk Multiflow, dengan tujuan menciptakan superkomputer VLIW. Cydrome juga dibentuk pada tahun itu oleh Bob Rau. Meskipun mereka berdua merilis produk jadi tersebut, ternyata pasar tidak siap dan teknologi yang ada juga belum lengkap. Dengan demikian, perusahaan tidak berhasil meraih banyak kesuksesan komersial. Tapi mereka terus menyempurnakan teknologi VLIW, dan kedua pendiri sekarang membawa keahlian mereka untuk Hewlett-Packard Labs, yang telah menghasilkan mesin penelitian playdoh [PDF].
Setelah perusahaan-perusahaan perintis menghilang, hanya sedikit pengembangan yang tampaknya terjadi pada VLIW, sampai insinyur menemukan arsitektur yang ideal untuk perhitungan cepat yang kompleks dan algoritma yang berulang. Jadi munculnya kembali VLIW datang dengan gelombang baru pada chip media pengolahan, dipimpin oleh MPact Chromatic dan Philips Trimedia, yang menyebabkan perkembangan dari implementasi VLIW pertama telah benar-benar terbuka dan sukses: Texas Instruments seri C6X, yang dibahas lebih rinci dalam makalah ini.
Keberhasilan besar chip TI DSP telah membuka jalan bagi generasi baru skala besar desain mikroprosesor VLIW. Pada tahun 2000, startup Transmeta merilis keluarga VLIW berbasis prosesor Crusoe, yang dirancang khusus untuk pengolahan daya rendah di perangkat embedded. Intel mengikuti dengan spesifikasi 64-bit arsitektur, IA-64, dan dilanjutkan dengan Itanium chip.
Munculnya VLIW adalah masalah teknologi yang tepat tersedia pada waktu yang tepat. Pada 1970-an, VLIW hampir tidak dapat diimplementasikan karena sifat mahal dari memori pada saat itu. Prosesor CISC dapat dibuat dengan menggunakan hingga paling sedikit delapan bit untuk instruksi sederhana, sehingga menjadi teknologi pilihan. Pada 1990-an, memori telah menjadi murah, dan VLIW adalah sebuah solusi yang layak.
Hingga pertengahan tahun 1990, belum pernah terjadi pabrikasi teknologi IC yang cukup maju untuk menjalankan implementasi
dari arsitektur komputer pada satu chip. Selain itu, tingkat
kemajuan proses memungkinkan implementasi untuk ditingkatkan pada tingkat yang
memuaskan untuk sebagian besar pasar yang dilayani. Secara
khusus, para vendor mikroprosesor bersaing dalam hal soket pada komputer desktop
(termasuk workstation) dengan mendorong kecepatan dari clock rate dan
eksekusi paralel.
Pasar untuk mikroprosesor desktop terbukti sangat dinamis. Secara khusus, pasar x86 telah mengejutkan banyak pengamat dengan tingkat kinerja dan pencapaian harga per-kinerja tingkat yang banyak orang mengira berada di luar jangkauan. Alasan untuk pesimisme pada x86 adalah karena arsitektur (instruksi set-nya). Memang, dengan munculnya arsitektur RISC, x86 kini diakui sebagai satu set dengan sedikit instruksi.
Kompatibilitas instruksi set adalah jantung dari pasar mikroprosesor desktop. Karena program aplikasi yang disampaikan pengguna akhir dalam bentuk biner (langsung dieksekusi oleh mikroprosesor), keinginan pengguna akhir 'untuk melindungi investasi perangkat lunak mereka menciptakan instruksi-set dengan pembatas yang luar biasa.
Ada pasar yang berbeda, yang lebih kurang terpengaruh oleh instruksi-set inersia. Pasar ini biasanyanya disebut pasar embedded, dan hal ini ditandai dengan produk yang mengandung software yang diinstal pada pabrikasi yang berjalan dalam bentuk set instruksi mikroprosesor, yang tidak mudah jelas bagi pengguna akhir. Meskipun vendor produk yang mengandung mikroprosesor memiliki investasi dalam software yang tertanam, seperti pengguna akhir dengan aplikasi mereka, ada kebebasan yang jauh lebih menguntungkan dari migrasi perangkat lunak yang tertanam ke mikroprosesor baru dengan satu set instruksi yang berbeda. Untuk mengatasi hal ini, pada tingkat yang lebih rendah dari instruksi-set, yang dibutuhkan adalah satu set cukup baik karakteristik pelaksanaan, sangat mutlak kinerja dan / atau harga-performa.
Tingkat yang lebih rendah dari instruksi-set memberikan vendor mikroprosesor kebebasan dan inisiatif untuk mencari set instruksi baru. Keberhasilan mikroprosesor RISC pada pasar high-end adalah contoh inovasi oleh vendor mikroprosesor yang menghasilkan manfaat yang besar cukup untuk mengatasi inersia pasar. Untuk kekecewaan vendor ', manfaat RISC belum cukup untuk mengatasi kekurangan instruksi-set dari pasar komputer desktop mainstream.
Karena kemajuan dalam teknologi fabrikasi IC dan kemajuan dalam teknologi tingkat tinggi pada bahasa compiler, sekarang muncul bahwa vendor mikroprosesor yang dipaksa mengikuti perubahan instruksi set mikroprosesor. Arah baru dalam arsitektur mikroprosesor adalah menuju instruksi set VLIW (instruksi kata yang sangat panjang). Arsitektur VLIW dicirikan oleh petunjuk bahwa beberapa operasi ditentukan secara independen. Hal ini dibandingkan dengan instruksi RISC yang biasanya menentukan satu operasi dan instruksi CISC yang biasanya menentukan beberapa operasi yang lebih singkat. Instruksi VLIW yang tentu lebih lama dari RISC atau CISC, sesuai dengan namanya.
Gambaran Singkat VLIW
Arsitektur VLIW berbeda dengan
arsitektur RISC dan CISC yang diimplementasikan pada mass-market mikroporosesor
sekarang. Sangatlah penting untuk membedakan arsitektur instruction-set, model
pemrograman prosesor, implementasinya, bentuk fisik chip, dan karakterisitknya.
Implementasi mikroprosesor
VLIW dan superscalar pada instruction set memiliki beberapa karakteristik,
yaitu memiliki banyak execution unit dan kemampuan untuk mengeksekusi beberapa
operasi secara serentak. Teknik inilah yang digunakan untuk mendapatkan
performa yang tinggi, namun keduanya memiliki perbedaan dimana tingkat
paralelisme secara eksplisit berada pada VLIW instruction, tetapi pada prosesor
supersalar harus ditemukan pada saat run time oleh hardware.
Implementasi dari VLIW lebih
mudah untuk mecapai performa yang sangat tinggi. Seperti halnya arsitektur RISC
yang memiliki implementasi performa tinggi yang lebih mudah dan lebih murah
dibandingkan dengan CISC. Namun, arsitektur VLIW membutuhkan lebih banyak
support dari compiler.
Mengapa VLIW
Kunci untuk mencapai performa
tinggi pada microprosesor untuk berbagai macam aplikasi adalah dengan memiliki
kemampuan untuk mendapatkan fine-grain, instruction-level parallelism. Beberapa
metode untuk mendapatkan fine-grain parallelism adalah:
+ pipelining
+ multi prosesor
+ implementasi superscalar
+ penentuan beberapa operasi
independen per instruksi
Pipelining sekarang diimplementasikan
secara universal pada prosesor high-performance.
Penggunaan multi prosesor
hanya meningkatkan performa yang terbatas pada aplikasi tertentu saja.
Implementasi superscalar dapat
meningkatkan performa untuk semua jenis aplikasi. Superscalar adalah kemampuan
untuk fetch, issue ke unit eksekusi, dan complete lebih dari satu
instruksi pada suatu waktu.
Menentukan beberapa operasi
per instruksi menciptakani sebuah arsitektur very-long instruction word atau
VLIW. Implemementasi dari VLIW memiliki kemampuan yang sangat mirip dengan
prosesor superscalar, issue dan complete lebih dari satu operasi pada suatu
waktu, dengan satu pengecualian penting: Hardware VLIW tidak bertanggungjawab
untuk menemukan kemungkinan untuk meneksekusi beberapa operasi secara serentak.
Pada implementasi VLIW, long instruction word telah diencode sebagai operasi
yang serentak. Pengkodean secara eksplisit menyebabkan pengurangan yang besar
terhadap kompleksitas hardware dibandingkan dengan implemetasi high-degree
supersclalar pada RISC atau CISC.
Keuntungan utama dari VLIW
adalah implementasi peneksekusian operasi yang benar benar serentak (paralel)
namun lebih murah dan simple daripada membuat prosesor superscalar yang setara
pada RISC atau CISC.
Perbedaan Tingkat Pararelisme
Peningkatan dari kinerja
prosesor berasal dari dua sumber utama: teknologi semikonductor yang lebih
cepat dan pemrosesan paralel. Pemrosesan paralel pada multiprosesor,
multikomputer dan cluster prosesor melibatkan usaha pemrograman yang tinggi
dalam pembentukan sebuah algoritma pemetaan untuk sehingga dapat meningkatkan
kinerja untuk mengeksekusi multiprosesor atau multithread.
Hal
ini menyebabkan pengembangan pada prosesor dengan paralel pada tingkat
instruksi / Instruction Level Parallel (ILP) yang mencoba untuk meningkatkan
kecepatan pengeksekusian program dengan melakukan overlapping ekskusi dari
banyak instruksi yang dibentuk dari program sekuensial.
Sebuah simple prosesor yang
melakukan ferch dan eksekusi satu instruksi pada suatu waktu disebut sebuah
simple scalar processor. Sebuha prosesor dengan banyak function unit memiliki
potensi untuk mengeksekusi beberap operasi secara paralel. Jika keputusan tentang
operasi mana yang akan dieksekusi secara overlap dibuat pada saat runtme
hardware, disebut prosesor superscalar.
Tipe yang lain dari prosesor
ILP tergantung dari cara untuk perencanaan eksekusi yang diturunkan, namun
secara tipikal melibatkan kedua peran dari compiler dan hardware. Di dalam
pengembangan prosesor berkinerja tinggi seperti Intel Pentium dan MIPS R18000,
compiler mencoba untuk menemukan paralelisme untuk prosesor dengan menggunakan
beberapa optimasi. Hasil jadi dari optimasi ini adalah untuk meletakkan
sebanyak mungkin operasi independen sedekat mungkin didalam aliran instruksi.
Pada saat runtime, prosesor melakukan pengecekan instruksi pada suatu waktu,
menganalisa ketergantungan diantara instruksi dan tetap menjaga ketersediaan
data dan resource hardware pada setiap instruksi. Prosesor mencoba untuk
melakukan penjadwalan pada setiap instuksi sehingga data dan function unit
dapat tersedia sesegera mungkin.
Joseph Fisher, orang yang
membuat singkatan VLIW, dikategorikan sebagai mesin yang memiliki arsitektur
dimana melakukan issue terhadap satu instruski yang panjang pada per siklus,
dimana setiap instruksi yang panjang disebut sebagai MultiOp terdiri dari
beberapa operasi independen dimana dieksekusi pada sejumlah kecil siklus dan
secara statis dapat diprediksi siklusnya.
Ini sebagai acuan untuk pengembangan implementasi porsesor yang lebih
cepat dan simple.
Sejarah Singkat VLIW Processor
Untuk
berbagai macam alasan pada saat itu, komputer pada awalnya didesain untuk
memiliki intruksi yang benar benar rumit. Instuksi ini membuat proses disain
dari control cicuit pada komputer menjadi sulit. Solusi dari masalah ini adalah
microprogramming, sebuah teknik yang diajukan oleh Maurice Wilkes pada tahun
1951. Di dalam sebuah micro programmed CPU, setiap instruksi program dianggap
sebagai sebuah instruksi macro yang kana dieksekusi oleh simple porsesor yang
ada di CPU.
Horizontal microprogramming
adalah salah satu cara dari microprogramming dimana bit-bit di dalam sebuah
wide microinstruction secara langsung digunakan untuk control signal di dalam
prosesor. Berbeda jauh dengan vertical microprogramming yang menggunakan
microinstruction yang lebih singkat atau serangkaian microinstruction dengan
kombinasi dari beberapa logika decoding untuk memciptakan control signal.
Microprogramming menjadi teknik yang populer dalam implementasi control unit
pada prosesor setelah IBM mengadopsinya untuk komputer seri System/360.
Joseph Fisher, seorang pionir
datri VLIW, ketika berkerja untuk PUMA, pada emulator CDC-6600, telah putus asa
karena kesulitan untuk menulis dan maintain 64 bit horizontal microcode pada
prosesor itu.
Dia mulai melakukan
investigasi pada sebuah teknik untuk melakukan pemadatan global microcode,
yaitu sebuah metode untuk melakukan generate long horizontal microcode
instruction dari runtunan yang singkat. Kemudian Fisher menyadari bahwa teknih
yang dikembangkannya pada tahun 1979, yang disebut trace scheduling, dapat
digunakan pada compiler untuk melakukan generate code untuk arsitektur seperti
VLIW dari sumber yang sekuensial, karena paralelisme tersedia pada VLIW yang
memiliki cara yang sangan mirip dengan horizontal microcode. Penemuannya
mengacu untuk pengembangan deasin prosesor ELI-512 prosesor dan Bulldog
trace-scheduling compiler.
Dua perusahaan yang didirikan
pada 1984 bertujuan untuk membangun mini supercomputer berbasis VLIW. Salah
satunya adalah Multiflow, dibangun oleh Fisher dan teman kuliahnya dari Yale
University. Satunya lagi adalah Cydrome yang dibangun oleh pionir VLIW Bob Rau
dan teman kuliahnya. Gambar 1 menunjukkan sosok Joseph Fisher dengan komputer
MultiFlow.
Pionir VLIW Joseph
Fisher disamping MultiFlow
Sejak saat itu, prosesor VLIW
telah bangkit dan mendapatkan
kesusksesan pada beberapa bagian. Beberapa prosesor VLIW baru-baru ini
adalah IA-64 atau Itanium dari Intel, Prosesor Crusoe dari Transmeta, Trimedia
media-prosesor dari Phillips dan seri TMS320C62x dari Texas Instrument.
Pada perspektif
yang lebih luas, RISC, CISC,
dan arsitektur VLIW memiliki lebih banyak kesamaan daripada
perbedaan. Perbedaan yang ada,
bagaimanapun, memiliki efek mendalam pada implementasi dari arsitektur
ini.
Arsitektur ini secara umum menggunakan model dari
mesin perhitungan tradisional: Setiap
instruksi membuat perubahan bertahap pada
kondisi (memori, register)
dari komputer, dan
perangkat keras mengambil dan mengeksekusi
instruksi secara berurutan sampai
sebuah
cabang instruksi
mengubah
aliran dari kontrol.
Perbedaan antara RISC CISC dan VLIW dapat dilihat pada Tabel dibawah ini.
Perbandingan
Arsitektur CISC
RISC VLIW
Perbedaan
antara RISC, CISC, dan VLIW adalah pada format dan semantik
dari instruksi. Instruksi CISC memiliki variasi dalam ukuran yang menentukan urutan
operasi, dan terkadang memerlukan serial algoritma decoding (lambat). CISC
biasanya memiliki beberapa register yang memiliki tujuan khusus untuk membatasi cara-cara
tertentu agar
dapat dapat digunakan.
Referensi memori biasanya
dikombinasikan dengan operasi lain
(seperti menambah memori untuk register). Instruksi CISC yang dirancang untuk memanfaatkan microcode.
Instruksi RISC yang
digunakan untuk menjalankan
operasi yang sederhana biasanya memiliki ukuran yang tetap dan cepat
dalam memecahkan
kode. Arsitektur RISC memiliki
jumlah register yang relatif besar.
Instruksi dapat mereferensikan memori
utama hanya melalui operasi load-register-from-memory -dan store-register-to-memory.
Set instruksi RISC
tidak memerlukan microcode dan dirancang untuk
menyederhanakan pipelining.
Instruksi VLIW menyerupai instruksi RISC, perbedaannya
adalah VLIW lebih lama untuk memungkinkan instruksi menentukan beberapa operasi sederhana
yang independen. Sebuah instruksi VLIW
dapat mewakili sebagai beberapa
instruksi
RISC yang
digabungkan. Arsitektur VLIW cenderung
seperti
RISC
pada sebagian besar
atributnya.
Gambar dibawah ini menunjukkan
sebuah fragmen kode bahasa-C yang mengandung
sebuah definisi
fungsi yang
kecil. Fungsi ini menambahkan variabel
lokal pada parameter yang lolos dari pemanggil fungsi. Digambarkan
pula penerapan fungsi
ini dalam kode CISC, RISC, dan VLIW. Contoh ini menunjukan
ketimpangan antara RISC dan
mesin VLIW dan gambaran perbedaan
arsitekturnya.
Implementasi
Fungsi dari CISC RISC dan VLIW
Kode CISC terdiri dari satu
instruksi karena arsitektur CISC memiliki instruksi penambahan (add) yang dapat
mengkodekan alamat memori untuk suatu
tujuan tertentu.
Jadi, instruksi CISC menambahkan variabel lokal dari register r2
ke parameter berbasis
memori. Instruksi
pengkodean
CISC ini biasanya
mengambil empat byte pada beberapa mesin hipotetis.
Kode RISC secara artifisial tidak efisien. Biasanya,
kompiler yang baik akan melewatkan parameter dalam register, yang akan membuat
kode RISC hanya terdiri dari satu instruksi penambahan register-ke-register.
Namun pada
ilustrasi, kode tersebut terdiri dari tiga instruksi seperti yang ditunjukkan.
Ketiga petunjuk memuat parameter ke
register, menambahkannya ke dalam
variabel lokal yang sudah berada di register, kemudian menyimpan
hasilnya kembali ke memori. Setiap instruksi RISC membutuhkan empat byte.
Kode
VLIW juga sama terhambat
karena
kesulitan
pada alokasi
register. Contoh dari arsitektur VLIW menunjukkan bahwa VLIW memiliki kemampuan untuk secara
bersamaan mengeluarkan tiga instruksi. Slot pertama (kelompok empat
byte) untuk intruksi percabangan, slot tengah untuk
instruksi ALU, dan slot terakhir
untuk unit load / store.
Diperlukan tiga operasi RISC pada implementasi untuk dilaksanakan
pada penggalan kode yang tidak
independen,
dan
tidak
mungkin digunakan untuk memasukan beban dan menambahkannya ke dalam instruksi VLIW yang sama. Dengan
demikian, diperlukan tiga instruksi VLIW
yang terpisah.
Untuk lebih akurat, Dengan penggalan kode seperti yang
ditunjukkan, instruksi VLIW
secara mendalam tidak efisien dari sudut pandang pemanfaatan kode. Dalam pemrograman, compiler
VLIW menggunakan teknik
optimalisasi pada beberapa
program untuk mengisi
tiga slot dengan tiga instruksi
yang berbeda untuk mencapai performansi terbaik pada setiap mesin
dalam menjalankan kode tersebut. Hal ini Ini adalah pelajaran untuk merenungkan
kinerja setiap mesin dapat mencapai untuk kode
ini. Kita perlu berasumsi bahwa
setiap mesin memiliki penerapan pipelined
yang efisien.
Sebuah mesin RISC mampu mengeksekusi
penggalan kode
dalam tiga siklus dan siklus tersebut
kemungkinan akan lebih cepat dari pada siklus
CISC.
Untuk lebih akurat, kita asumsikan
alokasi regiter yang baik yang
ditunjukkan pada Gambar dibawah ini. Contoh ini mungkin memberikan mesin CISC sedikit
lebih banyak keuntungan karena tidak mungkin untuk mengalokasikan paramater ke
register sesering mungkin pada RISC dan VLIW.
Implementasi
Fungsi dari CISC RISC dan VLIW
dengan alokasi register
Mesin CISC dan RISC dengan alokasi
register yang baik akan menmerlukan satu siklus untuk insttruksi register-ke-register, namun
sekarang ukuran kode RISC sama dengan CISC.Mesin VLIW, diasumsikan memiliki keseluruhan dari tiga-paket instruksi, akan secara efektif mengeksekusi penggalan kode dalam satu siklus. Untuk melihatnya, kita dapat mengamati penggalan kode yang
membutuhkan tiga dari sembilan slot dan
menggunakan sepertiga sumber daya. Sepertiga
dari tiga siklus tersebut
adalah satu siklus.
Perhatikan bahwa perbandingan ini adalah antara skalar (satu instruksi per
siklus maksimum), dengan
implementasi RISC dan CISC, dan VLIW yang relatif sempit. Meskipun akan lebih
realistis untuk membandingkan superscalar RISC dan CISC terhadap arsitektur VLIW yang lebih luas, namun perbandingan tersebut akan lebih rumit.
Cukuplah untuk mengasumsikan bahwa
kesimpulan perbandingan akan
kira-kira sama.
Perbedaan antara arsitektur CISC,
RISC, dan VLIW terdapat dalam
implementasinya masing-masing.
Membandingkan implementasi berkinerja
tinggi dari masing-masing arsitektur adalah yang paling tepat.
Desain RISC dan CISC berkinerja tinggi disebut implementasi superscalar. Superscalar dalam konteks ini berarti "skalar luar" di mana skalar berarti satu operasi pada satu waktu. Dengan demikian, superscalar berarti lebih dari satu operasi pada satu waktu.
Pada CISC atau RISC, untuk mencapai tingkat kinerja yang lebih tinggi daripada yang diberikan oleh pipeline tunggal, kita harus membangun implementasi superscalar. Sifat dari implementasi superscalar adalah bahwa superscalar mengambil, menampilkan, dan menyelesaikan lebih dari satu instruksi CISC atau RISC per siklus.
Gambar 4 menunjukkan sebuah
high-level block diagram mentah dari implementasi prosesor superscalar RISC dan CISC. Pada implementasinya terdiri dari sekumpulan
unit ekseskusi (integer ALU, floating-point ALU, load/store unit, branch unit,
dll) yang mendapatkan operasi dari instruction dispatcher dan operand dari
sebuah file register.
Unit-unit eksekusi memiliki
reservation station untuk melakukan buffer pada operasi yang menunggu yang
telah di issue namun belum di eksekusi. Operasi menunggu operand yang masih
belum tersedia. Instruction dispatcher memeriksa sebuah window pada instrusksi
pada buffer. Ditpatcher mencari instruksi pada window dan memutuskan yang mana
yang dapat didispatch ke execution unit. Dispatcher mencoba untuk melakukan
dispatch sebanyak mungkin secara sekaligus.
Diagram
implementasi prosesor superscalar RISC dan CISC
Pada implementasi
superscalar berperforma
tinggi, meminimalkan ukuran kode akan membatasi
kinerja implementasi superscalar yang dapat
dicapai.
Kinerja menjadi terbatas
karena seringnya meminimalkan
ukuran hasil kode pada cabang
kondisional di setiap
enam instruksi.
Secara konseptual, prosesor harus menunggu sampai cabang diselesaikan sebelum
dapat memulai kembali untuk
mencari paralelisme pada setiap
cabang.
Untuk menghindari menunggu cabang yang bersyarat untuk diselesaikan, implementasi superscalar berkinerja tinggi mengimplementasikan prediksi percabangan. Dengan prediksi percabangan, prosesor membuat dugaan awal tentang hasil percabangan dan mulai mencari paralelisme sepanjang jalur yang diprediksi. Tindakan pengiriman dan melaksanakan eksekusi alur instruksi dari suatu prediksi-tapi belum dikonfirmasi- disebut eksekusi spekulatif.
Sayangnya, cabang prediksi tidak
100% akurat. Walaupun
demikian, pada
eksekusi spekulatif, adalah perlu untuk membatalkan efek instruksi
spekulatif yang dieksekusi
pada
kasus dari cabang yang salah terprediksi.
Beberapa implementasi, seperti Intel superscalar Pentium, hanya mencegah
petunjuk sepanjang jalan diprediksi dari kemajuan cukup jauh untuk memodifikasi
kondisi prosesor,
namun untuk
mendapatkan yang hasil
terbaik dari eksekusi spekulatif, perlu untuk memungkinkan petunjuk sepanjang
jalan yang
diprediksi agar dapat dieksekusi
sepenuhnya.
Untuk dapat membatalkan
efek penuh dari eksekusi spekulatif,
struktur hardware yang disebut reorder buffer dapat digunakan. Struktur ini
merupakan tambahan ke file register yang akan melacak semua hasil yang diperoleh
dari instruksi yang baru saja dieksekusi atau yang telah dikirim ke unit
eksekusi, tetapi belum terselesaikan. Reorder Buffer menyediakan
tempat bagi hasil instruksi untuk secara spekulatif dieksekusi (dan memecahkan masalah
lain). Ketika cabang
kondisional diselesaikan, hasil dari instruksi spekulatif yang dieksekusi dapat berupa
turunan dari reorder buffer atau penulisan dari
buffer ke file register (apabila percabangan telah diprediksi secara benar).
Perbedaan utama
antara implementasi superscalar berkinerja tinggi pada RISC dan CISC adalah
masalah derajat. Instruksi-decode
dan logika yang dikirimkan
dalam superscalar agresif RISC
yang lebih
sederhana daripada
superscalar agresif CISC, namun
logika diperlukan dalam kedua kasus tersebut. Hal yang
sama berlaku untuk reorder buffer.
No comments:
Post a Comment