KR102366519B1 - 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치 - Google Patents

범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치 Download PDF

Info

Publication number
KR102366519B1
KR102366519B1 KR1020150064901A KR20150064901A KR102366519B1 KR 102366519 B1 KR102366519 B1 KR 102366519B1 KR 1020150064901 A KR1020150064901 A KR 1020150064901A KR 20150064901 A KR20150064901 A KR 20150064901A KR 102366519 B1 KR102366519 B1 KR 102366519B1
Authority
KR
South Korea
Prior art keywords
macroblock
macroblocks
motion compensation
gpu
microblocks
Prior art date
Application number
KR1020150064901A
Other languages
English (en)
Other versions
KR20160087730A (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 KR20160087730A publication Critical patent/KR20160087730A/ko
Application granted granted Critical
Publication of KR102366519B1 publication Critical patent/KR102366519B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법을 개시한다. 일 실시예에서, 본 발명의 방법은 P/B 슬라이스 또는 프레임의 하나 이상의 인터 매크로블록들(macroblocks; MBs)을 파싱하는 단계, 매크로블록의 타입에 기초하여 하나 이상의 매크로블록들을 클러스터링하는 단계, 클러스터링된 인터 매크로블록들을 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 단계, 공간적으로 그룹화된 매크로블록들 각각에 대하여 다중 커널들을 실행하는 단계, 및 매크로블록의 모션 보상 및 복원을 수행하는 단계를 포함한다.

Description

범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치{METHOD AND APPARATUS OF PARALLELIZATION OF MOTION COMPENSATION ON GENERAL PURPOSE GRAPHICS}
본 발명의 실시예는 H.264 비디오 디코더의 그래픽 프로세서(graphics processing unit; GPU)에서의 고성능 컴퓨팅에 관한 것으로, 보다 상세하게는 범용 그래픽 프로세서(general purpose graphics processing unit; GPGPU)에서의 모션 보상의 병렬화 방법에 관한 것이다.
H.264는 가장 인기 있는 비디오 압축 표준이다. 그러나 계산 복잡도가 이전의 표준들과 비교할 때 매우 높다. 이것이 다중 채널 H.264 스트림들을 디코딩하기 위한 서버 클래스의 PC에 대한 수요를 야기하며, 이는 전체 다중채널 비디오 디코더 시스템의 비용을 증가시킨다. 이러한 비용을 감소시키기 위해서는, 서버 클래스 시스템이 데스크탑 클래스 시스템으로 교체되어야 하고 스트림을 디코딩하기 위하여 모든 가용의 컴퓨팅 리소스들(CPU + GPU)을 사용해야 한다. GPU와 같은 고병렬적 아키텍처를 효율적으로 활용하기 위하여, H.264 디코더는 병렬화될 필요가 있다(parallelized). 본 발명의 실시예는 H.264 디코더의 계산 집중적 모션 보상 모듈의 병렬화에 관련된다.
병렬 컴퓨팅 플랫폼 및 프로그래밍 모델인 CUDA(Compute Unified Device Architecture)는 병렬 처리를 위한 그래픽 프로세서에 의하여 구현된다. CUDA를 사용하면, GPU는 범용 처리를 위하여 설계될 수 있고, 이러한 접근법은 GPGPU라고 알려진다. CUDA는 'C' 언어를 확장시키고 호출 되면 'N' 개의 상이한 CUDA 쓰레드들에 의하여 'N'번 병렬적으로 실행되는 "커널"이라고 불리는 특수 C 함수를 프로그래머가 정의하도록 허용하는데, 이것은 정규의 C 함수들과 같이 오직 한번만 실행되는 것과 반대이다.
H.264 비디오 압축 표준의 P-프레임/슬라이스는 인터 매크로블록 및 인트라 매크로블록을 지원한다. 모든 인터 매크로블록들은 독립적으로 디코딩될 수 있고, 이것은 GPU 상에서의 병렬 디코딩을 위한 이상적인 선택이 된다. GPU는 P-프레임의 모든 인터 매크로블록(MB)을 디코딩하기 위하여 모션 보상(motion compensation; MC)이라고 불리는 기법을 사용한다.
블록의 모션 보상 및 복원을 병렬화하는 기존 방법은 N 개의 채널들을 포함할 수 있고, 각 채널이 독립적이기 때문에, 모션 보상(MC)과 함께 복원이 병렬적으로 발생하며, 따라서 각각의 채널 커널이 상이한 CUDA 스트림들 내에 론칭된다. 현재의 GPU들은 최대 32 개의 커널의 병렬 실행을 지원할 수 있다. P 프레임/슬라이스의 인터 MB들이 독립적이기 때문에, 이들은 MB당 1개의 쓰레드를 사용하여 병렬적으로 디코딩될 수 있다. 결과적으로, 한 워프(warp)의 32개의 쓰레드가 상이한 MB 타입들을 디코딩할 수 있다. 상이한 MB 타입 모션 보상은 상이한 실행 경로들을 요구한다. 이것은 결과적으로 GPU의 다중프로세서 내에 채용된 SIMT 아키텍처 때문에 제어 다이버전스(control divergence)를 초래하고, 커널 실행의 속도를 늦추는 결과를 가져온다. 이러한 접근법에서는, 단일 커널이 모든 인터 MB 타입들을 디코딩하기 위하여 사용되며, 그 결과로서 이러한 커널은 더 많은 하드웨어 리소스들, 특히 레지스터들을 소모한다(통상적으로 GTX 780에서는 92개를 소모함). 더 많은 하드웨어 리소스가 커널 당 소모되기 때문에, 다중 채널 커널 실행은 직렬화된다. 따라서 다중채널 디코더의 전체 성능이 열화된다. 커널 당 레지스터의 개수를 제한하면, 결과적으로 레지스터 스필링(spilling)을 초래할 것이고 성능을 더욱 열화시킬 것이다.
제어 다이버전스를 회피하는 솔루션은 단일 MB를 디코딩하기 위하여 32 개의 쓰레드 또는 1개의 워프를 사용하고 있다. 이러한 솔루션은 척도변경이 가능한 솔루션이 아니고, 하드웨어 리소스를 낭비하고 있는 셈이며, 최종적으로 병렬적으로 매우 적은 개수의 MB들만을 디코딩할 수 있게 될 것이다.
한국등록특허 제10-0359821호
본 발명의 실시예들은 최소의 하드웨어 리소스를 가지고 모션 보상 및 복원을 병렬화할 수 있고 제어 다이버전스를 제거할 수 있는 장치 및 방법을 제공하는 것이다.
본 발명의 다양한 실시예들은 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법을 개시한다. 상기 방법은 P/B 프레임 또는 슬라이스의 하나 이상의 인터 매크로블록들(MBs)을 파싱하는 단계를 포함한다. 파싱 단계는 잔차 데이터와 관련된 정보, 각 매크로블록과 연관된 모션 벡터, 매크로블록의 타입 및 매크로블록을 디코딩하기 위한 정보를 획득하기 위하여 수행된다. 상기 방법은 매크로블록의 타입에 기초하여 하나 이상의 파싱된 인터 매크로블록들을 클러스터링하는 단계, 상기 클러스터링된 매크로블록들을 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 단계, GPU에 의하여, 공간적으로 그룹화된 매크로블록들 각각에 대하여 다중 커널들을 실행하는 단계, 및 매크로블록들의 모션 보상 및 복원을 수행하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 하나 이상의 파싱된 매크로블록들을 매크로블록의 타입에 기초하여 파싱하는 단계는, 현재 매크로블록과 연관된 매크로블록 번호가 상기 P/B 프레임 또는 슬라이스의 매크로블록들의 총 개수보다 작은지를 검사하는 단계, 그렇다면, 각 매크로블록을 상기 매크로블록의 타입에 기초하여 분류하는 단계, 및 매크로블록 정보를 상기 매크로블록의 각각의 타입과 연관된 버퍼에 저장하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 각 매크로블록을 매크로블록의 타입에 기초하여 분류하는 단계는, 상기 매크로블록의 타입이 16x16 매크로블록인지를 검사하는 단계, 그렇다면, 매크로블록 정보를 16x16 매크로블록 버퍼에 저장하는 단계, 및 그렇지 않다면, 매크로블록의 타입이 16x8 매크로블록인지를 검사하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 매크로블록의 타입이 16x8 매크로블록인지 검사하는 단계는, 매크로블록의 타입이 16x8 매크로블록인지 검사하는 단계, 그렇다면, 상기 매크로블록 정보를 16x8 매크로블록 버퍼에 저장하는 단계, 및 그렇지 않다면, 매크로블록의 타입이 8x16 매크로블록인지 검사하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 매크로블록의 타입이 8x16 매크로블록인지 검사하는 단계는, 매크로블록의 타입이 8x16 매크로블록인지 검사하는 단계, 그렇다면, 상기 매크로블록 정보를 8x16 매크로블록 버퍼에 저장하는 단계, 및 그렇지 않다면, 매크로블록의 타입이 8x8 매크로블록인지 검사하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 매크로블록의 타입이 8x8 매크로블록인지 검사하는 단계는, 매크로블록의 타입이 8x8 매크로블록인지 검사하는 단계, 그렇다면, 상기 매크로블록 정보를 8x8 매크로블록 버퍼에 저장하는 단계, 및 그렇지 않다면, 상기 매크로블록 정보를 스킵 매크로블록 버퍼에 저장하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 상기 매크로블록을 참조 픽쳐 인덱스에 기초하여 공간적으로 그룹화하는 단계는, 효율적 메모리 액세스를 위하여 동일한 참조 픽쳐를 참조하는 특정 그룹의 매크로블록들을 정렬함으로써 정렬된 매크로블록들이 GPU 상의 워프(warp) 내의 연속 쓰레드에 의하여 처리되게 하는 단계 및 예측된 위치에 기초하여 동일한 참조 픽쳐를 참조하는 매크로블록들을 버퍼에 재정렬하는 단계를 포함한다.
본 발명의 실시예들로서 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법을 추가 기술한다. 상기 방법은, P/B 프레임 또는 슬라이스의 하나 이상의 인터 매크로블록들을 파싱하는 단계, 보간의 타입에 기초하여 하나 이상의 마이크로블록들을 클러스터링하는 단계, 상기 클러스터링된 마이크로블록들을 상기 마이크로블록의 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 단계, GPU에 의하여, 상기 공간적으로 그룹화된 마이크로블록들 각각에 대하여 다중 커널들을 실행하는 단계, 및 블록들의 모션 보상 및 복원을 수행하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 하나 이상의 마이크로블록들을 보간의 타입에 기초하여 클러스터링하는 단계는, 4x4 현재 마이크로블록과 연관된 마이크로블록 번호가 마이크로블록들의 총 개수보다 작은지를 검사하는 단계, 그렇다면, 각 마이크로블록을 상기 보간의 타입에 기초하여 분류하는 단계, 및 상기 마이크로블록 정보를 상기 보간의 각 타입과 연관된 버퍼에 저장하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 상기 방법은 마이크로블록의 픽셀들의 서브 픽셀 위치에서 블록의 모션 보상 및 복원을 수행하는 단계를 더 포함한다.
본 발명의 실시예들은 범용 그래픽 프로세서에서의 모션 보상의 병렬화를 위한 장치를 또한 개시한다. 상기 장치는 호스트를 포함하는 중앙 프로세서(CPU)와, 본 명세서에서 개시되는 바와 같은 본 발명의 방법을 수행하는 디바이스를 포함하는 그래픽 프로세서(GPU)를 포함한다.
개략적으로 전술된 본 발명의 다양한 양태들은 후술될 더 완전한 상세한 설명을 더욱 잘 이해하는 것을 돕는 역할을 수행하기 위한 것이다. 따라서, 본 발명이 본 명세서에서 기술되고 도시되는 방법 또는 적용 용도로 한정되지 않는다는 것이 명백하게 이해될 것이다. 상세한 설명 또는 본 명세서에 포함된 예시들로부터 명백해지거나 분명해지는 본 발명의 다른 장점들 및 목적들이 본 발명의 범위 내에 속한다.
본 발명의 실시예에 의한 모션 보상 및 복원의 병렬화 방법은 최소의 하드웨어 리소스를 가지고 병렬화할 수 있다.
본 발명의 앞서 언급된 양태들 및 다른 특징들은 첨부 도면과 함께 후술하는 상세한 설명에서 설명될 것이다.
도 1a는 본 발명의 일 실시예에 따르는 그래픽 프로세서를 사용한 블록의 모션 보상 및 복원의 병렬화의 예시적인 방법을 도시하는 흐름도이다.
도 1b는 본 발명의 다른 실시예에 따르는, 그래픽 프로세서를 사용한 블록의 모션 보상 및 복원의 병렬화의 예시적인 방법을 도시하는 흐름도이다.
도 2는 본 발명의 일 실시예에 따르는, CPU 및 GPU를 포함하는 예시적인 CUDA 기반 비디오 디코딩 시스템을 도시하는 블록도이다.
도 3a는 본 발명의 일 실시예에 따르는, 매크로블록의 타입에 기초하여 모션 보상의 병렬화를 수행하는 예시적인 프로세스를 도시하는 개략도이다.
도 3b는 본 발명의 일 실시예에 따르는, 매크로블록의 타입에 기초하여 하나 이상의 인터 매크로블록들을 클러스터링하는 예시적인 방법을 도시하는 흐름도이다.
도 3c는 본 발명의 일 실시예에 따르는, 매크로블록의 타입에 기초하여 하나 이상의 인터 매크로블록들을 클러스터링하는 예를 도시한다.
도 4a 내지 도 4e는 본 발명의 일 실시예에 따르는, 블록의 모션 보상 및 복원을 수행하기 위한 4x4 마이크로블록의 처리를 예시한다.
도 5는 본 발명의 일 실시예에 따르는, 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 마이크로블록/매크로블록을 공간적으로 그룹화하는 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 본 발명의 일 실시예에 따르는, 블록의 예측된 위치에 기초한 MiB/MB의 그룹화 및 모션 보상을 수행하는 예시도이다.
본 명세서에서 설명되는 도면들은 오직 예시적인 목적을 위하여 제공되었으며 어떠한 경우에도 청구된 본 발명의 범위를 한정하는 것으로 의도되지 않는다.
본 발명은 아래에서 특정한 예시적인 실시예들 및 특정한 도면들을 참조하여 본 명세서에서 설명되지만 본 발명은 이에 한정되지 않고 청구항에 의해서 설명된다. 설명된 도면들은 예시적인 것이며 비한정적이다. 도면에서, 예시적인 목적을 위하여, 구성 요소들 중 일부의 크기는 과장될 수도 있으며 특정한 척도에 맞춰서 도시되지 않는다. "포함한다"라는 용어가 제시된 설명 및 청구항에서 사용되는 경우, 상기 용어는 다른 구성 요소 또는 단계를 배제하지 않는다. 부정관사 또는 정관사, 예를 들어 "하나(a)" "하나의(an)" 또는 "그(the)"가 단수 명사를 지칭하는 경우 사용되면, 이것은 그렇지 않다고 구체적으로 진술되지 않으면 그 명사의 복수형을 포함한다. 그러므로, "포함한다"라는 용어는 그 이후에 열거된 아이템들로 한정되는 것으로 해석되어서는 안 된다; 이것은 다른 구성 요소 또는 단계들을 제외시키지 않으며, 그러므로 "아이템 A 및 B를 포함하는 디바이스"라는 표현의 범위는 오직 컴포넌트 A 및 B만으로 이루어진 디바이스들로 한정되어서는 안 된다. 이러한 표현은 본 발명에 대해서 그 디바이스의 관련된 컴포넌트들이 A 및 B라는 것을 의미한다.
명세서 전체에 걸쳐서, "MB" 및 "매크로블록(Macroblock)"이라는 용어는 상호 교환가능하게 혼용되고, 이와 유사하게 "MiB" 및 "마이크로블록(Microblock)"이라는 용어가 상호 교환가능하게 혼용될 수 있다.
본 발명의 일 실시예에 따르면, 용어 "스트림"은 GPU에서 이슈 순서(issue order)로 실행하는 동작들의 시퀀스를 지칭한다.
본 발명은 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법을 기술한다. 본 발명의 예시적인 실시예들의 후속하는 상세한 설명에서, 본 명세서의 일부를 형성하는 첨부 도면에 대한 참조가 이루어지고, 그 안에서 본 발명이 실시될 수도 있는 특정한 실시예가 예시를 통하여 도시된다. 이러한 실시예들은 당업자들이 본 발명을 실시하도록 하기에 충분히 세부적으로 설명되며, 본 발명의 사상 및 첨부된 청구항의 범위에서 벗어나지 않으면서 다른 실시예들이 활용될 수도 있고 변경을 가할 수도 있음이 이해되어야 한다. 그러므로, 후술하는 발명을 실시하기 위한 구체적인 내용은 한정하는 의미로 이해되어서는 안 되고, 본 발명의 범위는 첨부된 청구항에 의해서만 정의된다.
도 1a는 본 발명의 일 실시예에 따르는, 그래픽 프로세서(GPU)를 이용한 블록의 모션 보상 및 복원의 병렬화의 예시적인 방법의 흐름도이다.
P/B 슬라이스 또는 프레임의 하나 이상의(one or more) 인터 매크로블록들이 파싱된다(단계 102). 여기에서, 고려되는 매크로블록의 사이즈는 16x16 매크로블록이다. 매크로블록의 사이즈는 픽쳐의 해상도에 기초하여 변경될 수 있다. 파싱 이후에, 각 매크로블록과 연관된 모션 벡터에 대한 정보, 매크로블록의 타입 및 매크로블록을 디코딩하기 위한 정보가 획득된다.
하나 이상의 파싱된 인터 매크로블록들은 매크로블록의 타입에 기초하여 클러스터링된다(단계 104). 매크로블록의 타입은 16x16, 16x8, 8x16, 8x8 및 스킵 중 적어도 하나이다. 그러므로, 매크로블록들은 매크로블록의 타입에 기초하여 5개의 그룹들로 클러스터링된다. 클러스터링된 그룹의 각 매크로블록은 참조 픽쳐 인덱스 및 매크로블록의 모션 벡터에 기초하여 공간적으로 다시 그룹화된다(단계 106).
다음으로, 공간적으로 그룹화된 매크로블록들 각각의 다중 커널들이 GPU에 의하여 병렬적으로 실행되고(단계 108), 이에 기초하여 매크로블록의 모션 보상 및 복원이 수행된다(단계 110).
도 1b는 본 발명의 다른 실시예에 따르는, 그래픽 프로세서를 사용한 블록의 모션 보상 및 복원의 병렬화의 예시적인 방법의 흐름도를 도시한다.
매크로블록의 하나 이상의 마이크로블록들이 파싱되는데(단계 152), 여기에서 마이크로블록은 모션 벡터가 정의되는 대상이 되는 16x16 매크로블록의 작은 블록 파티션이다. 마이크로블록의 사이즈는 4x4 픽셀이다. 파싱 이후에, 각 마이크로블록과 연관된 모션 벡터에 대한 정보, 및 그 마이크로블록을 디코딩하기 위한 정보가 획득된다.
하나 이상의 마이크로블록들이 보간 타입에 기초하여 클러스터링된다(단계 154). 마이크로블록의 모션 벡터의 해상도가 Q-pel(quarter pixel)이기 때문에 서브-픽셀 예측 블록을 생성하기 위한 16개의 보간 타입들이 존재한다.
클러스터링된 그룹으로부터의 각 마이크로블록은 각 마이크로블록의 모션 벡터 및 참조 픽쳐 인덱스에 기초하여 공간적으로 다시 그룹화된다(단계 156).
다음으로, 공간적으로 그룹화된 마이크로블록들 각각에 대한 다중 커널들이 병렬적으로 실행되고(단계 158), 이에 기초하여 마이크로블록의 모션 보상 및 복원이 수행된다(단계 160).
도 2는 본 발명의 일 실시예에 따르는, CPU 및 GPU를 포함하는 예시적인 CUDA 기반 비디오 디코딩 시스템을 도시하는 블록도이다.
CUDA 기반 비디오 디코딩 시스템(200)은 개인용 컴퓨터, 비디오 게임 콘솔, 또는 비디오 데이터를 수신, 디코딩 및 렌더링하도록 구성되는 다른 디바이스 내에 구현될 수 있다. CUDA 기반 비디오 디코딩 시스템(200)은 중앙 프로세서(CPU; 202), CUDA-가능 그래픽 프로세서(GPU; 206), CPU용 프로그램 및 데이터를 저장하기 위한 호스트(203), 및 GPU용 프로그램 및 데이터를 저장하기 위한 디바이스(209)를 포함한다. 호스트(203) 및 CPU(202)는 하나의 디바이스(예를 들어 칩, 보드 등)에 함께 집적될 수도 있고, 디바이스(209) 및 GPU(206)도 역시 함께 집적될 수 있으며, 이 경우가 통상적이다.
호스트(203)는 파싱 모듈(204), 클러스터링 모듈(205), 공간적 그룹화 모듈(206), 및 커널 론칭 모듈(kernel launch module; 207)로 구성된다.
파싱 모듈(204)은 각 인터 매크로블록과 연관된 필요한 정보를 획득하고, 상기 정보를 클러스터링 모듈(205)로 전송한다.
클러스터링 모듈(205)은 일 실시예에 따라서, 하나 이상의 파싱된 매크로블록들을 매크로블록의 타입에 기초하여 그룹화한다. 다른 실시예에서, 클러스터링 모듈은 보간의 타입에 기초하여 하나 이상의 마이크로블록을 그룹화한다. MB들 및 MiB들의 그룹화는 후술하겠다. 클러스터링 이후에, 그룹화된 MB들/MiB들은 공간적 그룹화를 위하여 처리된다.
공간적 그룹화 모듈(206)은 예측된 위치를 기초로 클러스터링된 MB들/MiB들을 추가로 그룹화한다.
마지막으로, 커널 론칭 모듈(207)은 공간적으로 그룹화된 MB들/MiB들에 대한 다중 커널들을 실행한다.
그 이후에, 디바이스(209)에 상주하는 모션 보상 및 복원 모듈(210)이 GPU(208)의 상이한 스트림들을 사용하여 블록의 모션 보상 및 복원을 수행한다.
도 3a는 본 발명의 일 실시예에 따르는, 매크로블록의 타입에 기초하여 모션 보상의 병렬화를 수행하는 예시적인 프로세스를 도시하는 개략도이다.
상기 실시예에서, 16x16 매크로블록에 대하여 고려되는 매크로블록의 타입은 16x16, 16x8, 8x16, 8x8 및 스킵이다. 이러한 타입에 기초하여 하나 이상의 파싱된 매크로블록들이 CPU에 의하여 클러스터링되고 공간적으로 그룹화되고, 다음으로 매크로블록들은 GPU에 의하여 추가 프로세싱된다. 여기서 매크로블록의 각 타입에 대한 커널들은 GPU의 하드웨어 리소스들을 사용하여 개별적으로 그리고 효율적으로 론칭되어 블록들을 복원한다. 5개 타입의 매크로블록들이 사용되기 때문에, GPU는 스트림1 내지 스트림5인 5개의 스트림을 사용하여 블록의 복원을 수행한다. 이러한 구성이 도 3a에 도시되어 있다.
도 3b는 본 발명의 일 실시예에 따르는, 매크로블록의 타입에 기초하여 하나 이상의 인터 매크로블록들을 클러스터링하는 예시적인 방법을 도시하는 흐름도이다.
우선, 하나 이상의 파싱된 인터 매크로블록이 획득된다. 파싱된 매크로블록들은 잔차 데이터와 관련된 정보, 각각의 매크로블록과 연관된 모션 벡터, 매크로블록의 타입 및 매크로블록을 디코딩하기 위한 정보를 제공한다. 또한, 각 매크로블록은 스스로를 표시하기 위한 매크로블록 번호(MBno)를 포함한다. 매크로블록들은 프레임의 상단-좌측에서 시작하여 좌측에서 우측으로 그리고 상단으로부터 하단으로 증가하는 순서로 번호가 매겨진다.
파싱의 종료 이후에, 현재 매크로블록과 연관된 매크로블록 번호가 P프레임의 매크로블록들의 총 개수보다 작은지가 검사된다. 만일 현재 매크로블록과 연관된 매크로블록 번호가 매크로블록들의 총 개수보다 작으면, 현재 매크로블록의 타입이 16x16 매크로블록인지가 검사된다. 만일 그렇다면, 이제 16x16 매크로블록과 관련된 정보가 16x16 매크로블록과 연관된 버퍼에 저장된다. 만일 그렇지 않다면, 현재 매크로블록의 타입이 16x8 매크로블록에 속하는지가 검사된다. 만일 그렇다면, 16x8 매크로블록에 관련된 정보가 16x8 매크로블록과 연관된 버퍼에 저장된다. 만일 그렇지 않다면, 현재 매크로블록의 타입이 8x16 매크로블록에 속하는지가 검사된다. 만일 그렇다면, 8x16 매크로블록에 관련된 정보가 8x16 매크로블록과 연관된 버퍼에 저장된다. 만일 그렇지 않다면, 현재 매크로블록의 타입이 8x8 매크로블록에 속하는지가 검사된다. 만일 그렇다면, 8x8 매크로블록에 관련된 정보가 8x8 매크로블록과 연관된 버퍼에 저장된다. 만일 그렇지 않다면, 정보는 스킵 매크로블록과 연관된 버퍼에 저장된다. 따라서, 매크로블록들은 그들의 타입에 기초하여 그룹화된다.
도 3c는 매크로블록의 타입에 기초하여 매크로블록들을 클러스터링하는 예시도이다. 이제, 매크로블록의 각 그룹은 공간적 그룹화 및 이에 후속하는 블록의 디코딩을 위하여 처리된다. 여기에서, 디코딩이란 커널 론칭, 블록 모션 보상 및 블록의 복원을 포함하는 프로세스를 지칭한다.
도 4a는 본 발명의 일 실시예에 따라서 16x16 매크로블록으로부터 4x4 마이크로블록을 유도하는 방법을 개략적으로 도시한다.
16x16 매크로블록에서 4x4 픽셀로 구성된 영역을 갖는 최소 파티션이 취해지고 상기 최소 파티션에 대한 모션 벡터가 정의된다. 상기 최소 파티션은 마이크로블록(microblock; MiB)이라고 칭한다.
도 4b는 본 발명의 일 실시예에 따르는, 보간의 타입에 기초하여 모션 보상의 병렬화를 수행하는 예시적인 방법을 도시하는 개략도이다.
파싱 이후에 하나 이상의 마이크로블록들이 보간의 타입에 기초하여 클러스터링된다. 마이크로블록에 대한 모션 벡터의 해상도가 Q-pel이기 때문에, 서브-픽셀 예측 블록을 생성하기 위하여 사용가능한 16개의 보간들이 존재한다. 16개의 보간의 타입은 'G', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'n', 'p', 'q', 및 'r'이다.
도 4c는 서브-픽셀 레벨에서 블록들을 생성하기 위하여 사용되는 상이한 보간의 타입들을 설명하는 예시도이다. 상기 타입들에 기초하여, 하나 이상의 마이크로블록들은 도 4d에 도시된 바와 같이 클러스터링된다.
도 4d는 본 발명의 일 실시예에 따르는, 보간의 타입에 기초하여 하나 이상의 마이크로블록들을 클러스터링하는 흐름도이다.
클러스터링 단계 동안에, 마이크로블록 번호(MiBno)가 마이크로블록의 총 개수보다 작은지가 검사된다. 만일 그렇다면, 상기 마이크로블록이 결과적 방식으로 16개의 보간의 타입 중 임의의 하나에 속하는지가 검사되고, 만일 그렇다면, 각 마이크로블록과 연관되는 마이크로블록 정보가 대응하는 버퍼에 저장된다. 이러한 프로세스는 모든 마이크로블록들이 그룹화될 때까지 반복된다.
도 4e는 보간의 타입에 기초한 마이크로블록의 클러스터링을 설명하는 예시도이다.
클러스터링된 마이크로블록들은 참조 픽쳐 인덱스 및 그 마이크로블록의 모션 벡터에 기초하여 공간적으로 그룹화된다. 공간적으로 그룹화된 마이크로블록들은 GPU에 의하여 추가적으로 처리되는데, 여기에서 마이크로블록의 각 그룹에 대한 커널들이 효율적으로 GPU의 하드웨어 리소스를 사용하여 개별적으로 그리고 병렬적으로 론칭되어 블록들을 복원한다. 16개의 보간 타입들이 사용되기 때문에, GPU는 스트림1 내지 스트림16인 16개의 스트림을 사용하여 블록의 복원을 수행한다.
도 5는 본 발명의 일 실시예에 따르는, 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 마이크로블록/매크로블록을 공간적으로 그룹화하는 예시적인 프로세스를 도시하는 흐름도이다.
클러스터링에 의하여 형성된 상이한 그룹들이 공간적 그룹화를 수행하기 위한 입력으로서 주어진다. 동일한 참조 픽쳐를 참조하는 특정 그룹 내의 MB들/MiB들은 메모리 내에서 인접하도록 정렬됨으로써 그러한 MB들/MiB들이 GPU 상의 워프 내의 연속 쓰레드에 의하여 처리되게 한다. H.264 표준에 따라서 이용가능한 전체 16개의 참조 프레임들이 존재한다. 그 이후에, 동일한 참조 픽쳐 MB들/MiB들은 예측된 위치에 기초하여 버퍼에 다시 재정렬된다. 이는 예측된 위치에 의해 인접한 MB들/MiB들이 버퍼에서 더 근접하게 배치됨으로써 한 워프 내의 쓰레드에 의하여 처리되기 때문이다. 따라서, 전체적인 광역 메모리 병합(coalescing)이 공간적 그룹화에 의하여 개선된다. 공간적 그룹화 이후에 디코딩이 수행된다. 여기서, 디코딩이란 커널 론칭, 블록 예측 및 블록의 복원을 포함하는 프로세스를 지칭한다.
도 6은 블록의 예측된 위치에 기초한 마이크로블록/MB들의 그룹화 및 모션 보상과 복원을 수행하는 방법의 예시도이다.
공간적 그룹화 이후에, CPU는 조건부 커널 론칭을 수행한다. 한 프레임 내에서 모든 MB 타입들이 존재하지 않을 수도 있고 또는 모든 보간 방법이 필요하지 않을 수도 있다. MC 및 복원을 수행하는 단일 커널 대신에, 다중 커널들은 MB 타입 또는 상이한 보간 방식에 기초하여 상이한 스트림 상에 론칭된다. 상기 접근법은 하드웨어 리소스, 특히 레지스터를 최소화하고, 커널들이 조건부로 론칭되기 때문에 전체 성능이 고성능이다. 커널 실행 구성은 GPU에 기초하고, 또한 런 타임 시에 구성될 수 있다. 커널들이 실행되면, 워프의 각 쓰레드가 각 블록에 대해 MC 및 복원 완료를 수행한다. 블록의 개수가 더 많기 때문에 병렬도(parallelism)가 매우 높다. 그러나 하드웨어의 제한 사항에 기인하여 쓰레드의 총 개수는 한 프레임 내의 블록들의 개수와 동일할 수 없다. 따라서, 커널 실행 구성은 일부의 "N" 개의 쓰레드들이 론칭되는 방식일 수 있다. 이러한 "N" 개의 쓰레드들은 N 개의 블록들이 디코딩된 이후에 재사용되는데, 여기에서 "N"의 값은 GPU에 기초하여 결정된다.
본 발명의 실시예들이 특정한 예시적인 실시예들을 참조하여 설명되어 왔지만, 다양한 실시예들의 더 넓은 사상 및 범위로부터 벗어나지 않으면서 이러한 실시예에 다양한 수정 및 변경이 가해질 수도 있다는 것이 명백할 것이다. 더욱이, 본 명세서에서 설명되는 다양한 디바이스, 모듈 등은 하드웨어 회로부, 예를 들어, 상보적 금속 산화물 반도체 기반 로직 회로부, 펌웨어, 소프트웨어 및/또는 머신 판독가능 매체 내에 구현된 하드웨어, 펌웨어, 및/또는 소프트웨어의 임의의 조합을 사용하여 이네이블되고 동작될 수도 있다. 예를 들어, 다양한 전기적 구조 및 방법들이 트랜지스터, 로직 게이트, 및 주문형 집적회로와 같은 전기 회로를 사용하여 구현될 수도 있다.

Claims (4)

  1. H.264 디코더의 그래픽 프로세서(graphics processing unit; GPU)에서의 모션 보상 병렬화 방법으로서,
    중앙 프로세서(central processing unit; CPU)에 의하여, P/B 슬라이스 또는 프레임의 하나 이상의 인터 매크로블록(macroblock; MB)들을 파싱하는 단계;
    상기 중앙 프로세서(CPU)에 의하여, 매크로블록의 타입에 기초하여 상기 하나 이상의 파싱된 인터 매크로블록들을 클러스터링하는 단계;
    상기 중앙 프로세서(CPU)에 의하여, 상기 클러스터링된 인터 매크로블록들을 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 단계;
    상기 그래픽 프로세서(GPU)에 의하여, 상기 공간적으로 그룹화된 인터 매크로블록들 각각에 대하여 다중 커널들을 실행하는 단계; 및
    상기 그래픽 프로세서(GPU)에 의하여, 인터 매크로블록들의 모션 보상 및 복원을 수행하는 단계;를 포함하는 모션 보상 병렬화 방법.
  2. H.264 디코더의 그래픽 프로세서(GPU)를 사용하는 모션 보상 병렬화 방법으로서,
    중앙 프로세서(central processing unit; CPU)에 의하여, P/B 슬라이스 또는 프레임의 하나 이상의 인터 매크로블록들을 파싱하는 단계;
    상기 CPU에 의하여, 보간의 타입에 기초하여 상기 인터 매크로블록들의 최소 파티션인 하나 이상의 마이크로블록들을 클러스터링하는 단계;
    상기 CPU에 의하여, 상기 클러스터링된 마이크로블록들을 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 단계;
    상기 GPU에 의하여, 상기 공간적으로 그룹화된 마이크로블록들 각각에 대하여 다중 커널들을 실행하는 단계; 및
    상기 GPU에 의하여, 마이크로블록들의 모션 보상 및 복원을 수행하는 단계;를 포함하는 모션 보상 병렬화 방법.
  3. P/B 슬라이스 또는 프레임의 하나 이상의 인터 매크로블록들을 파싱하고, 매크로블록의 타입에 기초하여 상기 하나 이상의 파싱된 인터 매크로블록들을 클러스터링하고, 상기 클러스터링된 매크로블록들을 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 호스트를 포함하는, 중앙 프로세서(central processing unit; CPU); 및
    상기 공간적으로 그룹화된 매크로블록들 각각에 대하여 다중 커널들을 실행하고, 매크로블록들의 모션 보상 및 복원을 수행하는 디바이스를 포함하는, 그래픽 프로세서(graphics processing unit; GPU);를 포함하는 장치.
  4. P/B 슬라이스 또는 프레임의 하나 이상의 인터 매크로블록들을 파싱하고, 보간의 타입에 기초하여 상기 인터 매크로블록들의 최소 파티션인 하나 이상의 파싱된 마이크로블록들을 클러스터링하고, 상기 클러스터링된 마이크로블록들을 상기 마이크로블록의 참조 픽쳐 인덱스 및 모션 벡터에 기초하여 공간적으로 그룹화하는 호스트를 포함하는, 중앙 처리 유닛(central processing unit; CPU); 및
    상기 공간적으로 그룹화된 마이크로블록들 각각에 대하여 다중 커널들을 실행하고, 마이크로블록의 모션 보상 및 복원을 수행하는 디바이스를 포함하는, 그래픽 프로세서(graphics processing unit; GPU);를 포함하는 장치.
KR1020150064901A 2015-01-14 2015-05-08 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치 KR102366519B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN229/CHE/2015 2015-01-14
IN229CH2015 2015-01-14

Publications (2)

Publication Number Publication Date
KR20160087730A KR20160087730A (ko) 2016-07-22
KR102366519B1 true KR102366519B1 (ko) 2022-02-23

Family

ID=80495836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150064901A KR102366519B1 (ko) 2015-01-14 2015-05-08 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102366519B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009522650A (ja) 2005-12-30 2009-06-11 インテル コーポレイション ビデオレコーディングにおけるハードウェア動き補償
US8396122B1 (en) 2009-10-14 2013-03-12 Otoy, Inc. Video codec facilitating writing an output stream in parallel

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100359821B1 (ko) 2000-01-20 2002-11-07 엘지전자 주식회사 움직임 보상 적응형 영상 압축과 복원방법 및 그 장치와디코더
US8787459B2 (en) * 2010-11-09 2014-07-22 Sony Computer Entertainment Inc. Video coding methods and apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009522650A (ja) 2005-12-30 2009-06-11 インテル コーポレイション ビデオレコーディングにおけるハードウェア動き補償
US8396122B1 (en) 2009-10-14 2013-03-12 Otoy, Inc. Video codec facilitating writing an output stream in parallel

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
B.Pieters et al., "Performance evaluation of H.264/AVC decoding and visualization using the GPU," Proceedings Vol. 6696, Applications of Digital Image Processing XXX; (2007.09.24.)*
T.Wiegand et al., "Overview of the H.264/AVC Video Coding Standard," IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 13, NO. (2003.08.04.)

Also Published As

Publication number Publication date
KR20160087730A (ko) 2016-07-22

Similar Documents

Publication Publication Date Title
KR20100017645A (ko) 동적 움직임 벡터 분석방법
EP3205091A1 (en) Method and apparatus for vector encoding in video coding and decoding
Chi et al. Evaluation of parallel H. 264 decoding strategies for the cell broadband engine
de Souza et al. GHEVC: An efficient HEVC decoder for graphics processing units
US20100122044A1 (en) Data dependency scoreboarding
Juurlink et al. Scalable parallel programming applied to H. 264/AVC decoding
US20190279330A1 (en) Watermark embedding method and apparatus
De Souza et al. Cooperative CPU+ GPU deblocking filter parallelization for high performance HEVC video codecs
Lee et al. Fast motion estimation for HEVC on graphics processing unit (GPU)
Cho et al. Efficient in-loop filtering across tile boundaries for multi-core HEVC hardware decoders with 4 K/8 K-UHD video applications
US10237561B2 (en) Video coding apparatus and video coding method
Wang et al. Parallel H. 264/AVC motion compensation for GPUs using OpenCL
Ko et al. An efficient parallelization technique for x264 encoder on heterogeneous platforms consisting of CPUs and GPUs
KR102366519B1 (ko) 범용 그래픽 프로세서에서의 모션 보상의 병렬화 방법 및 장치
US9241142B2 (en) Descriptor-based stream processor for image processing and method associated therewith
Nunez-Yanez et al. A configurable and programmable motion estimation processor for the H. 264 video codec
De Souza et al. OpenCL parallelization of the HEVC de-quantization and inverse transform for heterogeneous platforms
Han et al. HEVC decoder acceleration on multi-core X86 platform
Ko et al. An efficient parallel motion estimation algorithm and X264 parallelization in CUDA
Kim et al. An efficient architecture of in-loop filters for multicore scalable HEVC hardware decoders
US8351508B1 (en) Multithreaded descriptor based motion estimation/compensation video encoding/decoding
Migallón et al. Performance analysis of frame partitioning in parallel HEVC encoders
Yan et al. Memory bandwidth optimization of SpMV on GPGPUs
Neves et al. Efficient data-stream management for shared-memory many-core systems
Rahmad et al. Comparison of CPU and GPU implementation of computing absolute difference

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