
Redused Instruktion set computers (RISC), RISC singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk negeset istruksi dalam komunikasi diantara arsitektur yang lainnya.
Proyek RISC pertama dibuat oleh IBM, stanford dan UC –Berkeley pada akhir tahun 70 dan awal tahun 80an. IBM 801, Stanford MIPS, dan Barkeley RISC 1 dan 2 dibuat dengan konsep yang sama sehingga dikenal sebagai RISC. RISC mempunyai karakteristik :one cycle execution time: satu putaran eksekusi. Prosessor RISC mempunyai CPI (clock per instruction) atau waktu per instruksi untuk setiap putaran. Hal ini dimaksud untuk mengoptimalkan setiap instruksi pada CPU.Arsitectur RISC merupakan kemajuan yang dramatis dalam frase sejarah arsitektur CPU dan merupakan tantangan bagi arsitektur konvensional.Walaupun system RISC telah ditentukan dan dirancang dalam berbagai cara berdasarkan kelompok-kelompoknya, elemen penting yang digunakan oleh sebagian rancangan (tidak semuanya )adalah sebagai berikut:
1.Set instruksi yang terbatas dan sederhana.
2.Register general purpose yang berjumlah banyak,atau penggunaan teknologi compiler untuk mengoptimalkan pemakaian register.
3.Penekanan pada pengoptimalkan pipeline instruksi.
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 dua siklus mesin.RISC biasanya dibuat dengan arsitektur Harward,karena arsitektur ini yang memungkinkan untuk membuat eksekusi instruksiselesai dikerjakan dalam satu atau dua siklus mesin
Hasil-hasil penelitian secara umum dapat dinyatakan bahwa terdapat tiga buah elemen yang menentukan karakter arsitektur RISC.Pertama,penggunaan register dalam jumlah yang besar, hal ini dimaksudkan untuk mengoptimalkan pereferensian operand. Menyatakan bahwa terdapat beberapa referensi per instruksi HLL,dan terdapat pemindahan(Assigment)statement dalam porsi yang besar.hal ini bersama-sama dengan lokalitas dan besarnya refrensi scalar,menyatakan bahwa kinerja dapat ditingkatkan denga cara mengurangi referensi memori dengan risiko diperlukannya referensi register yang lebih banyak.Kedua diperlukan perhatian bagi perancangan pipeline instruksi .karena tingginya pipeline instruksipercabangan bersyarat dan procedure call,pipeline instruksi yang bersifat langsung dan ringkas akan menjadi tidak efisien.hal ini menggambarkan terjadinya proporsi yang tinggi instruksi yang di-prefech namun tidak pernah dieksekusi ketiga trdpat sel instruksi yang disederhanakan (dikurangi ).teknologi RISC relative sangat baru dan karena itu saat ini tidak terjadi perdebatan dalam menggunakan RISC atau CISC.
CISC adalah singkatan dan Complex instruction Set Computer dimana prosesor tersebut memiliki set instruksi yang komplek dan lengkap.sedangkan RISC adalh singkatan dari Reduced Instruktion Set Computer yang artinya prosesor tersebut memiliki set instruksi yang komplek atau sedehana(reduced).
Tugas pembuat compiler adalah menghasilkan rangkaian instruksi mesin bagi pernyataan HLL,apabila instruksi mesin yang menyerupai pernyataan HLL,maka tugas ini akan disederhanakan.instruksi mesin yang kompleks sering kali sulit digunakan karena compiler harus menemukan kasus-kasus yang sesuai dengan konsepnya pekerjaan mengoptimalkan kode yang dihasilkan untuk meminimalkan ukuran kode,mengurangi hitungan eksekusi instruksi dan meningkatkan pipelining jauh lebih sulit apabila menggunakan complek instruction set.harapan bahwa CISC akan menghasilkan program yang lebih kecil dan lebih cepat.
Terdapat dua keuntunagn yang diperoleh dari program berukuran kecil pertama karena program membutuhkan memori yang lebih sedikit maka akan menghemat sumber daya.dengan semakin murahnya harga memori saat ini,keuntungan tersebut tidak dapat dijadikan alasan lagi.Program yang lebih kecil akan meningkatkan kinerja,dan peningkatan kinerja dapat terjadi dalam dua hal pertama,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.
Program CISC yang diekspresikan dalam bahasa mesin simbolik akan lebih pendek(yaitu instruksinya lebih sedikit),namun jumlah bit yang menempati tidaklah kecil.
Pipelining
Pipelining instruksi digunakan untuk menigkatkan kinerja .sebagian instruksi merupakan operasi register ke register dan sebuah siklus instruksi memiliki dua buah fase :
I:Instruktion Fetch(pengambilan instruksi)
E:Execute,menghitung alamat memori
D:Memory,operasi register ke memori atau memori ke register.pipelining yang sangat sederhanapun dapat meningkatkan kinerja.,teknik pipelining dua arah,dengan fase 1 dan fase E dua buah instruksi yang berlainan dapat dilakukan scara bersamaan teknik ini dapat menghasilkan smpai dua kali waktu kecepatan eksekusi teknik serial.timbul dua masalah yang menghambat tercapainya percepatan maksimum pertama kita mengasumsikan bahwa digunakan sebuah memori single port dan hanya sebuah akses memori yang diizinkan pada setiap fasenya.hal ini mengharuskan penambahan status menunggu didalam sejumlah instruksi.,kedua,instruksi percabangan menginterupsi aliran rangkaian instruksi.untuk melakukan hal tersebut dengan memakai sirkuit yang sederhana,maka sebuah instruksi NOOP dapat ditambahkan ke dalam aliran instruksi oleh compiler atau assembler.
Pipelining dapat ditingkatkan lebih lanjut dengan cara mengizinkan dua buah akses memori tiap fasenya. sekarang dapat ditumpukan hingga tiga buah instruksi dan peningkatannya akan mencapai tiga kali.,instruksi percabangan dapat menghambat percepatan sehinggs kecepatan yang terjadi akan kurang dari kecepatan maksimum ,selain itu dependensi data memiliki efek-efek tertentu.Pipelining dapat bekerja dengan baik apabila ketiga fasenya memiliki durasi yang hampir sama. Karena sederhananya instruksi RISC ,maka pipelining dapat digunakan dengan efisien,terdapat beberapa macam durasi eksekusi instruksi,dan pipeline dapat digunakan untuk menggambarkan perbedaan tersebut..namun dependensi data dapat mengurangi kecepatan eksekusi keseluruhan.
Cache Memori
Cache dapat melakukan pemakaian ruang yang lebih efisien. karena cache bereaksi terhadap situsi secara dinamis..selain itu,umumnya cache memperlakukan seluruh referensi memori secara sama, termasuk instruksi dan data jenis lainnya.sehingga penghematan dalam bidang lainnya dapat dimungkinkan apabila menggunakan cache dan bukan file register.file register dapat tidak efesien dalam menggunakan ruang karena tidak semua procedure akan memerlukan ruang jendela sepenuhnya yang telah diberikan .sebaliknya cache memiliki ketidakefisien lainnya:Data akan dibaca kedalam cache dalam bentuk blok-blok.sementara register hanya berisi variable-variable yang sedang digunakan,cache membaca suatu blok data, yang mungkin sebagian darinya akan digunakan .
Cache memiliki kemampuan untuk menangani variabel global dan juga variabel local.umumnya terdapat scalar-skalar global,namun hanya beberapa skalar saja yang akan banyak digunakan.sebuah cache akan secara dinamis akan menemukan variabel-variabel ini dan kemudian akan menyimpannya.Apabila file register berbasis jendela di ditambahkan dengan register-register global,maka cache akan dapat juga menampung sejumalh scalar global.namun compiler akan mengalami kesulitan untuk menentukan skalar global yang mana akan banyak dipakai.
Salah satu jenis dari asitektur,dimana Superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalam bentuk pararel.
Mesin yang dirancang untuk meningkatkan kinerja eksekusi instruksi-instruksi scalar.superskalar sangat bertolak belakang dengan vector prosessor.pada sebagian aplikasi,operasi merupakan kuantitas skalar,karena itu pendekatan superscalar merepresentasikan langkah berikutnya dalam evolusi prosesor-prosesor general purpose berkinerja tinggi.pendekatan superscalar tergantung pada kemampuan eksekusi sejumlah instruksi secara pararel,masalah pararelisme tingkat instruksi berkaitan dengan rata-rata tingkatan instruksi suatu program yang dapat di eksekusi dalam waktu yang bersamaan .kombinasi antara optimasi berbasis compiler dan teknik-teknik perangkat keras dapat digunakan untuk memaksimalkan pararelisme tingkat instruksi .
Teknik perangkat keras yang digunakan pada prosesor superskalar untuk meningkatkan kinerja:
Duplikasi sumber daya,issue out of order dan penamaan kembali.mungkin tidak akan berguna untuk menambahkan unit-unit fungsional dengan tanpa menggunakan penamaan kembali register.terdapat sedikit peningkatan kinerja namun dengan risiko terjadi peningkatan kompleksitas perangkat keras.dengan penamaan kembali register yang akan menghilangkan anti ketergantuagan dan ketergantungan output,peningkatan kinerja yang cukup besar dapat diperoleh dengan melakukan penambahan unit fungsional.perbedaan yang besarnya peningkatan yang diperoleh antara dengan menggunakan jendela instruksi 8 dan dengan menggunakan jendela instruksi yang lebih besar.hal ini menandakan bahwa apabila jendela instruksi terlalu kecil maka ketergantunga data akan menghambat utilisasi unit-unit fungsional ekstra:prosesor harus mampu meramalkan terlebih dahulu lebih jauh untuk menemukan instruksi independent agar dapat melakukan utilisasi perangkat keras lebih banyak.
Dengan semakin berkembangnya mesin-mesin RISC,strategi percabangan berdelay telah di teliti lebih lanjut.hal ini memungkinkan prosesor menghitung hasil instruksi percabangan bersyarat sebelum melakukan instruksi-instruksi yang tidak berguna.dengan semakin berkembangnya mesin-mesin superscalar,strategi percabangan berdelay menjadi kurang menarik.alasanya sejumlah instruksi perlu di eksekusi pada slot delay, yang menimbulkan sejumlah masalah yang berkaitan denagn ketergantungan instruksidengan demikian mesin-mesin superscalar kembali menggunakan teknik prediksi percabangan pre-RISC.Merupakan salah satu ancangan untuk meningkatkan kecepatan CPU.kebanyakan dari computer saat ini menggunakan mekanisme superscalar ini.standar pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer(bilangan bulat,bilangan yang tidak memiliki pecahan),kebanyakan CPU juga memiliki kemampuan untuk menggunakan data floating point.pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini,namun untuk aplikasi tertentu,terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan untuk pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis.peristiwa menarik yang bias dilakukan dengan metoda superskalarf ini adalah dalam hal memperkirakan percabangan instruksi serta perkiraan eksekusi perintah peristiwa ini sangat menguntungkan buat progam yang membutuhkan percabangan dari kelompok instruksi yang dijalankannya.
Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach precditio) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya.
Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman. Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan.
Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada.
Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut.
Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut data-datanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya..
Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut.
Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan branch prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut.
Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. Beberapa CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.


