Anda di halaman 1dari 106

CHAPTER 15

REDUCED INSTRUCTION SET


COMPUTERS
Perkembangan komputer sejak tahun 1950,
telah ada sedikit inovasi dalam bidang organisasi
komputer dan arsitektur. Berikut ini adalah beberapa
kemajuan besar sejak kelahiran komputer :
a. Family Concept, melepaskan arsitektur mesin dari
implementasinya. Sejumlah komputer yang
karakteristik kinerja dan harganya berlainan dengan
arsitektur yang sama ditawarkan ke pasaran.
b. Microprogrammed, mempermudah implementasi
unit control.
c. Cache Memory, penambahan elemen ini ke dalam
hirarki memori dapat meningkatkan kinerja
komputer.
d. Pipelining, menerapkan paralelisme ke dalam sifat
sekuensial program instruksi mesin.
e. Multiprocessor, penggunaan dua atau lebih CPU
dalam sebuah sistem komputer.
f. RISC, arsitektur komputer atau arsitektur komputasi
modern dengan instruksi dan jenis eksekusi yang
paling sederhana.

15.1 KARAKTERISTIK EKSEKUSI INSTRUKSI


Salah satu evolusi komputer yang paling
dirasakan adalah evolusi bahasa pemrograman. Dengan
semakin murahnya harga perangkat keras, harga
perangkat lunak relatif telah mengalami peningkatan.
Pada waktu yang bersamaan, kurangnya pemrogram
telah mengakibatkan harga perangkat lunak semakin
mahal. Akibatnya, biaya terbesar dalam siklus
kehidupan sistem dihabiskan untuk keperluan perangkat
lunak, bukannya perangkat keras. Sebagai tambahan
terhadap biaya dan ketidaknyamanan tersebut, terdapat
elemen ketidakreliabilitasan yaitu suatu hal yang umum
bagi program, baik sistem maupun aplikasi, untuk terus
mengandung bug-bug baru setelah
dioperasikan beberapa lama.
Sebagai jawaban dari para peneliti dan industri
adalah dengan membuat bahasa program tingkat tinggi
(High Level Language HLL) yang lebih baik dan lebih
kompleks. HLL ini memungkinkan programmer dapat
mengekspresikan algoritma lebih singkat , lebih
memperhatikan rincian, dan mendukung penggunaan
pemrograman terstrukur, tetapi ternyata muncul masalah
lain yaitu semantic gap, yaitu perbedaan antara operasi-
operasi yang disediakan oleh HLL dengan yang
disediakan oleh arsitektur komputer, ini ditandai dengan
ketidakefisienan ekseskusi, program mesin yang
berukuran besar, dan kompleksitas kompiler.

Set-set instruksi yang kompleks tersebut dimaksudkan


untuk :
a. Memudahkan pekerjaan kompiler.
b. Meningatkan efisiensi eksekusi, karena operasi yang
kompleks dapat diimplementasikan didalam
mikrokode.
c. Memberikan dukungan bagi HLL yang lebih
kompleks dan canggih.
Agar lebih memahami tentang RISC, berikut ini
merupakan karakteristik-karakteristiknya:

a. Operasi-operasi yang dilakukan


Hal ini menentukan fungsi-fungsi yang akan
dilakukan oleh CPU dan interaksinya dengan
memori.
b. Operand-operand yang digunakan
Jenis-jenis operand dan frekuensi pemakaiannya
akan menentukan organisasi memori untuk
menyimpannya dan mode pengalamatan untuk
mengaksesnya.
c. Pengurutan eksekusi
Menentukan kontrol dan organisasi pipeline.

Operasi
Beberapa penelitian telah menganalisis tingkah
laku program HLL (High Level Language). Assignment
Statement sangat menonjol yang menyatakan bahwa
perpindahan sederhana merupakan satu hal yang
penting. Hasil penelitian ini merupakan hal yang
penting bagi perancang set instruksi mesin yang
mengindikasikan jenis instruksi mana yang sering
terjadi karena harus didukung optimal.

