Anda di halaman 1dari 24

Chapter 13

Reduced Instruction Set Komputers (RISC)


Reduced Instruction Set Komputer atau Komputasi set instruksi yang disederhanakan pertama
kali digagas oleh John Cocke, peneliti dari IBM di Yorktown, New York pada tahun 1974 saat ia
membuktikan bahwa sekitar 20% instuksi pada sebuah prosesor ternyata menangani sekitar 80% dari
keseluruhan kerjanya. Komputer pertama yang menggunakan konsep RISC ini adalah IBM PC/XT pada era
1980-an. Istilah RISC sendiri pertama kali dipopulerkan oleh David Patterson, pengajar pada University of
California di Berkely.
RISC apabila diterjemahkan berarti Komputasi Kumpulan Instruksi yang Disederhanakan,
merupakan sebuah arsitektur komputer atau arsitektur komputasi modern dengan instruksi-instruksi dan
jenis eksekusi yang paliing sederhana. Arsitektur ini digunakan pada komputer dengan kiinerja tinggi,
seperti komputer vektor. Selain digunakan dalam komputer vektor, desain ini juga diimplementasikan
pada prosesor komputer lain, seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari Intel
Corporation, PowerPC dan Arsetektur POWER dari International Business Machine.

13.1.

Instruction Execution Characteristic


Peneliti dalam bidang teknologi komputer telah berhasil mengembangkan bahasa
pemrograman dengan lebih kompleks. Adanya high-level programming languages (HLL)
memungkinkan programmer untuk membuat algoritma menjadi lebih singkat dan sederhana,
lebih memperhatikan rincian, dan mendukung penggunaan pemrograman berstruktur atau
disebut juga pemrograman berorientasi objek.
Namun perkembangan tersebut menimbulkan permasalah baru yang dikenal sebagai
semantic gap, yaitu perbedaan antara operasi-operasi yang disediakan oleh HLL dengan operasioperasi yang disediakan oleh arsitektur komputer. Permasalahan ini ditandai dengan tidak
efisiennya eksekusi, program mesin yang berukuran besar, dan kompleksitas compiler. Para
perancang menanggapi permasalahan ini dengan membuat suatu arsitektur dengan maksud
untuk mengurangi celah dari permasalahan yang terjadi. Fitur utama termasuk didalamnya yaitu
set instruksi yang komplek, puluhan mode pengalamatan atau addressing modes, dan
mengimplementasikan berbagai statement HLL dalam perangkat keras atau hardware. Set-set
instruksi yang komplek tersebut dimaksudkan untuk :
1. Memudahkan pekerjaan compiler

2. Meningkatkan efisiensi eksekusi, karena operasi yang kompleks dapat diimplementasikan


dalam microcode
3. Memberikan dukungan bagi HLL yang lebih kompleks dan canggih.

Tabel 13.1 Characteristics of some CISC, RISC, and Superscalar Processor


Sementara itu, sejumlah penelitian telah selesai dilakukan dalam beberapa tahun untuk
menentukan pola dan karakteristik eksekusi instruksi mesin yang dihasilkan dari program HLL.
Hasil yang didapat dari penelitian ini memberikan inspirasi beberapa peneliti untuk membuat
arsitektur yang mendukung pemrograman HLL dengan lebih sederhana.
Beberapa aspek komputasi yang ditinjau dalam merancang mesin RISC adalah sebagai
berikut :

Operation performed : menentukan fungsi-fungsi apa saja yang harus dilakukan


oleh prosessor dan interaksinya dengan memori.

Operand used : Jenis-jenis operand dan frekuensi pemakaiannya menentukan


penyusunan memori untuk penyimpanan dan mode pengalamatan untuk
mengaksesnya.

Execution sequencing : menentukan kontrol dan penyusunan pipeline.

13.1.1. Operation
Dewasa ini banyak penelitian yang dilakukan untuk menganalisa sifat program
HLL. Namun, hasil penelitian yang diperoleh masih belum cukup membantu para
perancang dan pengembang mesin set instruksi untuk menunjukkan statement seperti
apa yang paling sering digunakan dalam eksekusi program.
Untuk dapat mengerti fenomena tersebut, program milik Patterson [PATT82a],
di compile pada VAX, PDP-11, dan Motorola 68000 untuk menentukan jumlah rata-rata

