KR100801630B1 - 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 - Google Patents

멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 Download PDF

Info

Publication number
KR100801630B1
KR100801630B1 KR1020070058669A KR20070058669A KR100801630B1 KR 100801630 B1 KR100801630 B1 KR 100801630B1 KR 1020070058669 A KR1020070058669 A KR 1020070058669A KR 20070058669 A KR20070058669 A KR 20070058669A KR 100801630 B1 KR100801630 B1 KR 100801630B1
Authority
KR
South Korea
Prior art keywords
slice
decoding
core
bitstream
mpeg data
Prior art date
Application number
KR1020070058669A
Other languages
English (en)
Inventor
기창서
Original Assignee
디비코 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디비코 주식회사 filed Critical 디비코 주식회사
Priority to KR1020070058669A priority Critical patent/KR100801630B1/ko
Application granted granted Critical
Publication of KR100801630B1 publication Critical patent/KR100801630B1/ko
Priority to US12/136,989 priority patent/US7796061B2/en

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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

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

Abstract

본 발명은 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및 방법에 관한 것으로, 특히 엠펙 데이터의 비트스트림을 슬라이스 단위로 분할하고 각 슬라이스에 대한 디코딩 작업을 프로세서 내의 각 코어마다 쓰레드로 분산시켜 개별적으로 디코딩한 후 이를 병합하는 분산 디코딩 처리 기술에 관한 것이다. 본 발명에 따르면, 복잡한 연산을 거치지 않고도 엠펙 데이터의 디코딩 작업을 여러 개의 디코딩 쓰레드로 분할할 수 있으며, 엠펙 디코딩처럼 연산량이 많은 작업을 처리할 때 멀티코어 프로세서 내의 일부 CPU에 연산량이 과중되는 현상을 방지할 수 있으며, 멀티코어 프로세서 내의 여러 CPU 자원을 효율적으로 활용할 수 있는 효과가 있다.
디코딩, 멀티코어 프로세서, MPEG, 분산처리, 슬라이스, 쓰레드

Description

멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및 방법{Distributed decoding processing device using multi-core processor and the method for the same}
도 1은 본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치의 전체 구성을 나타낸 블럭도,
도 2는 본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 방법의 전체 동작과정을 나타낸 순서도,
도 3은 도 2에서 슬라이스 단위의 비트스트림을 각 코어에 할당된 버퍼마다 분산 배치하는 단계(S50)의 동작과정을 보다 자세히 나타낸 순서도,
도 4는 엠펙 데이터의 비트스트림 내의 슬라이스 구조를 나타낸 도면이다.
본 발명은 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및 방법에 관한 것으로, 특히 엠펙 데이터의 비트스트림을 슬라이스 단위로 분할하고 각 슬라이 스에 대한 디코딩 작업을 프로세서 내의 각 코어마다 쓰레드로 분산시켜 개별적으로 디코딩한 후 이를 병합하는 분산 디코딩 처리 기술에 관한 것이다.
멀티코어 프로세서는 2개 이상의 CPU가 붙어 있는 집적회로를 의미하며, 단일 CPU의 동작 주파수를 높이는데 있어서 많은 한계점이 도출되어 최근에는 이처럼 2개 이상의 CPU를 사용함으로써 단일 프로세서의 주파수 한계를 극복할 수 있는 멀티코어 프로세서가 널리 쓰이고 있다.
멀티코어 프로세서의 동작 단위는 쓰레드이며, 멀티코어 프로세서는 자동으로 연산량이 적은 CPU에 매 쓰레드를 배치하여 실행한다.
이처럼 멀티코어 프로세서를 사용하여 엠펙 데이터를 디코딩하면, 기존의 엠펙 디코딩 알고리즘의 경우 단일 CPU에서 동작하는 것을 가정하여 디코딩이 이루어지므로 멀티코어 프로세서 내의 각 CPU 중에서 연산량이 가장 적은 CPU에 엠펙 디코딩 쓰레드를 배치하게 된다.
즉, 2개의 CPU를 사용한 듀얼 프로세서나 4개의 CPU를 사용한 쿼드 프로세서에서 기존의 엠펙 디코딩 알고리즘을 사용하여 엠펙 데이터를 디코딩하게 되면 1개의 CPU에 집중적으로 연산량이 가중되며 나머지 1개 또는 3개의 CPU는 상대적으로 낮은 연산량이 부과되어 각 CPU의 연산량이 불균일하게 유지되는 문제점이 있다.
이와 같이 엠펙 디코딩처럼 많은 연산량이 필요한 작업을 처리하는 경우에 멀티코어 프로세서 내의 각 CPU 자원을 고르게 활용하지 못하는 문제점이 있다.
본 발명의 목적은 엠펙 데이터를 디코딩할 때 멀티코어 프로세서 내의 여러 코어마다 디코딩 작업을 적절히 분산 배치시킴으로써 프로세서 내 각 코어의 연산 자원을 효율적으로 활용할 수 있으며, 복잡한 연산을 거치지 않고도 엠펙 데이터의 디코딩 작업을 여러 개의 디코딩 쓰레드로 분할할 수 있는 분산 디코딩 처리 장치 및 방법을 제공하는 것이다.
본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치는, 쓰레드 단위로 동작하는 복수 개의 코어를 구비한 멀티코어 프로세서; 엠펙 데이터를 입력받아 디코딩 정보 추출 후 개별 슬라이스 단위로 분할하고, 개별 슬라이스에 대한 디코딩 연산을 멀티코어 프로세서 내의 각 코어마다 쓰레드로 분산 배치하는 엠펙 데이터 분할 모듈; 엠펙 데이터 분할 모듈로부터 개별 슬라이스를 입력받아 저장하고, 저장된 슬라이스를 멀티코어 프로세서 내의 각 코어마다 제공하는 버퍼 영역을 구비하는 메모리; 및 멀티코어 프로세서의 각 코어를 통해 디코딩된 데이터를 병합하는 디코딩 병합 모듈을 포함하여 구성된다.
본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 방법은, 복수 개의 코어를 구비한 프로세서를 통해 엠팩 데이터를 디코딩하는 방법에 있어서, (a) 엠펙 데이터 내의 각 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 준비하는 단계; (b) 엠펙 데이터를 비트스트림으로 입력받 고 엠펙 데이터 내의 디코딩 정보를 추출하는 단계; (c) 프로세서의 코어 개수만큼 메모리 내의 영역을 분할하여 코어 개수만큼의 버퍼를 준비하고 각 코어마다 할당하는 단계; (d) 비트스트림을 개별 슬라이스 단위로 분할하는 단계; (e) 분할된 슬라이스 단위의 비트스트림을 버퍼마다 할당하여 입력하는 단계; (f) 버퍼마다 입력된 슬라이스 단위의 비트스트림에 대한 디코딩 연산을 해당 코어에 쓰레드로 할당하는 단계; (g) 각 코어가 단일 슬라이스 디코딩 함수를 사용하여 디코딩 쓰레드를 수행하는 단계; 및 (h) 모든 코어의 디코딩 쓰레드가 완료되면 디코딩된 데이터를 병합하는 단계를 포함하여 구성된다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치의 전체 구성을 나타낸 블럭도이다.
도시된 바와 같이, 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치는 멀티코어 프로세서(20), 메모리(10), 엠펙 데이터 분할 모듈(30), 디코딩 병합 모듈(40)로 크게 구성된다.
엠펙 알고리즘으로 인코딩된 비트스트림 내의 한 프레임 데이터(30)를 메모리(10)에 저장하고, 이를 멀티코어 프로세서 내의 각 코어(20)마다 쓰레드로 할당하여 디코딩한 후에 병합하게 된다. 이때, 엠펙 데이터의 매 슬라이스는 서로 독립적으로 인코딩되어 있음에 착안하여 매 슬라이스별로 디코딩한 후에 이를 병합하는 것이 본 발명의 아이디어의 핵심이다.
멀티코어 프로세서(20)는 쓰레드 단위로 동작하는 복수 개의 코어(CPU)를 구비한 프로세서를 의미하며, 각 코어는 서로 독립적으로 동작할 수 있다.
메모리(10)는 엠펙 데이터 분할 모듈(30)로부터 개별 슬라이스를 입력받으면 이를 저장하고, 저장된 슬라이스를 멀티코어 프로세서(20)의 각 코어마다 제공하는 버퍼 영역을 구비한다.
엠펙 데이터 분할 모듈(30)은 엠펙 데이터를 입력받으면 먼저 디코딩 정보를 추출 후 개별 슬라이스 단위로 분할하고, 분할된 개별 슬라이스 단위의 비트스트림에 대한 디코딩 연산을 멀티코어 프로세서 내의 각 코어마다 쓰레드로 분산 배치시킨다. 이때, 분할된 슬라이스 단위의 비트스트림은 우선 메모리(10)의 버퍼에 저장된 후에 각각 대응되는 코어로 제공된다.
엠펙 데이터 분할 모듈(30)은 헤더 파싱부(31), 슬라이스 분할부(32), 분산 배치부(34)으로 크게 구성되며, 코어 연산량 측정부(33)와 단일 슬라이스 디코딩 함수 생성부가 추가될 수 있다.
헤더 파싱부(31)는 엠펙 데이터를 비트스트림으로 입력받아 디코딩 정보를 추출하는 등 이에 대한 기본적인 헤더 파싱을 수행하고, 메모리(10) 내의 영역을 분할 할당하여 각 슬라이스용 버퍼를 준비한다. 즉, 메모리(10) 내의 영역을 멀티코어 프로세서(20)의 각 코어에 대응되도록 복수 개의 버퍼로 분할 할당한다.
슬라이스 분할부(32)는 비트스트림 내의 슬라이스 시작 코드를 감지하여 개별 슬라이스 단위로 분할한다.
분산 배치부(34)는 슬라이스 단위로 분할된 비트스트림을 각 버퍼마다 적절히 분산 배치한다. 이때, 각 버퍼마다 균일하게 분산시킬 수도 있으며, 각 코어의 연산 점유량에 반비례하도록 각 버퍼에 분산시킬 수도 있다. 후자의 경우에 각 코어의 연산 점유량을 측정하기 위해 멀티코어 프로세서 내에 있는 각 코어의 연산 점유량을 측정하는 코어 연산량 측정부(33)를 추가로 더 포함하게 된다.
또한, 전자와 같이 분산 배치부(34)에서 구현상 용이를 위해 코어의 연산 점유량을 고려하지 않을 수도 있다. 이때는, 코어의 연산 점유량에 상관없이 매 슬라이스가 각 버퍼마다 고루 분포된다.
슬라이스 단위로 분할된 비트스트림은 분산 배치부(34)에 의해 메모리(10) 내의 각 버퍼에 분산 배치되며, 각 버퍼는 그에 대응되는 코어마다 슬라이스 디코딩 쓰레드를 할당한다. 그리고, 멀티코어 프로세서(20) 내의 각 코어에서는 대응되는 버퍼로부터 데이터를 입력받아 각자의 슬라이스 디코딩 쓰레드를 수행한다.
이때, 각 코어에서 매 슬라이스에 대해 디코딩을 수행하기 위한 디코딩 함수는 기존의 엠펙 데이터를 디코딩하기 위한 디코딩 함수와는 다소 차이가 있다. 즉, 기존의 디코딩 함수는 슬라이스 단위로 분할되지 않은 엠펙 데이터를 디코딩 대상으로 삼기 때문에, 슬라이스 단위의 디코딩 함수를 새로 정의할 필요가 있다.
따라서, 엠펙 데이터 분할 모듈(30)은 엠펙 데이터의 디코딩 정보를 이용하여 엠펙 데이터 내의 각 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 생성하여 멀티코어 프로세서의 각 코어에 제공하는 단일 슬라이스 디코딩 함수 생성부를 더 포함하도록 구성될 수 있다.
디코딩 병합부(80)는 멀티코어 프로세서 내의 각 코어의 디코딩 쓰레드를 통해 디코딩된 결과물을 병합하며, 이를 통해 전체 비트스트림을 디코딩한 효과를 가져온다.
도 2는 본 발명의 바람직한 실시예에 의한 멀티코어 프로세서를 이용한 분산 디코딩 처리 방법의 전체 동작과정을 나타낸 순서도이다.
도시된 바와 같이, 먼저 엠펙 데이터 내의 각 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 준비한다(S10).
그 다음으로, 엠펙 데이터를 비트스트림으로 입력받고 엠펙 데이터 내의 디코딩 정보를 추출한다(S20). 엠펙 데이터 내의 픽쳐헤더를 판독함으로써 디코딩을 위한 화면크기나 기본 정보를 얻을 수 있다.
그리고, 프로세서의 코어 개수만큼 메모리 내의 영역을 분할하여 코어 개수만큼의 버퍼를 준비하고, 각 버퍼마다 대응되는 코어를 할당함으로써 앞으로 버퍼를 통해 들어오는 데이터가 각 코어마다 입력되도록 한다(S30).
그 다음으로, 엠펙 데이터의 비트스트림을 개별 슬라이스 단위로 분할한다(S40). 이때, 비트스트림 내의 슬라이스 시작 코드를 감지함으로써 각 슬라이스를 구분하여 분할할 수 있다.
이와 같이 분할된 슬라이스 단위의 비트스트림을 앞서 각 코어에 대응된 버퍼마다 할당하여 입력한다(S50). 이때, 매 슬라이스 단위의 비트스트림을 어떻게 분산배치하느냐에 따라서 각 코어에 가해지는 연산 부담에 차이가 생기며, 각 코어 마다 아웃풋이 출력되는 시간차가 크게 발생할 수 있다.
여기에서, 엠펙 데이터 내의 매크로 블럭은 인터(inter) 코딩되어 있거나 인트라(intra) 코딩되어 있는지의 여부에 상관없이 디코딩 연산량이 비슷하며, 따라서 개별 슬라이스들도 각각 연산량이 비슷하다. 또한, 매 슬라이스는 서로 독립적으로 인코딩되어 있다.
따라서, 일반적으로 각 코어의 연산 점유량이 비슷하다고 가정하면, 슬라이스 단위의 비트스트림을 각 코어의 해당 버퍼마다 동일한 분량으로 할당하여 순차적으로 입력하는 것이 바람직하다.
또한, 각 코어의 연산 점유량을 체크한 후에 각 코어의 연산 점유량에 반비례하도록 매 슬라이스를 분산 배치할 수도 있으며, 이 경우에도 역시 마찬가지로 각 코어의 부담을 균일하게 유지시킬 수 있고 각 코어의 디코딩 쓰레드 완료 시점을 비슷하게 유지시킬 수 있다.
그 다음으로, 각 버퍼마다 입력된 슬라이스 단위의 비트스트림에 대한 디코딩 연산을 해당 코어에 쓰레드로 할당한다(S60).
그러면, 각 코어가 앞서 준비된 단일 슬라이스 디코딩 함수를 사용하여 해당 버퍼로부터 제공받은 슬라이스에 대하여 디코딩 쓰레드를 수행한다(S70).
마지막으로, 모든 코어의 디코딩 쓰레드가 완료될 때까지 기다린 후에 각 코어마다 디코딩된 데이터를 병합한다(S80).
도 3은 도 2에서 슬라이스 단위의 비트스트림을 각 코어에 할당된 버퍼마다 분산 배치하는 단계(S50)의 동작과정을 보다 자세히 나타낸 순서도이다.
도시된 바와 같이, 멀티코어 프로세서 내 각 코어의 연산 점유량을 체크한다(S51).
그 다음으로, 슬라이스 단위의 비트스트림을 각 코어의 연산 점유량에 반비례하도록 할당하여 각 코어의 해당 버퍼에 입력한다(S52).
특히 각 코어의 연산 점유량이 서로 크게 다른 경우에는 이처럼 매 슬라이스를 각 코어의 연산 점유량에 반비례하도록 분산 배치하는 것이 프로세서 자원 활용에 유리하다. 즉, 상대적으로 사용량이 많은 코어에는 소량의 쓰레드가 배치되고 사용량이 적은 코어에는 많은 양의 쓰레드가 배치된다.
또한, 매 슬라이스를 각 코어의 해당 버퍼마다 동일한 분량으로 분산 배치할 수도 있다. 즉, 일반적으로 각 코어의 연산 점유량이 균일하게 유지되고 있다고 가정하면, 매 슬라이스마다 연산량에 거의 차이가 없으므로 매 슬라이스를 동일한 분량으로 분산시키더라도 각 코어에 할당되는 쓰레드가 균일하게 유지된다. 이때는 각 코어의 연산 점유량을 일일이 체크할 필요가 없으므로 보다 간단한 구성으로 구현이 가능해진다.
도 4는 엠펙 데이터의 비트스트림 내의 슬라이스 구조를 나타낸 도면이다.
엠펙 데이터는 크게 시퀀스, GOP(group of picture), 픽쳐, 슬라이스, 매크로블럭, 블럭의 여섯 개의 계층으로 이루어져 있다. 매 단위의 구분은 슬라이스까지 외부에서 위치를 알 수 있도록 시작코드(start code)로 구분되어 있다.
도시된 바와 같이, 슬라이스 데이터의 시작코드는 00 00 01 xx의 값으로 나타나므로, 여기서 01, 02, 03 등 N개의 슬라이스를 구분할 수 있으므로 각 슬라이스를 모을 수 있다.
또한, 매 슬라이스의 시작과 끝은 인트라 매크로블럭으로 코딩이 되어 있어서 매 슬라이스는 연속성이 없으며 다른 슬라이스 데이터의 영향을 받지 않아 매 슬라이스는 서로 독립적이다. 따라서, 매 슬라이스는 서로 독립적으로 인코딩되어 있기 때문에 슬라이스 단위로 비트스트림을 나누어서 개별적으로 디코딩하더라도 데이터에 손상이 가지 않는다.
이상에서 실시예를 들어 본 발명을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것은 아니고, 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형실시될 수 있다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명에 따르면, 복잡한 연산을 거치지 않고도 엠펙 데이터의 디코딩 작업 을 여러 개의 디코딩 쓰레드로 분할할 수 있으며, 엠펙 디코딩처럼 연산량이 많은 작업을 처리할 때 멀티코어 프로세서 내의 일부 CPU에 연산량이 과중되는 현상을 방지할 수 있으며, 멀티코어 프로세서 내의 여러 CPU 자원을 효율적으로 활용할 수 있는 효과가 있다.

