Çok Çekİrdeklİ İŞlemcİler ve paralel yazilim …bilgisayar müh. bölümü bilgisayar müh....
TRANSCRIPT
Ç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
İÇİ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ç
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
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
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
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.
2. ÇOK ÇEKİRDEKLİ İŞLEMCİ MİMARİSİ
Şekil 3. Çok Çekirdekli Bir İşlemcinin Genel Yapısı
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
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
3. ÇOK ÇEKİRDEKLİ İŞLEMCİLER İÇİN
YAZILIM GELİŞTİRME MİMARİLERİ
* Paralelleştirme Olanakları
* Paralelleştirme Paternleri
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.
3.1. Pthreads Kütüphanesi
Şekil 4. Üst Düzeyde Paralel Yazılım Geliştirme Olanaklarına Bir Örnek: Pthreads
Ü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.
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.
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.
3.1. Paralelleştirme Olanakları
Şekil 5. Alt Düzeyde Paralel Yazılım Geliştirme Olanaklarına Bir Örnek: OpenMP
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.
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.
3.2. Posix İş Parçacıklarında Görev
Seviyesi Paralellik
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.)
3.2. OpenMP’de Veri ve Görev Seviyesi
Paralellik
3.2. Posix İş Parçacıklarında Veri Seviyesi
Paralellik
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
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.)
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ı
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.
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.
5. ÇOK ÇEKİRDEKLİ MİMARİLERİN
PERFORMANS PROBLEMLERİ
* Bağımlılık
* Senkronizasyon
* Ön Bellek Kısıtları
* Çekirdek Sayısı
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.
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
5.1. Bağımlılık
2. Zıt Bağımlılık (Write After Read)
Örnek:
Z= X * Y
X= Y+W
5.1. Bağımlılık
3. Çıktı Bağımlılığı (Write After Write)
Örnek:
Z= X * Y
Z= T+W
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.
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.
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
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.
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.
TEŞEKKÜR EDERİM.