Operand
Penelitian Paterson telah memperhatikan
[PATT82a] frekuensi dinamik terjadinya kelas-kelas
variabel. Hasil yang konsisten diantara program pascal
dan C menunjukkan mayoritas referensi menunjuk ke
variable scalar. Penelitian ini telah menguji tingkah laku
dinamik program HLL yang tidak tergantung pada
arsitektur tertentu. Penelitian [LUND77] menguji
instruksi DEC-10 dan secara dinamik menemukan
setiap instruksi rata-rata mereferensi 0,5 operand dalam
memori dan rata-rata mereferensi 1,4 register. Tentu saja
angka ini tergantung pada arsitektur dan kompiler
namun sudah cukup menjelaskan frekuensi pengaksesan
operand sehingga menyatakan pentingnya sebuah
arsitektur.

Prosedur Panggilan
Dalam HLL procedure call dan return
merupakan aspek penting karena merupakan operasi
yang membutuhkan banyak waktu dalam program yang
dikompilasi sehingga banyak berguna untuk
memperhatikan cara implementasi opperasi ini secara
efisien. Adapun aspeknya yang penting adalah jumlah
parameter dan variabel yang berkaitan dengan prosedur
dan kedalaman pensarangan (nesting).

Implikasi
Secara umum, penelitian menyatakan terdapat
tiga buah elemen yang menentukan karakter arsitektur
RISC :

a. Penggunaan register dalam jumlah besar yang


ditunjukan untuk mengotimalkan pereferensian
operand.

b. Diperlukan perhatian bagi perancangan


pipelaine instruksi karena tingginya proporsi
instruksi pencabangan bersyarat dan procedure call,
pipeline instruksi yang bersifat langsung dan
ringkas menjadi tidak efisien.

c. Terdapat set instruksi yang disederhanakan.

15.2 PENGGUNAAN FILE REGISTER YANG


BESAR

Alasan bahwa penyimpanan register


ditunjukkan adalah bahwa itu adalah perangkat
penyimpanan tercepat yang tersedia, lebih cepat dari
kedua memori utama dan cache. Register file secara
fisik kecil, pada chip yang sama dengan ALU dan unit
kontrol, dan mempekerjakan alamat jauh lebih pendek
daripada alamat untuk cache dan memori. Dengan
demikian, strategi yang diperlukan yang akan
memungkinkan operan paling sering diakses akan
disimpan dalam register dan meminimalkan operasi
register-memori.

Dua pendekatan dasar yang mungkin, yang


didasarkan pada perangkat lunak dan pada perangkat
keras lainnya. Pendekatan perangkat lunak
mengandalkan kompiler untuk memaksimalkan
penggunaan register. Compiler akan mencoba untuk
mengalokasikan register untuk variabel-variabel yang
akan digunakan dalam periode waktu tertentu.
Pendekatan ini memerlukan penggunaan algoritma
program analisis canggih. Pendekatan hardware hanya
untuk menggunakan register lebih sehingga variabel
yang lebih dapat diselenggarakan di register untuk
waktu yang cukup lama
Pada bagian ini, kita akan membahas
pendekatan hardware. Pendekatan ini telah dirintis oleh
kelompok Berkeley RISC [PATT82a]; digunakan dalam
produk pertama RISC komersial, Piramida [RAGA83],
dan saat ini digunakan dalam SPARC arsitektur populer.
Register Windows

Penggunaan satu set besar register harus


mengurangi kebutuhan untuk mengakses tugas desain
memory. Karena kebanyakan referensi operand harus
skalar lokal, pendekatan yang jelas adalah untuk
menyimpan ini dalam register, dengan memungkinkan
beberapa register disediakan untuk variabel global.
Masalahnya adalah bahwa definisi perubahan lokal
dengan setiap prosedur panggilan dan kembali yang
sering terjadi. Pada setiap panggilan, variabel lokal
harus diselamatkan dari register ke memori, sehingga
register dapat digunakan kembali oleh program.
Selanjutnya, parameter harus dilalui. Setelah kembali,
variabel program induk harus dikembalikan (dimuat
kembali ke register) dan hasil harus diteruskan kembali
ke program induk.

