Arsitektur
Internal Mikroprosesor
1. 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.
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.
2. Intel 8086
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
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,
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).
Tidak ada komentar:
Posting Komentar