GPU Nedir, Ne İşe Yarar?

Hızlı Bakış

GPU, grafik hesaplamalarını paralel işlem birimleriyle hızlandıran ve CPU'nun yükünü hafifleten özel bir işlemcidir. Bu çip, köşe gölgelendiricide üçgenlerin konumunu ve dönüşümünü hesaplıyor. Piksel gölgelendirici ise her piksele doku ve aydınlatma efektlerini uyguluyor. Raster işlem hattı, vektör verisini ekran çözünürlüğüne uygun noktalara dönüştürüyor. Binlerce çekirdek, bu işlemleri eş zamanlı yürütüyor. Bu sayede saniyede 60 kare hızında gerçek zamanlı ışık yansımaları ve kenar yumuşatma mümkün oluyor.

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 Tanımı ve Mimarisi

GPU (Grafik İşlem Birimi) Nedir?

Grafikler çoğunlukla GPU’da işlenir. Bu sırada CPU diğer hesaplamaları yapabilir. GPU, grafik işleme için optimize edilmiş ilkel yöntemleri uygular.

Örneğin, 3D grafiklerde kenar yumuşatma kullanılır. Böylece şekiller daha gerçekçi görünür.

Ayrıca dikdörtgen, üçgen, daire ve yay çizme ilkelleri vardır. GPU’lar günümüzde efektlerde daha gerçekçiliğe sahiptir.

Tarihi

Modern GPU’lar 1970 ve 1980’lerin 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 görüntüleme listesinde çeşitli işlemler yapabilir. Böylece ana bilgisayar yükünü azaltmak için DMA kullanılır. Bunun ilk örneği Atari 800 ve 5200’dür. Atari ANTIC yardımcı işlemciyi kullanmıştır.

1980’lerin sonu ve 1990’ların başında yüksek hızlı mikroişlemciler popülerdi. Bu mikroişlemciler en gelişmiş GPU’ları çalıştırmak için uygundu.

PC ve iş istasyonları için birçok grafik kartı DSP kullandı. Örneğin Texas Instruments TMS340 serisi hızlı çizim işlevlerini uyguladı. Ayrıca lazer yazıcılar AMD 29000 RISC işlemcide özel GPU kasası içeriyordu.

Yarı iletken teknolojisi geliştikçe çizim ve BitBLT işlevleri aynı çipe taşındı. Örneğin VGA gibi çerçeve tampon denetleyicisi ile aynı panoya entegre edildi.

Bu ince 2D hızlandırıcılar mikroişlemci tabanlı olanlar kadar esnek değildi. Ancak üretimi ve satışı daha kolaydı.

Commodore AMIGA, blitter ünitesi içeren ilk seri üretim bilgisayardı. Ayrıca IBM 8514 grafik sistemi, donanımda 2D ilkelleri uygulayan ilk PC video kartlarından biriydi.

CPU ile GPU Arasındaki Fark Nedir?

CPU‘yu GPU ile değiştirmek mümkün değildir. Ancak, günümüzde GPU’lar çok güçlüdür. Hatta bazı GPU’lar eski CPU’ları bile geçebilir.

GPU gücü iki faktörden gelir. İlk faktör, GPU’nun yüksek uzmanlaşmasıdır. Çünkü tek görev için tasarlanmıştır.

Bu sayede görev daha verimli gerçekleştirilir. Örneğin, GPU’lar 3D grafiklerde kayan nokta hesaplamalarına optimize edilmiştir.

Öte yandan, grafik uygulamaları yüksek paralellik taşır. Çünkü temel hesaplama birimleri tamamen bağımsızdır.

Bu nedenle, GPU’lara daha fazla iş yüklemek stratejiktir. Mevcut GPU’lar yarım düzine köşe işlemcisine sahiptir.

Ayrıca, iki ila üç kat piksel işlemcisi bulunur. Böylece düşük saat frekansı paralel işlemle yüksek güce dönüşür.

CPU ve GPU arasındaki mimari fark büyüktür. CPU Von Neumann mimarisine sahiptir. Ancak GPU Sirkülasyon Modeline dayalıdır.

Bu model paralel işlemeyi kolaylaştırır. Ayrıca GPU’nun görevleri için büyük segmentasyon sağlar.

GPU Mimarisi Nedir?

Bir GPU birçok işlevsel birime ayrılmıştır. Bu birimler köşe ve piksel işleyenlerdir. Böylece tepe noktası ve piksel ana birimler olur.

Buna ek olarak ROP en önemlidir. Hızı yüksektir ve ara sonuçları depolar.

Başlangıçta GPU, CPU’dan köşe bilgisi alır. Bu köşeler tepe gölgeleyicide işlenir. Burada şekil dönüşümleri veya hareketler yapılır. Sonra köşe noktaları kırpılır ve rasterleştirilir. Bu aşamalar GPU’ya fazla yük getirmez.

Ana darboğaz piksel gölgelendiricisindedir. Burada doku ve diğer piksel dönüşümleri uygulanır. Ayrıca antialiasing, blending ve fog gibi efektler eklenir.

ROP, pikselleri hazırlamak ve efekt uygulamak için çalışır. Sonra çıktı çerçeve tamponuna gönderilir.

Artık pikseller dijital monitörde görüntülenebilir. Veya analog monitör için analog sinyal üretilir. İkinci durumda DAC üzerinden geçerek ekranda gösterilir.

Programlama

Başlangıçta GPU programlama BIOS kesme çağrılarıyla yapılırdı. Daha sonra GPU programlaması her modele özgü montaj dilinde gerçekleşti.

Sonra, API’ler geliştirildi ve daha homojen bir dil sağlandı. İlk yaygın API OpenGL idi. Ardından Microsoft DirectX ortaya çıktı.

API geliştirmeden sonra üst düzey bir dil kararlaştırıldı. Böylece programcıya daha yakın, grafikler için bir dil oluşturuldu.

OpenGL ve DirectX bu teklifleri destekledi. OpenGL kütüphanesiyle birlikte üst düzey standart dil GLSL uygulanır.

Kaliforniya şirketi NVIDIA, Cg adında tescilli bir dil yarattı. Cg, GLSL’den daha iyi performans sağladı. Ayrıca Microsoft, HLSL’yi Cg ile uyumlu şekilde geliştirdi.

Grafik İşlemciler Hakkında SSS

Bir grafik işlemcisi neden merkezi işlemciden bu kadar farklı bir mimari kullanır?

Aradaki fark tamamen görev tanımından gelir. Merkezi işlemci sıralı ve dallanmalı işlerde ustadır. Grafik işlemci ise milyarlarca pikseli aynı anda yoğurtmak zorundadır.
Neticede Von Neumann mimarisi yerine Sirkülasyon Modeline yaslanır. Bu model paralelliği kutsar. Bağımsız veri yığınları tek bir saat darbesinde işlenir.
Böylece çekirdek hızı düşük görünse dahi toplam güç tavan yapar. Sekiz piksel gölgelendiricisi aynı göreve saldırır. Sonuç ortaya saniyeler içinde kusursuz bir kare olarak dökülür.

Atari 800 gibi antika cihazlardaki yardımcı çipler günümüz canavarlarının atası sayılır mı?

Kesinlikle sayılır, kökler oradadır. Atari’nin ANTIC yardımcı işlemcisi ana işlemcinin yükünü hafifletirdi. DMA kullanarak görüntü listelerini işlerdi.
Zira asıl mantık hep aynı kaldı. Ana bilgisayar rahat etmeli, grafik işleri özel birime havale edilmeli. Commodore Amiga’nın blitter ünitesi de aynı stratejiyi izledi.
Açıkçası o dönemin sınırlı BitBLT desteği bugünkü devasa ROP birimlerinin dedesidir. Aradaki fark yarı iletken teknolojisinin kat ettiği yoldur. Yoksa soy ağacı epey sağlamdır.

GPU programlama işi montaj dilinden sonra nasıl bu kadar kolaylaştı?

İlk başlarda BIOS kesme çağrılarıyla cebelleşmek tam bir işkenceydi. Daha sonra modele özel montaj dilleri kullanıldı. Bu durum taşınabilirliği sıfırlıyordu.
Neyse ki OpenGL imdada yetişti. Sonra DirectX standart bir API çerçevesi çizdi. Geliştiriciler donanım tipini dert etmeden kod yazmaya başladı.
Derken işler iyice tatlıya bağlandı. GLSL ve HLSL gibi üst düzey gölgelendirici dilleri ortaya çıktı. NVIDIA’nın Cg hamlesiyle performans da zirve yaptı.

Piksel gölgelendirici neden render sürecinin en şişkin karnıdır?

Düşünsenize, her piksele doku kaplamak ve aydınlatma uygulamak zorundasınız. Bu işlem milyonlarca kez tekrarlanır. Dolayısıyla boru hattı tam bu noktada tıkanır.
Köşe işleme ve rasterleştirme aşamaları nispeten hafiftir. Ancak piksel gölgelendiriciye sıra geldiğinde hesap yükü patlar. Antialiasing, sis ve karışım efektleri de burada zincire eklenir.
Üstelik modern oyunlarda her karede yüzlerce doku kullanılır. Bellek bant genişliği yetişemezse kare hızı düşer. Bu yüzden en güçlü çiplerde bile piksel birimleri parmakla gösterilir.

Grafik yongası saat hızı düşükken masaüstü işlemcisini nasıl gölgede bırakır?

Sır paralel işlemede gizlidir. Masaüstü işlemcisi aynı anda bir avuç iş parçacığı yönetir. Bu çip ise yarım düzine köşe birimine ve kat kat piksel işlemcisine komut verir.
Şöyle ki temel hesaplama birimleri tamamen bağımsızdır. Hiçbiri diğerinin sonucunu beklemez. Bu özgürlük düşük saat hızını korkunç bir toplam güce dönüştürür.
Buna rağmen CPU’nun yerini asla alamaz. Çünkü dallanma tahmini gibi konularda sınıfta kalır. Yalnızca kayan nokta hesaplamalarında aslan kesilir.

Eski VGA hızlandırıcılar ile modern çipler arasındaki en büyük kırılma anı neydi?

En büyük kopuş 2D hızlandırıcıların sabit fonksiyon zincirini kırmasıdır. İlk VGA çipleri sadece çerçeve tamponunu yönetirdi. Daha sonra 2D ilkeller donanıma taşındı.
Fakat asıl devrim programlanabilir gölgelendiricilerle geldi. Artık her piksel ve köşe serbest kodla manipüle edilebilir hale geldi. Bu, görselliğin önündeki duvarı yıktı.
Nihayetinde eski esnek olmayan hızlandırıcılar basit tampon yöneticileriydi. Günümüzün mimarisi ise binlerce çekirdeğe sahip dev bir süper bilgisayar mantığındadır. Aradaki makas işte bu kadar açıktır.

Bu Rehberi Keşfettikleri İçin Sana Teşekkür Edecekler!

Sadece bir tıkla sevdiklerine dev bir iyilik yapmaya hazır mısın? Bilgi paylaştıkça devleşir.

İlk yorumu sen paylaş