KR20090010860A - Method and apparatus for decoding multimedia based on multicore processor - Google Patents
Method and apparatus for decoding multimedia based on multicore processor Download PDFInfo
- Publication number
- KR20090010860A KR20090010860A KR1020070126891A KR20070126891A KR20090010860A KR 20090010860 A KR20090010860 A KR 20090010860A KR 1020070126891 A KR1020070126891 A KR 1020070126891A KR 20070126891 A KR20070126891 A KR 20070126891A KR 20090010860 A KR20090010860 A KR 20090010860A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- processor
- queue
- 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
Abstract
Description
본 발명은 멀티미디어 데이터의 복호화 방법 및 장치에 관한 것으로, 상세하게는 멀티코어 플랫폼 기반의 멀티미디어 복호화 시스템의 효율적인 설계 방법 및 효율적인 복호화 장치에 관한 것이다.The present invention relates to a method and apparatus for decoding multimedia data, and more particularly, to an efficient design method and an efficient decoding apparatus for a multi-core platform-based multimedia decoding system.
H.264 포맷의 용량이 크고 높은 연산량을 가짐으로 인해, 비대칭성 멀티코어 플랫폼 환경에서 H.264 포맷을 효율적으로 복호화 방식이 제안되고 있다. 그러나, H.264는 슬라이스 단위 처리가 가능한 MPEG-2와 달리 화면들 간의 데이터의 상호 의존성 뿐만 아니라 한 화면 내에서도 데이터의 상호 의존성이 존재하므로, 멀티코어 플랫폼 기반의 복호화 시스템의 병렬적 처리 방식이 구현되기 어렵다.Due to the large capacity of the H.264 format and a high amount of computation, an efficient decoding method of the H.264 format has been proposed in an asymmetric multicore platform environment. However, unlike MPEG-2, which can process slice-by-slice, H.264 has not only data interdependency but also interdependence of data within one screen, so that a parallel processing scheme of a decoding system based on a multicore platform is implemented. It's hard to be.
종래의 병렬 처리를 위한 분할 방식으로는 프로세서에서 처리될 데이터 자체를 분할하는 데이터 분할 방식과 파이프라인 방식과 같이 연산 모듈 단계를 나누어 처리하는 기능적 분할 방식이 있다.Conventional partitioning schemes include a data partitioning scheme for partitioning data to be processed by a processor and a functional partitioning scheme for dividing a processing module step like a pipelined scheme.
도 1 은 기능적 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.1 illustrates an example of a multicore platform system with a functional partitioning scheme.
기능적 분할 방식은 복수 개의 프로세서(110, 120, 130, 140)를 구비하여 각각의 프로세서에 대해 특정 기능이 할당된다. 도 1에 도시된 프로세서 1(110)은 데이터 판독 기능(112), 전처리 및 초기화 기능(114), 데이터 저장 기능(116)이 할당되며, 프로세서 2(120)에는 엔트로피 복호화 기능(122)이 할당된다. 프로세스 3(130)에는 역주파수변환 및 역양자화 기능(132)과 화면 내 예측 및 움직임 보상 기능(134)가 할당된다. 프로세서 4(140)에는 디블로킹 기능(142)가 할당된다.The functional partitioning scheme includes a plurality of processors 110, 120, 130, and 140 so that specific functions are assigned to each processor. The
기능적 분할 방식은 분산된 각 연산 모듈이 처리하는 작업 부담량이 일정하기 않은 경우, 일정한 성능을 보장하기가 어렵다. 즉, 프로세서 1의 처리 시간(150), 프로세서 2의 처리 시간(160), 프로세서 3의 처리 시간(170) 및 프로세서 4의 처리 시간(180)이 모두 다르기 때문에, 멀티프로세서의 처리 시간은 가장 오랜 작업 처리 시간인 프로세서 3의 처리 시간(170) 때문에 초과 처리 시간(190)만큼의 크리티컬 패쓰(Critical Path)가 발생된다. 따라서, 멀티코어 시스템의 병렬성 및 활용성이 감소된다. In the functional partitioning scheme, it is difficult to guarantee a constant performance when the workload of each distributed computing module is not constant. That is, since the
도 2a 및 도 2b 는 데이터 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.2A and 2B show an example of a multicore platform system with a data partitioning scheme.
도 2a 를 참조하면, 데이터 분할 방식의 일례는 하나의 프레임(200)을 여러 개의 슬라이스(210, 212, 214)로 분할하여, 각각의 슬라이스마다 서로 다른 프로세서(220, 230, 240)에서 복호화 처리를 수행하도록 한다. 즉, 하나의 프로세서의 모든 복호화 과정을 수행하게 된다. 데이터 분할 방식은 단순 데이터 처리에 대해서는 높은 병렬성을 보장한다. 그러나 데이터 사이에 상호 의존성이 존재하면 데이터 분할 방식은 구현되기 어렵고 의존성을 해결하기 위한 추가 작업이 필요하므로 성능이 급격히 저하된다. 따라서 화면 간 예측 기법 뿐만 아니라 화면 내 예측 기법까지 수행되어야 하는 H.264 기반의 복호화 시스템에서는 부적합하다. Referring to FIG. 2A, one example of a data partitioning method is to divide one
또한, 도 2b 를 참조하면, 프레임(250)이 분할된 슬라이스들(260, 270, 280)의 데이터 크기와 연산 부담량의 관계가 예측하기 어렵다. 즉, 슬라이스 1(260) 및 슬라이스 3(280)을 각각 처리하는 프로세서 1(220) 및 프로세서 3(240)은 연산 부담량이 적지만, 데이터 크기가 슬라이스 2(270)를 처리하는 프로세서 2(230)만이 연산 부담량이 커진다. 즉, 분할된 데이터 크기의 불균형으로 인해 프로세서 간의 연산 부담량이 불균등하게 할당되어 자원 활용의 효율성이 떨어지게 된다. In addition, referring to FIG. 2B, it is difficult to predict the relationship between the data size and the computational burden of the
뿐만 아니라, 각각의 데이터 간 의존성이 존재한다면 병렬 처리 구조의 구현이 복잡해지고, 작업 처리 과정이 지연되게 될 수도 있다. 또한, 멀티코어 플랫폼을 구성하는 부분 코어들의 자원이 한정적인데 반해, 각각의 코어가 전체 연산 과정에 대한 데이터를 가지고 있어야 하므로 비효율적이다.In addition, the existence of dependencies between each data can complicate the implementation of parallel processing architectures and delay processing. In addition, while the resources of the partial cores constituting the multicore platform are limited, it is inefficient because each core must have data for the entire calculation process.
도 3a 및 도 3b 는 애플리케이션 특성에 따른 데이터와 명령어의 분포의 차이점을 도시한다.3A and 3B show differences in the distribution of data and instructions according to application characteristics.
연산 작업을 처리하기 위해서는 데이터와 명령어가 모두 필요하다. 도 3a 에서 도시된 경우와 같이 메모리(300)에 저장되는 데이터(310)의 크기는 작은데 비해 명령어(320)의 크기가 큰 경우에는 기능적 분할 방식이 유리하다. 그에 반해 도 3b 에서 도시된 경우와 같이 메모리(300)에 저장되는 데이터(330)의 크기는 큰데 비해 명령어(340)의 크기가 작은 경우에는 데이터 분할 방식이 유리하다.Both data and instructions are required to handle computational tasks. As shown in FIG. 3A, when the size of the
그러나, 애플리케이션 특성에 따라 데이터와 명령어의 특성이 다를 수 있으며, 한 프로그램을 구성하는 각각의 모듈의 데이터와 명령어의 특성 역시 다를 수 있다. 따라서, 멀티프로세서의 병렬적 처리 분할 방식을 기능적 분할 방식 또는 데이터 분할 방식 중 어느 하나로 고정된다면, 데이터 및 명령어의 특성에 대해 유연하게 대응하지 못한다.However, the characteristics of data and instructions may vary according to application characteristics, and the characteristics of data and instructions of each module constituting a program may also vary. Therefore, if the parallel processing partitioning scheme of the multiprocessor is fixed to either a functional partitioning scheme or a data partitioning scheme, it cannot flexibly correspond to the characteristics of data and instructions.
또한, 단일코어 시스템을 기준으로 한 H.264 복호화기의 명령어의 크기는 820 키로바이트이며 데이터 크기는 200키로바이트인데 반해, 로컬 메모리의 크기는 256키로바이트에 불과하다. 따라서, 로컬 메모리의 한정된 자원으로는 H.264 복호화 시스템을 효율적으로 구현하기 어렵다.In addition, the size of the instructions of the H.264 decoder based on a single core system is 820 kilobytes and the data size is 200 kilobytes, whereas the local memory is only 256 kilobytes. Therefore, it is difficult to efficiently implement an H.264 decoding system with limited resources of local memory.
본 발명이 해결하고자 하는 과제는, 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치에서 고용량이며 연산량이 많은 멀티미디어 데이터를 효율적으로 처리하기 위해 효과적으로 멀티프로세서 자원을 사용하여 병렬 처리하는데 있다.Disclosure of Invention Problems to be Solved by the Invention An object of the present invention is to effectively process parallel data using multiprocessor resources in order to efficiently process high-capacity and computation-intensive multimedia data in a multi-core platform-based multimedia decoding method and apparatus.
멀티프로세서의 효율적인 병렬 처리를 위해 데이터 분할 방식 및 기능적 분할 방식의 장점을 이용하고, 프로세서 별로 연산 부담량을 균등하게 분배하는 방법이 제안된다. 또한, 멀티프로세서들의 효율적인 연산 작업 명령을 위한 큐잉 방법 및 멀티프로세서 간의 효율적인 데이터 통신 방법이 제안된다.For efficient parallel processing of multiprocessors, a method of using the advantages of the data partitioning method and the functional partitioning method and distributing the operation load evenly for each processor is proposed. In addition, a queuing method for efficient computational work instructions of multiprocessors and an efficient data communication method between the multiprocessors are proposed.
상기 해결하고자 하는 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 중앙 프로세서 및 복수 개의 연산 프로세서를 포함하는 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에 있어서, 입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 단계; 상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 단계; 및 상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 단계를 포함한다.In order to achieve the above object, the multi-core platform-based multimedia decoding method according to an embodiment of the present invention, in the multi-core platform-based multimedia decoding method comprising a central processor and a plurality of arithmetic processor, input Generating a queue of at least one computational task for the centralized processor and the arithmetic processor to perform, for the multimedia data that has been processed; Performing a motion compensation operation for each data region in which the multimedia data is divided in at least one or more of the computing processors; And performing, by one of the arithmetic processors, a deblocking operation on the multimedia data.
일 실시예에 따른 상기 멀티미디어 복호화 방법은, 상기 입력된 멀티미디어 데이터를 상기 중앙 프로세서에서 판독하는 단계; 상기 판독된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 복호화를 위한 초기화 작업을 수행하는 단계; 상기 초기화된 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 엔트로피 복호화하는 단계; 상기 멀티미디어 데이터에 대해 상기 중앙 프로세서에서 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하는 단계; 및 상기 디블로킹 작업이 수행된 멀티미디어 데이터를 상기 중앙 프로세서에서 저장하는 단계를 더 포함하고, 상기 큐 생성 단계는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.The multimedia decoding method according to an embodiment may include: reading the input multimedia data by the central processor; Performing an initialization operation for decoding on the read multimedia data in the central processor; Entropy decoding the initialized multimedia data in the central processor; Performing at least one of an inverse frequency transform operation, an inverse quantization operation, and an intra prediction operation on the multimedia data in the central processor; And storing, by the central processor, the multimedia data on which the deblocking operation has been performed, wherein the queue generating step generates a queue for arithmetic operations on the entropy decoded multimedia data.
일 실시예의 상기 큐 생성 단계는, 각각의 연산 작업에 대한 큐에 상기 연산 작업들에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는 단계를 포함한다.The queue creation step of an embodiment includes putting a work parameter block containing work parameters for the arithmetic tasks into a queue for each arithmetic task.
일 실시예의 상기 큐 생성 단계는, 상기 연산 작업에 대한 큐로부터 각각의 상기 연산 작업 큐에 대응되는 연산 프로세서에 상기 작업 파라미터 블록을 전송하는 단계를 더 포함한다.The queue generating step of the embodiment may further include transmitting the work parameter block from a queue for the arithmetic work to an arithmetic processor corresponding to each arithmetic work queue.
일 실시예의 상기 작업 파라미터 블록 전송 단계는, 상기 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하는 단계; 및 상기 결정된 작업 파라미터 블록을 상기 소정 단위 시간마다 상기 연산 프로세서에 전송하는 단계를 포함한다.In an embodiment, the step of transmitting a work parameter block may include: determining a work parameter block that may be processed by the operation processor for a predetermined unit time; And transmitting the determined job parameter block to the operation processor at each predetermined unit time.
일 실시예에 따른 상기 멀티미디어 복호화 방법은, 상기 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 단계; 및 각각의 분할된 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정하는 단계를 더 포함하고, 상기 큐 생성 단계는, 움직임 보상 작업을 위한 큐를 생성하는 경우, 상기 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성한다.The multimedia decoding method according to an embodiment of the present invention comprises the steps of: dividing the multimedia data into at least one data area; And determining a separate operation processor to perform a motion compensation task on each of the divided data regions, wherein the queue generating step includes: when generating a queue for the motion compensation task, performing the motion compensation task; Each of the arithmetic processors to be executed generates a queue including a block of work parameters to be performed on the data area.
일 실시예의 상기 데이터 영역 분할 단계는, 상기 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하는 단계; 상기 연산 프로세서의 연산 부담량을 고려하여, 상기 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하는 단계; 및 상기 멀티미디어 데이터를 상기 분할 횟수만큼 데이터 영역으로 분할하는 단계를 포함하고, 상기 연산 프로세서 결정 단계는, 상기 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서를 결정한다.In an exemplary embodiment, the data area partitioning step may include calculating an operation burden of an operation processor for a motion compensation operation on the multimedia data; Determining the number of divisions of the multimedia data into a data area in consideration of an operation burden of the operation processor; And dividing the multimedia data into the data area by the number of divisions, wherein the operation processor determining step determines the number of operation processors equal to the number of divisions of the multimedia data.
일 실시예의 상기 데이터 영역 분할 단계는, 상기 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하는 단계; 및 상기 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정하는 단계를 포함한다.In an exemplary embodiment, the data area segmentation may include detecting data having dependencies on the multimedia data; And determining the divided data area so that the data which are dependent on each other are not separated.
일 실시예의 상기 데이터 영역 결정 단계는, 상기 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 상기 의존성이 있는 다른 데이터 중 하나의 데이터를 결정하는 단계를 포함한다.The determining of the data area of the present embodiment may include: when the first data of the detected data is dependent on two or more other data, one of the other data having the dependency as data to be included in the same data area as the first data. Determining the data.
상기 큐 생성 단계는, 상기 움직임 보상 작업에 대한 큐에 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순 서에 따라 저장하는 단계를 포함하고, 상기 작업 파라미터 블록 전송 단계는, 상기 움직임 보상 작업에 대한 큐로부터 상기 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 상기 각각의 데이터 영역의 처리 순서에 따라 전송하는 단계를 포함한다.The queue generating step may include storing a job parameter block for each divided data area in a queue for the motion compensation job according to the processing order of each data area, and transmitting the job parameter block. The step includes transmitting, from the queue for the motion compensation task, a task parameter block for each of the divided data regions according to the processing order of the respective data regions.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에서, 상기 중앙 프로세서와 상기 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력된다.In the multi-core platform-based multimedia decoding method according to an embodiment, the synchronization signal between the central processor and the computing processor is input and output through a mailbox method.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법에서, 상기 중앙 프로세서의 메모리와 상기 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA(Direct Memory Access) 방식을 통해 입출력된다.In the multi-core platform-based multimedia decoding method according to an embodiment, data between the memory of the central processor and the memory of each of the computing processors is input and output through a direct memory access (DMA) method.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 상기 움직임 보상 작업을 위한 연산 프로세서에서의 상기 각각의 데이터 영역에 대한 움직임 보상 작업들을 동기화시키는 단계를 더 포함한다.The multi-core platform-based multimedia decoding method according to an embodiment further includes synchronizing motion compensation tasks for the respective data regions in the operation processor for the motion compensation task.
일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법은, 상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은 파이프라인 구조로 병렬적으로 처리되는 단계를 더 포함한다.The multi-core platform-based multimedia decoding method according to an embodiment of the present invention further comprises the step of processing the respective operations of the central processor and the computing processors in a pipeline structure in parallel.
일 실시예의 상기 병렬적 처리 단계는, 상기 중앙 프로세서 및 상기 연산 프로세서들의 각각의 연산 작업들은, 상기 멀티미디어 데이터가 데이터 처리 구간마다 N개의 데이터 단위로 나뉠 때, n은 1보다 크고 N보다 작은 양의 정수라면, 상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행 하고 상기 큐를 생성하는 단계; 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서는 제 (n)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하는 단계; 및 상기 중앙 프로세서에서 제 (n-1)번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인프로 예측 작업을 수행하고, 상기 움직임 보상 작업을 위한 연산 프로세서에서 상기 제 (n)번째 데이터 단위에 대해 움직임 보상 작업을 수행하고, 상기 중앙 프로세서에서 제 (n+1)번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 상기 큐를 생성하며, 상기 디블로킹 작업을 위한 연산 프로세서에서 상기 제 (n-1)번째 데이터 단위에 대해 디블로킹 작업을 수행하여 상기 제 (n-1)번째 데이터 단위를 복원하는 단계를 포함한다.In the parallel processing of the embodiment, the computational tasks of the central processor and the computational processors may be defined as: n is greater than 1 and less than N when the multimedia data is divided into N data units per data processing interval. If it is an integer, performing an entropy decoding operation on the (n-1) th data unit in the central processor and generating the queue; The operation processor for the motion compensation task performs a motion compensation task on the (n-1) th data unit, and the central processor performs an entropy decoding operation on the (n) th data unit and performs the queue. Generating; And performing an inverse frequency transform operation, an inverse quantization operation, and an in-prediction operation on the (n-1) th data unit in the central processor, and the (n) th data unit in the arithmetic processor for the motion compensation task. Performs a motion compensation operation on the processor, performs an entropy decoding operation on the (n + 1) th data unit in the central processor, generates the queue, and executes the (n−) operation processor in the operation processor for the deblocking operation. 1) restoring the (n-1) th data unit by performing a deblocking operation on the first data unit.
상기 해결하고자 하는 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치는, 입력된 멀티미디어 데이터에 대해, 상기 중앙 프로세서에서 상기 중앙 프로세서 및 상기 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)를 생성하는 큐 생성부; 상기 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 상기 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행하는 움직임 보상 작업 수행부; 및 상기 연산 프로세서 중 하나의 연산 프로세서가 상기 멀티미디어 데이터에 대한 디블로킹 작업을 수행하는 디블로킹 작업 수행부를 포함한다.In order to achieve the object to be solved, the multi-core platform-based multimedia decoding apparatus according to an embodiment of the present invention, at least for the central processor and the operation processor to perform the input multimedia data in the central processor; A queue generator for generating a queue for one or more arithmetic operations; A motion compensation task performing unit configured to perform a motion compensation task for each data region in which the multimedia data is divided in at least one or more of the computing processors; And a deblocking task execution unit configured to perform a deblocking operation on the multimedia data by one of the arithmetic processors.
일 실시예에 따른 상기 멀티미디어 복호화 장치는,상기 중앙 프로세서에서, 상기 입력된 멀티미디어 데이터를 판독하고, 상기 판독된 멀티미디어 데이터에 대 해 복호화를 위한 초기화 작업을 수행하고, 상기 초기화된 멀티미디어 데이터에 대해 엔트로피 복호화하고, 상기 멀티미디어 데이터에 대해 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나를 수행하고, 상기 디블로킹 작업이 수행된 멀티미디어 데이터를 저장하는 것을 특징으로 하고, 상기 큐 생성부는, 상기 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.The multimedia decoding apparatus according to an embodiment of the present disclosure, in the central processor, reads the input multimedia data, performs an initialization operation for decoding the read multimedia data, and entropys the initialized multimedia data. And decode, perform at least one of an inverse frequency transform operation, an inverse quantization operation, and an intra prediction operation on the multimedia data, and store the multimedia data on which the deblocking operation is performed. Create a queue for arithmetic operations on entropy-decoded multimedia data.
또한 본 발명은, 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체를 포함한다.The present invention also includes a computer-readable recording medium having recorded thereon a program for implementing a multi-core platform-based multimedia decoding method according to an embodiment of the present invention.
본 발명의 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치는, 데이터 분할 방식 및 기능적 분할 방식의 장점을 취합한 하이브리드 방식에 의해 멀티프로세서의 자원을 효과적으로 사용함으로써 용량이 많고 연산량이 많은 멀티미디어 데이터를 효율적으로 처리할 수 있다.The multi-core platform-based multimedia decoding method and apparatus of the present invention efficiently utilizes multiprocessor resources by using a hybrid method that combines the advantages of the data partitioning method and the functional partitioning method. Can be processed.
또한, 분할된 데이터 영역 별로 연산 부담량을 산출함으로써 연산 프로세서 간의 연산 부담량을 균등하게 분배함으로써 멀티프로세서의 병렬성을 향상시키는 효과가 있다. In addition, by calculating the computational burden for each divided data region, the computational burden among the computing processors is equally distributed, thereby improving the parallelism of the multiprocessor.
중앙 프로세서에서 미리 프로세서들의 처리 순서에 따라 작업 파라미터를 순차적으로 큐잉함으로써 프로세서들이 파이프라인 구조의 효율적인 연산 작업을 수행할 수 있다. 또한, 멀티프로세서 간의 작업 동기화를 보장함으로써 멀티프로세서 의 병렬적 처리가 원활해진다.By sequentially queuing the job parameters according to the processing order of the processors in advance in the central processor, the processors can perform efficient computational work of the pipeline structure. In addition, the parallel processing of multiprocessors is facilitated by ensuring the synchronization of tasks between multiprocessors.
본 발명에 실시예들에 대한 설명의 편의를 위해, 본 명세서에서 사용하는 데이터 단위에 대해 미리 정의한다. For convenience of description of the embodiments of the present invention, the data unit used herein is defined in advance.
데이터 처리 단위란 멀티미디어 데이터를 소정의 기준에 의해 구분하는 프레임, 슬라이스, 픽쳐 등의 단위를 뜻한다. The data processing unit refers to a unit of a frame, slice, picture, etc. that divides the multimedia data by a predetermined criterion.
데이터 단위란, 데이터량이 많은 데이터 처리 단위를 보다 효율적으로 처리하기 위해 하나의 프로세서에서 주기적으로 순차적으로 처리할 수 있도록, 하나의 데이터 처리 단위를 여러 개의 부분으로 분할한 부분을 뜻한다. 예를 들면, 프레임이 복수 개의 데이터 단위로 나뉠 수 있다. The data unit refers to a portion in which one data processing unit is divided into several parts so that one processor may sequentially process the data processing unit having a large amount of data more efficiently. For example, a frame may be divided into a plurality of data units.
데이터 영역은, 멀티미디어 데이터의 효율적인 부복호화를 위해 여러 개의 프로세서에서 동시에 처리할 수 있도록, 적어도 하나 이상의 데이터 처리 단위를 포함하는 영역을 뜻한다. 예를 들면, 데이터 영역은 적어도 하나 이상의 프레임을 포함하는 영역이다.The data area refers to an area including at least one data processing unit so that multiple processors can simultaneously process the multimedia data for efficient decoding and decoding. For example, the data area is an area including at least one frame.
이하 도 4 내지 도 9 를 참고하여, 본 발명의 일 실시예들에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 멀티미디어 복호화 장치의 구성 및 동작 방법이 상세히 후술된다.Hereinafter, referring to FIGS. 4 to 9, a method of configuring and operating a multimedia decoding method and a multimedia decoding apparatus based on a multicore platform according to an embodiment of the present invention will be described in detail.
도 4 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치의 블록도를 도시한다.4 is a block diagram of a multi-core platform-based multimedia decoding apparatus according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치(400)는 큐 생성부(410), 움직임 보상 작업 수행부(420), 역주파수 변환 및 역양자화부(430) 및 디블로킹 작업 수행부(440)를 포함한다. 멀티미디어 복호화 장치(400)는 멀티코어 플랫폼 기반이므로 복수 개의 연산 프로세서를 포함하며, 일 실시예는 중앙 프로세서 및 적어도 하나 이상의 연산 프로세서를 포함한다.The multi-core platform-based
큐 생성부(410)는, 입력된 멀티미디어 데이터에 대해 중앙 프로세서 및 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐를 생성한다. 큐의 생성 작업은 중앙 프로세서에서 수행된다. 따라서, 큐 생성부(410)의 일 실시예는 중앙 프로세서의 일 요소이다.The
멀티미디어 복호화 장치(400)의 일 실시예는 중앙 프로세서의 큐 생성부(410)에서 큐를 생성하기 이전에, 중앙 프로세서는 입력된 멀티미디어 데이터를 판독하고, 판독된 멀티미디어 데이터에 대해 복호화를 위한 초기화 작업을 수행한다. 또한, 중앙 프로세서는 초기화된 멀티미디어 데이터에 대해 이후에 수행될 엔트로피 복호화 작업, 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행한다. 큐 생성부(410)의 일 실시예는, 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐를 생성한다.According to an embodiment of the
큐 생성부(410)의 일 실시예는 작업 파라미터 블록을 전송하기 위해, 연산 프로세서에서 소정 단위 시간 동안 처리할 수 있는 작업 파라미터 블록을 결정하고, 결정된 작업 파라미터 블록을 소정 단위 시간마다 연산 프로세서에 전송한다.An embodiment of the
큐 생성부(410)의 일 실시예는, 각각의 연산 작업에 대한 큐에 연산 작업들 에 대한 작업 파라미터를 포함하는 작업 파라미터 블록을 넣는다. 또한 큐 생성부(410)의 일 실시예는 연산 작업에 대한 큐로부터 각각의 연산 작업 큐에 대응되는 연산 프로세서에 작업 파라미터 블록을 전송한다.An embodiment of the
도면에 도시되지 않았지만, 일 실시예에 따른 멀티미디어 복호화 장치(400)는 멀티미디어 데이터를 적어도 하나 이상의 데이터 영역으로 분할하는 데이터 영역 분할부를 포함한다. 일 실시예에 따른 멀티미디어 복호화 장치(400)는 데이터 영역 분할부에서 분할된 각각의 데이터 영역에 대해 움직임 보상 작업을 수행할 별개의 연산 프로세서를 결정한다. Although not shown in the drawing, the
큐 생성부(410)의 일 실시예는, 움직임 보상 작업을 위한 큐를 생성하는 경우, 움직임 보상 작업을 수행할 연산 프로세서들 중 각각의 연산 프로세서에서 해당 데이터 영역에 대해 수행할 각각의 작업 파라미터 블록을 포함하는 큐를 생성한다.According to an embodiment of the
일 실시예의 데이터 영역 분할부는 멀티미디어 데이터의 각각의 데이터 처리 구간을 적어도 하나 이상의 데이터 영역을 분할하기 위해, 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출하고, 연산 프로세서의 연산 부담량을 고려하여, 멀티미디어 데이터의 데이터 영역으로의 분할 횟수를 결정하며, 멀티미디어 데이터를 분할 횟수만큼 데이터 영역으로 분할한다. 또한, 움직임 보상 작업을 위한 연산 프로세서로서 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서가 결정된다.In one embodiment, the data area partitioner calculates an operation burden of an operation processor for a motion compensation operation on the multimedia data to divide each data processing section of the multimedia data into at least one data area, and calculates an operation burden of the operation processor. In consideration of the amount, the number of divisions of the multimedia data into the data area is determined, and the multimedia data is divided into the data areas by the number of divisions. In addition, as the operation processor for the motion compensation task, the same number of operation processors as the number of divisions of the multimedia data are determined.
데이터 영역 분할부의 일 실시예는 데이터 영역으로의 분할을 위해, 멀티미 디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하고, 서로 의존성이 있는 데이터들이 분리되지 않도록 분할되는 데이터 영역을 결정한다.An embodiment of the data area partitioner detects data that is dependent on each other among the multimedia data, and determines a data area to be partitioned so that the data that is dependent on each other is not separated.
또한, 데이터 영역 분할부의 일 실시예에서, 서로 의존성 있는 데이터들이 분리되지 않도록 데이터 영역을 분할하기 위해, 서로 의존성이 있는 것으로 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 상기 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 의존성이 있는 다른 데이터 중 하나의 데이터를 결정한다.Further, in one embodiment of the data area partitioning unit, in order to partition the data area so that data that is dependent on each other is not separated, when the first data among the data detected as being dependent on each other depends on two or more other data, One data among other data having dependency as the data to be included in the same data area as the first data is determined.
큐 생성부(410)의 일 실시예는, 움직임 보상 작업에 대한 큐에 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 각각의 데이터 영역의 처리 순서에 따라 저장하고, 움직임 보상 작업에 대한 큐로부터 각각의 분할된 데이터 영역에 대한 작업 파라미터 블록을 각각의 데이터 영역의 처리 순서에 따라 전송한다.An embodiment of the
움직임 보상 작업 수행부(420)는, 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업을 수행한다. The motion compensation
역주파수 변환 빛 역양자화부(430)는, 움직임 보상 작업이 수행된 데이터에 대해 역주파수 변환 작업 및 역양자화 작업을 수행한다. 일 실시예의 역주파수 변환 및 역양자화부(430)는 중앙 프로세서의 일 부분이다.The reverse frequency converted
디블로킹 작업 수행부(440)는, 연산 프로세서 중 하나의 연산 프로세서가 역주파수 변환 작업 및 역양자화 작업이 수행된 멀티미디어 데이터에 대한 디블로킹 작업을 수행한다.The deblocking
멀티미디어 복호화 장치(400)의 일 실시예는, 중앙 프로세서가 디블로킹 작업이 수행된 멀티미디어 데이터를 저장한다.In an embodiment of the
도 5 은 연산 작업 별 연산 부담량의 분포를 도시한다.5 shows a distribution of calculation burdens for each calculation operation.
도 5 에 도시된 그래프(500)는 멀티미디어 복호화 장치(400)에서 멀티미디어 데이터에 대해 복호화하는데 소요되는 시간의 일례를 각각의 연산 작업 별로 비율로 나타낸 것이다.The
총 복호화 시간 중 멀티미디어 데이터에 대한 메인 루프(510)에서 소요되는 시간은 15%, 초기화 작업(520)에서 총 소요 시간의 3%, 엔트로피 복호화 작업(530)은 총 소요 시간의 5%, 움직임 보상 작업(540)은 총 소요 시간의 52%, 인트라 예측 작업(550)은 총 소요 시간의 1%, 역양자화 작업 및 역주파수변환 작업(560)은 총 소요 시간의 3%, 디블로킹 작업(570)은 총 소요 시간의 21%가 소요된다. 도 5 에 따르면, 멀티미디어 복호화 작업의 다양한 연산 작업에 있어서, 각각의 연산 작업 별로 소요 시간이 다르며, 이에 따라 연산 작업을 수행하는 프로세서들의 연산 부담량도 다르다. 15% of the total decoding time in the main loop 510 for multimedia data, 3% of the total time in the
이에 따라 본 발명의 일 실시예는, 중앙 프로세서에서는 메인 루프 작업(510), 초기화 작업(520), 인트라 예측 작업(550), 역양자화 작업 및 역주파수 변환 작업(560)을 수행하고, 일부 복수 개의 연산 프로세서에서 움직임 보상 작업(540)하고, 또 다른 연산 프로세서에서 디블로킹 작업(570)을 수행한다.Accordingly, in one embodiment of the present invention, the central processor performs a main loop operation 510, an initialization operation 520, an intra prediction operation 550, an inverse quantization operation and an inverse frequency conversion operation 560, and a plurality of operations. The motion compensation task 540 is performed in the two computing processors, and the deblocking operation 570 is performed in another computing processor.
도 6 은 본 발명의 일 실시예에 따른 멀티미디어 복호화 장치의 하이브리드 분할 방식을 도시한다.6 illustrates a hybrid partitioning scheme of a multimedia decoding apparatus according to an embodiment of the present invention.
멀티미디어 복호화 장치(400)는 멀티코어 플랫폼(600) 기반이며, 중앙 프로세서(610) 및 복수 개의 연산 프로세서들(620)을 포함한다. 일 실시예의 연산 프로세서들(620)은 움직임 보상 작업을 위한 세 개의 연산 프로세서(630, 640, 650) 및 디블로킹 작업을 위한 연산 프로세서(660)를 구비한다.The
본 발명의 멀티미디어 복호화 장치(400)는 중앙 프로세서(610)에서 데이터 판독 작업(611), 전처리 작업 및 초기화 작업(612), 엔트로피 복호화 작업(613) 및 작업 파라미터를 위한 큐 생성 작업(614), 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업(616), 데이터 저장 작업(618)을 수행하고, 한 세트의 연산 프로세서(630, 640, 650)에서 움직임 보상 작업(635, 645, 655)을 수행하며, 또 다른 연산 프로세서(660)에서 디블로킹 작업(667)을 수행한다. 이는 멀티코어 플랫폼에서의 기능적 분할 방식에 해당한다.
또한, 본 발명의 멀티미디어 복호화 장치(400)는 멀티미디어 데이터의 데이터 처리 단위를 적어도 하나 이상의 데이터 영역으로 분할하여, 각각의 데이터 영역에 대한 움직임 보상 작업(635, 645, 655)을 별개의 연산 프로세서(630, 640, 650)에서 수행한다. 이는 멀티코어 플랫폼에서의 데이터 분할 방식에 해당한다.In addition, the
따라서, 본 발명의 멀티미디어 복호화 장치(400)는 각각의 멀티미디어 복호화 작업의 연산 작업의 연산 부담량을 고려하여 각각의 프로세서 별로 연산량을 분담하기 위해, 기능적 분할 방식 및 데이터 분할 방식을 조합한 하이브리드 분할 방식을 채택한다.Accordingly, the
움직임 보상 작업을 위한 연산 프로세서의 개수를 정하기 위해, 본 발명의 일 실시예는, 멀티미디어 데이터에 대한 움직임 보상 작업을 위한 연산 프로세서의 연산 부담량을 산출한다. 산출된 연산 프로세서의 연산 부담량을 고려하여, 멀티미디어 데이터의 데이터 영역으로의 분할 횟수가 결정되고, 멀티미디어 데이터는 결정된 분할 횟수만큼 데이터 영역으로 분할된다. 이로 인해, 결정된 멀티미디어 데이터의 분할 횟수와 동일한 개수의 연산 프로세서가 결정된다.In order to determine the number of arithmetic processors for a motion compensation task, an embodiment of the present invention calculates a computational burden of the arithmetic processor for a motion compensation task for multimedia data. In consideration of the calculated computational burden of the computing processor, the number of divisions of the multimedia data into the data region is determined, and the multimedia data is divided into the data regions by the determined number of divisions. Thus, the same number of computation processors as the number of divisions of the determined multimedia data is determined.
본 발명의 일 실시예에서, 중앙 프로세서(610) 및 다른 연산 프로세서들(630, 640, 650, 660) 사이의 연산 작업 동기화를 위한 시그널링은 메일 박스를 통해 이루어진다.In one embodiment of the invention, signaling for synchronization of computational work between the
도 7 는 본 발명의 일 실시예에 따른 큐잉 방식 및 프로세서 간의 통신 방식을 도시한다.7 illustrates a queuing method and a communication method between processors according to an embodiment of the present invention.
중앙 프로세서(610)에 관한 큐 생성부(410)의 일 실시예는, 연산 프로세서들이 수행할 연산 작업에 관한 작업 파라미터를 포함하는 큐를 생성한다. 즉, 큐 생성부(410)의 일 실시예는, 연산 프로세서에서 처리된 연산 작업의 순서에 따라, 연산 작업에 관한 작업 파라미터 및 관련 데이터를 포함하는 파라미터 블록을 큐에 순차적으로 쌓음으로써 큐를 생성한다. 따라서, 큐 생성부(410)의 일 실시예는, 움직임 보상 작업을 위한 큐, 디블로킹 작업을 위한 큐, 역주파수변환 작업/역양자화 작업/인트라 예측 작업 등을 위한 각각의 큐를 생성한다.An embodiment of the
도 7 에 도시된 움직임 보상 작업으로 예를 든다. 중앙 프로세서(610)는 움직임 보상 작업을 위한 프로세서들(630, 640, 650)에서 움직임 보상 작업의 수행을 위한 작업 파라미터 블록들(730, 740, 750)을 주 메모리의 움직임 보상 작업을 위 한 큐(710)에 순차적으로 쌓는다. 주 메모리는 중앙 프로세서의 메모리를 나타낸다. An example is given as the motion compensation operation shown in FIG. The
또한, 각각의 작업 파라미터 블록(730, 740, 750)은 각각의 분할된 데이터 영역에 대한 움직임 보상 작업을 위한 연산 프로세서(630, 640, 650)에 대응되므로, 작업 처리 순서에 맞추어 연산 프로세서(630, 640, 650)로 출력된다. 일 실시예에서, 주 메모리와 연산 프로세서들(630, 640, 650)의 메모리들 사이의 데이터 통신은 DMA(Direct Memory Access) 방식을 통해 이루어지므로, 움직임 보상 작업을 위한 큐(710)로부터 연산 프로세서(630, 640, 650)로의 데이터 출력은 DMA 방식에 의한다.In addition, each of the job parameter blocks 730, 740, and 750 corresponds to the
전술한 바에 의하면, 중앙 프로세서(610) 및 연산 프로세서들(630, 640, 650) 사이의 연산 작업의 동기화를 위한 시그널링은 메일 박스를 통해 이루어진다.As described above, signaling for synchronization of computational tasks between the
본 발명의 프로세서들 간의 작업은 파이프라인 구조로 병렬적으로 수행되므로, 중앙 프로세서(610)는 현재 연산 프로세서(630, 640, 650)에서 움직임 보상 작업이 이루어질 데이터 단위에 대한 작업 파라미터 블록을 미리 주 메모리의 큐(710)에 쌓아놓는다. 일 실시예에 따른 멀티미디어 복호화 장치(400)의 파이프라인 구조의 병렬 처리는 이하 도 8을 참조하여 상세히 후술된다.Since the operations between the processors of the present invention are performed in parallel in a pipelined structure, the
일 실시예의 데이터 영역은 프레임 내의 매크로 블록 단위로 분할될 수 있다. 하나의 데이터 영역은 복수 개의 매크로 블록을 포함할 수 있으며, 현재 데이터 처리 주기 동안 하나의 데이터 영역에 대해 하나의 연산 프로세서가 움직임 보상 작업을 수행한다.The data area of one embodiment may be divided into macroblock units within a frame. One data area may include a plurality of macro blocks, and one operation processor performs motion compensation on one data area during a current data processing period.
데이터 영역 분할부의 일 실시예는, 서로 의존성이 있는 데이터 영역끼리는 분할되지 않도록 하기 위해, 멀티미디어 데이터 중에서 서로 의존성이 있는 데이터를 검출하고, 서로 의존성이 있는 데이터들이 분리되지 않도록 상기 분할되는 데이터 영역을 결정한다. 예를 들면, 서로 의존성이 있는 P 프레임과 B 프레임은 동일한 데이터 영역에 포함되도록 데이터 영역이 결정된다. An embodiment of the data area partitioner may detect data that are dependent on each other among multimedia data and prevent the data areas that are dependent on each other from being separated so that data areas that are dependent on each other are not divided. Decide For example, the data area is determined so that P frames and B frames that are dependent on each other are included in the same data area.
데이터 영역 분할부의 일 실시예는, 검출된 데이터 중 제 1 데이터가 둘 이상의 다른 데이터와 의존성이 있는 경우, 제 1 데이터와 동일한 데이터 영역으로 포함될 데이터로서 의존성이 있는 다른 데이터 중 하나의 데이터를 결정한다. According to an embodiment of the present invention, when the first data of the detected data is dependent on two or more other data, the data area partitioner determines one of the other data depending on the data to be included in the same data area as the first data. do.
예를 들어 B 프레임(제 1 데이터)이 이전 P 프레임 및 다음 P 프레임(제 1 데이터와 의존성이 있는 둘 이상의 다른 데이터)을 참조하는 경우, 이전 P 프레임과 B 프레임 사이의 경계 또는 B 프레임과 다음 P 프레임 사이의 경계에서 데이터 영역을 분할해야 하는 경우, 데이터 영역 분할부는 두 경계 중 어느 하나에서 데이터 영역을 분할할지 여부를 결정한다. For example, if a B frame (first data) refers to a previous P frame and a next P frame (two or more other data that depend on the first data), the boundary between the previous P frame and the B frame, or the B frame and the next When the data area is to be divided at the boundary between the P frames, the data area dividing unit determines whether to divide the data area at any one of the two boundaries.
도 8 은 본 발명의 일 실시예에 따라 파이프라인 구조의 프로세서 병렬 처리 방식을 도시한다.8 illustrates a processor parallel processing scheme of a pipeline structure according to an embodiment of the present invention.
도 8 에 도시된 일 실시예는 데이터 처리 단위의 일례로 프레임을, 데이터 처리 단위의 부분 단위인 데이터 단위의 일례로 프레임의 4분할 부분을 사용한다.8 illustrates a frame as an example of a data processing unit, and a quadrant portion of the frame as an example of a data unit that is a partial unit of the data processing unit.
멀티미디어 복호화 장치(400)의 일 실시예는 파이프라인 구조의 프로세서 병렬 처리 방식에 따르므로, 아래의 순서에 의한다. Since the exemplary embodiment of the
1. 중앙 프로세서(810)가 첫 번째 데이터 단위에 대해 엔트로피 복호화 작업 을 수행하고 큐를 생성(811)한 후, 움직임 보상 작업을 위한 연산 프로세서로 첫 번째 데이터 단위를 출력한다.1. After the central processor 810 performs an entropy decoding operation on the first data unit and generates a
2. 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)가 첫 번째 데이터 단위에 대해 움직임 보상 작업을 수행(821, 831, 841)하는 동안, 중앙 프로세서(810)는 두 번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 큐를 생성(813)한다. 2. While the
이번 데이터 단위 수행 기간 동안, 중앙 프로세서(810)로 첫 번째 데이터 단위가 출력되고, 움직임 작업을 위한 연산 프로세서(820, 830, 840)로 두 번째 데이터 단위가 출력된다.During this data unit execution period, the first data unit is output to the central processor 810, and the second data unit is output to the
움직임 보상 작업을 위한 연산 프로세서의 연산 작업(821, 831, 841) 및 중앙 프로세서의 연산 작업(813)이 완료되면, 중앙 프로세서(810) 및 움직임 보상 작업을 위한 프로세서(820, 830, 840)는 다음 데이터 단위에 대한 작업 연산을 수행할 준비가 된다. When the
3. 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)가 두 번째 데이터 단위에 대해 움직임 보상 작업을 수행(823, 833, 843)하는 동안, 중앙 프로세서는 첫 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업을 수행(814)하고, 첫 번째 데이터 단위에 대한 중앙 프로세서의 연산 작업이 완료한 후 디블로킹 작업을 위한 프로세서(850)로 첫 번째 데이터 단위가 출력된다. 3. While the
디블로킹 작업을 위한 프로세서(850)는 첫 번째 데이터 단위에 대한 디블로 킹 작업을 수행(851)하고, 디블로킹 작업이 완료된 첫 번째 데이터 단위(861)를 최종적으로 복원한다. The
중앙 프로세서가 첫 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인트라 예측 작업(814)을 완료한 후, 세 번째 데이터 단위에 대해 엔트로피 복호화 작업을 수행하고 큐를 생성(815)한다. After the central processor completes an inverse transform operation, an inverse quantization operation, and an
움직임 보상 작업을 위한 프로세서의 연산 작업(820, 830, 840)가 두 번째 데이터 단위에 대한 연산 작업(823, 833, 843)을 완료하면, 두 번째 데이터 단위(862)를 중앙 프로세서로 출력한다.When the
디블로킹 작업을 위한 연산 프로세서의 연산 작업(851), 움직임 보상 작업을 위한 연산 프로세서의 연산 작업(823, 833, 843) 및 중앙 프로세서의 연산 작업(815)이 모두 완료되면, 중앙 프로세서가 세 번째 데이터 단위에 대해 생성한 큐로부터 각각의 프로세서로 출력된 파라미터 블록에 의해 다음 작업 연산이 수행될 준비가 된다.Once all of the
4. 전술된 1, 2, 3의 파이프라인 구조의 병렬 처리 과정이 반복된다. 따라서, 중앙 프로세서(810)에서 두 번째 데이터 단위에 대해 역주파수변환 작업, 역양자화 작업 및 인프라 예측 작업(816) 및 네 번째 데이터 단위에 대한 엔트로피 복호화 작업 및 큐 생성 작업(817)이 수행되는 동시에, 움직임 보상 작업을 위한 연산 프로세서(820, 830, 840)에서 세 번째 데이터 단위에 대한 움직임 보상 작업(825, 835, 845)가 수행되고, 디블로킹 연산 작업을 위한 연산 프로세서(850)는 두 번째 데이터 단위에 대해 디블로킹 작업(853)을 수행한다. 또한, 디블로킹 작 업(853)이 완료되면 두 번째 데이터 단위가 복원된다.4. The parallel processing of the
멀티미디어 복호화 장치(400)의 일 실시예는, 중앙 프로세서 및 연산 프로세서 간의 연산 작업의 동기화를 보장한다. 또한, 움직임 보상 작업을 위한 연산 프로세서의 일 실시예는 데이터 영역 별로 별개의 연산 프로세서에서 동시에 움직임 보상 작업을 수행하므로, 각각의 데이터 단위에 대한 움직임 보상 작업들(821, 831, 841 / 823, 833, 843 / 825, 835, 845)은 각각의 연산 프로세서에서 모두 동시에 수행된다.One embodiment of the
도 9 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법의 흐름도를 도시한다.9 is a flowchart of a multi-core platform-based multimedia decoding method according to an embodiment of the present invention.
단계 910에서, 입력된 멀티미디어 데이터에 대해, 중앙 프로세서에서 중앙 프로세서 및 연산 프로세서가 수행할 적어도 하나 이상의 연산 작업에 대한 큐(queue)가 생성된다.In
멀티미디어 복호화 방법의 일 실시예는, 입력된 멀티미디어 데이터가 중앙 프로세서에서 판독되고, 판독된 멀티미디어 데이터에 대해 중앙 프로세서에서 복호화를 위한 초기화 작업이 수행되고, 초기화된 멀티미디어 데이터에 대해 중앙 프로세서에서 엔트로피 복호화 작업이 수행된다. 또한, 멀티미디어 데이터에 대해 중앙 프로세서에서 역주파수 변환 작업, 역양자화 작업 및 인트라 예측 작업 중 적어도 하나가 수행되고, 디블로킹 작업이 수행된 멀티미디어 데이터는 중앙 프로세서에서 저장된다. According to an embodiment of the multimedia decoding method, an input multimedia data is read by a central processor, an initialization operation for decoding is performed at the central processor on the read multimedia data, and an entropy decoding operation is performed at the central processor on the initialized multimedia data. This is done. In addition, at least one of an inverse frequency transform operation, an inverse quantization operation, and an intra prediction operation is performed on the multimedia data in the central processor, and the multimedia data on which the deblocking operation is performed is stored in the central processor.
일 실시예에서, 엔트로피 복호화된 멀티미디어 데이터에 대한 연산 작업에 대한 큐가 생성된다.In one embodiment, a queue is created for arithmetic operations on entropy decoded multimedia data.
단계 920에서, 연산 프로세서 중 적어도 하나 이상의 일부 연산 프로세서에서 멀티미디어 데이터가 분할된 데이터 영역 별로 움직임 보상 작업이 수행된다.In
단계 930에서, 중앙 프로세서에서 움직임 보상 작업이 수행된 데이터에 대해 역주파수 변환 작업 및 역양자화 작업이 수행된다.In
단계 940에서, 연산 프로세서 중 하나의 연산 프로세서가 역주파수 변환 작업 및 역양자화 작업이 수행된 멀티미디어 데이터에 대한 디블로킹 작업이 수행된다.In
멀티미디어 복호화 방법의 일 실시예에서, 중앙 프로세서와 연산 프로세서들 사이의 동기화 신호는 메일 박스 방식을 통해 입출력된다.In one embodiment of the multimedia decoding method, the synchronization signal between the central processor and the computing processors is input and output through a mailbox method.
일 실시예에서, 중앙 프로세서의 메모리와 각각의 연산 프로세서들의 메모리 사이의 데이터는 DMA 방식을 통해 입출력된다.In one embodiment, data between the memory of the central processor and the memory of the respective computing processors is input and output via the DMA scheme.
일 실시예에서, 움직임 보상 작업을 위한 연산 프로세서에서의 각각의 데이터 영역에 대한 움직임 보상 작업들은 서로 동기화된다.In one embodiment, the motion compensation tasks for each data region in the computational processor for motion compensation tasks are synchronized with each other.
일 실시예에서, 중앙 프로세서 및 연산 프로세서들의 각각의 연산 작업들은 파이프라인 구조로 병렬적으로 처리된다.In one embodiment, the computational tasks of each of the central processor and the computational processors are processed in parallel in a pipelined structure.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학 적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.Meanwhile, the above-described embodiments of the present invention can be written as a program that can be executed in a computer, and can be implemented in a general-purpose digital computer that operates the program using a computer-readable recording medium. The computer-readable recording medium may include a magnetic storage medium (eg, ROM, floppy disk, hard disk, etc.), an optical reading medium (eg, CD-ROM, DVD, etc.), and a carrier wave (eg, the Internet). Storage medium).
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features of the present invention. Therefore, the disclosed embodiments should be considered in descriptive sense only and not for purposes of limitation. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.
도 1 은 기능적 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.1 illustrates an example of a multicore platform system with a functional partitioning scheme.
도 2a 및 도 2b 는 데이터 분할 방식에 의한 멀티코어 플랫폼 시스템의 일례를 도시한다.2A and 2B show an example of a multicore platform system with a data partitioning scheme.
도 3a 및 도 3b 는 애플리케이션 특성에 따른 데이터와 명령어의 분포의 차이점을 도시한다.3A and 3B show differences in the distribution of data and instructions according to application characteristics.
도 4 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 장치의 블록도를 도시한다.4 is a block diagram of a multi-core platform-based multimedia decoding apparatus according to an embodiment of the present invention.
도 5 은 연산 작업 별 연산 부담량의 분포를 도시한다.5 shows a distribution of calculation burdens for each calculation operation.
도 6 은 본 발명의 일 실시예에 따른 멀티미디어 복호화 장치의 하이브리드 분할 방식을 도시한다.6 illustrates a hybrid partitioning scheme of a multimedia decoding apparatus according to an embodiment of the present invention.
도 7 는 본 발명의 일 실시예에 따른 큐잉 방식 및 프로세서 간의 통신 방식을 도시한다.7 illustrates a queuing method and a communication method between processors according to an embodiment of the present invention.
도 8 은 본 발명의 일 실시예에 따라 파이프라인 구조의 프로세서 병렬 처리 방식을 도시한다.8 illustrates a processor parallel processing scheme of a pipeline structure according to an embodiment of the present invention.
도 9 은 본 발명의 일 실시예에 따른 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법의 흐름도를 도시한다.9 is a flowchart of a multi-core platform-based multimedia decoding method according to an embodiment of the present invention.
Claims (31)
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 true KR20090010860A (en) | 2009-01-30 |
KR101355375B1 KR101355375B1 (en) | 2014-01-22 |
Family
ID=40489959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070126891A KR101355375B1 (en) | 2007-07-24 | 2007-12-07 | Method and apparatus for decoding multimedia based on multicore processor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101355375B1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100119660A (en) * | 2009-05-01 | 2010-11-10 | 연세대학교 산학협력단 | Data processing device and dynamic parallelized network coding method thereof |
KR101279507B1 (en) * | 2009-12-15 | 2013-06-28 | 한국전자통신연구원 | Pipelined decoding apparatus and method based on parallel processing |
US8559524B2 (en) | 2009-11-19 | 2013-10-15 | Electronics And Telecommunications Research Institute | Video decoding apparatus and method based on a data and function splitting scheme |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963613B2 (en) | 2002-04-01 | 2005-11-08 | Broadcom Corporation | 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 |
JP4699685B2 (en) * | 2003-08-21 | 2011-06-15 | パナソニック株式会社 | Signal processing apparatus and electronic apparatus using the same |
KR100640876B1 (en) * | 2004-11-17 | 2006-11-02 | 엘지전자 주식회사 | Video decoding system in mobile broadcasting receiver |
-
2007
- 2007-12-07 KR KR1020070126891A patent/KR101355375B1/en active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100119660A (en) * | 2009-05-01 | 2010-11-10 | 연세대학교 산학협력단 | Data processing device and dynamic parallelized network coding method thereof |
US8559524B2 (en) | 2009-11-19 | 2013-10-15 | Electronics And Telecommunications Research Institute | Video decoding apparatus and method based on a data and function splitting scheme |
KR101279507B1 (en) * | 2009-12-15 | 2013-06-28 | 한국전자통신연구원 | Pipelined decoding apparatus and method based on parallel processing |
Also Published As
Publication number | Publication date |
---|---|
KR101355375B1 (en) | 2014-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fouladi et al. | Encoding, fast and slow:{Low-Latency} video processing using thousands of tiny threads | |
US11388405B2 (en) | Content aware scheduling in a HEVC decoder operating on a multi-core processor platform | |
Meenderinck et al. | Parallel scalability of video decoders | |
US8634470B2 (en) | Multimedia decoding method and multimedia decoding apparatus based on multi-core processor | |
Juurlink et al. | Scalable parallel programming applied to H. 264/AVC decoding | |
KR20090065398A (en) | Method and apparatus for video decoding based on a multi-core processor | |
KR101355375B1 (en) | Method and apparatus for decoding multimedia based on multicore processor | |
Collins et al. | Flexible filters: load balancing through backpressure for stream programs | |
Radicke et al. | A multi-threaded full-feature HEVC encoder based on wavefront parallel processing | |
Wang et al. | Parallel H. 264/AVC motion compensation for GPUs using OpenCL | |
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 | |
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 | |
Migallón et al. | Synchronous and asynchronous HEVC parallel encoder versions based on a GOP approach | |
Wang et al. | Multi-Grain Parallel Accelerate System for H. 264 Encoder on ULTRASPARC T2. | |
EP3149943B1 (en) | Content aware scheduling in a hevc decoder operating on a multi-core processor platform | |
Aboalmaaly et al. | Data-Level Parallel Approaches for the H. 264 Coding: A Review | |
Chahal et al. | A comparative study for optimization of video file compression in cloud environment | |
JP2010041352A (en) | Device and method for decoding image | |
Saha et al. | GPU-based parallelisation of a versatile video coding adaptive loop filter in resource-constrained heterogeneous embedded platform | |
Cebrián-Márquez et al. | Gpu-based heterogeneous coding architecture for hevc | |
Jeong et al. | Parallelization and performance prediction for HEVC UHD real-time software decoding | |
Hoffmann et al. | Partitioning strategies for concurrent programming |
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 |