NVIDIA, Nova 드라이버를 위한 새로운 "TLV" 펌웨어 바이너리 형식 개발 중
요약
NVIDIA의 Nova 드라이버가 새로운 TLV(Tag-Length-Value) 펌웨어 바이너리 형식을 도입하여 데이터 처리 효율성을 높이고 있습니다. 기존의 복잡한 바이너리 헤더와 ELF 혼합 방식 대신, Rust에서 파싱하기 용이한 반복 가능한 구조를 채택하는 것이 핵심입니다.
핵심 포인트
- Nova 드라이버를 위한 새로운 TLV 펌웨어 이미지 형식 개발
- 기존 방식의 복잡한 파싱 문제를 해결하여 Rust 코드 효율성 증대
- 특정 메타데이터를 별도로 패키징하여 드라이버 처리 용이성 확보
- rust-for-linux 메일링 리스트를 통해 패치 내용 공개
NVIDIA, Nova 드라이버를 위한 새로운 "TLV" 펌웨어 바이너리 형식 개발 중

NVIDIA의 Timur Tabi는 Nova-Core 드라이버 코드를 새로운 Tag-Length-Value (TLV) 펌웨어 이미지 형식으로 전환하는 새로운 버전의 패치를 게시했습니다. Tabi는 이 새로운 TLV 펌웨어 형식의 동기에 대해 다음과 같이 설명했습니다:
"이 패치 세트는 nova-core가 Nouveau에서 사용하는 방식 대신 새로운 "TLV" 펌웨어 이미지 파일을 사용하도록 전환합니다.
현재의 r570.144 이미지들은 바이너리 헤더 (binary headers)와 ELF 파일들이 혼합되어 있어 Rust에서 파싱(parsing)하기가 까다롭습니다. 단순히 구조체 (struct)를 읽어 들여 특정 오프셋 (offset)을 추출하고, 이를 사용하여 다른 구조체를 찾는 데 상당한 양의 코드가 소모되지만, 정작 nova-core는 그중 몇 개의 필드만 사용합니다.
새로운 형식은 반복(iterate)할 수 있는 태그/길이/값 (tag/length/value) 필드 시퀀스를 사용합니다. TLV 파일을 생성하는 스크립트인 extract-firmware-nova.py는 Nova에 필요한 특정 메타데이터 (metadata)를 찾아 각각을 별도로 패키징하는 추가 작업을 수행합니다."
이 형식은 추가적인 개선을 위해 여전히 반복 작업이 진행 중이지만, 궁극적으로는 Nova 드라이버가 이 새로운 형식으로 NVIDIA GPU 펌웨어를 더 쉽게 처리할 수 있게 해줄 것입니다. 세부 사항에 관심이 있는 분들은 rust-for-linux 메일링 리스트에서 Nova 드라이버 패치를 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기