instruksi mesin dan referensi memori tiap jenis statement. Kolom kedua dan ketiga pada
Tabel 13.2 menunjukkan seberapa sering instruksi HLL dijalankan pada beberapa jenis
program; data diperoleh dengan mengamati kejadian yang muncul pada saat program
berjalan.

Tabel 13.2 Weighted Relative Dynamic of HLL Operation [PATT82a]


Untuk memperoleh data pada kolom empat dan lima, masing-masing nilai pada
kolom kedua dan ketiga dikalikan dengan jumlah instruksi mesin yang dihasilkan compiler.
Hasil tersebut kemudian di normalisasi. Demikian pula, pada kolom keenam dan ketujuh
diperoleh dengan mengalikan jenis statement yang sering muncul dengan jumlah relatif
referensi memori yang disebabkan oleh masing-masing statement. Data yang dihasilkan
menunjukkan bahwa prosedur call/return menghabiskan waktu paling banyak pada
operasi program HLL.
Pada tabel 13.2 menunjukkan hasil yang signifikan dari berbagai jenis statement
dalam HLL, ketika HLL di compile pada arsitektur set instruksi modern tertentu. Pada
beberapa arsitektur mesin lainnya, hasil yang didapat bisa saja berbeda.

13.1.2. Operands
Meskipun topik ini sangat penting, namun hanya sedikit penelitian tentang jenis-jenis
operand. Penelitian yang dilakukan Patterson terhadap frekuensi dinamik terjadinya
kelas-kelas variabel (Tabel 13.3) dalam program pascal dan C menunjukkan bahwa
mayoritas

Tabel 13.3 Dynamic Percentage of Operand


referensi menuju kepada variabel-variabel skalar. Lebih dari 80% skalar bersifat variabel
lokal. Penelitian tersebut menyatakan bahwa jenis arsitektur berpengaruh pada
kecepatan pengaksesan operandd.

13.1.3. Procedure Calls


Prosedur call dan return merupakan aspek yang penting dalam program HLL. Pada
tabel 13.2 menunjukkan bahwa prosedur call merupakan operasi yang menghabiskan
waktu paling banyak dalam program tersebut. Dengan demikian, hal ini akan
menguntungkan dalam mempertimbangkan bagaimana cara-cara melaksanakan operasi
ini secara efisien. Aspek yang perlu diperhatikan yaitu jumlah parameter dan variabel yang
berkaitan dengan prosedur, dan kedalaman pensarangan (nesting).
Dalam penelitian Tanenbaum didapatkan bahwa secara dinamik sebesar 98%
prosedur yang dipanggil hanya memenuhi parameter kurang dari enam argument dan
92% dari prosedur tersebut menggunakan kurang dari enam variabel lokal skalar. Hasil
serupa juga didapatkan dari penelitian tim Berkeley RISC, seperti yang ditunjukkan pada
tabel 13.4.

Tabel 13.4 Prosedur Argument dan Variabel Lokal Skalar

13.1.4. Implications
Hasil-hasil penelitian yang telah dilakukan secara umum dapat dinyatakan bahwa
terdapat beberapa faktor yang menentukan karakteristik arsitektur RISC. Pertama,
penggunaan register dalam jumlah yang besar. Hal ini dimaksudkan untuk
mengoptimalkan pereferensian operand. Penelitian yang dilakukan menunjukkan bahwa
terdapat beberapa referensi pada tiap instruksi HLL dan padanya terdapat bagian
perpindahan statement (assignment) yang besar.
Kedua, diperlukan perhatian bagi perancangan instruksi pipeline. Karena tingginya
proporsi instruksi percabangan bersyarat dan prosedur call, instruksi pipeline yang
bersifat langsung dan ringkas akan menjadi tidak efisien. Ketiga, terdapat set instruksi
yang disederhanakan (dikurangi).

13.2.

The Use of a Large Register File


Alasan mengapa penyimpanan register direkomendasikan adalah karena register
merupakan perangkat penyimpanan yang paling cepat dibandingkan memori utama dan cache.
Register file secara fisik memiliki bentuk yang kecil, terletak pada chip yang sama dengan ALU dan
unit kontrol, pengaksesan alamatnya lebih dekat daripada cache dan memori. Dengan demikian,
diperlukan strategi agar operand yang paling sering diakses disimpan dalam register dan
meminimalkan operasi register-memori.
Terdapat dua pendekatan dasar yang memungkinkan untuk diterapkan yaitu pendekatan
secara perangkat lunak (software) dan pendekatan secara perangkat keras (hardware).
Pendekatan secara perangkat lunak mengandalkan compiler untuk memaksimalkan penggunaan
register. Compiler tersebut akan mengalokasikan register untuk variabel yang paling sering
digunakan. Pendekatan ini membutuhkan algoritma analisis program yang mutakhir. Pendekatan
perangkat keras dilakukan dengan cara memperbanyak jumlah register sehingga akan lebih
banyak variabel yang ditampung didalamnya dalam periode waktu yang lebih lama.

13.2.1. Register Windows


Karena kebanyakan operand direferensikan pada lokal skalar,maka pendekatan yang
dibutuhkan adalah untuk menyimpan referensi tersebut di dalam register, dengan
beberapa register yang disediakan untuk variabel global. Namun yang menjadi masalah
adalah definisi lokal berubah pada setiap prosedur call dan return yang sering terjadi.

Pada setiap pemanggilan (call), variabel lokal harus disimpan dari register ke memori,
sehingga register dapat digunakan kembali oleh program. Selain itu, parameterparameter yang telah ditentukan harus terpenuhi. Pada pengembalian (return), variabel
dari program induk (parent) harus dikembalikan pada register dan hasilnya harus
dilempar kembali ke program induk (parent).
Solusi masalah ini berdasar pada dua data yang dihasilkan pada bagian 13.1. Pertama,
suatu prosedur hanya menjalankan beberapa parameter dan variabel lokal (Tabel 13.4).
Kedua, aktifasi suatu prosedur berubah-ubah (terjadi fluktuasi) dalam rentang waktu yang
relatif sempit. Untuk menangani hal tersebut maka digunakan beberapa set register yang
berukuran kecil, tiap set register tersebut kemudian ditempatkan pada prosedur yang
berbeda. Pemanggilan sebuah prosedur secara otomatis akan merubah prosesor untuk
lebih menggunakan jendela register, daripada menyimpannya di memori register.
Prosedur yang berjalan berdampingan dengan jendela register akan di-overlap untuk
memenuhi parameter yang ada.
Konsep dari overlap register windows diilustrasikan pada Figure 13.1. Hanya satu
jendela register yang tampak dan memiliki alamat (addressable) seolah-olah itu adalah
satu-satunya set register. Jendela register dibagi menjadi tiga area dengan ukuran yang
telah ditentukan. Lokal register digunakan untuk lokal variabel sesuai dengan yang
ditugaskan oleh compiler. Register sementara (temporary register) digunakan untuk
pertukaran hasil dan parameter dengan level berikutnya yang lebih rendah. Register
sementara (temporary register) pada level satu memiliki bentuk parameter yang sama
dengan register level dibawahnya. Overlap ini memungkinkan parameter-parameter
dapat dilewatkan tanpa perpindahan aktual data.

Figure 13.1 Overlap Register Windows


Bentuk melingkar seperti yang ditunjukkan pada Figure 13.2 menggambarkan lingkaran
buffer dengan enam jendela. CWP (current-window pointer) menunjuk pada jendela

yang prosedurnya sedang aktif. SWP (Saved-window pointer) mengidentifikasi jendela


mana yang terakhir disimpan dalam memori. Jika prosedur D dipanggil prosedur E,
argumen untuk E ditempatkan pada register sementara (temporary register) D dan CWP
akan memajukan satu jendela.

Figure 13.2 Circular-Buffer Organization of Ovelapped Windows


Jika prosedur E kemudian memanggil prosedur F, pemanggilan tersebut tidak bisa
dilakukan pada status buffer saat ini. Hal ini dikarenakan jendela F melakukan overlap
jendela A. jika F mengisi temporary register-nya, melakukan persiapan untuk memanggil
prosedur, maka hal tersebut akan merubah parameter dari register A.
Dari penjelasan tersebut, dapat dilihat bahwa jendela register ke-N hanya bisa
menampung N 1 pengaktifan prosedur. Nilai dari N tidak boleh terlalu besar.

13.2.2. Global Variables


