Gerçekten bu kadar çok xPU'ya ihtiyacımız var mı?

Güncelleme: 17 Kasım 2021

"Son yıllarda neredeyse her gün yeni işlemci mimarileriyle ilgili duyurular üç harfli kısaltmalarla – TPU, IPU, NPU – yayınlanıyor. Peki onları gerçekten ayıran şey nedir? Gerçekten bu kadar çok benzersiz işlemci mimarisi var mı, yoksa başka bir şey mi oldu?

"

Son yıllarda neredeyse her gün yeni işlemci mimarileri ile ilgili duyurular yapılıyor ve üç harfli kısaltmalara -TPU, IPU, NPU- veriliyor. Peki onları gerçekten ayıran şey nedir? Gerçekten bu kadar çok benzersiz işlemci mimarisi var mı, yoksa başka bir şey mi oldu?

2018 yılında John L. Hennessy ve David A. Patterson, “Bilgisayar Mimarisinin Yeni Altın Çağı” başlıklı bir Turing dersi verdiler. CPU ve onun gelişimi konusunda endişe duyuyorlar ancak bu, tüm denklemin yalnızca küçük bir kısmı. Arteris IP araştırmacısı ve sistem mimarı Michael Frank şunları söyledi: "CPU açısından bakıldığında bu xPU'ların çoğu gerçek işlemciler değil." “Bunlar daha çok özel iş yükleri için bir hızlandırıcı olan GPU'ya benziyor. Ve içlerinde çok fazla çeşitlilik var. Makine öğrenimi bir tür işlemcidir, bunlara toplu olarak makine öğrenimi hızlandırıcıları diyebilirsiniz, ancak çeşitli süreçlerin işleme kısmını hızlandırırlar.”

İşlemcinin özü üç şeye indirgenebilir. Xilinx çip pazarlama direktörü Manuel Uhm, "Son analizde talimat seti mimarisine (ISA) geri dönüyor" dedi. “Bu ne yapmak istediğinizi tanımlar. Daha sonra ISA'yı ve gerçekleştirmeye çalıştığı görevleri destekleyen G/Ç ve belleğe sahipsiniz. Bu gelecekte çok ilginç bir dönem olacak çünkü son iki veya üç yıla göre daha fazla yenilik ve değişimin zamanı göreceğiz.”

Birçok yeni mimari tek işlemcili değildir. Cadence Grup Direktörü Pierre-Xavier Thomas, "Gördüğümüz şey, aynı SoC veya aynı sistemde bulunan farklı tipte işlemcilerin veya programlanabilir motorların bir kombinasyonudur" dedi. Teknoloji ve Stratejik Pazarlama. “Yazılım görevlerini farklı donanımlara veya esnek programlanabilir motorlara dağıtın. Tüm işlemciler ortak bir API'yi paylaşabilir ancak yürütme alanı farklı olacaktır. Burada gerçekten de farklı özelliklere sahip farklı işleme türlerini göreceksiniz.”

Gerçek şu ki isimlerin çoğu pazarlama amaçlıdır.

Imperas Software CEO'su Simon Davidmann, "Mesele şu ki, insanlar bu isimleri ve kısaltmaları iki farklı amaç için kullanıyor" dedi. “Biri, SIMD (Tek Talimatlı Çoklu Veri) gibi işlemcinin mimarisini açıklamak için kullanılır. Diğeri ise hitap ettiği uygulama segmentini tanımlar. Böylece işlemci mimarisini veya tensör işlem birimi (TPU) Marka adları gibi bir şeyi tanımlayabilir. Bireysel işlemcilere değil, heterojen veya homojen mimarilerine isim veriyorlar.”

Biraz tarih

Kırk yıl önce her şey çok daha basitti. O zamanlar merkezi bir işlem birimi (CPU) vardı ve bunun birçok çeşidi vardı, ancak bunların hepsi temelde von Neumann mimarisine sahip Turing-complete işlemcilerdi. Her birinin, onları belirli görevler için daha verimli kılan farklı bir komut seti vardır ve karmaşık komut setinin (CISC) ve azaltılmış komut setinin (RISC) göreceli avantajları hakkında birçok tartışma vardır.

RISC-V'nin ortaya çıkışı ISA'ya büyük ilgi gösterdi. Xilinx'ten Uhm, "İnsanlar ISA'yı anlamak istiyor çünkü işlemcinin tanımlanmış görevler için ne kadar optimize edildiğini tanımlayan ISA'dır" dedi. "ISA'ya bakıp hesaplama döngüsünü başlatabilirler. Bir ISA'nın yerel talimatları varsa ve 1 GHz'de çalışıyorsa, onu başka bir işlemci ISA'sıyla karşılaştırabilirim; bu, aynı işlev için iki talimat gerektirebilir ancak işlemci 1.5 GHz'de çalışır. Hangisi beni daha ileri götürür? Önemli işlevler için matematiksel hesaplamalar yapıyorlar.”

