XiangShan (เซียงซาน) – โปรเซสเซอร์ RISC-V ประสิทธิภาพสูงแบบโอเพนซอร์ส
(github.com/OpenXiangShan)- 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 wrappertop: โมดูลระดับบนสุดutils: โค้ดยูทิลิตีxiangshan: โค้ดออกแบบหลักxiangshan/transforms: การแปลง FIRRTL ที่มีประโยชน์
scripts: สคริปต์สำหรับ การพัฒนาแบบ Agileyunsuan: submodule yunsuan ของ XiangShanXSCache: ซับซิสเต็มแคชของ XiangShandifftest: เฟรมเวิร์กจำลองร่วม difftestready-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
- ช่องทางติดต่อ:
- WeChat: 香山开源处理器
- Zhihu: 香山开源处理器
- Weibo: 香山开源处理器
- เมลลิงลิสต์: xiangshan-all@ict.ac.cn
- archive ของเมลลิงลิสต์: mail-archive.com
- การใช้งานจริงได้รับแรงบันดาลใจจากงานวิจัยสำคัญหลายฉบับ และรายชื่อบทความที่เกี่ยวข้องอยู่ใน 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
ยังไม่มีความคิดเห็น