Jumat, 27 Januari 2012

Parallel Processing

Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang iperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.

Banyak perkembangan-perkembangan baru dalam arsitektur komputer yang didasarkan pada konsep pemrosesan paralel. Pemrosesan paralel dalam sebuah komputer dapat didefinisikan sebagai pelaksanaan instruksi-instruksi secara bersamaan waktunya. Hal ini dapat menyebabkan pelaksanaan kejadian-kejadian dalam interval waktu yang sama, dalam waktu yang bersamaan atau dalam rentang waktu yang saling tumpang tindih.
Sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat, komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan pemrosesannya. Hal ini menyebabkan lahirnya konsep keparalelan (parallelism) untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan yang sangat tinggi, seperti misalnya prakiraan cuaca, simulasi pada reaksi kimia, perhitungan aerodinamika dan lain-lain.
Konsep keparalelan itu sendiri dapat ditinjau dari aspek design mesin paralel, perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan kepada algoritma untuk menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang sangat tinggi.

Microprograming control

 Rancangan microprogrammed dibentuk serangkaian instruksi mikro, yang disebut sebagai program mikro (micro-program) untuk setiap instruksi mikro dan disimpan dalam sebuah memori kontrol (biasanya ROM) dalam Control Unit.

Istilah micro-program pertama kali muncul pada tahun 1950 dan diperkenalkan oleh M. V. Wilkes.
Pada hard-wired diperlukan perancangan ulang perangkat keras jika serangkaian instruksi dikembangkan. Sebaliknya, pada micro-programmed, serangkaian instruksi mikro (program-mikro) disimpan dalam ROM sehingga sebuah instruksi dapat diubah dengan mengubah program mikro yang bersesuaian dengan instruksi tersebut dan kelompok instruksi dapat dikembangkan dengan hanya menyertakan ROM tambahan yang berisi program-mikro bersesuaian.

KOMPONEN-KOMPONEN POKOK CONTROL UNIT
MICROPROGRAMMED

1. Instruction Register
Menyimpan instruksi register mesin yang dijalankan.
2. Control Store berisi microprogrammed
Untuk semua instruksi mesin.
Untuk startup mesin.
Untuk memprosesan interupt
3. Address Computing Circuiting
Menentukan alamat Control Store dari mikroinstruksi
berikutnya yang akan dijalankan.
4. Microprogrammed Counter
Menyimpan alamat dari mikroinstruksi berikutnya.
5. Microinstruction Buffer
Menyimpan mikroinstruksi tersebut selama dieksekusi.
6. Microinstruction Decoder
Menghasilkan dan mengeluarkan mikroorder yang
didasarkan pada mikroinstruksi dan opcode instruksi
yang akan dijalankan.

Kontrol Unit

Bagian ini bertugas mengatur dan mengendalikan semua peralatan yang ada pada sistem komputer. Control unit mengatur kapan alat input menerima data dan kapan data diolah serta kapan ditampilkan pada alat output. Control Unit mengartikan instruksi-instruksi dari program komputer, membawa data dari alat input ke main memory, mengambil data dari main memory untuk diolah. Bila ada instruksi untuk perhitungan aritmatika atau perbandingan logika, control unit mengirim instruksi tersebut ke aritmetic and logic unit. Hasil dari pengolahan data ini dibawa oleh control unit ke main memory lagi untuk disimpan.
Jadi tugas dari control unit adalah :
1. mengatur dan mengendalikan alat-alat input dan output
2. mengambil instruksi-instruksi dari main memory
3. mengambil data dari main memory kalau diperlukan oleh proses
4. mengirim instruksi ke aritmaetic and logic unit bila perhitungan aritmatik atau perbandingan logika serta mengawasi kerja aritmatik dan logika
5. menyimpan hasil proses ke main memory

Superscalar

