Arsitektur Mikroprosesor dan Pengoperasi docx

Arsitektur (Internal) Mikroprosesor dan Pengoperasiannya
Pada model mikroprosesor sederhana kita telah melihat komponen-komponen utama:
-

Mikroprosesor
Unit memori
Clock

Pada mikroprosesor:
-

Program counter
Instruction decoder
Instruction register
Different register
Control logic
ALU

Pada bahasan ini kita akan membahas diagram blok mikroprosesor dan model
programmer. Diagram blok mikroprosesor dan model pemrograman memberikan gambaran
bagaimana sebuah mikroprosesor dibentuk.


Gambar 1 Diagram blok Mikroprosesor
Diagram blok memperlihatkan fungsi dari mikroprosesor untuk pemrosesan dan
penanganan data (data handling). Diagram blok juga memperlihatkan bagaimana setiap dari
fungsi logic terhubung satu sama lainnya.

Gambar 2 Model Programmer
Model programer akan membantu dalam proses pemrograman. Perbedaannya bahwa model
programmer hanya memperlihatkan bagian-bagian dari mikroprosesor yang dapat diubah
oleh programmer.
Kesimpulannya bahwa:
-

Blok diagram mempermudah dalam memahami arsitektur mikroprosesor
Medel programmer mempermudah dalam memahami cara kerja dari mikroprosesor
dalam lingkungan pemrograman (programming environment)

Diagram blok melibatkan tiga perangkat logic utama:



ALU (Arithmetic Logic Unit)

Menangani logika pemrosesan data pada mikroprosesor. Memiliki dua input dan sebuah
output. Bus data internal dari mikroprosesor dihubungkan ke kedua input dari ALU
melalui temporary register dan accumulator.
Output tungggal dari ALU dihubungkan ke bus data internal sehingga hasil outputnya
dapat dikirim ke perangkat manaput yang terhubung dengan bus data. Pada kebanyakan
mikroprosesor, register A memberikan data ke ALU dan setelah melakukan operasi, word
data yang dihasilkan dikirim ke register A dan disimpan. Register khusus ini, dimana data
hasil operasi dikumpulkan dinamakan accumulator.
ALU bekerja baik dengan satu atau dua word data, tergantung jenis operasinya. ALU
menggunakan saluran input sesuai kebutuhan. Contohnya, operasi penambahan (addition)
menggunakan kedua input ALU sementara operasi komplemen hanya menggunakan satu
input. Untuk operasi komplemen word data, semua bit dari word yang memiliki logika 1
diubah menjadi 0, dan sebaliknya.
ALU dari kebanyakan mikroprosesor dapat melakukan fungsi-fungsi berikut:
o
o
o
o


Tambah (add)
Kurang (substract)
AND
OR

o
o
o
o
o
o


XOR
Complement
Shift right
Shift left
Increment
Decrement


Register-register
o Accumulator
Merupakan register yang paling banyak bekerja pada mikroprosesor. Biasanya
digunakan untuk menyimpan data untuk dimanipulasi. Ketika operasi
memproses dua word, baik secara logika atau aritmatika, accumulator
menyimpan satu dari kedua word. Word yang lainnya dapat berada di register
lainnya atau di memori. Biasanya hasil operasi logika dan aritmatika disimpan
di accumulator. Pada kasus tertentu, setelah ekseskusi isi asli dari accumulator
hilang karena ditimpa (overwritten).
Akumulator juga digunakan untuk transfer data antara saluran I/O dan lokasi
memori, atau antar memori.
o Program Counter
Program merupakan serangkaian instruksi yang disimpan di memori.
Instruksi-instruksi tersebut memberitahu mikroprosesor bagaimana
memecahkan sebuah masalah. Adalah penting instruksi-instruksi tersebut
untuk dieksekusi dalam urutan yang tepat untuk mendapatkan hasil yang
benar. Urutan eksekusi instruksi ini diawasi oleh program counter. Ia
mengawasi instruksi mana yang sedang digunakan dan yang akan dieksekusi.
Program counter memberikan alamat lokasi memori dimana instruksi

selanjutnya di ambil (fetch). Alasan inilah yang menyebabkan panjang dari
program counter menentukan panjang program maksimum dalam bytes.
Contohnya, mikroprosesor dengan 16 bit program counter dapat mengalamati
216 bytes (64K) memori.
Sebelum miroprosesor memulai eksekusi program, program counter harus
diisi dengan alamat memori yang benar. Alamat memori ini harus berisi
opcode dari intruksi pertama dalam program. Pada kebanyakan mikroprosesor
lokasi ini adalah tetap.
Seperti yang dijelaskan sebelumnya bahwa intruksi harus dieksekusi dalam
urutan yang tepat untuk mendapat hasil yang benar. Ini tidak berarti setiap
intruksi harus mengikuti intruksi terakhir dalam memori. Tetapi ia harus
mengikuti tahapan logic dari intruksi. Dalam situasi tertentu, adalah lebih baik
untuk mengekseskusi bagian dari program yang bukan dalam urutan (jangan
tertukan dengan urutan / tahapan logic) dengan program utama. Sebagai
contoh, mungkin ada sebagian dari program harus diulang berkali-kali selama
eksekusi keseluruhan program. Daripada menulis bagian dari program tersebut
secara berulang-ulang, seorang programer dapat menulis bagian program
tersebut hanya sekali. Bagian program ini ditulis secara terpisah dari program
utama dan dinamakan dengan subroutine. Gambar dibawah menunjukan
bagaimana program utama (main) dan subroutine dieksekusi.


