• XiangShan (香山) เป็นโปรเจกต์โอเพนซอร์สที่มุ่งสร้างโปรเซสเซอร์ RISC-V ประสิทธิภาพสูง และเวอร์ชันปัจจุบัน Kunminghu (昆明湖) กำลังพัฒนาอยู่บนบรanch master
  • เอกสารเผยแพร่ไว้ที่ docs.xiangshan.cc และมีเอกสารออกแบบ Kunminghu V2R2 กับคู่มือผู้ใช้แยกต่างหาก
  • ไมโครสถาปัตยกรรมที่เสถียรมี Yanqihu (雁栖湖) และ Nanhu (南湖) โดย Yanqihu เป็นไมโครสถาปัตยกรรมเสถียรรุ่นแรกที่เริ่มพัฒนาตั้งแต่เดือนมิถุนายน 2020
  • โฟลว์การพัฒนาประกอบด้วยโค้ดออกแบบภาษา Scala, การแปลง FIRRTL, ซับซิสเต็มแคช, เฟรมเวิร์กจำลองร่วม difftest และอิมเมจจำลองที่ build ไว้ล่วงหน้า
  • มีเส้นทางสำหรับสร้าง Verilog, รันซิมูเลเตอร์บน Verilator และรัน xspdb เพื่อให้ทำการสร้างดีไซน์และจำลองโปรแกรมได้ภายในโปรเจกต์

ภาพรวมโปรเจกต์

  • XiangShan (香山) เป็นโปรเจกต์ โปรเซสเซอร์ RISC-V ประสิทธิภาพสูงแบบโอเพนซอร์ส
  • คำอธิบายภาษาจีนมีให้เป็น README แยกต่างหาก
  • เอกสารโปรเจกต์ดูได้ที่ docs.xiangshan.cc
  • เอกสารออกแบบ XiangShan สำหรับ Kunminghu V2R2 เผยแพร่แยกไว้ที่ docs.xiangshan.cc/projects/design
  • คู่มือผู้ใช้ XiangShan มีให้ที่ docs.xiangshan.cc/projects/user-guide และ XiangShan-User-Guide/releases
  • การแปลเอกสารใช้ Weblate และรับการมีส่วนร่วมแปลภาษาอังกฤษและภาษาอื่น ๆ
  • เอกสาร XiangShan ทั้งหมดอยู่ภายใต้ไลเซนส์ CC-BY-4.0

งานวิจัยที่เผยแพร่และระเบียบวิธีการพัฒนา

  • บทความ MICRO 2022 “Towards Developing High Performance RISC-V Processors Using Agile Methodology” กล่าวถึง XiangShan และการประยุกต์ใช้ระเบียบวิธีพัฒนาแบบ Agile ในการพัฒนาโปรเซสเซอร์ RISC-V ประสิทธิภาพสูง
  • บทความนี้กล่าวถึงเครื่องมือที่พัฒนาและใช้งานเพื่อเร่งกระบวนการพัฒนาชิป
    • การออกแบบ
    • การตรวจสอบฟังก์ชัน
    • การดีบัก
    • การตรวจสอบประสิทธิภาพ
  • บทความดังกล่าวได้รับ badge ทั้งสามรายการในการประเมินอาร์ติแฟกต์ ได้แก่ Available, Functional, Reproduced
  • ลิงก์เอกสาร:

เวอร์ชันไมโครสถาปัตยกรรม

  • ไมโครสถาปัตยกรรมเสถียรรุ่นแรกคือ Yanqihu (雁栖湖) อยู่ใน บรanch yanqihu
    • เริ่มพัฒนาตั้งแต่เดือนมิถุนายน 2020
  • ไมโครสถาปัตยกรรมเสถียรรุ่นที่สองคือ Nanhu (南湖) อยู่ใน บรanch nanhu
  • เวอร์ชันปัจจุบันยังเรียกว่า Kunminghu (昆明湖) และยังอยู่ระหว่างพัฒนาบนบรanch master
  • README มีไดอะแกรมภาพรวมไมโครสถาปัตยกรรม Kunminghu รวมอยู่ด้วย

