Nothing Special   »   [go: up one dir, main page]

KR101606428B1 - 그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭 - Google Patents

그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭 Download PDF

Info

Publication number
KR101606428B1
KR101606428B1 KR1020127020441A KR20127020441A KR101606428B1 KR 101606428 B1 KR101606428 B1 KR 101606428B1 KR 1020127020441 A KR1020127020441 A KR 1020127020441A KR 20127020441 A KR20127020441 A KR 20127020441A KR 101606428 B1 KR101606428 B1 KR 101606428B1
Authority
KR
South Korea
Prior art keywords
gpu
graphics
computer system
events
policy
Prior art date
Application number
KR1020127020441A
Other languages
English (en)
Other versions
KR20120120281A (ko
Inventor
크리스토퍼 씨. 니더아우어
제프리 지. 스탈
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20120120281A publication Critical patent/KR20120120281A/ko
Application granted granted Critical
Publication of KR101606428B1 publication Critical patent/KR101606428B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3218Monitoring of peripheral devices of display devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Power Sources (AREA)

Abstract

개시된 실시예들은 그래픽-프로세싱 유닛(GPU)들 사이에서 스위칭하도록 컴퓨터 시스템을 구성하는 시스템을 제공한다. 일 실시예에서, 시스템은 컴퓨터 시스템 내의 제1 그래픽 프로세싱 유닛(GPU)을 사용하여 디스플레이를 구동한다. 다음으로, 시스템은 컴퓨터 시스템 내의 제2 GPU에 대한 하나 이상의 종속성들과 연관된 하나 이상의 이벤트들을 검출한다. 마지막으로, 이벤트에 응답하여, 시스템은 디스플레이를 구동하기 위한 신호 소스로서 제1 GPU로부터 제2 GPU로 스위칭하기 위해 준비한다.

Description

그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭{POLICY-BASED SWITCHING BETWEEN GRAPHICS-PROCESSING UNITS}
개시된 실시예들은 컴퓨터 시스템 내의 그래픽 프로세싱 유닛(GPU)들 사이의 스위칭을 위한 기법들에 관한 것이다. 더 구체적으로, 개시된 실시예들은 컴퓨터 시스템에서 GPU들 사이의 정책-기반 스위칭을 위한 기법들에 관한 것이다.
전력 관리는 많은 전자 디바이스들에 대해 매우 중요하다. 예를 들어, 랩톱 컴퓨터, 모바일 전화 및 개인용 디지털 정보 단말(PDA)과 같은 휴대용 전자 디바이스들은 배터리 전력으로 임의의 길이의 시간 동안 동작하기 위해 전력을 보존할 필요가 있다. 동시에, 이들 휴대용 전자 디바이스들 중 다수가 고해상도, 고전력 그래픽 기술을 통합하기 시작하고 있다. 이 분야에서의 급속한 발전들은 2D 및 3D 그래픽 기술에서의 현저한 진보를 초래하여, 그래픽 사용자 인터페이스에서 실제 게임 환경에 이르는 영역들에서의 점점 더 정교한 시각적 경험들을 사용자들에게 제공한다. 이러한 개선들 중 다수의 기초가 되는 것은 전용 그래픽 렌더링 디바이스들 또는 그래픽 프로세싱 유닛(GPU)의 개발이다. 통상적인 GPU는 고속으로 일련의 원시(primitive) 연산들을 수행하고 결과 이미지들을 그래픽 디스플레이들 상에 디스플레이함으로써 그래픽 객체들을 효율적으로 조작하는 고도의 병렬 구조를 포함한다.
불행히도, 이러한 증가한 그래픽 능력들과 연관된 비용들이 존재한다. 특히, 그래픽 성능의 증가는 통상적으로 전력 소모에 있어서의 대응하는 증가를 수반한다. 결과적으로, 많은 컴퓨터 시스템들 및 휴대용 전자 디바이스들은 고성능 GPU들을 지원하기 위해 그들의 전력의 상당량을 쏟을 수 있는데, 이는 배터리 수명을 감소시키고 방열 문제들을 야기할 수 있다.
이러한 문제에 대한 하나의 해법은 더 높은 성능을 제공하는 고전력 GPU로부터 더 낮은 성능을 가지는 저전력 GPU로 스위칭함으로써 저활동 기간들 동안 전력을 절감하는 것이다. 컴퓨터 시스템 설계자들은 이러한 시스템들을 지원하기 위한 하드웨어 구조들의 개발에 착수하고 있다. 그러나, 저전력 및 고전력 GPU들 사이에서 언제 스위칭할지를 정확하게 결정하는 도전 과제가 남아 있다.
따라서, 다수의 GPU들을 가지는 시스템 내의 GPU들 사이에서 언제 스위칭할지를 결정하는 것을 용이하게 하는 방법 및 장치가 요구된다.
개시된 실시예들은 GPU들을 스위칭하도록 컴퓨터 시스템을 구성하는 시스템을 제공한다. 동작 동안, 시스템은 컴퓨터 시스템 내의 제1 그래픽-프로세싱 유닛(GPU)을 사용하여 디스플레이를 구동한다. 다음으로, 시스템은, GPU와 관련된 시스템 이벤트들 또는 응용 프로그래밍 인터페이스(API)들을 통해, 컴퓨터 시스템 내의 제2 GPU에 대한 종속성과 연관된 이벤트를 검출한다. 검출에 응답하여, 시스템은 디스플레이를 구동하기 위한 신호 소스로서 제1 GPU에서 제2 GPU로의 스위칭을 개시한다.
일부 실시예들에서, API는 그래픽 라이브러리, 비디오 재생, 또는 윈도우 매니저와 연관된다.
일부 실시예들에서, 종속성은:
(i) 컴퓨터 시스템에서의 그래픽 라이브러리의 사용;
(ii) 디코딩 가능한 컨텐츠의 비디오 재생;
(iii) 제1 GPU로부터 제2 GPU로 스위칭하는 요청; 및
(iv) 컴퓨터 시스템에서의 그래픽 성능과 연관된 사용자 선호도
중 적어도 하나에 대응한다.
일부 실시예들에서, 요청은 윈도우 매니저 또는 그래픽 라이브러리에 대해 이루어진다.
일부 실시예들에서, 윈도우 매니저와 같은 시스템의 일부분들은, GPU들 사이의 스위칭을 야기할 수도 있는 이벤트들 또는 프로세스들을 보상하기 위해 GPU들 사이의 스위칭을 제어할 수 있다.
일부 실시예들에서, 그래픽 라이브러리의 사용은:
(i) 그래픽 라이브러리에 링크하는 것;
(ii) 애플리케이션 실행 동안 그래픽 라이브러리의 로딩; 및
(iii) 그래픽 라이브러리로의 메서도 호출들
중 적어도 하나를 수반한다.
일부 실시예들에서, 이벤트는:
(i) 제2 GPU에 대한 종속성과 연관된 애플리케이션의 개시;
(ii) 제1 GPU로부터 제2 GPU로 스위칭하는 요청의 호출;
(iii) 그래픽 라이브러리의 사용; 및
(iv) 디코딩 가능한 컨텐츠의 비디오 재생
중 적어도 하나이다.
일부 실시예들에서, 시스템은 또한 제2 GPU에 대한 모든 종속성들이 제거된 이후 제1 GPU로 다시 신호 소스를 스위칭한다.
일부 실시예들에서, 제1 GPU는 시스템 칩셋 내에 통합되는 저전력 GPU이고, 제2 GPU는 분리형 GPU 상에 상주하는 고전력 GPU이다. 제1 GPU 및 제2 GPU는 실질적으로 동일한 회로 및 유사한 능력들, 또는 상이한 회로 및/또는 능력들을 가질 수 있다.
일부 실시예들에서, 제1 GPU는 그래픽 코드를 실행하는 범용 프로세서이고, 제2 GPU는 특수목적 GPU이다.
일부 실시예들에서, 현재 디스플레이를 구동하고 있지 않은 "오프라인" GPU는 다른 작업들을 수행하기 위해 사용될 수 있다. 예를 들어, 온라인 통합 GPU는 윈도우 매니저의 사용자 인터페이스(UI)에 전용될 수 있는 반면, 애플리케이션은 분리형 GPU를 사용하여 비동기적으로 작업을 수행한다.
도 1은 일 실시예에 따라 동일한 디스플레이를 구동하기 위해 상이한 그래픽 소스들 사이에서 스위칭할 수 있는 컴퓨터 시스템을 예시하는 도면이다.
도 2는 일 실시예에 따른 그래픽 멀티플렉서의 구조를 예시하는 도면이다.
도 3은 일 실시예에 따라 컴퓨터 시스템 내의 GPU들 사이에서의 스위칭을 위한 예시적인 정책을 도시하는 도면이다.
도 4는 일 실시예에 따라 컴퓨터 시스템을 구성하는 프로세스를 예시하는 흐름도를 도시한다.
도 5는 일 실시예에 따라 GPU 스위칭 프로세스를 예시하는 또 다른 흐름도를 도시한다.
도면들에서, 동일한 참조 번호들은 동일한 엘리먼트들을 참조한다.
후속하는 설명은 당업자가 실시예를 제작 또는 사용할 수 있도록 제시되며, 특정 응용예 또는 그 요건들의 상황에서 제공된다. 개시된 실시예들에 대한 다양한 수정들이 당업자에게 자명할 것이며, 여기서 정의된 일반 원리들은 본 개시내용의 사상 및 범위로부터 벗어나지 않고 다른 실시예들 및 응용예들에 적용될 수 있다. 따라서, 본 발명은 도시된 실시예들에 제한되는 것이 아니라, 여기서 개시된 원리들 및 특징들에 부합하는 가장 넓은 범위가 부여되어야 한다.
이 상세한 설명에서 기술되는 데이터 구조들 및 코드는 통상적으로, 컴퓨터 시스템에 의해 사용하기 위한 코드 및/또는 데이터를 저장할 수 있는 임의의 디바이스 또는 매체일 수 있는, 컴퓨터-판독가능한 저장 매체 상에 저장된다. 컴퓨터-판독가능한 저장 매체는 휘발성 메모리, 비휘발성 메모리, 자기 또는 광학 저장 디바이스들, 예컨대, 디스크 드라이브들, 자기 테이프, CD(컴팩트 디스크)들, DVD(디지털 다목적 디스크 또는 디지털 비디오 디스크)들, 또는 현재 알려져 있거나 추후 개발될 코드 및/또는 데이터를 저장할 수 있는 다른 매체를 포함할 수 있지만, 이에 제한되지 않는다.
상세한 설명 부분에서 기술되는 방법들 및 프로세스들은 전술된 바와 같은 컴퓨터-판독가능한 저장 매체에 저장될 수 있는 코드 및/또는 데이터로서 구현될 수 있다. 컴퓨터 시스템이 컴퓨터-판독가능한 저장 매체 상에 저장된 코드 및/또는 데이터를 판독하고 실행하는 경우, 컴퓨터 시스템은 데이터 구조들 및 코드로서 구현되고 컴퓨터 판독가능한 저장 매체 내에 저장되는 방법들 및 프로세스들을 수행한다.
또한, 여기서 기술되는 방법들 및 프로세스들은 하드웨어 모듈들 또는 장치에 포함될 수 있다. 이러한 모듈들 또는 장치는 주문형 집적 회로(ASIC) 칩, 필드-프로그램가능 게이트 어레이(FPGA), 특정 시간에 코드의 일부분 또는 특정 소프트웨어 모듈을 실행하는 전용 또는 공유 프로세서, 및/또는 현재 알려져 있거나 추후 개발될 다른 프로그램가능 논리 디바이스들을 포함할 수 있지만, 이에 제한되지 않는다. 하드웨어 모듈들 또는 장치가 활성화되는 경우, 이들은 자신들 내에 포함된 프로세스들 및 방법들을 수행한다.
개시된 실시예들은 컴퓨터 시스템 내의 다수의 그래픽-프로세싱 유닛(GPU)들 사이에서 스위칭하기 위한 방법 및 시스템을 제공한다. 컴퓨터 시스템은 내장형 GPU 및 분리형 GPU를 포함하는 랩톱 컴퓨터, 개인용 컴퓨터, 워크스테이션, 및/또는 휴대용 전자 디바이스에 대응할 수 있다. 내장형 GPU는 분리형 GPU보다 더 적은 전력을 소모할 수 있는 반면, 분리형 GPU는 내장형 GPU보다 더 양호한 그래픽 성능을 제공할 수 있다. 그 결과, 컴퓨터 시스템에서의 그래픽의 렌더링 및 디스플레이는 성능과 전력 절감 사이의 절충을 수반할 수 있다.
더 구체적으로, 실시예들은 컴퓨터 시스템 내의 다수의 GPU들 사이의 정책-기반 스위칭을 위한 방법들 및 시스템들을 제공한다. 정책은 컴퓨터 시스템 내의 이벤트들을 개별 GPU들에 대한 종속성들과 연관시킬 수 있으며, 더 높은 그래픽 성능 요건들과 연관된 이벤트들은 더 강력한 GPU들에 대한 종속성들을 가질 수 있는 반면, 더 낮은 그래픽 성능 요건들과 연관된 이벤트들은 덜 강력한 GPU들에 대한 종속성들 및/또는 더 강력한 GPU들에 대한 종속성들의 제거를 가질 수 있다. (이벤트가 일반적으로 컴퓨터 시스템의 하드웨어 또는 소프트웨어 동작 상태에서의 임의의 변경을 포함할 수 있는 반면, 종속성은 특정 GPU의 사용과 이벤트 사이의 연관임에 유의한다.) 예를 들어, 분리형 GPU에 대한 종속성을 가지는 이벤트는 컴퓨터 시스템의 디스플레이를 구동하기 위해 내장형 GPU로부터 분리형 GPU로의 스위칭을 트리거링할 수 있다. GPU들에 대한 종속성들은 또한 컴퓨터 시스템에서의 그래픽 성능과 연관된 사용자 선호도들에 기초할 수 있다. 예를 들어, 더 높은 성능의 그래픽들에 대한 사용자 선호도는 더 낮은 성능 그래픽에 대한 사용자 선호도보다 강력한 GPU에 대한 더 많은 종속성들을 생성할 수 있다.
디스플레이를 구동하기 위해 더 높은 성능의 GPU로 스위칭이 이루어지는 경우, 더 낮은 성능의 GPU로의 역 스위칭은 더 높은 성능의 GPU에 대한 모든 종속성들이 제거될 때까지 이루어지지 않을 수 있다. 예를 들어, 분리형 GPU는 비디오 재생을 요구하고, 그래픽 라이브러리들을 사용하고, GPU 지원을 요청하고 그리고/또는 다른 점에서 그래픽 집약적인 애플리케이션들의 실행 동안 디스플레이를 구동할 수 있다. 모든 그래픽 집약적 애플리케이션들 및/또는 동작들이 종료되면, 컴퓨터 시스템은 전력을 절감하기 위해 내장형 GPU로 스위칭할 수 있다. 따라서, 컴퓨터 시스템 내의 GPU들 사이의 정책-기반 스위칭은 더 높은 그래픽 프로세싱 부하들을 가지는 애플리케이션들에 대한 그래픽 성능을 증가시키는 동시에, 이러한 애플리케이션들이 실행되지 않는 경우 전력을 보존할 수 있다. 하기에 논의되는 바와 같이, 정책-기반 스위칭은 추가적으로, 컴퓨터 시스템 상에 설치된 애플리케이션들과는 독립적인 컴퓨터 시스템에서의 그래픽 프로세싱의 동적 구성은 물론, GPU로의 스위칭 이전에 배경에서 GPU의 구성을 트리거링하는 이벤트들을 통해 GPU들 사이의 끊김 없는 스위칭을 허용할 수 있다.
도 1은 일 실시예에 따른 컴퓨터 시스템(100)을 예시한다. 컴퓨터 시스템(100)은 개인용 컴퓨터, 랩톱 컴퓨터, 휴대용 전자 디바이스, 워크스테이션, 및/또는 디스플레이를 구동하기 위해 2개의 그래픽 소스들 사이에서 스위칭할 수 있는 다른 전자 디바이스에 대응할 수 있다. 도 1을 참조하면, 2개의 그래픽 소스들은 (1) 분리형 GPU(110) 및 (2) 내장형 GPU(118)를 포함하고, 이들은 각각 독립적으로 디스플레이(114)를 구동할 수 있다. 디스플레이(114)를 구동하는 그래픽 소스는 GPU(110)와 GPU(118) 사이에서 선택하는 GPU 멀티플렉서(GMUX)(120)에 의해 결정된다. 따라서, 컴퓨터 시스템(100)은 GMUX(120)를 이용하여 현재 동작 조건들에 기초하여 그래픽 소스를 선택할 수 있다.
동작 동안, 분리형 GPU(110)로부터의 디스플레이 스트림(122) 및 내장형 GPU(118)로부터의 디스플레이 스트림(124)은 모두 GMUX(120)의 데이터 입력들로 공급된다. 소스 선택 신호(126)는 GMUX(120)의 선택 입력으로 공급되고, 2개의 그래픽 소스들 중 어느 것이 디스플레이(114)를 구동할 것인지를 결정한다. 예시된 실시예에서, 소스 선택 신호(126)는 소스 선택 신호(126)를 생성하기 위한 특정 로직을 포함하는 브리지 칩(104)에 의해 생성된다. (소스 선택 신호(126)가 또한 브리지 칩(104)이 아닌 로직 블록에 의해 생성될 수 있다는 점에 유의한다. 예를 들어, 소스 선택 신호(126)는 하나 이상의 프로세싱 유닛들(102)에 의해 생성될 수 있다.) 선택된 그래픽 소스로부터의 디스플레이 스트림은 이후 디스플레이(114)로 공급된다.
일 실시예에서, 분리형 GPU(110) 및 내장형 GPU(118)는 그들의 디스플레이 스트림을 동기화하기 위해 데이터 경로(128)를 통해 통신한다. 디스플레이 스트림들의 동기화가 개별 타이밍 신호들 및 개별 데이터 신호들 모두의 동기화를 수반할 수 있다는 점에 유의한다.
일 실시예에서, 분리형 GPU(110)는, 더 작은 양의 전력을 소모하는 더 낮은 성능의 GPU인 내장형 GPU(118)에 비해 상당량의 전력을 소모하는 고성능 GPU이다. 이러한 실시예에서, 그래픽 프로세싱 부하가 적은 경우, 시스템은 디스플레이(114)를 구동하기 위해 분리형 GPU(110)를 사용하는 것으로부터 내장형 GPU(118)를 사용하는 것으로 스위칭하고, 후속하여 분리형 GPU(110)를 전원차단(power down)시켜서 이에 의해 전력을 절감한다. 반면, 그래픽 프로세싱 부하가 다시 커지는 경우, 시스템은 내장형 GPU(118)로부터 다시 분리형 GPU(110)로 그래픽 소스들을 스위칭한다.
분리형 GPU 및 내장형 GPU를 포함하는 시스템을 기술하였지만, 개시된 기법은 일반적으로, 각각이 독립적으로 디스플레이(114)를 구동할 수 있는 둘 이상의 GPU들을 포함하는 임의의 컴퓨터 시스템에서 동작할 수 있다. 또한, 동일한 컴퓨터 시스템 내의 GPU들이 상이한 동작 특성들 및 전력 소모 레벨들을 가질 수 있다. 예를 들어, 컴퓨터 시스템은 디스플레이(114)를 구동하기 위해 특수 목적 GPU(예를 들어, 분리형 GPU(110))와 하나 이상의 프로세싱 유닛들(102)(예를 들어, 중앙 처리 장치(CPU)) 내의 범용 프로세서 사이에서 스위칭할 수 있다. 따라서, 개시된 기법은 도 1에 예시된 특정 실시예에 제한되지 않는다.
또한, 그래픽 소스들 사이의 스위칭을 위한 전술된 프로세스가 컴퓨터 시스템을 셧 다운시키는 것 또는 재초기화하는 것을 수반하지 않는다는 점에 유의한다. 그 결과, 스위칭 프로세스는 재초기화가 요구되었을 경우보다 실질적으로 더 작은 시간이 걸릴 수 있다. 결과적으로, 개시된 기법은 그래픽 소스들 사이의 신속하고 빈번한 스위칭을 용이하게 한다.
하나 이상의 실시예들에서, 컴퓨터 시스템(100)은 디스플레이(114)를 구동하기 위한 신호 소스로서 분리형 GPU(110)와 내장형 GPU(118) 사이의 정책-기반 스위칭을 제공한다. 특히, 컴퓨터 시스템(100)은 컴퓨터 시스템(100)에서의 그래픽 성능과 관련된 정책에 기초하여 디스플레이(114)를 구동하기 위해 분리형 GPU(110) 또는 내장형 GPU(118)를 선택할 수 있다. 정책은 컴퓨터 시스템 내의 이벤트들을 개별 GPU들에 대한 종속성들과 연관시킬 수 있고, 더 높은 그래픽 성능 요건들과 연관된 이벤트들은 분리형 GPU(110)와 연관될 수 있는 반면, 더 낮은 그래픽 성능 요건들과 연관된 이벤트들은 내장형 GPU(118)와 연관될 수 있다.
컴퓨터 시스템(100)은 분리형 GPU(110)에 대한 종속성과 연관된 이벤트가 그래픽 라이브러리, 비디오 재생, 및/또는 윈도우 매니저와 연관된 응용 프로그래밍 인터페이스(API)를 통해 검출될 때까지 디스플레이(114)를 구동하기 위한 신호 소스로서 내장형 GPU(118)를 사용함으로써 시작할 수 있다. 애플리케이션이 하나 이상의 미리 결정된 API들을 통해 함수 호출들을 수행하는 경우, 시스템은 더 강력한 또는 덜 강력한 그래픽 프로세싱 능력들이 애플리케이션에 의해 요구될 것이라고 추론할 수 있다. 하나 이상의 함수 호출들에 응답하여, 시스템은 GPU 스위칭을 개시할 수 있다. 예를 들어, 종속성은 디코딩 가능한(예를 들어, 암호화된, 압축된, 인코딩된 등) 비디오 컨텐츠의 QuickTime(QuickTime™은 Apple 사의 등록 상표임) 재생 및/또는 컴퓨터 시스템 내의 OpenGL(OpenGL™은 Silicon Graphics 사의 등록 상표임)의 사용(예를 들어, 링크, 로딩, 방법 호출들 등)에 대응할 수 있다. 종속성은 또한 컴퓨터 시스템에서의 그래픽 성능과 연관된 사용자 선호도들 및/또는 애플리케이션 실행 동안 (예를 들어, 그래픽 라이브러리 및/또는 윈도우 매니저를 통해) 내장형 GPU(118)로부터 분리형 GPU(110)로 스위칭하기 위한 명시적 요청들을 통해 개별 애플리케이션들 및/또는 사용자들에 의해 트리거링될 수 있다.
GPU 스위칭이 반드시 명시적인 API 호출에 의해 트리거링되거나 명시적인 API 호출과 연관되지 않음에 유의한다. 더 구체적으로, GPU 스위칭은 (1) 제2 GPU에 대한 종속성과 연관된 애플리케이션의 개시; (2) GPU에 대한 종속성과 연관된 애플리케이션의 종료; (3) (예를 들어, 애플리케이션에 의한) 제1 GPU로부터 제2 GPU로 스위칭하는 요청의 호출; (4) 애플리케이션들 내의 스위칭 모드들 또는 함수들; 및 (5) 그래픽 라이브러리의 사용, 및/또는 디코딩 가능한(예를 들어, 디지털 권한 관리(DRM)) 컨텐츠의 비디오 재생에 대응하는 이벤트에 의해 트리거링될 수 있다. GPU들 사이의 정책-기반 스위칭과 연관된 이벤트들 및/또는 종속성들은 도 3에 대해 하기에 더 상세하게 논의된다.
이벤트에 응답하여, 컴퓨터 시스템(100)은 디스플레이(114)를 구동하기 위한 신호 소스로서 내장형 GPU(118)로부터 분리형 GPU(110)로 스위칭할 수 있다. 스위칭 동안, 분리형 GPU(110)에 의존하는 스레드들은 분리형 GPU(110)가 디스플레이(114)를 완전히 구동할 때까지 차단될 수 있다. 신호 소스로서 내장형 GPU(118)로의 역 스위칭은 분리형 GPU(110)에 대한 모든 종속성이 제거된 이후 이루어질 수 있다. 예를 들어, 컴퓨터 시스템(100)은 하드웨어 디코딩 가능한 컨텐츠의 비디오 재생, 그래픽 라이브러리들의 사용, 및/또는 분리형 GPU(110)와 연관된 애플리케이션들의 실행이 완료된 이후 신호 소스로서 내장형 GPU(118)로 되돌아갈 수 있다.
분리형 GPU(110)와 내장형 GPU(118) 사이의 스위칭들이 컴퓨터 시스템(100)에서의 그래픽 프로세싱 요건들과 연관된 이벤트들에 기초하므로, 컴퓨터 시스템(100)은 사용자들 및 애플리케이션들의 그래픽 성능 요건들에서의 변경들에 신속하게 응답하기 위한 기능성을 포함할 수 있고, 이에 의해 그래픽 성능 및 전력 절감 모두를 개선할 수 있다. 추가로, 컴퓨터 시스템(100)에서의 하나 이상의 API들을 통한 이러한 이벤트들의 검출은 컴퓨터 시스템(100) 내의 그래픽들의 디스플레이가 컴퓨터 시스템(100)에 설치된 애플리케이션들과는 독립적으로 동적으로 구성되도록 할 수 있다. 마지막으로, GPU들 사이의 스위칭을 통제하기 위한 적응가능한 정책의 사용은 컴퓨터 시스템(100)과 연관된 개별 애플리케이션들 및/또는 사용자가 디스플레이(114)의 구동에 있어서 내장형 GPU(118) 및/또는 분리형 GPU(110)의 사용을 변조하게 할 수 있다.
도 2는 일 실시예에 따른 (도 1을 참조하여 전술된) 그래픽 멀티플렉서(120)의 내부 구조를 예시한다. 도 2를 참조하면, 분리형 GPU(110)로부터의 디스플레이 스트림(122) 및 내장형 GPU(118)로부터의 디스플레이 스트림(124)은 각각 데이터 클록 캡처 블록들(205 및 210)로 공급된다. 데이터 클록 캡처 블록들(205 및 210)은 디스플레이 스트림들(122 및 124)을 역직렬화(de-serialize)하고 또한 개별 데이터 클록 신호들(221 및 222)을 추출한다.
이들 데이터 클록 신호들(221 및 222)은, 디스플레이 스트림 어셈블러(240)에 전송될 데이터 클록 신호들(221 및 222) 중 하나를 선택하는, 클록 MUX(225)에 공급된다. 일 실시예에서, GMUX 제어기(235)는 MUX(225)를 클로킹하기 위해 선택 신호(236)를 제공한다. 대안적으로, 선택 신호(236)는 하나 이상의 프로세싱 유닛들(102) 내의 프로세서 또는 또 다른 제어기와 같은 다른 소스들에 의해 제공될 수 있다.
다음으로, 디스플레이 스트림들(122 및 124)은, 분리된 데이터 클록들과 함께, 각각 데이터 버퍼들(215 및 220)에 공급된다. 데이터 버퍼들(215 및 220)은 디스플레이 스트림들(122 및 124)을 검사하여 블랭킹 구간들이 언제 발생하는지를 결정하고, 개별 블랭킹 구간 신호들(233 및 234)을 생성한다. 데이터 버퍼들(215 및 220)은 또한 데이터 MUX(230)로 공급되는 출력 데이터 스트림들을 생성한다.
블랭킹 구간 신호들(233 및 234)은, 디스플레이 스트림들(122 및 124)의 블랭킹 구간들 사이에 오버랩(만약 존재하는 경우)이 얼마나 존재하는지를 결정하기 위해 블랭킹 구간들(233 및 234)을 비교하는, GMUX 제어기(235)에 공급된다. (블랭킹 구간 신호들(233 및 234)이 수직 또는 수평 블랭킹 구간들을 표시할 수 있다는 점에 유의한다). GMUX 제어기(235)가 블랭킹 구간들(233 및 234)이 충분한 양의 오버랩을 가진다고 결정하는 경우, GMUX 제어기(235)는 블랭킹 구간이 오버랩하기 시작함에 따라 선택 신호(236)를 어써트(assert)한다. 이는 클록 MUX(225) 및 데이터 MUX(230)로 하여금 그들의 블랭킹 구간들이 오버랩하는 기간 동안 디스플레이 스트림들(122 및 124) 사이에서 스위칭하게 한다. 스위칭이 블랭킹 구간들 동안 발생하기 때문에, 스위칭 프로세스는 디스플레이(114) 상에서 가시적이지 않을 것이다.
마지막으로, 데이터 MUX(230)의 출력 및 선택된 데이터 클록(223)은 디스플레이 스트림 어셈블러(240)로 공급되고, 디스플레이 스트림 어셈블러(240)는 데이터 스트림을 디스플레이(114)로 송신하기 전에 데이터 스트림을 재-직렬화한다.
도 3은 일 실시예에 따라 컴퓨터 시스템 내의 GPU들 사이의 스위칭을 위한 예시적인 정책을 예시하는 다이어그램을 제시한다. 전술된 바와 같이, 정책은, 컴퓨터 시스템 내의 디스플레이를 구동하기 위한 신호 소스들로서, 분리형 GPU와 내장형 GPU와 같은 2개의 상이한 GPU들 또는 GPU와 CPU 사이에서 스위칭하기 위해 사용될 수 있다. 또한, 정책은 예를 들어, 컴퓨터 시스템에서 API를 통해 애플리케이션들을 실행함으로써 생성될 수 있는 이벤트들(304)에 기초하여 특정 GPU의 사용을 특정할 수 있다. 특히, 정책은, 더 높은 성능의 GPU(예를 들어, 분리형 GPU(110))에 대한 종속성들을 제거하는 이벤트들뿐만 아니라 더 높은 성능의 GPU에 대한 종속성들과 연관된 이벤트들을 식별할 수 있다.
도 3에 도시된 바와 같이, 이벤트들(304)은 그래픽 라이브러리의 사용(306), 비디오 재생(308), 및/또는 윈도우 매니저의 동작들(310)과 연관될 수 있다. 그래픽 라이브러리(306)는 애플리케이션들(302)로 하여금 컴퓨터 시스템 상에서 그래픽 하드웨어 가속화를 사용하게 할 수 있다. 그 결과, 그래픽 라이브러리의 사용(306)은 더 높은 그래픽 성능 요건들과 연관될 수 있고, 분리형 GPU의 사용(320)을 트리거링할 수 있다. 예를 들어, 3차원(3D) 컴퓨터 게임은 그래픽 하드웨어 가속화를 사용하여 복잡한 화면들 및 캐릭터들을 렌더링하기 위해 OpenGL을 사용할 수 있다. 또한, 3D 컴퓨터 게임은 실시간으로 그래픽을 렌더링 및 디스플레이하기 위해 분리형 GPU의 기능성을 요구할 수 있다.
특히, 분리형 GPU의 사용(320)은, 그래픽 라이브러리(306)에 대한 호출 동안 오프라인 렌더러가 지원되지 않음(312)을 의미하는, 애플리케이션이 두 GPU들 모두를 암묵적으로 지원하지 않는 경우, 그리고/또는 애플리케이션이 분리형 GPU를 사용(320)하기 위해 그래픽 라이브러리(306) 내의 함수에 대한 호출을 통해 분리형 GPU에 대한 명시적 요청을 수행하는 경우(314) 트리거링될 수 있다. 반면, 애플리케이션이 오프라인 렌더링을 지원하는 경우, 정책은 분리형 GPU에 대한 즉각적 스위칭을 지시하지 않을 수 있다. 대신, 정책은 애플리케이션으로 하여금 그래픽 라이브러리(306)에 대한 추가적인 메서드 호출들을 통해 두 GPU들 모두의 사용을 구성하도록 할 수 있다. 또한, 애플리케이션은 내장형 GPU을 사용하기 위한 후속의 명시적 요청(315)을 통해 분리형 GPU에 대한 이전에 생성된 종속성을 제거(322)할 수 있다.
이전에 언급된 바와 같이, 그래픽 라이브러리의 사용(306)은 그래픽 라이브러리(306)에 대한 링크, 애플리케이션 실행 동안 그래픽 라이브러리(306)의 로딩, 및/또는 애플리케이션에 의한 그래픽 라이브러리(306)에 대한 메서드 호출들에 대응할 수 있다. 그 결과, 분리형 GPU로의 스위칭은 애플리케이션 실행 이전에, 애플리케이션 실행 동안, 그리고/또는 애플리케이션에 의한 그래픽 하드웨어 가속화의 사용 동안 트리거링될 수 있다. 추가로, 링크 또는 로딩과 같은 이벤트들은, 애플리케이션이 최종적으로 그래픽 라이브러리(306)를 통해 그래픽 하드웨어 가속화를 이용하는 경우 분리형 GPU로의 끊김 없는 스위칭이 이루어질 수 있도록, 분리형 GPU를 구성하기 위해 사용될 수 있다. 예를 들어, 더 상세한 내용에 대해서는 도 5에 대한 기재를 참조하라.
비디오 재생(308)은 디코딩 가능한 컨텐츠 및/또는 고해상도/고-비트레이트 재생(316)이 수반되는 경우 분리형 GPU에 대한 종속성과 연관될 수 있다. 예를 들어, 분리형 GPU는 분리형 GPU에 의한 디코딩, 암호해독 및/또는 압축해제를 허용하는 메커니즘을 사용하여 비디오 컨텐츠가 인코딩되고, 암호화되고, 그리고/또는 압축되는 경우 재생을 위해 사용될 수 있다(320). 비디오 컨텐츠를 디코딩하기 위한 분리형 GPU의 사용(320)은 재생중인 비디오의 해상도 및/또는 비트레이트에 의해 추가로 결정될 수 있다. 예를 들어, 정책은 저해상도 비디오에 대한 컴퓨터 시스템의 CPU에 의한 디코딩, 및 고해상도/고-비트레이트 비디오에 대한 분리형 GPU(320)에 의한 디코딩을 특정할 수 있다. 대안적으로, 분리형 GPU는 이후 내장형 GPU에 의해 컴퓨터 시스템 상에 디스플레이되는 비디오 컨텐츠를 디코딩하기 위해 오프라인 상황에서 사용될 수 있다. 비디오 재생(308)에 관련된 종속성들은 비디오 재생이 중단될 때(321) 제거될 수 있다(322).
예를 들어, 캡처된 디스플레이, 명시적 요청, 및/또는 외부 디스플레이의 접속(318)의 경우, 윈도우 매니저를 이용한 동작(310)이 또한 분리형 GPU(320)로의 스위칭을 트리거링할 수 있다. 더 구체적으로, 애플리케이션에 의한 디스플레이의 캡처 - 여기서, 애플리케이션은 디스플레이 스크린(예를 들어, "풀 스크린") 상에 표시되어 있는 것에 대한 풀 제어를 가짐 - 는 컴퓨터 시스템에서의 디스플레이들의 구성을 변경하고, 그래픽 라이브러리의 사용(306)을 트리거링할 수 있는데, 이는 이후 분리형 GPU의 사용(320)을 촉발할 수 있다. 유사하게, 애플리케이션은 분리형 GPU를 사용하기 위한 명시적 요청을 수행하고, 그리고/또는 윈도우 매니저(310)를 통해 GPU 지원을 요청하고, 따라서, 분리형 GPU(320)로의 스위칭을 트리거링할 수 있다. 컴퓨터 시스템으로의 외부 디스플레이의 접속 또한 컴퓨터 시스템의 그래픽 성능 요구들을 증가시키고, 분리형 GPU가 사용되도록 할 수 있다(320). 이들 트리거링 조건들이, 예를 들어, 캡처된 디스플레이의 릴리즈, GPU 지원의 중지, 내장형 GPU를 사용하기 위한 명시적 요청(315), 및/또는 외부 디스플레이의 접속해제로 인해 중지되는 경우(321), 그 중지는 분리형 GPU에 대한 하나 이상의 종속성들의 제거(322)를 트리거링할 수 있다.
최종적으로, 정책은 분리형 GPU에 대한 모든 종속성들이 제거(328)된 이후 내장형 GPU의 사용(330)을 특정할 수 있다. 다시 말해, 분리형 GPU에 대한 단일 종속성은 분리형 GPU로의 스위칭을 트리거링할 수 있는 반면, 내장형 GPU는 실행중인 어떠한 애플리케이션들도 분리형 GPU에 대한 종속성들을 가지지 않는 경우 사용될 수 있다.
당업자는 GPU들 사이의 스위칭을 위한 상이한 정책들이 사용자 선호도, 애플리케이션 요건들, 및/또는 컴퓨터 시스템과 연관된 GPU 특징들에 기초하여 사용될 수 있음을 이해할 것이다. 예를 들어, GPU의 특징들의 사용과 연관된 종속성들은, 특징들 중 일부가 컴퓨터 시스템 내의 다른 GPU들에서 사용가능하지 않은 경우 존재할 수 있다. 같은 방식으로, 더 높은 성능의 그래픽에 대한 사용자 선호도들은 정책에서 분리형 GPU에 대한 추가적인 종속성들의 식별을 촉발할 수 있는 반면, 더 낮은 성능 그래픽들에 대한 사용자 선호도들은 정책에의 분리형 GPU에 대한 종속성들의 수를 감소시킬 수 있다.
또한, 애플리케이션에 대한 종속성들 모두가 애플리케이션의 종료시 제거될 수 있다는 점에 유의한다.
도 4는 일 실시예에 따라 컴퓨터 시스템을 구성하는 프로세스를 예시하는 흐름도를 도시한다. 하나 이상의 실시예들에서, 단계들 중 하나 이상이 생략되고, 반복되고, 그리고/또는 상이한 순서로 수행될 수 있다. 따라서, 도 4에 도시된 단계들의 특정 배열은 실시예들의 범위를 제한하는 것으로 해석되지 않아야 한다.
초기에, 디스플레이는 컴퓨터 시스템 내의 제1 GPU를 사용하여 구동된다(동작 402). 제1 GPU는 그래픽 코드를 실행하는 범용 프로세서 및/또는 통합된 GPU와 같은, 저전력 및/또는 저성능 GPU에 대응할 수 있다. 다음으로, 컴퓨터 시스템 내의 제2 GPU에 대한 종속성과 연관된 이벤트가 API를 통해 검출된다(동작 404). 제2 GPU는 제1 GPU보다는 더 높은 성능 및 전력 소모와 연관될 수 있다. 예를 들어, 제2 GPU는 제1 GPU가 통합된 GPU인 경우 분리형 GPU에 대응할 수 있고, 또는 제2 GPU는 제1 GPU가 CPU인 경우 특수 목적 GPU에 대응할 수 있다. API는 그래픽 라이브러리, 비디오 재생, 및/또는 윈도우 매니저와 연관될 수 있다. 그 결과, API를 통해 검출되는 이벤트들은 컴퓨터 시스템의 그래픽 성능 요건들을 평가하고, 제1 GPU와 제2 GPU 사이의 스위칭들을 트리거링하기 위해 사용될 수 있다.
이벤트에 응답하여, 디스플레이를 구동하기 위한 신호 소스로서 제1 GPU로부터 제2 GPU로의 스위칭이 이루어진다(동작 406). 전술된 바와 같이, 제1 GPU와 제2 GPU 사이의 끊김 없는 스위칭은 스위칭 이전에 제2 GPU를 구성함으로써 용이해질 수 있다. 예를 들어, 제2 GPU의 구성은 애플리케이션의 실행 파일(executable)에 그래픽 라이브러리를 로딩할 때 시작될 수 있는 반면, 제2 GPU로의 스위칭은 애플리케이션이 그래픽 라이브러리를 사용하여 "그리기(draw)" 동작을 수행할 때까지 발생하지 않을 수 있다.
제2 GPU는 제2 GPU에 대한 모든 종속성들이 제거될 때까지 신호 소스로서 계속 사용될 수 있다(동작 408). 예를 들어, 제2 GPU는 컴퓨터 시스템과 연관된 정책에 의해 특정되는 모든 그래픽-집약적 애플리케이션들 및/또는 동작들이 실행을 완료할 때까지 디스플레이를 계속 구동할 수 있다. 종속성들이 여전히 존재하는 경우, 제2 GPU는 신호 소스로서 계속 사용된다(동작 410). 그러나, 제2 GPU에 대한 종속성들이 더 이상 존재하지 않는 경우, 신호 소스는 컴퓨터 시스템에서 전력을 보존하기 위해 제1 GPU로 다시 스위칭된다(동작 412).
도 5는 일 실시예에 따른 GPU-스위칭 프로세스를 예시하는 또 다른 흐름도를 제시한다.
초기에, 디스플레이는 제1 GPU를 사용하여 구동된다(동작 502). 다음으로, 초기 이벤트 또는 함수 호출의 검출에 응답하여, 시스템은 GPU 스위칭을 위해 제2 GPU를 구성한다(동작 504). 일 실시예에서, 제2 GPU로의 스위칭은 디스플레이가 제2 GPU에 의해 구동되도록 즉시 발생한다. 또 다른 실시예에서, 스위칭은 후속하는 이벤트 또는 함수 호출의 검출에 응답하여 발생한다(동작 506).
다양한 실시예들의 이전 설명들은 오직 예시 및 설명의 목적으로 제시되었다. 이 설명들은 철저하려고 하거나, 또는 개시된 형태들로 본 발명을 제한하도록 의도되지 않는다. 따라서, 많은 수정들 및 변경들이 당업자에게 명백할 것이다. 추가로, 위 개시 내용은 본 발명을 제한하도록 의도되지 않는다.

Claims (32)

  1. 컴퓨터 시스템을 구성하기 위한 방법으로서,
    상기 컴퓨터 시스템 내의 제1 그래픽-프로세싱 유닛(GPU)을 사용하여 디스플레이를 구동하는 단계;
    상기 제1 GPU에서 프로세싱 작업을 수행하는 단계;
    하나 이상의 이벤트들을 특정하는 정책을 식별하는 단계 - 상기 하나 이상의 이벤트들은 상기 컴퓨터 시스템 내의 제2 GPU에 대한 하나 이상의 종속성들과 연관됨 - ;
    상기 하나 이상의 이벤트들이 검출될 때, 상기 정책이 만족되는지를 결정하는 단계;
    상기 정책이 만족된다는 결정에 응답하여, 상기 디스플레이를 구동하기 위한 신호 소스로서 상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 준비를 하는 단계;
    상기 정책이 만족된다는 결정 후, 상기 제1 GPU로부터 상기 제2 GPU로 스위칭하는 단계;
    상기 정책이 더 이상 만족되지 않는다는 결정 후, 상기 제2 GPU로부터 상기 제1 GPU로 스위칭하는 단계를 포함하고,
    상기 하나 이상의 종속성들의 각각은,
    그래픽 라이브러리로의 링크;
    애플리케이션 실행 동안 상기 그래픽 라이브러리의 로딩;
    상기 그래픽 라이브러리에 대한 메서드 호출들; 및
    상기 컴퓨터 시스템에서의 그래픽 성능과 연관된 사용자 선호도
    중 하나에 대응되는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 이벤트들은 하나 이상의 응용 프로그래밍 인터페이스(API)들을 통해 검출되는 방법.
  3. 삭제
  4. 제1항에 있어서,
    이벤트를 검출하여 상기 정책이 더 이상 만족되지 않는 것을 검출하는 단계를 더 포함하는 방법.
  5. 제2항에 있어서,
    상기 하나 이상의 API들은 비디오 재생 및 윈도우 매니저 중 적어도 하나와 연관되는 방법.
  6. 제5항에 있어서,
    상기 하나 이상의 종속성들은:
    디코딩 가능한 컨텐츠의 비디오 재생;
    상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 요청; 및
    주변장치 또는 디스플레이에의 플러그인과 같은 시스템 이벤트
    중 적어도 하나에 대응하는 방법.
  7. 제6항에 있어서,
    상기 요청은 상기 윈도우 매니저 또는 상기 그래픽 라이브러리에 대해 이루어지는 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 하나 이상의 이벤트들은:
    상기 제2 GPU에 대한 하나 이상의 종속성들과 연관된 애플리케이션의 초기화;
    상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 요청의 호출(invocation);
    상기 그래픽 라이브러리의 사용;
    상기 디코딩 가능한 컨텐츠의 비디오 재생; 및
    주변장치 또는 디스플레이에의 플러그인과 같은 시스템 이벤트
    중 적어도 하나인 방법.
  10. 삭제
  11. 제1항에 있어서,
    상기 제1 GPU는 시스템 칩셋에 통합되는 저전력 GPU이고, 상기 제2 GPU는 분리형 GPU 칩 상에 상주하는 고전력 GPU인 방법.
  12. 제1항에 있어서,
    상기 제1 GPU는 그래픽 코드를 실행하는 범용 프로세서이고, 상기 제2 GPU는 특수목적 GPU인 방법.
  13. 디스플레이를 구동하기 위해 제1 그래픽 프로세서로부터 제2 그래픽 프로세서로 스위칭하는 컴퓨터 시스템으로서,
    제1 그래픽 프로세싱 유닛(GPU); 및
    제2 GPU
    를 포함하고, 상기 컴퓨터 시스템은:
    상기 컴퓨터 시스템 내의 상기 제2 GPU에 대한 하나 이상의 종속성들과 연관된 하나 이상의 이벤트들을 특정하는 정책을 식별하고;
    상기 하나 이상의 이벤트들이 검출될 때, 상기 정책이 만족되는지를 결정하고;
    상기 정책이 만족된다는 결정에 응답하여, 상기 디스플레이를 구동하기 위한 신호 소스로서 상기 제1 GPU로부터 상기 제2 GPU로 스위칭하고;
    상기 정책이 더 이상 만족되지 않는다는 결정 후, 상기 제2 GPU로부터 상기 제1 GPU로 스위칭하도록 구성되고,
    상기 하나 이상의 종속성들은,
    그래픽 라이브러리로의 링크;
    애플리케이션 실행 동안 상기 그래픽 라이브러리의 로딩;
    상기 그래픽 라이브러리에 대한 메서드 호출들; 및
    상기 컴퓨터 시스템에서의 그래픽 성능과 연관된 사용자 선호도
    중 하나에 대응되는 컴퓨터 시스템.
  14. 제13항에 있어서,
    상기 하나 이상의 이벤트들은 하나 이상의 응용 프로그래밍 인터페이스(API)들을 통해 검출되는 컴퓨터 시스템.
  15. 제13항에 있어서,
    상기 컴퓨터 시스템은:
    상기 정책이 만족된다는 결정에 응답하여 그리고 상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 전에, 상기 디스플레이를 구동하기 위한 신호 소스로서 상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 준비를 하도록 더 구성되는 컴퓨터 시스템.
  16. 제13항에 있어서,
    상기 제1 GPU는 시스템 칩셋에 통합되는 저전력 GPU이고, 상기 제2 GPU는 분리형 GPU 칩 상에 상주하는 고전력 GPU인 컴퓨터 시스템.
  17. 제14항에 있어서,
    상기 하나 이상의 API들은 그래픽 라이브러리, 비디오 재생 및 윈도우 매니저 중 적어도 하나와 연관되는 컴퓨터 시스템.
  18. 제17항에 있어서,
    상기 하나 이상의 종속성들은:
    디코딩 가능한 컨텐츠의 비디오 재생;
    상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 요청; 및
    주변장치 또는 디스플레이에의 플러그인과 같은 시스템 이벤트
    중 적어도 하나에 대응하는 컴퓨터 시스템.
  19. 제18항에 있어서,
    상기 요청은 상기 윈도우 매니저 또는 상기 그래픽 라이브러리에 대해 이루어지는 컴퓨터 시스템.
  20. 제13항에 있어서,
    상기 하나 이상의 이벤트들은:
    상기 제2 GPU에 대한 하나 이상의 종속성들과 연관된 애플리케이션의 초기화;
    상기 제1 GPU로부터 상기 제2 GPU로 스위칭하기 위한 요청의 호출(invocation);
    상기 그래픽 라이브러리의 사용;
    디코딩 가능한 컨텐츠의 비디오 재생; 및
    주변장치 또는 디스플레이에의 플러그인과 같은 시스템 이벤트
    중 적어도 하나인 컴퓨터 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
KR1020127020441A 2010-01-06 2010-12-22 그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭 KR101606428B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29272110P 2010-01-06 2010-01-06
US61/292,721 2010-01-06
US12/695,265 2010-01-28
US12/695,265 US8368702B2 (en) 2010-01-06 2010-01-28 Policy-based switching between graphics-processing units
PCT/US2010/061820 WO2011084831A1 (en) 2010-01-06 2010-12-22 Policy-based switching between graphics-processing units

Publications (2)

Publication Number Publication Date
KR20120120281A KR20120120281A (ko) 2012-11-01
KR101606428B1 true KR101606428B1 (ko) 2016-03-28

Family

ID=44224472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127020441A KR101606428B1 (ko) 2010-01-06 2010-12-22 그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭

Country Status (7)

Country Link
US (2) US8368702B2 (ko)
EP (1) EP2521971B1 (ko)
JP (1) JP5784633B2 (ko)
KR (1) KR101606428B1 (ko)
CN (1) CN102763081B (ko)
TW (1) TWI452514B (ko)
WO (1) WO2011084831A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8300056B2 (en) 2008-10-13 2012-10-30 Apple Inc. Seamless display migration
US8797334B2 (en) 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
US8648868B2 (en) * 2010-01-06 2014-02-11 Apple Inc. Color correction to facilitate switching between graphics-processing units
US8368702B2 (en) 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US20120243031A1 (en) * 2011-03-25 2012-09-27 Konica Minolta Laboratory U.S.A., Inc. Gpu accelerated color analysis and control system
US8560453B2 (en) * 2011-06-30 2013-10-15 Intel Corporation Method and apparatus for dynamic, real-time ad insertion based on meta-data within a hardware based root of trust
US8692833B2 (en) * 2011-08-09 2014-04-08 Apple Inc. Low-power GPU states for reducing power consumption
KR101861742B1 (ko) 2011-08-30 2018-05-30 삼성전자주식회사 이종의 가속기들 사이에서 스위칭할 수 있는 데이터 처리 시스템과 그 방법
US9672609B1 (en) * 2011-11-11 2017-06-06 Edge 3 Technologies, Inc. Method and apparatus for improved depth-map estimation
TWI511078B (zh) * 2012-06-11 2015-12-01 Acer Inc 影像處理的調整方法及其電子裝置
CN103531217B (zh) * 2012-07-02 2016-06-08 宏碁股份有限公司 影像处理的调整方法及其电子装置
KR20140013652A (ko) * 2012-07-26 2014-02-05 삼성전자주식회사 시스템 온 칩 및 이를 포함하는 전자 기기
US9760967B2 (en) 2013-11-13 2017-09-12 Qualcomm Incorporated System and method of dynamically throttling CPU frequency for gaming workloads
KR102092315B1 (ko) * 2013-11-14 2020-04-14 한화테크윈 주식회사 영상 기록 시스템, 호스트 시스템의 영상 처리 방법 및 장치
EP2962192B1 (en) * 2014-05-09 2017-12-06 Huawei Technologies Co., Ltd. System and method thereof to optimize boot time of computers having multiple cpus
CN105446462B (zh) * 2014-06-27 2020-12-18 联想(北京)有限公司 一种显示方法、装置、电路及电子设备
KR101706088B1 (ko) * 2015-11-10 2017-02-13 홍성규 Ssd 제어기에서의 프로세서 스위칭 방법 및 장치
US9971708B2 (en) 2015-12-02 2018-05-15 Advanced Micro Devices, Inc. System and method for application migration between docking station and dockable device
WO2017092019A1 (zh) * 2015-12-03 2017-06-08 华为技术有限公司 根据场景改变图形处理分辨率的方法和便携电子设备
WO2017131741A1 (en) 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Expansion bus devices
JP6658136B2 (ja) 2016-03-14 2020-03-04 コニカミノルタ株式会社 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム
US10255652B2 (en) * 2017-01-18 2019-04-09 Amazon Technologies, Inc. Dynamic and application-specific virtualized graphics processing
US10776895B2 (en) * 2017-02-10 2020-09-15 Apple Inc. GPU power and performance management
TWI676129B (zh) * 2018-06-29 2019-11-01 致茂電子股份有限公司 多核心同步處理裝置及其同步控制方法
JP6695942B2 (ja) * 2018-08-24 2020-05-20 レノボ・シンガポール・プライベート・リミテッド 情報処理装置、制御方法、及びプログラム
US11107181B2 (en) * 2018-11-15 2021-08-31 Arizona Board Of Regents On Behalf Of Arizona State University Fidelity-driven runtime thermal management for near-sensor architectures
US11893962B2 (en) 2020-02-18 2024-02-06 Hewlett-Packard Development Company, L.P. Graphics processor switching based on coupled display devices
US11763414B2 (en) * 2020-09-23 2023-09-19 Ati Technologies Ulc Glitchless GPU switching at a multiplexer
CN112416441A (zh) * 2020-11-03 2021-02-26 西安领创电子科技有限公司 基于物联网的设备管理方法及装置、系统
WO2023277869A1 (en) * 2021-06-29 2023-01-05 Hewlett-Packard Development Company, L.P. Activation of integrated graphical processing units
CN113777476B (zh) * 2021-08-30 2024-02-23 苏州浪潮智能科技有限公司 一种gpu故障诊断系统、诊断方法、设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009288430A (ja) 2008-05-28 2009-12-10 Toshiba Corp 情報処理装置

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862156A (en) 1984-05-21 1989-08-29 Atari Corporation Video computer system including multiple graphics controllers and associated method
EP0481534B1 (en) 1984-07-23 1998-01-14 Texas Instruments Incorporated Video system
US5155595A (en) 1991-01-31 1992-10-13 Lsi Logic Corp. Genlock frequency generator
JPH066708A (ja) 1992-06-23 1994-01-14 Mitsubishi Electric Corp 画面表示装置
EP0734011A3 (en) 1995-03-21 1999-01-20 Sun Microsystems, Inc. Field synchronization of independent frame buffers
US5969728A (en) 1997-07-14 1999-10-19 Cirrus Logic, Inc. System and method of synchronizing multiple buffers for display
US5943064A (en) 1997-11-15 1999-08-24 Trident Microsystems, Inc. Apparatus for processing multiple types of graphics data for display
JP3464924B2 (ja) 1998-03-13 2003-11-10 株式会社東芝 同期制御回路
US6424320B1 (en) 1999-06-15 2002-07-23 Ati International Srl Method and apparatus for rendering video
US6624816B1 (en) 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
US6778187B1 (en) 1999-12-27 2004-08-17 Oak Technology, Inc. Methods and devices to process graphics and/or video data
US6535208B1 (en) 2000-09-05 2003-03-18 Ati International Srl Method and apparatus for locking a plurality of display synchronization signals
EP1189198A1 (en) 2000-09-18 2002-03-20 Siemens Aktiengesellschaft A method and system for operating a unified memory and graphics controller combination
US6903732B2 (en) 2001-01-15 2005-06-07 Matsushita Electric Industrial Co., Ltd. Image display device
US6646645B2 (en) 2001-04-23 2003-11-11 Quantum3D, Inc. System and method for synchronization of video display outputs from multiple PC graphics subsystems
US6943844B2 (en) 2001-06-13 2005-09-13 Intel Corporation Adjusting pixel clock
US8730230B2 (en) 2002-10-19 2014-05-20 Via Technologies, Inc. Continuous graphics display method for multiple display devices during the processor non-responding period
JP3726905B2 (ja) 2003-01-31 2005-12-14 セイコーエプソン株式会社 表示ドライバ及び電気光学装置
US7483031B2 (en) 2003-04-17 2009-01-27 Nvidia Corporation Method for synchronizing graphics processing units
EP1629853A1 (en) 2003-06-04 2006-03-01 SHIONOGI & CO., LTD. Method for preparing powder exhibiting low susceptibility to electrification
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
TW591375B (en) 2003-08-08 2004-06-11 Via Tech Inc Video display system and its power-saving method
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7499044B2 (en) 2003-10-30 2009-03-03 Silicon Graphics, Inc. System for synchronizing display of images in a multi-display computer system
US6985152B2 (en) 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
JP2005316176A (ja) 2004-04-28 2005-11-10 Toshiba Corp 電子機器及び表示制御方法
US20070094444A1 (en) 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US8446417B2 (en) 2004-06-25 2013-05-21 Nvidia Corporation Discrete graphics system unit for housing a GPU
GB2415852B (en) 2004-07-02 2010-07-14 Filmlight Ltd Method and apparatus for image processing
TWM261751U (en) 2004-07-09 2005-04-11 Uniwill Comp Corp Switching display processing architecture for information device
US7576745B1 (en) 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US7502947B2 (en) * 2004-12-03 2009-03-10 Hewlett-Packard Development Company, L.P. System and method of controlling a graphics controller
US7522167B1 (en) * 2004-12-16 2009-04-21 Nvidia Corporation Coherence of displayed images for split-frame rendering in multi-processor graphics system
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US7730336B2 (en) 2006-05-30 2010-06-01 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US8681160B2 (en) 2005-05-27 2014-03-25 Ati Technologies, Inc. Synchronizing multiple cards in multiple video processing unit (VPU) systems
JP4847168B2 (ja) 2005-06-28 2011-12-28 キヤノン株式会社 アプリケーション管理システム、アプリケーション管理方法およびプログラム
CN100549870C (zh) 2005-06-28 2009-10-14 佳能株式会社 应用程序管理系统、应用程序管理方法、程序及存储介质
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7340557B2 (en) 2005-12-15 2008-03-04 Via Technologies, Inc. Switching method and system for multiple GPU support
JP5076317B2 (ja) 2005-12-27 2012-11-21 ソニー株式会社 情報処理装置、情報処理方法及びそのプログラム
JP4625781B2 (ja) * 2006-03-22 2011-02-02 株式会社東芝 再生装置
US7882380B2 (en) * 2006-04-20 2011-02-01 Nvidia Corporation Work based clock management for display sub-system
US7499043B2 (en) 2006-05-30 2009-03-03 Intel Corporation Switching of display refresh rates
US8555099B2 (en) * 2006-05-30 2013-10-08 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
JP4952119B2 (ja) * 2006-08-02 2012-06-13 日本電気株式会社 ファイルサーバを用いたコンテンツ管理システムと方法およびプログラム
US20080030510A1 (en) 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
US7698579B2 (en) 2006-08-03 2010-04-13 Apple Inc. Multiplexed graphics architecture for graphics power management
US8681159B2 (en) * 2006-08-04 2014-03-25 Apple Inc. Method and apparatus for switching between graphics sources
US7830389B2 (en) 2006-10-03 2010-11-09 Honeywell International Inc. Dual processor accelerated graphics rendering
US8199155B2 (en) * 2006-11-22 2012-06-12 Nvidia Corporation System, method, and computer program product for saving power in a multi-graphics processor environment
KR100829111B1 (ko) 2006-11-27 2008-05-16 삼성전자주식회사 휴대단말기 및 그 제어방법
KR101467558B1 (ko) 2007-07-26 2014-12-01 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
US20090079746A1 (en) 2007-09-20 2009-03-26 Apple Inc. Switching between graphics sources to facilitate power management and/or security
US8233000B1 (en) 2007-11-08 2012-07-31 Nvidia Corporation System and method for switching between graphical processing units
KR101565562B1 (ko) * 2007-12-13 2015-11-03 어드밴스드 마이크로 디바이시즈, 인코포레이티드 다수의 그래픽 서브시스템 및 감소된 전력 소비 모드들을 구비한 연산 장치를 위한 드라이버 아키텍쳐, 소프트웨어 및 방법
US8022956B2 (en) 2007-12-13 2011-09-20 Ati Technologies Ulc Settings control in devices comprising at least two graphics processors
US8330762B2 (en) 2007-12-19 2012-12-11 Advanced Micro Devices, Inc. Efficient video decoding migration for multiple graphics processor systems
US8300056B2 (en) 2008-10-13 2012-10-30 Apple Inc. Seamless display migration
US8368702B2 (en) 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US8797334B2 (en) 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
US20110216078A1 (en) 2010-03-04 2011-09-08 Paul Blinzer Method, System, and Apparatus for Processing Video and/or Graphics Data Using Multiple Processors Without Losing State Information

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009288430A (ja) 2008-05-28 2009-12-10 Toshiba Corp 情報処理装置

Also Published As

Publication number Publication date
US20130088500A1 (en) 2013-04-11
EP2521971A1 (en) 2012-11-14
WO2011084831A1 (en) 2011-07-14
JP5784633B2 (ja) 2015-09-24
CN102763081B (zh) 2016-06-01
JP2013516697A (ja) 2013-05-13
US20110164046A1 (en) 2011-07-07
KR20120120281A (ko) 2012-11-01
EP2521971B1 (en) 2018-09-12
TWI452514B (zh) 2014-09-11
CN102763081A (zh) 2012-10-31
US8368702B2 (en) 2013-02-05
TW201142702A (en) 2011-12-01
US8564599B2 (en) 2013-10-22

Similar Documents

Publication Publication Date Title
KR101606428B1 (ko) 그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭
US9013491B2 (en) Low-power GPU states for reducing power consumption
US9336560B2 (en) Facilitating efficient switching between graphics-processing units
TWI552135B (zh) 用以控制自我刷新顯示功能之技術(一)
US8847968B2 (en) Displaying static images
US20120092351A1 (en) Facilitating atomic switching of graphics-processing units
KR20080039532A (ko) 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법
US20230073736A1 (en) Reduced display processing unit transfer time to compensate for delayed graphics processing unit render time
US20230074876A1 (en) Delaying dsi clock change based on frame update to provide smoother user interface experience
WO2021056364A1 (en) Methods and apparatus to facilitate frame per second rate switching via touch event signals

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20150521

Effective date: 20151211

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 5