Minggu, 21 Juni 2009

MIKROPROSESSOR

Bila sebuah komputer diibaratkan sebagai tubuh manusia, maka prosesor mikro (processor) adalah otaknya.Kecepatan sebuah komputer sebagian besar bergantung kepada kecepatan prosesor yang terpasang didalamnya.Makin cepat prosesor yang digunakan sebuah PC, maka makin kencang kerja PC tersebut. Salah satu faktor penentu kecepatan sebuah prosesor adalah jumlah transistor yang berada didalamnya
Pada komputer tempo dulu seperti ENIAC, transistor yang digunakan berupa tabung-tabung hampa udara.Sedangkan transistor pada komputer masa kini berupa rangkaian silikon yang tersusun sebagai sebuah IC (Integrated Circuit) yang berada dalam keping sebuah prosesor.Keping IC ini cuma berukuran tidak lebih dari satu inchi persegi (kira-kira seukuran kuku ibu jari), tapi dapat menampung sampai jutaan transistor.


Jumlah transistor dalam keping sebuah prosesor terus meningkat dari waktu ke waktu, seiring dengan kemajuan dalam bidang desain dan fabrikasi prosesor. Dalam sebuah prosesor 8088 (PC-XT) dengan clock speed 5 MHz yang diperkenalkan pada 1979, menampung 29.000 transistor dengan ukuran 3 mikron lebih tipis dari rambut manusia yang tebalnya 100 mikron.

Peningkatan yang signifikan terjadi pada pada era prosesor 80286 (PC-AT) menjadi 134.000 transistor dengan ukuran 1,5 mikron yang bekerja pada clock speed 6 MHz. Berikutnya, pada era prosesor 80486, yang jumlah transistornya menjadi 1.200.000 dengan ukuran 1 mikron dan bekerja dengan clock speed 25 MHz. Era Pentium oleh Intel tahun 1993 melipatgandakan jumlah transistor menjadi 3.100.000 dengan ukuran 0.8 mikron pada 60 MHz. Jumlah ini meningkat sangat tajam pada generasi prosesor keluaran Intel selanjutnya hingga pada keluarga prosesor Pentium 4. Intel berhasil menjejalkan 42.000.000 transistor seukuran 0,18 mikron kedalam keping chip yang luasnya tidak berubah. Jumlah transistor sedemikian mendongkrak clock speed prosesor tersebut hingga diatas 1.5 GHz.

Lebih banyak transistor juga memungkinkan berkembangnya teknologi pipelining.Dalam arsitektur pipeline, beberapa instruksi dapat dijalankan dalam waktu yang bersamaan.Dengan demikian, biar pun setiap instruksi dapat membutuhkan 5 clock cycle, setiap instruksi dapat dieksekusi secara simultan dalam tingkatan (stage) yang berbeda.Sehingga seolah-olah prosesor dapat menyelesaikan satu instruksi setiap satu clock cycle.
Prosesor RISC dan CISC

Faktor selanjutnya yang juga berpengaruh terhadap kinerja sebuah prosesor adalah instruksi. Berdasarkan set perintah didalamnya, prosesor dapat dibedakan menjadi 2 tipe, yaitu RISC (Reduced Instruction Set Computer) dan CISC (Complex Instruction Set Computer). Prosesor bertipe RISC dirancang untuk memiliki sedikit set instruksi, yaitu hanya instruksi-instruksi dasar yang dibutuhkan saja. Dengan sedikit instruksi, maka prosesor dapat bekerja dalam kecepatan yang lebih tinggi.
Konsep RISC 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 adalah IBM PC/XT pada era 1980-an. Istilah RISC sendiri pertama kali dipopulerkan oleh David Patterson, pengajar pada University of California di Berkely.

RISC memberikan banyak keuntungan dalam desain sebuah prosor berkaitan dengan sasaran perancangan sebuah prosesor. Yakni seberapa baik sebuah instruksi dapat dipetakan dalam clock speed tertentu dan seberapa ''sederhana'' sebuah arsitektur sistem yang dibutuhkan, serta berapa banyak yang dapat dikerjakan sebuah prosesor sebelum diserahkan pada bantuan software. Dewasa ini, konsep RISC digunakan pada prosesor untuk komputer-komputer high-end.Misalnya keluarga prosesor Sun SPARC buatan Sun Microsystems dan prosesor Power PC yang digunakan oleh workstation IBM RISC System/6000.