Claims (9)

  1. 쓰레드 단위로 처리하는 복수 개의 코어를 구비한 멀티코어 프로세서;
    엠펙 데이터를 입력받아 디코딩 정보 추출 후 개별 슬라이스 단위로 분할하고, 하나의 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 생성하여 제공함으로써 상기 분할된 개별 슬라이스를 대입하여 디코딩 연산을 수행하는 쓰레드가 상기 멀티코어 프로세서 내의 각 코어마다 분산 배치되도록 하는 엠펙 데이터 분할 모듈;
    상기 엠펙 데이터 분할 모듈로부터 개별 슬라이스를 입력받아 저장하고, 상기 저장된 슬라이스를 상기 멀티코어 프로세서 내의 각 코어마다 제공하는 버퍼 영역을 구비하는 메모리; 및
    상기 멀티코어 프로세서의 각 코어를 통해 디코딩된 데이터를 병합하는 디코딩 병합 모듈;
    를 포함하여 구성되는 분산 디코딩 처리 장치.
  2. 제 1 항에 있어서,
    상기 엠펙 데이터 분할 모듈은,
    상기 엠펙 데이터를 비트스트림으로 입력받아 디코딩 정보를 추출하고, 상기 메모리 내의 영역을 상기 멀티코어 프로세서의 각 코어에 대응되는 복수 개의 버퍼로 분할 할당하는 헤더 파싱부;
    상기 비트스트림 내의 슬라이스 시작 코드를 감지하여 개별 슬라이스 단위로 분할하는 슬라이스 분할부;
    상기 분할된 슬라이스 단위의 비트스트림을 상기 버퍼마다 할당하여 입력하는 분산 배치부; 및
    하나의 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 생성하여 상기 멀티코어 프로세서의 각 코어에 제공하는 단일 슬라이스 디코딩 함수 생성부;
    를 포함하여 구성되는 것을 특징으로 하는 분산 디코딩 처리 장치.
  3. 제 2 항에 있어서,
    상기 분산 배치부는 상기 슬라이스 단위의 비트스트림을 각 코어의 해당 버퍼마다 동일한 분량으로 할당하여 순차적으로 입력하는 것을 특징으로 하는 분산 디코딩 처리 장치.
  4. 제 2 항에 있어서,
    상기 엠펙 데이터 분할 모듈은,
    각 코어의 연산 점유량을 체크하는 코어 연산량 측정부를 더 포함하여 구성되고,
    상기 분산 배치부는 상기 슬라이스 단위의 비트스트림을 상기 각 코어의 연산 점유량에 반비례하도록 할당하여 각 코어의 해당 버퍼에 입력하는 것을 특징으로 하는 분산 디코딩 처리 장치.
  5. 삭제
  6. 복수 개의 코어를 구비한 프로세서를 통해 엠팩 데이터를 디코딩하는 방법에 있어서,
    (a) 엠펙 데이터 내의 각 슬라이스를 개별적으로 디코딩하는 단일 슬라이스 디코딩 함수를 준비하는 단계;
    (b) 엠펙 데이터를 비트스트림으로 입력받고 상기 엠펙 데이터 내의 디코딩 정보를 추출하는 단계;
    (c) 프로세서의 코어 개수만큼 메모리 내의 영역을 분할하여 상기 코어 개수만큼의 버퍼를 준비하고 각 코어마다 할당하는 단계;
    (d) 상기 비트스트림을 개별 슬라이스 단위로 분할하는 단계;
    (e) 상기 분할된 슬라이스 단위의 비트스트림을 상기 버퍼마다 할당하여 입력하는 단계;
    (f) 상기 버퍼마다 입력된 슬라이스 단위의 비트스트림에 대한 디코딩 연산 을 해당 코어에 쓰레드로 할당하는 단계;
    (g) 상기 각 코어가 상기 단일 슬라이스 디코딩 함수를 사용하여 디코딩 쓰레드를 수행하는 단계; 및
    (h) 모든 코어의 디코딩 쓰레드가 완료되면 상기 디코딩된 데이터를 병합하는 단계;
    를 포함하여 구성되는 분산 디코딩 처리 방법.
  7. 제 6 항에 있어서,
    상기 (d) 단계는 상기 비트스트림 내의 슬라이스 시작 코드를 감지하여 각 슬라이스를 구분하고 분할하는 단계를 포함하여 구성되는 것을 특징으로 하는 분산 디코딩 처리 방법.
  8. 제 7 항에 있어서,
    상기 (e) 단계는,
    각 코어의 연산 점유량을 체크하는 단계; 및
    상기 슬라이스 단위의 비트스트림을 상기 각 코어의 연산 점유량에 반비례하도록 할당하여 각 코어의 해당 버퍼에 입력하는 단계;
    를 더 포함하여 구성되는 분산 디코딩 처리 방법.
  9. 제 7 항에 있어서,
    상기 (e) 단계는 상기 슬라이스 단위의 비트스트림을 각 코어의 해당 버퍼마다 동일한 분량으로 할당하여 순차적으로 입력하는 단계를 더 포함하여 구성되는 분산 디코딩 처리 방법.
