{"id":101103,"date":"2021-08-27T10:23:05","date_gmt":"2021-08-27T08:23:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat"},"modified":"2021-08-27T10:23:05","modified_gmt":"2021-08-27T08:23:07","slug":"emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","title":{"rendered":"L'emulatore RISC-V sotto forma di shader pixel ha reso possibile l'esecuzione di Linux in VRChat.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Sono stati pubblicati i risultati di un esperimento volto a organizzare l'esecuzione di Linux all'interno di uno spazio 3D virtuale di un gioco online multiplayer, VRChat, che consente il caricamento di modelli 3D con shader personalizzati. Per realizzare l'idea, \u00e8 stato creato un emulatore dell'architettura RISC-V, eseguito sul lato GPU sotto forma di shader pixel (fragment shader) (VRChat non supporta gli shader computazionali e UAV). Il codice dell'emulatore \u00e8 stato pubblicato con licenza MIT.    <\/p>\n<p>L'emulatore si basa su un'implementazione in linguaggio C, che a sua volta utilizza i lavori di un emulatore minimalista riscv-rust, sviluppato in Rust. Il codice C preparato viene tradotto in uno shader pixel in HLSL, pronto per essere caricato in VRChat. L'emulatore offre un supporto completo per l'architettura del set di istruzioni rv32imasu, un'unit\u00e0 di controllo della memoria SV32 e un insieme minimo di dispositivi periferici (UART e timer). Le funzionalit\u00e0 preparate sono sufficienti per caricare il kernel Linux 5.13.5 e l'ambiente di comando di base BusyBox, con il quale \u00e8 possibile interagire direttamente dal mondo virtuale di VRChat.     <center><img decoding=\"async\" alt=\"L&#039;emulatore RISC-V sotto forma di shader pixel ha reso possibile l&#039;esecuzione di Linux in VRChat.\" src=\"\/wp-content\/uploads\/2021\/08\/da291c8d8172791b2e58d6cdb1c5b2e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <center><img decoding=\"async\" alt=\"L&#039;emulatore RISC-V sotto forma di shader pixel ha reso possibile l&#039;esecuzione di Linux in VRChat.\" src=\"\/wp-content\/uploads\/2021\/08\/7661b3895d32075c5e6cdf7f043d3532.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>L'emulatore \u00e8 stato implementato nello shader sotto forma di una texture dinamica personalizzata (Unity Custom Render Texture), integrata da script Udon forniti per VRChat, utilizzati per gestire l'emulatore durante la sua esecuzione. Il contenuto della memoria RAM e lo stato del processore del sistema emulato vengono salvati sotto forma di una texture di dimensioni 2048&#215;2048 pixel. Il processore emulato funziona a una frequenza di 250 kHz. Oltre a Linux, nell'emulatore pu\u00f2 essere eseguito anche Micropython.    <center><img decoding=\"async\" alt=\"L&#039;emulatore RISC-V sotto forma di shader pixel ha reso possibile l&#039;esecuzione di Linux in VRChat.\" src=\"\/wp-content\/uploads\/2021\/08\/5b2ea8a3fcf98bff04a6455682381a67.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Per organizzare un'archiviazione permanente dei dati con supporto per lettura e scrittura, viene utilizzato un trucco legato all'oggetto Camera, associato a un'area rettangolare generata dallo shader, e alla direzione di output della texture disegnata verso l'input dello shader. In questo modo, ogni pixel scritto durante l'esecuzione dello shader pixel pu\u00f2 essere letto durante l'elaborazione del frame successivo.     <\/p>\n<p>Quando si utilizzano shader pixel, per ogni pixel della texture viene eseguito un'istanza separata dello shader in parallelo. Questa caratteristica complica notevolmente l'implementazione e richiede una coordinazione separata dello stato dell'intero sistema emulato e l'abbinamento della posizione del pixel elaborato con lo stato della CPU o il contenuto della RAM del sistema emulato codificati al suo interno (ogni pixel pu\u00f2 codificare 128 bit di informazioni). Il codice dello shader richiede quindi l'inserimento di un numero enorme di controlli, per semplificare l'implementazione dei quali \u00e8 stato utilizzato il pre-processore perlpp.           <center>  <div class=\"youtube-placeholder\" data-id=\"G2u7NOpzcBQ\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/G2u7NOpzcBQ\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=55694\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0439 \u0438\u0434\u0435\u0438 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b RISC-V, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 GPU \u0432 \u0432\u0438\u0434\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e) \u0448\u0435\u0439\u0434\u0435\u0440\u0430 (VRChat \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0448\u0435\u0439\u0434\u0435\u0440\u044b \u0438 UAV). \u041a\u043e\u0434 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":101104,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-101103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 RISC-V \u0432 \u0444\u043e\u0440\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Linux \u0432 VRChat | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-08-27T08:23:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-27T08:23:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Emulatore RISC-V in forma di pixel shader, che ha permesso di avviare Linux in VRChat | ProHoster","description":"Sono stati pubblicati i risultati di un esperimento per l'organizzazione del lancio di Linux all'interno di uno spazio 3D virtuale del gioco online multiplayer VRChat, che consente il caricamento di modelli 3D con shader personalizzati.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 RISC-V \u0432 \u0444\u043e\u0440\u043c\u0435 \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0435\u0439\u0434\u0435\u0440\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Linux \u0432 VRChat | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Linux \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e 3D-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 online-\u0438\u0433\u0440\u044b VRChat, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0448\u0435\u0439\u0434\u0435\u0440\u0430\u043c\u0438.","og:url":"https:\/\/prohoster.info\/it\/blog\/news\/emulyator-risc-v-v-forme-pikselnogo-shejdera-pozvolivshij-zapustit-linux-v-vrchat","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-08-27T08:23:07+00:00","article:modified_time":"2021-08-27T08:23:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"101103","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-08-27 08:26:07","updated":"2022-09-27 18:54:52","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/101103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=101103"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/101103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/101104"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=101103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=101103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=101103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}