2P by GN⁺ | ★ favorite | 댓글 1개
  • XiangShan(香山) 은 고성능 RISC-V 프로세서를 목표로 하는 오픈소스 프로젝트이며, 현재 버전 Kunminghu(昆明湖) 는 master 브랜치에서 개발 중임
  • 문서는 docs.xiangshan.cc에 공개되어 있고, Kunminghu V2R2 설계 문서와 사용자 가이드가 별도 문서로 제공됨
  • 안정 마이크로아키텍처는 Yanqihu(雁栖湖)Nanhu(南湖) 가 있으며, Yanqihu는 2020년 6월부터 개발된 첫 안정 마이크로아키텍처임
  • 개발 흐름은 Scala 설계 코드, FIRRTL 변환, 캐시 서브시스템, difftest 공동 시뮬레이션 프레임워크, 사전 빌드 시뮬레이션 이미지로 구성됨
  • Verilog 생성, Verilator 기반 시뮬레이터 실행, xspdb 실행 경로를 제공해 설계 생성과 프로그램 시뮬레이션을 프로젝트 안에서 수행할 수 있음

프로젝트 개요

공개 논문과 개발 방법론

  • MICRO 2022 논문 “Towards Developing High Performance RISC-V Processors Using Agile Methodology”는 XiangShan과 고성능 RISC-V 프로세서 개발에서의 애자일 개발 방법론 적용을 다룸
  • 논문은 칩 개발 과정을 가속하기 위해 개발·사용한 도구를 다룸
    • 설계
    • 기능 검증
    • 디버깅
    • 성능 검증
  • 해당 논문은 아티팩트 평가에서 Available, Functional, Reproduced 세 가지 배지를 모두 받음
  • 자료 링크:

마이크로아키텍처 버전

  • 첫 안정 마이크로아키텍처는 Yanqihu(雁栖湖) 이며, yanqihu 브랜치에 있음
    • 2020년 6월부터 개발됨
  • 두 번째 안정 마이크로아키텍처는 Nanhu(南湖) 이며, nanhu 브랜치에 있음
  • 현재 버전은 Kunminghu(昆明湖) 로도 불리며, master 브랜치에서 아직 개발 중임
  • README에는 Kunminghu 마이크로아키텍처 개요 다이어그램이 포함됨

저장소 구조

  • 주요 디렉터리는 설계 코드, 개발 스크립트, 서브모듈, 캐시, 공동 시뮬레이션, 실행 이미지로 나뉨
  • src/main/scala: 설계 파일 위치
    • device: 시뮬레이션용 가상 장치
    • system: SoC 래퍼
    • top: 최상위 모듈
    • utils: 유틸리티 코드
    • xiangshan: 주요 설계 코드
    • xiangshan/transforms: 유용한 FIRRTL 변환
  • scripts: 애자일 개발용 스크립트
  • yunsuan: XiangShan의 yunsuan 서브모듈
  • XSCache: XiangShan의 캐시 서브시스템
  • difftest: difftest 공동 시뮬레이션 프레임워크
  • ready-to-run: 사전 빌드된 시뮬레이션 이미지

IDE와 Verilog 생성

  • BSP 설정은 make bsp로 수행함
  • IDEA 설정은 make idea로 수행함
  • Verilog 코드는 make verilog로 생성함
    • 여러 .sv 파일이 build/rtl/ 폴더에 생성됨
    • 예시 파일은 build/rtl/XSTop.sv
    • 추가 정보는 Makefile을 참조함

시뮬레이션 실행

  • 프로그램을 시뮬레이션으로 실행하려면 환경 변수와 의존 도구가 필요함
  • 준비 단계:
    • NEMU_HOMENEMU project절대 경로로 설정
    • NOOP_HOME을 XiangShan 프로젝트의 절대 경로로 설정
    • AM_HOMEAM project절대 경로로 설정
    • mill 설치
    • 프로젝트를 클론한 뒤 make init으로 서브모듈 초기화
  • Verilator 기반 시뮬레이터:
    • Verilator 설치 필요
    • make emu로 Verilator 기반 C++ 시뮬레이터 ./build/emu를 빌드함
    • 실행 인자는 ./build/emu --help에서 확인함
    • 추가 정보는 Makefileverilator.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는 두 가지 방식으로 사용할 수 있음
  • 사전 빌드 바이너리로 빠르게 시작:
    • 컴파일이 필요 없고 표준 Python 환경만으로 실행 가능함
    • 메모리 사용량이 낮은 전체 XiangShan 경험을 제공함
    • 최신 XSPdb는 저장소 Actions 워크플로의 실행 요약에서 받을 수 있음
  • 소스 코드에서 빌드:
    • 고수준 언어를 지원하는 검증 도구 picker 설치 필요
    • make pdb로 XiangShan Python 바이너리를 빌드함
    • make pdb-run으로 XiangShan 바이너리를 실행함
  • xspdb 예시 상호작용은 바이너리 로드, 커밋 PC 워치포인트 설정, 명령어 단위 스텝 실행, PC 정보 출력, 바이너리 종료 지점까지 실행을 포함함

