Пре неколико дана објављени су резултати експеримента организација заснована на покретању Линук кернел унутар 3Д виртуелног простора онлајн игре за више играча.
Овај експеримент Урађено је на ВРЦхат -у који омогућава учитавање 3Д модела сопственим схадерима. Да би се имплементирала замишљена идеја, направљен је емулатор заснован на РИСЦ-В архитектури који се извршава на ГПУ страни у облику пикел схадер-а.
О пројекту
Емулатор је заснован на имплементацији на језику Ц, чије је стварање заузврат користило развој минималистичког емулатора рисцв-руст, који је заузврат развијен у језику Руст. Припремљени Ц код се преводи у пикел схадер на ХЛСЛ језику, погодан за учитавање у ВРЦхат.
Емулатор пружа потпуну подршку за архитектуру скупа инструкција рв32имасу, управљачка јединица меморије СВ32 и минимални скуп периферних уређаја (УАРТ и тајмер). Припремљене могућности довољне су за учитавање Линук кернела 5.13.5 и основног окружења командне линије БусиБок -а, са којим можете директно да комуницирате из виртуелног света ВРЦхат -а.
Око марта 2021. године одлучио сам да напишем емулатор способан за покретање пуног Линук језгра у ВРЦхат -у. Због инхерентних ограничења те платформе, изабрани алат је морао бити сенчник. И после неколико месеци рада, сада сам поносан што представљам први у свету РИСЦ-В ЦПУ / СоЦ емулатор (за који знам) у ХЛСЛ пикселу, способном да ради до 250 кХз (на 2080 Ти) и покрените Линук 5.13.5 са подршком за ММУ.
Емулатор је имплементиран у сенци у облику сопствене динамичке текстуре (Унити Цустом Рендер Тектуре), допуњена Удон скриптама предвиђеним за ВРЦхат, које се користе за контролу емулатора у току извођења.
Главни садржај меморије и стање процесора емулираног система чувају се као текстура величине 2048 × 2048 пиксела, чиме се емулирани процесор ради на 250 кХз. Осим Линука, Мицропитхон се може покренути и на емулатору.
За покретање Линука мислио сам да ће нам требати најмање 32 МиБ главне меморије (РАМ), али будимо сигурни и направимо 64 - разлика у перформансама неће бити велика и требало би бити довољно ВРАМ -а.
У почетку је главна брига о перформансама била брзина такта. То јест, колико циклуса процесора може да се изврши у једном оквиру.
За организовање складиштења података упорни са подршком за читање и писање, користи се трик који се односи на коришћење објекта Камера повезаног са правоугаоном површином генерише схадер и усмерава излаз приказане текстуре на улаз схадер -а. Стога, Сваки пиксел написан током извођења пикел схадер -а може се прочитати обрадом следећег кадра.
Када се примене пикел схадер -и, паралелно се покреће засебна инстанца схадер -а за сваки пиксел у текстури.
Ова функција значајно компликује имплементацију и захтева одвојену координацију стања целог емулираног система и поређење положаја обрађеног пиксела са стањем ЦПУ -а или РАМ -а емулираног система кодираног у њему (сваки пиксел може кодирати 128 бита информације).
У овом случају, код схадер -а захтева укључивање великог броја провера, да би се поједноставила имплементација које је коришћен перл предпроцесор перлпп.
За оне који јесу занимају спецификације помиње се да:
- код је на ГитХуб -у
- 64 МиБ РАМ -а минус стање процесора ускладиштено је у текстури целог броја 2048 × 2048 пиксела (128 бпп)
- Унити прилагођена текстура рендера са заменом бафера омогућава кодирање / декодирање стања између оквира
- за емулацију се користи сензор пиксела јер ВРЦхат не подржава рачунарске и УАВ сенке
Коначно ако сте заинтересовани да сазнате више о томе, можете проверити детаље У следећем линку.