KR100891116B1 - Apparatus and method for bandwidth aware motion compensation - Google Patents

Apparatus and method for bandwidth aware motion compensation Download PDF

Info

Publication number
KR100891116B1
KR100891116B1 KR1020070052222A KR20070052222A KR100891116B1 KR 100891116 B1 KR100891116 B1 KR 100891116B1 KR 1020070052222 A KR1020070052222 A KR 1020070052222A KR 20070052222 A KR20070052222 A KR 20070052222A KR 100891116 B1 KR100891116 B1 KR 100891116B1
Authority
KR
South Korea
Prior art keywords
bandwidth
data
cache buffer
motion compensation
variable
Prior art date
Application number
KR1020070052222A
Other languages
Korean (ko)
Other versions
KR20080090238A (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 삼성전자주식회사
Publication of KR20080090238A publication Critical patent/KR20080090238A/en
Application granted granted Critical
Publication of KR100891116B1 publication Critical patent/KR100891116B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/176Methods 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 block, e.g. a macroblock
    • 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
    • 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

Abstract

본 발명은 대역폭 인식 움직임 보상 장치에 관한 것으로써, 움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정하는 대역폭 결정부, 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량과 범위를 결정하고, 레퍼런스 데이터를 특정하여 외부 메모리로부터 가변 캐쉬 버퍼로 레퍼런스 데이터를 전송하여 가변 캐쉬 버퍼를 업데이트하는 캐쉬 제어부, 움직임 보상을 수행할 데이터가 가변 캐쉬 버퍼 또는 외부 메모리 중 적어도 어느 하나에 저장되어 있는지를 확인하는 캐쉬 확인부 및 캐쉬 확인부의 결과에 따라 가변 캐쉬 버퍼 또는 외부 메모리 중 적어도 어느 하나에 억세스하여 움직임 보상을 수행할 데이터를 읽어오는 데이터 판독부를 포함함으로써, 움직임 보상의 판독 사이클과 시스템 대역폭을 절감하여 효율적인 움직임 보상을 가능하게 한다.The present invention relates to a bandwidth-aware motion compensation device, comprising: a bandwidth determination unit for determining a maximum bus bandwidth allowed for motion compensation, and determining the quantity and range of reference data to be stored in the variable cache buffer based on the determined bus bandwidth. Specify the reference data and transfer the reference data from the external memory to the variable cache buffer to update the variable cache buffer, and check whether the data to perform motion compensation is stored in at least one of the variable cache buffer or the external memory. In accordance with the results of the cache checker and the cache checker to include at least one of the variable cache buffer or the external memory to read the data to perform the data to perform the motion compensation, thereby reducing the read cycle of the motion compensation and system bandwidth efficient It allows for motion compensation.

움직임 보상, HD, 메모리 버스 대역폭, 대역폭 인식, 가변 캐쉬 버퍼 Motion Compensation, HD, Memory Bus Bandwidth, Bandwidth Aware, Variable Cache Buffer

Description

대역폭 인식 움직임 보상 장치 및 그 방법{Apparatus and method for bandwidth aware motion compensation}Apparatus and method for bandwidth aware motion compensation

도 1은 HD 급의 1088-60p 환경에서 임계적인 경우의 대역폭 분석을 도시한 도표이다. 1 is a diagram illustrating bandwidth analysis in a critical case in an HD class 1088-60p environment.

도 2는 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 장치의 블록도를 도시한다.2 is a block diagram of a bandwidth-aware motion compensation apparatus according to an embodiment of the present invention.

도 3은 가변 캐쉬 버퍼의 구조를 도시한다.3 illustrates the structure of a variable cache buffer.

도 4는 캐쉬 제어부의 기능을 설명한다. 4 illustrates the function of the cache controller.

도 5는 캐쉬 제어부의 데이터 전송 및 업데이트 방법을 도시한다.5 illustrates a data transmission and update method of the cache controller.

도 6은 가변 캐쉬 버퍼에서의 데이터 업데이트 방법을 도시한다.6 illustrates a data update method in a variable cache buffer.

도 7은 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 장치의 방법의 흐름도를 도시한다.7 is a flowchart of a method of a bandwidth aware motion compensation apparatus according to an embodiment of the present invention.

본 발명은 대역폭 인식 움직임 보상 장치 및 방법에 관한 것으로, 더 상세하게는 비디오 코덱 장치에서 움직임 보상 모듈에게 허용되는 대역폭을 고려하여 매크로 블록의 움직임을 보상하는 움직임 보상 장치 및 방법에 관한 것이다.The present invention relates to a bandwidth-aware motion compensation device and method, and more particularly, to a motion compensation device and method for compensating for motion of a macro block in consideration of a bandwidth allowed to a motion compensation module in a video codec device.

H.264/AVC 비디오 코딩은 2001년 ITU-T VCEG(Video Coding Experts Group) 및 MPEG(Moving Picture Experts Group)을 구성하는 JVC(Joint Video Team)에 의해 개발되었다. H.264/AVC는 MPEG-4, H.263, MPEG-2에 비해 비트율을 39%~64% 가량 절감할 수 있고, 이러한 성능 개선은 주로 쿼터 픽셀을 이용한 움직임 추정, 가변 블록 사이즈(variable block sizes, VBS), 다중 참조 프레임(multiple reference frame, MRF), 디블로킹 필터(de-blocking filter), 정수 변환 및 향상된 엔트로피 코딩 툴(advanced entropy coding tools)을 포함하는 여러 가지 새로운 특징들로부터 비롯된다. H.264 / AVC video coding was developed in 2001 by the JVC (Joint Video Team), which forms the ITU-T Video Coding Experts Group (VCEG) and Moving Picture Experts Group (MPEG). H.264 / AVC can reduce the bit rate by 39% ~ 64% compared to MPEG-4, H.263, and MPEG-2, and these performance improvements are mainly based on motion estimation using quarter pixel and variable block size. It comes from several new features, including sizes (VBS), multiple reference frames (MRF), de-blocking filters, integer transforms, and advanced entropy coding tools.

움직임 보상의 관점에서 볼 때, 가변 블록 사이즈와 다중 참조 프레임은 버스 트래픽과 대역폭을 불충분하게 만드는 주요 요인들이다. 움직임 보상 과정은 임계적인 경우에는 총 데이터 대역폭의 50%를 넘게 사용할 수 있으나, 이는 얼마나 많은 다른 구성요소를 가지는지 여부에 달려 있는 문제이다. H.264/AVC 복호화기 소프트웨어의 작동 시간 분석에 따라, 움직임 보상 과정은 총 복호화 시간의 55%까지 사용하기도 한다.In terms of motion compensation, variable block size and multiple reference frames are the major factors that make bus traffic and bandwidth insufficient. The motion compensation process can use more than 50% of the total data bandwidth in critical cases, but this depends on how many different components it has. According to the operating time analysis of the H.264 / AVC decoder software, the motion compensation process uses up to 55% of the total decoding time.

움직임 보상은 HD(high definition) 시스템의 실시간 처리에 있어서, 특히 영상 시퀀스가 1920*1088 해상도 및 초당 60 프레임의 전송 속도(이하, '1088-60p'라 한다.)로 입력되는 환경에서, 두 가지의 매우 중요한 문제점을 갖는다. 하나는 버스 대역폭 문제이며 다른 하나는 움직임 보상의 처리 사이클 문제이다. 움직임 보상의 처리 사이클 문제는 코어 유틸라이제이션(core utilization), 보간 처리의 병렬화, 최적화된 복호화 플로우(decoding flow), 움직임 보상 데이터 판독기의 계층 분리 등으로 해결될 수 있다. Motion compensation is two methods for real time processing of high definition (HD) systems, especially in an environment in which an image sequence is input at 1920 * 1088 resolution and a transmission rate of 60 frames per second (hereinafter, referred to as '1088-60p'). Has a very important problem. One is the bus bandwidth problem and the other is the processing cycle problem of motion compensation. The processing cycle problem of motion compensation can be solved by core utilization, parallelization of interpolation processing, optimized decoding flow, hierarchical separation of motion compensation data reader, and the like.

HD급 해상도 이상의 영상에 있어서, 버스 대역폭 문제가 더 심각한 문제이다. 게다가, 마스터의 임의의 요청, DRAM 지원 버스트에 의한 짧은 버스트의 효율성 문제, 초기 지연 및 버스 트래픽 등의 문제 때문에, 거의 모든 시스템은 버스의 효율성을 100%로 만들 수는 없다. 버스의 효율성은 버스로부터 데이터 응답이 직접 오는지에 달려있다. 이러한 대역폭 문제를 해결하기 위해 여러 가지 방법들이 개발되어 있지만, 이 방법들은 상이한 대역폭을 가지는 다양한 시스템에 적용될 수 없다. 또한 캐쉬 방법은 가변 블록 사이즈 및 다중 참조 프레임은 물론 HD급의 1088-60p의 환경에는 적절하지 않다. For video over HD resolution, the bus bandwidth problem is more serious. In addition, almost all systems cannot make the bus 100% efficient because of random master requests, short burst efficiency issues due to DRAM-assisted bursts, initial delays and bus traffic. The efficiency of the bus depends on whether the data response comes directly from the bus. Various methods have been developed to solve this bandwidth problem, but these methods cannot be applied to various systems having different bandwidths. In addition, the caching method is not suitable for variable block sizes and multiple reference frames, as well as in the environment of HD-class 1088-60p.

움직임 보상 모듈은 복호화기에서 버스 대역폭을 가장 많이 소비하는 모듈이다. H.264/AVC 시스템에서, 6-탭 필터로 데이터를 보간하므로 5 픽셀이 더 필요하다. 또한, 고화질의 고해상도 이미지를 위한 일부 제약이 있는데, 이는 두 장의 연속된 매크로 블록(MB)당 움직임 벡터의 최대 수량(MaxMVsPer-2Mb)은 16개라는 것이다. 이 때, 움직임 보상의 임계적인 경우는 모든 매크로 블록이 8×8(13×13) 크기 블록의 양방향 예측 또는 4×8(9×13) 크기 블록의 한방향 예측으로 부호화되었음을 의미한다.The motion compensation module is the module that consumes the most bus bandwidth in the decoder. In an H.264 / AVC system, 5 pixels are needed because the data is interpolated with a 6-tap filter. In addition, there are some restrictions for high resolution images of high quality, which means that the maximum number of motion vectors (MaxMVsPer-2Mb) per two consecutive macroblocks (MB) is 16. In this case, the critical case of motion compensation means that all macro blocks are encoded by bidirectional prediction of 8 × 8 (13 × 13) size blocks or unidirectional prediction of 4 × 8 (9 × 13) size blocks.

버스 데이터 비트를 고려하면, 각각 DDR(double date rate)이 이미 고려된 32 또는 64비트 버스 시스템에서 8×8 모드를 위한 버스트의 크기는 4 바이트 또는 3 바이트이며, 4×8 모드를 위한 버스트의 크기는 4 바이트 또는 3 바이트 및 3 바 이트 또는 2 바이트이다. 그러나 DDR1은 오직 2-, 4- 및 8-버스트를 지원하고, DDR2는 4-, 8-버스트를 지원하므로, 실질적으로 양 버스 데이터 비트의 경우 모든 경우를 위해 4-버스트만이 채택된다. 그러므로 최대 데이터 대역폭은 1MB당 576Hz이다.Considering the bus data bits, the burst size for 8x8 mode is 4 bytes or 3 bytes in 32 or 64 bit bus systems where double date rate (DDR) is already taken into account, respectively. The size is 4 bytes or 3 bytes and 3 bytes or 2 bytes. However, DDR1 only supports 2-, 4- and 8-bursts, and DDR2 supports 4-, 8-bursts, so virtually only 4-bursts are adopted for all cases for both bus data bits. Therefore, the maximum data bandwidth is 576 Hz per MB.

도 1은 HD 급의 1088-60p 환경에서 임계적인 경우의 대역폭 분석을 도시한다.Figure 1 shows the bandwidth analysis of the critical case in HD class 1088-60p environment.

YCbCr은 4:2:0이고 단일 버스 시스템을 고려하였다. 고정된 버스트는 DDR1 또는 DDR2에 적용 가능한 버스트로 산출된 실제값을 의미한다.YCbCr is 4: 2: 0 and considered a single bus system. Fixed bursts represent actual values calculated with bursts applicable to DDR1 or DDR2.

도 1에서 보는 것과 같이, 움직임 보상의 임계 대역폭은 1088-60p에서 280MHz를 넘는다. 이 경우 실시간 처리를 위해 시스템 대역폭과 클럭은 400MHz를 넘을 것이다. 이는 일반적인 경우는 아니지만, H.264/AVC 환경에서는 가능한 경우이다. 그리고 만약 모든 시스템이 모든 임의의 경우를 고려한다면, 이러한 임계적 경우에 대한 해결책이 있어야 한다.As shown in FIG. 1, the threshold bandwidth of motion compensation exceeds 280 MHz at 1088-60p. In this case, the system bandwidth and clock will exceed 400 MHz for real-time processing. This is not common, but it is possible in an H.264 / AVC environment. And if every system considers any arbitrary case, there must be a solution to this critical case.

종래 기술에서, 대역폭이 불충분한 문제에 대한 여러 가지 해결책이 있었으나, 움직임 보상 모듈이 사용할 수 있는 최대 대역폭이 얼마인지 고려하지 않았다. 또한 보간 윈도우가 같은 장소에 위치해야 한다는 일부 가정이 필요하므로 가변 블록 사이즈 및 다중 참조 프레임에 적절하지 않으며, 각각의 블록이 다른 움직임 벡터를 가지는 경우까지 다루지 못한다.In the prior art, there have been various solutions to the problem of insufficient bandwidth, but it does not take into account what the maximum bandwidth the motion compensation module can use. In addition, some assumptions that the interpolation window should be located in the same place are necessary, and thus are not appropriate for variable block sizes and multiple reference frames, and cannot be handled until each block has a different motion vector.

따라서 본 발명이 이루고자 하는 기술적 과제는, 압축 영상의 복호화기의 대 역폭을 고려한 움직임 보상 장치 및 방법에 있어서, 움직임 보상을 수행하는데 필요한 대역폭을 고려하여 데이터의 전송 및 저장을 제어하는 움직임 보상 장치 및 방법을 제시하는데 있다. H.264/AVC 복호화기를 위한 대역폭 인식 움직임 보상 구조가 제안된다. 움직임 보상 모듈에서 이용 가능한 최대 대역폭 정보를 파악하여, 가변 캐쉬 버퍼를 이용하여 관리할 데이터의 수량 및 범위를 결정하고, 외부 메모리로부터 가변 캐쉬 버퍼로 전송된 데이터의 저장 및 업데이트를 제어한다.Accordingly, an object of the present invention is to provide a motion compensation apparatus and method considering a bandwidth of a decoder of a compressed image, the motion compensation apparatus controlling transmission and storage of data in consideration of a bandwidth required for performing motion compensation; To present a method. A bandwidth aware motion compensation structure for an H.264 / AVC decoder is proposed. By determining the maximum bandwidth information available in the motion compensation module, the variable cache buffer is used to determine the quantity and range of data to be managed, and to control the storage and update of data transferred from the external memory to the variable cache buffer.

또한 데이터 판독 사이클을 줄이기 위해 가변 캐쉬 버퍼에의 데이터 전송 및 업데이트 과정은 움직임 보상과는 별개로 수행하여, 움직임 보상과 병렬적으로 데이터를 업데이트할 수 있다. 또한 움직임 보상을 위한 데이터는 가변 캐쉬 버퍼 또는 외부 메모리로부터 읽어올 수 있고, 가변 캐쉬 버퍼와 외부 메모리 양 쪽으로부터도 판독이 가능한 방법을 제시한다.In addition, in order to reduce the data read cycle, the data transfer and update process to the variable cache buffer may be performed separately from the motion compensation, thereby updating data in parallel with the motion compensation. In addition, the data for motion compensation can be read from the variable cache buffer or the external memory, and the method can be read from both the variable cache buffer and the external memory.

따라서 상기 기술적 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 장치는 움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정하는 대역폭 결정부, 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량과 범위를 결정하고, 레퍼런스 데이터를 특정하여 외부 메모리로부터 가변 캐쉬 버퍼로 레퍼런스 데이터를 전송하여 가변 캐쉬 버퍼를 업데이트하는 캐쉬 제어부, 현재 블록의 움직임 보상을 위해 필요한 데이터가 가변 캐쉬 버퍼 또는 외부 메모리 중 적어도 어느 하나에 저장되어 있는지를 확인하는 캐쉬 확인부 및 캐쉬 확인부의 결과에 따라 가변 캐쉬 버퍼 또는 외부 메모리 중 적 어도 어느 하나에 억세스하여 움직임 보상을 수행할 데이터를 읽어오는 데이터 판독부를 포함한다.Therefore, in order to achieve the above technical problem, the bandwidth-aware motion compensation apparatus according to an embodiment of the present invention is a bandwidth determination unit for determining the maximum bus bandwidth allowed for motion compensation, and stored in a variable cache buffer based on the determined bus bandwidth A cache controller which determines the quantity and range of reference data to be used, specifies the reference data, and transfers the reference data from the external memory to the variable cache buffer to update the variable cache buffer; Or a cache checker for checking whether the memory is stored in at least one of the external memories, and a data readout for reading data to perform motion compensation by accessing at least one of the variable cache buffer or the external memory according to the result of the cache checker. Include.

본 발명의 일 실시예에서, 대역폭 결정부는, 제 1 대역폭은 복호화기의 총 버스 대역폭이고, 제 2 대역폭은 움직임 보상 장치를 제외한 다른 구성 요소의 수행에 필요한 버스 대역폭이며, 제 3 대역폭은 가변 캐쉬 버퍼에 저장된 데이터가 없을 때 움직임 보상을 위해 필요한 버스 대역폭일 때, 최대 버스 대역폭은 제 1 대역폭에서 제 2 대역폭과 제 3 대역폭의 합을 뺌으로써 결정한다.In one embodiment of the invention, the bandwidth determiner, the first bandwidth is the total bus bandwidth of the decoder, the second bandwidth is the bus bandwidth required for the performance of other components except the motion compensation device, the third bandwidth is a variable cache When the bus bandwidth required for motion compensation when no data is stored in the buffer, the maximum bus bandwidth is determined by subtracting the second bandwidth and the third bandwidth from the first bandwidth.

바람직한 실시예에서, 가변 캐쉬 버퍼는 적어도 하나 이상의 캐쉬 버퍼를 사용하며, 제 1 캐쉬 버퍼는 블록의 한 라인의 바이트 수보다 큰 너비를 가지고, 제 2 캐쉬 버퍼는 블록의 한 라인의 바이트 수보다 작은 너비를 가질 때, 제 1캐쉬 버퍼 및 복수 개의 상기 제 2 캐쉬 버퍼 중 적어도 어느 하나로 구성되어, 가변 캐쉬 버퍼의 한 라인의 총 너비는 블록의 한 라인의 바이트 수보다 크다.In a preferred embodiment, the variable cache buffer uses at least one cache buffer, the first cache buffer having a width greater than the number of bytes in one line of the block, and the second cache buffer less than the number of bytes in one line of the block. When having a width, it is comprised of at least one of a first cache buffer and a plurality of said second cache buffers, such that the total width of one line of the variable cache buffer is greater than the number of bytes in one line of the block.

일 실시예에서, 캐쉬 제어부는 레퍼런스 데이터 중 매스데이터 및 업데이트 데이터를 구분하여 가변 캐쉬 버퍼에 전송하고, 가변 캐쉬 버퍼 상에서 매스데이터를 검색하는 영역을 결정한다.In one embodiment, the cache controller classifies the mass data and the update data among the reference data and transmits them to the variable cache buffer, and determines an area for searching the mass data on the variable cache buffer.

상기 기술적 과제를 달성하기 위해, 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 방법은, 움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정하는 단계, 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량과 범위를 결정하고, 레퍼런스 데이터를 특정하여 외부 메모리로부터 가변 캐쉬 버퍼로 레퍼런스 데이터를 전송하여 가변 캐쉬 버퍼를 업데이트하는 단 계, 움직임 보상을 수행할 데이터가 가변 캐쉬 버퍼 또는 외부 메모리 중 적어도 어느 하나에 저장되어 있는지를 확인하는 단계 및 확인 결과에 따라 가변 캐쉬 버퍼 또는 외부 메모리 중 적어도 어느 하나에 억세스하여 움직임 보상을 수행할 데이터를 읽어오는 단계를 포함한다.In order to achieve the above technical problem, the bandwidth-aware motion compensation method according to an embodiment of the present invention, determining the maximum bus bandwidth allowed for motion compensation, the reference to be stored in the variable cache buffer based on the determined bus bandwidth Determining the quantity and range of data, specifying the reference data and transferring the reference data from the external memory to the variable cache buffer to update the variable cache buffer, and at least one of the variable cache buffer or the external memory to perform motion compensation Determining whether the data is stored in one of the variable cache buffers or the external memory according to the result of the checking, and reading data to perform motion compensation.

이하에서는 도 2 내지 도 7을 참조하여, 본 발명의 일 실시예에 따르는 대역폭 인식 움직임 보상 장치 및 방법을 설명한다.Hereinafter, a bandwidth aware motion compensation apparatus and method according to an embodiment of the present invention will be described with reference to FIGS. 2 to 7.

도 2는 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 장치의 블록도를 도시한다.2 is a block diagram of a bandwidth-aware motion compensation apparatus according to an embodiment of the present invention.

대역폭 인식 움직임 보상 장치(200)는 대역폭 결정부(202), 캐쉬 제어부(204), 가변 캐쉬 버퍼(206), 데이터 버스(208), 외부 메모리(210), 캐쉬 확인부(212) 및 데이터 판독부(214)를 포함한다.The bandwidth aware motion compensation apparatus 200 includes a bandwidth determiner 202, a cache controller 204, a variable cache buffer 206, a data bus 208, an external memory 210, a cache checker 212, and a data readout. Part 214 is included.

대역폭 결정부(202)는 복호화기에서 데이터 버스(210)의 총 대역폭 중 움직임 보상 장치가 사용할 수 있는 대역폭을 산출하여 캐쉬 선택부(204)로 출력한다. The bandwidth determiner 202 calculates a bandwidth that can be used by the motion compensation device among the total bandwidth of the data bus 210 and outputs it to the cache selector 204.

캐쉬 제어부(204)는 대역폭 결정부(202)에서 구한 대역폭을 입력 받아, 대역폭에 기초하여 가변 캐쉬 버퍼(206)에 저장될 레퍼런스 데이터의 수량과 범위를 결정하고, 가변 캐쉬 버퍼(206)에 저장될 레퍼런스 데이터를 특정하여 외부 메모리(210)로부터 가변 캐쉬 버퍼(206)로 특정된 레퍼런스 데이터를 전송 및 업데이트한다. The cache controller 204 receives the bandwidth obtained by the bandwidth determiner 202, determines the quantity and range of reference data to be stored in the variable cache buffer 206 based on the bandwidth, and stores the variable in the variable cache buffer 206. The reference data to be transmitted is specified and the specified reference data is transmitted and updated from the external memory 210 to the variable cache buffer 206.

가변 캐쉬 버퍼(206)는 캐쉬 제어부(204)가 지시하는 대로 데이터 버 스(208)를 통해 외부 메모리(210)로부터 레퍼런스 데이터를 전송받아 저장하고 업데이트되어, 데이터 판독부(214)에 데이터를 출력한다.The variable cache buffer 206 receives and stores the reference data from the external memory 210 through the data bus 208 and is updated as indicated by the cache controller 204, and outputs the data to the data reading unit 214. do.

데이터 버스(208)는 외부 메모리(210)와 대역폭 인식 움직임 보상 장치(200)의 데이터 전송 통로이다.The data bus 208 is a data transmission path of the external memory 210 and the bandwidth aware motion compensation device 200.

외부 메모리(210)는 대역폭 인식 움직임 보상 장치(200)에서 사용될 데이터가 저장되어 있으며, 캐쉬 제어부(204) 혹은 캐쉬 확인부(212)의 지시에 따라, 데이터를 움직임 보상 처리 모듈에 출력하기 위해 데이터 버스(208)에 데이터를 출력한다.The external memory 210 stores data to be used in the bandwidth-aware motion compensation device 200, and outputs the data to the motion compensation processing module according to an instruction of the cache controller 204 or the cache checker 212. Data is output to the bus 208.

캐쉬 확인부(212)는 데이터 판독부(214)에서 필요한 데이터가 가변 캐쉬 버퍼(206)과 외부 메모리(210) 중 적어도 어느 하나에 저장되어 있는지를 확인하고, 그 결과를 데이터 판독부(214)에 출력한다.The cache checking unit 212 checks whether the data required by the data reading unit 214 is stored in at least one of the variable cache buffer 206 and the external memory 210, and the result of the data reading unit 214. Output to

데이터 판독부(214)는 캐쉬 확인부(212)의 결과를 기초로 가변 캐쉬 버퍼(206), 외부 메모리(210), 혹은 양 쪽 모두에서 데이터를 읽어와, 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상을 수행하게 된다.The data reading unit 214 reads data from the variable cache buffer 206, the external memory 210, or both based on the result of the cache checking unit 212, and thus the bandwidth according to the embodiment of the present invention. Recognition motion compensation is performed.

이하, 대역폭 인식 움직임 보상 장치(200)의 각 구성요소에 대해 상세히 설명한다.Hereinafter, each component of the bandwidth aware motion compensation device 200 will be described in detail.

모든 시스템은 복수 개의 구성요소와 데이터 버스를 가질 수 있다. 영상의 크기와 프레임율이 상승함에 따라, 각 구성요소의 대역폭 사용은 제한된다. 이는 시스템이 얼마나 많은 다른 구성요소를 사용하는지에 의해 결정된다.Every system can have multiple components and data buses. As the image size and frame rate increase, the bandwidth usage of each component is limited. This is determined by how many different components the system uses.

대역폭 결정부(202)에서는 복호화기가 사용할 수 있는 총 대역폭에서 움직 임 보상 장치를 제외한 다른 구성 요소의 수행에 필요한 버스 대역폭과, 가변 캐쉬 버퍼에 저장된 데이터가 없을 때 움직임 보상을 위해 필요한 버스 대역폭을 고려하여, 대역폭 움직임 보상 장치(200)이 사용할 수 있는 대역폭을 산출한다.The bandwidth determiner 202 considers the bus bandwidth required to perform other components except the motion compensation device in the total bandwidth available to the decoder and the bus bandwidth necessary for motion compensation when there is no data stored in the variable cache buffer. The bandwidth that the bandwidth motion compensation device 200 can use is calculated.

BWBW =   = TotalBWTotalBW -  - OtherBWOtherBW -  - nohitBWnohitBW

BW는 대역폭 인식 움직임 보상 장치(200)가 사용할 수 있는 버스 대역폭을 나타내며, TotalBW는 복호화 시스템이 사용할 수 있는 총 버스 대역폭, OtherBW는 움직임 보상 장치를 제외한 모든 다른 구성 요소 및 병렬 장치가 사용하는 버스 대역폭을 나타낸다. BW denotes a bus bandwidth to a bandwidth recognized motion compensator 200 is available, TotalBW is the total bus bandwidth, which is decoding system can be used, OtherBW bus bandwidth used by all other components and parallel devices other than the motion compensator Indicates.

nohitBW는 가변 캐쉬 버퍼에 저장된 데이터가 없을 때 움직임 보상 장치가 사용하는 버스 대역폭을 나타낸다. nohitBW는 가변 캐쉬 버퍼에 데이터를 저장하지 않고 외부 메모리에서만 데이터를 전송받아야 하는 임계적인 경우를 위한 것이다. 본 발명의 일 실시예에서는 nohitBW를 한 매크로블록 당 50 클럭이라고 가정한다. nohitBW represents the bus bandwidth used by the motion compensation device when there is no data stored in the variable cache buffer. nohitBW is for critical cases where data should only be sent from external memory without storing it in the variable cache buffer. In an embodiment of the present invention, it is assumed that nohitBW is 50 clocks per macroblock.

따라서 대역폭 인식 움직임 보상 장치에서 고려될 버스 대역폭은 총 버스의 대역폭 TotalBW에서 다른 구성 요소의 대역폭 OtherBW와 가변 캐쉬 버퍼에 데이터가 없을 경우의 대역폭 nohitBW의 합을 뺀 값이 된다.Thus bandwidth recognition bus bandwidth to be considered in the motion compensation unit is the value obtained by subtracting the sum of the bandwidth nohitBW of the absence of data on a variable bandwidth OtherBW cache buffers of the other components in the bandwidth of the total TotalBW bus.

가변 캐쉬 버퍼(206)는 움직임 보상이 수행되는 한 매크로블록의 한 라인을 한 클럭에 억세스할 수 있을 만큼의 충분한 크기를 가져야 한다. 가변 캐쉬 버퍼(206)은 매크로블록의 너비보다 큰 너비를 가지는 캐쉬 버퍼를 사용할 수 있다. 작은 너비의 캐쉬 버퍼를 사용하는 경우에는, 한 클럭에 매크로블록의 한 라인을 억세스할 수 있도록 작은 너비를 가지는 캐쉬 버퍼를 복수 개를 병렬로 한 것이 사용된다. The variable cache buffer 206 should be large enough to access one line of a macroblock in one clock as long as motion compensation is performed. The variable cache buffer 206 may use a cache buffer having a width larger than that of the macroblock. When a small width cache buffer is used, a plurality of parallel cache buffers having a small width are used so that one line of a macroblock can be accessed at one clock.

도 3는 도 2의 가변 캐쉬 버퍼(206)의 구조를 도시한다. 3 illustrates the structure of the variable cache buffer 206 of FIG. 2.

일 실시예에 따라 가변 캐쉬 버퍼(206)는 6TSRAM 또는 1TSRAM을 사용한다. 움직임 보상에서 사용되는 매크로블록의 최대 너비는 16×16 모드에서 6-탭 필터를 고려하여 21바이트이므로 가변 캐쉬 버퍼의 너비는 21바이트를 포함할 수 있을 정도로 충분히 커야 한다. 따라서, 21바이트 이상의 너비를 가지는 캐쉬 버퍼가 사용되는 방법도 있으나, 21바이트보다 작은 너비의 캐쉬 버퍼의 경우 복수 개의 캐퍼 버퍼를 병렬로 연결하여 이용될 수 있다. According to one embodiment, the variable cache buffer 206 uses 6TSRAM or 1TSRAM. Since the maximum width of the macroblock used in the motion compensation is 21 bytes in consideration of the 6-tap filter in 16 × 16 mode, the width of the variable cache buffer must be large enough to include 21 bytes. Therefore, although a cache buffer having a width of 21 bytes or more may be used, a cache buffer having a width smaller than 21 bytes may be used by connecting a plurality of capper buffers in parallel.

즉, 도 3과 같이 16바이트 너비의 캐쉬 버퍼가 가변 캐쉬 버퍼(206)로써 사용될 때의 임계적인 경우를 상정하자. 21바이트의 데이터 308을 포함하기 위해서, 캐쉬 버퍼 302에는 한 바이트, 캐쉬 버퍼 304에는 16바이트, 캐쉬 버퍼 306에는 4바이트가 호출되는 경우가 있을 수 있다. 따라서, 본 발명의 일 실시예에 따른 가변 캐쉬 버퍼(206)를 구성하기 위해 16 바이트의 캐쉬 버퍼가 사용되는 경우에는 적어도 3개의 16 바이트 너비의 캐쉬 버퍼가 필요하다. That is, assume a critical case when a 16-byte wide cache buffer is used as the variable cache buffer 206 as shown in FIG. 3. In order to include 21 bytes of data 308, one byte may be called in the cache buffer 302, 16 bytes in the cache buffer 304, and 4 bytes in the cache buffer 306. Therefore, when a 16-byte cache buffer is used to form the variable cache buffer 206 according to an embodiment of the present invention, at least three 16-byte wide cache buffers are required.

마찬가지로 8바이트 너비의 캐쉬 버퍼가 사용되는 경우에는 4개의 캐쉬 버퍼에 각각 1, 8, 8 및 4 바이트가 포함되는 임계적인 경우까지 허용되어야 하므로, 본 발명의 일 실시예에 따른 가변 캐쉬 버퍼(206)을 구성하기 위해서는 8 바이트 캐쉬 버퍼를 사용하는 경우에는, 적어도 4개의 8바이트 캐쉬 버퍼가 필요하다. Similarly, when an 8 byte wide cache buffer is used, the four cache buffers must be allowed until a critical case including 1, 8, 8, and 4 bytes, respectively, and thus the variable cache buffer 206 according to an embodiment of the present invention. At least four 8-byte cache buffers are required when using an 8-byte cache buffer.

도 4은 캐쉬 제어부(204)의 기능을 설명한다.4 illustrates the function of the cache control unit 204.

단계 402에서는, 대역폭 결정부(202)에서 생성된 대역폭을 이용하여 가변 캐쉬 버퍼(206)에 저장할 레퍼런스 데이터의 수량과 범위가 결정된다. In operation 402, the quantity and range of reference data to be stored in the variable cache buffer 206 are determined using the bandwidth generated by the bandwidth determiner 202.

단계 404에서는, 단계 402에서 결정된 레퍼런스 데이터의 수량 및 범위에 기초하여, 캐쉬 선택 알고리즘에 의해 가변 캐쉬 버퍼(206)에 저장할 레퍼런스 데이터가 특정된다. 본 발명의 일 실시예의 캐쉬 선택 알고리즘은 가장 가까운 POC(picture order count)를 사용하고, 필드의 경우 동일한 패러티(parity) 가중치를 덧붙이는 방법이다.In step 404, reference data to be stored in the variable cache buffer 206 is specified by the cache selection algorithm based on the quantity and range of the reference data determined in step 402. The cache selection algorithm according to an embodiment of the present invention uses a closest picture order count (POC) and adds the same parity weight to the field.

단계 406에서는 단계 404에서 특정된 레퍼런스 데이터를 외부 메모리(210)로부터 가변 캐쉬 버퍼(206)로 전송하여, 매스데이터(massdata)와 업데이트 데이터를 저장한다.In step 406, the reference data specified in step 404 is transferred from the external memory 210 to the variable cache buffer 206 to store massdata and update data.

캐쉬 제어부(204)의 데이터 전송이 움직임 보상 처리 모듈의 작업과는 별개의 단계에서 수행되므로, 움직임 보상 과정과 병렬적으로 데이터의 전송 및 저장이 가능하다.Since the data transmission of the cache controller 204 is performed in a separate step from the operation of the motion compensation processing module, data can be transmitted and stored in parallel with the motion compensation process.

도 5는 캐쉬 제어부(204)의 데이터 전송 및 업데이트 방법을 도시한다. 수직 검색 영역 502는 레퍼런스 데이터 중 매스데이터의 검색 영역이고, 수직 검색 영역 502 다음의 수직 검색 영역 504는 업데이트 데이터의 검색 영역이다.5 illustrates a data transmission and update method of the cache controller 204. The vertical search area 502 is a search area for mass data among reference data, and the vertical search area 504 after the vertical search area 502 is a search area for update data.

캐쉬 제어부(204)는 슬라이스(slice)의 시작점에서, 가변 캐쉬 버퍼(206)에 저장되기로 선택된 레퍼런스 데이터로부터 매스데이터를 얻어 가변 캐쉬 버퍼(206)에 저장하고, 이때 매스데이터의 수직 검색 영역 502도 역시 캐쉬 제어부(204)에서 결정된다. 또한, 각각의 매크로블록의 시작점에서 2- 또는 4-버스트 ×

Figure 112007039419276-pat00001
씩은 가변 캐쉬 버퍼의 수직 범위 504에 업데이트된다.
Figure 112007039419276-pat00002
는 캐쉬 버퍼에서의 수직 검색 영역이다. The cache controller 204 obtains mass data from the reference data selected to be stored in the variable cache buffer 206 at the start of the slice, and stores the mass data in the variable cache buffer 206, where the vertical search area 502 of the mass data is obtained. Also determined by the cache control unit 204. Also, 2- or 4-burst × at the beginning of each macroblock
Figure 112007039419276-pat00001
Each update to the vertical range 504 of the variable cache buffer.
Figure 112007039419276-pat00002
Is the vertical search area in the cache buffer.

매크로블록의 데이터의 어드레스가 바뀌는 경우 데이터의 억세스 타임이 길어지므로, 데이터의 더욱 효율적인 호출을 위해 버스트 단위로 가변 캐쉬 버퍼의 수직 검색 영역 504에 업데이트 데이터를 미리 저장한다.When the address of the data of the macroblock is changed, the access time of the data becomes long, so that update data is stored in advance in the vertical search area 504 of the variable cache buffer in burst units for more efficient call of the data.

도 6은 가변 캐쉬 버퍼(206)에서의 데이터 업데이트 방법을 도시한다.6 illustrates a data update method in the variable cache buffer 206.

예를 들면, 본 발명의 일 실시예에서 16바이트 × 3 크기의 캐쉬 버퍼를 복수 개로 사용한다면, 1번, 2번, 3번 매크로블록을 위한 캐쉬 버퍼의 수직 검색 영역

Figure 112007039419276-pat00003
의 값은 각각 5, 5, 6 일 수 있다. 이는 대역폭 트래픽과, DRAM의 프로그램할 수 있는 버스트 길이로부터 야기되는 비효율성, 즉 1-, 2-, 3-버스트와 같이 작은 버스트로부터 오는 비효율성 문제를 감소시키기 위함이다.For example, in one embodiment of the present invention, if multiple cache buffers of size 16 bytes × 3 are used, the vertical search area of the cache buffers for macroblocks 1, 2, and 3
Figure 112007039419276-pat00003
The values of may be 5, 5, and 6, respectively. This is to reduce the bandwidth traffic and the inefficiency resulting from the programmable burst length of the DRAM, i.e. the inefficiency problems resulting from small bursts such as 1-, 2- and 3-bursts.

본 발명의 일 실시예에 따라 가변 캐쉬 버퍼(206)에 저장될 레퍼런스 데이터의 수량은 움직임 보상 장치(200)의 최대 대역폭를 이용하여 캐쉬 제어부(204)로부터 알아낸다. 또 다른 실시예서는, 움직임 보상 장치(200)의 저전력 설계를 위해 가변 캐쉬 버퍼(206)에 저장될 레퍼런스 데이터의 수량이 사용자에 의해 직접 제한될 수도 있다.According to an embodiment of the present invention, the quantity of reference data to be stored in the variable cache buffer 206 is found from the cache controller 204 using the maximum bandwidth of the motion compensation apparatus 200. In another embodiment, the amount of reference data to be stored in the variable cache buffer 206 may be directly limited by the user for the low power design of the motion compensation device 200.

캐쉬 제어부(204)의 작업이 완료되면, 움직임 보상 장치(200)는 이미 어느 레퍼런스 데이터와 어떤 범위의 데이터가 가변 캐쉬 버퍼(206)에 저장될지 파악한다. 버스 데이터(208)는 캐쉬 제어부(204)의 작업이 완료된 후에야 응답을 보일 수 있으므로, 가변 캐쉬 버퍼(206) 없이 움직임 보상 및 보간 처리를 하기는 어렵다. 더욱이 가중치가 있는 예측 또는 양방향 예측에서는 더 많은 처리 사이클이 소요된다. When the operation of the cache controller 204 is completed, the motion compensation apparatus 200 determines which reference data and which range of data are already stored in the variable cache buffer 206. Since the bus data 208 may respond only after the operation of the cache controller 204 is completed, it is difficult to perform motion compensation and interpolation without the variable cache buffer 206. Moreover, weighted prediction or bidirectional prediction requires more processing cycles.

본 발명의 바람직한 실시예는 캐쉬 확인부(212) 및 캐쉬 판독부(214)를 움직임 보상 처리 모듈과 분리한다. 그럼으로 인해, 움직임 보상 처리 모듈은 움직임 보상 장치(200)의 가변 캐쉬 버퍼(206)를 처음부터 끝까지 사용하여 움직임 보상 작업을 처리할 수 있으며 딜레이가 없다. The preferred embodiment of the present invention separates the cache checker 212 and the cache reader 214 from the motion compensation processing module. As such, the motion compensation processing module can process the motion compensation task using the variable cache buffer 206 of the motion compensation device 200 from beginning to end, and there is no delay.

캐쉬 확인부(212)는 현재 블록의 움직임 보상을 위해 필요한 레퍼런스 데이터가 가변 캐쉬 버퍼(206) 또는 외부 메모리(210) 중 저장되어있는지 확인하고, 그 결과를 데이터 판독부(214)에 출력한다. 필요한 레퍼런스 데이터는 가변 캐쉬 버퍼(206), 외부 메모리(210) 중 어느 하나에 저장되어 있거나, 양 쪽 모두에 저장되어 있을 수도 있다. 캐쉬 확인부(212)는 필요한 레퍼런스 데이터의 위치를 파악하면서 모드, 움직임 벡터, 레퍼런스 데이터의 인덱스를 함께 확인한다.The cache checking unit 212 checks whether reference data necessary for motion compensation of the current block is stored in the variable cache buffer 206 or the external memory 210, and outputs the result to the data reading unit 214. The necessary reference data may be stored in either the variable cache buffer 206 or the external memory 210, or both. The cache checking unit 212 checks the position of the necessary reference data while checking the index of the mode, the motion vector, and the reference data.

데이터 판독부(214)는 캐쉬 확인부(212)의 지시에 따라, 버스(208)를 통해 외부 메모리(210)에 억세스하거나, 가변 캐쉬 버퍼(206)에 억세스하거나, 외부 메모리(210)와 가변 캐쉬 버퍼(206) 모두에 억세스하여 데이트를 읽어올 수 있다. 움직임 보상 처리 모듈은 데이터 판독부가 읽어오는 데이터를 이용하여 움직임 보상 작업을 처리하게 된다.The data reading unit 214 accesses the external memory 210 through the bus 208, accesses the variable cache buffer 206, or is variable with the external memory 210 according to the instruction of the cache checking unit 212. Both cache buffers 206 can be accessed to read data. The motion compensation processing module processes the motion compensation task using the data read by the data reader.

도 7은 본 발명의 일 실시예에 따른 대역폭 인식 움직임 보상 장치(200)의 방법의 흐름도를 도시한다.7 shows a flowchart of a method of the bandwidth aware motion compensation apparatus 200 according to an embodiment of the present invention.

단계 702에서는, 움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정한다.In step 702, determine the maximum bus bandwidth allowed for motion compensation.

단계 704에서는, 단계 702에서 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량 및 범위를 결정한다.In step 704, the quantity and range of reference data to be stored in the variable cache buffer is determined based on the bus bandwidth determined in step 702.

단계 706에서는, 단계 704에서 결정된 정보에 따라 레퍼런스 데이터를 특정하고, 외부 메모리로부터 가변 캐쉬 버퍼로 레퍼런스 데이터를 전송하여 가변 캐쉬 버퍼에 저장하고 업데이트한다.In step 706, the reference data is specified according to the information determined in step 704, the reference data is transferred from the external memory to the variable cache buffer, stored in the variable cache buffer, and updated.

단계 708에서는, 현재 블록의 움직임 보상을 위해 필요한 데이터가 가변 캐쉬 버퍼 또는 외부 메모리 중 어디에 위치하는 파악한다.In step 708, it is determined whether the data required for motion compensation of the current block is located in the variable cache buffer or the external memory.

단계 710에서는, 단계 708에서 파악된 대로 가변 캐쉬 버퍼 또는 외부 메모리 또는 양 쪽 모두에 억세스하여 움직임 보상을 수행할 데이터를 읽어온다.In step 710, as determined in step 708, the variable cache buffer or external memory or both are accessed to read data to perform motion compensation.

본 발명의 일 실시예는 H.264/AVC 레퍼런스 소프트웨어 JM10.2 코덱 및 움직임 보상 하드웨어 모듈이 사용된다. 매 30번째 프레임을 인트라 피리어드(period)로 사용하고, 4개의 레퍼런스 프레임과 3개의 B 프레임을 사용한다. DDR을 고려한 32비트 버스 및 64비트 버스 시스템 모두를 이용한다.One embodiment of the present invention uses the H.264 / AVC reference software JM10.2 codec and motion compensation hardware module. Every 30th frame is used as an intra period, and 4 reference frames and 3 B frames are used. Both 32-bit and 64-bit bus systems are considered for DDR.

1088-60p 환경 하의 움직임 보상의 판독 사이클의 60~80% 가량을 절감할 수 있다. DDR1-32비트 및 DDR2-64비트 시스템의 사용된 데이터 대역폭의 경우, I 및 P만을 가진 시퀀스에서 30~50%가 절감되고, I, P, B를 가진 시퀀스에서 50~80%가 각각 절감된다. 각 버스 데이터 비트 및 구조에서 프레임의 80% 이상은 가변 캐쉬 버퍼에 데이터가 저장되고, 캐쉬 제어부를 위해 더 많은 대역폭을 허용된다면 가변 캐쉬 버퍼에 데이터가 저장되는 확률을 더 높일 수 있다.It can save about 60 to 80% of the readout cycle of motion compensation under 1088-60p environment. The used data bandwidth of DDR1-32-bit and DDR2-64-bit systems saves 30-50% in sequences with I and P only and 50-80% in sequences with I, P, and B, respectively. . More than 80% of the frames in each bus data bit and structure are stored in the variable cache buffer, and if more bandwidth is allowed for the cache control, the probability of storing the data in the variable cache buffer can be increased.

본 발명의 바람직한 실시예는 MC 판독 사이클의 60~80%, 총 데이터 대역폭의 50~85%를 절감할 수 있다. 또한 상이한 최대 데이터 대역폭을 가진 다양한 시스템에서 적용될 수 있다. 가변 캐쉬 버퍼의 데이터 업데이트 과정이 일정한 패턴을 가지므로 버스의 호출 형태가 거의 정규화되어 있으므로, 종래 기법보다 가변 캐쉬 버퍼에 억세스하는 것이 훨씬 편하고, 데이터 버스 스케쥴링에 유용하다. Preferred embodiments of the present invention can save 60-80% of MC read cycles and 50-85% of total data bandwidth. It can also be applied in various systems with different maximum data bandwidths. Since the data update process of the variable cache buffer has a certain pattern, the calling form of the bus is almost normalized. Therefore, it is much more convenient to access the variable cache buffer than the conventional technique, and it is useful for data bus scheduling.

한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.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 be a magnetic storage medium (for example, a ROM, a floppy disk, a hard disk, etc.), an optical reading medium (for example, a CD-ROM, a DVD, etc.) and a carrier wave (for example, 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.

본 발명은, 압축 영상의 복호화기의 대역폭을 고려한 움직임 보상 장치 및 방법에 있어서, 움직임 보상을 수행하는데 필요한 대역폭을 고려하여 데이터의 이동 및 저장을 제어하는 움직임 보상 장치 및 방법을 제시한다. 특히 1920×1088 해상도의 초당 60 프레임의 전송 속도 이상의 HD급 환경의 복호화기를 지원하는 H.264/AVC를 위한 대역폭 인식 움직임 보상 장치 및 방법을 제시한다.The present invention provides a motion compensation apparatus and method for controlling a movement and storage of data in consideration of a bandwidth required for performing motion compensation in a motion compensation apparatus and method considering a bandwidth of a decoder of a compressed image. In particular, the present invention proposes a bandwidth-aware motion compensation apparatus and method for H.264 / AVC that supports a decoder in a HD class environment with a transmission speed of 60 frames per second at 1920 × 1088 resolution.

이 하드웨어 모듈은 DDR1-32bits 및 DDR2-64bits 시스템 모두에서 움직임 보상의 데이터 판독 사이클의 60~80%를 절감할 수 있다. 그리고, 또한 'IBBBP' 구조의 시퀀스에서 데이터 대역폭의 50~85%를, 'IPPPP' 시퀀스에서 30~50%를 절감하는 효과를 가진다. 이러한 차이는 'IPPPP' 시퀀스가 'IBBBP' 시퀀스의 경우에 비해 상대적으로 더 적게 버스를 억세스하기 때문에 발생한다.This hardware module can save 60-80% of the data read cycle of motion compensation in both DDR1-32bits and DDR2-64bits systems. In addition, it has the effect of reducing 50 to 85% of the data bandwidth in the sequence of the 'IBBBP' structure, and 30 to 50% in the 'IPPPP' sequence. This difference occurs because the 'IPPPP' sequence has relatively fewer buses to access than the 'IBBBP' sequence.

움직임 보상 모듈이 이용할 수 있는 최대 버스 대역폭을 파악함으로써 가변 캐쉬 버퍼의 수량과 범위를 제어할 수 있으므로, 본 발명의 실시예는 다양한 시스템에 적용될 수 있다. 1088-60p 환경 하의 266MHz의 데이터 대역폭 이하로 작동하는 시스템을 만들 수도 있다. 대역폭 인식 움직임 보상 장치는 버스 대역폭과 판독 사이클 모두를 절감하고 HD급 1088-60p 이상의 환경에서도 실시간으로 수행하는 효과가 있다.Since the number and range of the variable cache buffers can be controlled by identifying the maximum bus bandwidth that the motion compensation module can use, embodiments of the present invention can be applied to various systems. It is also possible to build a system that operates under 266MHz data bandwidth in a 1088-60p environment. Bandwidth-aware motion compensation can reduce both bus bandwidth and read cycles and perform in real time even in HD-grade 1088-60p and higher environments.

Claims (5)

움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정하는 대역폭 결정부;A bandwidth determining unit determining a maximum bus bandwidth allowed for motion compensation; 상기 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량과 검색 범위를 결정하고, 상기 레퍼런스 데이터를 특정하여 외부 메모리로부터 상기 가변 캐쉬 버퍼로 상기 레퍼런스 데이터를 전송하여 상기 가변 캐쉬 버퍼를 업데이트하는 캐쉬 제어부;The quantity and search range of the reference data to be stored in the variable cache buffer are determined based on the determined bus bandwidth, and the reference data is specified to transfer the reference data from an external memory to the variable cache buffer to update the variable cache buffer. A cache control unit; 현재 블록의 움직임 보상을 위해 필요한 데이터가 상기 가변 캐쉬 버퍼 또는 상기 외부 메모리 중 적어도 어느 하나에 저장되어 있는지를 확인하는 캐쉬 확인부;A cache checking unit for checking whether data necessary for motion compensation of a current block is stored in at least one of the variable cache buffer and the external memory; 상기 캐쉬 확인부의 결과에 따라 상기 가변 캐쉬 버퍼 또는 상기 외부 메모리 중 적어도 어느 하나에 억세스하여 움직임 보상을 수행할 데이터를 읽어오는 데이터 판독부를 포함하는 것을 특징으로 하는 대역폭 인식 움직임 보상 장치.And a data reading unit reading data to perform motion compensation by accessing at least one of the variable cache buffer and the external memory according to a result of the cache checking unit. 제 1항에 있어서, The method of claim 1, 상기 대역폭 결정부는, 제 1 대역폭 중 제 2 대역폭 및 제 3 대역폭을 제외한 나머지 대역폭을 상기 최대 버스 대역폭을 결정하고,The bandwidth determining unit may determine the maximum bus bandwidth of remaining bandwidths excluding the second bandwidth and the third bandwidth of the first bandwidth, 상기 제 1 대역폭은 복호화기 및 상기 외부 메모리 간의 데이터 교환이 이루어지는 버스의 총 대역폭이고,The first bandwidth is a total bandwidth of a bus through which data is exchanged between a decoder and the external memory, 상기 제 2 대역폭은 상기 복호화기의 구성 요소 중 상기 움직임 보상 장치를 제외한 다른 구성 요소 및 상기 외부 메모리 간에 상기 버스를 통한 데이터 교환을 위해 필요한 대역폭이고,The second bandwidth is a bandwidth required for data exchange through the bus between the external memory and other components except the motion compensation apparatus among the components of the decoder, 상기 제 3 대역폭은, 상기 가변 캐쉬 버퍼에 저장된 데이터가 없을 때, 움직임 보상을 위해 필요한 데이터가 상기 외부 메모리 및 상기 데이터 판독부 간에 상기 버스를 통해 교환되기 위해 필요한 대역폭인 것을 특징으로 하는 대역폭 인식 움직임 보상 장치.The third bandwidth is a bandwidth-aware movement, characterized in that when there is no data stored in the variable cache buffer, data necessary for motion compensation is required to be exchanged through the bus between the external memory and the data readout. Compensation device. 제 1 항에 있어서, The method of claim 1, 상기 가변 캐쉬 버퍼는 적어도 하나 이상의 캐쉬 버퍼를 사용하며, The variable cache buffer uses at least one cache buffer, 제 1 캐쉬 버퍼는 상기 블록의 한 라인의 바이트 수보다 큰 너비를 가지고, 제 2 캐쉬 버퍼는 상기 블록의 한 라인의 바이트 수보다 작은 너비를 가질 때, When the first cache buffer has a width larger than the number of bytes in one line of the block, and the second cache buffer has a width smaller than the number of bytes in one line of the block, 상기 제 1캐쉬 버퍼 및 복수 개의 상기 제 2 캐쉬 버퍼 중 적어도 어느 하나로 구성되어, 상기 가변 캐쉬 버퍼의 한 라인의 총 너비는 상기 블록의 한 라인의 바이트 수보다 큰 것을 특징으로 하는 대역폭 인식 움직임 보상 장치.At least one of the first cache buffer and the plurality of second cache buffers, wherein the total width of one line of the variable cache buffer is greater than the number of bytes of one line of the block . 제 1 항에 있어서,The method of claim 1, 상기 캐쉬 제어부는 상기 레퍼런스 데이터 중 매스데이터 및 업데이트 데이터를 구분하여 상기 가변 캐쉬 버퍼에 전송하고, 상기 가변 캐쉬 버퍼 상에서 상기 매스데이터를 검색하는 영역을 결정하는 것을 특징으로 하는 대역폭 인식 움직임 보상 장치.And the cache controller classifies and transmits mass data and update data among the reference data to the variable cache buffer, and determines an area for searching the mass data on the variable cache buffer. 움직임 보상을 위해 허용되는 최대 버스 대역폭을 결정하는 단계;Determining a maximum bus bandwidth allowed for motion compensation; 상기 결정된 버스 대역폭에 기초하여 가변 캐쉬 버퍼에 저장될 레퍼런스 데이터의 수량과 범위를 결정하고, 상기 레퍼런스 데이터를 특정하여 외부 메모리 로부터 상기 가변 캐쉬 버퍼로 상기 레퍼런스 데이터를 전송하여 상기 가변 캐쉬 버퍼를 업데이트하는 단계;Determining the quantity and range of reference data to be stored in the variable cache buffer based on the determined bus bandwidth, and specifying the reference data to transfer the reference data from an external memory to the variable cache buffer to update the variable cache buffer. step; 상기 움직임 보상을 수행할 데이터가 상기 가변 캐쉬 버퍼 또는 상기 외부 메모리 중 적어도 어느 하나에 저장되어 있는지를 확인하는 단계;Checking whether data to perform the motion compensation is stored in at least one of the variable cache buffer and the external memory; 상기 확인 결과에 따라 상기 가변 캐쉬 버퍼 또는 상기 외부 메모리 중 적어도 어느 하나에 억세스하여 움직임 보상을 수행할 데이터를 읽어오는 단계를 포함하는 것을 특징으로 하는 대역폭 인식 움직임 보상 방법.And reading data to perform motion compensation by accessing at least one of the variable cache buffer and the external memory according to the verification result.
KR1020070052222A 2007-04-02 2007-05-29 Apparatus and method for bandwidth aware motion compensation KR100891116B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US90741807P 2007-04-02 2007-04-02
US60/907,418 2007-04-02

Publications (2)

Publication Number Publication Date
KR20080090238A KR20080090238A (en) 2008-10-08
KR100891116B1 true KR100891116B1 (en) 2009-03-30

Family

ID=40174726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070052222A KR100891116B1 (en) 2007-04-02 2007-05-29 Apparatus and method for bandwidth aware motion compensation

Country Status (1)

Country Link
KR (1) KR100891116B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8837843B2 (en) 2011-03-17 2014-09-16 Samsung Electronics Co., Ltd. Motion estimation device to manage encoding time and associated method
WO2019245612A1 (en) * 2018-06-19 2019-12-26 Western Digital Technologies, Inc. Balanced caching

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729449B (en) * 2013-12-31 2017-02-15 上海富瀚微电子股份有限公司 Reference data access management method and device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030008999A (en) * 2001-07-21 2003-01-29 삼성전자 주식회사 Method for managing bandwidth of serial bus and apparatus thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030008999A (en) * 2001-07-21 2003-01-29 삼성전자 주식회사 Method for managing bandwidth of serial bus and apparatus thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8837843B2 (en) 2011-03-17 2014-09-16 Samsung Electronics Co., Ltd. Motion estimation device to manage encoding time and associated method
US9319676B2 (en) 2011-03-17 2016-04-19 Samsung Electronics Co., Ltd. Motion estimator and system on chip comprising the same
WO2019245612A1 (en) * 2018-06-19 2019-12-26 Western Digital Technologies, Inc. Balanced caching
US11188474B2 (en) 2018-06-19 2021-11-30 Western Digital Technologies, Inc. Balanced caching between a cache and a non-volatile memory based on rates corresponding to the cache and the non-volatile memory

Also Published As

Publication number Publication date
KR20080090238A (en) 2008-10-08

Similar Documents

Publication Publication Date Title
US8175157B2 (en) Apparatus and method for controlling data write/read in image processing system
US8442107B2 (en) Memory mapping apparatus and method for video decoder/encoder
KR101177666B1 (en) Intelligent decoded picture buffering
JP5724038B2 (en) Adaptive setting of reference frame buffer based on camera and background movement
KR100772379B1 (en) External memory device, method for storing image date thereof, apparatus for processing image using the same
US8400460B2 (en) Image data processing method, program for image data processing method, recording medium with recorded program for image data processing method and image date processing device
US8577165B2 (en) Method and apparatus for bandwidth-reduced image encoding and decoding
JP2014123830A (en) Moving image compression/expansion device
US20080259089A1 (en) Apparatus and method for performing motion compensation by macro block unit while decoding compressed motion picture
JP2011120244A (en) System for processing images
KR100891116B1 (en) Apparatus and method for bandwidth aware motion compensation
KR20050078706A (en) Memory access method and memory access device
JP4675383B2 (en) Image decoding apparatus and method, and image encoding apparatus
CN116233453B (en) Video coding method and device
US9363523B2 (en) Method and apparatus for multi-core video decoder
WO2022206217A1 (en) Method and apparatus for performing image processing in video encoder, and medium and system
KR101419378B1 (en) System for Video Processing
US8908777B2 (en) Memory request ordering for a motion compensation process, implemented by a picture processing apparatus, a picture processing method, and a picture processing program
JP2003230148A (en) Image data coding unit
CN106686380B (en) Enhanced data processing apparatus employing multi-block based pipeline and method of operation
US20030123555A1 (en) Video decoding system and memory interface apparatus
JP2009130599A (en) Moving picture decoder
WO2022206199A1 (en) Method and apparatus for performing image processing in video decoding apparatus, and system
KR20070034870A (en) Image data storage device for motion estimation and data storage method
KR100821922B1 (en) Local memory controller for mpeg decoder

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: 20130227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140227

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160226

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170224

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180227

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20200227

Year of fee payment: 12