Servis Hattı
RISC-V, bilgi işlemdeki en sıcak konulardan biri olmuştur çünkü bu talimat seti mimarisi (ISA), tüm açık kaynak, lisans gerektirmeyen avantajına ek olarak kapsamlı özelleştirmeye izin verir ve anlaşılması kolaydır. RISC-V ISA'yı temel alan genel amaçlı bir GPU tasarlama projesi bile var ve şimdi Nvidia'nın CUDA yazılım kütüphanesinin Vortex RISC-V GPGPU platformuna taşınmasına tanık oluyoruz.
Nvidia'nın CUDA'sı (Bilgisayar Birleştirilmiş Cihaz Mimarisi), Nvidia'nın grafik kartları serisinde çalışan benzersiz bir bilgi işlem platformunu ve uygulama programlama arayüzünü (API) temsil eder. CUDA desteği için bir uygulama yazıldığında, sistem CUDA tabanlı bir GPU bulduğunda, kodun GPU hızlandırması oldukça fazla olur.
Bugün araştırmacılar, Vortex adı verilen bir RISC-V GPGPU projesinde CUDA yazılım araç seti desteğini etkinleştirmenin bir yolunu araştırdılar. Vortex RISC-V GPGPU, RV32IMF ISA'yı temel alan sistem çapında bir RISC-V GPU sağlamak üzere tasarlanmıştır. Bu, 32 bit çekirdeklerin 1 çekirdekten 32 çekirdekli GPU tasarımlarına kadar ölçeklenebileceği anlamına gelir. OpenCL 1.2 grafik API'sini destekler ve bugün bazı CUDA işlemlerini de desteklemektedir.
Araştırmacılar şöyle açıklıyor: "...Bu projede, uçtan uca CUDA geçişini desteklemek için bir işlem hattı öneriyor ve inşa ediyoruz: işlem hattı, CUDA kaynak kodunu girdi olarak kabul ediyor ve bunları genişletilmiş RISC-V GPU mimarisinde yürütüyor. ardışık düzen birkaç adımdan oluşur: CUDA kaynak kodunu NVVM IR'ye çevirin, NVVM IR'yi SPIR-V IR'ye dönüştürün, RISC-V ikili dosyasını almak için SPIR-V IR'yi POCL'ye iletin ve son olarak genişletilmiş RISC-V GPU İkili dosya mimarisinde çalıştırın. "
İşlem, çalışması için gereken tüm adımları gösteren yukarıdaki resimde görselleştirilmiştir. Basit bir ifadeyle CUDA kaynak kodu, açık kaynak LLVM IR'yi temel alan, NVVM IR adı verilen bir ara gösterim (IR) formatında temsil edilir. Daha sonra Standart Taşınabilir Ara Temsil (SPIR-V) IR'ye dönüştürüldü ve bu daha sonra POCL adı verilen OpenCL standardının taşınabilir bir açık kaynaklı uygulamasına iletildi. Vortex OpenCL'i desteklediği için desteklenen kod sağlar ve sorunsuz çalıştırabilir.
Bu karmaşık süreç hakkında daha fazla ayrıntı için orijinal makaleyi okumak üzere aşağıya tıklayın. Daha da önemlisi, CUDA'nın RISC-V GPGPU'larda çalışmasını sağlama çabaları için bu araştırmacılara teşekkür etmelisiniz. Bu şimdilik sadece küçük bir adım olsa da, tıpkı Nvidia'nın bugünkü GPU serisinde olduğu gibi, RISC-V'nin bilgi işlem uygulamalarını hızlandırmak için kullanıldığı bir dönemin başlangıcı olabilir.
Genişletilmiş okuma: RISC-V GPU'yu değiştirebilir mi?
GPU mimarisini inceleyen herkes bunun bir vektör işlemcinin SIMD yapısı olduğunu bilir. Simülasyonlar ve harika oyunlar çalıştırmaktan, robotlara yapay zekayı nasıl elde edeceklerini öğretmeye ve akıllı insanların borsayı manipüle etmelerine yardımcı olmaya kadar her şey için kullanılan ultra verimli bir paralel işlemcidir. Bunu yazarken gramerimi bile kontrol ediyor.
Ancak GPU alanı özel bir alan haline geldi ve iç işleri IP ve etkili AMD, Intel ve Nvidia gibi geliştiricilerin tedarikleri. Ya 3D grafikler ve medya işleme için tasarlanmış yeni bir grafik talimatları seti olsaydı? Evet, olabilir.
Yeni talimatlar RISC-V temel vektör talimat seti üzerine oluşturulmaktadır. Temel RISC-V ISA'nın ruhuna uygun olarak, katmanlı uzantılar olarak yeni grafiğe özgü veri türleri için destek ekleyecekler. Vektör, önceki matematik, piksel ve doku ile Z/Frame arabellek işlemlerini destekler. Birleştirilmiş bir CPU-GPU ISA olabilir. Kütüphane - RISC 3D grubu buna RV64X adını verir (Şekil 1) çünkü talimatlar 64 bit uzunluğunda olacaktır (32 bit sağlam bir ISA'yı desteklemek için yeterli olmayacaktır).
Grup, motivasyonlarının ve hedeflerinin özel programlanabilirlik ve genişletilebilirlik ile küçük, verimli bir tasarım oluşturmak olduğunu belirtti. Ticari ürünlerle rekabet etmemeli, düşük maliyetli fikri mülkiyet ve geliştirme sağlamalıdır. FPGA ve ASIC hedeflerine uygulanabilmektedir, ücretsiz ve açık kaynaktır. Orijinal tasarım, Khronos Vulkan uyumlu olacak ve diğer API'leri (OpenGL, DirectX vb.) destekleyecek düşük güçlü mikro denetleyicileri hedefliyor.
GPU + RISC-V
Ekip şunları söyledi: "3D API çağrılarını kullanılmayan CPU bellek alanına veya kullanılmayan CPU bellek alanını GPU bellek alanına veya tam tersi şekilde göndermek için RPC/IPC çağrı mekanizmasını kullanmaya gerek yok."
"Birleşik" CPU-GPU ISA yaklaşımının avantajı, mikro kodda standart grafik işlem hatlarının kullanılabilmesi ve özel gölgelendiricilerin desteklenebilmesidir. Işın izleme uzantılarını bile içerebilir.
Tasarım Vblock formatında olacaktır (Libre GPU çabasından):
- Bir nevi VLIW'ye benziyor (ama aslında değil).
- Talimat bloklarından önce, o blok içindeki skaler talimatlar için ek bağlam sağlayan kayıt işaretçileri gelir.
- Alt bloklar, vektör uzunluğu, döndürme, vektör/genişlik yerleşimi ve tahmini içerir.
- Bütün bunlar skaler işlem kodlarına eklenir!
- Vektör işlem kodu yoktur (ve buna gerek yoktur).
- Vektör bağlamında durum şu şekildedir: Eğer bir skaler işlem kodu bir kayıt kullanıyorsa ve bu kayıt vektör bağlamında listeleniyorsa, o zaman vektör modu etkinleştirilecektir.
- Etkinleştirme, donanım düzeyindeki for döngüsünün ardışık birden fazla skaler işlem (yalnızca bir yerine) yaymasına neden olur.
- Uygulayıcılar döngüleri istedikleri şekilde uygulamakta özgürdürler - SIMD, çoklu sorun, tek yürütme; hemen hemen her şey.
RV32-V vektörü, 8 ila 16 öğenin 32 bit, 2 bit veya 4 bit/öğe vektör işlemlerini yönetir. Ayrıca 3 bit ve 64 bit sabit ve kayan noktalı XYZW noktaları için genel 128 boyutlu grafik oluşturma hattına yönelik özel talimatlar da olacaktır. 8-, 16-, 24- ve 32-bit RGBA pikselleri; Bileşen başına 8 bit, 16 bit UVW teksel; ve ışık ve malzeme ayarları (la, ka, Id, kd, Is, ks, vb.).
Nitelik vektörü 4×4 matris olarak temsil edilir. Sistem doğal olarak 2×2 ve 3×3 matrisleri destekleyecektir. Vektör desteği, yapay zeka ve makine öğrenimi uygulamalarında yaygın olarak kullanılan 8 bitlik tam sayı veri türlerini kullanan sayısal simülasyonlar için de uygun olabilir.
Spline'lar, SubDiv yüzeyleri ve yamalar gibi özel rasterleştiriciler tasarıma dahil edilebilir. Bu yöntem aynı zamanda özel ardışık düzen aşamalarının, özel geometri/piksel/kare arabellek aşamalarının, özel alt bölücülerin ve özel örnekleme işlemlerinin dahil edilmesine de olanak tanır.
RV64X
-
Talimat/Veri SRAM önbelleği (32 kB)
-
Mikrokod SRAM (8 kB)
-
Çift fonksiyonlu talimat kod çözücü (RV32V ve X için kablolu; özel ISA için mikro kodlu talimat kod çözücü)
-
Dört vektörlü ALU (32 bit/ALU-sabit/değişken)
-
136 bit kayıt dosyası (1k öğe)
-
özel fonksiyon ünitesi
-
doku birimi
-
Yapılandırılabilir yerel çerçeve arabelleği
RV64X ölçeklenebilir bir mimaridir (Şekil 2). Özel veri türleri için yapılandırılabilir kayıtların kullanımı gibi, füzyon yöntemi de yenidir. Kullanıcı tanımlı SRAM tabanlı mikro kod, özel tarama aşamaları, ışın izleme, makine görüşü ve makine öğrenimi gibi uzantıları uygulamak için kullanılabilir. Tek bir tasarım, bağımsız bir grafik mikro denetleyicisine veya ölçeklenebilir gölgelendirici birimlerine sahip çok çekirdekli bir çözüme uygulanabilir.
RISC-V'ye yönelik grafik uzantıları ölçeklenebilirliği ve çok dilliliği ele alır. Bu, daha fazla yeniliğe yol açan daha yüksek düzeyde kullanım senaryolarına olanak tanır.
sıradaki ne
RV64X spesifikasyonu hâlâ erken geliştirme aşamasındadır ve değişebilir. Bir tartışma forumu kuruluyor. Acil hedef, talimat seti simülatörünü kullanarak örnek bir uygulama oluşturmaktır. Bu, açık kaynaklı projeler olarak tasarlanmış özel IP'nin Kaynak IP ve FPGA uygulamalarını kullanarak açılacaktır.
Yasal Uyarı: Bu makale "Semiconductor Industry Observation"dan kopyalanmıştır. Bu makale Sac Micro ve sektörün görüşünü değil, yalnızca yazarın kişisel görüşünü temsil etmektedir, yalnızca yeniden basılmak ve paylaşılmak içindir, destek Fikri mülkiyet haklarını korumak için lütfen yeniden basım için orijinal kaynağı ve yazarını belirtin. Herhangi bir ihlal varsa, silmek için lütfen bizimle iletişime geçin.




粤公网安备44030002007346号