CHAPTER 2

The Microprocessor and Its Architecture


Bab ini memperkenalkan mikroprosesor sebagai perangkat yang dapat diprogram dengan terlebih dahulu membahas model pemrograman internalnya dan kemudian cara alamat ruang memorinya.

2.1 INTERNAL MICROPROCESSOR ARCHITECTURE

               Bagian ini menjelaskan arsitektur internal yang terlihat oleh program pada mikroprosesor 8086 Core2. Juga dijelaskan fungsi dan tujuan masing-masing register internal ini. Perlu dicatat bahwa pada mikroprosesor multi-core, setiap core memiliki model pemrograman yang sama. Perbedaan utamanya adalah setiap core menjalankan tugas atau thread yang terpisah secara bersamaan.

Model Pemrograman

Model pemrograman dari 8086 hingga Core2 dianggap sebagai model yang terlihat oleh program karena register-registernya digunakan selama pemrograman aplikasi dan ditentukan oleh instruksi-instruksi.



Gambar 2.1


Tabel 2.1


Register Multiguna

RAX (akumulator)  : RAX merujuk pada register 64-bit (RAX), register 32-bit (EAX), register 16-bit (AX), atau salah satu dari dua register 8-bit (AH dan AL). 

RBX(base index) : RBX dapat diakses sebagai RBX, EBX, BX, BH, atau BL. 

RCX(count) : RCX, yang dapat dialamatkan sebagai RCX, ECX, CX, CH, atau CL, adalah register tujuan umum yang juga menyimpan nilai hitung untuk berbagai instruksi. 

RDX (data) : RDX, yang dapat diakses sebagai RDX, EDX, DX, DH, atau DL, Adalah register tujuan umum yang menyimpan sebagian hasil dari suatu perkalian atau sebagian dari pembagi sebelum pembagian. 

RBP(base pointer) : RBP, yang dapat diakses sebagai RBP, EBP, atau BP, menunjuk ke lokasi memori di semua versi mikroprosesor untuk transfer data memori.

RDI (indeks tujuan) : RDI, yang dapat diakses sebagai RDI, EDI, atau DI, sering mengakses Data tujuan string untuk instruksi string.

RSI(source index) : RSI digunakan sebagai RSI, ESI, atau SI. Register indeks sumber sering mengakses data string sumber untuk instruksi string. 

R8-R15 Register : Register-register ini hanya ditemukan pada Pentium 4 dan Core2 jika ekstensi 64-bit diaktifkan. 


Register tujuan khusus

RIP (intruction pointer): RIP mengalamatkan instruksi berikutnya dalam bagian memori yang didefinisikan sebagai segmen kode. . 

RSP(stack pointer) : RSP mengalamatkan area memori yang disebut tumpukan. Memori  menyimpan data melalui penunjuk ini dan dijelaskan kemudian dalam teks dengan instruksi yang mengalamatkan data tumpukan. 

RFLAGS : RFLAGS menunjukkan kondisi mikroprosesor dan mengontrol operasinya. Gambar 2.2 menunjukkan register bendera dari semua versi mikroprosesor. 8086–80286 mengandung register FLAG (16 bit) dan 80386 dan di atas mengandung register EFLAG (register bendera diperluas 32-bit). 

 Berikut adalah daftar setiap bit FLAG, dengan deskripsi singkat tentang fungsinya :


Gambar 2.2


C (carry) : Carry menyimpan carry setelah penjumlahan atau pinjaman setelah pengurangan. 

P (parity) : Paritas adalah logika 0 untuk paritas ganjil dan logika 1 untuk paritas genap. 

A (carry tambahan) : Carry tambahan menyimpan carry (setengah carry) setelah penjumlahan atau pinjaman setelah pengurangan antara posisi bit 3 dan 4 dari hasil. 

Z (nol) : Bit flag nol menunjukkan bahwa hasil dari operasi aritmatika atau logika adalah nol. Jika , hasilnya adalah nol; jika , hasilnya tidak nol. 

S (tanda) : Bit flag tanda menyimpan tanda aritmatika dari hasil setelah instruksi aritmatika atau logika dieksekusi. 

