1 คะแนน โดย GN⁺ 2024-08-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เรื่องราว

  • เมื่อ 1 ปีก่อน RV64 DynaRec สามารถรันได้เพียงเกม Linux แบบเนทีฟที่ "รันได้ไม่ยาก" อย่าง Stardew Valley และ World of Goo
  • แม้จะมีการนำชุดคำสั่ง x86_64 ใหม่ ๆ จำนวนมากมาใช้งานบน RISC-V อย่างรวดเร็ว แต่ DynaRec ก็ยังมีบั๊กอยู่อีกมาก
  • ในเวลานั้นยังไม่มีอุปกรณ์ RISC-V ที่สามารถต่อการ์ดจอ AMD ได้ และจีพียูแบบรวมของ IMG บน VisionFive 2 และ LicheePi 4A ก็ไม่รองรับ OpenGL
  • สามารถใช้ gl4es เพื่อรันเกมอย่าง Stardew Valley ได้ แต่ยังไม่เพียงพอสำหรับเกม Linux ที่ซับซ้อนกว่านั้นหรือเกม Windows
  • ด้วย Sophgo Milk-V Pioneer จึงสามารถต่อการ์ดจอ AMD ได้ และหลังจากแก้บั๊กของ RV64 DynaRec จำนวนมากพร้อมเพิ่มคำสั่ง x86 ใหม่ ๆ ก็สามารถรัน The Witcher 3 ได้

สถานะปัจจุบันของ RISC-V DynaRec

  • ชุดคำสั่ง x86 มีขนาดใหญ่มาก
  • แบ็กเอนด์ ARM64 รองรับคำสั่ง x86 มากกว่า 1,600 คำสั่ง ขณะที่แบ็กเอนด์ RV64 รองรับราว 1,000 คำสั่ง
  • คำสั่ง SSE ถูกทำงานแบบคำสั่งสเกลาร์ และบน AArch64 ใช้ส่วนขยาย Neon ส่วน LoongArch64 ใช้ส่วนขยาย LSX ทำให้ประสิทธิภาพลดลง
  • RISC-V มีส่วนขยายเวกเตอร์ RVV และ SoC อย่าง Milk-V Pioneer กับ SpacemiT K1/M1 ก็รองรับส่วนขยายนี้
  • ล่าสุดมีการเพิ่มการรองรับ RVV ขั้นพื้นฐานใน box64 และรองรับคำสั่ง SSE ที่ใช้บ่อยบางส่วนแล้ว แต่ยังอยู่ในช่วงเริ่มต้น

คำสั่งที่จำเป็นที่สุดสำหรับการจำลอง x86

  • สำหรับการจำลอง x86 นั้น RISC-V มีความสามารถในการแสดงออกของชุดคำสั่งด้อยกว่า AArch64 และ LoongArch64
  • RISC-V ไม่มีคำสั่งสำหรับเลือกช่วงบิตของรีจิสเตอร์ หรือแทรกช่วงบิตนั้นเข้าไปในช่วงบิตของอีกรีจิสเตอร์หนึ่ง
  • ตัวอย่างเช่น การทำคำสั่ง ADD AH, BL บน RISC-V ต้องใช้ถึง 10 คำสั่ง

ความน่าผิดหวังของคำสั่งอะตอมมิก 16 ไบต์

  • x86 มีคำสั่งปฏิบัติการแบบอะตอมมิกที่ใช้คำนำหน้า LOCK และ box64 จำลองสิ่งนี้ด้วยลำดับ LR/SC
  • คำสั่ง LOCK CMPXCHG16B ใช้เปรียบเทียบและสลับหน่วยความจำขนาด 16 ไบต์ แต่ RISC-V ไม่มีคำสั่งที่เทียบเท่ากัน
  • ดังนั้นจึงไม่สามารถทำคำสั่งนี้ได้อย่างสมบูรณ์ และโปรแกรมจำนวนมาก เช่น เกมที่สร้างด้วย Unity ก็ใช้คำสั่งนี้

บทสรุป

  • แม้จะมีข้อเสียหลายอย่าง The Witcher 3 ก็ยังรันบน box64 ได้ที่สูงสุด 15fps และในเมนูหลักสามารถทำงานได้เต็มความเร็ว

สรุปโดย GN⁺

  • การรัน The Witcher 3 บน RISC-V เป็นเหตุการณ์สำคัญที่แสดงถึงความก้าวหน้าทางเทคนิค
  • การจำลอง x86 บน RISC-V ยังด้อยกว่าสถาปัตยกรรมอื่น แต่ก็มีโอกาสพัฒนาได้ผ่านส่วนขยายอย่าง RVV
  • ข้อจำกัดด้านความสามารถในการแสดงออกของ RISC-V และการไม่มีคำสั่งอะตอมมิก 16 ไบต์ยังคงเป็นปัญหาหลัก
  • โครงการที่มีลักษณะใกล้เคียงกัน ได้แก่ อีมูเลเตอร์อย่าง QEMU

1 ความคิดเห็น

 
GN⁺ 2024-08-28
ความเห็นจาก Hacker News
  • มีคำถามว่าวิศวกรซอฟต์แวร์ต้องทำอะไรต่างออกไปบ้างเมื่อพัฒนาซอฟต์แวร์โดยเล็งเป้าไปที่ RISC-V

    • ขนาดไฟล์ปฏิบัติการอาจเพิ่มขึ้น จึงต้องปรับแต่งอย่างจริงจังเพื่อให้เกิด cache locality ที่ดี
    • ซอฟต์แวร์บางประเภทอาจเหมาะกับ CISC หรือ RISC มากกว่า เช่น เกมหรือเว็บเซิร์ฟเวอร์
  • สงสัยถึงความเป็นไปได้ที่จะมีระบบที่ติดตั้ง "GPU" ซึ่งประกอบด้วย CPU RISC-V ขนาดใหญ่ไม่กี่ตัวและ CPU RISC-V ขนาดเล็กจำนวนมาก

    • มีคำถามต่อยอดว่าคลาสสิกเวกเตอร์อาจมีประโยชน์บน GPU มากกว่า packed SIMD หรือไม่
  • นึกถึงกรณีที่ชาวรัสเซียผู้มีชื่อเสียงรัน Atomic Heart บน Elbrus 8S

    • Elbrus มีตัวแปลแบบเนทีฟ และ Atomic Heart เล่นได้ที่ 15-25 fps
  • มีความเห็นว่าบทความกล่าวถึง "พื้นฐาน" น้อยเกินไป

    • ต้องการข้อมูลเพิ่มเติมว่าได้ทำให้ ISA x86_64 ทำงานบนชิป RISC-V อย่างไร
  • มีความเห็นว่าในบริบทของการจำลอง x86 นั้น RISC-V มีความสามารถในการแสดงออกน้อยที่สุด

    • ในวิชาประวัติศาสตร์วิทยาการคอมพิวเตอร์ RISC ถูกอธิบายว่าเป็นคอมพิวเตอร์ชุดคำสั่งแบบลดรูป
    • บทความจำนวนมากและโปรไฟล์ RISC-V ใหม่ ๆ เสนอว่า "ต้องมีคำสั่งเพิ่มอีกเล็กน้อยเพื่อให้เทียบเท่าด้านความสามารถ"
    • แม้ RISC-V จะเป็นทางเลือกที่สะดวกสำหรับแพลตฟอร์มอื่น แต่ก็เกิดคำถามว่าความฝันของ RISC ได้ตายไปแล้วหรือไม่
  • มีความเห็นว่าเป็นผลลัพธ์ที่น่าทึ่ง

    • ต้องใช้ความพยายามอย่างมาก และในบางกรณีก็ดูเหมือนว่า RISC-V ไปถึงขีดจำกัดแล้ว
    • คำสั่ง bit set และ scatter ควรถูกเพิ่มเข้ามาเป็นส่วนขยาย
  • มีคำถามเกี่ยวกับ 86Box

    • ย้อนนึกถึงช่วงที่เคยใช้ Amstrad PC1512 และแบ่งปันประสบการณ์การเพิ่ม hard card กับ memory expansion
    • เป็นช่วงเวลาที่สนุกกับ Borland TurboPascal และ Zortech C
  • ในภาพหน้าจอแสดงแรม 31GB

    • ดูเหมือนว่าจะใช้แรมมากกว่าบอร์ดพัฒนารุ่นสเปกสูงสุดอย่างมาก
  • มีลิงก์ไปยังโพสต์ก่อนหน้าและข้อมูลเกี่ยวกับ Milk-V Pioneer

    • เป็นเมนบอร์ดและเวิร์กสเตชัน RISC-V แบบ 64 คอร์ สำหรับการพัฒนาแบบเนทีฟ
  • มีความเห็นว่าอยากจะส่งต่อฟีดแบ็กระดับ ISA ไปยัง RVI ได้