BİLGİSAYAR MİMARİLERİ 6.Hafta: Sanal Bellek Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Giriş: Zahiri bellek Zahiri bellek tasarımında temel sorunlar Sayfalama organizasyonu Adres map algoritması, fragmantation & relocation Sayfa tablosu Sayfa yerleştirme algoritmaları Demand paging Translation Lookaside Buffer (TLB)
Giriş: Zahiri bellek Zahiri bellek çok büyük bellek görüntüsü oluşturuyor Birçok işin kapladığı alan fiziksel bellekten çok büyük olabilir Her bir prosesin adres alanı fiziksel bellekten büyük olabilir Fiziksel belleğin çok iyi kullanılmasını sağlıyor (utilization yüksek) Bellek yönetimini kolaylaştırıyor (bugün için ana neden) Bellek hiyerarşisinden (ön bellek yapısından) istifade ederek ortalama erişim süresini düşük tutmak İki hafıza birimi de konu ile ilgili: Ana bellek ve ikincil bellek Zahiri adres: Programcının kullandığı adres Zahiri adres alanı: Zahiri adreslerden oluşan bölge Bellek adresi: Fiziksel bellekteki word-byte’ların adresi, gerçek adres
Zahiri bellek tasarımında temel sorunlar İkincil bellekten (sabit diskten) ana belleğe taşınacak veri bloğunun boyutu ne olmalıdır? Ana belleğe blok olarak veri getiriliyor. Eğer ana bellek dolu ise bellekten bazı verilerin atılıp yerine yenisinin konulması lazım. Hangi blok atılacak? (replacement poltikası) Yeni gelen blok ana belleğin neresine konmalı (placement politikası). Eksik blok sadece hata (page fault) olması durumunda ikincil bellekten getirilmelidir. (fetch/load politikası)
Sayafalama organizasyonu Zahiri ve fiziksel adres alanı eşit boyutta bloklara ayrılır Zahiri bloklara sayfa – page denir Fiziksel bloklara çerçeve – frame denir
Adres map V = {0, 1, 2, …, n-1} zahiri adres alanı M = {0, 1, 2, …, m-1} fiziksel adres alanı MAP: V M U {Ø} adres map fonksiyonu MAP(a) = a’ Eğer zahiri adres a daki veri, fiziksel adres a’ de mevcutsa MAP(a) = Ø Eğer zahiri adres a daki veri bellekte yok ise
Sayfa tablosu (page table) Sayfa tablosu, adres dönüşümünü (address translation) sağlamak için sıkça kullanılır
Sayfa organizasyonu
Adres mapping (haritalama) algoritması Eğer V = 1 ise sayfa page table’da belirtilen adreste, ana bellektedir aksi halde, sayfa ikincil bellektedir Erişim izinleri: R: salt oku, R/W: yaz-oku, X: icra edilebilir Eğer erişim izinleri belirlenen erişim izinleri ile uyumlu değilse «protection_violation_fault» oluşur Eğer V = 0 ise «page_fault» oluşur Protection Fault (koruma hatası): Erişim hakları ihlali; kesme «trap» oluşmasına sebep olur Page fault (sayfa hatası): Sayfa ana bellekte değil. Bu durumda da kesme «trap» oluşur, genelde beraberinde context switch oluşur. Proses sayfası ikincil bellekten getirilene kadar bekletilir.
Fragmentation ve Relocation Fragmentation: Parçalama nedenlerinden dolayı bellek yetersizliği Relocation: Program veya verinin bellekte başka bölgelere taşınabilmesi (tüm pointer değerlerinin ayarlanmasını gerektirir) Internal Fragmentation: Sayfa içinde kullanılamayan kısımlar
Optimum sayfa boyutu Fragmentation’ı minimum yapacak sayfa boyutu seçilir Büyük sayfa boyutu internal fragmentation kötüleşir Küçük sayfa boyutu çok fazla sayfa adedi büyük sayfa tablosu Genel eğilim daha büyük sayfa boyutu yönündedir RAM fiyatı düştükçe ana bellek büyüyor İşlemci hızı ile disk erişim hızı arasındaki açık gittikçe artmaktadır Programcılar daha büyük zahiri adres istiyorlar Birçok makine 4 Kbyte sayfa boyutuna sahip ve gittikçe artıyor
Sayfa yerleştirme (replacement) algoritmaları Ön-bellek replacement algoritması gibi LRU (Least Recently Used): Yakın zamanda kullanılmayan sayfa seçilir Eski erişimlerin tutulmasını gerektirir, gerçeklenmesi zordur İyi performans, lokality prensibi Örnek: En son erişilen sayfa listesi (sıralı olarak) : 10, 12, 9, 7, 11, 10 olsun; Bellekte olmayan 9 nolu sayfa erişilmek istendiğinde ve bellek dolu ise, hangi sayfa kaldırılıp yeni sayfa yerine konmalıdır? (LRU’ya göre)
Sayfa yerleştirme (replacement) algoritmaları Not Recently Used: (Yakında kullanılmayan) Her sayfa için bir referans bayrağı (biti) kullanılabilir : Eğer bayrak = 1 ise sayfa yakın geçmişte kullanıldı (referans) Diğer durumlarda bayrak = 0 Eğer bir sayfa kaldırılacaksa, referans biti 0 olanı kaldır. Bu sayfa bu yakında kullanılmayan sayfadır. NRU’nun saat gerçeklemesi:
Talep karşılığında sayfa getirme (demand paging) Getirme politikası: Sayfa belleğe ne zaman getirildi? Eğer bri talep sonrası getirildi ise buna demand-paging getirme politikası denir Bir başka sayfa getirme yöntemi: Gelecek referansları tahmin ederek, henüz ihtiyaç olmayan sayfaları önceden getirmek Sayfa transfer zaman kayıplarını (overhead) azaltır Gelecek referansları tahmin etmek çok zordur Birçok sistem demand-paging sistemini pre-paging olmadan gerçekler (Pre-fetching etkisini elde etmenin bir diğer yolu da sayfa boyutunu arttırmaktır.)
Zahiri adres ve ön bellek VAPA dönüşümü bir fazla bellek erişimi gerektiriyor Bu durum, ön bellek erişimini çok geciktirmektedir ve bu en hızlı olunması gereken yerdir
Neden ön belleğe PA ile erişilir? VA ön belleklerinin problemi: iki farklı VA aynı fiziksel adrese map edebilir (sinonim problemi) iki farklı ön bellek verisi aynı fiziksel adres için veri tutuyor olabilir Update (güncelleme): Tüm ön bellek verileri aynı fiziksel adres ile güncellenmeli aksi halde bellek tutarsız olur Bu durumun çözümlenmesi oldukça karışık donanım gerektirir.
TLB: Adres dönüşümünün hızlı yapılması TLB (Translation Lookaside Buffer): Adres dönüşümünün hızlandırılması.
Translation Lookaside Buffer Tamamıyla diğer ön-bellek gibi. TLB dirk map, fully associative ya da set associative olarak organize edilebilir. TLB’ler genelde küçüktür (128-256 satırlıktır). Bu çok hızlı bilgisayarlar için bile yeterlidir. Bu nedenle genelde fully-associative ön bellek olarak gerçeklenir. Birçok orta ölçekli makinelerde küçük n-way set associative ön bellek kullanılır