Anda di halaman 1dari 8

Machine Translated by Google

8.7 Contoh: Arsitektur Intel 32 dan 64-bit 383

halaman fisik tidak boleh memiliki dua (atau lebih) alamat virtual bersama. Teknik
sederhana untuk mengatasi masalah ini adalah dengan mengizinkan tabel halaman
berisi hanya satu pemetaan alamat virtual ke alamat fisik bersama. Ini berarti bahwa
referensi ke alamat virtual yang tidak dipetakan mengakibatkan kesalahan halaman.

8.6.4 Oracle SPARC Solaris


Pertimbangkan sebagai contoh terakhir CPU 64-bit modern dan sistem operasi yang
terintegrasi erat untuk menyediakan memori virtual overhead rendah. Solaris yang
berjalan pada CPU SPARC adalah sistem operasi 64-bit sepenuhnya dan karena itu
harus memecahkan masalah memori virtual tanpa menggunakan semua memori fisiknya
dengan menyimpan beberapa tingkat tabel halaman. Pendekatannya agak rumit tetapi
memecahkan masalah secara efisien menggunakan tabel halaman hash. Ada dua tabel
hash—satu untuk kernel dan satu untuk semua proses pengguna. Masing-masing
memetakan alamat memori dari virtual ke memori fisik. Setiap entri tabel hash mewakili
area yang berdekatan dari memori virtual yang dipetakan, yang lebih efisien daripada
memiliki entri tabel hash yang terpisah untuk setiap halaman. Setiap entri memiliki
alamat dasar dan rentang yang menunjukkan jumlah halaman yang diwakili entri tersebut.
Terjemahan virtual-ke-fisik akan memakan waktu terlalu lama jika setiap alamat
memerlukan pencarian melalui tabel hash, sehingga CPU mengimplementasikan TLB
yang menyimpan entri tabel terjemahan (TTE) untuk pencarian perangkat keras yang
cepat. Cache dari TTE ini berada di translation storage buffer (TSB), yang mencakup
entri per halaman yang baru saja diakses. Ketika referensi alamat virtual terjadi,
perangkat keras mencari terjemahan TLB . Jika tidak ada yang ditemukan, perangkat
keras berjalan melalui TSB dalam memori mencari TTE yang sesuai dengan alamat
virtual yang menyebabkan pencarian. Fungsi TLB walk ini ditemukan di banyak CPU modern.
Jika kecocokan ditemukan di TSB, CPU menyalin entri TSB ke TLB , dan terjemahan
memori selesai. Jika tidak ada kecocokan yang ditemukan di TSB, kernel diinterupsi
untuk mencari tabel hash. Kernel kemudian membuat TTE dari tabel hash yang sesuai
dan menyimpannya di TSB untuk pemuatan otomatis ke TLB oleh unit manajemen
memori CPU . Akhirnya, pengendali interupsi mengembalikan kontrol ke MMU, yang
menyelesaikan terjemahan alamat dan mengambil byte atau kata yang diminta dari
memori utama.

8.7 Contoh: Arsitektur Intel 32 dan 64-bit


Arsitektur chip Intel telah mendominasi lanskap komputer pribadi selama beberapa
tahun. Intel 8086 16-bit muncul pada akhir 1970-an dan segera diikuti oleh chip 16-bit
lainnya—Intel 8088—yang terkenal sebagai chip yang digunakan pada PC IBM asli.
Baik chip 8086 maupun chip 8088 didasarkan pada arsitektur yang tersegmentasi. Intel
kemudian memproduksi serangkaian chip 32-bit — IA-32 — yang termasuk keluarga
prosesor Pentium 32-bit. Arsitektur IA-32 mendukung baik paging maupun segmentasi.
Baru-baru ini, Intel telah menghasilkan serangkaian chip 64-bit berdasarkan arsitektur
x86-64.
Saat ini, semua sistem operasi PC paling populer berjalan pada chip Intel, termasuk
Windows, Mac OS X, dan Linux (walaupun Linux, tentu saja, juga berjalan pada
beberapa arsitektur lain). Namun, khususnya, dominasi Intel belum menyebar ke sistem
seluler, di mana arsitektur ARM saat ini menikmati kesuksesan yang cukup besar (lihat
Bagian 8.8).
Machine Translated by Google

