2 puan yazan GN⁺ 2025-01-04 | 1 yorum | WhatsApp'ta paylaş
  • 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

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 konumu
    • device: simülasyon için sanal aygıtlar
    • system: SoC wrapper
    • top: en üst düzey modül
    • utils: yardımcı kodlar
    • xiangshan: ana tasarım kodu
    • xiangshan/transforms: faydalı FIRRTL dönüşümleri
  • scripts: çevik geliştirme için script'ler
  • yunsuan: XiangShan'ın yunsuan submodule'ü
  • XSCache: XiangShan'ın cache alt sistemi
  • difftest: difftest ortak simülasyon çerçevesi
  • ready-to-run: önceden derlenmiş simülasyon imajları

IDE ve Verilog üretimi

  • BSP ayarı make bsp ile yapılır
  • IDEA ayarı make idea ile yapılır
  • Verilog kodu make verilog ile üretilir
    • build/rtl/ klasöründe birden fazla .sv dosyası oluşturulur
    • Örnek dosya build/rtl/XSTop.sv
    • Ek bilgi için Makefile dosyası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ır
    • NOOP_HOME, XiangShan projesinin mutlak yolu olarak ayarlanmalıdır
    • AM_HOME, AM project için mutlak yol olarak ayarlanmalıdır
    • mill kurulmalı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 emu ile derlenir
    • Çalıştırma argümanları ./build/emu --help ile görülebilir
    • Ek bilgi için Makefile ve verilator.mk dosyaları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 pdb ile derlenir
    • XiangShan ikilisi make pdb-run ile ç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

1 yorum

 
GN⁺ 2025-01-04
Hacker News yorumları
  • Simülasyon yapmak istiyorsanız, benim kullandığım Dockerfile ile Ubuntu 24.04 tabanlı bir ortam oluşturabilirsiniz
    OpenXiangShan/xs-env deposunu klonlayıp araç kurulumunu, Verilator kurulumunu, XiangShan başlatmayı, DRAMsim3 derlemeyi, DefaultConfig emülatörünü derlemeyi ve nexus-am/apps/hello örneğini derlemeyi yapıyor
    64 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ı

    • Neden bu kadar çok bellek kullandığını merak ediyorum
  • 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. DefinitelyTyped tarzı bir tanım registry’si çok niş olurdu ama oldukça işe yarayabilir

    • Tek dilli olduğunuz için kendinizi kötü hissettiğinizde, “kaç dil biliyorsun”dan ziyade “yaşadığım yerin yaklaşık 1.000 mil çevresinde bulunan ve 5 milyondan fazla kişinin konuştuğu dillerin yüzde kaçını biliyorum” sorusunun daha adil olduğunu söyleyen bir yazı var
      https://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}ADD karşılıkları dışında kalanları beklemiyordum
    Google Translate ile bakıyorum ama SiFive tarzı kısa atlama koşullu yürütme de orada görünmüyor

    • RISC-V organizasyonunun bizzat önerdiği komut birleştirme dizilerini bir yerde listeleyip belgelendirip belgelendirmediğini merak ediyorum
      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

    • RISC-V zaten başından beri özgür ve açık kaynak yazılım değil mi?
    • Açık kaynak haline getirmenin kendisi de başarı etkenlerinden biri olabilir
      Ç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?

    • HotChips 2024’te sunum yaptılar: https://www.youtube.com/watch?v=4_R0S6piLA0&t=2114s
      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
    • Üniversiteler zaten her zaman açık kaynak yayımlar. Ben de üniversitede yaptığım her şeyi açık kaynak yayımlıyorum
      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
    • Bir başka motivasyon, Batı’nın çip tasarımı üzerindeki hâkimiyetini zayıflatmak olabilir
      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
    • Gerçekçi olarak, Çin Bilimler Akademisi içindeki bir grubun diğer devlet destekli araştırma kurumları gibi değerlendirmelerde daha büyük etki metrikleri istemesi olasılığı yüksek
    • Strateji daha çok Çin’in tanıtımı, benimsemeyi artırmaya dönük pazarlama, çipteki iki kutuplu yapıyı kırma, katkı toplama ve teknolojiyi genel amaçlı bir emtiaya dönüştürerek yaptırımlara karşı bağışıklık kazandırma gibi görünüyor
  • 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

    • Ne değişti de Verilog ve VHDL’in artık yerlerinin alınma zamanı geldiğini merak ediyorum
      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