KR20090061961A - Apparatus for motion compensation - Google Patents
Apparatus for motion compensation Download PDFInfo
- Publication number
- KR20090061961A KR20090061961A KR1020070128999A KR20070128999A KR20090061961A KR 20090061961 A KR20090061961 A KR 20090061961A KR 1020070128999 A KR1020070128999 A KR 1020070128999A KR 20070128999 A KR20070128999 A KR 20070128999A KR 20090061961 A KR20090061961 A KR 20090061961A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- cache line
- motion compensation
- external memory
- index
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
도 1은 본 발명의 움직임 보정을 위한 구성 블록도이다.1 is a block diagram illustrating a motion correction of the present invention.
도 2는 본 발명의 움직임 보정을 위한 외부 메모리의 블록구성도이다.2 is a block diagram of an external memory for motion compensation according to the present invention.
도 3은 본 발명의 움직임 보정을 위한 캐쉬 메모리의 어드레스 포맷이다.3 is an address format of a cache memory for motion compensation according to the present invention.
본 발명은 이미지의 움직임 보정장치에 관한 것으로, 더욱 상세하게는 H.264/AVC 디코더에 적용되는 이미지의 움직임 보정장치에 관한 것이다.The present invention relates to an apparatus for compensating for motion of an image, and more particularly, to an apparatus for compensating for motion of an image applied to an H.264 / AVC decoder.
H.264/AVC는 가변 블록 사이즈(variable block size)와 쿼터-샘플 정밀 움직임 보정을 포함한 적극적인 압축기술을 채택하는 최신의 표준이다. H.264/AVC의 움직임 보정을 얻기 위해서, H.264/AVC 디코더는 레퍼런스 프레임 메모리(reference frame memory)로부터 많은 데이터 엑세스가 이루어져야 한다. 예를 들어, 하나의 4×4 블록의 움직임 보정을 실행하기 위해서 디코더는 레퍼런스 프레임 메모리의 최대 9×9 블록에 엑세스되게 된다. 결과적으로 움직임 보정은 레퍼런스 프레임 메모리에 엑세스 하는 데에 소요되는 메모리 밴드폭(memory bandwidth)의 75%를 차지하게 되고, 이러한 과도한 움직임 보정의 메모리 엑세스는 H.264/AVC의 성능 향상에 큰 장 애를 주고 있다.H.264 / AVC is the latest standard to adopt aggressive compression techniques, including variable block size and quarter-sample precision motion compensation. In order to obtain the motion correction of H.264 / AVC, the H.264 / AVC decoder must make a lot of data access from the reference frame memory. For example, in order to perform motion compensation of one 4x4 block, the decoder may access up to 9x9 blocks of the reference frame memory. As a result, motion compensation accounts for 75% of the memory bandwidth required to access the reference frame memory, and such excessive motion compensation memory access is a major obstacle to the performance improvement of H.264 / AVC. Is giving.
움직임 보정을 위하여 레퍼런스 프레임 메모리의 엑세스 시에 필요한 메모리 밴드폭을 줄이기 위한 다양한 기술들이 제안되어 왔으며, 그 중 하나의 기술이 정수 움직임 보정(integer motion compensation)과 소수 움직임 보정(fraction motion compensation)으로 구분하고, 임의의 움직임 벡터(motion vector)가 임의의 정수 위치(integer position)를 가리킬 때 정확히 필요한 블록을 패치(fetch)하도록 하는 것이다. 이 방식에서 인접된 레퍼런스 블록들은 이들이 동일한 움직임 벡터들을 갖을 때 함께 패치되며, 임의의 데이터 블록이 레지스터 파일에 저장되고, 다음 블록들에서 재 사용된다. 이 방식은 인접 블록들에 공유되는 반복적인 데이터 엑세스를 피함으로써 메모리 엑세스를 크게 줄이기는 하지만 인접한 블록들의 움직임 벡터들이 다를 때는 사용될 수 없다.Various techniques have been proposed to reduce the memory bandwidth required to access the reference frame memory for motion compensation, and one of them is divided into integer motion compensation and fraction motion compensation. And fetching exactly the required blocks when an arbitrary motion vector points to an integer position. In this way, adjacent reference blocks are patched together when they have the same motion vectors, and any data block is stored in a register file and reused in subsequent blocks. This approach greatly reduces memory access by avoiding repetitive data access shared by adjacent blocks, but cannot be used when the motion vectors of adjacent blocks are different.
본 발명은 인접한 블록들이 갖는 움직임 벡터들의 동일 여부와 관계없이 움직임 보정에서 외부 메모리에 엑세스 하는 데에 소요되는 메모리 밴드폭(memory bandwidth)을 감소시키는 움직임 보정장치를 제공하는 데에 목적이 있다.An object of the present invention is to provide a motion compensation device for reducing a memory bandwidth required for accessing an external memory in motion compensation regardless of whether the motion vectors of adjacent blocks are the same.
상기 목적을 위한 본 발명의 특징은 캐쉬 라인들로 이루어진 저장영역과 어드레스 할당영역을 포함하는 캐쉬 메모리; 각각의 캐쉬 라인 인덱스가 부여된 복수의 블록들로 이루어 복수의 열들로 이루어지며, 이미지 프레임의 한 열의 데이터가 상기 복수의 열들 중 한 열 내에 저장되는 외부 메모리; 상기 외부 메모리의 각 블 록들에 저장된 이미지 데이터를 상기 캐쉬 라인 인덱스가 지정하는 캐쉬 라인에 저장하고, 지정된 캐쉬 라인에 저장된 이미지 데이터에 의하여 움직임 보정을 수행하는 움직임 보정엔진을 포함하는 것이다.A feature of the present invention for this purpose is a cache memory comprising a storage area consisting of cache lines and an address allocation area; An external memory comprising a plurality of columns each of which is assigned a cache line index, wherein data of one column of an image frame is stored in one of the plurality of columns; And a motion correction engine for storing image data stored in each of the blocks of the external memory in a cache line designated by the cache line index, and performing motion compensation based on the image data stored in the designated cache line.
또한, 본 발명에서 상기 한 열을 형성하는 복수의 블록들에는 두 개의 캐쉬 라인 인덱스가 교대로 부여되는 것이 바람직하다.In the present invention, it is preferable that two cache line indices are alternately assigned to the plurality of blocks forming one column.
또한, 본 발멸에서 상기 어드레스 할당영역의 어드레스 포맷(format)은 열을 구분하기 위한 제1태그영역; 동일한 열 내에서 블록들을 식별하기 위한 제2태그영역; 상기 캐쉬라인을 지정하기 위한 인덱스 영역; 및 오프셋트 영역을 포함하는 것이다.In addition, the address format of the address allocating area in the present announcement includes: a first tag area for classifying columns; A second tag area for identifying blocks within the same column; An index area for designating the cache line; And an offset region.
또한, 본 발명에 있어서 상기 인덱스 영역은 상기 캐쉬 라인을 지정하는 제1인덱스 영역과 토글링(toggling)으로 사용되는 제2인덱스영역으로 이루어지는 것이 바람직하다.In addition, in the present invention, the index region preferably includes a first index region for designating the cache line and a second index region used for toggling.
또한, 본 발명에 있어서 상기 캐쉬라인은 32인 것이 바람직하다.In the present invention, the cash line is preferably 32.
또한, 본 발명에 있어서 상기 캐쉬라인 및 상기 외부 메모리의 한 블록은 8 바이트(byte)인 것이 바람직하다.In the present invention, one block of the cache line and the external memory is preferably 8 bytes.
이하, 첨부된 도면에 따라서 본 발명의 실시예를 상세히 설명하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 움직임 보정을 위한 블록구성도이다.1 is a block diagram for motion compensation of the present invention.
종래 메모리 구조에서, 내부 버퍼는 움직임 보정을 위한 데이터를 일시적으로 저장하기 위하여 하드웨어 움직임 보정 엔진과 외부 메모리 사이에 설치되나, 도 1에서, 캐쉬 메모리(3)가 움직임 보정 엔진(1)과 외부 메모리(2) 사이에 설치된 다. 캐쉬 메모리(3)는 종래의 버퍼보다 복잡하고 큰 메모리 용량이 필요하지만 한 블록의 데이터를 저장할 수 있으며, 그것들을 또 다른 블록을 위하여 재사용 할 수 있으므로 외부 메모리(2)의 엑세스를 감소시킨다.In the conventional memory structure, an internal buffer is installed between the hardware motion compensation engine and the external memory to temporarily store data for motion compensation, but in FIG. 1, the
도 1의 실시예에서 움직임 보정 알고리즘의 엑세스 패턴으로 후술되는 스프릿트-인덱스 직접 맵 캐쉬(split-index direct mapped cache)를 필요로 한다. 일반적인 비디오 압축 알고리즘에서 하나의 이미지는 블록들로 분해되고, 각각의 블록들은 독립적으로 처리된다. 따라서, 동일 블록 내에 두 데이터는 함께 엑세스될 가능성이 높다. 그러나, 두 데이터가 하나의 블록 이상으로 분리된다면 이들은 함께 엑세스될 수 없다. 실시예의 캐쉬 구성은 캐쉬 엑세스 충돌을 감소시키는 잇점을 갖는다. 1 requires a split-index direct mapped cache described below as an access pattern of a motion compensation algorithm. In a typical video compression algorithm, one image is decomposed into blocks, and each block is processed independently. Thus, two data in the same block are likely to be accessed together. However, if two data are separated into more than one block, they cannot be accessed together. The cache configuration of the embodiment has the advantage of reducing cache access collisions.
이하 스프릿트-인덱스 직접 맵 캐쉬에 대하여 설명하기로 한다.The split-index direct map cache will now be described.
도 2에 도시된 바와 같이, 데이터는 H.264/AVC 움직임 보정을 위하여 외부 메모리(2)로부터 캐쉬 메모리(3)에 매핑된다. 예시적으로 도 2에는 루미넌스(luminance) 데이터만이 고려되었으며, 외부 메모리(2)는 각 페이지(= 열(row))가 512 바이트를 갖으며, 하나의 이미지 프레임의 각 열의 사이즈는 512 바이트 보다 작도록 한다. 따라서, 이미지 프레임의 각 열은 외부 메모리(2)의 한 페이지에 저장되고, 캐쉬 라인 사이즈는 8바이트로 한다. 외부 메모리(2)는 블록으로 분할되고, 블록 각각은 1×8 바이트 데이터를 나타내며, 하나의 캐쉬 라인에 매핑된다. 각 블록의 번호는 각 블록이 매핑되는 캐쉬 라인의 인덱스를 나타낸다. 외부 메모리의 첫 번째 페이지(어드레스 0)는 캐쉬 라인 0과 1에 순차적으로 매핑된다. 동일 한 방법으로 두 번째 페이지의 블록들은 캐쉬 라인 2와 3에 매핑되고, 16페이지는 캐쉬 라인 30과 31에 매핑되고, 16페이지의 다음 페이지는 다시 캐쉬 라인 0과 1에 매핑된다. 이때 9×9 블록은 H.264/AVC 움직임 보정을 위한 4×4 블록을 삽입하기 위하여 요구되는 최대 블록 사이즈이며, 따라서 두 캐쉬 라인들에는 한 열에 있는 9바이트가 동시에 저장될 수 있다. 또한, 9픽셀들 이상으로 분리되는 두 개의 데이터는 함께 9×9 데이터 엑세스를 위하여 접근될 수 없기 때문에 데이터 충돌 없이 동일한 두 개의 캐쉬 라인들이 전 페이지를 위하여 사용된다. 캐쉬가 9×9 블록(81바이트)을 저장하여야 하며, 32가 9×9 블록을 저장할 수 있는 캐쉬 라인들의 가장 작은 수이고, 32가 2의 승수이기 때문에 캐쉬 라인들의 수는 32로 결정한다. 이때, 하나의 캐쉬는 캐쉬 사이즈가 2의 승수일 때 편리하게 제어된다.As shown in FIG. 2, data is mapped from
도 3에 도시된 바와 같이, 어드레스 비트들은 도 2에 도시된 캐쉬 매핑이 이루어지도록 할당된다. 이미지 사이즈의 크기가 512×512인 경우에 18비트가 이미지의 한 프레임을 어드레스하기 위하여 필요하다. 어드레스 분할은 총 어드레스 비트수를 변화시킴으로써 임의의 이미지에 적용할 수 있다. 캐쉬 블록 인덱스는 어드레스 비트는 9에서 12 까지의 비트 및 3비트이고, A[12:9]와 A[3]으로 각각 표시된다. 어드레스 비트[12:9]는 16 이미지 열(image row)을 어드레스하는 데 사용되고, A[3]는 같은 이미지 열에서 2 블록들을 토글링(toggling)하는 데 사용된다. 이러한 5 비트를 조합하여 인덱스는 32 캐쉬 블록을 선택할 수 있다. 0에서 2까지의 어드레스 비트 A[2:0]는 하나의 캐쉬 블록에서 오프 세트(offset)를 나타낸다. 13에서 7까지의 어드레스 비트 A[13:7]는 하나의 이미지에서 다른 열들을 구분하기 위한 TAG_upper로 표시된 캐쉬 태그로 사용되고, 4에서 8까지의 어드레스 비트 A[4:8]는 하나의 이미지에서 동일한 줄 내에서 블록들을 식별하기 위한 TAG_low로 표시되는 또 다른 태그로 사용된다. 종래의 직접적인 매핑된 캐쉬와 대조적으로, 인덱스 비트와 태그 비트는 분할(split)되어 있기 때문에 이러한 캐쉬를 스프릿트 인덱스 직접 매핑 캐쉬(split-index direct mapped cache)라 한다. 도 2 및 도 3에 도시된 캐쉬 구성은 이미지 프레임 보다 긴 임의의 외부 메모리 사이즈에도 적용할 수 있다. 크로미넨스(chrominance) 샘플들의 크기는 루미넨스의 크기의 1/4이기 때문에 캐쉬의 사이즈가 또한 16×4로 감소된다. 도 3 b는 16 비트 어드레스로 256×256 크로미넨스 샘플들을 할당하는 크로미넨스 캐쉬의 어드레스 형식을 도시한다. 캐쉬 사이즈가 16×4이고, 4 비트들은 인덱스로 사용되고, 2비트들은 오프 세트로 할당된다.As shown in FIG. 3, the address bits are allocated such that the cache mapping shown in FIG. 2 is achieved. If the size of the image size is 512 x 512, 18 bits are needed to address one frame of the image. Address segmentation can be applied to any image by changing the total number of address bits. The cache block index is address bits of 9 to 12 bits and 3 bits, denoted by A [12: 9] and A [3], respectively. Address bits [12: 9] are used to address 16 image rows, and A [3] is used to toggle 2 blocks in the same image row. Combining these 5 bits, the index can select 32 cache blocks. Address bits A [2: 0] from 0 to 2 indicate an offset in one cache block. Address bits A [13: 7] from 13 to 7 are used as cache tags labeled TAG_upper to distinguish different columns in one image. Address bits A [4: 8] from 4 to 8 are used in one image. Used as another tag, labeled TAG_low, to identify blocks within the same line. In contrast to the conventional direct mapped cache, the cache is called a split-index direct mapped cache because the index and tag bits are split. The cache configuration shown in FIGS. 2 and 3 may also apply to any external memory size that is longer than the image frame. Since the size of the chrominance samples is one quarter of the size of the luminance, the size of the cache is also reduced to 16 × 4. 3B shows the address format of a chrominance cache that allocates 256 × 256 chrominance samples to 16 bit addresses. The cache size is 16x4, 4 bits are used as an index, and 2 bits are allocated as an offset.
실험예Experimental Example
실험예에서는 본 발명의 캐쉬 구성에 의한 외부 메모리 엑세스와 종래 캐쉬 구성이 없을 때의 외부 메모리 엑세스를 비교하여 감축된 정도를 살펴보기로 한다. 소프트웨어로 H.264/AVC 버전7.3이 캐쉬 구성이 없을 때와 있을 때의 움직임 보정의 데이터 엑세스 패턴을 측정하기 위하여 사용되었다. QP, 서치 영역, 기준 프레임수를 각각 28, 16, 5로 설정하였다. 첫 번째 프레임은 I-슬라이스(slice)로 엔코딩되었고, 나머지 프레임들은 P-슬라이스로 엔코딩되었다. 실험예에서 스프릿트 인덱스 캐쉬로 32×8이 적용되었다. 또한 크로미넌스 샘플로 16×4가 스프릿트 인덱스 캐쉬로 적용되었다. 실험을 위하여 외부 메모리로부터 패취된 메모리 워 드(memory word)(32 비트)가 본 발명의 캐쉬 구성과 캐쉬 구성이 없는 원래의 H.264/AVC와 비교, 측정되었다. 측정결과 밴드폭의 감소 비율은 스프릿트 인덱스 캐쉬 적용시에 평균 66% 감소되었다.In the experimental example, the reduced degree is compared by comparing the external memory access by the cache configuration of the present invention with the external memory access when there is no conventional cache configuration. In software, H.264 / AVC version 7.3 was used to measure the data access pattern of motion compensation with and without cache configuration. The QP, search area, and reference frame number were set to 28, 16, and 5, respectively. The first frame was encoded in I-slice and the remaining frames were encoded in P-slice. In the experimental example, 32 × 8 was applied as the split index cache. In addition, 16 × 4 was applied as the split index cache as the chrominance sample. For the experiment, memory words (32 bits) patched from external memory were measured and compared with the original H.264 / AVC without cache configuration and cache configuration of the present invention. As a result, the reduction ratio of the bandwidth was reduced by 66% on average with the split index cache.
상기 목적과 구성을 갖는 본 발명에 따르는 외부 메모리와 캐쉬 구성에 의하여 움직임 보정에 따른 외부 메모리에 엑세스하는 데에 소요되는 메모리 밴드폭(memory bandwidth)을 대폭 감소시킬 수 있다.The memory bandwidth required for accessing the external memory according to the motion compensation can be greatly reduced by the external memory and the cache configuration according to the present invention having the above object and configuration.
또한, 본 발명의 캐쉬 어드레스 구성에 의하여 캐쉬 라인을 최소화하며, 데이터 충돌 없이 움직임 보정을 수행하도록 하여 선명한 이미지를 디코딩하도록 한다.In addition, the cache address structure of the present invention minimizes cache lines and performs motion compensation without data collision, thereby decoding clear images.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070128999A KR100944995B1 (en) | 2007-12-12 | 2007-12-12 | Apparatus for motion compensation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070128999A KR100944995B1 (en) | 2007-12-12 | 2007-12-12 | Apparatus for motion compensation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090061961A true KR20090061961A (en) | 2009-06-17 |
KR100944995B1 KR100944995B1 (en) | 2010-03-05 |
Family
ID=40991275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070128999A KR100944995B1 (en) | 2007-12-12 | 2007-12-12 | Apparatus for motion compensation |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100944995B1 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1629674A1 (en) * | 2003-05-19 | 2006-03-01 | Koninklijke Philips Electronics N.V. | Video processing device with low memory bandwidth requirements |
US20060050976A1 (en) * | 2004-09-09 | 2006-03-09 | Stephen Molloy | Caching method and apparatus for video motion compensation |
KR100640592B1 (en) * | 2004-10-25 | 2006-11-01 | 삼성전자주식회사 | Image encoding apparatus having improved encoding speed and method thereof |
-
2007
- 2007-12-12 KR KR1020070128999A patent/KR100944995B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR100944995B1 (en) | 2010-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10939112B2 (en) | Method and device for video coding and decoding | |
US10430099B2 (en) | Data processing systems | |
US7702878B2 (en) | Method and system for scalable video data width | |
KR101085622B1 (en) | Efficient use of storage in encoding and decoding video data streams | |
KR100852084B1 (en) | Unit and method for memory address translation and image processing apparatus comprising such a unit | |
US8867609B2 (en) | Dynamically configuring a video decoder cache for motion compensation | |
US8890881B2 (en) | Mapping method and video system for mapping pixel data included in the same pixel group to the same bank of memory | |
JP5039334B2 (en) | Cache memory control method and apparatus | |
US20080147980A1 (en) | Enhancing Performance of a Memory Unit of a Data Processing Device By Separating Reading and Fetching Functionalities | |
JP6263538B2 (en) | Method and system for multimedia data processing | |
US20080259089A1 (en) | Apparatus and method for performing motion compensation by macro block unit while decoding compressed motion picture | |
US7401177B2 (en) | Data storage device, data storage control apparatus, data storage control method, and data storage control program | |
US9118891B2 (en) | Video encoding system and method | |
US9137541B2 (en) | Video data cache | |
US20130057770A1 (en) | Data processing apparatus, data processing method and data sharing system | |
US20080292276A1 (en) | Two Dimensional Memory Caching Apparatus for High Definition Video | |
KR100944995B1 (en) | Apparatus for motion compensation | |
TWI418219B (en) | Data-mapping method and cache system for use in a motion compensation system | |
US10085016B1 (en) | Video prediction cache indexing systems and methods | |
US8264496B2 (en) | Data management for image processing | |
US8115874B2 (en) | Memory optimization for video processing | |
JP2007299211A (en) | Memory control device | |
US20140362095A1 (en) | Image cache memory and semiconductor integrated circuit | |
KR100785964B1 (en) | Method for efficiently managing sdram on drawing image asic | |
CN117575888A (en) | Method, device, medium and equipment for accelerating operation of feature data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130226 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140212 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150212 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20180129 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20190201 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20200203 Year of fee payment: 11 |