ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM …Bilgisayar Müh. Bölümü Bilgisayar Müh....

Preview:

Citation preview

Ç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.

Recommended