Variabel Global
Skema window yang baru saja dijelaskan
memberikan organisasi yang efisien untuk menyimpan
variabel skalar lokal dalam register. Namun, skema ini
tidak membahas kebutuhan untuk menyimpan variabel
global, yang diakses oleh lebih dari satu prosedur.
Terdapat 2 opsi yang disarankan. Pertama, variabel yang
dideklarasikan sebagai global dalam sebuah HLL dapat
diberikan lokasi memori oleh kompilator, dan semua
instruksi mesin dengan referensi variabel-variabel akan
menggunakan operand memori referensi. Ini sangat
mudah, baik dari perangkat keras dan perangkat lunak
(compiler). Namun, untuk variabel global yang sering
diakses, skema ini tidak efisien.

Sebuah alternatif adalah untuk menggabungkan


satu set register global dalam prosesor. Register ini akan
tetap dalam number dan tersedia untuk semua prosedur.
Skema penomoran terpadu dapat digunakan untuk
menyederhanakan format instruksi. Sebagai contoh,
referensi untuk register 0 sampai 7 bisa merujuk pada
register global yang unik, dan referensi ke register 8
sampai 31 bisa diimbangi untuk merujuk register fisik di
window saat ini. Selain itu, compiler harus menentukan
variabel global yang harus diserahkan kepada register.

Large Register File versus Cache


Register File, disusun dalam windows,
bertindak sebagai sebuah yang kecil, penyangga cepat
untuk memegang subset dari semua variabel yang
mungkin digunakan untuk yang paling berat. Dari sudut
pandang ini, register file bertindak seperti memori
cache, meskipun memori jauh lebih cepat. Pertanyaan
itu muncul, apakah itu akan lebih sederhana dan lebih
baik untuk menggunakan cache dan register file kecil
tradisional
Cache memegang pemilihan variabel skalar
baru digunakan. Register file harus menghemat waktu,
karena semua variabel skalar lokal dipertahankan. Di
sisi lain, cache dapat membuat penggunaan ruang yang
lebih efisien, karena bereaksi terhadap situasi dinamis.
Selanjutnya, cache umumnya memperlakukan semua
referensi memori dengan sama, termasuk instruksi dan
jenis data lainnya. Dengan demikian, penghematan di
area-area lain yang mungkin dengan cache dan bukan
register file.
Sebuah register file dapat menggunakan ruang
yang tidak efisien, karena tidak semua prosedur akan
membutuhkan ruang window penuh yang dialokasikan
kepada mereka. Di sisi lain, cache mengalami jenis lain
inefisiensi: Data yang dibaca ke dalam cache di blok.
Sedangkan register file hanya berisi variabel yang
digunakan, cache membaca dalam sebuah blok data,
beberapa atau banyak yang tidak akan digunakan.

Cache mampu menangani global serta variabel


lokal. Biasanya ada banyak skalar global, tetapi hanya
sedikit dari mereka yang banyak digunakan [KATE83].
Cache secara dinamis akan menemukan variabel
tersebut dan menahan mereka. Jika register file berbasis
window dilengkapi dengan register global, juga bisa
memegang beberapa skalar global. Namun, sulit bagi
compiler untuk menentukan GLOBALS akan banyak
digunakan.

Dengan register file, pergerakan data antara


register dan memori ditentukan oleh kedalaman
prosedur bersarang. Karena kedalaman ini biasanya
berfluktuasi dalam kisaran yang sempit, penggunaan
memori relatif jarang terjadi. Kebanyakan cache memori
diatur asosiatif dengan size.

Berdasarkan diskusi sejauh ini, pilihan antara


