BM-311 Bilgisayar Mimarisi

Benzer belgeler
BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

İşletim Sistemlerine Giriş

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

İşletim Sistemleri (Operating Systems)

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

Bilgisayar Mimarisi ve Organizasyonu Giriş

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

BM-311 Bilgisayar Mimarisi

Ders - 1. BİL 221 Bilgisayar Yapısı GİRİŞ. Ders Hakkında. Ders İzlencesi

BM-311 Bilgisayar Mimarisi

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

BİLGİSAYAR MİMARİLERİ

Çok İşlemcili Yapılarda Sinyal İşleme Yazılımlarının Geliştirilmesi Uygulaması. Sinan Doğan, Esra Beyoğlu

BM-311 Bilgisayar Mimarisi

Alptekin Temizel

Bilgisayar Mimarisi Nedir?

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

Yrd.Doç.Dr. Celal Murat KANDEMİR

BİLGİSAYAR MİMARİSİ. Komut Seti Mimarisi. Özer Çelik Matematik-Bilgisayar Bölümü

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

BİL-142 Bilgisayar Programlama II

MİKROİŞLEMCİ MİMARİLERİ

İŞ İSTASYONU SEÇİM REHBERİ

Mikroçita. Mikroçita Rapor 2:

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

BM 375 Bilgisayar Organizasyonu Dersi Vize Sınavı Cevapları 10 Nisan 2009

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

BİLGİSAYAR MİMARİSİNDE YENİ YAKLAŞIMLAR DÖNEM PROJESİ

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Eskişehir Osmangazi Üniversitesi, Fen Edebiyat Fakültesi Matematik- Bilgisayar Bölümü, Eskişehir 2

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

William Stallings Computer Organization and Architecture 9 th Edition

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Paralel Programlama Ortamları

İŞLEMCİ İşlemcilerin Temel Birimleri, İşlemcinin Çalışma Sistemi ve Komutlar, İşlemci ve Hafıza Arasındaki İlişki, İşlemci Teknolojileri, Modern

MİKROİŞLEMCİLER 1 Ders 1

Gömülü Sistemler. (Embedded Systems)

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Web Madenciliği (Web Mining)

Embedded(Gömülü)Sistem Nedir?

YZM 3102 İşletim Sistemleri

Peripheral Component Interconnect (PCI)

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Cache-Hızlı Hafıza Birimi. Bilgisayar Sistemi Bilgisayarların Anakart Organizasyonu

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı

Anakart ve Bileşenleri CPU, bellek ve diğer bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

Bölüm Bazı Temel Konseptler

İşletim Sistemi. BTEP205 - İşletim Sistemleri

BİT in Temel Bileşenleri (Yazılım-1)

Bilgisayar Donanım 2010 BİLGİSAYAR

Bilgisayar Sistemlerine Genel Bakış

Bilgisayarların Gelişimi

(Random-Access Memory)

Donanımlar Hafta 1 Donanım

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

BİL-142 Bilgisayar Programlama II

SAYISAL TASARIM. Ege Üniversitesi Ege MYO Mekatronik Programı

Giris {\} /\ Suhap SAHIN

HDL Dilleri VHDL. Son olarak, spesifik ASIC teknolojisi için devrenin yerleşimi netlist tanımlamalarından gelen diğer araçlarla oluşturulmuş olunur.

Bilgisayara Giriş. Bilgisayarlar ilk geliştirilmeye başlandıklarından bugüne kadar geçen süre içerisinde oldukça değişmişlerdir.

ncü Bilgi İşleyen Makine Olarak Beyin Beyin 2005 Albert Long Hall, Boğazi

Çalışma Açısından Bilgisayarlar

Yrd. Doç. Dr. Caner ÖZCAN

ANA KARTLAR. Ana Kart Nedir?

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

Görüntü Bağdaştırıcıları

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

Windows Eski Sürümleri Bellek Yapısı

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

MTM 305 MİKROİŞLEMCİLER

İşletim Sistemlerine Giriş

MATLAB Semineri. EM 314 Kontrol Sistemleri 1 GÜMMF Elektrik-Elektronik Müh. Bölümü. 30 Nisan / 1 Mayıs 2007

Pre-requisite : EE240

Paralel Hesaplama ve CUDA

Bilgisayar Donanımı Dersi BİLGİSAYARIN MİMARI YAPISI VE ÇALIŞMA MANTIĞI

