Thursday, August 29, 2013

RISC, CISC & SUPERSCALAR


1. RISC (Reduced Instruction Set Computing)

Disingkat dengan RISC. Rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang lebih ringkas dibandingkan dengan CISC. RISC memiliki keunggulan dalam hal kecepatannya sehingga banyak digunakan untuk aplikasi-aplikasi yang memerlukan kalkulasi secara intensif. Konsep RISC pertama kali dikembangkan oleh IBM pada era 1970-an. Komputer pertama yang menggunakan RISC adalah komputer mini IBM 807 yang diperkenalkan pada tahun 1980. Dewasa ini, RISC digunakan pada keluarga processor buatan Motorola (PowerPC) dan SUN Microsystems (Sparc, UltraSparc).

 RISC dikembangkan melalui seorang penelitinya yang bernama John Cocke, beliau menyampaikan bahwa sebenarnya kekhasan dari komputer tidaklah menggunakan banyak instruksi, namun yang dimilikinya adalah instruksi yang kompleks yang dilakukan melalui rangkaian sirkuit.

Pada desain chip mikroprosesor jenis ini, pemroses diharapkan dapat melaksanakan perintah-perintah yang dijalankannya secara cepat dan efisien melalui penyediaan himpunan instruksi yang jumlahnya relatif sedikit, dengan mengambil perintah-perintah yang sangat sederhana, akibatnya arsitektur RISC membatasi jumlah instruksinya yang dipasang ke dalam mikroprosesor tetapi mengoptimasi setiap instruksi sehingga dapat dilaksanakan dengan cepat.

Dengan demikian instruksi yang sederhana dapat dilaksanakan lebih cepat apabila dibandingkan dengan mikroprosesor yang dirancang untuk menangan susunan instruksi yang lebih luas.

Dengan demikian chip RISC hanya dapat memproses instruksi dalam jumlah terbatas, tetapi instruksi ini dioptimalkan sehingga cepat dieksekusi. Meski demikian, bila harus menangani tugas yang kompleks, instruksi harus dibagi menjadi banyak kode mesin, terutama sebelum chip RISC dapat menanganinya. Karena keterbatasan jumlah instruksi yang ada padanya, apabila terjadi kesalahan dalam pemrosesan akan memudahkan dalam melacak kesalahan tersebut.

Pada tahun 1980-an kapasitas modul memori meningkat dan harganya turun. Penekanan pada desain CPU bergeser ke kinerja, dan RISC menjadi trend baru. Contoh arsitektur RISC meliputi SPARC dari Sun Microsystems; seri MIPS Rxxxx dari MIPS Technologies; Alpha dari Digital Equipment; PowerPC yang dikembangkan bersama oleh IBM dan Motorola; dan RISC dari Hewlett-Packard.

Chip RISC menggunakan sejumlah kecil instruksi dengan panjang-sama yang relatif sederhana, yaitu panjangnya selalu 32 bit. Walaupun hal ini memboroskan memori karena harus dibuat program lebih besar, instruksi lebih mudah dan cepat dieksekusi.

Karena chip ini berurusan dengan jenis instruksi lebih sedikit, chip RISC membutuhkan lebih sedikit transistor ketimbang chip CISC dan umumnya berkinerja lebih tinggi pada kecepatan clock yang sama, walaupun chip ini harus mengeksekusi lebih banyak instruksi lebih pendek untuk menyelesaikan sebuah fungsi.

Kesederhanaan RISC juga mempermudah merancang prosesor superscalar - chip yang dapat mengeksekusi lebih dari satu instruksi pada satu saat. Hampir semua prosesor RISC dan CISC modern adalah superscalar; tetapi untuk mencapai kemampuan ini membuat desain lebih rumit.

Kebalikan dari arsitektur chip mikrprosesor dari RISC adalah CISC (baca ”sisk”, yang merupakan singkatan dari complex instruction set computing, dimana mikroprosesor memiliki lebih banyak instruksi yang terdapat di dalamnya.



2. CISC (Complex Instruction Set Computing)

            Complex Instruction Set Computing disingkat CISC (baca : “sisk”) merupakan rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang kompleks. Instruksi-instruksi yang tersedia bertujuan untuk memudahkan para programmer untuk mengembangkan aplikasi untuk plattform CISC.

Pada arsitektur CISC seperti Intel x86, yang diperkenalkan pada tahun 1978, bisa terdapat ratusan instruksi program - perintah-perintah sederhana yang menyuruh sistem menambah angka, menyimpan nilai, dan menampilkan hasilnya. Bila semua instruksi panjangnya sama, instruksi sederhana akan memboroskan memori. Instruksi sederhana membutuhkan ruang penyimpanan 8 bit, sementara instruksi yang paling kompleks mengkonsumsi sebanyak 120 bit. Sehingga hal tersebut akan mengurangi kecepatannya.

Arsitektur berbasis CISC juga memungkinkan para perancang prosesor untuk menambahkan set instruksi tambahan untuk keperluan tertentu disamping set instruksi standar yang sudah ada, misalnya set instruksi MMX (Multimedia Extension) yang ditambahkan pada prosesor buatan Intel, dan 3Dnow! pada prosesor keluaran AMD. Karena itulah maka keluarga prosesor CISC lebih banyak digunakan dalam komputer pribadi dimana aplikasinya lebih luas, sementara keluarga prosesor RISC hanya digunakan pada workstation yang biasanya memiliki lingkup aplikasi yang lebih sempit.

Diantara kelebihan dan kekurangan dari arsitektur RISC dan arsitektur CISC sampai sekarang masih menjadi sebuah perdebatan. Ada juga teknologi yang menggabungkan kedua arsitektur tersebut, contohnya : Prosesor Intel dan AMD yang dijual secara komersil sekarang adalah pengembangan dari prosesor x86 yang menggunakan basis prosesor CISC. Lucunya, instruksi set yang didukung oleh kedua prosesor tersebut menggunakan instruksi RISC yang lebih efisien dalam menangani data.



3. SUPERSCALAR

Salah satu jenis dari arsitektur, dimana superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm bentuk paralel.

Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer 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 pengolahan untuk data floating point (bilangan berkoma). 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 pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis.

Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) 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.


tabel
Tabel Perbandingan

Processor Structure and Function

PROLOGUE


        Struktur komputer didefinisikan sebagai cara-cara dari tiap komponen saling terkait satu dengan yang lain. Sedangkan fungsi komputer didefinisikan sebagai operasi masing-masing komponen sebagai bagian dari struktur. 

Adapun fungsi komponen-komponen dalam struktur di atas adalah sebagai berikut :


 

1. Input Device (Alat Masukan)
Adalah perangkat keras komputer yang berfungsi sebagai alat untuk memasukan data atau perintah ke dalam komputer.


2. Output Device (Alat Keluaran)
Adalah perangkat keras komputer yang berfungsi untuk menampilkan keluaran sebagai hasil pengolahan data. Keluaran dapat berupa hard-copy (ke kertas), soft-copy (ke monitor), ataupun berupa suara.


3. I/O Ports
Bagian ini digunakan untuk menerima ataupun mengirim data ke luar sistem. Peralatan input dan output diatas terhubung melalui port ini.


4. CPU (Central Processing Unit)
CPU merupakan otak sistem komputer, dan memiliki dua bagian fungsi operasional, yaitu ALU (Arithmetical Logical Unit) sebagai pusat pengolah data, dan CU (Control Unit) sebagai pengontrol kerja komputer.


5. Memori
Memori terbagi menjadi dua bagian yaitu memori internal dan memori external. Memori internal berupa RAM (Random Accese Memory) yang berfungsi untuk menyimpan program yang kita olah untuk sementara waktu, dan ROM (Read Only Memory) yaitu memori yang hanya bisa dibaca dan berguna sebagai penyedia informasi pada saat komputer pada saat dinyalakan.


6. Data Bus
Adalah jalur-jalur perpindahan data antar modul dalam sistem komputer. Karena pada suatu saat tertentu masing-masing saluran hanya dapat membawah 1 bit data, maka jumlah saluran menetukan jumlah bit yang dapat ditransfer pada suatu saat. Lebar data bus ini menetukan kinerja sistem secara keseluruhan. Sifatnya bldirectional, artinya CPU dapat membaca dan menerima data melalui data bus ini. Data bus biasanya terdiri atas 8, 16, 32, atau 64 paralel.


7. Address Bus
Digunakan untuk menandakan lokasi sumber ataupun tujuan pada proses transfer data. Pada jalur ini, CPU akan mengirimkan alamat memori yang akan ditulis atau dibaca. Address bus biasanya terdiri atas 16, 20, 24, atau 32 jalur paralel.