CPU'lar için birden fazla paketleme yöntemi vardır. Bazen IO veya bellek aynı pakete yerleştirilir. Bunlara mikrodenetleyici birimleri (MCU'lar) denir.

Modemlerin popüler hale gelmesiyle dijital sinyal işlemcileri (DSP) ortaya çıktı ve farkları Harvard mimarisini kullanmalarıydı. Bu, komut veriyolunu veri yolundan ayırır. Bazıları veri işlemeyi daha verimli hale getirmek için SIMD mimarisini de uyguladı.

Talimatların ve verilerin ayrılması, verimi artırmak içindir; ancak bu, kendi kendine yazılan programlar gibi yapılabilecek bazı ileri programlamaları sınırlandırır. Uhm, "Genellikle sınır koşulları hesaplama değildir" dedi. “Giriş/çıkış veya bellek giderek artıyor. Sektör, bilgi işlem gücünü artırmaktan, bilgi işlem gücünü ve performansı sürdürmek için yeterli verinin olmasını sağlamaya doğru geçiş yapıyor."

Tek bir işlemci artık daha hızlı hale gelmediğinde, birden fazla işlemciyi birbirine bağlarlar. Bu işlemciler genellikle belleği paylaşır ve her işlemci ve tüm işlemci kümesi için Turing bütünlüğü kavramını korur. Programın herhangi bir bölümünün hangi çekirdekte yürütüldüğü önemli değildir çünkü sonuç aynıdır.

Bir sonraki büyük gelişme, her işlem elemanının veya boru hattının kendi belleğine sahip olması ve işlemcinin dışında adreslenememesi nedeniyle geleneği bozan grafik işlem birimidir (GPU). Belleğin sınırlı olması, herhangi bir rastgele işlem görevini yerine getiremeyeceği, yalnızca sağlanan bellek alanına yerleştirilebilecek görevleri gerçekleştirebileceği anlamına gelir.

Uhm, "Belirli işlev türleri için GPU'lar çok güçlü işlemcilerdir, ancak işlem hatları çok uzundur" diye belirtiyor. "Bu boru hatları GPU ünitesinin verileri sürekli olarak işlemesine olanak tanıyor, ancak bir noktada boru hattını yenilemek zorunda kalırsanız bu büyük bir darbe olacaktır. Sistemde çok fazla gecikme ve belirsizlik var."

Pek çok başka hızlandırıcı tanımlanmış olmasına rağmen, GPU'lar ve daha sonra genel amaçlı GPU'lar (GPGPU'lar), kullanımlarını önceki hızlandırıcılara göre daha kolay hale getiren bir programlama paradigması ve yazılım yığını tanımladı. Imperas'tan Davidmann, "Uzun yıllardır belirli işler uzmanlaşmıştır" dedi. “Sıralı programlar için bir CPU var. Verilerin işlenmesine odaklanan bir grafik işlemcisi var. Ekran ve bizi son derece paralel bir dünyaya getiriyor. Görevleri gerçekleştirmek için birçok küçük işlem öğesini kullanır. Artık makine öğrenimi görevleri var.”

Başka hangi inşaat kuralları tüm yeni mimariyi açıklayabilir? Geçmişte, işlemci dizileri genellikle bellekle veya sabit ağ topolojileriyle (mesh veya ring gibi) bağlanıyordu. Yakın zamanda ortaya çıkan şey, dağıtılmış heterojen işlemcilerin daha esnek bir şekilde iletişim kurmasını sağlayan Network on Chip (NoC) kombinasyonudur. Gelecekte hafıza kullanmadan da iletişim kurabilecekler.

Arteris'ten Frank, "Şu anda NoC yalnızca veri taşıyor" dedi. "Gelecekte NoC, hızlandırıcılar arasındaki iletişimin verilerin ötesine geçtiği diğer alanlara genişletilebilir. Komutlar, bildirimler vb. gönderebilir. Hızlandırıcı dizisinin iletişim gereksinimleri, CPU'nun veya standart SoC'nin iletişim gereksinimlerinden farklı olabilir. Ancak çip üzerindeki ağ sizi bir alt kümeyle sınırlamayacaktır. Hızlandırıcıların özel iletişim ihtiyaçlarını destekleyerek performansı optimize edebilir ve artırabilirsiniz.”

uygulama mimarisi

İşlemci farklılaştırmanın bir yolu, belirli bir işletim ortamı için optimizasyon yapmaktır. Örneğin yazılım bulutta çalışabilir ancak aynı yazılımı mikro IoT cihazında da çalıştırabilirsiniz. Uygulama mimarisi çok farklı olacak ve performans, güç tüketimi, maliyet veya aşırı koşullar altında çalışabilme yeteneği açısından farklı çalışma noktalarına ulaşacak.

Cadence'den Thomas, "Bazı uygulamalar bulut bilişime yöneliktir ve şimdi onları uç noktaya yaklaştırıyoruz" dedi. "Bunun nedeni, farklı türde bir mimari gerektiren gecikme gereksinimleri veya enerji veya güç tüketimi olabilir. İki konumda çalışabilmek için tam olarak aynı yazılım yığınına sahip olmak isteyebilirsiniz. Bulutun esneklik sağlaması gerekiyor çünkü farklı türdeki uygulamaları alacak ve çok sayıda kullanıcıyı bir araya getirebilmelidir. Bu, sunucudaki donanımın uygulamaya özel yeteneklere sahip olmasını gerektiriyor ancak tek boyut herkes için uygun değil."

ML kendi gereksinimlerini artırdı. Thomas, "Akıllı sistemler oluşturmak için sinir ağlarını ve makine öğrenimini kullanırken, yeni ağı programlamak ve onu donanımla eşlemek için yazılım çerçevelerini ve genel yazılım yığınlarını kullanmanız gerekir" diye ekledi. “Ardından yazılım uygulamasını PPA perspektifinden doğru donanıma uyarlayabilirsiniz. Bu, donanım düzeyinde bu ihtiyaçları karşılayabilmek için farklı türde işleme ve işlemcilere olan ihtiyacı artırıyor."

Bu gereksinimler uygulama tarafından tanımlanır. Frank, "Bir şirket grafik işlemleri için bir işlemci yarattı" dedi. "Grafiklerin nasıl izleneceğini optimize edip hızlandırıyorlar ve grafikleri yeniden sıralama gibi işlemleri gerçekleştiriyorlar. Matris çarpımı gibi makine öğrenimini hızlandıran başka kaba kuvvetler de var. Bellek erişimi her mimari için farklıdır Bu özel bir sorundur çünkü bir hızlandırıcı oluşturduğunuzda en önemli amaç onu meşgul etmektir. ALU'ya mümkün olduğunca fazla veri aktarmanız gerekiyor çünkü bu veriler tüketilebiliyor ve üretilebiliyor."

Bu uygulamaların çoğunun birçok ortak noktası var. Davidmann, "Hepsinin bir miktar yerel belleği var, çip üzerinde iletişim kurabilecekleri bir ağları var ve bir yazılım algoritmasını yürüten her işlemci küçük bir veri parçasını işliyor" dedi. "Bu işler, daha geleneksel CPU'lar üzerinde çalışan işletim sistemleri tarafından planlanıyor."

Donanım tasarımcıları için en zor kısım, hangi görevleri gerçekleştirmeleri gerekeceğini tahmin etmektir. Thomas, "Bazı katmanlarda benzer türde işlemler yapacak olsanız da insanlar katmanlardaki farklılaşmaya dikkat ediyor" dedi. “Bir sinir ağını işleyebilmek için çeşitli işlem gücü türleri gereklidir. Bu, sinir ağının bir bölümünü bir şekilde işleyebilmeniz gerektiği anlamına gelir ve daha sonra başka bir katmanı işlemek için başka türde bir işleme ihtiyaç duyabilirsiniz. Veri hareketi Veri miktarı da katman katman değişiyor.”

Bu farklılaşma veri hareketinin ötesine geçebilir. Frank, "Genom dizilimi için bazı işlemler yapmanız gerekiyor" dedi. “Fakat her şeyi hızlandırmak için tek tür hızlandırıcıyı kullanamazsınız. Farklı işlem hatları için bir dizi farklı hızlandırıcı oluşturmanız gerekir. CPU, yönetim yürütme sürecinin koruyucusu haline gelir. DMA'yı kurar, yürütür ve iki Süreç arasında karar almayı sağlar. Algoritmaları anlamak, analiz etmek ve bunların işlenmesini nasıl optimize etmek istediğinizi tanımlamak tam bir mimari görevdir."

Sürecin bir kısmı bölümlemeyi gerektirir. “Her işlemci görevi için optimize edilebilecek tek bir işlemci türü yok.FPGA Uhm, "iyi değil, CPU iyi değil, GPU iyi değil, DSP de gerekli" dedi. "Tüm bunları içeren bir dizi cihaz oluşturduk, ancak müşteri açısından zor olan kısım, bunların genel sistemin hangi bölümlerinin işlemciye, programlanabilir mantığa veya yapay zekaya hedefleneceğini belirlemek için zeka sağlamaları gerektiğidir. motor. Herkes, hemen CPU'ya, FPGA'ya ve GPU'ya koymaya karar verebilen otomatik sihirli aracı istiyor. Bugün bu araç mevcut değil."

Yine de CPU her zaman bir rol oynayacaktır. Frank, "Programın düzensiz bölümlerini yürütmek için CPU'ya ihtiyaç var" dedi. “CPU'nun genel programlanabilirliğinin avantajları var. Özel veri yapılarınız veya matematiksel işlemleriniz varsa, bunlar iyi çalışmayacaktır. CPU genel amaçlı bir işlemcidir ve hiçbir şey için optimize edilmemiştir. Hiçbir şeyde iyi değil. .”

“Özet”i değiştir

Geçmişte donanım/yazılım sınırı ISA tarafından tanımlanmıştı ve bellek sürekli olarak adreslenebilirdi. Birden fazla işlemci olduğunda bunlar genellikle bellekle hizalanır.

Frank, "Tutarlılık bir sözleşmedir" dedi. “Bu tür bir tutarlılık çok önemli ve ortadan kalkmayacak. Ancak bir veri akışı motorunda tutarlılığın o kadar da önemli olmadığını tahmin edebilirsiniz, çünkü uçta hareket eden verileri doğrudan bir hızlandırıcıdan diğerine aktarırsınız. Veri setini bölümlere ayırırsanız tutarlılık bir engel haline gelecektir çünkü bu size ekstra döngülere mal olacaktır. Bilgileri kontrol etmelisiniz. Güncellenmiş bilgi vermelisiniz.”

Bu da farklı bir bellek mimarisi gerektirir. Uhm, "Hafıza yapısını düşünmeniz gerekiyor, çünkü yalnızca çok fazla sıkı bir şekilde bağlanmış hafızanız var" dedi. “Bitişik belleğe erişebilirsiniz, ancak bitişik belleğiniz hızla tükenecek ve zamanında erişilemeyecek. Tasarımda bunun anlaşılması gerekir. Araç olgunlaştıkça daha fazlasını öğrenmeye başlayacaktır. Günümüzde mimariyi anlayabilen ve uygulayabilen insan zekası tarafından yapılmaktadır.”

Daha yüksek düzeyde bir soyutlamaya da ihtiyaç vardır. Thomas, "Bazı çerçeveler, bilinen ağları hedef donanıma eşleyebilir veya derleyebilir" dedi. “Yazılım yığınında kullanılacak ve daha sonra sinir ağının haritalayıcısı tarafından kullanılacak bir dizi düşük seviyeli çekirdeğiniz veya API'niz var. Aşağıda, neyi başarmak istediğinize ve ürün ayrıntılarınıza bağlı olarak farklı türde donanımlarınız olabilir. Aynı işlevselliğe ulaşıyor ancak aynı donanımı veya aynı PPA ödünleşimlerini kullanmıyor."

Bu, derleyiciler üzerinde büyük bir baskı oluşturur. "Asıl soru, gelecekte hızlandırıcıyı nasıl programlayacağınızdır?" Frank sordu. “İlk nesil GPU'lar gibi kablolu bir motor uyguladınız mı? Yoksa kendi talimat setiniz ile küçük, programlanabilir bir motor mu yaptınız? Artık bu şeyleri ayrı ayrı programlayıp içine koymalısınız. Her biri görevleri gerçekleştirmek için veri akışına bağlıdır. Bir işlemci tüm komut setinin belirli bir alt kümesine sahiptir ve diğer işlemci farklı bir alt kümeye sahiptir ve hepsi kontrol akışının çakışan bazı kısımlarını paylaşacaktır. Biraz farklı hızlandırma yeteneklerine sahip bazı Ürünleriniz olabilir. Bunu anlayan derleyici veya kütüphaneler buna göre eşleme yapacaktır."

Özetlemek

İşlemcinin mimarisi değişmedi. Halen son 40 yıldır var olan aynı tercihleri ​​takip ediyorlar. Değişen şey çipin inşa edilme şeklidir. Artık, uygulama görevlerinin bir alt kümesi için optimize edilmiş belleğe ve iletişime sahip çok sayıda heterojen işlemci içeriyorlar. Her çip, işlemci işlevi ve optimizasyon amacı, gerekli veri çıkışı ve genellikle gördüğü veri akışı için farklı bir seçim yapar.

Her donanım tedarikçisi kendi çipini diğer çiplerden ayırmak ister ancak markalaşma yoluyla tanıtım yapmak, dahili teknik detaylardan bahsetmekten çok daha kolaydır. Bu yüzden ona bir isim verdiler, onu ilk, en hızlı ve en büyük olarak adlandırdılar ve onu belirli türdeki uygulama sorunlarıyla ilişkilendirdiler. Bu üç harfli kısaltmalar uygulama görevi adları haline geldi ancak donanım mimarisini tanımlamazlar.

Son yıllarda neredeyse her gün yeni işlemci mimarileriyle ilgili duyurular üç harfli kısaltmalarla – TPU, IPU, NPU – yayınlanıyor. Peki onları gerçekten ayıran şey nedir? Gerçekten bu kadar çok benzersiz işlemci mimarisi var mı, yoksa başka bir şey mi oldu?

2018 yılında John L. Hennessy ve David A. Patterson, “Bilgisayar Mimarisinin Yeni Altın Çağı” başlıklı bir Turing dersi verdiler. CPU ve onun gelişimi konusunda endişe duyuyorlar ancak bu, tüm denklemin yalnızca küçük bir kısmı. Arteris IP araştırmacısı ve sistem mimarı Michael Frank şunları söyledi: "CPU açısından bakıldığında bu xPU'ların çoğu gerçek işlemciler değil." “Bunlar daha çok özel iş yükleri için bir hızlandırıcı olan GPU'ya benziyor. Ve içlerinde çok fazla çeşitlilik var. Makine öğrenimi bir tür işlemcidir, bunlara toplu olarak makine öğrenimi hızlandırıcıları diyebilirsiniz, ancak çeşitli süreçlerin işleme kısmını hızlandırırlar.”

İşlemcinin özü üç şeye indirgenebilir. Xilinx çip pazarlama direktörü Manuel Uhm, "Son analizde talimat seti mimarisine (ISA) geri dönüyor" dedi. “Bu ne yapmak istediğinizi tanımlar. Daha sonra ISA'yı ve gerçekleştirmeye çalıştığı görevleri destekleyen G/Ç ve belleğe sahipsiniz. Bu gelecekte çok ilginç bir dönem olacak çünkü son iki veya üç yıla göre daha fazla yenilik ve değişimin zamanı göreceğiz.”

Birçok yeni mimari tek işlemcili değildir. Cadence Teknoloji ve Stratejik Pazarlama Grubu Direktörü Pierre-Xavier Thomas, "Gördüğümüz şey, aynı SoC veya aynı sistemde bulunan farklı tipte işlemcilerin veya programlanabilir motorların bir kombinasyonudur" dedi. “Yazılım görevlerini farklı donanımlara veya esnek programlanabilir motorlara dağıtın. Tüm işlemciler ortak bir API'yi paylaşabilir ancak yürütme alanı farklı olacaktır. Burada gerçekten de farklı özelliklere sahip farklı işleme türlerini göreceksiniz.”

Gerçek şu ki isimlerin çoğu pazarlama amaçlıdır.

Imperas Software CEO'su Simon Davidmann, "Mesele şu ki, insanlar bu isimleri ve kısaltmaları iki farklı amaç için kullanıyor" dedi. “Biri, SIMD (Tek Talimatlı Çoklu Veri) gibi işlemcinin mimarisini açıklamak için kullanılır. Diğeri ise hitap ettiği uygulama segmentini tanımlar. Böylece işlemci mimarisini veya tensör işlem birimi (TPU) Marka adları gibi bir şeyi tanımlayabilir. Bireysel işlemcilere değil, heterojen veya homojen mimarilerine isim veriyorlar.”

Biraz tarih

Kırk yıl önce her şey çok daha basitti. O zamanlar merkezi bir işlem birimi (CPU) vardı ve bunun birçok çeşidi vardı, ancak bunların hepsi temelde von Neumann mimarisine sahip Turing-complete işlemcilerdi. Her birinin, onları belirli görevler için daha verimli kılan farklı bir komut seti vardır ve karmaşık komut setinin (CISC) ve azaltılmış komut setinin (RISC) göreceli avantajları hakkında birçok tartışma vardır.

RISC-V'nin ortaya çıkışı ISA'ya büyük ilgi gösterdi. Xilinx'ten Uhm, "İnsanlar ISA'yı anlamak istiyor çünkü işlemcinin tanımlanmış görevler için ne kadar optimize edildiğini tanımlayan ISA'dır" dedi. "ISA'ya bakıp hesaplama döngüsünü başlatabilirler. Bir ISA'nın yerel talimatları varsa ve 1 GHz'de çalışıyorsa, onu başka bir işlemci ISA'sıyla karşılaştırabilirim; bu, aynı işlev için iki talimat gerektirebilir ancak işlemci 1.5 GHz'de çalışır. Hangisi beni daha ileri götürür? Önemli işlevler için matematiksel hesaplamalar yapıyorlar.”

CPU'lar için birden fazla paketleme yöntemi vardır. Bazen IO veya bellek aynı pakete yerleştirilir. Bunlara mikrodenetleyici birimleri (MCU'lar) denir.

Modemlerin popüler hale gelmesiyle dijital sinyal işlemcileri (DSP) ortaya çıktı ve farkları Harvard mimarisini kullanmalarıydı. Bu, komut veriyolunu veri yolundan ayırır. Bazıları veri işlemeyi daha verimli hale getirmek için SIMD mimarisini de uyguladı.

Talimatların ve verilerin ayrılması, verimi artırmak içindir; ancak bu, kendi kendine yazılan programlar gibi yapılabilecek bazı ileri programlamaları sınırlandırır. Uhm, "Genellikle sınır koşulları hesaplama değildir" dedi. “Giriş/çıkış veya bellek giderek artıyor. Sektör, bilgi işlem gücünü artırmaktan, bilgi işlem gücünü ve performansı sürdürmek için yeterli verinin olmasını sağlamaya doğru geçiş yapıyor."

Tek bir işlemci artık daha hızlı hale gelmediğinde, birden fazla işlemciyi birbirine bağlarlar. Bu işlemciler genellikle belleği paylaşır ve her işlemci ve tüm işlemci kümesi için Turing bütünlüğü kavramını korur. Programın herhangi bir bölümünün hangi çekirdekte yürütüldüğü önemli değildir çünkü sonuç aynıdır.

Bir sonraki büyük gelişme, her işlem elemanının veya boru hattının kendi belleğine sahip olması ve işlemcinin dışında adreslenememesi nedeniyle geleneği bozan grafik işlem birimidir (GPU). Belleğin sınırlı olması, herhangi bir rastgele işlem görevini yerine getiremeyeceği, yalnızca sağlanan bellek alanına yerleştirilebilecek görevleri gerçekleştirebileceği anlamına gelir.

Uhm, "Belirli işlev türleri için GPU'lar çok güçlü işlemcilerdir, ancak işlem hatları çok uzundur" diye belirtiyor. "Bu boru hatları GPU ünitesinin verileri sürekli olarak işlemesine olanak tanıyor, ancak bir noktada boru hattını yenilemek zorunda kalırsanız bu büyük bir darbe olacaktır. Sistemde çok fazla gecikme ve belirsizlik var."

Pek çok başka hızlandırıcı tanımlanmış olmasına rağmen, GPU'lar ve daha sonra genel amaçlı GPU'lar (GPGPU'lar), kullanımlarını önceki hızlandırıcılara göre daha kolay hale getiren bir programlama paradigması ve yazılım yığını tanımladı. Imperas'tan Davidmann, "Uzun yıllardır belirli işler uzmanlaşmıştır" dedi. “Sıralı programlar için bir CPU var. Ekran için veri işlemeye odaklanan ve bizi son derece paralel bir dünyaya getiren bir grafik işlemci var. Görevleri gerçekleştirmek için birçok küçük işlem öğesini kullanır. Artık makine öğrenimi görevleri var.”

Başka hangi inşaat kuralları tüm yeni mimariyi açıklayabilir? Geçmişte, işlemci dizileri genellikle bellek veya sabit ağ topolojileri (mesh veya ring gibi) aracılığıyla bağlanıyordu. Yakın zamanda ortaya çıkan şey, dağıtılmış heterojen işlemcilerin daha esnek bir şekilde iletişim kurmasını sağlayan Network on Chip (NoC) kombinasyonudur. Gelecekte hafıza kullanmadan da iletişim kurabilecekler.

Arteris'ten Frank, "Şu anda NoC yalnızca veri taşıyor" dedi. "Gelecekte NoC, hızlandırıcılar arasındaki iletişimin verilerin ötesine geçtiği diğer alanlara genişletilebilir. Komutlar, bildirimler vb. gönderebilir. Hızlandırıcı dizisinin iletişim gereksinimleri, CPU'nun veya standart SoC'nin iletişim gereksinimlerinden farklı olabilir. Ancak çip üzerindeki ağ sizi bir alt kümeyle sınırlamayacaktır. Hızlandırıcıların özel iletişim ihtiyaçlarını destekleyerek performansı optimize edebilir ve artırabilirsiniz.”

uygulama mimarisi

İşlemci farklılaştırmanın bir yolu, belirli bir işletim ortamı için optimizasyon yapmaktır. Örneğin yazılım bulutta çalışabilir ancak aynı yazılımı mikro IoT cihazlarda da çalıştırabilirsiniz. Uygulama mimarisi çok farklı olacak ve performans, güç tüketimi, maliyet veya aşırı koşullar altında çalışabilme yeteneği açısından farklı çalışma noktalarına ulaşacak.

Cadence'den Thomas, "Bazı uygulamalar bulut bilişime yöneliktir ve şimdi onları uç noktaya yaklaştırıyoruz" dedi. "Bunun nedeni, farklı türde bir mimari gerektiren gecikme gereksinimleri veya enerji veya güç tüketimi olabilir. İki konumda çalışabilmek için tam olarak aynı yazılım yığınına sahip olmak isteyebilirsiniz. Bulutun esneklik sağlaması gerekiyor çünkü farklı türdeki uygulamaları alacak ve çok sayıda kullanıcıyı bir araya getirebilmelidir. Bu, sunucudaki donanımın uygulamaya özel yeteneklere sahip olmasını gerektiriyor ancak tek boyut herkes için uygun değil."

ML kendi gereksinimlerini artırdı. Thomas, "Akıllı sistemler oluşturmak için sinir ağlarını ve makine öğrenimini kullanırken, yeni ağı programlamak ve onu donanımla eşlemek için yazılım çerçevelerini ve genel yazılım yığınlarını kullanmanız gerekir" diye ekledi. “Ardından yazılım uygulamasını PPA perspektifinden doğru donanıma uyarlayabilirsiniz. Bu, donanım düzeyinde bu ihtiyaçları karşılayabilmek için farklı türde işleme ve işlemcilere olan ihtiyacı artırıyor."

Bu gereksinimler uygulama tarafından tanımlanır. Frank, "Bir şirket grafik işlemleri için bir işlemci yarattı" dedi. "Grafiklerin nasıl izleneceğini optimize edip hızlandırıyorlar ve grafikleri yeniden sıralama gibi işlemleri gerçekleştiriyorlar. Matris çarpımı gibi makine öğrenimini hızlandıran başka kaba kuvvetler de var. Bellek erişimi her mimari için farklıdır Bu özel bir sorundur çünkü bir hızlandırıcı oluşturduğunuzda en önemli amaç onu meşgul etmektir. ALU'ya mümkün olduğunca fazla veri aktarmanız gerekiyor çünkü bu veriler tüketilebiliyor ve üretilebiliyor."

Bu uygulamaların çoğunun birçok ortak noktası var. Davidmann, "Hepsinin bir miktar yerel belleği var, çip üzerinde iletişim kurabilecekleri bir ağları var ve bir yazılım algoritmasını yürüten her işlemci küçük bir veri parçasını işliyor" dedi. "Bu işler, daha geleneksel CPU'lar üzerinde çalışan işletim sistemleri tarafından planlanıyor."

Donanım tasarımcıları için en zor kısım, hangi görevleri gerçekleştirmeleri gerekeceğini tahmin etmektir. Thomas, "Bazı katmanlarda benzer türde işlemler yapacak olsanız da insanlar katmanlardaki farklılaşmaya dikkat ediyor" dedi. “Bir sinir ağını işleyebilmek için çeşitli işlem gücü türleri gereklidir. Bu, sinir ağının bir bölümünü bir şekilde işleyebilmeniz gerektiği anlamına gelir ve daha sonra başka bir katmanı işlemek için başka türde bir işleme ihtiyaç duyabilirsiniz. Veri hareketi Veri miktarı da katman katman değişiyor.”

Bu farklılaşma veri hareketinin ötesine geçebilir. Frank, "Genom dizilimi için bazı işlemler yapmanız gerekiyor" dedi. “Fakat her şeyi hızlandırmak için tek tür hızlandırıcıyı kullanamazsınız. Farklı işlem hatları için bir dizi farklı hızlandırıcı oluşturmanız gerekir. CPU, yönetim yürütme sürecinin koruyucusu haline gelir. DMA'yı kurar, yürütür ve iki Süreç arasında karar almayı sağlar. Algoritmaları anlamak, analiz etmek ve bunların işlenmesini nasıl optimize etmek istediğinizi tanımlamak tam bir mimari görevdir."

Sürecin bir kısmı bölümlemeyi gerektirir. Uhm, "Her işlemci görevi için optimize edilebilecek tek bir işlemci türü yok; FPGA iyi değil, CPU iyi değil, GPU iyi değil, DSP de gerekli" dedi. "Tüm bunları içeren bir dizi cihaz oluşturduk, ancak müşteri açısından zor olan kısım, bunların genel sistemin hangi bölümlerinin işlemciye, programlanabilir mantığa veya yapay zekaya hedefleneceğini belirlemek için zeka sağlamaları gerektiğidir. motor. Herkes, hemen CPU'ya, FPGA'ya ve GPU'ya koymaya karar verebilen otomatik sihirli aracı istiyor. Bugün bu araç mevcut değil."

Yine de CPU her zaman bir rol oynayacaktır. Frank, "Programın düzensiz bölümlerini yürütmek için CPU'ya ihtiyaç var" dedi. “CPU'nun genel programlanabilirliğinin avantajları var. Özel veri yapılarınız veya matematiksel işlemleriniz varsa, bunlar iyi çalışmayacaktır. CPU genel amaçlı bir işlemcidir ve hiçbir şey için optimize edilmemiştir. Hiçbir şeyde iyi değil."

“Özet”i değiştir

Geçmişte donanım/yazılım sınırı ISA tarafından tanımlanmıştı ve bellek sürekli olarak adreslenebilirdi. Birden fazla işlemci olduğunda bunlar genellikle bellekle hizalanır.

Frank, "Tutarlılık bir sözleşmedir" dedi. “Bu tür bir tutarlılık çok önemli ve ortadan kalkmayacak. Ancak bir veri akışı motorunda tutarlılığın o kadar da önemli olmadığını tahmin edebilirsiniz, çünkü uçta hareket eden verileri doğrudan bir hızlandırıcıdan diğerine aktarırsınız. Veri setini bölümlere ayırırsanız tutarlılık bir engel haline gelecektir çünkü bu size ekstra döngülere mal olacaktır. Bilgileri kontrol etmelisiniz. Güncellenmiş bilgi vermelisiniz.”

Bu da farklı bir bellek mimarisi gerektirir. Uhm, "Hafıza yapısını düşünmeniz gerekiyor, çünkü yalnızca çok fazla sıkı bir şekilde bağlanmış hafızanız var" dedi. “Bitişik belleğe erişebilirsiniz, ancak bitişik belleğiniz hızla tükenecek ve zamanında erişilemeyecek. Tasarımda bunun anlaşılması gerekir. Araç olgunlaştıkça daha fazlasını öğrenmeye başlayacaktır. Günümüzde mimariyi anlayabilen ve uygulayabilen insan zekası tarafından yapılmaktadır.”

Daha yüksek düzeyde bir soyutlamaya da ihtiyaç vardır. Thomas, "Bazı çerçeveler, bilinen ağları hedef donanıma eşleyebilir veya derleyebilir" dedi. “Yazılım yığınında kullanılacak ve daha sonra sinir ağının haritalayıcısı tarafından kullanılacak bir dizi düşük seviyeli çekirdeğiniz veya API'niz var. Aşağıda, neyi başarmak istediğinize ve ürün ayrıntılarınıza bağlı olarak farklı türde donanımlarınız olabilir. Aynı işlevselliğe ulaşıyor ancak aynı donanımı veya aynı PPA ödünleşimlerini kullanmıyor."

Bu, derleyiciler üzerinde büyük bir baskı oluşturur. "Asıl soru, gelecekte hızlandırıcıyı nasıl programlayacağınızdır?" Frank sordu. “İlk nesil GPU'lar gibi kablolu bir motor uyguladınız mı? Yoksa kendi talimat setiniz ile küçük, programlanabilir bir motor mu yaptınız? Artık bu şeyleri ayrı ayrı programlayıp içine koymalısınız. Her biri görevleri gerçekleştirmek için veri akışına bağlıdır. Bir işlemci tüm komut setinin belirli bir alt kümesine sahiptir ve diğer işlemci farklı bir alt kümeye sahiptir ve hepsi kontrol akışının çakışan bazı kısımlarını paylaşacaktır. Biraz farklı hızlandırma yeteneklerine sahip bazı Ürünleriniz olabilir. Bunu anlayan derleyici veya kütüphaneler buna göre eşleme yapacaktır."

Özetlemek

İşlemcinin mimarisi değişmedi. Halen son 40 yıldır var olan aynı tercihleri ​​takip ediyorlar. Değişen şey çipin inşa edilme şeklidir. Artık, uygulama görevlerinin bir alt kümesi için optimize edilmiş belleğe ve iletişime sahip çok sayıda heterojen işlemci içeriyorlar. Her çip, işlemci işlevi ve optimizasyon amacı, gerekli veri çıkışı ve genellikle gördüğü veri akışı için farklı bir seçim yapar.

Her donanım tedarikçisi kendi çipini diğer çiplerden ayırmak ister ancak markalaşma yoluyla tanıtım yapmak, dahili teknik detaylardan bahsetmekten çok daha kolaydır. Bu yüzden ona bir isim verdiler, onu ilk, en hızlı ve en büyük olarak adlandırdılar ve onu belirli türdeki uygulama sorunlarıyla ilişkilendirdiler. Bu üç harfli kısaltmalar uygulama görevi adları haline geldi ancak donanım mimarisini tanımlamazlar.