XiangShan – Prosesor RISC-V Berkinerja Tinggi Open Source
(github.com/OpenXiangShan)- XiangShan(香山) adalah proyek open source yang menargetkan prosesor RISC-V berkinerja tinggi, dan versi saat ini, Kunminghu(昆明湖), sedang dikembangkan di branch master
- Dokumentasinya tersedia di docs.xiangshan.cc, sementara dokumen desain Kunminghu V2R2 dan panduan pengguna disediakan sebagai dokumen terpisah
- Mikroarsitektur stabil mencakup Yanqihu(雁栖湖) dan Nanhu(南湖); Yanqihu adalah mikroarsitektur stabil pertama yang dikembangkan sejak Juni 2020
- Alur pengembangannya terdiri dari kode desain Scala, konversi FIRRTL, subsistem cache, framework co-simulation difftest, dan image simulasi pra-build
- Proyek ini menyediakan pembuatan Verilog, eksekusi simulator berbasis Verilator, dan jalur eksekusi xspdb, sehingga pembuatan desain dan simulasi program dapat dilakukan di dalam proyek
Ikhtisar proyek
- XiangShan(香山) adalah proyek prosesor RISC-V berkinerja tinggi yang open source
- Penjelasan dalam bahasa Mandarin disediakan sebagai README terpisah
- Dokumentasi proyek dapat dilihat di docs.xiangshan.cc
- Dokumen desain XiangShan untuk Kunminghu V2R2 tersedia terpisah di docs.xiangshan.cc/projects/design
- Panduan pengguna XiangShan tersedia di docs.xiangshan.cc/projects/user-guide dan XiangShan-User-Guide/releases
- Terjemahan dokumentasi menggunakan Weblate, dan kontribusi terjemahan bahasa Inggris serta bahasa lain diterima
- Semua dokumen XiangShan berada di bawah lisensi CC-BY-4.0
Makalah publik dan metodologi pengembangan
- Makalah MICRO 2022 “Towards Developing High Performance RISC-V Processors Using Agile Methodology” membahas XiangShan dan penerapan metodologi pengembangan agile dalam pengembangan prosesor RISC-V berkinerja tinggi
- Makalah ini membahas alat yang dikembangkan dan digunakan untuk mempercepat proses pengembangan chip
- Desain
- Verifikasi fungsional
- Debugging
- Verifikasi performa
- Makalah tersebut menerima ketiga badge Available, Functional, dan Reproduced dalam evaluasi artefak
- Tautan materi:
Versi mikroarsitektur
- Mikroarsitektur stabil pertama adalah Yanqihu(雁栖湖), yang ada di branch yanqihu
- Dikembangkan sejak Juni 2020
- Mikroarsitektur stabil kedua adalah Nanhu(南湖), yang ada di branch nanhu
- Versi saat ini juga disebut Kunminghu(昆明湖), dan masih dalam pengembangan di branch master
- README menyertakan diagram ikhtisar mikroarsitektur Kunminghu
Struktur repositori
- Direktori utama dibagi menjadi kode desain, skrip pengembangan, submodule, cache, co-simulation, dan image eksekusi
src/main/scala: lokasi file desaindevice: perangkat virtual untuk simulasisystem: wrapper SoCtop: modul tingkat atasutils: kode utilitasxiangshan: kode desain utamaxiangshan/transforms: transformasi FIRRTL yang berguna
scripts: skrip untuk pengembangan agileyunsuan: submodule yunsuan milik XiangShanXSCache: subsistem cache XiangShandifftest: framework co-simulation difftestready-to-run: image simulasi yang sudah di-build sebelumnya
IDE dan pembuatan Verilog
- Pengaturan BSP dilakukan dengan
make bsp - Pengaturan IDEA dilakukan dengan
make idea - Kode Verilog dibuat dengan
make verilog- Beberapa file
.svdibuat di folderbuild/rtl/ - Contoh file:
build/rtl/XSTop.sv - Lihat
Makefileuntuk informasi tambahan
- Beberapa file
Menjalankan simulasi
- Untuk menjalankan program melalui simulasi, diperlukan variabel lingkungan dan tool dependensi
- Langkah persiapan:
- Atur
NEMU_HOMEke path absolut NEMU project - Atur
NOOP_HOMEke path absolut proyek XiangShan - Atur
AM_HOMEke path absolut AM project - Instal
mill - Setelah meng-clone proyek, inisialisasi submodule dengan
make init
- Atur
- Simulator berbasis Verilator:
- Perlu menginstal Verilator
- Build simulator C++ berbasis Verilator
./build/emudenganmake emu - Argumen eksekusi dapat dilihat di
./build/emu --help - Lihat
Makefiledanverilator.mkuntuk informasi tambahan
- Contoh eksekusi:
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
Jalur eksekusi xspdb
- xspdb dapat digunakan dengan dua cara
- Mulai cepat dengan binary pra-build:
- Tidak perlu kompilasi dan dapat dijalankan hanya dengan lingkungan Python standar
- Memberikan pengalaman XiangShan penuh dengan penggunaan memori rendah
- XSPdb terbaru dapat diperoleh dari ringkasan eksekusi workflow Actions di repositori
- Build dari kode sumber:
- Perlu menginstal tool verifikasi picker yang mendukung bahasa tingkat tinggi
- Build binary Python XiangShan dengan
make pdb - Jalankan binary XiangShan dengan
make pdb-run
- Contoh interaksi xspdb mencakup memuat binary, menetapkan watchpoint commit PC, menjalankan step per instruksi, menampilkan informasi PC, dan menjalankan hingga titik akhir binary
Pemecahan masalah, komunitas, lisensi
- Dokumentasi pemecahan masalah tersedia di Troubleshooting Guide
- Kanal kontak:
- WeChat: 香山开源处理器
- Zhihu: 香山开源处理器
- Weibo: 香山开源处理器
- Mailing list: xiangshan-all@ict.ac.cn
- Arsip mailing list: mail-archive.com
- Implementasinya terinspirasi oleh beberapa makalah inti, dan daftar makalah terkait ada di Acknowledgements dalam dokumentasi XiangShan
- Pernyataan hak cipta mencakup lembaga berikut
- 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences
- 2021-2025 Beijing Institute of Open Source Chip
- 2020-2022 Peng Cheng Laboratory
- XiangShan berada di bawah lisensi Mulan PSL v2
1 komentar
Opini Hacker News
Jika ingin mencoba simulasi, kamu bisa membuat lingkungan berbasis Ubuntu 24.04 dengan Dockerfile yang saya pakai
Prosesnya mencakup clone
OpenXiangShan/xs-env, instalasi tool, instalasi Verilator, inisialisasi XiangShan, build DRAMsim3, build emulatorDefaultConfig, hingga build contohnexus-am/apps/helloDibutuhkan RAM 64GB, dan dalam kasus saya berjalan dengan 16GB RAM ditambah 48GB swap. Mungkin ada beberapa langkah yang redundan, tetapi saat terakhir saya mencobanya, cara ini berhasil
Proyek ini adalah proyek pertama yang benar-benar merangsang otak saya, karena berbagai minat terbaru saya bertemu dengan cara yang anehnya pas
Namun, bahkan setelah hanya membacanya sekilas, saya jadi sangat berempati kepada pengguna non-Inggris. README-nya cukup ramah bagi pengguna berbahasa Inggris, tetapi saat membacanya saya merasa terus-menerus mengganti nama token di kepala sambil mengikuti alurnya, dan dari proses itu terlihat dua hal
Pertama, saya teringat alasan mengapa saya tidak pernah bisa menamatkan sastra klasik Rusia: sejak awal muncul begitu banyak nama yang tidak termasuk kumpulan nama yang familier, sehingga saya tersesat seperti cache miss
Kedua, bagi pengguna berbahasa Inggris, tampaknya “otot” budaya semacam ini tidak terlalu diperlukan. Itu karena dunia sudah cukup lama memakai bahasa Inggris kurang lebih sebagai lingua franca, dan saya juga teringat lelucon “Apa sebutan untuk orang yang hanya tahu satu bahasa? Penutur monolingual… bercanda, orang Amerika”
Rasanya mungkin saja “orang Amerika seperti saya” memelihara registry publik yang memproses lebih dulu token di dokumentasi dan source. Kalau berupa registry definisi ala
DefinitelyTyped, itu akan sangat niche tetapi tampaknya cukup bergunahttps://structuredprocrastination.com/light/biling.php
https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
Daftar instruksi fusi-nya agak unik. Selain yang sesuai dengan
SH{1,2,3,4}ADD, sisanya memang tidak saya dugaSaya sedang membacanya lewat Google Translate, tetapi eksekusi bersyarat untuk lompatan pendek ala SiFive juga tidak terlihat di sana
Wiki teknis yang mereka pakai cukup sulit dinavigasi dan dicari, dan repositori GitHub tidak resmi juga tidak jauh lebih baik, jadi bahkan sulit mengetahui apakah daftar semacam itu ada
Saya juga memposting tautan proyek ini beberapa minggu lalu, dan melihat proyek akademis seperti ini benar-benar menarik
Bagi yang tertarik, blog dua mingguannya ditautkan di sini, dan sebagian juga tersedia dalam bahasa Inggris: https://docs.xiangshan.cc/zh-cn/latest/blog/
Saya suka karena nama mikroarsitekturnya bertema danau, seperti Yanqihu (Danau Yanqi), Nanhu (Danau Selatan), dan Kunminghu (Danau Kunming)
Coffee Lake? Skylake? Bukan, ini Kunming Lake
https://en.m.wikipedia.org/wiki/List_of_Intel_codenames
Perlu disadari bahwa Tiongkok membuat kemajuan besar dalam AI, robotika, dan prosesor, dan mengesankan juga bahwa banyak di antaranya dirilis sebagai open source
Pekerjaan yang hebat dan menginspirasi
Budaya Tiongkok dibangun di sekitar reproduksi tanpa henti dan perbaikan bertahap, dan ini setidaknya dapat ditelusuri sampai zaman Konfusius. Sebagian orang melihatnya sebagai penyalinan sembarangan, tetapi sebenarnya lebih mirip belajar secara mendalam dan berdiri di atas bahu orang lain
Sikap “fork saja” seperti ini cukup selaras dengan open source, meski tentu bisa terasa menjengkelkan di sisi lisensi hak kekayaan intelektual atau paten
Namun, keterbukaan seperti ini tidak berarti mudah meluas ke luar Tiongkok, terutama ke luar budaya dan wilayah bahasa Tiongkok
Ada produk komersial yang memakai arsitektur Nanhu sebelumnya dari XiangShan. Sepertinya belum dirilis, tetapi tetap menarik
https://milkv.io/ja/ruyibook
Apa strategi di balik merilis ini sebagai open source?
Salah satu hal yang mereka katakan di sana adalah mereka ingin RISC-V secara umum, dan khususnya core mereka sendiri, menjadi platform riset akademis. Jika demikian, ide-ide mutakhir akan dibagikan secara terbuka dan industri di seluruh dunia akan diuntungkan
Jika dilihat secara optimistis, ini adalah keinginan akan masa depan yang lebih baik untuk semua; jika dilihat secara sinis, open source berarti jauh lebih sulit terkena sanksi atau kontrol ekspor. Kebenarannya mungkin berada di antara keduanya
Bagaimanapun, sulit menghasilkan uang dari itu dan universitas biasanya mengizinkannya, jadi sangat bagus untuk CV
Di Eropa juga ada banyak open source, dan sejujurnya pemerintah mereka bukan sedang menyusun konspirasi untuk menghancurkan Amerika Serikat. Saya tidak melihat Linux sebagai rencana pemerintah Swedia untuk menghancurkan Amerika
Berdasarkan pengalaman saya, kebanyakan orang Tiongkok juga tidak terlalu memikirkan negara di luar Tiongkok kecuali mereka berkecimpung dalam perdagangan. Tiongkok begitu besar, bahkan dibanding negara seperti Amerika Serikat, sehingga rasanya mereka hidup dalam gelembungnya sendiri, dan saya rasa mereka tidak memikirkan isu semacam itu setiap hari, apalagi setiap bulan
Caranya adalah menyebarkan barang “cukup bagus” secara gratis yang menyerang moat pesaing. Jika jaraknya tidak besar, ini bisa merusak bisnis pesaing
Apple dan perusahaan teknologi besar yang mendanai OpenStreetMap untuk melawan Google Maps juga bisa dilihat serupa. Mengurangi pendapatan pesaing saja sudah punya nilai strategis
Ucapan Satya Nadella dalam wawancara bahwa ChatGPT saja sudah menjadi kemenangan besar bagi Microsoft jika hanya menaikkan biaya Google Search juga berada dalam konteks yang sama
Senang melihat proyek lain yang memakai Chisel. Saya penasaran ke mana arah industri ini
Verilog dan VHDL tampaknya sudah waktunya digantikan. Saya ingat salah satunya benar-benar tidak menyenangkan saat saya pakai di masa kuliah
Dosen pembimbing tesis sarjana saya menjalankan perusahaan yang mencoba menggantikan Verilog dan VHDL, dan sudah melakukannya jauh lebih dari 10 tahun. Sepertinya belum meninggalkan jejak besar, tetapi saya juga tidak terus mengikuti bidang ini: https://github.com/clash-lang/clash-compiler
Ada juga implementasi RISC-V yang ditulis dengan ini
Tool di bidang ini terlalu mahal untuk dibuat maupun diverifikasi, sementara pasarnya terlalu kecil, sehingga hampir mustahil ada sesuatu yang mengancam ekosistem yang ada dalam jangka waktu yang masuk akal