Cara Pemrosesan Eksekusi Instruksi Mikroprosesor
Arsitektur umum mikroprosesor 
Secara umum, mikroprosesor berisi :
- unit aritmetika/logika (ALU), 
- register, 
- bus internal, serta unit kendali, 
seperti terlihat pada Gambar berikut ini
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 (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 (IR) atau register Instruksi. 
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 
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, maka operasi yang akan dijalankan adalah oleh 
mikroprosesor adalah: 
Mem(PC) → MA 
PC + 1 → PC 
B + Mem(MA) → B 
Mikroprosesor 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 berikut.
 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 Looping (struktur program yang berulang). 
Register segmen. 
BIU berisi 4 buah register segmen 16 bit, yaitu: 
•code segment (CS), 
•data segment (DS), 
•extra segment (ES), 
•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. 
1. Cara pemberian alamat 20 bit dilakukan menggunakan 2 komponen alamat:
 segmen dan offset, yang masing-masing berukuran 16 bit. 
2. BIU akan menggeser ke kiri nilai segmen sebanyak 4 bit, kemudian 
menambahkan offset untuk memperoleh alamat fisik memori yang dikirimkan 
melalui bus alamat. 
3. Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik 
$38AB4, segmen dapat diisi dengan angka $348A, dan offset diisi dengan 
angka $4214, lihat Gambar berikut.
 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.
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; 
•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 berikut.
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).
o 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. 
o PF diset jika suatu operasi memberikan hasil dengan parity genap, dan direset jika hasilnya berparity ganjil. 
o AF mirip dengan CF, namun diset oleh operasi BCD (binary coded decimal). 
o ZF diset jika suatu operasi menghasilkan nol. 
o SF merupakan nilai MSB hasil operasinya, yang menunjukkan tanda; diset
 jika hasil bertanda negatif dan direset jika hasil bertanda positif. 
o 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. 
• 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. 
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).
Sumber : 
http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0CFEQFjAG&url=http%3A%2F%2Fwahyukr.staff.gunadarma.ac.id%2FDownloads%2Ffiles%2F20447%2Farsitektur%2Bmikroprosesor.doc&ei=X_2RUfrqAomCrgez7IBg&usg=AFQjCNFHRDokJLOW4bFwqAPGlhkP_atCFA&sig2=JFL9ifOmYG5S_BkAUymINw&bvm=bv.46471029,d.bmk




Tidak ada komentar:
Posting Komentar