상기 기술적 과제를 이루기 위한 영상처리시스템에 있어서 본 발명에 의한 데이터 기록장치는 각각 독립적으로 억세스할 수 있는 적어도 하나 이상의 뱅크로 이루어지는 메모리; 및 하나의 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 상기 메모리에 기록되도록 제어하는 메모리 제어부를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 이루기 위한 영상처리시스템에 있어서 본 발명에 의한 데이터 기록방법은 각각 독립적으로 억세스할 수 있는 적어도 하나 이상의 뱅크로 이루어지는 메모리를 제공하는 단계; 및 하나의 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 상기 메모리에 기록되도록 제어하는 단계를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 이루기 위한 영상처리시스템에 있어서 본 발명에 의한 데이터 독출장치는 각각 독립적으로 억세스할 수 있는 적어도 하나 이상의 뱅크로 이루어지며, 하나의 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 각 뱅크에 기록되어 있는 메모리; 및 상기 메모리로부터 필요로 하는 휘도성분과 제1 및 제2 색도성분이 독출되도록 제어하는 메모리 제어부를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 이루기 위한 영상처리시스템에 있어서 본 발명에 의한 데이터 기록/독출장치는 각각 독립적으로 억세스할 수 있는 적어도 하나 이상의 뱅크로 이루어지며, 하나의 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 각 뱅크에 기록되어 있는 메모리; 상기 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 상기 메모리에 기록되도록 제어하고, 상기 메모리로부터 필요로 하는 휘도성분과 제1 및 제2 색도성분이 독출되도록 제어하는 메모리 제어부를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 이루기 위한 영상처리시스템에 있어서 본 발명에 의한 데이터 기록/독출방법은 각각 독립적으로 억세스할 수 있는 적어도 하나 이상의 뱅 크로 이루어지며, 하나의 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 각 뱅크에 기록되어 있는 메모리를 제공하는 단계; 상기 매크로블럭에 속하는 휘도성분과 제1 및 제2 색도성분이 서로 다른 구조에 의거하여 상기 메모리에 기록되도록 제어하는 단계; 및 상기 메모리로부터 필요로 하는 휘도성분과 제1 및 제2 색도성분이 독출되도록 제어하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에서는 상기 데이터 기록방법 및 독출방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이하, 첨부된 도면들을 참조하여 본 발명에 따른 데이터 기록/독출장치 및 방법에 대해 상세히 설명하기로 한다.
도 1은 본 발명이 적용되는 H.264/AVC 코덱에 따른 비디오 디코더의 개략적인 구성을 나타낸 블럭도로서, 엔트로피 복호화 모듈(111), 역양자화 및 역변환 모듈(113), 예측 모듈(115), 디블록킹 필터 모듈(Deblocking filter module)(117) 및 메모리(119)를 포함하여 이루어진다. 여기서, 메모리(119)는 비디오 디코더에 포함되거나, 비디오 디코더의 외부 버퍼일 수 있다. 메모리(119)가 외부 버퍼이면, 버스(100)는 H.264 코덱에서 외부 버스로 정의한 버스이고, 메모리(119)가 비디오 디코더에 포함되면, 버스(100)는 H.264 코덱에서 내부 버스로 정의한 버스일 수 있다.
도 1에 도시된 비디오 디코더에서는 전체적인 디코딩 속도를 개선하기 위하여 엔트로피 복호화 모듈(111), 역양자화 및 역변환 모듈(113), 예측 모듈(115) 및 디블록킹 필터 모듈(117)을 매크로블럭 단위의 파이프라인(Pipeline) 방식으로 운영한다. 즉, 엔트로피 복호화 모듈(111)이 n번째 매크로블럭에 대해 엔트로피 디코딩을 수행할 때, 역양자화 및 역변환 모듈(113)은 (n-1)번째 매크로블럭에 대해 역양자화 및 역변환을 수행하고, 예측 모듈(115)은 (n-2)번째 매크로블럭에 대해 인트라 예측 혹은 인터 예측 과정을 수행하고, 디블록킹 필터 모듈(117)은 (n-3)번째 매크로블럭에 대해 디블록킹 필터링을 수행한다.
이하, 각 구성요소의 개략적인 동작에 대하여 설명하면 다음과 같다.
엔트로피 복호화 모듈(111)은 수신된 비트스트림을 매크로블럭 단위로 엔트로피 디코딩한다. 여기서, 비트스트림은 비디오 코딩 계층(Video Coding Layer, VCL) NAL(Network Abstraction Layer)과 논-비디오 코딩 계층(non-VCL) NAL로 이루어지며, VCL NAL은 슬라이스 헤더와 데이터로 이루어지고, 각 데이터는 여러 개의 매크로블럭(MB)들로 이루어진다.
역양자화 및 역변환 모듈(113)은 엔트로피 디코딩된 데이터를 역양자화하고, 역양자화된 결과를 역변환한다. 역양자화 및 역변환 모듈(113)에서 얻은 역변환된 결과는 레지듀얼(residual) 정보로서, 예측 모듈(115)로 제공되는 동시에 버스(100)를 통해 메모리(119)에 저장된다.
예측 모듈(115)은 현재 매크로블럭의 레지듀얼 정보를 수신하여 픽쳐들간의 움직임을 예측하고, 예측된 픽쳐들간의 움직임과 레지듀얼 정보를 이용하여 현재 매크로블럭에 대한 원본 영상을 복원한다. 복원된 결과는 디블록킹 필터 모듈(117)로 제공되는 동시에 버스(100)를 통해 메모리(119)에 저장된다.
디블록킹 필터 모듈(117)은 예측 모듈(117)로부터 제공되는 현재 매크로블럭에 대한 복원 영상에 대하여 각 블럭들간의 블로킹효과를 제거하기 위한 디블록킹 필터링을 수행하고, 디블록킹 필터링 결과는 후단으로 출력되는 동시에 버스(100)를 통해 메모리(119)에 저장된다.
각 구성요소와 메모리(119)와의 관계를 살펴보면. 파이프라인 방식으로 운영되는 엔트로피 복호화 모듈(111), 예측모듈(115), 및 디블록킹 필터 모듈(117)은 버스(100)를 이용하여 메모리(119)를 억세스하는 한편, 역양자화 및 역변환 모듈(113)는 메모리(119)를 억세스함이 없이 엔트로피 복호화 모듈(111)과 예측모듈(115)간의 인터페이스만 존재한다.
특히, 예측모듈(115)에서는 인트라 예측 혹은 인터 예측을 수행함에 있어서 버스(100)를 통해 메모리(119)로부터 인접한 매크로블럭 데이터를 얻는데, 실시간 처리를 위해서는 소요되는 사이클 및 동시에 억세스해야 하는 데이터량이 상당히 많다. 특히, H.264 코덱의 경우 종래의 다른 비디오 표준에 비해 억세스해야 하는 데이터양이 많다. 이를 좀 더 세부적으로 살펴보기로 한다.
예측모듈(115)에서 수행되는 예측과정은 매크로블럭 타입에 따라 픽쳐내 예측(intra prediction)과 픽쳐간 예측(inter prediction)으로 나누어진다. 픽쳐내 예측의 경우에는 주변 픽셀을 참조하는데, 하나의 매크로블럭을 처리하는데 가로 21 픽셀과 세로 16 픽셀을 필요로 하므로 37 픽셀만을 메모리에서 가져오게 되어 계산량이 비교적 적다. 그러나, 픽쳐간 예측의 경우에는 외부 메모리를 통한 데이터 처리량이 많고, 1/4 픽셀 정확도의 보간 과정을 수행하기 때문에 복잡도가 크 다. 픽쳐간 예측의 경우 예측모듈(115)이 4x4 블록 단위로 움직임 예측하는 경우, 16x16 또는 8x8 블록 단위를 이용하는 다른 코덱보다 데이터 억세스 양이 많아진다. 따라서, 픽쳐간 예측의 경우 메모리(119)에서 데이터를 읽을 때 버스트모드(burst mode)를 이용한다. 버스트모드(연속 기록/재생 방법)는 DMA(Direct Memory Access)를 통해 메모리(119)에서 한번에 많은 양의 데이터를 읽음으로써 버스의 사용 효율을 향상시키는 방법이다. 만약 64 비트(8 바이트) 데이터 버스인 경우, 메모리 제어부(도 5의 503)는 데이터가 저장된 메모리(119)의 주소를 요청받으면, 해당 위치의 데이터를 액세스하고 이후의 데이터는 연속된 위치에 있으므로 64 비트 크기만큼 증가된 주소를 통해 해당되는 데이터를 연속적으로 억세스한다. 이와 같이 일반적으로 DMA을 통해 메모리에서 데이터를 읽을 때 버스트모드를 사용하면 한 번에 많은 데이터를 읽을 수 있어 같은 사이클 동안 더 많은 데이터를 읽을 수 있어 효율적이다.
도 2는 도 1에 도시된 예측 모듈(115)에서 사용되는 매크로블럭의 구조를 나타내는 것으로서, 도 2의 (a) 혹은 (b)에서와 같이 매 프레임에 속한 매크로블럭이 모두 프레임 구조이거나 필드 구조일 수 있고, 도 2의 (c)에서와 같이 프레임 구조와 필드 구조가 교대로 나타날 수 있다. 또한, 매크로 블럭 적응 프레임 필드(MBAFF:MB Adaptive Frame Field) 모드에 의해 매크로블럭들이 코딩될 경우, 도 2의 (d)에서와 같이 한 프레임내에서 서로 다른 종류의 매크로블럭들이 인접할 수 있다. MBAFF 모드에서는 수직으로 인접한 매크로블럭들이 한 쌍으로 코딩되고 각 쌍에 포함된 매크로블럭들은 서로 동일한 종류이다. 즉, 각 쌍에 포함된 매크로블 럭들은 모두 프레임 구조이거나 모두 필드 구조이다. 일반적으로, 하나의 필드는 상위 필드(top field)와 하위 필드(bottom field)로 이루어져 있다. 상위 필드는 짝수의 주사선들로 이루어진 우수(even) 필드를 의미하고, 하위 필드는 홀수의 주사선들로 이루어진 기수(odd) 필드를 의미한다.
도 3은 도 1에 도시된 예측 모듈(115)에서 영상의 시간상 예측을 위해 영상을 일정 크기의 블록으로 분할하는 방법의 일 예를 보여주는 도면이다. 이 방법은 ISO/IEC 14496-10 및 ITU-T Rec. H.264 표준기술에서 사용하는 방법으로서, 기본적으로 도 3의 (a)에서와 같이 하나의 매크로블럭을 16×16, 16×8, 8×16, 8×8의 다양한 크기로 나누고, 각각 움직임 벡터를 구하여 시간상으로 영상 값을 예측한다. 특히 8×8 크기의 블록은 도 3의 (b)에서와 같이 다시 8×8, 8×4, 4×8, 4×4 크기로 나누어 세밀한 움직임도 정확히 감지하게 해 준다. 또한, 시간상 예측을 사용하는 경우 반화소(half-pel) 혹은 1/4 화소(quater-pel) 움직임 예측방법을 사용하기 위하여 이전 알파채널 영상을 2배 혹은 4배로 확대한 후에 움직임 예측을 수행할 수 있다. 이와 같은 영상의 확대를 위하여, MPEG-4에서는 쌍선형 보간(bi-linear interpolation)을 수행하고, H.264에서는 6 탭 필터를 사용한 보간을 수행한다.
도 4는 본 발명에 따라서 도 1에 도시된 예측모듈(115) 혹은 디블록킹 필터모듈(117)로부터 제공되는 복원 영상을 메모리(119)에 저장하는 방법을 설명하는 도면으로서, 도 4의 (a)는 휘도성분(Y) 4의 (b)는 제1 및 제2 색도성분(Cr,Cb)을 저장하는 방법이다. 이때, 메모리(119)는 4개의 뱅크로 이루어져 있다.
하나의 매크로블럭에 속한 휘도성분은 도 4의 (a)에서와 같이 메모리(119)에 수직 방향으로 주소가 증가하고, 수평 4 바이트마다 뱅크가 바뀌도록 저장한다. 하나의 매크로블럭에 속한 제1 및 제2 색도성분(Cr 및 Cb)는 도 4의 (b)에서와 같이 각각 두개의 뱅크를 점유하며, 메모리(19)에 수직 방향으로 주소가 증가하고, 수평 4 바이트마다 뱅크가 바뀌도록 저장한다.
도 5는 본 발명에 따른 메모리 맵핑장치의 개략적인 구성을 나타내는 블럭도로서, 디코더 코어(501), 메모리 제어부(503), 및 메모리(505)를 포함하여 이루어진다.
도 5를 참조하면, 메모리(505)는 서로 독립된 주소 억세스 구조를 가지는 4개의 뱅크로 구성된다. 디코더 코어(501)와 메모리 제어부(503)는 m 비트 크기의 버스로 연결되며, 메모리 제어부(503)와 메모리(505)는 n 비트 크기의 버스로 연결된다. 메모리(505)로 SDRAM을 사용하는 경우에 m과 n은 같은 값을 가지며, DDR(Doble Data Rate) SDRAM을 사용하는 경우 m은 n의 2배이다. 왜냐하면, DDR SDRAM은 한 클럭 사이클에 두 번의 데이터 억세스가 가능하기 때문이다.
도 6a 내지 도 6c는 도 5에 도시된 메모리(505)의 세부적인 구성 및 동작을 설명하는 도면이다.
도 6a 및 도 6b를 참조하면, 디코더 코더(501)가 메모리(505)의 각각의 뱅크(601,602,603,604)에서 각각 일정 크기의 데이터를 억세스하고자 하는 경우에, 메모리 제어부(503)는 억세스하고자 하는 데이터가 위치한 곳의 주소를 주소 버스(605)를 통해 각각의 뱅크(601,602,603,604)로 전송한다.
메모리 제어부(503)는 뱅크 0(601)의 데이터를 억세스하기 위해 주소 버스(605)를 통해 주소를 전송하고 데이터 억세스까지의 지연(latency, 도 6b의 607) 시간 동안, 뱅크 1(602), 뱅크 2(603), 뱅크 3(604)에 대한 각각의 주소를 순서대로 주소 버스(605)를 통해 각각의 뱅크(602,603,604)로 전송한다. 따라서, 순차적으로 뱅크 0 부터 뱅크 3(601 내지 604)에 위치한 데이터를 억세스하여 데이터버스(606)로 전송할 수 있다. 즉, 뱅크 구조를 사용하지 않는 경우에는 4번의 지연이 발생하지만 인터리빙된 뱅크 구조를 사용하면 1번의 지연으로 4개의 뱅크에 위치한 데이터를 액세스할 수 있다. 따라서, 인터리빙된 뱅크 구조의 메모리를 사용하면 추가적인 지연을 방지하고 한 번의 지연으로 메모리(505)에 저장된 매크로블럭의 데이터를 액세스할 수 있다.
한편, 도 6c를 참조하면 메모리(505)는 서로 독립된 주소 억세스 구조를 가지는 4개의 뱅크로 구성되며, 각 뱅크는 3개의 영역으로 나누어진다. 즉, 뱅크0 및 뱅크1은 휘도성분을 위한 상위필드 영역(611), 휘도성분을 위한 하위필드 영역(613), 제1 색도성분을 위한 영역(615)으로 나누어지고, 뱅크2 및 뱅크3은 휘도성분을 위한 상위필드 영역(611), 휘도성분을 위한 하위필드 영역(613), 제2 색도성분을 위한 영역(617)으로 나누어진다.
도 7a 및 도 7b는 도 5에 도시된 메모리(505)가 프레임 구조인 경우 필드 구조인 4×4 블럭에 속한 휘도성분 및 색도성분의 움직임 보상을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다. 필드 구조의 4×4 블럭 16개로 구성된 P타입 매크로블럭 하나를 처리하기 위하여 메모리(119)는 버스트모드를 이용하며, 멀티 뱅크 인터리빙을 이용한 파이프라인 형태로 억세스된다. 이와 같은 메모리 억세스 동작은 도 8a 및 도 8b과 도 9a 및 도 9b에서도 동일하게 적용된다.
도 7a를 참조하면, 휘도성분은 뱅크A, 뱅크B 및 뱅크C에 걸쳐 있다. 뱅크A에서 실제로 사용되는 픽셀은 오른쪽 가장자리의 상위/하위(Top/Bottom) 필드의 8 픽셀이지만 버스트 모드를 사용할 수 있도록 24개의 더미(dummy) 픽셀을 추가로 가져온다. 뱅크A에서는 버스트8 모드를 이용하여 픽셀들을 가져오게 되면 13 사이클이면 가능하다. 뱅크B에서는 뱅크A를 처리하는 동안 초기 지연은 감추어지고, 풀 페이지(full page) 모드를 이용하여 순수하게 픽셀을 가져오는 시간인 9 사이클만이 소요된다. 뱅크C에서도 뱅크B와 마찬가지로 풀 페이지 모드를 사용하여 9 사이클 동안에 더미 픽셀을 포함한 픽셀 데이터들을 가져올 수 있다. 결과적으로 31(=13+9+9)사이클 동안에 휘도성분의 처음 4×4 블럭 데이터를 가져올 수 있고, 데이터를 버스에 싣는 지연을 포함하면 33(=31+2) 사이클이 소요된다. 나머지 15개의 4×4 블럭도 도 7a와 같이 걸쳐 있다고 가정하자. 뱅크A에 있는 픽셀 데이터를 가져올 때 초기 지연은 첫번째 4×4 블럭을 처리하는 동안 숨겨지므로 4 사이클이 소요되고 마찬가지로 뱅크B와 뱅크C를 처리하는데 각각 9 사이클이 소요된다. 그러므로 두번째 4×4 블럭을 처리하는 데에는 22(=4+9+9) 사이클만이 소요된다. 나머지 모든 4×4 블럭이 동일한 형태로 걸쳐져 있다고 가정하면 하나의 매크로블럭의 휘도성분 픽셀을 처리하는 데에는 363(=31+22×15+2) 사이클이 소요된다.
도 7b를 참조하면, 제1 색도성분(Cr)이 뱅크A와 뱅크B에 걸쳐 있고, 제2 색도성분(Cb)가 뱅크C와 뱅크D에 걸쳐져 있다. 하나의 매크로블럭의 휘도성분의 데이터 처리가 끝난 후, 뱅크A에서 픽셀 데이터를 가져오기 위해서 풀 페이지 모드를 사용하면 되는데 휘도성분의 데이터를 처리하는 동안 초기 지연은 감추어지고 3 사이클 만이 소요된다. 뱅크B에서는 휘도성분의 픽셀 데이터를 처리하는 동안 초기 지연은 숨겨지며 버스트4 모드를 이용하여 2사이클이 소요된다. 뱅크C에서는 초기 지연 중 숨겨지지 않은 6 사이클과 풀 페이지 모드를 이용한 3 사이클의 합으로 9 사이클이 소요되고, 뱅크D에서는 초기 지연은 숨겨지고 버스트4 모드를 이용하여 2 사이클만이 소요된다. 결과적으로 4×4 블럭에 속한 색도성분의 픽셀 데이터를 가져오는데 16(=3+2+9+2)사이클이 소요된다. 나머지 15개의 4×4 블럭에 속한 색도성분의 픽셀 데이터들도 도 7b와 같이 걸쳐져 있다고 가정하자. 뱅크A에서 픽셀 데이터를 가져올 때 초기 지연 중에 5 사이클이 숨겨지고 데이터를 가져오는데 3 사이클이 소요되므로 7 사이클이 소요되고, 뱅크B에서는 초기 지연이 모두 숨겨지므로 2 사이클만이 소요되고, 뱅크C에서는 초기 지연 중 8 사이클이 숨겨지고 데이터를 가져오는데 3 사이클이 소요되므로 4 사이클이 소요되고, 뱅크D에서 픽셀 데이터를 가져올 때에는 초기 지연은 숨겨지고 2 사이클이 소요된다. 그러므로 2번째 색도성분의 블럭을 처리하는 데에는 15(=7+2+4+2) 사이클이 소요된다. 나머지 4×4 블럭도 평균 15 사이클이 소요된다고 가정하면 하나의 매크로블럭의 색도성분 픽셀을 처리하는 데에는 243(=16+15×15+2) 사이클이 소요된다.
억세스되는 픽셀이 도 7a 및 도 7b와 같이 걸쳐진 경우 하나의 매크로블럭의 사이클 및 움직임보상을 위해 가져오는 데이터량은 다음 표 1 및 표 2와 같이 나타낼 수 있다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~16 |
1 |
2~16 |
소요사이클 |
31 |
22 |
16 |
15 |
합계 |
361 |
241 |
604 |
|
4×4 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
176 |
2816 |
색도 |
80 |
1280 |
총합 |
256 |
4096 |
도 8a 및 도 8b는 도 5에 도시된 메모리(505)가 필드 구조인 경우 프레임 구조인 4×4 블럭에 속한 휘도성분 및 색도성분의 움직임 보상을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다.
16개의 모든 4×4 블럭이 도 8a 및 도 8b와 같이 서로 다른 뱅크에 걸쳐져 있는 경우 휘도성분 및 색도성분의 픽셀을 읽어오는데 다음 표 3에서와 같이 각각 454 사이클과 463 사이클이 소요된다. 따라서, 데이터를 버스에 싣는 지연까지 포함하여 총 919 사이클이 소요된다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~16 |
1 |
2~16 |
소요사이클 |
34 |
28 |
28 |
29 |
합계 |
454 |
463 |
919 |
그리고 실제로 가져오는 데이터량은 표 4에서와 같이 2048 bytes이다.
|
4×4 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
88 |
1408 |
색도 |
40 |
640 |
총합 |
128 |
2048 |
도 9a 및 도 9b는 도 5에 도시된 메모리(505)가 프레임(필드) 구조인 경우 프레임(필드) 구조인 4×4 블럭에 속한 휘도성분 및 색도성분의 움직임 보성을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다.
16개의 모든 4×4 블럭이 도 9a 및 도 9b와 같이 서로 다른 뱅크에 걸쳐져 있는 경우 휘도성분 및 색도성분의 픽셀을 읽어오는데 다음 표 5에서와 같이 각각 276 사이클과 210 사이클이 소요된다. 따라서, 데이터를 버스에 싣는 지연까지 포함하여 총 488 사이클이 소요된다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~16 |
1 |
2~16 |
소요사이클 |
21 |
17 |
15 |
13 |
합계 |
276 |
210 |
488 |
그리고 실제로 가져오는 데이터량은 표 6에서와 같이 2048 bytes이다.
|
4×4 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
88 |
1408 |
색도 |
40 |
640 |
총합 |
128 |
2048 |
도 10a 및 도 10b는 도 5에 도시된 메모리(505)가 프레임 구조인 경우 필드 구조인 8×8 블럭에 속한 휘도성분 및 색도성분의 움직임 보성을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다. 필드 구조의 8×8 블럭 8개로 구성된 B타입 매크로블럭 하나를 처리하기 위하여 메모리(119)는 버스트모드를 이용하며, 멀티 뱅크 인터리빙을 이용한 파이프라인 형태로 억세스된다. 이와 같은 메모리 억세스 동작은 도 11a 및 도 11b과 도 12a 및 도 12b에서도 동일하게 적용된다.
8개의 모든 8×8 블럭이 도 10a 및 도 10b와 같이 서로 다른 뱅크에 걸쳐져 있는 경우 휘도성분 및 색도성분의 픽셀을 읽어오는데 다음 표 7에서와 같이 각각 385 사이클과 160 사이클이 소요된다. 따라서, 데이터를 버스에 싣는 지연까지 포함하여 총 547 사이클이 소요된다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~8 |
1 |
2~8 |
소요사이클 |
56 |
47 |
20 |
20 |
합계 |
385 |
160 |
547 |
그리고 실제로 가져오는 데이터량은 표 8에서와 같이 4288 bytes이다.
|
8×8 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
376 |
3008 |
색도 |
160 |
1280 |
총합 |
536 |
4288 |
도 11a 및 도 11b는 도 5에 도시된 메모리(505)가 필드 구조인 경우 프레임 구조인 8×8 블럭에 속한 휘도성분 및 색도성분의 움직임 보성을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다.
8개의 모든 8×8 블럭이 도 11a 및 도 11b와 같이 서로 다른 뱅크에 걸쳐져 있는 경우 휘도성분 및 색도성분의 픽셀을 읽어오는데 다음 표 9에서와 같이 각각 270 사이클과 236 사이클이 소요된다. 따라서, 데이터를 버스에 싣는 지연까지 포함하여 총 508 사이클이 소요된다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~8 |
1 |
2~8 |
소요사이클 |
39 |
33 |
26 |
30 |
합계 |
270 |
236 |
508 |
그리고 실제로 가져오는 데이터량은 표 8에서와 같이 2144 bytes이다.
|
8×8 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
188 |
1504 |
색도 |
80 |
640 |
총합 |
268 |
2144 |
도 12a 및 도 12b는 도 5에 도시된 메모리(505)가 프레임(필드) 구조인 경우 프레임(필드) 구조인 8×8 블럭에 속한 휘도성분 및 색도성분의 움직임 보성을 위하여 억세스되는 픽셀들을 보여주는 것으로서, 억세스되는 휘도성분과 색도성분의 픽셀들이 서로 다른 뱅크에 걸쳐서 존재하는 극단적인 경우를 예로 든 것이다.
8개의 모든 8×8 블럭이 도 12a 및 도 12b와 같이 서로 다른 뱅크에 걸쳐져 있는 경우 휘도성분 및 색도성분의 픽셀을 읽어오는데 다음 표 11에서와 같이 각각 209 사이클과 118 사이클이 소요된다. 따라서, 데이터를 버스에 싣는 지연까지 포함하여 총 329 사이클이 소요된다.
|
휘도성분 |
색도성분 |
총 소요 사이클 |
n번째 블럭 |
1 |
2~8 |
1 |
2~8 |
소요사이클 |
34 |
25 |
13 |
15 |
합계 |
209 |
118 |
329 |
그리고 실제로 가져오는 데이터량은 표 12에서와 같이 2144 bytes이다.
|
8×8 블럭에서 가져오는 데이터 |
매크로블럭에서 가져오는 데이터의 합 |
휘도 |
188 |
1504 |
색도 |
80 |
640 |
총합 |
266 |
2144 |
도 13은 본 발명에 따른 데이터 기록장치의 구성을 나타내는 블럭도로서, 부호화타입 판단부(1301), 재배열부(1303), 메모리 할당부(1305) 및 메모리(1307)를 포함하여 이루어진다. 여기서, 부호화타입 판단부(1301), 재배열부(1303) 및 메모리 할당부(1305)는 도 5의 메모리 제어부(503)에 대응하는 구성요소일 수 있다.
도 13을 참조하면, 부호화타입 판단부(1301)는 처리된 영상데이터에 포함된 각 매크로블럭의 부호화타입이 프레임 단위인지 필드 단위인지 판단한다. 부호화타입은 바람직하게는 각 매크로블럭의 헤더에 포함되어 있다.
재배열부(1303)는 부호화타입 판단부(1301)에서 판단된 부호화타입에 따라서 하나의 매크로블럭에 속하는 휘도성분은 필드 단위로 재배열하고, 색도성분은 프레임 단위로 재배열한다. 이에 따르면, 부호화타입이 프레임 단위인 매크로블럭에 속하는 휘도성분은 필드 단위로 재배열하고, 색도성분은 재배열 과정을 생략한다. 한편, 부호화타입이 필드 단위인 매크로블럭에 속하는 휘도성분은 재배열 과정을 생략하고, 색도성분은 프레임 단위로 재배열한다.
메모리 할당부(1305)는 재배열부(1303)로부터 제공되는 각 매크로블럭에 속하는 휘도성분과 색도성분이 메모리(1307)의 각 뱅크에서 해당하는 영역에 저장될 수 있도록 주소를 할당한다. 메모리 할당부(1305)는 각 매크로블럭에 속하는 휘도성분의 상위필드와 하위필드, 제1 색도성분(Cr) 및 제2 색도성분(Cb)과 각 뱅크와의 대응관계를 나타내는 주소대응테이블을 생성하고 관리한다.
메모리(1307)는 도 6c에서와 같이 각각 독립적으로 억세스할 수 있는 적어도 하나 이상, 예를 들면 4개의 뱅크들을 포함하고, 각 뱅크들은 3개의 영역을 포함며, 휘도성분의 상위필드 영역 및 하위필드 영역과 제1 및 제2 색도성분 영역에 해당하는 데이터를 저장한다.
도 14는 본 발명에 따른 데이터 기록방법의 동작을 설명하는 흐름도이다.
도 14를 참조하면, 1401 단계에서는 처리된 영상데이터를 매크로블럭 단위로 수신한다.
1403 단계에서는 수신된 매크로블럭의 부호화타입이 프레임단위인지 필드단위인지 판단한다.
1405 단계에서는 1403 단계에서의 판단결과, 매크로블럭의 부호화타입이 프레임단위인 경우 입력된 데이터가 휘도성분에 해당하는지 색도성분에 해당하는지 판단한다.
1407 단계에서는 1405 단계에서의 판단결과, 입력된 데이터가 휘도성분에 해당하는 경우 필드단위로 재배열한다.
1409 단계에서는 1407 단계에서의 재배열 결과 상위필드에 해당하는 휘도성분은 각 뱅크(B0, B1, B2, B3; 도 6a의 601,602,603,604)의 상위필드영역(Ytop; 도 6c의 611)에 도 4의 (a)에서와 같이 균등하게 저장한다. 한편, 하위필드에 해당하는 휘도성분은 각 뱅크(B0, B1, B2, B3; 도 6a의 601,602,603,604)의 하위필드영역(Ybot; 도 6c의 613)에 도 4의 (a)에서와 같이 균등하게 저장한다.
1411 단계에서는 1405 단계에서의 판단결과, 입력된 데이터가 색도성분에 해당하는 경우 재배열과정을 생략하고, 제1 색도성분은 뱅크0 및 뱅크1의 색도성분영역(615)에, 제2 색도성분은 뱅크2 및 뱅크3의 색도성분영역(617)에 도 4의 (b)에서와 같이 균등하게 저장한다.
한편, 1413 단계에서는 1403 단계에서의 판단결과, 매크로블럭의 부호화타입이 프레임단위인 경우 입력된 데이터가 휘도성분에 해당하는지 색도성분에 해당하는지 판단한다.
1415 단계에서는 1413 단계에서의 판단결과, 입력된 데이터가 색도성분에 해당하는 경우 프레임단위로 재배열한다.
1417 단계에서는 1415 단계에서의 재배열 결과 제1 색도성분은 뱅크0 및 뱅크1의 색도성분영역(615)에, 제2 색도성분은 뱅크2 및 뱅크3의 색도성분영역(617)에 도 4의 (b)에서와 같이 균등하게 저장한다.
1419 단계에서는 1413 단계에서의 판단결과, 입력된 데이터가 휘도성분에 해당하는 경우 재배열과정을 생략하고, 상위필드에 해당하는 휘도성분은 각 뱅크(B0, B1, B2, B3; 도 6a의 601,602,603,604)의 상위필드영역(Ytop; 도 6c의 611)에 도 4의 (a)에서와 같이 균등하게 저장한다. 한편, 하위필드에 해당하는 휘도성분은 각 뱅크(B0, B1, B2, B3; 도 6a의 601,602,603,604)의 하위필드영역(Ybot; 도 6c의 613)에 도 4의 (a)에서와 같이 균등하게 저장한다.
도 15는 본 발명에 따른 데이터 독출장치의 구성을 나타내는 블럭도로서, 부호화타입 판단부(1501), 메모리 할당부(1503), 주소발생부(1505), 메모리(1507), 및 재배열부(1509)를 포함하여 이루어진다. 여기서, 부호화타입 판단부(1501), 메모리 할당부(1503), 주소발생부(1505), 및 재배열부(1509)는 도 5의 메모리 제어부(503)에 대응하는 구성요소일 수 있다. 한편, 메모리 할당부(1503) 및 메모리(1507)는 도 13에서와 동일한 구성요소이다.
도 15를 참조하면, 부호화타입 판단부(1501)는 예측과정을 수행하고자 입력되는 매크로블럭의 부호화타입을 판단한다.
메모리 할당부(1503)는 처리된 영상데이터의 각 매크로블럭에 속하는 휘도성분과 색도성분이 저장된 주소를 테이블화한 주소대응테이블을 생성하여 관리한다.
주소발생부(1505)는 메모리 할당부(1503)에 저장된 주소대응테이블을 참조하여, 메모리(1507)로부터 억세스할 휘도성분 및 색도성분이 저장된 주소를 발생시킨다.
메모리(1507)는 휘도성분의 경우 필드구조로 매핑하여 저장하고, 색도성분의 경우 프레임구조로 매핑하여 저장하고 있으며, 주소발생부(1505)로부터 발생되는 주소에 대응하는 휘도성분 및 색도성분을 독출하여 재배열부(1509)로 제공한다.
재배열부(1509)는 부호화타입 판단부(1501)에서 판단된 부호화타입에 따라서 휘도성분 혹은 색도성분을 재배열하여 디코더 코어(도 5의 501)로 제공한다. 즉, 부호화타입이 프레임 단위인 매크로블럭인 경우 메모리(1507)로부터 독출되는 휘도성분은 프레임 단위로 재배열하고, 색도성분은 재배열 과정을 생략한다. 한편, 부호화타입이 필드 단위인 매크로블럭인 경우 메모리(1507)로부터 독출되는 휘도성분은 재배열 과정을 생략하고, 색도성분은 필드 단위로 재배열한다.
도 16은 본 발명에 따른 데이터 독출방법의 동작을 설명하는 흐름도이다.
도 16을 참조하면, 1601 단계에서는 예측과정을 수행하기 위하여 영상데이터를 매크로블럭 단위로 수신한다.
1603 단계에서는 수신된 매크로블럭의 부호화타입이 프레임단위인지 필드단위인지 판단한다.
1605 단계에서는 1603 단계에서의 판단결과, 매크로블럭의 부호화타입이 프레임단위인 경우 입력된 데이터가 휘도성분에 해당하는지 색도성분에 해당하는지 판단한다.
1607 단계에서는 1605 단계에서의 판단결과, 입력된 데이터가 휘도성분에 해당하는 경우 예측과정을 위하여 필요로 하는 휘도성분 데이터를 주소대응테이블을 참조하여 메모리(1507)로부터 억세스한다.
1609 단계에서는 1607 단계에서 억세스된 휘도성분 데이터를 프레임 단위로 재배열한 다음, 예측모듈(도 1의 115)로 제공한다(1621 단계).
1611 단계에서는 1605 단계에서의 판단결과, 입력된 데이터가 색도성분에 해당하는 경우 예측과정을 위하여 필요로 하는 색도성분 데이터를 주소대응테이블을 참조하여 메모리(1507)로부터 억세스하고, 재배열과정없이 예측모듈(도 1의 115)로 제공한다(1621 단계).
한편, 1613 단계에서는 1603 단계에서의 판단결과, 매크로블럭의 부호화타입이 필드단위인 경우 입력된 데이터가 휘도성분에 해당하는지 색도성분에 해당하는지 판단한다.
1615 단계에서는 1613 단계에서의 판단결과, 입력된 데이터가 휘도성분에 해당하는 경우 예측과정을 위하여 필요로 하는 휘도성분 데이터를 주소대응테이블을 참조하여 메모리(1507)로부터 억세스하고, 재배열과정없이 예측모듈(도 1의 115)로 제공한다(1621 단계).
1617 단계에서는 1613 단계에서의 판단결과, 입력된 데이터가 색도성분에 해당하는 경우 예측과정을 위하여 필요로 하는 색도성분 데이터를 주소대응테이블을 참조하여 메모리(1507)로부터 억세스한다.
1619 단계에서는 1617 단계에서 억세스된 색도성분 데이터를 필드 단위로 재배열한 다음, 예측모듈(도 1의 115)로 제공한다(1621 단계).
한편, 버스 대역폭이 64 비트로 동일한 경우, 본 발명에 따라서 휘도성분인 경우 필드구조, 색도성분인 경우 프레임구조로 메모리를 맵핑한 경우를 휘도성분과 색도성분에 대하여 모두 프레임 구조로 맵핑한 경우와 비교하여 소요 사이클, 메모리 억세스량 및 필요로 하는 동작주파수를 비교하면 다음 표 13과 같이 나타낼 수 있다.
메모리구조 휘도/색도 |
프레임/프레임 |
필드/프레임 |
인터 예측 소요 사이클 |
277 |
227 |
인터 예측 메모리 억세스량 |
2463 |
1604 |
동작주파수 |
133 MHz |
120 MHz |
버스대역폭 |
64 비트 |
64 비트 |
표 13을 살펴보면, 인터 예측시 소요 사이클은 대략 18%, 메모리 억세스량은 대략 35%, 동작주파수는 10% 정도 개선됨을 알 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플라피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.