Neden FPGA? İşe Göre Kendini Yeniden Şekillendiren Çip

/ Bekir Yufka / FPGA/ASIC Tasarım Mühendisi
#FPGA#Multi-Vendor#RTL#Yarıiletken

Bir radar sistemi, bir 5G baz istasyonu ya da milyonda bir saniyelik dilimlerde tepki vermesi gereken bir işlem motoru tasarladığınızı düşünün. Üçü de, gecikmeye hiç yer bırakmadan devasa miktarda veriyi işlemek zorunda. Elinizde temelde üç silikon seçeneği var: genel amaçlı bir CPU, küçük bir mikrodenetleyici ya da doğrudan bu iş için tasarlanmış bir şey bir FPGA.

Bir FPGA (Field-Programmable Gate Array Sahada Programlanabilir Kapı Dizisi), boş olarak gelir. Sabit bir donanım üzerinde çalışan yazılım yerine, donanımın kendisini yapılandırırsınız onu devre seviyesinde, tam olarak uygulamanızın ihtiyaç duyduğu makineye dönüştürecek şekilde kablolarsınız. Sonuçtan memnun kalmadınız mı, ya da uygulama gelecek yıl değişti mi? Yeniden yapılandırırsınız. Özel bir silikona hiç taahhüt etmeden, özel bir silikonun sonuçlarını elde edersiniz.

Peki CPU mu, FPGA mı, Yoksa Mikrodenetleyici mi?

Bu yongalardan hiçbiri her konuda kazanmaz, ve asıl mesele de bu: her biri, başka bir konuda üstün olabilmek için bir şeyden vazgeçer. İşte basit bir puan tablosu her satırda en iyi seçeneğe 3 puan, ortadakine 2 puan, en düşüğe 1 puan:

CPU, FPGA ve Mikrodenetleyiciyi determinizm, uygulama esnekliği, yeniden kullanılabilirlik, geliştirme süresi ve silikon maliyeti açısından karşılaştıran puan tablosu CPU, FPGA ve Mikrodenetleyiciyi determinizm, uygulama esnekliği, yeniden kullanılabilirlik, geliştirme süresi ve silikon maliyeti açısından karşılaştıran puan tablosu

Bir CPU için geliştirme yapmak en kolay ve en hızlısıdır, bir mikrodenetleyiciyi ürüne koymak ise en ucuzudur ama ikisi de ne nanosaniye seviyesinde determinizm sağlar, ne de üretildikten sonra donanımın kendisini yeniden şekillendirmenize izin verir. FPGA’nın alanı tam olarak burasıdır: daha fazla silikona mal olur ve tasarlanması daha uzun sürer, ama aynı yongayı birbirinden tamamen farklı uygulamalarda yeniden kullanırken donanım seviyesinde zamanlama garantilerini tutturmanızı sağlayan başka hiçbir şey yoktur.

FPGA’lar Gerçekte Nerelerde Karşımıza Çıkıyor

  • 5G ve kablosuz altyapı devasa anten dizilerinde, radyo hızında gerçek zamanlı beamforming ve protokol işleme.
  • Radar ve sensör sinyal işleme ham sensör verisini, sonucun hâlâ bir anlam ifade edeceği hızda filtreleme ve ilişkilendirme.
  • Yüksek frekanslı işlem (trading) nanosaniyelerle ölçülen karar döngüleri; burada genel amaçlı bir CPU’nun jitter’ı bile tek başına paraya mal olabilir.
  • Video ve görüntü işleme bulutta değil, edge’de çalışan gerçek zamanlı kodlama, kod çözme ve görüntü işleme hatları.
  • Yapay zekâ çıkarım (inference) hızlandırma sabit bir model için, watt başına gecikme konusunda genel amaçlı GPU’ları geride bırakabilen, özel ve düşük güçlü çıkarım hatları.
  • Havacılık ve savunma sistemleri sahaya konuşlandırıldıktan yıllar sonra bile yeniden yapılandırılabilir olması gereken görev donanımı.

Bir FPGA Bunu Gerçekte Nasıl Başarıyor?

Bütün bunların altında, bir FPGA; devasa, tamamen programlanabilir bir yönlendirme dokusu üzerinden birbirine bağlanmış binlerce küçük, yeniden yapılandırılabilir mantık hücresinden inşa edilir. Bir CPU’nun yaptığı gibi komutları tek tek çalıştırmak yerine, bir FPGA tüm algoritmanızı fiziksel, paralel bir donanım olarak yerleştirir her parça, her saat çevriminde, aynı anda kendi işini yapar.

Bir CPU'nun donanımının ne kadarının üretimde sabitlendiğini (yaklaşık %90-95) bir FPGA'nınkiyle (yaklaşık %5-10) karşılaştıran çubuk grafik   FPGA'nın geri kalanı esnek LUT ve yönlendirme dokusudur Bir CPU'nun donanımının ne kadarının üretimde sabitlendiğini (yaklaşık %90-95) bir FPGA'nınkiyle (yaklaşık %5-10) karşılaştıran çubuk grafik   FPGA'nın geri kalanı esnek LUT ve yönlendirme dokusudur

O dokunun içine serpiştirilmiş halde, matematik işlemleri için yüzlerce sabit kablolanmış DSP bloğu ve çip üzerinde bellek için BRAM bloğu bulunur. Yongaya yayılmış bu kadar çok sayıda bulunabildikleri için, bir FPGA aynı anda yüzlerce çarpma-toplama işlemini ve bellek erişimini yürütebilir bunlar daha hızlı komutlar değil, gerçek anlamda paralel işlemlerdir. Asıl marifet de bu: bir FPGA daha hızlı bir CPU değildir. Tamamen farklı bir hesaplama biçimidir size verilen işe özel olarak, donanımda inşa edilmiştir.

Bazı önemli FPGA elemanları:

LUT: Tamamen kendi başlarına özel fonksiyonlar gerçekleştirebilen küçük hücreler.

Yönlendirme Matrisi: FPGA’ların asıl sihri. Bu elemanlar, hangi hücrenin hangisine bağlanacağını belirler.

Blok Bellek (BRAM): Esnek bir şekilde kullanılabilen, küçük miktarda bellek elemanı.

DSP: LUT ve yönlendirmeye mal olmadan çarpma ve toplama işlemi gerçekleştirebilen eleman.

O esnek dilime yakınlaşırsanız, işi gerçekten yapan yalnızca iki şey görürsünüz: LUT’lar ve yönlendirme. Bir LUT, belirli bir girdi kümesi için ihtiyacınız olan herhangi bir mantıksal sonucu üretecek şekilde yapılandırılabilen küçük bir bellek parçasıdır o belleği yeniden programlayın, aynı silikon parçası farklı bir mantık fonksiyonu haline gelsin.

Vurgulanan bir alt kümenin yapılandırılıp yönlendirme yoluyla birbirine bağlanarak tek bir özel sinyal yoluna dönüştüğü, geri kalanının ise kullanılmadan başka mantık için serbest kaldığı bir LUT ızgarası Vurgulanan bir alt kümenin yapılandırılıp yönlendirme yoluyla birbirine bağlanarak tek bir özel sinyal yoluna dönüştüğü, geri kalanının ise kullanılmadan başka mantık için serbest kaldığı bir LUT ızgarası

Yönlendirme, bu binlerce küçük, yapılandırılabilir parçayı tek, tutarlı bir devreye dönüştüren şeydir: herhangi bir LUT’u, tasarımınızın gerektirdiği herhangi bir düzende diğerine bağlayabilen, yoğun bir programlanabilir kablo ve anahtar ağı. İkisini bir araya getirdiğinizde yonga yalnızca hızlı olmaz şekillenmiş olur. Uygulamanızı genel silikon üzerinde genel komutlar olarak çalışmaya zorlamak yerine, donanımın kendisi, kapı seviyesine kadar, uygulamanızın ihtiyaç duyduğu belirli devreye yeniden kablolanır.

Yapay Zekâ Çağında FPGA’lar

Son birkaç yılda bir şey değişti ve bu, yukarıdaki her şeyi daha da ilgili hale getirdi, daha az değil: puan tablosundaki “tasarlanması daha uzun sürer” satırı, sessizce kısalıyor. Yapay zekâ destekli tasarım araçları, FPGA geliştirmeyi bir uzmanlık işi haline getiren kısımları eritiyor bir zamanlar dikkatli, hataya açık bir haftalık elle kodlamayı gerektiren RTL, artık bir öğleden sonrada çalışan bir ilk taslağa dönüşebiliyor; tasarımın kendisi kadar takvime mal olan doğrulama ortamları, sürücü kodu ve dokümantasyon ise artık aynı oturumda üretip gözden geçirip düzeltebildiğiniz şeyler haline geldi.

Bunu “yapay zekâ donanımı daha az önemli kılıyor” şeklinde okumak cazip gelebilir yeterince akıllı yazılım olunca, altındaki yonganın önemi zamanla ortadan kalkar gibi. Ama öyle değil, çünkü yapay zekânın sıkıştırdığı şey tasarım süresi, fizik değil. Bir CPU hâlâ tek bir komut akışını sabit bir hat (pipeline) üzerinden çalıştırır; bir GPU hâlâ güç bütçesinin bir kısmını, gerçek hesaplamanızla hiçbir ilgisi olmayan zamanlama ve bellek taşıma işlemlerinde harcar. Hiçbir model, sabit bir genel amaçlı silikon parçasının, sabit bir güç bütçesiyle bir nanosaniyede fiziksel olarak neyi yapabileceğini değiştirmez. Özel amaçlı bir FPGA’yı zahmete değer kılan donanım tavanı gerçek paralellik, deterministik zamanlama, genel amaçlı silikonun asla yakalayamayacağı bir işlem başına güç rakamı yerinden oynamadı.

Yapay zekâ destekli araçlar sayesinde zamanla azalan FPGA tasarım eforunu gösteren bir çizgi grafiği; düz bir çizgi ise fizik tarafından belirlenen donanım performans tavanını işaret eder, aralarındaki açılan fark ise akıllı FPGA kullanımının kazandırdığı yer olarak etiketlenmiştir Yapay zekâ destekli araçlar sayesinde zamanla azalan FPGA tasarım eforunu gösteren bir çizgi grafiği; düz bir çizgi ise fizik tarafından belirlenen donanım performans tavanını işaret eder, aralarındaki açılan fark ise akıllı FPGA kullanımının kazandırdığı yer olarak etiketlenmiştir

İkisini bir araya getirdiğinizde dengesiz bir kayma elde edersiniz: FPGA’nın geleneksel maliyeti tasarım süresi düşüyor, geleneksel faydası ise donanım seviyesinde performans hiç değişmedi. Bu da, bir iş yükünün genel amaçlı silikon üzerinde bir yazılım katmanı daha eklemek yerine gerçekten özel, paralel donanıma ihtiyaç duyup duymadığını bilmeyi, daha az değil, daha da değerli kılıyor. Bu aynı zamanda yazının başında açılan bir döngüyü de kapatıyor: yapay zekâ çıkarımı (inference), tam olarak bir FPGA’nın hızlandırmak için tasarlandığı türden, sabit, gecikmeye ve güce duyarlı bir iş yüküdür. FPGA’ları tasarlamayı hızlandıran aynı dalga, onları tasarlamaya değer iş yüklerini de daha fazla üretiyor.

Bu makaleyi paylaş: