RISC dan CISC
Perbedaan RISC dengan CISC dilihat
dari segi instruksinya
Sudah sering kita mendengar debat
yang cukup menarik antara komputer personal IBM dan kompatibelnya yang berlabel
Intel Inside dengan komputer Apple yang berlabel PowerPC. Perbedaan utama
antara kedua komputer itu ada pada tipe prosesor yang digunakannya. Prosesor
PowerPC dari Motorola yang menjadi otak utama komputer Apple Macintosh
dipercaya sebagai prosesor RISC, sedangkan Pentium buatan Intel diyakini
sebagai prosesor CISC. Kenyataannya komputer personal yang berbasis Intel
Pentium saat ini adalah komputer personal yang paling banyak populasinya.
Tetapi tidak bisa pungkiri juga bahwa komputer yang berbasis RISC seperti
Macintosh, SUN adalah komputer yang handal dengan sistem pipelining, superscalar,
operasi floating point dan sebagainya.
Apakah memang RISC lebih lebih baik
dari CISC atau sebaliknya. Tetapi tahukah kita dimana sebenarnya letak
perbedaan itu. Apakah prosesor dengan instruksi yang lebih sedikit akan lebih
baik dari prosesor yang instruksinya kompleks dan lengkap. Apakah memang
perbedaan prosesor itu hanya dari banyak atau tidaknya instruksi saja. Bukankah
jumlah instruksi tidak berhubungan dengan ke-handal-an suatu prosesor.
Pertanyaan-pertanyaan ini yang hendak dijawab melalui tulisan berikut. Namun
supaya lebih dekat dengan elektronika praktis, ElectronicLab akan lebih
fokus pada mikrokontroler low-cost yang berbasis RISC dan CISC. Sebagai
contoh dari mikrokontroler CISC adalah 68HC11 buatan Motorola dan 80C51
dari Intel. Kita juga mengenal keluarga PIC12/16CXX dari Microchip dan COP8
buatan National Semiconductor sebagai mikrokontroler yang berbasis RISC.
CISC adalah singkatan dari Complex Intruction Set Computer
dimana prosesor tersebut memiliki set instruksi yang kompleks dan lengkap.
Sedangkan RISC adalah singkatan dari Reduced Instruction Set
Computer yang artinya prosesor tersebut memiliki set instruksi program
yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang
kompleks atau sederhana (reduced), maka mari kita bahas sedikit tentang
intruksi itu sendiri.
Sistem mikrokontroler selalu terdiri
dari perangkat keras (hardware) dan perangkat lunak (software).
Perangkat lunak ini merupakan deretan perintah atau instruksi yang dijalankan
oleh prosesor secara sekuensial. Instruksi itu sendiri sebenarnya adalah
bit-bit logik 1 atau 0 (biner) yang ada di memori program. Angka-angka biner
ini jika lebarnya 8 bit disebut byte dan jika 16 bit disebut word. Deretan
logik biner inilah yang dibaca oleh prosesor sebagai perintah atau instruksi.
Supaya lebih singkat, angka biner itu biasanya direpresentasikan dengan
bilangan hexa (HEX). Tetapi bagi manusia, menulis program dengan angka biner
atau hexa sungguh merepotkan. Sehingga dibuatlah bahasa assembler yang
direpresentasikan dengan penyingkatan kata-kata yang cukup dimengerti oleh
manusia.
Bahasa assembler ini biasanya
diambil dari bahasa Inggris dan presentasinya itu disebut dengan Mnemonic.
Masing-masing pabrik mikroprosesor melengkapi chip buatannya
dengan set instruksi yang akan dipakai untuk membuat program.
Biner Hexa Mnemonic
10110110
B6 LDAA …
10010111
97 STAA …
01001010
4A DECA …
10001010
8A ORAA …
00100110
26 BNE …
00000001
01 NOP…
01111110
7E JMP …
Sebagian set instruksi 68HC11
Pada awalnya, instruksi yang
tersedia amat sederhana dan sedikit. Kemudian desainer mikroprosesor
berlomba-lomba untuk melengkapi set instruksi itu selengkap-lengkapnya. Jumlah
instruksi itu berkembang seiring dengan perkembangan desain mikroprosesor yang
semakin lengkap dengan mode pengalamatan yang bermacam-macam. Mikroprosesor
lalu memiliki banyak instruksi manipulasi bit dan seterusnya dilengkapi dengan
instruksi-instruksi aritmatik seperti penjumlahan, pengurangan, perkalian
dan pembagian. Seperti contohnya 68HC11 banyak sekali memiliki set instruksi
untuk percabangan seperti BNE, BLO, BLS, BMI, BRCLR, BRSET dan sebagainya.
Perancang mikroprosesor juga
memperkaya ragam instruksi tersebut dengan membuat satu instruksi tunggal
untuk program yang biasanya dijalankan dengan beberapa intruksi. Misalnya pada
80C51 untuk contoh program berikut ini.
LABEL …
…
DEC R0
MOV A,R0
JNZ LABEL
Program ‘decrement’ 80C51
Program ini adalah program
pengulangan yang mengurangi isi register R0 sampai register R0 menjadi kosong
(nol). Intel menambah set instruksinya dengan membuat satu instruksi khusus
untuk keperluan seperti ini :
LABEL ….
DJNZ R0,LABEL
Instruksi ‘decrement jump not
zero’ 80C51
Kedua contoh program ini hasilnya
tidak berbeda. Namun demikian, instruksi kompleks seperti DJNZ mempermudah
pembuat program. Set instruksi yang lengkap diharapkan akan semakin membuat
pengguna mikroprosesor leluasa menulis program dalam bahasa assembler
yang mendekati bahasa pemrograman level tinggi. Intel 80C51 yang
dikembangkan dari basis prosesor 8048 dirilis pada tahun 1976 memiliki
tidak kurang dari 111 instruksi. Tidak ketinggalan, 68HC11 dari Motorola yang
populer di tahun 1984 dilengkapi dengan 145 instruksi. Karena banyak dan kompleksnya
instruksi yang dimiliki 68HC11 dan 80C51, kedua contoh mikrokontroler ini
disebut sebagai prosesor CISC.
Debat CISC versus RISC
dimulai ketika pada tahun 1974 IBM mengembangkan prosesor 801 RISC. Argumen
yang dipakai waktu itu adalah mengapa diperlukan instruksi yang kompleks. Sebab
pada prinsipnya, instruksi yang kompleks bisa dikerjakan oleh
instruksi-instruksi yang lebih sederhana dan kecil. Ketika itu penggunaan
bahasa tingkat tinggi seperti Fortran dan kompiler lain (compiler/interpreter)
mulai berkembang. Apalagi saat ini compiler seperti C/C++ sudah lazim
digunakan. Sehingga sebenarnya tidaklah diperlukan instruksi yang kompleks di
tingkat prosesor. Kompiler yang akan bekerja men-terjemahkan program dari
bahasa tingkat tinggi menjadi bahasa mesin.
Untuk melihat bagaimana perbedaan
instruksi RISC dan CISC, mari kita lihat bagaimana keduanya melakukan perkalian
misalnya c = a x b. Mikrokontroler 68HC11 melakukannya dengan program
sebagai berikut :
LDAA #$5
LDAB #$10
MUL
Program 5×10 dengan 68HC11
Cukup tiga baris saja dan setelah
ini accumulator D pada 68HC11 akan berisi hasil perkalian dari accumulator A
dan B, yakni 5 x 10 = 50. Program yang sama dengan PIC16CXX, adalah seperti
berikut ini.
MOVLW 0×10
MOVWF Reg1
MOVLW 0×05
MOVWF Reg2
CLRW
LOOP ADDWF Reg1,0
CFSZ
Reg2,1
GOTO LOOP
…
…
Program 5×10 dengan PIC16CXX
Prosesor PIC16CXX yang RISC ini,
tidak memiliki instruksi perkalian yang khusus. Tetapi perkalian 5×10 itu sama
saja dengan penjumlahan nilai 10 sebanyak 5 kali. Kelihatannya membuat program
assembly dengan prosesor RISC menjadi lebih kompleks dibandingkan dengan
prosesor CISC. Tetapi perlu diingat, untuk membuat instruksi yang kompleks
seperti instruksi MUL dan instruksi lain yang rumit pada prosesor CISC,
diperlukan hardware yang kompleks juga. Dibutuhkan ribuan gerbang logik
(logic gates) transistor untuk membuat prosesor yang demikian. Instruksi
yang kompleks juga membutuhkan jumlah siklus mesin (machine cycle) yang
lebih panjang untuk dapat menyelesaikan eksekusinya. Instruksi perkalian MUL
pada 68HC11 memerlukan 10 siklus mesin dan instruksi pembagiannya memerlukan 41
siklus mesin.
Pendukung RISC berkesimpulan, bahwa
prosesor yang tidak rumit akan semakin cepat dan handal. Hampir semua instruksi
prosesor RISC adalah instruksi dasar (belum tentu sederhana), sehingga
instruksi-instruksi ini umumnya hanya memerlukan 1 siklus mesin untuk
menjalankannya. Kecuali instruksi percabangan yang membutuhkan 2 siklus mesin.
RISC biasanya dibuat dengan arsitektur Harvard, karena arsitektur ini yang
memungkinkan untuk membuat eksekusi instruksi selesai dikerjakan dalam
satu atau dua siklus mesin.
Sebagai perbandingan jumlah
instruksi pada prosesor RISC, COP8 hanya dilengkapi dengan 58 instruksi
dan PIC12/16CXX hanya memiliki 33 instruksi saja. Untuk merealisasikan
instruksi dasar yang jumlah tidak banyak ini, mikroprosesor RISC tidak
memerlukan gerbang logik yang banyak. Karena itu dimensi dice IC dan
konsumsi daya prosesor RISC umumnya lebih kecil dibanding prosesor CISC. Bukan
karena kebetulan, keluarga mikrokontroler PICXX banyak yang dirilis ke pasar
dengan ukuran mini. Misalnya PIC12C508 adalah mikrokontroler DIP 8 pin.
CISC dan RISC perbedaannya tidak
signifikan jika hanya dilihat dari terminologi set instruksinya yang kompleks
atau tidak (reduced). Lebih dari itu, RISC dan CISC berbeda dalam
filosofi arsitekturnya. Filosofi arsitektur CISC adalah memindahkan kerumitan software
ke dalam hardware. Teknologi pembuatan IC saat ini memungkinkan untuk
menamam ribuan bahkan jutaan transistor di dalam satu dice.
Bermacam-macam instruksi yang mendekati bahasa pemrogram tingkat tinggi dapat
dibuat dengan tujuan untuk memudahkan programmer membuat programnya.
Beberapa prosesor CISC umumnya memiliki microcode berupa firmware
internal di dalam chip-nya yang berguna untuk menterjemahkan instruksi
makro. Mekanisme ini bisa memperlambat eksekusi instruksi, namun efektif untuk
membuat instruksi-instruksi yang kompleks. Untuk aplikasi-aplikasi tertentu
yang membutuhkan singlechip komputer, prosesor CISC bisa menjadi
pilihan.
Sebaliknya, filosofi arsitektur RISC
adalah arsitektur prosesor yang tidak rumit dengan membatasi jumlah instruksi
hanya pada instruksi dasar yang diperlukan saja. Kerumitan membuat program
dalam bahasa mesin diatasi dengan membuat bahasa program tingkat tinggi dan compiler
yang sesuai. Karena tidak rumit, teorinya mikroprosesor RISC adalah
mikroprosesor yang low-cost dalam arti yang sebenarnya. Namun demikian,
kelebihan ruang pada prosesor RISC dimanfaatkan untuk membuat sistem-sistem
tambahan yang ada pada prosesor modern saat ini. Banyak prosesor RISC yang di
dalam chip-nya dilengkapi dengan sistem superscalar, pipelining,
caches memory, register-register dan sebagainya, yang tujuannya untuk
membuat prosesor itu menjadi semakin cepat.
0 Response to "RISC dan CISC"
Posting Komentar