Jumat, 12 Desember 2008

Rabu, 10 Desember 2008

Processor 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.



Processor Dari Generasi ke Generasi
mikroprosesor adalah sebuah IC (Integrated Circuit) yang digunakan sebagai otak/pengolah utama dalam sebuah sistem komputer.
Mikroprosesor merupakan hasil dari pertumbuhan semikonduktor.
Pertama kali MIkroprosesor dikenalkan pada tahun 1971 oleh Intel Corp,
yaitu Mikroprosesor Intel 4004 yang mempunyai arsitektur 4 bit.
Dengan penambahan beberapa peripheral (memori, piranti I/O, dsb) Mikroprosesor 4004 di ubah menjadi komputer kecil oleh intel.
Kemudian mikroprosesor ini di kembangkan lagi menjadi 8080 (berasitektur 8bit), 8085, dan kemudian 8086 (berasitektur 16bit).
Dilaen pihak perusahaan semikonduktor laen juga memperkenalkan dan mengembangkan mikroprosesor antara lain Motorola dengan M6800, dan Zilog dengan Z80nya.
Mikroprosesor Intel yang berasitektur 16 bit ini kebanyakan di akhiri oleh angka 86,
akan tetapi karena nomor tidak dapat digunakan untuk merek dagang mereka menggantinya dengan nama pentium untuk merek dagang Mikroprosesor generasi kelima mereka.
Arsitektur ini telah dua kali diperluas untuk mengakomodasi ukuran word yang lebih besar.
Di tahun 1985, Intel mengumumkan rancangan generasi 386 32-bit yang menggantikan rancangan generasi 286 16-bit.
Arsitektur 32-bit ini dikenal dengan nama x86-32 atau IA-32 (singkatan dari Intel Architecture, 32-bit). Kemudian pada tahun 2003, AMD memperkenalkan Athlon 64, yang menerapkan secara lebih jauh pengembangan dari arsitektur ini menuju ke arsitektur 64-bit, dikenal dengan beberapa istilah x86-64, AMD64 (AMD), EM64T atau IA-32e (Intel), dan x64 (Microsoft).

Untuk melihat sejarah perkembangan komponen elektronik bisa dilihat dibawah ini:

1904: Dioda tabung pertama kali diciptakan oleh seorang ilmuwan dari Inggris yang bernama Sir John Ambrose Fleming (1849-1945)

1906: ditemukan trioda hasil pengembangan dioda tabung oleh seorang ilmuwan Amerika yang bernama Dr. Lee De Forest. Yang kemudian terciptalah tetroda dan pentode.

Akan tetapi penggunaan dari tabung hampa tersebut tergeser pada tahun 1960 setelah ditemukannya komponen semikonduktor.

1947: Transistor diciptakan di labolatorium Bell.

1965: Gordon Moore dari Fairchild semiconductor dalam sebuah artikel untuk majalan elektronik mengatakan bahwa chip semikonduktor berkembang dua kali lipat setiap dua tahun selama lebih dari tiga dekade.

1968: Moore, Robert Noyce dan Andy Grove menemukan Intel Corp. untuk menjalankan bisnis "INTegrated ELectronics."

1969: Intel mengumumkan produk pertamanya, RAM statis 1101, metal oxide semiconductor (MOS) pertama di dunia. Ia memberikan sinyal pada berakhirnya era memori magnetis.

1971: Intel meluncurkan mikroprosesor pertama di dunia, 4-bit 4004, yang didesain oleh Federico Faggin.

1972: Intel mengumumkan prosesor 8-bit 8008. Bill Gates muda dan Paul Allen coba mengembangkan bahasa pemograman untuk chip tersebut, namun saat itu masih kurang kuat.

1974: Intel memperkenalkan prosesor 8-bit 8080, dengan 4.500 transistor yang memiliki kinerja 10 kali pendahulunya.

1975: Chip 8080 menemukan aplikasi PC pertamanya pada Altair 8800, sekaligus merevolusi PC. Gates dan Allen sukses mengembangkan bahasa dasar Altair, yang kemudian menjadi Microsoft Basic, untuk 8080.

1976: Arsitektur x86 mengalami kemunduran saat Steve Jobs dan Steve Wozniak memperkenalkan Apple II computer dengan menggunakan prosesor 8-bit Motorola 6502.

1978: Intel memperkenalkan mikroprosesor 16-bit 8086 yang kelak menjadi standar industri pada tanggal 8 Juni.

1979: Intel memperkenalkan versi dengan harga yang lebih murah dari 8086, yaitu 8088 dengan 8-bit bus.

1980: Intel memperkenalkan 8087 math co-processor.

1981: IBM memilih 8088 untuk menjalankan PC-nya. Seorang eksekutif Intel kemudian mengatakannya sebagai "Kemenangan besar pertama Intel."

1982: IBM menandatangani Advanced Micro Devices sebagai sumber kedua Intel untuk mikroprosesor 8086 dan 8088.

1982: Intel memperkenalkan prosesor 16-bit 80286 dengan 134.000 transistor.

1984: IBM mengembangkan PC generasi kedua, 80286-based PC-AT. PC-AT yang menjalankan MS-DOS,
kelak menjadi standar PC selama hampir 10 tahun.

1985: Intel keluar dari bisnis RAM dinamis untuk fokus pada mikroprosesor, dan akhirnya ia mengeluarkan prosesor 80386, sebuah chip 32-bit dengan 275.000 transistor dan kemampuan menjalankan berbagai macam program sekaligus.

1986: Compaq Computer melambungkan IBM dengan PC yang didasarkan pada 80386.

1987: VIA Technologies didirikan di Fremont, Calif., mereka akan mejual chip set core logic x86.

1989: 80486 diluncurkan, dengan 1.2 juta buah transistor dan built-in math co-processor.

Intel telah memprediksi pengembangan prosesor multicore suatu saat pada tahun 2000-an.

1990: Compaq memperkenalkan server PC pertama, yang dijalankan dengan menggunakan 80486.

1993: Transistor 3.1 juta, prosesor 66-MHz Pentium dengan teknologi superscalar diperkenalkan.

1994: AMD dan Compaq membentuk aliansi untuk mendukung Compaq computer dengan mikroprosesor Am486.

1997: Intel meluncurkan teknologi prosesor 64-bit Epic. Ia juga memperkenalkan MMX Pentium untuk aplikasi prosesor sinyal digital, yang juga mencakup grafik, audio, dan pemrosesan suara.

1998: Intel memperkenalkan prosesor Celeron di bulan April.

1999: VIA mengakuisisi Cyrix Corp. dan Centaur Technology, pembuat prosesor x86 dan x87 co-processor.

2000: Debut Pentium 4 dengan 42 juta transistor.

2003: AMD memperkenalkan x86-64, versi 64-bit dari x86 instruction set.

2004: AMD mendemonstrasikan x86 dual-core processor chip.

2005: Intel menjual prosesor Dual-Core pertamanya.

2006: Dell Inc. mengumumkan akan menawarkan system prosesor berbasis AMD.

2006: Intel Memperkenalkan prosesor core 2 duo di bulan juli.

2007: Intel memperkenalkan prosesor core 2 quad di bulan januari.

RISC VS CISC

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


Pada bagian kiri terlihat 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

Awalnya memang kelihatan gak efisien iya khan? 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.

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 instruksi2kompleks.

RISC:
Penekanan pada perangkat lunak 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

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.

Pipelining

Setelah mengetahui bagaimana mengubah setting Mozilla/Firefox, kini saatnya Anda melirik beberapa setting yang berguna untuk membuat browser ini lebih tanggap dan lebih cepat. Setidaknya ada tiga cara yang bisa Anda tempuh: mengaktifkan pipelining, menaikkan jumlah koneksi persisten maksimum, mengatur setting waktu tunda.

Dengan menempuh salah satu cara, mungkin dirasa sudah cukup untuk meningkatkan kinerja Mozilla ataupun Firefox. Tetapi, kalau Anda menginginkan kinerja maksimal pada browser alternatif itu, maka sebaiknya anda mencoba ketika cara itu sekaligus.


Mengaktifkan Pipelining
Pada koneksi web biasa, browser akan meminta data pada satu server dan menunggu sampai ada tanggapan sebelum mulai mengirim permintaan berikutnya, baik pada server yang sama atau pada server lain. Cara kerja seperti ini tentu saja memperlambat browser, terutama saat membuka banyak situs sekaligus.

Pada mode pipelining, browser tidak menunggu tanggapan server web sebelum mengirim permintaan berikutnya. Sebaliknya, browser akan tetap mengirim permintaan dan memproses tanggapan dari server-server web berdasarkan urutan permintaan. Mozilla/Firefox dan juga Opera mendukung mode ini. Dengan mengaktifkan pipelining pada Mozilla/Firefox anda bisa mendongkrak kecepatan browsing anda dengan cukup signifikan.

Sebenarnya mode ini sudah ada pada standar protokol HTTP versi 1.1. Hanya saja mode ini tidak didukung oleh seluruh browser dan server web. Karena mode ini tidak sepenuhnya dapat ditangani oleh beberapa server web, pengaktifan pipelining pada Mozilla/Firefox mungkin menimbulkan masalah. Karena itulah mode ini dinonaktifkan secara default.

Ada tiga setting untuk mengatur mode pipelining di Mozilla/Firefox: network.http.pipelining, network.http.proxy.pipelining, dan network.http.pipelining.maxrequests.

Setting pertama mengatur fitur pipelining pada koneksi tanpa proxy server. Sedangkan setting kedua mengatur koneksi dengan proxy server. Dengan mengubah kedua setting ini dari false menjadi true, maka Mozilla/Firefox akan menggunakan mode pipelining dalam koneksi HTTP.

Cara lain yang lebih mudah untuk mengaktifkan pipelining pada Mozilla adalah dengan membuka menu Edit->Preferences->HTTP Networking. Dengan mencentang pilihan mode pipelining, baik hubungan langsung (direct connection) maupun dengan proxy, Anda sudah menggunakan mode pipelining.
Setting ketiga, network.http.pipelining.maxrequests berguna untuk menentukan berapa banyak permintaan data yang bisa antri pada satu sambungan. Nilai default setting ini 4, dan nilai maksimumnya 8. Untuk mempercepat browser, anda bisa menaikkan nilai ini.

Sebagai contoh pengaturan tiga setting di atas menggunakan file user.js, buka file tersebut menggunakan editor teks favorit anda, dan ketikkan:
user_pref(“network.http.pipelining”, true);
user_pref(“network.http.proxy.pipelining”, true);
user_pref(“network.http.pipelining.maxrequests”, 8);
Mudah-mudahan cara ini bisa membantu akses sewaktu melakukan browsing di Internet.
Jumlah Koneksi Persisten
Bila browser membuka koneksi pada satu server web untuk meminta data, koneksi tersebut bisa dipertahankan atau bisa ditutup. Mempertahankan koneksi—terutama bila browser meminta data pada server yang sama berkali-kali—akan meningkatkan kinerja browser, karena membuka koneksi baru ke server memerlukan waktu. Karena itu memperbanyak jumlah koneksi maksimum yang dipertahankan (persisten) bisa meningkatkan kecepatan browsing Anda.

Cuma harus diingat bahwa membuka terlalu banyak koneksi akan melahap bandwidth terlalu besar. Bandwidth Internet bukan barang murah dan harus dibagi pada banyak pemakai, sehingga perilaku seperti ini tidak santun. Membuka koneksi terlalu banyak pada satu server juga akan memperburuk kinerjanya.

Untuk mengatur koneksi persisten pada Mozilla/Firefox, ada dua setting yang bisa Anda ubah: network.http.max-persistent-connections-per-server (mengatur jumlah maksimum koneksi persisten untuk tiap server web) yang bernilai default 2; network.http.max-persistent-connections-per-proxy (jumlah maksimum koneksi persisten via proxy server) yang bernilai default 4.

Nilai default ini adalah rekomendasi dari spesifikasi protokol HTTP, sehingga sebaiknya bila Anda menaikkan nilai tersebut bedanya tidak terlalu jauh. Contoh kode untuk file user.js adalah sebagai berikut:
user_pref(“network.http.max-persistent-connections-per-server”, 4);
user_pref(“network.http.max-persistent-connections-per-proxy”, 8);
Ini juga merupakan salah satu trik untuk mempercepat koneksi browser Mozilla Anda ke Internet. @ k8

Minggu, 30 November 2008

Sistem komputer terdiri dari hardware, software dan brainware.

  1. Hardware (perangkat keras).
    Menurut Sajjan G.Shiva pada bukunya Computer Design and Architecture (2000),

    The hardware components of a computer system are electronic devices,
    in which the basic unit of information is either a 0 or a 1,
    corresponding to two states of an electronic signal.

    Komponen perangkat keras dari sebuah sistem komputer adalah peralatan elektronik, yang memiliki unit dasar informasinya adalah 0 atau 1, berdasarkan dua status yang dimiliki signal elektronik.

    Kutipan berikutnya dari buku tersebut adalah “For instance, in one of the popular hardware technologies a 0 is represented by 0 V while a 1 is represented by +5 V“, terjemahannya sebagai berikut “sebagai petunjuk, salah satu dari kepopuleran teknologi hardware adalah “0″ mewakili kondisi 0 Volt, sedangkan “1″ mewakili kondisi +5 Volt.

    Hardware terdiri dari perangkat unit Input - Proses - Output.
    Beberapa perangkat memiliki fungsi 1 (satu) bagian, misalnya sebagai input saja atau sebagai output saja. Namun media penyimpanan seperti harddisk, bertindak sebagai perangkat input (apabila melakukan pembacaan data) dan berfungsi sebagai output (apabila sebagai media penyimpanan).

    Printer juga berfungsi sebagai 2 (dua) bagian, sebagai output, printer menerima data untuk dicetak, sedangkan sebagai perangkat input, printer melaporkan status tinta yang ada padanya, tinta apa yang habis, warna hitam atau warna merah, kuning, biru.

  2. Software (perangkat lunak) adalah kumpulan instruksi-instruksi yang dibuat, baik oleh manusia atau hasil proses yang dibuat perangkat lunak lain, untuk memenuhi tujuan tertentu pada proses komputasi (computing process).Terdapat beberapa jenis perangkat lunak :
    • Operating System (OS)
      adalah software yang berfungsi untuk mengendalikan hardware
      misalnya : Microsoft Windows, Unix, Linux, Symbian pada beberapa handphone.
    • Application Software
      adalah software yang berfungsi untuk membuat aplikasi tertentu untuk kebutuhan rutin banyak pihak, seperti aplikasi perkantoran, aplikasi bisnis, keuangan, desain grafis.
      misalnya : Microsoft Office, Adobe Photoshop, AutoCAD, Corel Draw dsb.
    • Utility Software
      Software pada jenis ini lebih bersifat secondary, bukan merupakan keutamaan untuk memilikinya.
      misalnya : Software antivirus, software perbaikan atau perawatan hardware
    • Development Software
      adalah software yang dibuat untuk membuat software lain, salah satunya adalah software pemrograman dan software modelling.
      misalnya : Code Gear Rad Studio (Borland Delphi), Microsoft VB.Net, Rational Rose dsb.
    • Taylor Made Software / Special Purpose Software
      adalah software yang dibuat untuk kebutuhan khusus pengguna, dibuatnya pun berdasarkan pesanan (taylor made)
      misalnya : POS (Point Of Sale) atau software penjualan barang pada supermarket, software pendataan pegawai, penggajian atau software untuk peramalan cuaca, penggerak hulu ledak bom jarak jauh dsb.

    Perangkat lunak sendiri terdiri dari file-file atau berkas yang dibuat sesuai dengan kebutuhan operasional yang ada.
    Beberapa pembedaan berkas adalah :

    • Data File
      File data adalah file yang berisi kode-kode yang dimengerti manusia maupun mesin, dalam hal ini komputer itu sendiri.
      File data memiliki 2 (dua) pembeda lain, yaitu non-executable dan executable, artinya terdapat file data yang dapat di-eksekusi atau dijalankan, contohnya adalah file ber-ekstensi .EXE dan .COM.
    • Folder / Directory File
      adalah file yang berfungsi sebagai induk atas sekumpulan file yang terdapat pada media penyimpanan. Folder tidak dapat dibuka seperti Data File yang dapat di “Open”, namun folder hanya bertindak sebagai informasi pendukung atas kumpulan beberapa file yang berada di dalamnya. Posisi Folder ini terletak pada posisi puncak media penyimpanan, tersimpan pada FAT (File Allocation Tables).
      Informasi lebih lengkap dapat Anda pahami pada matakuliah Berkas dan Akses.
  3. Brainware (Perangkat Pemikir)
    Manusia adalah termasuk brainware pada sistem komputer. Sebagai “brain” atau otak atau pemikir atas keberlangsungan hardware dan software yang ada.Brainware adalah mastermind (tokoh kunci) dari peningkatan perkembangan hardware dan software, tanpa tindakannya, perkembangan kedua sistem komputer yang lain tersebut tidak akan mencapai kondisi kesempurnaan seperti yang diharapkan oleh manusia itu sendiri.Brainware terdiri dari :
    • Technician
      Brainware yang bertindak untuk menjaga keberlangsungan perangkat-perangkat hardware dan software, seringkali disebut dengan teknisi.
      Terdiri dari : Hardware Technician dan Software Technician.
    • Operator
      Brainware yang bertindak sebagai tenaga entri bagi data-data yang dibutuhkan untuk diolah sistem komputer
    • Programmer
      Brainware yang bertindak sebagai tenaga pembangun aplikasi atau application developer, yang menuliskan pengkodean (coding) program-program untuk membuat sebuah aplikasi.
      Terdiri dari Application Programmer dan System Programmer. System programmer adalah programmer yang membuat penulisan program berhubungan dengan perangkat keras atau program yang berhubungan dengan sistem operasi.
    • Administrator
      Brainware yang berfungsi sebagai pengendali aktifitas yang berhubungan dengan administrasi perangkat atau sistem.
      Terdiri dari : DBA (Database Administrator) adalah brainware yang berhubungan dengan pembuatan atau perancangan database pada pembangunan perangkat lunak.
      Network Administrator (NA) adalah brainware yang bertanggungjawab atas administrasi pada perangkat jaringan komputer, sedangkan Web Administrator banyak berhubungan dengan administrasi layanan web pada Internet.
    • Designer
      Brainware yang bertindak sebagai tenaga desain pada sebuah aplikasi.
      Terdiri dari : Graphic Designer, Web Designer dan System Analyst and Designer.
      System Analyst and Designer bertugas mendesain cetak biru (blue print) pada pembangunan perangkat lunak atau aplikasi, mulai dari rancangan layout, sampai dengan hasil output yang diinginkan.