8. Control Bus
Control Bus digunakan untuk mengontrol penggunaan serta akses ke Data Bus dan Address Bus. terdiri dari 4 sampai 10 jalur paralel.  






Struktur Utama Central Processing Unit

CPU merupakan komponen terpenting dari sistem komputer. CPU adalah komponen pengolah data berdasarkan instruksi – instruksi yang diberikan kepadanya. Dalam mewujudkan fungsi dan tugasnya, CPU tersusun atas beberapa komponen sebagai bagian dari struktur CPU.


CPU tersusun atas beberapa komponen, yaitu :

Arithmetic and Logic Unit
  • Bertugas membentuk fungsi-fungsi pengolahan data komputer.
  • Arithmetic Logic Unit sering disebut dengan bahasa mesin (machine language) karena bagian ini mengerkjakan instruksi-instruksi bahasa mesin yang diberikan kepadanya.
  • Arithmetic Logic Unit terdiri dari dua bagian yaitu unit arithmetic dan unit logika Boolean yang masing-masing memiliki spesifikasi tugas tersendiri.

Control Unit [CU]
  • Bertugas mengontrol operasi CPU dan secara keseluruhan mengontrol komputer sehingga terjadi sinkronisasi kerja antar komponen dalam menjalankan fungsi-fungsi operasinya.
  • Termasuk dalam tanggung jawab unit kontrol adalah mengambil instruksi-intstruksi dari memori utama dan menentukan jenis instruksi tersebut.

Registers [Top Level Memory]
  • Media penyimpanan internal CPU yang digunakan saat proses pengolahan data.
  • Memori ini bersifat sementara, biasanya digunakan untuk CPU Interconnections 
  • Sistem koneksi dan bus yang menghubungkan komponen internal dan bus-bus eksternal CPU.
  • Komponen internal CPU yaitu ALU, unit kontrol dan register-register.
  • Komponen eksternal CPU : sistem lainnya, seperti memori utama, piranti masukan dan keluaran.

    Detail CPU





Komponen Internal Central Processing Unit [CPU]


Fungsi CPU           
  • Menjalankan program-program yang disimpan dalam memori utama dengan cara mengambil instruksi-instruksi, menguji instruksi tersebut dan mengeksekusinya satu persatu sesuai alur perintah.
  • Pandangan paling sederhana proses eksekusi program adalah dengan mengambil pengolahan instruksi yang terdiri dari dua langkah, yaitu : operasi pembacaan instruksi (fetch) dan operasi pelaksanaan instruksi (execute).
Siklus Instruksi


Terdiri dari siklus fetch dan siklus eksekusi
                       
Siklus Fetch – Eksekusi
  • Pada setiap siklus instruksi, CPU awalnya akan membaca instruksi dari memori.
  • Terdapat register dalam CPU yang berfungsi mengawasi dan menghitung instruksi selanjutnya, yang disebut dengan Program Counter (PC).
  • PC akan menambah satu hitungannya setiap kali CPU membaca instruksi.
  • Instruksi-instruksi yang dibaca akan dibuat dalam register instruksi (IR).
  • Instruksi-instruksi ini dalam bentuk kode-kode biner yang dapat di interprestasikan oleh CPU kemudian dilakukan aksi yang diperlukan.

Aksi CPU
  • CPU – Memori, perpindahan data dari CPU ke memori dan sebaliknya.
  • CPU – I/O, perpindahan data dari CPU ke modul I/O dan sebaliknya.
  • Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika terhadap data.
  • Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi pengubahan urusan eksekusi.

Siklus Eksekusi
  • Instruction Address Calculation (IAC), yaitu mengkalkulasikan atau menentukan alamat instruksi berikutnya yang akan dieksekusi.
  • Instruction Fetch (IF), yaitu membaca atau mengambil instruksi dari lokasi memorinya ke CPU.
  • Instruction Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan jenis operasi yang akan dibentuk dan operand yang akan digunakan.
  • Operator Address Calculation (OAC), yaitu menentukan alamat operand, hal ini dilakukan apabila melibatkan referensi operand pada memori.
  • Operand Fetch (OF), mengambil operand dari memori atau dari modul I/O.
  • Data Operation (DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.
  • Operand Store (OS), yaitu menyimpan hasil eksekusi ke dalam memori.

Fungsi Interupsi
  • Mekanisme penghentian atau pengalihan pengolahan instruksi dalam CPU kepada routine interupsi.
  • Hampir semua modul (memori dan I/O) memiliki mekanisme yang dapat menginterupsi kerja CPU.

Tujuan Interupsi
  • Secara umum untuk manajemen pengeksekusian routine instruksi agar efektif dan efisien antar CPU dan modul-modul I/O maupun memori.
  • Setiap komponen computer dapat menjalankan tugasnya secara bersamaan, tetapi kendali terletak pada CPU disamping itu kecepatan eksekusi masing-masing modul berbeda.
  • Dapat sebagai sinkronisasi kerja antar modul


Kelas Sinyal Interupsi
  • Program, yaitu interupsi yang dibangkitkan dengan beberapa kondisi yang terjadi pada hasil eksekusi program. Contohnya : aritmatika overflow, pembagian nol, operasi ilegal.
  • Timer, adalah interupsi yang dibangkitkan perwaktuan dalam processor. Sinyal ini memungkinkan sistem operasi menjalankan fungsi tertentu secara reguler.
  • I/O, sinyal interupsi yang dibangkitkan oleh modul I/O sehubungan pemberitahuan kondisi error dan penyelesaian suatu operasi.
  • Hardware failure, adalah interupsi yang dibangkitkan oleh kegagalan daya atau kesalahan paritas memori.

Proses Interupsi
  • Dengan adanya mekanisme interupsi, prosesor dapat digunakan untuk mengeksekusi instruksi-instruksi lain.
  • Saat suatu modul telah selesai menjalankan tugasnya dan siap menerima tugas berikutnya, maka modul ini akan mengirimkan permintaan interupsi ke prosesor.
  • Kemudian prosesor akan menghentikan eksekusi yang dijalankannya untuk menghandle routine interupsi.
  • Setelah program interupsi selesai, maka prosesor akan melanjutkan eksekusi programnya.
  • Saat sinyal interupsi diterima prosesor ada dua kemungkinan tindakan, yaitu interupsi diterima/ditolak dan interupsi ditolak.

Interupsi ditangguhkan
Apa yang dilakukan prosesor?
  • Prosesor menangguhkan eksekusi program yang dijalankan dan menyimpan konteksnya. Tindakan ini adalah menyimpan kalamat instruksi berikutnya yang akan dieksekusi dan data lain yang relevan
  • Prosesor menyetel program counter (PC) ke alamat awal routine interrupt handler.
Sistem Operasi Kompleks
  • Interupsi Ganda (multiple interrupt)
Misalnya suatu komputer akan menerima permintaan interupsi saat proses pencetakan dengan printer selesai, disamping itu dimungkinkan dari saluran komunikasi akan mengirimkan permintaan interupsi setiap kali data tiba.
  • Dapat diambil dua buah pendekatan untuk menangani interupsi ganda ini.

Pendekatan Interupsi Ganda
Ada dua pendekatan :
  • Pendekatan ini disebut pengolahan interupsi berurutan/sekuensial.
  • Menolak atau tidak mengizinkan interupsi lain saat suatu interupsi ditangani prosesor.
  • Setelah prosesor selesai menangani suatu interupsi maka interupsi lain baru ditangani.
  • Pengolahan interupsi bersarang yaitu mendefinisikan prioritas bagi interupsi.
  • Interrupt handler mengizinkan interupsi berprioritas lebih tinggi ditangani terlebih dahulu.

 


Instruction cycle (Instruksi Siklus)


Sebuah siklus instruksi (kadang disebut mengambil-dan-execute siklus, mengambil-decode-execute siklus, atau FDX) adalah siklus operasi dasar dari sebuah komputer.
 Ini adalah proses dimana komputer akan mengambil Program instruksi dari perusahaanmemori , menentukan tindakan apa instruksi membutuhkan, dan melakukan tindakan tersebut. Siklus ini diulang terus menerus oleh unit pengolah pusat (CPU), dari boot untuk saat komputer dimatikan.

      RESUME


CPU merupakan komponen terpenting dari sistem komputer. CPU adalah komponen pengolah data berdasarkan instruksi – instruksi yang diberikan kepadanya. Dalam mewujudkan fungsi dan tugasnya, CPU tersusun atas beberapa komponen sebagai bagian dari struktur CPU.