Desain Memori Virtual Pada Mikroarsitektur PowerPC, MIPS, dan X86
(Kuspriyanto)
DESAIN MEMORI VIRTUAL PADA MIKROARSITEKTUR POWERPC, MIPS, DAN X86 Kuspriyanto *, Putut Joko Wibowo** Abstrak - Banyak desain arsitektur mesin yang dimunculkan dan mesin yang diproduksi, dan akan memunculkan pula macam-macam keuntungan atau kerugian yang dihasilkan. Seperti yang ada dalam desain arsitektur komputer. Pada desain arsitektur komputer terdapat berbagai macam mekanisme yang terjadi, salah satunya adalah mekanisme memori virtual. Mekanisme memori virtual di buat agar sebuah mesin yang mempunyai sistem operasi dapat berjalan secara efisien tanpa mengurangi salah satu faktor keuntungannya. Paper ini membahas teknologi mekanisme memori virtual. Dan memaparkan desain manajemen memori pada tiga mikroarsitektur ,yaitu MIPS, PowerPC dan x86. Disini ditunjukkan keberagaman dukungan memori virtual pada sistem operasi dan secara pengertian bagaimana keberagaman ini dapat memunculkan kesulitan atau memberikan kemudahan pada sistem operasi. Detail spesifik dari sebuah arsitektur manajemen memori prosesor tidak begitu memberikan keuntungan performa antara satu dengan yang lainnya. Karena inkompatibilitas membuat aplikasi dan sistem operasi lebih sulit dijalankan. Sesungguhnya sebuah sistem dibangun lebih sering menggunakan bagian kecil subset dari fungsi yang komplit dari unit manajemen memori sehingga lebih mudah diatur. Secara de facto standar yang ada pada arsitektur memori virtual Intel x68 tidak dapat disaingi, Karena x86 memberikan berbagai kebutuhan fungsi yang modern. Arsitektur baru yang muncul mungkin akan menggunakan standar x86 walaupun tidak sepenuhnya. Ukuran cache yang terus bertambah, memungkinkan manajemen memori hardware dihilangkan. Jika sebuah sistem membutuhkan indeks virtual yang besar, hirarki virtual cache maka tnsalasi alamat hardware tidak akan begitu diperlukan. Caches virtual tidak membutuhkan translasi alamat ketika data ditemukan di dalam cache dan jika cache cukup besar maka tidak perlu mencari di dalam memori utama. Sebagai ganti penggunaan hardware maka sistem operasi dapat berfungsi sebagai memori virtual-termasuk translasi alamat dan proteksi-sehingga menghasilkan penambahan fleksibilitas dan kesederhanaan pekerjaan software.
I. PENDAHULUAN 1.1.Latar Belakang Memori virtual dikembangkan untuk mengotomatiskan perpindahan data dari memori utama ke secondary storage sehingga seperti sebuah tempat penyimpanan yang berkapasitas besar. Dan teknik ini akan memudahkan pekerjaan seorang *
programer ketika besar data dan programnya melampaui kapasitas memori utama. Sebuah proses multiprogramming yang membutuhkan address-space yang besar, keamanan proses merupakan sebuah teknologi yang sudah secara umum digunakan dan prosesor-prosesor yang ada sekarang pun telah memiliki teknologi yang mendukung proses ini. Tetapi sampai sekarang belum ada kesepakatan mengenai teknologi seperti apa yang mendukung proses ini. Hal ini disebabkan oleh ketidakkompatibel-an mekanisme hardware pada masingmasing arsitektur computer. Dan tidak ada usaha yang cukup serius untuk membuat sebuah manajemen memori yang sama dan sebuah standar interface yang dapat digunakan. Sehingga para desainer mempunyai dua pilihan : pertama, membuat software yang mampu berjalan di semua arsitektur sehingga meningkatkan performa dan ketangguhan sebuah hardware. Atau para desainer membuat sebuah software yang mampu menjadi sebuah interface sehingga sebuah hardware dapat didesain menjadi mirip dengan hardware lain yang desain arsitekturnya berbeda. Disini akan dibahas mengenai mekanisme memori virtual dipandang dari sisi hardware dan beberapa contoh hardware (tiga arsitektur) dan bagaimana memori virtual memori bekerja pada hardware-hardware tersebut dan pengamatan ini difokuskan pada sistem operasi dan mikroprosesor dengan sistem memori virtual demand paging. II. KONSEP DASAR Pada desain sistem memori virtual, memori utama menyimpan sebagian alamat proses yang sering digunakan dan bagian lain disimpan dalam disk dan diambil sesuai dengan keinginan. Sehingga akan muncul anggapan bahwa waktu akses akan terjadi lebih banyak di memori utama daripada di disk. Sistem operasi yang mendukung anggapan ini akan menerjemahkan alamat virtual pada alamat fisik saat proses berlangsung dan hal ini hanya terjadi sekali. Penerjemahan ini terjadi pada bagian pages dengan dukungan unit manajemen memori. Pada gambar 1 ditunjukkan ruang sebuah memori virtual yang di bagi menjadi bagian-bagian yang sama dan diidentifikasikan dengan nomor virtual pages. Memori fisik di bagi menjadi page frames yang berukuran sama dan diidentifikasikan dengan nomor page frames.
Dosen Departemen Teknik Elektro ITB Mahasiswa S2 Jurusan Teknologi Informasi ITB
**
31
Transmisi, Vol. 8, No. 2, Desember 2004 : 31 – 36
Gambar 1 Memori virtual
Frame menyimpan data dari page. Atau memori virtual memetakan nomor virtual page ke nomor frame page. Mapping (pemetaan) menyebabkan virtual page hanya dapat mempunyai satu lokasi alamat fisik. Pemetaan secara invers,yaitu dari nomor frame page ke nomor virtual page, menyebabkan beberapa virtual page dipetakan pada satu frame page yang sama, bisa dilaksanakan tetapi merupakan fungsi yang tidak begitu diperlukan. Sistem paging, jika sebuah ruang diperlukan untuk proses dan page yang bersangkutan tidak sedang digunakan, maka page dari proses akan mengalami paged out (disimpan ke disk), memori akan kosong untuk page aktif yang lain. Page yang dipindah dari disk ke memori ketika diperlukan dinamakan paged in (dikembalikan ke memori). Ketika sebuah item dapat mengalami paging, maka item tersebut termasuk dalam item yang menempati ruang virtual, yang di akses dengan alamat virtual, dan ruangan yang ada dialokasikan untuk informasi mapping. Sistem operasi mengalokasikan alamat dari item tersebut hanya ketika item tersebut mengalami paging in. 2.1. Page table entries Informasi mapping di atur dalam page tables entries (PTEs). Setiap PTE mengatur informasi untuk satu halaman setiap waktu. Pada waktu yang minimum, PTE mengindikasikan apakah memori virtual page berada di memori, pada disk atau tidak dialokasikan. Sedangkan di saat overtime, memori virtual menangani fungsi tambahan termasuk melindungi address-space dan page-level, sehingga secara khusus PTE berisi informasi tambahan seperti kapan page menyimpan kode eksekusi,kapan page dapat di ubah dan juga oleh unit mana isi page di ubah. Pada sistem operasi sekarang, didalamnya termasuk Windows NT, Linux dan vaiasi dari Unix semuanya mendukung address-space dan proteksi page-level degnan mekanisme ini. 32
Dari PTE tadi maka sistem operasi harus dapat menentukan • id dari page (identitas address-space atau disebut access key) • nomor virtual page • lokasi page di memori (nomor page frame) atau lokasi pada disk (offset swap file) • valid bit yang mengindikasikan kapan PTE berisi bit terjemahan • reference bit yang mengindikasikan kapan terakhir page tersebut di akses • modify bit yang mengindikasikan kapan terakhir page tersebut ditulisi • bit-bit proteksi page seperti read-write, read dan sebagainya. Sistem operasi menggunakan referensi dan mengubah bit-bit untuk memperkirakan penggantian page yang digunakan paling akhir. Sistem operasi secara periodik mengosongkan bit referensi dari page yang dipetakan untuk mengukur penggunaan page. Modify bit mengidikasikan kapan page yang di ganti harus di tulis kembali ke dalam disk. Untuk effisiensi maka semua informasi dari kebutuhan sistem operasi jarang di simpan pada tiap PTE. Sebenarnya nomor virtual page dan nomor frame page tidak diperlukan karena informasi bisa didapatkan dari tabel lokasi PTE. Identitas addressspace tidak diperlukan jika proses memiliki page-table nya sendiri atau jika ada mekanisme lain selain identitas address-space yang dapat membedakan alamat yang dihasilkan oleh proses yang tidak berhubungan. Seperi pada segmentasi page dimana alamat virtual diterjemahkan ke dalam alamat fisik dalam dua tahap : pertama pembagian segmen dan yang kedua pembagian page. Item lain seperti informasi blok disk ditempatkan pada tabel yang kedua. 2.2. Translation Look aside Buffers (TLB) Untuk mempercepat translasi hampir setiap sistem hardware mempunyai cache untuk PTE yang disebut translation look aside buffers (TLB). Identitas address-space jika digunakan akan dapat membedakan alamat virtualnya dengan alamat virtual dari proses yang lain. Agar proses load dan store dapat diselesaikan maka TLB harus berisi lokasi firtual yang dipetakan oleh PTE. Jika tidak maka akan terjadi miss pada TLB dan sistem harus mencari pada page table untuk masukan yang cocok dan ditempatkan pada TLB. Jika sistem gagal untuk memetakan page table maka page faults akan terjadi. Page faults akan menginterupsi sistem operasi untuk menentukan proses mana yang harus dilakukan terlebih dahulu : mengambil page dari disk dan diletakkan di memori, membuat page baru jika page yang di cari belum ada, atau mengirimkan sinyal error. Mengacu pada alamat virtual yang menyebabkan miss pada TLB, tidak semua miss pada TLB terjadi
Desain Memori Virtual Pada Mikroarsitektur PowerPC, MIPS, dan X86
pada page faults. Seperti yang terjadi pada TLB dan memori utama : jika sebuah page ada di dalam memori, mapping bisa terdapat pada TLB atau tidak, tetapi jika page yang dipetakan ada dalam TLB, page tersebut pasti ada di memori fisik.
(Kuspriyanto)
atau hirarki page table yang diindex oleh nomor virtual page dan inverse-mapped yang diindex oleh nomor frame page. Hirarki page tables
Gambar 4 Dua level hirarki page table
Gambar 2 Arsitektur TLB
Gambar 3 Miss pada TLB
2.3. Organisasi Page Table Pada generasi sebelumnya, seluruh addressspace masih bisa dipetakan ke dalam hardware. Seiring dengan berkembangnya ukuran space address, ukuran table ikut berkembang sampai dengan seorang desainer sistem harus memindahkannya ke dalam memori. Gambaran yang diberikan adalah sebuah table berukuran besar yang di simpan pada hardware dan di dapat dari menyembunyikan bagian dari page table di hardware TLB dan secara otomatis mengisi TLB dari page table TLB yang mengalami miss. Pencarian page table, atau disebut page table walking adalah pekerjaan terbesar dalam menangani TLB miss. Oleh karena itu maka di desain sebuah organisasi page table yang dapat meminimalkan pekerjaan dari table walking. Pencarian table dapat disederhanakan jika PTE diatur menjadi berdekatan sehingga nomor virtual page atau nomor frame page dapat digunakan sebagai offset untuk menemukan PTE yang cocok. Proses ini membawa pada dua tipe utama dari organisasi page table : forward mapped
Gambar 4 menunjukkan hirarki dari page table yang didasarkan pada array data yang lebih besar dapat dipetakan oleh array yang lebih kecil, dimana pada gilirannya dapat dipetakan oleh array yang lebih kecil lagi. Sebagai contoh jika kita mempunyai alamat 32 bit dan 4 kb page, 4 Gb address space tersusun atas 1.048.576 (220) page. Jika setiap page dipetakan oleh 4 byte PTE, maka dapat diorganisasi 220 PTE pada 4 Mb struktur linear yang terdiri dari 1024 (210) page, yang dapat dipetakan oleh 1024 PTE. Pada array linear, 1024 PTE menempati 4 Kb. Pada gambar 2 ditunjukkan bahwa user page table memetakan user space dan root dari page table memetakan user page table. Dua level pada tabel hirarki sering disebut juga sebagai tabel level-1 dan level-2, penamaan ini sangat berguna jika space yang dipetakan cukup besar dan lebih dari dua level. Sebagai contoh, DEC Alpha mendukung hirarki page yang terdiri dari tabel level0, level-1, level-2 dan level-3. Ada dua metode akses untuk hirarki page table: top down atau bottom up. Pada metode top down alamat fisik digunakan sebagai referensi PTE pada tabel; metode bottom up menggunakan alamat virtual. Ketika seorang desainer menerapkan sistem memori virtual pada hardware akan muncul suatu masalah. Pilihan antara sistem hirarki atau inverted page tidak cukup jelas karena banyaknya perbedaan pada performa dan penggunaan memori. Penerapan shared memory menghasilkan performa yang berbeda terutama pada dukungan hardware yang berbeda. Sebagai contoh, shared memory dengan virtual caches membutuhkan manajamen yang lebih konsisten daripada shared memory dengan physical cache, dan interaksi shared memory dengan organisasi page table yang berbeda dapat menghasilkan variasi yang signifikan pada performa TLB. Skema proteksi address space juga sangat bergantung pada dukungan hardware dan berpengaruh besar pada implementasi shared memory. Dan juga TLB dapat di atur oleh sistem operasi atau pada hardware, menunjukkan perbedaan antara fleksibilitas dan performa. Memori 33
Transmisi, Vol. 8, No. 2, Desember 2004 : 31 – 36
virtual adalah suatu sistem kompleks yang mengintegrasikan beberapa mekanisme hardware dan software yang berbeda. Table hirarki pertama kalinya diakses secara top down. Sanggahan yang biasa muncul untuk desain ini adalah metode menyebabkan address space yang tersebar di mana-mana. Metode ini melakukan pemborosan waktu karena membutuhkan lebih dari dua simpul untuk menutupi address space yang luas dan tiap simpul membutuhkan referensi memori selama proses table walking. Sedangkan metode bottom up, dimana muncul pertama kali secara komersial pada prosesor MIPS, lebih efisien walaupun sama-sama membutuhkan lebih dari dua simpul untuk memetakan address space yang luas. Karena user PTES diperlukan untuk memetakan user address space seperti di dalam cache, metode ini sering memerlukan referensi single memory untuk menutupi TLB miss. Kedua macam metode tadi dapat memboroskan memori, karena ruang di dalam table dialokasikan oleh sistem operasi pada seluruh page seketika. Sebuah proses address space dengan single page didalamnya akan membutuhkan sebuah page PTE pada level user page table. Jika proses menambahkan address space virtual page yang berdekatan dengan page pertama kedalam metode ini, maka metode ini akan dipetakan oleh page PTE yang ada. 2.4. Arsitektur MIPS MIPS mendefinisikan sebuah arsitektur manajemen memori yang sangat sederhana dimana sistem operasi menangani TLB miss seluruhnya dalam software. Sistem operasi menjalankan page table, mengisi TLB dan dapat menerapkan penggantian TLB secara virtual. Gambar 5. menunjukkan arsitektur MIPS R 10000
di dalam user page table. Pada saat TLB mengalami miss, register konteks berisi alamat virtual dari PTE yang memetakan faulting address. MIPS menggunakan identitas address-space untuk menyediakan proteksi address-space. Untuk mengakses sebuah page, identitas address-space dari proses yang aktif harus sesuai dengan identitas pada masukan page TLB. Pembersihan cache dan TLB secara periodik tidak dapat dihindari, selama terdapat 64 identitas konteks yang unik pada R2000/R3000 dan 256 pada R10000. Banyak sistem memiliki lebih banyak proses daripada sistem yang membutuhkan pemakaian bersama identitas address-space dan pemetaan ulang secara periodik ini. 2.5.Arsitektur PowerPC Gambar 6. menunjukkan arsitektur PowerPC 604, dimana pemetaan alamat aplikasi “efektif” pada flat virtual address space global lebih besar dari pada address space masing-masing aplikasi. Arsitektur ini mempunyai 256 Mb segmen yang daerah virtual space nya berdekatan dan 16 segmen menyusun 4 Gb address space aplikasi. Empat bit paling awal dari alamat efektif 32 bit memilih sebuah identitas segmen dari 16 register segmen hardware. Identitas segmen disambung dengan 28 bit paling akhir alamat efektif untuk membentuk sebuah alamat virtual yang mengindeks cache dan dipetakan oleh TLB dan page table.
Gambar 6 Arsitektur dari Power PC 604 Gambar 5 Arsitektur dari MIPS R10000
Hardware mendukung hirarki bottom up page table melalui register konteks TLB yang menyimpan alamat virtual yang dipartisi ke dalam segmen software-loaded. Segmen software ini meliputi bit-bit yang paling awal dan menyimpan dasar alamat virtual dari user page table. Segmen hardware-loaded meliputi bit-bit paling akhir dan menyimpan nomor virtual page dari faulting address. Segmen ini diisi ketika referensi user level mengalami miss TLB. Maka segmen akan mengindeks single PTE yang ada 34
PowerPC mendefinisikan page table yang terbagi-bagi bagi sistem operasi : variasi pada inverted page table sebagai software 8 jalur asosiatif cache pada PTE. Desain ini tidak menjamin dapat menyimpan semua pemetaan karena hanya merupakan cache dan seperti pada inverted table klasik, page table membutuhkan back aup dari page table. Pada saat terjadi TLB miss, hardware menjalankan pembagian page table; software hanya dapat memeasukkan PTE ke dalam TLB secara tidak langsung dengan menempatkan PTE pada page table
Desain Memori Virtual Pada Mikroarsitektur PowerPC, MIPS, dan X86
(Kuspriyanto)
dan me-load nya kembali sehingga table hardware berjalan. Arsitektur tidak menyediakan secara eksplisit identitas address space. Proteksi dari address space didukung oleh register segmen, dimana hanya bisa diubah oleh sistem operasi. Jika dua proses mempunyai identitas segmen yang sama pada satu register segmen maka segmen virtualnya akan dipakai bersama. Identitas segmen mempunyai panjang 24 bit dan dapat menjadi identitas unik lebih dari jutaan proses. Jika shared memory digunakan pada register segmen sistem operasi maka sistem operasi tidak perlu sering memetakan kembali identitasnya. 2.6.Shared memory Memori yang di-share sering digunakan melalui memori virtual untuk meningkatkan efisiensi penggunaan memori dan menurunkan waktu eksekusi. Shared memory memperkenankan referensi proses multiple pada kode fisik yang sama dan data melalui alamat virtual address yang berbeda. Ketika sebuah contoh multiple program dijalankan maka kode program dibagi. Ada beberapa implementasi yang mungkin bagi shared memory. Salah satunya adalah virtual address aliasing. Pada skema ini setiap pemetaan pada fisik page membutuhkan PTE logikanya sendiri. Mengatur multiple PTE memungkinkan shared memory untuk proses yang berbeda dengan menggunakan alamat virtual yang berbeda pada fisik data yang sama., untuk proses yang berbeda pada pemetaan fisik data yang sama dengan proteksi yang berbeda, atau untuk referensi virtual yang berbeda pada fisik data yang sama yang mneyebabkan perilaku yang berbeda. Sebagai contoh dua proses dapat dipetakan pada data yang sama dan lokasi yang berbeda pada address space nya. Sebuah proses dapat memetakan data read only, dan proses yang lain memetakan data read write. 2.7.Arsitektur x86 Gambar 7. menunjukkan arsitektur pada Pentium Pro, desain segmentasi yang ditunjukkan tidak mempunyai identitas address space yang explicit. Mekanisme segmentasinya lebih umum daripada milik PowerPC, tatapi desain ini bisa lebih membutuhkan ekstra referensi memori selama instruksi dieksekusi untuk menegluarkan informasi pemetaan segmen. Untuk alasan performa tersebut, maka mekanisme segmentasi pada x86 sering tidak digunakan pada sistem operasi yang ada sekarang ini. Setiap proses hirarki dari page table dijalankan oleh hardware. Sistem operasi menyediakan alamat fisik untuk root page table bagi hardware salah satu register control (CR3). Hardware menggunakan alamat ini untuk menjalankan dua simpul table pada metode top down setiap TLB mengalami miss. Jika setiap proses mempunyai page table nya sendiri maka TLB akan berisi prosesnya sendiri dan CR3 diubah.
Gambar 7. Arsitektur x86 Seperti pada PowerPC, x86 menggunakn segmentasi untuk pemetaan awal alamat user level pada address space global. Tidak seperti PowerPC, mekanisme segmentasi x86 mendukung ukuran segmen yang berubah-ubah dari 1 byte ke 4 Gb dan virtual spsce global berukuran sama sebagai sebuah usel level address space individu (4 Gb). Aplikasi user level mengeluarkan 32 bit alamat yang disambung dengan 16 segmen bit selector. Hardware menggunakan selector 16 bits untuk mengindeks satu dari dua software descriptor table untuk membuat base address segmen yang berhubungan dengan selector. Base address ini ditambahkan pada 32 bit alamat virtual yang dikeluarkan oleh aplikasi untuk membentuk sebuah alamat linear global 32 bit. Untuk performanya, hardware menyembunyikan enam selector proses pada chip register segmen yang ditunjukkan oleh konteks. Sebuah selector ditunjukkan secara implicit dengan mengeksekusi intruksi. Selector yang lain meemtakan stasck. Dan empat selector yang lain memetakan segmen data dan programer dapat merinci register segmen mana yang menunjukkan proses load dan store yang berbeda. III.
PENUTUP
3.1.Kesimpulan Ada banyak keberagaman dalam bagaimana prosesor komersial sekarang ini mendukung manajemen memori. Bagaimanapun juga detail spesifik dari sebuah arsitektur manajemen memori prosesor tidak begitu memberikan keuntungan performa antara satu dengan yang lainnya. Karena inkompatibilitas membuat aplikasi dan sistem operasi lebih sulit dijalankan. Sesungguhnya sebuah sistem dibangun lebih sering menggunakan bagian kecil subset dari fungsi yang komplit dari unit manajemen memori sehingga lebih mudah diatur. 35
Transmisi, Vol. 8, No. 2, Desember 2004 : 31 – 36
Hardware dan software yang tidak cocok pada memori virtual sepertinya tidak akan berubah dengan cepat. Walaupun secara de facto standar yang ada pada arsitektur memori virtual Intel x68 tidak dapat disaingi, Karena x86 memberikan berbagai ekbutuhan fungsi yang modern. Arsitektur baru yang muncul mungkin akan menggunakan standar x86 walaupun dalam bentuk yang lebih disederhanakan. Dengan ukuran cache yang terus bertambah, bisa dimungkinkan manajemen memori hardware akan dihilangkan. Jika sebuah sistem membutuhkan indeks virtual yang besar, hirarki virtual cache maka tnsalasi alamat hardware tidak akan begitu diperlukan. Caches virtual tidak membutuhkan translasi alamat ketika data ditemukan di dalam cache dan jika cache cukup besar maka tidak perlu mencarai did al;am memori utama. Translasi alamat hanya akan dilakukan pada cache miss. Sebagai ganti penggunaan hardware maka sistem operasi dapat berfungsi sebagai memori virtual-termasuk translasi alamat dan proteksi-
36
sehingga menghasilkan penambahan fleksibilitas dan kesederhanaan pekerjaan software.
DAFTAR PUSTAKA 1. 2. 3.
4.
5.
T. Kilburn et al., “One Level Storage System”,: IRE Trans.,April 1962. hal. 223-235. B.L. Jacob dan T.N. Mudge,”Virtual Memory: Issues of Implementation,”IEEE Micro,Juni 1998. B.L. Jacob dan T.N. Mudge,”Virtual Memory in Contemporary Microprosessor,”IEEE Micro,Agustus 1998. B.L. Jacob dan T.N. Mudge,”Software Managed Address Translation,”Proc. Third Int’l Symp. High Performance Computer Architecture (HPCA3),IEEE CS Press, Los Alamitos, Calif.,Februari 1997.hal.156-167. Stallings, William, “Computer Organization and Architecture: Designing for Performance”,Pre. Hall,2000.