Superscalar adalah sebuah unitprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalm bentuk paralel. Superscalar 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.
Superscalar ini mampu menjlankan Instruction Level Parallelism dengan satu prosesor. Superscalar dapat diaplikasikan di RISC dan CISC, tapi pada umumnya RISC.
2. Alasan desain Superscalar
Sebagian besar operasi menggunakan besaran/nilai skalar Operasi ini memungkinkan peningkatan kinerja sistem hingga level tertentu  Superscalar Implementation.
Proses fetch dari beberapa instruksi secara bersamaan. Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register Mekanisme untuk mengkomunikasikan nilai tersebut. Mekanisme untuk menginisialisasi instruksi paralel. Tersedianya sumber untuk eksekusi paralel dari beberapa instruksi. Mekanisme processing instruksi dengan urutan yg sesuai.
3. Contoh Instruksi
Add R1, R2, R3
Misalkan, instruksi
yang akan menambahkan isi register R1 dan R2 dan menempatkan jumlahnya dalam register R3. Isi dari register R1 dan R2 mula-mula akan ditransfer ke Unit aritmetika dan logika. Setelah operasi penambahan dilakukan, hasil penjumlahan tersebut akan ditransfer ke register R3. Prosesor dapat membaca instruksi selanjutnya dari memori, sementara operasi penambahan dilakukan. Kemudian jika instruksi tersebut juga menggunakan ALU, operand-nya dapat ditransfer ke input ALU pada waktu yang sama dengan hasil instruksi Add ditransfer ke register R3.
Pada kasus ideal, jika semua instruksi ditumpuk ke derajat yang maksimum yang mungkin dilakukan, maka eksekusi dilanjutnkan pada kecepatan penyelesaian satu instruksi dalam tiap siklus detak prosesor. Instruksi individual, mungkin masih memerlukan beberapa siklus detak agar selesai dilakukan. Tetapi untuk tujuan perhitungan, prosesor superskalar umumnya mampu melakukannya dalam tiap siklus.
Prosesor superskalar umumnya menggunakan beberapa unit fungsional, menciptakan jalur paralel di mana berbagai instruksi yang berbeda dapat dieksekusi secara paralel. Dengan pengaturan tersebut, maka dimungkinkan untuk memulai eksekusi beberapa instruksi secara paralel tiap siklus detak. Tentu saja, eksekusi paralel harus mempertahankan kebenaran logikan program, sehingga hasil yang diperoleh harus sama dengan hasil dari eksekusi secara serial.
4. Contoh CPU yang menerapkan arsitektur superscalar :
  • 486, Pentium, Pentium Pro, keluarga Intel Pentium, Intel Pentium Pro, Intel Pentium II, Intel Pentium III, Intel Itanium, Intel Xeon, Intel Pentium 4, Intel Pentium M, Intel Core dari Intel Corporation; keluarga AMD K5, AMD K6, AMD Athlon, AMD Athlon 64, dan AMD Opteron
Superscalar Processor Design
• Use PowerPC 604 as case study
• Speculative Execution, Register Renaming, Branch Prediction
More Superscalar Examples
• MIPS R10000
• DEC Alpha 21264
5. Implementasi Superscalar
  1. Proses fetch dari beberapa instruksi secara bersamaan.
  2. Logika untuk menentukan ketergantungan sebenarnya yang meliputi nilai register.
  3. Mekanisme untuk mengkomunikasikan nilai tersebut.
  4. Mekanisme untuk menginisialisasi instruksi paralel.
  5. Tersedianya sumber untuk eksekusi paralel dari beberapa instruksi.
  6. Mekanisme processing instruksi dengan urutan yg sesuai.
Pada penjelasan diatas bias diterangkan bahwa untuk superscalar dapat digunakan untuk berbagai keperluan dan dapat diimplementasikan pada perangkat prosessor seperti :
Pentium 4
Pada Pentium, implementasi superscalar dapat dijabarkan sebagai berikut :
  • 80486 – CISC.
  • Pentium.
  • ada beberapa komponen superscalar.
  • 2 unit eksekusi integer yang terpisah.
  • Pentium Pro – Full superscalar.
  • Memperhalus models subsequent & Meningkatkan design superscalar.
6. Permasalahan pada Superscalar
Kemampuan dari computer superscalar dapat dilihat dari banyaknya instruksi yang dapat diproses secara parallel. Superscalar hingga derajat tertentu dapat terjadi jika computer mampu mengatasi permasalahan ketergantungan yang ada pada suatu instruksi, diantaranya adalah : ketergantungan data, ketergantungan procedural, ketergantungan sumber unit, ketergantungan output dan antiketergantungan. Dari lima ketergantungan tersebut, sampai sekarang belum ada computer yang mampu mengatasinya secara total. Bagaimanapun computer akan menemukan beberapa ketergantungan dalam menyelesaikan suatu program.
Dari rancangan computer yang ada, hanya mampu meminimalisasikan beberapa ketergantungan saja, walaupun demikian ternyata dengan usaha ini mampu diciptakan computer dengan kinerja yang jauh lebih baik dari generasi-generasi sebelumnya. Adapun usaha yang dilakukan dalam peningkatan kinerja superscalar tersebut diantaranya : desain pipeline (out of order issue and out of order completion), memperbanyak tahapan pada pipeline, penduplikasian sumber unit (contoh : unit fungsional /ALU, memori, bus, cache, dll), desain micro operation (pada system CICS), desain unit prediksi percabangan, dan renaming allocation. Kebanyakan computer lebih menekankan pada upaya penduplikasian unit fungsional baik integer maupun floating point. Untuk itu pada pembahasan ini akan kita bahas salah satu upaya peningkatan kinerja prosesor superscalar secara khusus dalam hal reconfigurasi floating point unit (FPU).

RISC (Reduced Instruction Set Computer)

RISC adalah singkatan dari Reduced Instruction Set Computer yang artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang kompleks atau sederhana (reduced).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.

karakteristik khas dari RISC
Untuk setiap tingkat kinerja umum, chip RISC biasanya akan memiliki lebih sedikit transistor didedikasikan untuk logika inti yang awalnya memungkinkan para desainer untuk meningkatkan ukuran register set dan meningkatkan paralelisme internal. Fitur lain, yang biasanya ditemukan di arsitektur RISC adalah:
desain RISC juga lebih mungkin untuk fitur memori model Harvard , di mana aliran instruksi dan aliran data secara konseptual yang dipisahkan; ini berarti bahwa memodifikasi memori di mana kode diadakan mungkin tidak mempunyai efek pada instruksi dieksekusi oleh prosesor (karena CPU memiliki instruksi terpisah dan data cache ), setidaknya sampai sebuah instruksi sinkronisasi khusus diterbitkan. Pada terbalik, kedua cache ini memungkinkan untuk diakses secara simultan, yang sering dapat meningkatkan kinerja..Banyak awal desain RISC juga berbagi karakteristik memiliki cabang delay slot . Sebuah delay slot cabang adalah ruang instruksi segera menyusul melompat atau cabang. Instruksi di ruang ini dijalankan, apakah cabang tersebut diambil (dengan kata lain efek dari cabang tertunda. Instruksi ini menyimpan ALU dari CPU sibuk untuk waktu tambahan biasanya diperlukan untuk melakukan cabang. Saat ini slot delay cabang dianggap sebagai efek samping yang tidak menguntungkan dari strategi tertentu untuk melaksanakan beberapa desain RISC, dan modern desain RISC umumnya tidak begitu saja (seperti PowerPC , baru-baru ini versi yang lebih dari SPARC, dan MIPS).
Aspek komputasi yang ditinjau dalam merancang mesin RISC adalah sbb.:
>>Operasi-operasi yang dilakukan:
Hal ini menentukan fungsi-fungsi yang akan dilakukan oleh CPU dan interaksinya dengan memori.
>> Operand-operand yang digunakan:
Jenis-jenis operand dan frekuensi pemakaiannya akan menentukan organisasi memori untuk
menyimpannya dan mode pengalamatan untuk mengaksesnya.
>> Pengurutan eksekusi:
Hal ini akan menentukan kontrol dan organisasi pipeline.

Interuksi komputer

Operation Code (opcode) : menentukan operasi yang akan dilaksanakan
Source Operand Reference : merupakan input bagi operasi yang akan dilaksanakan
Result Operand Reference : merupakan hasil dari operasi yang dilaksanakan
Next instruction Reference : memberitahu CPU untuk mengambil (fetch) instruksi berikutnya setelah instruksi yang dijalankan selesai.
Source dan result operands dapat berupa salah

Satu diantara tiga jenis berikut ini:

* Main or Virtual Memory


* CPU Register


* I/O Device

DESAIN SET INSTRUKSI

Desain set instruksi merupakan masalah yang

sangat komplek yang melibatkan banyak aspek,

diantaranya adalah:

1. Kelengkapan set instruksi

2. Ortogonalitas (sifat independensi

instruksi)

3. Kompatibilitas :

- Source code compatibility

- Object code Compatibility

Selain ketiga aspek tersebut juga melibatkan

hal-hal sebagai berikut:

1. Operation Repertoire: Berapa banyak dan operasi apa saja yang disediakan, dan berapa sulit operasinya

2. Data Types: tipe/jenis data yang dapat olah

Instruction Format: panjangnya, banyaknya alamat, dsb.

3. Register: Banyaknya register yang dapat digunakan

4.Addressing: Mode pengalamatan untuk operand

FORMAT INSTRUKSI

* Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).

OPCODE

OPERAND REFERENCE

OPERAND REFERENCE


JENIS-JENIS OPERAND

* Addresses (akan dibahas pada addressing modes)
* Numbers : - Integer or fixed point

- Floating point

- Decimal (BCD)

* Characters : - ASCII

- EBCDIC

* Logical Data : Bila data berbentuk binary: 0 dan 1

JENIS INSTRUKSI

* Data processing: Arithmetic dan Logic Instructions
* Data storage: Memory instructions
* Data Movement: I/O instructions
* Control: Test and branch instructions

Pengalamatan

  Pengalamatan atau yang lebih dikenal dengan addressing adalah suatu metode yang harus dilakukan oleh CPU untuk memperoleh data dari memori. Secara umum teknik addressing yang sering dilakukan adalah:
1.      Immediate addressing
Operand (data yang akan dikomputasi) berada langsung pada set instruksi.
2.      Direct Addressing
Operand berada pada memori, set instruksi memegang alamat lokasi memori dimana operand tersebut berada.
3.      Indirect Addresing
Operand berada pada memori, untuk mendapatkan operand ini CPU harus melakukan penelusuran dua kali yaitu dari data alamat memori yang ada pada set instruksi serta alamat yang ditunjuk oleh alamat memori yang diperoleh dari set instruksi tadi.
4.      Register addressing
Operand berada pada register, cara kerjanya mirip dengan direct addressing hanya saja CPU mengakses alamat register bukan alamat memori.
5.      Register Indirect Addressing
Operand berada pada memori, untuk mendapatkan operand CPU harus mengakses register terlebih dahulu karena informasi lokasi operand berada pada register.
6.      Displacement
Operand berada pada memori, cara kerjanya merupakan gabungan dari teknik direct addressing dan register indirect addressing.
7.      Stack
Operand berada pada stack, operand secara berkala dimasukan ke stack sehingga ketika operand dibutuhkan maka operand sudah berada pada “top of the stack”.
            Teknik pengalamatan tersebut harus dapat memenuhi kebutuhan komputasi yang dilakukan oleh computer yang secara garis besar dapat dibagi kedalam tiga kategori yaitu:
-         Operasi load (memasukan data).
-         Operasi branch (percabangan).
-         Operasi aritmatik dan logika.

Interuksi komputer

Perintah yang dibicarakan di atas bukan perintah seperti bahasa manusiawi. Komputer hanya mempunyai perintah sederhana dalam jumlah terbatas yang dirumuskan dengan baik. Perintah biasa yang dipahami kebanyakan komputer ialah "menyalin isi sel 123, dan tempat tiruan di sel 456", "menambahkan isi sel 666 ke sel 042, dan tempat akibat di sel 013", dan "jika isi sel 999 adalah 0, perintah berikutnya anda di sel 345".

Instruksi diwakili dalam komputer sebagai nomor - kode untuk "menyalin" mungkin menjadi 001, misalnya. Suatu himpunan perintah khusus yang didukung oleh komputer tertentu diketahui sebagai bahasa mesin komputer. Dalam praktiknya, orang biasanya tidak menulis perintah untuk komputer secara langsung di bahasa mesin tetapi memakai bahasa pemrograman "tingkat tinggi" yang kemudian diterjemahkan ke dalam bahasa mesin secara otomatis oleh program komputer khusus (interpreter dan kompiler). Beberapa bahasa pemrograman berhubungan erat dengan bahasa mesin, seperti assembler (bahasa tingkat rendah); di sisi lain, bahasa seperti Prolog didasarkan pada prinsip abstrak yang jauh dari detail pelaksanaan sebenarnya oleh mesin (bahasa tingkat tinggi)

ARITMATIKA KOMPUTER

Tipe data :
1. Data Numerik : merepresentasikan integer dan pecahan fixed-point, real floating-point dan desimal berkode biner.
2. Data Logikal : digunakan oleh operasi logika dan untuk menentukan atau memeriksa kondisi seperti yang dibutuhkan untuk instruksi bercabang kondisi.
3. Data bit-tunggal : untuk operasi seperti SHIFT, CLEAR dan TEST.
4. Data Alfanumerik : data yang tidak hanya dikodekan dengan bilangan tetapi juga dengan huruf dari alpabet dan karakter khusus lainnya

KODE BINER
1. BCD (Binary Coded Decimal)
- Mengkodekan setiap digit desimal dengan 4 bit.
- Disebut juga kode 8421 artinya MSB mempunyai bobot 8, sedang LSB mempunyai bobot 1.
2. Kode Gray
- Kenaikan hitungan (penambahan) dilakukan hanya dengan pengubahan keadaan satu bit saja.
Kode Gray sering digunakan dalam situasi dimana kode biner yang lainnya mungkin menghasilkan kesalahan atau kebingungan selama dalam transisi dari satu word kode ke word kode yang lainnya, dimana lebih dari satu bit dari kode diubah.
3. KODE ASCII
- Kode ASCII termasuk kode Alfanumerik.

SISTEM BILANGAN
1. BINER (radiks / basis 2)
- Notasi : (n)2.
- Simbol : angka 0 dan 1.
2. OKTAL (radiks / basis 8)
- Notasi : (n)8
- Simbol : angka 0, 1, 2, 3, 4, 5, 6, 7
3. DESIMAL (radiks / basis 10)
- Notasi : (n)10
- Simbol : angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
4. HEKSADESIMAL (radiks / basis 16)
- Notasi : (n)16
- Simbol : angka 0,1,2,3,4,5,6,7,8,9,A,B, C,D,E,F

Semua operasi aritmatik dilakukan oleh ALU.
ALU : merupakan bagian cpu yang berfungsi membentuk operasi-operasi aritmatika dan logika terhadap data.
Hubungan interkoneksi ALU dengan:
register: tempat penyimpanan data sementara dalam CPU selama proses eksekusi.
flag diset ALU:sebagai hasil dari suatu operasi,misalnya: over flag, diset 1 bila hasil komputasi melampaui panjang register tempat flag disimpan.
unit control: menghasilkan sinyal yang akan mengontrol operasi ALU dan pemindahan data ke dan dari ALU 

SISTEM OPERASI

Sistem operasi merupakan sebuah penghubung antara pengguna dari computer dengan perangkat keras komputer. Sebelum ada system operasi, orang hanya mengunakan computer dengan menggunakan sinyal analog dan sinyal digital. Seiring dengan berkembangnya pengetahuan dan teknologi, pada saat ini terdapat berbagai system operasi dengan keunggulan masing-masing. Untuk lebih memahami system operasi maka sebaiknya perlu diketahui terlebih dahulu beberapa konsep dasar mengenai system operasi itu sendiri. Pengertian system operasi secara umum ialah pengelola seluruh sumber-daya yang terdapat pada system computer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya system komputer.
Sistem computer pada dasarnya terdiri dari empat komponen utama, yaitu perangkat-keras, program aplikasi, sistem-operasi, dan para pengguna. Sistem operasi berfungsi untuk mengatur dan mengawasi penggunaan perangkat keras oleh berbagai program aplikasi serta para pengguna. Sistem operasi berfungsi ibarat pemerintah dalam suatu negara, dalam arti membuat kondisi computer agar dapat menjalankan program secara benar. Untuk menghindari konflik yang terjadi pada saat pengguna menggunakan sumber-daya yang sama, system operasi mengatur pengguna mana yang dapat mengakses suatu sumber-daya. Sistem operasi juga sering disebut resource allocator. Satulagifungsi penting system operasi ialah sebagai program pengendali yang bertujuan untuk menghindari kekeliruan (error) dan penggunaan computer yang tidak perlu.

I/O

Unit Input/Output (I/O) adalah bagian dari sistem mikroprosesor yang digunakan oleh mikroprosesor itu untuk berhubungan dengan dunia luar.

Unit input adalah unit luar yang digunakan untuk memasukkan data dari luar ke dalam mikroprosesor ini, contohnya data yang berasal dari keyboard atau mouse. Sementara unit output biasanya digunakan untuk menampilkan data, atau dengan kata lain untuk menangkap data yang dikirimkan oleh mikroprosesor, contohnya data yang akan ditampilkan pada layar monitor atau printer.

Bagian input (masukan) dan juga keluaran (output) ini juga memerlukan sinyal kontrol, antara lain untuk baca I/O (Input/Ouput Read [IOR]) dan untuk tulis I/O (Input/Output Write [IOW]).

MEMORI

Memori (atau lebih tepat disebut memori fisik) merupakan istilah generik yang merujuk pada media penyimpanan data sementara pada komputer. Setiap program dan data yang sedang diproses oleh prosesor akan disimpan di dalam memori fisik. Data yang disimpan dalam memori fisik bersifat sementara, karena data yang disimpan di dalamnya akan tersimpan selama komputer tersebut masih dialiri daya (dengan kata lain, komputer itu masih hidup). Ketika komputer itu direset atau dimatikan, data yang disimpan dalam memori fisik akan hilang. Oleh karena itulah, sebelum mematikan komputer, semua data yang belum disimpan ke dalam media penyimpanan permanen (umumnya berbasis disk, semacam hard disk atau floppy disk), sehingga data tersebut dapat dibuka kembali di lain kesempatan. Memori fisik umumnya diimplementasikan dalam bentuk Random Access Memory (RAM), yang bersifat dinamis (DRAM). Mengapa disebut Random Access, adalah karena akses terhadap lokasi-lokasi di dalamnya dapat dilakukan secara acak (random), bukan secara berurutan (sekuensial). Meskipun demikian, kata random access dalam RAM ini sering menjadi salah kaprah. Sebagai contoh, memori yang hanya dapat dibaca (ROM), juga dapat diakses secara random, tetapi ia dibedakan dengan RAM karena ROM dapat menyimpan data tanpa kebutuhan daya dan tidak dapat ditulisi sewaktu-waktu. Selain itu, hard disk yang juga merupakan salah satu media penyimpanan juga dapat diakses secara acak, tapi ia tidak digolongkan ke dalam Random Access Memory.

SISTEM BUS

System bus atau bus sistem, dalam arsitektur komputer merujuk pada bus yang digunakan oleh sistem komputer untuk menghubungkan semua komponennya dalam menjalankan tugasnya. Sebuah bus adalah sebutan untuk jalur di mana data dapat mengalir dalam komputer. Jalur-jalur ini digunakan untuk komunikasi dan dapat dibuat antara dua elemen atau lebih. Data atau program yang tersimpan dalam memori dapat diakses dan dieksekusi oleh CPU melalui perantara sistem bus.
Sebuah komputer memiliki beberapa bus, agar dapat berjalan. Banyaknya bus yang terdapat dalam sistem, tergantung dari arsitektur sistem komputer yang digunakan. Sebagai contoh, sebuah komputer PC dengan prosesor umumnya Intel Pentium 4 memiliki bus prosesor (Front-Side Bus), bus AGP, bus PCI, bus USB, bus ISA (yang digunakan oleh keyboard dan mouse), dan bus-bus lainnya.
Bus disusun secara hierarkis, karena setiap bus yang memiliki kecepatan rendah akan dihubungkan dengan bus yang memiliki kecepatan tinggi. Setiap perangkat di dalam sistem juga dihubungkan ke salah satu bus yang ada. Sebagai contoh, kartu grafis AGP akan dihubungkan ke bus AGP. Beberapa perangkat lainnya (utamanya chipset atau kontrolir) akan bertindak sebagai jembatan antara bus-bus yang berbeda. Sebagai contoh, sebuah kontrolir bus SCSI dapat mengubah sebuah bus menjadi bus SCSI, baik itu bus PCI atau bus PCI Express.
Berdasar jenis busnya, bus dapat dibedakan menjadi bus yang khusus menyalurkan data tertentu, contohnya paket data saja, atau alamat saja, jenis ini disebut dedicated bus. Namun apabila bus yang dilalui informasi yang berbeda baik data, alamat, dan sinyal kontrol dengan metode multipleks data maka bus ini disebut multiplexed bus. Kekurangan multiplexed bus adalah hanya memerlukan saluran sedikit sehingga menghemat tempat tapi kecepatan transfer data menurun dan diperlukan mekanisme yang komplek untuk mengurai data yang telah dimultipleks. Sedangkan untuk dedicated bus merupakan kebalikan dari multipexed bus.
Beberapa bus utama dalam sistem komputer modern adalah sebagai berikut:
  • Bus prosesor. Bus ini merupakan bus tercepat dalam sistem dan menjadi bus inti dalam chipset dan motherboard. Bus ini utamanya digunakan oleh prosesor untuk meneruskan informasi dari prosesor ke cache atau memori utama ke chipset kontrolir memori (Northbridge, MCH, atau SPP). Bus ini juga terbagi atas beberapa macam, yakni Front-Side Bus, HyperTransport bus, dan beberapa bus lainnya. Sistem komputer selain Intel x86 mungkin memiliki bus-nya sendiri-sendiri. Bus ini berjalan pada kecepatan 100 MHz, 133 MHz, 200 MHz, 266 MHz, 400 MHz, 533 MHz, 800 MHz, 1000 MHz atau 1066 MHz. Umumnya, bus ini memiliki lebar lajur 64-bit, sehingga setiap detaknya ia mampu mentransfer 8 byte.
  • Bus AGP (Accelerated Graphic Port). Bus ini merupakan bus yang didesain secara spesifik untuk kartu grafis. Bus ini berjalan pada kecepatan 66 MHz (mode AGP 1x), 133 MHz (mode AGP 2x), atau 533 MHz (mode AGP 8x) pada lebar jalur 32-bit, sehingga bandwidth maksimum yang dapat diraih adalah 2133 MByte/s. Umumnya, bus ini terkoneksi ke chipset pengatur memori (Northbridge, Intel Memory Controller Hub, atau NVIDIA nForce SPP). Sebuah sistem hanya dapat menampung satu buah bus AGP. Mulai tahun 2005, saat PCI Express mulai marak digunakan, bus AGP ditinggalkan.
  • Bus PCI (Peripherals Component Interconnect). Bus PCI tidak tergantung prosesor dan berfungsi sebagai bus peripheral. Bus ini memiliki kinerja tinggi untuk sistem I/O berkecepatan tinggi. Bus ini berjalan pada kecepatan 33 MHz dengan lebar lajur 32-bit. Bus ini ditemukan pada hampir semua komputer PC yang beredar, dari mulai prosesor Intel 486 karena memang banyak kartu yang menggunakan bus ini, bahkan hingga saat ini. Bus ini dikontrol oleh chipset pengatur memori (northbridge, Intel MCH) atau Southbridge (Intel ICH, atau NVIDIA nForce MCP).
  • Bus PCI Express (Peripherals Component Interconnect Express)
  • Bus PCI-X (Peripherals Component Interconnect Express)
  • Bus ISA (Industry Standard Architecture)
  • Bus EISA (Extended Industry Standard Architecute)
  • Bus MCA (Micro Channel Architecture)
  • Bus SCSI (Small Computer System Interface]]. Bus ini diperkenalkan oleh Macintosh pada tahun 1984. SCSI merupakan antarmuka standar untuk drive CD-ROM, peralatan audio, harddisk, dan perangkat penyimpanan eksternal berukuran besar
  • Bus USB (Universal Serial Bus). Bus ini dikembangkan oleh tujuh vendor komputer, yaitu Compaq, DEC, IBM, Intel, Microsoft, NEC, dan Northern Telecom. Bus ini ditujukan bagi perangkat yang memiliki kecepatan rendah seperti keyboard, mouse, dan printer karena tidak akan efisien jika perangkat yang berkecepatan rendah dipasang pada bus berkecepatan tinggi seperti PCI. Keuntungan yang didapat dari bus USB antara lain : tidak harus memasang jumper, tidak harus membuka casing untuk memasang peralatan I/O, hanya satu jenis kabel yang digunakan, dapat mensuplai daya pada peralatan I/O, tidak diperlukan reboot.
  • Bus 1394. Bus yang mempunyai nama FireWire memiliki kecepatan tinggi diatas SCSI dan PCI. Bus 1394 sangat cepat, murah, dan mudah untuk diimplementasikan. Bus ini tidak hanya populer perangkat komputer tetapi juga perangkat elektronik seperti kamera digital, VCR, dan televisi.