384
Bab 8 Memori Utama

alamat
segmentasi alamat logis alamat linier unit fisik fisik
CPU
satuan halaman Penyimpanan

Gambar 8.21 Terjemahan logis ke alamat fisik di IA-32.

Di bagian ini, kami memeriksa terjemahan alamat untuk arsitektur IA-32 dan x86-64.
Namun, sebelum melanjutkan, penting untuk dicatat bahwa karena Intel telah merilis
beberapa versi—serta variasi—arsitekturnya selama bertahun-tahun, kami tidak dapat
memberikan deskripsi lengkap tentang struktur manajemen memori semua chipnya. Kami
juga tidak dapat memberikan semua detail CPU , karena informasi tersebut sebaiknya
diserahkan ke buku tentang arsitektur komputer. Sebaliknya, kami menyajikan konsep
manajemen memori utama dari CPU Intel ini.

8.7.1 Arsitektur IA-32


Manajemen memori dalam sistem IA-32 dibagi menjadi dua komponen — segmentasi dan
paging — dan bekerja sebagai berikut: CPU menghasilkan alamat logis, yang diberikan
ke unit segmentasi. Unit segmentasi menghasilkan alamat linier untuk setiap alamat logis.
Alamat linier kemudian diberikan ke unit paging, yang pada gilirannya menghasilkan
alamat fisik di memori utama. Dengan demikian, unit segmentasi dan paging membentuk
setara dengan unit manajemen memori (MMU). Skema ini ditunjukkan pada Gambar 8.21.

8.7.1.1 Segmentasi IA-32

Arsitektur IA-32 memungkinkan segmen sebesar 4 GB, dan jumlah segmen maksimum
per proses adalah 16 K. Ruang alamat logis dari suatu proses dibagi menjadi dua partisi.
Partisi pertama terdiri dari hingga 8 Ksegmen yang bersifat privat untuk proses tersebut.
Partisi kedua terdiri dari hingga 8 K segmen yang dibagi di antara semua proses. Informasi
tentang partisi pertama disimpan di tabel deskriptor lokal (LDT); informasi tentang partisi
kedua disimpan dalam tabel deskriptor global (GDT). Setiap entri di LDT dan GDT terdiri
dari deskriptor segmen 8-byte dengan informasi rinci tentang segmen tertentu, termasuk
lokasi dasar dan batas segmen itu.

Alamat logis adalah pasangan (pemilih, offset), di mana pemilih adalah nomor 16-bit:

s g p
13 1 2

di mana s menunjukkan nomor segmen, g menunjukkan apakah segmen tersebut dalam


GDT atau LDT, dan p berkaitan dengan perlindungan. Offset adalah angka 32-bit yang
menentukan lokasi byte dalam segmen yang dimaksud.
Mesin memiliki enam register segmen, memungkinkan enam segmen untuk ditangani pada
satu waktu oleh suatu proses. Ini juga memiliki enam register mikroprogram 8-byte untuk
menampung deskriptor yang sesuai baik dari LDT atau GDT.
Cache ini memungkinkan Pentium menghindari keharusan membaca deskriptor dari
memori untuk setiap referensi memori.
Machine Translated by Google

8.7 Contoh: Arsitektur Intel 32 dan 64-bit 385

pemilih alamat logis mengimbangi

meja deskriptor

deskriptor segmen +

Alamat linier 32-bit

Gambar 8.22 Segmentasi IA-32.

Alamat linier pada IA-32 panjangnya 32 bit dan dibentuk sebagai berikut.
Register segmen menunjuk ke entri yang sesuai di LDT atau GDT. Informasi dasar dan
batas tentang segmen tersebut digunakan untuk menghasilkan alamat linier. Pertama,
limit digunakan untuk memeriksa validitas alamat. Jika alamat tidak valid, kesalahan
memori dihasilkan, mengakibatkan jebakan ke sistem operasi. Jika valid, maka nilai offset
ditambahkan ke nilai basis, menghasilkan alamat linier 32-bit. Hal ini ditunjukkan pada
Gambar 8.22. Pada bagian berikut, kita membahas bagaimana unit paging mengubah
alamat linier ini menjadi alamat fisik.

8.7.1.2 Paging IA-32


Arsitektur IA-32 memungkinkan ukuran halaman 4 KB atau 4 MB. Untuk halaman 4-KB ,
IA-32 menggunakan skema paging dua tingkat di mana pembagian alamat linier 32-bit
adalah sebagai berikut:

nomor halaman halaman offset

p1 p2 d

10 10 12

Skema terjemahan alamat untuk arsitektur ini mirip dengan skema yang ditunjukkan pada
Gambar 8.18. Terjemahan alamat IA-32 ditunjukkan lebih rinci pada Gambar 8.23. 10 bit
orde tinggi mereferensikan sebuah entri dalam tabel halaman terluar, yang oleh IA-32
disebut sebagai direktori halaman. ( Register CR3 menunjuk ke direktori halaman untuk
proses saat ini.) Entri direktori halaman menunjuk ke tabel halaman dalam yang diindeks
oleh isi 10 bit terdalam di alamat linier. Akhirnya, bit orde rendah 0–11 merujuk ke offset
di halaman 4-KB yang ditunjukkan di tabel halaman.

Satu entri dalam direktori halaman adalah bendera Ukuran Halaman , yang—jika
disetel—menunjukkan bahwa ukuran bingkai halaman adalah 4 MB dan bukan 4 KB standar.
Jika bendera ini disetel, direktori halaman menunjuk langsung ke bingkai halaman 4-MB ,
melewati tabel halaman dalam; dan 22 bit orde rendah dalam alamat linier mengacu pada
offset dalam bingkai halaman 4 MB .
Machine Translated by Google

386 Bab 8 Memori Utama


(alamat linier)

direktori halaman tabel halaman mengimbangi

31 22 21 12 11 0

halaman 4-KB
meja halaman

halaman
direktori

CR3 4-MB
daftar halaman

direktori halaman mengimbangi

31 22 21 0

Gambar 8.23 Paging dalam arsitektur IA-32.

Untuk meningkatkan efisiensi penggunaan memori fisik, tabel halaman IA-32 dapat
ditukar ke disk. Dalam hal ini, bit yang tidak valid digunakan di direktori halaman
entri untuk menunjukkan apakah tabel yang ditunjuk entri ada di memori
atau pada disk. Jika tabel ada di disk, sistem operasi dapat menggunakan yang lain 31
bit untuk menentukan lokasi disk tabel. Meja kemudian dapat dibawa ke
memori sesuai permintaan.
Saat pengembang perangkat lunak mulai menemukan keterbatasan memori 4 GB
arsitektur 32-bit, Intel mengadopsi ekstensi alamat halaman (PAE), yang
memungkinkan prosesor 32-bit untuk mengakses ruang alamat fisik yang lebih besar dari 4 GB. Itu
perbedaan mendasar yang diperkenalkan oleh dukungan PAE adalah bahwa paging berasal dari
skema dua tingkat (seperti yang ditunjukkan pada Gambar 8.23) ke skema tiga tingkat, di mana:
dua bit teratas merujuk ke tabel penunjuk direktori halaman. Gambar 8.24 mengilustrasikan
sistem PAE dengan halaman 4-KB . (PAE juga mendukung halaman 2-MB .)

direktori halaman tabel halaman mengimbangi

31 30 29 21 20 12 11 0

4-KB
halaman

CR3
daftar direktori halaman halaman halaman

meja penunjuk direktori meja

Gambar 8.24 Ekstensi alamat halaman.


Machine Translated by Google

8.7 Contoh: Arsitektur Intel 32 dan 64-bit 387

peta halaman direktori halaman penunjuk halaman tabel


tidak terpakai tingkat 4 direktori tabel 39 38 30 29 21 20 halaman mengimbangi

63 47 48 12 11 0

Gambar 8.25 x86-64 alamat linier.

PAE juga meningkatkan entri direktori halaman dan tabel halaman dari ukuran 32
menjadi 64 bit, yang memungkinkan alamat dasar tabel halaman dan bingkai halaman
diperpanjang dari 20 menjadi 24 bit. Dikombinasikan dengan offset 12-bit,
menambahkan dukungan PAE ke IA-32 meningkatkan ruang alamat menjadi 36 bit,
yang mendukung memori fisik hingga 64 GB . Penting untuk dicatat bahwa dukungan
sistem operasi diperlukan untuk menggunakan PAE. Baik Linux dan Intel Mac OS X
mendukung PAE. Namun, sistem operasi desktop Windows versi 32-bit masih
menyediakan dukungan hanya untuk memori fisik 4 GB , meskipun PAE diaktifkan.

8.7.2 x86-64
Intel memiliki sejarah yang menarik dalam mengembangkan arsitektur 64-bit. Entri
awalnya adalah arsitektur IA-64 (kemudian bernama Itanium) , tetapi arsitektur itu
tidak diadopsi secara luas. Sementara itu, produsen chip lain— AMD — mulai
mengembangkan arsitektur 64-bit yang dikenal sebagai x86-64 yang didasarkan pada
perluasan set instruksi IA-32 yang ada. x86-64 mendukung ruang alamat logis dan
fisik yang jauh lebih besar, serta beberapa kemajuan arsitektur lainnya. Secara
historis, AMD sering mengembangkan chip berdasarkan arsitektur Intel, tetapi
sekarang peran tersebut dibalik karena Intel mengadopsi arsitektur x86-64 AMD .
Dalam membahas arsitektur ini, daripada menggunakan nama komersial AMD64 dan
Intel 64, kita akan menggunakan istilah yang lebih umum x86-64.
Dukungan untuk ruang alamat 64-bit menghasilkan memori yang dapat
dialamatkan sebesar 264 byte—angka yang lebih besar dari 16 quintillion (atau 16 exabytes).
Namun, meskipun sistem 64-bit berpotensi dapat mengatasi memori sebanyak ini,
dalam praktiknya jauh lebih sedikit dari 64 bit yang digunakan untuk representasi
alamat dalam desain saat ini. Arsitektur x86-64 saat ini menyediakan alamat virtual
48-bit dengan dukungan untuk ukuran halaman 4 KB, 2 MB, atau 1 GB menggunakan
empat tingkat hierarki paging. Representasi alamat linier tampak pada Gambar 8.25.
Karena skema pengalamatan ini dapat menggunakan PAE, alamat virtual berukuran
48 bit tetapi mendukung alamat fisik 52-bit (4096 terabyte).

KOMPUTER 64-BIT

Sejarah telah mengajarkan kita bahwa meskipun kapasitas memori, kecepatan CPU , dan
kemampuan komputer serupa tampaknya cukup besar untuk memenuhi permintaan di
masa mendatang, pertumbuhan teknologi pada akhirnya menyerap kapasitas yang
tersedia, dan kita mendapati diri kita membutuhkan memori tambahan atau kekuatan
pemrosesan, seringkali lebih cepat dari yang kita kira. Apa yang mungkin dibawa oleh
teknologi masa depan yang akan membuat ruang alamat 64-bit tampak terlalu kecil?
Machine Translated by Google

388 Bab 8 Memori Utama


8.8 Contoh: Arsitektur ARM
Meskipun chip Intel telah mendominasi pasar komputer pribadi selama lebih dari 30
tahun, chip untuk perangkat seluler seperti smartphone dan komputer tablet sering kali
berjalan pada prosesor ARM 32-bit . Menariknya, ketika Intel mendesain dan memproduksi
chip, ARM hanya mendesainnya. Kemudian melisensikan desainnya kepada produsen
chip. Apple telah melisensikan desain ARM untuk perangkat seluler iPhone dan iPad-nya,
dan beberapa smartphone berbasis Android juga menggunakan prosesor ARM .

Arsitektur ARM 32-bit mendukung ukuran halaman berikut:

1. Halaman 4-KB dan 16-KB


2. Halaman 1-MB dan 16-MB (disebut bagian)

Sistem paging yang digunakan tergantung pada apakah halaman atau bagian sedang
direferensikan. Paging satu tingkat digunakan untuk bagian 1-MB dan 16-MB ; halaman
dua tingkat digunakan untuk halaman 4-KB dan 16-KB . Terjemahan alamat dengan ARM
MMU ditunjukkan pada Gambar 8.26.
Arsitektur ARM juga mendukung dua tingkat TLB. Di tingkat luar ada dua TLB mikro
—sebuah TLB terpisah untuk data dan satu lagi untuk instruksi.
TLB mikro juga mendukung ASID . Di tingkat dalam adalah TLB utama tunggal.
Terjemahan alamat dimulai pada tingkat mikro TLB . Dalam kasus miss, TLB utama
kemudian diperiksa. Jika kedua TLB menghasilkan kesalahan, langkah tabel halaman
harus dilakukan di perangkat keras.

32 bit

halaman luar halaman dalam mengimbangi

4-KB
atau

halaman

16-KB

1-MB
atau

Bagian
16-MB

Gambar 8.26 Terjemahan alamat logis di ARM.


Machine Translated by Google

8.9 Ringkasan 389

8.9 Ringkasan

Algoritme manajemen memori untuk sistem operasi multiprogram mulai dari pendekatan sistem
pengguna tunggal yang sederhana hingga segmentasi dan paging. Penentu terpenting dari metode
yang digunakan dalam sistem tertentu adalah perangkat keras yang disediakan. Setiap alamat
memori yang dihasilkan oleh CPU harus diperiksa legalitasnya dan kemungkinan dipetakan ke
alamat fisik.
Pengecekan tidak dapat diimplementasikan (efisien) dalam perangkat lunak. Oleh karena itu, kami
terkendala oleh perangkat keras yang tersedia.
Berbagai algoritma manajemen memori (alokasi bersebelahan, paging, segmentasi, dan
kombinasi paging dan segmentasi) berbeda dalam banyak aspek. Dalam membandingkan berbagai
strategi manajemen memori, kami menggunakan pertimbangan berikut:

• Dukungan perangkat keras. Sebuah register dasar sederhana atau pasangan register batas-
dasar sudah cukup untuk skema partisi tunggal dan ganda, sedangkan paging dan segmentasi
membutuhkan tabel pemetaan untuk mendefinisikan peta alamat.

• Kinerja. Ketika algoritma manajemen memori menjadi lebih kompleks, waktu yang dibutuhkan
untuk memetakan alamat logis ke alamat fisik meningkat. Untuk sistem sederhana, kita hanya
perlu membandingkan atau menambah alamat logis—operasi yang cepat. Paging dan
segmentasi bisa secepat jika tabel pemetaan diimplementasikan dalam register cepat. Namun,
jika tabel ada di dalam memori, akses memori pengguna dapat diturunkan secara substansial.

TLB dapat mengurangi penurunan kinerja ke tingkat yang dapat diterima. • Fragmentasi.

Sistem multiprogram umumnya akan bekerja lebih efisien jika memiliki tingkat multiprogram yang
lebih tinggi. Untuk sekumpulan proses tertentu, kita dapat meningkatkan level multiprogramming
hanya dengan mengemas lebih banyak proses ke dalam memori. Untuk menyelesaikan tugas
ini, kita harus mengurangi pemborosan memori, atau fragmentasi. Sistem dengan unit alokasi
berukuran tetap, seperti skema partisi tunggal dan paging, mengalami fragmentasi internal.
Sistem dengan unit alokasi berukuran variabel, seperti skema dan segmentasi multi-partisi,
mengalami fragmentasi eksternal.

• Relokasi. Salah satu solusi untuk masalah eksternal-fragmentasi adalah pemadatan. Pemadatan
melibatkan pemindahan program dalam memori sedemikian rupa sehingga program tidak
memperhatikan perubahan tersebut. Pertimbangan ini mengharuskan alamat logis dipindahkan
secara dinamis, pada waktu eksekusi.
Jika alamat direlokasi hanya pada waktu buka, kami tidak dapat memadatkan penyimpanan.

• Bertukar. Swapping dapat ditambahkan ke algoritma apapun. Pada interval yang ditentukan
oleh sistem operasi, biasanya ditentukan oleh kebijakan penjadwalan CPU, proses disalin
dari memori utama ke backing store dan kemudian disalin kembali ke memori utama. Skema
ini memungkinkan lebih banyak proses untuk dijalankan daripada yang dapat dimasukkan ke
dalam memori pada satu waktu. Secara umum, sistem operasi PC mendukung paging, dan
sistem operasi untuk perangkat seluler tidak. • Berbagi. Cara lain untuk meningkatkan level

multiprogramming adalah dengan berbagi kode dan data di antara proses yang berbeda. Berbagi
umumnya mengharuskan baik paging atau segmentasi digunakan untuk menyediakan paket-
paket kecil dari
Machine Translated by Google

390 Bab 8 Memori Utama


informasi (halaman atau segmen) yang dapat dibagikan. Berbagi adalah cara
menjalankan banyak proses dengan jumlah memori terbatas, tetapi program dan
data bersama harus dirancang dengan hati-hati. • Perlindungan. Jika paging atau
segmentasi disediakan, bagian yang berbeda dari program pengguna dapat dideklarasikan
hanya-eksekusi, baca-saja, atau baca-tulis. Pembatasan ini diperlukan dengan kode
atau data bersama dan umumnya berguna dalam hal apa pun untuk menyediakan
pemeriksaan run-time sederhana untuk pemrograman umum
kesalahan.

Latihan Latihan
8.1 Sebutkan dua perbedaan antara alamat logis dan alamat fisik.
8.2 Pertimbangkan sebuah sistem di mana program dapat dipisahkan menjadi dua
bagian: kode dan data. CPU mengetahui apakah ia menginginkan instruksi
(pengambilan instruksi) atau data (pengambilan atau penyimpanan data). Oleh
karena itu, dua pasangan register basis-batas disediakan: satu untuk instruksi dan satu untuk data
Pasangan register basis-batas instruksi secara otomatis read-only, sehingga
program dapat dibagi di antara pengguna yang berbeda. Diskusikan keuntungan
dan kerugian dari skema ini.
8.3 Mengapa ukuran halaman selalu pangkat 2?
8.4 Pertimbangkan ruang alamat logis 64 halaman masing-masing 1.024 kata, dipetakan
ke memori fisik 32 frame.

sebuah. Berapa banyak bit yang ada di alamat logis?


b. Berapa banyak bit yang ada di alamat fisik?

8.5 Apa efek membiarkan dua entri dalam tabel halaman menunjuk ke bingkai halaman
yang sama di memori? Jelaskan bagaimana efek ini dapat digunakan untuk
mengurangi jumlah waktu yang diperlukan untuk menyalin sejumlah besar memori
dari satu tempat ke tempat lain. Apa pengaruh memperbarui beberapa byte pada
satu halaman di halaman lain?
8.6 Jelaskan mekanisme dimana satu segmen dapat menjadi bagian dari ruang alamat
dari dua proses yang berbeda.

8.7 Berbagi segmen di antara proses tanpa mengharuskan mereka memiliki nomor
segmen yang sama dimungkinkan dalam sistem segmentasi yang terhubung
secara dinamis.

sebuah. Tetapkan sistem yang memungkinkan penautan statis dan pembagian


segmen tanpa mengharuskan nomor segmen harus sama.
b. Jelaskan skema paging yang memungkinkan halaman dibagikan tanpa
mensyaratkan bahwa nomor halaman harus sama.

8.8 Dalam IBM/370, perlindungan memori diberikan melalui penggunaan kunci.


Kunci adalah kuantitas 4-bit. Setiap blok memori 2-K memiliki kunci (kunci
penyimpanan) yang terkait dengannya. CPU juga memiliki kunci (kunci
perlindungan) yang terkait dengannya. Operasi penyimpanan hanya diperbolehkan jika kedua kun

Anda mungkin juga menyukai