Gambar 3 Eksekusi dari Program Subroutine
Program counter memiliki peran penting dalam eksekusi subrutin karena dapat
diisikan dengan alamat memori yang diminta. Dengan bantuan instruksi
adalah mungkin untuk mengisikan alamat memori manapun dalam program
counter. Ketika subrutin akan dieksekusi, program counter diisi dengan alamat
memori dari instruksi pertama dari subrutin. Setelah eksekusi dari subrutin,
program counter disi dengan alamat memori dari instruksi selanjutnya dimana
kontrol program ditransfer ke program subrutin.
o Status Register
Digunakan utnuk menyimpan hasil dari kondisi tertentu keteka operasi
tertentu telah dilakukan selama eksekusi dari program. Status register juga
diistikahkan dengan flag register. Operasi-operasi ALU dan operasi-operasi
register tertentu dapat men-set atau me-reset satu atau lebih bit dalam status
register. Bit Status akan memicu kumpulan intruksi baru dari mikroprosesor.
Intruksi-intruksi tersebut memungkinkan eksekusi dari sebuah program untuk
mengubah aliran pada basis dari kondisi bit-bit dalam status register. Sehingga
kondisi dari bit-bit dalam status register dapat digunakan untuk menentukan
keputusan logika dalam program. Beberapa bit-bit status register yang umum
adalah:

1. Carry/ Borrow : bit carry diset ketika penjumlahan dari dua bilangan 8 bit
adalah lebih dari 1111 1111 (FFH). Borrow dibuat ketika sebuah bilangan
yang lebih besar mengurangi bilangan yang lebih kecil.
2. Zero : bit zero diset ketika isi dari register adalah nol setelah operasi. Ini
terjadi tidak hanya ketika men-decrement register, tetapi juga ketika
operasi aritmatika atau logika apapun yang menyebabkan isi registers
menjadi nol.
3. Negatif atau tanda (sign) : pada komplemen 2 aritmatik, bit yang paling
signifikan adalah bit tanda. Jika bit ini berlogika 1, bilangan merupakan
bilangan negatif, selain itu kebalikannya. Bir negatif atau bit tanda (sign di
set ketika operasi logika atau aritmatika memberikan hasil negatif.
4. Auxiliary Carry: di set ketika sebuah operasi penjumlahan pada 4 bit
pertama menyebabkan sebuah carry (penyimpanan) ke bit kelima. Ini
sering diistilahkan dengan half carry atau intermediate carry. Ini
digunakan dalam aritmatika BCD.
5. Overflow flag : dalam komplemen 2 aritmatik, kebanyakan bit signifikan
digunakan untuk merepresentasikan tanda(sign) dan bit sisanya digunakan
untuk merepresentasikan besar(magnitude) dari bilangan (lihat gambar

dibawah). Flag ini diset jika operasi bertanda (signed operation) terlalu

besar untuk mengisi bilangan bit yang tersedia (7bit untuk bilangan 8 bit)
untuk merepresentasikannya.

Gambar 4 Komplemen 2 bilangan 8 bit.
Sebagai contoh, jika menambah bilangan bertanda 8-bit 01110110(+118
dalam desimal) dan bilangan bertanda 8-bit 00110110 (+54 dalam
desimal). Hasilnya akan 10101100 (+172 desimal). Dimana merupakan
hasil biner yang tepat, tetapi pada kasus ini adalah terlalu besar untuk
dimuat dalam 7-bit yang diizinkan untuk bersar(magnitude) dalam
bilangan bertanda 8-bit. Flag overflow akan diset setelah operasi ini untuk
mengindikasikan bahwa hasil dari penambahan memiliki kelebihan
(overflowed) pada bit pendanda.
6. Parity : ketika hasil dari sebuah opersi meninggakalan register terindikasi
dengan bilangan ganjil 1, maka parity diset
o Stack Pointer
Merupakan register penting yang sering digunakan oleh programmer. Dalam
penjelasan sebelumnya subrutin dieksekusi dengan mengubah isi dari program
counter. Tetapi bagaimana program counter diisi dengan alamat dari instruksi
selanjutnya (return address) dimana program control ditransfer menjadi
subrutin. Return adress ini disimpan dalam memori khusus dinamakan stack.

Sebelum mentransfer program control ke subrutin return address didorong ke
stack. Setelah eksekusi dari subrutin return address di tarik kembali dari stack
dan diisikan ke program counter.
Alamat memori dari stack diberikan oleh register khusus dinamakan stack
pointer. Seperti program counter, stack pointer secara otomatis menunjuk
lokasi yang tersedia selanjutnya dalam memori. Dalam kebanyakan
mikroprosesor, stack pointer melakukan operasi decrement (menunjuk ke
alamat memori yang lebih bawah) ketika data didorong ke stack. Ini
memungkinkan programer untuk membuat tumpukan menurun seperti pada
gambar dibawah

Gambar 5 Operasi Stack
Biasanya operasi stack merupakan operasi 2 byte. Artinya bahwa stack pointer
berkurang sebanyak dua lokasi alamat memori setiap 2 data byte didorong ke
stack. Ketika data diambil dari stack, stack pointer bertambah sebanyak dua
lokasi alamat memori.
Perlu dicatat bahwa ketika menyimpan data di stack, stack pointer selalu
menunjuk data terakhir yang disimpan pada stack dan ketika menghapus data
maka data yang didapat merupakan data terakhir pada stack. Operasi stack ini
dinamakan operasi LIFO (Last In First Out).

o General Purpose Register (GPR)
Sebagian besar mikroprosesor memiliki register tambahan ini. Register ini
digunakan sebagai lokasi penyimpanan sederhana, utamanya digunakan untuk
menyimpan hasil operasi yang tidak sulit. memanggil operand dari GPR lebih
cepat dibandingkan mengambil dari memori sehingga ukuran GPR yang lebih
besar memberikan keuntungan pada operasi mikroprosesor. Mikroprosesor
yang digunakan sebagai contoh pada bab ini (lihat gambar 1) memiliki enam
GPR yang dinamai dengan register B, C, D, E, H, dan L. Register-register
tersebut secara individual dapat bekerja sebagai register 8 bit. Bersama-sama
register BC, DE, dan HL dapat beroperasi sebagai pasangan register 16-bit.
o Memory Address Register
Register ini memberikan alamat dari lokasi memori yang diminta oleh
prosesor. Memory adderss register memiliki bilangan biner 16-bit. Output dari
memory address register menggunakan bus alamat 16-bit. Output ini
digunakan untuk memilih alamat memori\
o Instruction Register
Register ini menyimpan operation code (opcode) yang sedang dieksekusi oleh
mikroprosesor. Register ini diisi selama siklus pemanggilan opcode. Isi dari
instruction register digunakan untuk menyalakan bagian dari control logic
yang dikenal dengan instruction decoder.

o Temporary Data Register
Alu tidak memiliki tempat penyimpanan sendiri, sementara ALU memiliki dua
input. Satu disuplai oleh accumulator dan yang lainnya oleh temporary data

register. Seorang programer tidak bisa mengakses register ini sehingga bukan
bagian dari model programer.


Control Logic
Merupakan blok penting dalam mikroprosesor. Control logic bertanggung jawab
dalam kinerja seluruh bagian dari mikroprosesor. Ia menjaga sinkronisasi dalam
operasi dari bagian-bagian mikroprosesor. Sinkronisasi dicapai dengan bantuan dari
input eksternal utama yaitu clock mikroprosesor. Clock merupakan sinyal dimana
merupakan dasar dari seluruh timing (pewaktuan) dalam mikroprosesor
Biasanya control logic dari microprosesor bersifat microprogrammed. Artinya
arsitektur dari control logic mirip dengan denan arsitektur dari mikroprosesor dengan
tujuan yang sangat khusus.
Control logic menerima sinyal dari instruction decoder yang mendekode instruksi
yang disimpan dalam instruction register. Selanjutnya control logic memproduksi
sinyal control yang dibutuhkan untuk mengeksekusi instruksi ini. Control logic
memiliki sedikit fungsi khusus lainnya. Ia mengawasi tahap penyalaan mikroprosesor.
Ia juga memproses interrupt. Sebuah interrupt seperti permintaan ke mikroprosesor
dari perangkat eksternal lainnya seperti memori dan I/O. Interrupt meminta
mikroprosesor untuk mengeksekusi program khusus.



Bus Data Internal
Bus data internal menghubungkan bagian-bagian dari mikroprosesor sehingga
memungkinkan komunikasi antar bagian dari mikroprosesor. Transfer data melalui
bus data internal dikendalikan oleh control logic.
Bus data internal dari mikroprosesor biasanya terhubung ke bus data eksternal.
Sehingga mikroprosesor dapat berkomunikasi dengan memori eksternal atau
perangkat yang terhubung dengan I/O. Hubungannya dengan bus data eksternal
biasanya bersifat bidirectional (transceiver).
Pertanyaan:
1. Apa yang dimaksud dengan operand dan instruksi ?
2. Sebutkan komponen-komponen dari mikroprosesor !
3. Apa itu memori ?
4. Apa itu program ?
5. Apa fungsi dari program counter?
6. Apa yang dimaksud dengan bus alamat (address bus) dan bus data (data bus) ?
7. Jelaskan proses dari eksekusi intruksi!
8. Jelaskan fungsi ALU !
9. Apa yang dimaksud dengan accumulator ?
10. Jelaskan eksekusi dari program subroutine !
11. Apakah fungsi dari timing dan control logic dalam mikroprosesor ?