EVOLUSI DAN PERKEMBANGAN KOMPUTER

ENIAC
-DIbuat Pada Tahun 1943 dan selesai 1946
-Digunakan untuk mengukur jarak peluru
-Sangat terlambat di gunakan untuk perang dunia II
-ENIAC di gunakan sampai tahun 1955
-Di Program Dengan Switch(saklar)
-Konsumsi Daya 140kW

Von neumann
-Konsep  > Digunakan untuk penyimpanan program komputer
-Memori > Penyimpanan Data & program
-Perangkat I/O di kendalikan unit control
-ALU > operasi data biner
-Selesai 1952

Komputer Komersial
 
UNIVAC I (UNIVERSAL AUTOMATIC COMPUTER)
-1947 dikembangkan oleh Eckert-Mauchly Computer Corporation
-Digunakan untuk kalkulasi sensus 1950 oleh US Bureau of Sensus
Menjadi Divisi dari Sperry-Rand Corporation
UNIVAC II DIpasarkan Akhir tahun 1950-an
   Kelebihan
-Lebih cepat
-Kapasitas memori bertambah

 Generasi Komputer
  Vacuum tube - 1946-1957
  Transistor - 1958-1964
  Small scale integration - 1965
Ü  Sampai dengan 100 komponen dalam 1 IC (chip)
  Medium scale integration - sampai 1971
Ü  100-3.000 komponen dalam 1 IC
  Large scale integration - 1971-1977
Ü  3.000 – 100.000 komponen dalam 1 IC
  Very large scale integration - 1978 -1991
Ü  100.000 – 100.000,000 komponen dalam 1 IC
  Ultra large scale integration – 1991 -
Ü  Lebih dari 100.000.000 komponen dalam 1 IC

Organisasi Komputer

Organisasi Bagaimana suatu perangkat diimplementasikan
Sinyal kontrol, interface dan memori
Arsitektur  Atribut yang berhubungan dengan programmer
Kumpulan bit, jumlah bit yang digunakan untuk representasi data, mekanisme I/O, teknik pengalamatan

Arsitektur sama, organisasi dapat berbeda
Arsitektur bertahan lama, organisasi menyesuaikan perkembangan teknologi
Semua keluarga Intel x86 mempunyai dasar arsitektur yang sama
Semua keluarga IBM system/370 mempunyai dasar arsitektur yang sama
Memberikan kompatibilitas kode
Organisasi berbeda jika versi berbeda

FUNGSI DAN STRUKTUR
Fungsi merupakan operasi dari masing-masing komponen sebagai bagian dari struktur
Struktur adalah bagaimana masing-masing komponen saling berhubungan satu sama lain