bab ii mikroprosesor
TRANSCRIPT
MAKALAH MIKROPROSESOR INTEL
“MIKROPROSESOR DAN ARSITEKTURNYA”
OLEH:
ARWINI REZKY (03320110019)
SAMIRUDDIN (03320110013)
MULYONO (0332010
FAKULTAS TEKNIK JURUSAN ELEKTRO
UNIVERSITAS MUSLIM INDONESIA
MAKASSAR
2013
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT yang telah melimpahkan rahmat
dan hidayah-Nya sehingga makalah dengan judul ”Mikroprosesor Dan Arsitekturnya” ini
dapat terselesaikan.
Keberadaan makalah ini dimaksudkan untuk memudahkan dalam proses pembelajaran
dan sekaligus bertujuan untuk memberikan pengetahuan tentang salah satu produksi energi
termal dengan mengangkat satu permasalahan disertai dengan solusi penyelesaiannya.
Penulis menyadari bahwa dalam penyusunan makalah ini terdapat banyak
kekurangan. Oleh karena itu, saran dan pendapat yang bersifat membangun dari berbagai
pihak, penulis harapkan demi perbaikan dan penyempurnaan makalah selanjutnya.
Dalam penyusunan makalah ini tentunya tidak lepas dari bantuan dari beberapa pihak.
Oleh karena itu, penulis mengucapkan banyak terima kasih atas peran dan partisipasinya
dalam penyusunan makalah ini.
Semoga keberadaan makalah ini dapat bermanfaat dan berdaya guna dalam proses
belajar mengajar selanjutnya.
Makassar, Oktober 2013
Penulis
BAB I
PENDAHULUAN
Mikroprosessor sebagai sebuah peranti yang dapat diprogram, dengan pertama-tama
melihat pada model program internalnya dan kemudian pada bagaimana mikroprosessor
mengalamatkan ruang memorinya. Arsitektur dari seluruh kerabat mikroprosessor Intel
diterangkan secara simultan, demikian pula cara yang digunakan kerabat mikroprosessor Intel
dalam mengalamatkan sistem memori.
Mode-mode pengalamatan pada keluarga mikroprosessor ini digambarkan untuk
kedua mode operasi, yaitu real dan terlindung (protected). Memori mode real ada pada lokasi
00000H-FFFFFH, 1M byte pertama dari sistem memori, dan ada pada semua versi
mikroprosessor. Memori mode terlindung ada pada setiap lokasi didalam seluruh sistem
memori, tetapi hanya tersedia pada mikroprosessor mulai versi 80286 sampai Pentium II, dan
tidak ada pada mikroprosessor 8086 atau 8088. Besarnya memori mode terlindung pada versi
80286 adalah 16MB; untuk 80386-Pentium adalah 4GB; dan untuk Pentium Pro-Pentium II,
bisa 4GB atau 64GB.
TUJUAN BAB
Dengan menyelesaikan bab ini, diharapkan mampu :
1. Menguraiakan fungsi dan kegunaan dari setiap register terlihat-program (program-visible)
pada mikroprosessor 8086-80486 dan Pentium-Pentium II.
2. Memperinci register flag dan kegunaan dari setiap bit flag.
3. Menguraikan bagaimana memori diakses dengan menggunakan teknik pengalamatan
memori mode real.
4. Menguraikan bagaimana memori diakses dengan menggunakan teknik pengalamatan
memori mode terlindung.
5. Menguraikan register-register tak-terlihat-program (program-invisible) yang ada dalam
mikroprosessor 80286, 80386, 80486, Pentium, Pentium Pro, dan Pentium II.
6. Memperinci operasi dari mekanisme paging-memori.
BAB II
PEMBAHASAN
A. ARSITEKTUR INTERNAL MIKROPROSESOR
Konfigurasi internal mikroprosessor harus diketahui sebelum kita membuat
sebuah program. Pada sub bab ini secara rinci diperlihatkan arsitektur internal terlihat
program dari mikroprosessor 8086-80486 dan Pentium-Pentium II. Juga dijelaskan
dengan rinci mengenai fungsi dan maksud setiap register-register internal.
Model Pemrograman
Model pemrograman 8086 sampai Pentium II termasuk visibel program (terlihat
program) karena register-registernya digunakan selama pemrograman aplikasi dan
ditentukan oleh instruksi. Register lainnya merupakan invisibel program (tak terlihat-
program) karena register-register itu tidak mampu dialamati selama pemrograman
aplikasi, namun dapat digunakan tak langsung selama pemrograman sistem. Hanya
mikrorosessor 80286 ke atas yang berisi register-register invisibel program yang
digunakan untuk mengontrol dan mengoperasikan sistem memori terlindung.
Model pemrograman berisi register-register 8-, 16-, dan 32 bit. Register-register
8-bit adalah AH, AL, BH, BL, CH, CL, DH, DL dan dirujuk pada saat satu instruksi
dibuat menggunakan perancangan 2-huruf. Sebagai contoh, instruksi ADD AL, AH
menambah isi 8-bit isi register AH pada isi register AL (hanya isi register AL yang
berubah karena instruksi ini). Register-register 16 bit adalah AX, BX, CX, DX, SP, BP,
DI, SI, IP, FLAGS, CS, DS, ES, SS, FS, dan GS. Register-register ini juga dirujuk
dengan perancangan dua huruf. Sebagai contoh, instruksi ADD DX, CX menambah isi
register 16-bit CX pada isi register DX (hanya isi register DX yang berubah karena
instruksi ini). Register-register extended 32-bit berlabel EAX, EBX, ECX, EDX, ESP,
EBP, EDI, ESI, EIP, dan EFLAGS. Register extended 32-bit dan register GS dan FS
16-bit hanya terdapat pada mikroprosessor 80386 ke atas. Register-register ini dirujuk
oleh FS dan GS pada dua register 16-bit baru, dan dengan perancangan tiga huruf pada
register-register 32-bit. Sebagai contoh, instruksi ADD ECX, EBX menambah isi
register EBX 32-bit pada isi register ECX (hanya isi register ECX yang berubah karena
instruksi ini).
Ada beberapa register yang tergolong general purpose (serba guna) atau
multipurpose (multiguna), sedangkan yang lain mempunyai kegunaan yang khusus.
Yang termasuk dalam register-register multiguna antara lain EAX, EBX, ECX, EDX,
EBP, EDI, dan ESI. Register-register tersebut mampu menyimpan data berbagai ukuran
(byte, word, atau doubleword) dan digunakan hampir untuk semua tujuan, seperti
tertulis diprogram.
Register-register Multiguna
EAX (akumulator)
EAX dirujuk sebagai register 32-bit (EAX), sebagai register 16-bit (AX), atau 2
register 8-bit (AH dan AL). Akumulator digunakan untuk instruksi-instruksi
perkalian, pembagian, dan beberapa instruksi penyesuaian. Dalam mikroprosessor
80386 ke atas, register EAX juga dapat menyimpan alamat offset sebuah lokasi
dalam sistem memori.
EBX (base index)
EBX dapat dialamati sebagai EBX, BX, BH, BL. Register BX dapat menyimpan
alamat offset sebuah lokasi memori dalam sistem memori semua versi
mikroprosessor. Dalam mikroprosessor 80386 ke atas, EBX juga dapat
mengalamati data memori.
ECX (count)
ECX merupakan register serbaguna yang juga dapat digunakan untuk instruksi
perhitungan. Dalam mikroprosessor 80386 ke atas, register ECX dapat juga
menyimpan alamat offset data memori. Instruksi-instruksi yang menggunakan
perhitungan merupakan instruksi string yang diulang (REP/REPE/REPNE); dan
instruksi pergeseran, perputaran, dan instruksi LOOP/LOOPD. Instruksi
pergeseran dan perputaran menggunakan CL, instruksi string berulang memakai
CX, dan instruksi LOOP/LOOPD menggunakan CX atau ECX.
EDX (data)
EDX merupakan register serbaguna yang dapat digunakan untuk menyimpan hasil
perkalian dan menyimpan sisa dalam pembagian. Dalam mikroprosessor 80386 ke
atas, register ini juga mampu mengalamati data memori.
EBP (base pointer)
EBP menunjuk sebuah lokasi memori yang dalam semua versi mikroprosessor
digunakan untuk mentransfer data memori. Register ini dialamati sebagai EBP
dan BP.
EDI (destination index)
EDI sering mengalamati data tujuan string untuk beberapa instruksi string. EDI
juga berfungsi sebagai register serbaguna 32-bit (EDI) atau 16-bit (DI).
ESI (source index)
ESI digunakan sebagai ESI dan SI. Register indeks sumber sering mengalamati
sumber data string untuk beberapa instruksi string. Seperti EDI, ESI, juga
berfungsi sebagai register serbaguna. Sebagai register 16-bit dialamati sebagai SI;
sebagai register 32-bit dialamati sebagai ESI.
Register untuk Tujuan Khusus. Yang termasuk didalamnya antara lain EIP, ESP,
EFLAGS dan register-register segmen CS, DS, ES, SS, FS, dan GS.
EIP (instruction pointer)
EIP mengalamati instruksi selanjutnya dalam sebuah bagian memori yang
didefinisikan sebagai segmen kode. Register ini merupakan IP (16-bit) ketika
mikroprosessor dioperasikan dalam mode real namun menjadi EIP (32-bit) bila
mikroprosessor 80386 ke atas dioperasikan dalam mode terlindung. Penunjuk
instruksi, yang menunjuk ke instruksi selanjutnya dalam satu program, digunakan
oleh mikroprosessor untuk mendapatkan instruksi berurutan berikutnya dalam
suaru program yang lokasinya terletak di dalam segmen kode. Penunjuk instruksi
dapat dimodifikasi dengan instruksi jump atau call.
ESP (stack pointer)
ESP mengalamati sebuah lokasi memori yang disebut stack. Memori stack
menyimpan data melalui penunjuk ini dan akan dijelaskan dengan instruksi
dengan mengalamati data stack. Register disebut SP jika digunakan sebagai
register 16-bit dan disebut register ESP jika digunakan sebagai register 32-bit.
EFLAGS
EFLAGS menunjukkan kondisi mikroprosessor dan mengontrol operasinya.
Register FLAG (16-bit) terdapat dalam mikroprosessor 8086-80286 dan register
EFLAG (32-bit) yaitu extended FLAG terdapat dalam mikroprosessor 80386 ke
atas.
Lima bit flag yang paling kanan dan flag overflownya berubah setelah beberapa
instruksi aritmetik dan logika dijalankan. Flag tidak akan berubah dengan adanya
transfer data atau operasi kontrol program. Beberapa flag juga digunakan untuk
mengontrol beberapa fitur yang terdapat dalam mikroprosessor. Selanjutnya dijelaskan
secara singkat fungsi-fungsi setiap bit flag. Instruksi-instruksi diperkenalkan dalam bab-
bab berikutnya, rincian tambahan tentang bit flag akan disediakan. Lima flag terkanan
dan flag overlow diubah oleh sebagian besar operasi aritmatika dan logika, sedangkan
transfer data tidak mempengaruhinya.
C (carry)
Carry menyimpan carry setelah penambahan, atau borrow setelah pengurangan.
Flag carry juga menunjukkan kondisi error seperti yang diperintahkan oleh
program dan prosedur. Hal ini sangat benar bagi fungsi panggil DOS yang akan
diuraikan lebih rinci pada bab-bab selanjutnya dan pada lampiran A.
P (paritas)
Paritas merupakan 0 logika untuk paritas ganjil dan 1 logika untuk paritas genap.
Paritas adalah jumlah angka satu dalam bilangan yang menyatakan genap atau
ganjil. Jika sebuah bilangan terdiri 3 bilangan biner bit satu, maka termasuk
paritas ganjil. Jika terdiri dari nol bit satu, maka termasuk paritas genap. Flag
paritas jarang ditemukan dalam aplikasi pemrograman modern dan telah
diimplementasikan dalam mikroprosessor Intel generasi pertama untuk mengecek
data dalam komunikasi data. Dewasa ini pengecekan paritas tidak dilakukan oleh
mikroprosessor, tetapi oleh peralatan komunikasi data.
A (auxiliary carry)
Carry tambahan (auxiliary carry) menampung carry (carry setengah) setelah
penambahan, atau borrow setelah pengurangan antar posisi bit 3 dan 4. Flag bit
khusus ini diuji oleh instruksi DAA dan DAS untuk menyesuaikan nilai AL
setelah penambahan atau pengurangan suatu BCD. Di luar itu bit flag A tidak
digunakan oleh mikroprosessor atau instruksi lain.
Z (zero)
Flag nol menunjukkan bahwa jumlah dari suatu operasi aritmetika atau logik
adalah nol. Jika Z = 1, jumlahnya adalah nol, jika Z = 0 maka jumlahnya adalah
bukan nol.
S (sign)
Flag tanda akan menampung tanda aritmetika dari hasil setelah instruksi
aritmetika atau instruksi logik dieksekusi. Jika S = 1, tanda bit negatif, jika S = 0,
tanda bit positif.
T (trap)
Flag trap memungkinkan trapping melalui suatu chip debugging (suatu program
didebug untuk mencari error atau bug). Jika flag T enable (= 1), mikroprosessor
akan menghentikan alur program pada keadaan yang diindikasikan oleh register
debug dan register kontrol. Jika flag T-nya nol logik, fitur trappingnya
(debugging) adalah disabel. Program Code View dapat menggunakan fitur trap
dan register debug untuk mendebug kesalahan software.
I (interrupt)
Flag interrupt ini mengendalikan operasi dari pin input INTR (interrupt request).
Jika I = 1 pin INTRnya enabel; jika I = 0 pin INTRnya disabel. Kondisi dari bit
flag I dikontrol oleh instruksi STI (set I flag) dan CLI (clear I flag).
D (direction)
Flag arah ini memilih salah satu dari mode penambahan atau pengurangan untuk
register DI dan /atau register SI selama instruksi string. Jika D = 1, register secara
otomatis akan dikurangi; jika D = 0, register secara otomatis akan ditambah. Glag
D diset dengan instruksi STD (set direction) dan diclear dengan instruksi CLD
(clear direction).
O (overflow)
Overflow terjadi ketika bilangan bertanda ditambah atau dikurang. Suatu overflow
menunjukkan hasilnya melebihi kapasitas dari mesin. Contohnya jika 7FH (+127)
ditambah, dengan menggunakan penambahan 8 bit, pada 01H (+1) hasilnya adalah
80H (-128). Hasil ini menunjukkan suatu kondisi overflow untuk penambahan
bertanda. Untuk operasi tak bertanda, flag overflow diabaikan.
IOPL (I/O privilege level)
IOPL digunakan dalam operasi mode terlindung untuk memilih tingkatan operasi
istimewa untuk peranti I/O. jika arus tingkatan istimewa lebih tinggi atau lebih
menjamin daripada IOPL, eksekusi I/O berjalan tanpa gangguan. Jika IOPL lebih
rendah dari tingkatan istimewa sekarang, terjadi suatu interrupt yang
menyebabkan eksekusi tertunda. Perlu diperhatikan bahwa IOPL 00 paling tinggi
atau paling menjamin, sedangkan IOPL 11 adalah yang paling rendah atau palin
tak terpercaya.
NT (nested task)
Flag NT menandakan bahwa task yang sedang dilaksanakan bersarang dalam task
yang lain dalam operasi mode terlindung. Flag ini diset ketika task di-nest oleh
perangkat lunak.
RF (resume)
Flag resume digunakan bersama debugging untuk mengontrol kelanjutan eksekusi
setelah instruksi berikutnya.
VM (virtual mode)
Bit flag VM memilih operasi mode virtual dalam suatu sistem mode terlindung.
Suatu sistem mode virtual memungkinkan partisi memori dari DOS yang
panjangnya 1M byte hadir bersamaan dalam sistem memori. Pada dasarnya,
model ini memampukan program sistem mengeksekusi lebih dari satu program
DOS.
AC (alignment check)
Bit flag AC aktif jika suatu word atau doubleword dialamatkan pada batas suatu
nonword atau nondoubleword. Hanya mikroprosessor 80486SX berisi bit AC
yang umum digunakan oleh koprosesor numeric 80487SX pendampingnya untuk
sinkronisasi.
VIF (virtual interrupt flag)
VIF adalah suatu salinan bit flag interrupt yang digunakan pada prosesor Pentium
atau Pentium Pro.
VIP (virtual interrupt pending)
VIP menyediakan informasi tentang suatau interrupt mode virtual untuk
mikroprosessor Pentium-Pentium II. Ini digunakan dalam pemakaian multitasking
untuk memberikan flag virtual interrupt dan informasi pending interrupt pada
sistem operasi.
ID (identification)
Flag ID menunjukkan bahwa mikroprosessor Pentium-Pentium II mendukung
instruksi CPUID. Instruksi CPUID memberikan informasi tentang
mikroprosessor, sesuai dengan versi dan nomor seri dan pabriknya pada sistem.
Register Segmen. Registrer tambahan, disebut juga register segmen, menghasilkan
alamat-alamat memori saat dikombinasikan dengan register-register lainnya dalam
mikroprosessor. Bisa ada empat atau enam register segmen dalam bermacam versi
mikroprosessor. Fungsi register segmen berbeda dalam mode real, bila dibandingkan
dengan operasi mode terlindung dari mikroprosessor. Berikut ini daftar dari masing-
masing register segmen berkaitan dengan fungsinya dalam sistem.
CS (code)
Segmen kode adalah suatu bagian dari memori yang memuat kode (program dan
prosedur) yang digunakan oleh mikroprosessor. Register CS mendefinisikan
alamat awal dari bagian kode pemuatan memori. Pada operasi mode real, CS
menetapkan awal dari suatu bagian memori 64K byte; dalam mode terlindug, CS
memilih suatu pendeskripsi yang menggambarkan alamat awal dan panjang dari
suatu bagian code pemuatan memori. Segmen kode panjangnya terbatas sampai
64K byte dalam 8086-80286 dan 4G byte dalam 80386 dan diatasnya ketika
mikroprosessor ini beroperasi pada mode terlindung.
DS (data)
Segmen data adalah bagian dari memori yang berisi sebagiab besar data yang
digunakan oleh program. Data diagses dalam segmen data dalam alamat offset
atau isi dari register lain yang mempunyai alamat offset. Seperti halnya segmen
kode dan segmen yang lain panjangnya dibatasi sampai 64K byte dalam 8086-
80286 dan 4G byte dalam mikroprosesor 80386 dan diatasnya.
ES (extra)
Segmen extra adalah suatu penambahan segmen data yang digunakan oleh
beberapa itruksi string untuk menyimpan data tujuan.
SS (stack)
Segmen stack mendefinisikan area memori yang digunakan untu stack, posisi dari
arus masuk dalam segmen stack dibatasi oleh register penunjuk stack. Register BP
juga mengalami data dalam segmen stack.
FS dan GS
Segmen FS dan GS adalah register segmen tambahan yang tersedia pada
microprosesor 80386, Pentium dan Pentium pro, yang memungkinkan dua segmen
nmemori tambahan diakses oleh program-program yang dijalankan.
B. PENGALAMAN MEMORI MODE REAL
Mikroprosesor 80286 dan generasi di atasnya beroperasi baik dalam mode real atau
dalam mode terlindung (protected). Hanya 8086 dan 8088 yang beroperasi pada mode
real . Berikut ini dijelaskan panjang lebar mengenai operasi mikroprosesor pada mode
real. Operasi mode real mengijinkan penempatan ruang memori hanya pada 1M byte
pertama, bahkan pada mikroprosesor Pentium 2. Perhatikan bahwa 1M byte pertama
dari memori disebut juga sistem Memori real atau Memori konvensional. Sistem
operasi DOS menghendaki mikroprosesor beroperasi pada mode real. Operasi mode
real memungkinkan perangkat lunak aplikasi yang ditulis untuk mikroprosesor
8086/8088 yang hanya berisi memori IM byte, untuk difungsikan pada 80286 dan
diatasnya tambah pengubahperankat lunaknya. Dalam semua kasus, masing-masing
mikroprosesor ini mengawali operasinya pada mode real pada saat pertama power
diaktifkan, atau mikroprosesor di seret.
Segmen dan Offset
Kombinasi dari suatu alamat segmen dan alamat offset mengkses lokasi memori
pada mode real terdiri dari alamat segmen dan alamat offset. Alamat segmen berada
dalam satu register segmen, mentapkan alamt awal dari segmen memori 64K byte.
Alamat offset memilih sembarang lokasi yang memiliki yang memilik segmen memori
64K itu. Pada skema pengalamatan segmen dan offset dalam memilih lokasi memori.
Gambaran memperlihatkan suatu segmen memori yang berawal pada lokasi 10000H
dan berakhir ada lokasi IFFFFH- dengan panjang 64K;juga memperlihatkan alamt
offset, yang kadang-kadang disebut displacement, F000H memilih lokasi IF000H dalam
system memori.
Mikroprosesor harus menghasilkan alamat memori 20-bit untuk mengakses
sebuah lokasi dalam memori 1M pertama. Contohnya jika suatu register segmen berisi
1200H, berarti segmen memori 64K byte berawal pada lokasi 12000H. Sama halnya
jika register segmen berisi 1201H, berarti segmen memorinya akan berawal pada lokasi
12010H. Karena ditambahkan dengan 0H, segmen mode real hanya dapat bermula pada
batasan 16 byte dalam sistem memori. Batasan 16 byte ini sering disebut paragraf.
Dalam mikroprosesor 80286 (dengan rangkaian eksternal khusus) dan 80386
sampai Pentium II, memori ekstra 64K kurang 16 byte dari memori dapat digunakan
dalam pengalamatan manakala alamat segmennya adalah FFFFH dan driver
HIMEM.SYS diinstal dalam sistem. Area memorinya (0FFFFH0H-10FFEFH) dirujuk
sebagai high memori. Ketika suatu alamat dibangkitkan menggunakan suatu alamat
segmen pada FFFFH, alamat pin A20 adalah enable (jika fasilitas ini ada) ketika suatu
offset ditambahkan. Contohnya, jika alamat segmennya adalah FFFFH dan alamat
offsetnya adalah 4000H, lokasi alamat memori mesin adalah FFFF0H + 4000H atau
103FFH.
Segmen Defult dan Register Offset
Mikroprosesor mempunyai sekumpulan aturan dalam menngunakan segmen
ketika memori dialamatkan. Aturan-aturan ini digunakan untuk mode real atau mode
protected. Sebagai contoh register segmen code CS selalu digunakan dengan instruksi
penunjuk (pointer) untuk mengalamatkan instruksi berikutnya dalam sebuah program.
Kombinasinya adalah CS:IP atau CS:EIP, tergantung pada mode operasi dari
microprosesor. Regiter segmen code mendefinisikan awal segmen kode dan penunjuk
instruksi menempatkan instruksi berikutnya dalam segmen kode. Kombinasi ini (CS:IP
atau CS:EIP) menempatkan instruksi berikutnya yang dieksekusi oleh mikroprosesor.
Sebagai contoh, jika CS = 1400H dan IP/IEP = 1200H, mikroprosesor mengambil
instruksi berikutnya dari lokasi memori 14000H + 1200H atau 15200H.
Kombinasi default yang lain adalah stack, data stack diferensikan sepanjang
segmen stack pada lokasi memori yang ditunjukkan oleh stack poiter (SP/ESP) atau
base pointer (BP/EBP). Kombinasi ini mengacu pada SS:SP (SS:ESP) atau SS:BP
(SS:EBP). Contoh, jika SS = 200H danBP = 300H , mikroprosesor mengalamati lokasi
memori 2300H untuk lokasi memori segmen stack. Catatan bahwa dalam mode real,
segmen memori hanya dapat mengalamati lokasi kurang dari 16-bit yang terkanan saja.
80386-Pentium II, tidak pernah menempatkan angka yang lebih besar dari FFFFH ke
dalam register offset jika mikroprosesor dioperasikan pada mode real. Ini akan
menyebabkan sistem hang dan mengindikasikan kekeliruan pengalamatan.
Misalkan sebuah aplikasi program memerlukan 1000H byte memori kode. 190H
byte memori untuk data, dan 200H memori untuk stack, aplikasi ini tidak memerlukan
segmen tambahan. Ketika program ini ditempatkan dalam TPA yang lain. Area ini
ditunjukkan oleh free pointer (penunjuk bebas) yang disediakan oleh DOS. Pemuatan
program ditangani secara otomatis oleh program loader yang terletak dalam DOS.
Skema Pengalamatan Segmen dan Offset Memungkinkan Penempatan Ulang
Skema pengelamatan segmen dan offset kelihatan rumit sekali, tetapi juga
menghasilkan keiuntungan bagi sistem. Skema dari pengelamatan segmen ditambah
offset memperbolehkan program untuk diletakkan ulang dalam system memori. Dan
juga struktur memperbolehkan program yang ditulis untuk berfungsi dalam mode real
untuk dioperasikan dalam mode protected. Program relocatable adalah program yang
dapat ditempatkan dalam area memori manapun dan dieksekusi tanpa mengalami
perubahan, sedangkan data relocatable adalah data yang dapat ditempatkan dalam area
memori manapun dan digunakan untuk program tanpa mengalami perubahan. Skema
alamat segmen dan offset memungkinkan program dan data untuk ditempatkan ulang
tanpa mengalami perubahan apapun baik dalam program maupun data. Ini ideal untuk
penggunaan sistem computer untuk tujuan umum dimana tidak semua mesin berisi area
memori yang sama. Struktur memori komputer pribadi berbeda dari mesin ke mesin.
Karena memori dialamatkan dalam sebuah segmen oleh alamat offset, segmen
memori dapat dipindahkan ketempat manapun dalam sistem memori tanpa mengubah
alamat offset manapun. Hal ini dicapai dengan pemindahan seluruh program, seperti
sebuah blok, ke area baru dan kemudian hanya mengubah isi register segmen. Jika
sebuah intruksi 4 byte diatas awal segmen, alamt offsetnya adalah 4. Jika seluruh
prigram dipindahkan ke area memori yang baru, alamat offset dari 4 ini masih
menunjuk ke 4 byte diatas awal segmen. Hanya isi register segmen harus di ubah ke
alamat program dalam area memori yang baru. Tanpa fitur ini, sebuah program harus
secara akstensif ditulis kembali atau diubah sebelum dipindahkan. Hal ini memerlukan
waktu tambahan atau banyak versi program untuk berbagai konfigurasi sisetm
komputer.
C. PENGENALAN PENGALAMATAN MEMORI MODE PROTECTED
(TERLINDUNG)
Pengalamatan memori mode terlindung (80286 dan diatasnya) memungkinkan
pengaksesan data dan program yang terletak diatas IM-byte pertama dari memori
maupun memori IM-byte pertama. Alamat terletak pada pada memori sistem pada
bagian ekstended (diperpanjang). Ketika data dan program terletak pada memori
extended, alamat offset digunakan untuk mengakses informasi yang terletak pada
segmen memori. Salah satu perbedaan adalah alamat segmen, yang diduskusikan pada
pengalamatan memori mode real, tidak ada lagi pada mode protected. Sebagai ganti
alamat segmen tersebutregister segmen berisi selektor yang digunakan untuk memilih
descriptor-deskriptor (pendeskripsi) pada tabel pendeskripsi. Pendeskripsi
menggambarkan lokasi segmen memori, panjang, dan hak akses. Karena register
segmen dan alamat offset masih mengakses memori, maka instruksi pada mode
terlindung identik instruksi pada mode real. Pada kenyataannya program yang ditulis
dalam mode real dapat digunakan dalam mode terlindung tanpa ada perubahan.
Perbedaan dalam metode ini adalah cara mikroprosesor menafsirkan register segmen
untuk mengakses segmen memori. Perbedaan lainnya, dalam 80386 dan versi di
atasnya, adalah bahwa alamat offset menjadi bilangan 32-bit, padahal tadinya bilangan
16-bit, dalam mode terlindung. Alamat offset 32-bit mengijinkan mikroprosesor untuk
mengakses data dalam sebuah segmen yang panjangnya mencapai 4G byte.
Selektor dan Deskriptor (Pendeskripsi)
Selector terdapat dalam register segmen dan digunakan untuk memilih salah satu
dari 8192 pendeskripsi dari salah satu dari dua tabel pendeskripsi. Pendeskripsi
menggambarkan lokasi, panjang dan hak akses dari segmen memori. Secara tidak
langsung register segmen digunakan untuk memilih segmen memori, tetapi secara tidak
langsung seperti dalam mode real. Contoh dalam mode real, jika CS = 0008H, maka
segmen kode akan dimulai pada lokasi 00080H, sedangkan pada mode terlindung angka
segmen dapat mengalamati beberapa lokasi memori sistem untuk segmen kode.
Ada dua tabel pendeskripsi yang digunakan bersama register segmen, satu berisi
pendeskripsi global dan yang lain berisi pendeskripsi lokal. Pendeskripsi global berisi
batas segmen yang digunakan untuk semua program, sedangkan pendeskripsi lokal
biasanya digunakan untuk program-program unik. Anda mungkin menyebut
pendeskripsi global sebagai pendiskripsi sistem, dan penyebut pendeskripsi lokal
sebagai pendeskripsi aplikasi. Masing-masing tabel pendeskripsi 8129 pendeskripsi
sehingga total semua pendeskripsi adalah 16384, yang dapat setiap saat digunakan
untuk aplikas. Karena pendeskripsi mendeskripsikan segmen memori pada masing-
masing aplikasi bisa dideskripsikan sampai 16.384 segmen memori.
Bagian base address (alamat basis) dari pendeskripsi menunjukkan lokasi awal
dari segmen memori. Mikroprosesor 80286 mempunyai alamat basis 24-bit, sehingga
segmen dimulai pada beberapa lokasi dalam 16M byte memori. Perhatikan bahwa
batasan paragraf dihilangkan pada mikroprosesor ini pada saat bekerja dalam mode
terlindung. 80386 dan diatasnya menggunakan alamat basis 32-bit yang
memperbolehkan segmen dimulai pada beberapa lokasi memori dalam 4G byte.
Perhatikan bagaimana alamat basis dari pendeskripsi 80286 kompatibel dengan
pendeskripsi 80386 sampai Pentium II karena MSB 16-bitnya adalah 0000H. lihatlah
bab 18 (jilid 2) untuk perincian tambahan tentang ruang memori 64G yang disediakan
oleh Pentium II.
Batasan (limit) segmen berisi alamat offset terakhir yang terdapat dalam segmen.
Sebagai contoh, jika segmen dimulai pada lokasi memori F0000H dan diakhiri pada
lokasi memori F000FFH, maka alamat basisnya adalah F00000H, dan limitnya adalah
FFH. Untuk mikroprosesor 80286, alamat basisnya adalah F00000H dan limitnya
adalah 00FFH. Untuk 80386 keatas alamat basisnya adalah 00F00000H dan limitnya
adalah 000FFH. Sebagai catatan, 80286 mempunyai limit 16-bit dan 80386 sampai
Pentium II mempunyai limit 20-bit. 80286 mengakses segmen memori yang panjangnya
antara 1 dan 64K byte. 80386 keatas mengakses segmen memori yang terletak antara 1
dan 1M byte, atau antara 4K dan 4G.
Kelebihan lain yang dapat ditemukan dalam pendeskripsi 80386 sampai Pentium
11, yang tidak ditemukan pada pendeskripsi 80286 adalah bit G atau granularity bit.
Jika G = 0, batas segmen dispesifikasi 00000H sampai FFFFFH. Jika G = 1, nilai limit
segmen dikalaikan dengan 4K byte (dilampirkan dengan XXXH). Limitnya kemudian
adalah 00000XXXH sampai FFFFFXXXH, jika G = 1. Hal itu menyebabkan panjang
segmen dari 4K sampai 4G byte dalam kelipatan 4K byte. Alas an bahwa panjang
segmen pada 80286 adalah 64K byte adalah karena alamat offset dengan XXXH).
Limitnya kemudian adalah 00000XXXH sampai FFFFFXXXH, jika G = 1. Hal itu
menyebabkan panjang segmen dari 4K sampai 4G byte dalam kelipatan 4K byte. Alas
an bahwa panjang segmen pada 80286 adalah 64K byte adalah karena alamat offset
selalu 16-bit, yang disebabkan rancangan internalnya yang 16-bit. 80386 keatas sudah
menggunakan rancangan internal 32-bit, yang memungkinkan alamat offset dalam
bentuk operasi terlindung dari 32-bit. Alamat offset 32-bit memungkinkan panjang
segmennya mencapai 4Gbyte, dan alamat offset yang 16 byte memungkinkan panjang
segmennya mencapai 64K byte. Sistem operasi dapat beroperasi dalam sistem 16-bit
atau 32-bit sebagai contoh, DOS menggunakan sistem 16-bit, sedangkan sebagian besar
aplikasi windows menggunakan sistem 32-bit.
Bit AV dalam deskriptor 80386 ke atas digunakan oleh sebagian sistem operasi
untuk mengindifikasi keberadaan segmen (AV = 1) atau tidak (AV = 0). Bit D
mengidentifikasikan bagaimana instruksi-instruksi pada 80386 hingga Pentium 11
mengakses data register dan memori dalam mode terlindung atau real. Jika D = 0,
instruksinya adalah instruksi 16-bit yang kompatibel dengan mikroprosesor 8086-
80286. Artinya instruksi menggunakan alamat offset dan register 16-bit sebagai standar,
bentuk ini sering disebut bentuk instruksi 16-bit. Jika D = 1, instruksi adalah instruksi
32-bit. Secara mendasar, bentuk instruksi 32-bit menganggap bahwa semua alamat
offset dan register adalah 32-bit. Perlu dicatat bahwa standar dari besarnya register dan
alamat offset dapat digunakan oleh bentuk instruksi 16-bit dan 32-bit. Sistem operasi
MSDOS dan PCDOS selalu menggunakan instruksi dalam mode instruksi 16-bit.
Windows 3.1 juga menghendaki mode instruksi 16-bit. Perhatikan bahwa mode
instruksi 32-bit hanya dipakai untuk mengakses sistem mode terlindung seperti
Windows NT, Windows 95 atau OS/2. Pembahasan lebih terinci mengenai bentuk
tersebut dan aplikasinya dibahas di bab 3 dan 4.
Acces right byte (byte hak akses) yang dapat mengontrol akses ke segmen
memori mode terlindung. Byte ini menjelaskan bagaimana segmen befungsi dalam
sistem. Byte hak akses dapat mengotrol segmen secara keseluruhan. Jika segmen
merupakan segmen data, arah pengembangan lebih spesifik. Jika segmen berkembang
di luar batasnya, program mikroprosesor diinterupsi, mengidentifikasikan kesalahan
proteksi umum. Anda bahkan dapat menspesifikasi jika sebuah segmen data dapat
ditulis atau terproteksi. Kode segmen juga dikontrol dalam bentuk yang sama dan dapat
mencegah pembacaan untuk memproteksi perangkat lunak.
Register Tak Terlihat-Program (Program-Invisible Registers)
Tabel pendeskripsi lokal dan global dapat ditemukan dalam sistem memori. Untuk
mengakses dan menspesifikasi alamat dari tabel ini, 80286, 80386, 80486, Pentium dan
Pentium pro, dan pentium11 berisikan register tak terlihat-program. Register tak terlihat
ini tidak secara langsung dialamatkan oleh perangkat lunak, jadi mereka memberikan
nama tersebut walaupun beberapa dari register ini diakses dengan perangkat lunak
sistem, register ini mengontrol mikroprosesor saat beroperasi pada mode terlindung.
Setiap register segmen berisikan bagian tak terlihat-program yang digunakan
dalam mode terlindung. Porsi tak terlihat-program dari register ini sering disebut
memori cache karene cache merupakan memori apapun yang menyimpan informasi.
Cache ini tidak boleh dikelirukan dengan cache (penempungan) tingkat 1 dan tingkat 2
yang ditemukan dalam mikroprosesor. Porsi takterlihat-program dari register segmen
diisi dengan alamat basis, limit dan hak akses setiap saat angka dalam register segmen
berubah. Ketika nomor segmen baru ditempatkan di dalam register segmen,
mikroprosesor mengakses tabel pendeskripsi dan mengisi pendeskripsi ke dalam cache
takterlihat-program dari register segmen. Ia tersimpan dan digunakan untuk mengakses
segmen memori sampai isi segmen berubah lagi. Ini memungkinkan mikroprosesor
untuk mengakses segmen memori berulang kali tanpa merujuk ke tabel pendeskripsi
untuk setiap akses (dari sinilah istilah cache).
GTDR (global descriptor table register) dan IDTR (interrupt descriptor table
register) berisikan alamat basis dari tabel pendeskripsi dan batasannya. Batas setiap
pendeskripsi adalah 16-bit karena panjang tabel maksimun adalah 64K byte. Ketika
operasi mode terlindung diinginkan, alamat dari pendeskripsi global dan limitnya diisi
kedalam GDTR. Sebelum memakai mode terlindung, tabel pendeskripsi interrupt dan
IDTR juga harus diinisialisasi. Rincian mengenai operasi mode terlindung dibahas
kemudian pada bab ini. Untuk saat ini, pemrograman dan penambahan pendeskripsi
untuk register ini adalah mustahil.
Lokasi dari tabel pendeskripsi lokal dipilih dari tabel pendeskripsi global. Satu
dari tabel pendeskripsi global diset pada alamat tabel pendeskripsi lokal. Untuk
mengakses tabel pendeskripsi lokal, LDTR (local descriptor table register) diisi dengan
selektor, seperti halnya register segmen diisi dengan selektor. Selektor ini mengakses
tabel pendeskripsi global dan memuat alamat basis, batas, dan hak akses dari tabel
pendeskripsi lokal ke dalam porsi penampungan (cache) dari LDTR.
Task register (TR) menampung sebuah selector yang mengakses sebuah
pendeskripsi yang menentukan tugas (task). Sebuah task biasanya berupa sebuah
prosedur atau program aplikasi. Pendeskripsi untuk prosedur atau aplikasi program itu
disimpan dalam tabel pendeskripsi global, jadi akses dapat dikontrol melalui tingkat
tertentu (privilege). Pekerjaan register memungkinkan sebuah konteks atau tugas
dikerjakan dalam waktu sekitar 17 µs. task switching ini memungkinkan mikroprosesor
beralih antar tugas dalam waktu yang cukup singkat. Task switching memungkinkan
pengerjaan secara multi-tasking (multitugas) dalam beralih dari tugas yang satu ke tugas
yang lainnya dengan cara yang simpel dan teratur.
D. PAGING MEMORI
Mekanisme paging memori yang ada dalam mikroprosesor 80386 dan versi
diatasnya mengijinkan setiap lokasi memori secara fisik ditunjukkan ke setiap alamat
linear. Alamat linear didefinisikan sebagai alamat yang dibangkitkan oleh sebuah
program. Dengan modul paging memori, alamat linear ditranslasikan secara semu ke
dalam setiap alamat fisik, yang mengijinkan sebuah aplikasi yang ditulis ke fungsi
pada alamat khusus dilokasikan kembali melalui mekanisme paging. Modul ini juga
mengijinkan memori ditempatkan kedalam area di mana tidak ada memori, misalnya
pada blok memori atas (UMB) yang di sediakan oleh EMM386.EXE.
Program EMM386.EXE mengalokasikan kembali memori extended, dalam blok
4K, ke memori sistem antara video BIOS dan ROM BIOS sistem pada blok memori
atas. Tanpa mekanisme paging, penggunaan area memori ini tidak dimungkinkan.
Register Paging
Modul paging dikendalikan oleh isi dari register kontrol mikroprosesor. Ingat
bahwa register-register ini hanya ada pada mikroprosesor 80386 sampai Pentium. Mulai
Pentium, registrer kontrol tambahan yang di beri nama CR4 mengendalikan ekstensi
dengan arsitektur dasar yang disediakan dalam Pentium dan mikroprosesor versi
diatasnya. Satu dari fitur-fitur ini adalah sebuah page (halaman) 4M-byte yang
diaktifkan oleh penyetelan bit posisi 4 atau CR4.
Register-register yang penting untuk modul paging adalah CR0 dan CR3. Posisi
bit paling kiri (PG) dari CR0 memilih paging pada saat logika 1. Jika bit PG di-nolkan
(0), alamat linear yang dibangkitkan oleh program menjadi alamat fisik yang digunakan
untuk mengakses memor. Jika bit PG di-set (1), alamat linear diubah ke alamat fisik
melalui mekanisme paging. Mekanisme paging berfungsi baik dalam mode real
maupun mode terlindung.
CR3 terdiri dari alamat basis direktori halaman, dan bit PCD dan PWT. Bit PCD
dan PWT mengendalikan operasi pin PCD dan PWT pada mikroprosesor. Jika PCD
diset (1), pin PCD berstatus logika 1 selama siklus bus yang bukan merupakan halaman.
Hal ini mengijinkan perangkat keras luar mengontrol memori cache tingkat 2. (Cache
tingkat 2 merupakan memori kecepatan tinggi luar yang berfungsi sebagai buffer
(penyangga) antara mikroprosesor dan sistem memori DRAM utama). Bit PWT juga
muncul pada pin PWT, selama siklus bus yang bukan merupakan halaman untuk
mengendalikan cache write-through dalam sistem. Alamat basis direktori halaman
menempatkan direktori halaman pada modul translasi page. Ingat bahwa alamat ini
menempatkan direktori halaman pada setiap 4K dalam setiap memori karena ditambah
secara internal dengan 000H. Direktori halaman yang terdiri dari 1024 direktori dari
setiap 4 byte. Setiap direktori halaman mengakses alamat-alamat sebuah table halaman
yang terdiri dari 1024 entri.
Alamat linear, yang dibangkitkan oleh perangkat lunak, dibagi dalam tiga bagian
yang digunakan untuk mengakses page directory entry (entri direktori halaman), page
table entry (entri tabel halaman), dan page offset address (alamat offset halaman).
Direktori Halaman dan Tabel Halaman
Direktori halaman terdiri dari 1024 alamat doubleword yang menempatkan
sampai 1024 tabel halaman. Direktori halaman dan setiap tabel halaman panjangnya
4K. jika seluruh memori 4G byte dipakai, sistem harus mengalokasikan memori 4K
byte pada direktori halaman, dan 4K dikalikan dengan 1024 atau 4M byte untuk 1024
tabel halaman. Dengan demikian memori yang diperlukan dapat diperkirakan.
Sistem DOS dan EMM386.EXE menggunakan tabel halaman untuk
mendefinisikan kembali area memori antara lokasi C8000H-EFFFFH sebagai blok
memori atas. Hal ini dapat dilakukan dengan repaging memori extended untuk mengisi
kembali bagian sistem memori konvensional ini agar DOS dapat mengakses memori
tambahan. Diasumsikan bahwa program EMM386.EXE mengijinkan akses ke memori
extended 16M byte dan memori konvensional melalui paging dan lokasi C8000H-
EFFFFH harus diatur kembali ke lokasi 110000-138000H, dengan area memori lainnya
yang diatur ke lokasi normalnya.
Disini, direktori halaman terdiri dari 4 entri. Setiap entri dalam direktori halaman
berhubungan dengan memori fisik 4M byte. Sistem juga terdiri dari empat tabel
halaman dengan 1024 entri pada setiap tabel. Setiap entri dalam tabel halaman
mengatur kembali memori fisik 4K byte.
Seperti halnya DOS, program Windows juga mengatur kembali sistem memori.
Saat ini, karena jumlah memori yang diperlukan untuk menyimpan tabel halaman, maka
Windows versi 3.11 melakukan paging hanya untuk memori 16M byte. Pada
mikroprosesor Pentium dan Pentium Pro, panjang halamannya bisa mencapai 4K byte
atau 4M byte. Meskipun sekarang belum ada perangkat lunak yang mendukung page
4M byte, seperti Pentium II dan versi lebih maju yang mendukung komputer pribadi,
sistem operasi masa datang sudah pasti dapat mendukung halaman memori 4M byte.
BAB III
KESIMPULAN
Model pemrograman pada mikroprosesor 8086 sampai 80286 terdiri dari register 8-bit
dan register 16-bit. Model pemrograman pada mikroprosesor 80386dan versi di atasnya
terdiri dari register 8-bit, register 16-bit, dan register 32-bit serta dua register segmen
16-bit tambahan: FS dan GS.
Register 8-bit adalah AH, AL, BH, BL, CH, CL, DH dan DL. Register 16-bit adalah
AX, BX, CX, DX, SP, BP, DI dan SI. Register segmen adalah CS, DS, ES, SS, FS, dan
GS. Register 32-bit extended adalah EAX, EBX, ECX, EDX, ESP, EBP, EDI dan ESI.
Di samping itu, mikroprosesor memiliki sebuah petunjuk instruksi (IP/EIP) dan register
flag (FLAGS atau EFLAGS).
Semua alamat memori mode real merupakan kombinasi dari sebuah alamat ssegmen
ditambah sebuah alamat offset. Lokasi awal dari sebuah segmen ditentukan oleh
bilangan 16-bit dalam register segmen yang ditambah dengans nol heksadesimal pada
digit yang paling kanan. Alamat offset merupakan bilangan 16-bit ditambah dengan
alamat segmen 20-bit untuk membentuk alamat memori mode real.
Register segmen terdiri dari tiga field informasi dalam mode terlindung. 13-bit yang
paling kiri dari register segmen mengalamatkan satu dari 8192 pendeskripsi pada
sebuah tabel pendeskripsi. Bit T1 mengakses tabel pendeskripsi global (T1 = 0) atau
tabel pendeskripsi local T1 = 1). 2-bit paling kanan pada register segmen memilih
tingkat keistimewaan diminta untuk akses segmen memori.
Memory paging diselesaikan melalui register control CR0 dan CR3. Bit PG pada CR0
mengaktifkan paging dan isi CR3 mengalamatkan direktori halaman. Direktori halaman
terdiri dari samapai 1024 alamat tabel halaman yang digunakan untuk mengakses tabel
paging.