BİLGİSAYAR MİMARİLERİ 4.Hafta: Bellek Hiyerarşisi-2 Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Giriş Ön belleğin iç yapısı Ön bellek ile ilgili temel sorular Adresleme yöntemleri Direk map, fully associative, set associative ön bellekler
Giriş Geçen hafta bilgisayarın bellek hiyerarşisi aşağıdaki gibi anlatıldı: Bugünün ön (cache) bellek nasıl çalışır?
Ön belleğin iç yapısı?
Blok yapısı ve bellek adresi Blok bellek ile ön bellek arasında veri transfer birimi Büyük blok boyutu avantaj oluşturur. Daha az etiket (tag) yer kaybı DRAM’dan bir defada hızlı bir şekilde büyük oranda veri transferi Geniş bus üzerinden çok miktarda veri transferi
Ön bellek: 4 temel tasarım sorusu? Soru 1: Veri bloğu üst seviyede nereye konulabilir? Blok yerleştirme (placement) Soru 2: Aranan blok üst seviyede değilse, nasıl bulunacak? Blok tanımlama Soru 3: Miss durumunda hangi blok değiştirilecek? Üzerine yazılacak blok seçimi (blok re-placement) Soru 4: Yazma işlemi nasıl yapılacak? Yazma stratejisi
Soru 1: Blok yerleştirme Veri bloğu üst seviyede nereye konulabilir? Ön bellek içinde önceden belirlenmiş bir yere: Direk map Adresin bir kısmı blok yerini belirlemek için kullanılır. Blok var/yok testi, ön bellek içindeki sadece bir adresteki bloğun etiketi (tag) üzerinden yapılır. Ön bellek içinde herhangi bir yere: Fully-associative Ön bellek içindeki tüm blokların etiketlerine (tag) karşılaştırma yoluyla bakılır. Sınırlı bir kümenin içinde bir yere: Set-associative Adresin bir kısmı küme (set) belirlemek için kullanılır (direk map’te olduğu gibi). Küme içindeki her bloğun etiketkerine (tag) karşılaştırma yoluyla bakılır. Bu yöntem direk-map ile fully-associative modelin bir orta karışımıdır.
Direk-map blok yerleştirme
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres map: 0 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres map: 0 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres map: 8 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres map: 8 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres map: 0 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres map: 0 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres map: 6 modulo 4 = 2
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres map: 6 modulo 4 = 2
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres map: 8 modulo 4 = 0
Örnek: Direk-map ön belleğe erişim Direk map ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim paterni (adres sırası) : 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres map: 8 modulo 4 = 0
Direk-map genel durum İyi tarafı: Veri hızlı olarak bulunabilir. Kötü tarafı: Ya veri erişimi hep 00001 ve 10001 şeklinde olursa? (bir patern takip ederse) Her erişim bir miss olurdu.
Direk map ön bellek yapısı
Fully-associative ön bellek Blok ön bellekte herhangi bir yere gidebilir.
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres: 0 NOT: Blok yerleştirme kuralı “LRU: Least recently used” olsun. (LRU: Yakın zamanda kullanılmayan)
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres: 0
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres: 8
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres: 8
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres: 0
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres: 0
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres: 6
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres: 6
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres: 8
Örnek: Fully-associative ön bellek Fully associative ön bellek 4 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres: 8
Fully-associative ön bellek: özet Blok yerleştirmede hiçbir adresleme (map) kısıtı yok. Örnek: 1 set, 8 blok FA ön bellek Avantaj: İhtiyaç duyulan verinin kaldırılma ihtimali düşük Dezavantaj: Hit/miss için tüm ön bellek taranmalı
Fully-associative veri yerleştirme 3. sorunun cevabı: Yeni gelen bir blok olduğunda, her yer dolu ise; yer açmak için hangi blok atılacak? 1. Random 2. LRU: Least recently used (yakın zamanda kullanılmayan) Ön belleğin LRU durumu her erişimde güncellenmeli Gerçekleme ancak çok küçük sayıda kümeler için mümkün (örneğin 2) Sözde LRU gerçeklemeleri 4, 5 kümeler için yapılabilir 3. FIFO: First in first out (ilk gelen ilk çıkar) Yüksek oranda blok bulunduran (highly associative) ön belleklerde kullanılır. Round-Robin gibi. 4. NLRU: Not least recently used, most recently used (yakın zamanda kullanılan)
Fully associative ön bellek yapısı
Set-associative ön bellek Blok ön bellekte bir küme içinde herhangi bir yere gidebilir. Küme seçimi direk map yöntemi ile yapılır.
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres: 0, mapping: 0 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 1: Adres: 0, mapping: 0 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres: 8, mapping: 8 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 2: Adres: 8, mapping: 8 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres: 0, mapping: 0 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 3: Adres: 0, mapping: 0 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres: 6, mapping: 6 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 4: Adres: 6, mapping: 6 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres: 8, mapping: 8 mod 2
Örnek: Set-associative ön bellek 2 kümeli associative ön bellek 2 kümeli her kümede 1 adet 1 word (4 Byte) blok içersin. Erişim adres sırası: 0, 8, 0, 6, 8 olsun buna göre: Erişim 5: Adres: 8, mapping: 8 mod 2
Set-associative ön bellek: özet Blok yerleştirmede maping var. Küme içinde associative yöntemler kullanılabilir. Örnek: 4 set 2-way, toplam 8 blok SA ön bellek Avantaj: Blok bulması kolay ve her zaman üstüne yazması gerekmiyor Dezavantaj: Hit/miss için küme içinde arama yapılmalı
Set associative ön bellek yapısı