XiangShan (Xiangshan) – açık kaynaklı yüksek performanslı RISC-V işlemcisi
(github.com/OpenXiangShan)- XiangShan(香山), yüksek performanslı bir RISC-V işlemciyi hedefleyen açık kaynaklı bir projedir ve mevcut sürüm Kunminghu(昆明湖) şu anda master branch üzerinde geliştirilmektedir
- Belgeler docs.xiangshan.cc üzerinde yayımlanmıştır; Kunminghu V2R2 tasarım dokümanı ve kullanıcı kılavuzu ayrı belgeler olarak sunulur
- Kararlı mikro mimariler Yanqihu(雁栖湖) ve Nanhu(南湖)'dur; Yanqihu, Haziran 2020'den beri geliştirilen ilk kararlı mikro mimaridir
- Geliştirme akışı Scala tasarım kodu, FIRRTL dönüşümü, cache alt sistemi, difftest ortak simülasyon çerçevesi ve önceden derlenmiş simülasyon imajlarından oluşur
- Verilog üretimi, Verilator tabanlı simülatör çalıştırma ve xspdb çalıştırma yolları sunularak tasarım üretimi ve program simülasyonu proje içinde gerçekleştirilebilir
Proje özeti
- XiangShan(香山), açık kaynaklı yüksek performanslı bir RISC-V işlemci projesidir
- Çince açıklama ayrı bir README olarak sunulur
- Proje belgeleri docs.xiangshan.cc adresinde görülebilir
- Kunminghu V2R2 için XiangShan tasarım dokümanı ayrıca docs.xiangshan.cc/projects/design adresinde yayımlanır
- XiangShan kullanıcı kılavuzu docs.xiangshan.cc/projects/user-guide ve XiangShan-User-Guide/releases üzerinden sunulur
- Belge çevirileri için Weblate kullanılır ve İngilizce ile diğer dillere katkılar kabul edilir
- Tüm XiangShan belgeleri CC-BY-4.0 lisansı altındadır
Yayımlanmış makale ve geliştirme metodolojisi
- MICRO 2022 makalesi “Towards Developing High Performance RISC-V Processors Using Agile Methodology”, XiangShan'ı ve yüksek performanslı RISC-V işlemci geliştirmede çevik geliştirme metodolojisinin uygulanmasını ele alır
- Makale, çip geliştirme sürecini hızlandırmak için geliştirilen ve kullanılan araçları kapsar
- Tasarım
- İşlevsel doğrulama
- Hata ayıklama
- Performans doğrulama
- Bu makale, artifact değerlendirmesinde Available, Functional ve Reproduced olmak üzere üç rozeti de almıştır
- Kaynak bağlantıları:
Mikro mimari sürümleri
- İlk kararlı mikro mimari Yanqihu(雁栖湖) olup yanqihu branch içindedir
- Haziran 2020'den beri geliştirilmektedir
- İkinci kararlı mikro mimari Nanhu(南湖) olup nanhu branch içindedir
- Mevcut sürüm Kunminghu(昆明湖) olarak da adlandırılır ve master branch üzerinde hâlâ geliştirilmektedir
- README içinde Kunminghu mikro mimarisine ait bir genel bakış diyagramı bulunur
Depo yapısı
- Ana dizinler tasarım kodu, geliştirme script'leri, submodule'ler, cache, ortak simülasyon ve çalıştırılabilir imajlar olarak ayrılır
src/main/scala: tasarım dosyalarının konumudevice: simülasyon için sanal aygıtlarsystem: SoC wrappertop: en üst düzey modülutils: yardımcı kodlarxiangshan: ana tasarım koduxiangshan/transforms: faydalı FIRRTL dönüşümleri
scripts: çevik geliştirme için script'leryunsuan: XiangShan'ın yunsuan submodule'üXSCache: XiangShan'ın cache alt sistemidifftest: difftest ortak simülasyon çerçevesiready-to-run: önceden derlenmiş simülasyon imajları
IDE ve Verilog üretimi
- BSP ayarı
make bspile yapılır - IDEA ayarı
make ideaile yapılır - Verilog kodu
make verilogile üretilirbuild/rtl/klasöründe birden fazla.svdosyası oluşturulur- Örnek dosya
build/rtl/XSTop.sv - Ek bilgi için
Makefiledosyasına bakın
Simülasyon çalıştırma
- Bir programı simülasyonda çalıştırmak için ortam değişkenleri ve bağımlı araçlar gerekir
- Hazırlık adımları:
NEMU_HOME, NEMU project için mutlak yol olarak ayarlanmalıdırNOOP_HOME, XiangShan projesinin mutlak yolu olarak ayarlanmalıdırAM_HOME, AM project için mutlak yol olarak ayarlanmalıdırmillkurulmalıdır- Proje clone edildikten sonra submodule'leri başlatmak için
make initçalıştırılmalıdır
- Verilator tabanlı simülatör:
- Verilator kurulmalıdır
- Verilator tabanlı C++ simülatörü
./build/emu,make emuile derlenir - Çalıştırma argümanları
./build/emu --helpile görülebilir - Ek bilgi için
Makefileveverilator.mkdosyalarına bakın
- Çalıştırma örneği:
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 çalıştırma yolları
- xspdb iki şekilde kullanılabilir
- Önceden derlenmiş ikili dosya ile hızlı başlangıç:
- Derleme gerektirmez ve yalnızca standart bir Python ortamıyla çalışabilir
- Düşük bellek kullanımıyla tam XiangShan deneyimi sunar
- En güncel XSPdb, depo içindeki Actions workflow'unun çalıştırma özetinden indirilebilir
- Kaynak koddan derleme:
- Yüksek seviyeli dilleri destekleyen doğrulama aracı picker kurulmalıdır
- XiangShan Python ikilisi
make pdbile derlenir - XiangShan ikilisi
make pdb-runile çalıştırılır
- xspdb örnek etkileşimleri; ikili dosya yükleme, commit PC watchpoint ayarlama, komut bazında adım adım ilerleme, PC bilgisini yazdırma ve ikili dosyanın bitiş noktasına kadar çalıştırmayı içerir
Sorun giderme, topluluk, lisans
- Sorun giderme belgeleri Troubleshooting Guide adresinde sunulur
- İletişim kanalları:
- WeChat: XiangShan Açık Kaynak İşlemci
- Zhihu: XiangShan Açık Kaynak İşlemci
- Weibo: XiangShan Açık Kaynak İşlemci
- Mailing list: xiangshan-all@ict.ac.cn
- Mailing list arşivi: mail-archive.com
- Uygulama çeşitli temel makalelerden ilham almıştır; ilgili makalelerin listesi XiangShan belgelerindeki Acknowledgements bölümünde yer alır
- Telif hakkı bildirimi şu kurumları içerir
- 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 lisansı altındadır
1 yorum
Hacker News yorumları
Simülasyon yapmak istiyorsanız, benim kullandığım Dockerfile ile Ubuntu 24.04 tabanlı bir ortam oluşturabilirsiniz
OpenXiangShan/xs-envdeposunu klonlayıp araç kurulumunu, Verilator kurulumunu, XiangShan başlatmayı, DRAMsim3 derlemeyi,DefaultConfigemülatörünü derlemeyi venexus-am/apps/helloörneğini derlemeyi yapıyor64 GB RAM gerekiyor; benim durumumda 16 GB RAM’e 48 GB swap ekleyerek çalıştırabildim. Yinelenen adımlar olabilir ama son denediğimde bu yöntem işe yaramıştı
Bu proje, son dönemdeki ilgi alanlarımın tuhaf biçimde kesişmesiyle ilk kez zihnimi gerçekten çalıştıran bir proje oldu
Ancak çok kısa bir göz gezdirmeyle bile İngilizce konuşmayan kullanıcılara ciddi biçimde empati duydum. README, İngilizce konuşan kullanıcılar için yeterince anlaşılır ama okurken kafamda token adlarını sürekli değiştirerek takip ediyormuşum gibi hissettim ve bu süreçte iki şey fark ettim
Birincisi, klasik Rus edebiyatını neden sonuna kadar okuyamadığımı hatırladım: alışık olduğum ad kümesinde olmayan adlar en baştan akmaya başlayınca, cache miss yaşar gibi yolumu kaybediyorum
İkincisi, İngilizce konuşan kullanıcıların böyle bir kültürel kasa pek ihtiyaç duymamış gibi göründüğü. Çünkü dünya epey uzun süredir İngilizceyi bir ölçüde ortak dil gibi kullanıyor; “Tek dil bilen kişiye ne denir? Tek dilli… şaka bir yana, Amerikalı” esprisi de aklıma geldi
Belgeler ve kaynak içindeki token’ları önceden işleyen herkese açık bir registry’yi “benim gibi Amerikalılar”ın sürdürebileceği düşünülebilir.
DefinitelyTypedtarzı bir tanım registry’si çok niş olurdu ama oldukça işe yarayabilirhttps://structuredprocrastination.com/light/biling.php
https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
Birleşik komut listesi biraz ilginç. Zaten
SH{1,2,3,4}ADDkarşılıkları dışında kalanları beklemiyordumGoogle Translate ile bakıyorum ama SiFive tarzı kısa atlama koşullu yürütme de orada görünmüyor
Kullandıkları teknik wiki’de gezinmek ve arama yapmak epey zor; gayriresmî GitHub depoları da pek daha iyi değil, bu yüzden var olup olmadığını bile anlamak güç
Birkaç hafta önce de bu projenin bağlantısını paylaşmıştım; böyle akademik projeleri görmek gerçekten ilginç
İlgilenenler için iki haftada bir yayımlanan blog burada bağlantılanmış, bazıları İngilizce de sunuluyor: https://docs.xiangshan.cc/zh-cn/latest/blog/
Mikro mimari adlarının Yanqihu(雁栖湖), Nanhu(南湖), Kunminghu(昆明湖) gibi göl temalı olması hoşuma gidiyor
Coffee Lake mi? Skylake mi? Hayır, Kunming Lake
https://en.m.wikipedia.org/wiki/List_of_Intel_codenames
Çin’in yapay zeka, robotik ve işlemcilerde büyük ilerleme kaydettiğini bilmek gerekiyor; bunun önemli bir kısmını açık kaynak olarak yayımlamaları da etkileyici
Harika bir çalışma ve ilham verici
Çin kültürü sürekli yeniden üretim ve kademeli iyileştirme üzerine kurulu; bu en azından Konfüçyüs dönemine kadar gider. Bazıları bunu düşüncesizce kopyalama olarak görüyor ama aslında derinlemesine öğrenmeye ve başkalarının omuzları üzerinde yükselmeye daha yakın
Bu “fork’la” tutumu açık kaynakla oldukça iyi örtüşüyor; ancak fikrî mülkiyet lisansları veya patentler açısından elbette can sıkıcı bir yaklaşım olabilir
Yine de bu açıklığın Çin dışına, özellikle de Çin kültürü ve dil alanı dışına kolayca genişlediği anlamına gelmez
XiangShan’ın önceki Nanhu mimarisini kullanan ticari bir ürün var. Henüz piyasaya çıkmış gibi görünmüyor ama yine de ilginç
https://milkv.io/ja/ruyibook
Bunu açık kaynak olarak yayımlamanın stratejisi ne olabilir?
Orada söyledikleri şeylerden biri, RISC-V’nin genel olarak, özellikle de kendi çekirdeklerinin bir akademik araştırma platformu olmasını istemeleriydi. Böyle olursa en ileri fikirler açık biçimde paylaşılır ve sektör küresel ölçekte fayda sağlar
İyimser bakışla herkes için daha iyi bir gelecek istemek; alaycı bakışla ise açık kaynağa yaptırım ya da ihracat kontrolü uygulamanın çok daha zor olması demek. Gerçek muhtemelen ikisinin arasında bir yerdedir
Zaten para kazanmak zor ve üniversite genellikle izin veriyor; ayrıca özgeçmiş için çok iyi
Avrupa’da da çok açık kaynak var ve açıkçası hükümetin ABD’yi yok etmeye yönelik bir komplo kurduğunu söyleyemeyiz. Linux’un İsveç hükümetinin ABD’yi yok etme planı olduğunu düşünmüyorum
Benim deneyimime göre Çinlilerin çoğu da ticaretle uğraşmadıkları sürece Çin dışındaki ülkeleri pek umursamıyor. Çin, ABD gibi ülkelerle karşılaştırıldığında bile o kadar büyük ki kendi balonunda yaşıyor gibi; böyle meseleleri her ay, hele her gün düşündüklerini sanmıyorum
Rakibin hendeklerine saldıran “yeterince iyi” bir şeyi ücretsiz dağıtmak gibi. Aradaki fark büyük değilse rakibin işini bozabilir
Apple ve büyük teknoloji şirketlerinin Google Maps’e karşı OpenStreetMap’i fonlaması da benzer görülebilir. Rakibin gelirini azaltmanın kendisi bile stratejik değer taşır
Satya Nadella’nın bir röportajda ChatGPT’nin Google arama maliyetini artırmasının bile Microsoft için büyük bir zafer olacağını söylemesi de aynı bağlamda
Chisel kullanan başka bir proje görmek sevindirici. Sektörde yönün nereye gittiğini merak ediyorum
Verilog ve VHDL’in yerlerinin alınma zamanı gelmiş gibi görünüyor. İkisinden birini üniversitede gerçekten tatsız biçimde kullandığımı hatırlıyorum
Lisans tezi danışmanım Verilog ve VHDL’in yerini almaya çalışan bir şirket yönetiyor ve bunu 10 yılı aşkın süredir yapıyor. Henüz büyük bir iz bıraktığını sanmıyorum ama bu alanı sürekli takip etmedim: https://github.com/clash-lang/clash-compiler
Bununla yazılmış bir RISC-V uygulaması da var
Bu alandaki araçları yapmak da doğrulamak da çok pahalı, pazar ise çok küçük; bu yüzden makul bir süre içinde mevcut ekosistemi tehdit edecek bir şeyin ortaya çıkması neredeyse imkânsız görünüyor