Nvidia Optimus

Nvidia Optimus

Nvidia Optimus는 Nvidia가 개발컴퓨터 GPU 스위칭 테크놀로지입니다.클라이언트 소프트웨어 애플리케이션에 의해 발생하는 자원 부하에 따라 컴퓨터 시스템 내의 2개의 그래픽 어댑터 간에 심리스하게 전환되어 시스템의 그래픽스 렌더링 하드웨어에서 최대의 퍼포먼스 또는 최소한의 전력 소비량을 실현합니다.

일반적인 플랫폼에는 인텔의 저성능 통합형 그래픽스 프로세서와 Nvidia의 고성능 그래픽스 프로세서가 모두 포함되어 있습니다.Optimus는 필요 없을 때 전용 그래픽 처리 장치(GPU)의 전원을 자동으로 끄고 필요할 때 전원을 다시 켜 배터리 수명을 절약합니다.이 기술은 [1][a]주로 노트북과 같은 모바일 PC를 대상으로 한다.디스크리트 GPU의 퍼포먼스를 활용할 수 있다고 판단되는 애플리케이션을 기동하면, 디스크리트 GPU의 전원이 들어가, 그 GPU를 개입시켜 렌더링 컨텍스트에 의해서 애플리케이션이 처리됩니다.그렇지 않으면, 애플리케이션은 통합 GPU를 사용하는 렌더링 컨텍스트에 의해서 처리됩니다.그래픽 프로세서간의 전환은 설계되어 있습니다.d는 완전히 매끄럽고 "배후"에서 발생할 수 있습니다.

Nvidia가 공식적으로 지원하는 운영 체제는 Microsoft Windows 및 Linux입니다.Bumblebee라고[4] 불리는 프로젝트는 [5]Linux용 옵티머스 지원의 대체 오픈 소스 구현입니다.

작동

유저가 애플리케이션을 기동하면, 그래픽 드라이버는, 애플리케이션이 개별의 GPU 로부터 메리트를 얻을 수 있는지를 판단합니다.그 경우, GPU 는 아이돌 상태로부터 기동해, 모든 렌더링 콜이 전달됩니다.단, 이 경우에도 통합 그래픽스 프로세서(IGP)를 사용하여 최종 이미지를 출력합니다.부하가 낮은 애플리케이션을 사용하는 경우 IGP가 단독 제어를 실시하기 때문에 배터리 지속 시간이 길어지고 팬의 노이즈가 줄어듭니다.Windows 에서는, Nvidia 드라이버에 의해서, 실행 파일을 기동했을 때에 오른쪽 클릭 메뉴로 GPU 를 수동으로 선택할 수도 있습니다.

Nvidia GPU 드라이버의 하드웨어 인터페이스 레이어 내에서 Optimus Routing Layer는 인텔리전트한 그래픽 관리를 제공합니다.또한 Optimus Routing Layer에는 다양한 그래픽 디바이스와 관련된 특정 클래스 및 개체를 인식하고 관리하기 위한 커널 레벨 라이브러리가 포함되어 있습니다.이 Nvidia의 혁신은 상태 및 컨텍스트 관리를 수행하고 필요에 따라 각 드라이버 클라이언트(즉, 애플리케이션)에 아키텍처 리소스를 할당합니다.이 콘텍스트 관리 스킴에서는, 각 애플리케이션은 GPU 를 동시에 사용하는 다른 애플리케이션을 인식하지 않습니다.

Optimus Routing Layer는 지정된 클래스를 인식함으로써 GPU를 사용하여 렌더링 성능을 향상시킬 수 있는 시기를 판단하는 데 도움이 됩니다.구체적으로는 다음 3가지 콜타입 중 하나가 검출되면 GPU의 전원을 켜는 신호를 보냅니다.

  • DX 콜: 모든 3D 게임 엔진 또는 DirectX 응용 프로그램이 이러한 콜을 트리거합니다.
  • DXVA 콜: 비디오 재생이 이러한 콜을 트리거합니다(DXVA = DirectX 비디오 액셀러레이션).
  • CUDA Calls: CUDA 응용 프로그램이 이러한 콜을 트리거합니다.

또, 사전 정의된 프로파일은, 추가의 그래픽 파워가 필요한지 아닌지를 판단하는데 도움이 됩니다.Nvidia 제어판을 사용하여 관리할 수 있습니다.

Optimus는 하드웨어 멀티플렉서의 사용을 피하고 디스플레이 표면을 PCI Express 버스를 통해 GPU 프레임 버퍼에서 IGP에 의해 사용되는 메인 메모리 기반 프레임 버퍼로 전송함으로써 디스플레이 드라이버를 IGP에서 GPU로 변경하는 것과 관련된 결함을 방지합니다.Optimus Copy Engine은 GPU 프레임 버퍼 메모리와 IGP에서 사용되는 메인 메모리 간의 기존 DMA 전송에 대한 새로운 대안입니다.

IGP를 사용하여 개별 GPU에서 데이터를 출력하면 높은 플레이머레이트에서는 병목 현상이 발생할 수 있습니다.Optimus 테크놀로지는 데스크톱 대체 노트북 또는 게임용 노트북(에너지 효율보다 퍼포먼스가 우선)에서 혹평을 받아 왔습니다.일부 벤더는 Optimus 아키텍처를 완전히 차단하기 위한 하드웨어 멀티플렉서 솔루션을 제공하고 있습니다.이 작업은 BIOS에서 호스트될 수 있으며 종종 재부팅이 필요합니다.

Linux 지원

중앙에는 사용자 공간의 Mesa 3D와 libDRM, Linux 커널의 DRM/KMS 드라이버로 구성된 자유 및 오픈 소스 드라이버 스택이 있습니다.Nvidia의 독점 커널 BLOB는 라이센스 제한 때문에 DMA BUF를 사용할 수 없습니다.

바이너리 Nvidia 드라이버는 2013년 5월 3일 319.[6]17에서 부분 옵티머스 지원을 추가했습니다.2013년 5월 현재, 전용 카드의 전원 관리는 서포트되고 있지 않기 때문에, NVIDIA 그래픽 카드를 완전하게 [7]꺼도 배터리를 절약할 수 없습니다.

오픈 소스 프로젝트인 Bumblebee는 그래픽 칩 스위칭을 지원하려고 합니다.Windows 의 실장과 같이, 디폴트에서는, 모든 애플리케이션은 내장 그래픽 프로세서를 개입시켜 동작합니다.2013년 시점에서는 명령줄을 사용하거나 특별히 구성된 바로 가기 아이콘을 통해 그래픽 성능이 향상된 프로그램을 디스크리트 GPU에서 실행할 수 있습니다.그래픽스 프로세서간의 자동 검출과 전환은 아직 이용할 수 없습니다.

그래픽 인터페이스(bumblebee-ui)에서 진행 중인 작업은 필요할 때 그래픽 성능을 향상시키기 위해 프로그램을 보다 편리하게 시작할 수 있도록 하는 것을 목표로 합니다.

개별 GPU를 사용하여 게임을 실행하도록 Linux용 스팀(Steam Community: Linux용 OptimusSteam).

Bumblebee 프로젝트는 Linux의 그래픽 아키텍처에 더 필요한 소프트웨어 변경이 이루어짐에 따라 계속 발전하고 있습니다.이를 최대한 활용하려면 최신 Linux 배포를 사용하는 것이 가장 좋습니다.2013년 현재 Bumblebee 소프트웨어 저장소는 Arch Linux, Debian, Fedora, Gentoo, Mandriva, OpenSuSEUbuntu에서 사용할 수 있습니다.소스 패키지는 다른 배포에 사용할 수 있습니다.

하드웨어(잠재적으로는 GPU) 간에 버퍼를 공유하기 위한 Linux 커널 메커니즘인 DMA BUF를 통해 Optimus를 지원하려는 Nvidia의 시도는 GPL 라이선스의 커널 코드와 독점 라이선스의 Nvidia blob [8]간의 라이센스 비호환성 때문에 2012년 1월에 커널 개발자들에 의해 거부되었습니다.

그래픽 어댑터 간에 전환하는 소프트웨어 메커니즘이 없는 경우 설치된 그래픽 드라이버가 [9]Nvidia GPU를 지원하더라도 시스템은 Nvidia GPU를 전혀 사용할 수 없습니다.

최신 Optimus 지원

현재 많은 Linux 디스트리뷰션에서 Nvidia 오프로드가 지원되고 있습니다.Nvidia 카드는 모든 렌더링을 수행합니다.내장 노트북 디스플레이는 인텔 드라이버에 물리적으로 접속되어 있기 때문에, NVIDIA 카드는 인텔 디스플레이 메모리에 렌더링 됩니다.해체를 방지하기 위해 xorg 서버에는 vsync와 마찬가지로 버퍼 업데이트 시간을 측정하기 위한 Prime Synchronization이라는 메커니즘이 있습니다.이 메커니즘을 사용하려면 nvidia 드라이버가 커널 모듈로 로드되어 있어야 합니다.이것은, 통상, 디폴트로 액티브하게 되어 있습니다.

범블비와 달리 이 오프로드 솔루션은 멀티 모니터 그래픽스를 지원합니다.단점은 NVIDIA 카드를 전환하려면 로그아웃이 필요하다는 것입니다.

이 어프로치의 주요 실장은 Ubuntu의 '프라임 셀렉트' 패키지입니다.이 패키지에는 NVIDIA 카드를 끄는 명령줄과 그래픽 툴이 있습니다.Windows 와 달리, 이것은 동적으로 행해지지 않기 때문에, 변경을 유효하게 하려면 , 유저가 로그인 세션을 재기동할 필요가 있습니다.

Ubuntu의 프라임 셀렉트 스크립트는 Ubuntu 파생 버전에서 사용할 수 있으며, 경우에 따라 자체 그래픽 도구를 추가할 수 있습니다.prime-offload 접근방식은 arch와 fedora로 이식 또는 재실장되었습니다.

2016년에 Nvidia는 GL Vendor Neutral Dispatch를 발표했습니다.이것에 의해, 인텔 드라이버와 엔비디아 드라이버를 동시에 인스톨 할 수 있습니다.유통이 효력을 발휘할 때까지 2018년까지 걸렸지만, 이로 인해 모드 전환 과정이 크게 간소화되었습니다.

일부 구형 및 하이엔드 노트북에는 하드웨어 멀티플렉서 상태를 수동으로 선택하여 두 비디오 디바이스 간에 출력을 전환하는 BIOS 설정이 포함되어 있습니다.이 경우 Linux 사용자는 그래픽 디바이스가1대밖에 없는 하드웨어 구성으로 노트북을 배치할 수 있습니다.이것에 의해, 2개의 그래픽·드라이버를 실행하는 복잡함은 해소되지만, 전력 절약은 실현되지 않습니다.

드라이버 버전 435 이후, 독자 사양의 드라이버는, 1 개의 윈도우의 렌더 오프로드를 서포트하고 있습니다.그러면 dGPU가 렌더링되는 가상 디스플레이가 생성되며, 이 디스플레이는 오프로드된 애플리케이션의 [10]메인 화면 창에 표시됩니다.2019년 10월 현재 필요한 수정 사항이 아직 출시되지 않았기 때문에 xorg 개발 지사를 사용해야 합니다.

「 」를 참조해 주세요.

메모들

  1. ^ Desktop Optimus는 2011년[2] 6월에 [3]Synergy라는 이름으로 출시될 예정이었지만 결국 성공하지 못했습니다.

레퍼런스

  1. ^ "Optimus Technology". Nvidia. Retrieved 10 April 2016.
  2. ^ Lee, Terence (23 April 2011). "NVIDIA To Launch Desktop Optimus / Synergy at COMPUTEX". Retrieved 10 April 2016.
  3. ^ Pop, Sebastian (26 April 2011). "NVIDIA Optimus Lands on Desktops". Retrieved 10 April 2016.
  4. ^ "Bumblebee Daemon". GitHub. 22 April 2013. Retrieved 10 April 2016.
  5. ^ "Bumblebee version 3.0 "Tumbleweed" release". 20 January 2012. Retrieved 10 April 2016.
  6. ^ Plattner, Aaron (2 May 2013). "Linux, Solaris, and FreeBSD driver 319.17 (long-lived branch release)". Nvidia. Retrieved 10 April 2016.
  7. ^ "Релиз проприетарного драйвера NVIDIA 319.17 с поддержкой Optimus и RandR 1.4" (in Russian). 2 May 2013. Retrieved 10 April 2016.
  8. ^ "NVIDIA Talks Of Optimus Possibilities For Linux". Phoronix. January 25, 2012.
  9. ^ 「하드웨어 멀티가 없는 노트북에서는, 현재 NVIDIA GPU디스플레이에 사용할 수 없습니다.」2010년 7월 23일, 2010년 11월 27일에 액세스.2011년 7월 18일 Wayback Machine에서 아카이브 완료
  10. ^ "Chapter 35. PRIME Render Offload". download.nvidia.com. Retrieved 2019-10-09.

외부 링크