490 likes | 1.57k Views
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
E N D
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, fullyassociative, 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?
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çindeherhangi 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.
Ö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.
Fully-associative ön bellek • Blok ön bellekte herhangi bir yere gidebilir.
Örnek: Fully-associative ön bellek • Fullyassociative ö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: Leastrecentlyused” olsun. (LRU: Yakın zamanda kullanılmayan)
Örnek: Fully-associative ön bellek • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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 • Fullyassociative ö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-associativeveri 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:Leastrecentlyused (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 firstout (ilk gelen ilk çıkar) • Yüksek oranda blok bulunduran (highlyassociative) ön belleklerde kullanılır. Round-Robin gibi. • 4. NLRU: Not leastrecentlyused, mostrecentlyused (yakın zamanda kullanılan)
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 set2-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ı