KR20080031259A - 그래픽 어댑터의 가상화를 위한 리소스 관리 - Google Patents

그래픽 어댑터의 가상화를 위한 리소스 관리 Download PDF

Info

Publication number
KR20080031259A
KR20080031259A KR1020087000360A KR20087000360A KR20080031259A KR 20080031259 A KR20080031259 A KR 20080031259A KR 1020087000360 A KR1020087000360 A KR 1020087000360A KR 20087000360 A KR20087000360 A KR 20087000360A KR 20080031259 A KR20080031259 A KR 20080031259A
Authority
KR
South Korea
Prior art keywords
graphics
partition
virtual
readable medium
resource
Prior art date
Application number
KR1020087000360A
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 KR20080031259A publication Critical patent/KR20080031259A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

가상 머신 환경 내의 복수의 파티션들 사이에 그래픽 어댑터 리소스의 공유를 위한 메카니즘이 제공된다. 프록시 프로세스를 포함하는 한 파티션, 비디오 서비스 파티션이, 다른 파티션, 비디오 클라이언트 파티션으로 그래픽 어댑터 리소스를 제공하기 위해 이 그래픽 프록시 프로세스를 사용할 수 있도록 하기 위해, 제1 메카니즘이 그래픽 어댑터 리소스의 공유를 허용한다. 그래픽 프록시 프로세스는 임의의 주어진 파티션에 의한 그래픽 어댑터 리소스로의 액세스 시간을 제어한다. 일 측면에서, 액세스 시간을 제어하기 위해 시간 뱅크를 사용하며, 시간 뱅크는 비디오 클라이언트 파티션에 제공되는 가상 그래픽 어댑터가 그래틱 어댑터 리소스에 액세스할 수 있는 방법을 제어한다. 제2 메카니즘은 비디오 클라이언트 파티션 내의 가상 메모리를 비디오 서비스 파티션 내의 가상 메모리에 동기화시킨다. 제3 메카니즘은 픽셀-쉐이더-기반 가상 오버레이 메카니즘을 사용하여 복수의 비디오 클라이언트 파티션 오버레이를 가능하게 한다.
비디오 어댑터, 가상 어댑터, 오버레이

Description

