Risc, Pipe Lining dan Cisc
RISC
·
Sejarah
Reduced
Instruction Set Computing (RISC) atau "Komputasi set instruksi yang
disederhanakan" pertama kali digagas oleh John Cocke, peneliti dari IBM di
Yorktown, New York pada tahun 1974 saat ia membuktikan bahwa sekitar 20%
instruksi pada sebuah prosesor ternyata menangani sekitar 80% dari keseluruhan
kerjanya. Komputer pertama yang menggunakan konsep RISC ini adalah IBM PC/XT
pada era 1980-an. Istilah RISC sendiri pertama kali dipopulerkan oleh David
Patterson, pengajar pada University of California di Berkely.
·
Definisi
RISC,
yang jika diterjemahkan berarti "Komputasi Kumpulan Instruksi yang
Disederhanakan", merupakan sebuah arsitektur komputer atau arsitektur
komputasi modern dengan instruksi-instruksi dan jenis eksekusi yang paling
sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi,
seperti komputer vektor. Selain digunakan dalam komputer vektor, desain ini
juga diimplementasikan pada prosesor komputer lain, seperti pada beberapa
mikroprosesor Intel 960, Itanium (IA64) dari Intel Corporation, Alpha AXP dari
DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari
International Business Machine. Selain itu, RISC juga umum dipakai pada
Advanced RISC Machine (ARM) dan StrongARM (termasuk di antaranya adalah Intel
XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dari
Hewlett-Packard.
·
Ciri-ciri
1. Instruksi
berukuran tunggal
2. Ukuran
yang umum adalah 4 byte
3. Jumlah
pengalamatan data sedikit, biasanya kurang dari 5 buah.
4. Tidak
terdapat pengalamatan tak langsung yang mengharuskan melakukan sebuah akses
memori agar memperoleh alamat operand lainnya dalam memori.
5. Tidak
terdapat operasi yang menggabungkan operasi load/store dengan operasi
aritmatika, seperti penambahan ke memori dan penambahan dari 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 manajemen bagi suatu alamat data adalah sebuah
instruksi .
9. Jumlah
bit bagi integer register spesifier sama dengan 5 atau lebih, artinya
sedikitnya 32 buah register integer dapat direferensikan sekaligus secara
eksplisit.
10. Jumlah
bit floating point register spesifier sama dengan 4 atau lebih, artinya
sedikitnya 16 register floating point dapat direferensikan sekaligus secara
eksplisit.
·
Karakteristik
1. Siklus
mesin ditentukan oleh waktu yang digunakan untuk mengambil dua buah operand
dari register, melakukan operasi ALU, dan menyimpan hasil operasinya kedalam
register, dengan demikian instruksi mesin RISC tidak boleh lebih kompleks dan
harus dapat mengeksekusi secepat mikroinstruksi pada mesin-mesin CISC. Dengan
menggunakan instruksi sederhana atau instruksi satu siklus hanya dibutuhkan
satu mikrokode atau tidak sama sekali, instruksi mesin dapat dihardwired.
Instruksi seperti itu akan dieksekusi lebih cepat dibanding yang sejenis pada
yang lain karena tidak perlu mengakses penyimapanan kontrol mikroprogram saat
eksekusi instruksi berlangsung.
2. Operasi
berbentuk dari register-ke register yang hanya terdiri dari operasi load dan
store yang mengakses memori . Fitur rancangan ini menyederhanakan set instruksi
sehingga menyederhanakan pula unit control. Keuntungan lainnya memungkinkan
optimasi pemakaian register sehingga operand yang sering diakses akan tetap ada
di penyimpan berkecepatan tinggi. Penekanan pada operasi register ke register
merupakan hal yang unik bagi perancangan RISC.
3. Penggunaan
mode pengalamatan sederhana, hampir sama dengan instruksi menggunakan
pengalamatan register,. Beberapa mode tambahan seperti pergeseran dan
pe-relatif dapat dimasukkan selain itu banyak mode kompleks dapat disintesis
pada perangkat lunak dibanding yang sederhana, selain dapat menyederhanakan sel
instruksi dan unit kontrol.
4. Penggunaan
format-format instruksi sederhana, panjang instruksinya tetap dan disesuaikan
dengan panjang word. Fitur ini memiliki beberapa kelebihan karena dengan
menggunakan field yang tetap pendekodean opcode dan pengaksesan operand
register dapat dilakukan secara bersama-sama.
·
Kelemahan
Kelemahan utama
dari RISC ialah humlah intruksi yang sedikit. Hal ini mengakibatkan untuk
melakukan suatu tugas akan dibutuhkan instruksi yang lebih banyak bila
dibandingkan CISC. Hasilnya ialah jumlah ukuran program akan lebih besar bila
dibandingkan CISC. Penggunaan memori akan semakin meningkat dan lalu lintas
instruksi antara CPU dan memori akan meningkat pula.
·
Kelebihan
1. Berkaitan
dengan penyederhanaan kompiler, dimana tugas pembuat kompiler untuk
menghasilkan rangkaian instruksi mesin bagi semua pernyataan HLL. Instruksi
mesin yang kompleks seringkali sulit digunakan karena kompiler 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 mudah apabila menggunakan RISC dibanding
menggunakan CISC.
2. Arsitektur
RISC yang mendasari PowerPC memiliki kecenderungan lebih menekankan pada
referensi register dibanding referensi memori, dan referensi register memerlukan
bit yang lebih sedikit sehingga memiliki akses eksekusi instruksi lebih cepat.
3. Kecenderungan
operasi register ke register akan lebih menyederhanakan set instruksi dan
menyederhanakan unit kontrol serta pengoptimasian register akan menyebabkan operand-operand
yang sering diakses akan tetap berada dipenyimpan berkecepatan tinggi.
4. Penggunaan
mode pengalamatan dan format instruksi yang lebih sederhana.
Pengertian Pipeline
Pemrosesan pipeline dalam suatu komputer diperoleh
dengan membagi suatu fungsi yang akan dijalankan menjadi beberapa subfungsi
yang lebih kecil dan merancang perangkat keras yang terpisah, disebut sebagai
tingkatan (stage), untuk setiap subfungsi. Stage-stage itu kemudian dihubungkan
bersama-sama dan membentuk sebuah pipeline tunggal (atau pipe) untuk
menjalankan fungsi asli tersebut.
1. Sejajarkan mantissa-mantissa yang ada
2. tambahkan mantissa-mantissa tersebut
3. Normalisasikan hasilnya
Keuntungan proses penambahan secara pipeline ini
adalah bahwa dua input yang baru dapat dimulai melalui pipa tersebut segera
sesudah dua input sebelumnya melewati stage 2. Hal ini berarti bahwa jumlah
penambahan akan tersedia dengan kecepatan yang sama dengan kecapatan input.
Secara sistematis sekumpulan angka floating-point akan bergerak melalui penambah
(adder) pipeline yang sederhana pada saat pasangan pertama angka-angka itu
dihasilkan oleh stage 3 maka pasangan kedua telah disejajarkan dan ditambahkan
dan hanya perlu dinormalisir pada stage 3. Dengan menggunakan pipeline, jumlah
selisih waktu antara hasil pertama dan kedua merupakan jumlah waktu yang
diperlukan untuk menormalisir sebuah angka.Tanpa suatu pipeline, waktu antara
hasil-hasil tersebut merupakan waktu kumulatif yang diperlukan untuk semua
ketiga subfungsi tersebut.
·
Sinkronisasi Pada Pipeline
Meskipun kita dapat memisahkan suatu fungsi menjadi
beberapa subfungsi dengan waktu proses yang relatif sama, perbedaan logika dari
stiap stage akan menyukarkan kita untuk menghasilkan waktu proses yang sama
pada setiap stage. Untuk menyamakan waktu yang diperlukan pada setiap stage
maka stage-stage tersebut harus disinkronisasikan. Hal ini bisa dilakukan
dengan menyisipkan kunci-kunci (latch) sederhana (register cepat), antara
stage-stage tersebut.latch, masing-masing pada bagian pipe paling awal dan satu
lagi pada bagian paling akhir untuk memaksa input yang sinkron dan memastikan
output yang sinkron.
Waktu yang diperlukan untuk lewat dari suatu latch
melalui stage ke latch berikutnya disebut sebagaipenangguhan clock (clock
delay) dan diperlihatkan pada gambar dibawah ini. Karena hanya ada satu
keseragaman penangguhan clock untuk seluruh pipeline maka latch disinkronkan
sesuai dengan waktu proses maksimum pada masing-masing stage individual dalam
pipeline tersebut.
·
Klasifikasi Pipeline
Pipeline dapat dikelompokkan menrut fungsi dan
konfigurasinya. Secara fungsional, mereka diklasifikasikan menjadi tiga
kelompok pokok yaitu: pipelineing aritmatika, instruksi dan prosesor. Pipeline
menurut konfigurasi dan strtegi kendalinya: unifungsi atau multifungsi; statis
atau dinamis; skalar atau vektor.
·
Klasifikasi Berdasarkan Fungsi
Pipelining aritmatika. Proses segmentasi dari ALU dari
sistem yang muncul dalam kategori ini. Suatu contoh daari fungsi pipeline
aritmatika diberikan dalam bagian contoh pipeline multifungsi.
Pipelining instruksi.Dalam suatu komputer nonpipeline,
CPU bekerja melalui suatu siklus yang berkesinambungan dari
fetch-decode-eksekusi untuk semua instruksinya. Proses fetch suatu instruksi
tidak akan dimulai sampai eksekusi instruksi sebelumnya selesai. Untuk
mem-pipeline fungsi ini, instruksi-instruksi yang berdampingan di fetch dari
memori ketika instruksi yang sebelumnya di-decode dan dijalankan. Proses
pipelining instruksi, disebut juga instruction lihat-ke-muka (look-ahead), mem-fetch
instruksi secara berurutan. Dengan demikian, jika suatu instruksi menyebabkan
percabganan keluar dari urutan itu maka pipe akan dikosongkan dari seluruh
instruksi yang telah di-fetch sebelumnya dan instruksi percabangan (branched-to
instruction) tersebut di-fetch. Pipelining prosesor. Sewaktu stage dari suatu
pipeline merupakan prosesor aktual dan latch-latch saling berbagi memori antara
prosesor-prosesor tersebut maka pipeline itu disebut sebagai pipeline prosesor.
·
Permasalahan di (dalam)
Instruksi Pipelining
a. VARIASI
WAKTU:
Tidak semua tahap memakan waktu yang
sama. Ini berarti untuk mendapatkan kecepatan dalam intruksi pipelining sangat
ditentukan oleh tahap yang paling lambat. Masalah ini sangat akut dalam
memproses instruksi, sejak instruksi yang berbeda memiliki persyaratan
operand waktu proses yang berbeda.
Selain itu, diperlukan mekanisme sinkronisasi untuk memastikan bahwa data lewat
dari stage ke stage hanya ketika kedua stage siap.
b. DATA
BERBAHAYA (DATA HAZARDS):
Ketika beberapa instruksi di eksekusi
secara parsial, masalah timbul jika mereka referensi data yang sama. Kita harus
memastikan bahwa instruksi selanjutnya tidak berusaha untuk mengakses data
lebih cepat dari instruksi sebelumnya, jika ini terjadi akan menyebabkan hasil
yang salah. Sebagai contoh, instruksi N +1 tidak harus diperbolehkan untuk
mengambil sebuah operand yang belum disimpan oleh instruksi N.
c. PERCABANGAN
(BRANCH):
untuk mengambil instruksi berikutnya, kita harus tahu mana
saja yang dibutuhkan, Jika instruksi ini adalah cabang bersyarat (conditional
branch) instruksi berikutnya mungkin tidak diketahui sampai saat diproses.
d. JEDA(INTERUPTSI):
interupsi membuat instruksi extra yang
tidak terencana untuk masuk kedalam aliran intruksi. jeda(Interrupt) harus berperan antar instruksi.
yaitu, ketika satu instruksi telah selesai dan berikutnya belum dimulai. Dengan
pipelining, instruksi berikutnya biasanya dimulai sebelum yang sekarang telah
selesai. Semua masalah ini harus diselesaikan dalam konteks kebutuhan kita
untuk mendaatkan kinerja dengan kecepatan tinggi. Jika kita tidak dapat
mencapai kecepatan yang cukup, pipelining mungkin tidak sepadan.
·
Keuntungan dan Kerugian
Pipelining tidak membantu dalam semua
kasus. Ada beberapa kemungkinan kerugian. Pipa instruksi dikatakan sepenuhnya
pipelined jika dapat menerima instruksi baru setiap clock cycle. Sebuah pipa
yang tidak sepenuhnya pipelined telah menunggu siklus yang menunda kemajuan
pipa.
·
Keuntungan dari
Pipelining:
a) Waktu
siklus prosesor berkurang, sehingga meningkatkan tingkat instruksi dalam kebanyakan kasus( lebih cepat
selesai).
b) Beberapa combinational sirkuit seperti
penambah atau pengganda dapat dibuat lebih cepat dengan menambahkan lebih
banyak sirkuit. Jika pipelining digunakan sebagai pengganti, hal itu dapat
menghemat sirkuit & combinational yang lebih kompleks.
c) Pemrosesan
dapat dilakukan lebih cepat, dikarenakan beberapa proses dilakukan secara
bersamaan dalam satu waktu.
·
Kekurangan Pipelining:
1.
Pipelined prosesor menjalankan beberapa instruksi pada
satu waktu. Jika ada beberapa cabang yang mengalami penundaan cabang (penundaan
memproses data) dan akibatnya proses yang dilakukan cenderung lebih lama.
2.
Instruksi latency di non-pipelined prosesor sedikit
lebih rendah daripada dalam pipelined setara. Hal ini disebabkan oleh fakta
bahwa intruksi ekstra harus ditambahkan ke jalur data dari prosesor pipeline.
3.
Kinerja prosesor di pipeline jauh lebih sulit untuk
meramalkan dan dapat bervariasi lebih luas di antara program yang berbeda.
4.
Karena beberapa instruksi diproses secara bersamaan
ada kemungkinan instruksi tersebut sama-sama memerlukan resource yang sama,
sehingga diperlukan adanya pengaturan yang tepat agar proses tetap berjalan
dengan benar.
5.
Sedangkan ketergantungan terhadap data, bisa muncul,
misalnya instruksi yang berurutan memerlukan data dari instruksi yang
sebelumnya.
6.
Kasus Jump, juga perlu perhatian, karena ketika sebuah
instruksi meminta untuk melompat ke suatu lokasi memori tertentu, akan terjadi
perubahan program counter, sedangkan instruksi yang sedang berada dalam salah
satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya
perubahan program counter.
·
PROSEDUR VEKTOR
PIPELINING.
Disini yang dimaksud dengan prosedur
vektor pipelining yaitu :
·
Mengambil instruksi dan
membuffferkannya.
·
Ketika tahapn kedua bebas tahapan pertama
mengirimkan instruksi yang dibufferkan tersebut.
·
Pada saat tahapan kedua sedang mengeksekusi
instruksi, tahapan pertama memanfaatkan siklus memori yang tidak dipakai untuk
mengambil dan membuffferkan instruksi berikutnya.
·
Tiga kesulitan yang sering dihadapi ketika menggunakan
teknik pipeline :
· Terjadinya penggunaan resource yang
bersamaan
· Ketergantungan terhadap data
· Pengaturan Jump ke suatu lokasi memori
CISC
Selain
RISC, desain Central Processing Unit yang lain adalah CISC (Complex Instruction
Set Computing), yang jika diterjemahkan ke dalam Bahasa Indonesia berarti
Komputasi Kumpulan Instruksi yang kompleks atau rumit.
·
Definisi
Complex
instruction-set computing atau Complex Instruction-Set Computer (CISC;
“Kumpulan instruksi komputasi kompleks”) adalah sebuah arsitektur dari set
instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat
rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke
dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik
CISC dapat dikatakan bertolak-belakang dengan RISC. Sebelum proses RISC
didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani
celah semantik”, yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah
pemrograman level tinggi dengan menyediakan instruksi “level tinggi” seperti
pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks
sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah
instruksi. Karakteristik CISC yg “sarat informasi” ini memberikan keuntungan di
mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil,
dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya
pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat.
·
Sejarah
Sebelum
proses RISC didesain untuk pertama kalinya,
banyak arsitek
komputer mencoba menjembatani celah semantik", yaitu bagaimana cara
itil membuat set-set instruksi untuk mempermudah pemrograman level tinggi
dengan menyediakan instruksi "level tinggi" seperti pemanggilan
procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga
struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi.
Karakteristik CISC yg "sarat informasi" ini memberikan keuntungan di
mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan
penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan
komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat. Memang setelah
itu banyak desain yang memberikan hasil yang lebih baik dengan biaya yang lebih
rendah, dan juga mengakibatkan pemrograman level tinggi menjadi lebih
sederhana, tetapi pada kenyataannya tidaklah selalu demikian. Contohnya,
arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan
kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan
berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi
dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan
procedure), tetapi dengan menggunakan urutan instruksi yang sederhana. Satu
alasan mengenai hal ini adalah karena set-set instruksi level-tinggi, yang
sering disandikan (untuk kode-kode yang kompleks), akan menjadi cukup sulit
untuk diterjemahkan kembali dan dijalankan secara efektif dengan jumlah
transistor yang terbatas. Oleh karena itu arsitektur-arsitektur ini memerlukan
penanganan yang lebih terfokus pada desain prosesor. Pada saat itu di mana
jumlah transistor cukup
terbatas, mengakibatkan semakin sempitnya peluang ditemukannya cara-cara
alternatif untuk optimisasi perkembangan prosesor. Oleh karena itulah,
pemikiran untuk menggunakan desain RISC muncul pada pertengahan tahun 1970
(Pusat Penelitian Watson IBM 801 - IBMs). Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat
perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC.
Implementasi CISC paralel untuk pertama kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh
prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat
digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC,
tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor
modern x86 juga telah menyandikan dan membagi lebih banyak lagi
instruksi-instruksi kompleks menjadi beberapa "operasi-mikro"
internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut dapat
dilakukan secara paralel, sehingga mencapai performansi tinggi pada subset
instruksi yang lebih besar.
·
Tujuan
Tujuan utama dari arsitektur CISC adalah
melaksanakan suatu instruksi cukup dengan beberapa baris bahasa mesin yang
relatif pendek sehingga implikasinya hanya sedikit saja RAM yang digunakan
untuk menyimpan instruksi-instruksi tersebut. Arsitektur CISC menekankan pada
perangkat keras karena filosofi dari arsitektur CISC yaitu bagaimana
memindahkan kerumitan perangkat lunak ke dalam perangkat keras.
·
Ciri-ciri
1. Jumlah
instruksi banyak
2. Banyak
terdapat perintah bahasa mesin
3. Instruksi
lebih kompleks
·
Karakteristik
1. Sarat
informasi memberikan keuntungan di mana ukuran program-program yang dihasilkan
akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang.
Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi
jauh lebih hemat.
2. Dimaksudkan untuk meminimumkan jumlah perintah
yang diperlukan untuk mengerjakan pekerjaan yang diberikan. (Jumlah perintah
sedikit tetapi rumit) Konsep CISC menjadikan mesin mudah untuk diprogram dalam
bahasa rakitan.
·
Kelemahan
1. Kompleksitas
CPU : desain unit kontrol menjadi kompleks karena mempunyai set intruksi yang
besar.
2. Ukuran
Sistem dan Biaya : mempunyai banyak sirkuit hardware menyebabkan CPU menjadi
kompleks. Hal ini meningkatkan biaya hardware pada sistem dan juga kebutuhan
daya listrik.
3. Kecepatan
Clock : karena sirkuit yang besar maka propagation delay ( tunda propagasi )
lebih besar dan karena waktu siklus CPU yang besar sehingga kecepatan clock
efektif menurun.
4. Keandalan
: dengan hardware yang besar maka cenderung mudah terjadi kegagalan.
5. Mantainability
: Troubleshooting dan pendeteksian suatu kegagalan mengakibatkan pekerjaan
menjadi besar karena besarnya sirkuit yang ada. Penemuan microprogramming
membantu menurunkan beban tersebut.
·
Kelebihan
Konsep ini
menyulitkan dalam penyusunan compiler bahasa pemrograman tingkat tinggi. Dalam
CISC banyak terdapat perintah bahasa mesin.

PERBEDAAN RISC - CISC
Komentar
Posting Komentar