13.1.
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.
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
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.
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.
file
register memungkinkan
terjadinya
ketidak
efisiensian pada
register
Dengan penggunaan file register, perpindahan data antara register dan memori
tergantung dari kedalaman prosedur bersarang. Karena biasanya kedalaman prosedur
bersarang tersebut
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.
13.3.
10
13.4.
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.
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.
yang tetap dan pengaksesan operand register dapat dilakukan secara bersama-sama.
13.4.3.
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.
13
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.
Umumnya pada arsitektur RISC menggunakan instruksi register to register. Dan tiap siklus
instruksi memiliki dua tahap :
I : Instruction fetch.
Pada operasi load and store, terdapat tiga tahap yang dibutuhkan :
I : Instruction fetch.
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
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.
15
yang terjadi tetap berjalan dengan baik. Hasil yang diperoleh dari pengggunaan
delayed branch dapat dilihat pada figure 13.7.
16
Loop Unrolling
Loop Unrolling merupakan teknik compiler yang digunakan untuk membenahi
instruksi yang bersifat paralel. Performa loop unrolling dapat ditingkatkan dengan
cara :
-
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
18
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 :
-
File register
Eksekusi instruksi
Pengecekan Tag
Penulisan ulang
Ilustrasi dari pipeline delapan bagian pada MIPS R4000 ditunjukkan oleh Figure 13.10b.
19
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.
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
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.
13.7.2.
Instruction Set
Load / Store
Control Transfer
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
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