Manajemen Memory

A. Memory Addressing

Dalam mengakses isi dari sel memori programmer biasanya mengacu pada alamat memori (memory addresses). Pada microprocessor Intel 80x86 memory addresses dibedakan menjadi tiga jenis address :
   
    1.    Logical Address
    Terdapat pada instruksi bahasa mesin untuk menspesifikkan alamat dari sebuah operan atau instruksi. Setiap logical address terdiri dari sebuah segment dan sebuah offset (displacement) yang menyatakan jarak dari awal segment ke alamat aktual.
   
    2.    Linear Address
    Merupakan sebuah 32-bit unsigned integer tunggal yang bisa digunakan untuk pengalamatan hingga 4 GB. Biasanya direpresentasikan dalam notasi heksadesimal.
   
    3.    Physical Address
    Digunakan untuk pengalamatan sel memori, terdapat pada chip memori.
   
CPU control unit mengubah logical address  ke linear address dengan menggunakan perangkat hardware yang disebut segmentation unit, dan kemudian circuit hardware kedua yang disebut paging unit mengubah linear address ke physical address.


Jenis Address



B. Segmentation
Segmentation pada hardware
Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode.  Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap.

    •    Segmentation Registers
    Logical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs.

    •    Segment Descriptor
    Setiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT).
   
    •    Segment Selectors
    Untuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector  mengandung hal-hal berikut :
        -    Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.
        -    Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).
        -    Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level  cPu tepat saat segment selector yang berhubungan di-load ke register cs.

    •    Segmentation Unit
    Segmentation Unit melakukan operasi-operasi berikut :
        -    Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table  berada pada segment descriptor.
        -    Menghitung alamat dari segment descriptor dari index filed segment selector.
        -    Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address.

C. Paging
    Paging pada hardware
    Paging unit mengubah linear addresses  ke physical adresses. Paging unit  mengecek tipe permintaan akses yang melanggar hak akses dari linear address. Jika akses memori tidak valid, maka akan menghasilkan eksepsi page fault. Untuk efisiensi, linear address dikelompokkan dalam interval fixed-length yang disebut pages; linear addressess kontigu pada sebuah page dipetakan ke physical addresses  kontigu. Paging unit menganggap semua RAM terpartisi menjadi fixed-length page frames. Setiap page frame mengandung sebuah page. Struktur data yang memetakan linear ke physical addressses disebut page tables, tersimpan dalam memori utama dan harus diinisialisasi secara tepat oleh kernel sebelum memfungsikan paging unit.

    •    Regular Paging
    Linear address 32 bit dibagi menjadi 3 :
        -    Direktori, 10 bit most significant
        -    Tabel, 10 bit intermediet
        -    Offset, 12 bit least significant
    Pengubahan linear address terjadi 2 dalam 2 tahap, masing-masing berdasar pada tipe tabel translasi. Tabel translasi yang pertama disebut page directory dan yang kedua disebut page table.

    •    Extended Paging
    Dimulai pada model Pentium, mikroprosesor Intel 80x86 memperkenalkan extended paging, yang memungkinkan page frames berukuran 4KB atau 4 MB. Extended paging dimungkinkan dengan men-set  Page Size flag dari sebuah entri Page Directory. Pada kasus ini, paging unit membagi 32 bit linear address menjadi 2 bagian:
        -    Direktori, 10 bit most significant
        -    Offset, 22 bit sisanya
    Entri page directory untuk extended paging sama dengan untuk paging  biasa, kecuali :
        -    Page Size flag harus diset.
        -    Hanya 10 bit most signifcant pertama dari 10 bit physical address field yang signifikan

    •    Transaction Lookaside Buffers (TLB)
    Selain cache general purpose hardware, Intel 80x86 menyediakan juga cache yang lain, disebut translation lookaside buffers (TLB) untuk meningkatkan kecepatan translasi linear address.

Leave a Reply