2 poin oleh GN⁺ 2025-01-04 | 1 komentar | Bagikan ke WhatsApp
  • 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

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 desain
    • device: perangkat virtual untuk simulasi
    • system: wrapper SoC
    • top: modul tingkat atas
    • utils: kode utilitas
    • xiangshan: kode desain utama
    • xiangshan/transforms: transformasi FIRRTL yang berguna
  • scripts: skrip untuk pengembangan agile
  • yunsuan: submodule yunsuan milik XiangShan
  • XSCache: subsistem cache XiangShan
  • difftest: framework co-simulation difftest
  • ready-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 .sv dibuat di folder build/rtl/
    • Contoh file: build/rtl/XSTop.sv
    • Lihat Makefile untuk informasi tambahan

Menjalankan simulasi

  • Untuk menjalankan program melalui simulasi, diperlukan variabel lingkungan dan tool dependensi
  • Langkah persiapan:
    • Atur NEMU_HOME ke path absolut NEMU project
    • Atur NOOP_HOME ke path absolut proyek XiangShan
    • Atur AM_HOME ke path absolut AM project
    • Instal mill
    • Setelah meng-clone proyek, inisialisasi submodule dengan make init
  • Simulator berbasis Verilator:
    • Perlu menginstal Verilator
    • Build simulator C++ berbasis Verilator ./build/emu dengan make emu
    • Argumen eksekusi dapat dilihat di ./build/emu --help
    • Lihat Makefile dan verilator.mk untuk 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:
  • 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

 
GN⁺ 2025-01-04
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 emulator DefaultConfig, hingga build contoh nexus-am/apps/hello
    Dibutuhkan 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

    • Saya penasaran kenapa memakai memori sebanyak itu
  • 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 berguna

    • Ada tulisan yang mengatakan bahwa ketika merasa tersinggung karena menjadi penutur monolingual, pertanyaan yang lebih adil daripada “berapa bahasa yang kamu tahu” adalah “berapa persen bahasa yang digunakan oleh lebih dari 5 juta orang dan berada dalam sekitar 1.000 mil dari tempat tinggalmu yang kamu ketahui”
      https://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 duga
    Saya sedang membacanya lewat Google Translate, tetapi eksekusi bersyarat untuk lompatan pendek ala SiFive juga tidak terlihat di sana

    • Saya penasaran apakah organisasi RISC-V sendiri mencantumkan atau mendokumentasikan urutan fusi instruksi yang direkomendasikan di suatu tempat
      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

    • Bukankah RISC-V memang sejak awal merupakan perangkat lunak bebas dan open source?
    • Sangat mungkin open source itu sendiri merupakan bagian dari faktor keberhasilannya
      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?

    • Mereka mempresentasikannya di HotChips 2024: https://www.youtube.com/watch?v=4_R0S6piLA0&t=2114s
      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
    • Universitas memang selalu merilis sebagai open source. Saya juga merilis semua yang saya buat di universitas sebagai open source
      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
    • Motif lain bisa jadi melemahkan dominasi Barat dalam desain chip
      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
    • Secara realistis, kemungkinan besar sebuah grup internal Akademi Ilmu Pengetahuan Tiongkok, seperti lembaga riset lain yang didukung negara, menginginkan metrik dampak yang lebih besar dalam evaluasi
    • Strateginya tampak lebih dekat ke promosi Tiongkok, pemasaran untuk memperluas adopsi, memecah duopoli chip, mendapatkan kontribusi, dan menjadikan teknologinya sebagai komoditas umum agar kebal terhadap sanksi
  • 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

    • Saya penasaran apa yang berubah sehingga sekarang Verilog dan VHDL sudah waktunya digantikan
      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