William Stallings Computer Organization and Architecture 9 th Edition
Bölüm 4 Cache Bellek
Bilgisayar Hafıza Sisteminin Ana Karakteristikleri Table 4.1 Key Characteristics of Computer Memory Systems
Bilgisayar Hafıza Sisteminin Ana Karakteristikleri Konum İç Hafıza mı, Dış Hafıza mı olduğu? Genellikle ana hafıza için kullanılır. İşlemci, kendi içerisinde register şeklinde hafızaya ihtiyaç duyar. Cache, iç hafızanın bir başka çeşididir. Dış hafıza, işlemci tarafından giriş çıkış cihazları kullanılarak erişilen hafızaya verilen isimdir. Kapasite Genellikle byte cinsinden verilen boyut Transfer birimi İç hafıza için, hafıza modülüne gelen/giden elektrik hatlarının sayısı. Bir word uzunluğunda olabilir. Ama genellikle daha büyüktür (128,256 gibi) Word: genellikle bir tam sayı veya komutun uzunluğu.
Veri Birimlerine Erişim Yöntemleri Sıralı Erişim: Tape Doğrudan Erişim: Arama, konumlanma ve erişme. Ör: Disk Rasgele Erişim: Adreslenebilen her bir hafıza adresi bağımsız olarak erişilebilir. Ör: RAM Asosyatif (Çağrışımsal): Veriye, içeriğinin bir parçası temel alınarak erişilir. Ör: Cache
Kapasite ve Performans Erişim Zamanı (Gecikmesi): Rasgele erişim için, okuma/yazma zamanı. Rasgele olmayan erişim için, konumlanma zamanı. Hafıza Çevrim Zamanı: Genellikle rasgele erişimli hafıza için geçerlidir. İki hafıza erişimi arasında geçmesi gereken süre. Hattaki eski sinyalin sönmesi lazım. Bu kavram, işlemci ile ilgili değil. Sistem yolu ile ilgili. Transfer Oranı: Birim zamanda hafıza modülünden transfer edilebilen veri miktarı.
Hafıza En bilinen biçimleri: Yarı iletken Manyetik yüzeyli Optik Manyetik-optik Bir hafızanın önemli birçok özelliği vardır: Geçici Hafıza Geçici Olmayan Hafıza Manyetik Yüzeyli Hafızalar Kalıcı Yarıiletken Hafızalar Geçici de olabilir kalıcı da olabilir. Silinemeyen Hafıza Fiziksel olarak yok edilmedikçe silinemeyen hafıza read-only memory (ROM) Rasgele erişim organizasyonu önemli. Organizasyon: bitlerin fiziksel olarak bir word oluşturmak üzere düzenlenmesi
Hafıza Hiyerarşisi Bit başına maliyet düşer Kapasite artar Erişim süresi artar İşlemci tarafından erişilme sıklığı azalır.
Cache ve Ana Hafıza İşlemci önce cache e bakar. İstenen word yoksa, bu word u barındıran bir blok cache e alınır. Böylece, gelecekteki muhtemel erişimler için önceden tedbir alınır.
Cache/Ana Hafıza Yapısı
Cache Okuma İşlemi
Tipik Cache Organizasyonu Ana hafızadan okunan veri aynı anda cache ve işlemciye iletilir. Diğer organizasyon da; verinin cache e okunması ve oradan işlemciye iletilmesidir.
Cache Tasarımının Unsurları Table 4.2 Elements of Cache Design
Cache Adresleri Sanal Hafıza Sanal Hafıza Programların hafızayı, ana hafızanın boyutunu göz önüne almadan adresleyebilmeleri için bir yöntemdir. Sanal hafıza kullanıldığında, komutların adres kısımları sanal adresler barındırır. Bütün okuma/yazma işlemleri için bir donanım (hardware memory management unit -MMU) sanal adresleri fiziksel adreslere çevirir.
Mantıksal Cache ve Fiziksel Cache
Mantıksal Cache ve Fiziksel Cache Mantıksal Cache in Avantajı hızlı olmasıdır. Dezavantajı: Çoğu sanal adresleme sistemi, programları aynı hafıza uzayı ile adresler. Yani, bütün programların sanal hafızaları 0 dan başlar. Bu durumda bir programdan diğer programa geçildiğinde Cache i tamamen boşaltmak gerekir. Ya da, Cache deki blokların yanlarında hangi programa ait oldukları bilgisini tutan bitler eklenebilir.
Table 4.3 Bazı İşlemilerin Cache Boyutları a / ayrılan değerler komut ve veri cache değeleridir. b ayrılmamış cache ler yalnızca komut tutar.
Cache Boyutu Cache boyutunu seçerken, bit başına düşen maliyetin, sistemde yalnızca ana hafıza olduğu duruma yakın olması; aynı zamanda erişim süresinin, sistemde yalnızca cache olduğu duruma yakın olması istenir. Cache in küçük olması için daha fazla motivasyonumuz var: Daha büyük cache i adreslemek için daha fazla kapıya ihtiyaç var. Aynı malzemeden yapılıp, aynı yere konumlandırılsalar bile küçük cache ler büyük cache lerden daha hızlı çalışır. Chip boyutu, cache boyutunu sınırlar.
Haritalama (Mapping) Fonksiyonları Cache de, Ana hafızada bulunan adres bloklarından daha az line olduğu için bir haritalama fonksiyonuna ihtiyaç vardır. Kullanılabilecek 3 teknik var: Doğrudan Asosyatif Küme Asosyatif
Doğrudan Haritalama i = j mod m i = cache line numarası j = ana hafıza blok numarası m = cache deki line sayısı
Doğrudan Haritalamalı Cache Organizasyonu
Doğrudan Haritalama: Özet Adres Uzunluğu= (s + w) bits Adreslenebilir birim sayısı= 2 s+w word ya da byte w Blok boyutu= line boyutu= 2 word ya da byte Ana hafızadaki blok sayısı = 2 s+ w /2 w = 2 s Cache deki line sayısı= m = 2r Etiketin boyutu= (s r) bit
Asosyatif Cache Organizasyonu
Asosyatif Organizasyon: Özet Adres Uzunluğu= (s + w) bit Adreslenebilir birim sayısı= 2 s+w word ya da byte w Blok boyutu = line boyutu = 2 word ya da byte Ana hafızadaki blok sayısı = 2 s+ w /2 w = 2 s Cache deki line sayısı= belirsiz Etiketin boyutu= s bit
Küme Asosyatif Haritalama Doğrudan ve Asosyatif Haritalama tekniklerinin güçlü yönlerini kullanarak dezavantajlarını azaltır. Cache belirli bir sayıda küme içerir Her küme belirli bir sayıda line içerir Bir ana hafıza bloğu, belirli bir küme içerisindeki herhangi bir line ile eşleştirilebilir. Ör: Bir kümede 2 line olsun 2-way asosyatif Bir ana hafıza bloğu, belirli olan bir küme içerisindeki 2 line dan biri ile eşleştir.
Ana Hafızadan Cache e Haritalama: k-way Küme Asosyatif
k-way Küme Asosyatif Organizasyonu
Küme Asosyatif Haritalama: Özet Adres Uzunluğu= (s + w) bit Adreslenebilir birim sayısı= 2 s+w word ya da byte Blok boyutu= line boyutu = 2 w word ya da byte Ana hafızadaki blok sayısı = 2 s+w/ 2 w= 2 s Bir kümedeki line sayısı = k Küme sayısı = v = 2 d Cache deki line sayısı = m=kv = k * 2 d Cache in boyutu = k * 2 d+w word ya da byte Etiketin boyutu = (s d) bit
Değiştirme Algoritmaları Cache dolu olduğunda, yeni bir bloğun cache e taşınması gerekiyorsa, var olan bir blok cache den çıkarılmalıdır. Doğrudan adreslemede bu işlem kolaydır. Çünkü, bir bloğun yer alabileceği yalnızca bir tane line vardır. Asosyatif ve Küme Asosyatif teknikleri için değiştirme algoritmalarına ihtiyaç var. Yüksek hız için, algoritmanın donanım olarak gerçekleştirilmesi gerekli.
3 Temel Değiştirme Algoritması: Least recently used (LRU) En Uzun Süredir Kullanılmayana Etkin bir yöntem Cache deki en uzun süredir kullanılmayan bloğu çıkarır. Gerçekleştirim kolaylığından dolayı en popüler algoritmadır. Kullanım biti gerektirir. 2-way küme asosyatif organizasyon için 1 bit yeterli. Son kullanılanın bitini 1 yap, diğerini 0 yap. Daha büyük kümeler için ayrı bir liste gerekli. Son kullanılan bloğu listenin başına al; değiştirme işlemini sondaki bloklardan yap. First-in-first-out (FIFO) İlk Giren İlk Çıkar Cache e en erken alınmış olan bloğu çıkarır Round-robin ile kolayca gerçekleştirilebilir. Least frequently used (LFU) En Seyrek Kullanılan En az kullanılan bloğu çıkarır. Her bir line için bir sayaç değeri kullanarak gerçekleştirilebilir.
Cache de olan bir blok değiştirileceği zaman birtakım durumlar meydana gelebilir: Write Policy Yazma Kuralları İki Problem Var: Eğer Cache içerisinde yer alan blok üzerindeki bilgilerde bir değişiklik yapılmamışsa; bu bloğu ana hafızaya yazmadan cache den çıkarabiliriz. Ana hafızaya erişim hakkı olan birden fazla aygıt olabilir. (İşlemci ve bir Giriş/Çıkış modülü gibi) Eğer Cache deki bir line daki en az bir word üzerinde bir yazma işlemi gerçekleştirilmişse, bu line daki blok cache den çıkarılmadan önce bu bloğun ana hafızaya yazılması gerekmektedir. Daha karmaşık bir problem, aynı sistem hattına bağlı ve kendi cache lerine sahip olan birden fazla işlemci olması durumunda ortaya çıkar. Cache lerden birindeki bir word değiştiğinde, diğer cache lerdeki ilgli blok geçersizdir.
Write Through and Write Back Write through Basit bir teknik Bütün yazma işlemleri hem cache e hem de ana hafızaya yapılır. Dezavantajı, büyük oranda yazma trafiği oluşturur. Write back Ana hafızaya yazma sayısını azaltır. Güncellemeler yalnızca cache üzerinde yapılır. Bu durumda, ana hafıza bloklarındaki veriler güncel değildir. Giriş/Çıkış modüllerinin ana hafıza erişimleri yalnızca cache üzerinden yapılır. Dirty bit kullanılır. Dezavantajı, daha karmaşık devreler gerektirir. Sıradan uygulamalarda hafıza işlemlerinin %15 kadarı yazma işlemidir. Yüksek Performanslı Hesaplama uygulamalarında bu oran %50 ye kadar çıkmaktadır. Çok işlemcili sistemlerde Write Through uygulanırsa, cache ler arası tutarsızlığı gidermek için bir şeyler yapmak gerekir.
Cache Coherency - Tutarlılığı Bus watching with write through Bütün cache kontrolcüleri (her bir işlemci için) adres hattını gözlemler. Eğer ana hafızadaki paylaşımlı bir bloğa bir yazma işlemi gerçekleşirse, kendi cache lerindeki ilgili bloğu geçersiz olarak işaretlerler. Hardware transparency Bu durumu gerçekleştirmek için bir donanım gerekir. Bir işlemci ana hafızada paylaşılan bir bloğa veri yazarsa, bir donanım diğer btün cache lerdeki ilgili bloğu günceller. Noncacheable memory Bu yöntemde hafızanın paylaşılan bir bölümü cahce lenemez olarak işaretlenir.
Çok Seviyeli Cache ler Daha küçük alanlara daha fazla kapı sığdırılabilir hale gelince, cache ler ana çip üzerine alındı. Çip üzerinde yer alan cache, işlemcinin dış hatta erişimini azaltır ve sistem performansını arttırır. İstenen komut ya da veri çip üzerindeki cache de varsa, dış hatta erişmeye gerek kalmaz. Çip üzerindeki cache, hat erişimini sıfırladığı için hissedilir düzeyde hızlıdır. Ayrıca bu süreçte yol işlemci tarafıdnan kullanılmadığı için diğer aygıtlar tarafından kullanılabilir. İki Seviyeli cache: İç cache level 1 (L1) Dış cache level 2 (L2) L1 cache de olmayan veri için ana hafızaya başvurmak işi yavaşlatır. L2 cache bu durumu kısmen çözer. L1 ve L2 cache ler, ana hafıza ile aynı yolu kullanmaz. 2 seviyeli cache kullanmak genel olarak performansı iyileştirir. Ancak, çok seviyeli cache kullanımı tasarımı zorlaştırır.
Birleşik vs. Ayrı Cache Cache leri ayırma: Bir tane komutlar için Bir tane veriler için Aynı seviyede olurlar. İkisinin de L1 olması gibi Birleşik cache in avantajı: İşlemcinin istediği şeyi cache de bulma oranı (hit rate) daha yüksek Komut ve veri arasında dengeyi doğal olarak sağlar. Tasarım ve gerçekleştirimi daha kolaydır. Genel eğilim, L1 seviyesindeki cache leri ayrı; daha üst seviyedekileri birleşik yapmak Ayrı cache in avantajları: Komutları alan ve çözen birim ile çalıştıran birim arasındaki cache çekişmelerini önler. Pipeline için önemli