Те успяха да стартират Linux на емулатор RISC-V на VRChat

Преди няколко дни бяха публикувани резултатите от експеримент организация въз основа на стартирането на Ядрото на Linux в 3D виртуалното пространство на онлайн мултиплейър игра.

Този експеримент Това беше направено на VRChat, което позволява зареждане на 3D модели със собствени шейдъри. За да се реализира замислената идея, е създаден емулатор, базиран на архитектурата RISC-V, който се изпълнява от страна на графичния процесор под формата на пикселен шейдър.

За проекта

Емулаторът се основава на внедряването на езика C, чието създаване от своя страна използва разработките на минималистичния емулатор на riscv-rust, който от своя страна е разработен на езика Rust. Подготвеният C код се превежда в пикселен шейдър на езика HLSL, подходящ за зареждане във VRChat.

Емулаторът осигурява пълна поддръжка за архитектурата на набора от инструкции rv32imasu, блока за управление на паметта SV32 и минимален набор от периферни устройства (UART и таймер). Подготвените възможности са достатъчни за зареждане на ядрото на Linux 5.13.5 и основната среда на командния ред на BusyBox, с които можете да взаимодействате директно от виртуалния свят на VRChat.

Около март 2021 г. реших да напиша емулатор, способен да изпълнява пълно ядро ​​на Linux във VRChat. Поради присъщите ограничения на тази платформа, избраният инструмент трябваше да бъде шейдър. И след няколко месеца работа сега съм горд да представя първия в света емулатор на процесор / SoC RISC-V (за който знам) в пикселен шейдър HLSL, способен да работи до 250 kHz (на 2080 Ti) и стартирайте Linux 5.13.5 с поддръжка на MMU.

Емулаторът е реализиран в шейдъра под формата на собствена динамична текстура (Unity Custom Render Texture), допълнена от скриптовете Udon, предвидени за VRChat, които се използват за управление на емулатора по време на изпълнение.

Съдържанието на основната памет и състоянието на процесора на емулираната система се запазват като текстура с размер 2048 × 2048 пиксела, като по този начин емулираният процесор работи на 250 kHz. Освен Linux, Micropython може да се изпълнява и в емулатора.

За да стартирам Linux, мислех, че ще имаме нужда от поне 32 MiB основна памет (RAM), но нека бъдем в безопасност и да направим 64 - разликата в производителността няма да бъде голяма и трябва да има достатъчно VRAM.

Първоначално основната грижа за производителността беше тактовата честота. Тоест колко цикъла на процесора могат да бъдат изпълнени в един кадър.

За организиране на съхранение на данни постоянен с поддръжка за четене и писане, се използва трик, свързан с използването на обект Camera, свързан с правоъгълна област генериран от шейдъра и насочващ изхода на визуализираната текстура към входа на шейдъра. Следователно, Всеки пиксел, написан по време на изпълнение на пикселен шейдър, може да бъде прочетен чрез обработка на следващия кадър.

Когато се прилагат пикселни шейдъри, отделен екземпляр от шейдъра се задейства паралелно за всеки пиксел в текстурата.

Тази функция значително усложнява внедряването и изисква отделна координация на състоянието на цялата емулирана система и сравнение на позицията на обработения пиксел със състоянието на процесора или RAM съдържанието на емулираната система, кодирана в него (всеки пиксел може да кодира 128 бита информация).

В този случай кодът на шейдъра изисква включването на голям брой проверки, за да се опрости изпълнението на който е използван препроцесорът perl perlpp.

За тези, които са интересуват се от спецификациите се споменава, че:

  • кодът е на GitHub
  • 64 MiB оперативна памет минус състоянието на процесора се съхранява в текстура с цяло число 2048 × 2048 пиксела (128 bpp)
  • Персонализираната текстура за изобразяване на Unity с размяна на буфер позволява състояние на кодиране / декодиране между кадри
  • пикселен шейдър се използва за емулация, тъй като изчислителните и безпилотни шейдъри не се поддържат от VRChat

Накрая ако се интересувате да научите повече за това, можете да проверите подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.