Yazan: Şadi Evren ŞEKER

TLB, sayfalama işleminin (paging) hızını arttırmaya yarayan bir hafıza bölümüdür. Kısaca TLB olması için sayfalama olmalıdır. Günümüzdeki çoğu bilgisayar mimarisi tarafından desteklenmektedir. TLB kullanılabilmesi için sayfalama (paging) sistemde yapılıyor olmalıdır.

Basitçe, RAM’in yetersiz olduğu durumlarda hafıza ihtiyacının diskten karşılanmasını sağlayan sanal hafızanın verimli kullanılması için, diskte tutulan veri ve RAM’de duran veri arasında bir dönüşüm işlemi gerekmektedir. Bu işin hızlanması için dönüşümü TLB üzerinde tutar ve hız artışı sağlarız.

Bu yapıp, disk ile RAM arasında bir önbellek (cache) olarak düşünmek mümkündür. Basitçe diskte olan bir veriye erişilmek istendiğinde TLB üzerinde bu veri aranır. Şayet veriye ulaşılırsa buna TLB bulma (TLB hit) ismi verilir ve dönüşüm sağlanır. Şayet veri bulunamazsa buna TLB kayıp (TLB miss ) ismi verilir ve sanki TLB hiç yokmuş gibi klasik sayfalama tablosunda (page table) arama işlemi yapılarak bu hafıza sayfasına(page) erişilmeye çalışılır. Elbette bu işlem çok daha maliyetlidir. Dolayısıyla TLB üzerindeki bulma işlemini (hit) arttırmak isteriz.

TLB yapısını, aşağıdaki şekil üzerinden anlamaya çalışalım:

Yukarıdaki örnekte, bir sanal adresin, fiziksel adrese dönüşmesi sırasında geçtiği yol gösterilmiştir. Örneğin gelen sanal adres talebimiz, 2 veya 0 ise, bu değerler TLB üzerinden karşılanır. Şayet talep 0 veya 1 ise bu değerler sayfa tablosu üzerinde aranarak karşılanır. Sayfa tablosu üzerindeki arama işlemi, TLB üzerindeki arama işlemine göre çok daha uzun sürmektedir.

Konuyu, Sayfalama (paging) ile birlikte ele almak için, öncelikle sayfalama işlemini hatırlayalım.

Yukarıda görüldüğü üzere, sayfalama işlemi, programın kendi adresinden, gerçek adrese (fiziksel adres) dönüşümü sırasında kullanılır. Bu sırada, sayfalama yaklaşımı hafızadaki bilgilerin dağılımını tutan bir sayfalama tablosu bulundurur.

Şayet yukarıdaki şekle, TLB ve sanal hafıza (virtual memory) konularını da eklersek, aşağıdaki şekli elde ederiz:

Yukarıdaki yeni şekilde, bir sanal adresin, talep edilmesi durumunda yaşananları anlatmaya çalışalım.

Öncelikle bu adresin sayfa numarası, (ki sayfalama konusundan hatırlanacağı üzere sayfa numarası, adresin sayfa boyuna (page size) bölünmesi ile elde edilir).

Bu sayfa numarası, önce TLB üzerinde aranır. Bulunursa çerçeve numarasına ofset eklenerek hafızadan alınır.

Şayet TLB üzerinde bulunamazsa, TLB kayı (TLB miss) olur ve bu durumda Sayfa Tablosu üzerinde aranır. Şayet sayfa tablosunda bulunursa, yine ofset eklenir ve hafızadaki yerine ulaşılmış olunur.

Şayet Sayfa Tablosu üzerinde de bulunamazsa bu durumda sayfa hatası (Page fault) olur ve bunun anlamı, bu bilginin hafızada olmadığıdır. Artık bilgi diskten aranır ve bulunur. Ardından hafızaya (RAM) yüklenir ve sayfa tablosunda ilgili güncellemeler yapılır.

Yukarıdaki yazıda bazı terminolojik problemleri çözmek için bu notu eklemeyi önemli buluyorum. Bazı kaynaklarda, yukarıda sanal adres (virtual address) olarak geçen terime mantıksal adres (logical address), gerçek adres (real address) olarak geçen terime ise fiziksel adres (physical address) isimleri verilmektedir.

TLB tablosunun güncellenmesi

Klasik bir TLB tablosunda, bir verinin TLB üzerinde bulunamaması halinde bu veri güncellenir. Yani şayet veri TLB üzerinde bulunuyorsa, bu durumda bir güncellemeye ihtiyaç duyulmaz. Ama bir şekilde TLB kayıp oluşursa (TLB miss), bu durumda talebin Sayfa Tablosundan (Page Table) veya diskten karşılanması halinde TLB tablosu güncellenir.

Ancak daha önce de bahsedildiği üzere TLB aslında bir önbellek olarak düşünülebilir ve klasik önbellek güncelleme algoritmaları veya erişimli önbellek algoritmaları (associative cache) TLB için de kullanılabilir.

Tagged:

Yorumlar

  1. alper

    Örneğin gelen sanal adres talibimiz, 2 veya 0 ise, bu değerler TLB üzerinden karşılanır. Şayet talep 0 veya 1 ise bu değerler sayfa tablosu üzerinde aranarak karşılanır.bu cümlede bir yanlışlık yok mu?

  2. alper

    ben teşekkür ederim ama kasdettiğim 2 veya 0 ise, bu değerlerin TLB üzerinden karşılanması şayet 0 veya 1 ise bu değerlerin sayfa tablosu üzerinde aranarak karşılanması derken 0 TLB de var zaten 0 veya 1 olunca neden page table a gidiliyo?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir