1 puan yazan GN⁺ 2024-08-28 | 1 yorum | WhatsApp'ta paylaş

Hikâye

  • 1 yıl önce RV64 DynaRec yalnızca Stardew Valley, World of Goo gibi görece "kolay çalıştırılabilen" yerel Linux oyunlarını çalıştırabiliyordu
  • Birçok yeni x86_64 komutu RISC-V'e hızla uygulandı, ancak DynaRec'te hâlâ çok sayıda hata vardı
  • O dönemde AMD ekran kartı bağlanabilen bir RISC-V cihazı yoktu ve VisionFive 2 ile LicheePi 4A'nın IMG entegre grafik birimleri OpenGL'i desteklemiyordu
  • gl4es kullanılarak Stardew Valley gibi oyunlar çalıştırılabiliyordu, ancak bu daha karmaşık Linux oyunları veya Windows oyunları için yeterli değildi
  • Sophgo'nun Milk-V Pioneer'ı sayesinde AMD ekran kartı bağlanabilir hâle geldi ve çok sayıda RV64 DynaRec hatası düzeltilip yeni x86 komutları eklenerek The Witcher 3 çalıştırılabildi

RISC-V DynaRec'in mevcut durumu

  • x86 komut seti çok geniştir
  • ARM64 backend'i 1.600'den fazla x86 komutu uyguladı, ancak RV64 backend'i yaklaşık 1.000 komut uyguladı
  • SSE komutları skaler komutlar olarak uygulandı ve AArch64, Neon genişletmesini; LoongArch64 ise LSX genişletmesini kullandığından performans düşüyor
  • RISC-V'de RVV adlı bir vektör genişletmesi bulunuyor ve Milk-V Pioneer ile SpacemiT K1/M1 SoC bunu destekliyor
  • Kısa süre önce box64'e temel RVV desteği eklendi ve bazı yaygın SSE komutları uygulandı, ancak bu hâlâ erken aşamada

x86 emülasyonu için en gerekli komutlar

  • x86 emülasyonunda RISC-V, AArch64 ve LoongArch64'e kıyasla ifade gücü açısından yetersiz kalıyor
  • RISC-V'de bir register'ın bit aralığını seçmek veya bunu başka bir register'ın bit aralığına yerleştirmek için komut yok
  • Örneğin ADD AH, BL komutunu RISC-V'de uygulamak için 10 komut gerekiyor

16 baytlık atomik komutların yarattığı hayal kırıklığı

  • x86'da LOCK öneki taşıyan atomik işlem komutları bulunuyor ve box64 bunları LR/SC dizisi kullanarak emüle ediyor
  • LOCK CMPXCHG16B komutu 16 baytlık belleği karşılaştırıp değiştirir, ancak RISC-V'de buna karşılık gelen bir komut yok
  • Bu nedenle bu komut tam olarak uygulanamıyor ve Unity oyunları gibi birçok program bu komutu kullanıyor

Sonuç

  • Çeşitli dezavantajlara rağmen The Witcher 3, box64 üzerinde en fazla 15 fps ile çalışıyor ve ana menüde tam hızda çalışıyor

GN⁺ özeti

  • The Witcher 3'ün RISC-V üzerinde çalıştırılması, teknik ilerlemeyi gösteren önemli bir gelişme
  • RISC-V'nin x86 emülasyonu hâlâ diğer mimarilere kıyasla geride, ancak RVV gibi genişletmelerle gelişme potansiyeli var
  • RISC-V'nin ifade gücü eksikliği ve 16 baytlık atomik komutların yokluğu başlıca sorunlar olmaya devam ediyor
  • Benzer işlevlere sahip projeler arasında QEMU gibi emülatörler bulunuyor

1 yorum

 
GN⁺ 2024-08-28
Hacker News yorumu
  • RISC-V’yi hedefleyerek yazılım geliştirirken yazılım mühendislerinin farklı olarak ne yapması gerektiğine dair bir soru var

    • Yürütülebilir dosya boyutu artabilir, bu yüzden önbellek yerelliği için agresif optimizasyon gerekebilir
    • Belirli yazılım türleri CISC veya RISC için daha uygun olabilir; örneğin oyunlar ya da web sunucuları
  • Birkaç büyük RISC-V CPU ve çok sayıda küçük RISC-V CPU ile oluşturulmuş bir "GPU" taşıyan bir sistemin ortaya çıkma olasılığı merak ediliyor

    • Klasik vektörlerin packed SIMD yerine GPU üzerinde faydalı olup olamayacağına dair ek bir soru var
  • Ünlü bir Rus’un Elbrus 8S üzerinde Atomic Heart çalıştırdığı örneği hatırlatılıyor

    • Elbrus’un yerel bir çeviricisi var ve Atomic Heart 15-25 fps ile oynanabiliyordu
  • Makalenin "temeller" konusunda kısa kaldığı yorumu yapılıyor

    • x86_64 ISA’nın bir RISC-V çipinde nasıl uygulandığına dair daha fazla bilgi gerekli
  • x86 emülasyonu bağlamında RISC-V’nin en az ifade gücüne sahip olduğu görüşü var

    • RISC, bilgisayar bilimi tarihi derslerinde basitleştirilmiş komut kümesi bilgisayarı olarak anlatılıyordu
    • Birçok makale ve yeni RISC-V profili, "özellik eşdeğerliği için birkaç komut daha gerekiyor" önerisinde bulunuyor
    • RISC-V’nin diğer platformlara kullanışlı bir alternatif olduğu, ancak RISC hayalinin ölüp ölmediği sorgulanıyor
  • Sonucun şaşırtıcı olduğu yorumu var

    • Çok fazla çalışma gerektiği ve bazı durumlarda RISC-V’nin sınırına ulaşmış gibi göründüğü belirtiliyor
    • Bit seti ve scatter komutlarının uzantı olarak eklenmesi gerektiği söyleniyor
  • 86Box hakkında bir soru var

    • Amstrad PC1512 kullandığı günleri hatırlayarak hard card ve bellek genişletmesi eklediği deneyimini paylaşıyor
    • Borland TurboPascal ve Zortech C ile geçen eğlenceli zamanlar
  • Ekran görüntüsünde 31GB RAM görünüyor

    • En yüksek özellikli geliştirme kartından çok daha fazla RAM kullanılıyor gibi görünüyor
  • Önceki gönderi bağlantısı ve Milk-V Pioneer hakkında bilgi veriliyor

    • Yerel geliştirme için 64 çekirdekli RISC-V anakart ve iş istasyonu ürünü
  • RVI’ye ISA düzeyinde geri bildirim iletilebilmesini uman bir görüş var