BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Giriş Paralel mimari Paylaşılan bellek mimarisi Dağıtık bellek mimarisi Paralel sistemlerde iletişim modelleri Bilgisayarların sınıflandırılması Pipeline ile ilgili örnekler
Giriş Yüksek performanslı sistemlere olan ihtiyaç gün geçtikçe artmakta Yüksek maliyetli işlerin bilgisayarlarla yapılması: Örnek; imalat alanında “prototip” sürecinin ortadan kalması Şu anda yapılması mümkün olmayan, ancak modellenebilen işlerin bilgisayar yoluyla test edilmesi: Örnek; atomun, moleküllerin veya onlardan oluşmuş malzemenin detaylı analizi. İnsanlara zarar vereceği düşünülen bazı olayların bilgisayar yoluyla analizi: Örnek; Atom bombasının etkilerinin hesaplanması Diğer uygulamalar: Hava tahmini, gerçeğe yakın simülatörler (çarpma testi vb.), veri tabanı uygulamaları, file server’ları vb. Yüksek performans nasıl elde edilir? Saat frekansını arttırarak, Paralellikten istifade edilerek İşlemci içi paralellik: Komut bazında paralellik (pipeline yapı) İşlemciler arası paralellik: Görev bazında paralellik
Paralel Mimari Paralel mimariler, iletişim mimarisi ile klasik bilgisayar mimarisini (tek işlemcili) genişletmiş oluyor Programlama modeli: Çoklu-görev (multi programming – multi tasking): Birbirinden bağımsız çok sayıda görevin (süreç) çalışması – süreçlerin aralarında iletişim yok- Paylaşılan adres alanı: İletişim bellek üzerinden yapılıyor (yükle/yaz komutları ile), Mesaj-gönderme (message passing): İletişim mesajlaşma yoluyla oluyor (mesaj gönderme ve alma şeklinde) Data paralel:Birçok işlemci, birçok veri üzerinde aynı anda çalışıyor, veri (bilgi) değişimi global olarak yapılıyor, İletişim: Paylaşılan bellek veya mesaj gönderme yoluyla yapılabilir
Paylaşılan Bellek Mimarisi (Shared Memory Systems) Küçük ölçekli paralel sistemler
Paylaşılan Bellek Mimarisi İşlemciler arasındaki iletişim load/store komutları ile yapılıyor Zaman paylaşımlı çalışma: Prosesler birçok işlemciye dağıtılmış (tek işlemci yerine) Tüm prosesler (thread’ler) aynı adres alanını paylaşıyor Bir işlemci belleğe yazarsa diğerleri bunu görürler Tüm işlemcilerin belleğe erişim süreleri aynı (UMA: Uniform Memory Acces time) Sorunlar: Bellek darboğazı: Ön bellekler problemi biraz azaltır Ölçekleme iyi değil: Yaklaşık 10 işlemciye kadar iyi Bellek tutarlılığı sorunu
Dağıtık Bellek Mimarisi (Distributed Parallel Systems veya Message Passing Systems) Büyük ölçekli paralel sistemler
Dağıtık Paralel Sistemler İşlemciler artık komple bir bilgisayar, dolayısıyla iletişim açıkça belirtilen IO çağrılarıyla yapılabilir Paylaşılan bellekli sistemlerde, kullanıcının iletişim için açıkça komut yazmasına gerek yok ancak burada var Açık iletişim komutları: Send(kime, msg)-Receive(kimden, buf) Send: varış yerini ve veri taşıyan yerel buffer’ın adresini belirler (parametre olarak alır) Receive: Gönderen makinenin adını ve gelen mesajın içine konacağı yerel bellek bölgesinin adresini belirler Send + Receive aslında bellekten belleğe veri kopyalama işlemidir. Bir işlemci belleğe yazarsa diğerleri bunu görürler İşlemcilerin lokal ve lokal olmayan (uzak) belleğe erişim süreleri farklı (NUMA: Non-Uniform Memory Acces time)
Paralel Sistemlerde İletişim Modelleri Paylaşılan bellek sistemleri (Shared memory): İşlemciler paylaşılan adres alanı üzerinden haberleşir Küçük ölçekli makineler için kolaydır Avantajları: Programlamak kolaydır, Düşük bellek erişim süresi, Ön bellekler üzerinde donanımsal kontrol kolaydır Mesaj geçişli sistemler (Message passing) İşlemcilerin kendi yerel bellekleri var, iletişim mesajlaşma yoluyla yapılıyor Az donanım ve kolay tasarım, Lokal olmayan zaman alıcı işlemlere yoğunlaşılır
Bilgisayarların Sınıflandırılması (Flynn Taxonomisi) SISD: Single Instruction, Single Data Tek işlemcili sistemler SIMD: Single Instruction, Multiple Data Vektör işlemciler MISD: Multiple Instruction, Single Data ???, MIMD: Multiple Instruction, Multiple Data Paylaşılan veya dağıtık bellekli paralel sistemler SIMD SPMD: Single Program, Multiple Data Tüm işlemciler aynı programı işletiyor
Çalışma: Derste yapılacak! Aşağıdaki kod parçasının MIPS pipeline mimarisinde çalışacağını düşünün: A) Pipeline sorunlarını bulun ve yazın. Hiçbir iyileştirme yapılmadan, kod çalışabilir duruma getirildiğinde icrası kaç çevrim tutar? GANTT diyagramında gösteriniz. B) Sadece saklayıcılar için çevrimin yarı periyodunda yazma ve diğer yarı periyodunda okuma iyileştirmesi yapılırsa icra süresi çevrim adedi bakımından ne olur? GANTT diyagramında gösteriniz. C) Tüm donanımsal iyileştirmeler uygulandığında icra kaç çevrim olur? GANTT diyagramında gösteriniz. LW R1, 0(R2) SUB R4, R1, R5 AND R6, R1, R7 OR R8, R1, R9
Çalışma: Derste yapılacak! Aşağıdaki kod parçasının MIPS pipeline mimarisinde çalışacağını düşünün: A) Hiçbir iyileştirme yapılmadığında bir döngü icrası kaç çevrim tutar? GANTT diyagramında gösteriniz. B) Tüm donanımsal iyileştirmeler uygulandığında bir döngü icrası kaç çevrim olur ? GANTT diyagramında gösteriniz. Loop: LW R1 0(R2) ADD R1, R1, #1 SW 0(R2), R1 ADD R2, R2, #4 SUB R4, R3, R2 BNEZ R4, Loop