John Von Neumann

Sistem komputer yang kita pergunakan saat ini adalah desain dari John Von Neumann. Dituliskan pada makalahnya “First Draft of a Report on the EDVAC” pada 30 Juni 1945.

Gambar 1. Von Neumann Architecture

Saat ini memang desain tersebut telah berubah, karena pada desain tersebut belum terdapat “cache” pada processor, yang fungsinya memang mengurangi kepadatan arus pembacaan, karena secara terus menerus jalur memori ke CU (Control Unit) dan ALU (Arithmatic Logic Unit) menjadi sangat padat.

Desain lanjutan setelah ditemukannya media penyimpanan luar (eksternal storage) terdapat pada Gambar 2. Amati apa yang terdapat pada panah yang tertuju padanya.

Gambar 2. Computer Architecture the 2nd

Panah yang berkepala dua (bolak balik) berarti aktifitas yang muncul melalui satu lokasi alamat.

Perangkat input dan output memiliki jalur tersendiri untuk berkomunikasi dengan komputer melalui Control Unit, sudah tidak lagi berhubungan dengan accumulator yang terdapat pada ALU (amati gambar 1).

Memori memiliki 2 (dua) khusus untuk berhubungan dengan CU dan ALU. Kedua jalur yang ada bertindak sebagai input dan output. Kondisi ini masih tetap sama dengan desain awal.

Bedakan dengan gambar sebelumnya tentang hubungan CU dan ALU. Melalui desain kedua ini CU dan ALU memiliki alamat yang sama untuk mentransfer datanya.

Bus
Jalur tempat sirkulasi data yang terdapat pada CPU dan perangkat yang ada diluarnya disebut dengan bus. Memori dan processor memiliki ukuran bus tersendiri dalam berkomunikasi, begitu juga bagi perangkat input dan outputnya, juga memiliki bus dalam berkomunikasi.

Penjelasan tentang bus ini lebih mendetail pada materi lanjutan. Keep in touch student.

Memory

Memori pada komputer terbagi menjadi 2 (dua) bagian :

  1. Primary Memory
    Memori primer adalah memori yang mutlak harus dipenuhi untuk keberlangsungan sistem komputer. Tanpanya, komputer hanya seonggok perangkat elektronik yang tidak mampu bekerja sesuai tugas dan fungsi yang ditujukan kepadanya.
    Memori primer ini mahal harganya, ukurannya juga tidak terlalu besar, namun memiliki kecepatan tinggi dalam aksesnya. Termasuk dalam memori primer adalah Register dan RAM (Random Access Memory).
    Primary Memory bersifat volatile, artinya membutuhkan arus listrik menetap untuk mengelola data. Kehilangan arus listrik pada jenis memori ini akan membuatnya tidak dapat bekerja.
  2. Secondary Memory
    Secondary Memory lebih banyak mengarah pada penyimpanan data. Jika Primary Memory mengarah sebagai sebuah sarana untuk mengolah data, sedangkan secondary memory mengarah kepada storage device (media penyimpanan).
    Disket, CD/DVD, HardDisk, Flash Disk adalah bentuk dari secondary memory. Selain itu virtual disk, swap memory juga termasuk didalamnya.
    Pada sisi kecepatan, jelas secondary memory lebih lambat dibandingkan primary memory. Dari sisi harga juga lebih murah. Harga harddisk 80 GB masih lebih murah dibandingkan harga 4 GB RAM.
    Secondary Memory bersifat Non-Volatile, yaitu tidak membutuhkan arus listrik menetap untuk mengelola data.

Register
Register adalah komponen primary memory yang sangat-sangat penting. Letaknya pada processor, fungsinya sebagai tempat penyimpanan sementara (temporary storage) dimana data dapat disimpan sementara pada saat proses pengolahan terjadi pada processor. Semua data nantinya harus berupa register terlebih dahulu sebelum diolah processor.

Gambar 1. Register pada Processor
(courtesy of http://pctechguide.com)

Sebagai contoh adalah proses penjumlahan. Dua bilangan atau lebih yang akan dijumlahkan harus diletakkan pada register terlebih dahulu, setelah itu dijumlahkan, hasil penjumlahan juga terletak pada register. Oleh karena itu register dapat juga disebut sebagai storage area (area penyimpanan) pada processor.

Register terletak pada processor, oleh karena itu kecepatannya sangat tinggi sekali. Register ini mengalami penambahan seiring dengan operasional processor yang didukungnya.

Sebagai contoh Processor Intel 8086 sampai dengan Intel 80286 yang hanya mampu beroperasi pada mode 16 bit, memiliki jumlah register lebih sedikit, dibandingkan processor Intel 80386 sampai dengan Intel Pentium 4 yang mampu bekerja pada mode 32 bit. Pada Core Duo, jumlah register juga ditambah, seiring dengan mode operasional 64 bit.

Register lama tidak pernah dihilangkan pada processor jenis terbaru, namun ditambah. Kondisi ini untuk menjaga kompatibilitas dengan aplikasi sebelumnya. Sekarang terjawab bukan? Mengapa aplikasi yang dulu dibuat dari komputer Intel 80386 masih dapat dijalankan pada komputer dengan processor Intel Core 2 Duo ?

Processor Register
Gambar 2. Register as is in Processor
(courtesy of http://schoolnet.gove.mt)

Register dapat berupa data atau alamat yang terdapat pada lokasi lain pada RAM. Jadi sifat register tersebut sebagai pointer (penunjuk) yang berupa alamat tertentu yang ditujukan untuk diproses.

Terdapat 11 (sebelas) kategori Register yang terdapat pada sistem komputer :
(courtesy of http://en.wikipedia.org/processor_register)

  1. User Accessible Registers, adalah kumpulan Register yang dapat diakses oleh user;
  2. Data Registers, adalah register yang berisi data Integer dan Float;
  3. Address Registers, merupakan kumpulan dari register yang berisi alamat-alamat untuk mengakses data;
  4. Conditional Registers bersifat Read-Only, berisi data yang bersifat nilai-nilai kebenaran (truth values), data-data bertipe boolean menjadi gambaran isi dari register ini;
  5. General Purpose Registers, merupakan kumpulan register yang penggunaannya sering atau pada umumnya (general) digunakan (purpose) untuk beroperasi;
  6. Floating Point Registers terdapat pada mikroprosessor lama sebelum Intel 8088, digunakan untuk menyimpan data bertipe desimal (float);
  7. Constant Registers berisi nilai-nilai konstan, seperti 0, 1 dan Pi (3.14)
  8. Vector Registers terdapat pada supercomputer atau mainframe untuk membantu pemrosesan secara vector (vector processing). Penjelasan lanjutan tentang vector processing pada materi lain.
  9. Special Purpose Registers adalah kumpulan register yang digunakan untuk kebutuhan-kebutuhan khusus (special) misalnya program counter, stack pointer dan status pointer.
  10. Model Specific Registers berisi data-data yang menunjukkan setting dari komputer itu sendiri.
  11. Control and Status Registers merupakan kumpulan dari register yang berisi kendali dari urutan susunan aplikasi seperti pada program counter. Selain itu juga register instruksi dan program status word (PSW) termasuk jenis register ini.

Keunggulan, kemampuan dan kecepatan CPU juga dipengaruhi oleh register. CPU 32 bit dapat diartikan memiliki register selebar 32 bit (4 Byte), oleh karena itu CPU tersebut dapat mengelola data selebar 32 bit. Dapat kita bandingkan dengan CPU 16 bit bukan ? berarti data selebar 32 bit akan melalui 2 kali proses pada CPU 16 bit, demikian juga untuk CPU 64 bit sekelas Dual Core, karena akan memproses data selebar 64 bit dalam satu kali proses, sedangkan CPU 32 bit harus melalui fetching data sebanyak 2 kali untuk menyelesaikannya.

Perpindahan atau penggantian register sifatnya sangat transparan dari user maupun programmer. Hanya dengan menggunakan pemrograman Assembly saja Register dapat dimanipulasi.

Tipe Memori
Pada sistem komputer kita, terdapat beberapa tipe memori yang ada, yaitu :

  1. RAM (Random Access memory), terdiri dari :
    a. Read Write Memory (RWM)
    b. Read Only Memory (ROM)
  2. Content Addressable Memory (CAM) atau Associative Memory (AM)
  3. Sequential Access Memory (SAM)
  4. Direct Access Memory (DAM)

Primary Memori pada komputer adalah RAM, sedangkan CAM digunakan untuk estimasi pencarian dan penggolongan data agar lebih cepat/lebih baik. SAM dan DAM terdapat pada Secondary Memory.

Random Access Memory (RAM)
Pada memori jenis ini dimanapun lokasi yang memiliki alamat pada memori dapat diakses secara random. Proses pembacaan dan penulisan pada jenis memori ini memiliki waktu yang sama, dimanapun lokasi memori tersebut berada dan seberapa besarpun ukuran memori yang dimiliki oleh komputer.

Read Write Memory (RWM) adalah jenis RAM yang memiliki kelebihan dapat ditulis dan dibaca. Setiap lokasi memory pada RWM memiliki “alamat” yang menunjukkan posisinya. Data yang dimasukkan dan dibaca dari memori menggunakan “alamat” yang ditentukan tersebut.

Jika pada layar komputer kita mengenal pixel yang tersebar dengan penentuan lokasi baris (row) dan kolom (column), sedangkan pada RAM dikenal segment dan offset. Segment mewakili baris, sedangkan offset mewakili kolom.
Sebagai contoh biasanya pesan error “Error in 000211H:21AAFBH”, yang berarti kesalahan terjadi pada alokasi memori dengan baris (segment) “000211″ Hex dan kolom (offset) “21AAFB” Hex.

Untuk operasionalnya tipe memori berupa RAM dan berjenis RWM ini membutuhkan :

  • MAR (Memory Address Register), berisi alamat dari lokasi memori yang akan diakses, baik yang akan dibaca maupun ditulis.
  • MBR (Memory Buffer Register), berupa buffer/tempat penampung hasil proses baca atau tulis.

Skema RAM-RWM

Gambar 3. Skema RWM
(courtesy of Computer Design and Architecture by Sajjan G.Shiva)

Pada saat penulisan, Read Signal akan berisi “1″, MAR akan berisi alamat memori yang akan dibaca, proses pembacaan berlangsung dan hasil pembacaan disimpan pada MBR.

Demikian juga sebaliknya, jika Write Signal berisi “1″, MAR akan berisi alamat yang ditulis, data pada MBR akan dituliskan pada memori.

Pada kenyataannya MAR dan MBR ini tidak berupa fisik, melainkan register yang terdapat pada processor yang bersikap sebagai MAR untuk menyimpan alamat data dan bersifat sebagai MBR jika memang berisi data yang akan ditulis atau dibaca tersebut.

Read Only Memory (ROM) juga merupakan salah satu tipe dari RAM yang memang memiliki sifat pengaksesan data secara acak (random), namun memori jenis ini tidak dapat dengan mudah ditulis dengan cara biasa.

Speedup

In parallel computing, speedup refers to how much a parallel algorithm is faster than a corresponding sequential algorithm.
It is defined by the following formula:

where:
p is the number of processors
T1 is the execution time of the sequential algorithm
Tp is the execution time of the parallel algorithm with p processors
Linear speedup or ideal speedup is obtained when Sp = p . When running an algorithm with linear speedup, doubling the number of processors doubles the speed, which is usually considered very good scalability. Efficiency is a performance metric defined as Sp/p. It is a value, typically between zero and one, estimating how well-utilized the processors are in solving the problem, compared to how much effort is wasted in communication and synchronization. Algorithms with linear speedup and algorithms running on a single processor have an efficiency of 1, while many difficult-to-parallelize algorithms have efficiency such as 1/log p that approaches zero as the number of processors increases.