Grafik işlemcileri veya GPU'lar için pazar, ister grafik kartları ister entegre GPU'lar şeklinde olsun, şu anda aşağıdakiler tarafından işgal edilmektedir: NVIDIA, AMD ve daha az ölçüde Intel. Bu, bir kurmanın mümkün olmadığı anlamına mı geliyor? GPU ticari teknolojiyi kullanmayan? Çözüm, RV32X adı altında grafikler için tasarlanmış bir varyantta, tamamen ücretsiz ve açık ISA RISC-V'nin kullanımıyla gelebilir.
Pixilica halkı, yaratıcıları işlemci SiFive adlı ISA RISC-V'ye dayanarak, ISA RISC-V kullanarak GPU'lar oluşturmayı amaçlayan RV32X adlı bir teklifte bulundu. RISC-V'nin tamamen ücretsiz ve açık doğası gereği, GPU'ların geleceğini tamamen değiştirebilir.
RV32X, bir GPU oluşturmak için RISC-V uyguluyor
RISC-V standardı, bir temel spesifikasyona ve farklı kullanım türleri ve yardımcı programlar için CPU'ların oluşturulması için bir dizi isteğe bağlı uzantıya dayanan, tamamen ücretsiz ve açık bir kayıt ve kullanım talimatları kümesidir. Ancak NVIDIA'nın SM'leri veya AMD'nin Hesaplama Birimleri gibi gölgelendirici birimleri oluşturmak için RISC-V'yi kullanmak mümkün müdür? Başlamak için değil ve söz konusu ISA'nın yeni bir uzantısı, onu bir gölgelendirici birimi oluşturmak için kullanmak için gerekli olacaktır.
Pixilica şirketi, gölgelendirici birimlerinin ISA RISC-V'ye dayandığı bir GPU oluşturmayı önerdi ve bunun için ISA RISC-V'ye grafik ilkelleri değiştirmenize izin veren bir dizi talimatla ek bir uzantı önerdi. Gerçek zamanlı grafik oluşturmada kullanılan pikseller, köşeler ve diğer veri türleri olabilir.
Bunu yapmak için, RISC-V vektör komutları için V uzantısını kullanmayı ve gölgelendirici birimini oluşturmak için ondan talimatlar listesini genişletmeyi önerirler.
Shader biriminin bileşenleri nelerdir?
Bahsettiğimiz markadan bağımsız olarak her gölgelendirici birimi aşağıdaki bileşenlere sahiptir:
- Yürütme iş parçacığı dalgalarını alan ve bunları organize eden bir kod çözücü, zamanlayıcı.
- Planlayıcının, ALU'lar veya yürütme birimleri tarafından yürütülecek iş parçacıkları düzenli bir şekilde yerleştirdiği bir kayıt kuyusu.
- Veriler üzerinde aritmetik ve mantıksal işlemler gerçekleştirme yeteneğine sahip ALU'lar veya yürütme birimleri. Bunlar vektör veya SIMD ve skaler olabilir.
- Doku piksellerinin enterpolasyonunu gerçekleştirmek için doku birimleri. Bu birimler sabit işlevlidir.
- Veriler için üst düzey önbellek
- Verileri veri önbelleğinden önbelleğin daha yüksek düzeylerine, ancak gölgelendirici biriminden daha uzağa aktarabilme ve ayrıca ROPS'a aktarabilme özelliği
- Her gölgelendirici birimi için dahili olabilen veya birkaç kişi arasında paylaşılabilen bir talimat önbelleği.
Ortak temel unsurlar bilindiğinde, Pixilica'nın önerisine bir göz atalım.
RISC-V tabanlı bir Shader ünitesi olan RV32X
Aklımızda tutmamız gereken ilk şey, RISC-V'deki vektörler için standardın 128 bit'e kadar desteklediğidir ve bu şu şekilde uygulanabilir: 1 128-bit işlem, 2 64-bit, 4 32-bit, 8 16 bit veya 16 8 bit. Herhangi bir ALU'da hassasiyeti yarıya indirme yeteneğini aşırı SIMD kaydı olarak adlandırıyoruz. Eldeki durumda olmasına rağmen, teklif 4 adet 32-bit ALU'ları kayan noktaya yerleştirmektir.
Diğer birim türleri, tasarımda skaler olacak ve 16 bitlik bir tamsayı hassasiyetiyle özel işlev birimleridir. Yürütecekleri talimatlar aşkın çağrılar olacaktır. Yani sinüs, kosinüs, tanjant, güçler, logaritmalar ve farklı derecelerde kökler. Transistörlerin maliyeti nedeniyle bir SIMD ünitesinde uygulanması zordur.
Bir CPU'da kullanılan SIMD birimlerine göre bir fark, kayıtların 128 bit olmaması, ancak ilk 136 bitin işlenecek grafik ilkel tipini veya veriyi tanımlamaya hizmet edeceği 8 bit olması olacaktır. 8 bit, 256 veri türüne kadar izin verir, bu nedenle bunları tanımlamak için geniş bir marj vardır, bazı veri türleri, GPU'daki farklı sabit işlev birimleriyle ve VRAM ile etkileşime girmenize izin verir.
Toplamda, her biri 4 bitlik 1024 farklı öğe olan yaklaşık 136 kayıt kuyucuğumuz var, bu şu anda DirectX içindeki Direct3D gibi API'lerde maksimum yürütme iş parçacığı bloğudur. Menhollerin her biri 4-ALU 32-bit kayan noktalı SIMD ünitesine bağlıdır. Bu, rögar başına 16 ALU'ya dönüşür ve 4 x 4 eleman matrisli talimat desteği ile teyit edilir.
RV32X'te Kod Çözme Talimatları
Talimatların kodunun çözülmesi, sabit bir işlev kod çözücüsünde gelir. Komutların 32 bit uzunluğunda ve dolayısıyla sabit boyutta olacağı dikkate alınmalıdır. Bunlar talimat önbelleğinden gelirken, her talimatın verileri Hesaplama Birimi içindeki veri önbelleğinde de olur. Bir mikro kod komut kod çözücünün kullanılması da mümkündür.
Teklif, RV32X'e eşlik eden standart bir RISC-V çekirdeğinin entegrasyonunu içerir; bu, bunun tipik bir CPU olacağı anlamına gelmez, bunun yerine GPU'lara özgü Round-Robin yürütmesini entegre etmek için kullanılacağı anlamına gelir. her talimat bir yürütme süresi. Belirtilen sürede çalışmazsa, genellikle veri eksikliğinden dolayı. Ardından listenin aşağısına doğru hareket eder.
Gölgelendirici birimlerinin ALU'larının, yazmaçlardan geldiklerinde farklı yürütme evrelerinin komutlarını kademeli olarak yürüttüğü dikkate alınmalıdır. Programlayıcı, kayıtları veri önbelleklerinden gelen verilerle ve ALU'lar tarafından bir yığınmış gibi çalıştırıldığında talimatlarla doldurduğunda, bir talimat grubu çözüldüğünde, ALU'lar sonraki grubu okur, hepsi geçilinceye kadar günlükler ve çalıştırılacak iş parçacığı yok.
RV32X'te sabit işlev
Hızlandırıcıların geri kalanıyla aynı şekilde sabit işlev birimleri RV32X'te tanımlanmamıştır, ancak onlarla Shader birimlerinden etkileşime izin veren talimatlardır. Bu birimler, kablolu olduklarından veya sabit bir mikrokod kullandığından her zaman aynı işlevi yerine getirmekten sorumludur, ancak her durumda, çoğunlukla RV32X'ten tamamen ayrı birimler olacaktır.
Bu nedenle, her üreticinin kendi sabit işlev birimleri ve bunların uygulaması olacaktır. Bunun yanı sıra, bunların ortak işlemde ek işlevler uygulamış olması durumunda özel uzantılar oluşturmanın yanı sıra. RV32X'in tam bir GPU tanımlamadığını, bunun yerine bir GPU'nun parçası olan bir gölgelendirici birimini tanımladığını unutmayın; bu, farklı türdeki gölgelendiricileri yürüttüğü için önemlidir, ancak GPU'nun tamamı değildir.
Not olarak, doku birimleri açısından her bir menholümüz var. SIMD birimlerindeki ALU'lar arasındaki olağan oranın çoğu GPU'da genellikle 16: 1 olduğunu unutmayın. Her Shader Unit içinde, tipik olarak dört doku birimi görürüz ve bu oranı, her bir gölgelendirici birimi için ortalama olarak 64 32-bit kayan noktalı ALU'ya getirir.
Bu, GPU pazarında yeni bir şube açar mı?
Tüm teknik kısımları bir kenara bırakırsak, PostPC cihazları ve bunlara atanan SoC'ler için pazara bakarsak, çok sayıda entegre GPU'nun tamamen tescilli olduğunu göreceğiz. Şimdiye kadar Çin'de üretilen SoC'lerde en çok kullanılan, Mali mimarisiydi, ancak ARM NVIDIA tarafından bu, olasılıkları sınırlar. Qualcomm, Adreno mimarisinin sahibidir. Apple kendi başına da vardır ve hatta PowerVR ile Hayal gücü, teknolojiyi kullanmak için üçüncü bir tarafa lisans vermek anlamına gelir.
RISC-V'ye dayalı bir gölgelendirici birimi önerisi olması, tamamen ücretsiz ve dolayısıyla tescilli olmayan bir standarda dayalı yeni GPU'ların oluşturulmasına izin vereceği için anahtardır. Bu, aynı çözümü farklı bakış açılarından aynı anda aramak yerine, ortak sorunları çözen yeni birimlerin ve iyileştirmelerin oluşturulabileceği anlamına gelecektir.
Böyle bir teknolojiden yararlanabilecek bir dünya gücüne bakacak olursak, akla ilk gelen Çin olduğu açıktır, ancak AMD, NVIDIA veya Intel'in RISC-V sürümünü kullanmak için bir evrim geçirdiğini de görebiliriz. ortak ilerlemeden yararlanmak için gölgelendirici birimleri oluşturun. Yazılımda ve açık kaynak dünyasında olduğu gibi.