Mimari Esaslar. Mikroişlemcinin mimari esasları; Kaydediciler Veriyolları İş hatları dır.

Büyük Veri Analitiği (Big Data Analytics)

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

Transkript:

1 BM-311 Bilgisayar Mimarisi Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU

2 Giriş Graphical Processor Unit (GPU), üç boyutlu grafiklerin işlenmesini hızlandırmak için tasarlanmıştır. GPU günümüzde hemen hemen tüm iş istasyonlarında, laptop larda, tablet lerde ve akıllı telefonlarda vardır. Yüzlerce hatta binlerce paralel işlemci core bir entegre devrede olabilir. Büyük GPU sistemler genellikle PCIe tabanlı yardımcı işlemci kartında yer alabilir. Küçük GPU sistemler akıllı telefon veya tablet lerde bulunur ve birkaç tane paralel işlemci core vadır. GPU son yıllarda, biyoinformatik, moleküler analiz, petrol ve gaz arama, finansal uygulamalar, sinyal ve ses işleme, istatistiksel modelleme, bilgisayarla görme ve medikal görüntüleme alanlarında kullanılmaktadır (General-Purpose GPU (GPGPU)). Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU

3 CUDA Compute Unified Device Architecture (CUDA), NVIDIA tarafından geliştirilen ve GPU kullanan paralel hesaplama platformu ve programlama modelidir. CUDA C, C/C++ tabanlı bir dildir. Bir CUDA programı genel olarak 3 kısma bölünebilir: Host üzerinde çalışan kod (CPU) Cihaz üzerinde çalışan kod (GPU) Host ve cihaz arasında veri transferi yapan kod Host üzerinde çalışan kod seri çalışır ve paralel çalışmaz (veya kazancı yoktur). GPU üzerinde çalışan veri-paralel kod kernel olarak adlandırılır. Bir thread, kernel fonksiyonun tek bir örneğidir. Kernel çok az veya hiç branch deyimine sahip değildir. Branch deyimleri thread lerin seri çalışmasını gerektirir. CUDA Programcı, kernel çağrıldığında kaç tane thread çalışacağını belirler. GPU işlemci core larını (CUDA core) maksimum dolu tutmak için binlerce thread tanımlanır. Programcı thread lerin nasıl gruplandırılacağını da belirler. Thread ler bloklar halinde gruplanır ve her kernel için blok sayısı grid olarak adlandırılır.

4 CUDA İki boyutlu thread blokları ve iki boyutlu grid yapısı. Bir blok sadece bir GPU streaming multiprocessor e (SM) atanır. Bir blok SM ler arasında asla bölünemez. Tek blok olursa, bir SM tüm işi yaparken diğerleri boş bekler. Thread blok sayısı, GPU üzerindeki SM sayısından az olmamalıdır. Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU

5 GPU ve CPU GPU ve CPU farklı uygulamalar için tasarlandığından mimarileri çok farklıdır. CPU ve GPU nun önbellek, kontrol birimi, işlem birimi farklıdır. CPU nun önemli bir kısmını önbellek ve kontrol birimi kaplar. GPU, matematiksel işlemler için paralel SIMD mimarisi kullanır. GPU karmaşık kontrol birimine (out of order exec, branch prediction, data hazards, vb.) ihtiyaç duymaz. GPU ve CPU GPU ve CPU lar için saniyede floating point işlem (GFLOPS) sayıları.

6 Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU 1980-1990 lı yıllarda sabit ve programlanamaz idi ve özel amaçlı işlem birimlerinden oluşmaktaydı. Daha sonraki yıllarda yüksek paralel SIMD işlemcilerle GPU mimarisi geliştirilmiştir. 2006 yılında NVIDIA tarafından GPGPU dili CUDA geliştirilmiştir. NVIDIA tarafından geliştirilen GeForce 8800 GTX ilk GPGPU donanımıdır. Genel amaçlı uygulamaları paralel çalıştırmak için hiyerarşik önbellek ve paylaşılmış hafıza eklenmiştir. Programlanabilir GPU işlemci core ları ölçeklenebilir SM lere ayrılmıştır.

7 NVIDIA tarafından Tesla, Fermi, Kepler ve Maxwell gibi çok sayıda versiyon geliştirilmiştir. SM mimarileri her versiyonda geliştirilmiştir (Kepler SMX, Maxwell SMM). NVIDIA Fermi mimarisi temel mimariyi yansıtır. Fermi mimarisi 16 SM den oluşur. Fermi mimarisinde her SM 32 CUDA core a sahiptir. Fermi GPU, 16 SM*32 CUDA core = 512 CUDA core a sahiptir. Fermi GPU, CUDA core/sm oranı az olduğundan GPU donanımı ile CUDA yazılımı arasında eşleştirmeyi basit bir şekilde yapar. Fermi L2 önbellek 16 SM nin arasında yer alır. 1 adet SM Her SM de; - 32 core - 16 Ld/St birimi - 4 özel işlem birimi - 6 tane 64-bit DRAM I/O arayüzü - 6*64=384 bit GDDR5 (Graphic Double Data Rate) arayüzü - Host interface ile GPU ve CPU arasında PCIe bağlantı sağlanır. - GigaThread scheduler, thread bloklarını SM lere dağıtır. Fermi Mimarisi

8 SM Mimarisi - 32 adet GPU core (32 CUDA core) - 2 adet Warp scheduler ve dispatch port - 16 adet Load/Store birimi - 4 adet özel işlem birimi (SFUspecial function units) - 32k * 32 bit register - Paylaşılmış memory ve L1 cache (toplam 64kB) Dual warp scheduler GigaThread scheduler thread bloklarını SM lara dağıtır. Dual warp scheduler thread bloklarını 32 şer thread ler halinde gruplandırır. Her thread kendi instruction address counter ve register kümesine sahiptir. SM içindeki her thread bağımsız branch ve exucute işlemi yapabilir. GPU performansı CUDA core larının maksimum dolu olmasına bağlıdır (SM donanımlarının yüksek verimli olması). SM donanımlarının işlem oranının düşmesinde ana etken yapısal kısıtlardır. Her bir warp scheduler ve dispatch birimine, 16 CUDA core (toplam 32 CUDA core) atanır.

9 Dual warp scheduler Dual warp scheduler ve instruction dispatch birimleri CUDA cores NVIDIA Fermi mimarisinde GPU içerisinde her SM ye 32 adet CUDA core atanmıştır. Her CUDA core ayrı pipeline ve datapath e sahiptir (bir integer unit pipeline ve bir floating-point unit pipeline). Int unit, 32-bit, 64-bit ve genişletilmiş precision a sahip integer ve logic/bitwise işlemlerini yapar. FP unit, single-precision (bir CUDA core gerekir) veya doubleprecision (iki CUDA core gerekir daha uzun sürer) yapar. Kepler mimarisinde her SM de double-precision FP unit vardır.

10 Special function units Her SM 4 adet SFU ya sahiptir. SFU, cosine, sine, reciprocal ve square root işlemlerini bir lock cycle da yapar. Load/Store units 16 load/store birimi ile SM kaynak ve hedef adresleri hesaplar. Adresler, cache veya DRAM üzerine thread lerin yazma ve okuması için kullanılır. Registers, shared memory ve L1 cache Her SM de register set, shared memory/l1 cache bloğu vardır. Fermi mimarisinde, her SM de 32k*32-bit register vardır, her thread için 64*32-bit register atanabilir (CUDA 2.x versiyon). Register erişimi birkaç ns dir (ardından, L1, L2 ve memory). Bir thread e atanan register daki verinin yaşam süresi thread in yaşam süresi kadardır. Bir SM deki shared memory deki verinin yaşam süresi thread bloğunun yaşam süresi kadardır. Bir SM içindeki GPU core ları adreslenebilir on-chip shared memory ye sahiptir (multicore CPU larda yoktur.) On-chip memory, GPGPU ların off-chip memory ihtiyacını azaltır. Shared memory boyutu her SM için 48kB tır, ancak global memory ye göre 100-150 kat daha hızlıdır.

11 Registers, shared memory ve L1 cache Shared memory ile paralel process hızını artırmak için, Bir bloktaki tüm thread ler shared memory kullanır(matis-matis çarpım). Seçilen thread ler global memory-shared memory veri transferini yapar, aynı hafıza adresine redundant read/write engellenir. Registers, shared memory ve L1 cache SM memory mimarisinde her SM için 64-kB L1 instruction cache vardır. Toplam 128kB (32k*32-bit) register file vardır. Bir bölümü shared memory kalan ise data cache olarak kullanılan 64kB L1 data cache vardır.

12 Registers, shared memory ve L1 cache Fermi memory mimarisinde tüm SM ler için shared 768 kb L2 unified cache vardır. DRAM shared memory olarak tüm SM ler tarafından kullanılır. Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU

13 Intel Gen8 GPU Gen8 mimarisinde temel yapısal blok Execution Unit (EU) tir. EU, 7 thread ile simultaneous multithreading (SMT) ve superscalar pipeline mimarisine sahiptir. Her thread 128 genel amaçlı register a sahiptir. Her EU da, SIMD floating-point ve integer hesaplamaları yapar. Branch unit ile branch ve Send unit ile hafıza işlemleri yapılır. Her thread 4kB GPR file a, her EU ise 28 kb GPR file a sahiptir. Intel Gen8 GPU Bir EU, 4 farklı thread ten farklı 4 instruction alabilir. Thread arbiter, her komutu 4 functional unit ten birisine atar. EU lar subslice şeklinde organize edilir (her subslice ta 8 EU). Subslice, thread dispatcher ı ve instruction cache e sahiptir. Her subslice 56 eş zamanlı thread çalıştırabilir (7 pipeline*8 EU). Sampler, görüntü yüzeyinde örnekleme yapmak için kullanılır. Sampler, farklı filtreleme modlarına sahiptir (point, bilinear, trilinear, anisotropic) Dataport, yazma/okuma yapar.

14 Intel Gen8 GPU Subslice larla slice oluşturulur (Intel Gen8 de 3 subslice 24 EU). Intel Gen8 GPU Intel Gen8 slice ta, thread dispatch ve grafik veri işleme optimizasyonu için function logic bulunur. L3 cache ve küçük boyutlu shared local memory vardır. Shared local memory ile EU lar arasında geçici değişkenler paylaştırılır. Performansı artırmak için cache banking tekniği kullanılır. Cache banking ile cache eşit boyutlu n adet parçaya (bank) bölünür. Tüm parçalara eş zamanlı erişim yapılır. Aynı bank i adresleyen erişimler ardışık yapılır.

15 Intel Gen8 GPU SoC (System-on-Chip) mimarisinde bir veya birden fazla slice bir chip içerisinde yer alır. Slice lar ek bileşenlerle (3D rendering, media pipeline) birleştirilir. Intel Gen8 mimarisi, GTI (Graphics Technology Interface) aracılığıyla diğer SoC bileşenleriyle birleştirilir. Intel Core M işlemci (Intel HD Graphics 5300 Gen8) SoC mimarisine sahiptir. Intel Core M, GPU kısmına ek olarak çok sayıda CPU core a, LLC (Last Level Cache) e, DRAM controller, display controller ve PCIe device lara sahiptir. Gen8 işlemci, CPU lar, LLC cache, system agent (DRAM controller, display controller ve PCIe device lar) arasında ring şeklinde bir bağlantı vardır. Intel Gen8 GPU Intel Core M işlemci.

16 Konular Giriş CUDA GPU ve CPU Intel Gen8 GPU Yardımcı işlemci olarak GPU Yardımcı işlemci olarak GPU Bir GPU, yüzlerce hatta binlerce SIMD mimarisine sahip işlemci core una sahiptir. Yüksek oranda paralel çalışabilen kod parçaları, GPGPU sistemlerde çok hızlı çalışırlar. Binlerce lightweight thread ile büyük verisetlerinde eşzamanlı çalışan programlar, GPGPU sistemlerde çok hızlı çalışırlar. Lightwieght thread lerde hemen hemen hiç branch komutu yoktur. Iterasyonları arasında veri bağımlılığı olmayan çok büyük iterasyonlara sahip döngüler (matris işlemleri) GPGPU sistemlerde çok hızlı çalışır.

17 Yardımcı işlemci olarak GPU Yüksek oranda paralel çalışan bir seri kod parçası derleyici tarafından paralel hale getirilmelidir. CUDA, OpenCL vb. ile seri kod parçası paralel çalışacak şekilde düzenlenebilir. Compiler directive diller (OpenACC, hicuda, vb.) kullanılabilir. Compiler directive diller, paralelleştirilebilir kısımlar için ipuçları olacak açıklamalar yerleştirir. Yeni versiyon CUDA derleyiciler, OpenACC dil desteğine sahiptir.