Saturday, November 5, 2016

Central Processing Unit (CPU)

Central Processing Unit (CPU)
CPU merupakan salah satu bagian penting yang harus ada dalam perangkat komputer. Tanpa kehadiran CPU, sebuah perangkat komputer tidak akan bisa digunakan sama sekali, meskipun semua perangkat lainnya (seperti mouse, keyboard, speaker, monitor, dll) sudah terpasang dengan baik. Sebaliknya, tanpa beberapa perangkat lainnya (seperti speaker, mouse, atau pun keyboard), sebuah perangkat komputer masih dapat digunakan selama di dalamnya ada perangkat CPU dan perangkat keras penting lainnya. CPU pada dasarnya merupakan singkatan dari Central Processing Unit yang artinya unit pusat pemrosesan. Jika diartikan secara lengkap, maka pengertian CPU adalah perangkat keras khusus yang bertugas untuk mengeksekusi atau pun memproses semua data yang ada pada perangkat komputer.




Komponen CPU dapat dibagi menjadi beberapa macam, yaitu sebagai berikut:

Sistem Bus 
Sistem Bus 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.




Suatu sistem digital pada umumnya memiliki banyak komponen register. Interkoneksi antar komponen diperlukan untuk transfer data dari satu komponen ke komponen yang lainnya. Untuk efesiensi dalam transfer data tersebut digunakan suatu sistem untuk berbagi saluran yang disebut bus. Bus adalah sekelompok kawat penghubung yang digunakan sebagai jalur untuk menyalurkan bit-bit biner. Ada tiga jenis bus pada sistem prosesor : bus data, bus alamat, dan bus kontrol.

1. Bus data digunakan untuk mentransfer data antara CPU dengan elemen elemen lain di dalam sistem. Bus data bersifat bidirectional, bisa menerima data dan juga mengirimkan data. Juga terdapat internal data bus untuk transfer data sesama elemen CPU, yang dihubungkan ke bus data sistem melalui Memory Buffer Register (MBR). MBR merupakan buffer dua arah.

2. Bus alamat membawa alamat dari lokasi memori, untuk mengambil data agar dapat dibaca atau untuk menyimpan agar dapat ditulis. Bus alamat dapat juga mengalamati elemen elemen lain di dalam sistem seperti unit antarmuka masukan/keluaran. Bus alamat dapat membawa 16 bit informasi digital secara serempak.

3.Bus kontrol membawa semua isyarat kontrol dari CPU. Fungsi utama bus kontrol adalah: sinkronisasi memori dan I/O, penjadwalan CPU (misalnya interupsi), dan tugas lain seperti reset dan clock. Sebelum memasuki address bus sistem maupun control bus sistem, informasi terlebih dahulu melewati Memory Address Register (MAR), yang merupakan buffer satu arah.


Sruktur Sistem BUS yaitu: 

- Saluran data
Saluran data memberikan lintasan bagi perpindahan data antara dua modul sistem. Lebar bus data perupakan faktor penting dalam menentukan kinerja sistem secara keseluruhan.

- Saluran Alamat
Saluran alamat digunakan untuk menandakan sumber atau tujuan data pada bus data.

- Saluran Kontrol
Saluran kontrol digunakan untuk mengontrol akses ke saluran alamat dan penggunaan data.



ALU ( Arithmetic And Logic Unit ) 
ALU adalah salah satu bagian dalam dari sebuah mikroprosesor yang berfungsi untuk melakukan operasi hitungan aritmatika dan logika. Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan, sedangkan contoh operasi logika adalah logika AND dan OR. 

Tugas utama dari ALU adalah melakukan semua perhitungan aritmatika atau matematika yang terjadi sesuai dengan instruksi program. ALU melakukan operasi aritmatika yang lainnya. Seperti pengurangan, pengurangan, dan pembagian dilakukan dengan dasar penjumlahan. Sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi aritmatika ini disebut adder. ALU melakukan operasi arithmatika dengan dasar pertambahan, sedang operasi arithmatika yang lainnya, seperti pengurangan, perkalian, dan pembagian dilakukan dengan dasar penjumlahan. sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi arithmatika ini disebut adder. Tugas lalin dari ALU adalah melakukan keputusan dari operasi logika sesuai dengan instruksi program.

Unit kendali (Control Unit ) adalah salah satu bagian dari CPU yang bertugas untuk memberikan arahan/kendali/ kontrol terhadap operasi yang dilakukan di bagian ALU (Arithmetic Logical Unit) di dalam CPU tersebut. Output dari CU ini akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut. 

Tugas dari CU adalah sebagai berikut: 
*Mengatur dan mengendalikan alat-alat input dan output. 
*Mengambil instruksi-instruksi dari memori utama. 
*Mengambil data dari memori utama kalau diperlukan oleh proses. 
*Mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandingan logika serta mengawasi kerja. 
*Menyimpan hasil proses ke memori utama.