Berbeda dengan konsep RISC, prosesor dengan konsep CISC memiliki set instruksi yang jauh lebih kompleks. Konsep CISC lebih menekankan untuk menyediakan kapasitas yang dibutuhkan dengan cara yang lebih efisien. Banyaknya instruksi yang tersedia memudahkan para programmer mengembangkan aplikasi untuk plattform CISC.Prosesor yang digunakan dalam komputer pribadi masa kini, Intel Pentium misalnya, umumnya berbasis CISC.

Lantas mana yang lebih baik, CISC atau RISC?Di atas kertas, dari segi kecepatan memang RISC lebih unggul, namun dari segi kinerja sesungguhnya belum tentu. Hal ini disebabkan keluarga prosesor RISC hanya menyediakan instruksi untuk fungsi-fungsi dasar, maka untuk fungsi-fungsi lanjutan yang lebih kompleks, akan diambil alih oleh software. Sementara untuk fungsi yang sama, prosesor berbasis CISC dapat memanfaatkan instruksinya sendiri. Padahal instruksi berbasis prosesor, lebih cepat dijalankan ketimbang instruksi berbasis software.Alhasil diperoleh akumulasi kecepatan untuk prosesor CISC.

Arsitektur berbasis CISC juga memungkinkan para perancang prosesor memperbanyak 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 karena aplikasinya lebih luas.Sementara keluarga prosesor RISC hanya digunakan pada workstation yang biasanya memiliki lingkup aplikasi yang lebih sempit.

Cara sederhana untuk melihat kelebihan dan kelemahan dari arsitektur RISC (Reduced Instruction Set Computers) adalah dengan langsung membandingkannya dengan arsitektur pendahulunya yaitu CISC (Complex Instruction Set Computers).
Perkalian Dua Bilangan dalam Memori

Gambar diatas adalah sebuah struktur memori (yang disederhanakan) suatu komputer secara umum. Memori tersebut terbagi menjadi beberapa lokasi yang diberi nomor 1 (baris): 1 (kolom) hingga 6:4. Unit eksekusi bertanggung-jawab untuk semua operasi komputasi. Namun, unit eksekusi hanya beroperasi untuk data-data yang sudah disimpan ke dalam salah satu dari 6 register (A, B, C, D, E atau F). Misalnya, kita akan melakukan perkalian (product) dua angka, satu disimpan di lokasi 2:3 sedangkan lainnya di lokasi 5:2, kemudian hasil perkalian tersebut dikembalikan lagi ke lokasi 2:3.

Pendekatan CISC
Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup satu saja
MULT 2:3, 5:2
Mult dalam hal ini lebih dikenal sebagai “complex instruction”, atau instruksi yang kompleks. Bekerja secara langsung melalui memori komputer dan tidak memerlukan instruksi lain seperti fungsi baca maupun menyimpan.
Satu kelebihan dari sistem ini adalah kompailer hanya menerjemahkan instruksi-instruksi bahasa tingkat-tinggi ke dalam sebuah bahasa mesin.Karena panjang kode instruksi relatif pendek, hanya sedikit saja dari RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut.

Pendekatan RISC
Prosesor RISC hanya menggunakan instruksi-instruksi sederhana yang bisa dieksekusi dalam satu siklus. Dengan demikian, instruksi ‘MULT’ sebagaimana dijelaskan sebelumnya dibagi menjadi tiga instruksi yang berbeda, yaitu “LOAD”, yang digunakan untuk memindahkan data dari memori ke dalam register, “PROD”, yang digunakan untuk melakukan operasi produk (perkalian) dua operan yang berada di dalam register (bukan yang ada di memori) dan “STORE”, yang digunakan untuk memindahkan data dari register kembali ke memori. Berikut ini adalah urutan instruksi yang harus dieksekusi agar yang terjadi sama dengan instruksi “MULT” pada prosesor RISC (dalam 4 baris bahasa mesin):
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
Instruksi tersebut memang telihat tidak efisien.Hal ini dikarenakan semakin banyak baris instruksi, semakin banyak lokasi RAM yang dibutuhkan untuk menyimpan instruksi-instruksi tersebut.Kompailer juga harus melakukan konversi dari bahasa tingkat tinggi ke bentuk kode instruksi 4 baris tersebut.
RISC
Penekanan padaperangkat lunak
Termasuk instruksi
Single-clock, hanya sejumlah kecil instruksi
Register ke register:LOAD dan STORE adalah instruksi2 terpisah
Ukuran kode besar
kecepatan (relatif) tinggi
Transistor banyak dipakai untuk register memori
CISC
Penekanan pada perangkat keras
Termasuk instruksi kompleks multi-clock
Memori-ke-memori: LOAD dan STORE saling bekerjasama
Ukuran kode kecil
kecepatan rendah
Transistor digunakan untuk menyimpan instruksi2 kompleks

Bagaimanapun juga, strategi pada RISC memberikan beberapa kelebihan.Karena masing-masing instruksi hanya membuthukan satu siklus detak untuk eksekusi, maka seluruh program (yang sudah dijelaskan sebelumnya) dapat dikerjakan setara dengan kecepatan dari eksekusi instruksi “MULT”. Secara perangkat keras, prosesor RISC tidak terlalu banyak membutuhkan transistor dibandingkan dengan CISC, sehingga menyisakan ruangan untuk register-register serbaguna (general purpose registers). Selain itu, karena semua instruksi dikerjakan dalam waktu yang sama (yaitu satu detak), maka dimungkinkan untuk melakukan pipelining.

Memisahkan instruksi “LOAD” dan “STORE” sesungguhnya mengurangi kerja yang harus dilakukan oleh prosesor. Pada CISC, setelah instruksi “MULT” dieksekusi, prosesor akan secara otomatis menghapus isi register, jika ada operan yang dibutuhkan lagi untuk operasi berikutnya, maka prosesor harus menyimpan-ulang data tersebut dari memori ke register. Sedangkan pada RISC, operan tetap berada dalam register hingga ada data lain yang disimpan ke dalam register yang bersangkutan.
Persamaan Unjuk-kerja (Performance)
Persamaan berikut biasa digunakan sebagai ukuran unjuk-kerja suatu komputer:

Pendekatan CISC bertujuan untuk meminimalkan jumlah instruksi per program, dengan cara mengorbankan kecepatan eksekusi sekian silus/detik. Sedangkan RISC bertolak belakang, tujuannya mengurangi jumlah siklus/detik setiap instruksi dibayar dengan bertambahnya jumlah instruksi per program.
Penghadang jalan (Roadblocks) RISC
Walaupun pemrosesan berbasis RISC memiliki beberapa kelebihan, dibutuhkan waktu kurang lebih 10 tahunan mendapatkan kedudukan di dunia komersil.Hal ini dikarenakan kurangnya dukungan perangkat lunak.
Walaupun Apple’s Power Macintosh menggunakan chip berbasis RISC dan Windows NT adalah kompatibel RISC, Windows 3.1 dan Windows 95 dirancang berdasarkan prosesor CISC. Banyak perusahaan segan untuk masuk ke dalam dunia teknologi RISC. Tanpa adanya ketertarikan komersil, pengembang prosesor RISC tidak akan mampu memproduksi chip RISC dalam jumlah besar sedemikian hingga harganya bisa kompetitif.
Kemerosotan juga disebabkan munculnya Intel, walaupun chip-chip CISC mereka semakin susah digunakan dan sulit dikembangkan, Intel memiliki sumberdaya untuk menjajagi dan melakukan berbagai macam pengembangan dan produksi prosesor-prosesor yang ampuh. Walaupun prosesor RISC lebih unggul dibanding Intel dalam beberapa area, perbedaan tersebut kurang kuat untuk mempengaruhi pembeli agar merubah teknologi yang digunakan.

Keunggulan RISC
Saat ini, hanya Intel x86 satu-satunya chip yang bertahan menggunakan arsitektur CISC. Hal ini terkait dengan adanya kemajuan teknologi komputer pada sektor lain. Harga RAM turun secara dramatis.Pada tahun 1977, DRAM ukuran 1MB berharga %5,000, sedangkan pada tahun 1994 harganya menjadi sekitar $6.Teknologi kompailer juga semakin canggih, dengan demikian RISC yang menggunakan RAM dan perkembangan perangkat lunak menjadi semakin banyak ditemukan.

Prosessor Superscalar

Superscalar adalah sebuah uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalam bentuk paralel.Superscalar merupakan salah saturancangan utuk meningkatkan kecepatan CPU. Kebanyakan dan komputer saat ini menggunakan mekanisme superscalar.Standar yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk datafloating 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.

Metoda superscalar ini yang menarik 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.

Tugas dari komputer selanjutnya adalah 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 lebih 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 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 padamesin 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.