KR1020070058669A 2007-06-15 2007-06-15 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 KR100801630B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070058669A KR100801630B1 (ko) 2007-06-15 2007-06-15 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
US12/136,989 US7796061B2 (en) 2007-06-15 2008-06-11 Distributed decoding device using multi-core processor and method for the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070058669A KR100801630B1 (ko) 2007-06-15 2007-06-15 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Publications (1)

Publication Number Publication Date
KR100801630B1 true KR100801630B1 (ko) 2008-02-05

Family

ID=39342591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070058669A KR100801630B1 (ko) 2007-06-15 2007-06-15 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Country Status (2)

Country Link
US (1) US7796061B2 (ko)
KR (1) KR100801630B1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101138920B1 (ko) * 2010-05-04 2012-05-14 한양대학교 산학협력단 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법
KR101392349B1 (ko) 2007-08-23 2014-05-19 삼성전자주식회사 비디오 디코딩 방법 및 장치
WO2015050385A1 (ko) * 2013-10-04 2015-04-09 삼성전자 주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
US9042456B2 (en) 2008-11-11 2015-05-26 Samsung Electronics Co., Ltd. Moving picture encoding/decoding apparatus and method for processing of moving picture divided in units of slices
US9131240B2 (en) 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
KR101987076B1 (ko) * 2018-11-12 2019-06-10 한화시스템(주) 실시간 고속 데이터 병렬 처리 장치 및 방법
KR20190134031A (ko) * 2018-05-24 2019-12-04 홍익대학교 산학협력단 비트스트림의 임의성을 검증하는 방법 및 그 시스템
KR20200054834A (ko) * 2019-02-20 2020-05-20 한화시스템 주식회사 실시간 고속 데이터 병렬 처리 장치 및 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090310686A1 (en) * 2008-06-17 2009-12-17 Do-hyoung Kim Distributed decoding device of sequential parallel processing scheme and method for the same
JP2010141821A (ja) * 2008-12-15 2010-06-24 Toshiba Corp ストリーミングプロセッサおよびプロセッサシステム
US8897372B2 (en) * 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
US8705879B2 (en) * 2009-04-01 2014-04-22 Microsoft Corporation Image compression acceleration using multiple processors
US8615039B2 (en) * 2009-05-21 2013-12-24 Microsoft Corporation Optimized allocation of multi-core computation for video encoding
US8433978B2 (en) * 2009-10-29 2013-04-30 Cleversafe, Inc. Data distribution utilizing unique read parameters in a dispersed storage system
JP5982734B2 (ja) * 2011-03-11 2016-08-31 ソニー株式会社 画像処理装置および方法
US9817700B2 (en) 2011-04-26 2017-11-14 International Business Machines Corporation Dynamic data partitioning for optimal resource utilization in a parallel data processing system
US9148670B2 (en) * 2011-11-30 2015-09-29 Freescale Semiconductor, Inc. Multi-core decompression of block coded video data
WO2013088519A1 (ja) * 2011-12-13 2013-06-20 トヨタ自動車株式会社 マルチコア・プロセッサ
CN102625108B (zh) * 2012-03-30 2014-03-12 浙江大学 一种基于多核处理器实现的h.264解码方法
US9363523B2 (en) * 2013-10-02 2016-06-07 Amlogic Co., Limited Method and apparatus for multi-core video decoder
US9177352B2 (en) * 2014-01-07 2015-11-03 Qualcomm Innovation Center, Inc. Selective multithreading for sporadic processor workloads
US9854261B2 (en) * 2015-01-06 2017-12-26 Microsoft Technology Licensing, Llc. Detecting markers in an encoded video signal
US9983966B2 (en) * 2015-11-30 2018-05-29 Oracle International Corporation Detecting degraded core performance in multicore processors

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950002475A (ko) * 1993-06-23 1995-01-04 배순훈 영상복호기에서의 데이타 병렬처리장치
KR980007751A (ko) * 1996-06-26 1998-03-30 구자홍 엠펙2 가변길이 디코더의 병렬처리장치 및 방법
KR19990010657A (ko) * 1997-07-18 1999-02-18 윤종용 엠펙 비디오 데이타 디코딩방법
KR19990075517A (ko) * 1998-03-20 1999-10-15 김영환 비디오 비동기 복호장치
KR20000072875A (ko) * 1999-05-01 2000-12-05 윤종용 다중 비디오 디코딩 장치 및 그 방법
KR20010023653A (ko) * 1997-09-04 2001-03-26 벤자민 에프 커틀러 프로세서 자원분배기 및 방법
KR20040014604A (ko) * 2001-08-27 2004-02-14 인텔 코포레이션 리소스 할당 방법 및 프로세서
KR20070037427A (ko) * 2005-09-30 2007-04-04 코웨어, 인코포레이티드 멀티코어 구조에서의 스케줄링
KR20070049226A (ko) * 2004-09-28 2007-05-10 인텔 코오퍼레이션 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5532744A (en) * 1994-08-22 1996-07-02 Philips Electronics North America Corporation Method and apparatus for decoding digital video using parallel processing
US7292772B2 (en) * 2000-05-29 2007-11-06 Sony Corporation Method and apparatus for decoding and recording medium for a coded video stream
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950002475A (ko) * 1993-06-23 1995-01-04 배순훈 영상복호기에서의 데이타 병렬처리장치
KR980007751A (ko) * 1996-06-26 1998-03-30 구자홍 엠펙2 가변길이 디코더의 병렬처리장치 및 방법
KR19990010657A (ko) * 1997-07-18 1999-02-18 윤종용 엠펙 비디오 데이타 디코딩방법
KR20010023653A (ko) * 1997-09-04 2001-03-26 벤자민 에프 커틀러 프로세서 자원분배기 및 방법
KR19990075517A (ko) * 1998-03-20 1999-10-15 김영환 비디오 비동기 복호장치
KR20000072875A (ko) * 1999-05-01 2000-12-05 윤종용 다중 비디오 디코딩 장치 및 그 방법
KR20040014604A (ko) * 2001-08-27 2004-02-14 인텔 코포레이션 리소스 할당 방법 및 프로세서
KR20070049226A (ko) * 2004-09-28 2007-05-10 인텔 코오퍼레이션 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치
KR20070037427A (ko) * 2005-09-30 2007-04-04 코웨어, 인코포레이티드 멀티코어 구조에서의 스케줄링

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
roc. of 15th IPDPS 2000 Workshops (Bhandarker S.M. 외 1인 공저, "Parallel Parsing of MPEG Video in a Multi-threaded Multiprocessor Environment", LNCS Vol. 1800, pp. 194-201, 2000 출간)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9131240B2 (en) 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
KR101392349B1 (ko) 2007-08-23 2014-05-19 삼성전자주식회사 비디오 디코딩 방법 및 장치
US9432687B2 (en) 2008-11-11 2016-08-30 Samsung Electronics Co., Ltd. Moving picture encoding/decoding apparatus and method for processing of moving picture divided in units of slices
US9042456B2 (en) 2008-11-11 2015-05-26 Samsung Electronics Co., Ltd. Moving picture encoding/decoding apparatus and method for processing of moving picture divided in units of slices
KR101138920B1 (ko) * 2010-05-04 2012-05-14 한양대학교 산학협력단 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법
KR20150040126A (ko) * 2013-10-04 2015-04-14 삼성전자주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
WO2015050385A1 (ko) * 2013-10-04 2015-04-09 삼성전자 주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
US10341674B2 (en) 2013-10-04 2019-07-02 Samsung Electronics Co., Ltd. Method and device for distributing load according to characteristic of frame
KR102280170B1 (ko) * 2013-10-04 2021-07-21 삼성전자주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
KR20190134031A (ko) * 2018-05-24 2019-12-04 홍익대학교 산학협력단 비트스트림의 임의성을 검증하는 방법 및 그 시스템
KR102073474B1 (ko) * 2018-05-24 2020-02-04 홍익대학교 산학협력단 비트스트림의 임의성을 검증하는 방법 및 그 시스템
US11157239B2 (en) 2018-05-24 2021-10-26 Hongik University Industry-Academia Cooperation Foundation Method of verifying randomness of bitstream and system thereof
KR101987076B1 (ko) * 2018-11-12 2019-06-10 한화시스템(주) 실시간 고속 데이터 병렬 처리 장치 및 방법
KR20200054834A (ko) * 2019-02-20 2020-05-20 한화시스템 주식회사 실시간 고속 데이터 병렬 처리 장치 및 방법
KR102230669B1 (ko) 2019-02-20 2021-03-22 한화시스템(주) 실시간 고속 데이터 병렬 처리 장치 및 방법