Central Logic Unit

Bertugas mengatur dan mengendalikan semua peralatan yang ada di sistem komputer, yaitu :
- mengatur dan mengendalikan alat-alat input dan output
- mengambil instruksi-instruksi dari memori utama
- mengambil data dari memori utama untuk diproses
- mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandingan logika serta mengawasi kerja dari ALU
- mengirim hasil proses ke memori utama untuk disimpan dan pada saatnya disajikan ke alat output.

Set Register
Register merupakan perangkat memori sementara yang menyimpan data. Register membantu CPU dalam melaksanakan instruksi. Mereka dikelola oleh unit kontrol. Register berfungsi untuk tempat penyimpanan yang berisi data dan informasi lainnya yang sering dibutuhkan ketika sebuah program sedang berjalan. Register dimaksudkan untuk dapat diakses dengan sangat cepat. Yang termasuk register di antaranya adalah register uji dan instruksi. Register instruksi berisi instruksi CPU sedangkan register uji dimaksudkan untuk menyimpan hasil kerja yang dilakukan oleh CPU.


Macam-macam Jenis dan Fungsi Register

Berikut ini jenis dan fungsi dari masing-masing Register yaitu :

a. General Purpose Register (Register Serbaguna)

Register untuk keperluan umum yang terdiri atas :

a. Register AX (Accumulator register) berfungsi sebagai tempat:
Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX)

- Memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH).
- Menyimpan bilangan yang dikalikan (reg AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).
- Menyimpan setengah bagian terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi (AL, AX, EAX).

b. Register BX (Base Register)
Base register adalah register untuk menyimpan alamat offset data yang terletak di memori (BL, BH, BX dan EBX)

c. Register CX (Counter Register)
Counter register adalah register serbaguna yang berfungsi sebagai:

- Pencacah untuk operasi loop (CX dan ECX)
- Pencacah untuk operasi shift dan rotate (CL)
- Pencacah (counter) untuk operasi string (CX)

d. Register DX (Data register)
Data register adalah register serbaguna yang berfungsi sebagai :

- Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).
- Penyimpan hasil pembagian (DX-AX dan EDX-EAX)
- Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar monitor.

2. Pointer Register
Register ini untuk menunjukkan alamat sebuah data di lokasi memori, dipakai saat operasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) dan penunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointer register: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (Instruction Pointer).

3. Index Register
Sama dengan pointer register, sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi string. Macam-macam register Index adalah : SI (Source Index), DI (Destination Index).

4. Segment Register
Segment register membentuk alamat memori untuk data. Pada operasi real mode suatu segment register akan berbeda dengan segment register pada operasi protected mode. Yang termasuk ke dalam segment register antara lain :

- Code segment -> untuk menunjukkan alamt instruksi berikutnya.
- Data segment -> untuk menunjukkan alamat data pada transfer register
- Extra segment -> register tambahan untuk operasi string
- Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatu prosedur (CALL) dan mengarah ke program utama (RET).
- FS dan GS register -> register tambahan u/ segmen memori yang besar.

5. Flag Register
Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.
Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Adapun kode bit yaitu sebagai berikut :