โครงสร้าง repository

  • ไดเรกทอรีหลักแบ่งเป็นโค้ดออกแบบ, สคริปต์พัฒนา, submodule, แคช, การจำลองร่วม และอิมเมจสำหรับรัน
  • src/main/scala: ตำแหน่งของ ไฟล์ออกแบบ
    • device: อุปกรณ์เสมือนสำหรับการจำลอง
    • system: SoC wrapper
    • top: โมดูลระดับบนสุด
    • utils: โค้ดยูทิลิตี
    • xiangshan: โค้ดออกแบบหลัก
    • xiangshan/transforms: การแปลง FIRRTL ที่มีประโยชน์
  • scripts: สคริปต์สำหรับ การพัฒนาแบบ Agile
  • yunsuan: submodule yunsuan ของ XiangShan
  • XSCache: ซับซิสเต็มแคชของ XiangShan
  • difftest: เฟรมเวิร์กจำลองร่วม difftest
  • ready-to-run: อิมเมจจำลองที่ build ไว้ล่วงหน้า

IDE และการสร้าง Verilog

  • ตั้งค่า BSP ด้วย make bsp
  • ตั้งค่า IDEA ด้วย make idea
  • สร้างโค้ด Verilog ด้วย make verilog
    • ไฟล์ .sv หลายไฟล์จะถูกสร้างในโฟลเดอร์ build/rtl/
    • ตัวอย่างไฟล์คือ build/rtl/XSTop.sv
    • ดูข้อมูลเพิ่มเติมได้จาก Makefile

การรันซิมูเลชัน

  • หากต้องการรันโปรแกรมผ่านซิมูเลชัน ต้องมี environment variable และเครื่องมือ dependency ที่จำเป็น
  • ขั้นตอนเตรียมพร้อม:
    • ตั้งค่า NEMU_HOME เป็น พาธแบบ absolute ของ โปรเจกต์ NEMU
    • ตั้งค่า NOOP_HOME เป็น พาธแบบ absolute ของโปรเจกต์ XiangShan
    • ตั้งค่า AM_HOME เป็น พาธแบบ absolute ของ โปรเจกต์ AM
    • ติดตั้ง mill
    • หลัง clone โปรเจกต์แล้ว ให้ initialize submodule ด้วย make init
  • ซิมูเลเตอร์บน Verilator:
    • ต้องติดตั้ง Verilator
    • build ซิมูเลเตอร์ C++ บน Verilator ที่ ./build/emu ด้วย make emu
    • ตรวจสอบ argument สำหรับรันได้จาก ./build/emu --help
    • ดูข้อมูลเพิ่มเติมได้จาก Makefile และ verilator.mk
  • ตัวอย่างการรัน:
    • make emu CONFIG=MinimalConfig EMU_THREADS=2 -j10
    • ./build/emu -b 0 -e 0 -i ./ready-to-run/coremark-2-iteration.bin --diff ./ready-to-run/riscv64-nemu-interpreter-so

เส้นทางการรัน xspdb

  • xspdb ใช้งานได้สองวิธี
  • เริ่มต้นอย่างรวดเร็วด้วย binary ที่ build ไว้ล่วงหน้า:
    • ไม่จำเป็นต้อง compile และรันได้ด้วยสภาพแวดล้อม Python มาตรฐานเท่านั้น
    • มอบประสบการณ์ XiangShan แบบเต็มโดยใช้หน่วยความจำต่ำ
    • XSPdb ล่าสุดดาวน์โหลดได้จากสรุปการรันของเวิร์กโฟลว์ Actions ใน repository
  • build จากซอร์สโค้ด:
    • ต้องติดตั้งเครื่องมือตรวจสอบ picker ที่รองรับภาษาระดับสูง
    • build binary Python ของ XiangShan ด้วย make pdb
    • รัน binary ของ XiangShan ด้วย make pdb-run
  • ตัวอย่าง interaction ของ xspdb ครอบคลุมการโหลด binary, การตั้ง watchpoint สำหรับ commit PC, การ step ทีละคำสั่ง, การแสดงข้อมูล PC และการรันจนถึงจุดสิ้นสุดของ binary

การแก้ปัญหา, ชุมชน และไลเซนส์

  • เอกสารแก้ปัญหามีให้ที่ Troubleshooting Guide
  • ช่องทางติดต่อ:
  • การใช้งานจริงได้รับแรงบันดาลใจจากงานวิจัยสำคัญหลายฉบับ และรายชื่อบทความที่เกี่ยวข้องอยู่ใน Acknowledgements ของเอกสาร XiangShan
  • ข้อความลิขสิทธิ์รวมหน่วยงานต่อไปนี้
    • 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences
    • 2021-2025 Beijing Institute of Open Source Chip
    • 2020-2022 Peng Cheng Laboratory
  • XiangShan อยู่ภายใต้ไลเซนส์ Mulan PSL v2

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น