문제 해결, 커뮤니티, 라이선스

  • 문제 해결 문서는 Troubleshooting Guide에서 제공됨
  • 연락 채널:
  • 구현은 여러 핵심 논문에서 영감을 받았으며, 관련 논문 목록은 XiangShan 문서의 Acknowledgements에 있음
  • 저작권 표기는 다음 기관을 포함함
    • 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 라이선스를 따름

댓글과 토론

Hacker News 의견들
  • 시뮬레이션을 해보고 싶다면 내가 쓰는 Dockerfile로 Ubuntu 24.04 기반 환경을 만들 수 있음
    OpenXiangShan/xs-env를 클론하고 도구 설치, Verilator 설치, XiangShan 초기화, DRAMsim3 빌드, DefaultConfig 에뮬레이터 빌드, nexus-am/apps/hello 예제 빌드까지 진행함
    RAM 64GB가 필요하고, 내 경우 16GB RAM에 48GB 스왑을 추가해서 동작했음. 중복 단계가 있을 수 있지만 마지막으로 시도했을 때는 이 방식이 먹혔음

    • 왜 그렇게 메모리를 많이 쓰는지 궁금함
  • 이 프로젝트는 최근 관심사들이 묘하게 맞물려서 처음으로 머리를 제대로 자극한 프로젝트였음
    다만 아주 짧게 훑어보고도 비영어권 사용자에게 크게 공감하게 됐음. README는 영어권 사용자에게는 충분히 친절하지만, 읽으면서 머릿속에서 토큰 이름을 계속 바꿔가며 따라가는 느낌이었고, 그 과정에서 두 가지가 보였음
    첫째, 고전 러시아 문학을 끝까지 못 읽는 이유가 떠올랐는데, 익숙한 이름 집합에 없는 이름들이 초반부터 쏟아져서 캐시 미스처럼 길을 잃게 됨
    둘째, 영어권 사용자에게는 이런 문화적 근육이 별로 필요하지 않았던 것 같음. 지구가 꽤 오래 영어를 어느 정도 공용어처럼 써왔기 때문이고, “한 언어만 아는 사람을 뭐라고 부르나? 단일언어 구사자… 농담이고 미국인”이라는 농담도 떠오름
    문서와 소스 안의 토큰을 미리 처리해주는 공개 레지스트리를 “나 같은 미국인”들이 유지할 수도 있어 보임. DefinitelyTyped 스타일의 정의 레지스트리라면 매우 틈새지만 꽤 유용할 듯함

    • 단일언어 구사자라서 기분이 나빠질 때는 “몇 개 언어를 아느냐”보다 “내가 사는 곳에서 약 1,000마일 안에 있고 500만 명 이상이 쓰는 언어 중 몇 퍼센트를 아느냐”가 더 공정한 질문이라는 글이 있음
      https://structuredprocrastination.com/light/biling.php
  • https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
    융합 명령어 목록이 좀 특이함. 어차피 SH{1,2,3,4}ADD에 대응하는 것들을 빼면 나머지는 예상하지 못했음
    Google Translate로 보는 중이긴 하지만, SiFive 스타일의 짧은 점프 조건 실행도 거기서는 보이지 않음

    • RISC-V 조직 자체가 권장하는 명령어 융합 시퀀스를 어디엔가 목록화하거나 문서화해두는지 궁금함
      사용하는 기술 위키는 탐색과 검색이 꽤 어렵고, 비공식 GitHub 저장소들도 별로 낫지 않아서 있는지조차 파악하기 힘듦
  • 몇 주 전에도 이 프로젝트 링크를 올렸는데, 이런 학술 프로젝트를 보는 건 정말 흥미로움
    관심 있는 사람은 격주 블로그가 여기 연결돼 있고, 일부는 영어로도 제공됨: https://docs.xiangshan.cc/zh-cn/latest/blog/

  • 마이크로아키텍처 이름이 Yanqihu(雁栖湖), Nanhu(南湖), Kunminghu(昆明湖)처럼 호수 테마라서 좋음
    Coffee Lake? Skylake? 아니고 Kunming Lake임
    https://en.m.wikipedia.org/wiki/List_of_Intel_codenames

  • 중국이 AI, 로봇공학, 프로세서에서 크게 진전하고 있다는 점은 알아둘 필요가 있고, 그중 많은 부분을 오픈소스로 공개하는 것도 인상적임
    훌륭한 작업이고 영감을 줌

    • RISC-V는 애초에 자유 오픈소스 소프트웨어 아닌가?
    • 오픈소스화 자체가 성공 요인의 일부일 가능성도 큼
      중국 문화는 끊임없는 재현과 점진적 개선을 중심으로 구축돼 있고, 이는 적어도 공자 시대까지 거슬러 올라감. 어떤 사람들은 이를 무분별한 베끼기로 보지만, 실제로는 깊이 배우고 다른 사람의 어깨 위에 서는 것에 가까움
      이런 “포크하라”는 태도는 오픈소스와 꽤 잘 맞지만, 지식재산권 라이선스나 특허 쪽에는 당연히 짜증 나는 방식일 수 있음
      다만 이런 개방성이 중국 밖, 특히 중국 문화와 언어권 밖으로 쉽게 확장된다는 뜻은 아님
  • XiangShan의 이전 Nanhu 아키텍처를 쓰는 상용 제품이 있음. 아직 출시된 것 같지는 않지만 그래도 흥미로움
    https://milkv.io/ja/ruyibook

  • 이걸 오픈소스로 공개하는 전략이 뭘까?

    • HotChips 2024에서 발표했음: https://www.youtube.com/watch?v=4_R0S6piLA0&t=2114s
      거기서 말한 것 중 하나는 RISC-V 전반, 특히 자신들의 코어가 학술 연구 플랫폼이 되기를 바란다는 점이었음. 그렇게 되면 최첨단 아이디어가 공개적으로 공유되고 산업계가 전 세계적으로 이득을 봄
      낙관적으로 보면 모두를 위한 더 나은 미래를 바라는 것이고, 냉소적으로 보면 오픈소스는 제재나 수출 통제가 훨씬 어렵다는 뜻임. 진실은 아마 그 중간쯤일 것 같음
    • 대학은 원래 항상 오픈소스로 공개함. 나도 대학에서 만드는 건 전부 오픈소스로 공개함
      어차피 돈을 벌기 어렵고 대학이 보통 허용하니, 이력서에는 매우 좋기 때문임
      유럽에도 오픈소스가 많고, 솔직히 말해 정부가 미국을 파괴하려는 음모를 꾸미는 건 아님. Linux가 스웨덴 정부의 미국 파괴 계획이라고 보지는 않음
      내 경험상 중국인 대부분도 무역업에 종사하지 않는 한 중국 밖 나라를 크게 신경 쓰지 않음. 중국은 미국 같은 나라와 비교해도 너무 커서 자기만의 거품 안에서 사는 느낌이고, 그런 문제를 매달은커녕 매일 생각하지도 않는 것 같음
    • 다른 동기는 서구의 칩 설계 지배력을 약화시키는 것일 수 있음
      경쟁자의 해자를 공격하는 “충분히 좋은” 물건을 무료로 뿌리는 방식임. 격차가 크지 않다면 경쟁자의 사업을 망가뜨릴 수도 있음
      Apple과 대형 기술 기업들이 Google Maps에 맞서 OpenStreetMap에 자금을 대는 것도 비슷하게 볼 수 있음. 경쟁자의 수익을 줄이는 것만으로도 전략적 가치가 있음
      Satya Nadella가 인터뷰에서 ChatGPT가 Google 검색 비용만 높여도 Microsoft에는 큰 승리라고 말한 것도 같은 맥락임
    • 현실적으로는 중국과학원 내부 그룹이 다른 국가 지원 연구기관들처럼 평가에서 더 큰 영향력 지표를 원해서일 가능성이 큼
    • 전략은 중국 홍보, 채택 확대 마케팅, 칩 양강 구도 깨기, 기여 확보, 그리고 기술을 범용재로 만들어 제재에 면역을 갖추는 것에 가까워 보임
  • Chisel을 쓰는 또 다른 프로젝트를 보니 반가움. 업계에서는 방향이 어디로 가는지 궁금함
    Verilog와 VHDL은 대체될 때가 된 것처럼 보임. 둘 중 하나는 대학 때 정말 불쾌하게 썼던 기억이 있음

    • 무엇이 바뀌어서 이제 Verilog와 VHDL이 대체될 때가 됐다는 건지 궁금함
      내 학사 논문 지도교수는 Verilog와 VHDL을 대체하려는 회사를 운영하고 있고, 10년도 훨씬 넘게 해왔음. 아직 큰 흔적을 남긴 것 같지는 않지만 이 분야를 계속 따라보지는 않았음: https://github.com/clash-lang/clash-compiler
      이걸로 작성된 RISC-V 구현도 있음
      이 분야의 도구는 만들기도 검증하기도 너무 비싸고 시장은 너무 작아서, 합리적인 기간 안에 기존 생태계를 위협하는 무언가가 나오기는 거의 불가능해 보임