Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
Paralel Programlama Bölüm

Paralel Programlama Bölüm 2

Paylaşım , Takip İçin

Paralel Donanım ve Yazılımlar

• Verimli paralel programlar yazabilmek için paralel olarak çalışacak
programın üzerinde çalışacağı bilgisayar donanımı ve işletim sistemi
hakkında bilgi sahibi olmamız gerekiyor.
• Bu bölüm içerisinde paralel donanım ve yazılım mimarilerinden
bahsedeceğiz.

Von Neumann Architecture (Mimarisi)

• İsmini Macar asıllı ünlü
Matematikçi/Dahi John von Neumann’
dan almıştır.
• ‘stored-program computer’ olarak da
bilinmektedir.
• Bu mimaride hem program komutları
hem de veriler aynı elektronik bellekte
tutulur

• Dört ana unsurdan oluşmaktadır.
• Aritmetik ve Mantıksal Ünite (Aritmetic
and Logic Unit)
• Kontrol Ünitesi (Control Unit)
• İlk ikisi CPU oluşturur.
• Bellek (Memory)
• Bağlantılar (interconnections)
• Giriş ve Çıkış (Input/Output)

Von-Neumann Darboğazı (bottleneck)

• Bu mimarinin en büyük sorunu bilgisayarın komutları (instruction)
okuyarak işlemesi için sürekli olarak işlemi askıya alıp hafızaya
erişmesi gerekmektedir.
• Bu da çok daha hızlı çalışabilecek olan ALU’nun sürekli komut okuma
(fetch) ve çözümleme (decode) işlemleri süresince boşa beklemesine
neden olmaktadır.
• 2010 yılına bir işlemci bir fetch işlemi süresinde 100’den fazla komutu
çalıştırabilecek hızlara sahipti.

İşlem (Process), Multitasking ve Thread

• İşletim Sistemleri (Operating Systems): Bilgisayar donanım
kaynaklarını yöneten ve çeşitli uygulama yazılımları için yaygın
servisleri sağlayan bir yazılımlar bütünüdür.
• İşletim sistemleri hangi programların nasıl ve ne zaman çalışacağını
belirler.
• Aynı zamanda hafıza ve sabit disk I/O birimlerinin yönetiminden de
sorumludur.
• Process (İşlem): Genel anlamda işlemci üzerinde yürütülmekte olan
her bir programa verilen genel isim.

Multitasking (Çoklu Görev)

• Multitasking: İşletim sisteminin eş zamanlı olarak birden fazla işlemi
çalıştıra bilmesi yeteneğine verilen isim.
• İşletim sistemi çalışmakta olan bir işlemi yarıda keserek çok kısa
aralıklarda farklı işlemleri eş zamanlı olarak bir arada çalıştırabilir.
• Aradaki geçiş süreleri (time-slice) olarak adlandırılır.

Threads (İş Parçacıkları)

• Thread: Lightweight process.
• Thread’ler bir programın paralel ve
birbirinden bağımsız işlemler
yapmasını sağlar.
• İki tip thread yapısı vardır:
• User-level Threads
• Kernel-level Threads

Cache Memory (Önbellek)

• Von-Neumann bottleneck çözümü
için en yaygın olarak kullanılan
yöntemlerden bir tanesi.
• Cache Bellek: CPU içinde bulunan
yüksek hızlı hafıza yapılarına verilen
isimdir. (İşlemci önbelleği)
• Sistem belleğinden gelen veriler
çoğunlukla CPU’nun hızına yetişemez
işlem hızımızı artırmak için
kullanıyoruz.

Caching Yöntemleri

• İlişkilendirmeye göre ön bellek çeşitlerini üçe ayırabiliriz:
• Doğrudan ilişkili ön bellek (Direct mapped cache)
• Tam ilişkili ön bellek (Fully Associative cache)
• Kümeli ilişkili ön bellek (Set Associative cache)

Virtual Memory (Sanal Bellek)

• Cache Bellekler işlemci ve hafıza arasında bir geçiş sağlamakta ve
bilgisayarlarımızın daha hızlı işlem yapabilmesine olanak
sağlamaktadır.
• Fakat bilgisayarımızın ana belleğine (RAM) sığamayacak kadar büyük
ölçekli bir programı nasıl çalıştıracağız?
• Virtual Memory (Sanal Bellek) : Fiziksel Belleğin yetersiz kaldığı
durumlarda, uygulamaların ihtiyaç duyduğu bellek ihtiyacını sabit diski
kullanarak karşılayan bilgisayar tekniğidir.

• Sanal bellek için disk üzerinde ayrılan bu disk alanına swap space
(takas alanı) da denilir.
• Sanal Bellek, cache bellekler gibi veri yada program bloklarını
yönetmek için kullanılırlar.
• Genellikle bu bloklara page (sayfa) adını veriyoruz.

Sanal Bellek Örneği

Örneğin, ana belleği 32 MB olan bir bilgisayarda, 300 MB’lık bir
program çalıştırılmak istenirse, bu programın tümünün RAM’e
yerleşmesi mümkün değildir.
• Bu durumda sanal (istemsel) sayfalama yöntemi kullanılarak, örneğin
ana bellek 4 KB’lık sayfalara bölünerek, çalıştırılmak istenen
programın sadece gerekli işlemlerine ait sayfalar ana belleğe yüklenir.
• Geri kalanı ise sanal bellekte bekler ve gerekli olduğunda RAM’e
getirilir.
• İşletim sistemi ve bilgisayar donanımının sayfalama ve kesimleme
yöntemlerini desteklemesi gerekmektedir.

Pipelines (Boru Hattı Mimarisi)

• İşlemci üzerinde komutların paralel (eş zamanlı olarak) çalışması
prensibine dayanmaktadır. (Instruction Level Parallelism).
• Zamanı kısaltarak toplam işi arttıran, toplu komutların daha hızlı
çalışmasını sağlayan günümüzde daha hızlı işlemci tasarımında
kullanılan önemli bir yöntemdir.
• Bir komut 4 temel bileşenden oluşmaktadır:
• FI : Fetch Instruction (Git Getir)
• DA: Decode and calcultale effective address (Çözümleme)
• FO: Fetch Operand (Belekten Veri okuma)
• EX: Execute (İşlemi gerçekleştir – Yaz)
• Her zaman aralığında bir bileşen icra edilir.

Paralel Donanım Mimarileri

• Flynn’in Klasik Taksonomisi (Flynn Sınıflandırması.
1966 yılında Michael J. Flynn tarafından yapılan bilgisayar
mimarisinin sınıflandırmasıdır.)
• Paralel Donanım Mimarileri
• SISD (Single Instruction, Single Data Stream) Tek Komut Tek Veri Akışı
• SIMD (Single Instruction, Multiple Data Stream) Tek Komut Çok Veri Akışı
• MISD (Multiple Instruction, Single Data Stream) Çok Komut Tek Veri Akışı
• MIMD (Multiple Instruction, Multiple Data Stream) Çok Komut Çok Veri Akışı
• olarak 4’e ayrılırlar

SISD (Tek Komut Tek Veri Akışı)

• Klasik Seri olarak çalışan
bilgisayarlardır.
• Von Neumann mimarisi örnek olarak
verilebilir.

SIMD (Tek Komut Çok Veri Akışı)

• Bu sistemler Paralel sistemlerdir.
• Çoklu veri akışları üzerinde aynı
komutu paralel olarak işleyebilen
sistemlerdir.
• Single Control Unit, Multiple ALU
(Tek Kontrol Ünitesi Çoklu
Aritmetik Lojik Birim)

SIMD Sistemleri

• Vector Processors (Vektör İşlemciler):


• Bu tip işlemciler dizi yada vektör şeklindeki veri üzerinde paralel olarak
çalışabilme kabiliyetine sahiptirler.
• Örneğin veri yolu genişliği boyutundaki bir diziyi tek bir (instruction cycle)
komut döngüsü süresinde işleyebilir.


Grafik İşlemcileri (GPU: Graphics Processing Units):


• Graphic processing pipeline kullanılarak piksel dizilerinin ve grafik işlemlerinin
paralel olarak işlenebilmesini sağlamaktadır.

MISD (Çok Komut Tek Veri Akışı)

• Tek bir veri üzerinde birden fazla komut
setinin eşzamanlı olarak çalıştırılması
prensibine dayanmaktadır.

MIMD (Çok Komut Çok Veri Akışı)

• MIMD sistemler birbirinden tamamen
bağımsız ve paralel olarak çalışabilen
çekirdeklere (core) sahiptirler.
• Her bir core kendisine ait bir ALU ve Kontrol
Ünitesine sahiptir.
• SIMD sistemlerin aksine MIMD sistemler
asenkron olarak çalışabilirler.
• Birçok MIMD sistemde global bir saat
darbesi (clock pulse) yoktur.
• Bunun yerine kullanıcı sistemi kendi arasında
senkronize etmelidir.

MIMD Sistemler

• Bu sistemler iki temel gruba ayrılabilirler:


• Shared-memory Systems (Hafıza Paylaşımlı Sistemler)
   • Uniform Memory Access (UMA) (Tekdüze Bellek Erişimi)
   • Nonuniform Memory Access (NMA) (Tekdüze olmayan Bellek Erişimi)
• Distiributed-memory Systems (Dağıtık Bellek Sistemleri)
   • Bu sistemlere en iyi örnek işlemsel kümelerdir (clusters). Birbirlerine network
ağı ile bağlı olan PC’lerden oluşan küme sistemleri gibi
   • Hadoop (Hadoop Distributed File System (HDFS) on Java)

Bir sonraki Paralel programlama konusu için — Tıklayınız


Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: