KR101355375B1 - 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치 - Google Patents
멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치 Download PDFInfo
- Publication number
- KR101355375B1 KR101355375B1 KR1020070126891A KR20070126891A KR101355375B1 KR 101355375 B1 KR101355375 B1 KR 101355375B1 KR 1020070126891 A KR1020070126891 A KR 1020070126891A KR 20070126891 A KR20070126891 A KR 20070126891A KR 101355375 B1 KR101355375 B1 KR 101355375B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- queue
- processor
- multimedia
- motion compensation
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명의 멀티미디어 복호화 방법은, 중앙 프로세서 및 복수 개의 연산 프로세서를 포함하는 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에 있어서, 입력된 멀티미디어 데이터에 대해, 중앙 프로세서에서 중앙 프로세서 및 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐를 생성하고, 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하며, 연산 프로세서 중 하나의 연산 프로세서가 멀티미디어 데이터에 대한 디블로킹 작업을 수행함으로써, 멀티코어 플랫폼 기반에서 데이터량이 큰 멀티미디어 데이터를 분할하여 멀티프로세서의 자원을 효율적으로 활용한다.
멀티코어 플랫폼, 멀티프로세서, 멀티미디어 복호화, 데이터 분할, 기능적 분할
Description
본 발명은 멀티미디어 데이터의 복호화 방법 및 장치에 관한 것으로, 상세하게는 멀티코어 플랫폼 기반의 멀티미디어 복호화 시스템의 효율적인 설계 방법 및 효율적인 복호화 장치에 관한 것이다.
H.264 포맷의 용량이 크고 높은 연산량을 가짐으로 인해, 비대칭성 멀티코어 플랫폼 환경에서 H.264 포맷을 효율적으로 복호화 방식이 제안되고 있다. 그러나, H.264는 슬라이스 단위 처리가 가능한 MPEG-2와 달리 화면들 간의 데이터의 상호 의존성 뿐만 아니라 한 화면 내에서도 데이터의 상호 의존성이 존재하므로, 멀티코어 플랫폼 기반의 복호화 시스템의 병렬적 처리 방식이 구현되기 어렵다.
종래의 병렬 처리를 위한 분할 방식으로는 프로세서에서 처리될 데이터 자체를 분할하는 데이터 분할 방식과 파이프라인 방식과 같이 연산 모듈 단계를 나누어 처리하는 기능적 분할 방식이 있다.
도 1 은 기능적 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.
기능적 분할 방식은 복수 개의 프로세서(110, 120, 130, 140)를 구비하여 각각의 프로세서에 대해 특정 기능이 할당된다. 도 1에 도시된 프로세서 1(110)은 데이터 판독 기능(112), 전처리 및 초기화 기능(114), 데이터 저장 기능(116)이 할당되며, 프로세서 2(120)에는 엔트로피 복호화 기능(122)이 할당된다. 프로세스 3(130)에는 역주파수변환 및 역양자화 기능(132)과 화면 내 예측 및 움직임 보상 기능(134)가 할당된다. 프로세서 4(140)에는 디블로킹 기능(142)가 할당된다.
기능적 분할 방식은 분산된 각 연산 모듈이 처리하는 작업 부담량이 일정하기 않은 경우, 일정한 성능을 보장하기가 어렵다. 즉, 프로세서 1의 처리 시간(150), 프로세서 2의 처리 시간(160), 프로세서 3의 처리 시간(170) 및 프로세서 4의 처리 시간(180)이 모두 다르기 때문에, 멀티프로세서의 처리 시간은 가장 오랜 작업 처리 시간인 프로세서 3의 처리 시간(170) 때문에 초과 처리 시간(190)만큼의 크리티컬 패쓰(Critical Path)가 발생된다. 따라서, 멀티코어 시스템의 병렬성 및 활용성이 감소된다.
도 2a 및 도 2b 는 데이터 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.
도 2a 를 참조하면, 데이터 분할 방식의 일례는 하나의 프레임(200)을 여러 개의 슬라이스(210, 212, 214)로 분할하여, 각각의 슬라이스마다 서로 다른 프로세서(220, 230, 240)에서 복호화 처리를 수행하도록 한다. 즉, 하나의 프로세서의 모든 복호화 과정을 수행하게 된다. 데이터 분할 방식은 단순 데이터 처리에 대해서는 높은 병렬성을 보장한다. 그러나 데이터 사이에 상호 의존성이 존재하면 데이터 분할 방식은 구현되기 어렵고 의존성을 해결하기 위한 추가 작업이 필요하므로 성능이 급격히 저하된다. 따라서 화면 간 예측 기법 뿐만 아니라 화면 내 예측 기법까지 수행되어야 하는 H.264 기반의 복호화 시스템에서는 부적합하다.
또한, 도 2b 를 참조하면, 프레임(250)이 분할된 슬라이스들(260, 270, 280)의 데이터 크기와 연산 부담량의 관계가 예측하기 어렵다. 즉, 슬라이스 1(260) 및 슬라이스 3(280)을 각각 처리하는 프로세서 1(220) 및 프로세서 3(240)은 연산 부담량이 적지만, 데이터 크기가 슬라이스 2(270)를 처리하는 프로세서 2(230)만이 연산 부담량이 커진다. 즉, 분할된 데이터 크기의 불균형으로 인해 프로세서 간의 연산 부담량이 불균등하게 할당되어 자원 활용의 효율성이 떨어지게 된다.
뿐만 아니라, 각각의 데이터 간 의존성이 존재한다면 병렬 처리 구조의 구현이 복잡해지고, 작업 처리 과정이 지연되게 될 수도 있다. 또한, 멀티코어 플랫폼을 구성하는 부분 코어들의 자원이 한정적인데 반해, 각각의 코어가 전체 연산 과정에 대한 데이터를 가지고 있어야 하므로 비효율적이다.
도 3a 및 도 3b 는 애플리케이션 특성에 따른 데이터와 명령어의 분포의 차이점을 도시한다.
연산 작업을 처리하기 위해서는 데이터와 명령어가 모두 필요하다. 도 3a 에서 도시된 경우와 같이 메모리(300)에 저장되는 데이터(310)의 크기는 작은데 비해 명령어(320)의 크기가 큰 경우에는 기능적 분할 방식이 유리하다. 그에 반해 도 3b 에서 도시된 경우와 같이 메모리(300)에 저장되는 데이터(330)의 크기는 큰데 비해 명령어(340)의 크기가 작은 경우에는 데이터 분할 방식이 유리하다.
그러나, 애플리케이션 특성에 따라 데이터와 명령어의 특성이 다를 수 있으며, 한 프로그램을 구성하는 각각의 모듈의 데이터와 명령어의 특성 역시 다를 수 있다. 따라서, 멀티프로세서의 병렬적 처리 분할 방식을 기능적 분할 방식 또는 데이터 분할 방식 중 어느 하나로 고정된다면, 데이터 및 명령어의 특성에 대해 유연하게 대응하지 못한다.
또한, 단일코어 시스템을 기준으로 한 H.264 복호화기의 명령어의 크기는 820 키로바이트이며 데이터 크기는 200키로바이트인데 반해, 로컬 메모리의 크기는 256키로바이트에 불과하다. 따라서, 로컬 메모리의 한정된 자원으로는 H.264 복호화 시스템을 효율적으로 구현하기 어렵다.
본 발명이 해결하고자 하는 과제는, 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치에서 고용량이며 연산량이 많은 멀티미디어 데이터를 효율적으로 처리하기 위해 효과적으로 멀티프로세서 자원을 사용하여 병렬 처리하는데 있다.
멀티프로세서의 효율적인 병렬 처리를 위해 데이터 분할 방식 및 기능적 분할 방식의 장점을 이용하고, 프로세서 별로 연산 부담량을 균등하게 분배하는 방법이 제안된다. 또한, 멀티프로세서들의 효율적인 연산 작업 명령을 위한 큐잉 방법 및 멀티프로세서 간의 효율적인 데이터 통신 방법이 제안된다.
상기 해결하고자 하는 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 중앙 프로세서 및 복수 개의 연산 프로세서를 포함하는 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에 있어서, 입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 단계; 상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 단계; 및 상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 단계를 포함한다.
일 실시예에 따른 상기 멀티미디어 복호화 방법은, 상기 입력된 멀티미디어 데이터를 상기 중앙 프로세서에서 판독하는 단계; 상기 판독된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 복호화를 위한 초기화 작업을 수행하는 단계; 상기 초기화된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 엔트로피 복호화하는 단계; 상기 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하는 단계; 및 상기 디블로킹 작업이 수행된 멀티미디어 데이터를 상기 중앙 프로세서에서 저장하는 단계를 더 포함하고, 상기 큐 생성 단계는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.
일 실시예의 상기 큐 생성 단계는, 각각의 연산 작업에 대한 큐에 상기 연산 작업들에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는 단계를 포함한다.
일 실시예의 상기 큐 생성 단계는, 상기 연산 작업에 대한 큐로부터 각각의 상기 연산 작업 큐에 대응되는 연산 프로세서에 상기 작업 파라미터 블록을 전송하는 단계를 더 포함한다.
일 실시예의 상기 작업 파라미터 블록 전송 단계는, 상기 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하는 단계; 및 상기 결정된 작업 파라미터 블록을 상기 소정 단위 시간마다 상기 연산 프로세서에 전송하는 단계를 포함한다.
일 실시예에 따른 상기 멀티미디어 복호화 방법은, 상기 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 단계; 및 각각의 분할된 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정하는 단계를 더 포함하고, 상기 큐 생성 단계는, 움직임 보상 작업을 위한 큐를 생성하는 경우, 상기 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성한다.
일 실시예의 상기 데이터 영역 분할 단계는, 상기 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하는 단계; 상기 연산 프로세서의 연산 부담량을 고려하여, 상기 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하는 단계; 및 상기 멀티미디어 데이터를 상기 분할 횟수만큼 데이터 영역으로 분할하는 단계를 포함하고, 상기 연산 프로세서 결정 단계는, 상기 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서를 결정한다.
일 실시예의 상기 데이터 영역 분할 단계는, 상기 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하는 단계; 및 상기 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정하는 단계를 포함한다.
일 실시예의 상기 데이터 영역 결정 단계는, 상기 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 상기 의존성이 있는 다른 데이터 중 하나의 데이터를 결정하는 단계를 포함한다.
상기 큐 생성 단계는, 상기 움직임 보상 작업에 대한 큐에 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순 서에 따라 저장하는 단계를 포함하고, 상기 작업 파라미터 블록 전송 단계는, 상기 움직임 보상 작업에 대한 큐로부터 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 전송하는 단계를 포함한다.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에서, 상기 중앙 프로세서와 상기 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력된다.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에서, 상기 중앙 프로세서의 메모리와 상기 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA(Direct Memory Access) 방식을 통해 입출력된다.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 상기 움직임 보상 작업을 위한 연산 프로세서에서의 상기 각각의 데이터 영역에 대한 움직임 보상 작업들을 동기화시키는 단계를 더 포함한다.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은 파이프라인 구조로 병렬적으로 처리되는 단계를 더 포함한다.
일 실시예의 상기 병렬적 처리 단계는, 상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은, 상기 멀티미디어 데이터가 데이터 처리 구간마다 N개의 데이터 단위로 나뉠 때, n은 1보다 크고 N보다 작은 양의 정수라면, 상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행 하고 상기 큐를 생성하는 단계; 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서는 제 (n)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하는 단계; 및 상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인프로 예측 작업을 수행하고, 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서에서 제 (n+1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하며, 상기 디블로킹 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 디블로킹 작업을 수행하여 상기 제 (n-1)번째 데이터 단위를 복원하는 단계를 포함한다.
상기 해결하고자 하는 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치는, 입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 큐 생성부; 상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 움직임 보상 작업 수행부; 및 상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 디블로킹 작업 수행부를 포함한다.
일 실시예에 따른 상기 멀티미디어 복호화 장치는,상기 중앙 프로세서에서, 상기 입력된 멀티미디어 데이터를 판독하고, 상기 판독된 멀티미디어 데이터에 대 해 복호화를 위한 초기화 작업을 수행하고, 상기 초기화된 멀티미디어 데이터에 대해 엔트로피 복호화하고, 상기 멀티미디어 데이터에 대해 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하고, 상기 디블로킹 작업이 수행된 멀티미디어 데이터를 저장하는 것을 특징으로 하고, 상기 큐 생성부는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.
또한 본 발명은, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체를 포함한다.
본 발명의 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치는, 데이터 분할 방식 및 기능적 분할 방식의 장점을 취합한 하이브리드 방식에 의해 멀티프로세서의 자원을 효과적으로 사용함으로써 용량이 많고 연산량이 많은 멀티미디어 데이터를 효율적으로 처리할 수 있다.
또한, 분할된 데이터 영역 별로 연산 부담량을 산출함으로써 연산 프로세서 간의 연산 부담량을 균등하게 분배함으로써 멀티프로세서의 병렬성을 향상시키는 효과가 있다.
중앙 프로세서에서 미리 프로세서들의 처리 순서에 따라 작업 파라미터를 순차적으로 큐잉함으로써 프로세서들이 파이프라인 구조의 효율적인 연산 작업을 수행할 수 있다. 또한, 멀티프로세서 간의 작업 동기화를 보장함으로써 멀티프로세서 의 병렬적 처리가 원활해진다.
본 발명에 실시예들에 대한 설명의 편의를 위해, 본 명세서에서 사용하는 데이터 단위에 대해 미리 정의한다.
데이터 처리 단위란 멀티미디어 데이터를 소정의 기준에 의해 구분하는 프레임, 슬라이스, 픽쳐 등의 단위를 뜻한다.
데이터 단위란, 데이터량이 많은 데이터 처리 단위를 보다 효율적으로 처리하기 위해 하나의 프로세서에서 주기적으로 순차적으로 처리할 수 있도록, 하나의 데이터 처리 단위를 여러 개의 부분으로 분할한 부분을 뜻한다. 예를 들면, 프레임이 복수 개의 데이터 단위로 나뉠 수 있다.
데이터 영역은, 멀티미디어 데이터의 효율적인 부복호화를 위해 여러 개의 프로세서에서 동시에 처리할 수 있도록, 적어도 하나 이상의 데이터 처리 단위를 포함하는 영역을 뜻한다. 예를 들면, 데이터 영역은 적어도 하나 이상의 프레임을 포함하는 영역이다.
이하 도 4 내지 도 9 를 참고하여, 본 발명의 일 실시예들에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 멀티미디어 복호화 장치의 구성 및 동작 방법이 상세히 후술된다.
도 4 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치의 블록도를 도시한다.
본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치(400)는 큐 생성부(410), 움직임 보상 작업 수행부(420), 역주파수 변환 및 역양자화부(430) 및 디블로킹 작업 수행부(440)를 포함한다. 멀티미디어 복호화 장치(400)는 멀티코어 플랫폼 기반이므로 복수 개의 연산 프로세서를 포함하며, 일 실시예는 중앙 프로세서 및 적어도 하나 이상의 연산 프로세서를 포함한다.
큐 생성부(410)는, 입력된 멀티미디어 데이터에 대해 중앙 프로세서 및 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐를 생성한다. 큐의 생성 작업은 중앙 프로세서에서 수행된다. 따라서, 큐 생성부(410)의 일 실시예는 중앙 프로세서의 일 요소이다.
멀티미디어 복호화 장치(400)의 일 실시예는 중앙 프로세서의 큐 생성부(410)에서 큐를 생성하기 이전에, 중앙 프로세서는 입력된 멀티미디어 데이터를 판독하고, 판독된 멀티미디어 데이터에 대해 복호화를 위한 초기화 작업을 수행한다. 또한, 중앙 프로세서는 초기화된 멀티미디어 데이터에 대해 이후에 수행될 엔트로피 복호화 작업, 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행한다. 큐 생성부(410)의 일 실시예는, 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.
큐 생성부(410)의 일 실시예는 작업 파라미터 블록을 전송하기 위해, 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하고, 결정된 작업 파라미터 블록을 소정 단위 시간마다 연산 프로세서에 전송한다.
큐 생성부(410)의 일 실시예는, 각각의 연산 작업에 대한 큐에 연산 작업들 에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는다. 또한 큐 생성부(410)의 일 실시예는 연산 작업에 대한 큐로부터 각각의 연산 작업 큐에 대응되는 연산 프로세서에 작업 파라미터 블록을 전송한다.
도면에 도시되지 않았지만, 일 실시예에 따른 멀티미디어 복호화 장치(400)는 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 데이터 영역 분할부를 포함한다. 일 실시예에 따른 멀티미디어 복호화 장치(400)는 데이터 영역 분할부에서 분할된 각각의 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정한다.
큐 생성부(410)의 일 실시예는, 움직임 보상 작업을 위한 큐를 생성하는 경우, 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성한다.
일 실시예의 데이터 영역 분할부는 멀티미디어 데이터의 각각의 데이터 처리 구간을 적어도 하나 이상의 데이터 영역을 분할하기 위해, 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하고, 연산 프로세서의 연산 부담량을 고려하여, 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하며, 멀티미디어 데이터를 분할 횟수만큼 데이터 영역으로 분할한다. 또한, 움직임 보상 작업을 위한 연산 프로세서로서 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서가 결정된다.
데이터 영역 분할부의 일 실시예는 데이터 영역으로의 분할을 위해, 멀티미 디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하고, 서로 의존성이 있는 데이터들이 분리되지 않도록 분할되는 데이터 영역을 결정한다.
또한, 데이터 영역 분할부의 일 실시예에서, 서로 의존성 있는 데이터들이 분리되지 않도록 데이터 영역을 분할하기 위해, 서로 의존성이 있는 것으로 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 의존성이 있는 다른 데이터 중 하나의 데이터를 결정한다.
큐 생성부(410)의 일 실시예는, 움직임 보상 작업에 대한 큐에 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 각각의 데이터 영역의 처리 순서에 따라 저장하고, 움직임 보상 작업에 대한 큐로부터 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 각각의 데이터 영역의 처리 순서에 따라 전송한다.
움직임 보상 작업 수행부(420)는, 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행한다.
역주파수 변환 빛 역양자화부(430)는, 움직임 보상 작업이 수행된 데이터에 대해 역주파수 변환 작업 및 역양자화 작업을 수행한다. 일 실시예의 역주파수 변환 및 역양자화부(430)는 중앙 프로세서의 일 부분이다.
디블로킹 작업 수행부(440)는, 연산 프로세서 중 하나의 연산 프로세서가 역주파수 변환 작업 및 역양자화 작업이 수행된 멀티미디어 데이터에 대한 디블로킹 작업을 수행한다.
멀티미디어 복호화 장치(400)의 일 실시예는, 중앙 프로세서가 디블로킹 작업이 수행된 멀티미디어 데이터를 저장한다.
도 5 은 연산 작업 별 연산 부담량의 분포를 도시한다.
도 5 에 도시된 그래프(500)는 멀티미디어 복호화 장치(400)에서 멀티미디어 데이터에 대해 복호화하는데 소요되는 시간의 일례를 각각의 연산 작업 별로 비율로 나타낸 것이다.
총 복호화 시간 중 멀티미디어 데이터에 대한 메인 루프(510)에서 소요되는 시간은 15%, 초기화 작업(520)에서 총 소요 시간의 3%, 엔트로피 복호화 작업(530)은 총 소요 시간의 5%, 움직임 보상 작업(540)은 총 소요 시간의 52%, 인트라 예측 작업(550)은 총 소요 시간의 1%, 역양자화 작업 및 역주파수변환 작업(560)은 총 소요 시간의 3%, 디블로킹 작업(570)은 총 소요 시간의 21%가 소요된다. 도 5 에 따르면, 멀티미디어 복호화 작업의 다양한 연산 작업에 있어서, 각각의 연산 작업 별로 소요 시간이 다르며, 이에 따라 연산 작업을 수행하는 프로세서들의 연산 부담량도 다르다.
이에 따라 본 발명의 일 실시예는, 중앙 프로세서에서는 메인 루프 작업(510), 초기화 작업(520), 인트라 예측 작업(550), 역양자화 작업 및 역주파수 변환 작업(560)을 수행하고, 일부 복수 개의 연산 프로세서에서 움직임 보상 작업(540)하고, 또 다른 연산 프로세서에서 디블로킹 작업(570)을 수행한다.
도 6 은 본 발명의 일 실시예에 따른 멀티미디어 복호화 장치의 하이브리드 분할 방식을 도시한다.
멀티미디어 복호화 장치(400)는 멀티코어 플랫폼(600) 기반이며, 중앙 프로세서(610) 및 복수 개의 연산 프로세서들(620)을 포함한다. 일 실시예의 연산 프로세서들(620)은 움직임 보상 작업을 위한 세 개의 연산 프로세서(630, 640, 650) 및 디블로킹 작업을 위한 연산 프로세서(660)를 구비한다.
본 발명의 멀티미디어 복호화 장치(400)는 중앙 프로세서(610)에서 데이터 판독 작업(611), 전처리 작업 및 초기화 작업(612), 엔트로피 복호화 작업(613) 및 작업 파라미터를 위한 큐 생성 작업(614), 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업(616), 데이터 저장 작업(618)을 수행하고, 한 세트의 연산 프로세서(630, 640, 650)에서 움직임 보상 작업(635, 645, 655)을 수행하며, 또 다른 연산 프로세서(660)에서 디블로킹 작업(667)을 수행한다. 이는 멀티코어 플랫폼에서의 기능적 분할 방식에 해당한다.
또한, 본 발명의 멀티미디어 복호화 장치(400)는 멀티미디어 데이터의 데이터 처리 단위를 적어도 하나 이상의 데이터 영역으로 분할하여, 각각의 데이터 영역에 대한 움직임 보상 작업(635, 645, 655)을 별개의 연산 프로세서(630, 640, 650)에서 수행한다. 이는 멀티코어 플랫폼에서의 데이터 분할 방식에 해당한다.
따라서, 본 발명의 멀티미디어 복호화 장치(400)는 각각의 멀티미디어 복호화 작업의 연산 작업의 연산 부담량을 고려하여 각각의 프로세서 별로 연산량을 분담하기 위해, 기능적 분할 방식 및 데이터 분할 방식을 조합한 하이브리드 분할 방식을 채택한다.
움직임 보상 작업을 위한 연산 프로세서의 개수를 정하기 위해, 본 발명의 일 실시예는, 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출한다. 산출된 연산 프로세서의 연산 부담량을 고려하여, 멀티미디어 데이터의 데이터 영역으로의 분할 횟수가 결정되고, 멀티미디어 데이터는 결정된 분할 횟수만큼 데이터 영역으로 분할된다. 이로 인해, 결정된 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서가 결정된다.
본 발명의 일 실시예에서, 중앙 프로세서(610) 및 다른 연산 프로세서들(630, 640, 650, 660) 사이의 연산 작업 동기화를 위한 시그널링은 메일 박스를 통해 이루어진다.
도 7 는 본 발명의 일 실시예에 따른 큐잉 방식 및 프로세서 간의 통신 방식을 도시한다.
중앙 프로세서(610)에 관한 큐 생성부(410)의 일 실시예는, 연산 프로세서들이 수행할 연산 작업에 관한 작업 파라미터를 포함하는 큐를 생성한다. 즉, 큐 생성부(410)의 일 실시예는, 연산 프로세서에서 처리된 연산 작업의 순서에 따라, 연산 작업에 관한 작업 파라미터 및 관련 데이터를 포함하는 파라미터 블록을 큐에 순차적으로 쌓음으로써 큐를 생성한다. 따라서, 큐 생성부(410)의 일 실시예는, 움직임 보상 작업을 위한 큐, 디블로킹 작업을 위한 큐, 역주파수변환 작업/역양자화 작업/인트라 예측 작업 등을 위한 각각의 큐를 생성한다.
도 7 에 도시된 움직임 보상 작업으로 예를 든다. 중앙 프로세서(610)는 움직임 보상 작업을 위한 프로세서들(630, 640, 650)에서 움직임 보상 작업의 수행을 위한 작업 파라미터 블록들(730, 740, 750)을 주 메모리의 움직임 보상 작업을 위 한 큐(710)에 순차적으로 쌓는다. 주 메모리는 중앙 프로세서의 메모리를 나타낸다.
또한, 각각의 작업 파라미터 블록(730, 740, 750)은 각각의 분할된 데이터 영역에 대한 움직임 보상 작업을 위한 연산 프로세서(630, 640, 650)에 대응되므로, 작업 처리 순서에 맞추어 연산 프로세서(630, 640, 650)로 출력된다. 일 실시예에서, 주 메모리와 연산 프로세서들(630, 640, 650)의 메모리들 사이의 데이터 통신은 DMA(Direct Memory Access) 방식을 통해 이루어지므로, 움직임 보상 작업을 위한 큐(710)로부터 연산 프로세서(630, 640, 650)로의 데이터 출력은 DMA 방식에 의한다.
전술한 바에 의하면, 중앙 프로세서(610) 및 연산 프로세서들(630, 640, 650) 사이의 연산 작업의 동기화를 위한 시그널링은 메일 박스를 통해 이루어진다.
본 발명의 프로세서들 간의 작업은 파이프라인 구조로 병렬적으로 수행되므로, 중앙 프로세서(610)는 현재 연산 프로세서(630, 640, 650)에서 움직임 보상 작업이 이루어질 데이터 단위에 대한 작업 파라미터 블록을 미리 주 메모리의 큐(710)에 쌓아놓는다. 일 실시예에 따른 멀티미디어 복호화 장치(400)의 파이프라인 구조의 병렬 처리는 이하 도 8을 참조하여 상세히 후술된다.
일 실시예의 데이터 영역은 프레임 내의 매크로 블록 단위로 분할될 수 있다. 하나의 데이터 영역은 복수 개의 매크로 블록을 포함할 수 있으며, 현재 데이터 처리 주기 동안 하나의 데이터 영역에 대해 하나의 연산 프로세서가 움직임 보상 작업을 수행한다.
데이터 영역 분할부의 일 실시예는, 서로 의존성이 있는 데이터 영역끼리는 분할되지 않도록 하기 위해, 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하고, 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정한다. 예를 들면, 서로 의존성이 있는 P 프레임과 B 프레임은 동일한 데이터 영역에 포함되도록 데이터 영역이 결정된다.
데이터 영역 분할부의 일 실시예는, 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 의존성이 있는 다른 데이터 중 하나의 데이터를 결정한다.
예를 들어 B 프레임(제 1 데이터)이 이전 P 프레임 및 다음 P 프레임(제 1 데이터와 의존성이 있는 둘 이상의 다른 데이터)을 참조하는 경우, 이전 P 프레임과 B 프레임 사이의 경계 또는 B 프레임과 다음 P 프레임 사이의 경계에서 데이터 영역을 분할해야 하는 경우, 데이터 영역 분할부는 두 경계 중 어느 하나에서 데이터 영역을 분할할지 여부를 결정한다.
도 8 은 본 발명의 일 실시예에 따라 파이프라인 구조의 프로세서 병렬 처리 방식을 도시한다.
도 8 에 도시된 일 실시예는 데이터 처리 단위의 일례로 프레임을, 데이터 처리 단위의 부분 단위인 데이터 단위의 일례로 프레임의 4분할 부분을 사용한다.
멀티미디어 복호화 장치(400)의 일 실시예는 파이프라인 구조의 프로세서 병렬 처리 방식에 따르므로, 아래의 순서에 의한다.
1. 중앙 프로세서(810)가 첫 번째 데이터 단위에 대해 엔트로피 복호화 작업 을 수행하고 큐를 생성(811)한 후, 움직임 보상 작업을 위한 연산 프로세서로 첫 번째 데이터 단위를 출력한다.
2. 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)가 첫 번째 데이터 단위에 대해 움직임 보상 작업을 수행(821, 831, 841)하는 동안, 중앙 프로세서(810)는 두 번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 큐를 생성(813)한다.
이번 데이터 단위 수행 기간 동안, 중앙 프로세서(810)로 첫 번째 데이터 단위가 출력되고, 움직임 작업을 위한 연산 프로세서(820, 830, 840)로 두 번째 데이터 단위가 출력된다.
움직임 보상 작업을 위한 연산 프로세서의 연산 작업(821, 831, 841) 및 중앙 프로세서의 연산 작업(813)이 완료되면, 중앙 프로세서(810) 및 움직임 보상 작업을 위한 프로세서(820, 830, 840)는 다음 데이터 단위에 대한 작업 연산을 수행할 준비가 된다.
3. 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)가 두 번째 데이터 단위에 대해 움직임 보상 작업을 수행(823, 833, 843)하는 동안, 중앙 프로세서는 첫 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행(814)하고, 첫 번째 데이터 단위에 대한 중앙 프로세서의 연산 작업이 완료한 후 디블로킹 작업을 위한 프로세서(850)로 첫 번째 데이터 단위가 출력된다.
디블로킹 작업을 위한 프로세서(850)는 첫 번째 데이터 단위에 대한 디블로 킹 작업을 수행(851)하고, 디블로킹 작업이 완료된 첫 번째 데이터 단위(861)를 최종적으로 복원한다.
중앙 프로세서가 첫 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업(814)을 완료한 후, 세 번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 큐를 생성(815)한다.
움직임 보상 작업을 위한 프로세서의 연산 작업(820, 830, 840)가 두 번째 데이터 단위에 대한 연산 작업(823, 833, 843)을 완료하면, 두 번째 데이터 단위(862)를 중앙 프로세서로 출력한다.
디블로킹 작업을 위한 연산 프로세서의 연산 작업(851), 움직임 보상 작업을 위한 연산 프로세서의 연산 작업(823, 833, 843) 및 중앙 프로세서의 연산 작업(815)이 모두 완료되면, 중앙 프로세서가 세 번째 데이터 단위에 대해 생성한 큐로부터 각각의 프로세서로 출력된 파라미터 블록에 의해 다음 작업 연산이 수행될 준비가 된다.
4. 전술된 1, 2, 3의 파이프라인 구조의 병렬 처리 과정이 반복된다. 따라서, 중앙 프로세서(810)에서 두 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인프라 예측 작업(816) 및 네 번째 데이터 단위에 대한 엔트로피 복호화 작업 및 큐 생성 작업(817)이 수행되는 동시에, 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)에서 세 번째 데이터 단위에 대한 움직임 보상 작업(825, 835, 845)가 수행되고, 디블로킹 연산 작업을 위한 연산 프로세서(850)는 두 번째 데이터 단위에 대해 디블로킹 작업(853)을 수행한다. 또한, 디블로킹 작 업(853)이 완료되면 두 번째 데이터 단위가 복원된다.
멀티미디어 복호화 장치(400)의 일 실시예는, 중앙 프로세서 및 연산 프로세서 간의 연산 작업의 동기화를 보장한다. 또한, 움직임 보상 작업을 위한 연산 프로세서의 일 실시예는 데이터 영역 별로 별개의 연산 프로세서에서 동시에 움직임 보상 작업을 수행하므로, 각각의 데이터 단위에 대한 움직임 보상 작업들(821, 831, 841 / 823, 833, 843 / 825, 835, 845)은 각각의 연산 프로세서에서 모두 동시에 수행된다.
도 9 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법의 흐름도를 도시한다.
단계 910에서, 입력된 멀티미디어 데이터에 대해, 중앙 프로세서에서 중앙 프로세서 및 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)가 생성된다.
멀티미디어 복호화 방법의 일 실시예는, 입력된 멀티미디어 데이터가 중앙 프로세서에서 판독되고, 판독된 멀티미디어 데이터에 대해 중앙 프로세서에서 복호화를 위한 초기화 작업이 수행되고, 초기화된 멀티미디어 데이터에 대해 중앙 프로세서에서 엔트로피 복호화 작업이 수행된다. 또한, 멀티미디어 데이터에 대해 중앙 프로세서에서 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나가 수행되고, 디블로킹 작업이 수행된 멀티미디어 데이터는 중앙 프로세서에서 저장된다.
일 실시예에서, 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐가 생성된다.
단계 920에서, 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업이 수행된다.
단계 930에서, 중앙 프로세서에서 움직임 보상 작업이 수행된 데이터에 대해 역주파수 변환 작업 및 역양자화 작업이 수행된다.
단계 940에서, 연산 프로세서 중 하나의 연산 프로세서가 역주파수 변환 작업 및 역양자화 작업이 수행된 멀티미디어 데이터에 대한 디블로킹 작업이 수행된다.
멀티미디어 복호화 방법의 일 실시예에서, 중앙 프로세서와 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력된다.
일 실시예에서, 중앙 프로세서의 메모리와 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA 방식을 통해 입출력된다.
일 실시예에서, 움직임 보상 작업을 위한 연산 프로세서에서의 각각의 데이터 영역에 대한 움직임 보상 작업들은 서로 동기화된다.
일 실시예에서, 중앙 프로세서 및 연산 프로세서들의 각각의 연산 작업들은 파이프라인 구조로 병렬적으로 처리된다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학 적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1 은 기능적 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.
도 2a 및 도 2b 는 데이터 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.
도 3a 및 도 3b 는 애플리케이션 특성에 따른 데이터와 명령어의 분포의 차이점을 도시한다.
도 4 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치의 블록도를 도시한다.
도 5 은 연산 작업 별 연산 부담량의 분포를 도시한다.
도 6 은 본 발명의 일 실시예에 따른 멀티미디어 복호화 장치의 하이브리드 분할 방식을 도시한다.
도 7 는 본 발명의 일 실시예에 따른 큐잉 방식 및 프로세서 간의 통신 방식을 도시한다.
도 8 은 본 발명의 일 실시예에 따라 파이프라인 구조의 프로세서 병렬 처리 방식을 도시한다.
도 9 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법의 흐름도를 도시한다.
Claims (31)
- 중앙 프로세서 및 복수 개의 연산 프로세서를 포함하는 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에 있어서,입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 단계;상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 단계; 및상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 1 항에 있어서,상기 멀티미디어 복호화 방법은,상기 입력된 멀티미디어 데이터를 상기 중앙 프로세서에서 판독하는 단계;상기 판독된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 복호화를 위한 초기화 작업을 수행하는 단계;상기 초기화된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 엔트로피 복호화하는 단계;상기 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하는 단계; 및상기 디블로킹 작업이 수행된 멀티미디어 데이터를 상기 중앙 프로세서에서 저장하는 단계를 더 포함하고,상기 큐 생성 단계는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 1 항에 있어서, 상기 큐 생성 단계는,각각의 연산 작업에 대한 큐에 상기 연산 작업들에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 3 항에 있어서, 상기 큐 생성 단계는,상기 연산 작업에 대한 큐로부터 각각의 상기 연산 작업 큐에 대응되는 연산 프로세서에 상기 작업 파라미터 블록을 전송하는 단계를 더 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 4 항에 있어서, 상기 작업 파라미터 블록 전송 단계는,상기 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하는 단계; 및상기 결정된 작업 파라미터 블록을 상기 소정 단위 시간마다 상기 연산 프로세서에 전송하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 1 항에 있어서,상기 멀티미디어 복호화 방법은,상기 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 단계; 및각각의 분할된 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정하는 단계를 더 포함하고,상기 큐 생성 단계는,움직임 보상 작업을 위한 큐를 생성하는 경우, 상기 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 6 항에 있어서,상기 데이터 영역 분할 단계는,상기 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하는 단계;상기 연산 프로세서의 연산 부담량을 고려하여, 상기 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하는 단계; 및상기 멀티미디어 데이터를 상기 분할 횟수만큼 데이터 영역으로 분할하는 단계를 포함하고,상기 연산 프로세서 결정 단계는, 상기 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서를 결정하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 6 항에 있어서, 상기 데이터 영역 분할 단계는,상기 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하는 단계; 및상기 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 8 항에 있어서,상기 데이터 영역 결정 단계는, 상기 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 상기 의존성이 있는 다른 데이터 중 하나의 데이터를 결정하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 6 항에 있어서,상기 큐 생성 단계는, 상기 움직임 보상 작업에 대한 큐에 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 저장하는 단계; 및상기 움직임 보상 작업에 대한 큐로부터 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 상기 움직임 보상 작업을 수행할 연산 프로세서들에게 전송하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 1 항에 있어서,상기 중앙 프로세서와 상기 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력되는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 1 항에 있어서,상기 중앙 프로세서의 메모리와 상기 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA(Direct Memory Access) 방식을 통해 입출력되는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 6 항에 있어서,상기 움직임 보상 작업을 위한 연산 프로세서에서의 상기 각각의 데이터 영 역에 대한 움직임 보상 작업들을 동기화시키는 단계를 더 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 2 항에 있어서,상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은 파이프라인 구조로 병렬적으로 처리되는 단계를 더 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 제 14 항에 있어서, 상기 병렬적 처리 단계는,상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은, 상기 멀티미디어 데이터가 데이터 처리 구간마다 N개의 데이터 단위로 나뉠 때, n은 1보다 크고 N보다 작은 양의 정수라면,상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하는 단계;상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서는 제 (n)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하는 단계; 및상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행하고, 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서에서 제 (n+1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하며, 상기 디블로킹 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 디블로킹 작업을 수행하여 상기 제 (n-1)번째 데이터 단위를 복원하는 단계를 포함하는 것을 특징으로 하는 멀티미디어 복호화 방법.
- 중앙 프로세서 및 복수 개의 연산 프로세서를 포함하는 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치에 있어서,입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 큐 생성부;상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 움직임 보상 작업 수행부; 및상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 디블로킹 작업 수행부를 포함하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 16 항에 있어서,상기 멀티미디어 복호화 장치는,상기 중앙 프로세서에서, 상기 입력된 멀티미디어 데이터를 판독하고, 상기 판독된 멀티미디어 데이터에 대해 복호화를 위한 초기화 작업을 수행하고, 상기 초기화된 멀티미디어 데이터에 대해 엔트로피 복호화하고, 상기 멀티미디어 데이터에 대해 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하고, 상기 디블로킹 작업이 수행된 멀티미디어 데이터를 저장하는 것을 특징으로 하고,상기 큐 생성부는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 16 항에 있어서, 상기 큐 생성부는,각각의 연산 작업에 대한 큐에 상기 연산 작업들에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 18 항에 있어서, 상기 큐 생성부는,상기 연산 작업에 대한 큐로부터 각각의 상기 연산 작업 큐에 대응되는 연산 프로세서에 상기 작업 파라미터 블록을 전송하는 작업 파라미터 블록 전송부를 더 포함하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 19 항에 있어서, 상기 작업 파라미터 블록 전송부는,상기 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하고, 상기 결정된 작업 파라미터 블록을 상기 소정 단위 시간마다 상기 연산 프로세서에 전송하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 16 항에 있어서,상기 멀티미디어 복호화 장치는,상기 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 데이터 영역 분할부; 및각각의 분할된 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정하는 움직임 보상 프로세서 결정부를 더 포함하고,상기 큐 생성부는,움직임 보상 작업을 위한 큐를 생성하는 경우, 상기 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 21 항에 있어서,상기 데이터 영역 분할부는, 상기 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하고, 상기 연산 프로세서의 연산 부담량을 고려하여, 상기 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하여, 상기 멀티미디어 데이터를 상기 분할 횟수만큼 데이터 영역으로 분할하는 것을 특징으로 하고,상기 움직임 보상 프로세서 결정부는, 상기 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서를 결정하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 21 항에 있어서, 상기 데이터 영역 분할부는,상기 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하고, 상기 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 23 항에 있어서,상기 데이터 영역 분할부는, 상기 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 상기 의존성이 있는 다른 데이터 중 하나의 데이터를 결정하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 21 항에 있어서,상기 큐 생성부는, 상기 움직임 보상 작업에 대한 큐에 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 저장하고,상기 움직임 보상 작업에 대한 큐로부터 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 상기 움직임 보상 작업을 수행할 연산 프로세서들에게 전송하는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 16 항에 있어서,상기 중앙 프로세서와 상기 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력되는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 16 항에 있어서,상기 중앙 프로세서의 메모리와 상기 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA(Direct Memory Access) 방식을 통해 입출력되는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 21 항에 있어서,상기 움직임 보상 작업을 위한 연산 프로세서에서의 상기 각각의 데이터 영역에 대한 움직임 보상 작업들을 동기화시키는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 17 항에 있어서,상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은 파이 프라인 구조로 병렬적으로 처리되는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 29 항에 있어서,상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은,상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은, 상기 멀티미디어 데이터가 데이터 처리 구간마다 N개의 데이터 단위로 나뉠 때, n은 1보다 크고 N보다 작은 양의 정수라면,상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성한 후,상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서는 제 (n)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성한 후,상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행하고, 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서에서 제 (n+1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하며, 상기 디블로킹 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 디블로킹 작업을 수행하여 상기 제 (n-1)번째 데이터 단위를 복원함으로써 파이프라인 구조로 병렬적으로 처리되는 것을 특징으로 하는 멀티미디어 복호화 장치.
- 제 1 항 내지 제 15 항 중 어느 한 항의 멀티미디어 복호화 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/179,023 US8634470B2 (en) | 2007-07-24 | 2008-07-24 | Multimedia decoding method and multimedia decoding apparatus based on multi-core processor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US95156707P | 2007-07-24 | 2007-07-24 | |
US60/951,567 | 2007-07-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090010860A KR20090010860A (ko) | 2009-01-30 |
KR101355375B1 true KR101355375B1 (ko) | 2014-01-22 |
Family
ID=40489959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070126891A KR101355375B1 (ko) | 2007-07-24 | 2007-12-07 | 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101355375B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101601180B1 (ko) * | 2009-05-01 | 2016-03-08 | 연세대학교 산학협력단 | 데이터 처리 장치 및 그것의 동적 병렬 네트워크 코딩 방법 |
KR20110055022A (ko) | 2009-11-19 | 2011-05-25 | 한국전자통신연구원 | 데이터 및 기능적 분할 방식에 기반한 동영상 복호화 장치 및 방법 |
KR101279507B1 (ko) * | 2009-12-15 | 2013-06-28 | 한국전자통신연구원 | 병렬 처리 기반 파이프라인 복호화 장치 및 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040057465A1 (en) | 2002-09-24 | 2004-03-25 | Koninklijke Philips Electronics N.V. | Flexible data partitioning and packetization for H.26L for improved packet loss resilience |
KR20050021233A (ko) * | 2003-08-21 | 2005-03-07 | 마츠시타 덴끼 산교 가부시키가이샤 | 신호 처리 장치 및 그것을 이용한 전자 기기 |
US20060056517A1 (en) | 2002-04-01 | 2006-03-16 | Macinnis Alexander G | Method of communicating between modules in a decoding system |
KR20060053568A (ko) * | 2004-11-17 | 2006-05-22 | 엘지전자 주식회사 | 이동 방송 수신기의 비디오 디코딩 시스템 |
-
2007
- 2007-12-07 KR KR1020070126891A patent/KR101355375B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060056517A1 (en) | 2002-04-01 | 2006-03-16 | Macinnis Alexander G | Method of communicating between modules in a decoding system |
US20040057465A1 (en) | 2002-09-24 | 2004-03-25 | Koninklijke Philips Electronics N.V. | Flexible data partitioning and packetization for H.26L for improved packet loss resilience |
KR20050021233A (ko) * | 2003-08-21 | 2005-03-07 | 마츠시타 덴끼 산교 가부시키가이샤 | 신호 처리 장치 및 그것을 이용한 전자 기기 |
KR20060053568A (ko) * | 2004-11-17 | 2006-05-22 | 엘지전자 주식회사 | 이동 방송 수신기의 비디오 디코딩 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR20090010860A (ko) | 2009-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11388405B2 (en) | Content aware scheduling in a HEVC decoder operating on a multi-core processor platform | |
Fouladi et al. | Encoding, fast and slow:{Low-Latency} video processing using thousands of tiny threads | |
Meenderinck et al. | Parallel scalability of video decoders | |
US8634470B2 (en) | Multimedia decoding method and multimedia decoding apparatus based on multi-core processor | |
US8532196B2 (en) | Decoding device, recording medium, and decoding method for coded data | |
JPWO2010095358A1 (ja) | タスク割当装置、タスク割当方法、及び、タスク割当プログラム | |
Juurlink et al. | Scalable parallel programming applied to H. 264/AVC decoding | |
KR101355375B1 (ko) | 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치 | |
Radicke et al. | A multi-threaded full-feature HEVC encoder based on wavefront parallel processing | |
Collins et al. | Flexible filters: load balancing through backpressure for stream programs | |
Wang et al. | A collaborative scheduling-based parallel solution for HEVC encoding on multicore platforms | |
Gudumasu et al. | Software-based versatile video coding decoder parallelization | |
Kim et al. | H. 264/AVC decoder parallelization and optimization on asymetric multicore platform using dynamic load balancing | |
Duy et al. | Hybrid MPI-OpenMP paradigm on SMP clusters: MPEG-2 encoder and n-body simulation | |
EP3149943B1 (en) | Content aware scheduling in a hevc decoder operating on a multi-core processor platform | |
Radicke et al. | Many-core HEVC encoding based on wavefront parallel processing and GPU-accelerated motion estimation | |
Chen et al. | A novel parallel H. 264 decoder using dynamic load balance on dual core embedded system | |
Wang et al. | Multi-Grain Parallel Accelerate System for H. 264 Encoder on ULTRASPARC T2. | |
JP5236386B2 (ja) | 画像復号装置及び画像復号方法 | |
Migallón et al. | Synchronous and asynchronous HEVC parallel encoder versions based on a GOP approach | |
Aboalmaaly et al. | Data-Level Parallel Approaches for the H. 264 Coding: A Review | |
JP5120324B2 (ja) | 画像復号装置及び画像復号方法 | |
Chahal et al. | A comparative study for optimization of video file compression in cloud environment | |
Jeong et al. | Parallelization and performance prediction for HEVC UHD real-time software decoding | |
Kim et al. | Exploiting thread-level parallelism on HEVC by employing a reference dependency graph |
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: 20161220 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181218 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20191216 Year of fee payment: 7 |