REDUCED INSTRUCTION SET COMPUTERS (RISC)
Oleh: M. Chandra Cahyo Utomo Heny Herawati Dwy Saputro Nugroho Monica Intan Pratiwi
105090605111003 105090604111001 105090600111025 105090607111011
JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS BRAWIJAYA MALANG 2011
DAFTAR ISI
BAB I PENDAHULUAN 1.1. Latar Belakang 1.2. Tujuan 1.3. Rumusan Masalah
BAB II PEMBAHASAN 2.1. Karakteristik-Karakteristik Eksekusi Intruksi 2.2. Pengunaan File Register Besar 2.3. Optimasi Register Berbasis Kompiler 2.4. Reduced Instruction Set Architecture 2.5. Pipelining RISC 2.6. Motorola 8800 2.7. MIPS 4000 2.8. Kontroversi RISC dan CISC
BAB III PENUTUP 3.1. Kesimpulan
KATA PENGANTAR
Rasa syukur yang dalam kami sampaikan ke hadiran ALLAH SWT, karena berkat restunya makalah ini dapat kami selesaikan sesuai yang diharapkan. Dalam makalah ini kami membahas ³Reduced Instruction Set Computers (Risc)´. Kami menyadari bahwa dalam penyusunan tugas ini masih banyak kekurangan, baik dari segi isi, penulisan maupun kata-kata yang digunakan. Oleh karena itu, segala kritik dan saran yang bersifat membangun guna perbaikan Makalah tentang Organisasi dan Arsitekture Komputer ini lebih lanjut, akan kami terima dengan senang hati. Tidak lupa kami ucapkan terima kasih kepada semua pihak yang telah membantu dalam penyusunan tugas makalah ini. kami telah mencurahkan semua kemampuan, namun kami sadari bahwa hasil penyusunan makalah ini masih jauh dari sempurna dikarenakan keterbatasan data dan referensi maupun kemampuan pe nulis. Demikian makalah ini saya buat semoga bermanfaat,
Malang, 28 february 2011 Penulis
BAB I PENDAHULUAN
1.1 LATAR BELAKANG Perkembangan inovasi komputer penyimpanan program sejak 1950 menambah satu daftar penemuan yang sangat menarik dan paling penting , yaitu Arsitektur Reduced Instruction Set Computers ( RISC). Analisis arsitekture RISC telah menjadi menjadi perhatian banyak masalah tentang organisasi dan arsitekture computer. Walaupun sistem RISC telah ditentukan dan dirancang dengan berbagai cara berdasarkan komunitasnya, elemen penting yang digunakan sebagian rancangan umumnya adalah sebagai berikut : 1. Set instruksi yang terbatas dan sederhana 2. Register general purpose berjumlah banyak atau penggunaaan tekn kompiler untuk mengoptimalklan penggunaan register. 3. Penekanan pada pengoptimalan pipeline instruksi. Berdasarkan Inovasi Arsitektur Reduced Instruction Set computers (RISC) yang merupakan salah satu suatu inovasi yang menjadi titik permasalahan pada saat itu, maka penulis penulis akan mencoba menguraikan berbagai materi yang kami susun berdasarkan literatur yang kami peroleh sebagai bahan pembelajaran Mata Kuliah Organisasi dan Arsitektur Komputer. 1.2 TUJUAN y
y
y y
y y
y
y
Untuk mempelajari operasi, operand, procedure calls, implikasi pada karakteristik-karakteristik eksekusi instruksi. Untuk mengetahui jendela-jendela register (register windows), variabel-veriabel global, file register berukuran besar versus cache pada penggunaan file register besar Untuk mempelajari optimasi register berbasis kompiler Untuk mengetahui karakteristik arsitektur reduced instruction, karakteristik CISC Versus RISC pada reduced instruction set architecture Untuk mempelajari optimasi pipelining pada pipelining RISC Untuk mempelajari set instruksi, arsitektur, manajemen register, pipeline unit instruksi pada MOTOROLA 8800 Untuk mempelajari pipeline instruksi, kontroversi RISC dan CISC pada MIPS R4000 Untuk mengetahui kontroversi RISC dan CISC
1.3 RUMUSAN MASALAH Berdasarkan latar belakang tersebut dan masalah-masalah yang akan dibahas yang dibahas dapat dirumuskan sebagai berikut : y
y
Bagaimana Karakteristik dan berbagai permasalahan dari Reduced Intruction Set Computer (RISC) dan permasalahan dari RISC itu sendiri? Perbedaandari karakteristik RISC dengan CISC?
y
Bagaimana mengkondisikan antara kelas prosesor arsitektur superskalar dan superpipelined.
BAB II PEMBAHASAN 2.1
Karakteristik-Karakteristik Eksekusi Instruksi Salah satu evolusi komputer yang besar adalah evolusi bahasa pempr Bahasa pemprograman memungkinkan programmer dapat mengekspresikan algoritma lebih singkat, lebih memperhatikan rincian, dan mendukung penggunaan pemprogra terstruktur, tetapi ternyata muncul masalah lain yaitu semantic gap, yaitu perbedaan antara operasi-operasi yang disediakan oleh HLL (High Level Languages) dengan yang disediakan oleh arsitektur komputer, ini ditandai dengan ketidakefisienan eksekusi program mesin yang berukuran besar, dan kompleksitas kompiler. Untuk mengurangi kesenjangan ini para perancang menjawabnya dengan arsitektur. Fitur-fiturnya meliputi set-set instruksi yang banyak, lusinan mode pengalamatan, dan statemen±statemen HLL diimplementasikan pada perangkat keras. Set-set instruksi yang kompleks te dimaksudkan untuk : 1. Memudahkan pekerjaan compiler 2. Meningkatkan efisiensi eksekusi, karena operasi yang kompleks diimplementasikan didalam mikrokode. 3. Memberikan dukungan bagi HLL yang lebih kompleks dan canggih. Sementara, hasil penelitian telah memberikan inspirasi kepada para peniliti untuk mencari pendekatan secara keseluruhan yaitu dengan cara membuat arsitekture yang mendukung HLL secara lebih sederhana. Oleh karena itu untuk memahami RISC per memperhatikan karakteristik eksekusi instruksi. Adapun aspek-aspek komputasinya adalah : 1. Operasi-operasi yang dilakukan 2. Operand-operand yang digunakan 3. Pengurutan eksekusi
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 o ptimal. 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 men frekuensi pengaksesan operand sehingga menyatakan pentingnya sebuah arsitektur.
Procedure Calls Dalam HLL procedure call dan return merupakan aspek penting karena merupakan operasi yang membutuhkan banyak waktu dalam program yang dikompalasi sehingga banyak berguna untuk memperhatikan cara implementasi opperasi ini secara efisien. Adapun aspeknya yang penting adalah jumlah parameter dan variabel yang dengan prosedur dan kedalaman pensarangan (nesting). Implikasi Dari hasil sebuah penelitian telah disimpukan bahwa HLL dapat didukung dengan lebih baik dengan cara mengoptilmalkan kinerja feuture-feuture program HLL tertentu yang paling banyak membutuhkan waktu. Secara umum penelitian menyatakan terdapat tiga buah elemen yang menentukan karakter arsitektur RISC : 1. Penggunaan register dalam jumlah besar yang ditunjukan mengotimalkan pereferensian operand 2. Diperlukan perhatian bagi perancangan pipelaine instruksi karena tinggin proporsi instruksi pencabangan bersyarat dan procedure call, pipeline instruksi yang bersifat langsung dan ringkas menjadi tidak efisien 3. Terdapat set instruksi yang disederhanakan
2.2
Penggunaan File Register Besar Terdapat statement assignment yang jumlahnya banyak dalam program-program HLL, dan banyak diantaranya berupa statement assignment sederhana seperti A <= B. Di samping itu, terdapat pula akses operand per statement HLL dalam jumlah yang cukup besar. Apabila kita menghubungkan kedua di atas dengan kenyataan bahwa sebagian besar akses adalah menuju ke skalar-skalar lokal, maka sangat mungkin kita memerlukan penyimpanan register yang besar. Alasan diperlukannya penyimpanan register adalah register merupakan perangkat penyimpanan yang paling cepat, yang lebih cepat dibandingkan dengan memori utama dan memori cache. Dimungkinkan untuk menerapkan dua buah pendekatan dasar, yaitu berdasarkan perangkat lunak dan perangkat keras. Pendekatan perangkat lunak mengandalkan kompiler untuk memaksimalkan pemakaian register. Pendakatan ini membutuhkan algoritma analisis program yang canggih. Pendekatan perangkat keras dilakukan hanya dengan memperbanyak jumlah register sehingga akan lebih banyak variabel yang dapat ditampung di dalam register dalam periode waktu yang lebih lama. y
y
Register Windows Dengan menggunakan pendekatan diatas Jendela register dibagi menjadi tiga buah daerah yang berukuran tetap. Register-register parameter menampung parameter-parameter yang dilewatkan dari prosedur. Register-register lokal Digunakan untuk variable lokal, setelah di-assign oleh kompiler. Register-register tenporer Digunakan untuk pertukaran parameter dan hasilnya dengan yang tingkatan yang lebih rendah berikutnya, jadi secara fisik register-register temporer yang berada dalam satu tingkatan sama seperti halnya register-register parameter pada tingkatan yang lebih rendah berikutnya. Overlap ini memungkinkan parameter-parameter dapat dilewatkan tanpa perpindahan aktual data. y
y
y
Variabel-variabel Global Teknik Register Windows memberikan organisasi yang efisien untuk penyimpanan variable skalar lokal di dalam register. Akan tetapi teknik ini tidak dapat memenuhi kebutuhan penyimpanan variabel global, yang diakses oleh lebih dari sebuah prosedur, Terdapat dua pilihan untuk memenuhi hal tersebut : y
y
Pertama, Variabel-variabel yang dideklarasikan sebagai global pada HLL dapat disediakan lokasi-lokasi oleh kompiler. Namun, bagi yang sering mengakses variabel-variabel global, teknik tersebut tidaklah efisien Alternatifnya adalah melibatkan kumpulan register global di dalam CPU. Registerregister ini harus memiliki jumlah yang tetap dan dap at dipakai oleh semua prosedur
Large Register File versus Chace
Karakteristik file register besar dan Chace Large register file
Cache
Semua Scalar lokal
Skalar lokal yang baru dipakai
Variable-variabel individual
Sekelompok memory
Variabel-variabel
global
yang
di-assign Variabel global yang baru dipakai
kompiler Save/restore tergantung kepada pertimbangan Save/restore tergantung algoritma prosedur pengganti chace Pengalamatan Register Pengalamatan Memory Perbedaan ini terlihat dengan membandingkan jumlah overhead pengalamatan kedua pendekatan tersebut 2.3
OPTIMASI REGISTER BERBASIS KOMPILER
Fungsi kompiler adalah untuk menjaga operand bagi komputasi sebanyak mungkin di dalam register, dan bukannya di dalam memori utama.Setiap kuantitas program yang merupakan kandidat yang akan disimpan dalam suatu register di assign ke register simbolis atau virtual.Apabila, dalam bagian program tertentu, terdapat lebih banyak jumlah kuantitas daripada jumlah register real, maka sebagian kuantitas di assign ke lokasi-lokasi memori. Instruksi load dan store digunakan kuantitas posisi sementara di dalam register untuk keperluan op erasi komputasi. Teknik yang sangat umum digunakan pada kompiler RISC dikenal sebagai graph coloring, yang merupakan sebuah teknik yang diambil dari ilmu topologi [CHAI82, CHOW86, COUT86, CHOW90]. Masalah yang ditemukan dalam teknik graph coloring adalah apabila diketahui sebuah graph yang terdiri dari simpul dan lengan, berikan warna-warna ke sejumlah simpul sehingga simpul-simpul yang berdampingan memiliki warna yang berlainan, da n lakukan hal tersebut sedemikian rupa sehingga digunakan pada masalah kompiler. Pertama, program dianalisis untuk membentuk graph interferensi register. Simpul-simpul graph merupakan register simbolik. Apabila dua buah register simbolik ³hidup´ selama potongan program tertentu yang sama, maka untuk menggambarkan interferensinya kedua register itu digabungkan dengan sebuah lengan. Kemudian dilakukan pewarnaan terhadap graph dengan menggunakan n buah warna, untuk n adalah jumlah register. Apabila proses ini tidak sepenu hnya berhasil, maka simpul-simpul yang tidak dapat diwarnai harus ditempatkan di dalam memori, dan operasi load dan store harus dilakukan untuk membuat ruang bagi kuantitas-kuantitas yang dipengaruhi apabila diperlukan. Secara umum, terdapat untung rugi antara penggunaan register dalam jumlah yang banyak dengan optimisasi register berbasis kompiler. Misalnya, [BRAD91a] melaporkan tentang penelitian yang memodelkan arsitektur RISC dengan feature yang sama dengan arsitektur Motorola 88000 dan MIPS R2000. Arsitektur-arsitektur di atas memiliki jumlah register yang berbeda yang berkisar antara 16 hingga 128 buah, serta semuanya menggunakan general purpose register dan memisahkan antara register yang menggunakan integer dengan register yang menggunakan floating point. 2.4
REDUCED INSTRUCTION SET ARCHITECTURE
Kita akan memulainya dengan pembahasan tentang motivasi penggunaan arsitektur complex instruction set yang kontemporer. Mengapa CISC? Dua alasan utama yang menjadi motivasi kecenderungan ini : adanya keinginan untuk
menyederhanakan kompiler dan keinginan untuk mengingkatkan kinerja, untuk menggunakan complex instruction set adalah bahwa eksekusi instruksi akan lebih cepat. Alasan pertama, yaitu penyederhanaan kompiler telah cukup jelas. Tugas pembuat kompiler adalah menghasilkan rangkaian instruksi mesin bagi semua pernyataan HLL. Apabila terdapat instruksi mesin yang menyerupai pernyataan HLL, maka tugas ini akan disederhanakan. Alasan tersebut pernah diragukan oleh para peneliti RISC ([HENN82], [RADI83], [PATT82b]). Mereka berdapat bahwa instruksi mesin yang kompleks sering kali sulit digunakan karena kompiler harus menemukan kasus-kasus yang sesuai dengan konsepnya. Alasan penting lainnya adalah harapan bahwa CISC akan menghasilkan program yang lebih kecil dan lebih cepat. Terdapat keuntungan yang dapat diperoleh dari program berukuran kecil. Pertama, karena program membutuhkan memori yang lebih sedikit, maka akan dapat menghemat sumber daya dan dengan semakin murahnya harga memori saat ini. Program yang lebih kecil akan meningkatkan kinerja, dan peningkatan k inerja. Yaitu instruksi yang lebih sedikit dapat diartikan sebagai lebih sedikitnya byte-byte instruksi yang harus diambil. Dan kedua, pada lingkungan paging, program yang berukuran lebih kecil akan mengurangi terjadinya page fault. Alasan dari penggunaan complex set instruction yaitu karena suatu operasi HLL yang kompleks akan mengeksekusi lebih cepat karena menyerupai sebuah instruksi mesin dibandingkan dengan mengeksekusi sejumlah instruksi-instruksi yang lebih primitif. Percepatan terhadap eksekusi fungsi-fungsi kompleks tidak berkaitan banyak dengan kekuatan instruksi mesin yang kompleks seperti halnya kekuatannya pada penyimpanan kontrol berkecepatan tinggi [RADI83]. Akibatnya, penyimpanan kontrol berlaku sebagai suatu cache instruksi. Dengan demikian, arsitektur perangkat keras berada da lam posisi mencoba untuk menentukan fungsi mana yang akan sering digunakan dan mengassignnya ke penyimpanan kontrol dengan cara mengimplementasikannya di dalam mikrokode. Jadi, pada sistem-sistem S/370, instruksi-instruksi seperti Translate dan Extended-Prec ision-Floating-Point-Divide berada di dalam penyimpan berkecepatan tinggi, sementara urutan yang dilibatkan dalam penyusunan prosedur call atau inisiasi suatu interrupt hadler berada di dalam memori utama yang lebih lambat. Dengan demikian dapat disimpulkan bahwa tidaklah jelas bahwa kecenderungan peningkatan pemakaian co mplex instruction set akan terjadi. Karakteristik Arsitektur Reduced Instruction Set 1. Satu Instruksi per siklus 2. Operasi register ke register 3. Address mode sederhana 4. Format instruksi sederhana Siklus mesin ditentukan oleh waktu yang digunakan untuk mengambil dua buah operand dari register, melakukan operasi ALU, dan menyimpan hasil operasinya ke dalam register. Dengan demikian, instruksi mesin RISC tidak bo leh lebih kompleks dan harus dapat mengeksekusi secepat mikroinstruksi pada mesin-mesin CISC. Dengan menggunakan instruksi sederhana atau instruksi satu siklus, hanya dibutuhkan sedikit mikrokode atau tidak sama sekali; instruksi mesin dapat di hardwired. Instruksi-instruksi seperti itu akan dieksekusi lebih cepat dibandingkan instruksi-instruksi lainnya yang sejenis pada mesin lainnya, karena instruksiinstruksi tersebut tidak perlu mengakses penyimpanan kontrol mikropro gram pada saat eksekusi instruksi berlangsung. Sebagian besar operasi akan berbentuk dari register ke register, yang hanya t erdiri dari operasi-operasi LOAD dan STORE yang mengakses memori. Feature rancangan ini
menyederhanakan set instruksi dan karena itu akan menyederhanakan unit kontrol juga. Misalnya, sebuah instruksi RISC dapat hanya mengandung satu atau dua buah instruksi ADD (misalnya, penambahan integer, penambahan dengan carry); VAX memiliki 25 buah instruksi ADD. Keuntungan lainnya adalah bahwa arsitektur seperti itu memungkinkan optimisasi pemakaian register, sehingga operand-operand yang sering diakses akan tetap berada di penyimpan berkecepatan t inggi. Karakteristik ketiga adalah penggunaan mode pengalamatan sederhana. Hampir sama dengan instruksi menggunakan pengamalatan register. Beberapa mode tambahan, seperti pergeseran dan perelative dapat dimasukkan, selain itu lebih banyak mode kompleks dapat disintesis pada perangkat lunak dibanding yang sederhana. Di samping itu feature rancangan ini dapat menyederhanakan sel instruksi dan unit kontrol. Karakteristik umum yang terakhir alah penggunaa n format-format instruksi sederhana. Umumnya, hanya sebuah format atau beberapa format saja yang digunakan. Panjang instruksinya tetap dan disamakan dengan panjang word. Lokasi field, khususnya opcode, juga tetap. Feature rancangn ini memiliki beberapa kelebihan. Dengan menggunakan field yang tetap, pendekodean opcode dan pengaksesan operand register dapat dilakuikan secara bersamaan. Format yang sederhana akan memudahkan unit kontrol. Pengambilan instruksi akan dioptimisasi karena satuan panjang word akan diambil. Hal ini juga berarti bahwa instruksi tunggal tidak akan melewati batas-batas page. Karakteristik CISC Versus RISC Setelah terjadi antusiasme untuk menggunakan mesin-mesin RISC, terjadi kejadian-kejadian sepert : 1. Rancangan RISC dapat memperoleh keuntungan dengan mengambil sejumlah feature CISC. 2. Rancangan CISC dapat memperoleh keuntungan dengan mengambil sejumlah feature RISC. Ciri-ciri RISC : 1. Instruksi berukuran tunggal. 2. Ukurannya yang umum adalah 4 byte. 3. Jumlah mode pengalamatan data yang sedikit, biasanya kurang dari lima buah. 4. Tidak terdapat pengalamatan tak langsung yang mengharuskan anda melakukan sebuah akses memori agar memperoleh alamat operand lainnya di dalam memori. 5. Tidak terdapat operasi yang menggabungkan operasi load/store dengan operasi aritmetika. (misalnya, penambahan dari memori, penambaha n ke dalam memori). 6. Tidak terdapat lebih dari satu operand beralamat memori per instruksi. 7. Tidak mendukung perataan sembarang, bagi data untuk operasi load/store. 8. Jumlah maksimum pemakaian memori management unit (MMU) bagi suatu alamat data adalah sebuah instruksi.floating 9. Jumlah bit bagi floating point register specifier sama dengan lima atau lebih. 10. Jumlah bit floating point register specifier sama dengan empat atau lebih.
2.5PIPELINING RISC Sering kali pipelining instruksi digunakan untuk meningkatkan kinerja. Kita akan membahas masalah tersebut di dalam konteks arsitektur RISC. S ebagian besar instruksi merupakan operasi dari register ke register, dan sebuah siklus instruksi memiliki dua buah fase berikut ini:
Intruksi Fetch (Pengambilan instruksi) Execute (Eksekusi). Melakukan operasi ALU deng an input register dan output register.
Bagi operasi-operasi load dan store, diperlukan 3 fase:
Instruction Fetch Execute. Menghitung alamat memori. Memory. Operasi register ke memori atau memori ke register.
Pewaktuan rangkaian instruksi tanpa menggunakan pipelining sangant jelas tidak efisien. Bahkan pipelining yang sangat sederhana pun dapat meningkatkan kinerja. Teknik pipelining dua arah yang berlainan dapat dilakukan secara bersamaan. Teknik ini dapat menghasilkan sampai dua kali waktu kecepatan eksekusi teknik serial.
Optimasi Pipelining Karena sederhananya instruksi-instruksi RISC, maka pipelining dapat digunakan dengan efisien. Terdapat beberapa macam durasi eksekusi instruksi, dan pipeline dapat digunakan untuk menggambarkan perbedaan tersebut. Namun seperti kita ketahui bahwa dependensi data dan percabangan dapat mengurangi kecepatan eksekusi keseluruhan. Untuk mengkompensasi dependensi-dependensi, telah dibuat teknik pengorganisasian kembali kode. Pertama, kita ambil instruksi percabangan. Delayed Branch, yang merupakan cara untuk meningkatkan efisiensi pipelining, memanfaatkan percabangan yang tidak akan dilakukan sampai denga instruksi berikutnya. Instruksi JUMP diambil sebelum instruksi ADD. Namun perlu diingat bahwa instruksi ADD diambil sebelum eksekusi instruksi JUMP memiliki kesempatan untuk mengubah pro gram counter. Sehingga semantik orisinil program dapat d ijaga. Instruksi pertukaran ini akan berfungsi dengan baikbagi percabangan tak bersyarat, call, dan return. Bagi percabangan bersyarat, prosedur ini tidak dapat diterapkan begitu saja. Apabila syarat percabangan yang diuji dapat diubah oleh instruksi sebelumnya, maka harus menahan dahulu agar tidak melakukan pertukaran, namun menyisipkan sebuah NOOP. Taktik yang sama, yang d isebut delayed load, dapat digunakan terhadap instruksi LOAD. Pada instruksi LOAD, register yang menjadi target LOAD dikunci oleh CPU. Kemudian CPU
melanjutkan eksekusi rangkaian instruksi sampai CPU menemukan instruksi yang membutuhkanregister tersebut, yaitu posisi yang CPU akan ad lesampai pemuatan selesai.
2.6 Motorola 8800 Motorola 8800 merupakan prosesor RISC pertama yang dibuat Motorola. Walaupun dari nomor jenisnya terlihat ada kaitannya dengan keluarga MC68000 yang berarsitektur CISC, proses ini memiliki perbedaan yang cukup mencolok. MC68000 merupakan wakil bagi CISC masa kini, sedangkan 8800 merupakan sepenuhnya sistem RISC. Sel Instruksi
Seperti semua sistem RISC secara virtual, 88000 menggunakan instruksi 32-bit yang panjangnya tetep. Perlu dicatat bahwa dalam semua format, posisi field dikunci berderet. Jadi dekoder logika instruksi dalam prosesor selalu mengakses register sumber dan reg ister tujuan dari lokasi yang relatif sama di dalam instruksi. Hal ini dapat mempercepat pendekodean instruksi dan penyederhanaan rancangan pipeline. Arsitektur
Keping prosesor utama terdiri dari sejumlah unit fungsi independen yang terhubung ke file register yang multiport. Unit-unit fungsi dapat beroperasi secara independen dan konkuren, yang mengakibatkan pengolahan instruksi dengan efisien.
Integer unit: mengeksekusi seluruh aritmatika integer, bit filed, Boole, dan akses-akses register kontrol. Floating-Point Unit: menyediakan fungsi IEEE 754. Instruction Unit: bertanggung jawab atas pengambilan instruksi dan pengiriman opcode yang telah didekode via signal-signal kontrol ke unit-unit eksekusi yang sesuai, yang berada di dalam memori prosesor. Data Memori Unit: bertanggung jawab atas pemuatan dan penyimpanan operand antara prosesor dengan memori eksternal.
Bus memori (bus M) menghubungkan dua unit manajemen memori cache dengan memori sistem, yaitu sebuah unit untuk data dan sebuah unit lagi untuk instruksi. Manajemen Register
File register terdiri dari 32 buah register general purpo se 32-bit. Register 0 di hardwiredkan dengan nilai 0. Hal ini sangat cocok untuk menyimpan bilangan 0 di dalam register lainnya atau memori lainnya. Dengan menggunakan arsitektur 88000, diperlukan beberapa hal untuk memungkinkan seluruh unit fungsiuntuk dapat memakai bersama file register tanpa merusak data berbasis
register yang satu dengan yang lainnya. Mekanisme yang dipakai dalam 88000 dikenal sebagai register scoreboarding. Pipeline Unit Instruksi
Setiap unit fungsi di dalam 88000 memiliki arsitektur yang di-pipeline kan untuk memungkinkan tingkat paralelisme setinggi mungkin. Unit mengambil instruksi-instruksi dari cache instruksi via sebuah bus yang dikenal sebagai PBUS. Tahap pengambilan terdiri dari register Fetch Instruction Pointer (FIP) yang berisi alamat instruksi yang akan d iambil. Pada setiap awal siklus waktu, apabila tidak terdapat pipeline stall atau status menunggu memori, maka FIP memberikan sebuah alamat ke cache instruksi. Selama tahap berikutnya, alamat FIP dipindahkan ke register Next Instruction Pointer(NIP), kemudian instruksi akan diambil dari memori dan d itempatkan di dalam register Next Instruction. Selama tahapan ini, instruksi didekode sebagian da n operandoperand yang dibutuhkan dari file di-prefetch, dan disiapkan untuk keperluan transfer ke unit fungsi yang sesuai. Selama tahap eksekusi berlangsung, alamat di dalam NIP dipindahkan ke register Execute Instruction Pointer(XIP), dan instruksi dipindahkan ke register Execut ing Instruction. Pada tahap ini instruksi dimuat di fungsi yang sesuai. Pasa setiap pointer instruksi, dibuat sebuah shadow register. Apabila pada suatu siklus terjadi exception, maka shadow register akan debekukan untuk menyimpan nilai-nilai pada saat terjadi exception. Nilai-nilai ini akan dipanggil lagi sete lah pengolahan exception.
2.7 MIPS R4000 Salah satu keeping yang dijual secara komersial dibuat oleh MIPS Co mputer Systems. Sistemnya memperoleh inspirasi dari system eksperimental, yang juga menggunakan nama MIPS yang dibuat di Stanford [HENN84]. Anggota keluarga MIPS yang terbaru adalah R4000. R4000 memiliki arsitektur dan set instruksi yang pada dasarnya sa ma dengan rancanganrancangan MIPS terdahulu: R2000, R3000, dan R6000. Perbedaannya yang mecolok adalah bahwa R4000 memakai lintasan data internal dan eksternal, alamat, register, dan ALU yang besarnya 64 bit, tidak lagi 32 bit.
Set Instruksi R4000 tidak menggunakan kode kondisi. Apabila sebuah instruksi menghasilkan suatu kondisi, maka flag-flagnya disimpan di dalam sebuah reg ister general purpose. Hal ini menghindarkan kebutuhan logika khusus untuk memperlakukan kode-kode kondisi pada saat kode-kode itu memengaruhi mekanisme pipelining dan pengurutan kembali instruksi oleh compiler. Untuk itu digunakan mekanisme yang telah diimplementasikan yang telah berkaitan dengan dependensi nilai register. Kemudian terhadap kondisi-kondisi yang dipetakan ke file-file register dikenakan optimisasi compiler yang sama dalam alokasi dan penggunaannya kembali sebagai nilai-nilai lainnya yang tersimpan dalam reg ister. MIPS memiliki panjang instruksi tunggal ini menyederhanakan pengambilan dan
pendekodean instruksi, dan juga menyederhanakan interaksi antara pengambilan instruksi dengan unit manajemen memori virtua l (yaitu, instrusi tidak melebihi batas word atau page). Ketiga format instruksi memiliki pemformatan opcode dan referensi register yang sama, yang akan memudahkan dekode instruksi. Akibat dari instruksi yang lebih kompleks dapat digunakan pada saat waktu kompilasi.
Pipelining Instruksi Dengan arsitektur instrusi yang telah disederhanakan, MIPS akan dapat memperoleh pipelining yang sangat efisien. Akan sangat bermanfaat apabila meninjau evolusi pipeline MIPS, seperti halnya penjelasan evolusi pipelining secara umum. Sistem RISC eksperimental yang paling awal dan generasi pertama prosesor RISC komersial memiliki kecepatan eksekusi yang mendekat i satu instruksi persiklus waktu sistem. Untuk meningkatkan kinerja ini, dua kelas prosesor digunakan supaya memungkinkan eksekusi sejumlah instrusi per siklus waktu. Kedua kelas prosesor tersebut adalah arsitektur superskalar dan superpipelined. Pada dasarnya, arsitektur superskalar menirukan semua tahapan pipeline sehingga dua instruksi atau lebih yang terdapat pada tahapan yang sama dapat diproses secara bersamaan. Sedangkan arsitektur pipelined merupakan suatu arsitektur yang memakai tahapan pipeline yang lebih banyak dan lebih halus. Dengan tahapan yang lebih banyak, instruksi dalam pipeline pada saat yang bersamaan akan lebih banyak yang akan meningkatkan paralelisme. Pada R3000, pipeline dinaikkan sekali per siklus waktu. Kompiler MIPS mampu mengurutkan kembali instrusi-instruksi untuk mengisi slot-slot delay dengan kode dengan kode 70-90 persen waktu. Semua instruksi membuat urutan lima tahapan pipeline yang sama: Pengambilan instruksi Pengambilan operand sumber dari file register Operasi ALU atau pembuatan alamat operand data Referensi memori data Penulisan kembali ke file register Siklus waktu 60 nanodetik dibagi menjadi 2 fase 30 nanodetik. Operasi instruksi eksternal dan operasi akses data ke cache masing-masing memerlukan 60 nanodetik, seperti halnya terjadi pada operasi-operasi internal yang penting (OP, DA, IA). Pendekodean instruksi merupakan operasi yang sederhana, yang hanya membutuhkan sebuah fase 30 nanodetik yang bertumpangtindih dengan pengambilan register dalam instruksi yang sama. Penghitungan alamat instruksi pencabangan juga bertumpang-tindih dengan dekode instruksi dan pengambilan register, sehingga sebuah pencabangan pada instruksi i dapat mengalamati akses ICACHE instruksi i + 2. Demikian pula halnya, pemuatan pada instruksi i akan mengambil data yang akan digunakan oleh OP instruksi i +1, sementara hasil yang diperoleh ALU/shift akan langsung dilewatkan ke instruksi i + 1 tanpa mengalami delay. Penguatan hubungan antara kedua instruksi ini dibuat untuk keperluan pipeline yang sangat efisien. Karena cache-cache R4000 bersifat on-chip, maka translasi alamat virtual menjadi alamat fisik dapat menyebabkan delay terhadap akses cache. Delay ini akan berkurang dengan mengimplementasikan cache yang diindeks secara virtual dan akan menuju ke akses cache paralel dan translasi alamat. Karena adanya pemampatan event, maka pemeriksaan tag cache data akan dilakukan secara terpisah pada siklus berikutnya setelah akses cache. Pada sistem superpipeline, perangkat keras yang ada digunakan beberapa kali per siklus dengan cara menyisipkan register-register pipeline untuk memisahkan setiap tahapan pipenya. Pada dasarnya, tahapan superpipeline beroperasi pada kelipatan frekuensi waktu basis, kelipatan y y y y y
ini bergantung pada derajat superpipelining. Teknologi R4000 memiliki kecepatan dan kerapatan yang memungkinkan superpipelining derajat 2. Peningkatan lebih lanjut dapat dilakukan. Pada R4000, telah dirancang adder khusus dan berukuran lebih besar. Adder tersebut memungkinkan eksekusi operasi ALU yang dua kali lebih cepat. Peningkatan lainnya memungkinkan eksekusi load dan store dengan kecepatan yang dua kali lebih besar. R4000 memiliki delapan tahapan pipeline, yang artinya delapan instruksi dapat berada dalam pipeline dalam waktu yang bersamaan. Pipeline bertambah kecepatannya menjadi 2 tahapan per siklus waktu. Kedelapan tahapan tersebut adalah : nstruct I ion Fetch F irst Half: Alamat virtual diberikan ke cache instruksi dan translation lokaside buffer (TLB). nstruct I ion Fetch Second half: Output-output cache instruksi dan TLB menghasilkan alamat fisik. Reg ister f ile: Tiga aktifitas terjadi secara paralel: Instruksi dekode dan diperiksa kondisi interlocknya (yaitu, instruksi ini o tergantung pada hasil instruksi sebelumnya). Dilakukan pemeriksaan tag cache instruksi. o o Operand diambil dari file register. nstruct I ion Execute: Salah satu dari ketiga aktifitas dibawah ini dapat t erjadi: Apabila instruksinya berbentuk operasi dari register ke register, maka ALU o melakukan operasi aritmetika atau operasi logika. Apabila instruksinya berupa operasi pemuatan (load) dan penyimpanan (store), o maka alamat virtual data akan d ikalkulasi. Apabila instruksinya adalah pencabangan, maka alamat virtual target o pencabangan akan dikalkulasi dan persyaratan pencabangan akan diperiksa. Data Cache F irst: Alamat virtual diberikan ke cache data dan TLB. Data Cache Second: Cache data menghasilkan instruksi, dan TLB menghasilkan alamat fisik. T ag Check: Pemeriksaan tag cache dilakukan untuk keperluan operasi pemuatan dan operasi penyimpanan. W ri te Back: Hasil daripada instruksi dituliskan kembali ke file register. y
y
y
y
y y
y
y
2.8 Kontroversi RISC dan CISC Selama beberapa tahun, kecenderungan yang terjadi dalam arsitektur dan organisasi komputer menuju ke arah semakin kompleksnya CPU: instruksi yang lebih banyak, mode pengalamatan yang lebih banyak, register khusus yang lebih banyak, dll.Perkembangan RISC menggambarkan tidak adanya hubungan fundamental dengan filosofi yang berada di balik kecenderungan tersebut. Pada dasarnya, sosok sistem RISC dan publikasi tulisan ilmiah yang dibuat oleh para pendukungnya yang memuji kelebihan RISC telah menimbulkan reaksi dari apa yang dikenal sebagai mainstream arsitektur komputer. Karya yang membahas tentang pendekatan RISC dapat dikelompokkan menjadi dua kategori: K uant itat if: pembandingan ukuran program dan kecepatan eksekusi program pada mesin RISC dengan mesin CISC yang menggunakan teknologi yang setara. K ual itat if: Pengujian tentang masalah-masalah seperti misalnya dukungan bahasa t ingkat tinggi dan pemakaian VLSI secara o ptimum. y
y
Sebagian besar karya secara kuantitatif telah dilakukan oleh [PATT82b, HEAT84, PATT84] dan karya-karya tersebut sangat membantu pendekatan RISC. Karya-karya lainnya telah membahas masalah tersebut dan berubah menjadi meragukannya [COLW85a, FLYN87, DAVI87]. Terdapat beberapa masalah dalam melakukan perbandingan-perbandingan itu [SERL86]. Tidak terdapat mesin RISC dan CiSC yang sebanding dalam hal harga,tingkat teknologi kompleksitas gate, kecanggihan ko mpiler, dukungan sistem operasi, dsb. Tidak terdapat pengujian programyang pasti. Kinerja bervariasi sesuai dengan programnya. Kesulitan dalam mengumpulkan akibat-akibat yang disebabkan perangkat keras yang berkaitan dengan keterampilan dalam membuat kompiler. Sebagian besar analisis komparatif tantang RISC dilakukan pada mesin-mesin ³mainan´ bukannya pada mesin-mesin komersial. Selain itu, sebagian besar mesin yang tersedia secara komersial dan diiklankan sebagai RISC memiliki karakteristik campuran antara RISC dan CISC. Dengan demikian, perbandingan yang adil dengan mesin CISC komersial dan ³murni´ (misalnya VAX, Intel 80386) sangatlah sulit dilaksanakan y
y
y
y
Penilaian kualitatif bersifat subjektif. Beberapa peneliti telah mengalihkan perhatiannya ke penilaian seperti itu [COLW85a, WALL85], namun hasilnya tidaklah jelas dan mudah dibantah [PATT85b], dan tentu saja dapat membantah balik [COLW85b].
BAB III PENUTUP 3.1 Kesimpulan Dari hasil penguraian mengenai permalahan Arsitektur Reduced Instruction Set computers (RISC) dapat disimpulkan bahwa Arsitekture RISC memiliki strukture intruksi yang sederhana dengan menggunakan teknik seperti pipeline untuk melakukan operasi sederhana, dasar dan menggunakan sejumlah kecil mode pengalamatan, sehingga dapat dieksekusi lebih cepat. Keuntungan lainnya penggunaan RISC memungkinkan optimasi pemakaian register sehingga operand yang sering diakses akan tetap ada di penyimpan berkecepatan tinggi (Register).