CACHE Bellek lemci kincil Bellek CACHE BELLEK GRNT
‘CACHE’ Bellek İşlemci İkincil Bellek ‘CACHE’ BELLEK GÖRÜNTÜ BELLEK
BELLEKLER YAZMAÇ ‘CACHE’ BELLEK ANA BELLEK DİSK ‘CACHE’ BELLEĞİ HIZ MALİYET KAPASİTE DİSK
‘CACHE’ Bellek Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘CACHE’ Bellek Sınıflandırmaları • İçeriklerine Göre (Unified / Split) • Yazma Yöntemine Göre (Write. Through / Copy. Back) • Erişim Yöntemine Göre (Fully Associative / Set Associative / Direct Mapping)
‘Split’ ve ‘Unified’ ‘Cache’ İşlemci Komut ‘cache’ Belleği İşlemci Veri ‘cache’ Belleği • Sadece Okuma • Komutlar Ardışık • Küçük Döngülerin İyileştirilmesi Komut/Veri ‘cache’ Belleği
‘Write. Through Cache’ ‘Read hit’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Write. Through Cache’ ‘Read miss’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Write. Through Cache’ ‘Write hit’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Write. Through Cache’ ‘ Write miss’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Copy. Back Cache’ ‘Read hit’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Copy. Back Cache’ ‘Write hit’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Copy. Back Cache’ ‘Read miss’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
‘Copy. Back Cache’ ‘Write miss’ Adres Bilgileri İşlemci Denetim Birimi Veriler Ana Bellek
Erişim yöntemine göre • ‘Fully Associative Cache’ • ‘Set Associative Cache’ • ‘Direct Mapping Cache’
‘Fully Associative Cache’ Adresler Veriler = = = = hit/miss
‘Set Associative Cache’ Adres Ekleri Adres 0 1 2 Veriler = N-1 0 1 2 = N-1 hit/miss
‘Direct Mapping Cache’ Veriler Adres Ekleri Adres 0 1 2 = N hit/miss
Adres ‘Fully Associative Cache’ L=4 Adresler Veriler = = = = hit/miss
‘Set Associative Cache’ L=4 Adres Ekleri Adres 0 1 2 Veriler = N-1 0 1 2 = N-1 hit/miss
‘Direct Mapping Cache’ L=4 Veriler Adres Ekleri Adres 0 1 2 = N-1 hit/miss
‘Cache’ bellek ve adres bitleri ‘cache’ bellek sığası = KLN Adres log 2 N log 2 L Satır içi adresi Set Numarası Adres eki N = 1 ‘Fully Associative Cache’ bellek K = 1 ‘Direct Mapping Cache’ bellek
30 28 28 Adres Bilgileri 2 128 bit veri 28 İşlemci 128 32 32 32 128 Ana Bellek
‘cache’ belleğe yeni gelen veriye yer açma stratejileri • LRU ‘Least Recently Used’ • Geliştirilmiş LRU
Least Recently Used (LRU) Adres Ekleri Veriler Most Recently Used 0 1 2 3 4 5 . . . N-1 Least Recently Used
Geliştirilmiş LRU Adres Ekleri Veriler Gölge Adres Ekleri Geçici 0 1 2 N N • Geçici ‘miss’ = Hem ‘cache’ bellekte hem de gölge adres eklerinde yok • Gölge ‘miss’ = ‘cache’ bellekte yok, gölge adres eklerinde var Geçici olarak işaretlenmiş veriler çıkarılmaya aday.
Ön belleklerde tutarlılık Adres DMA Denetleyici Adres Veriler İşlemci Veri G/Ç Birimi Adres Bilgileri Ana Bellek Ön bellekteki veriyi geçersiz kılma eklentisi • “write through”: çözüm? • “copy back”: DMA öncesi güncelle
Ön belleklerde tutarlılık Geçerli (valid) İkili Değişmiş (dirty) İkili Durum 0 X Geçersiz ön bellek satırı 1 0 Geçerli ön bellek satırı. Ana bellekteki değerle aynı. 1 1 Geçerli ön bellek satırı. Ön bellekteki değer daha güncel. “Copy back” türü ön bellekteki verilerin durum bilgileri
Ön belleklerde tutarlılık DMA Denetleyici G/Ç Birimi Adres İşlemci Adres Bilgileri Veriler Veri Ön bellek aracılığıyla DMA gerçekleştirilmesi Ana Bellek
Ön belleklerde tutarlılık DMA Denetleyici Adres İşlemci Adres Bilgileri Veriler Adres İzleme Bilgileri Veri G/Ç Birimi Ana Bellek Ön bellekteki verileri dışardan izleyebilmek için kullanılan ek
Ön belleklerde tutarlılık DMA Denetleyici Adres İşlemci Adres Bilgileri Veriler Adres İzleme Bilgileri Veri G/Ç Birimi Ana Bellek Ön bellekteki verilerin dışardan koşut olarak izlenmesi
Ön belleklerde tutarlılık İşlemci 1 Adres Bilgileri İşlemci 2 Veriler Veri İki işlemci tarafından ortak kullanılan ön bellek Ana Bellek
Ön belleklerde tutarlılık Adres Bilgileri Adres Veriler İşlemci Adres İzleme Bilgileri Veriler Adres Bilgileri İşlemci . . . Adres Bilgileri İşlemci Veriler Adres İzleme Bilgileri Ana Bellek Çok işlemcili bir sistemde ön belleklerin izlenmesi
Görüntü Bellek İşlemci İkincil Bellek ‘CACHE’ BELLEK GÖRÜNTÜ BELLEK
Görüntü Bellek Görüntü Adres Dönüştürücü Sayfa Hatası Fiziksel Adres Ana Bellek
Görüntü Bellek Filozofisi • Sık kullanılan kod kesimleri ana bellekte tutulur. • Kod kesimleri az kullanılmaya başladıkça daha yavaş belleklere taşınır. • Eğer yönetim algoritması başarılıysa maliyeti yavaş belleğin maliyetine, performansı da hızlı belleğin performansına yakın olacaktır.
Görüntü ve ‘Cache’ bellek farklılıkları • Aranan verinin veya sayfanın bulunup bulunmaması – ‘Cache’ bellekte verinin bulunamaması bulunmasından 4 -20 kez daha islemi yavaslatir – Sayfanın bellekte bulunamaması bulunmasından 1000 -10000 kez islemi yavaslatir.
Görüntü ve ‘Cache’ bellek farklılıkları • Teknolojilerdeki ilerleme – 20 yılda bellek teknolojisi 1000 kat hızlanmış. – Aynı sürede diskler 10 kat hızlanmış. • Yer değiştirme sürecinin uzunluğu – ‘Cache’ bellekte verinin bulunamaması durumunda işlemciye başka görev atanamaz. – Aranan sayfanın bellekte bulunamaması durumunda sayfa diskten kopyalanırken işlemciye başka görevler atanabilir.
Görüntü ve ‘Cache’ bellek farklılıkları • Gecikme – Bellekte bulunamayan bir verinin belleğe getirilmesi 10000 -1000000 komut süre tutabilir. – ‘Cache’ bellekte bulunmayan bir verini ana bellekten getirilmesi bir komut işletimi kapsamındadır.
Görüntü adres fiziksel adres dönüşümü GörüntüAdres Sayfa Numarası Sayfa içi adres Adres Dönüştürücü Sayfa başlangıç adresi Sayfa Bulunamadı Sayfa
Hızlı adres dönüşümü GörüntüAdres Sayfa Numarası Sayfa içi adres Hızlı Adres Dönüştürücü Sayfa Bulunamadı Sayfa başlangıç adresi Adres Dönüştürücü Sayfa Bulunamadı Sayfa
Hızlı adres dönüşümü GörüntüAdres Segment Numarası Sayfa içi adres Sayfa Numarası Sayfa başlangıç adresi Sayfa
Görüntü Bellekte Yer Değiştirme • Sayfa hataları çok uzun süre. Hangi sayfanın çıkarılacağı kararı çok önemli. • Sayfa hatası oluştuğunda karar vermek için yeterince zaman var. • Sayfa hatası oluştuğunda başka görevler işlemciye anahtarlanabilir.
Görüntü ve Fiziksel Adres Evrenleri Fiziksel Adres Evreni Görüntü Adres Evreni
Adres Dönüştürme Sayfa başlangıç adresleri 0 1 2 Sayfa Numarası N-2 N-1 N : Görüntü Adres Evrenindeki Sayfa Sayısı
Adres Dönüştürme Sayfa Numarası Sayfa başlangıç adresleri Sayfa Numaraları Fiziksel bellekteki sayfa sayısı kadar = = = = Sayfa Bulundu/Bulunamadı
‘Pipeline’ Aşamaları 1 2 3 4 5 6 7
‘Pipeline’ 1 Zaman A B C D ‘Pipeline’ Aşamaları 2 3 4 5 6 A B C D A B C D 7 A B C D
‘Pipeline’ Performansı A Zaman ‘Pipeline’ Aşamaları B A C B A D C B A D C B D C D
Bir Komutun Evreleri Komut Getir Komut Yorumla Adres Hesapla İşlenenleri Getir Komut Uygula Sonucu Sakla Program Sayacını Güncelle
Komut uygulama ‘pipeline’ için sorun yaratan durumlar: • Koşullu sapmalar. • Bir komutun sonraki komutun kullanacağı veriyi üretmesi. • Bir komutun önceki komut tarafından kullanılan yazmaca yazması. • Ardışık iki komutun aynı yazmaca yazması.
Çok Fonksiyonlu ‘Pipeline’ Toplama Çarpma Add Exponents Subtract Exponents Partial Shift Form Partial Products Add Mantissas Accumulator Find Leading 1 Normalize Partial Shift Round Renormalize
Çok Fonksiyonlu ‘Pipeline’ Add/Subtract Exponents Partial Shift Add Mantissas Find Leading 1 Partial Shift Round Renormalize Form Partial Products
Çok Fonksiyonlu ‘Pipeline’ Çarpma için rezervasyon tablosu Toplama için rezervasyon tablosu
Çok Fonksiyonlu ‘Pipeline’ Çarpma işleminden sonra çarpma için çakışma vektörünün hesaplanması Adım 1 çakışma vektörü =1 Adım 2 çakışma vektörü =11 Adım 3 çakışma vektörü =110
Çok Fonksiyonlu ‘Pipeline’ Çarpma işleminden sonra çarpma için çakışma vektörünün hesaplanması Adım 4 çakışma vektörü =1100 Adım 5 çakışma vektörü =11000 Adım 6 çakışma vektörü =110000
Çok Fonksiyonlu ‘Pipeline’ Çarpma ve Toplama işlemleri için Çakışma vektörleri Çarpma işleminden sonra Çarpma işlemi gelmesi durumunda çakışma vektörü =110000 Toplama işleminden sonra Çarpma işlemi gelmesi durumunda çakışma vektörü =11010000 Çarpma işleminden sonra Toplama işlemi gelmesi durumunda çakışma vektörü =000000 Toplama işleminden sonra Toplama işlemi gelmesi durumunda çakışma vektörü =10000000
‘Pipeline’ Performansının Analizi 1001011 8 2 8 3 8 1101111 3 8 1111011 5 5 2 1011011 5 5 1101011 3 8 En iyi Performans = 4 / (3+5+3+2) = 0. 3077 işlem/birim zaman
Koşullu Sapmalar ve ‘pipeline’ • • İşlemcilerin komut al-getir ve işletimini gerçekleştiren ‘pipeline’, koşullu sapmalarda boşaltılmak durumunda kalabilir. Verimlilik düşüren bu durumu önlemek için kullanılan yöntemlerden bazıları: Gecikmeli Sapma Çoklu Durum Yazmacı kullanımı Sabit Sapma kestirimi Eski Sapmaların Kayıtları
Koşullu Sapmalar ve ‘pipeline’ • Gecikmeli Sapma gerçekleşsin veya gerçekleşmesin koşullu sapma komutundan sonraki belirli sayıda komutun uygulanması esasına dayanır. Koşullu sapmalarda ‘pipeline’ın boşaltılmasına gerek kalmaz. Koşullu sapma komutundan sonra uygulanabilecek komutlar gereklidir. cmp d, e mov a, b je xxx cmp d, e je xxx mov a, b
Koşullu Sapmalar ve ‘pipeline’ • Çoklu Durum Yazmacı kullanımı Birden fazla durum yazmacı kullanılarak durum yazmacını kuran komut ile koşullu sapma komutu arasında belirli bir uzaklık sağlanır. Koşullu sapma komutu ‘pipeline’a girerken koşullu sapmanın sonucu kesin bellidir. cmp 1, d, e cmp 2, f, g mov a, b je 1, xxx je 2, yyy Durum Yazmacı 1 Durum Yazmacı 2
Koşullu Sapmalar ve ‘pipeline’ • Sabit Sapma kestirimi Döngülerde kullanılan koşullu sapmaların iyileştirilmesini sağlayan bu yöntemde koşullu sapmanın yönüne göre bir sapma kestirimi yapılır. Örneğin, ‘bulunduğu adresten daha öncesine sapmanın gerçekleşeceği’ varsayımıyla çalışan bir işlemci için döngülerde bu varsayıma uygun kod üretilmişse, döngünün sonu hariç ‘pipeline’ın boşaltımasına gerek kalmayacaktır. mov a, 100 xxx: … decrement a jnz xxx
Koşullu Sapmalar ve ‘pipeline’ • Eski Sapmaların Kayıtları Koşullu sapma komutlarının bir önceki uygulanışlarındaki durumun (sapmanın olup olmaması) aynısının şimdiki uygulamada da ortaya çıkacağını varsayan bu yaklaşımla döngülerin iyileştirilmesi mümkündür. Döngünün kontrolunda kullanılan koşullu sapma komutları, döngünün sonu hariç aynı biçimde davranacaklardır. Örneğin, 100 kez sapma gerçekleşecek, döngünün sonunda sapma olmayacaktır. Bu yöntemde, ‘Cache’ bellek benzeri bir yapıda, her koşullu sapma komutunun bir önceki uygulanışındaki durum bilgisi tutulur.
Sırasız Komut İşletme Sırasız komut işletiminde sorun yaratan durumlar: • Komutlar arasında OKU/YAZ, YAZ/OKU ve YAZ/YAZ türü bağımlılıklar • "Pipeline" çakışmaları • Koşullu sapmalar
Sırasız Komut İşletme Gösterge Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] Sonuç Serbest Sayaç
Sırasız Komut İşletme Gösterge Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] Serbest Sayaç 0 1 0 Sonuç Y[1]: =A Y[2]: =Y[1]x 500 Y[1]: =5
Sırasız Komut İşletme Gösterge Değer Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] Serbest Sayaç 1 0 0 0 1 0 1 0 Sonuç Y[1]: =A Y[2]: =Y[1]x 500 A 2 Y[1]: =5
Sırasız Komut İşletme Gösterge Değer Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer 500 DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] Serbest Sayaç 1 0 2 0 0 1 1 0 Sonuç 2 5 A 2 Y[1]: =A Y[2]: =Y[1]x 500 Y[1]: =5
Sırasız Komut İşletme Gösterge Değer Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer 500 DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] 5 Serbest Sayaç 1 1 0 0 2 0 0 1 1 0 Sonuç 2 5 A 2 Y[1]: =A Y[2]: =Y[1]x 500 Y[1]: =5
Sırasız Komut İşletme Gösterge Değer Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer 500 2 DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] A 5 Serbest Sayaç 1 1 0 0 1 1 0 Sonuç 5 Y[1]: =A Y[2]: =Y[1]x 500 Y[1]: =5
Sırasız Komut İşletme Gösterge Y[1] Y[2] Y[3] Y[4] TOP ÇRP BÖL MNT OKU YAZ Rezervasyon Durakları İşlenen 1 İşlenen 2 S Değer DY[1] DY[2] DY[3] DY[4] DY[5] DY[6] DY[7] DY[8] Serbest Sayaç A 5 1 1 0 0 Ax 500 0 0 1 0 Sonuç Y[1]: =A Y[2]: =Y[1]x 500 Y[1]: =5
“Pipeline” - Ön bellek - Görüntü Bellek Görüntü Adres bilgileri Veri Adres Dönüştürücü Yastık Karşılaştır
Vektör Bilgisayarlar • Vektör birimi yardımcı işlemcidir • Vektör işlemleri içeren programların hızlandırılmasını amaçlar. . . for(i=0 ; i < N ; i++) c[i]=a[i]+b[i]; . . . C=A+B; . . .
Vektör Bilgisayarlar Koşut erişim sağlayan bellek sistemi M Vektör 1 M Vektör 2 Vektör Birimi (Pipeline) M M Sonuç Vektörü
Vektör Bilgisayarlar Modül 7 A 15 B 7 B 15 C 7 C 15 Modül 6 A 14 B 6 B 14 C 6 C 14 Modül 5 A 13 B 5 B 13 C 5 C 13 Modül 4 A 12 B 4 B 12 C 4 C 12 Modül 3 A 11 B 3 B 11 C 3 C 11 Modül 2 A 10. . . B 2 B 10. . . C 2 C 10. . . Modül 1 A 9 A 17 B 1 B 9 B 17 C 1 C 9 C 17 Modül 0 A 8 A 16 B 0 B 8 B 16 C 0 C 8 C 16
Vektör Bilgisayarlar P 4 P 3 P 2 P 1 M 7 M 6 M 5 M 4 M 3 M 2 M 1 M 0 0 0 1 2 A 4 A 3 B 3 A 2 B 2 A 1 B 1 A 0 B 0 0 1 2 3 4 5 A 7 A 6 B 6 A 5 B 4 3 4 5 6 B 7 4 5 6 7 8 9 C 5 C 4 C 3 A 11 C 2 A 10 B 10 C 1 A 9 B 9 C 0 A 8 B 8
Vektör Bilgisayarlar Koşut erişim sağlayan bellek sistemi M 0 Yastık Bellek A M 1 B . . . M 7 C P 1 P 2 P 3 P 4
Koşut Bilgisayarlar Flynn’in Sınıflaması
Koşut Bilgisayarlar Dağıtık Bellekli MIMD Bilgisayar Bellek . . . İşlemci Sistem Alan Ağı (System Area Network – SAN) İşlemci
Koşut Bilgisayarlar Paylaşımlı Bellekli MIMD Bilgisayar İşlemci Ön Bellek . . . İşlemci Ön Bellek Sistem Alan Ağı (System Area Network – SAN) Bellek
Koşut Bilgisayarlar Paylaşımlı Bellekli MIMD Bilgisayar Örneği Adres Bilgileri Veriler İşlemci Denetim Birimi Ana Bellek Adres Bilgileri İşlemci Denetim Birimi Veriler
Koşut Bilgisayarlar Bellek SIMD Bilgisayar İşlemci Bellek İşlemci Bellek İşlemci Sistem Alan Ağı (System Area Network – SAN) . . . Bellek İşlemci
Koşut Bilgisayarlar Paylaşımlı Bellekli MIMD Bilgisayar İşlemci Ön Bellek . . . İşlemci Ön Bellek Sistem Alan Ağı (System Area Network – SAN) Bellek
Koşut Bilgisayarlar P 1 P 2 a t 1 while(TRUE) { recv(a, . . . ); //işlem 1 send(b, . . . ); } P 3 b t 2 while(TRUE) { recv(b, . . . ); //işlem 2 send(c, . . . ); } c t 3 while(TRUE) { recv(c, . . . ); //işlem 3 send(d, . . . ); }
Koşut Bilgisayarlar P 1 P 2 t 1 M 1 bos 0 1 P 3 t 2 M 2 t 3 M 3 bos 1 1 bos 2 1 dolu 0 0 dolu 1 0 dolu 2 0 veri 1 veri 2 while(TRUE) { P(dolu 0); oku=veri 0; V(bos 0); yaz=islem 1(oku); P(bos 1); veri 1=yaz; V(dolu 1) } while(TRUE) { P(dolu 1); oku=veri 1; V(bos 1); yaz=islem 2(oku); P(bos 2); veri 2=yaz; V(dolu 2) } while(TRUE) { P(dolu 2); oku=veri 2; V(bos 2); yaz=islem 3(oku); P(bos 3); veri 3=yaz; V(dolu 3) } * “oku”, “yaz” yerel değişkenlerdir.
Koşut Bilgisayarlar while(TRUE) { <<if(P kimliği tek sayı) gönder(A, 4) else al(B, 2) >> <<if(P kimliği çift sayı) gönder(A, 4) else al(B, 2)>> <<A=B>> <<C=işlem(A, C)>> } P 1 1 2 4 3 P 2 P 3 P 4 P 5 P Denetim P 6
Koşut Bilgisayar Ağ Topolojileri Ortak Yol (Bus) • İki bilgisayar arasındaki uzaklık sabit (1) • Bilgisayar sayısı arttıkça yolun trafiği yavaşlar
Koşut Bilgisayar Ağ Topolojileri “Crossbar”
Koşut Bilgisayar Ağ Topolojileri Çok aşamalı ağlar (Multistage) n = log p
Koşut Bilgisayar Ağ Topolojileri Complete omega network P C C a. Pass-trough b. Cross-over
Koşut Bilgisayar Ağ Topolojileri Tam ve yıldız bağlantı
Koşut Bilgisayar Ağ Topolojileri Doğrusal ve halka bağlantı
Koşut Bilgisayar Ağ Topolojileri Hasır Dokusu (Mesh)
Koşut Bilgisayar Ağ Topolojileri Simit (2 D Torus)
Koşut Bilgisayar Ağ Topolojileri Simit (2 D Torus)
Koşut Bilgisayar Ağ Topolojileri Üç boyutlu hasır Üç boyutlu torus
Koşut Bilgisayar Ağ Topolojileri 3 D Torus
Koşut Bilgisayar Ağ Topolojileri Hyper. Cube . . .
Koşut Bilgisayar Ağ Topolojileri Ağaç (Tree) anahtarlama işlemci
Koşut Bilgisayar Ağ Topolojileri
- Slides: 99