berbasis jendela register file besar dan cache yang tidak
jelas. Ada satu karakteristik, namun, di mana
pendekatan register jelas unggul dan yang menunjukkan
bahwa sistem berbasis cache akan terasa lebih lambat.
Perbedaan ini muncul pada saat mengatasi overhead
yang dialami oleh dua pendekatan.
Untuk referensi skalar lokal dalam register file
window based, "virtual" nomor register dan sejumlah
window yang digunakan. Ini dapat melewati decoder
relatif sederhana untuk memilih salah satu register fisik.
Untuk referensi lokasi memori dalam cache, alamat
memori penuh-lebar harus dibangkitkan. Kompleksitas
operasi ini tergantung pada mode pengalamatan. Dalam
cache asosiatif, sebagian dari alamat digunakan untuk
membaca sejumlah kata dan tag sama dengan ukuran
set. Bagian lain dari alamat dibandingkan dengan tag,
dan salah satu kata-kata yang dibaca harus dipilih.
Harus jelas, bahkan jika cache secepat register file,
waktu akses akan jauh lebih lama. Dengan demikian,
dari sudut pandang kinerja, register file berbasis
window lebih unggul untuk skalar lokal. Selanjutnya
peningkatan kinerja dapat dicapai dengan penambahan
cache.

15.3 COMPILER BERBASIS REGISTER


OPTIMIZATION
Dalam hal ini, dioptimalkan penggunaan
register compiler. Sebuah program yang ditulis dalam
bahasa tingkat tinggi, tentu saja, tidak ada referensi
eksplisit untuk register. Sebaliknya, jumlah program
yang disebut simbolis. Tujuan dari compiler adalah
untuk menjaga operand yang mungkin dalam register
daripada memori utama.

Secara umum, pendekatan yang dilakukan


adalah sebagai berikut. Setiap kuantitas program yang
berada di register ditugaskan untuk register simbolik
atau virtual. Compiler kemudian memetakan jumlah
register simbolik yang tidak terbatas ke sejumlah
register tetap yang nyata. Jika terdapat lebih jumlah
untuk menangani dari register nyata, maka beberapa
dari jumlah ditugaskan untuk lokasi memori.
Inti dari tugas optimasi adalah untuk
menentukan jumlah yang akan ditugaskan untuk register
pada suatu titik tertentu dalam program ini. Teknik yang
paling umum digunakan dalam compiler RISC dikenal
sebagai pewarnaan graf, yaitu teknik yang dipinjam dari
disiplin topologi [CHAI82, CHOW86, COUT86,
CHOW90].

15.4 MENGURANGI INSTRUKSI SET


ARSITEKTUR
Pada bagian ini, kita melihat beberapa
karakteristik umum untuk arsitektur set instruksi
berkurang. Contoh-contoh spesifik akan terlihat nanti
dalam bab ini.

Mengapa CISC
Alasan yang pertama, compiler
penyederhanaan, tampak jelas, tetapi tidak. Tugas
penulis compiler adalah untuk membangun sebuah
compiler yang menghasilkan (cepat, kecil, cepat dan
kecil) urutan yang baik pada instruksi mesin untuk
program HLL (yaitu, compiler memandang pernyataan
HLL individu dalam konteks sekitarnya pernyataan
HLL). Jika ada instruksi mesin yang menyerupai
pernyataan HLL, tugas ini disederhanakan. Alasan ini
telah dibantah oleh para peneliti RISC ([HENN82],
[RADI83], [PATT82b]). Mereka telah menemukan
bahwa instruksi mesin yang kompleks seringkali sulit
untuk mengeksploitasi karena compiler harus
menemukan kasus-kasus yang tepat sesuai konstruk.

Alasan lainnya yang dikutip adalah harapan


bahwa CISC akan menghasilkan compiler yang lebih
kecil, program lebih cepat. Mari kita memeriksa kedua
aspek pernyataan ini: bahwa program akan lebih kecil
dan bahwa mereka akan mengeksekusi lebih cepat.

Ada dua keuntungan untuk program yang lebih


kecil. Pertama, karena program memakan banyak
memori, ada penghematan sumber daya itu. Dan yang
lebih penting, program kecil harus meningkatkan
kinerja, dan ini akan terjadi dalam tiga cara. Pertama,
instruksi yang lebih sedikit berarti byte instruksi yang
lebih sedikit harus diambil. Kedua, dalam lingkungan
paging, program kecil menempati halaman lebih sedikit,
mengurangi kesalahan halaman. Ketiga, petunjuk lebih
cocok di cache (s).

Masalah dengan baris ini penalaran adalah


bahwa hal itu jauh dari pasti bahwa program CISC akan
lebih kecil dari program RISC yang sesuai. Dalam
banyak kasus, program CISC, dinyatakan dalam bahasa
mesin simbolis, mungkin lebih pendek (yaitu, lebih
sedikit petunjuk), tetapi jumlah bit memori diduduki
mungkin tidak terasa lebih kecil.

Jadi harapan bahwa CISC akan menghasilkan


program yang lebih kecil, mungkin tidak direalisasikan.
Faktor pendorong kedua untuk set instruksi yang
semakin kompleks adalah bahwa eksekusi instruksi
akan lebih cepat. Tampaknya masuk akal bahwa operasi
HLL kompleks akan mengeksekusi lebih cepat sebagai
instruksi mesin tunggal bukan sebagai serangkaian
instruksi yang lebih primitif. Namun, karena biasa
terhadap penggunaan instruksi tersebut sederhana.
Seluruh unit kontrol harus dibuat lebih
kompleks, dan kontrol microprogram harus dibuat lebih
besar, untuk mengakomodasi set instruksi yang lebih
kaya. Entah faktor meningkatkan waktu eksekusi
instruksi sederhana.
Karakteristik Reduced Arsitektur Instruction Set
Meskipun berbagai pendekatan yang berbeda untuk
mengurangi arsitektur set instruksi telah diambil,
karakteristik tertentu yang umum untuk semua dari
mereka:
a. Siklus instruksi.

1. Satu instruksi per siklus mesin.

2. Siklus mesin ditentukan oleh waktu yang


digunakan untuk mengambil dua buah operand
dari register, melakukan operasi ALU, dan
menyimpan hasil operasinya ke dalam register.

3. RISC adalah rancangan prosesor yang


sederhana, tetapi dalam kesederhanaan tersebut
didapatkan kecepatan operasi tiap-tiap siklus
instruksinya.

4. Instruksi dibatasi hanya menyediakan instruksi


dasar saja.
5. Fungsi-fungsi yang kompleks akan
diterjemahkan dalam operasi instruksi-instruksi
dasar.
b. Operasi Pertukaran data.

1. Berbentukpertukaran data dari register e


register.
2. Dengan mengoptimalkan penggunaan memori
register diharapkan siklus operasi semakin
cepat.

3. Register adalah memori yang paling cepat


dibandingkan cache maupun memori utama.
4. Dengan penyederhanaan instruksi maka operasi
unit kontrol juga akan sederhana dan cepat.
5. Penekanan penggunaan operasi dari register ke
register adalah hal yang unik pada rancangan
RISC.
6. Rancangan kontemporer lainnya memiliki
instruksi register ke register juga, namun juga
melibatkan operasi langsung ke memori utama
dalam fetch
c. Mode pengalamatan.

1. Fitur rancangan ini juga dapat


menyederhanakan sel instruksi dan unit kontrol.
2. Dengan mode pengalamatan yang sederhana
akan didapatkan operasi pengambilan data dan
penyimpanan data semakin cepat.

d. Format instruksi.
1. Umumnya hanya digunakan sebuah format atau
beberapa format saja untuk menyederhanakan
implementa si perangkat kerasnya.
2. Panjang instruksi tetap dan disamakan dengan
panjang word yang digunakan.

3. Panjang field dibuat sama dan tetap


4. Kelebihannya adalah, dengan menggunakan
field yang tetap maka pengkodean opcode dan
pengaksesan operand register dapat
dilakukansecara bersamaan.
5. Format yang sederhana juga akan memudahkan
kerja unit kontrol.
Karakteristik CISC vs RISC

Setelah antusiasme awal untuk mesin RISC,


telah ada kesadaran bahwa desain RISC dapat
mengambil manfaat dari masuknya beberapa fitur CISC
dan (2) desain CISC dapat mengambil manfaat dari
masuknya beberapa fitur RISC. Hasilnya adalah bahwa
semakin banyak desain baru RISC, terutama PowerPC,
tidak lagi murni RISC dan CISC desain yang lebih
baru, terutama Pentium II dan kemudian model
Pentium, melakukan dan menggabungkan beberapa
karakteristik RISC. Sebuah perbandingan yang menarik
di [MASH95] memberikan beberapa wawasan ke dalam
masalah ini.

Berikut ini karakteristik CISC :


a. Ukuran program-program yang dihasilkan akan
menjadi relatif lebih kecil, dan penggunaan memory
akan semakin berkurang.
b. Dimaksudkan untuk meminimumkan jumlah
perintah yang diperlukan untuk mengerjakan
pekerjaan yang diberikan.
Berikut ini karakteristik RISC :

a. Instruksi berukuran tunggal.

b. Ukuran instruksi umumnya 4 byte.


c. Jumlah mode pengalamatan data sedikit,
biasanya kurang dari lima macam. Tidak
mengenalpengelamatan tak langsung.
d. Tidak terdapat operasi yang menggabungkan
operasi ambil data dan simpan data dengan
operasi-operasi aritmetika.
e. Tidakterdapat lebih dari satu operand beralamat
memori per instruksi.
f. Jumlah maksimum pemakaian
memorymenegement unit (MMU) bagi suatu
alamatdata adalah satu instruksi.
g. Jumlah bit bagi integer integer specifier sama
dengan lima atau lebih. Ini berarti sedikitnya 32
buah register integer dapat direferensikan
sekaligus secara eksplisit.
h. Jumlah bit bagi floating point register specifier
sama dengan empat atau lebih, sehingga
sedikitnya 16 buah register floating point dapat
direferensikan bersama secara eksplisit.
15.5 RISC PIPELINING

Pipelining dengan Regular Instruksi

Fase-fase Operasi Komputer

a. : Instruction Fetch.
b. : Jalankan. Melakukan operasi ALU dengan
masukan mendaftar dan output. Untuk operasi
beban dan toko, tiga tahap yang diperlukan:

c. : Instruction Fetch.
Pipelining akan lebih mudah diimplementasikan bila set
instruksi sederhana dan teratur. Kebanyakan rancangan
komputer memiliki panjang set instruksi yang sama
sehingga tidak ada masalah dalam hal ini. Hal yang
perlu diperhatikan adalah durasi antar set instruksi,
karena tidak semua operasi memiliki waktu operasi
yang sama. Operasi perpindahan data antar register
lebih cepat daripada akses ke memori utama.
Keteraturan dan durasi akan sulit diantisipasi bila set
instruksi beragam, ada yang sederhana dan ada yang
kompleks seperti rancangan CISC. Karena
pertimbangan inilah RISC lebih mudah menerapkan
pipelining untuk meningkatkan kinerjanya. Instruksi-
instruksi RISC dibuat sederhana sehingga hampir
durasi eksekusi instruksi sama sehingga akan mudah
melakukan penjadwalan operasi pada teknik pipelining-
nya. Disamping keteraturan instruksi, untuk
memperoleh pipelining yang optimal harus
dipertimbangkan kecepatan kerja komponen-komponen
komputer, penjadwalan instruksi yang tepat dan lokasi
register yang dinamis.

Anda mungkin juga menyukai