Red Hat прСдставил Nova, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для GPU NVIDIA, написанный Π½Π° языкС Rust

Компания Red Hat Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Nova, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для GPU NVIDIA, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ управлСния GPU вынСсСны Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ GSP (GPU System Processor). Новый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ модуля для ядра Linux ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ подсистСму DRM (Direct Rendering Manager). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ позиционируСтся ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Nouveau для GPU с GSP-ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ начиная с сСрии NVIDIA GeForce RTX 2000 Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Turing, ΠΈ Π² долгосрочной пСрспСктивС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Nouveau.

Код Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° написан Π½Π° языкС Rust ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько прослоСк для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° Π΄Π°Π½Π½ΠΎΠΌ языкС, Π΅Ρ‰Ρ‘ Π½Π΅ принятых Π² основной состав ядра. НапримСр, Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ задСйствован Π½Π°Π±ΠΎΡ€ абстракций для построСния Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ rust-device, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с шиной PCI ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ rust-pci ΠΈ обвязки для подсистСм DRM ΠΈ GEM ΠΈΠ· Π²Π΅Ρ‚ΠΊΠΈ rust-drm, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Rust-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° drm-asahi для GPU Ρ‡ΠΈΠΏΠΎΠ² Apple M1 ΠΈ M2. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ языка Rust повысит Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈΠ·-Π·Π° сниТСния вСроятности ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π²ΠΈΠ΄Π΅ΠΎΠ΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², обвязок ΠΈ абстракций для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° Rust.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° упоминаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ упрощСния ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ Nouveau, благодаря Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², прСдоставляСмых ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ GSP. Из-Π·Π° нСобходимости ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ старых GPU NVIDIA ΠΊΠΎΠ΄ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Nouveau излишнС услоТнён ΠΈ Π½Π΅Π³ΠΈΠ±ΠΎΠΊ, Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Nouveau ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, связанных с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ VMM/MMU, трСбуСтся сущСствСнная ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹.

Π’ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΌ с нуля Π½ΠΎΠ²ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Nova ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ появлСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ услоТнСний, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Ρ‚ нСобходимости Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… абстракций Π½Π° сторонС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½ΠΎΠ²Ρ‹Ρ… GPU NVIDIA ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ. Π’ Nouveau приходится ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ старых ΠΈ Π½ΠΎΠ²Ρ‹Ρ… GPU, ΠΈ оставлСниС Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Nova Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ GPU Π½Π° Π±Π°Π·Π΅ GSP даст Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ вСсь Π³Ρ€ΡƒΠ· ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ совмСстимости с ΠΊΠΎΠ΄ΠΎΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со старыми GPU.

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