KR100863515B1 - 비디오 신호의 디코딩 방법 및 장치 - Google Patents

비디오 신호의 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR100863515B1
KR100863515B1 KR1020060099582A KR20060099582A KR100863515B1 KR 100863515 B1 KR100863515 B1 KR 100863515B1 KR 1020060099582 A KR1020060099582 A KR 1020060099582A KR 20060099582 A KR20060099582 A KR 20060099582A KR 100863515 B1 KR100863515 B1 KR 100863515B1
Authority
KR
South Korea
Prior art keywords
data
interpolation
memory
present
selector
Prior art date
Application number
KR1020060099582A
Other languages
English (en)
Other versions
KR20080033659A (ko
Inventor
김신덕
박정욱
박정민
박준규
Original Assignee
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 연세대학교 산학협력단 filed Critical 연세대학교 산학협력단
Priority to KR1020060099582A priority Critical patent/KR100863515B1/ko
Publication of KR20080033659A publication Critical patent/KR20080033659A/ko
Application granted granted Critical
Publication of KR100863515B1 publication Critical patent/KR100863515B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • 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/43Hardware specially adapted for motion estimation or compensation
    • 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
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 효과적으로 비디오 신호를 디코딩하기 위한 비디오 신호의 디코딩 방법 및 장치에 관한 것이다.
본 발명은 데이터를 꺼내어 재조합하고 브로드캐스팅하는 단계; 상기 브로드캐스팅된 데이터를 연산정보에 따라 선택하는 단계; 및 상기 선택된 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 비디오 신호의 디코딩 방법을 제공한다.
또한, 본 발명은 꺼낸 데이터를 재조합하여 브로드캐스팅하는 페치부(fetch unit); 상기 브로드캐스팅된 데이터를 연산정보에 따라 선택하는 적어도 하나 이상의 셀렉터(selector)와, 상기 셀렉터에서 선택된 데이터를 저장하는 적어도 하나 이상의 제2메모리를 포함하는 데이터 처리부; 및 상기 페치부와 상기 데이터 처리부를 제어하는 제어부를 구비하는 것을 특징으로 하는 비디오 신호의 디코딩 장치를 제공한다.
페치부, 셀렉터, 데이터 버스

Description

비디오 신호의 디코딩 방법 및 장치 {Method and Apparatus for decoding video signal}
도 1은 본 발명에 따른 비디오 신호의 디코딩 방법과 장치를 설명하기 위해 도시한 것이다.
도 2는 본 발명에 따른 페치부의 일 실시예를 도시한 것이다.
도 3은 본 발명에 따른 셀렉터의 일 실시예를 도시한 것이다.
도 4a, 도 4b는 본 발명에 따른 16*16 마크로 블록 수평(horizontal)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다.
도 5는 본 발명에 따른 데이터 매핑 방법의 일 실시예를 도시한 것이다.
도 6a, 도 6b는 본 발명에 따른 16*8 마크로 블록 수직(vertical)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다.
도 7은 본 발명에 따른 4*4 마크로 블록 수평 인터폴레이션한 후의 결과 이 위치한 상태를 도시한 것이다.
도 8a, 도 8b는 본 발명에 따른 4*4 마크로 블록 크로마(chroma)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다.
도 9는 본 발명에 따른 데이터 매핑 방법의 일 실시예를 도시한 것이다.
도 10a, 도 10b는 본 발명에 따른 IDCT 모드에서 필요한 데이터와 셀렉터 매 핑의 일 실시예를 도시한 것이다.
도 11은 본 발명에 따른 IDCT에서의 데이터 매핑 방법의 일 실시예를 도시한 것이다.
*도면의 주요부분에 대한 부호의 설명
10:제어부 20:페치부
30:외부 메모리 40:외부 인터페이스
50:처리요소(PE) 60:셀렉터
70:PE 메모리 80:명령어 버스
90:데이터 버스 100:데이터 처리부
본 발명은 비디오 신호의 디코딩 방법 및 장치에 관한 것으로, 보다 상세하게는 단일 명령 복수 데이터 구조에서 사전에 재조합되어 브로드캐스팅되는 데이터를 내부 메모리에서 선택적으로 저장하는 데이터 매핑 방법을 통하여 효과적으로 비디오 신호를 디코딩하는 방법 및 장치에 관한 것이다.
지금까지 신호 압축과 복원에 관한 많은 기술들이 소개되었으며, 일반적으로 해당 기술들의 적용 대상은 오디오와 비디오를 포함한 다양한 데이터이다. 또한, 신호 압축이나 복원 기술들은 압축률은 높으면서도 화질이나 음질은 보다 좋아지도록 하는 방향으로 발전하고 있다.
또한, 디지털 방송, VOD, IPTV 등의 영상 서비스 다양화와 단말기 기술 발전에 따라 고화질의 영상압축 기술이 등장하며 영상 스트림의 인코딩/디코딩을 위하여 보다 많은 연산이 요구되어 지고 있다. 또한, 서비스 및 기능의 컨버전스에 따라 다중 압축표준을 지원하기 위한 비디오 코덱 솔루션으로써 프로그래머블 하드웨어 구조에 대한 요구가 높아지고 있다. 한편, 이러한 문제를 해결하기 위하여 가장 적은 비용으로 고성능을 얻을 수 있는 단일 명령 복수 데이터 구조의 적용이 활발하게 이루어지고 있다.
한편, 비디오 신호와 같은 데이터를 처리함에 있어서, 단일 명령 복수 데이터 구조로 데이터를 연산하고, 처리하기 위한 구체적인 방법이 제시되지 않아, 비디오 신호의 디코딩 장치를 개발하는 데 많은 제약이 따르고 있는 실정이다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 효과적으로 비디오 신호를 디코딩하는 방법과 장치를 제공하는 것이다.
본 발명의 다른 목적은 단일 명령 복수 데이터 구조에서 사전에 재조합되어 브로드캐스팅되는 데이터를 내부 메모리에서 선택적으로 저장하는 효과적인 데이터 매핑 방법을 제공하는 것이다.
상기 목적을 달성하기 위하여, 본 발명은 데이터를 꺼내어 재조합하고 브로드캐스팅하는 단계; 상기 브로드캐스팅된 데이터를 연산정보에 따라 선택하는 단계; 및 상기 선택된 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 비디 오 신호의 디코딩 방법을 제공한다.
본 발명의 다른 실시 형태에 의하면, 본 발명은 꺼낸 데이터를 재조합하여 브로드캐스팅하는 페치부(fetch unit); 상기 브로드캐스팅된 데이터를 연산정보에 따라 선택하는 적어도 하나 이상의 셀렉터(selector)와, 상기 셀렉터에서 선택된 데이터를 저장하는 적어도 하나 이상의 제2메모리를 포함하는 데이터 처리부; 및 상기 페치부와 상기 데이터 처리부를 제어하는 제어부를 구비하는 것을 특징으로 하는 비디오 신호의 디코딩 장치를 제공한다.
그리고, 상기 페치부는 데이터 버스를 통하여 상기 데이터 처리부에 데이터를 브로드캐스팅하는 것을 특징으로 한다.
또한, 상기 제어부는 명령어 버스를 통해서 상기 연산정보를 데이터 처리부에 전송하는 것을 특징으로 한다.
따라서, 본 발명에 의하면, 비디오 신호의 디코딩 과정에서 오버헤드가 큰 순열 기능을 요구하지 않기 때문에 하드웨어적으로 크기(area), 대기시간(latency), 파워를 감소할 수 있어 효율적으로 비디오 신호를 디코딩하는 것이 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예의 구성과 그 작용을 설명하며, 도면에 도시되고 또 이것에 의해서 설명되는 본 발명의 구성과 작용은 적어도 하나의 실시 예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적 인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미를 명확히 기재하므로, 본 발명의 설명에서 사용된 용어의 명칭만으로 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.
종래와 동일한 구성 요소는 설명의 편의상 동일 명칭 및 동일 부호를 부여하며 이에 대한 상세한 설명은 생략한다.
본 발명에서 "단일 명령 복수 데이터 구조(single instruction multiple data architecture:SIMD 구조, 이하 'SIMD 구조'라 한다.)"란 연산장치를 복수 개 가지고, 단일 명령으로 서로 다른 복수의 데이터에 대한 연산을 동시에 실행시키는 제어 방식을 의미한다. 본 발명은 SIMD 구조를 포함하는 디코딩 장치에 모두 적용가능하다.
본 발명에서 "메모리"란 데이터, 정보 등을 기억하는 기억장치를 의미한다. 상기 메모리는 디코딩 장치에서 제어부의 외부에 존재하고 메인 메모리 역할을 수행하는 외부 메모리(external memory:30)와, 데이터 처리부를 구성하는 적어도 하나 이상의 처리요소(processing element:PE, 이하 'PE'라 한다.) 각각에 존재하는 적어도 하나 이상의 PE 메모리(PE memory:70)가 존재할 수 있다. 이때, 본 발명에서는 외부 메모리(30)를 제1메모리, PE 메모리를 제2메모리 또는 내부 메모리라 명명하여 사용 가능하고, 본 발명에 메모리의 명칭에 한정되지는 않음을 밝혀둔다.
도 1은 본 발명에 따른 비디오 신호의 디코딩 방법과 장치를 설명하기 위해 도시한 것이다. 특히, 본 발명은 SIMD 구조를 구비한 디코딩 장치를 도시한 것이 다.
도 1을 참조하면, 본 발명에 따른 디코딩 장치는 제어부(control unit:10)와 SIMD 구조로 이루어진 데이터 처리부(100)를 포함한다. 또한, 디코딩 장치는 제어부(10)부가 외부에 트랜젝션 요청(transaction request)을 하고 특정 정보를 입력받는 외부 인터페이스(external interface:40)와 디코딩 장치의 데이터(예를 들어, 비디오 신호)를 저장하는 외부 메모리(external memory:30)를 포함할 수 있다. 또한, 디코딩 장치는 제어부(10)의 연산정보(명령어 등을 포함) 데이터 저장부(100)에 전송하는 명령어 버스(instruction bus:80)와 페치부(fetch unit:20)가 재조합하여 데이터 처리부(100)에 데이터(예를 들어, a, b, c, d)를 브로드캐스팅하는 데이터 버스(data bus:90)를 더 포함할 수 있다. 또한, 디코딩 장치는 데이터를 움직임 보상(motion compensation)하는 움직임 보상부와, 데이터를 역이산화(IDCT)하는 역이산화부를 더 포함할 수 있다.
제어부(10)는 외부 메모리(30)로부터 데이터를 꺼내고, 꺼낸 데이터를 바이트 단위로 순서를 재조합하여 데이터 처리부(100)로 브로드캐스팅하는 페치부(20)를 포함하고, 페치부(20)를 제어한다. 여기서, 페치부(20)는 제어부(10)의 외부에 존재하는 것도 가능하다. 또한, 제어부(10)는 마크로 블록 사이즈(macro block size), 연산모드(mode) 등을 포함하는 연산정보를 데이터 처리부(100)에 전송하여, 데이터 처리부(100)를 제어할 수 있다. 관련하여, 페치부(20)는 외부 메모리(30)로부터 꺼낸 데이터를 데이터 버스(90)를 통해서 데이터 처리부(100)에 브로드캐스팅하기 전에 데이터를 일시적으로 저장하는 버퍼(buffer)를 포함할 수 있다.
데이터 처리부(100)는 데이터의 연산을 위한 연산부와 레지스터(resister)를 포함하는 PE(50)와, PE의 데이터를 저장하기 위한 PE 메모리(70), 데이터 버스(90)를 통해서 페치부(20)가 브로드캐스팅한 데이터를 제어부(10)의 연산정보에 따라 PE(50)를 위한 데이터를 PE 메모리(70)에 선택적으로 저장하는 셀렉터(selector:60)를 적어도 하나 이상씩 구비할 수 있다. 본 발명은 데이터 처리부(100)가 SIMD 구조인 경우, PE(50), PE 메모리(70), 셀렉터(selector:60)를 하나의 연산단위로 가정하면, 이러한 연산단위가 적어도 하나 이상인 경우에 모두 적용가능하다. 관련하여, 셀렉터(selector:60)는 하드웨어적으로 선택하는 데이터를 고정하는 것도 가능하고, 소프트웨어적으로 선택하는 데이터를 가변적으로 하는 것도 가능하다.
이하에서는 데이터 처리부(100)의 SIMD 구조의 일 예와, 이에 따른 디코딩 장치에서의 동작에 대해서 예를 들어 살펴본다.
본 발명에서 SIMD 구조는 16개의 PE와 그에 따른 각각 1Kbyte의 PE 메모리를 갖는다. 디코딩 장치에서 특정 연산이 시작되면 제어부(10)는 32비트 명령어 버스(80)를 통하여 연산정보를 브로드캐스팅하고 페치부(20)를 제어하여 순열 프리(permutation free)하게 필요한 데이터들을 외부 메모리(30)에서 꺼내어 이를 재조합하고, 재조합한 데이터를 32비트 데이터 버스(90)를 통해 데이터 처리부(100)에 브로드캐스팅한다. 제어부(10)는 페치부(20)를 수행시키는 동시에 해당 연산의 관련 정보인 연산정보를 명령어 버스(80)를 통해 데이터 처리부(100)에 전송한다. 데이터 처리부(100) 내의 각각의 셀렉터는 명령어 버스(80)를 통해 수신한 연산정 보를 바탕으로 데이터 버스(90)로 순차적으로 브로드캐스팅되어 오는 데이터들을 선택적으로 받아 각각의 PE 메모리에 저장한다. 이때, 페치부(20)는 외부 메모리(30)로부터 데이터를 꺼내올 때, 내부 버퍼와 여러 파라미터 값을 이용하여 데이터를 재조합하는 것이다. 관련하여, SIMD 구조의 16개의 PE에 번호를 붙이면 PE0, PE1, ...,PE15로 명명하는 것이 가능하다.
따라서, 본 발명에 따른 SIMD 구조는 높은 프로그램어빌러티(programmability)를 바탕으로 하드웨어 구조의 유연함과 동시에 고성능의 영상처리가 가능하다.
도 2는 본 발명에 따른 페치부의 일 실시예를 도시한 것이다. 특히, 페치부(20)에서의 동작을 예를 들어 설명하기 위한 도면이다.
페치부(20)는 제어부(10) 내부 또는 외부에서, 필요로 하는 데이터를 외부 메모리로부터 가져오고 순열 프리(permutation free) 할 수 있게 바이트 단위로 데이터의 순서를 재조합하여 제어부(10)의 외부에 있는 PE들의 PE 메모리에 필요한 데이터를 공급해주는 역할을 담당한다. 이때, 명령어 버스로 32비트를 사용하는 것이 가능한데, 명령어 버스를 최대한 파라미터로 활용함으로써 프로그램어빌러티(programmability)를 높였고 이에 따라 시스템의 적응력을 향상시켰다.
페치부(20)에서의 동작을 예를 들어 설명하면, 제어부(10)의 시작명령과 함께 첫 번째 파라미터로 32비트 외부 메모리의 데이터 시작주소를 받은 후 29비트의 연속적인 파라미터를 순차적으로 받을 수 있다. 이때, 첫 사이클에서 필요한 데이터의 시작주소를 파라미터값으로 이용하고, 두 번째 사이클 이후부터는 재정 렬(reorder) 파라미터(210) 16비트, 연산모드와 마크로 블록 사이즈(mode & mbsize) 파라미터(220) 6비트, PE 메모리의 쓰기 주소(write address) 파라미터(230) 3비트, 페치부 내부 버퍼 주소(buffer w_address) 파라미터(240) 4비트를 파라미터값으로 이용할 수 있다.
연산모드와 마크로 블록 사이즈(mode & mbsize) 파라미터(220) 6비트와 쓰기 주소(write address) 파라미터(230) 3비트는 아이들(idle) 상태의 명령어 버스를 활용하여 외부 PE들의 셀렉터에게 전달되고 이를 활용해 PE의 PE 메모리는 선택적으로 데이터를 받아 저장할 수 있다. 특히, 연산모드와 마크로 블록 사이즈(mode & mbsize) 파라미터(220) 6비트는 셀렉터로 포워딩되는 정보로써 연산모드(예를 들어, luma horizontal, vertical, diagonal, chroma, idct, writeback 등)와 마크로 블록 사이즈(예를 들어, 4*4 ~ 16*16)를 나타내고, 쓰기 주소(write address) 파라미터(230) 3비트는 SIMD 구조 내부의 PE 메모리에서 저장하는 최대 패턴의 길이가 6인점을 감안하여 저장하는 순서를 나타낸다.
재정렬(reorder) 파라미터(210) 16비트는 연산 알고리즘에 따라 순열 프리(permutation free)한 순서로 데이터를 재조합하기 위한 내부 버퍼의 주소로써 16개 엔트리를 갖는 버퍼(270) 주소를 나타낼 수 있는 4비트씩 4개를 의미한다. 특히, 재정렬(reorder) 파라미터(210) 16비트는 버퍼 16엔트리의 주소를 나타내는 4비트 정보의 4개(16비트)를 이용하여 버퍼 내부에 존재하는 8비트 데이터들을 추출해내어 재조합하는데 이런 방식을 통하여 사전에 순열 프리한 32비트 브로드캐스팅 데이터를 순차적으로 재구성할 수 있다. 여기서, 버퍼(270)는 쓰기를 위한 포트인 쓰기 포트(write port:250)와 읽기를 위한 포트인 읽기 포트(read port:260)을 구비할 수 있고, 쓰기 포트(250)와 읽기 포트(260)는 각각 8비트씩 쓰고 읽을 수 있다. 그리고, 버퍼(270)로부터 출력되는 4개의 8비트 데이터들은 4개의 지연(delay) 유닛과 4개의 앤드(AND)게이트를 이용하여 총 32비트 재조합된 데이터를 만들어 외부 32비트 데이터 버스를 통해 보낼 수 있다.
페치부 내부 버퍼 주소(buffer w_address) 파라미터(240) 4비트는 페치부(20)를 통해서 첫 파라미터인 시작주소로부터 연속적으로 들어오는 32비트 데이터를 가지고 8비트씩 분할되어 순차적으로 내부 버퍼에 저장될 때 주소로써 이용된다.
도 3은 본 발명에 따른 셀렉터의 일 실시예를 도시한 것이다.
SIMD 구조에서 셀렉터(30)는 각 PE와 각 PE의 PE 메모리 사이에 존재할 수 있다. 순열 프리한 순서로 재조합되어 페치부(20)로부터 브로드캐스팅되어 오는 32비트 데이터 중 제어부(10)로부터 아이들(idle)한 상태의 명령어 버스를 통해 미리 받은 정보를 이용해서 필요한 데이터를 선택하고, 선택된 데이터를 PE 메모리에 저장하는 역할을 담당한다.
제어부(10)가 전송하여 아이들(idle) 상태의 명령어 버스를 통해서 사전에 페치부(20)로부터 포워딩되어 오는 파라미터 중 쓰기 주소(write address) 파라미터(310) 3비트는 연산 알고리즘에 대해서 존재하는 패턴의 최대 데이터 개수가 6이고(예를 들어, luma mode) 최소 저장 단위가 1바이트인 점을 감안하여 한 패턴 내에서 PE 메모리의 저장순서를 의미한다. 나머지 파라미터인 연산모드와 마크로 블 록 사이즈(mode & mbsize) 파라미터(320) 6비트는 특정 정보(예를 들어, luma horizontal, vertical, diagonal, chroma, idct, writeback)를 나타내는데, 셀렉터(30)는 특정 정보를 이용하여 셀렉터 내부 ROM(330)에 저장되어 있는 각 연산과 마크로 블록 사이즈에 따라 존재하는 패턴에 대한 정보의 시작주소를 알 수 있다.
셀렉터(30) 내부의 ROM(330)에 저장된 패턴 정보를 살펴보면 패턴의 최대 가능한 Loop 개수(예를 들어, luma diagonal 21번)를 나타내는 5비트(331), 각 루프(loop) 마다의 공백 사이클을 나타내는 스톨(stall) 3비트(332), 패턴의 시작 사이클을 나타내는 6비트(333), 매 사이클마다 32비트 데이터에 대해서 선택할 수 있는 인에이블링(enabling) 3비트(334)(예를 들어, 8비트씩 나눠 abcd라 가정, a, b, c, d, ab, bc, cd)가 한 패턴에 최대 존재 개수가 5인 점을 감안하여 5개가 순차적으로 존재한다. 이러한 정보는 간단한 내부 제어(control) 로직(340)을 통해서 필요시 매 사이클마다 최종 인에이블링(enabling) 3비트가 인출되므로, 셀렉터(30)는 이를 이용하여 최종적으로 8비트 또는 16비트 데이터를 선택할 수 있다.
도 4a, 도 4b는 본 발명에 따른 16*16 마크로 블록 수평(horizontal)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다. 특히, 데이터의 움직임 보상(motion compensation) 중 루마 인터폴레이션(luma interpolation)의 수평 인터폴레이션(horizontal interpolation) 설명하기 위한 것이다.
도 4a는 PE0부터 PE15까지의 16개의 PE 메모리에서 필요한 데이터를 총체적으로 나타낸 것이다. 도 4b에서 각 라인은 클럭을 나타내고, 'avail px' 필드는 페치부에서 외부메모리에 요구하는 데이터를 의미한다. 'b0'필드와 'b1'필드는 16bytes 버퍼를 이용하여 재구성해서 브로드캐스팅되는 데이터를 의미한다. 예를 들어, 'b0'필드가 16bit이면 'b0'의 앞 8bit는 'a'를 나타내고, 'b0'의 뒤 8bit는 'b'를 나타내며, 'b1'필드가 16bit이면 'b1'의 앞 8bit는 'c'를 나타내고, 'b1'의 뒤 8bit는 'd'를 나타낼 수 있다. 또한, 도 4b는 해당 클럭시에 PE 메모리의 셀렉터의 enabling 패턴을 각 PE별로 나열한 값들이 마크로 블록 사이즈마다 구현될 수 있다.
비디오 코덱에서 sub-pixel 을 만들어내기 위해서는 주변의 픽셀들을 이용한 인터폴레이션을 수행한다. 특정 코덱에서 half-pel pixel을 만들어 내기 위한 인터폴레이션은 주변의 6픽셀을 참조하여 사용한다. 예를 들어, 수평 인터폴레이션의 경우 좌우 각 3픽셀씩 사용하게 되는데, 이를 16개의 PE를 사용하여 수행함에 있어 수평방향의 메모리 접근만이 가능할 경우 6번의 로드(load)를 통하여 첫번째 수평열(row) 에 대한 수행이 가능하고 이러한 연산을 16번 반복하게 되어 총 96번의 로드(load)가 수행되게 된다. 이와 달리, 수직방향의 메모리 접근이 가능할 경우네는 매 PE는 6번의 로드를 수행하여 첫 수직열(column)에 대한 인터폴레이션을 완료한 이후 여기서 사용한 6개의 픽셀 데이터 중 5개의 데이터를 다음 수직열(column)의 인터폴레이션 연산에서 재사용할 수 있다. 이에 따라 총 21번의 로드(load) 만으로 모든 인터폴레이션을 수행할 수 있다.
도 5는 본 발명에 따른 데이터 매핑 방법의 일 실시예를 도시한 것이다. 특히, 도 4a의 데이터가 도 4b로 셀렉터 매핑되는 것의 설명하기 위한 도면이다.
해당 알고리즘의 메모리 접근 패턴에 따라 페치부(20)가 외부 메모리(30)로 부터 32bit의 트랜젝션 요청(transaction request)을 통해 데이터를 가져오고, 가져온 데이터는 페치부(20) 내부에 구비된 16bytes 버퍼를 통해 순서가 재구성되어 PE 메모리의 데이터 버스에 재구성된 데이터(예를 들어, A, B, C, D)가 브로드캐스팅 되어진다. 여기서, PE 메모리의 주파수대역(bandwidth)이 16bit이기 때문에 패턴을 만들기 위해서 두 사이클 쉬게 된다. 상기 두 사이클의 공백은 다음 라인의 페치(fetch)시 오버랩되어 파이프라인 구동이 가능하다. PE 메모리에서 각 PE의 셀렉터는 미리 받은 해당 알고리즘 메모리 접근 패턴의 연산정보를 이용하여 자신이 언제 어떻게 받을 것인지에 대해서 정해져 있는 enabling 패턴과 PE 메모리에 쓰여질 주소를 통해 자신의 데이터를 받아들인다. 이렇게 받아들인 데이터를 살펴보면 PE0는 'AB', 'AB', 'AB'이고, PE1은 'B', 'AB', 'AB', 'A'이고, PE2는 'AB', 'AB', 'AB'이고, ..., PE15은 'D', 'CD', 'CD', 'A'인데, 이를 데이터 값으로 표현하면, PE0는 '01', '23', '45'이고, PE1은 '1', '23', '45', '6'이고, PE2는 '23', '45', '67'이고, ..., PE15은 '15', '1617', '1819', '20'이다.
도 6a, 도 6b는 본 발명에 따른 16*8 마크로 블록 수직(vertical)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다. 특히, 데이터의 움직임 보상(motion compensation) 중 루마 인터폴레이션(luma interpolation)의 수직 인터폴레이션(vertical interpolation) 설명하기 위한 것이다.
도 6a, 도 6b의 각 필드에 대해서는 상기 도 4a, 도 4b에서 설명하였는바, 여기서는 생략한다. 수직 인터폴레이션(vertical interpolation)은 순차적으로 한 라인을 읽고 다음 라인을 읽는 단순한 패턴으로 되어있다. 그리고 필요한 데이터끼 리 서로 오버랩되기 때문에 16*8 마크로 블록 사이즈인 경우에는 앞에 2개와 뒤에 3개를 더 포함하여 총 13개 라인을 읽으면 된다.
데이터의 움직임 보상(motion compensation) 중 루마 인터폴레이션(luma interpolation)의 대각선 인터폴레이션(digonal interpolation)에 대해서 설명하면 다음과 같다.
대각선 인터폴레이션(digonal interpolation)은 수평 인터폴레이션(horizontal interpolation)을 한 결과 값을 가지고 수직 인터폴레이션(vertical interpolation)을 수행하면 된다. 결과 값이 가로16 * 세로16개가 나오기 위해서는 수평연산을 앞2줄과 뒤3줄을 더 해줘야 한다. 마찬가지로 수직연산도 앞2줄과 뒤3줄을 더 해줘야 한다. 따라서 마크로 블록 사이즈가 16*16인 경우, 기존 가로19 * 세로19개의 메모리를 가져오는 것에서 변경되어 가로21 * 세로21개의 메모리를 가져올 수 있다.
다만, 대각선 인터폴레이션(digonal interpolation)에서 4*4, 4*8, 8*4, 8*8, 8*16 마크로 블록 사이즈에 대해서는 수평 인터폴레이션(horizontal interpolation)을 수행하면 그 결과 값이 여러 PE 메모리에 흩어져 있으므로, 수직 인터폴레이션(vertical interpolation)을 수행하기 위해서는 하나의 PE의 로컬메모리에 저장되어 있어야 하는 제약 조건이 필요한 경우가 있다.
도 7은 본 발명에 따른 4*4 마크로 블록 수평 인터폴레이션한 후의 결과 이 위치한 상태를 도시한 것이다.
예를 들어, 4*4 마크로 블록인 경우를 살펴보면, 9*9 사이즈를 가져 온 후 수평 인터폴레이션을 수행한 후 그 결과 값이 도 7과 같이 흩어져 있을 수 있다. 그러므로, 도 7서는 PE0, PE4, PE8, PE12의 결과 값을 재정렬하여 하나의 PE의 PE 메모리에 넣어주는 방법을 이용할 수 있다. 마찬가지로 PE1, PE5, PE9, PE13과 나머지 PE들의 재정렬도 수행하여 그 정렬한 결과 값을 가지고 수직 인터폴레이션을 수행할 수 있다.
도 8a, 도 8b는 본 발명에 따른 4*4 마크로 블록 크로마(chroma)에서의 필요한 데이터와 셀렉터 매핑의 일 실시예를 도시한 것이다. 특히, 데이터의 움직임 보상(motion compensation) 중 크로마 인터폴레이션(chroma interpolation)을설명하기 위한 것이다.
크로마 인터폴레이션은 특정 데이터 픽셀의 인터폴레이션을 위해서 주변의 4개의 데이터를 필요로 하고, 버퍼링이 필요하지 않다.
도 9는 본 발명에 따른 데이터 매핑 방법의 일 실시예를 도시한 것이다. 특히, 도 8a의 데이터가 도 8b로 셀렉터 매핑되는 것의 설명하기 위한 도면이다.
해당 알고리즘의 메모리 접근 패턴에 따라 페치부(20)가 외부 메모리(30)로부터 32bit의 트랜젝션 요청(transaction request)을 통해 데이터를 가져오고, 가져온 데이터는 페치부(20) 내부에 구비된 16bytes 버퍼를 통해 순서가 재구성되어 PE 메모리의 데이터 버스에 재구성된 데이터(예를 들어, A, B, C, D)가 브로드캐스팅 되어진다. 이렇게 받아들인 데이터를 살펴보면 PE0는 'A:0 B:1'이고, PE1은 'B:1 C:2'이고, PE2는 'C:2 D:3'이고, PE3은 'D:3', 'A:4'이 가능하다.
도 10a, 도 10b는 본 발명에 따른 IDCT 모드에서 필요한 데이터와 셀렉터 매 핑의 일 실시예를 도시한 것이다.
도 11은 본 발명에 따른 IDCT에서의 데이터 매핑 방법의 일 실시예를 도시한 것이다. 특히, 도 10a의 데이터가 도 10b로 셀렉터 매핑되는 것의 설명하기 위한 도면이다.
IDCT에서의 메모리 매핑은 16*16 마크로 블록 사이즈 개수 만큼을 페치부(20)가 외부 메모리(30)로부터 가지고 와서 4*4 마크로 블록으로 16개를 나누어 16개 PE의 PE 메모리에 할당한다. 이렇게 할당된 데이터를 살펴보면 PE0는 'C:0 D:1', 'A:2 B:3이고, PE1은 'C:4 D:5', 'A:6 B:7'이고, PE2는 'C:8 D:9', 'A:10 B:11'이고, PE3은 'C:12 D:13', 'A:14 B:15',...이 가능하다.
비디오 디코딩 과정에서 주요 연산은 2차원의 픽셀들로 이루어진 영상에 대한 연산을 수행하게 되는데 이론적으로 연산유닛은 연산을 자유방향으로 진행할 수 있으나 그에 대한 메모리 접근은 제한된 형태로 진행할 수밖에 없다. 특히, 연산의 종류에 따라 중복되는 메모리 접근 패턴을 이용하면 데이터의 재사용성을 크게 높일 수 있기 때문에 버퍼링을 이용한 선인출 기법과 순열 프리한 재조합 기법이 필요하고 그에 따른 SIMD 구조의 내부 메모리의 관리기법이 필요하여 본 발명은 이를 해결하는 방법을 제안한 것이다.
본 발명을 상술한 실시예에 한정되지 않으며, 첨부된 청구범위에서 알 수 있는 바와 같이 본 발명이 속한 분야의 통상의 지식을 가진 자에 의해 변형이 가능하고 이러한 변형은 본 발명의 범위에 속한다.
상기에서 설명한 본 발명에 따른 비디오 신호의 디코딩 방법 및 장치의 효과를 설명하면 다음과 같다.
첫째, 디코딩 장치의 연산 유닛이 항상 연산을 수행할 수 있도록 데이터를 정렬하여 공급해 줌으로써 효과적으로 비디오 신호를 디코딩하는 것이 가능하다.
둘째, 비디오 신호의 디코딩 과정에서 오버헤드가 큰 순열 기능을 요구하지 않기 때문에 하드웨어적으로 크기(area), 대기시간(latency), 파워를 감소할 수 있어 효율적으로 비디오 신호를 디코딩하는 것이 가능하다.

Claims (15)

  1. 소정 메모리로부터 데이터를 꺼내어 재조합하고 브로드캐스팅하는 단계;
    상기 브로드캐스팅된 데이터를 마크로블록 사이즈 및 연산모드를 포함하는 연산정보에 따라 선택하는 단계; 및
    상기 선택된 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 비디오 신호의 디코딩 방법.
  2. 제1항에 있어서,
    상기 저장 단계의 선택된 데이터를 이용하여 움직임 보상(motion compensation)하는 단계를 더 포함하는 것을 특징으로 하는 비디오 신호의 디코딩 방법.
  3. 제2항에 있어서,
    상기 움직임 보상(motion compensation)은 루마 인터폴레이션(luma interpolation), 크로마 인터폴레이션(chroma interpolation)으로 수행되는 것을 특징으로 하는 비디오 신호의 디코딩 방법.
  4. 제3항에 있어서,
    상기 루마 인터폴레이션(luma interpolation)은 수평 인터폴레이션(horizontal interpolation), 수직 인터폴레이션(vetical interpolation), 대각선 인터폴레이션(diagonal interpolation) 중 어느 하나인 것을 특징으로 하는 비 디오 신호의 디코딩 방법.
  5. 제1항에 있어서,
    상기 저장 단계의 선택된 데이터를 이용하여 역이산화(IDCT)하는 단계를 더 포함하는 것을 특징으로 하는 비디오 신호의 디코딩 방법.
  6. 제1항에 있어서,
    상기 소정 메모리로부터 꺼낸 데이터는 바이트 단위로 순서가 재조합되는 것을 특징으로 하는 비디오 신호의 디코딩 방법.
  7. 삭제
  8. 제어부, 페치부 및 데이터 처리부를 포함하여 구성되는 단일 명령 복수 데이터 구조의 비디오 신호 디코딩 장치에 있어서, 상기 장치는,
    상기 페치부 및 데이터 처리부를 제어하며, 상기 데이터 처리부에 마크로블록 사이즈 및 연산모드를 포함하는 연산정보를 전달하는 제어부;
    소정 메모리로부터 데이터를 꺼낸 후 이를 재조합하여 데이터 처리부에 브로드캐스팅하는 페치부;
    상기 브로드캐스팅된 데이터를 상기 연산정보에 따라 선택하는 적어도 하나 이상의 셀렉터와, 상기 셀렉터에서 선택된 데이터를 저장하는 적어도 하나 이상의 제2메모리를 포함하는 데이터 처리부;
    를 포함하여 구성되는 것을 특징으로 하는 비디오 신호 디코딩 장치.
  9. 삭제
  10. 제 8 항에 있어서, 상기 페치부는,
    상기 소정 메모리부터 꺼낸 데이터를 일시적으로 저장하는 버퍼를 포함하는 것을 특징으로 하는 비디오 신호의 디코딩 장치.
  11. 제 8 항에 있어서,
    상기 페치부는 데이터 버스를 통하여 상기 데이터 처리부에 데이터를 브로드캐스팅하는 것을 특징으로 하는 비디오 신호의 디코딩 장치.
  12. 제8항에 있어서,
    상기 제어부는 명령어 버스를 통해서 상기 연산정보를 데이터 처리부에 전송하는 것을 특징으로 하는 비디오 신호의 디코딩 장치.
  13. 삭제
  14. 삭제
  15. 삭제
KR1020060099582A 2006-10-13 2006-10-13 비디오 신호의 디코딩 방법 및 장치 KR100863515B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060099582A KR100863515B1 (ko) 2006-10-13 2006-10-13 비디오 신호의 디코딩 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060099582A KR100863515B1 (ko) 2006-10-13 2006-10-13 비디오 신호의 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080033659A KR20080033659A (ko) 2008-04-17
KR100863515B1 true KR100863515B1 (ko) 2008-10-15

Family

ID=39573516

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060099582A KR100863515B1 (ko) 2006-10-13 2006-10-13 비디오 신호의 디코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100863515B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047998A (ja) 1998-07-31 2000-02-18 Ricoh Co Ltd Simd方式の演算器及び演算処理装置
JP2001309386A (ja) 2000-04-19 2001-11-02 Mitsubishi Electric Corp 画像処理装置
WO2005025230A1 (ja) * 2003-08-28 2005-03-17 Hitachi Ulsi Systems Co., Ltd. 画像処理装置
JP2005218055A (ja) 2004-02-02 2005-08-11 Toshiba Corp 画像処理装置、画像処理方法および画像処理プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047998A (ja) 1998-07-31 2000-02-18 Ricoh Co Ltd Simd方式の演算器及び演算処理装置
JP2001309386A (ja) 2000-04-19 2001-11-02 Mitsubishi Electric Corp 画像処理装置
WO2005025230A1 (ja) * 2003-08-28 2005-03-17 Hitachi Ulsi Systems Co., Ltd. 画像処理装置
JP2005218055A (ja) 2004-02-02 2005-08-11 Toshiba Corp 画像処理装置、画像処理方法および画像処理プログラム

Also Published As

Publication number Publication date
KR20080033659A (ko) 2008-04-17

Similar Documents

Publication Publication Date Title
US5768445A (en) Compression and decompression scheme performed on shared workstation memory by media coprocessor
US8516026B2 (en) SIMD supporting filtering in a video decoding system
JP3686155B2 (ja) 画像復号装置
US20090033672A1 (en) Scheme for varying packing and linking in graphics systems
US20050190609A1 (en) Memory interface and data processing system
KR100874949B1 (ko) 단일 명령 다중 자료 프로세서 및 그것을 위한 메모리어레이 구조
US11809362B2 (en) Superimposing butterfly network controls for pattern combinations
US11804858B2 (en) Butterfly network on load data return
US20110087859A1 (en) System cycle loading and storing of misaligned vector elements in a simd processor
US8443413B2 (en) Low-latency multichannel video port aggregator
JP3676237B2 (ja) データ処理装置及び演算器
JP2007158550A (ja) 画像処理装置及び画像処理方法
JP5139322B2 (ja) 画像およびビデオ処理のためのメモリ体系化スキームおよびコントローラ・アーキテクチャ
US20100281234A1 (en) Interleaved multi-threaded vector processor
KR100863515B1 (ko) 비디오 신호의 디코딩 방법 및 장치
US20080162522A1 (en) Methods and apparatuses for compaction and/or decompaction
Tanskanen et al. Byte and modulo addressable parallel memory architecture for video coding
US20040105500A1 (en) Image processing system
US20090201989A1 (en) Systems and Methods to Optimize Entropy Decoding
US20050021902A1 (en) System, method, and apparatus for efficiently storing macroblocks
US7072400B2 (en) Inverse zigzag scanning of a matrix of video data values and manipulation
US20090006665A1 (en) Modified Memory Architecture for CODECS With Multiple CPUs
JP2001209617A (ja) 並列プロセッサ及びそれを用いた画像処理装置
Park et al. Memory sub-system optimization on a SIMD video signal processor for multi-standard CODEC
JP2012522280A (ja) リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20120904

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130823

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140813

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160105

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161005

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee