Эмулятор RISC-V Π² Ρ„ΠΎΡ€ΠΌΠ΅ пиксСльного ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, позволивший Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Linux Π² VRChat

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ экспСримСнта ΠΏΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ запуска Linux Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ 3D-пространства ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ online-ΠΈΠ³Ρ€Ρ‹ VRChat, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ со своими ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ ΠΈΠ΄Π΅ΠΈ Π±Ρ‹Π» создан эмулятор Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V, выполняСмый Π½Π° сторонС GPU Π² Π²ΠΈΠ΄Π΅ пиксСльного (Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ) ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π° (VRChat Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ ΠΈ UAV). Код эмулятора ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

Π’ основС эмулятора Π·Π°Π»ΠΎΠΆΠ΅Π½Π° рСализация Π½Π° языкС Π‘ΠΈ, ΠΏΡ€ΠΈ создании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ минималистичного эмулятора riscv-rust, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π° языкС Rust. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π‘ΠΈ-ΠΊΠΎΠ΄ транслируСтся Π² ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ Π½Π° языкС HLSL, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² VRChat. Π’ эмуляторС прСдоставляСтся полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ rv32imasu, Π±Π»ΠΎΠΊ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ SV32 ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств (UART ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€). ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… возмоТностСй достаточно для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ядра Linux 5.13.5 ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ окруТСния ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки BusyBox, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° VRChat.

Эмулятор RISC-V Π² Ρ„ΠΎΡ€ΠΌΠ΅ пиксСльного ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, позволивший Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Linux Π² VRChat
Эмулятор RISC-V Π² Ρ„ΠΎΡ€ΠΌΠ΅ пиксСльного ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, позволивший Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Linux Π² VRChat

Эмулятор Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅ собствСнной динамичСской тСкстуры (Unity Custom Render Texture), Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ прСдоставляСмыми для VRChat скриптами Udon, задСйствованными для управлСния эмулятором Π²ΠΎ врСмя Π΅Π³ΠΎ выполнСния. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ состояниС процСссора эмулируСмой систСмы сохраняСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ тСкстуры, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2048×2048 пиксСлСй. Π­ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ процСссор Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с частотой 250 kHz. Помимо Linux Π² эмуялторС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Micropython.

Эмулятор RISC-V Π² Ρ„ΠΎΡ€ΠΌΠ΅ пиксСльного ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, позволивший Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Linux Π² VRChat

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ постоянного хранСния Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ чтСния ΠΈ записи примСняСтся Ρ‚Ρ€ΡŽΠΊ, связанный с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Camera, привязанного ΠΊ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠΌ, ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° отрисовываСмой тСкстуры Π½Π° Π²Ρ…ΠΎΠ΄ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ любой пиксСль, записанный Π² процСссС выполнСния пиксСльного ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ°Π΄Ρ€Π°.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля тСкстуры ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ запускаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°. Данная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ сущСствСнно услоТняСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ состояния всСй эмулируСмой систСмы ΠΈ сопоставлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ пиксСля с Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Ρ‘ΠΌ состояниСм CPU ΠΈΠ»ΠΈ содСрТимым ΠžΠ—Π£ эмулируСмой систСмы (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 128 Π±ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ). Код ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π° ΠΏΡ€ΠΈ этом Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ числа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, для упрощСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» задСйствован perl-прСпроцСссор perlpp.



Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