- C (carry) -> 1=ada carry out 0= tdk ada carry out
- P (Parity) -> 1=paritas genap 0= paritas ganjil
- A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry
- Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol
- S (sign) -> 1=hasilnya negatif 0=hasilnya positif
- T (trap) -> bila diset 1 dimungkinkan melakukan debugging.
- I (interrupt) -> 1= pin INTR enable 0=pin INTR disable
- D (direction) -> 1=cacahan turun 0=cacahan naik
- (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak
- IOPL (input-output privalege level) -> untuk protected mode
- NT (nested task) -> indikasi dari penggabungan dengan operasi lain.
- RF (resume) -> untuk debugging
- VF (Virtual mode) -> untuk operasi virtual pada protected mode
- AC (alignment check) -> untuk data word dialamati ke memori

Register merupakan tempat menyimpan data sementara yang berada dalam CPU. Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index Register, Segment Register, Flag Register. Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh pembuat mikroprosesor.

Referensi :

Arsitektur Set Instruksi

Set instruksi (instruction set) adalah sekumpulan lengkap instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi sering juga disebut sebagai bahasa mesin (machine code), karna aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa assembly, untuk konsumsi manusia (programmer), biasanya digunakan representasi yang lebih mudah dimengerti oleh manusia.

Sebuah instruksi terdiri dari sebuah opcode, biasanya bersama dengan beberapa informasi tambahan seperti darimana asal operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek umum untuk menspesifikasikan di mana operand-operand berada (yaitu, alamat-alamatnya) disebut pengalamatan.

Pada beberapa mesin, semua instruksi memiliki panjang yang sama, pada mesin-mesin yang lain mungkin terdapat banyak panjang berbeda. Instruksi-instruksi mungkin lebih pendek dari, memiliki panjang yang sama seperti, atau lebih panjang dari panjang word. Membuat semua instruksi memiliki panjang yang sama lebih muda dilakukan dan membuat pengkodean lebih mudah tetapi sering memboroskan ruang, karena semua instruksi dengan demikian harus sama panjang seperti instruksi yang paling panjang.
Di dalam sebuah instruksi terdapat beberapa elemen-elemen instruksi yaitu:
1. Operation code (op code)
2. Source operand reference
3. Result operand reference
4. Xext instruction preference

Karakteristik dan Fungsi set instruksi
Operasi dari CPU ditentukan oleh instruksi-instruksi yang dilaksanakan atau dijalankannya. Instruksi ini sering disebut sebagai instruksi mesin (mechine instructions) atau instruksi komputer (computer instruction).
Kumpulan dari instruksi-instruksi yang berbeda yang dapat dijalankan oleh CPU disebut set instruksi (instruction set)

Perbandingan set instruksi
Beberapa computer CISC (Complex Instruction Set Computer) menggunakan cara implist dalam menentukan mode addressing pada setiap set instruksinya. Penentuan mode addressing dengan cara implicit memiliki arti bahwa pada set instruksi tidak di ada bagian yang menyatakan tipe dari mode addressing yang digunakan, deklarasi dari mode addressing itu berada menyatu dengan opcode. Lain hal nya dengan cara imsplisit, cara eksplisit sengaja menyediakan tempat pada set instruksi untuk mendeklarasikan tipe mode addressing. Pada cara eksplisit deklarasi opcode dan mode addressing berada terpisah.
Data pada tempat deklarasi mode addressing diperoleh dari logaritma basis dua jumlah mode addressing. Jika deklarasi mode addressing dilakukan secara implicit akan menghemat tempat dalam set instruksi paling tidak satu bit untuk IBM 3090 dan 6 bit untuk MC68040. Perubahan satu bit pada set instruksi akan memberikan jangkauan alamat memori lebih luas mengingat range memori dinyatakan oleh bilangan berpangkat dua.
  
Elemen-elemen dari intruksi mesin (set instruksi)

* 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


Arithmetic

Tindakan CPU untuk melakukan operasi arithmetic : 
Transfer data sebelum atau sesudah. 
Melakukan fungsi dalam ALU. 
Menset kode-kode kondisi dan flag. 

Operasi set instruksi untuk arithmetic :
1. ADD : penjumlahan 5. ABSOLUTE
2. SUBTRACT : pengurangan 6. NEGATIVE
3. MULTIPLY : perkalian 7. DECREMENT
4. DIVIDE : pembagian 8. INCREMENT
Nomor 5 sampai 8 merupakan instruksi operand tunggal. LOGICAL

* Tindakan CPU sama dengan arithmetic
* Operasi set instruksi untuk operasi logical :
1. AND, OR, NOT, EXOR
2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin. 


Transfer Data 
 A. Menetapkan lokasi operand sumber dan operand tujuan.
 B. Lokasi-lokasi tersebut dapat berupa memori, register atau bagian paling atas daripada stack.
 C. Menetapkan panjang data yang dipindahkan.
 D. Menetapkan mode pengalamatan.
 E. Tindakan CPU untuk melakukan transfer data adalah :
    a. Memindahkan data dari satu lokasi ke lokasi lain.
    b. Apabila memori dilibatkan :
          1. Menetapkan alamat memori.
          2. Menjalankan transformasi alamat memori virtual ke alamat memori aktual.
          3. Mengawali pembacaan / penulisan memori

Operasi set instruksi untuk transfer data : 
MOVE : memindahkan word atau blok dari sumber ke tujuan
STORE : memindahkan word dari prosesor ke memori.
LOAD : memindahkan word dari memori ke prosesor.
EXCHANGE : menukar isi sumber ke tujuan.
CLEAR / RESET : memindahkan word 0 ke tujuan.
SET : memindahkan word 1 ke tujuan.
PUSH : memindahkan word dari sumber ke bagian paling atas stack.
POP : memindahkan word dari bagian paling atas sumber

Desain set instruksi
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya adalah :
Kelengkapan set instruksi
Ortogonalitas (sifat independensi)
Kompabilitas (source code compatibility dan object code compatibility).
Selain melibatkan ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut :
Operation repertoire: berapa banyak dan operasi apa saja yang disediakan, banyaknya alamat, dsb.
Data types: tipe/jenis data yang dapat olah instruction format: panjangnya, banyak alamat, dsb.
Register: banyaknya register yang dapat digunakan.
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).

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

Referensi: