KR20130036213A - 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치 - Google Patents

상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치 Download PDF

Info

Publication number
KR20130036213A
KR20130036213A KR1020127025336A KR20127025336A KR20130036213A KR 20130036213 A KR20130036213 A KR 20130036213A KR 1020127025336 A KR1020127025336 A KR 1020127025336A KR 20127025336 A KR20127025336 A KR 20127025336A KR 20130036213 A KR20130036213 A KR 20130036213A
Authority
KR
South Korea
Prior art keywords
gpu
state information
execution units
mode
computing system
Prior art date
Application number
KR1020127025336A
Other languages
English (en)
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 KR20130036213A publication Critical patent/KR20130036213A/ko

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

제1 및 제2 그래픽 처리 회로 사이에서 처리를 이전하는 동안 상태 정보의 손실 없이 제1 그래픽 처리 회로와 제2 그래픽 처리 회로의 조합을 이용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템, 및 장치가 제공된다. 처리될 비디오 및/또는 그래픽 데이터는, 예를 들어, 호스트 프로세서와 같은 프로세서 상에서 구동되는 애플리케이션에 의해 공급될 수 있다. 일 예에서, 장치는 적어도 복수의 단일 명령 다중 데이터(SEVID) 실행 유닛들을 포함하는 적어도 하나의 GPU를 포함한다. GPU는 네이티브 함수 코드 모듈을 실행하도록 동작한다. 장치는 또한 제1 GPU 상의 복수의 SEVID 실행 유닛들과 동일한 프로그래밍 모델을 갖는 복수의 SEVID 실행 유닛들을 포함하는 적어도 제2 GPU를 포함한다. 또한, 제1 및 제2 GPU는 동일한 네이티브 함수 코드 모듈을 실행하도록 동작한다. 네이티브 코드 함수 모듈은 현재의 동작 모드로부터 원하는 동작 모드로의 천이(예를 들어, 일 GPU가 정지되고 타 GPU가 시작됨)가 요구된다는 제1 프로세서(예컨대, 호스트 프로세서)로부터의 통지에 응답하여 제1 GPU로 하여금 적어도 제2 GPU를 위한 상태 정보를 제공하게 한다. 제2 GPU는 제1 GPU에 의해 제공된 상태 정보를 획득하고 동일한 네이티브 함수 코드 모듈을 통해 상기 상태 정보를 이용하여 제1 GPU가 OFF인 경우 처리를 계속하도록 동작한다. 제1 프로세서는 적어도 제1 GPU 및 적어도 제2 GPU에 동작적으로 결합된다.

Description

상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치{METHOD, SYSTEM, AND APPARATUS FOR PROCESSING VIDEO AND/OR GRAPHICS DATA USING MULTIPLE PROCESSORS WITHOUT LOSING STATE INFORMATION}
본 발명은 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템, 및 장치에 관한 것이며, 보다 구체적으로는, 제1 그래픽 처리 회로와 제2 그래픽 처리 회로의 조합을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 것에 관한 것이다.
전형적인 컴퓨터 아키텍쳐에서, 프로세서 상에서 구동되는 애플리케이션으로부터 처리될 비디오 및/또는 그래픽 데이터는, 집적(integrated) 그래픽 처리 회로, 개별(discrete) 그래픽 처리 회로, 또는 집적 그래픽 처리 회로와 개별 그래픽 처리 회로의 어떤 조합에 의해 처리될 수 있다. 집적 그래픽 처리 회로는 일반적으로, 호스트 프로세서 시스템 버스에 연결된 브리지 회로(달리 "노스브리지(Northbridge)라고도 알려져 있음) 내에 집적된다. 반면에, 개별 그래픽 처리 회로는, AGP, PCI, PCI 익스프레스, 또는 임의의 다른 적합한 표준과 같은 상호연결 표준을 사용하는 상호연결을 통해 노스브리지에 연결된 외부 그래픽 처리 유닛이다. 일반적으로, 개별 그래픽 처리 회로는 집적 그래픽 처리 회로에 비해 우수한 성능을 제공하나, 또한 더 많은 전력을 소비한다. 따라서, 성능을 최적화하거나 전력 소비를 최소화하기 위해서, 집적 처리 회로와 개별 처리 회로 사이에 비디오 및/또는 그래픽 처리 책임을 스위치하는 것이 알려져 있다.
제시된 종래 기술인 도 1은 일반적으로 집적 처리 회로와 개별 처리 회로 사이에 비디오 및/또는 그래픽 처리 책임을 스위칭할 수 있는 컴퓨터 시스템(100)을 도시한다. 도시된 바와 같이, CPU 또는 임의의 다른 처리 디바이스와 같은 적어도 하나의 호스트 프로세서(102)가 호스트 프로세서 시스템 버스(106)를 통해 노스브리지 회로(104)에 연결되고, 시스템 버스(124)를 통해 시스템 메모리(122)에 연결된다. 일부 실시예들에서, 필요에 따라 복수의 호스트 프로세서들이 존재할 수 있다. 또한, 일부 실시예들에서, 시스템 메모리가 호스트 프로세서(102)가 아닌 노스브리지(104)에 연결될 수 있다. 호스트 프로세서(102)는 복수의 비순차적(out-of-order) 실행 유닛(108), 예컨대, X86 실행 유닛을 포함할 수 있다. 호스트 프로세서(102)에 구현된 아키텍쳐와 같은 비순차적 아키텍쳐들은, 병렬적으로 실행될 수 있는 독립적인 명령어들을 식별한다.
호스트 프로세서(102)는 소프트웨어 드라이버(110)를 포함하는 다양한 소프트웨어 프로그램들을 실행하도록 동작한다. 소프트웨어 드라이버(110)는 집적 그래픽 처리 유닛 및 개별 그래픽 처리 유닛(112, 114) 둘 모두와 호스트 프로세서(102) 사이에서 인터페이싱한다. 예를 들어, 소프트웨어 드라이버(110)가 디스플레이(116) 상에 오브젝트들을 그리기 위한 정보를 수신하고, 오브젝트들에 관련된 특정 기본 파라미터들을 계산하고, 그리고 추가적인 처리를 위하여 이 파라미터들을 집적 그래픽 처리 유닛 및 개별 그래픽 처리 유닛(112, 114)에 제공할 수 있다.
노스브리지(104)는 비디오 및/또는 그래픽 데이터를 처리(예를 들어, 픽셀들을 렌더링)하도록 동작하는 집적 그래픽 처리 유닛(112)을 포함하며 디스플레이(116)와 연결된다. 집적 그래픽 처리 유닛을 이용하는 알려진 노스브리지 회로의 예는 Advanced Micro Devices, Inc.에 의해 판매되는 AMD의 780 시리즈 칩셋이다. 집적 GPU(112)는 복수의 셰이더 유닛들(118)을 포함한다. 복수의 셰이더 유닛들(118)의 각각의 셰이더 유닛은 특정한 셰이딩 기능, 예컨대, 버텍스 셰이딩, 지오메트리 셰이딩, 또는 비디오 및/또는 그래픽 데이터에 대한 픽셀 셰이딩을 수행할 책임이 있는 프로그램가능한 셰이더이다. 시스템 메모리(122)는 집적 GPU(112)에 관련된 프레임 버퍼(120)를 포함한다. 프레임 버퍼(120)는 디스플레이(116) 스크린 상에 보여질 모든 픽셀에 대한 컬러 값들을 나타내는 데이터를 저장하는, 전체 시스템 메모리(122) 중 임의의 할당된 양의 메모리이다. 일 실시예에서, 호스트 CPU(102) 및 노스브리지(104)가 단일 패키지/다이(126)에 집적될 수 있다. 노스브리지(104)는, 예를 들어, 독점 버스(proprietary bus)를 통해, 사우스브리지(128)에 결합된다. 사우스브리지(128)는 컴퓨팅 시스템(100)의 입/출력 기능들 전부를 제어하는 브리지 회로이다.
개별 GPU(114)가 예를 들어, PCI 익스프레스 버스와 같은 적합한 버스(132)를 통해 노스브리지(104)(또는 집적 패키지/다이(126))에 결합된다. 개별 GPU(114)는 복수의 셰이더 유닛들(119)을 포함하며 비-시스템 메모리(136)와 연결되어 있다. 비-시스템 메모리(136)(예를 들어, "비디오" 또는 "로컬" 메모리)는 개별 GPU(114)와 관련된 프레임 버퍼(121)를 포함하며 시스템 버스(124)는 상이한 버스를 통해 액세스된다. 비-시스템 메모리(136)는 개별 GPU(114)에 대해 온-칩 또는 오프-칩일 수 있다. 개별 GPU(121)와 관련된 프레임 버퍼는 집적 GPU(120)와 관련된 프레임 버퍼와 유사한 아키텍쳐 및 동작을 가지나, 비-시스템 메모리(136) 중 할당된 양의 메모리 내에 존재한다. 개별 GPU(119) 상에 위치된 셰이더 유닛은 위에서 논의된 집적 GPU(118) 상에 위치된 셰이더 유닛들과 유사하게 동작한다. 그러나, 일부 실시예들에서, 집적 GPU(112) 상에 있는것 보다 개별 GPU(114) 상에 더 많은 셰이더 유닛들(119)이 존재하며, 이는 개별 GPU(114)로 하여금 예를 들어, 집적 GPU(112)보다 빠르게 비디오 및/또는 그래픽 데이터를 처리할 수 있게 한다. 당업자는 이 예시적인 구성에서 개별 부품들로서 제시된 구조 및 기능이, 결합된 구조 또는 부품으로서 구현될 수 있다는 것을 이해할 것이다. 다른 변형, 수정, 및 부가가 고려된다.
동작시, 컴퓨팅 시스템(100)은 집적 GPU(112), 개별 GPU(114), 또는 집적 및 개별 GPU(112, 114) 둘의 몇가지 조합을 이용하여 그래픽 데이터 처리를 달성할 수 있다. 예를 들어, 일 실시예(이하에서 "접적(integrated) 동작 모드")에서, 컴퓨팅 시스템(100)을 위한 그래픽 데이터 처리 전부를 달성하기 위해 집적 GPU(112)가 이용될 수 있다. 이 실시예는 그래픽 데이터 처리를 달성하기 위해 개별 GPU(114)를 완전히 셧오프하고 덜 전력 소모적인(less power-costly) 집적 GPU(112)에 의존함으로써 전력 소비를 최소화한다. 또 다른 실시예(이하에서 "개별 동작 모드")에서, 컴퓨팅 시스템(100)을 위한 그래픽 데이터 처리 전부를 달성하기 위해 개별 GPU(114)가 이용될 수 있다. 이 실시예는, 그래픽 처리 책임 전부를 달성하기 위해 훨씬 더 강력한 개별 GPU(114)에 전적으로 의존함으로써 집적 동작 모드에 비해 그래픽 처리 성능을 향상시킨다. 마지막으로, 일 실시예에서(이하에서 "공동(collaborative) 동작 모드"), 두개의 집적 및 이산 GPU들(112, 114)이 그래픽 처리를 달성하기 위해 동시에 이용될 수 있다. 이 실시예는 그래픽 처리 책임을 달성하기 위하여 집적 GPU(112) 및 개별 GPU(114) 둘 모두에 의존함으로써 개별 동작 모드에 대한 그래픽 데이터 처리 성능을 향상킨다. 마지막으로, 컴퓨팅 시스템(100)과 유사한 플래폼 디자인을 이용하는 상용 시스템의 예는 Advanced Micro Devices, Inc.의 ATI Hybrid CorssFireX™ 기술 및 ATI PowerXpress™ 기술 및 NVIDIA® Corporation의 Hybrid SLI® 기술을 포함한다.
그러나, 컴퓨팅 시스템(100)에 도시된 것과 유사한 설계들을 이용하는 기존의 컴퓨팅 시스템은 다수의 단점들을 겪는다. 예를 들어, 이러한 설계들은 컴퓨팅 시스템(100)이 일 동작 모드(예를 들어, 집적 동작 모드)로부터 또 다른 동작 모드(예를 들어, 개별 동작 모드)로 천이할 때 상태 정보의 손실(loss)을 야기할 수 있다. 상태 정보는, 예를 들어, 각각의 셰이더 유닛이 어떻게 비디오 및/또는 그래픽 데이터 스트림을 처리할지를 제어하는 셰이더 유닛들에 의해 사용되는 임의의 정보를 지칭한다. 예를 들어, 픽셀 셰이더에 의해 사용되는 상태 정보는 픽셸 셰이더 프로그램, 픽셀 셰이더 상수, 렌더 타겟 정보, 그래픽 동작 파라미터들 등을 포함할 수 있다. 또한, 상태 정보는 GPU에 관한 신원 정보, 예컨대 비디오 및/또는 그래픽 데이터를 처리하는데 이용되는 GPU의 모델 및/또는 컴퓨팅 시스테의 메모리 공간에서 GPU의 물리적 어드레스를 포함한다.
기존의 컴퓨팅 시스템(100)이 일 동작 모드로부터 또 다른 동작 모드로 천이될 때, 상태 정보가 종종 파괴(destroy)된다. 따라서, 기존의 컴퓨팅 시스템(100)은, GPU들 간에 비디오 및/또는 그래픽 처리 책임들이 스위치될 때 애플리케이션들이 정확하게 동작하게 하기 위하여 이 상태 정보를 재생성(re-create)하도록 지원하는 특정 소프트웨어를 종종 요구한다. 이 상태 정보의 파괴 및 재생성은 컴퓨팅 시스템 처리 자원을 불필요하게 점령하고 일 동작 모드에서 다른 동작 모드로의 스위치를 지연시킨다. 예를 들어, 기존의 컴퓨팅 시스템(100)이 일 동작 모드(예를 들어, 집적 동작 모드)로부터 다른 동작 모드(예를 들어, 개별 동작 모드)로 스위치하는데에는 수 초가 소요될 수 있다. 동작 모드들 간의 스위칭에서의 이러한 지연은 또한 디스플레이 스크린(116) 상에 원치않는 플래시를 야기할 수 있다.
기존의 컴퓨팅 시스템(100)은 또한 공동(collaborative) 동작 모드로 구성될 때 그래픽 처리를 최적화하지 못한다. 예를 들어, 이 컴퓨팅 시스템들 내에서, 두 GPU들 사이에 병렬 그래픽 및/또는 비디오 처리를 수행하기 위하여, 더 강력한 개별 GPU(114)의 처리 성능을 덜 강력한 집적 GPU(112)의 처리 성능으로 제한하는 것이 종종 필요하다. 이는 개별 GPU(114)의 완전 처리 성능이 심각하게 과소사용되는(underutilized) "최소 공통 분모(least common denominator)" 기법을 나타낸다.
따라서, 상태 정보의 손실 없이 그리고 스위칭 시간의 연장 없이, 집적, 개별, 및 공동 동작 모드들 사이에서 스위칭할 수 있는 개선된 컴퓨팅 시스템이 필요하다. 또한, 공동 동작 모드에서 개별 GPU의 처리 성능을 최대화할 수 있는 컴퓨팅 시스템이 필요하다.
본 발명은 하기의 도면들과 함께 하기의 설명을 참조하여 쉽게 이해될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타낸다.
도 1은 집적 및 개별 비디오 및/또는 그래픽 처리 회로 둘 모두를 포함하는 종래의 컴퓨팅 시스템의 예를 일반적으로 도시하는 블록도이다.
도 2는 본 개시에서 설명되는 일 실시예에 따른 컴퓨팅 시스템을 일반적으로 도시하는 블록도이다.
도 3은 본 개시에서 설명되는 일 실시예에 따른 범용 처리 유닛을 일반적으로 도시하는 블록도이다.
도 4는 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 컴퓨팅 시스템에서 비디오 및/또는 그래픽 데이터를 처리하는 방법의 일 예를 보여주는 흐름도이다.
도 5는 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 컴퓨팅 시스템에서 비디오 및/또는 그래픽 데이터를 처리하는 방법의 또 다른 예를 보여주는 흐름도이다.
일반적으로, 개시된 방법, 시스템, 및 장치는 제1 그래픽 처리 회로와 제2 그래픽 처리 회로 사이에 처리를 이전(transferring)하는 동안 상태 정보를 손실함이 없이 제1 그래픽 처리 회로와 제2 그래픽 처리 회로의 조합을 이용하여 비디오 및/또는 그래픽 데이터를 처리할 수 있게 한다. 처리될 비디오 및/또는 그래픽 데이터는, 예를 들어, 프로세서(예컨대, 호스트 프로세서) 상에서 구동되는 애플리케이션에 의해 공급된다. 일 예에서, 장치는 복수의 단일 명령 다중 데이터(SIMD) 실행 유닛들을 포함하는 적어도 하나의 GPU를 포함한다. GPU는 네이티브 함수 코드 모듈(native function code module)을 실행하도록 동작한다. 장치는 또한 제1 GPU 상의 복수의 SIMD 실행 유닛들과 동일한 프로그래밍 모델을 갖는 복수의 SIMD 실행 유닛들을 포함하는 적어도 제2 GPU를 포함한다. 또한, 제1 및 제2 GPU는 동일한 네이티브 함수 코드 모듈을 실행하도록 동작한다. 네이티브 함수 모듈은 현재 동작 모드로부터 원하는 동작 모드로 천이가 필요하다(예를 들어, 일 GPU가 정지되고 다른 GPU가 시작됨)는 제1 프로세서(예컨대, 호스트 프로세서)로부터의 통지(notification)에 응답하여, 제1 GPU로 하여금 적어도 제2 GPU를 위해 상태 정보를 제공하게 한다. 제2 GPU는 제1 GPU가 off로 남겨지는 경우 처리를 계속하기 위해 제1 GPU에 의해 제공된 상태 정보를 얻고 동일한 네이티브 함수 코드 모듈을 통해 이 상태 정보를 사용하도록 동작한다.
일 예에서, 개시된 GPU들은, 확장된 명령어 세트들(extended instruction sets)을 이용하는 스칼라 프로세서들과는 대조적으로, 단일 명령 다중 데이터(SIMD) 프로세서 형태의 벡터 프로세서들이다. 개시된 GPU들은 SIMD 프로세서를 위한 상태 정보를 저장하는데 사용되는 복수의 SIMD 엔진들 및 범용 SIMD 레지스터 세트를 포함할 수 있다. 동일한 명령이 본 기술분야에서 알려져 있는 서로 다른 SIMD 엔진들에서 실행될 수 있다. 개시된 GPU는 본 기술분야에서 알려진 바와 같이, C++을 본래 실행하는 타입일 수 있다.
또 다른 다른 예에서, 컴퓨팅 시스템은 적어도 일 GPU 및 적어도 제2 의 GPU에 결합된 하나 이상의 호스트 CPU들과 같은 프로세서를 포함한다. 이 예에서, 적어도 일 GPU, 적어도 제2의 GPU, 또는 적어도 일 GPU와 적어도 제2의 GPU 둘 모두에 의해 생성된 픽셀들을 동시에 디스플레이하도록 동작하는 디스플레이가 존재한다.
또 다른 예에서, 적어도 제2 GPU와 관련된 네이티브 함수 코드 모듈이, 픽셀 렌더링 명령들을 적어도 제2 GPU 상의 복수의 SIMD 실행 유닛들에 걸쳐 균등하게(evenly) 배분함으로써 적어도 제2 GPU에 의해 렌더링될 수 있는 픽셀들의 수를 최적화하도록 동작한다. 또 다른 예에서, 적어도 일 GPU와 관련된 네이티브 함수 코드 모듈이, 픽셀 렌더링 명령들을 적어도 일 GPU 상의 복수의 범용 실행 유닛들에 걸쳐 균등하게 배분함으로써 적어도 일 GPU에 의해 렌더링될 수 있는 픽셀들의 수를 최적화하도록 동작한다.
일 예에서, 적어도 제2 GPU와 관련된 네이티브 함수 코드 모듈은 적어도 제2 GPU 상의 복수의 SIMD 실행 유닛들에서의 실행을 위해 적어도 일 GPU 상의 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트로부터 상태 정보를 얻는다. 또 다른 예에서, 적어도 일 GPU와 관련된 네이티브 함수 코드 모듈이 적어도 일 GPU 상의 복수의 SIMD 실행 유닛들에서의 실행을 위해 적어도 제2 GPU 상의 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트들로부터 상태 정보를 얻는다. 여기에서 사용되는 바와 같이, 상태 정보를 얻는 것은 상태 정보를 검색하는 것 또는 상태 정보가 제공되게 하는 것을 포함할 수 있다.
또 다른 예에서, 호스트 프로세서는 컴퓨팅 시스템을 집적 동작 모드로부터 개별 동작 모드로, 그리고 그 반대로(vice versa) 천이시키기 위해 제어 드라이버를 실행하도록 동작할 수 있다. 일 예에서, 제어 드라이버는 프로세서 인터럽트(예컨대, 호스트 CPU 인터럽트)에 현재 동작 모드로부터 원하는 동작 모드로의, 그리고 그 반대로의 천이를 개시하도록 어써트(assert)한다. 또 다른 예에서, 현재 동작 모드로부터 원하는 동작 모드로의 천이는, 현재 동작 모드와 관련된 GPU 상의 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트들로부터 원하는 동작 모드와 관련된 GPU 상에서 실행되는 네이티브 함수 코드 모듈에 의해 액세스될 수 있는 메모리 내의 위치로 상태 정보를 전송하는 것을 포함한다.
본 개시는 또한 컴퓨팅 시스템에서 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법을 제공한다. 일 예에서, 본 방법은 현재 동작 모드와 관련된 제1 GPU에 의한 픽셀들의 렌더링을 중지(halting)하는 단계, 및 제2 GPU에 의해 액세스될 수 있는 위치에 현재 동작 모드와 관련된 상태 정보를 저장하는 단계를 포함한다. 이 예에서, 본 방법은 저장된 상태 정보를 사용하여 원하는 동작 모드와 관련된 적어도 제2 GPU에 의해 픽셀들의 렌더링을 재개(resuming)하는 단계를 더 포함한다. 일 예에서, 특정 동작 모드에서 렌더링될 수 있는 픽셀들의 수는 픽셀 렌더링 명령들을 특정 동작 모드와 관련된 복수의 범용 실행 유닛들에 걸쳐 균등하게 배분함으로써 최적화된다. 또 다른 예에서, 본 방법은 컴퓨팅 시스템이 현재의 동작 모드로부터 원하는 동작 모드로 천이되어야 함을 결정하는 단계를 포함한다. 또 다른 예에서, 제1 GPU에 의해 픽셀들의 렌더링을 중지함에 응답하여 상태 정보가 현재 동작 모드와 관련된 범용 레지스터 세트들에 저장된다. 또 다른 예에서, 본 방법은 또한 상기 저장된 상태 정보를 현재 동작 모드와 관련된 범용 레지스터 세트들로부터 메모리 위치로 카피하는 단계 및 후속적으로 그 메모리 위치로부터 상기 저장된 상태 정보를 얻는 단계를 포함한다. 또 다른 예에서, 컴퓨팅 시스템이 현재 동작 모드로부터 원하는 동작 모드로 천이되어야 함을 결정하는 것은 사용자 입력, 컴퓨팅 전력 소비 요건, 및/또는 그래픽 성능 요건에 근거한다.
본 개시는 또한 실행될 때 하나 이상의 프로세서들로 하여금 본 개시의 방법을 실시하게 하는 실행가능한 명령어들을 포함하는 컴퓨터 판독가능 매체를 제공한다. 일 예에서, 컴퓨터 판독가능 매체는 집적 제조 시스템에 의해 실행되어 본 개시의 장치를 생산할 수 있다.
본 개시는 또한 현재의 동작 모드와 관련된 픽셀들의 렌더링을 중지하도록 동작하는 그래픽 처리 유닛(GPU)을 포함하는 집적 회로를 제공한다. 이 예에서, GPU는 또한 현재 동작 모드와 관련된 상태 정보를 제2 GPU한 사용을 위해 액세스할 수 있는 위치에 저장하도록 동작한다. 일 예에서, 위에 언급된 GPU는, 현재 동작 모드로부터 원하는 동작 모드로의 천이에 응답하여, 제2 GPU에 의해 저장된 상태 정보를 사용하여, 제2 GPU에 의해 이전에 렌더링된고 있던 픽셀들의 렌더링을 재개하도록 동작한다.
다른 이점들 중에서도, 개시된 방법, 시스템, 및 장치는 상태 정보를 손실함이 없이 그리고 스위칭 시간의 연장 없이 집적, 개별, 및 공동 동작 모드들 사이의 스위칭을 제공한다. 개시된 방법, 시스템, 및 장치는 또한 동작 모드 스위치 중에 디스플레이 스크린 상에 원치않는 플래시의 출현을 경감시킨다. 또한, 개시된 방법, 시스템, 및 장치는 공동 동작 모드에서 개별 GPU의 처리 성능을 최대화한다. 다른 이점들이 당업자에게 이해될 것이다.
실시예들에 대한 하기의 설명은 그 특성상 단지 예시적인 것이고 본 개시, 본 개시의 응용, 또는 사용을 제한하려는 것이 아니다. 도 2는 서버 컴퓨터, 워크스테이션, 데스크탑 PC, 노트북 PC, PDA(personal digital assistant), 카메라, 셀룰러폰, 또는 임의의 다른 적합한 영상 디스플레이 시스템 내의 컴퓨팅 시스템과 같은, 그러나, 이들로 제한되는 것은 아닌, 컴퓨팅 시스템(200)의 일례를 도시한다. 컴퓨팅 시스템(200)은 하나 이상의 프로세서들(202)(예컨대, 마이크로프로세서들, DSP들, 또는 중앙 처리 유닛들과 같은, 공유된 프로세서들, 전용 프로세서들, 또는 프로세서들의 그룹)을 포함한다. 적어도 하나의 프로세서(202)(예를 들어, "호스트 프로세서" 또는 "호스트 CPU")가 시스템 버스(206)를 통해 브리지 회로(204)(상기 브리지 회로(204)는 전형적으로 노스브리지임)에 연결된다. 호스트 프로세서(202)는 또한 시스템 버스(224)를 통해 시스템 메모리(222)에 연결된다. 시스템 메모리(222)는, 예를 들어, 판독전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 전기적으로 소거가능한 프로그램가능 판독전용 메모리(EE-PROM), 또는 임의의 다른 적합한 디지털 저장 매체와 같은 휘발성/비휘발성 메모리 부품들의 임의의 조합일 수 있다. 시스템 메모리(222)는 상태 정보(222)를 저장하도록 동작하며 GPU(210)와 관련된 프레임 버퍼(218)를 포함한다. 프레임 버퍼(218)는 디스플레이(238) 스크린 상에 보여질 모든 픽셀에 대한 색상 값들을 나타내는 데이터를 저장하는 전체 시스템 메모리(222)의 할당된 양의 메모리이다. 일 실시예에서, 호스트 프로세서(202) 및 노스브리지(204)가 단일 패키지/다이(226) 상에 집적될 수 있다.
호스트 프로세서(202)(예를 들어, AMD 64 또는 X86 기반 프로세서)는 제어 드라이버(208)를 포함하는 다양한 소프트웨어 프로그램들을 실행하도록 동작한다. 제어 드라이버(208)는 집적 및 개별 그래픽 처리 유닛(210, 212) 둘 모두와 호스트 프로세서(202) 사이에서 인터페이싱한다. 하기에서 더 자세히 설명될 바와 같이, 제어 드라이버(208)는 일 동작 모드로부터 다른 동작모드로의 천이를 신호(예를 들어, 호스트 프로세서 인터럽트를 어써팅)하도록 동작한다. 제어 드라이버(208)는 또한 호스트 프로세서(202) 상에서 구동되는 애플리케이션으로부터 처리될 비디오 및/또는 그래픽 데이터를 추가의 처리를 위해 제1 GPU 및/또는 제2 GPU에 배분한다. 설명의 목적으로, 집적 GPU 및 개별 GPU의 예가 사용될 것이나. GPU는 독립형 칩일 수 있고, 다른 기능과 결합되거나 또는 필요에 따라 임의의 적합한 형태로 있을 수 있다. 도 2는 집적 GPU(210) 및 개별 GPU(212)를 보여준다.
이 예에서, 노스브리지(204)는 호스트 프로세서(202) 상에서 구동되는 애플리케이션으로부터 수신된 데이터와 같은 비디오 및/또는 그래픽 데이터를 처리하도록 된 집적 그래픽 처리 유닛(210)을 포함하며, 디스플레이(238)에 연결된다. 비디오 및/또는 그래픽 데이터의 처리는, 예를 들어, 디스플레이(238) 스크린 상에 디스플레이하기 위해 픽셀들을 렌더링하는 것을 포함할 수 있다. 본 기술분야에서 알려져 있는 바와 같이, 디스플레이(238)는 음극선관 튜브(CRT), 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 또는 임의의 적합한 디스플레이와 같은 내부 또는 외부 디스플레이를 포함할 수 있다. 어느 것이든 간에, 디스플레이(238)는 GPU(210), 개별 GPU(212), 또는 집적 및 개별 GPU(210, 212) 둘 모두에 의해 생산되는 픽셀들을 디스플레이하도록 동작한다. 또한 당업자가 이해할 바와 같이, 용어 "GPU"는 하나 이상의 개별 또는 (예를 들어, 호스트 프로세서와 동일한 기판 위에 집적된) 집적 코어를 갖는 그래픽 처리 유닛을 포함할 수 있다.
GPU(210)는 네이티브 함수 코드 모듈(214) 및 복수의 범용 실행 유닛들(216)을 포함한다. 네이티브 함수 코드 모듈(214)은, 예를 들어, 범용 실행 유닛들(216)(예를 들어, SIMD 실행 유닛들) 중 적어도 하나에 의해 GPU(210) 상에서 실행되는, 저장된 실행가능한 명령 데이터이다. 네이티브 함수 코드 모듈(214)은 실행 유닛(300)으로 하여금, 얼마나 많은 다른 범용 실행 유닛들(216)이 비디오 및/또는 그래픽 데이터에 대한 셰이딩 동작들을 실행할 수 있는지에 따라 이들을 동적으로 레버리지(leverage)하게 한다. 네이티브 함수 코드 모듈(214)은 실행 유닛(300)으로 하여금, 유입 워크로드(즉, 예를 들어, 호스트 프로세서(202) 상에서 구동되는 애플리케이션으로부터 기인된 처리될 비디오 및/또는 그래픽 데이터)를 분석하고, 어떤 범용 실행 유닛들이 상기 유입 워크로드를 처리할 수 있는지를 분석하고, 그리고 이용가능한 범용 실행 유닛들 사이에 상기 유입 워크 로드를 배분함으로써 이 기능을 달성하게 한다. 예를 들어, 전체 범용 실행 유닛들(216)보다 적은 범용 실행 유닛들(216)이 처리를 위해 이용될 때, 워크로드는 처리를 위해 이용될 수 있는 범용 실행 유닛들에 걸쳐 균등하게 배분된다. 이후, 추가적인 범용 실행 유닛들(216)이 사용될 수 있게됨(예를 들어, 이들이 전에 할당된 워크로드의 처리를 완료하였으므로)에 따라, 네이티브 함수 코드 모듈(214)을 실행하는 실행 유닛(300)은, GPU(210)에 의해 렌더링될 수 있는 픽셀들의 수를 최적화하도록 더 큰 범용 실행 유닛 세트 상에 워크로드를 할당한다. 또한, 처리될 비디오 및/또는 그래픽 데이터가, 다른 것들보다도, 픽셀 렌더링 명령들을 포함하기 때문에, 네이티브 함수 코드 모듈(214)은 픽셀 렌더링 명령들을 GPU(210)(또는 개별 GPU(212)) 상의 복수의 범용 실행 유닛들(216)에 걸쳐 균등하게 배분함으로써 GPU(210)(또는 또 다른 예에서 개별 GPU(212))에 의해 렌더링될 수 있는 픽셀들의 수를 최적화한다.
일 실시예에서, 범용 실행 유닛들(216)은 단일 명령 다중 데이터(SIMD) 프로세서들을 갖는 프로그램가능한 실행 유닛들이다. 이 범용 실행 유닛들(216)은 버틱스들 및 텍스쳐들을 조종하는 것과 같은 셰이딩 기능들을 수행하도록 동작한다. 또한, 범용 실행 유닛들(216)은 네이티브 함수 코드 모듈(215)를 실행하도록 동작한다. 범용 실행 유닛들(216)은 또한 예를 들어, ADM64 프로그래밍 모델과 같은 유사(like) 레지스터 및 프로그래밍 모델을 공유한다. 따라서, 범용 실행 유닛들(216)은 예를 들어, C++과 같은 동일 명령 세트 언어를 이용할 수 있다. 그러나, 당업자는 다른 적합한 프로그래밍 모델들 및/또는 명령 세트 언어들이 동등하게 이용될 수 있다는 것을 인식할 것이다.
이제 도 3을 참조하여, 복수의 범용 실행 유닛들(216) 중의 단일 범용 실행 유닛(300)의 예시도가 제공된다. 예를 들어, 도 3은 범용 실행 유닛 #1의 상세도를 도시한다. 범용 실행 유닛 #s 2-N은 범용 실행 유닛 #1과 동일한 아키텍쳐를 공유하고, 따라서, 범용 실행 유닛 #1의 상세도는 범용 실행 유닛 #s 2-N에 동등하게 적용된다. 또한, 복수의 범용 실행 유닛들(216)은 필요한 만큼의 많은 개별 범용 실행 유닛들(300)로 구성될 수 있다. 그러나, 일 실시예에서, GPU(210) 상에는 GPU(212) 상에 있을 범용 실행 유닛보다 더 적은 범용 실행 유닛들(300)이 있을 것이다. 그럼에도 불구하고, 개별 GPU(212) 상의 범용 실행 유닛들(216)은 GPU(210) 상의 범용 실행 유닛들(216)과 동일한 레지스터 및 프로그래밍 모델 및 명령 세트 언어를 공유할 것이고, 동일한 네이티브 함수 코드 모듈(214)을 실행하도록 동일하게 동작할 것이다.
각각의 범용 실행 유닛(300)은 SIMD 엔진(304)과 통신하는 명령 포인터(302)를 포함한다. 각각의 SIMD 엔진(304)은 범용 레지스터 세트(308)와 통신한다. 각각의 범용 레지스터 세트(308)는 예를 들어, 상태 정보(228)와 같은 데이터 및 주소를 둘 다 저장하도록 동작한다. 상태 정보는, 예를 들어, 데이터에 대한 명령에 따라 범용 레지스터 세트(308)에 기입된 데이터 값들을 포함할 수 있다. 상태 정보(228)는, 예를 들어, 각각의 범용 실행 유닛(300)이 어떻게 비디오 및/또는 그래픽 데이터 스트림을 처리하는지를 제어하는 범용 실행 유닛들(216)에 의해 사용되는 임의의 정보를 지칭할 수 있다. 예를 들어, 픽셀 셰이딩을 수행하는 범용 실행 유닛(300)에 의해 사용되는 상태 정보는 픽셀 셰이더 프로그램, 픽셀 셰이더 상수, 렌더 타겟 정보, 그래픽 동작 파라미터 등을 포함할 수 있다. 또한, 상태 정보(228)는 GPU(예를 들어, GPU(210) 또는 개별 GPU(212)에 대한 신원 정보, 예컨대 컴퓨팅 시스템의 메모리 스페이스 내의 GPU의 물리적 어드레스 및/또는 비디오 및/또는 그래픽 데이터를 처리하기 위해 이용되는 GPU의 모델을 포함한다.
각각의 범용 실행 유닛(300) 내의 SIMD 엔진(304)은, 예를 들어, ALU(306)와 같은 복수의 로직 유닛들을 포함한다. 각각의 ALU(306)는 그것이 수신하는 비디오 및/또는 그래픽 데이터에 대한 다양한 수학적 연산을 수행하도록 동작한다. 명령 포인터(302)가, 상태 정보(228)(예를 들어, 비디오 및/또는 그래픽 데이터 상에서 수행될 명령)가 위치되는 메모리 내의 위치를 식별하도록 동작하여, 네이티브 함수 코드 모듈(214)이 상태 정보(228)를 얻고 이에 따라 비디오 및/또는 그래픽 처리 책임을 범용 실행 유닛들(216)에 할당할 수 있다.
도 2로 다시 돌아가서, 노스브리지(204)(또는 일 실시예에서, 집적 단일 패키지/다이(226))가 예를 들어, 전용 버스(234)를 통해 사우스브리지(232)에 결합된다. 노스브리지(204)는 또한 PCI 익스프레스 버스와 같은 적합한 버스(236)를 통해 개별 GPU(212)에 추가로 결합된다. 개별 GPU(212)는 GPU(210) 상의 네이티브 함수 코드 모듈(214)와 동일한 네이티브 함수 코드 모듈(214)을 포함한다. 또한, 개별 GPU(212)는 GPU(210) 상의 범용 실행 유닛들(216)과 동일한 레지스터 및 프로그래밍 모델(예컨대, AMD64) 및 명령 세트 언어(예컨대, C++)를 공유하는 범용 실행 유닛들(216)을 포함한다. 그러나, 앞서서 언급한 바와 같이, 일 실시예에서, GPU(210) 상에서 발견되는 것보다 개별 GPU(212) 상에 훨씬 더 많은 개별 범용 실행 유닛들(300)이 존재한다. 따라서, 이 실시예에서, 네이티브 함수 코드 모듈(214)이 개별 GPU(212) 상의 훨씬 더 많은 개별 범용 실행 유닛들(300)에 워크로드를 할당할 수 있으므로, 개별 GPU(212)가 GPU(210)보다 훨씬 빠르게 워크로드를 처리할 것이다. 개별 GPU(212)는 비-시스템 메모리(230)에 더 연결된다. 비-시스템 메모리(230)는 시스템 메모리(222) 내에 저장된 상태 정보(228)와 같은 상태 정보(228)를 저장하도록 동작하며, 위에서 기술된 프레임 버퍼(218)와 유사하게 동작하는 프레임 버퍼(219)를 포함한다. 비-시스템 메모리(230)는, 예를 들어, 휘발성/비휘발성 메모리 구성요소들, 예컨대, 판독전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 전기적으로 소거가능한 프로그램가능 판독전용 메모리(EE-PROM), 또는 임의의 다른 적합한 디지털 저장 매체들의 임의의 조합일 수 있다.
도 4는 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법의 일 예를 도시한다. 단계(400)에서, 컴퓨팅 시스템(200)이 현재의 동작 모드에서 원하는 동작 모드로 천이되어야 한다는 결정이 이루어진다. 이 결정은, 예를 들어, 동작 모드의 변경을 요청하는 사용자 입력, 컴퓨팅 시스템 전력 소비 요건, 그래픽 성능 요건, 또는 다른 적합한 인자들에 근거할 수 있다. 일 예에서, 호스트 프로세서(202)는 제어 드라이버(208)의 제어 하에서 상기 결정을 한다. 그러나, 이 동작은 임의의 적합한 구성요소에 의해 수행될 수 있다. 현재의 동작 모드 및 원하는 동작 모드는, 예를 들어, 집적 동작 모드, 개별 동작 모드, 또는 공동의 동작 모드를 포함할 수 있다.
단계(402)에서, 현재의 동작 모드와 관련된 제1 GPU에 의해 달성되는 픽셀들의 렌더링이 중지되고 현재의 동작 모드와 관련된 범용 레지스터 세트들에 상태 정보가 저장된다. 여기에서 사용되는 바와 같이, 렌더링은, 예를 들어, 애플리케이션으로부터의 드로잉 커맨드에 근거하여 디스플레이를 위해 비디오를 처리하고 픽셀들을 생성하는 것을 포함한다. 상태 정보(228)는, 예를 들어, 현재의 동작 모드와 관련된 제1 GPU 상의 복수의 범용 실행 유닛들(216) 내의 범용 레지스터 세트들(308) 내에 저장될 수 있다. 단계(402)의 동작은 하기의 예에 의해 더 설명될 수 있다. 현재의 동작 모드가 집적 동작 모드였다면(즉, 그래픽 처리가 전적으로 GPU(210) 상에서 달성되고 있었다면), 상태 정보(228)는 GPU(210) 상의 범용 실행 유닛들(216)의 범용 레지스터 세트들(308)에 저장될 것이다. 현재의 동작 모드가 개별 동작 모드였다면, 상태 정보(228)는 개별 GPU(212) 상의 범용 실행 유닛들(216)의 범용 레지스터 세트들(308)에 저장될 것이다. 또한, 현재 동작 모드와 관련된 GPU에 의한 픽셀들의 렌더링의 중지는, 호스트 프로세서(202)에 인터럽트를 어써팅하는 제어 드라이버(208)에 의해 개시될 수 있다. 이러한 식으로, 일 동작 모드로부터 다른 동작모드로의 컴퓨팅 시스템(200)의 천이를 개시하기 위하여 제어 드라이버(208)가 사용될 수 있다.
단계(404)에서, 현재의 동작 모드와 관련된 범용 레지스터 세트에 저장된 상태 정보(228)가 메모리 위치에 카피된다. 예를 들어, 집적 동작 모드로부터 개별 동작 모드로 천이할 때, 상태 정보(228)가 GPU(210) 상의 범용 실행 유닛들(216)의 범용 레지스터 세트들(308)로부터 비-시스템 메모리(230)로 카피될 것이다. 반대로, 개별 동작 모드로부터 집적 동작 모드로 천이할 때, 상태 정보(228)가 GPU(212) 상의 범용 실행 유닛들(216)의 범용 레지스터 세트들(308)로부터 시스템 메모리(222)로 카피될 것이다. 호스트 프로세서(202)는 현재의 동작 모드와 관련된 범용 레지스터 세트들로부터 메모리로 상태 정보(228)를 전송(예를 들어, 카피)하도록 동작한다. 이러한 방식으로 상태 정보(228)를 전송하는 것은, 도 1에 도시된 컴퓨팅 시스템(100)과 같은 종래의 컴퓨팅 시스템에서 요구되었던 상태정보를 파괴하고 재생성할 필요를 없애준다. 현재의 동작 모드와 관련된 범용 레지스터 세트들은 이것들이 동일한 레지스터 세트 구성들(예를 들어, 레지스터들은 두 GPU 세트들 모두에서 동일함)을 공유한다는 점에서 원하는 동작 모드의 범용 레지스터 세트들에 대응한다.
단계(406)에서, 저장된 상태 정보(228)가 메모리 위치로부터 얻어진다. 이는, 예를 들어, 시스템 메모리(222) 또는 비-시스템 메모리(230)로부터 상태 정보(228)를 제공받는 또는 요청하는 네이티브 함수 코드 모듈(214)에 의해 달성될 수 있다. 예를 들어, 단계(406)에서, 집적 동작 모드로부터 개별 동작 모드로 천이할 때, GPU(212) 상에서 실행되는 네이티브 함수 코드 모듈은 비-시스템 메모리로부터 상태 정보(228)(GPU(210) 상의 범용 실행 유닛들(216)의 범용 레지스터 세트들(308)로부터 전송된 상태 정보(228))를 얻을 것이다.
단계(408)에서, 원하는 동작 모드와 관련된 적어도 제2 GPU가 픽셀들의 렌더링을 재개한다. 선행하는 동작 모드와 관련된 제1 GPU가 off로 되는 경우 원하는 동작 모드와 관련된 적어도 제2 GPU가 정확하게 픽셀들의 렌더링을 픽업할 것이다. 이러한 본질적으로 끊김없는(seamless) 천이는 개별 GPU(212) 및 GPU(210) 상의 범용 실행 유닛(216)이 동일한 레지스터 및 프로그래밍 모델 그리고 명령 세트 언어를 공유하고, 동일한 네이티브 함수 코드 모듈들(214)을 실행하기 때문에 가능하다.
도 5는 컴퓨팅 시스템에서 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법의 또 다른 예를 도시한다. 이 예에서, 상태 정보가 범용 레지스터 세트들에 저장되지 않는다. 단계(500)에서, 현재 동작 모드와 관련된 제1 GPU에 의한 픽셀들의 렌더링이 중지되고 현재 동작 모드와 관련된 상태 정보가 제2 GPU에 의해 액세스될 수 있는 위치에 저장된다. 이 예에서, 상태 정보는, 전용 레지스터 세트, 시스템 메모리, 비-시스템 메모리, 프레임 버퍼 메모리 등을 포함하나, 이들로 제한되지는 않는 온 또는 오프 칩의 임의의 적합한 메모리에 저장될 수 있다. 단계(502)에서, 픽셀들의 렌더링은 저장된 상태 정보를 사용하여 원하는 동작 모드와 관련된 적어도 제2 GPU에 의해 재개된다.
다른 식으로 말하면, 일 예에서, GPU(예를 들어, GPU(210))는 현재 동작 모드와 관련된 픽셀들의 렌더링을 중단하고, 그리고 현재 동작 모드와 관련된 상태 정보(228)를 제2 GPU(예를 들어, 개별 GPU(212))에 의한 사용을 위해 엑세스할 수 있는 위치에 저장한다. 예를 들어, 현재 동작 모드로부터 원하는 동작 모드로의 천이에 응답하여, GPU(예를 들어, GPU(210))는, 오프 칩인 또 다른 GPU(예를 들어, GPU(212))에 의해 액세스될 수 있는 위치에 상태 정보를 저장하도록 동작한다. 이 동작은 또한 GPU(212)라는 관점에서 적용가능하다.
다른 이점들 중에서도, 개시된 방법, 시스템, 및 장치는 상태 정보를 손실함이 없이 그리고 스위칭 시간을 연장함이 없이 집적, 개별, 및 공동의 동작 모드들 사이의 스위칭을 제공한다. 개시된 방법, 시스템, 및 장치는 또한 동작 모드 스위치 중에 디스플레이 스크린 상에 원치않는 플래시의 출현을 경감시킨다. 또한, 개시된 방법, 시스템, 및 장치는 공동 동작 모드에서 개별 GPU의 처리 성능을 최대화한다. 다른 이점들이 당업자들에 의해 인지될 것이다.
또한, CDROM, RAM, 다른 형태의 ROM, 하드 드라이브, 분산 메모리 등과 같은, 그러나, 이들로 제한되지는 않는 컴퓨터 판독가능 메모리 상에 저장된 실행가능 명령들에 기초하여 집적 회로들을 생성하는 집적 회로 디자인 시스템(예를 들어, 워크스테이션)이 알려져 있다. 명령들은 하드웨어 기술 언어(hardware descriptor language) 또는 다른 적합한 언어와 같은, 그러나, 이들로 제한되지는 않는 임의의 적합한 언어로 표현될 수 있다. 따라서, 본 명세서에 기술된 회로는 그러한 시스템들에 의해 집적 회로로서 생산될 수 있다. 예를 들어, 집적 회로는 컴퓨터 판독가능 매체 상에 저장된 명령어들을 이용하여 생성될 수 있는바, 상기 명령어들은 실행될 때 집적 회로 설계 시스템으로 하여금, 컴퓨팅 시스템이 현재 동작 모드로부터 원하는 동작 모드로 천이되어야 함을 결정하고, 현재 동작 모드와 관련된 제1 GPU에 의한 픽셀들의 렌더링을 중지하고, 그리고 현재 동작 모드와 관련된 범용 레지스터 세트들에 상태 정보를 저장하고, 그리고 현재 동작 모드와 관련된 범용 레지스터 세트들로부터의 저장된 상태 정보를 원하는 동작 모드와 관련된 적어도 제2 GPU에 의해 액세스될 수 있는 메모리 위치에 카피하도록 동작하는 집적 회로를 생성하게 한다. 여기에 기술된 다른 동작들을 수행하는 로직을 갖는 집적 회로가 또한 적합하게 생산될 수 있다.
위의 상세한 설명 및 여기에 설명된 예들은 단지 예시 및 설명의 목적으로 제공된것이며 제한하기 위한 것이 아니다. 따라서, 본 개시는 상기에 개시된 기본적인 기저의 원리들 및 청구항들의 범주 및 정신에 부합하는 모든 수정, 변형 또는 등가를 포함하는 것으로 이해된다.

Claims (24)

  1. 컴퓨팅 시스템으로서,
    제1 프로세서와;
    상기 제1 프로세서에 동작적으로(operatively) 결합되며 제1 복수의 단일 명령 다중 데이터(SIMD) 실행 유닛들을 포함하는 적어도 제1 GPU를 포함하며, 상기 적어도 제1 GPU는 네이티브 함수 코드 모듈(native function code module)을 실행하도록 동작하고, 상기 네이티브 함수 모듈은 현재 동작 모드로부터 원하는 동작 모드로의 천이(transition)가 요구된다는 상기 제1 프로세서로부터의 통지(notification)에 응답하여 상기 적어도 제1 GPU로 하여금 적어도 제2 GPU를 위한 상태 정보를 제공하게 하고;
    상기 적어도 제2 GPU는 상기 제1 프로세서에 동작적으로 결합되며 상기 적어도 제1 GPU 상의 상기 복수의 SIMD 실행 유닛들과 동일한 프로그래밍 모델을 갖는 제2 복수의 단일 명령 다중 데이터(SIMD) 실행 유닛들을 포함하고, 상기 적어도 제2 GPU는 상기 적어도 제1 GPU와 동일한 네이티브 함수 코드 모듈을 실행하도록 동작하고 그리고 상기 적어도 제1 GPU에 의해 제공되는 상기 상태 정보를 얻고 상기 동일한 네이티브 함수 코드 모듈을 통해 상기 상태 정보를 사용하여 처리(procesing)를 계속하는 것을 특징으로 하는 컴퓨팅 시스템.
  2. 제1 항에 있어서, 상기 적어도 제2 GPU와 관련된 상기 네이티브 함수 코드 모듈은 상기 적어도 제2 GPU 상의 복수의 SIMD 실행 유닛들에 걸쳐 균등하게(evenly) 픽셀 렌더링 명령들을 배분(distribute)함으로써 상기 적어도 제2 GPU에 의해 렌더링될 수 있는 픽셀들의 수를 최적화하도록 동작하는 것을 특징으로 하는 컴퓨팅 시스템.
  3. 제1 항에 있어서, 상기 적어도 제1 GPU와 관련된 상기 네이티브 함수 코드 모듈은 상기 적어도 제1 GPU 상의 상기 복수의 SIMD 실행 유닛들에 걸쳐 균등하게 픽셀 렌더링 명령들을 배분함으로써 상기 적어도 제1 GPU에 의해 렌더링될 수 있는 픽셀들의 수를 최적화하도록 동작하는 것을 특징으로 하는 컴퓨팅 시스템.
  4. 제1 항에 있어서, 상기 적어도 제2 GPU와 관련된 상기 네이티브 함수 코드 모듈은, 상기 적어도 제2 GPU 상의 상기 복수의 SIMD 실행 유닛들에서의 실행을 위해 상기 적어도 제1 GPU 상의 상기 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트들로부터 상태 정보를 얻는 것을 특징으로 하는 컴퓨팅 시스템.
  5. 제1 항에 있어서, 상기 적어도 제1 GPU와 관련된 상기 네이티브 함수 코드 모듈은, 상기 적어도 제1 GPU 상의 상기 복수의 SIMD 실행 유닛들에서의 실행을 위해 상기 적어도 제2 GPU 상의 상기 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트들로부터 상태 정보를 얻는 것을 특징으로 하는 컴퓨팅 시스템.
  6. 제1 항에 있어서, 상기 호스트 프로세서는 컴퓨팅 시스템을 현재 동작 모드로부터 원하는 동작 모드로 천이 및 그 반대로(vice versa) 천이시키기 위하여 제어 드라이버를 실행하도록 동작하는 것을 특징으로 하는 컴퓨팅 시스템.
  7. 제6 항에 있어서, 상기 제어 드라이버는 상기 현재 동작 모드로부터 상기 원하는 동작 모드로의 천이 및 그 반대로(vice versa)의 천이를 개시하기 위하여 프로세서 인터럽트를 어써팅(asserting)하는 것을 특징으로 하는 컴퓨팅 시스템.
  8. 제6 항에 있어서, 상기 컴퓨팅 시스템을 현재 동작 모드로부터 원하는 동작 모드로 천이시키는 것은,
    상기 현재 동작 모드와 관련된 GPU 상의 상기 복수의 SIMD 실행 유닛들 내의 범용 레지스터 세트들로부터 상기 원하는 동작 모드와 관련된 GPU 상에서 실행되는 상기 네이티브 함수 코드 모듈에 의해 액세스될 수 있는 메모리 내의 위치로 상태 정보를 전송하는 것을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  9. 제1 항에 있어서, 상기 호스트 프로세서 및 상기 적어도 제1 GPU 둘 모두가,
    동일한 챕 패키지; 또는
    동일한 다이 상에 구현되는 것을 특징으로 하는 컴퓨팅 시스템.
  10. 제1 항에 있어서, 각각의 SIMD 실행 유닛은,
    상태 정보를 저장하는 메모리 내의 위치를 포인팅하도록 동작하는 명령 포인터와;
    상기 메모리 내의 위치로부터 검색된 상태 정보를 실행하도록 동작하는 적어도 하나의 ALU를 포함하는 SIMD 엔진과; 그리고
    상태 정보를 저장하도록 동작하는 적어도 하나의 범용 레지스터 세트를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  11. 제1 항에 있어서, 상기 적어도 제1 또는 제2 GPU 중 하나 또는 이들 모두에 의해 생산된 픽셀들을 디스플레이하도록 동작하는 적어도 하나의 디스플레이를 더 포함하는 컴퓨팅 시스템.
  12. 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법으로서,
    현재 동작 모드와 관련된 제1 GPU에 의한 픽셀들의 렌더링을 중지하고 그리고 상기 현재 동작 모드와 관련된 상태 정보를 제2 GPU에 의해 액세스될 수 있는 위치에 저장하는 단계; 및
    상기 저장된 상태 정보를 사용하여 원하는 동작 모드와 관련된 적어도 제2 GPU에 의해 픽셀들의 렌더링을 재개하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  13. 제12 항에 있어서,
    특정 동작 모드와 관련된 복수의 범용 실행 유닛들에 걸쳐 균등하게 픽셀 렌더링 명령들을 배분함으로써 특정 동작 모드에서 렌더링될 수 있는 픽셀들의 수를 최적화하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  14. 제12 항에 있어서,
    상기 컴퓨팅 시스템이 현재의 동작 모드로부터 원하는 동작 모드로 천이되어야 함을 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  15. 제12 항에 있어서,
    상기 제1 GPU에 의한 상기 픽셀들의 렌더링을 중지함에 응답하여, 상기 상태 정보가 상기 현재의 동작 모드와 관련된 범용 레지스터 세트들에 저장되는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  16. 제15 항에 있어서,
    상기 저장된 상태 정보를 상기 현재 동작 모드와 관련된 범용 레지스터 세트들로부터 메모리 위치로 카피하는 단계; 및
    상기 메모리 위치로부터 상기 저장된 상태 정보를 획득하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  17. 제12 항에 있어서, 상기 컴퓨팅 시스템이 현재의 동작 모드로부터 원하는 동작 모드로 천이되어야한다는 결정은,
    사용자 입력;
    컴퓨팅 시스템 전력 소비 요건; 또는
    그래픽 성능 요건 중 적어도 하나에 근거한 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  18. 제12 항에 있어서,
    상기 현재 동작 모드와 관련된 GPU에 의한 픽셀들의 렌더링의 중지는 호스트 프로세서에 인터럽트를 어써팅함으로써 개시되는 것을 특징으로 하는 컴퓨팅 시스템 내의 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하는 방법.
  19. 제1 복수의 범용 실행 유닛들을 포함하는 적어도 제1 GPU와, 상기 적어도 제1 GPU는 네이티브 함수 코드 모듈을 실행하도록 동작하며, 상기 네이티브 함수 코드 모듈은 상기 적어도 제1 GPU로 하여금 적어도 제2 GPU를 위한 상태 정보를 제공하게 하고; 그리고
    상기 제2 GPU는 상기 적어도 제1 GPU 상의 복수의 범용 실행 유닛들과 동일한 프로그래밍 모델을 갖는 제2 복수의 범용 실행 유닛들을 포함하고, 상기 적어도 제2 GPU는 상기 적어도 제1 GPU와 동일한 네이티브 함수 코드 모듈을 실행하도록 동작하고 그리고 상기 적어도 제1 GPU에 의해 제공되는 상기 상태 정보를 획득하고 상기 동일한 네이티브 함수 코드 모듈을 통해 상기 상태 정보를 사용하여 처리를 계속하도록 동작하는 것을 특징으로 하는 장치.
  20. 제19 항에 있어서, 상기 적어도 제1 GPU 및 상기 적어도 제2 GPU에 동작적으로 결합된 제1 프로세서를 더 포함하고, 상기 제1 프로세서는, 저장된 상태 정보를, 상기 적어도 제1 GPU 또는 상기 적어도 제2 GPU의 현재 동작 모드와 관련된 복수의 범용 실행 유닛들 내의 범용 레지스터 세트들로부터 상기 적어도 제1 GPU 또는 상기 원하는 동작 모드와 관련된 적어도 제2 GPU 상에서 실행되는 상기 네이티브 함수 코드 모듈에 의해 액세스될 수 있는 메모리 위치로 카피하는 것을 제어하도록 동작하는 것을 특징으로 하는 장치.
  21. 실행가능한 명령들을 포함하는 컴퓨터 판독가능 매체로서, 상기 명령들은, 실행될 때 하나 이상의 프로세서들로 하여금,
    컴퓨팅 시스템이 현재의 동작 모드로부터 원하는 동작 모드로 천이되어야 함을 결정하게 하고,
    상기 현재의 동작 모드와 관련된 제1 GPU에 의한 픽셀들의 렌더링을 중지하고 상기 현재의 동작 모드와 관련된 범용 레지스터 세트들에 상태 정보를 저장하게 하고;
    상기 현재의 동작 모드와 관련된 상기 범용 레지스터 세트들로부터 상기 저장된 상태 정보를 상기 원하는 동작 모드와 관련된 적어도 제2 GPU에 의해 액세스될 수 있는 메모리 위치에 카피하게 하는 것을 특징으로 하는 실행가능한 명령들을 포함하는 컴퓨터 판독가능 매체.
  22. 실행가능한 명령어들을 포함하는 컴퓨터 판독가능 매체로서, 상기 명령어들은 집적 회로 제조 시스템에 의해 실행될 때, 상기 집적 회로 제조 시스템으로 하여금,
    복수의 단일 명령 다중 데이터(SIMD) 실행 유닛들을 포함하는 적어도 제1 GPU를 생성하게 하고, 상기 단일 명령 다중 데이터(SIMD) 실행유닛들 각각은 네이티브 함수 코드 모듈을 실행하도록 동작하며; 그리고
    적어도 제1 GPU 상의 상기 복수의 SIMD 실행 유닛들과 동일한 프로그래밍 모델을 갖는 복수의 단일 명령 다중 데이터(SIMD) 실행 유닛들을 포함하는 적어도 제2 GPU를 생산하게 하고, 상기 적어도 제2 GPU는 상기 적어도 제1 GPU와 동일한 네이티브 함수 코드 모듈을 실행하도록 동작하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  23. 집적 회로로서,
    현재의 동작 모드와 관련된 픽셀들의 렌더링을 중지하고, 상기 현재의 동작 모드와 관련된 상태 정보를 제2 GPU에 의한 사용을 위해 액세스할 수 있는 위치에 저장하도록 동작하는 그래픽 처리 유닛(GPU)을 포함하는 것을 특징으로 하는 집적 회로.
  24. 제23 항에 있어서, 상기 GPU는 현재의 동작 모드로부터 원하는 동작 모드로의 천이에 응답하여 상기 제2 GPU에 의해 저장된 상태 정보를 사용하여 제2 GPU에 의해 이전에 렌더링되고 있던 픽셀들의 렌더링을 재개하도록 동작하는 것을 특징으로 하는 집적 회로.
KR1020127025336A 2010-03-04 2011-03-03 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치 KR20130036213A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/717,265 2010-03-04
US12/717,265 US20110216078A1 (en) 2010-03-04 2010-03-04 Method, System, and Apparatus for Processing Video and/or Graphics Data Using Multiple Processors Without Losing State Information
PCT/US2011/027019 WO2011109613A2 (en) 2010-03-04 2011-03-03 Method, system, and apparatus for processing video and/or graphics data using multiple processors without losing state information

Publications (1)

Publication Number Publication Date
KR20130036213A true KR20130036213A (ko) 2013-04-11

Family

ID=43903950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127025336A KR20130036213A (ko) 2010-03-04 2011-03-03 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치

Country Status (6)

Country Link
US (1) US20110216078A1 (ko)
EP (1) EP2542970A2 (ko)
JP (1) JP2013521581A (ko)
KR (1) KR20130036213A (ko)
CN (1) CN102834808A (ko)
WO (1) WO2011109613A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021216340A1 (en) * 2020-04-22 2021-10-28 Micron Technology, Inc. Distributed graphics processor unit architecture

Families Citing this family (17)

* 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
US8760452B2 (en) * 2010-07-01 2014-06-24 Advanced Micro Devices, Inc. Integrated graphics processor data copy elimination method and apparatus when using system memory
US20120092351A1 (en) * 2010-10-19 2012-04-19 Apple Inc. Facilitating atomic switching of graphics-processing units
CN103106637A (zh) * 2011-11-11 2013-05-15 辉达公司 标准gpu模块、包含模块的系统和用于驱动系统的方法
CN103455356B (zh) * 2013-09-05 2017-02-08 中国计量学院 多核移动设备上3d模型的并发加载及渲染方法
KR102244620B1 (ko) 2014-09-05 2021-04-26 삼성전자 주식회사 렌더링 수준 제어 방법 및 장치
CN104932659B (zh) * 2015-07-15 2020-01-07 京东方科技集团股份有限公司 图像显示方法及显示系统
US10185386B2 (en) 2016-07-25 2019-01-22 Ati Technologies Ulc Methods and apparatus for controlling power consumption of a computing unit that employs a discrete graphics processing unit
CN107979778B (zh) * 2016-10-25 2020-04-17 杭州海康威视数字技术股份有限公司 一种视频分析方法、装置及系统
US10698713B2 (en) * 2016-11-29 2020-06-30 Red Hat Israel, Ltd. Virtual processor state switching virtual machine functions
US20220270538A1 (en) * 2019-10-18 2022-08-25 Hewlett-Packard Development Company, L.P. Display mode setting determinations
KR20220152998A (ko) 2020-01-07 2022-11-17 컴파운드 포토닉스 유.에스. 코퍼레이션 디스플레이를 높은 비트 깊이로 구동하기 위한 시스템들 및 방법들
US11295507B2 (en) * 2020-02-04 2022-04-05 Advanced Micro Devices, Inc. Spatial partitioning in a multi-tenancy graphics processing unit
CN111427572A (zh) * 2020-02-11 2020-07-17 浙江知夫子信息科技有限公司 一种基于知识产权代理的大屏展示开发系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7538773B1 (en) * 2004-05-14 2009-05-26 Nvidia Corporation Method and system for implementing parameter clamping to a valid range in a raster stage of a graphics pipeline
US7730336B2 (en) * 2006-05-30 2010-06-01 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US7545381B2 (en) * 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7698579B2 (en) * 2006-08-03 2010-04-13 Apple Inc. Multiplexed graphics architecture for graphics power management
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
CN101178816B (zh) * 2007-12-07 2010-06-16 桂林电子科技大学 基于面采样的体绘制可视化方法
CN101978352B (zh) * 2007-12-13 2017-11-03 先进微装置公司 用于具有多重图形子系统、减少的功率消耗模式的计算装置的驱动程序架构、软件和方法
US8522000B2 (en) * 2009-09-29 2013-08-27 Nvidia Corporation Trap handler architecture for a parallel processing unit
US8405666B2 (en) * 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021216340A1 (en) * 2020-04-22 2021-10-28 Micron Technology, Inc. Distributed graphics processor unit architecture

Also Published As

Publication number Publication date
WO2011109613A3 (en) 2011-11-17
CN102834808A (zh) 2012-12-19
JP2013521581A (ja) 2013-06-10
WO2011109613A2 (en) 2011-09-09
EP2542970A2 (en) 2013-01-09
US20110216078A1 (en) 2011-09-08

Similar Documents

Publication Publication Date Title
KR20130036213A (ko) 상태 정보의 손실 없이 복수의 프로세서들을 사용하여 비디오 및/또는 그래픽 데이터를 처리하기 위한 방법, 시스템 및 장치
US8239938B2 (en) Centralized device virtualization layer for heterogeneous processing units
US11798123B2 (en) Mechanism to accelerate graphics workloads in a multi-core computing architecture
JP5583180B2 (ja) 仮想gpu
US8619087B2 (en) Inter-shader attribute buffer optimization
US20100079454A1 (en) Single Pass Tessellation
US10474490B2 (en) Early virtualization context switch for virtualized accelerated processing device
US20210241418A1 (en) Workload scheduling and distribution on a distributed graphics device
US10559112B2 (en) Hybrid mechanism for efficient rendering of graphics images in computing environments
CN110352403B (zh) 图形处理器寄存器重命名机制
US10089264B2 (en) Callback interrupt handling for multi-threaded applications in computing environments
US20180095785A1 (en) Thread Priority Mechanism
US20220058048A1 (en) Varying firmware for virtualized device
WO2017155610A1 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US9734545B2 (en) Software methods in a GPU
US11790478B2 (en) Methods and apparatus for mapping source location for input data to a graphics processing unit
US20200175643A1 (en) High vertex count geometry work distribution for multi-tile gpus

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid