1년 전 Red Hat이 발표했습니다.Linux 시스템에서 NVIDIA GPU를 관리하기 위한 새로운 오픈 소스 드라이버 작업에 대해새로운". 이전 모델인 Nouveau와는 달리 Nova는 초기화 및 제어 작업을 그래픽 카드 자체에 통합된 GSP(GPU 시스템 프로세서) 마이크로컨트롤러에 위임합니다.
그리고 이제 몇 달 만에 (다른 새로운 프로젝트와는 달리) 드라이버가 Linux 6.15 커널에 통합될 패치 세트로 제안될 만큼 충분히 성숙된 것 같습니다. 이는 Linux 드라이버의 초기 버전입니다.
노바, 그거야 Linux 커널 모듈로 설계됨 DRM 하위 시스템에 의존함 사용자 공간에서 GPU와의 상호 작용을 관리합니다.. 이 개발은 Nouveau의 진화된 형태로 여겨지며, 주요 차이점은 Turing 마이크로아키텍처를 기반으로 하는 NVIDIA GeForce RTX 2000 시리즈 모델을 포함하는 GSP 펌웨어가 탑재된 GPU에만 국한된다는 것입니다.
Nouveau와의 차이점과 Nova의 장점
신성 누보의 구조적 문제를 해결하고자 노력한다이는 메모리 관리(VMM/MMU) 및 코드 잠금과 같은 분야에서 대대적인 개편이 필요합니다. Nouveau와 달리 Nova는 NVIDIA의 GSP 펌웨어를 활용하여 GPU 초기화 및 제어를 단순화하고, 코드 복잡성을 줄이며 이전 카드를 처리할 필요성을 제거합니다.
노바 코드 그것은 Rust로 작성되었습니다.메모리 관리 오류를 최소화하여 보안을 향상시킬 뿐만 아니라, 다른 드라이버의 개발을 위해 재사용 가능한 계층과 추상화를 생성할 수 있는 언어입니다.
프로젝트 rust-device와 같은 다양한 병렬 이니셔티브에 의해 지원됩니다. 드라이버를 생성하기 위해 PCI 버스 및 rust-drm과의 상호 작용을 위한 rust-pci DRM 및 GEM 하위 시스템과의 통합을 위해. 이러한 도구는 Apple M1 및 M2 GPU용 Rust 드라이버인 drm-asahi의 개발에도 사용되고 있으며, 이는 Rust로 작성된 그래픽 드라이버 인프라의 융합을 시사합니다.
언어의 사용 이 개발에서의 녹은 우연이 아닙니다Rust는 검토 및 리팩토링을 용이하게 하는 메커니즘을 제공하여 프로젝트 안정성을 더욱 높이는 데 도움이 됩니다. Linux 커널에서 이 언어를 채택한 것은 모듈 작성을 현대화하고 새로운 기여자가 개발에 더 쉽게 접근할 수 있도록 하는 보다 광범위한 전략에 따른 것입니다.
이것은 Rust를 커널에 통합하려는 유일한 노력이 아닙니다. 현재 이 언어로 Apple AGX GPU 드라이버, NVMe 스토리지 지원, PuzzleFS 파일 시스템, 다양한 보안 및 장치 관리 구현 등 다른 드라이버와 시스템이 개발되고 있습니다. Linux 생태계에서 Rust를 선호하는 추세가 계속해서 확대되고 있으며, 이는 운영 체제 커널 개발에서 보안과 안정성을 다루는 방식에 큰 변화를 가져오고 있습니다.
구현 단계
현재, Nova는 첫 번째 구현 단계에 있습니다.GSP 펌웨어와 통신하는 데 필요한 추상화를 설정하는 약 400줄의 코드로 구성된 모듈인 nova-core가 통합되었습니다. nova-core와 함께 NVIDIA 펌웨어와의 통합을 위한 필수 링크도 추가되었습니다.
언급할 가치가 있습니다. Nova는 원래 Linux 6.14에 출시될 예정이었습니다. 232줄의 코드로 구성된 nova-core 모듈이 있었지만 결국 Greg Kroah-Hartman이 몇 가지 세부 사항을 언급했기 때문에 포함되지 않았습니다. 닦을 필요가 있는 것.
이제 포함될 것이라는 새로운 확인으로, 이제 컨트롤러는 다음 단계로 넘어갑니다. 여기에는 다음이 추가될 예정입니다.
- 노바-drm: 사용자 공간에서 GPU와의 상호작용을 관리하는 DRM(Direct Rendering Manager) 드라이버.
- vGPU 관리자가 있는 VFIO: 가상화 환경에서 NVIDIA 가상 GPU를 사용할 수 있게 됩니다.
마지막으로 Nova e를 명확히 하는 것이 중요합니다.현재 상태에서는 기능적인 컨트롤러가 아닙니다. 그리고 그 패치를 보냈습니다 이는 컨트롤러 개발을 시작하기 위한 기초일 뿐이며, 향후 개발의 기초를 마련하는 코드입니다.