KR20070048634A - 다수의 그래픽 처리 장치를 이용한 비디오 처리 - Google Patents

다수의 그래픽 처리 장치를 이용한 비디오 처리 Download PDF

Info

Publication number
KR20070048634A
KR20070048634A KR1020060109042A KR20060109042A KR20070048634A KR 20070048634 A KR20070048634 A KR 20070048634A KR 1020060109042 A KR1020060109042 A KR 1020060109042A KR 20060109042 A KR20060109042 A KR 20060109042A KR 20070048634 A KR20070048634 A KR 20070048634A
Authority
KR
South Korea
Prior art keywords
media processing
processing device
video data
command
gpu
Prior art date
Application number
KR1020060109042A
Other languages
English (en)
Other versions
KR100830286B1 (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 KR20070048634A publication Critical patent/KR20070048634A/ko
Application granted granted Critical
Publication of KR100830286B1 publication Critical patent/KR100830286B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/012Conversion between an interlaced and a progressive signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • 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
    • 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
    • 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/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Transforming Electric Information Into Light Information (AREA)
  • Television Systems (AREA)

Abstract

본 발명의 비디오 프로세서의 일 실시예는 제1 메모리에 연결된 제1 미디어 처리 장치와 제2 메모리에 연결된 제2 미디어 처리 장치를 포함한다. 제2 미디어 처리 장치는 스케일러블 버스를 통해 제1 미디어 처리 장치에 연결된다. 소프트웨어 드라이버는 미디어 처리 장치가 비디오 처리 기능을 제공하도록 구성한다. 스케일러블 버스는 제2 미디어 처리 장치에 의해 처리된 비디오 데이터를 제1 미디어 처리 장치로 반송하고, 여기서 이 비디오 데이터는 제1 미디어 처리 장치에 의해 처리된 비디오 데이터와 결합되어 처리된 비디오 프레임이 생성된다. 제1 미디어 처리 장치는 결합된 비디오 데이터를 디스플레이 장치에 전달한다. 각각의 미디어 처리 장치는 비디오 데이터의 개별 부분들을 처리하도록 구성됨으로써, 비디오 프로세서는 단일-GPU 비디오 프로세서보다 신속하게 비디오 데이터를 처리할 수 있다.
그래픽 처리 장치, 비디오 처리, 프레임 버퍼, 메모리, 인터페이스

Description

다수의 그래픽 처리 장치를 이용한 비디오 처리{VIDEO PROCESSING WITH MULTIPLE GRAPHICS PROCESSING UNITS}
도 1은 본 발명의 일 실시예에 따른, 복수의 미디어 처리 장치를 사용하여 비디오 데이터의 프레임을 처리할 때 비디오 처리 시스템을 구현하는 기능적 단계들에 대한 개념을 도시한 도면.
도 2는 본 발명의 하나 이상의 양상들을 구현하도록 구성된 컴퓨팅 장치의 개념도.
도 3은 본 발명의 일 실시예에 따른, 도 2의 컴퓨팅 장치의 상세도.
도 4는 본 발명의 일 실시예에 따른, 비디오 데이터의 프레임을 처리할 때 도 2 및 도 3의 컴퓨팅 장치에 의해 구현되는 방법 단계들에 대한 흐름도.
도 5a는 본 발명의 일 실시예에 따른, 도 4의 단계(402)를 구현하는 데 이용되는 일련의 커맨드를 예시하는 개념도.
도 5b는 본 발명의 일 실시예에 따른, 도 4의 단계(403)를 구현하는 데 이용되는 일련의 커맨드를 예시하는 개념도.
도 5c는 본 발명의 일 실시예에 따른, 도 4의 단계(410)를 구현하는 데 이용되는 일련의 커맨드를 예시하는 개념도.
<도면의 주요 부분에 대한 부호의 설명>
200 : 컴퓨팅 장치
204: 시스템 메모리
206 : 드라이버
208 : 그래픽스 서브시스템(마스터)
210 : 그래픽스 서브시스템(슬레이브)
212, 222 : GPU
214, 224 : GPU 메모리
215, 216, 225, 226 : 프레임 버퍼
218, 220 : 디지털 대 아날로그 컨버터
302, 304 : 호스트 인터페이스
310, 312 : 비디오 프로세서
314, 316 : 3차원 프로세서
318, 320 : 2차원 프로세서
330, 332 : 메모리 인터페이스
340, 342 : GPU 버스 인터페이스
본 발명은 일반적으로 비디오 처리에 관한 것으로, 보다 상세하게는 다수의 그래픽 처리 장치를 이용한 비디오 처리에 관한 것이다.
통상, 비디오 데이터는 표시되기 전에 처리해야 한다. 비디오 데이터에 적용될 수 있는 다양한 비디오 처리 프로시저들이 있다. 예컨대, 디지털 비디오 디스크(DVD)로부터의 데이터를 순차 주사 방식의 디스플레이(progressive display) 상에서 표시하는 것을 고려해 보기로 하자. DVD 상의 컨텐츠가 비월 주사 방식(interlaced format)으로 부호화되어 있으면, 비디오 데이터를 비-비월 주사 방식(de-interlaced format)으로 처리한 후에, 순차 주사 방식의 디스플레이 상에 표시해야 한다. 또한, DVD는 일반적으로 서브타이틀 정보를 포함한다. 사용자가 서브타이틀 정보를 표시하길 원할 경우, 비디오 데이터로부터 서브타이틀 텍스트를 추출한 후, 비디오 화상으로 구성해야 한다. 비-비월 주사 프로시저 및 서브타이틀 생성 프로시저는 비디오 처리 프로시저의 단지 두 예에 불과한 것으로, 가장자리 강조(edge-enhancement), 화상 스케일링(picture scaling), 색 공간 변환(color space conversion) 등의, 비디오 데이터에 적용될 수 있는 기타 비디오 처리 프로시저들이 다수 존재한다. 게다가, 비디오 처리 프로시저들은 일반적으로 서로에 대해 배타적이지 않다. 예를 들어, 사용자가 DVD로부터의 비디오 데이터를 순차 주사 방식의 디스플레이 상에 표시함과 함께, 서브타이틀을 표시하길 원하면, 비디오 데이터에 대해 비-비월 주사 프로시저 및 서브타이틀 생성 프로시저 모두를 적용시킬 수 있다. 그러나, 각각의 프로시저는 비디오 데이터의 동일한 기본 세트에 대해 실행되므로, 통상적으로 다른 비디오 처리 프로시저는 비디오 데이터에 병렬 방식이 아닌 직렬 방식으로 적용된다.
비디오 이미지들은 일련의 비디오 프레임들로 구성되며, 각각의 프레임은 두 개의 비디오 필드로 구성된다. 비디오 프레임을 표시하는 데 사용되는 전형적인 프레임 레이트는 초당 30프레임(30Hz)이다. 따라서, 한 프레임의 비디오 데이터에 대한 비디오 처리 프로시저들은 비디오 데이터의 한 프레임을 표시하는 데 필요한 시간(약 33 밀리초)보다 적은 시간으로 실행해야 한다. 비디오 데이터의 한 프레임을 처리하는 데 필요한 시간이 비디오 데이터의 한 프레임을 표시하는 데 필요한 시간보다 많이 걸리면, 처리된 비디오 데이터는 표시될 수 없다. 그 대신에, 현재 비디오 데이터 대신 이전 비디오 데이터가 종종 표시된다. 이런 현상을 통상 "드로핑" 비디오 프레임이라 칭하는데, 이는 사람의 눈으로 쉽게 인지할 수 있는, 평탄하지 않은 움직임을 초래하여 비디오 화질을 떨어뜨리는 아주 불만족스러운 결과를 나타낸다.
그래픽 처리 장치(GPU)는 비디오 처리 시스템 내에서 비디오 처리 기능을 제공하도록 구성될 수 있다. 예를 들어, GPU는 3차원(3D) 화소 쉐이더(shader)를 사용하여 비디오 데이터의 가장자리를 강조시키도록 구성될 수 있다. 마찬가지로, GPU는 다른 비디오 처리 프로시저를 실행하도록 구성될 수 있다. 각각의 처리 태스크는 완료하는 데 한정된 시간을 필요로 한다. 상술한 바와 같이, 프레임 레이트는 각각의 프레임을 처리하는 데 이용할 수 있는 시간을 제한시키고 비디오 처리 프로시저들은 일반적으로 직렬 방식으로 실행되기 때문에, 단일 GPU 상에 실행될 수 있는 비디오 처리 프로시저의 개수와 복잡도가 제한된다. 이런 문제를 악화시키는 것은, 고 선명도 비디오 이미지들이 표준 선명도 이미지들보다 최대 6배 많은 화소 처리를 필요로 하기 때문이다. 화소 개수의 증가는 각각의 처리 프로세저를 수행하는 데 필요한 시간을 증가시킴으로써, 단일 GPU가 비디오 프레임 시간 버짓(budget)을 초과하지 않고 비디오 데이터의 프레임에 적용시킬 수 있는 비디오 처리 프로시저의 수를 또한 제한시키게 되어 비디오 프레임이 드롭하게 될 기회가 증가하게 된다.
상기한 바를 감안해 보면, 당 기술 분야에서는 고 선명도 비디오 데이터를 비롯한 비디오 데이터에 대해 프레임 드로핑 발생 빈도를 증가시킴이 없이 보다 많은 처리 프로시저를 수행할 수 있도록 비디오 처리 시스템의 비디오 처리량을 증가시키는 방법이 필요로 된다.
본 발명의 일 실시예는 비디오 데이터의 처리 시스템에 대해 기술한다. 이 시스템은 호스트 프로세서, 제1 프레임 버퍼에 연결된 제1 미디어 처리 장치, 및 제2 프레임 버퍼에 연결된 제2 미디어 처리 장치를 포함한다. 제1 프레임 버퍼는 비디오 데이터를 저장하도록 구성되고, 제1 미디어 처리 장치는 비디오 데이터의 제1 부분을 처리하도록 구성된다. 제2 프레임 버퍼는 비디오 데이터의 복사본을 저장하도록 구성되고, 제2 미디어 처리 장치는 비디오 데이터의 제2 부분을 처리하도록 구성된다. 두 개의 미디어 처리 장치들은 스케일러블 버스(scalable bus)를 통해 서로 연결된다. 스케일러블 버스는 제2 미디어 처리 장치에 의해 처리된 비디오 데이터의 제2 부분을 제1 미디어 처리 장치로 반송하며, 여기서 제2 부분이 제1 미디어 처리 장치에 의해 처리된 비디오 데이터의 제1 부분과 결합되어 처리된 비디오 프레임이 생성된다.
예시된 시스템의 한 가지 장점은 종래 기술의 단일-GPU 비디오 처리 시스템보다 효율적으로 비디오 데이터를 처리할 수 있는 멀티-미디어 처리 환경을 제공한다는 것이다. 결과적으로, 비디오 프레임들은 종래 기술의 시스템에 비해 상당히 적은 시간으로 처리될 수 있고, 예시된 시스템을 사용하여 실행된 비디오 처리 커맨드의 개수 및 복잡도를 종래 기술 시스템에 비해 상당히 증가시킬 수 있다.
본 발명의 상술된 특징들을 보다 상세히 살펴보기 위해, 일부가 첨부된 도면에서 예시된 본 발명의 실시예들을 참조하기로 한다. 그러나, 첨부된 도면은 단지 본 발명의 일례의 실시예에 불과한 것으로, 본 발명의 제한시키려는 의도는 아닌 것에 주목할 필요가 있다.
<실시예>
무엇보다도, 본 발명은 비디오 처리 시스템에서 비디오 데이터의 프레임을 처리하기 위해 두 개 이상의 미디어 처리 장치들을 구현할 수 있다. 복수의 미디어 처리 장치를 사용하여 비디오 프레임을 처리함으로써, 비디오 데이터에 대해 드롭되는 프레임의 발생 빈도를 증가시키지 않고 보다 많은 비디오 처리 프로시저 및/또는 보다 많은 복잡한 프로시저를 적용시킬 수 있어, 비디오 처리량을 증가시킬 수 있다. 반대로, 복수의 미디어 처리 장치를 사용하여 비디오 데이터에 대해 동일 수의 비디오 처리 프로시저를 적용시킬 경우, 드롭되는 프레임의 발생 빈도가 줄어든다.
도 1은 본 발명의 일 실시예에 따른, 다수의 미디어 처리 장치를 사용하여 비디오 데이터의 프레임을 처리할 때 비디오 처리 시스템이 구현하는 기능적 단계들에 대한 개념을 도시한 것이다. 당업자라면, 이들 기능적 단계들을 임의 순서로 수행하도록 구성되는 어떠한 시스템이라도 본 발명의 범위 내에 속한다는 것을 인식할 수 있을 것이다. 특히, 본원에 개시된 비디오 처리 시스템의 실시예들은 시스템 내에서 그래픽 처리 장치를 미디어 처리 장치로서 도시하고 있다. 그러나, 다른 실시예에서는, 임의 유형의 비디오 또는 미디어 가속기를 구현할 수 있다. 예를 들어, 본원에 개시된 비디오 처리 시스템은 임의 특정 그래픽 처리 기능을 갖지 않는 하나 이상의 비디오 처리 엔진을 갖는 장치를 포함하여 구현될 수 있다.
제1 기능 단계는 단계 102로서, 여기서 마스터 GPU는 복호화된 비디오 데이터를 수신한다. 두 개의 GPU를 갖는 멀티-GPU 시스템에서, 제1 GPU는 마스터 GPU를 지칭하고, 제2 GPU는 슬레이브 GPU를 지칭한다. 비디오 데이터는 튜너, 디코더, 저장 장치 등의 소스로부터 수신될 수 있다. 비디오 데이터는 전형적으로 한 번에 하나의 프레임으로 수신되어, 마스터 GPU에 관련된 프레임 버퍼에 저장된다. 알려진 바와 같이, 프레임 버퍼는 GPU 메모리의 일부이다. 비디오 데이터는, 예를 들어, 비디오 데이터를 직접 프레임 버퍼 내로 기록하는 CPU 또는 직접 메모리 액세스(DMA)에 의해 마스터 GPU의 버퍼 메모리 내로 입력될 수 있는 여러 방식이 있다.
단계 106에서, 슬레이브 GPU의 프레임 버퍼는 마스터 GPU의 프레임 버퍼와 동기화되어, 마스터 GPU 및 슬레이브 GPU는 그들의 각 프레임 버퍼 내의 비디오 데이터를 동시에 처리할 수 있다. 단계 107에서, 마스터 GPU 및 슬레이브 GPU의 프 레임 버퍼는 제1 부분과 제2 부분으로 분할된다. 따라서, GPU 각각은 각자 프레임 버퍼의 지정된 부분에만 존재하는 비디오 데이터를 처리하도록 구성되어 동작 효율을 증가시킨다.
예를 들어, 제1 부분은 각 프레임 버퍼의 상위 부분이고 제2 부분은 각 프레임의 하위 부분이라면, 마스터 GPU는 마스터 프레임 버퍼의 제1 부분 내에 존재하는 비디오 데이터만 처리하도록 구성될 수 있고 슬레이브 GPU는 슬레이브 프레임 버퍼의 제2 부분 내에 존재하는 비디오 데이터만 처리하도록 구성될 수 있다. 단계 108에서, GPU들은 역 텔레시네 처리(inverse telecine processing)를 제공한다. 종종, 비디오 데이터는 초당 24 프레임의 프레임 레이트를 갖는 필름으로부터 생긴다. 만일 비디오 데이터가 초당 30 프레임의 프레임 레이트로 표시되어야 한다면, 일반적으로 "3-2 풀다운(three-two pulldown)"이라고 불리는 프로세스가 필름 데이터에 적용되어, 보다 느린 프레임 레이트로부터의 필름 이미지들이 보다 높은 프레임 레이트의 비디오 이미지들로서 표시될 수 있다. 이 프로세스는 원하지 않은 비주얼 아티펙트(visual artifacts)를 추가할 수 있다. 특히, 순차 디스플레이의 경우와 같이, 디스플레이 장치가 3-2 풀다운 처리를 필요로 하지 않을 경우에 그러하다. 그런 경우에, 역 텔레시네 처리 단계는 비디오 데이터를 본래의 필름 프레임 레이트로 되돌린다. 본 명세서에서 더 상세히 설명되는 바와 같이, GPU들이 비디오 데이터를 처리할 때(이 단계에서 또는 다른 단계들에서), 각 GPU는 그것의 프레임 버퍼 내의 데이터 부분만 처리함으로써, 비디오 처리 시스템의 처리 효율을 상당히 증가시킨다.
단계 110에서, GPU들은 비-비월주사 처리(de-interlacing processing)를 제공한다. 비-비월주사는 비월주사된 비디오 데이터를 순차 디스플레이 장치들에서 표시하기에 더 적합한 비디오 데이터로 변환하는 잘 알려진 프로세스이다. 예컨대, 수직 보간법(vertical interpolation)(일반적으로 "BOB"라고 불림) 및 양쪽 필드들을 동시에 표시하는 것(일반적으로 "WEAVE"라고 불림)과 같이, 비-비월주사 기능을 구현하기 위해 이용될 수 있는, 다수의 잘 알려진 방법들이 있다. 숙련된 당업자라면, 다른, 더 진보된, 비-비월주사 방식들도 GPU들에서 구현될 수 있다는 것을 인지할 것이다. 단계 112에서, GPU들은 서브-픽처 처리(sub-picture processing)를 제공한다. 서브-픽처 처리는 전형적으로 서브타이틀들 및 DVD 메뉴들을 비디오 데이터에 삽입하기 위해 이용된다. 서브타이틀 및 DVD 정보가 비디오 데이터로부터 추출된 다음 비디오 데이터의 가시 부분(visible portion)에 합성(composite)된다. 단계 114에서, GPU들은 가장자리 강조 처리를 제공한다. 때때로, 비디오 데이터는 비디오 프레임 내의 객체들(objects)의 가장자리들을 부드럽게 보이게 하는 방식으로 처리되었다. 가장자리 강조 처리는 가장자리들의 시각적 외관을 증대시키기 위해 일반적으로 이용된다. 단계 116에서, GPU들은 화상 스케일링 처리를 제공한다. 이 단계에서, 비디오 데이터는 보다 크거나 보다 작은 해상도로 스케일링될 수 있다. 이 절차는 전형적으로 비디오 디스플레이의 해상도가 비디오 데이터의 소스의 해상도와 다른 경우에 수행된다. 단계 118에서, GPU들은 색 공간 변환 처리를 제공한다. 디스플레이 장치의 색 공간 요건은 비디오 데이터의 색 공간 표현과 다를 수 있다. 예를 들면, 비디오 데이터는 종종 YUV 색 공간에서 표현되지만; 전형적인 디스플레이 장치들은 RGB 색 공간에서 동작한다. 단계 120에서, GPU들은 바람직하지 않은 LCD 디스플레이 특성을 보상하기 위한 LCD 오버드라이브 처리(overdrive processing)를 제공한다.
일단 비디오 데이터가 처리되면, 각 GPU 프레임 버퍼에 존재하는 처리된 데이터는 디스플레이를 위해 결합된다. 단계 122에서, GPU들은 동기화되는데, 그 이유는 GPU들이 서로 다른 시간에 비디오 처리를 완료할 수 있기 때문이다. 본 명세서에서 더 설명되는 바와 같이, 마스터 및 슬레이브 GPU들은 판독 및 기록 세마포어(reading and writing semaphores)의 프로세스를 통하여 동기화된다. 단계 124에서, 소프트웨어 드라이버가 프레임 버퍼들을 교체(swap)한다. 비디오 처리는 종종 더블 버퍼링이라고 불리는 잘 알려진 기법을 이용하여 수행된다. 더블 버퍼링은 2개의 프레임 버퍼를 이용하여 비디오 데이터를 저장 및 처리한다. GPU는 제1 프레임 버퍼를 이용하여 현 프레임의 비디오 데이터를 처리하고, 이전에 처리된 비디오 데이터는 제2 프레임 버퍼로부터 판독되어 디스플레이에 전송된다. 제2 프레임 버퍼의 최종 화소가 디스플레이에 전송된 후에, 2개의 프레임 버퍼들이 "교체"되어, 제1 프레임 버퍼로부터의 처리된 데이터가 판독되어 디스플레이 장치에 전송될 수 있고, 그 동안 GPU는 제2 프레임 버퍼 내의 새로운 프레임의 비디오 데이터를 처리한다. 마지막으로, 단계 126에서, 비디오 데이터가 디스플레이 상에 표시된다.
이들 기능적 단계들의 양태들에 대하여 도 4와 관련하여 아래에서 더 설명된다. 대안 실시예들은 노이즈 필터링, 색 강조(color enhancement) 등과 같은 다른 비디오 처리 단계들을 포함할 수 있다. 또 다른 실시예들은 일부 비디오 처리 단계들을 생략할 수 있다. 예를 들어, 비디오 데이터가 LCD 디스플레이 상에 표시되지 않으면, LCD 오버드라이브 처리 단계 120은 스킵(skip)될 수 있다. 숙련된 당업자라면 또한 단계 124에서 상술한 더블 버퍼링의 개념이 2개의 버퍼 대신에 3개의 버퍼가 이용되는 트리플 버퍼링으로 확장될 수 있다는 것을 이해할 것이다. 트리플 버퍼링은 비디오 복호화가 수행될 경우에 특히 유용하다. 그러한 경우에, 하나의 버퍼는 전형적으로 복호용으로 이용되고, 하나의 버퍼는 후처리용으로 이용되고, 제3 버퍼는 디스플레이용으로 이용되고, 모든 3개의 기능들이 동시에 실행된다.
도 2는 본 발명의 하나 또는 그 이상의 양태들을 구현하도록 구성된 컴퓨팅 장치(200)의 개념도이다. 컴퓨팅 장치(200)는, 중앙 처리 장치(CPU)(202), 시스템 메모리(204), 제1 그래픽 서브시스템(208) 및 제2 그래픽 서브시스템(210)을 포함하는데, 이들에 제한되는 것은 아니다. CPU(202)는 시스템 메모리(204)에 연결되고, 시스템 메모리(204)는, 원하는 비디오 처리 기능을 제공하도록 그래픽 서브시스템들(208 및 210)을 구성할 수 있는 드라이버(206)와 같은 프로그램 및 데이터를 저장하는 데 이용된다.
제1 그래픽 서브시스템(208)은 제1 GPU 메모리(214)에 연결된 제1 GPU(212)를 포함하고, 제1 GPU 메모리(214)는 비디오 데이터와 같은 데이터 및 GPU 명령들을 저장하도록 구성되어 있다. 상술한 바와 같이, 비디오 데이터는 제1 프레임 버퍼(215) 및 제2 프레임 버퍼(216)를 포함하는 더블-버퍼 프레임 버퍼(double- buffered frame buffer)에 저장된다. 단지 설명을 목적으로, 현 비디오 프레임의 부분은 제1 프레임 버퍼(215)에서 처리되고 있고 디스플레이 장치에 현재 전송되고 있는 비디오 프레임의 부분은 제2 프레임 버퍼(216)로부터 판독되고 있다고 가정한다. 제1 GPU(212)는 또한 처리된 비디오를 디스플레이에 전송하는 데 이용되는 디지털 대 아날로그 컨버터(DAC)(218)를 포함한다. 도시된 바와 같이, 제1 GPU(212)는 마스터 GPU로 지정된다. 전형적으로, 마스터 GPU(212)는 처리된 비디오 데이터를 표시한다. 대안 실시예들에서, 비디오 데이터는, 예컨대, TMDS(transition minimized differential signaling) 인터페이스, SDI(serial digital interface) 등과 같이, 제1 GPU(212)에 포함된 다른 디스플레이 인터페이스들을 통하여 전송될 수 있다.
제2 그래픽 서브시스템(210)은 제2 GPU(222) 및 제2 GPU 메모리(224)를 포함한다. 일 실시예에서, 제2 그래픽 서브시스템(210)은 제1 그래픽 서브시스템(208)과 실질적으로 유사하다. 제2 GPU(222)는, 비디오 데이터와 같은 데이터 및 GPU 명령들을 저장하도록 구성되어 있는 제2 GPU 메모리(224)에 연결된다. 여기서도, 비디오 데이터는 제3 프레임 버퍼(225) 및 제4 프레임 버퍼(226)를 포함하는 더블-버퍼 프레임 버퍼에 저장된다. 단지 설명을 목적으로, 현 비디오 프레임의 부분은 제3 프레임 버퍼(225)에서 처리되고 있고 디스플레이 장치에 현재 전송되고 있는 비디오 프레임의 부분은 제4 프레임 버퍼(226)로부터 판독되고 있다고 가정한다. 도시된 바와 같이, 제2 GPU(222)는 슬레이브 GPU로 지정된다. 슬레이브 GPU(222)는 전형적으로 처리된 비디오 데이터를 디스플레이에 전송하는 데 이용되지 않으므 로, 슬레이브 GPU(222) 내의 DAC(220)는 비접속 상태로 남겨질 수 있다.
제1 GPU(212)는 GPU 버스(250)에 의해 제2 GPU(222)에 연결된다. GPU 버스(250)는 처리된 비디오 데이터를 제1 GPU(212)에 전송하기 위해 제2 GPU(222)에 의해 이용되는 스케일러블 버스이다. 예를 들면, 일 실시예에서, GPU 버스(250)는 NVIDIA SLITM 멀티-GPU 기술을 이용하여 구현될 수 있다. 또한, 본 명세서에서 앞서 설명된 바와 같이, 컴퓨팅 장치(200)는 임의의 타입의 비디오 또는 미디어 가속기를 이용하여 구현될 수 있다. 그러므로, 대안 실시예들에서, GPU 버스(250)는 처리된 비디오 데이터를 미디어 처리 장치들 간에 전송하는 임의의 타입의 기술적으로 실행 가능하고 스케일러블 버스일 수 있다.
동작 시에, 드라이버(206)는 "푸시 버퍼(push buffer)"라고 불리는 커맨드들의 스트림을 발생시킨다. 실행될 때, 푸시 버퍼 내의 커맨드들은 제1 GPU(212) 및 제2 GPU(222)의 프레임 버퍼들에 저장된 비디오 데이터의 멀티-GPU 처리를 가능케 한다. 먼저, 비디오 데이터가 제1 프레임 버퍼(215)로부터 제3 프레임 버퍼(225)로 복사된다. 두 번째로, 상술한 바와 같이, 프레임 버퍼들이 제1 및 제2 부분들로 분할되고(비디오 데이터를 제1 및 제2 부분들로 효과적으로 분할한다), 제1 GPU(212)는 비디오 데이터의 제1 부분(즉, 제1 프레임 버퍼(215)의 제1 부분에 존재하는 비디오 데이터)을 처리하도록 구성되고, 제2 GPU(222)는 비디오 데이터의 제2 부분(즉, 제3 프레임 버퍼(225)의 제2 부분에 존재하는 비디오 데이터)만을 처리하도록 구성된다. 세 번째로, 제1 프레임 버퍼(215)의 제1 부분 및 제3 프레임 버퍼(225)의 제2 부분에 존재하는 비디오 데이터가 처리된다. 네 번째로, 비디오 데이터가 처리된 후에, 제1 GPU(212) 및 제2 GPU(222)가 동기화되고, 그 후 제1 프레임 버퍼(215) 및 제3 프레임 버퍼(225)가 각각 제2 프레임 버퍼(216) 및 제4 프레임 버퍼(226)와 교체된다. 다섯 번째로, 처리된 비디오 데이터가 제3 프레임 버퍼(225)의 제2 부분으로부터 제1 GPU(212)로 전송된다. 이 데이터는 제1 프레임 버퍼(215)의 제1 부분으로부터의 처리된 비디오 데이터와 결합되어 처리된 비디오 프레임을 생성하고 이 처리된 비디오 프레임은 그 후 디스플레이를 위해 전송된다. 이들 동작들은 도 4와 관련하여 아래에 더 상세히 설명된다.
대안 실시예들에서, 3개 이상의 그래픽 서브시스템이 컴퓨팅 장치(200)에서 이용될 수 있다. 그러한 구성에서는, 하나의 마스터 GPU와 2개 이상의 슬레이브 GPU가 있다. 슬레이브 GPU들은 GPU 버스(250)를 통하여 마스터 GPU에 연결된다. 슬레이브 GPU에 의해 처리된 비디오 데이터는 GPU 버스(250)를 통하여 마스터 GPU에 전송된다. 마스터 GPU는 결합된 처리된 비디오 데이터를 디스플레이 장치에 전송한다.
도 3은 본 발명의 일 실시예에 따른, 도 2의 컴퓨팅 장치(200)의 보다 상세한 도면이다. 특히, 마스터 GPU(212) 및 슬레이브 GPU(222) 및 GPU 메모리들(214 및 224)에 대하여 본 명세서에서 더 상세히 설명한다. 도시된 바와 같이, 마스터 GPU(212)는, 비디오 프로세서(310), 3차원(3-D) 프로세서(314), 2차원(2-D) 프로세서(318), 호스트 인터페이스(302), 메모리 인터페이스(330) 및 GPU 버스 인터페이스(340)를 포함하는데, 이들에 제한되는 것은 아니다. 호스트 인터페이스(302)는 비디오 프로세서(310), 3-D 프로세서(314) 및 2-D 프로세서(318)에 연결된다. 호스트 인터페이스(302)는 CPU(202)(및 드라이버(206))로부터 푸시 버퍼 커맨드들을 수신하고, 그 푸시 버퍼 커맨드들에 따라서 비디오 데이터를 처리하도록 비디오 프로세서(310), 3-D 프로세서(314) 및 2-D 프로세서(318)를 구성한다. 비디오 프로세서(310), 3-D 프로세서(314) 및 2-D 프로세서(318)는 또한 메모리 인터페이스(330)에 연결된다. 메모리 인터페이스(330)는 비디오 프로세서(310), 3-D 프로세서(314) 및 2-D 프로세서(318)가 GPU 메모리(214)에 저장된 비디오 데이터를 액세스할 수 있게 한다.
유사하게, 슬레이브 GPU(220)는 제한없이, 비디오 프로세서(312), 3-D프로세서(316), 2-D프로세서(320), 호스트 인터페이스(304), 메모리 인터페이스(332), 및 GPU 버스 인터페이스(342)를 포함한다. 다시, 호스트 인터페이스(304)는 비디오 프로세서(312), 3-D프로세서(316), 및 2-D프로세서(320)에 연결된다. 호스트 인터페이스(304)는 CPU(202)(및 드라이버(206))로부터 푸시 버퍼 커맨드를 수신하며, 비디오 프로세서(312), 3-D프로세서(316), 및 2-D프로세서(320)가 푸시 버퍼 커맨드에 따라 비디오 데이터를 처리하도록 구성된다. 비디오 프로세서(312), 3-D프로세서(316), 및 2-D프로세서(320)는 메모리 인터페이스(332)에 더 연결된다. 메모리 인터페이스(332)는 비디오 프로세서(312), 3-D프로세서(316), 및 2-D프로세서(320)가 GPU 메모리(224)에 저장된 비디오 데이터를 액세스하는 것을 가능하게 한다.
비디오 처리 기능이 마스터 GPU(212) 및 슬레이브 GPU(220) 내의 유닛들을 처리함에 의해 제공되는 많은 수의 공지된 방식들이 있다. 예컨대, 비디오 프로세서(310, 312)는 화상 스케일링과 같은 비디오 처리 기능을 제공하도록 구성될 수 있다. 3-D 프로세서(314, 316)는 가장자리 강조와 같은 비디오 처리 기능을 제공하기 위해 포함된 화소 쉐이더를 이용하도록 구성될 수 있다. 2-D 프로세서(318, 320)는 비디오 데이터를 마스터 GPU 메모리(214)로부터 슬레이브 GPU 메모리(224)에 복사하기 위해, 메모리 블리트(blit)와 같은 비디오 처리 기능을 제공하도록 구성될 수 있다. 메모리 블리트는 메모리 블럭의 컨텐츠를 한 위치로부터 또다른 위치로 복사하는 공통 2-D 프로세스이다.
또한, 도시된 바와 같이, GPU 메모리(214)는 제1 프레임 버퍼(215) 및 제2 프레임 버퍼(216)를 포함하며, GPU 메모리(224)는 제3 프레임 버퍼(225) 및 제4 프레임 버퍼(226)를 포함한다. 다시, 단지 설명의 목적상, 마스터 GPU(212, 220)가 제1 및 제3 프레임 버퍼(215, 225)에 존재하는 비디오 데이터를 처리하며, 이전에 처리된 비디오 데이터가 제2 및 제4 프레임 버퍼(216, 226)에 존재한다고 가정한다. 도 1에서 이미 설명한 바와 같이, 복호화된 비디오는 마스터 GPU(212)의 제1 프레임 버퍼(215)로 기록되며, 드라이버(206)는 제1 프레임 버퍼(215)의 컨텐츠를 제3 프레임 버퍼(225)에 복사하도록 마스터 GPU(212)를 구성한다. 드라이버(206)는 마스터 GPU(212) 및 슬레이브 GPU(222)를 동기화하는 커맨드를 제공하여, 제1 프레임 버퍼(215) 및 제3 프레임 버퍼(225) 내의 비디오 데이터가 동시에 처리될 수 있다. 비디오 데이터가 복사되고 GPU가 동기화 된 후, 드라이버(206)는 프레임 버퍼(215, 225) 내의 비디오 데이터를 제1 및 제2 부분으로 분할한다. 마스터 GPU(212) 및 슬레이브 GPU(222) 각각은 각각의 프레임 버퍼에서 비디오 데이터의 일부를 처리한다. 예컨대, 드라이버(206)는 제1 프레임 버퍼(215)의 제1 부분(350)에 존재하는 비디오 데이터를 처리하도록 마스터 GPU(212)를 구성한다. 유사하게, 드라이버(206)는 제3 프레임 버퍼(225)의 제2 부분(354)에 존재하는 비디오 데이터를 처리하도록 슬레이브 GPU(220)를 구성할 수 있다. 현재 비디오 프레임이 처리된 후, 제1 프레임 버퍼(215)는 제2 프레임 버퍼(216)로 교체되며, 제3 프레임 버퍼(225)는 제4 프레임 버퍼(226)로 교체된다. 따라서, 다음 비디오 프레임을 처리할때, 마스터 GPU(212)는 제2 프레임 버퍼(216)의 제1 부분(352)에 존재하는 비디오 데이터를 처리하며, 슬레이브 GPU(222)는 제4 프레임 버퍼(226)의 제2 부분(356)에 존재하는 비디오 데이터를 처리한다. 각 GPU가 비디오 프레임을 구성하는 비디오 데이터의 일부만을 처리하기 때문에, 처리 효율은 증가된다.
마스터 GPU(212) 및 슬레이브 GPU(222)가 비디오 데이터 상에서 비디오 처리 절차를 완료한 후, 그러나 프레임 버퍼가 교체되기 전에, 드라이버(206)는 마스터 GPU(212) 및 슬레이브 GPU(222)를 동기화한다. GPU(212, 222)를 동기화함에 의해, 드라이버(206)는 마스터 GPU(212) 및 슬레이브 GPU(222) 모두가 프레임 버퍼를 교체하기 전에 각각의 비디오 데이터의 처리를 완료하는 것을 보장한다. 시스템이 프레임 버퍼를 교체하고 비디오 데이터를 결합하도록 시도할 때 GPU 중 하나가 비디오 데이터의 일부의 처리를 아직 완료하지 못한 경우, 처리될 비디오 프레임이 드롭되기 때문에, 동기화 단계는 다른 것들 중에서도, 중요하다.
GPU 버스 인터페이스(340, 342)는 2개 이상의 GPU가 GPU 버스(250)를 통해 함께 연결되게 한다. 다시, 후술하는 바와 같이, 대안적인 실시예에서, GPU 버스(250)는 미디어 처리 장치의 어떠한 타입이 컴퓨팅 장치(200)에서 구현될지라도 이들 장치들 사이에서 처리된 비디오 데이터를 전송하는데 사용되는 임의의 기술적으로 실현가능한 스켈러블 버스일 수 있다. 따라서, GPU 버스 인터페이스(340, 342)의 대안적인 실시예는 미디어 처리 장치들 간에 처리된 비디오 데이터를 전송하는데 사용되는 스켈러블 버스에 대한 임의의 기술적으로 실현가능한 인터페이스일 수 있다. 슬레이브 GPU(222)의 GPU 버스 인터페이스(342)는 메모리 인터페이스(332) 및 DAC(220)에 연결된다. 마스터 GPU(212)의 GPU 버스 인터페이스(340)는 메모리 인터페이스(332) 및 DAC(218)에 또한 연결된다. 드라이버(206)는 처리된 비디오 데이터를 제3 및 제4 프레임 버퍼(225, 226)의 관련 부분(예컨대, 제2 부분(354) 및 제2 부분(356))으로부터 마스터 GPU(212)로 전송하도록 슬레이브 GPU(220)의 GPU 버스 인터페이스(342)를 구성한다. 이와 같이, 드라이버(206)는 마스터 GPU(212)의 GPU 버스 인터페이스(340)가 처리된 비디오 데이터를 슬레이브 GPU(220)로부터 수신하며 그 처리된 비디오 데이터를 DAC(218)에 전송하도록 구성한다.
마스터 GPU(212)의 DAC(218)는 메모리 인터페이스(330)뿐만 아니라, 처리된 비디오 프레임이 표시될 때까지 저장되는 디스플레이 장치(도시 안됨) 또는 메모리 소자(도시 안됨)에 연결된다. 슬레이브 GPU의 DAC(220)는 유사하게 메모리 인터페이스(332)에 연결되나, 전형적으로 슬레이브 GPU(222)의 DAC(220)는 임의의 디스플레이 또는 관련 메모리 소자에 연결되지 않는다. 마스터 GPU(212)의 DAC(218)는 제1 및 제2 프레임 버퍼(215, 216)의 관련 부분(예컨대, 제1 부분(350) 및 제1 부분(352)) 내의 처리된 비디오 데이터를, 처리된 비디오 프레임을 생성하기 위하여 슬레이브 GPU(222)로부터 GPU 버스 인터페이스(340)에 의해 수신된 처리된 비디오 데이터와 각각 결합하도록 구성된다. DAC(218)는 처리된 비디오 프레임을 디스플레이 장치 또는 관련된 메모리 소자에 전송하도록 구성된다.
도 4는 본 발명의 일 실시예에 따라 비디오 데이터의 프레임을 처리할 때, 도 2 및 3의 컴퓨팅 장치에 의해 구현된 방법의 단계들의 순서도이다. 본 기술분야의 당업자는 이런 방법의 단계를 수행하도록 구성되는 소정의 시스템이 본 발명의 범위 내에 있음을 인식할 것이다. 더욱이, 개시된 방법은 비디오 데이터의 각 프레임이 처리되도록 반복된다.
방법은, 마스터 GPU(212)가 마스터 GPU(212)의 제1 프레임 버퍼(215)로부터 슬레이브 GPU(222)의 제3 프레임 버퍼로 비디오 데이터를 복사하도록 드라이버(206)가 구성하는, 단계 402에서 시작한다. 단지 설명의 목적상, 마스터 GPU(212) 및 슬레이브 GPU(222)가 제1 및 제3 프레임 버퍼(215, 225)에서 각각 현재 비디오 프레임을 처리하며, 이전 처리된 비디오 프레임이 디스플레이를 위해 제2 및 제4 프레임 버퍼(216, 226)로부터 전송되고 있다고 가정한다. 마스터 GPU(212) 및 슬레이브 GPU(222)는 푸시 버퍼내의 일련의 세마포어 커맨드에 의해 동기화된다. 세마포어 커맨드는 슬레이브 GPU(222)가 연속적인 푸시 버퍼 커맨드를 실행하는 것을 방지하며, 마스터 GPU(212)는 제1 프레임 버퍼(215)로부터 제3 프레임 버퍼(225)로 비디오 데이터를 복사한다. 효율적으로, 슬레이브 GPU(222)는 비디오 데이터의 복사를 완료하기 위해 마스터 GPU(212)에게 "대기"를 강제한다. 비디오 데이터가 복사될 때, 마스터 GPU(212) 및 슬레이브 GPU(222) 모두는 푸시 버퍼에서 커맨드의 실행을 재개할 수 있어, 동기화된다. 이런 복사 및 동기화 단계는 도 5a와 결합해서 이하 보다 상세히 설명된다.
단계 403에서, 드라이버(206)는 마스터 GPU(212) 및 슬레이브 GPU(222)가 제1 프레임 버퍼(215) 및 제3 프레임 버퍼(225)에 존재하는 비디오 데이터를 제1 및 제2 부분으로 분할하도록 구성한다. 마스터 GPU(212) 및 슬레이브 GPU(222)는 그 후 비디오 데이터의 다른 부분을 처리하도록 구성된다. 예컨대, 마스터 GPU(212)는 제1 프레임 버퍼(215)의 제1 부분(350)에 존재하는 비디오 데이터를 처리하도록 구성될 수 있으며, 슬레이브 GPU(222)는 제3 프레임 버퍼(225)의 제2 부분(354)에 존재하는 비디오 데이터를 처리하도록 구성될 수 있다. 그 결과, 마스터 GPU(212) 및 슬레이브 GPU(222)는 현재 비디오 프레임의 처리를 공유하여, 컴퓨팅 장치(200)의 처리 효율을 증가시킨다. 비디오 데이터를 다른 부분들로 분할하는 단계는 도 5b와 결합해서 이하 후술된다.
단계 404에서, 드라이버(206)는 비디오 프로세서(310, 312)를 구성한다. 이런 구성은 예컨대, 비디오 프로세서(310, 312)가 비디오 데이터를 스케일링하도록 구성할 수 있다. 단계 406에서, 드라이버(206)는 3-D 프로세서(314, 316)를 구성할 수 있다. 이런 구성은 예컨대, 3-D 프로세서(314, 316)가 비-비월주사 기능, 가장자리 강조 또는 다른 비디오 처리 기능을 제공하도록 구성한다. 단계 408에서, 드라이버(206)는 2-D 프로세서(318, 320)를 구성할 수 있다. 이런 구성은 예 컨대, 2-D 프로세서(318, 320)가 서브타이틀 정보를 삽입하거나 또는 메뉴 화면을 DVD 어플리케이션에 전형적으로 제공할 수 있다. 다른 실시예에서, 마스터 GPU(212) 및 슬레이브 GPU(222)는 단계 404, 단계 406 및 단계 408에서 설명된 비디오 처리 보다 많거나 작은 양의 비디오 처리 또는 다른 타입의 비디오 처리를 제공하도록 구성될 수 있다.
단계 410에서, 드라이버(206)는 마스터 GPU(212) 및 슬레이브 GPU(222)를 동기화한다. 각각의 GPU가 다른 레이트로 비디오 데이터를 처리하기 때문에, 이런 단계는, 양 GPU가 프레임 버퍼가 교체되고 처리된 비디오 데이터가 처리된 비디오 프레임을 생성하도록 결합되기 전에, GPU들이 프레임 버퍼(215, 225)에서 비디오 데이터의 처리를 완료하도록 보장한다. 다시, 도 5c와 결합되어 후술되는 바와 같이, 푸시 버퍼에서 일련의 세마포어 커맨드는 마스터 GPU(212) 및 슬레이브 GPU(222)를 동기화하는데 사용된다.
단계 412에서, 드라이버(206)는 프레임 버퍼를 교체한다. 단계 402에서 개시된 예를 계속 참조하면, 제2 프레임 버퍼(216)의 제1 부분(352) 및 제4 프레임 버퍼(226)의 제2 부분(356) 각각으로부터의 최종 화소가 표시된 후, 드라이버(206)는 제1 프레임 버퍼(215) 및 제2 프레임 버퍼(216)와, 제3 프레임 버퍼(225) 및 제4 프레임 버퍼(226)를 교체하여, 제1 프레임 버퍼(215)의 제1 부분(350) 및 제3 프레임 버퍼(225)의 제2 부분(354) 내의 처리된 비디오 데이터가 디스플레이를 위해 DAC(218)에 전송될 수 있다. 처리될 비디오 데이터의 다음 프레임은 제2 프레임 버퍼(216) 및 제4 프레임 버퍼(226)에 그 후 저장된다.
단계 414에서, 처리된 비디오 데이터는 처리된 비디오 프레임에 결합되며, DAC(218)에 의해 디스플레이 장치(또는 관련된 메모리 소자)에 전송된다. 다시, 계속해서, 제1 프레임 버퍼(215)의 제1 부분(350) 및 제3 프레임 버퍼(225)의 제2 부분(354)으로부터의 처리된 비디오 데이터는 DAC(218)에 의해 결합되어 처리된 비디오 프레임을 생성한다.
도 5a는 본 발명의 일 실시예에 따라, 도 4의 단계 S402를 구현하는데 이용되는 커맨드들(502)의 시퀀스를 도시하는 개념도이다. 도시된 바와 같이, 커맨드들(502)은 드라이버(206)에 의해 조립되어 있는 푸시 버퍼의 일부를 형성하여 비디오 데이터를 처리하도록 마스터 GPU(212)와 슬레이브 GPU(222)를 구성한다. 구체적으로, 커맨드들(502)은 제1 프레임 버퍼(215)에 존재하는 비디오 데이터를 제3 프레임 버퍼(225)로 복사하게 하고, 또한 마스터 GPU(212)와 슬레이브 GPU(222)를 동기화하여 마스터 GPU(212)와 슬레이브 GPU(222)가 제1 프레임 버퍼(215) 와 제3 프레임 버퍼(225)에 존재하는 비디오 데이터의 부분들을 동시에 처리하도록 한다.
SSDM(set sub-device mask) 커맨드(504)는 서브-장치 마스크를 01로 설정하여, 마스터 GPU(212)만이 푸시 버퍼의 후속 커맨드들을 실행하게 한다. SSDM 커맨드에 대한 인자(argument)는 어느 GPU가 푸시 버퍼의 후속 커맨드들을 실행하도록 구성되어 있는지를 결정한다. 일 실시예에서, 인자는 2비트 비트 필드이며, 비트 필드 내의 각 비트는 2개의 GPU들 중 하나에 대응한다. 예를 들어, 제1 비트가 마스터 GPU(212)에 대응하고 제2 비트가 슬레이브 GPU(222)에 대응하면, SSDM 01 커맨드는 푸시 버퍼 커맨드들 내의 후속 커맨드를 실행하도록 마스터 GPU(212)를 구 성하는 한편, 슬레이브 GPU(222)는 후속 커맨드들을 무시한다. SSDM 11 커맨드는 푸시 버퍼 내의 후속 커맨드들을 실행하도록 마스터 GPU(212) 및 슬레이브 GPU(222) 모두를 구성한다. 다음 커맨드는 복사 커맨드(506)이며, 이것은 마스터 GPU(212)가 제1 프레임 버퍼(215)의 컨텐츠를 제3 프레임 버퍼(225)로 복사하게 한다. 이 커맨드의 실행은 마스터 GPU(212) 및 슬레이브 GPU(222)에 동일한 비디오 데이터에 대한 액세스를 제공한다.
세마포어 배포 커맨드(release semaphore command)(508)는 마스터 GPU(212)가 세마포어를 배포하게 한다. 드라이버는 세마포어를 사용하여 마스터 GPU(212)와 슬레이브 GPU(222)를 동기화시켜 GPU들이 제1 프레임 버퍼(215)와 제3 프레임 버퍼(225) 내의 비디오 데이터의 부분들을 동시에 처리할 수 있게 한다. 세마포어는 시스템 메모리 내의 특정 어드레스로의 포인터이다. 세마포어를 배포시키거나 획득할 수 있다. GPU가 세마포어 배포 커맨드를 실행할 때, GPU는 세마포어와 연관된 메모리 위치에 특정 값을 기록한다. GPU가 세마포어 획득 커맨드(acquire semaphore command)를 실행할 때, GPU는 그 세마포어와 연관된 메모리 위치를 판독하고 해당 메모리 위치의 값과 세마포어 획득 커맨드에 반영된 값을 비교한다. 매칭하지 않는 2개의 값들은 세마포어 획득 커맨드와 연관된 세마포어가 아직 배포되지 않았음을 나타낸다. 매치가 없으면, 세마포어 획득 커맨드를 실행하는 GPU는 매치가 발견될 때까지 세마포어와 연관된 메모리 위치를 계속해서 판독한다. 따라서, 세마포어 획득 커맨드를 실행하는 GPU는 매치가 발견될 때까지 어떠한 추가 푸시 버퍼 커맨드들도 실행하지 않는다. 예를 들면, 제1 GPU가 값 42를 갖는 세마포 어를 배포하는 것에 관한 것이고, 제2 GPU가 값 42를 갖는 세마포어를 획득하는 것에 관한 것이라고 가정하다. 제2 GPU는 해당 메모리 위치가 값 42를 가질 때까지 세마포어와 연관된 시스템 메모리 위치를 계속해서 판독할 것이다. 중요하게는, 제2 GPU는 메모리 위치가 값 42를 가질 때까지 다음 푸시 버퍼 커맨드를 실행하지 않을 것이며, 메모리는 제1 GPU가 값 42를 갖는 세마포어를 배포할 때만 값 42를 가질 것이다.
SSDM 커맨드(510)는 서브-장치 마스크를 10으로 설정하여, 슬레이브 GPU(222) 만이 푸시 버퍼 내의 후속 커맨드들을 실행하게 한다. 세마포어 획득 커맨드(512)는 슬레이브 GPU(222)가 세마포어 배포 커맨드(508)에 응답하여 마스터 GPU(212)에 의해 배포된 세마포어를 획득하게 한다. 전술한 바와 같이, 마스터 GPU(212)가 세마포어를 배포할 때까지 슬레이브 GPU(222)는 어떠한 추가의 푸시 버퍼 커맨드들도 실행하지 않을 것이고, 마스터 GPU(212)는 복사 커맨드(506)가 완전히 실행될 때까지 세마포어를 배포하지 않기 때문에, 임의의 추가의 푸시 버퍼 커맨드들을 실행하기 전에 제1 프레임 버퍼(215)로부터 제3 프레임 버퍼(225)로 비디오 데이터를 복사하기 위해 마스터 GPU(212)를 "대기"하라고 슬레이브 GPU가 강요된다. 따라서, 마스터 GPU(212)와 슬레이브 GPU(222)는 일단 세마포어가 마스터 GPU(212)에 의해 배포되고 슬레이브 GPU(222)에 의해 획득되면 "동기화"된다. SSDM 커맨드(514)는 서브-장치 마스크를 11로 설정하여, 양쪽 GPU들이 푸시 버퍼 내의 다음 커맨드를 실행하게 한다.
도 5b는 본 발명의 일 실시예에 따른, 도 4의 단계 403을 구현하기 위해 이 용되는 커맨드들(530)의 시퀀스를 도시하는 개념도이다. 도시된 바와 같이, 커맨드들(530)은 드라이버(206)에 의해 조립되어 있는 푸시 버퍼의 일부를 형성하여 비디오 데이터를 처리하도록 마스터 GPU(212)와 슬레이브 GPU(222)를 구성한다. 구체적으로, 커맨드들(530)은 비디오 데이터를 제1 부분 및 제2 부분으로 분할한다. 마스터 GPU(212)는 비디오 데이터의 제1 부분을 처리하고, 슬레이브 GPU(222)는 비디오 데이터의 제2 부분을 처리한다. 따라서, 마스터 GPU(212)와 슬레이브 GPU(222)는 비디오 데이터를 동시에 처리할 수 있어, 종래 시스템에 비교하여 처리 효율성을 개선할 수 있게 하는 결과를 갖는다.
SSDM 커맨드(538)는 서브-장치 마스크를 01로 설정하여, 오직 마스터 GPU(212) 만이 푸시 버퍼 내의 후속 커맨드들을 실행하게 한다. 클립 사각형 설정 커맨드(set clip rectangle command)(540)는 마스터 GPU(212)에 대한 클립 사각형을 설정한다. 드라이버(206)는 클립 사각형 설정 커맨드들을 이용하여 각각의 GPU가 처리하는 비디오 데이터의 부분을 정의한다. 일 실시예에 있어서, 클립 사각형 설정 커맨드는 특정 GPU가 해당 GPU에 연결된 프레임 버퍼의 4개 코너들을 특정함으로써 처리하는 비디오 데이터 부분의 경계들을 정의한다. 그 다음에 GPU는 프레임 버퍼의 이들 4개 코너들 내에 존재하는 비디오 데이터를 처리하도록 구성된다. 예를 들면, 드라이버(206)가 프레임 버퍼를 대략 반으로 분할하면, 프레임 버퍼의 상부 부분은 코너 화소 좌표 (0,0), (w,0), (h/2,0) 및 (h/2,w)를 갖는 클립 사각형 설정 커맨드에 의해 특정되며, 여기서 h는 프레임 버퍼의 높이이고 w는 프레임 버퍼의 폭이다. 프레임 버퍼의 하부 부분은 코너 화소 좌표 (h/2,0), (h/2,w), (h,0) 및 (h,w)를 갖는 클립 사각형 설정 커맨드에 의해 특정된다. 따라서, 클립 사각형 커맨드(540)는 프레임 버퍼(215)의 4개 코너들을 특정한다. 이들 4개 코너들 내의 비디오 데이터는 마스터 GPU(212)에 의해 처리되는 비디오 데이터의 부분을 구성한다.
큰 클립 사각형은 작은 클립 사각형보다 비교적 더 많은 비디오 데이터를 포함하기 때문에, 드라이버(206)는 특정 클립 사각형들 내의 비디오 데이터의 양을 조절함으로써 각 GPU에 의해 수행되는 처리량을 조절할 수 있다. 다른 실시예로서, 소정의 GPU가 처리하는 비디오 데이터의 부분을 라인 번호 또는 임의의 다른 기술적으로 실행가능한 수단에 의해, 프레임 내의 화소 위치에 의해 특정할 수 있다.
SSDM 커맨드(542)는 서브-장치 마스크를 10으로 설정하여, 슬레이브 GPU(222)만이 푸시 버퍼 내의 후속 커맨드들을 실행하게 한다. 클립 사각형 설정 커맨드(544)는 프레임 버퍼(225)의 4개 코너들을 특정함으로써 슬레이브 GPU(222)에 대한 클립 사각형을 설정한다. 이들 4개 코너들 내의 비디오 데이터는 슬레이브 GPU(222)에 의해 처리되는 비디오 데이터의 부분을 구성한다. SSDM 커맨드(546)는 서브-장치 마스크를 11로 설정하여, 마스터 GPU(212)와 슬레이브 GPU(222) 모두가 푸시 버퍼 내의 후속 커맨드들을 실행하게 한다. 본 명세서에 전술한 바와 같이, 푸시 버퍼 내의 다음 커맨드가 비디오 처리 커맨드이면, 마스터 GPU(212)는 클립 사각형 설정 커맨드(540)에 특정된 클립 사각형 내의 제1 프레임 버퍼(215)의 비디오 데이터 부분에 해당 커맨드를 실행한다. 마찬가지로, 슬레이 브 GPU는 클립 사각형 설정 커맨드(544)에 특정된 클립 사각형 내의 제3 프레임 버퍼(225)의 비디오 데이터 부분에 해당 커맨드를 실행한다.
도 5c는 본 발명의 일 실시예에 따른, 도 4의 단계 410을 구현하기 위해 이용되는 커맨드들(560)의 시퀀스를 도시하는 개념도이다. 도시된 바와 같이, 커맨드들(560)은 드라이버(206)에 의해 조립되어 있는 푸시 버퍼의 일부를 형성하여 비디오 데이터를 처리하도록 마스터 GPU(212)와 슬레이브 GPU(222)를 구성한다. 구체적으로, 커맨드들(560)은 제1 프레임 버퍼(215)와 제3 프레임 버퍼(225) 내의 비디오 데이터가 처리된 후에 마스터 GPU(212)와 슬레이브 GPU(222)를 동기화한다. 도 5b에서 전술한 바와 같이, 멀티 GPU 시스템에서, 마스터 GPU(212)와 슬레이브 GPU(222)는 비디오 데이터의 상이한 부분들을 처리한다. 그 결과, 마스터 GPU(212)와 슬레이브 GPU(222)는 비디오 데이터의 그들의 각각의 부분을 처리하는 것을 약간 상이한 시간에 종료할 수 있다. 마스터 GPU(212)와 슬레이브 GPU(222)를 동기화하는 것에 의해, 슬레이브 GPU(222)에 의해 처리된 비디오 데이터를 마스터 GPU(212)로 전송하고 마스터 GPU(212)에 의해 처리된 비디오 데이터와 결합하여 처리된 비디오 프레임을 생성하기 전에, 각 GPU가 제1 프레임 버퍼(215)와 제3 프레임 버퍼(225) 내의 비디오 데이터를 각각 처리하는 것을 완료한다는 것이 보장된다. 이 동기화 단계는, 시스템이 비디오 데이터를 결합하려고 시도할 때, GPU들 중의 하나가 비디오 데이터의 일부를 처리하는 것을 완료하지 않으면, 해당 비디오 프레임을 드롭할 수도 있기 때문에, 다른 어느 것들보다도 중요하다.
SSDM 커맨드(564)는 서브-장치 마스크를 01로 설정하여, 마스터 GPU(212) 만 이 푸시 버퍼 내의 후속 커맨드들에 응답하게 한다. 세마포어 획득 커맨드(566)는 마스터 GPU(212)가 세마포어를 획득하게 한다. SSDM 커맨드(568)는 서브-장치 마스크를 10으로 설정하여, 오직 슬레이브 GPU(222) 만이 푸시 버퍼 내의 후속 커맨드들을 실행하게 한다. 세마포어 배포 커맨드(570)는 슬레이브 GPU(222)가 세마포어 획득 커맨드(566)에 특정된 세마포어를 배포하게 한다. 본 명세서에서 전술한 바와 같이, 슬레이브 GPU(222)가 세마포어를 배포할 때까지 마스터 GPU(212)는 어떠한 추가의 푸시 버퍼 커맨드들도 실행하지 않을 것이기 때문에, 일단 슬레이브 GPU(222)가 세마포어를 배포하고 마스터 GPU(212)가 세마포어를 획득하면, 이 때 양쪽 GPU가 푸시 버퍼 내의 다음 커맨드를 실행할 수 있기 때문에 GPU들은 동기화된다. SSDM 커맨드(572)는 서브-장치 마스크를 11로 설정하여, 양쪽 GPU들이 푸시 버퍼 내의 후속 커맨드를 실행하게 한다.
본 기술분야의 당업자라면 상기 커맨드들을 이용하여 마스터 GPU(212)와 슬레이브 GPU(222)가 이들 GPU들 중 하나만이 비디오 데이터의 각각의 부분에 대해 임의의 커맨드 처리를 실행할 수 있도록 구성됨을 인식할 것이다. 예를 들어, 비디오 프레임의 하단부에 서브타이틀이 추가될 필요가 있으면, SSDM 커맨드를 이용하여 하나의 GPU를 인에이블시키고 다른 것을 디스에이블 시킬 수 있다. 인에이블된 GPU는 비디오 데이터의 하단부를 처리하는 기능이 있는 GPU이다. 그 다음에 해당 GPU는 소망하는 서브타이틀을 추가하는데 필요한 처리 커맨드들을 실행한다. 다른 GPU는 디스에이블되어 있기 때문에, 서브타이틀이 추가되는 동안 비디오 데이터의 상단부에서는 처리가 수행되지 않는다.
개시된 시스템들 및 방법들의 한가지 이점은 이들이 종래의 단일 GPU 시스템보다도 더욱 효율적으로 비디오 데이터를 처리하는 멀티 GPU 비디오 처리 시스템을 제공한다는 것이다. 그 결과, 비디오 프레임들은 종래 기술의 시스템들에 비해 실질적으로 적은 시간에 처리될 수 있으며, 개시된 시스템을 이용하여 실행되는 비디오 처리 커맨드들의 수 및 복잡도는 종래 기술의 시스템들에 비해 실질적으로 증가될 수 있다.
전술한 내용들은 본 발명의 실시예에 대한 것이지만, 본 발명의 기본적 사상으로부터 벗어나지 않고 본 발명의 그 외의 다른 실시예들을 안출할수 있으며, 그 범위는 첨부되는 특허청구범위에 의해 결정된다.
본 발명에 따르면, 고 선명도 비디오 데이터를 비롯한 비디오 데이터에 대해 프레임 드로핑 발생 빈도를 증가시킴이 없이 보다 많은 처리 프로시저를 수행할 수 있도록 비디오 처리 시스템의 비디오 처리량을 증가시키는 방법이 제공된다.

Claims (22)

  1. 비디오 데이터 처리 시스템으로서,
    호스트 프로세서;
    비디오 데이터를 저장하도록 구성된 제1 프레임 버퍼에 연결되고, 상기 비디오 데이터의 제1 부분을 처리하도록 구성된 제1 미디어 처리 장치; 및
    상기 비디오 데이터의 복사본을 저장하도록 구성된 제2 프레임 버퍼에 연결되고, 상기 비디오 데이터의 제2 부분을 처리하도록 구성된 제2 미디어 처리 장치
    를 포함하고,
    상기 제1 미디어 처리 장치는 스케일러블(scalable) 버스를 통해 상기 제2 미디어 처리 장치에 연결되는 비디오 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 제1 미디어 처리 장치는 마스터 미디어 처리 장치이고 상기 제2 미디어 처리 장치는 슬레이브 미디어 처리 장치인 비디오 데이터 처리 시스템.
  3. 제2항에 있어서,
    드라이버는 상기 비디오 데이터를 처리하기 위한 복수의 커맨드를 포함하는 푸시(push) 버퍼를 생성하는 비디오 데이터 처리 시스템.
  4. 제3항에 있어서,
    상기 복수의 커맨드는 상기 제1 프레임 버퍼 내에 저장된 상기 비디오 데이터를 상기 제2 프레임 버퍼에 복사하기 위한 커맨드들을 포함하는 비디오 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 복수의 커맨드는, 상기 제1 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제1 SSDM(set sub-device mask) 커맨드, 상기 제1 미디어 처리 장치가 상기 제1 프레임 버퍼 내에 저장된 상기 비디오 데이터를 상기 제2 프레임 버퍼에 복사하게 하는 복사 커맨드, 상기 제1 미디어 처리 장치가 세마포어를 배포하게 하는 세마포어 배포 커맨드(release semaphore command), 상기 제2 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제2 SSDM 커맨드, 상기 제2 미디어 처리 장치가 상기 제1 미디어 처리 장치에 의해 배포된 상기 세마포어를 획득하게 하는 세마포어 획득 커맨드, 및 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치 모두가 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제3 SSDM 커맨드를 포함하는 비디오 데이터 처리 시스템.
  6. 제5항에 있어서,
    상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치는 상기 제2 미디어 처리 장치가 상기 제1 미디어 처리 장치에 의해 배포된 상기 세마포어를 획득한 후에 동기화되는 비디오 데이터 처리 시스템
  7. 제3항에 있어서,
    상기 복수의 커맨드는 상기 비디오 데이터의 상기 제1 부분 및 상기 비디오 데이터의 상기 제2 부분을 정의하기 위한 커맨드들을 포함하는 비디오 데이터 처리 시스템.
  8. 제7항에 있어서,
    상기 복수의 커맨드는, 상기 제1 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제1 SSDM 커맨드, 상기 비디오 데이터의 상기 제1 부분을 정의하는 제1 클립 사각형 설정 커맨드(set clip rectangle command), 상기 제2 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제2 SSDM 커맨드, 상기 비디오 데이터의 상기 제2 부분을 정의하는 제2 클립 사각형 설정 커맨드, 및 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치 모두가 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치 를 구성하는 제3 SSDM 커맨드를 포함하는 비디오 데이터 처리 시스템.
  9. 제8항에 있어서,
    상기 복수의 커맨드는 상기 제1 미디어 처리 장치가 상기 비디오 데이터의 상기 제1 부분에 대해 실행하고 상기 제2 미디어 처리 장치가 상기 비디오 데이터의 상기 제2 부분에 대해 실행하는 적어도 하나의 비디오 처리 커맨드를 포함하는 비디오 데이터 처리 시스템.
  10. 제3항에 있어서,
    상기 복수의 커맨드는, 상기 비디오 데이터가 처리되면, 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 동기화하는 커맨드들을 포함하는 비디오 데이터 처리 시스템.
  11. 제10항에 있어서,
    상기 복수의 커맨드는, 상기 제1 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제1 SSDM 커맨드, 상기 제1 미디어 처리 장치가 상기 제2 미디어 처리 장치에 의해 배포된 세마포어를 획득하게 하는 세마포어 획득 커맨드, 상기 제2 미디어 처리 장치만이 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제2 SSDM 커맨드, 상기 제2 미디어 처리 장치가 상기 세마포어를 배포하게 하는 세마포어 배포 커맨드, 및 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치 모두가 상기 푸시 버퍼 내의 후속 커맨드들을 실행하도록 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치를 구성하는 제3 SSDM 커맨드를 포함하는 비디오 데이터 처리 시스템.
  12. 제11항에 있어서,
    상기 제1 미디어 처리 장치가 상기 제2 미디어 처리 장치에 의해 배포된 상기 세마포어를 획득한 후에 상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치가 동기화되는 비디오 데이터 처리 시스템.
  13. 제1항에 있어서,
    상기 제2 미디어 처리 장치에 의해 처리된 상기 비디오 데이터의 상기 제2 부분은 상기 스케일러블 버스를 통해 상기 제1 미디어 처리 장치에 전송되고, 상기 제1 미디어 처리 장치에 의해 처리된 상기 비디오 데이터의 상기 제1 부분과 결합되어 처리된 비디오 프레임을 생성하는 비디오 데이터 처리 시스템.
  14. 제13항에 있어서,
    상기 비디오 데이터의 상기 제2 부분이 상기 스케일러블 버스를 통해 상기 제1 미디어 처리 장치에 전송되기 전에, 상기 제1 프레임 버퍼 및 상기 제2 프레임 버퍼의 각각이 또다른 프레임 버퍼로 교체되는 비디오 데이터 처리 시스템.
  15. 제1항에 있어서,
    상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치 각각은 그래픽 처리 장치인 비디오 데이터 처리 시스템.
  16. 다수의 미디어 처리 장치를 이용하여 비디오 데이터를 처리하는 방법으로서,
    마스터 미디어 처리 장치에 연결되는 제1 프레임 버퍼에 저장된 비디오 데이터를, 슬레이브 미디어 처리 장치에 연결되는 제2 프레임 버퍼에 복사하는 단계;
    상기 비디오 데이터의 제1 부분 및 제2 부분을 정의하는 단계;
    상기 제1 프레임 버퍼에 저장된 상기 비디오 데이터의 상기 제1 부분에 적어도 하나의 비디오 처리 커맨드를 실행하는 단계;
    상기 제2 프레임 버퍼에 저장된 상기 비디오 데이터의 상기 제2 부분에 상기 적어도 하나의 비디오 처리 커맨드를 실행하는 단계; 및
    상기 제1 프레임 버퍼에서 처리된 상기 비디오 데이터의 상기 제1 부분을 스케일러블 버스를 통해 상기 마스터 미디어 처리 장치에 전송하는 단계
    를 포함하는 비디오 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 비디오 데이터의 상기 제1 부분을 전송하기 전에 상기 마스터 미디어 처리 장치와 상기 슬레이브 미디어 처리 장치를 동기화하는 단계를 더 포함하는 비디오 데이터 처리 방법.
  18. 제17항에 있어서,
    상기 동기화하는 단계는, 상기 마스터 미디어 처리 장치만이 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제1 SSDM을 실행하는 단계, 상기 마스터 미디어 처리 장치가 상기 슬레이브 미디어 처리 장치에 의해 배포된 세마포어(semaphore)를 획득하게 하는 세마포어 획득 커맨드를 실행하는 단계, 상기 슬레이브 미디어 처리 장치만이 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제2 SSDM 커맨드를 실행하는 단계, 상기 슬레이브 미디어 처리 장치가 상기 세마포어를 배포하게 하는 세마포어 배포 커맨드를 실행하는 단계, 및 상기 마스터 미디어 처리 장치와 상기 슬레이브 미디어 처리 장치 모두가 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제3 SSDM 커맨드를 실행하는 단계를 포함하는 비디오 데이터 처리 방법.
  19. 제16항에 있어서,
    상기 비디오 데이터의 상기 제1 부분을 전송하기 전에, 상기 제1 프레임 버퍼와 상기 제2 프레임 버퍼 각각을 또다른 프레임 버퍼로 교체하는 단계를 더 포함 하는 비디오 데이터 처리 방법.
  20. 제16항에 있어서,
    상기 복사하는 단계는, 상기 마스터 미디어 처리 장치만이 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제1 SSDM 커맨드를 실행하는 단계, 상기 마스터 미디어 처리 장치로 하여금, 상기 제1 프레임 버퍼에 저장된 상기 비디오 데이터를 상기 제2 프레임 버퍼에 복사하게 하는 복사 커맨드를 실행하는 단계, 상기 마스터 미디어 처리 장치가 세마포어를 배포하게 하는 세마포어 배포 커맨드를 실행하는 단계, 상기 슬레이브 미디어 처리 장치만이 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제2 SSDM 커맨드를 실행하는 단계, 상기 슬레이브 미디어 처리 장치가 상기 마스터 미디어 처리 장치에 의해 배포된 상기 세마포어를 획득하게 하는 세마포어 획득 커맨드를 실행하는 단계, 및 상기 마스터 미디어 처리 장치와 상기 슬레이브 미디어 처리 장치 모두가 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제3 SSDM 커맨드를 실행하는 단계를 포함하는 비디오 데이터 처리 방법.
  21. 제16항에 있어서,
    제1 부분 및 제2 부분을 정의하는 상기 단계는, 상기 마스터 미디어 처리 장 치만이 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제1 SSDM 커맨드를 실행하는 단계, 상기 비디오 데이터의 상기 제1 부분을 정의하는 제1 클립 사각형 설정 커맨드를 실행하는 단계, 상기 슬레이브 미디어 처리 장치만이 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제2 SSDM 커맨드를 실행하는 단계, 상기 비디오 데이터의 상기 제2 부분을 정의하는 제2 클립 사각형 설정 커맨드를 실행하는 단계, 및 상기 마스터 미디어 처리 장치와 상기 슬레이브 미디어 처리 장치 모두가 상기 푸시 버퍼내의 후속 커맨드들을 실행하도록 상기 마스터 미디어 처리 장치 및 상기 슬레이브 미디어 처리 장치를 구성하는 제3 SSDM 커맨드를 실행하는 단계를 포함하는 비디오 데이터 처리 방법.
  22. 제16항에 있어서,
    상기 제1 미디어 처리 장치 및 상기 제2 미디어 처리 장치의 각각은 그래픽 처리 장치인 비디오 데이터 처리 방법.
KR1020060109042A 2005-11-04 2006-11-06 비디오 데이터 처리 시스템 및 방법 KR100830286B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/267,611 US7525548B2 (en) 2005-11-04 2005-11-04 Video processing with multiple graphical processing units
US11/267,611 2005-11-04

Publications (2)

Publication Number Publication Date
KR20070048634A true KR20070048634A (ko) 2007-05-09
KR100830286B1 KR100830286B1 (ko) 2008-05-19

Family

ID=37745941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060109042A KR100830286B1 (ko) 2005-11-04 2006-11-06 비디오 데이터 처리 시스템 및 방법

Country Status (8)

Country Link
US (2) US7525548B2 (ko)
EP (1) EP1784021B1 (ko)
JP (1) JP4568711B2 (ko)
KR (1) KR100830286B1 (ko)
CN (2) CN104767956A (ko)
CA (1) CA2567079A1 (ko)
DE (1) DE602006014344D1 (ko)
TW (1) TWI339795B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021444A (ko) * 2019-01-30 2022-02-22 소니 인터랙티브 엔터테인먼트 엘엘씨 홈 콘솔 및 클라우드 게이밍을 위한 확장 가능한 게임 콘솔 cpu/gpu 설계

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8054314B2 (en) * 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US7525548B2 (en) * 2005-11-04 2009-04-28 Nvidia Corporation Video processing with multiple graphical processing units
US20070165015A1 (en) * 2006-01-18 2007-07-19 Au Optronics Corporation Efficient use of synchronous dynamic random access memory
US7768517B2 (en) * 2006-02-21 2010-08-03 Nvidia Corporation Asymmetric multi-GPU processing
CN100530343C (zh) * 2006-03-15 2009-08-19 深圳迈瑞生物医疗电子股份有限公司 多屏合成显示装置及方法
US20080036758A1 (en) * 2006-03-31 2008-02-14 Intelisum Inc. Systems and methods for determining a global or local position of a point of interest within a scene using a three-dimensional model of the scene
CN100487731C (zh) * 2006-05-12 2009-05-13 深圳迈瑞生物医疗电子股份有限公司 硬件加速显示的并行处理装置及并行处理方法
US7616206B1 (en) * 2006-06-16 2009-11-10 Nvidia Corporation Efficient multi-chip GPU
US8537146B1 (en) * 2006-12-04 2013-09-17 Nvidia Corporation Methods and apparatus for toggling between graphics processing unit video scanouts
TW200837691A (en) * 2007-03-06 2008-09-16 Sunplus Technology Co Ltd Method and system for processing image data in LCD by integrating de-interlace and overdrive operations
US8310491B2 (en) * 2007-06-07 2012-11-13 Apple Inc. Asynchronous notifications for concurrent graphics operations
US8094157B1 (en) * 2007-08-09 2012-01-10 Nvidia Corporation Performing an occurence count of radices
US8149247B1 (en) * 2007-11-06 2012-04-03 Nvidia Corporation Method and system for blending rendered images from multiple applications
US9615049B2 (en) * 2008-04-10 2017-04-04 Imagine Communications Corp. Video multiviewer system providing direct video data transfer to graphics processing unit (GPU) memory and related methods
US8811499B2 (en) * 2008-04-10 2014-08-19 Imagine Communications Corp. Video multiviewer system permitting scrolling of multiple video windows and related methods
US8373709B2 (en) * 2008-10-03 2013-02-12 Ati Technologies Ulc Multi-processor architecture and method
US8892804B2 (en) * 2008-10-03 2014-11-18 Advanced Micro Devices, Inc. Internal BUS bridge architecture and method in multi-processor systems
JP2010204344A (ja) * 2009-03-03 2010-09-16 Sony Corp 映像信号出力装置および映像信号出力方法
US9336028B2 (en) * 2009-06-25 2016-05-10 Apple Inc. Virtual graphics device driver
US8984167B1 (en) * 2009-12-10 2015-03-17 Nvidia Corporation Real-time frame streaming from remote graphics processing unit
US8364999B1 (en) * 2010-06-23 2013-01-29 Nvdia Corporation System and method for processor workload metering
JP5835942B2 (ja) * 2010-06-25 2015-12-24 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
US8847535B2 (en) * 2011-11-08 2014-09-30 Autoliv Asp, Inc. System and method to determine the operating status of an electrical system having a system controller and an actuator controller
US20130148947A1 (en) * 2011-12-13 2013-06-13 Ati Technologies Ulc Video player with multiple grpahics processors
KR101947726B1 (ko) * 2012-03-08 2019-02-13 삼성전자주식회사 영상 처리 장치 및 이의 영상 처리 방법
TWI524735B (zh) * 2012-03-30 2016-03-01 華晶科技股份有限公司 三維影像產生方法及裝置
US10327017B2 (en) * 2013-02-18 2019-06-18 Texas Instruments Incorporated Systems and methods for video processing
US9471955B2 (en) * 2014-06-19 2016-10-18 Apple Inc. Multiple display pipelines driving a divided display
JP6421920B2 (ja) * 2014-09-03 2018-11-14 カシオ計算機株式会社 表示装置及びその表示制御方法、制御プログラム
KR102164798B1 (ko) 2014-09-11 2020-10-13 삼성전자 주식회사 디스플레이 구동 회로 및 이를 포함하는 디스플레이 장치
US11055806B2 (en) * 2015-02-27 2021-07-06 Advanced Micro Devices, Inc. Method and apparatus for directing application requests for rendering
JP6706482B2 (ja) * 2015-11-05 2020-06-10 ソニーセミコンダクタソリューションズ株式会社 固体撮像装置および電子機器
GB2544333B (en) * 2015-11-13 2018-02-21 Advanced Risc Mach Ltd Display controller
US20170154403A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Triple buffered constant buffers for efficient processing of graphics data at computing devices
US10593299B2 (en) * 2016-05-27 2020-03-17 Picturall Oy Computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto
CN106331708A (zh) * 2016-08-22 2017-01-11 北京文安智能技术股份有限公司 一种视频流处理方法、装置及系统
US10311013B2 (en) * 2017-07-14 2019-06-04 Facebook, Inc. High-speed inter-processor communications
US10706812B2 (en) * 2018-05-30 2020-07-07 Ati Technologies Ulc Source-side tone mapping based on native color gamut and brightness of display
US11890538B2 (en) 2019-01-30 2024-02-06 Sony Interactive Entertainment LLC Scalable game console CPU / GPU design for home console and cloud gaming
KR102525329B1 (ko) * 2019-11-15 2023-04-24 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 플렉서블 케이블 연결 기반의 분산형 ai 훈련 토폴로지
CN115589488B (zh) * 2022-09-30 2023-09-08 摩尔线程智能科技(北京)有限责任公司 视频转码系统、方法、gpu以及电子设备和存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315701A (en) 1992-08-07 1994-05-24 International Business Machines Corporation Method and system for processing graphics data streams utilizing scalable processing nodes
JP3871348B2 (ja) * 1993-03-05 2007-01-24 ソニー株式会社 画像信号復号化装置及び画像信号復号化方法
US5392393A (en) 1993-06-04 1995-02-21 Sun Microsystems, Inc. Architecture for a high performance three dimensional graphics accelerator
JP2863096B2 (ja) * 1994-08-29 1999-03-03 株式会社グラフィックス・コミュニケーション・ラボラトリーズ 並列処理による画像復号装置
US5860086A (en) 1995-06-07 1999-01-12 International Business Machines Corporation Video processor with serialization FIFO
KR0172491B1 (ko) * 1995-07-10 1999-03-20 김광호 영상신호의 병렬처리방법 및 그 장치
US6359624B1 (en) 1996-02-02 2002-03-19 Kabushiki Kaisha Toshiba Apparatus having graphic processor for high speed performance
US7015966B1 (en) * 1999-03-15 2006-03-21 Canon Kabushiki Kaisha Reducing discontinuities in segmented imaging sensors
US6624816B1 (en) 1999-09-10 2003-09-23 Intel Corporation Method and apparatus for scalable image processing
US6473087B1 (en) * 1999-12-15 2002-10-29 Silicon Magic Corporation Method and system for concurrent processing of slices of a bitstream in a multiprocessor (MP) system
US6789154B1 (en) * 2000-05-26 2004-09-07 Ati International, Srl Apparatus and method for transmitting data
JP2001343927A (ja) * 2000-05-30 2001-12-14 Sony Corp 画像処理装置
US7027711B2 (en) * 2000-06-26 2006-04-11 Matsushita Electric Industrial Co., Ltd. Editing apparatus for an optical disk, computer-readable storage medium, and computer program
US6630936B1 (en) 2000-09-28 2003-10-07 Intel Corporation Mechanism and method for enabling two graphics controllers to each execute a portion of a single block transform (BLT) in parallel
US6831648B2 (en) * 2000-11-27 2004-12-14 Silicon Graphics, Inc. Synchronized image display and buffer swapping in a multiple display environment
US7158571B2 (en) 2000-12-11 2007-01-02 Sony Corporation System and method for balancing video encoding tasks between multiple processors
US6901422B1 (en) 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
EP1378824A1 (en) 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
JP2004054680A (ja) 2002-07-22 2004-02-19 Fujitsu Ltd 並列効率計算方法
US7533382B2 (en) 2002-10-30 2009-05-12 Stmicroelectronics, Inc. Hyperprocessor
US7289125B2 (en) * 2004-02-27 2007-10-30 Nvidia Corporation Graphics device clustering with PCI-express
US7525548B2 (en) 2005-11-04 2009-04-28 Nvidia Corporation Video processing with multiple graphical processing units
US7624107B1 (en) 2007-08-09 2009-11-24 Nvidia Corporation Radix sort algorithm for graphics processing units

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021444A (ko) * 2019-01-30 2022-02-22 소니 인터랙티브 엔터테인먼트 엘엘씨 홈 콘솔 및 클라우드 게이밍을 위한 확장 가능한 게임 콘솔 cpu/gpu 설계

Also Published As

Publication number Publication date
JP2007215156A (ja) 2007-08-23
US20090207178A1 (en) 2009-08-20
DE602006014344D1 (de) 2010-07-01
EP1784021A2 (en) 2007-05-09
EP1784021A3 (en) 2007-12-26
CN104767956A (zh) 2015-07-08
US20070103590A1 (en) 2007-05-10
KR100830286B1 (ko) 2008-05-19
TWI339795B (en) 2011-04-01
CA2567079A1 (en) 2007-05-04
CN1960438A (zh) 2007-05-09
US7525548B2 (en) 2009-04-28
EP1784021B1 (en) 2010-05-19
US7821517B2 (en) 2010-10-26
TW200731076A (en) 2007-08-16
JP4568711B2 (ja) 2010-10-27

Similar Documents

Publication Publication Date Title
KR100830286B1 (ko) 비디오 데이터 처리 시스템 및 방법
CN101548277B (zh) 多并行处理器的计算机图形系统
US7119808B2 (en) Multiple parallel processor computer graphics system
US7102653B2 (en) Systems and methods for rendering graphical data
US7342588B2 (en) Single logical screen system and method for rendering graphical data
US8026919B2 (en) Display controller, graphics processor, rendering processing apparatus, and rendering control method
US6882346B1 (en) System and method for efficiently rendering graphical data
US5633687A (en) Method and system for providing an interlaced image on an display
US9129581B2 (en) Method and apparatus for displaying images
US20110304713A1 (en) Independently processing planes of display data
US20040252756A1 (en) Video signal frame rate modifier and method for 3D video applications
JP2007271908A (ja) マルチ画像生成装置
KR20180100486A (ko) 데이터 처리 시스템
US20090254683A1 (en) Video multiviewer system using direct memory access (dma) registers and block ram
KR20200002626A (ko) 데이터 처리 시스템
US6680739B1 (en) Systems and methods for compositing graphical data
US20120256962A1 (en) Video Processing Apparatus and Method for Extending the Vertical Blanking Interval
CA2316232C (en) A method and apparatus for reducing flicker in the television display of network application data
US6791553B1 (en) System and method for efficiently rendering a jitter enhanced graphical image
US6870539B1 (en) Systems for compositing graphical data
US6985162B1 (en) Systems and methods for rendering active stereo graphical data as passive stereo
JP2005086822A (ja) ビデオ・データおよびグラフィックス・データ処理用装置
JPH03286271A (ja) 画像表示装置
JPH04261589A (ja) グラフィック表示装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130419

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190430

Year of fee payment: 12