Teknik register windows seperti yang telah dijelaskan sebelumnya memberikan suatu
cara bagaimana peyusunan yang efisien untuk menyimpan variabel lokal skalar di dalam
register. Akan tetapi teknik ini tidak dapat memenuhi kebutuhan penyimpanan variabel
global yang diakses oleh lebih dari satu prosedur. Terdapat dua pilihan untuk memenuhi
hal tersebut :
1. Variabel-variabel yang dideklarasikan sebagai variabel global pada HLL ditentukan
lokasi memorinya oleh compiler. Namun bagi yang sering mengakses variabelvariabel global, teknik tersebut tidaklah efisien.
2. Melibatkan set register global didalam CPU. Register-register tersebul harus memiliki
jumlah yang tetap dan tersedia untuk semua prosedure. Pilihan ini merupakan solusi
dari permasalahan pilihan nomor 1.

13.2.3. Large Register File versus Cache


Tabel 13.5 menunjukkan perbandingan karakteristik dari file register berukuran
besar dan cache. Menggunakan file register semestinya dapat menghemat waktu waktu,
karena semua lokal variabel skalar disimpan didalamnya. Disisi lain, menggunakan cache
membuat kapasitas penyimpanan menjadi lebih efisien, karena cache dapat bereaksi
secara dinamik pada keadaan yang sedang terjadi.

Tabel 13.5 Characteristics of Large-Register-File and Cache Organization


Selain itu, umumnya cache memperlakukan semua referensi memori dengan cara yang
sama, termasuk instruksi dan tipe data yang lainnya.
Sebuah

file

register memungkinkan

terjadinya

ketidak

efisiensian pada

penggunaanya, karena tidak semua prosedur memerlukan alokasi jendela


dengan kapasitas penuh.

register

Dengan penggunaan file register, perpindahan data antara register dan memori
tergantung dari kedalaman prosedur bersarang. Karena biasanya kedalaman prosedur
bersarang tersebut

berubah-ubah dalam rentang waktu yang relatif cepat dan

penggunaan memori pada file register cukup jarang terjadi. Kebanyakan memori cache di
set menjadi asosiatif dengan ukuran yang kecil. Dengan demikian, terdapat suatu resiko
data atau instruksi yang ada akan dihapus dan digantikan oleh variabel yang sering
digunakan.
Untuk mereferensi skalar lokal pada jendela register, digunakan sejumlah jendela
dan register virtual. Hal tersebut dilakukan dengan melalui decoder yang relatif
sederhana untuk memilih salah satu register real. Untuk mereferensikan lokasi memori
pada cache, alamat memori harus dibuat terlebih dahulu. Kompleksitas operasi tersebut
tergantung pada mode pengalamatannya. Pada set associative cache, beberapa bagian
pada alamat digunakan untuk membaca tag sesuai dengan ukuran set-nya. Bagian dari
alamat lainnya dibandingkan dengan tag yang terpilih. Penjelasan tersebut cukup jelas
bahwa meskipun cache sama cepat dengan file register, waktu pengaksesan yang
dibutuhkan cukup lebih lama.

Figure 13.3 Referencing a Scalar

13.3.

Compiler-Based Register Optimization


Diasumsikan hanya terdapat register dengan jumlah yang kecil (misalnya, 16-32) yang
tersedia pada mesin RISC. Dalam kasus ini, optimasi penggunaan register adalah tanggung jawab
compiler. Sebuah program yang ditulis dengan bahasa pemrograman level tinggi (high-level
language) tentu saja memiliki referensi ke register secara tersirat. Tujuan dari compiler adalah
untuk menyimpan sebanyak mungkin perhitungan operand didalam register untuk
meminimalisasi terjadinya operasi load-and-store.
Secara umum, pendeketan yang dilakukan adalah sebagai berikut. Setiap program yang
akan diletakkan pada register di-assigned ke register simbolik atau register virtual. Kemudian
compiler akan memetakan sejumlah register simbolik ke real register dalam jumlah yang telah
ditentukan. Jika terdapat sejumlah data pada program dengan ukuran yang melebihi kapasitas
register, maka data tersebut akan di-assigned ke lokasi memori.
Inti dari optimisasi adalah untuk menentukan data mana atau data seperti apa yang harus
di-assigned ke register. Teknik yang sering digunakan oleh compiler RISC dikenal sebagai graph
coloring.
Permasalahan yang terdapat pada graph coloring adalah sebagai berikut. Terdapat
sebuah grafik yang terdiri dari simpul dan node, setiap node diberi warna sehingga setiap node
yang bersebelahan memiliki warna yang berbeda. Pertama, program akan melakukan analisa
untuk membuat grafik interferensi register. Node-node yang terdapat pada grafik adalah registes
simbolik. Jika dua register simbolik tersebut aktif secara bersamaan dalam bagian program, maka
kedua register tersebut digabungkan dengan sebuah simpul untuk menggambarkan interferensi
yang terjadi. Kemudian graph tersebut diwarnai dengan n warna, dimana n adalah jumlah
register. Node yang berwarna sama di masukkan ke dalam register yang sama juga. Jika proses
tersebut tidak sepenuhnya berhasil, maka node-node yang tidak diberi warna akan diletakkan ke
dalam memori dan operasi load-and-store akan digunakan untuk memberikan ruang yang
digunakan sejumlah data ketika diperlukan. Proses tersebut dapat dilihat pada Figure 13.4.

10

Figure 13.4 Graph Coloring Approach

13.4.

Reduced Instruction Set Architecture


Pokok bahasan pada bagian ini adalah membahas karakteristik umum dan tujuan dari
mengurangi instruksi set arsitektur yang secara spesifik dapat dilihat pada bagian dari bab ini.
13.4.1.

Why CISC
Alasan utama dari penggunaan CISC adalah diharapkan CISC akan menghasilkan

progam yang lebih kecil dan lebih cepat. Terdapat dua keuntungan pada program yang
berukuran lebih kecil. Pertama, penggunaan resource lebih hemat karena program yang
berukuran kecil mengkonsumsi sedikit memori. Kedua, program yang berukuran kecil
memiliki performa yang baik.

13.4.2.

Characteristics of Reduced Instruction Set Architectures


Karakteristik pertama dari arsitektur RISC adalah siklus mesin ditentukan oleh

waktu yang digunakan untuk mengambil dua buah operand dari register, melakukan
operasi ALU, dan menyimpan hasil operasinya ke dalam register. Selain itu instruksi mesin
RISC tidak lagi kompleks dan harus dapat mengeksekusi dengan cepat seperti
mikroinstruksi pada mesin-mesin CISC. Hanya dibutuhkan sedikit microcode atau bahkan
tidak sama sekali dalam penggunaan instruksi sederhana tersebut. Instruksi seperti itu
akan dieksekusi lebih cepat karena tidak perlu mengakses penyimpanan mikroprogram
saat eksekusi instruksi sedang berlangsung.

11

Karakteristik yang kedua adalah operasi dari register-ke register. Operasi ini
hanya terdiri dari operasi pengaksesan memori LOAD dan STORE. Fitur rancangan ini
menyederhanakan set instruksi begitu juga dengan unit kontrol. Keuntungan lainnya
memungkinkan optimasi pemakaian register sehingga operand yang sering diakses akan
tetap berada pada register.
Karakteristik ketiga dari arsitektur RISC adalah penggunaan mode pengalamatan
yang sederhana. Hampir semua instruksi RISC menggunakan pengalamatan register
dengan cara yang sederhana.

Figure 13.5 Two comparisons of Register-toRegister and Memory-to-Memory


Approaches
Karakteristik keempat adalah penggunaan format instruksi yang sederhana.
Umumnya, hanya satu atau sedikit format yang digunakan. Panjang instruksi sudah
ditentukan. Fitur ini memiliki beberapa kelebihan karena dengan menggunakan field

yang tetap dan pengaksesan operand register dapat dilakukan secara bersama-sama.
13.4.3.

CISC versus RISC Characterisics


Rancangan RISC dapat memperoleh keuntungan dengan mengambil sejumlah

fitur dari CISC dan rancangan CISC dapat memperoleh keuntungan dengan mengambil
sejumlah fitur dari RISC. Artinya adalah hasil yang diperoleh dari sejumlah rancangan RISC

12

terbaru yang dikenal dengan PowerPC, tidak lagi murni RISC. Dan rancangan CISC
terbaru yang dikenal sebagai Pentium, memiliki beberapa karakteristik RISC. Pada Tabel
13.7 terdapat beberapa daftar perbandingan karakteristik masing-masing prosesor.

Tabel 13.7 Characteristic of Some Prosesor


Bagaimanapun juga, stategi pada RISC memberikan beberapa kelebihan. Karena
masing-masing instruksi hanya dengan satu siklus untuk eksekusi maka seluruh program
dapat dikerjakan setara dengan kecepatan dari eksekusi instruksi MULT. Secara
perangkat keras, prosesor RISC tidak teralu banyak membutuhkan transistor
dibandingkan dengan CISC. Sehingga menyisakan ruang untuk general purpose register.
Selain itu, karena semua instruksi dikerjakan dalam waktu yang sama, maka dimungkinka
untuk melakukan pipelining.
Memisahkan instruksi LOAD dan STORE sebenarnya mengurangi kerja yang
harus dilakukan oleh prosesor. Pada CISC, setelah instruksi MULT dieksekusi, prosesor
akan secara otomatis menghapus isi register. Jika ada operand yang dibutuhkan lagi untuk
operasi berikutnya, maka prosesor harus menyimpan ulang data tersebut dari memori ke
register. Sedangkan pada RISC, operand tetap berada dalam register hingga ada data lain
yang disimpan ke dalam register yang bersangkutan.
Pendekatan CISC bertujuan untuk meminimalkan jumlah instruksi per program,
dengan cara mengorbankan kecepatan eksekusi sekian siklus/detik. Lain halnya dengan

13

RISC, tujuannya adalah mengurangi jumlah siklus/detik, namun konsekuensi yang


diterima adalah bertambahnya jumlah instruksi per program.

13.5.

Risc Pipelining
Teknologi pipeline yang digunakan pada komputer bertujuan untuk meningkatkan kinerja dari
komputer. Secara sederhana, pipeline adalah suatu cara yang digunakan untuk melakukan
sejumlah kerja secara bersamaan tetapi dalam tahap yang berbeda yang dialirkan secara berlanjut
pada unit prosesor. Dengan cara ini, maka unit prosesor akan selalu bekerja.

13.5.1.

Pipelining with Regular Instructions

Umumnya pada arsitektur RISC menggunakan instruksi register to register. Dan tiap siklus
instruksi memiliki dua tahap :

I : Instruction fetch.

E : Execute. Menjalankan operasi ALU dengan register input dan output.

Pada operasi load and store, terdapat tiga tahap yang dibutuhkan :

I : Instruction fetch.

E : Execute. Mengkalkulasi pengalamatan memori

D : Memory. Melakukan operasi register-to-memory atau memory-to-register.


Figure 13.6a menunjukkan urutan instruksi yang dikerjakan tanpa menggunakan

pipeline. Jelas sekali hal tersebut cukup membutuhkan waktu proses yang lama. Figure
13.6b menunjukkan skema pipeline dengan dua tahap, dimana tahap I dan E merupakan
dua instruksi yang berbeda namun dikerjakan dalam waktu yang bersamaan. Namun,
instruksi yang diproses secara bersamaan tersebut terdapat dalam tahap proses yang
berbeda.

14

Figure 13.6 The Effect of Pipelining


Karena beberapa instruksi diproses secara bersamaan, terdapat kemungkinan
instruksi tersebut memerlukan resource yang sama. Sehingga diperlukan adanya
pengaturan yang tepat agar proses tetap berjalan dengan benar.
13.5.2.

Optimization of Pipelining

Delayed Branch
Prosedur ini diilustrasikan pada Tabel 13.8. Pada kolom dengan nama normal
branch, dapat diketahui terdapat simbol instruksi program bahasa mesin.

Tabel 13.8 Normal and Delayed Branch


Setelah alamat 102 di eksekusi, instruksi selanjutnya yang harus dieksekusi adalah
105. Sebuah instruksi NOOP disisipkan setelah terjadinya percabangan agar pipeline

15

yang terjadi tetap berjalan dengan baik. Hasil yang diperoleh dari pengggunaan
delayed branch dapat dilihat pada figure 13.7.

Figure 13.7 Use of the Delayed Branch


Prosedur delayed branch hanya akan berjalan pada percabangan tak bersyarat,
call, dan return. Untuk percabangan bersyarat, prosedur ini tidak bisa diterapkan.
Delayed Load
Teknik delayed load ini dapat digunakan pada instruksi LOAD. Pada instruksi
tersebut, register yang menjadi target dari load akan dikunci oleh prosesor.
Kemudian prosesor akan melanjutkan untuk mengeksekusi instruksi-instruksi
berikutnya. Jika compiler dapat mengatur ulang instruksi, selagi load masih berada
dalam pipeline, maka tingkat efisiensi akan bertambah.

16

Loop Unrolling
Loop Unrolling merupakan teknik compiler yang digunakan untuk membenahi
instruksi yang bersifat paralel. Performa loop unrolling dapat ditingkatkan dengan
cara :
-

Meningkatkan instruksi yang bersifat paralel dengan membenahi permforma


pipeline

Membenahi register dan data caches

Figure 13.8 Loop Unrolling


13.6.

MIPS R4000
R4000 merupakan sebuah mikroprosesor yang dikembangkan oleh MIPS Computer System
dan mengimplementasikan MIPS III instruction set (ISA). MIPS R4000 adalah mikroprosesor
pertama kali yang berukuran 64-bit, dan pertama kali menerapkan MIPS III. Pada awal tahun 1990,
ketika prosesor RISC diharapkan untuk menggantikan mikroprosesor CISC, MIPS R4000 terpilih
sebagai Advanced Computing Environment (ACE).
Penggunaan ukuran 64-bit memberikan beberapa keuntungan daripada arsitektur dengan
ukuran 32-bit. Keuntungan tersebut adalah memungkinkan adanya kapasitas alamat (address)
yang lebih besar. Cukup besar untuk sistem operasi memetakan file lebih dari satu terabyte secara
langsung pada virtual memory agar lebih mudah diakses.

17

Chip prosesor R4000 dibagi menjadi dua bagian, bagian pertama berisi CPU dan yang lainnya
berisi coprocessor untuk manajamen memori. Prosesor R4000 memiliki arsitektur yang sangat
sederhana. Tujuannya adalah untuk merancang sebuah sistem dengan logika eksekusi instruksi
sesederhana mungkin. Prosesor ini mendukung 32 dan 64-bit register dan juga menyediakan
cache dengan kecepatan hingga 128 Kbytes.
13.6.1.

Instruction Set
MIPS memiliki panjang instruksi sebesar 32-bit. Panjang instruksi tersebut

berguna untuk menyederhanakan instruksi fetch dan decode juga menyederhanakan


instruksi fetch dengan unit pengelola memori virtual. Fomat instruksi seperti yang
ditunjukkan Figure 13.9 merupakan bentuk penyederhanaan instruksi decode.

Tabel 13.9 MIPS R-series Instruction Set

18

Figure 13.9 MIPS Instruction Formats


13.6.2.

Instruction Pipeline
MIPS R4000 memiliki delapan bagian pipeline, yang berarti terdapat delapan instruksi

yang berada dalam pipeline pada waktu yang bersamaan. Delapan pipeline tersebut
adalah sebagai berikut :
-

Pengambilan instruksi pada paruh pertama

Pengambilan instruksi pada paruh kedua

File register

Eksekusi instruksi

Data cache pertama

Data cache kedua

Pengecekan Tag

Penulisan ulang

Ilustrasi dari pipeline delapan bagian pada MIPS R4000 ditunjukkan oleh Figure 13.10b.

19

Figure 13.10 Theoretical R3000 dan Actual R4000 Superpipelines


13.7.

SPARC
SPARC (Scalable Processor Architecture) adalah mikroprosesor berarsitektur RISC yang
didesain oleh Sun Microsystems tahun 1985. SPARC internasional bermaksud untuk membuka
arsitektur SPARC demi membuat ekosistem yang lebih besar bagi pengembang desainnya, yang
izinnya telah diberikan kepada beberapa manufaktur, termasuk Texas Instrument, Atmel, Cypress
Semiconduktor, dan Fujitsu. Sehingga arstitektur SPARC terbuka penuh dan non-eksklusif.
Implementsai arsitektr SPARC pada awalnya dirancang dan digunakan untuk sistem Sun-4
workstation and server, menggantikan versi sebelumya Sun-3 yang berbasis keluarga prosesor
Motorola 68000. Kemudian, prosesor SPARC digunakan fi server SMP (Symmetric multiprocessing)
yang antara lain diproduksi oleh Sun Microsystem, Soulbourne dan Fujitsu.
13.7.1.

SPARC Register Set


Fitur arsitektur SPARC memiliki file register yang besar, lebih dari 100 register. Seperti

pada RISC Berkeley, suatu prosedur yang berjalan pada SPARC dapat mengakses hanya 32
register, yaitu r0 sampai r31. Delapan dari register (r0 sampai r7) adalah bersifat global
dengan kata lain dapat diakses dari semua prosedur. Sedangkan 24 register lainnya adalah
window register. 24 window register tersebut dibagi menjadi 3 grup sehingga masing-masing
grup memiliki 8 register seperti yang terlihat pada Figure 13.11.

20

Figure 13.11 SPARC Register Layout with Three Procedures


-

r31 sampai r24 adalah ins, berisi parameter input.

r23 sampai r16 adalah locals, berisi parameter lokal dari prosedur

r15 sampai r8 adalah outs, berisi parameter keluaran yang akan dilewatkan ke
prosedur selanjutnya.

Seperti yang terlihat pada Figure 13.11, secara fisik register outs dari prosedur pemanggil
adalah register ins dari prosedur yang dipanggil. Prosedur pemanggil melewatkan parameter
ke prosedur yang dipanggil melalui register out, yang merupakan register ins dari prosedur
yang dipanggil. Jendela register dari prosedur yang saat ini berjalan disebut sebagai Active

21

Window, yang ditunjukkan oleh CWP (Current Window Pointer) pada PSR (Processor Status
Register).
Mikroprosesor implementasi dari SPARC saat ini menggunakan 8 jendela dengan 136
register. Jendela tersebut diberi nomor 0 sampai nwindows 1 secara berurutan. Figure 13.12
menunjukkan contoh implementasi mikroprosesor delapan jendela register berbentuk
bundar.

Figure 13.12 Eight Register Windows Forming a Circular Stack in SPARC

13.7.2.

Instruction Set

Arsitektur SPARC memiliki jenis instruksi sebagai berikut :


-

Load / Store

Arithmetic / Logical / Shift

Control Transfer

Read / Write Control Register

Floating-point operate

22

13.7.3.

Coprocessor operate

Instruction Format

Format instruksi SPARC (Figure 13.14) memiliki tiga instruksi dasar yaitu :

13.8.

CALL

Instruksi bercabang (Branch)

Instruksi operasi (register-to-register)

RISC versus CISC Controversy


Masih terdapat kontroversi antara para ahli tentang arsitektur mana yang lebih baik. Beberapa
mengatakan bahwa arsitektur RISC lebih murah dan lebih cepat. Namun, desain arsitektur RISC
menempatkan suatu beban yang besar pada perangkat lunak. Perangkat lunak yang dibutuhkan
akan menjadi lebih kompleks.
Pendekatan RISC yang telah dilakukan dapat dikelompokkan menjadi dua kategori :
-

Kuantitatif : suatu upaya untuk membandingkan ukuran dan kecepatan program


pada mesin RISC dan CISC yang memiliki teknologi yang sebanding.

Kualitatif : pengujian yang dilakukan terhadap suatu masalah seperti


permasalahan HLL program dan penggunaan VLSI secara optimal.

Terdapat beberapa masalah dalam usaha untuk membandingkan masing-masing mesin RISC
dan CISC :
-

Tidak adanya sepasang mesin RISC dan CISC yang bisa dibandingkan dalam hal
life-cycle cost, tingkat teknologi, gate complexity, kecanggihan compiler,
pendukung sistem operasi, dan lain sebagainya.

Tidak ada pengujian yang pasti pada seperangkat program yang sudah ada.

Sebagian besar analisis perbandingan pada mesin RISC lebih dilakukan pada
mesin mainan daripada produk yang telah dikomersialkan.

Dalam tahun-tahun terakhir, kontroversi RISC vs CISC mulai mereda. Hal ini dikarenakan
timbulnya sebuah konvergensi teknologi secara bertahap. Selaras dengan kepadatan chip dan
kecepatan perangkat keras yang mengalami peningkatan, sistem arsitektur RISC telah menjadi
lebih kompleks pula. Pada saat yang bersamaan, untuk memaksimalkan kinerja performanya,

23

desain arsitektur CISC memfokuskan pada permasalahan yang terjadi pada arsitektur
konvensional seperti kenaikan jumlah general-purpose register.

24

Anda mungkin juga menyukai