GPU (Graphics Processing Unit/Grafik İşlem Birimi), Video Oyunları ve etkileşimli 3D uygulamalar gibi uygulamalarda merkezi işlemcinin iş yükünü hafifletmek için özel olarak grafik işlemeye adanmış bir işlemcidir.
GPU (Grafik İşlem Birimi) Nedir?
Grafiklerle ilgili olanların çoğu GPU’da işlenirken, CPU diğer hesaplama türleri için kullanılabilir.
GPU, grafik işleme için optimize edilmiş ilkel olarak adlandırılan belirli grafik işlemlerini uygular. 3D grafik işleme için en yaygın ilkelerden biri, daha gerçekçi bir görünüm vermek için şekillerin kenarlarını düzleştiren kenar yumuşatmadır.
Ek olarak, dikdörtgenler, üçgenler, daireler ve yaylar çizmek için ilkeller vardır. GPU’lar şu anda efektlerde daha çok gerçekçiliğe ve ilkele sahiptir.
Tarihi
Modern GPU’lar 1970’lerin ve 1980’lerin sonundaki monolitik grafik yongalarının torunlarıdır. Bu yongalar, sprite şeklinde sınırlı BitBLT desteğine sahipti. Ayrıca genellikle grafik ve şekil çizme desteği yoktu.
Bazı GPU’lar bir görüntüleme listesinde çeşitli işlemler gerçekleştirebilir ve ana bilgisayar işlemcisindeki yükü azaltmak için DMA’yı kullanabilir. Bunun ilk örneği Atari 800 ve Atari 5200’dür. Atari firmasından kullanılan ANTIC Yardımcı İşlemcidir.
80’lerin sonuna ve 90’ların başına doğru, yüksek hızlı genel amaçlı mikroişlemciler en gelişmiş GPU’ları uygulamak için çok popülerdi.
PC’ler ve İş İstasyonları için birçok grafik kartı, hızlı çizim işlevlerini uygulamak için Texas Instruments’ın TMS340 serisi gibi Dijital Sinyal İşlemcileri (DSP) kullandı. Ve birçok lazer yazıcıda bir PostScript görüntü tarama işlemcisi AMD 29000 gibi bir RISC işlemcide çalışan özel bir GPU kasası içeriyordu.
Yarı iletken işleme teknolojisi geliştikçe, çizim işlevlerini ve BitBLT’leri aynı panoya ve daha sonra VGA gibi bir çerçeve tampon denetleyicisiyle aynı çipe taşımak mümkün oldu.
Bu ince 2D grafik hızlandırıcıları mikroişlemci tabanlı olanlar kadar esnek değildi. Ancak üretimi ve satışı çok daha kolaydı. Commodore AMIGA, bir blitter ünitesi içeren ilk seri üretim bilgisayardı. Artı, IBM 8514 grafik sistemi, Donanımda 2B ilkelleri uygulayan ilk PC video kartlarından biriydi.
CPU ile GPU Arasındaki Fark Nedir?
CPU‘yu genel bir bilgisayarda GPU ile değiştirmek mümkün olmasa da, bugün GPU’lar çok güçlüdür. Hatta eski bir CPU’nun saat frekansını bile aşabilir.
Ancak GPU’ların gücü ve son gelişmelerdeki dramatik hızları iki farklı faktörden kaynaklanıyor. İlk faktör GPU’ların yüksek uzmanlaşmasıdır. Çünkü tek bir görevi yerine getirmek için tasarlandığından, bu görevi daha verimli bir şekilde yerine getirmek için tasarımında daha fazla silikon ayırmak mümkündür. Örneğin, mevcut GPU’lar, 3B grafiklerde baskın olan kayan nokta değerleriyle hesaplama için optimize edilmiştir.
Öte yandan, birçok grafik uygulaması temel hesaplama birimleri tamamen bağımsız olduğu için yüksek derecede doğal bir paralellik taşır.
Bu nedenle, aynı anda daha fazla hesaplamayı tamamlamak için GPU’lara kaba kuvvet uygulamak iyi bir stratejidir. Mevcut GPU modellerinde tipik olarak yarım düzine köşe işlemcisi ve iki ila üç kat daha fazla parça veya piksel işlemcisi bulunur. Bu şekilde, CPU’lar tarafından sunulanlara kıyasla çok düşük olan yaklaşık 600-800MHz’lik bir saat frekansı, paralel mimarisi sayesinde çok daha büyük hesaplama gücüne dönüştürülür.
CPU ile en büyük farklılıklardan biri mimarisinde yatmaktadır. Von Neumann mimarisine sahip çekirdek işlemcinin aksine, GPU Sirkülasyon Modeline dayanmaktadır. Bu model paralel işlemeyi ve GPU’nun görevleri için sahip olduğu büyük segmentasyonu kolaylaştırır.
GPU Mimarisi Nedir?
Bir GPU, çok sayıda işlevsel birime sahip olduğunu gösteren oldukça bölümlere ayrılmıştır. Bu fonksiyonel birimler temel olarak köşeleri işleyen ve pikselleri işleyen ikiye ayrılabilir. Bu nedenle, tepe noktası ve piksel, GPU’nun işlediği ana birimler olarak oluşturulur.
Buna ek olarak ve en önemlisi Rapor’dur. Hızıyla dikkat çekiyor ve operasyonların ve kullanılan dokuların ara sonuçlarının depolanmasında ilgili bir rol oynuyor.
Başlangıçta, GPU CPU’dan vertices/köşeler şeklinde bilgi alır. Bu köşelerin aldığı ilk tedavi tepe gölgeleyicisinde gerçekleştirilir. Burada şekillerin dönüşü veya hareketi gibi dönüşümler yapılır. Bundan sonra, bu köşe noktalarının görüntülenecek kısmı (kırpma) tanımlanır ve köşe noktaları rasterleştirme işlemi ile piksele dönüştürülür. Bu aşamaların GPU için ilgili bir yükü yoktur.
Grafik yongasının ana darboğazının bulunduğu yer, bir sonraki adımda piksel gölgelendiricisidir. Burada doku uygulamak gibi piksel dönüşümleri gerçekleştirilir. Tüm bunlar yapıldığında ve pikselleri önbellekte saklamadan önce, antialiasing (kenar yumuşatma), blending (karıştırma) ve fog (sis) gibi bazı efektler uygulanır.
Önbellekte saklanan bilgileri almak ve pikselleri görüntüleme için hazırlamak için ROP adı verilen diğer fonksiyonel birimler, bazı efektler uygulayabilirler. Bundan sonra, çıktı çerçeve tamponunda saklanır.
Artık bu pikselleri dijital bir monitörde gösterilmek üzere doğrudan alan iki seçenek var veya analog monitörler için onlardan bir analog sinyal üretiyorlar. İkinci durumda ise, nihayet Ekranda gösterilmek için bir DAC, Digital-Analog Converter (Dijital-Analog Dönüştürücü)’dan geçmeleri gerekir.
Programlama
Başlangıçta, GPU programlama BIOS kesme servislerine yapılan çağrılarla yapıldı. Bundan sonra, GPU’nun programlanması her modele özgü montaj dilinde yapılmaya başladı.
Daha sonra, piyasadaki mevcut modeller için daha homojen bir dil sağlayan API’ler (Application Program Interface/Uygulama Programı Arayüzü) tasarlayan Donanım ve Yazılım arasına bir seviye daha eklenmiştir. İlk yaygın olarak kullanılan API OpenGL (Open Graphics Language/Açık Grafik Dili) idi ve ardından Microsoft DirectX geliştirdi.
API’lerin geliştirilmesinden sonra, daha doğal bir dil ve programcıya daha yakın, yani grafikler için üst düzey bir dil geliştirilmesine karar verildi. Bu nedenle, OpenGL ve DirectX bu teklifleri ortaya çıkardı. OpenGL kütüphanesi ile ilişkili üst düzey standart dil, prensip olarak tüm üreticiler tarafından uygulanan “OpenGL Shading Language/OpenGL Gölgeleme Dili”, GLSL’dir.
Kaliforniya şirketi NVIDIA, verimlilik testlerinde GLSL’den daha iyi sonuçlarla Cg adlı tescilli bir dil yarattı. NVIDIA ile işbirliği içinde Microsoft, “High-Level Shading Language/Yüksek Seviye Gölgelendirme Dili” HLSL’yi Cg ile hemen hemen aynı, ancak bazı küçük uyumsuzluklarla geliştirdi.