T (jebakan) : Bit flag jebakan mengaktifkan penjebakan melalui fitur debugging on-chip. 

I (interrupt) : Bit flag interupsi mengontrol operasi pin input INTR (permintaan interupsi). 

D (arah): Bit bendera arah memilih mode peningkatan atau pengurangan untuk register DI dan/atau SI selama instruksi string. 

O (overflow) : Overflow terjadi ketika angka bertanda ditambahkan atau dikurangkan.

IOPL(I/O privillage level) : digunakan dalam operasi mode terlindungi untuk memilih tingkat hak istimewa (tingkat hak istimewa I/O) untuk perangkat I/O.  

NT (nested task): Bit flag nested task menunjukkan bahwa tugas saat ini bersarang dalam tugas lain dalam operasi mode terlindungi. 

RF (resume): Bit flag lanjutkan digunakan dengan debugging untuk mengontrol kelanjutan eksekusi setelah instruksi berikutnya.

VM (mode virtual): Bit flag VM memilih operasi mode virtual dalam sistem mode terlindungi. 

AC (alignment check) : Bit flag pemeriksaan penyelarasan diaktifkan jika sebuah kata atau doubleword dialamatkan pada batas non-kata atau non-doubleword. 

VIF(virtual interrupt): VIF adalah salinan bit bendera interupsi yang tersedia untuk mikroprosesor Pentium–Pentium 4.

VIP(virtual interrupt pending): VIP memberikan informasi tentang interupsi mode virtual untuk mikroprosesor Pentium–Pentium 4. 

ID (identification): flag ID menunjukkan bahwa mikroprosesor Pentium–Pentium 4 mendukung instruksi CPUID. 

Segment Register

 Register Segmen. Register tambahan yang disebut register segmen menghasilkan alamat memori ketika digabungkan dengan register lain dalam mikroprosesor :

CS (code) :  Segmen kode adalah bagian memori yang menyimpan kode (program dan prosedur) yang digunakan oleh mikrokontroler. 

DS(data) :  Segmen data adalah bagian memori yang berisi sebagian besar data yang digunakan oleh suatu program. 

ES (Extra) :  Segmen tambahan adalah segmen data tambahan yang digunakan oleh beberapa instruksi string untuk menyimpan data tujuan.

SS (strack) : Segmen tumpukan menentukan area memori yang digunakan untuk tumpukan. 

FS dan GS :  Segmen FS dan GS adalah register segmen tambahan yang tersedia pada mikroprosesor 80386–Core2 untuk memungkinkan dua segmen memori tambahan yang dapat diakses oleh program. 


2.2 REAL MODE MEMORY ADDRESSING

Mikroprosesor 80286 dan di atasnya beroperasi dalam mode nyata atau mode terlindungi. Hanya 8086 dan 8088 yang beroperasi secara eksklusif dalam mode nyata.

Segmen dan offset

Kombinasi alamat segmen dan alamat offset mengakses lokasi memori dalam mode nyata. Gambar 2.3 menunjukkan bagaimana skema pengalamatan segmen ditambah offset memilih lokasi memori. Ilustrasi ini menunjukkan segmen memori yang dimulai di lokasi 10000H dan berakhir di lokasi IFFFFH—64K byte panjangnya.


Gambar 2.3


Register Segmen dan Offset Default

Mikroprosesor memiliki seperangkat aturan yang berlaku untuk segmen setiap kali memori diakses. Misalnya, register segmen kode selalu digunakan dengan penunjuk instruksi untuk mengalamatkan instruksi berikutnya dalam sebuah program. Kombinasi ini adalah CS:IP atau CS:EIP, tergantung pada mode operasi mikroprosesor. Register segmen kode mendefinisikan awal segmen kode dan penunjuk instruksi menentukan instruksi berikutnya dalam segmen kode.

Skema Pengalamatan Segmen dan Offset Memungkinkan Relokasi

Pengaturan default lainnya ditampilkan dalam Tabel 2.3 untuk mengakses memori menggunakan mikroprosesor Intel dengan register 16-bit. Tabel 2.4 menunjukkan pengaturan default yang digunakan pada 80386 dan di atasnya dengan register 32-bit.

Tabel 2.3
Tabel 2.4


Gambar 2.4



Gambar 2.5

2.3 INTRODUCTION TO PROTECTED MODE MEMORY ADDRESSING

Selectors and descriptors

Gambar 2.6


Example 2.1 :

jika alamat dasar adalah 10000000H, batas adalah 001FFH, G bit = 0, maka :

Base = start = 10000000H

G = 0

End = Base + Limit + 10000000H + 001FFH = 100001FFH

Example 2.2 :

menggunakan data yang sama dengan example 2.1, kecuali batasnya yang ditambahkan dengan FFFH untuk menentukan alamat segmen akhir. Maka :

Base = start = 10000000H

G = 1

End = base + limit = 10000000H + 001FFFFFH = 101FFFFFH



Gambar 2.7


Gambar 2.8


Gambar 2.9

Gambar 2–9 menunjukkan bagaimana register segmen, yang berisi selektor, memilih deskriptor dari tabel deskriptor global.

Program-Invisible Registers


Gambar 2.10

Catatan:

1. Prosesor 80286 tidak mengandung FS dan GS, maupun bagian-bagian yang tidak terlihat oleh program dari register-register ini.

2. Prosesor 80286 mengandung alamat dasar yang berukuran 24-bit dan batas yang berukuran 16-bit.

3. Prosesor 80386/80486/Pentium/Pentium Pro memiliki alamat dasar 32-bit dan batas 20-bit.

4. Hak akses adalah 8-bit pada 80286 dan 12-bit pada 80386/80486/Pentium–Core2.

Gambar 2.10 menggambarkan register yang tidak terlihat oleh program sebagaimana adanya pada prosesor 80286 hingga Core2. Register-register ini mengontrol mikroprosesor saat beroperasi dalam mode terlindungi.

2.4 MEMORY PAGING

Mekanisme pemulaan memori yang terletak dalam 80386 dan di atasnya memungkinkan lokasi memori fisik mana pun ditugaskan ke alamat linier mana pun. Alamat linier didefinisikan sebagai alamat yang dihasilkan oleh program. Alamat fisik adalah lokasi memori aktual yang diakses oleh program.

Paging Registers

Lihat Gambar 2.11 untuk isi register kontrol CR0 hingga CR4.

Gambar 2.11

 

Gambar 2.12

Alamat linier, yang dihasilkan oleh perangkat lunak, dibagi menjadi tiga bagian yang digunakan untuk mengakses entri direktori halaman, entri tabel halaman, dan alamat offset halaman memori. 

The Page Directory and Page Table

Gambar 2.13 menunjukkan direktori halaman, beberapa tabel halaman, dan beberapa halaman memori. Hanya ada satu direktori halaman dalam sistem.

Gambar 2.13

Gambar 2.14

Sistem DOS dan EMM386.EXE menggunakan tabel halaman untuk mendefinisikan ulang area memori antara lokasi C8000H–EFFFFH sebagai blok memori atas. Misalkan program EMM386.EXE memungkinkan akses ke 16 MB memori ekstensif dan konvensional melalui pemetaan halaman, dan lokasi C8000H–EFFFFH harus dipetakan ulang ke lokasi 110000–138000H, sementara area memori lainnya dipetakan ke lokasi normalnya.

2.5 FLAT MODE MEMORY

Sistem memori pada komputer berbasis Pentium (Pentium 4 atau Core2) yang menggunakan ekstensi 64-bit menggunakan sistem memori mode datar. Sistem memori mode datar adalah sistem di mana tidak ada segmentasi. Alamat byte pertama dalam memori berada di 00 0000 0000H dan lokasi terakhir berada di FF FFFF FFFFH (alamat berukuran 40-bit). Model datar tidak menggunakan register segmen untuk mengakses lokasi dalam memori.

Gambar 2.15


Bentuk alamat ini jauh lebih mudah dipahami, tetapi memberikan perlindungan yang minim terhadap sistem melalui perangkat keras. 

Komentar

Postingan populer dari blog ini