Download "ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME"
1 ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME Ecem İren Halilcan Can Akince Aylin Kantarcı Bilgisayar Müh. Bölümü Bilgisayar Müh. Bölümü Bilgisayar Müh. Bölümü Gediz Üniversitesi Ege Üniversitesi Ege Üniversitesi
2 İÇİNDEKİLER 1. Giriş 2. Çok Çekirdekli İşlemcilerin Mimarisi 3. Bu İşlemciler Üzerinde Yazılım Geliştirme Mimarileri 4. Hyperthreading 5. Bu İşlemcilerin Performanslarını Etkileyen Faktörler 6. Sonuç
3 1.GİRİŞ: Bilgisayar Mimarilerinin Evrilim Süreçleri CISC (Complex Set Instruction Computers) İşlemciler: Karmaşık komut seti Karmaşık donanım Yorumlayıcı ile karmaşık karmaşık komutların basit adımlara (mkomutlar) dönüştürülmesi RISC (Reduced Set Instruction Computers) İşlemciler: Basit komut seti Basit donanım Yorumlayıcıya ihtiyaç yok
4 1.GİRİŞ: Paralel İşletim Boruhattı (Pipeline): Birim zamanda işletilmeye başlanan komut sayısında artış olmuştur. Farklı komut evreleri farklı donanım birimlerinde Performans artışı vardır. Şekil 1. a) Beş Birimlik Boru Hattı, b) Her Aşamanın Durumu
5 1.GİRİŞ: Paralel İşletim Superskalar İşlemciler: Çok sayıda işletim evresine sahip ve diğer evrelere ait birimlerin bir tane olduğu mimaridir. Şekil 2. Beş Fonksiyonel Birimlik Süperskalar İşlemci
6 I. GİRİŞ: Paralel İşletim Çoklu İşlemciler: Bir bilgisayarda 2 den fazla işlemci bulunmaktadır. Çok Çekirdekli İşlemciler: Çok sayıda çekirdeğe sahip tek bir işlemci kullanılan mimaridir.
7 2. ÇOK ÇEKİRDEKLİ İŞLEMCİ MİMARİSİ Şekil 3. Çok Çekirdekli Bir İşlemcinin Genel Yapısı
8 2. ÇOK ÇEKİRDEKLİ İŞLEMCİ MİMARİSİ Performans Kırılım Noktaları Tüm bellek erişim modelleri işlemci üzerinde yoğun bir bellek trafiği yaratır: i. Bir çekirdek üzerinde çalışmakta olan bir iş parçacığı/süreç, verileri ve çalıştıracağı komutları kendine ait 1. Seviye Ön Bellekten alır. ii. Veri/komutun bulunamaması durumunda Paylaşımlı Ön Belleğe başvurulur. iii. Yine bulunamazsa, Veriyolu Arayüzü ile ana belleğe başvurulur. iv. Bir çekirdekten başka bir çekirdeğe ait önbellekte bulunan bir veriye de ihtiyaç duyabilir Çekirdekler arası iletişim
9 2. ÇOK ÇEKİRDEKLİ İŞLEMCİ MİMARİSİ Performans Kırılım Noktaları Donanımın karmaşıklaşması sebebiyle entegre üzerinde kompleks kontrol ünitesi Karmaşık işlemci sürücü yazılımı Ana belleğe yüklü İşlemcinin çalışması boyunca işlemci ana bellek arasında yoğun sürücü trafiği
10 3. ÇOK ÇEKİRDEKLİ İŞLEMCİLER İÇİN YAZILIM GELİŞTİRME MİMARİLERİ * Paralelleştirme Olanakları * Paralelleştirme Paternleri
11 3.1. Paralelleştirme Olanakları Üst Düzey Olanaklar Java, Pthreads (POSIX iş parçacıkları kütüphanesi) gibi kullanıcı seviyesi kütüphanelerle yazılım geliştirici iş parçacıklarını OS KONTROLÜNDE yaratır ve yönetir.
12 3.1. Pthreads Kütüphanesi Üst Düzeyde paralelleştirme olanakları, uygulamaların eş zamanlı çalışacak farklı görevlere sahip, modüler bir yapıda olma durumuna daha uygundur. Şekil 4. Üst Düzeyde Paralel Yazılım Geliştirme Olanaklarına Bir Örnek: Pthreads
13 3.1. Paralelleştirme Olanakları Alt Düzey Olanaklar OpenMP: İş parçacıkları doğrudan işlemci sürücü yazılımı tarafından yaratılır ve yönetilir. 1. Yazılım geliştirici kodunu seri olarak yazar. 2. Sonra parelelleştirme olanaklarını analiz eder. 3. Paralelleştirilecek bölgenin başına yani derleyiciye direktifler yerleştirir. 4. Uygulama çalıştırılacağı zaman işletimine seri olarak başlar. 5. İşlemci kontrolörü paralelleştirme direktiflerine rastladığı anda direktiflere eklenmiş ifadeleri ve parametreleri göz önüne alarak uygun şekilde iş parçacıklarını yaratır ve çekirdeklere atar.
14 3.1. Paralelleştirme Olanakları Üst Düzey olanaklarıyla işlemci sürücüsü OS aracılığı ile iş parçacıklarını yaratır. Alt Düzey olanakları ile iş parçacıkları doğrudan işlemci sürücüsü tarafından yaratılır. Bu nedenle Alt Düzey olanağı daha hızlı olur.
15 3.1. Paralelleştirme Olanakları Alt Düzeydeki olanaklar görevlerin birbirini izleyen paralelleşebilecek adımlar şeklinde gerçekleştirilmeleri durumuna daha uygundurlar. Paralelleştirilmeyen seri kısımlar tek bir çekirdek üzerinde işletilirken paralelleştirilecek noktalara gelince iş parçacıkları yaratılır ve çekirdeklere atanırlar. Şekil 5. Alt Düzeyde Paralel Yazılım Geliştirme Olanaklarına Bir Örnek: OpenMP
16 3.2. Paralelleştirme Paternleri Görev Seviyesi Paralellik Veri Seviyesi Paralellik Görev Seviyesi Paralellik: Birbirinden farklı eş zamanlı görevlerin bulunduğu uygulamalar için kullanılır. Genel olarak Üst Düzey Olanaklarının kullandığı modeldir. (Java, Pthreads) OpenMP de de desteklenir.
17 3.2. Posix İş Parçacıklarında Görev Seviyesi Paralellik
18 3.2. Paralelleştirme Paternleri Veri Seviyesi Paralellik Aynı anda farklı veriler üzerinde aynı işlemler yapılacağı zaman uygundur. Genel olarak Alt Düzey Olanakları için uygundur. (OpenMP) Üst Düzey Olanaklarda (Java, Pthreads) yazılım geliştirimini kompleksleştirir: Yazılımcı verileri kendisi iş parçacıklarına dağıtmak zorundadır.)
19 3.2. OpenMP de Veri ve Görev Seviyesi Paralellik
20 3.2. Posix İş Parçacıklarında Veri Seviyesi Paralellik
21 4. HYPERTHREADING İş parçacığı neden beklemeye geçip işlemciyi bırakır? IO beklemesine geçildiğinde Quantum süresi dolduğunda Bilgi önbelleklerde yoksa bellek transferi başlatıldığında Boru hattında komutlar arası bağımlılık oluştuğunda
22 4. HYPERTHREADING Durum Depolama Ünitesi: İçerik anahtarlama (context switch) sırasında yeni çalışmaya başlayan iş parçacığının durum bilgileri bu ünitede saklanır. Çalışmayı bırakan iş parçacığının durum bilgileri RAM a yazılır. Hyperthreading: Bir çekirdekte 1 yerine 2 donanımsal depolama biriminin kullanılması: (belleğe durum bilgisini yazmayı ortadan kaldırır.)
23 4. HYPERTHREADING Neden Hyperthreading beklentileri istenen düzeyde karşılayamadı? 1. Sürekli aynı 2 iş parçacığının seçilmediği oyun programları gibi uygulamalarda çok sayıda iş parçacığı üretimi vardır Sürekli çok sayıda iş parçacığı arasında geçiş yapılır. 2. Daha kompleks işlemci kontrol ünitesi ve iş dağıtım modülü İşlemci yavaşlaması
24 4. HYPERTHREADING 3. Artan donanım yükü Daha çok güç tüketimi ve ısınma ortaya çıkar Saat frekansı ve işlemci hızının azalması 4. Bazı OS'ların HT desteğine sahip olmaması Fiziksel/mantıksal çekirdek ayrımı yoktur. 2 iş parçacığı OS tarafından aynı fiziksel çekirdeğe atanabilir İş parçacıklarının çekirdeklere dengesiz dağıtımı söz konusu.
25 4. HYPERTHREADING Öneri: HT desteğinin tümüyle işlemciden çıkarılması: Donanım ve OS yükü hafifler Güç tüketimi, ısı üretimi düşer. HT'ye göre daha yüksek performans artışı gerçekleşir.
26 5. ÇOK ÇEKİRDEKLİ MİMARİLERİN PERFORMANS PROBLEMLERİ * Bağımlılık * Senkronizasyon * Ön Bellek Kısıtları * Çekirdek Sayısı
27 5.1. Bağımlılık Çok çekirdekli işlemciler boruhattı mimarisine sahiptirler. Veri bağımlılığı: Boruhattında birbirini izleyen komutlar aynı veriyi kullanıyorsa eş zamanlı ve seri işletimler farklı sonuçlar doğurabilir.
28 5.1. Bağımlılık Bağımlılık Türleri 1. Gerçek Bağımlılık (Read After Write) Örnek: Z= X * Y T= Z+W
29 5.1. Bağımlılık 2. Zıt Bağımlılık (Write After Read) Örnek: Z= X * Y X= Y+W
30 5.1. Bağımlılık 3. Çıktı Bağımlılığı (Write After Write) Örnek: Z= X * Y Z= T+W
31 5.2. Senkronizasyon Çok sayıda iş parçacığı paralel çalışırken aynı anda aynı değişkene ulaşmak ister Senkronizasyon problemleri ortaya çıkar. Çözüm Değişkenlerin mutex, koşul değişkeni vs. olanakları korunması Bir anda 1 iş parçacığı veriye müdahale eder. Diğer iş parçacıkları beklemede kalır. Çok çekirdekli mimarilerde senkronizasyon kaynaklı içerik anahtarlamalar daha çoktur.
32 5.3. Ön Bellek Kısıtları Ön bellek miktarı kısıtlıdır ve çoğu, OS komut ve veri yapıları ile doludur. Bu durumda çok sayıda uygulama iş parçacığı ihtiyaç duyduğu veriyi ve komutu önbellekten alamaz Belleğe bağlanma durumu söz konusu İş parçacıklarının yoğun olarak iş yapması Bellek trafiği artar Bellek kontrolcüsü seri moda geçer İş parçacıkları seri moda geçer. Sonuç Paralel yazılım geliştiriminin bir getirisi olmaz.
33 5.4. Çekirdek Sayısı Uygulama iş parçacıkları ve OS iş parçacıkları çekirdeklere dağıtılır. Uygulama iş parçacıkları ve OS iş parçacıkları kendi aralarında sık sık iletişim halindedir Koordinasyon ve veri paylaşımı için Çekirdekler arası yoğun iletişim
34 5.4. Çekirdek Sayısı İletişimin kontrollü sağlanması Kontrol ünitesinin karmaşıklığı artmıştır. Karmaşıklık Yer, güç ve ısı problemleri yaratır Saat frekansı düşer İşlemci frekansı düşer. Sonuç İşlemcide çok sayıda çekirdeğe yer verilmemelidir Çekirdekler arası iletişim yükü azalır ve saat frekansı artar.
35 6. SONUÇ HT teknolojisinin iptal edilmesi Daha az problem ve daha yüksek performans OS ve uygulama süreçlerinin birbirinden ayrı olarak çalışacağı 2 çekirdeğin yeterli olması Donanım ve OS basitleşecek ve 2 tür süreç grubu için farklı iş dağıtımı stratejileri ortaya çıkacaktır.