VRChat의 RISC-V 에뮬레이터에서 Linux를 실행할 수 있었습니다.

며칠 전 실험 결과가 나왔다 의 출시를 기반으로 한 조직 3D 가상 공간 내의 Linux 커널 온라인 멀티 플레이어 게임의.

이 실험 자체 셰이더로 3D 모델을 로드할 수 있는 VRChat에서 수행되었습니다.. 구상한 아이디어를 구현하기 위해 RISC-V 아키텍처를 기반으로 하는 에뮬레이터를 만들었습니다. 이 에뮬레이터는 GPU 측에서 픽셀 셰이더 형태로 실행됩니다.

프로젝트 정보

에뮬레이터는 C 언어의 구현을 기반으로 하며, 그 생성은 차례로 Rust 언어로 개발된 미니멀리스트 riscv-rust 에뮬레이터의 개발을 사용했습니다. 준비된 C 코드는 VRChat에 로드하기에 적합한 HLSL 언어의 픽셀 셰이더로 변환됩니다.

에뮬레이터 rv32imasu 명령어 세트 아키텍처를 완벽하게 지원합니다. SV32 메모리 컨트롤 유닛 최소한의 주변 장치 세트 (UART 및 타이머). 준비된 기능은 Linux 커널 5.13.5 및 BusyBox 기본 명령줄 환경을 로드하기에 충분하며 VRChat 가상 세계에서 직접 상호 작용할 수 있습니다.

2021년 250월경 VRChat에서 전체 Linux 커널을 실행할 수 있는 에뮬레이터를 작성하기로 결정했습니다. 해당 플랫폼의 고유한 한계로 인해 선택한 도구는 셰이더여야 했습니다. 그리고 몇 달 간의 작업 끝에 이제 HLSL 픽셀 셰이더에서 세계 최초의 RISC-V CPU/SoC 에뮬레이터(내가 알고 있는)를 소개하게 된 것을 자랑스럽게 생각합니다. 최대 2080kHz(5.13.5Ti에서) MMU 지원으로 Linux XNUMX를 부팅합니다.

에뮬레이터는 런타임에 에뮬레이터를 제어하는 ​​데 사용되는 VRChat용으로 제공되는 Udon 스크립트로 보완된 자체 동적 텍스처(Unity Custom Render Texture)의 형태로 셰이더에서 구현됩니다.

에뮬레이트된 시스템의 주 메모리 내용과 프로세서 상태는 2048 × 2048 픽셀 크기의 텍스처로 저장되어 에뮬레이트된 프로세서를 250kHz에서 작동합니다. Linux 외에 Micropython도 에뮬레이터에서 실행할 수 있습니다.

Linux를 실행하려면 최소 32MiB의 주 메모리(RAM)가 필요하다고 생각했지만 안전하고 64로 만들자. 성능 차이는 크지 않고 충분한 VRAM이 있어야 합니다.

처음에 주요 성능 문제는 클럭 속도였습니다. 즉, 한 프레임에서 실행할 수 있는 CPU 사이클 수입니다.

데이터 저장을 구성하려면 읽기와 쓰기를 지속적으로 지원하며, 직사각형 영역에 연결된 Camera 개체 사용과 관련된 트릭이 사용됩니다. 셰이더에 의해 생성되고 렌더링된 텍스처의 출력을 셰이더의 입력으로 보냅니다. 그러므로, 픽셀 셰이더 실행 중에 작성된 모든 픽셀은 다음 프레임을 처리하여 읽을 수 있습니다.

픽셀 셰이더가 적용되면 텍스처의 각 픽셀에 대해 셰이더의 별도 인스턴스가 병렬로 실행됩니다.

이 기능은 구현을 상당히 복잡하게 하고 전체 에뮬레이트된 시스템의 상태를 별도로 조정하고 처리된 픽셀의 위치를 ​​에뮬레이트된 시스템의 CPU 또는 RAM 콘텐츠 상태와 비교해야 합니다(각 픽셀은 128비트를 인코딩할 수 있습니다. 정보).

이 경우, 셰이더 코드는 많은 수의 검사를 포함해야 하며 구현을 단순화하기 위해 perl 전처리기 perlpp가 사용되었습니다.

사람들을 위해 사양에 관심 다음과 같이 언급되어 있습니다.

  • 코드는 GitHub에 있습니다
  • 64MiB의 RAM에서 CPU 상태를 뺀 값은 2048 × 2048픽셀(128bpp) 정수 형식 텍스처에 저장됩니다.
  • 버퍼 스와핑이 포함된 Unity 커스텀 렌더 텍스처는 프레임 간의 인코딩/디코딩 상태를 허용합니다.
  • 픽셀 셰이더는 계산에 사용되며 UAV 셰이더는 VRChat에서 지원되지 않습니다.

최종적으로 그것에 대해 더 많이 알고 싶다면, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.