PROSESOR(microprocesor)
Prosesor adalah otak komputer. “otak” yang merupakan
pengendali utama semua operasi dalam sistem komputer. Mikroprosesor mengambil
instruksi biner dari memori, menerjemahkannya menjadi serangkaian aksi dan
menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke memori,
operasi aritmatika dan logika, atau pembangkitan sinyal kendali.
Bagian
– bagian terpenting dalam prosesor:
a.
Arithmatic
Logic Unit (ALU) untuk melakukan semua perhitungan aritmatika(matematika) yang
terjadi sesuai dengan instruksi program. ALU adalah bagian dari komputer yang
sebenarnya menampilakan operasi arithmatic dan logic pada data. Semua element dalam
system komputer seperti control unit, memori, I/O yang membawa data ke dalam
ALU untuk diproses dan kemudian mengambil hasil setelah itu keluar dan kembali
lagi ke memory untuk ditampilkan. Semua komponen elektronik di computer pada
dasarnya menggunakan alat logika digital sederhana itu bisa berupa binary digit
dan menampilkan operasi logica boolean sederhana.
Dalam sistem
binary code hanya terdiri dari 2 angka yaitu angka 1 dan 0. seperti dibawah
ini.
-1101.01012
= 13.312510
|
b.
Control
Unit (CU) untuk mengatur lalulintas data seperti input dan output.
c.
Memory
Unit (MU) alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi.
Fungsi
prosesor adalah untuk memproses data yang diterima dari inputan kemudian akan
menghasilkan pengeluaran berupa output. Prosesor tidak dapat bekerja sendiri
namun terus berhubungan dengan komponen lain seperti hardiks dan RAM. Prosess
cepat atau lambat tergantung dari prosesor tersebut. Sekarang prosesor dengan
kecepatan tinggi mencapai 4 gigaherz(ghz) artinya dapat membaca 4000 miliar
perintah dalam sekali pengerjaannya.
Sejarah
Mikroprosesor
Iklan
pertama untuk mikroprosesor muncul di Electronic News. Federico Faggin, Ted
Hoff, dan timnya di Intel Corporation mendesain mikroprosesor 4004 ketika
membuat sebuah IC pesanan untuk Busicom, sebuah perusahaan kalkulator Jepang.
Mikroprosesor 4004 mempunyai 2.250 transistor PMOS, menangani data 4 bit, dan
dapat mengeksekusi 60 ribu operasi per detik. Mikroprosesor 4004 ini adalah
salah satu dari seri IC untuk komponen
kalkulator tersebut: 4001: memori ROM 2.048 bit; 4002: memori RAM 320 bit;
serta 4003: register geser I/O 10 bit.
Pada
tahun 1972, 8008 dengan bus data 8 bit digunakan oleh Don Lancaster untuk
membuat cikal-bakal personal komputer. 8008 membutuhkan 20 komponen tambahan
untuk dapat bekerja penuh sebagai CPU. Lalu tahun 1974, 8080 menjadi otak
personal pertama komputer, Altair, diduga merupakan nama tujuan pesawat
Starship Enterprise di film TV Star Trek. 8080 hanya membutuhkan 2 perangkat
tambahan untuk bekerja. Selain itu 8080 terbuat dari transistor NMOS yang
bekerja lebih cepat. 8080 disebut
sebagai mikroprosesor generasi kedua. Segera sesudah itu Motorolla membuat
MC6800 yang juga merupakan CPU multiguna. MC6800 sangat populer karena
menggunakan catu daya +5V, dibanding 8080 dengan catu daya –5V, +5V, -12V, dan
+12V. Mikroprosesor lain yang muncul adalah 6502 sebagai CPU komputer Apple II,
dan Zilog Z80 untuk CPU Radio Shack TRS-80.
Tahun
1978, IBM menciptakan personal komputer PC-XT yang sangat populer menggunakan
mikroprosesor 8086 dan 8088. Keduanya mampu menangani data 16 bit. Bedanya
hanya pada ukuran bus data yang hanya 8 bit untuk 8088 (operasi internal 16
bit), dan 16 bit untuk 8086. Kemudian Intel membut 80186 dan 80188 yang juga
berisi perangkat peripheral terprogram. Tahun 1982, 80286 adalah
prosesor pertama yang dapat menjalankan perangkat lunak yang ditulis untuk
pendahulunya, karena instruksi yang dimiliki oleh seri sebelumnya semuanya
dimiliki dan ditambahi dengan instruksi lain. Kompatibilitas ke atas ini
kemudian menjadi ciri khas mikroprosesor Intel. Dalam 6 tahun, ada 15 juta
PC-AT yang menngunakan 80286 sebagai CPU.
Tahun
1985, Intel membuat 80386 (386TM) yang mengandung 275 ribu transistor, dan
merupakan mikroprosesor 32 bit yang dapat melakukan multi tasking
(menjalankan beberapa program dalam waktu yang bersamaan). Tahun 1989, Intel
486TM adalah prosesor pertama yang mempunyai math coprosesor secara built-in
di dalamnya.
Tahun
1993, lahir keluarga prosesor Pentium®. Tahun 1995, prosesor Pentium® Pro
didesain untuk server 32-bit, mengandung 5,5 juta transistor dan mempunyai chip
memori cache kedua di dalamnya. Tahun 1997, dibuat prosesor Pentium® II
dengan 7,5 juta transistor dan teknologi MMX, yang didesain khusus untuk
memproses data video, audio and grafik secara efisien. Prosesor ini juga
diperkenalkan dengan bentuk cartridge Single Edge Contact (S.E.C).
Seiring dengan itu bermunculan seri Celeron yang merupakan versi Pentium dengan
beberapa fitur yang dihilangkan untuk menekan biaya produksi.
Tahun 1999 muncul Pentium
!!! dengan 70 instruksi baru yang mendukung Internet Streaming SIMD. Processor
ini berisi 9,5 juta transistor, dan mengintroduksi teknologi 0,25-micron. Pada
saat ini sedang dikembangkan mikroprosesor 64 bit, sehingga operasi-operasi
matematis yang dilakukan dapat lebih cepat.
Arsitektur Internal Mikroprosesor
Arsitektur umum mikroprosesor
Secara
umum, mikroprosesor berisi unit aritmetika/logika (ALU), register, bus
internal, serta unit kendali, seperti terlihat pada Gambar I-2. Register dan
ALU dihubungkan dengan bus internal dalam mikroprosesor sehingga register dan
memori (melalui bus data) dapat mensuplai data ke ALU dan menerima hasilnya.
Dalam contoh ini, terdapat 2 buah register, A dan B, yang digunakan untuk secara
temporer menyimpan hasil komputasi. Bus internal X dan Y digunakan untuk
mentransfer data sebagai operand yang akan diolah ALU. Bus internal Z
digunakan untuk mentransfer hasil operasi ALU ke register atau memori (melalui
bus data). Register MA(2) (Memory Address) berisi informasi alamat
memori yang akan diakses. Unit kendali mengendalikan semua operasi dalam
mikroprosesor. Perhatikan kepala panah yang menunjukkan arah aliran data.
Sebagai contoh. misalkan
kita hendak menjumlahkan data dari suatu lokasi di memori dengan data dari
register A serta menyimpannya di register B. Register MA diisi dengan alamat memori yang
akan dibaca, lalu register A dihubungkan ke bus X, bus data dihubungkan ke bus
Y, dan bus Z dihubungkan dengan register B, kemudian ALU melakukan operasi
penjumlahan.
Instruksi
yang dijalankan oleh mikroprosesor ada di memori, berupa urutan data-data biner
yang merupakan bahasa mesin mikroprosesor. Mikroprosesor mengambil instruksi
biner tersebut dari memori yang ditunjuk oleh sebuah register yang bernama
Program Counter atau register PC. Mula-mula bus alamat diisi dengan informasi
alamat di mana letak instruksi berikutnya yang hendak dijalankan dengan
register PC. Lalu mikroprosesor mengambil instruksi tersebut melalui bus data
dan menyimpannya di Instruction Register atau register IR. Selanjutnya isi
register PC ditambah satu, dengan demikian akan menunjuk ke alamat memori
berikutnya di mana instruksi berikutnya akan dijalankan lagi. Secara simbolik
kejadian di atas dapat dituliskan sebagai berikut:
Mem(PC)
→ IR
PC
+ 1 → PC
Apabila instruksi yang
sudah terambil belum merupakan instruksi yang utuh (setiap instruksi bisa
tersusun atas lebih dari 1 byte) maka kejadian di atas diulang lagi.
Setelah
register IR berisi instruksi biner, unit kendali lalu menerjemahkannya dan
mengeksekusinya. Apa yang dilakukan oleh mikroprosesor tergantung dari
instruksi yang diberikan tersebut. Misalnya instruksinya adalah operasi
menjumlahan isi register B dengan isi suatu memori dan hasilnya disimpan di
dalam register B lagi (alamat memori yang hendak ditambahkan merupakan bagian
dari instruksi), maka operasi yang akan dijalankan adalah oleh mikroprosesor
adalah:
Mem(PC)
→ MA
PC
+ 1 → PC
B
+ Mem(MA) → B
Intel
8086 adalah mikroprosesor 16 bit, di mana dia dapat bekerja secara internal
menggunakan operasi 16 bit dan secara eksternal dapat mentransfer data 16 bit
melalui bus data. Prosesor 8086 dapat dihubungkan dengan bus alamat yang
berukuran 20 bit, sehingga mampu mengalamati memori maksimal 220 =
1.048.576 byte (1 MB). Diagram blok arsitektur 8086 dapat dilihat pada Gambar
I-3. Mikroprosesor 8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus
interface unit, BIU) dan unit pengeksekusi (execution unit, EU).
Unit Antarmuka Bus (BIU)
Unit
ini merupakan bagian yang berhubungan langsung dengan “pihak luar”: bus alamat
dan bus data. BIU mengirim alamat ke bus alamat, mengambil instruksi (fetch)
dari memori, membaca data dari port dan memori, serta menulis data ke port dan
memori (menangani transfer data antara bus dan unit eksekusi). BIU tersusun
atas:
Instruction
Stream Byte Queue
(ISBQ).
BIU memfetch instruksi dari memori sebanyak-banyaknya 6
buah instruksi ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih
cepat. Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah
register first-in-first-out. BIU dapat melakukan fetching selagi
EU menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan penggunaan
bus (misalnya operasi matematis menggunakan register internal). Ketika EU
selesai melaksanakan suatu instruksi, maka dia tinggal mengambil perintah
berikutnya di ISBQ, tanpa harus mengirim alamat ke memori untuk mengambil
instruksi berikutnya, sehingga eksekusi akan lebih cepat. Kegiatan fetching
instruksi berikutnya selagi menjalankan suatu instruksi disebut sebagai: pipelining.
Pada mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapi
mencapai 512 byte, ini
efektif untuk program yang mempunyai banyak kalang (struktur program yang
berulang).
Register
segmen.
BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS),
data segment (DS), extra segment (ES), dan stack segment
(SS). Sistem komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register
- termasuk register alamat (memory address register) – yang dimilikinya
hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat 20 bit
dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang masing-masing
berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen sebanyak 4 bit
(mengalikan dengan 16), kemudian menambahkan offset untuk memperoleh alamat
fisik memori yang dikirimkan melalui bus alamat. Untuk lebih jelasnya, diberi
contoh untuk memberi alamat fisik $38AB4(3), segmen dapat diisi
dengan angka $348A, dan offset diisi dengan angka $4214, lihat Gambar I-4. Cara
penulisan kombinasi segmen dan offset adalah:
segmen:offset
Sehingga untuk contoh
ini, penulisannya adalah $348A:$4214. Perlu diingat bahwa kita bisa menggunakan
kombinasi nilai segmen dan offset yang bervariasi untuk memberi alamat fisik
yang sama, misalnya $38AB:$0004, $3800:$0AB4, dsb.
segmen:
|
3
|
4
|
8
|
A
|
|||
offset:
|
|||||||
4
|
2
|
1
|
4
|
||||
alamat
fisik:
|
+
|
||||||
3
|
8
|
A
|
B
|
4
|
|||
Gambar
I-4. Contoh cara pengalamatan memori pada mikroprosesor 8086
Secara
umum, suatu program terdiri atas 4 bagian: segmen code yang berisi
instruksi; segmen data, berisi data yang telah dialokasikan sebelumnya
(statik); segmen ekstra, untuk variabel dinamik; serta segmen stack yang
dipakai untuk menyimpan informasi pada saat pemanggilan subrutin. Informasi
segmen disimpan dalam keempat register segmen sesuai dengan namanya.
Instruction
Pointer
(IP),
adalah register berisi informasi offset yang bersama-sama CS menunjuk
posisi dalam memori di mana instruksi berikutnya berada.
Unit Eksekusi (EU)
Unit
ini memberitahu BIU di mana mengambil instruksi dan data, menerjemahkan kode
instruksi, dan menjalankannya. EU tersusun atas:
Dekoder
instruksi,
yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya
ke runtutan aksi yang harus dikerjakan oleh EU.
Sistem
kontrol,
merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan
instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
Arithmetic
Logic Unit
(ALU),
yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis
(misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian) dan
logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
Register
flag (bendera),
yaitu register flip-flop 16 bit yang menunjukkan kondisi yang dihasilkan
oleh eksekusi suatu operasi oleh EU. Selain itu flag juga mengatur beberapa
operasi tertentu. Terdapat 9 flag dalam register flag 8086, seperti terlihat
pada Gambar I-5.
Sebanyak
6 buah flag merupakan flag kondisi yang menunjukkan keadaan setelah eksekusi
suatu instruksi, yaitu: Carry Flag (CF), Parity Flag (PF), Auxiliary Carry Flag
(AF), Zero Flag (ZF), Sign Flag (SF), dan Overflow Flag (OF). Sedangkan, 3 buah
flag sisanya berupa flag kontrol yang mengendalikan operasi tertentu, yaitu:
Single Step Trap Flag (TF), Interrupt Flag (IF), dan String Direction Flag
(DF).
CF
akan diset (bernilai 1) jika sebuah operasi menghasilkan simpanan (carry)
melebihi bit terpenting (most significat bit, MSB, atau bit 15), dan
sebaliknya direset (bernilai 0) apabila tidak ada simpanan. PF diset jika suatu
operasi memberikan hasil dengan parity genap, dan direset jika hasilnya
berparity ganjil. AF mirip dengan CF, namun diset oleh operasi BCD (binary coded
decimal). ZF diset jika suatu operasi menghasilkan nol. SF merupakan nilai
MSB hasil operasinya, yang menunjukkan tanda; diset jika hasil bertanda negatif
dan direset jika hasil bertanda positif. OF diset jika hasil operasi melebihi
tempat yang disediakan.
Flag
kondisi akan digunakan oleh perintah tertentu untuk menentukan pencabangan atau
lompatan. Sedangkan flag kontrol dapat diatur dengan perintah tertentu. Jika TF
diset bernilai 1, maka mikroprosesor akan bekerja langkah demi langkah,
sehingga dapat digunakan untuk mencek jalannya suatu program. IF digunakan
untuk mengatur apakah kerja mikroprosesor dapat diinterupsi atau tidak. Hal
yang menyangkut interupsi akan dijelaskan secara lebih detil pada bab
berikutnya. DF digunakan untuk menentukan arah operasi string.
Register
serbaguna,
merupakan register yang dapat digunakan untuk menyimpan data yang akan
diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8 bit,
yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini juga dapat
digunakan secara berpasangan sehingga membentuk register 16 bit, yaitu; AX
(gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya digunakan untuk
menyimpan hasil operasi, sehingga disebut akumulator. CX biasanya digunakan
untuk pencacah untuk keperluan perulangan/kalang (loop), sehingga
disebut counter. BX dan DX biasanya digunakan sebagai offset dari alamat
data di memori (dengan segmen DS).
Register
pointer dan indeks,
terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI),
dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori
yang digunakan untuk menyimpan informasi alamat program yang ditinggalkan pada
saat terjadi pemanggilan subrutin/subprogram. Demikian juga apabila subrutin
tersebut berupa fungsi yang menggunakan parameter, maka data parameter akan
disimpan pula di stack. Alamat tumpukan terluar dari stack ditunjuk oleh SS:SP.
Sedangkan BP digunakan sebagai offset yang menunjuk ke parameter-parameter
fungsi yang dipanggil. SI dan DI biasanya digunakan sebagai offset
(masing-masing berpasangan dengan ES dan DS) yang menunjuk ke suatu
variabel/data untuk operasi string (larik data).
Bahasa Mesin dan Bahasa Assembly
Instruksi
yang difetch dari memori untuk kemudian diseksekusi oleh mikroprosesor
berformat biner (kombinasi angka 0 dan 1), yang disebut bahasa mesin. Sebagai
contoh, perintah untuk memindahkan data dalam register BX ke register CX adalah
10001011 11001011 ($8B CB), sedangkan bahasa mesin untuk menjumlahkan data
dalam register AL dengan angka 7 adalah 00000100 00000111 ($04 07), dan
perintah membaca dari port 5 diberikan dengan 11100100 00000101 ($E4 05).
Seperti
terlihat pada ketiga contoh di atas, bahasa mesin tidak mudah untuk dimengerti
dan dihapalkan oleh seorang programer, apalagi jumlah instruksi yang tersedia
berkisar ribuan perintah. Di samping itu, akan mudah sekali terjadi kesalahan
ketika menuliskan angka-angka biner yang tersusun atas angka 0 dan 1 yang
banyak sekali. Oleh karena itu biasanya kita tidak memprogram komputer langsung
dalam bahasa mesin, namun dalam bahasa assembly.
Dalam
bahasa assembly, setiap instruksi diberi kata (mnemonic) yang sesuai
dengan maksud perintah itu, sehingga dapat membantu pemrogram dalam mengingat
instruksi kepada mikroprosesor tersebut. Kata yang dipakai biasanya berupa
singkatan atau beberapa huruf awal dari kata dalam bahasa Inggris untuk
perintah tersebut. Misalnya, mnemonic untuk perintah penjumlahan adalah ADD,
untuk perintah pengurangan adalah SUB (dari kata subtract), dan untuk
memindahkan data(4) dari suatu register atau memori ke lokasi lain
adalah MOV (dari kata move). Sebagian besar instruksi terdiri atas
mnemonic dan operand yang merupakan parameter dari instruksi tersebut, yang
dituliskan di belakang mnemonic tersebut. Contoh bahasa assembly dari
perintah-perintah dengan bahasa mesin di atas diberikan dalam Tabel I-1.
Tabel
I-1. Contoh Instruksi dalam bahasa mesin dan bahasa assembly
Instruksi
|
Bahasa
Mesin
|
Bahasa Assembly
|
Memindahkan
data dari register BX
|
$8B CB
|
MOV CX, BX
|
ke register CX
|
||
Menjumlahkan
data dalam register
|
$04 07
|
ADD AL, 7
|
AL dengan
angka 7
|
||
Membaca
port 5
|
$E4 05
|
IN AL, 5
|
Secara
umum instruksi mikroprosesor dikelompokkan menjadi (beserta contoh):
1.
Operasi
transfer data,
yaitu operasi pemindahan (pengkopian) data antara register,
memori,
dan port. Di antaranya:
MOV AX, BX ;
mengkopi isi BX ke AX
MOV
BL, [437AH] ; mengkopi data byte dari
DS:437AH ke BL
IN AL, 34H ;
membaca input byte dari port 34H ke AL
OUT 220H, AX ;
menulis output word ke port 220H
PUSH CX ;
menyimpan register CX ke stack (SS:SP)
2.
Operasi
aritmatika,
yaitu operasi matematis antara register/memori (dilakukan ALU).
ADD DL, BL ;
menambahkan isi BL ke DL
SUB CX, 437AH ;
mengurangi isi CX dengan angka 437AH
MUL CX ;
mengalikan AX dengan CX, hasil disimpan di AX
3.
Operasi
bit,
yaitu operasi logika antara register/memori (dilakukan ALU).
AND
|
BH,
CL
|
;
|
meng-AND-kan isi BH dengan CL
|
NOT
|
DX
|
;
|
menginvers
isi register DX
|
4.
Operasi
string,
yaitu operasi yang melibatkan sekumpulan data yang berurutan dalam
memori/port.
REP MOVSB ;
mengkopi isi byte dari DS:SI ke ES:DI sebanyak CX
5.
Operasi
kontrol aliran program,
untuk mengatur loop, lompatan, dan perulangan.
CALL 2323H ;
memanggil subrutin di alamat CS:2323H
RET ;
kembali ke pemanggil subrutin
JZ LBL1 ;
lompat ke instruksi yang diberi label LBL1 jika
flag
ZF bernilai 1 (set)
6.
Operasi
kontrol prosesor,
yang mengatur kerja mikroprosesor.
STI
|
;
|
menset
flag
|
interupsi (TF), membolehkan interupsi
|
CLI
|
;
|
mereset
TF,
|
menghambat
interupsi
|
Setiap instruksi mungkin
merubah nilai flag tergantung dari instruksi itu sendiri dan hasil operasinya.
Lebih detilnya dapat dilihat di Bab 6 buku Mikroprosesor and Interfacing,
Programming and
Hardware,
Douglas V. Hall.
Sumber :
Infokomputerrakitan.blogspot.com
Ir. Balza Achmad, M.Sc.E. diktat penerapan microprosesor Next>>



No comments:
Post a Comment