그래픽 어댑터의 가상화를 위한 리소스 관리{RESOURCE MANAGEMENT FOR VIRTUALIZATION OF GRAPHICS ADAPTERS}
[저작권 표시 및 허가]
본 특허 문서의 개시사항 중 일부는 저작권 보호에 속하는 내용을 포함할 수 있다. 저작권자는 특허청 특허 파일 또는 기록에 나타난 대로 본 특허 문서 또는 본 특허 개시사항 중 임의의 것을 팩시밀리 복제하는 것을 거부하지 않지만, 그 외의 경우에는 모든 저작권이 유지된다. Copyrightⓒ2005, Microsoft Corp라는 표시는 본 문서에 적용된다.
일반적인 가상 머신 환경에서, 복수의 가상 머신 또는 "파티션들(partitions)"은 가상화 소프트웨어의 상에서 실행된다. 반대로, 이 소프트웨어는 하드웨어 상에서 실행된다. 가상화 소프트웨어는, 각각 고유의 운영 체제(OS)가 있는 복수의 파티션들이 하드웨어 상에서 실행되도록 하는 방식으로 하드웨어를 노출시킨다. 따라서, 하드웨어는 가상화 소프트웨어에 의해 파티션들에 대해 가상화된다.
개개의 파티션들은, 윈도우즈(Windows), 리눅스(Linux), 솔라리스(Solaris), 맥 오에스(MacOS) 등과 같은 상이한 OS들을 실행시킬 수 있다. 이러한 OS들은 서 로 격리되어 있는데, 이는 파티션 내의 한 OS가 충돌될 경우, 다른 파티션들에 있는 다른 OS들에 영향을 미치지 않도록 하기 위함이다. 또한, 복수의 OS들을 단일한 하드웨어의 상이한 파티션들 내에서 실행되도록 함으로써, 상이한 버전 또는 종류의 OS들에 대해 개발된 상이한 버전의 소프트웨어를 실행하는 것이 용이해진다.
다양한 파티션에서 실행되는 그래픽 프로그램에 있어서, 이러한 프로그램을 위한 그래픽 리소스는 다양한 파티션들 사이에서 공유될 수 있어야 한다. 그래픽 리소스에는, 신(scene)을 랜더링하기 위해 사용되는 표면(surface), 텍스츄어(texture), 꼭지점 버퍼(vertex buffer), 인덱스 버퍼(index buffer) 등이 포함된다. 어플리케이션은 이러한 리소스들을 생성, 로딩, 복사 및 사용할 필요가 있다. 예컨대, 텍스츄어는 컴퓨터로 생성된 3차원 이미지 내에서 현실성을 살리는 데에 강력한 툴이다. 일반적으로 진보되어왔음에도 불구하고, 컴퓨터로 생성된 초기의 3차원 이미지는 광택이 나는 플라스틱과 같은 형태를 띠는 경향이 있다. 이러한 이미지는 3차원 물체에 현실적인 시각적 복잡성을 부여하는 자국, 균열, 지문 및 얼룩과 같은 종류의 표시가 부족하다. 몇몇 프로그램들은 광범위한 텍스츄어링 피처 세트(texturing feature set)를 지원하여, 개발자들에게 향상된 텍스츄어링 기술에 용이하게 접근할 수 있도록 한다.
다른 예로서, 몇몇 인터페이스에 의해 표현되는 꼭지점 버퍼는, 꼭지점 데이터를 포함하는 메모리 버퍼이다. 꼭지점 버퍼는, 랜더링 방법을 사용함으로써 랜더링될 수 있는, 변형 또는 변형되지 않은, 빛나는(lit) 또는 빛나지 않는(unlit) 임의의 꼭지점 유형을 포함할 수 있다. 꼭지점들은, 변형, 빛남(lighting) 또는 클리핑 플래그(clipping flag)의 생성과 같은 동작을 수행하기 위해 꼭지점 버퍼 내에서 처리될 수 있다. 꼭지점 버퍼들의 유연성은 그들로 하여금 변형된 외형을 재사용하기 위한 이상적인 스테이징 포인트(staging point)가 되도록 한다. 물론, 텍스츄어 및 꼭지점 버퍼는 단지 그래픽 리소스의 두가지 예일 뿐이다. 전술한 바대로, 본 기술분야의 당업자가 이미 인식하고 있는 바와 같이, 표면, 인덱스 버퍼 및 다른 그래픽 리소스가 여기에 고려될 수 있다. 가장 중요한 문제점은, 가상 머신 환경에서 다양한 파티션들이 이러한 그래픽 리소스들에 적절하게 접근하는 것을 보증하는 데에 있다.
가상 머신 환경에서 복수의 파티션들 사이에 그래픽 어댑터 리소스들을 공유하기 위한 다양한 메카니즘이 제공된다. 제1의 예시적인 메카니즘에서는, 그래픽 프록시 프로세스(graphic proxy process)가 사용된다. 제1 파티션에 위치한 그래픽 프록시 프로세스는, 실제의 그래픽 어댑터 리소스를 보유하며, 이러한 리소스를 가상 그래픽 어댑터를 경유하여 제2 파티션에 제공한다. 그래픽 프록시 프로세스는, 제2 파티션(또는 제3 파티션)이 그래픽 어댑터 연산 리소스에 대해 갖는 액세스 시간을 제어한다. 일 측면에서, 그래픽 프록시 프로세스는, 인터-파티션(inter-partition) 액세스 시간 뿐만 아니라 장치 컨텍스트들 간의 인트라-파티션(intra-partition) 액세스 시간을 제어할 수 있는 시간 뱅크(bank)를 사용한다.
제2의 예시적인 메카니즘에서, 콜백(callback) 메카니즘이 있는 그래픽 프록시 프로세스는, 다양한 파티션들이 동일한 실제의 물리적 메모리에 액세스할 수 있도록 함으로써 이러한 파티션들이 실제의 물리적 메모리 내에 저장된 그래픽 어댑터 메모리 기반 리소스를 공유할 수 있도록 하기 위해, 이러한 파티션의 가상 메모리들을 동기화할 수 있다. 그러나, 제1 파티션은 동기화 뿐만 아니라 제2 파티션 내에서의 페이지 폴트(page fault)의 조절을 위해 그래픽 프록시 프로세스를 사용할 수 있다. 예컨대, 실제의 물리적 메모리 내의 페이지가 (예컨대, 디스크로) 페이지 아웃(page out)되고, 제2 파티션 내의 어플리케이션이 그 가상 메모리를 경유하여 그래픽 어댑터 리소스로 액세스를 시도하여 페이지 폴트가 발생한 경우, 요청한 메모리 기반 그래픽스 어댑터 리소스에 어플리케이션이 액세스할 수 있도록 하기 위해, 그래픽 프록시 프로세스가 요청된 페이지 내에 페이지(page)할 수 있다.
마지막으로, 다양한 파티션 내의 복수의 비디오 오버레이(overlay)의 생성을 위해 제3의 예시적인 메카니즘이 제공된다. 비디오 오버레이는, 전술한 바와 같이, 제1 파티션 내에서 뿐만 아니라, 제2 또는 제3 파티션 내에서도 사용될 수 있다. 이러한 메카니즘은 상기 작업을 수행하기 위해 적어도 픽셀 쉐이더(pixel shader)를 사용할 수 있다.
상기 요약은 아래의 상세한 설명에서 더 설명되는 내용을 간략한 형태의 선택된 개념들로 소개하기 위해 제공된 것이다. 이러한 요약은 청구된 사항들의 핵심 특징 또는 필수적인 특징들을 확정하는 것이 아니며, 청구된 사항들의 범위를 결정하기 위한 목적으로 사용되는 것도 아니다.
위의 요약과 후술할 상세한 설명은 첨부된 도면들과 함께 읽으면 더 잘 이해 된다. 유용한 예시를 제공하기 위하여, 다양한 측면들이 도시된다. 그러나, 이러한 측면들은 개시된 특정 측면들을 제한하는 것은 아니다. 대신에, 다음의 예시적인 도면들이 포함된다.
도 1은 컴퓨터 시스템에서의 가상화된 동작 환경을 위한 하드웨어 및 소프트웨어 아키텍처의 논리적 레이어링(logical layering)을 표현하는 블록도.
도 2a는 호스트 운영 체제에 의해 (직접 또는 하이퍼바이저(hypervisor)를 경유하여) 가상화가 수행되는 가상화된 연산 시스템을 표현하는 블록도.
도 2b는 호스트 운영 체제와 나란히 실행되는 가상 머신 모니터에 의해 가상화가 수행되는 대안적인 가상화된 연산 시스템을 표현하는 블록도.
도 3은 다양한 파티션에 대해 그래픽 어댑터를 가상화함으로써 그래픽 어댑터 리소스에 액세스할 수 있도록 하는 그래픽 프록시 프로세스를 도시한 도면.
도 4는 시간 뱅크와 같은 다양한 메카니즘을 사용하여 그래픽 어댑터 리소스에 대한 액세스 시간을 제어하는 그래픽 프록시 프로세스를 도시한 도면.
도 5a 및 5b는 메모리가 파티션들 사이에 공유될 수 있도록 하는 고수준 메카니즘으ㄹ 도시한 도면.
도 6a 내지 6h는 메모리가 파티션들 사이에 공유될 수 있도록 하는 저수준 메카니즘을 도시한 도면.
도 7은 오버레이의 고수준의 개관을 도시한 도면.
도 8은 오버레이 및 그 아래의 비디오 표면이 그래픽 어댑터와 상호작용하는 방법을 도시한 도면.
도 9는 복수의 오버레이가 다양한 파티션에 제공되는 방법을 도시한 도면.
개요
가상 머신 환경에서 복수의 파티션들 사이에 그래픽 어댑터 리소스를 공유하기 위한 다양한 메카니즘이 제공된다. 일 메카니즘은 각각의 파티션이 그래픽 프록시 프로세스로부터 얻을 수 있는 액세스 시간에 기초하여 그래픽 어댑터 연산 리소스의 공유를 가능하게 한다. 그래픽 프록시 프로세스 및 콜백(callback) 메카니즘을 사용하는 다른 메카니즘은, 임의의 선택된 파티션이 그것의 가상 메모리를 경유하여 실제 메모리 내에 저장된 그래틱 어댑터 메모리-기반 리소스에 액세스하도록, 파티션들의 가상 메모리들을 동기화할 수 있다. 그러나 다른 메카니즘은, 복수의 파티션이 단일한 실제 그래픽 어댑터 리소스만을 사용하는 비디오 오버레이(overlay)를 가질 수 있도록 한다. 이러한 가르침들에 대한 적절한 내용을 제공하기 위해 가상 머신의 일반적인 개요가 상기 가르침들에 선행한다.
가상 머신
도 1은 컴퓨터 시스템 내에서 가상화된 환경을 위한 하드웨어 및 소프트웨어 아키텍처의 논리적 레이어링(logical layering)을 표현하는 도면이다. 이 도면에서, 가상화 프로그램(110)이 물리적 하드웨어 아키텍처(112) 상에서 직간접적으로 실행된다. 가상화 프로그램(110)은 호스트 운영체제와 나란히 실행되거나 하이퍼바이저(hypervisor) 구성요소가 있는 호스트 운영 체제를 실행시키는 가상 머신 모니터일 수 있으며, 하이퍼바이저 구성요소는 가상화를 수행한다. 가상화 프로그 램(110)은, 게스트 하드웨어 아키텍처(108)(이 구성요소가 파티션 또는 "가상 머신"임을 도시하기 위해 점선으로 도시됨), 즉, 실제로 존재하지는 않지만 가상화 프로그램(110)에 의해 가상화되는 하드웨어를 가상화한다. 게스트 운영 체제(106)는 게스트 하드웨어 아키텍처(108) 상에서 실행되며, 소프트웨어 어플리케이션(104)는 게스트 운영 체제(106) 상에서 실행된다. 도 1의 가상화된 동작 환경에서, 소프트웨어 어플리케이션(104)이 호스트 운영 체제 및 하드웨어 아키텍처(112)와 호환되지 않는 운영 체제 상에서 실행되도록 설계되었다 하더라도, 소프트웨어 어플리케이션(104)은 컴퓨터 시스템(102) 내에서 실행될 수 있다.
도 2a는 물리적 컴퓨터 하드웨어(202) 상에서 직접 실행되는 호스트 운영 체제(호스트 OS) 소프트웨어 레이어(layer)(204)를 포함하는 가상화된 연산 시스템을 도시하며, 호스트 OS(204)는, 운영 체제(212 및 214) 각각에 의해 사용되기 위한 파티션 A(208) 및 B(210)에 대한 인터페이스를 노출함으로써, 물리적 컴퓨터 하드웨어(202)의 리소스로의 액세스를 제공한다. 이는 호스트 OS(204) 상에서 실행되는 운영 체제 레이어(212 및 214)가 호스트 OS(204)를 무시할 수 있도록 한다. 또한, 가상화를 수행하기 위해, 호스트 OS(204)는 기본적인(native) 가상화 호환성이 있는 특별히 설계된 운영체제일 수 있으며, 또는 대안적으로는, 가상화를 수행하기 위한 통합된 하이퍼바이저 구성요소가 있는 표준 운영 체제일 수 있다(도시되지 않음).
도 2a를 참조하면, 호스트 OS(204) 상에 두개의 파티션이 있으며, 파티션 A(208)는, 예컨대 가상화된 인텔 386 프로세서일 수 있고, 파티션 B(210)는, 예컨 대 모토로라 680X0 패밀리 프로세서들 중 하나의 가상화된 버전일 수 있다. 각각의 파티션(208 및 210) 내에 게스트 운영 체제(게스트 OS) A(212) 및 B(214)가 각각 있다. 어플리케이션 A1(216) 및 어플리케이션 A2(218)의 두개의 어플리케이션이 게스트 OS A(212) 상에서 실행되며, 어플리케이션 B1(220)이 게스트 OS B(214) 상에서 실행된다.
도 2a와 관련하여, 파티션 A(208) 및 파티션 B(214)(점선으로 도시됨)는 소프트웨어 구조로만 존재하는 가상화된 컴퓨터 하드웨어 표현임을 주의하는 것이 중요하다. 이 파티션들은, 파티션 A(208) 및 파티션 B(210)를 게스트 OS A(212) 및 게스트 OS B(214) 각각에 제공할 뿐만 아니라, 실제의 물리적 컴퓨터 하드웨어(202)와 간접적으로 상호작용하는 게스트 OS A(212) 및 게스트 OS B(214)에 필요한 소프트웨어 단계들 모두를 수행하는 특수화된 가상화 소프트웨어(들)의 실행에 기인하여 형성될 수 있다.
도 2b는 대안적인 가상화된 연산 시스템을 도시하며, 가상화는 호스트 운영 체제(204")와 나란히 실행되는 가상 머신 모니터(virdual machine monitor; VMM)(204')에 의해 수행된다. 어떤 경우에는, VMM(204')은, 호스트 운영 체제(204") 상에서 실행되고 호스트 운영 체제(204")를 통해서만 컴퓨터 하드웨어(202)와 상호작용하는 어플리케이션일 수 있다. 다른 경우에는, 도 2b에 도시된 바와 같이, VMM(204')은, 몇몇 레벨 상에서는 호스트 운영 체제(204")를 경유하여 컴퓨터 하드웨어(202)와 간접적으로 상호작용하는 부분적으로 독립된 소프트웨어 시스템을 포함할 수 있지만, 다른 레벨 상에서는 VMM(204')이 컴퓨터 하드웨 어(202)와 직접 상호작용한다(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함). 그러나 다른 경우에는, VMM(204')은, (컴퓨터 하드웨어(202)의 사용에 협력하고 충돌 등을 피하기 위해 호스트 운영 체제(204")와 여전히 상호작용한다 하더라도) 호스트 운영 체제(204")를 사용하지 않고, 모든 레벨 상에서 컴퓨터 하드웨어(202)와 직접 상호작용하는(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함) 완전히 독립된 소프트웨어 시스템을 포함할 수 있다.
위에 언급된 파티션들을 구현하기 위한 이러한 변형들 모두는 단지 예시적인 구현이며, 여기에서 그 어느것도 본 발명을 임의의 특정 가상화 측면에 제한하는 것으로 해석되어서는 안된다.
그래픽 어댑터의 가상화를 위한 리소스 관리
도 3은 가상 머신 환경에서 복수의 비디오 클라이언트 파티션(video client partition; VCP) 간에 그래픽 어댑터 리소스의 공유를 위한 메카니즘을 도시한다. 도 3에서, 하이퍼바이저(302)가 도시되며, 하이퍼바이저(302)는 비디오 서비스 파티션(video service partition)(VSP)(304) 및 두개의 VCP, 즉, VCP A(306)및 VCP B(308)를 보유한다. 이 파티션들(304, 306 및 308) 각각은, 그 안에서 실행되는 어떠한 대응 운영 체제를 가지며, 운영 체제에는 윈도우즈(XP, NT, ME, 2000, 98, 95 등), 리눅스, 유닉스, 맥 오에스(MacOS), IBM OS/2 등이 있다. VSP(304) 내에 있는 그래픽 프록시 프로세스(314)는 물리적 하드웨어(312) 내에 있는 그래픽 어댑터(310)를 소유한다. 이러한 그래픽 프록시 프로세스(314)는, 그것이 소유하는 실 제의 그래픽 어댑터(310)에 기초하여 파티션에 대한 가상 그래픽 어댑터를 생성한다. 또한, 그래픽 어댑터(310)는, 비디오 랜덤 액세스 메모리(video randum access memory; VRAM) 또는 시스템 랜덤 액세스 메모리(randum access memory; RAM)와 같은 몇몇 그래픽 어댑터 리소스들(326)에 연결된다.
다른 옵션은 프로세스(314)와 같은 방식으로 동일한 그래픽 어댑터(310)를 사용하는 VSP(304) 내의 다른 어플리케이션을 위하는 것이므로, 그래픽 프록시 프로세스(314) 는 - 엄격하게 요구되지는 않더라도 - 드라이버에 의해 제공되는 메카니즘을 공유하는 어댑터(310) 및 VSP(304)의 OS를 사용함으로써, 가상 그래픽 서비스 어댑터(324)를 VSP(304)에 제공할 수 있다. 그러나, 더욱 중요하게는, 그래픽 프록시 프로세스(314)는 가상 그래픽 어댑터 A(320)를 VCP A(305) 및 VCP B(308)에 제공한다.
이러한 가상 그래픽 어댑터는, VCP 내에서 실행되는 어플리케이션들이 그들이 필요로 하는 그래픽 어댑터 리소스(326)에 액세스할 수 있도록 한다. 예컨대, 어플리케이션 A(316)는 가상 그래픽 어댑터 A(320)와 상호작용할 수 있으며, 궁극적으로는 그래픽 프록시 프로세스(314)를 통해 그래픽 어댑터 리소스(326)에 액세스할 수 있다.
위와 같은 시스템의 많은 장점들 중 하나는, 그래픽 어댑터 리소스(326)가 복수의 클라이언트 파티션들에 제공될 뿐만 아니라, 그 파티션들 내의 어플리케이션들이, 그들이 그래픽 어댑터 리소스(326)를 사용하는 것에 관해 더 큰 제어를 받을 것이라는 점이다. 예컨대, 이른바 많은 수의 그래픽 표면들을 할당함으로써 어 플리케이션 A(316)가 모든 그래픽 어댑터 리소스(326)를 도맡으려고 시도하는 예시적인 시나리오에서, 그래픽 프록시 프로세스(314)가 더 큰 제어를 이행할 수 있을 것이다. 그러한 상황에서, 그래픽 프록시 프로세스(314)는 어플리케이션 B(318)가 그래픽 어댑터 리소스(326)를 필요로하고 있지 않음을 확인할 수 있다. 이는 물론 하나의 전형적인 시나리오일 뿐이며, 다른 시나리오들이 아래에서 논의된다.
VSP(304)는 그래픽 프록시 프로세스(314)를 실행시키며, 프록시 프로세스(314)는 VCP A(306) 또는 VCP B(308)와 같은 임의의 비디오 클라이언트 파티션에의해 이루어지는 그래픽-관련 요청들에 도움을 제공한다. 각각의 가상 그래픽 어댑터 리소스(326)(어댑터 A(320) 및 어댑터 B(322)와 같은 대응되는 가상 그래픽 어댑터와 연관됨)가 VCP에게는 대응되는 그래픽 어댑터에 의해 사용되도록 항상 할당되고, 활성화되고, 준비되어 있는 것처럼 보이도록 하기 위해, 프록시 프로세스(314)는 VCP에 의해 요청된 각각의 그래픽 리소스 할당을 관리한다. 실제로는, 그래픽 프록시 프로세스(314)에 의해 관리되는 가상 그래픽 리소스는 활성화 또는 비활성화일 수 있다. 가상 그래픽 리소스가 활성화된 경우는, 가상 그래픽 어댑터에 의해 사용될 수 있는 실제 그래픽 리소스에 가상 그래픽 리소스가 현재 연관되어 있음을 의미한다. 가상 그래픽 리소스가 비활성화된 경우는, 가상 그래픽 리소스가 가상 그래픽 어댑터에 의해 사용될 수 있는 연관된 실제 그래픽 리소스를 갖고 있지 않음을 의미한다. 그러나, 비활성 가상 그래픽 리소스가 비활성화되었을 때의 그것의 상태가 소실되지 않도록, 비활성 그래픽 리소스의 콘텐츠는 시스템 메모리 내에 저장된다. 또한, VCP가 비활성 가상 그래픽 리소스를 사용하는 때에는 언제나, 그 리소스가 다시 활성화된다.
때때로 가상 그래픽 어댑터가 관련된 실제 그래픽 리소스를 생성하기 위한 공간(room)을 갖고 있지 않기 때문에, 비활성 가상 그래픽 리소스의 초기 활성화에 실패할 것이다. 그러한 경우, 현재 사용되고 있는 가상 그래픽 리소스와 연관된 실제 그래픽 리소스에 대한 공간이 존재하게 될 때까지, 다른 가상 그래픽 리소스를 비활성화시킴으로써 연관된 실제 그래픽 리소스를 위한 공간이 생성될 것이다.
I. 프로세서 시분할(processor time sharing)
다른 측면에서, 그래픽 어댑터(310)와 그래픽 어댑터 리소스(326)가 VCP A(306) 및 VCP B(308)와 같은 파티션들 사이에 공유되어야 하는 적어도 두개의 시나리오가 있다. 제1 시나리오는, 제1 섹션에서 논의될 바와 같이, 그래픽 어댑터(310)와 접하는 GPU(Graphics Processing Unit)의 시분할(time sharing)이다. 제2 시나리오는, 본 섹션에 이어지는 제2 섹션에서 논의될 바와 같이, 그래픽 어댑터 리소스(326)의 메모리 공유이다.
도 4는 일반적인 비디오 서비스 파티션(VSP)(402) 및 일반적인 비디오 클라이언트 파티션(VCP)(404)을 도시한다. VSP(402)는 그 안에 그래픽 프록시 프로세스(406)를 가지며, 그래픽 프록시 프로세스(406)는 위의 도 3을 참조하여 논의된 것과 동일한 프로세스이다. 그래픽 프록시 프로세스(406)는 그래픽 프록시 프로세스(406)의 제어하에 있는 클라이언트 파티션 컨텍스트(408)를 갖는다. 몇몇 그래픽 장치 컨텍스트는 VCP(404) 내에 존재할 수 있으며, 따라서 클라이언트-그래픽-장치-컨텍스트마다(per-client-graphics-device-context) 컨텍스트(414)가 존재하 고, 그 안에서 어플리케이션이 실행될 수 있다. 특히, 장치 컨텍스트가 GPU 상에서 실행되어야 하는 시간의 양으로서 일종의 "은행 계좌(bank account)"인 시간 뱅크(416) 기능이 있다. 시간 뱅크(416)는 실행되는 명령들을 포함하는 그래픽 명령 큐(queue)(418)와 연관되며, 시간 뱅크(416)는 실행될 수 있는 시간 명령들의 양을 제어한다. 예컨대, 일반적인 클라이언트 파티션 장치 컨텍스트(420)는, 시간 뱅크(416)에 의해 허용된 시간 동안 자신의 명령들을 실행할 수 있다. 또한, 클라이언트 파티션 프록시 장치 컨텍스트(420)와 같은 클라이언트 파티션 장치 컨텍스트가 언제 그래픽 명령들을 실행하도록 허용될 것인지를 스케줄링하는 인트라-클라이언트-파티션 GPU 스케줄러(412)도 있다. 클라이언트 파티션 프록시 장치 컨텍스트(420)는 실제의 클라이언트 파티션 장치 컨텍스트(428)를 위한 프록시로서 작동한다.
전체 클라이언트 파티션 컨텍스트(408)에 대한 전체 시간 뱅크(410)는, 특정 클라이언트 파티션 컨텍스트-이 경우에는 컨텍스트(408)-가, 다른 클라이언트 파티션 컨텍스트들과 관련하여 자신의 명령을 실행하는 데에 과도한 양의 시간을 사용하지 않도록 한다. 또한, 그래픽 프록시 프로세스(406)는, VCP(404)와 기타 어떤 VCP(도시되지 않음)와 같은 다른 클라이언트 파티션들로 하여금, GPU 상에서 전체적으로 각각의 클라이언트 파티션에게 부여될 시간의 양을 비례적으로 늘려가도록 스케줄링하는 크로스-클라이언트 파티션 GPU 스케줄러(422)도 갖는다. 크로스-클라이언트 파티션 그래픽 리소스 관리자(422)는, 일반적인 가상 머신 환경에서 실행될 수 있는 다양한 VCP에 걸쳐서 유사한 비례적인 그래픽 리소스의 분배를 행한다. 마지막으로, 그래픽 프록시 프로세스(406)를 위한 시간 뱅크(425)는, 각각의 클라이언트 파티션이 전체적으로 다른 클라이언트 파티션들과 관련하여 비례적인 양의 GPU 시간을 부여받도록 한다.
VCP(404)는 VCP(404)에서 실행되는 어떤 일반적인 프로세스(또는 어플리케이션)(424)를 가질 수 있다. 이러한 프로세스(424)는 어떤 어플리케이션 코드(430)에 의해 사용되는 그래픽 장치 컨텍스트(428)를 가질 수 있다. 또한, VCP(404)는 VSP(402) 내의 그래픽 프록시 프로세스(406)와 통신하는 개량된(enlightened) 그래픽 드라이버(426)를 가질 수 있다.
도 4에 관한 논의에 비추어볼 때, GPU 상에서 시간을 분할하기 위해, 그래픽 명령 버퍼의 각각의 큐는 대응하는 비디오 클라이언트 파티션과 연관되며, 이에 대해 그래픽 명령들을 보유한다. 그래픽 명령 버퍼가 실행될 때마다, 실행에 걸리는 시간이 측정된다. 그래픽 프록시 프로세스는 각각의 VCP의 그래픽 우선권에 따라 각각의 VCP에 주어지는 GPU 시간의 균형을 맞춘다. 특정 VCP가 보통과 달리 실행에 긴 시간이 걸리는 그래픽 명령 버퍼를 생성하면, 그 VCP로부터의 장래의 명령 버퍼가 더 작은 버퍼로 분리되어 스케줄링의 입도(granularity)를 향상시킨다. 반대로도 이루어지는데, 즉, 특정 VCP로부터의 명령 버퍼가 보통과 달리 실행에 짧은 기간이 걸리는 경우, 그 VCP로부터의 장래의 명령 버퍼가 더 큰 명령 버퍼 내로 결합될 수 있다. 명령 버퍼의 분리 및 결합은, 그를 통해 균형이 이루어지는 메카니즘일 필요는 없으며, 그보다는 스케줄링 입도와 효율성 간의 균형을 맞추기 위해서만 사용될 수 있다. 장래의 대안으로서, 클라이언트 파티션 프록시 장치 컨텍스 트(420)에 대해 적절한 우선권을 할당하기 위해, VSP(402)의 그래픽 장치 컨텍스트 우선순위 결정(prioritization) 특성이 직접 사용될 수 있다. 이러한 방식에서는, 그래픽 프록시 프로세스(406) 내의 명확한 시간 뱅크가 필요없다.
그러나, 다른 측면에서, GPU 상에서 시간을 균형 맞추기 위해 사용되는 한 메카니즘은 다음과 같다(이는 스케줄링 알고리즘의 한 예이며, 다른 것도 사용될 수 있다). 도 4를 참조하여 위에서 논의된 바와 같이, 각각의 VCP는, 공백(empty)으로 시작하고 GPU 시간을 보유할 수 있는 "시간 뱅크"를 갖는다. 명령 버퍼 큐가 공백이 되면 언제나, 시간 뱅크는 특정 최대치에 고정된다. 바람직하게는, 그들의 명령 버퍼 큐 내에 명령 버퍼를 갖는 VCP들은, 상한치를 초과하는 양(+)의 시간을 그들의 시간 뱅크 내에 가질 수 있다. 스케줄러의 각각의 "찰나(tick)"마다 VCP의 시간 뱅크에 시간이 더해진다. 스케줄러는, 양(+)의 시간 은행값을 갖는 파티션에 대해 명령 버퍼를 실행하면서(이는 대기중인(queued) 명령 버퍼를 가짐도 의미함), 한번에 하나의 VCP를 순환한다.
특정 VCP의 차례가 오면, 명령 버퍼가 실행되고, 각각의 명령 버퍼는 시간이 측정된다. 각각의 명령 버퍼를 실행하는데 드는 시간은 그 VCP의 시간 뱅크에서 삭감되며, 그 VCP가 음(-)의 시간 뱅크값이 되도록 할 수도 있다. 그 비디오 클라이언트 파티션에 대해 더 이상 남아있는 명령 버퍼가 없을 때까지, 또는 그 비디오 클라이언트 파티션에 대한 시간 뱅크가 영(0) 또는 그보다 작은 값이 될 때까지, 명령 버퍼는 계속하여 그 VCP에 대해 실행될 것이다. 비디오 서비스 파티션 내의 그래픽 어댑터의 다른 사용자에 대해서는 제어가 거의 이루어질 수 없기 때문에, 그 사용자들은 무시되며, 그 사용자들로 인해 걸리는 시간은 VCP의 시간 뱅크에 합리적으로 임의적으로 귀착될 것이다. 시간이 흐르고 시간이 VCP 시간 뱅크로 분포되면, 시간을 더 취할 수 있는 그 비디오 클라이언트 파티션들 사이에 가용 시간이 할당된다(몇몇 VCP는 그들의 상한치에 도달했을 수 있기 때문에 더 시간을 취할 수 없을 수도 있다). 할당 시간의 비율은 우선권 메카니즘에 의해 결정될 수 있다. 모든 VCP가 그들의 시간 뱅크 상한에 도달했다면, 분포되는 시간 중 일부는 어떤 VCP도 사용할 수 없으므로 버려질 수 있다. 상한은 나중에 늘어난 기간동안 확인되지 않은 것을 실행하기 위해 사용할 수 있는 많은 나머지 시간을 비디오 VCP가 만들어내지 않도록 한다.
도 4에 도시된 바와 같이, 상기 시간-뱅크 및 명령 버퍼 큐는, 비디오-클라이언트-파티션마다(per-video-client-partition) 있을 수 있으며, 또는 전술한 VCP간 시간의 할당(apportioning), 및 이와 상당히 유사한 각각의 비디오 클라이언트 파티션 내의 장치 컨텍스트들 사이에 시간의 서브-할당(sub-apportioning)이 있는 2 레벨 시스템일 수 있다.
VCP는 실제 그래픽 어댑터처럼 보이는 것을 비디오 클라이언트 파티션에게 드러내는 가상 그래픽 어댑터 드라이버를 가지며, 비디오 서비스 파티션 내에서 실행되는 프록시 어플리케이션과 통신한다. 비디오 서비스 파티션 내의 프록시 어플리케이션은, 비디오 서비스 파티션의 관점에서는 GPU를 사용하고 있는 또하나의 어플리케이션처럼 보인다.
예컨대, 표면 데이터의 어쩔수 없는 손실이 일어날 수 있으므로, 표면 또는 다른 그래픽 리소스가 손실된 것으로 VSP 내의 그래픽 프록시 어플리케이션에 보고된 경우, 그러한 손실은 VCP에 보고될 필요가 있을 수 있으며, 가상 표면을 보유하는 비디오 클라이언트 파티션 내에서 실행되는 어플리케이션은 표면 손실 에러(몇몇 어플리케이션이 다룰 수 있을 것으로 기대되는 일반적인 에러)의 처리를 책임질 것이다.
II. 메모리 공유(Memory Sharing)
전술한 바와 같이, 자원 공유에 관한 적어도 두개의 시나리오가 있다. 한 시나리오는 (전술한 바와 같이) GPU 시간의 분할에 관한 것이며, 다른 하나는 메모리의 공유에 관한 것이다. 두번째 시나리오와 관련하여, 메모리 리소스의 공유는, (아마도 가속된 그래픽 포트 어퍼쳐(accelerated graphics port aperture) 또는 다른 종류의 어퍼쳐를 통해) 그래픽 어댑터에게 보이는 시스템 메모리 또는 그래픽 어댑터 상의 비디오 메모리와 같은 그래픽 어댑터 리소스의 공유를 수반한다.
따라서, 일 측면에 따르면, 도 5a는 다양한 VCP 내의 일반적인 어플리케이션이, 잠금(Lock) 및 잠금해제(Unlock)로 불리는 한쌍의 API 콜(call)을 통해 그래픽 리소스 내에 포함된 데이터를 액세스할 수 있도록 하기 위해 사용되는 메카니즘을 도시한다. VSP(502) 내에서 실행되는 그래픽 프록시 프로세스(506)는 그래픽 런타임(runtime)(514)과 통신상으로 연결되어 있다. 그래픽 프록시 프로세스(506)는 VCP(504) 내에서 실행되는 어떤 어플리케이션(516)으로부터 잠금 및 잠금해제 API를 받는다. 이러한 API는 그래픽 리소스(512) 내에 포함된 데이터로의 포인터(pointer)를 어플리케이션(516)에게 리턴하며, 그러면 어플리케이션(516)은 리소 스가 잠금해제될 때까지 그래픽 리소스(516) 내에 포함된 데이터를 읽거나 쓰기 위해 이 포인터를 사용할 수 있다.
포인터는 VSP(502)의 런타임 프로그램(514)에 의해 리턴되며, 이는 전술한 도면들에서 논의된 바와 같이, 그래픽 프록시 어플리케이션의 가상 어드레스 공간 내로의 포인터이다. 도 5b는 VSP 및 VCP 내의 다양한 어드레스 공간들의 관계를 도시한다. 그래픽 리소스(512)는 액세스 가능하며, 잠김상태인 동안에는 그래픽 프록시 어플리케이션(518)의 가상 어드레스 공간 내에서는 이동하지 않지만, 하부 데이터(underlying data)를 보유하기 위해 사용되는 물리적 어드레스들(520 및 526)이 변경될 수 있다(가상 파티션 어드레스, 물리적 파티션 어드레스, 머신 물리 어드레스, 파티션 페이지 테이블(partition page table) 및 쉐도우 페이지 테이블(shadow page table) 간의 관계는 MSFT-4785/310782.01, "강화된 페이지 테이블 알고리즘"에서 더 상세하게 논의된다).
VCP(522) 내의 특정 가상 어드레스로의 액세스는 보통 VCP 물리 어드레스(524)로 맵핑되며, 번갈아서 머신 물리 어드레스(526)에 맵핑되기 때문에, VCP 물리 어드레스(524)로부터 VSP 물리 어드레스(520)로의 맵핑은 보통 고려되지 않는다. VSP(502) 내의 비디오 메모리 관리자(528)가, 그래픽 리소스가 잠금 상태인 동안에 그래픽 리소스를 보유하는 물리적 페이지(520 및 526)를 변경하기로 결정했다면, 초기 잠금 API 콜(initial lock API call) 상의 고정된 맵핑 셋업은, 잘못된 머신 물리 어드레스(526)로 맵핑되는 잠금상태인 표면 내의 VCP 가상 어드레스(522)로의 액세스를 유발할 것이다. 이는 잘못된 데이터를 읽어들이고, 잘못된 물리 페이지(520 및 526)에 데이터를 쓰며, 기타 다른 바람직하지 않은 문제들을 일으킬 수 있다. 또한, 카피-온-라이트(copy-on-write) 또는 요구 페이징(demand paging)과 같은 것들을 구형하기 위해서, VSP(502) 상의 비디오 메모리 관리자(528)는 그래픽 프록시 프로세스(506)에 드러난 가상 어드레스 범위(518)를 만드는 페이지들의 접근성(accessibility)을 자유롭게 제어한다.
이와 같은 상기 시나리오를 어드레스하기 위해서, 비디오 메모리 관리자(528)는 콜백 메카니즘(530)을 드러낸다. 잠금상태인 그래픽 리소스(512)의 데이터를 저장하기 위해 사용되는 물리적 페이지(520 및 526)가 변경되면 언제나, 그리고 잠금상태인 그래픽 리소스(512)의 데이터를 저장하기 위해 사용되는 페이지의 접근성 플래그(flag)가 변경되면 언제나 콜백 메카니즘(530)이 발동한다. VCP 쉐도우 페이지 테이블(도시되지 않음)과, VCP 물리 어드레스(524)로부터, 동일한 액세스 의미론을 이루고 VCP 가상 어드레스(522)를 사용하는 적절한 VSP 물리 페이지(520)에 대응하는 머신 물리 페이지(526)로의 직접적인 액세스를 가능하게 하는 머신 물리 어드레스(526)로의 맵핑에 유사한 변경이 이루어진다.
도 6a 내지 6h는 가상 페이지 하부에 있는 물리 페이지가 이동하고 메모리로부터 페이지 아웃(paged out)될 때 발생하는 것을 도시한 스냅샷 그림이다. 파티션들이 효율적으로 메모리를 공유할 수 있도록 하기 위해, 다양한 종류의 가상-대-물리(virtual-to-physical) 메모리 맵핑이 파티션들 간에 동기화되어야 한다. 도 6a는 VSP(602) 내의 그래픽 프록시 어플리케이션의 가상 어드레스 공간을 도시한다. 이 어드레스 공간은 도 5의 공간(518)에 대응된다. (파티션 물리 어드레스 공간, 파티션 페이지 테이블, 쉐도우 페이지 테이블, 여기에서 논의되지 않는 기타 등등을 통해) 어드레스 공간(602)이 도 5의 어드레스 공간(526)에 대응될 수 있는 물리 어드레스 공간(606)에 맵핑된다(604). 마찬가지로, 그래픽 클라이언트 어플리케이션(610)의 가상 어드레스 공간이 물리 어드레스 공간(606)에 맵핑될 수 있다(608). VSP(602) 내의 그래픽 프록시 어플리케이션의 가상 어드레스 공간과, VCP(610) 내의 그래픽 클라이언트 어플리케이션의 가상 어드레스 공간 둘 다, 잠김상태인 그래픽 리소스(612 및 614)의 대응하는 페이지를 뒷받침하는(back) 몇몇 메모리 어드레스를 가질 수 있으며, 그에 따라 그래픽 리소스(612 및 614)는 동일한 머신 물리 페이지에 의해 뒷받침된다.
도 6b는 물리 어드레스가 변경될 때 무엇이 일어나는 지와, 맵핑들(604) 중 적어도 하나가 어떻게 갱신되어야 하는지를 도시한다. 따라서, 어드레스 공간 내에 포함된 어떤 데이터가 위치를 변경하였으므로, 원래의 맵핑(618)(점선)은 폐기되고 신규 맵핑(616)(굵은선)으로 교체되어야 한다. 특히, 머신 물리 어드레스 맵핑, 즉 맵핑(620)에 대한 VCP 중 하나는 변경되지 않았으며, 이는 현재 VCP 가상 어드레스(610)가 적절한 머신 물리 어드레스에 맵핑되어있지 않음을 의미한다. 결과적으로, 그 VCP 가상 어드레스도 변경되어야 한다.
도 6c는 머신 물리 어드레스(606)에 대한 VCP 가상 어드레스(610)의 갱신을 도시한다. 따라서, 점선 화살표는 이전의 맵핑(620)을 나타내며, 굵은 화살표는 갱신된 신규 맵핑(622)을 나타낸다. 그리고 이후에, 머신 물리 어드레스 맵핑(604)에 대한 VSP와 머신 물리 맵핑(608)에 대한 VCP 둘 다 적절하게 갱신 및 동 기화된다. 도 6d는 두 파티션들 간의 메모리 공유를 위한 기반으로 작동하는 VSP 및 VCP 간의 동기화를 도시한다.
도 6e는 그래픽 리소스의 한 페이지가 머신 물리 메모리(606)로부터 페이지 아웃될 때 발생하는 것을 도시한다. 사선이 있는 페이지는 메모리로부터 페이지 아웃되며, 과거의 맵핑(624)은 더 이상 유효하지 않다. VSP 가상 어드레스로부터의 신규 맵핑(626)은 머신 물리 메모리(606) 내의 페이지에 대한 대응하는 맵핑을 더 이상 갖지 않는다. 이러한 페이지 아웃된(paged out) 페이지로부터는 아무것도 읽기 및 쓰기를 할 수 없다("NO rw").
그 다음, 도 6f는 VCP 가상 어드레스(608)로부터의 맵핑이 VSP 가상 어드레스 맵핑(604)과 동기화되어야 함을 도시한다. 특히, 과거의 맵핑(628)은 페이지 아웃된 머신 물리 어드레스 공간(606) 페이지에 대응되지 않는다. 오히려, 신규 맵핑은 대응되는 머신 물리 페이지를 갖지 않으며, 따라서 어떤 것도 그 페이지 내에 읽기 및 쓰기를 할 수 없다("NO rw").
도 6g는 물리 메모리로부터 페이지 아웃된 페이지로 액세스를 시도하는 VCP 내의 어플리케이션으로 인한 페이지 폴트(fault) 시나리오를 도시한다. 따라서, 일반적인 어플리케이션은 VCP 어플리케이션(610)의 가상 어드레스 공간 내의 페이지로의 액세스를 시도한다. 그 특정 페이지는 머신 물리 메모리(606)로부터 페이지 아웃되기 때문에, 대응되는 가상-대-물리(virtual-to-physical) 맵핑(608)이 존재하지 않는다("No rw"). 그 결과, 페이지 폴트가 일어난다. 그래픽 리소스에 맵핑되는 가상 어드레스로의 허용되지 않은 액세스로 인해 VCP 내에 페이지 폴트가 일어나면, 비디오 서비스 파티션 내의 그래픽 프록시 어플리케이션에 유사한 폴트가 발생했던 것처럼, 페이지 폴트가 VSP 메모리 관리자로 전달된다. 이는 비디오 서비스 파티션 내의 비디오 메모리 관리자로 하여금 시도된 액세스에 사용가능한 그 가상 어드레스를 만드는 적절한 동작을 취할 수 있도록 한다. 액세스가 트루 폴트(true fault)(예컨대, 읽기전용 표면에 쓰기를 하려는 시도)인 경우, 그래픽 프록시 어플리케이션은 폴트되지 않지만, 그 폴트는 VCP로 되돌려 전달되고 폴트를 원래 생성했던 VCP 어플리케이션에 부여된다("삽입"된다).
최종적으로, 도 6h는 페이지 폴트가 조절되는 방식을 도시한다. 물리 메모리로부터 페이지 아웃된 물리 페이지는 메모리 내로 페이지 백(paged back) 된다. 따라서, 과거의 맵핑(629 및 630)은 신규 맵핑(632 및 634)으로 대체된다. 전과 마찬가지로, 먼저 VSP 가상 어드레스(602)가 머신 물리 어드레스(606)에 맵핑된 다음, 관련 VCP 가상 어드레스가 맵핑(608)을 통해 이 맵핑(604)에 동기화된다. 그러나, 이는 단지 예시적인 동기화이며, 다른 파티션들 간에 메모리 공유를 가능하게 하는 다른 종류의 동기화도 적용될 수 있다.
III. 비디오 오버레이(Video Overlay)
압축해제된 디지털 비디오 콘텐츠에 비디오 오버레이가 일반적으로 사용된다. 그러한 콘텐츠는 일반적으로 적색, 녹색 및 청색 데이터(RGB)로 저장되지 않으며, 일반적으로는 휘도(luminance) 및 색차(chrominance) 데이터(YUV)로 저장된다. 도 7은 스크린 상의 보통의 RGB 데이터(702)의 나머지 부분 상의 사각형(704) 내의 스크린 상의 YUV 데이터의 직접 하드웨어 지원 디스플레이를 비디오 오버레이 가 지원하는 개념을 도시한다.
또한, 도 8은 보통의 하드웨어-지원 YUV 비디오 오버레이에 대한 픽셀 데이터 경로를 도시한다. 하드웨어-지원(Hardware-Supported) YUV 비디오 오버레이(804)와 함께 하드웨어 주 RGB 비디오 표면(802)이 그래픽 어댑터(806)에 제공된다. 이와 함께, 주 표면 데이터(802) 및 비디오 오버레이(804)가 그래픽 어댑터(806)에 의해 처리된 다음, 그래픽 어댑터(806)로부터 어떤 그래픽 디스플레이(808)로 전달된다.
비디오 오버레이(804)가 아래의 RGB 데이터를 대체하는 것처럼 디스플레이되지만, 실제로는 하부 RGB(802) 데이터는 영향을 받지 않는다. 일반적으로 비디오 오버레이(804)는 비디오의 하드웨어 스케일링 - 크기 증가 또는 감소 - 을 지원한다. 비디오 오버레이(804)는 일반적으로 이동할 수 있으며 스크린(808) 상에 리사이징된다(re-sized). 때때로, 이러한 기능은 비디오 오버레이가 RGB 데이터를 사용하여 그려진 윈도우 내에 있는 것처럼 보이도록 하기 위해 사용된다. 이러한 비디오 디스플레이 윈도우가 (아마도 다른 윈도우와의 겹침으로 인해) 부분적으로만 보이는 경우, 비디오 디스플레이의 보이는 부분 상에만 오버레이가 나타나도록 하기 위해, 목적 크로마-키(destination chroma-key)(또는 소스(source) 크로마-키)로 알려진 기술이 사용된다. 크로마-키 기술은 일반적으로 그래픽 어댑터 하드웨어 내에서 구현된다. 일반적으로, 보통의 RGB 데이터에 적용되는 대응 파라미터들과 관계없이, 비디오 오버레이 밝기, 대비(contrast), 감마 보정(gamma correction) 및 다른 파라미터가 조정될 수 있다.
여기에 설명된 청구대상의 일 측면에서, 도 9는 복수의 비디오 오버레이(920 및 922)가 동일한 그래픽 어댑터(910) 상에 생성될 수 있음 - 이는 각각의 VCP가 동시에 그 자신의 비디오 오버레이를 부여받음을 의미함 - 을 도시한다. 이러한 작업은 에뮬레이트된(emulated) 비디오 오버레이(920 및 922)를 생성함으로써 수행된다. 이러한 에뮬레이트된 비디오 오버레이는 VCP(906 및 908)에게는 하드웨어-지원 비디오 오버레이인 것처럼 보인다. 그러나, 이들은 실제로, 픽셀 쉐이더(shader)(916)와 에뮬레이트된 비디오 오버레이 표면이 있는 VCP 주 그래픽 출력 표면의 최종 구성 단계를 사용하여 구현된다. 비디오 오버레이 스케일링, YUV로부터 RGB로의 변환, 크로마-키 및 밝기/대비/감마 조정은 픽셀 쉐이더를 사용하여 구현된다. 비디오 오버레이의 표면 플립핑(flipping) 및 타이밍 의미론은 (실제로 하드웨어-지원 비디오 오버레이가 아닌 것을 제외하고는) 복수의 별개의 표면 또는 표면 플립 체인(flip chain)을 사용하여 에뮬리이트된다. 선택적으로, 가장 중요한, 포어그라운드(foreground), 또는 명백히 가장 크게 에뮬레이트된 오버레이는 실제의 하드웨어-지원 비디오 오버레이에 의해 뒷받침될 수 있다.
예컨대, VCP가 YUV 내의 비디오 오버레이 표면에 쓰기를 한다면, 전술한 표면 공유 메카니즘을 사용함으로써 그렇게 한다. 오버레이의 위치 및/또는 크기가 오버레이 조정 API를 사용하여 설정되면, 그 설정 정보의 이력이 유지된다. 스크린을 갱신할 때가 되면(다음 리프레시(next refresh)), 그 저장된 정보를 읽어들이고 픽셀 쉐이더가 사용되는데, 픽셀 쉐이더는, 각각 스크린 상의 목적 RGB 사각형의 크기에 이르는 Y, U 및 V 데이터의 스케일링을 수행하는 텍스처링(texturing) 및 필터링 동작과, 목표 해상도 YUV 픽셀을 RGB 포멧으로 바꾸는 색상 공간 전환 단계(이 단계에서 감마 및 밝기 설정이 고려될 수 있음)를 포함한다. YUV로부터 RGB로의 변환과 스케일링 단계는 어떤 순서로든 이루어질 수 있지만, 일반적으로는 YUV 색상 공간에 있는 동안에 감마 및 밝기 조정이 이루어진다. 바람직하게는, 픽셀 쉐이더 프로그램은 목표 오버레이 사각형을 표시하는 사각형 영역의 각각의 픽셀을 생성하기 위해 사용되는 더 큰 픽셀 쉐이더 프로그램의 일부이다. 그 더 큰 프로그램은 오버레이 목적 사각형 "아래에 있는" 주 표면의 각각의 픽셀의 "목적" 색상을 테스트할 수도 있으며, 그 색상이 지정된 RGB 색상에 일치하는 경우에만, 프로그램의 나머지(스케일링 및 색상 공간 변환)를 수행할 것이다. 이러한 픽셀 쉐이더 프로그램은 오버레이 목표 사각형 외부에 있는 것으로 얼려진 픽셀들에 대해서는 사용될 필요가 없을 것이다. 이러한 구현이 어떠한 오버레이 픽셀도 포함하지 않는 "소스" 주(主)(source primary)와 오버레이 픽셀이 섞여 들어가게 하는 "목적" 주(主)(destination primary)를 이끌어냄을 주목하라. 목적 주 표면의 두개의 "이중 버퍼된(double buffered)" 복사본이 있을 수 있다. 그러면 "목적" 주(그것의 구성 이중-버퍼된 표면들 중 하나를 의미함)는 비디오 카드에 의해 (VM 뷰의 "풀스크린 모드"인) 스크린으로 직접 스캔 아웃(scanned out)될 수 있거나, 또는 다른 윈도우와 함께 보여질 수 있는 "데스크탑 뷰 윈도우"로 구성될 수 있다. 전술한 픽셀 쉐이더 프로그램의 설명은 동일한 최종 효과를 요구하는 몇몇 다른 변형이 이루어질 수 있다.
다양한 도면에서 도시된 바와 같이, 본 설명은 청구대상의 바람직한 측면에 관하여 설명되었지만, 본 청구범위를 벗어나지 않고 동일한 기능을 수행하기 위해 다른 유사한 측면들이 사용될 수 있거나 변형 및 추가가 설명된 측면들에 이루어질 수 있음이 이해된다. 예컨대, 일 측면에서, 그래픽 어댑터의 가상화를 위한 리소스 관리가 논의되었다. 그러나, 이러한 설명에 대한 다른 균등한 측면들도 여기의 설명에 의해 고려된다. 따라서, 본 측면들은 어떤 단일한 측면에 한정되어서는 안되며, 첨부된 특허청구범위에 따른 폭과 범위 내에서 해석되어야 한다.

Claims (20)

  1. 가상 머신 환경 내의 복수의 파티션들 사이에 그래픽 어댑터 리소스 공유를 위한 메카니즘을 제공하기 위한 컴퓨터 실행가능한 명령들을 저장하는 컴퓨터 판독가능 매체로서, 상기 명령들은,
    제1 파티션에 가상 그래픽 리소스인 그래픽 어댑터 리소스를 제공하는 단계;
    그래픽 프록시 프로세스를 제공하는 단계 - 상기 그래픽 프록시 프로세스는 제2 파티션 내에 저장되는 실제 그래픽 리소스(real graphics resources)를 보유하며, 상기 가상 그래픽 리소스는 상기 실제 그래픽 리소스와 연관됨 -; 및
    상기 그래픽 프록시 프로세스와 연관되며, 상기 제1 파티션이 상기 가상 그래픽 리소스로 액세스하는 시간의 양을 제어하기 위한 메카니즘을 제공하는 단계
    를 포함하는 단계들을 실행시키기 위한 것인, 컴퓨터 판독가능 매체.
  2. 제1항에 있어서, 상기 제2 파티션 내의 상기 그래픽 프록시 프로세스는 상기 제1 파티션 내의 드라이버와 통신하며, 상기 드라이버는 상기 제1 파티션이 상기 그래픽 프록시 프로세스를 통해 상기 가상 그래픽 리소스에 액세스할 수 있도록 하는 컴퓨터 판독가능 매체.
  3. 제1항에 있어서, 상기 제1 파티션이 상기 가상 그래픽 리소스로 액세스하는 시간의 양은 시간 뱅크(time bank)에 기초하는 컴퓨터 판독가능 매체.
  4. 제1항에 있어서, 상기 시간 뱅크는 상기 제1 파티션 및 상기 제2 파티션 간에 상기 실제 그래픽 리소스에 대한 액세스 시간을 제어하는 컴퓨터 판독가능 매체.
  5. 제1항에 있어서, 상기 시간 뱅크는 상기 제2 파티션 내의 제1 프록시 그래픽 장치 컨텍스트와 제2 프록시 그래픽 장치 컨텍스트 간에 상기 실제 그래픽 리소스로의 액세스 시간을 제어하는 컴퓨터 판독가능 매체.
  6. 제1항에 있어서, 상기 제2 파티션은 상기 실제 그래픽 리소스로 액세스하는 동안 대기중인(queued) 명령들을 실행하는 컴퓨터 판독가능 매체.
  7. 가상 머신 환경 내의 복수의 파티션들 사이에 그래픽 어댑터 리소스를 공유하기 위한 메카니즘을 제공하는 컴퓨터 판독가능한 명령들을 저장하는 컴퓨터 판독가능 매체로서, 상기 명령들은,
    제1 파티션에 가상 그래픽 어댑터 리소스인 그래픽 어댑터 리소스를 제공하는 단계;
    그래픽 프록시 프로세스를 제공하는 단계 - 상기 그래픽 프록시 프로세스는 제2 파티션 내에 저장된 실제 그래픽 어댑터 리소스를 보유하며, 상기 가상 그래픽 어댑터 리소스는 상기 실제 그래픽 어댑터 리소스와 연관됨 -; 및
    상기 그래픽 프록시 프로세스와 연관되며, 상기 제1 파티션 내에 맵핑된 가상 메모리와 상기 제2 파티션 내에 맵핑된 가상 메모리를 동기화하기 위한 콜백(callback) 메카니즘을 제공하는 단계 - 상기 제1 파티션 및 상기 제2 파티션 각각에 있는 적어도 하나의 가상 메모리 페이지는 중앙 처리 장치에 의한 액세스에 대해 잠금상태가 되며, 그 결과 잠금상태인 동안에는 상기 제1 및 제2 파티션 각각의 상기 가상 메모리 페이지 수가 변경되지 않으면서도, 상기 실제 그래픽 어댑터 리소스를 저장하는 실제 물리 메모리 내의 페이지가 상기 실제 물리 메모리로 페이지 인(paged in) 및 상기 실제 물리 페이지로부터 페이지 아웃(paged out)될 수 있음 -
    를 포함하는 단계들을 실행시키기 위한 것인, 컴퓨터 판독가능 매체.
  8. 제7항에 있어서, 상기 콜백 메카니즘은 상기 제1 파티션 내의 가상 메모리 중 선택된 부분을 상기 제2 파티션 내의 가상 메모리 중 선택된 부분에 동기화시키는 컴퓨터 판독가능 매체.
  9. 제7항에 있어서, 상기 그래픽 프록시 프로세스의 페이징(paging) 메카니즘은, 하부 실제 물리 메모리 페이지가 상기 실제 물리 메모리에서 페이지 아웃된 경우, 상기 제1 파티션 내의 페이지 폴트(fault)를 처리하는 컴퓨터 판독가능 매체.
  10. 제9항에 있어서, 상기 그래픽 프록시 프로세스의 상기 페이징 메카니즘은, 상기 제1 파티션 내의 대응하는 가상 페이지가 상기 실제 물리 메모리 내에 상주하지 않은 가상 페이지에 액세스하는 경우, 상기 실제 물리 메모리에서 페이지 아웃된 페이지를 상기 실제 물리 메모리 내로 페이징하는 컴퓨터 판독가능 매체.
  11. 제7항에 있어서, 런타임(runtime) 프로그램은 상기 제1 파티션 내의 그래픽 리소스를 잠금 및 잠금해제 하기 위한 어플리케이션 프로그램 인터페이스를 제공하는 컴퓨터 판독가능 매체.
  12. 제11항에 있어서, 상기 제1 파티션 내의 어플리케이션은 상기 제1 파티션 내의 그래픽 리소스를 잠금 및 잠금해제 할 수 있는 컴퓨터 판독가능 매체.
  13. 제7항에 있어서, 상기 제1 파티션 내의 드라이버는 상기 제2 파티션 내의 그래픽 프록시 프로세스와 통신하며, 상기 드라이버와 상기 제2 파티션 내의 그래픽 프록시 프로세스는 상기 제1 파티션이 상기 가상 그래픽 어댑터 리소스로 액세스할 수 있도록 하여 상기 실제 그래픽 어댑터 리소스로 액세스할 수 있게 하도록 협력하는 컴퓨터 판독가능 매체.
  14. 가상 머신 환경 내의 그래픽 어댑터 리소스를 제공하기 위한 컴퓨터 판독가능 명령들을 저장하는 컴퓨터 판독가능 매체로서, 상기 명령들은,
    휘도(luminance) 및 색차(chrominance) 데이터로 저장된 픽셀을 가진 표면을 상기 가상 머신 환경 내의 제1 파티션에 제공하는 단계; 및
    휘도 및 색차 색상 공간 데이터로부터 적색, 녹색 및 청색 색상 공간 데이터로의 변환을 구현하는, 제2 파티션이 보유하는 픽셀 쉐이더(shader)의 변환 기능을 상기 제1 파티션에 제공하는 단계
    를 포함하는 단계들을 실행하기 위한 것인, 컴퓨터 판독가능 매체.
  15. 제14항에 있어서, 상기 휘도 및 색차 데이터는 비디오 오버레이(overlay)인 컴퓨터 판독가능 매체.
  16. 제15항에 있어서, 상기 비디오 오버레이는, 상기 변환을 수행하는 명시적(explicit) 픽셀 쉐이더를 사용하는 대신, 그래픽 디스플레이 상에 상기 휘도 및 색차 데이터의 직접 하드웨어 지원 디스플레이를 지원하는 컴퓨터 판독가능 매체.
  17. 제16항에 있어서, 상기 오버레이는 하부 주 픽셀(underlying primary pixel)의 적색, 녹색 및 청색 데이터의 적어도 일부를 커버하는 컴퓨터 판독가능 매체.
  18. 제16항에 있어서, 상기 오버레이가 상기 오버레이 아래의 적색, 녹색 및 청색 데이터를 대체하는 것처럼 상기 적색, 녹색 및 청색 데이터의 적어도 일부를 커버하지만, 동시에 원래의 하부 적색, 녹색 및 청색 데이터는 영향을 받지 않는 컴퓨터 판독가능 매체.
  19. 제16항에 있어서, 상기 오버레이 밝기, 대비(contrast), 감마 보정(gamma correction) 및 다른 관련 파라미터는 상기 적색, 녹색 및 청색 데이터에 적용되는 대응 파라미터와 관계없이 조정될 수 있는 컴퓨터 판독가능 매체.
  20. 제14항에 있어서, 상기 적색, 녹색 및 청색 데이터와 상기 휘도 및 색차 데이터는 그래픽 어댑터에 제공되는 컴퓨터 판독가능 매체.
KR1020087000360A 2005-07-08 2006-07-10 그래픽 어댑터의 가상화를 위한 리소스 관리 KR20080031259A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/177,084 2005-07-08
US11/177,084 US7650603B2 (en) 2005-07-08 2005-07-08 Resource management for virtualization of graphics adapters

Publications (1)

Publication Number Publication Date
KR20080031259A true KR20080031259A (ko) 2008-04-08

Family

ID=37617931

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087000360A KR20080031259A (ko) 2005-07-08 2006-07-10 그래픽 어댑터의 가상화를 위한 리소스 관리

Country Status (9)

Country Link
US (1) US7650603B2 (ko)
KR (1) KR20080031259A (ko)
CN (1) CN101258484A (ko)
AU (1) AU2006268251A1 (ko)
BR (1) BRPI0612799A2 (ko)
CA (1) CA2613634A1 (ko)
MX (1) MX2008000179A (ko)
RU (1) RU2007148692A (ko)
WO (1) WO2007008881A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416062B1 (ko) * 2011-05-26 2014-07-08 삼성전자주식회사 무선 통신 시스템에서의 데이터 전송률 조절 방법 및 장치
WO2022181960A1 (ko) * 2021-02-26 2022-09-01 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453148B1 (en) 2005-04-06 2013-05-28 Teradici Corporation Method and system for image sequence transfer scheduling and restricting the image sequence generation
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US7945913B2 (en) * 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US9176765B2 (en) * 2006-09-25 2015-11-03 Lenovo (Beijing) Limited Virtual machine system and a method for sharing a graphics card amongst virtual machines
US20110214050A1 (en) * 2006-09-29 2011-09-01 Stambaugh Thomas M Virtual systems for spatial organization, navigation, and presentation of information
US20080088636A1 (en) * 2006-10-13 2008-04-17 Nee Shen Ho System and method for the display and control of virtual environments in a single pipe graphics memory controller hub using picture-in-picture
US8013804B2 (en) * 2007-05-30 2011-09-06 Lenovo (Singapore) Pte. Ltd, System and method for graphics remapping in hypervisor
CN101477510B (zh) * 2008-01-02 2011-07-27 联想(北京)有限公司 在多操作系统中共享显示卡的方法和计算机系统
US20090210873A1 (en) * 2008-02-15 2009-08-20 International Business Machines Corporation Re-tasking a managed virtual machine image in a virtualization data processing system
US20090328037A1 (en) * 2008-02-27 2009-12-31 Gabriele Sartori 3d graphics acceleration in remote multi-user environment
US20100115510A1 (en) * 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8135937B2 (en) * 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US10255463B2 (en) * 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
CN102053871B (zh) * 2009-10-28 2013-03-13 中国移动通信集团公司 一种应用程序图像的显示方法和装置
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
CN102411484B (zh) * 2010-09-20 2015-01-28 联想(北京)有限公司 一种显示系统中的图像显示方法和装置
KR101430729B1 (ko) 2010-10-27 2014-08-14 한국전자통신연구원 소프트웨어 지원 서버 및 그 방법
US9176795B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics processing dispatch from user mode
US9176794B2 (en) * 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US9886312B2 (en) * 2011-09-28 2018-02-06 Microsoft Technology Licensing, Llc Dynamic provisioning of virtual video memory based on virtual video controller configuration
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US10095295B2 (en) * 2011-12-14 2018-10-09 Advanced Micro Devices, Inc. Method and apparatus for power management of a graphics processing core in a virtual environment
US9613390B2 (en) 2012-05-02 2017-04-04 Nvidia Corporation Host context techniques for server based graphics processing
US9542715B2 (en) 2012-05-02 2017-01-10 Nvidia Corporation Memory space mapping techniques for server based graphics processing
US9311169B2 (en) * 2012-05-02 2016-04-12 Nvidia Corporation Server based graphics processing techniques
US9805439B2 (en) 2012-05-02 2017-10-31 Nvidia Corporation Memory space mapping techniques for server based graphics processing
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
US20150009222A1 (en) * 2012-11-28 2015-01-08 Nvidia Corporation Method and system for cloud based virtualized graphics processing for remote displays
US11082490B2 (en) 2012-11-28 2021-08-03 Nvidia Corporation Method and apparatus for execution of applications in a cloud system
US9007383B2 (en) 2012-12-05 2015-04-14 Vysoká {hacek over (s)}kola bá{hacek over (n)}ská—Technická Univerzita Ostrava Creating presentations by capturing content of a simulated second monitor
US9298490B2 (en) 2012-12-20 2016-03-29 Vmware, Inc. Managing a data structure for allocating graphics processing unit resources to virtual machines
US9417929B2 (en) * 2012-12-20 2016-08-16 Vmware, Inc. Runtime profile determinations of virtual machines for graphics processing unit (GPU) allocation
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
CN104516773B (zh) * 2013-09-29 2018-04-20 国际商业机器公司 用于物理机的数据分配方法和数据分配装置
WO2015080719A1 (en) * 2013-11-27 2015-06-04 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
CN107111498B (zh) 2014-11-12 2020-12-29 英特尔公司 利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移
WO2016101172A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Hybrid on-demand graphics translation table shadowing
US10621692B2 (en) * 2015-06-26 2020-04-14 Intel Corporation Apparatus and method to improve the scalability of graphics processor unit (GPU) virtualization
US9654753B1 (en) * 2015-09-01 2017-05-16 Amazon Technologies, Inc. Video stream processing
US10109099B2 (en) * 2016-09-29 2018-10-23 Intel Corporation Method and apparatus for efficient use of graphics processing resources in a virtualized execution enviornment
US10482562B2 (en) * 2017-04-21 2019-11-19 Intel Corporation Graphics engine partitioning mechanism
FR3082029B1 (fr) * 2018-06-05 2020-07-10 Thales Controleur de partage de ressources d'une plate-forme informatique et procede associe de partage des ressources
CN112506676B (zh) * 2020-12-02 2024-04-05 深圳市广和通无线股份有限公司 进程间的数据传输方法、计算机设备和存储介质
CN114925139B (zh) * 2022-07-21 2022-11-18 沐曦科技(成都)有限公司 分级同步数据链的方法、装置及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870406A (en) 1987-02-12 1989-09-26 International Business Machines Corporation High resolution graphics display adapter
US4954970A (en) * 1988-04-08 1990-09-04 Walker James T Video overlay image processing apparatus
KR0146262B1 (ko) 1994-07-05 1998-09-15 김광호 영상 오버레이 이미지 처리기
US6321276B1 (en) * 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
DE69910826T2 (de) * 1998-11-20 2004-06-17 Altera Corp., San Jose Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
US6437788B1 (en) 1999-07-16 2002-08-20 International Business Machines Corporation Synchronizing graphics texture management in a computer system using threads
US6750870B2 (en) 2000-12-06 2004-06-15 Hewlett-Packard Development Company, L.P. Multi-mode graphics address remapping table for an accelerated graphics port device
US7158668B2 (en) * 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
JP2005077501A (ja) * 2003-08-28 2005-03-24 Toshiba Corp 情報処理装置、表示制御用半導体装置およびビデオストリームデータの表示制御方法
JP4057989B2 (ja) * 2003-09-26 2008-03-05 株式会社東芝 スケジューリング方法および情報処理システム
US7362804B2 (en) * 2003-11-24 2008-04-22 Lsi Logic Corporation Graphical symbols for H.264 bitstream syntax elements
US7788713B2 (en) * 2004-06-23 2010-08-31 Intel Corporation Method, apparatus and system for virtualized peer-to-peer proxy services

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416062B1 (ko) * 2011-05-26 2014-07-08 삼성전자주식회사 무선 통신 시스템에서의 데이터 전송률 조절 방법 및 장치
US9661189B2 (en) 2011-05-26 2017-05-23 Samsung Electronics Co., Ltd. Method and apparatus for adaptive rate-based image data transmission and reception
WO2022181960A1 (ko) * 2021-02-26 2022-09-01 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치
WO2022181961A1 (ko) * 2021-02-26 2022-09-01 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Also Published As

Publication number Publication date
US20070008324A1 (en) 2007-01-11
US7650603B2 (en) 2010-01-19
MX2008000179A (es) 2008-04-07
AU2006268251A1 (en) 2007-01-18
CN101258484A (zh) 2008-09-03
CA2613634A1 (en) 2007-01-18
WO2007008881A2 (en) 2007-01-18
WO2007008881A3 (en) 2007-06-28
BRPI0612799A2 (pt) 2010-11-30
RU2007148692A (ru) 2009-07-10

Similar Documents

Publication Publication Date Title
US7650603B2 (en) Resource management for virtualization of graphics adapters
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US5801717A (en) Method and system in display device interface for managing surface memory
US7644407B2 (en) Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US5844569A (en) Display device interface including support for generalized flipping of surfaces
US7065630B1 (en) Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device
CA2528116C (en) Systems and methods for virtualizing graphics subsystems
US6044408A (en) Multimedia device interface for retrieving and exploiting software and hardware capabilities
US6008816A (en) Method and system for managing color specification using attachable palettes and palettes that refer to other palettes
CN111488196B (zh) 渲染方法及装置、存储介质、处理器
US5414848A (en) Method and apparatus for sharing a common routine stored in a single virtual machine with other virtual machines operating in a preemptive muli-tasking computer system
US20200409732A1 (en) Sharing multimedia physical functions in a virtualized environment on a processing unit
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
US11232535B2 (en) Systems and methods for using EGL with an OpenGL API and a Vulkan graphics driver
US7612781B2 (en) Memory control method of graphic processor unit
US7760205B2 (en) Information processing apparatus for efficient image processing
US6323875B1 (en) Method for rendering display blocks on display device
US20190004840A1 (en) Register partition and protection for virtualized processing device
US5990911A (en) Immediate mode drawing interface for the construction of graphics software
US10553018B2 (en) System and method for parallel assemble of primitives
US20060061579A1 (en) Information processing apparatus for efficient image processing
CN110941408B (zh) 一种kvm虚拟机图形界面输出方法及装置
Hansen Blink: Advanced display multiplexing for virtualized applications
CN115904617A (zh) 一种基于sr-iov技术的gpu虚拟化实现方法
WO2008060276A1 (en) Resource management for virtualization of graphics adapters

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