Also Published As

Publication number Publication date
US7796061B2 (en) 2010-09-14
US20080310555A1 (en) 2008-12-18

Similar Documents

Publication Publication Date Title
KR100801630B1 (ko) 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
US9979978B2 (en) Image encoding apparatus, method of image encoding, and recording medium, image decoding apparatus, method of image decoding, and recording medium
CN104604235B (zh) 用于视频处理的发送装置及其方法
US8532196B2 (en) Decoding device, recording medium, and decoding method for coded data
US10200716B2 (en) Parallel intra-prediction encoding/decoding process utilizing PIPCM and/or PIDC for selected sections
US20150350652A1 (en) Content aware scheduling in a hevc decoder operating on a multi-core processor platform
US9693071B1 (en) Self-adaptive load balance optimization for multicore parallel processing of video data
JP2010141821A (ja) ストリーミングプロセッサおよびプロセッサシステム
Chen et al. Efficient software H. 264/AVC to HEVC transcoding on distributed multicore processors
KR100827107B1 (ko) 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
KR20230003413A (ko) 픽쳐 경계 처리를 사용하여 픽쳐를 인코딩하고 디코딩하는 장치 및 방법
US20190279330A1 (en) Watermark embedding method and apparatus
CN106851298B (zh) 一种高效视频编码方法及装置
Radicke et al. A multi-threaded full-feature HEVC encoder based on wavefront parallel processing
Sjövall et al. High-level synthesis implementation of an embedded real-time HEVC intra encoder on FPGA for media applications
CN111913816A (zh) Gpgpu中簇的实现方法、装置、终端及介质
WO2014209366A1 (en) Frame division into subframes
US8111749B2 (en) Image encoding or decoding method and device, with parallelization of processing over several processors and coprocessors, corresponding computer-readable storage medium
KR101355375B1 (ko) 멀티코어 플랫폼 기반의 멀티미디어 복호화 방법 및 장치
US20150382021A1 (en) Techniques for processing a video frame by a video encoder
KR101172346B1 (ko) 데이터 처리 속도를 개선한 데이터 처리장치 및 그 동작방법
Vu et al. An adaptive dynamic scheduling scheme for h. 264/avc decoding on multicore architecture
Migallón et al. Synchronous and asynchronous HEVC parallel encoder versions based on a GOP approach
KR101219220B1 (ko) 병렬 부호화를 위한 데이터 파티션 방법 및 이를 수행하는 프로그램을 기록한 기록매체
KR20180108315A (ko) 영상의 병렬 부호화 방법

Legal Events

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

Payment date: 20101108

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee