Geri Dön
RISC-V: bir mühendisin mimariye dair ayrıntılı eleştirisi
SiTech AI Team3 წთ. საკითხავი

RISC-V: bir mühendisin mimariye dair ayrıntılı eleştirisi

Mühendis Dmitry Grinberg, RISC-V'nin hem küçük mikrodenetleyiciler hem de sunucu çekirdekleri için en iyisi olamayacağını, isteğe bağlı bırakılan özelliklerin ise standarda uyumu neredeyse anlamsız kıldığını savunan uzun bir deneme yayımladı.

Mühendis Dmitry Grinberg, dmitry.gr adlı blogunda "RISC-V: They Should Have Known Better" başlıklı uzun bir deneme yayımladı ve açık komut kümesi mimarisine yönelik kuşkuculuğunun arkasındaki bütün argümanları tek bir metinde topladı. Yazarına göre metin, bir sonraki sefer görüşünü açıklaması istendiğinde tek bir bağlantıyla yanıt verebilmek için yazıldı.

Tek mimari herkese yetemez

Hiçbir komut kümesi her kullanım için en iyisi olamaz; yüksek performanslı bir çekirdeğin ihtiyaçları ile ucuz bir mikrodenetleyicinin ihtiyaçları birbirine tamamen zıttır. Grinberg, RISC-V'nin sonunda 8051'in elindeki ucuz ve tek kullanımlık mikrodenetleyici alanını devralacağını düşünüyor; ancak bunu komut kümesi tasarımı sayesinde değil, ona rağmen yapacağını söylüyor. Kesme işleme bunu iyi gösteriyor: standarda uygun bir yol Zicsr uzantısını ve mscratch ya da sscratch kaydedicilerini gerektiriyor ve yazarın hesabına göre C ile yazılmış bir işleyici işe başlamadan önce en az 44 çevrim harcanıyor. Cortex-M0 kesmeye 15 çevrimde girip 12 çevrimde çıkıyor, yani toplam 27; çünkü kaydedicileri donanımda saklıyor. Daha az kaydediciye sahip RV32E bile 38 çevrime iniyor. CLIC ile üreticilerin kendi "hızlı IRQ" uzantılarının varlığı ek bir suçlama: taban komut kümesi, üreticileri on yıllık bir çekirdeğin seviyesine ulaşmak için standart dışı silikon üretmeye zorluyor.

Sıkıştırılmış komutlar ve dizi erişimi

Yazar, sıkıştırılmış komutların tasarımını özellikle zayıf buluyor. 16 bitlik bayt yazma komutu yalnızca sıfırdan üçe kadar olan ofsetleri kodlayabiliyor, yarım sözcük yazma sıfır ya da iki seçeneği sunuyor, sözcük yazma ise sıfırdan 124'e kadar izin veriyor. Cortex-M0 baytlar için sıfırdan 31'e, yarım sözcükler için sıfırdan 62'ye kadar ofset kabul ediyor. Üstelik bayt ve yarım sözcük yazma komutları C uzantısının değil, Zcb adlı ayrı bir uzantının parçası. İkinci sorun indeksli adresleme: x86'da [ebx + esi * 4], ARM'da [R0, R1, LSL #2] var; RISC-V'de ise tek bir dizi erişimi üç komut gerektiriyor. Hızlı çekirdeklerin bunları birleştireceği yönündeki alışılmış mazeret zayıf: bilinen hiçbir çekirdek ikiden fazla ardışık komutu birleştirmiyor. SHxADD komutlarını içeren Zba uzantısı ise ancak 2021'de onaylandı; yani taban şartnameden iki yıldan fazla sonra.

Her şey isteğe bağlı

Grinberg, RISC-V'yi USB-C ve RCS'ye benzetiyor: standarda uygunluk neredeyse hiçbir şey ifade etmiyor, çünkü neredeyse her şey isteğe bağlı. Çarpma isteğe bağlı, bölme isteğe bağlı; kullanıcı ve süpervizör kipleri, CSR kaydedicileri, sıkıştırılmış komutlar da öyle. Başlangıçta taban komut kümesinin parçası olan CSR'lar Zicsr adlı ayrı bir uzantıya taşındı; bu yüzden taban komut kümesi bugün ne kesmeleri standart biçimde işleyebiliyor ne de ayrıcalık düzeylerini ayırabiliyor. Bir özelliğin uygulanıp uygulanmadığını söylemesi gereken kaydedici misa; kendisi bir CSR, desteği isteğe bağlı ve tümüyle sıfır okunmasına izin veriliyor. Aynı durum, uygulamaya bağlı bir adresten belleğe eşlenen sistem zamanlayıcısı ve ikisi de zorunlu olmayan kesme vektörleme kipleri için de geçerli.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.