TCP/IP dan Adress · Web viewDengan semakin murahnya harga hardware, harga software mengalami...
-
Upload
trinhnguyet -
Category
Documents
-
view
223 -
download
0
Transcript of TCP/IP dan Adress · Web viewDengan semakin murahnya harga hardware, harga software mengalami...
ARSITEKTUR KOMPUTER“Reduced Instruction Set
Computer”
Di Susun Oleh :
RINI ANDINI1129040148
PTIK 02
JURUSAN PENDIDIKAN TEKNIK ELEKTROPROGRAM STUDI PTIK
UNIVERSITAS NEGERI MAKASSAR2014
DAFTAR ISI
Halaman
HALAMAN JUDUL 1
DAFTAR ISI 2
REDUCED INSTRUCTION SET COMPUTER 3
A. Karakteristik Instruksi Eksekusi 8
B. Optimasi Register Berbasis Kompiler 10
C. Arsitektur Reduced Instruction Set 13
D. Pipelining Risc 21
E. MIPS R4000 25
F. SPARC 27
G. RISC Versus Kontroversi CISC
2Reduced Instruction Set Computer
BAB 13
REDUCED INSTRUCTION SET COMPUTER
A. Karakteristik Instruksi Eksekusi
Salah satu bentuk evolusi computer dirasakan adalah evolusi bahasa pemrograman.
Dengan semakin murahnya harga hardware, harga software mengalami peningkatan.
Pada waktu bersamaan, sedemikian jumlah pemrograman telah mengakibatkan harga
software semakin mahal. Sehingga, biaya terbesar dalam siklus hidup sistem adalah
software, bukan hardware. Sebagai tambahan terhadap biaya, dan ketidaknyamanan
tersebut, terdapat elemen ketidak andalan: adalah hal umum bagi program, baik sistem
maupun aplikasi, untuk terus memperlihatkan kekurangan – kekurangan baru setelah
dioperasikan beberapa tahun.
Sebagai respon dari para peneliti dan industry adalah dengan membuat bahasa
program tingkat tinggi yang lebih baik dan kompleks. Bahasa-bahasa tingkat tinggi
(High Level Languange HLL) ini memungkinkan pemrograman untuk menyatakan
algoritma dengan lebih singkat, lebih memperhatikan rincian, dan sering kali mendukung
secara alami penggunaan pemrograman terstruktur atau rancangan yang berorientasi
objek.
Solusi ini menimbulkan masalah lainnya, yang dikenal sebagai semantic gap yaitu
perbedaan antara operasi – operasi yang disediakan dalam bentuk HLL dan operasi –
operasi yang disediakan dalam bentuk arsitektur computer. Tanda – tanda adanya gap ini
di nyatakan dengan adanya ketidakefisienan eksekusi, ukuran program mein besar, dan
kompleksitas compiler. Para perancang meresponnya dengan arsitektur yang diharapkan
dapat menutup kesenjangan ini. Fitur – fitur pentingnya meliputi set – set intruksi yang
besar, lusinan mode pengalamatan, dan berbagai macam statement HLL yang
diimplementasikan di dalam hardware. Sebagai contoh implementasinya adalah intruksi
mesin CASE pada VAX. Set-set intruksi kompleks tersebut dimaksudkan untuk :
Memudahkan pekerjaan penulisan komplier
Meningkatkan efisien eksekusi, karena urutan operasi yang kompleks dapat
diimplementasikan di dalam kode mikro.
3Reduced Instruction Set Computer
Memberikan dukungan bagi HLL yang lebih kompleks dan lebih canggih.
Sementara itu, sejumlah penelitian telah dilakukan dalam beberapa tahun untuk
menentukan karakteristik dan pola eksekusi intruksi mesin yang dihasilkan dari program
HLL. Hasil penelitian ini telah memberikan inspirasi beberapa peneliti untuk mencari
pendekatan yang berbeda : yakni, membuat arsitektur yang mendukung HLL secara
lebih sederhana, bukanyya lebih rumit.
Untuk memahami RISC, kita mulai dengan tinjauan singkat tentang karakteristik
eksekusi intruksi. Aspek – aspek komputasi yang dimaksudkan adalah sebagai berikut :
Operasi – operasi yang dilakukan : hal ini menentukan fungsi – fungsi yang
akan dilakukan oleh prosessor dan interaksinya dengan memori.
Operand – operand yang digunakan : jenis – jenis operand dan frekuensi
penggunaanya akan menentukan organisasi memori untuk menyimpannya dan
mode pengalamatan untuk mengaksesnya.
Pengurutan Eksekusi : hal ini akan mentukan organisasi control dan pipeline.
Dibawah ini kita kan meninjau secara singkat hasil – hasil dari penelitian tentang
program bahasa tingkat tinggi. Semua hasil penelitian tersebut di dasarkan pada
pengukuran dinamis. Dengan kata lain, pengukuran – pengukuran dikumpulkan oleh
pengeksekusian program dan perhitungan sejumlah waktu pada di jalankannya fitur –
fitur terntu atau sifat – sifat tertentu dengan benar. Sebaliknya, pengukuran statis
melakukan perhitungna itu pada teks sumber program. Pengukuran – pengukuran static
ini tidak memberikan informasi tentang kinerja yang bermanfaat, karena pengukuran ini
tidak diberi bobot relative terhadap jumlah wakktu pengekesekusian seluruh statement.
Operasi
Banyak penelitian yang telah dilakukan untuk menganalisis perilaku program HLL
tabel 4.7, menunjukkan hasil penting sejumlah penelitian. Terdapat kecocokan hasil
campuran bahasa dan aplikasi tersebut. Penugasan statement sangat menonjol, yang
menyatakan bahwa perpindahan data sederhana merupakan suatu hal yang sangat
penting. Terdapat pula pernyataan bersyarat (IF,LOOP) dalam jumlah lebih besar.
Statement – statement ini diimplementasikan dalam bahasa mesin dengan beberapa
intruksi perbandingan dan percabangan. Hal ini menyatakan bahwa mekanisme control
urutan set intruksi merupakan hal yang penting.
4Reduced Instruction Set Computer
Hasil – hasil penelitian ini merupakan hal yang penting bagi perancangan set
intruksi mesin, yang mengindikasikan jenis statement mana yang paling sering terjadi
dan karena itu didukung dalam suatu mode yang “optimal”. Akan tetapi, hasil – hasil
tidak mengungkapkan statement mana yang paling sering digunakan dalam eksekusi
program tertentu. Dengan kata lain, diberikan sebuah program bahasa mesin yang
dikompilasi, statement bahasa sumber menyebabkan eksekusi kebanyakan intruksi
bahasa mesin ?
Untuk memahami fenomena ini, program-program Patterson (PATT82A), yang
dijelaskan pada lampiran 4A, telah dikompilasi pada VAX, PAP-11, dan Motorola
68000 untuk menentukan jumlah instruksi mesin dan acuan memori rata-rata per jenis
statemen. Kolom kedua dan ketiga pada tabel 13.2 menunjukkan ukuran pengganti
frekuensi yang relatif tentang kejadian berbagai macam instruksi-instruksi HLL pada
berbagai program, data telah diperoleh dengan pengamatan kejadian dalam menjalankan
program, daripada hanya sejumlah waktu dimana statemen terjadi pada kode sumber.
Karenanya ini adalah statistic frekuensi dinamis. Untuk memperoleh data dalam kolom
empat dan lima (Instruksi mesin berbobot), setiap nilai pada kolom kedua dan kolom
ketiga dikalikan dengan banyaknya perintah mesin yang diproduksi oleh compiler.
Hasilnya kemudian dinormalisasikan sehingga kolom empat dan lima menunjukkan
frekuensi kejadian relatif, banyaknya instruksi mesin berbobot per statemen HLL.
Dengan cara yang sama, kolom keenam dan ketujuh diperoleh dengan perkalian
frekuensi kejadian setiap jenis statemen oleh bilangan jumlah acuan memori relatif yang
disebabkan oleh setiap statemen. Data pada kolom empat sampai tujuh memberikan
ukuran pengganti dari waktu nyata yang melewatkan pengeksekusian berbagai jenis
statemen. Hasilnya menyatakan bahwa prosedur call/return adalah operasi yang paling
banyak memakan waktu dalam program HLL yang umum.
Tabel 13.2 Frekuensi Dinamis Relatif Berbobot Operasi – operasi HLL (PATT82C)
Kejadian dinamis Intruksi mesin
berbobot
Acuan memori
berbobot
Pacsal C Pascal C Pascal C
ASSIGN 45 % 38% 13% 13 % 14 % 15 %
LOOP 5% 3% 42% 32 % 33 % 26 %
CALL 15% 12% 31% 31 % 44 % 45 %
5Reduced Instruction Set Computer
IF 29% 43 % 11% 11 % 7 % 13 %
GOTO _ 3% _ _ _ _
OTHER 6% 1% 3% 3 % 2 % 1 %
Tabel 13.2 diatas mengindikasikan kepentingan relative dari berbagai macam jenis
statement didalam sebuah HLL, ketika HLL sedang dikompilasi untuk suatu arsitektur
set intruksi kontenporer tertentu. Beberapa arsitektur lainnya dapat menghasilkan hasil
yang berbeda. Namun, hasil penelitian ini menghasilkan sesuatu yang representative
untuk arsitektur – arsitektur complex instruction set computer (CISC) yang kontenporer.
Sehingga, penelitian – penelitian tersebut dapat memberikan pedoman bagi yang
memrlukan cara yang lebih efisien untuk mendukung HLL.
Operand
Meskipun topik ini sangat penting, namun hanya sedikit penelitian tentang jenis-
jenis operand. Terdapat beberapa aspek yang sangat penting.
Penelitian yang dilakukan Patterson telah memperhatikan juga [PATT82A]
frekuensi dinamis terjadi kelas – kelas variabel. Hasilnya konsisten antara program
pascal dan C, menunjukkan bahwa mayoritas acuan menuju ke variabel scalar sederhana.
Lebih lanjut, lebih dari 80 % scalar bersifat variabel local (terhadap prosedur). Selain itu,
acuan-acuan ke arrays/ struktur memerlukan acuan sebelumnya ke indeks atau
pointernya, yang biasanya juga merupakan scalar local. Dengan demikian, terdapat
acuan ke scalar dalam jumlah lebih besar, dan acuan – acuan ini sangat terlokalisasi.
Penelitian Patterson tekan menguji perilaku dinamis program – program HLL,
yang independen pada arsitektur tertentu. Perlunya memperhatikan arsitektur dalam
menguji perilaku program lebih mendalam. Sebuah penelitian [LUND77], menguji
intruksi DEC-10 secara dinamis dan menemukan bahwa setiap intruksi rata – rata
mengacu 0,5 operand di dalam memori dan 1,4 register. Hasil yang sama telah
dilaporkan dalam [HUCK83] untuk program – program C, Pascal, dan FORTRAN pada
S/370 PDP – 11, dan VAX. Tentu saja, hal ini menggambarkan ketergantungan sangat
tinggi baik pada arsitektur maupun compiler, tetapi hal tersebut menggambarkan
frekuensi pengaksesan operand.
Penelitian – penelitian tersebut menyatakan pentingnya arsitektur yang
berpengaruh pada pengaksesan operand, karena operasi ini sering dilakukan. Penelitian
6Reduced Instruction Set Computer
Patterson menyatakan bahwa calon utama untuk optimasi adalah mekanisme
penyimpanan dan pengaksesan variabel – variabel scalar local.
Tabel 13.3 persentase dinamis operand – operand
Pascal C Rata – rata
Konstanta integer 16 % 23 % 20 %
Variabel scalar 58 % 53 % 55 %
Larik / struktur 26 % 24 % 25 %
Tabel 13. 4 argumen – argument prosedur dan variabel – variabel scalar local
Presentase prosedur call
yang dieksekusi dengan
Kompiler, interpreter, dan
typesetter
Program nonnumeric
kecil
˃ 3 argumen 0 – 7 % 0 – 5 %
˃ 5 argumen 0 – 3 % 0 %
˃ 8 word argumen dan scalar lokal 1 – 20 % 0 – 6 %
˃12 word argumen dan skalal lokal 1 – 6 % 0 – 3 %
Prosedur Panggil (Call)
Kita telah mengetahui prosedur call dan return merupakan aspek penting dalam
program HLL. (bukti tabel 13.2) menyatakan bahwa prosedur call return merupakan
operasi yang paling banyak membutuhkan waktu dan program – program HLL yang
dikompilasi. Dengan demikian, maka akan sangat berguna apabila memperhatikan cara
implementasi operasi – operasi ini secara efisien. Dua aspek pentingnya adalah ;
banyaknya parameter dan variabel yang berkaitan dengan posedur, dan kedalam
persamaan(nesting).
Pada penelitian yang dilakukan Tanenbaum [TANE78] ditemukan bahwa 98%
prosedur yang dipanggil secara dinamis lebih sedikit dari enam argument, dan bahwa 92
% dari prosedur panggil tersebut menggunakan lebih sedikit dari enam variabel scalar
local. Hasil yang sama telah dilaporkan oleh kelompok Berkeley RISC [KATE83],
seperti ditunjukkan pada tabel 13.4. hasil penelitian tersebut menunjukkan bahwa
banyaknya word yang diperlukan per aktivasi prosedur tidak besar. Penelitian yang
dilaporkan lebih awal mengindikasikan bahwa sebuah proporsi acuan operand yang
7Reduced Instruction Set Computer
tinggi merupakan variabel scalar local. Penelitian menunjukkan bahwa kenyataan acuan
itu terbatas pada variabel yang relative lebih sedikit.
Kelompok Berkeley juga meneliti pola prosedur call dan return di dalam program –
program HLL. Mereka menemukan bahwa urutan prosedur call yang tidak di interupsi
dalam waktu lama yang diikuti oleh urutan prosedur return sangatlah jarang terjadi.
Melainkan, mereka menemukan bahwa program tetap terbatasi oleh jendela kecil
kedalaman prosedur invokasi (procedure-invocation). Hasil penelitian ini menguatkan
kesimpulan bahwa acuan – acuan operand sangat bersifat local.
Implikasi
Beberapa kelompok telah mengetahui hasil penelitian yang telah dilaporkan dan
telah disimpulkan bahwa usaha untuk memebuat arsitektur set intruksi yang mendekati
HLL bukanlah strategi perancangan yang palin efektif. Melainkan, HLL dapa didukung
dengan lebih baik dengan cara pengoptimalan kinerja fitur – fitur program HLL tertentu
yang paling banyak membutuhkan waktu.
Hasil umum dari pekerjaan sejumlah peneliti, tiga elemen yang menetukan karakter
arsitektur RISC. Pertama, penggunaan sejumlah besar register atau penggunaan suatu
compiler untuk mengoptimalkan penggunaan register. Hal ini dimaksukkan untuk
mengoptimalkan pengacuan operand. Penelitian yang baru dibahas di atas menunjukkan
bahwa terdapat beberapa acuan per intruksi HLL, dan terdapat pemindahan statement
dalam proporsi yang besar. Hal ini menggabungkan dengan lokalitas dan dominasi acuan
scalar, menyatakan bahwa kinerja dapat ditingkatkan dengan mengurangi acuan memori
dengan risiko diperlukannya risiko register yang lebih banyak. Karena lokalitas acuan
ini, maka penambahan register dirasakan lebih praktis untuk dilakukan.
Kedua, diperlukan perhatian yang saksama bagi perancangan pipeline intruksi.
Karena proporsi tinggi intruksi percabangan bersyarat dan prosedur call, pipeline
intruksi secara langsung akan menjadi tidak efisien. Hal ini menggambarkan terjadinya
proporsi yang tinggi intruksi yang di-prefect tetapi tidak pernah dieksekusi.
Terakhir, terdapat set intruksi yang disederhanakan (dikurangi). Masalah ini
tidaklah sejelas seperti masalah lainnya, tetapi akan menjadi lebih jelas dalam
pembahasan berikutnya.
B. PENGGUNAAN FILE REGISTER BESAR
8Reduced Instruction Set Computer
Kita telah mengetahui bahwa terdapat proporsi yang besar tentang statemen asigmen
dalam program HLL , dan banyak diantaranya berupa statemen asigment sederhana, di
samping itu terdapat pula akses operan per statemen asigmen HLL yang cukup signifikan.
Jika kita menggabungkan keduanya dengan pernyataan bahwa sebagian besar akses adalah
menuju scalar-skalar local maka sangat mungkin kita memerlukan penyimpanan register.
Alasa kita menggunakan penyimpanan register adalah dengan melihat kenyataan bahwa
penyimpan register merupakan perangkat penyimpanan yang paling cepat dan lebih cepat
disbanding dengan memori utama dan memori cache. Dimana memliki dua pendekatan yaitu
berdasarkan software dan hardware.
Pendekatan software mengandalkan compiler untuk memaksimalkan penggunaan
register .Kompiler akan mengalokasikan register-register bagi variable yang sering
digunakan dalam periode waktu tertentu ,pendekatan seperti ini memerlukan
penggunaan algoritma analisis yang lebih canggih
Pendekatan hardwere dilakukan hanya dengan memperbanyak jumlah register yang
sehingga akan lebih banyak variable yang dapat ditampung didalam register untuk
periode waktu yang lebih lama.
JENDELA-JENDELA REGISTER
Jendela register dibagi 3 buah daerah yang berukuran tetap :
Register-register parameter
Menampung parameter-parameter yang dilewatkan dari prosedur
Register-register local
Menampung register variable-variabel local setelah di asigen oleh compiler
Register-register temporer
Digunakan untuk pertukaran parameter
Pada setiap waktu hanya sebuah jendela register yang terlihat dan dapat dialamti seolah-
olahjendela itu hanya satu-satunya himpunan register misalnya (alamat 0 sampai N-1).
Jendela dibagi dalam tiga daerah berukuran tetap, register parameter hanya menampung
parameter yang dileawatkan dari prosedur yang disebut procedure terbaru dan hasilnya akan
dikirimkan kembali. Register local digunakan untuk variabele local stelah ditugaskan oleh
compiler.Register-register temporerdigunakan untuk pertukaran parameter dan menghasilkan
dengan tingkat yang lebih rendah berikutnya.Tumpang tindih ini memungkinkan parameter-
parameter dapat dilewatkan tanpa perpindahan actual data .
9Reduced Instruction Set Computer
Untuk bentuk call retrn yang mungkin terjadi, jumlah jendela register tidak boleh
terbatas melainkan jendela-jendela register dapat digunakan untuk menampung beberapa
pengaktifan prosedur baru .Pengaktifan yang lebih dulu harus disimpan didalam memori dan
kemudian digunakan kembali ketika terjadi pengurangan kedalaman persarangan .
VARIABEL-VARIABEL GLOBAL
Teknik jendela yang telah dijelaskan diatas memberikan organisasi yang efissiean untuk
penyimpanan variabel scalar local didalam register. Akan tetapi teknik ini tidak memenuhi
kebutuhan penyimpanan variabel global ,yang diakses oleh lebih dari satu prosedur terdapat
dua pilihan untuk memenuhi hal tersebut
Variabel-variabel yang dideklarasikan sebagai global pada HLL dapat disediakan
lokasi-lokasi memori oleh computer dan seluruh instruksi mesin yang mengacu
variable-variabel ini akan menggunakan operand-operand acuan memori .Cara ini
lansung baik dari sudut pandang hardwer maupun software (compiler) .Namun yang
sering mengakses variable g;obal. Teknik ini tidak efisien
Alternatifnya adalah melibatkan set register global didalam processor .Register-
register ini harus memiliki jumlah yang tetap dan tersedia untuk semua prosedur .
FILE REGISTER BERUKURAN BESAR VERSUS CACHE
FILE REGISTER BESAR
Semua scalar local
Variable individu
Variable global yang di asgn compiler
Simpan kembali yang didasarkan
Pada kedalaman persaranagn prosedur
Pengalamatan register
CACHE
Scalar local yang baru digunakan
Blok-blok memori
Variabele-variabel global yang baru digunakan
10Reduced Instruction Set Computer
Simpan kembali yang didasarkan pada algoritma penggantian cahce
Pengalamatan memori
C. Optimasi Register Berbasis Kompiler
Sekarang kita asumsikan bahwa pada mesin RISC target hanya tersedia register dalam
jumlah yang sedikit. Di sini, penggunaan register yang telah dioptimalkan tersebut
merupakan tanggung jawab compiler. Tentu saja sebuah program yang ditulis dalam bahasa
tingkat tinggi tidak memiliki acuan eksplisit ke register. Kuantitas-kuantitas program diacu
secara simbolik. Fungsi compiler adalah untuk menjaga operand bagi komputasi sebanyak
mungkin di dalam memori utama. Hal ini ditunjukkan untuk meminimalkan operasi load dan
store.
Secara umum, pendekatan yang diambil adalah sebagaii berikut. Setiap kuantitas
program yang akan ditempatkan dalam register ditugaskan ke register virtual atau simbolik.
Compiler kemudian memetakan jumlah tidak terbatas dari register simbolik ke jumlah
tertentu dari register nyata. Register simbolik yang tidak menggunakan tumpang-tindi bisa
berbagi dengan register rill. Jika, pada bagian yang tertentu dari program ada banyak
kuantitas yang berhubungan dengan register riil, maka sebagian dari kuantitas itu ditugaskan
ke lokasi memori. Instruksi Load-dab-Store digunakan untuk posisi kuantitas dalam register
untuk sementara untuk operasi komputasi.
Inti dari tugas komputasi adalah untuk menentukan kuantitas yang mana yang akan
ditugaskan ke register di setiap posisi dalam program. Teknik yang paling banyak digunakan
di compiler RISC adalah penawaran grafik, yang merupakan suatu teknik diaambil dari
disiplin ilmu topologi.
Masalah penawaran grafik adalah sebagai berikut. Jika ada suatu grafik terdiri dari
simpul dan node, berikan warna ke beberapa simpul sehingga simpul-simpul yang
berseblahan mempunyai warna yang berbeda, dan dilakukan sedemikian ini untuk
memperkecil banyaknya warna yang berbeda. Hal tersebut digunakan dalam koompiler
dengan cara berikut. Pertama, program dianalisis untuk membangun suatu grafik interfrensi
register. Simpul dari grafik adalah register simbolik. Jika ada dua register simbolik “berada”
sepanjang fragmen program tertentu yang sama, maka untuk menggambarkan hubungan
interferensi kedua register digabungkan dengan suatu garis. Kemudian mewarnai grfik
dengan n warna, dimana n adalah banyaknya register. Simpul yang memiliki warna yang
sama dapat ditugaskan ke register yang sama. Jika proses ini tidak sepenuhnya berhasil,
11Reduced Instruction Set Computer
kemudian simpulnya tidak bisa diwarnai harus ditempatkan di dalam memori, kemudian
operasi load dan store harus dilakukan untuk membuat ruang untuk kuantitas yang
terpengaruhi ketika mereka diperlukan.
Gambar 13.4 adalah contoh sederahan dari proses itu. Asumsikan suatu program dengan
enam register simbolik untuk di-kompile ke dalam tiga register nyata. Gambar 13.4a
menunjukkan waktu urutan dari penggunaan aktif dari setiap register simbolik, dan bagian b
menunjukkan grafik interferensi register. Suatu pewarnaan dengan tiga warna dapat
ditunjukkan. Suatu register simbolok, F, ditinggalkan tanpa warna dan harus diperlakukan
dengan menggunakan load dan Store.
Secara umum, ada suatu kerugianantara penggunaan register dalam jumlah besar dan
optimisasi register berbasis compiler. Sebagai contoh (BRAD91A) melaporkan tentang suatu
studi memodelkan suatu arsitektur RISC dengan fitur yang serupa dengan Motorola 88000
dan MIP R2000. Peneliti menggunakan jumlah register yang bervariasi dari 16 sampai 128,
dan mereka memperhatikan kedua-duanya penggunaan dari semua register penggunaan
umum dan register yang memisah antara penggunaan bilangan integer dan titik-mengambang.
Penelitian tersebut menunjukkan bahwa walaupun menggunakan optimasi sederhana,
terdapat manfaat sedikit jika menggunakan lebih dari 64 register. Dengan teknik optimisasi
register canggih, ada peningkatan kinerja marginal dengan lebih dari 32 register. Akhirnya,
mereka catat bahwa dengan sejumlah kecil register (misalnya 16), suatu mesin dengan suatu
organisasi register yang sama mengeksekusikan lebih cepat dibandingkan suatu organisasi
yang menggunakan register terpisah. Kesimpulan yang serupa dapat diambil dari (HUGU91),
yang melaporkan tentang suatu penelitian yang menekan pada penggunaan register berjumlah
sedikit, daripada membandingkannya dengan penggunaan set register besar dari usaha
optimisasinya.
Gambar 13.4
Pendekatan Pewarnaan Grafik A B
A B C D E F
D E
R1 R2 R3 C D E F
12Reduced Instruction Set Computer
(a) Urutan waktu dari penggunaan aktif untuk register (b) Grafik interferensi untuk register
D. Arsitektur Reduced Instruction Set
Dalam bagian ini, kita memperhatikan beberapa karakteristik umum dan motivasi dari suatu
arsitektur reduced instruction set. Contoh yang spesifik akan dilihat kemudian dalam bab ini.
Mengapa CISC Kita sudah mencatat adanya kecenderungan ke set instruksi yang lebih kaya, yang
meliputi jumlah instruksi yang lebih banyak dan instruksi yang lebih rumit. Dua
pertimbangan yang prinsip sudah memotivasi kecenderungan ini; suatu keinginan untuk
menyederhanakan compiler dari suatu keinginan untuk meningkatkan kinerja. Dibalik kedua
pertimbangan ini ada suatu keinginan untuk beralih bahasa tingkat tinggi (HLL) pada
beberapa pemrogram; arsitek yang berusaha untuk mendesain suatu mesin yang mendukung
HLL lebih baik.
Bukan tujuan dari bab ini untuk mengatakan bahwa para perancang CISC sudah
menggunakan cara yang salah. Tentu saja, karena teknologi bertujuan untuk meningkatkan
dan karena arsitektur berada di sepanjang suatu spectrum, bukannya di dalam dua kategori
yang jelas, maka terdapat penilaian yang kecil sekali. Dengan demikian, komentar yang ada
hanyalah dimaksudkan untuk menunjukkan kekurangan potensial dari pendekatan CISC dan
untuk beberapa pemahaman dari motivasi dari pendukung RISC itu.
Alasan yang pertama, penyederhanaan compiler tampak cukup jelas dan nyata. Tugas
dari compiler adalah untuk menghasilkan suatu urutan dari instruksi mesin untuk setiap
statemen HLL. Jika ada instruksi mesin yang menyerupai HLL statemen, tugas ini
disederhanakan. Pemikiran ini telah diperdebatkan oleh para peneliti RISC ([HENN82],
[RADI83], [PATT82PB]). Mereka berpendapat bahwa instruksi mesin yang kompleks sering
susah untuk digunakan sebab kompiler harus temukan suatu kasus yang persis sama. Tugas
dari pengoptimalan kode yang dihasilkan untuk memperkecil ukuran kode, mengurangi
jumlah eksekusi instruksi dan meningkatkan pipelining adalah jauh lebih sulit dengan
menggunakan set instruksi yang kompleks. Sebagai bukti dari itu, penelitian yang dibahas
lebih awal di bab ini menunjukkan bahwa kebanyakan dari instruksi program yang
dikompiler adalah kode yang secara relative sederhana.
Alasan utama lainnya adalah suatu harapan dari CISC yang akan menghasilkan program
yang lebih cepat dan lebih kecil. Ada keuntungan untuk memperkecil program. Pertama,
13Reduced Instruction Set Computer
sebab program memerlukan memori lebih sedikit, maka akan menghemat sumber daya.
Karena memori masa ini sangat murah, maka keuntungan potensi ini tidak terlalu penting
lagi. Yang lebih penting, program yang kecil akan meningkatkan kinerja dan kinerja ini akan
terjadi dalam dua arah. Pertama, lebih sedikit instruksi berarti lebih sedikit byte-byte instruksi
yang diperlukan. Kedua, pada pemberian nomor halaman , program yang lebih kecil
menduduki lebih sedikit byte-byte instruksi untuk diperlukan. Kedua, pada pemberian nomor
halaman, program yang lebih kecil menduduki lebih sedikit halaman, mengurangi kesalahan
halaman.
Masalah yang terdapat dari pertimbangan diatas adalah jauh dari kepastian program
CISC akan lebih kecil disbanding dengan program RISC. Pada umumnya, CISC
programyang dinyatakan dalam bahasa mesin berupa simbolik, mungkin lebih pendek (yaitu
lebih sedikit instruksi), hanyalah jumlah bit dalam memori yang dipakai tidak kecil. Tabel
13.6 mengilustrasikan hasil tiga penelitian membandingkan ukuran dari program bahasa C
yang dikompile pada berbagai mesin, termasuk RISC I, yang mempunyai suatu arsitektur
reduced instruction set. Perlu dicatat bahwa ada penggunaan CISC di sini hanya menghemat
sedikit atau tidak menghemat sama sekali apabila menggunakan RISC. Hal lain yang menarik
untuk dicatat bahwa VAX, yang mempunyai lebih banyak set instruksi yang kompleks
dibandingkan PDP-11, hanya bisa menghemat sedikit. Hasil ini telah ditetapkan oleh para
peneliti IBM [RADI83], yang menyatakan bahwa 801 (adalah suatu RISC) yang
memproduksi kode berukuran 0.9 kali ukuran kode pada suatu IBM S/370. Penelitian
menggunakan sejumlah program PL/I.
Ada beberapa pertimbangan dari hasil-hasil yang mengejutkan. Kita catat bahwa
kompiler pada CISC cenderung untuk menggunakan instruksi yang lebih sederhana. Oleh
karena itu kesingkatan dari instruksi kompleks jarang digunakan. Juga, terdapat banyak
instruksi pada CISC, maka diperlukan opcode lebih panjang yang akan menghasilkan
instruksi yang lebih panjang juga. Akhirnya, RISC cenderung untuk menekankan acuan
register dibanding acuan memori dan acuan register membutuhkan lebih sedikit jumlah bit.
Sebuah contoh dari acuan register akan ibahas berikut ini.
Dengan demikian, harapan bahwa CISC akan menghasilkan program yang lebih kecil,
dengan beberapa keuntungan tidak dapat direalisir. Factor motivasi kedua untuk
menggunakan set instruksi kompleks adalah bahwa eksekusi instruksi akan bersifat lebih
cepat. Jelas bahwa suatu operasi HLL yang kompleks akan dieksekusi dengan cepat sebagai
instruksi mesin yang tunggal bukannya sebagai rangkaian dari instruksi yang lebih primitive.
14Reduced Instruction Set Computer
Bagaimanapun, oleh karena bias ke arah penggunaan instruksi yang lebih sederhana, maka
hal ini sulit terjadi juga. Seluruh unit control harus dibuat lebih rumit dan penyimpanan
control program mikro harus dibuat lebih besar, untuk mengakomodasi suatu set instruksi
yang lebih kaya. Salah satu factor tersebut akan meningkatkan waktu eksekusi suatu instruksi
sederhana.
Sesungguhnya, beberapa peneliti berpendapat bahwa percepatan terhadap eksekusi
fungsi-fungsi kompleks tidak tergantung paa kekuatan instruksi mesin yang kompleks seperti
halnya pada penyimpanan control yang kecepatan tinggi [RADI83]. Pada hakikatnya,
penyimpanan control bertindak sebagai cache instruksi. Dengan demikian, arsitektur
hardware berada dalam posisi untuk berusaha menentukan subroutines atau fungsi yang mana
yang paling sering digunakan dan menugaskannya ke penyimpanan control dengan
menerapkannya dalam kode mikro. Hasilnya kurang dari harapan. Jadi pada system S/390,
instruksi seperti translate dan extended-precision-floating-point-divide berada dalam
pemyimpanan kecepatan tinggi, sedang urutan yang dilibatkan ddidalam menentukan
prosedur call atau memulainya suatu intrupsi berada dalam memori utama yang lebih lambat.
Dengan demikian dapat disimpulkan bahwa tidak jelas bahwa suatu kecenderungan
untuk peningkatan penggunaan set instruksi kompleks dapat terjadi. Ini telah mengakibatkan
sejumlah kelompok untuk mengambil cara lain.
Karakteristik dari Arsitektur Set Reduced Instruction
Walaupun telah diambil berbagai pendekatan yang berbeda untuk arsitektur set reduced
instruction, terdapat beberapa karakteristik yang umum bagi semua arsitektur-arsitektur.
Satu instruksi persiklus Operasi register-ke-register Mode pengalamatan sederhana Bentuk instruksi sederhana
Disini, kita menyediakan suatu diskusi ringkas tentang karakteristik-karakteristik ini.
Karakteristik yang pertama adalah ada satu instruksi mesin per siklus mesin. Suatu siklus
15Reduced Instruction Set Computer
mesin dinyatakan oleh waktu yang dibutuhkan untuk mengambil dua operand dari register,
melaksanakan suatu ALU operasi dan menyimpan hasiilnya pada register. Dengan demikian,
instruksi mesin RISC harus tidak boleh rumit dari dan melaksanakan kira-kira secepat
instruksi mikro pada mesin CISC. Dengan menggunakan instruksi sederhana atau instruksi
satu siklus, tidak diperlukan kode mikro yang lebih; instruksi mesin dapat di hardwire.
Instruksi-instruksi seperti itu akan dieksekusikan lebih cepat dari instruksi mesin yang lain
pada mesin yang lain, sebab tidaklah perlu untuk mengakses suatu penyimpanan control
mikroprogram selama eksekusi instruksi berjalan .
Karakteristik kedua adalah bahwa kebanyakan operasi harus dalam bentuk register ke
register, dengan hanya operasi akses memori LOAD dan STORE yang sederhana. Rancangan
ini menyederhanakan set instruksi dan sekalian menyederhanakan unit control. Sebagai
contoh, sebuah set instruksi RISc bisa mengandung hanya satu atau dua instruksi ADD
(misalnya, penambahan bilangan bulat, penambahan dengan pembawa); VAX mempunyai 25
instruksi ADD berbeda. Keuntungan yang lain adalah bahwa arsitektur seperti itu
meningkatkan optimisasi penggunaan register, sehingga operand-operand yang sering diakses
akan tetap berada dalam penyimpanan berkecepatan tinggi.
Penekanan pada operasi register-ke-register ini merupakan ciri khas dari rancangan
RISC. Mesin CISC yang modern menyediakan instruksi seperti tetapi juga meliputi operasi
memori-ke-memori dan operasi campuran register/memory. Perbandingan kedua pendekatan
ini telah dilakukan di tahun 1970-an, sebelum terwujudnya RISC. Gambar 13.5a
menunjukkan pendekatan yang diambil. Arsitektur hipotesis sudah dievaluasi dalam hal
ukuran program dan banyaknya bit lalu lintas memori. Hasil seperti ini yang mendorong
seorang peneliti untuk menyatakan bahwa arsitektur masa depan tidak berisi register sama
sekali [MYER78].
Suatu hal yang hilang dari penelitian-penelitian diatas adalah cara untuk mengetahui
akses yang sering terjadi kesejumlah kecil scalar yang local dan dengan menggunakan papan
besar untuk register atau suatu kompiler optimisasi, kebanyakan operand bisa bertahan
didalam register untuk periode waktu yang cukup lama. Gambar 13.5b merupakan gambaran
yang perbandingan yang cukup adil.
Karakteristik ketiga adalah penggunaan mode pengalamatan sederhana. Hampir semua
instruksi RISC menggunakan pengalamatan register sederhana. Beberapa mode tambahan,
seperti penggantian dan penggantian-PC relative, mungkin termasuk juga. Yang lain, mode
16Reduced Instruction Set Computer
yang lebih rumit dapat dimasukkan didalam software dari yang sederhana. Lagi, rancangan
ini meyederhanakan set instruksi dan unit control.
Karakteristik umum terakhir adalah penggunaan bentuk instruksi sederhana. Secara
umum, hanya satu atau sedikit sekali bentuk digunakan. Panjang instruksi tetap dan diratakan
dengan batasan word. Lokasi bidang, terutama opcode ditetapkan. Rancangan ini mempunyai
sejumlah keuntungan. Dengan bidang tetap, decode opcode dan akses register operand bisa
terjadi secara simultan. Bentuk sederhana menyederhanakan unit control. Instruksi
pengambilan dioptimalkan sebab panjang word telah diambil. Perataan paa batas word juga
berarti instruksi tunggal tidak akan melebihi batas halaman.
Gambar 13.5 dua perbandingan dari pendekatan Register-ke-register dan memori- ke-
memori
Mempertimbangkan bersama, karakteristik-karakteristik ini dapat diakses untuk
menentukan keuntungan-keuntungan potensial dari pendekatan RISC. Keuntungan-
keuntungan ini dapat dikategorikan dalam dua kategori utama : yang berhubungan dengan
kinerja an yang berhubungan dengan implementasi VLSI.
Berkaitan dengan kinerja, suatu jumlah tertentu “circumstantial evidence” dapat
direpresentasikan. Pertama, pengoptimalan kompiler yang lebih efektif dapat dikembangkan.
Dengan instruksi more-primitive, ada kemungkinan besar untuk perpindahan suatu fungsi
keluar dari pengulangan, kode penyusunan ulang untuk efisiensi, memaksimalkan
17Reduced Instruction Set Computer
pemanfaatan register,dsb. Bahkan mungkin untuk menghitung bagian-bagian dari instruksi
kompleks pada waktu kompilasi. Sebagai contoh, S/390 memindahkan karakter (MVC)
instruksi memindahkan suatu string terdiri dari karakter dari suatu lokasi ke yang lainnya.
Setiap kali dieksekusi, perpindahan akan tergantung pada panjang string. Dalam banyak
kasus, ini semua dikenal sebagai waktu kompilasi. Dengan demikian, kompiler dapat
menghasilkan suatu rangkaian optimal dari instruksi primitive untuk fungsi ini.
Hal kedua, yang telah dicatat adalah bahwa kebanyakan instruksi yang dihasilkan oleh
kompiler biasanya sederhana secara relative. Merupakan hal yang masuk akal jika suatu unit
control dibangun terutama untuk instruksi-instruksi itu dan menggunakan sedikit atau bahkan
tanpa kode mikro bisa mengeksekusinya lebih cepat dari suatu CISC sebanding.
Hal ketiga berhubungan dengan penggunaan pipelining instruksi, para peneliti RISC
merasakan bahwa teknik pipelining instruksi dapat diimplementasikan jauh lebih efektif
dengan suatu set instruksi reduced.
Hal terakhir yaitu bahwa prosessor RISC harus lebih responsive ke interupsi. Arsitektur
dengan instruksi kompleks membatasi intrupsi ke batasan-batasan instruksi atau harus dapat
menetukan posisi spesifik yang dapat diinterupsi dan menerapkan mekanisme untuk memulai
lagi suatu instruksi.
Kasus kinerja yang dapat ditingkatkan untuk suatu arsitektur set instruksi reduced
belum terbukti, tetapi masih bisa membuat suatu argumentasi untuk CISC. Sejumlah
penelitian telah dilakukan tetapi tidak menggunakan mesin dari teknologi yang sebanding.
Lebih lanjut, kebanyakan penelitian belum mencoba untuk memisahkan efek set instruksi
reduced dan efek file register besar. ”circumstantial evidence”, bagaimanapun adalah sebagai
usulan.
Masalah kedua dari pemanfaatan potensial, berhubungan dengan implementasi VLSI.
Ketika VLSI digunakan, rancangan dan implementasi dari prosessor akan berubah. Prosessor
tradisional, seperti IBM S/390 dan VAX, terdiri dari satu atau lebih papan rangkaian yang
dicetak (printed circuit board) yang berdasarkan SSI standard dan paket MSI. Dengan
kehadiran LSI dan VLSI, maka sangat mungkin untuk mengemas suatu prosessor secara
keseluruhan dalam suatu chip tunggal. Karena suatu prosessor chip tunggal, terdapat dua
motivasi untuk mengikuti strategi RISC. Pertama, berkaitan dengan kinerja. Waktu tertunda
dalam suatu chip akan jauh lebih pendek dari waktu tuna interchip. Dengan demikian, dapat
dipertimbangkan untuk tetap menggunakan chip tunggal untuk aktivitas-aktivitas yang sering
terjadi. Chip BERKELEY RISC telah diarancang dengan pertimbangan diatas. Sedangkan
18Reduced Instruction Set Computer
suatu proses mikro chip tunggal sekitar separuh areanya digunakan oleh penyimpanan control
kode mikro, RISC I memberikan hanya sekitar 6% areanya kepada unit control [SHER84].
Masalah yang kedua yang berkaitan dengan waktu rancangan dan implementasi. Sebuah
VLSI prosessor sulit untuk berkembang. Sebagai penggantinya SSI/MSI yang tersedia,
perancang harus merancang rancangan sirkuit, penampilan dan pemodelan tingkat perangkat.
Dengan suatu arsitektur set instruksi reduced, proses ini jauh lebih mudah sebagaimana yang
ditunjukkan pada table 13.7 [FITZ81]. Jika sebagai tambahan, kinerja dari chip RISC adalah
setara dengan mikro prosessor CISC, maka keuntungan-keuntungan dari pendekatan RISC
menjadi cukup jelas.
Karakteristik CISC versus RISC
Setelah semangat besar untuk mesin RISC, telah terjadi kejadian-kejadian berikut :
1. Rancangan RISC dapat memperboleh manfaat melalui beberapa fitur CISC2. Rancangan CISC dapat memperboleh manfaat melalui beberapa fitur RISC.
Hasil adalah suatu rancangan RISC baru yaitu power PC, tidak lagi “murni” rancangan
RISC dan CISC yang baru, digunakan dalam PENTIUM II dan model pentiun berikutnya,
memiliki beberapa karakteristik RISC.
Suatu perbandingan yang menarik dalam [MASH95] menyajikan beberapa pengertian
yang mendalam tentang masalah ini. Table 13.8 mengurikan sejumlah prosessor dan
baningkannya dengan sejumlah karakteristik. Untuk tujuan perbandingan ini, berikut
dipertimbangkan beberapa ciri khas dari suatu RISC klasik :
1. Ukuran instruksi tunggal
2. Ukuran itu biasanya 4 byte
3. Sejumlah kecil mode pengalamatan data, biasanya kurang dari lima. Parameter ini
sukar untuk dijelaskan. Dalam table, mode register dan literal tidak terhitung dan
bentuk berbeda dari ukuran offset yang berbeda terhitung secara terpisah.
4. Tidak ada alamat tidak langsung yang memaksa untuk membuat satu akses memori
untuk mendapatkan alamat operand yang lain didalam memori
5. Tidak ada operasi yang mengombinasikanoperasi load/store dengan operasi aritmatika
6. Tidak lebih dari satu operand beralamat memori per instruksi
7. Tidak menukung perataan sembarang tentang data untuk operasi load/store
8. Jummlah maksimum penggunaan Unit Manajemen Memori (MMU) untuk suatu data
adalah suatu instruksi
19Reduced Instruction Set Computer
9. Jumlah bit untuk spesifier register titik mengambang sama dengan empat atau lebih.
Ini berarti bahwa sedikitnya 16 register titik mengambang dapat diacukan secara
eksplisit pada waktu yang sama.
Butir 1 sampai 3 menindikasikan kompleksitas dari decode instruksi, butir 4 sampai 8
menunjukkan kemudahan atau kesukaran pipelining, terutama dengan adanya memori maya.
Materi 9 dan 10 berhubungan dengan kemampuan untuk mengambil keuntungan dari
kompiler.
Dalam tabel, delapan prosessor yang pertama jelas arsitektur RISC. Lima berikutnya
adalah jelas CISC dan dua sisanya adalah prosessor yang seringkali di anggap RISC dan
sebetulnya dia mempunyai banyak karakteristik CISC.
Table 13.8 karakteristik-karakteristik dari beberapa prosessor
E. Pipelining Risc
Pipelining dengan Menggunakan Instruksi Reguler
20Reduced Instruction Set Computer
Seperti yang telah kita bahas dalam subbab 12.4, pipelining instruksi adalah sering
digunakan untuk meningkatkan kinerja. Mari kita mempertimbangkan ulang arsitektur RISC.
Kebanyakan instruksi merupakan register ke register, dan suatu siklus instruksi mempunyai
dua langkah berikut:
I: Mengambil Instruksi
E: Eksekusi. Melakukan suatu operasi ALU dengan masukan dan keluaran register.
untuk operasi load dan store, tiga langkah-langkah diperlukan:
I: Mengambil Instruksi
E: Eksekusi. Menghitung alamat memori
D: Memori. Operasi Register ke memori atau operasi memori ke register.
Gambar 13.6a menggambarkanpewaktuan set instruksitanpamenggunakan pipelining.
Jelasbahwa, iniadalahsuatu proses boros. Bahkan pipelining yang sangat sederhana dapat
meningkatkan kinerja. Gambar 13.6b menunjukkan suatu rancangan pipelining dua tahap,
dimana I dan E langkah-langkah dari dua instruksi yang berbeda yang dieksekusi bersama.
Rancangan dapat menghasilkan eksekusi lebih cepat dua kali lebih dari pada eksekusi
rancangan serial. Dua masalah menghambat mencapai kecepatan maksimum. Pertama, kita
berasumsi bahwa suatu memori port tunggal digunakan dan hanya dapat satu akses memori
langkah. Ini memerlukan waktu tunggu tambahan untuk beberapa instruksi. Kedua, suatu
instruksi pencabangan menginstruksi aliran eksekusi. Untuk mengakomodasi dengan
rangkaian yang minimum, suatu instruksi NOOP dapat disisipkan arus instruksi oleh
compiler atau assembler.
Pipelining dapat ditingkatkan lebih lanjut dengan mengizinkan dua akses memori
perlangkah. Cara ini menghasilkan suatu deretan ditunjukkan dalam gambar 13.6c. Sekarang,
lebih dari 3 instruksi dapat dilaksanakan, dan peningkatan adalah tiga kali. Demikian juga,
instruksi pencabangan menghalangi tercapainya kecepatan maksimum. Juga, perlu dicatat
bahwa ketergantungan data mempunyai suatu efek tertentu juga. Jika suatu instruksi
memerlukan suatu operand yang sudah diubah oleh instruksi sebelumnya, maka suatu
penundaan akan terjadi. Sekali lagi, hal ini dapat diatasi menggunakan NOOP.
Pipelining yang dibahas sejauh ini akan bekerja dengan baik jika ketiga langkah-
langkahnya memiliki waktu yang kira-kira sama. Sebab langkah E pada umumnya
melibatkan suatu operasi ALU, maka langkah ini akan lebih lama. Dalam hal ini, kita dapat
membaginya dalam dua sublangkah:
21Reduced Instruction Set Computer
E1: Membaca file Register.
E2: Operasi ALU dantulis register.
Karena adanya kesederhanaan dan keteraturan set instruksi RISC. Rancangan tiga atau
empat langkah-langkah mudah dilakukan. Gambar 13.6d menunjukkan hasil dengan suatu
pipeline empat tahap. Sampai keempat instruksi dapat berjalan dengan waktu yang sama, dan
peningkatan kecepatan potensi yang maksimum adalah suatu kelipatan 4. Perlu diingat lagi
penggunaan NOOPS untuk mengatasi ketundaan data dan pencabangan.
Optimasi Pipelining
Karena sifat yang regular dan sederhana instruksi RISC, rancangan pipelining dapat
secara efisien dilaksanakan. Ada beberapa variasi dalam waktu eksekusi instruksi, dan
pipeline dapat digunakan dalam hal ini. Bagaimanapun, kita sudah melihat ketergantungan
data dan pencabangan dapat mengurangi kecepatan eksekusi secara keseluruhan.
Untuk mengganti kerugian atas ketergantungan ini, teknik reorganisasi kode telah
dikembangkan. Pertama, mari kita mempertimbangkan pencabangan instruksi. Cabang
tertunda, suatu cara untuk meningkatkan efisiensi pipeline, menggunakakan pencabangan
yang tidak tidak berlaku sampai setelah eksekusi instruksi berikutnya. lokasi instruksi
langsung mengikuti cabang dikenal sebagai slot penunda. Prosedur yg aneh ini dilustratsikan
dalam tabel 13.9 di kolom yang di beri label “cabang normal” kita lihat suatu program
instruksi bahasa mesin simbolik yang normal. Setelah 102 dieksekusi, instruksi berikutnya
yang akan di eksekusi adalah 105. untuk menggunakan pipeline, maka suatu NOOP harus di
22Reduced Instruction Set Computer
sisipkan setelah cabang ini bagaimana pun, peningkatan kinerja dapat tercapai jika instruksi
pada 101 dan 102 ditukarkan.
Gambar 13.7 menunjukkan hasil itu. Gambar 13.7 a menunjukkan pendekatan
pipelining tradisional, dari jenis yang di bahas di bab 12. Instruksi LOMPAT di ambil pada
waktu 3. Pada waktu 4, instruksi LOMPAT dieksekusi pada waktu yang sama instruksi 103
( instruksi TAMBAH) diambil. Karena LOMPAT terjadi, akan membaharui penghitung
program, pipeline harus dibersihkan dari instruksi 103; pada waktu 5, instruksi 105, yaitu
tujuan dari LOMPAT, dimuatkan. Gambar 13.7b menunjukkan penanganan pipeline yang
sama oleh organisasi RISC biasa. Pewaktuan sama. Bagaimana pun, karena adanya
penyisipan instruksi NOOP, kita tidak memerlukan rangkaian khusus untuk
memperbersihkan pipeline; secara sederhana NOOP dieksekusi tanpa efek. Gamabar 13.7c
menunjukkan penggunaan dari cabang tertunda. Instruksi LOMPAT diambil pada waktu 2,
sebelum instruksi TAMBAH, yang mana telah diambil pada waktu 3. Perlu dicatat bahwa,
bagaimanapun, bahwa instruksi TAMBAH diambil sebelum eksekusi instruksi LOMPAT dia
tetap mempunyai kesempatan untuk mengubah perhitungan program. Oleh karena itu, selama
waktu 4, instruksi TAMBAH dieksekusi pada waktu yang sama dengan instruksi 105
diambil. Dengan demikian, semantikatis asli dari program tetap bertahan tetapi ada tambahan
satu siklus detak diperlukan untuk eksekusi.
Pertukaran antara instruksi ini cocok dan sukses untuk cabang tanpa syarat, call dan
return. Untuk cabang bersyarat, prosedur ini tidak bisa di implementasikan begitu saja. Jika
kondisi yang di uji untuk cabang dapat di ubah instruksi sebelumnya, kemudian komplier
harus menahan dahulu agar tidak melakukan tetapi tidak menyisipkan suatu NOOP. Selain
itu, komplier dapat mencari dan menyisipkan suatu instruksi yang berguna setelah cabang.
Pengalaman dari kedua sistem BERKELEY RISC dan sistem IBM 801 bahwa mayoritas dari
instruksi percabangan bersyarat dapat di optimalkan dengan cara ini ({PATT 82A},
{RAD183}).
Suatu taktik yang serupa,yang disebut load tertunda, dapat digunakan instruksi load
( MUAT). Pada instruksi load, register akan menjadi target dari load dikunci prosesor.
Kemudian prosesor melanjutkan eksekusi instruksi sampai menemukan suatu instruksi
membutuhkan register itu, disini prosesor ini akan ideal sampai pemuatan selesai. Jika
komplier dapat menyusun kembali ins truksi sedemikian sehingga pekerjaan yang
bermanfaatan dapat dilakukan pada saat pemuatan berada dalam pipeline, maka efesiensi
dapat di tingkatkan.
23Reduced Instruction Set Computer
Sebagai catatan terakhir kita perlu menujukkan bahwa rancangan pipeline tidak perlu
dialihkan dari bentuk isolasi dari teknik optimalisasi lain yang diterapkan oleh sistem.
Sebagai contoh {BRAD918} menujukkan bahwa penjadwalan instruksi untuk pipeline dan
alokasi dinamis untuk register harus di pertimbangkan bersama – sama untuk efisiensi yang
besar.
F. MIPS R4000
Salah satu keping RICS yang di jual secara komersial dikembangkan pertama kalinya
oleh MIP technology inc. Sistem tersebut diilhami oleh sistem eksperimental yang juga
24Reduced Instruction Set Computer
menggunakan nama MIPS, dan dikembangkan di stanford[HENN84] pada bagian ini kit akan
mempelajari MIP R4000. MIP R4000 pada dasarnya memiliki arsitekturdan set insrtruksi
yang sama dengan rancangan MIP R2000 dan R3000. Perbedaan yang paling jalas adalah
bahwa R4000 menggunakan 64bit dari pada 32 bit untuk semua data internal dan eksternal
dan untuk alamat, register, dan ALU
Dengan menggunakan 64 bit, kita akan mendapatkan lebih banyak keuntungan dari
pada kita menggunakan arsitektur 32 bit. 64 bit memungkinkan tersedianya suatu rung
alamat yang lebih besar atau yang cukup besar untuk sistem operasi agar bisa memetakan
terabyte file-file secara langsung ke dalam memory untuk akses yang mudah. Dengan 1
gigabyte dan disk drive yang lebih besar, ruang alamat 4 gigabyte dari mesin 32 bit menjadi
terbatas. Begitu juga, kapasitas 64-bits memungkinkan R4000 untuk bisa memproses data
seperti IEEE presisi ganda angka-angka titik mengambang dan string karakter pada sutu
tindakan.
Processor keping R4000 di partisi dua bagian, yaitu satu berisi CPU dan yang lain
berisi suatu co-produser untuk manajemen memory. Processor mempunyai arsitektur yang
sangat sederhana. Tujuannya adalah untuk merancang sistem yang logika pelaksana
instruksinya dapat dibuat sesederhana mungkin, dan menyediakan ruang untuk logika agar
dapat meningkatkan kinerja
Processor mendukung 32 regiater 64-bit. Ia juga menyediakan lebih dari 128 kbyte
pada cache yang berkecepatan tinggi, separuhnya untuk instruksi dan data. Cache yang relatif
besar yang memungkinkan sistem untuk dapat menyimpan sebagian besar satuan kode
program dan data lokal ke processor, yang tidak memuatkan memori utama bus dan tidak
membutuhkan file registrasi yang besar
Set instruksi
Tabel 13.10 menampilkan set instruksi dasar untuk semua seri processor MIPS R. Tabel
13.11 menunjukkan instruksi tambahan yang di terapkan pada R4000. Semua instruksi
processor di kodekan pada format word 32-bit tunggal. Semua data operasi merupakan
register ke register, yang merupakan satu-satunya acuan memori yang dimiliki operasi
pemuatan dan penyimpanan yang murni
R4000 tidak menggunkan kode kondisi. Jika suatu instruksi menghasilkan suatu
kondisi flag yang berkaitan dengan itu di simpan pada register untuk tujuan umum hal ini
menghindarkan adanya kebutuhan logika khusus untuk berhubungan dengan kode kondisi
25Reduced Instruction Set Computer
ketika mereka mempengaruhi mekanisme pipelinening dan pengurutan ulang instruksi yang
di lakukan oleh kompiler sebaliknya mekanisme telah di terapkan untuk bisa berhubungan
dengan ketergantungan nilai register yang di gunakan
Lebih lanjut, kondisi-kondisi yang di petakan ke file-file register di kenakan
optimisasi kompiler yang sama dalam alokasi dan penggunaanya kembali sebagai nilai-nilai
lainnya yang tersimpan didalam register.
Sama halnya sebagian besar mesin berbasis RICR lainnya, MIPS menggunakan
panjang instruksi 32 bit tunggal. Panjangnya instruksi tunggal ini menyederhanakan
pengambilan instruksi dengan unit manajemen virtual memori. Ketiga format instruksi
memiliki format opcode dan acuan register yang sama, yang akan memudahkan decode
instruksi pengaruh dari dekode instruksi yang lebih kompleks dapat di atasi pada saat waktu
kompilasi.
Hanya mode pengalamatan memori yang paling sederhana dan paling sering di pakai
akan diimplementasikan pada hardware. Semua acuan memori terdiri dari offest16-bit dari
suatu register 32-bit. Contohnya, instruksi ‘muatkan word’ adalah berbentukIw r2, 128 (r3) muatkan word pada alamat offest 128 dari register 3 ke register 2
Masing-masing register tujuan umum 32-bit dapat di gunakan sebagai register basis. Satu
register yaitu r0, selaluu beris 0
Kompiler menggunakan instruksi mesin yang berjumlah banyak untuk mensintensa
mode-mode pengelamatan yang umum dalam mesin-mesin konvensional, beberapa instruksi
di tunjukkan pada tabel 13.12 [CHOW87]. Tabel tersebut menjelaskan penggunaan instruksi
LUI. Instruksi ini memuatkan separuh bagian atas suatu register dengan sebuah nilai segera
16-bit yang akan mengatur separuh bagian bahwa register menjadi nol.
Pipeline Instruksi
Dengan arsitektur yang telah di sederhanakan, MIPS akan dapat memperoleh pipelining yang
sangat efisien. Akan sangat bermanfaat apabila meninjau evolusi pipeline MIPS seperti
halnya penjelasan evolusi pipelining RISC secara umum.
Sistem RISC percobaan yang paling awal dan generasi pertama processor RISC
komersial memiliki kecepatan eksekusi yang mendekati satu instruksi per siklus waktu
sistem. Untuk meningkatkan kinerja ini, dua kelas processor di gunakan supaya
memungkinkan terjadinya eksekusi sejumlah instruksi per siklus waktu. Kedua kelas
26Reduced Instruction Set Computer
processor tersebut adalah arsitektur super skalar dan super pipelined. Pada dasarnya arsitektur
superskalar menirukan setiap tahapan pipe line sehingga satu atau dua instruksi yang berada
pada tahap pipe line yang sama dapat di proses secara bersamaan. Arsitektur superpipelined
merupakan suatu arsitektur yang memakai tahapan pipeline lebih banyak dan lebih halus.
Dengan tahapan yang lebih banyak, maka instruksi dalam pipeline pada saat yang bersamaan
akan lebih banyak yang akan meningkatkan paralelisme.
Kedua pendekatan di atas mempunyai kelemahan. Pada pipelining superskalar, saling
ketergantungan antara instruksi dalam dua buah pipeline yang berbeda akan menghambat
sistem. Begitu juga overhead logika yang akan diperlukan untuk mengkoordinasikan saling
ketergantungan ini. Pada super pipelining, terdapat over head yang berkaitan dengan
pemindahan instruksi dari suatu tahap ke tahap berikutnya.
Bab 14 akan di fokuskan untuk membahas arsitektur superskalar MIPS R4000
merupakan satu contoh terbaik dari arsitektur super pipeline berbasis RISC.
Gambar 13.9a menunjukkan pipeline instruksi R3000. Pada R3000, pipeline
ditingkatkan sekali setiap siklus waktunya. Kompiler MIPS mampu mengurutkan kembali
instruksi-instruksi untuk mengisi slot-slot tunda dengan kode 70-90 persen waktu. Semua
instruksi membuat urutan lima tahapan pipeline yang sama;
Pengambilan instruksi Pengambilan operand sumber dari file regiter Operasi ALU atau pembuatan alamat operand data Acuan memori data Penulisan kembali ke file register
G. SPARC
SPARC (Arsitektur prosesor yang dapat diukur) mengacu pada arsitektur yang
digambarkan oleh perusahaan Sun Microsistems. Perusahaan ini mengembangkan
implementasi SPARCnya sendiri tetapi juga melisensi arsitektur ke penjual lain untuk
memproduksi mesin SPARC yang cocok. Arsitektur SPARC diilhami oleh mesin
BERKELEY RISC I, dan set instruksinya serta organisasi register tang didasarkan pada
model BERKELEY RISC.
Set Register SPARC
Sama halnya dengan Berkeley RISC, SPARC juga menggunakan jendela register.
Masing-masing jendela terdiri dari 24 register, dan total junlah jendela merupakan
ketergantungan implementasi dan berkisar antara 2 sampai 32 jendela. Tampilan jendela
27Reduced Instruction Set Computer
register SPARC dengan tiga prosedur menggambarkan sebuah implementasi yang memiliki 8
jendela, dengan menggunakan register fisik sebanyak 136 register fisik; seperti yang telah
didiskusikan pada subbab 13.2 yang tampaknya merupakan jumlah layak untuk jendela.
Register fisik dari 0 sampai 7 merupakan register global yang digunakan bersama-sama.
Oleh semua prosedur, setiap proses melihat register logik dari 0 hingga 31. Register
logikal dari 24 sampai 31, dikenal sebagai masukan, digunakan bersama dengan prosedur
pemanggilan (induk); dan register logika dari 8 sampai 15, dikenal sebagai keluaran,
digunakan bersama dengan prosedur manapun (anak). Kedua porsi ini saling mempengaruhi
atau tumpang tindih dengan jendela lainnya. Disamping itu, seperti pada pembahasan dalam
subbab 12.1, ketersediaan 8 register untuk parameter harus mencukupi (misalnya, lihat tabel
13.4).
Gambar 16.2 adalah gambaran lain dari tumapng tindih register. Prosedur
pemanggilan menempatkan parameter manapun untuk dilewati pada register keluarnya;
prosedur yang dipanggil memperlukan register fisik yang sama ini sebagai register dalamnya.
Prosesor memelihara penunjuk arus jendela (CWP), yang ditempatkan pada register status
prosesor (PSR), yang mengarah pada jendela dari prosedur eksekusi yang terbaru, mask
jendela tidak valid (WIM), juga ada pada PSR, menandai adanya jendela yang tidak valid.
Dengan arsitektur register SPARC, biasanya kita tidak perlu untuk menyimpan dan memuat
kembali register untuk panggilan prosedur. Komplier dipermudah karena komplier dapat
diperhatikan dengan mengalokasi register lokal untuk sebuah prosedur yang efisien dan tidak
memerlukan alokasi register pada prosedur-prosedurnya.
Gambar 16.2 Delapan Jendela Register yang Membentuk Tumpukan Melingkar pada SPARC
28Reduced Instruction Set Computer
Set Instruksi
Tabel set instruksi untuk SPARC menunjukkan instruksi-instruksi untuk arsitektur
SPARC. Sebagian besar dari acuan instruksi hanya meregisterkan operand. Instruksi register-
ke-register mempunyai tiga operand dan dapat dilihat pada format tersebut.
Rd Rs1 op S2
Rd dan Rs1 merupakan acuan register; S2 dapat mengacu ke sebuah register atau ke
operand yang dekat. Register nol (R0) merupakan hardwired dengan nilai 0. Format ini sangat
sesuai untuk program tertentu, yang mempunyai proporsi tinggi dari skalar dan konstan lokal.
Operasi ALU yang tersedia dapat dikelompokkan sebagai berikut :
Penambahan integer (dengan atau tanpa pembawa)
Pengurangan integer (dengan atau tanpa pembawa)
Bitwise Boolean AND, OR, XOR dan negasi mereka
Menggeser logikal kiri, kanan atau aritmatika kanan
Semua intruksi ini, kecuali pergeseran, dapat secara bebas menetapkan empat kode
kondisi (NOL, NEGATIF, OVERFLOW, MEMBAWA). Bilangan bulat bertanda diwakili
pada bentuk komplement dua sebesar 32-bit.
29Reduced Instruction Set Computer
Hanya instruksi pemuatan dan penyimpanan yang sederhana yang mereferensi
memori. Ada beberapa instruksi penyimpanan dan pemuatan yang terpisah untuk word (32
bit), word ganda, word setengah, dan byte. Untuk dua kasus terakhir, ada beberapa instruksi
yang digunakan untuk memuatkan jumlah tersebut sebagai bilangan-bilangan bertanda atau
yang tidak bertanda. Bilangan-bilangan bertanda merupakan tanda yang diperluas untuk
mengisi register tujuan 32-bit. Bilangan-bilangan yang tidak bertanda diisio dengan bilangan
nol.
Satu-satunya mode pengalamatan yang tersedia, selain dari register, merupakan mode
pemindahan. Yang berarti bahwa alamat operand pemindahan yang efektif dari sebuah alamat
berisi sebuah register :
EA = (Rs1) + S2 atau EA = (Rs1) + (Rs2)
Yang tergantung pada apakah operand yang kedua merupakan yang segera atau merupakan
acuan register. Untuk menampilkan pemuatan atau penyimpanan, sebuah langkah ekstra
ditambahkan ke siklus instruksi. Selama tahap yang kedua, alamat memori dihitung dengan
menggunakan ALU; pemuatan atau penyimpanan terjadi pada tahap ketiga. Mode
pengalamatan tunggal ini serbaguna dan dapat digunakan untuk mensintesa mode
pengalamatan lainnya, seperti yang telah ditunjukkan pada table penyatuan mode
pengalamatan lain dengan mode pengalamatan SPARC.
Penting untuk membandingkan kemampuan pengalamatan SPARC dengan MIPS.
MIPS menggunakan 16-bit offset, yang dibandingkan dengan 13-bit offset SPARC. Dilain
pihak, MIPS tidak mengizinkan suatu alamat dibangun dari muatan dua register.
Format Instruksi
Sama halnya dengan MIPS R4000, SPARC juga menggunakan set format instruksi
sederhana 32-bit. Semua instruksi dimulai dengan opcode 2-bit. Untuk sebagian besar
instruksi, format instruksi ini diperluas dengan opcode bit tambahan yang ditempatkan pada
tempat lain di format. Untuk instruksi panggilan, suatu operand 30-bit yang dekat diperluas
dengan dua nol bit ke sebelah kanan untuk membentuk alamat PC relatif 32-bit pada bentuk
komplemen dua. Instruksi diurutkan pada batas 32-bit sehingga format instruksi membentuk
pengalamatan yang mencukupi.
Instruksi percabangan meliputi bidang kondisi 4 bit yang sesuai dengan empat standar
kondisi kode bit, sehingga kombinasi dari kondis-kondisi apa pun dapat diuji. Alamat PC
relative 22-bit diperluas dengan dua bit nol di sebelah kanan untuk membentuk dua alamat
30Reduced Instruction Set Computer
komplemen 24-bit yang relatif. Sebuiah ciri yang tidak lazim dari instruksi percabangan
adalah bit yang batal. Pada waktu bit yang batal adalah bukan set, instruksi setelah
percabangan selalu dieksekusi, tidak peduli apakah percabangan diambil atau tidak. Ini
merupakan operasi percabangan tertentu yang ditemukan pada kebanyakan mesin RISC.
Bagaimanapun, ketika bit yang batal adalah set, instruksi yang mengikuti percabangan
dieksekusi hanya jika percabangan dilaksanakan. Prosesor menekan efek dari instruksi
walaupun ia telah berada pada pipeline. Bit yang batal ini bermanfaat karena mempermudah
komplier untuk mengisi penundaan slot yang mengikuti percabangan bersyarat. Instruksi
yang menjadi target dari percabangan dapat selalu diletakkan pada slot penundaan, karena
apabila percabangan tidak dilaksanakan, maka instruksi bisa dibatalkan. Alasan mengapa
teknik ini diharapkan adalah karena percabangan bersyarat pada umunya diambil lebih dari
separuh waktunya.
31Reduced Instruction Set Computer
Tabel Set Instruksi Untuk SPARC
OP Penjelasan
Instruksi Memuatkan/Menyimpan
LDSB Byte memuatkan bertanda
LDSH Memuatkan setengah word bertanda
LDUB Memuatkan yang byte tidak bertanda
LDUH Memuatkan setengah word yang tidak bertanda
LD Muatkan word
LDD Muatkan word ganda
STB Simpan byte
STH Simpan setengah word
STD Simpan word
STDD Simpan word ganda
Geser Instruksi
SLL Geser logikal ke kiri
SRL Geser logikal ke kanan
SRA Geser aritmatika ke kanan
Instruksi Boolean
AND AND
ANDCC AND, set icc
ANDN NAND
ANDNCC NAND, set icc
OR OR
ORCC OR, set icc
ORN NOR
ORNCC NOR, set icc
XOR XOR
XORCC XOR, set icc
XNOR NOR yang eksklusif
XNORCC NOR yang eksklusif, set icc
32Reduced Instruction Set Computer
Instruksi Aritmatika
SUB Kurang
SUBX Mengurangi dengan pembawa
SUBXCC Mengurangi dengan pembawa, set icc
MULSCC Langkah mengalikan, set icc
Instruksi Lompatan/Percabangan
BCC Percabangan pada kondisi
FBCC Percabangan pada kondisi titik-mengambang
CBCC Percabangan pada kondisi coprosesor
CALL Panggil prosedur
JMPL Lompat dan hubungkan
TCC Trap pada kondisi
SAVE Jendela register lanjut
RESTORE Pindahkan jendela kebelakang
RETT Kembali dari trap
Bermacam- macam Instruksi
SETHI Set tinggi sebesar 22 bit
UNIMP Instruksi yang tidak diterapkan
RD Membaca register khusus
WR Menulis register khusus
IFLUSH Flush instruksi cache
33Reduced Instruction Set Computer