KR101458029B1 - Apparatus and Method for caching the frame - Google Patents
Apparatus and Method for caching the frame Download PDFInfo
- Publication number
- KR101458029B1 KR101458029B1 KR1020070129116A KR20070129116A KR101458029B1 KR 101458029 B1 KR101458029 B1 KR 101458029B1 KR 1020070129116 A KR1020070129116 A KR 1020070129116A KR 20070129116 A KR20070129116 A KR 20070129116A KR 101458029 B1 KR101458029 B1 KR 101458029B1
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- block
- mode
- axis
- main storage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
Abstract
본 발명은 프레임 캐시 장치 및 방법에 관한 것으로서, 본 발명에 따른 프레임 캐시 장치 및 방법은 주 저장부로부터 캐싱될 프레임에 대한 정보를 수신하는 단계, 상기 수신된 정보를 이용하여 소정 모드의 초기 값을 설정하는 단계 및 상기 소정 모드를 이용하여 상기 주 저장부로부터 프레임을 캐싱하는 단계를 포함한다. The present invention relates to a frame cache apparatus and method, and a frame cache apparatus and method according to the present invention are characterized by receiving information on a frame to be cached from a main storage unit, and using the received information to initialize a predetermined mode And caching the frame from the main storage unit using the predetermined mode.
H.264 코덱, Image Convolution, Deblocking Filter, 모션 보상 H.264 codec, Image Convolution, Deblocking Filter, Motion compensation
Description
본 발명은 프레임 캐시 장치 및 방법에 관한 것으로, 보다 상세하게는 캐싱될 프레임에 대한 정보를 수신하고, 상기 수신된 정보를 이용하여 소정의 모드의 초기 값을 설정하고, 상기 소정의 모드를 이용하여 상기 프레임을 캐싱하는 장치 및 방법에 관한 것이다.The present invention relates to a frame cache apparatus and method, and more particularly, to a frame cache apparatus and method. More particularly, the present invention relates to a frame cache apparatus and method for receiving frame information to be cached, And an apparatus and method for caching the frame.
Cell과 같은 이질적(heterogeneous)인 다수 개의 코어(Core)를 가진 Multi-Processor SOC(Single on Chip)가 보급되었으며, 이로 인해, 다수 개의 코어를 효율적으로 처리하는 방법에 대한 요구가 증가하였다. 본원 발명은 다수 개의 코어를 효율적으로 처리하는 장치 및 방법에 관한 것이다.Multi-processor SOC (Single on Chip) having a plurality of heterogeneous cores such as Cells has been popularized, thereby increasing the need for a method for efficiently processing a plurality of cores. The present invention relates to an apparatus and a method for efficiently processing a plurality of cores.
도 1은 종래의 기술에 따른 멀티-프로세서 SoC를 나타내는 개요도이다. 도 1을 참조하면, SPE(Cell)(110_1 내지 110_8)와 같은 다수 개의 SIMD Accelerator를 가진 멀티 프로세서 SoC는 Video나 Image와 같은 Multimedia Data를 처리할 때 강점을 발휘할 수 있다. 이러한 MPSoC는 다수 개의 SPE(110_1 내지 110_8)를 포함하고 있다. 그러나, SPE(110_1 내지 110_8)는 메인 메모리(Main Memory)(130)의 Hierarchy 에 포함되어 있지 않고, 독립적인 Local Store(120_1 내지 120_8)만 포 함하고 있어, 메인 메모리(Main Memory)(130)에 접근할 때에는 DMA(Direct Memory Access)(140)를 사용해야만 한다. 또한, SPE(110_1 내지 110_8)는 256KB의 작은 용량의 Local Store(120_1 내지 120_8)가 장착되어 있으며, 상기 Local Store(120_1 내지 120_8)를 이용하여 코드 및 데이터를 모두 저장하고 처리하므로 큰 Data를 한꺼번에 읽어서 저장하는데 문제점이 있다..1 is a schematic diagram illustrating a conventional multi-processor SoC. Referring to FIG. 1, a multiprocessor SoC having a plurality of SIMD Accelerators such as SPEs (Cells) 110_1 to 110_8 can exert a strength when processing multimedia data such as Video and Image. This MPSoC includes a plurality of SPEs 110_1 to 110_8. However, the SPEs 110_1 to 110_8 are not included in the hierarchy of the
도 2는 도 1의 멀티 프로세서에 저장된 이미지 프레임을 나타내는 도면이다. 도 2를 참조하면, 메인 메모리(130)내의 이미지 프레임(210)은 다수 개의 블록(240_1 내지 240_n)을 포함하고 있다. 블록(240_1 내지 240_n)의 상단의 시작 점을 Low Address(220)로 규정하고, 블록(240_1 내지 240_n)의 하단의 마지막 점을 High Address(230)로 규정한다. 또한, 가로 축으로는 다수 개의 블록(240_1 내지 240_n)이 점유하는 만큼 떨어져 있으며, 하나의 이미지 프레임(240_1 내지 240_n)내의 최초 블록과 마지막 블록의 간격을 프레임 스트라이드(Frame Stride)로 규정한다. 구체적으로 블록(240_1 내지 240_n)에 대해서 살펴보면, 이미지 프레임(210)과 마찬가지로, 블록 시작점(250) 및 가로축으로 블록의 간격을 표시하는 블록 폭을 포함하며, 세로 축으로도 프레임 스트라이트(Frame Stride) 만큼 간격이 떨어져 있다. 메인 메모리(130)는 전술한 블록 단위로 이미지 또는 비디오 프레임과 같은 2차원 데이터가 Raster Scan 방향으로 저장된다. 이를 하나의 프로세서(Single-Processor)로 처리할 때에는 접근에 아무런 문제가 없으나, SPE(110_1 내지 110_8)에서 이에 접근하려면 한 라인 (one pixel line) 혹은 여러 라인씩을 DMA를 통해 읽거나 써야 한다. 특히, 처리가 일정한 가로, 세로 크기의 블록 단위 로 이루어질 때에는 블록의 각 라인이 연속되어 있지 않기 때문에, 다시 표현하면 도 2에서 도시된 바와 같이 블록(240_1 내지 240_n)내에서 각 라인의 시작점들은 프레임 스트라이드(Frame Stride) 만큼의 차이를 갖고 있기 때문에, 한번의 DMA(140) 접속으로 블록(240_1 내지 240_n)을 불러오는데 문제점이 있다.2 is a diagram showing an image frame stored in the multiprocessor of FIG. Referring to FIG. 2, an
도 3은 도 2의 이미지 프레임이 이미지 콘볼루션 된 경우 메인 메모리로부터 DMA(Direct Memory Access)처리를 하는 방식을 나타내는 도면이다. 도 3을 참조하면, Image Convolution이나 Deblocking Filter와 같은 경우 블록 별로 처리되지만, 블록은 겹치는 부분이 존재한다. 제 1블록(310)과 제 2블록(320)은 가로 방향으로 겹치는 부분이 있고, 제 1블록(310)과 제 3블록(330)은 세로 방향으로 겹치는 부분이 있다. 따라서 블록 별로 처리할 때에는 블록 각각을 읽어오되, 겹치는 부분에 대해서는 별도의 처리를 해 주어야 한다. 이는 가로로 일부 블록을 미리 읽는 방법도도 가능하지만 응용 프로그램 코드와 복잡한 DMA 코드가 섞이는 문제점이 있다. FIG. 3 is a diagram showing a method of performing DMA (Direct Memory Access) processing from the main memory when the image frame of FIG. 2 is image convoluted. Referring to FIG. 3, in the case of Image Convolution or Deblocking Filter, blocks are processed on a block-by-block basis, but overlapping portions exist in the blocks. The first block 310 and the second block 320 overlap in the horizontal direction and the first block 310 and the third block 330 overlap in the vertical direction. Therefore, when processing each block, each block should be read, but the overlapping part must be processed separately. This can be done by preloading some blocks horizontally, but there is a problem of mixing application code with complex DMA code.
도 4는 도 2의 이미지 프레임이 모션 보상(Motion Compensation)인 경우, 메인 메모리로부터 DMA(Direct Memory Access)처리를 하는 방식을 나타내는 도면이다. 도 4를 참조하면, H.264 코덱의 모션 보상(Motion Compensation)과 같은 경우에는 처리하려는 블록의 크기가 일정하지 않으며, 참조(Reference)해 오는 블록들이 일렬로 정렬(align) 되어 있지 않고 Motion Vector의 크기에 따라 읽어 올 블록 위치에 임의성(Randomness)가 포함되어 있다. 또한, H.264 코덱의 모션 보상(Motion Compensation)은 다수 개의 참조 프레임(Reference Frame)을 동시에 참조하는 것이 가능하다. 다시 설명하면, 도 4에서 도시된 바와 같이, 모션 보 상(Motion Compensation) 프레임(440)은 제 1프레임(410) 및 제 2프레임에 있는 블록 2을 참조할 수 있다. 따라서, 참조하려는 블록 주변에는 어느 정도 공간적 인접성(Spatial Locality)가 있지만 추후 어떤 블록이 접속(Access)될지 정확하게 예측하지 못하면 Double Buffering 등을 함에 있어 문제점이 있다. FIG. 4 is a diagram showing a method of performing DMA (Direct Memory Access) processing from the main memory when the image frame of FIG. 2 is motion compensation. Referring to FIG. 4, in the case of motion compensation of the H.264 codec, the size of a block to be processed is not constant, and reference blocks are not aligned in a line, The randomness is included in the block position to be read depending on the size of the block. In addition, motion compensation of the H.264 codec can simultaneously reference a plurality of reference frames. 4, the
본 발명은 상기와 같은 문제점을 해결하기 위해 창안된 것으로써, 본 발명이 이루고자 하는 기술적 과제는, 다수 개의 프로세서와 이질적인(heterogeneous) 구성을 갖는 멀티 프로세서 SoC 상에서 주 저장부에 저장된 대용량의 2D 이미지 프레임(Image Frame)을 캐싱(Caching) 및 프리 패칭(Prefetching)하는 프레임 캐싱 장치 및 방법을 제공한다. SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and it is an object of the present invention to provide a large-capacity 2D image frame stored in a main storage unit on a multiprocessor SoC having a plurality of processors and a heterogeneous configuration. The present invention provides a frame caching apparatus and method for caching and prefetching image frames.
또한, 본 발명이 이루고자 하는 기술적 과제는, 복잡한 DMA 전달(Transfer) 명령의 조합, 메모리의 배열(Memory Alignment) 및 Double Buffering 등을 고려하지 않고도 프로그램(Program)할 수 있는 인터페이스를 제공하는 프레임 캐싱 장치 및 방법을 제공한다. It is another object of the present invention to provide a frame caching apparatus which provides an interface capable of programming without considering complex DMA transfer command combinations, memory alignment, double buffering, And methods.
또한, 본 발명이 이루고자 하는 기술적 과제는, 다중 상호 연관성(Associativity)를 갖는 2 차원 캐시(Cache) 기술 및 공간 예측적 프리 패칭(Prefetching) 하는 프레임 캐싱 장치 및 방법을 제공한다. The present invention also provides a two-dimensional cache technique having multiple associativity and a frame caching apparatus and method for performing spatial prediction prefetching.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 프레임 캐시 장치 및 방법은 주 저장부로부터 캐싱될 프레임에 대한 정보를 수신하는 단계, 상기 수 신된 정보를 이용하여 소정 모드의 초기 값을 설정하는 단계 및 상기 소정 모드를 이용하여 상기 주 저장부로부터 프레임을 캐싱하는 단계를 포함한다. In order to achieve the above object, a frame cache apparatus and method according to an embodiment of the present invention includes receiving information on a frame to be cached from a main storage unit, setting an initial value of a predetermined mode using the received information And caching the frame from the main storage unit using the predetermined mode.
또한, 본 발명의 일 실시예에 따라 프레임 캐시 장치 및 방법은 주 저장부로부터 캐싱될 프레임에 대한 정보를 수신하는 저장 모듈 및 상기 수신된 정보를 이용하여 소정의 모드의 초기 값을 설정하고, 상기 소정의 모드를 이용하여 상기 주 저장부로부터 프레임을 캐싱하는 처리 모듈을 포함한다.According to another aspect of the present invention, there is provided a frame cache apparatus and method, comprising: a storage module for receiving information on a frame to be cached from a main storage; and an initial value of a predetermined mode using the received information, And a processing module for caching frames from the main storage unit using a predetermined mode.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. The details of other embodiments are included in the detailed description and drawings.
상기한 바와 같은 본 발명의 프레임 캐시 장치 및 방법에 따르면, 본 발명을 사용하여 MPSoC 상에서 Multimedia Application을 구현하면, Single Core 상의 Processing Logic을 멀티프로세서 SoC로 그대로 옮겨 올 수 있어 이식성을 증가시키는 장점이 있다.According to the frame cache apparatus and method of the present invention as described above, when a multimedia application is implemented on MPSoC using the present invention, processing logic on a single core can be transferred as it is to a multi-processor SoC, .
또한, DMA 회수를 줄여서 DMA Issue Overhead가 줄어들며, 인접성(Locality) 활용으로 중복된 DMA를 피하며 Prefetching을 통해 Access 이전에 Data을 적재함으로써 Multimedia Application의 성능 향상을 꾀할 수 있는 장점이 있다.In addition, the DMA issue overhead is reduced by reducing the number of DMAs, and it is advantageous to improve the performance of the multimedia application by loading the data before the access through the prefetching by avoiding the duplicated DMA by utilizing the locality.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태 로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention, and the manner of achieving them, will be apparent from and elucidated with reference to the embodiments described hereinafter in conjunction with the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. To fully disclose the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout the specification.
'모듈'은 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.A "module" refers to a hardware component such as software or a Field Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC), and the module performs certain roles. However, a module is not limited to software or hardware. A module may be configured to reside on an addressable storage medium and may be configured to execute one or more processors. Thus, by way of example, a module may include components such as software components, object-oriented software components, class components and task components, and processes, functions, attributes, procedures, Microcode, circuitry, data, databases, data structures, tables, arrays, and variables, as will be appreciated by those skilled in the art. The functionality provided by the components and modules may be combined into a smaller number of components and modules or further separated into additional components and modules.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 5는 본 발명의 일 실시예에 따른 프레임 캐싱 장치의 개요도 이다. 5 is a schematic diagram of a frame caching apparatus according to an embodiment of the present invention.
도 5를 참조하면, 프레임 캐싱 장치(500)는 처리 모듈(515), 제어 모듈(520) 및 저장 모듈(525)를 포함한다. 또한, 프레임 캐싱 장치(500)는 데이터를 프로세싱(processing)하는 SPE(Synergistic Processing Elements)(530) 및 이미지 데이터 등을 저장하는 주 저장부(540)를 더 포함할 수 있다. 프레임 캐싱 장치(500)는 주 저장부(540)로부터 데이터 등을 전달 받거나 전달할 수 있으며, 전술한 바와 같은 DMA(Direct Memory Access)를 이용할 수 있다. 그러면, 본 발명의 구성 요소에 대해서 구체적으로 살펴 보기로 한다. Referring to FIG. 5, the frame caching device 500 includes a
먼저, 처리 모듈(515)은 저장 모듈(530) 또는 주 저장부(540)로부터 전달된 데이터 등을 처리하는 역할을 한다. 여기서, 데이터 등은 이미지 데이터 또는 비디오 데이터 등이 포함될 수 있으며, 데이터 처리 방식의 일 예로 프레임 캐싱 등을 포함할 수 있다. First, the
구체적으로 살펴 보면, 처리 모듈(515)은 자신 또는 제어 모듈(520)을 이용하여 저장 모듈(525)에 저장되어 있는 특정 함수를 호출하고, 호출된 함수를 이용하여, 주 저장부(540)로부터 프레임의 위치 정보를 포함하는 주소 값 또는 프레임 Geometry에 대한 정보를 제공 받을 수 있다. 프레임 Geometry에 대한 정보는 블록들에 관한 정보를 포함할 수 있다. Specifically, the
프레임의 위치 정보를 포함하는 주소 값 또는 프레임 Geometry에 대한 정보를 주 저장부(540)로부터 제공 받은 후에, 처리 모듈(515)은 주 저장부(540)의 데이터를 처리하기 위한 인터페이스를 설정한다. 인터페이스는 소정의 모드로 표현되며, 소정의 모드는 제 1 모드 및 제 2모드 중 적어도 하나를 포함할 수 있다. 제 1모드 및 제 2모드에 대해서는 도 6 및 도 9를 참조하여 후술하기로 한다. 설정된 제 1모드 및 제 2모드를 이용하여, 주 저장부(540)에 저장된 이미지 데이터를 캐싱할 수 있으며, 이에 대한 설명은 구체적인 실시예를 들어 설명하기로 한다. 또한, 제 1 모드 및 제 2 모드는 미리 설정된 Region을 이용할 수 있으며, Region은 주 저장부(540)의 프레임을 구성하는 블록에 대응 된다. 블록 및 Region에 대해서는 후술하여 설명하기로 한다. The
제 1모드에 대한 일 실시예로, 처리 모듈(515)은 제 1모드를 이용하여 주 저장부(540)로부터 다수 개의 블록들을 포함하는 프레임을 캐싱할 수 있다. 처리 모듈(510)은 저장 모듈(525)에 저장되어 있는 InitRegion 함수를 호출하며, 호출된 InitRegion 함수는 주 저장부(540)에 저장되어 있는 다수 개의 블록을 포함하는 프레임 Geometry 및 프레임의 스트라이드(stride)를 지정한다. 프레임 Geometry 및 프레임 스트라이드가 지정된 후, 처리 모듈(510)은 저장 모듈(510)에 저장되어 있는 InitWindow 함수를 호출하여, 현재 처리할 프레임의 Geometry를 지정하고, 제 1모드를 초기화 한다. In one embodiment for the first mode, the
제 1모드가 초기화 된 후, 일 실시예로 처리 모듈(515)은 MoveWindow 함수를 호출하며, 호출된 함수는 프레임 내의 현재의 블록에 대응되는 Region을 설정하고, 설정된 Region을 제 1모드에 반영하는 역할을 한다. 따라서, 처리 모듈(515)은 프레임 내의 블록 들에 대응되는 기준 값(블록 들의 기준 값에 대응되는 Region의 기준 값)을 가지는 Region이 형성되고, 이러한 Region이 제 1모드에 반영되어 블록을 캐싱할 수 있다. 좀 더 구체적인 설명은 도 8을 참조하여 후술하기로 한다. After the first mode is initialized, in one embodiment, the
일 실시예로 처리 모듈(515)은 IterateWindow 함수를 호출하며, 호출된 함수 는 프레임 내의 현재의 블록에 대응되는 Region을 설정하고, 설정된 Region을 제 1모드에 반영한다. 따라서, 처리 모듈(515)은 프레임 내의 블록들을 반복해서 Region에 대응시키고, 이러한 Region이 제 1 모드에 반영되어 반복적으로 프레임 내의 블록들을 읽어 들인다. 다시 표현하면, 프레임 내의 다수 개의 블록들이 프레임 캐싱 장치(500)에 캐싱되어 진다. 또한, 일 예로, 반복적으로 프레임내의 블록을 캐싱하기 위해서, 프레임 Geometry에 대한 정보 중 블록에 대한 정보로부터 블록 간의 위치 관계에 대한 정보를 수신하고, 수신된 위치 정보를 이용하여 블록 간의 거리 차, 즉, X 축 증가분(XInc) 및 Y축 증가분(YInc) 값을 알 수 있으며, 이를 이용해서, 블록에 대응되는 Region을 반복하여 설정할 수 있으며, 이러한 Region을 반영한 제 1모드를 이용하여 블록들을 캐싱할 수 도 있다. 좀 더 구체적인 설명은 도 8을 참조하여 후술하기로 한다. In one embodiment, the
그 밖의 제 1모드에 대한 실시예로 처리 모듈(515)은 프리패칭(prefetching) 등을 할 수 있으며, 이에 대한 구체적인 설명은 도 8을 참조하여 후술하기로 한다.As another embodiment of the first mode, the
제 2모드에 대한 일 실시예로, 처리 모듈(515)은 제 2모드를 이용하여 주 저장부(540)로부터 다수 개의 블록을 포함하는 프레임을 캐싱할 수 있다. 제 1모드를 설명할 때, 설명한 바와 같이, InitRegion 함수를 이용하여 Region을 설정한다. Region이 설정된 후, 처리 모듈(510)은 저장 모듈(510)에 저장되어 있는 SetRegionBase 함수를 호출하며, 호출된 SetRegionBase 함수는 주 저장부(540)에 저장된 다수 개의 블록을 포함하는 프레임내의 블록에 대응되는 현재의 Region을 제 2 모드에 반영하고, 블록의 기준 점에 대응되는 Region의 기준 포인터를 설정하 고, 설정된 Region을 제 2모드에 반영한다. In one embodiment for the second mode, the
전술한 제 1모드에서 설명한 바와 같이, 처리 모듈(515)은 MoveWindow 함수 및 IterateWindow 함수를 이용하여 프레임 내의 블록에 대응되는 Region을 설정하고, 설정된 Region을 제 2모드에 반영되어 블록을 캐싱할 수 있다. As described in the first mode, the
일 실시예로, 처리 모듈(515)은 다수 개의 블록을 포함하는 프레임내의 블록과 대응되는 Region을 설정하며, 설정된 Region이 제 2모드에 반영된 경우, 처리 모듈(515) 또는 SPE(530)는 제 2모드에 반영된 Region을 처리할 수 있다. 이 때, Region이 처리된 후, 처리 모듈(515)은 주 저장부(540)를 업데이트 할 수 있다. 이를 위해, 처리 모듈(515)은 UpdateRegion 함수를 호출하고, 호출된 UpdateRegion 함수는 주 저장부(540)를 업데이트 할 수 있다. 특히, 처리 모듈(515)이 블록에 대응되는 Region을 블록 보다 더 큰 영역으로 설정하면, 설정한 Region 중 블록 영역만 처리할 수 있다. 이러한 경우, 처리 모듈(515)은 캐싱된 Region 중 처리되지 않은 영역에 대해서는 Write Mask를 설정하여, 주 저장부(540)로 캐싱된 Region 중 처리되지 않은 영역을 Writeback 또는 무효로 할 수 있다. 이를 위해, 처리 모듈(515)은 FlushRegion 함수를 호출하고, 호출된 FlushRegion 함수는 캐싱된 Region 중 처리되지 않은 영역을 Writeback 또는 무효로 한다. 이에 대한 구체적인 설명은 도 11을 참조하여 후술한다.In one embodiment, the
그 밖의 실시예로, 처리 모듈(515)은 프리 패칭 등을 할 수 있으며, 이에 대한 구체적인 설명은 도 10을 참조하여 후술하기로 한다. In another embodiment, the
제어 모듈(520)은 프레임 캐싱 장치(500)내의 모든 구성요소를 관리하고 제 어하는 역할을 한다. 또한, 제어 모듈(520)은 처리 모듈(510)이 일정한 작업을 수행하는데 필요한 함수들을 저장 모듈(525)로부터 호출하여 처리 모듈(510)에 제공하는 역할을 한다. The control module 520 serves to manage and control all components in the frame caching device 500. In addition, the control module 520 functions to call the functions required for the processing module 510 to perform a certain task from the
저장 모듈(525)는 제 1모드 및 제 2모드를 이용하여 2-D Image Frame의 일부를 DMA를 통해 프레임 캐싱 장치(500)로 가져오거나 주 저장부(540)로 Writeback하는 다수 개의 함수가 포함된 라이브러리(library) 및 이미지 프레임 등을 포함하는 데이터를 저장하는 역할을 한다. 여기서, 라이브러리 및 데이터를 분리하여 저장할 수 있으며, 라이브러리를 저장하는 제 1 저장 모듈 및 데이터를 저장하는 제 2 저장 모듈을 포함할 수 있다.The
먼저, 라이브러리에서 지원하는 함수에 대해 살펴 보면, InitRegion, InitWindow, MoveWindow, IterateWindow, SetRegionBase, UpdateRegion, FlushRegion 등을 포함하며, 각각의 함수의 역할은 전술한 바와 같다. First, the functions supported by the library are described as follows: InitRegion, InitWindow, MoveWindow, IterateWindow, SetRegionBase, UpdateRegion, FlushRegion, etc., and the function of each function is as described above.
저장 모듈(525)에 저장되는 데이터는 이미지 프레임 또는 비디오 프레임을 포함할 수 있다. 또한, 저장 모듈은 다수 개의 슬롯을 포함할 수 있으며, 다수 개의 슬롯을 이용하여 데이터를 저장할 수 있다. The data stored in the
SPE(530)는 일종의 프로세서로써, DMA를 통해 주 저장부(540)와 연결되어 주 저장부(540)에 저장된 데이터를 읽어 들여 처리할 수 있으며, 주 프로세서와는 독립적으로 운영될 수 있다. 또한, 주 저장부(540)로부터 읽어 들인 데이터를 일시적으로 저장 모듈(535)에 저장할 수 있으며, 처리 모듈(515)를 통해 캐싱된 데이터를 처리할 수 도 있다. The SPE 530 is a kind of processor and can be connected to the
주 저장부(540)는 대 용량의 메모리로써, 데이터 등을 저장하는 역할을 하며, SPE(530) 또는 처리 모듈(510)의 요청에 따라 저장된 데이터를 전달 또는 수신 받는 역할을 한다. The
도 6은 프레임 캐싱 장치가 이미지 프레임을 처리하기 위한 Region를 나타내는 도면이다.6 is a diagram showing a region for processing an image frame by a frame caching apparatus.
도 6을 참조하면, 도 5를 설명할 때, 전술한 Region에 대해서 구체적으로 살펴보기로 한다. 처리 모듈(515)은 주 저장부(540)에 저장되어 있는 프레임에 접근하기 위해, 프로세싱(processing)의 기준이 되는 블록을 기반으로 한 Region 구조의 API (Application Programming Interface) 세트를 규정한다. Referring to FIG. 6, when describing FIG. 5, the Region will be described in detail. The
여기서, 블록은 프레임을 구성하는 단위로써, 소정의 기준 점을 기준으로 X 축 방향 및 Y축 방향으로 일정한 크기를 가지며, X축 방향은 기준 점을 기준으로 가로 축 방향이고, Y축 방향은 X축에 수직인 방향이며, X축과 Y축은 하나의 평면을 형성할 수 있다. 블록의 형태는 이에 한정되지 않으며, 해당 기술분야에 속하는 평균의 지식을 가진 자가 변경할 수 있는 범위로 확장될 수 있다. 또한, 프레임내의 블록들은 블록 간에 상호 중첩될 수 있어, 블록 간에 중첩된 영역이 발생될 수 도 있다. Here, the block is a unit constituting a frame, and has a predetermined size in the X-axis direction and the Y-axis direction with respect to a predetermined reference point, the X-axis direction is the transverse axis direction with respect to the reference point, and the Y- Axis, and the X-axis and the Y-axis can form one plane. The shape of the block is not limited thereto and can be extended to a range that can be changed by an average knowledge belonging to the technical field. In addition, blocks in a frame can be mutually superposed between blocks, so that an overlapped area between blocks can be generated.
프레임 캐싱 장치(500)가 주 저장부(540)로부터 프레임을 캐싱할 때, 프레임 캐싱 장치(500) 내의 저장 모듈(525)은 저장 공간이 작기 때문에, 주 저장부(540)내의 프레임을 바로 읽어 들일 수 없으며, 블록 단위로 캐싱하게 된다. 그러나, 프레임 캐싱 장치(500)는 캐싱된 블록을 용이하게 처리하기 위해, 전술한 바와 같 은 제 1모드 및 제 2모드와 같은 인터페이스를 제공하며, 그의 기본 단위인 Region을 규정한다. When the frame caching apparatus 500 caches a frame from the
Region에 대해 구체적으로 살펴보면, Region은 기준 점(610)을 기준으로 하여 X축 및 Y축으로 구분되는 2차원 평면을 형성할 수 있다. 또한, 도 6에서 도시된 바와 같이, 전술한 2차원 평면은 기준 점을 기준으로 X축의 음의 방향과 Y축의 음의 방향으로 확장될 수 있다. 또한, 전술한 2차원 평면은 기준 점을 기준으로 X축 및 Y축을 따라 좌표로써 규정될 수 있다. 따라서, 도 6에 도시된 바와 같이, X축의 음의 좌표(620), Y축의 음의 좌표(640), X축의 최대 길이(630) 및 Y축의 최대 길이(650)을 포함하는 Region을 규정할 수 있다. Specifically, the region can form a two-dimensional plane separated from the reference point (610) by the X-axis and the Y-axis. Further, as shown in FIG. 6, the above-mentioned two-dimensional plane can be extended in the negative direction of the X-axis and the negative direction of the Y-axis with reference to the reference point. Further, the above-described two-dimensional plane can be defined as coordinates along the X-axis and the Y-axis with reference to the reference point. 6, a region including
주 저장부(540)는 데이터를 프레임 형태로 저장하고 있으며, 저장된 프레임은 전술한 바와 같이 블록 단위로 저장된다. 프레임 내의 이웃하는 블록간에는 중첩된 영역이 발생되는 경우, 음의 인덱싱(indexing)을 수행할 필요성이 있으며, 이를 위해, Region은 X축 및 Y축 방향으로 음의 영역을 형성하고 있으며, 이를 사용해서 음의 인덱싱을 수행함으로써 보다 효율적으로 주 저장부(540)로부터 데이터를 불러들일 수 있다. The
Region의 일 실시예로, 도 7을 참조하여 제 1모드에 대해 설명하기로 한다. In one embodiment of the region, the first mode will be described with reference to FIG.
도 7은 프레임 캐싱 장치(500)가 프레임을 처리하기 위한 제 1모드의 설정을 나타내는 도면이다. 7 is a diagram showing a setting of a first mode for frame caching apparatus 500 to process a frame.
도 7을 참조하면, 제 1모드(700)는 도 6에서 전술한 바와 같이, 기준 점(710)을 정하면, 기준 점(710)을 기준으로 X축의 최대 거리, 즉 maxX(730), Y축 의 최대거리, 즉 maxY(750) 및 주 저장부(540) 내의 연속적인 어레이(array) 요소들 간의 Stride(740)를 결정한다. 또한, 제 1모드(700)는 도 6에서 도시된 Region의 특징을 모두 포함할 수 있다. 7, when the
또한, 도 4에서 전술한 바와 같이, 제 1모드(700)를 시작하기 위해서는 InitWindow 함수를 호출하여 윈도우 Geometry를 설정해 주어야 한다. 주 저장부(540)에 저장되어 있는 데이터의 Remote Stride(730) 값은 윈도우 Geometry 지정 시에 알려진 값을 사용하며, maxX(740)와 maxY(750) 값은 프레임(Frame) 형태를 감안하여 지정한다. 특히, 경계(Border)(760)가 존재하는 경우에는 기준 점(710) 및 Geometry의 최대 거리 maxX(740) 및 maxY(750) 값을 조정하여 경계(Border)(760)의 형태를 처리 모듈(510)에게 제공할 수 있다.In addition, as described above with reference to FIG. 4, in order to start the
제 1모드(700)가 초기화 되면, Region의 이동(move) 또는 반복(Iteration)하여 블록을 캐싱할 수 있다. Once the
일 실시예로, Region을 이동 시키는 경우에는 기준 점(710)의 위치를 (0, 0)으로 간주하고 기준 점(710)에 대한 상대 좌표를 계산하여, 새로운 좌표를 기준 점(720)으로 생성하여 Region을 이동시킬 수 있다. 이동된 Region을 이용하여 대응되는 블록을 캐싱할 수 있다. In one embodiment, when the region is moved, the position of the
일 실시예로, Region의 반복(Iteration)은 Region을 연속적으로 이동시켜서 주 저장부(540) 내의 프레임 Geometry내에 지정된 블록을 처리하도록 하는 것을 의미하며, 이에 대한 구체적인 설명은 도 8을 참조하여 설명하기로 한다. In one embodiment, Iteration of a region means that a region is successively moved to process a designated block within a frame geometry in the
도 8은 도 7의 제 1모드가 Region의 반복하는 방식을 나타내는 도면이다. FIG. 8 is a diagram showing a manner in which the first mode of FIG. 7 is repeated in the Region.
도 8을 참조하면, 도 7에 전술한 내용을 모두 포함할 수 있으며, 본 발명의 특징에 대해서만 설명하기로 한다. 주 저장부(540)내의 프레임의 Region을 연속적으로 이동시켜서, 프레임 Geometry내에 지정된 블록을 처음부터 끝까지 순차적으로 블록을 처리할 수 있도록 해 준다. Referring to FIG. 8, FIG. 7 may include all of the above-described contents, and only the features of the present invention will be described. The region of the frame in the
또한, Region의 가로 또는 세로 길이보다 작은 xInc(810), yInc(820) 값을 지정하면 중첩된 Region의 효과를 낼 수 있다.Also, if you specify xInc (810), yInc (820), which is smaller than the width or height of Region, you can get the effect of nested region.
블록이 서로 중첩되게 규정된 경우에는 캐시 영역이 이동할 때 업데이트 된 영역이 프레임 캐싱 장치(500) 상의 처리 모듈(515)에게 항상 최신 값이 보여야 하고, 주 저장부(540)에는 최종 값, 즉, 더 이상 변경되지 않는 값이 업데이트 되어야 한다. 따라서, 캐시 영역이 이동할 때에는 겹쳐진 부분을 다음 캐시에서 읽어 들인 영역의 앞부분에 Overwrite하여, Correctness를 보장할 수 있다. 또한, 반복적인(Iterative) 처리는 Region의 위치 이동 예측이 쉽고 작은 Double Buffer 크기로도 좋은 효과를 보일 수 있다. When the blocks are defined to overlap with each other, the updated area should always be displayed to the
일 실시예로, 도 8에서 도시된 바와 같이 현재 캐시된 영역에 블록 1,2 ··· n 가 존재하고 있을 때에, 다음 접속(Access)될 블록들을 포함하는 영역(프리패칭 영역(830))을 미리 읽어 들여(Prefetching) 다음 번 접속(Access)할 때에 부가적인 DMA 지연 없이 바로 처리가 가능하도록 한다. In one embodiment, as shown in FIG. 8, when blocks 1, 2 ... n exist in the current cached area, the area including the blocks to be next accessed (prefetching area 830) Prefetching is performed in the next access (access) without any additional DMA delay.
Region의 일 실시예로, 제 2모드에 대해 도 9를 참조하여 설명하기로 한다.In one embodiment of the region, the second mode will be described with reference to FIG.
도 9는 이미지 프레임 처리 장치가 이미지 프레임을 처리하기 위한 제 2모드의 설정을 나타내는 도면이다. 9 is a diagram showing a setting of a second mode for processing an image frame by the image frame processing apparatus.
도 9를 참조하면, 제 1모드와는 달리, 프레임의 경계가 지정되지 않았기 때문에 주 저장부(540)에서 어떤 위치를 지정하여도 읽어들일 수 있다. 또한, 제 1모드와 달리 규칙적인 Region의 이동을 가정하지 않기 때문에 Region의 기준 포인터만을 지정하도록 한다. Referring to FIG. 9, unlike the first mode, since a boundary of a frame is not specified, a
제 2모드에서는 SetRegionBase의 인터페이스를 사용하여 프레임 Geometry가 지정되지 않은 사각형 블록(920_1 내지 920_3)을 주 저장부(540)로부터 읽어들인다. In the second mode, the rectangular blocks 920_1 to 920_3 to which the frame geometry is not specified are read from the
주로 Motion Compensation과 같은 경우에 사용되는데, 도 9에서 도시된 바와 같이, 저장 모듈(525)내의 여러 슬롯(Slot)(910_1 내지 910_3)을 마련해 두고 그 중에서 어떤 블록이 지정되었을 경우 주 저장부(540)로부터 인접 영역을 한꺼번에 읽어 들이고, 읽어들인 영역을 Region에 반영하여 슬롯에 저장한다. 9, several slots (Slots) 910_1 to 910_3 in the
Motion Compensation의 경우에는 인접된 영역에 대한 확률적인 공간적 인접성(Spatial Locality)이 있기 때문에, 가로, 세로 및 캐시 팩터(cache Factor) (Region의 x, y 크기보다 큰 값을 사용한다)를 이용해서 최대한 한번의 캐시된 영역 안에서 Hit가 많이 일어나도록 한다. 그러나, 저장 모듈(525)가 제한되어 있고 DMA 지연 발생하기 때문에 너무 큰 영역을 한꺼번에 읽을 수는 없으므로, Local-Stride를 바꾸지 않는 범위에서 캐시 크기를 가변적으로 결정한다. 즉, 캐시의 한 슬롯(910_1 내지 910_3)이 대체(Replace)되기 전에 캐쉬 된 영역 내에서 접속(Access) 된 위치를 관찰함으로써 보다 정확한 캐시 팩터(Cache Factor)를 결정할 수 있다.In the case of Motion Compensation, since there is a probabilistic spatial adjacency (Spatial Locality) for the adjacent region, it is possible to maximize the spatial factor by using the width, height, and cache Factor Allows a lot of Hit in a single cached area. However, since the
또한, 제 2모드에서는 연관성(Associativity)를 제공한다. 즉, 다수 개의 슬롯(Slot)(910_1 내지 910_3)을 두어서 각각 서로 다른 주 저장부(540)의 영역을 캐시할 수 있도록 한다. Motion Compensation의 경우 대부분의 비디오 코덱이 양방향 예측(Prediction)을 제공하고 있으며, 특히, H.264는 다수 개의 프레임에 대한 참조가 필요하다. 따라서, 연관성을 부여하면 하나의 슬롯이 교체(Replace)되지 않고도 다수 개의 프레임의 영역들을 캐시하는 것이 가능하다. 각 슬롯은 LRU (Least Recently Used) 방법 등의 교체(Replacement) 방법을 사용하여 교체한다.In the second mode, it provides associativity. That is, a plurality of slots 910_1 to 910_3 may be disposed to cache different regions of the
도 10은 도 9의 제 2모드가 프리패칭(prefetching)하는 방식을 나타내는 도면이다. FIG. 10 is a diagram illustrating a method of prefetching the second mode of FIG.
도 10을 참조하면, 제 2 모드가 프리패치(Prefetch)를 할 경우에는, 제 1모드처럼 정확한 힌트가 없으므로 제 2모드에서는 예측에 기반한 프리패치를 수행한다. 도 10에서 도시된 바와 같이, 인접한 캐시 영역의 차이를 추적하여 (도 10에서는 제 1 Region(1050_1)과 제 2 Region(1050_2)의 위치 차이) 인접한 캐시 영역의 차이 V를 저장한다. 구체적으로 설명하면, 다음 예측되는 영역은 현재 캐시된 영역의 주소 + V 값을 사용하여, 프리패칭 할 영역인 제 3 Region(1059_3)을 예측하여, LRU 방법에 의해 대체될 대상의 슬롯에 프리패치해 둔다.Referring to FIG. 10, when the second mode prefetches, there is no precise hint as in the first mode, so the second mode performs pre-prediction based on the prediction. As shown in FIG. 10, the difference between the adjacent cache areas is tracked (the difference in position between the first region 1050_1 and the second region 1050_2 in FIG. 10), and the difference V between the adjacent cache areas is stored. Specifically, the next region to be predicted is predicted from the third region 1059_3, which is an area to be prefetched, by using the address + V value of the current cached region, and prefetched to the slot of the object to be replaced by the LRU method I will.
도 11은 본 발명의 일 실시예에 따른, Write Mask 방식을 나타내는 도면이다. 11 is a diagram illustrating a write mask method according to an embodiment of the present invention.
도 11을 참조하면, 주 저장부(540)에 저장된 프레임(1110)내에 블록의 크기(1130)가 일정하지 않은 경우, 전술한 제 1모드 또는 제 2모드를 이용하여 프레 임(1110)내에 블록(1130)을 읽어 들일 때, Region(600)의 X축 최대값(630) 및 Y축 최대값(650)을 최대치로 설정하여, 크기가 일정하지 않은 블록보다 더 크게 규정된 사각형의 Region(600)으로 읽어 들인다. 읽어 들인 Region(600)은 저장 모듈(525)내의 슬롯(1140)에 저장된다. 이러한 경우, 프레임 캐싱 장치(500)는 슬롯으로 읽어 들인 블록을 Write할 경우에는 블록의 경계에서 Coherence를 해치지 않기 위해서, Write Mask를 사용할 수 있다. 특히, Write Mask 방식은 H.264의 MC처럼 블록의 크기가 일정하지 않은 경우에 더욱 효율적이다. 11, when the
구체적으로 Write Mask 방식을 설명하면, Region(600)은 실제 데이터가 저장된 블록(1130)보다 더 큰 영역을 읽어 들이고, 읽어 들인 Region(600)의 일부(즉, 프레임의 블록에 해당(1150))만 Write하는 경우에 이를 그대로 주 저장부(540)에 업데이트하면, 인접 영역(즉, Region의 영역으로 읽어 들인 내용 중 블록으로 지정되지 않은 영역(1160))의 데이터는 파괴된다. 따라서, 이러한 문제점을 해결하기 위해서, 이미 선언된 최대 크기의 Region(600) 이내의 크기에서 실제로 Write된 크기를 프레임 캐싱 장치(500)의 처리 모듈(515)에 알려주면, Write 되지 않은 영역에 Dirty Bit(1160)를 설정한다. 이로 인해, 실제로 Write한 영역에 대한 정보만 주 저장부(540)에 전달되고, 정보를 전달받은 주 저장부(540)는 이러한 정보를 이용하여 주 저장부(540)를 업데이트 한다. 따라서, 주 저장부(540)의 인접 영역의 데이터가 파괴되는 문제점을 해결할 수 있다. 다만, 이러한 Write Mask 방식은 사용자의 설정에 따라 적용 여부를 결정할 수 있다. More specifically, the
도 12는 본 발명의 일 실시예에 따른, 제 1모드를 이용하여 이미지 프레임을 처리하는 방법을 나타내는 도면이다. 12 is a diagram illustrating a method of processing an image frame using a first mode, according to an embodiment of the present invention.
도 12를 참조하면, 주 저장부(540)로부터 캐싱될 프레임에 대한 정보를 수신한다(S1210). 전술한 바와 같이, 프레임 캐싱 장치(500)는 주 저장부(540)에 저장된 프레임의 Geometry를 설정하기 위해, Region을 규정한다. 프레임은 다수 개의 블록들로 구성되며, 규정된 Region과 블록을 대응시켜서 프레임을 읽어 들일 수 있다. 전술한 방식으로 규정된 Region을 이용하여 프레임의 Geometry를 설정하고, 주 저장부(540)로부터 캐싱될 프레임의 기하학적 배열에 대한 정보를 받는다. 여기서, 상기의 정보는 제 1모드의 초기 값을 설정하는데 필요한 정보를 포함하며, 일 예로 프레임의 위치 정보를 포함하는 주소 값 및 프레임의 Geometry에 대한 정보 등을 포함할 수 있다. Referring to FIG. 12, information on a frame to be cached is received from the main storage unit 540 (S1210). As described above, the frame caching device 500 specifies a Region in order to set the geometry of the frame stored in the
전술한 프레임에 대한 정보를 전달 받으면, 상기 수신된 정보를 이용하여 제 1모드의 초기 값을 설정한다(S1220). 제 1 모드는 전술한 프레임의 Geometry 기준 값에 대응되는 값을 제 1모드의 기준 값으로 설정한다. 또한, 제 1모드는 프레임의 Geometry를 설정하는데 이용한 다수 개의 Region과 대응되는 영역을 설정하여, 즉, X축의 최대 값 및 Y축의 최대 값이 설정된 2차원 영역으로 설정되며, 이러한 영역은 프레임 Geometry에 대한 상대 좌표로 설정되어 이용될 수 있다. If the information on the frame is received, the initial value of the first mode is set using the received information (S1220). In the first mode, a value corresponding to the geometry reference value of the frame is set as the reference value of the first mode. In the first mode, a region corresponding to a plurality of regions used for setting the geometry of the frame is set, that is, a two-dimensional region in which the maximum value of the X axis and the maximum value of the Y axis are set. Can be set and used as relative coordinates.
제 1 모드의 초기 값이 설정된 후, 상기 제 1모드를 이용하여 주 저장부(540)로부터 프레임을 캐싱 한다(S1230). 전술한 바와 같이, 제 1모드는 프레임의 Geometry와 대응되는 관계로 설정되어 있고, 더욱이, 프레임의 Geometry는 Region에 대응되는 블록 단위로 구성되어 있어, 이미지 처리장치(500)는 제 1모드 를 이용하여 프레임내의 블록을 하나의 Region 단위로 읽어 들인다. 이에 대해서는 설정에 따라, 다수 개의 블록을 하나의 Region을 읽어올 수 도 있다. 다시 표현하면, 한 번에 캐싱하는 단위는 하나 또는 그 이상의 블록일 수 도 있다. After the initial value of the first mode is set, the
일 실시예로, 전술한 바와 같이, 프레임 캐싱 장치(500)는 제 1모드를 이용하여 프레임의 Geometry에 대한 위치를 이동시켜서, 프레임의 일부를 캐싱할 수 있다. In one embodiment, as described above, the frame caching device 500 may use a first mode to move a position for the geometry of a frame, thereby caching a portion of the frame.
일 실시예로, 전술한 바와 같이, 프레임 캐싱 장치(500)는 제 1 모드를 이용하여 프레임내의 블록을 반복하여 읽어들 일 수 있다.In one embodiment, as described above, the frame caching device 500 may repeatedly read blocks within a frame using the first mode.
일 실시예로, 전술한 바와 같이, 프레임 캐싱 장치(500)는 제 1모드를 이용하여 프레임내의 블록을 읽어들이면서, 다음에 읽어들인 블록을 프리패치(prefetch)할 수 도 있다. In one embodiment, as described above, the frame caching device 500 may prefetch the next read block while reading the block in the frame using the first mode.
주 저장부(540)로부터 프레임을 읽어 들인 후, 상기 캐싱된 프레임을 처리한다(S1240). 처리는 캐싱된 프레임의 일부를 write 하는 것 등을 포함할 수 있다. 처리 모듈(515)는 캐싱된 프레임 일부를 자신이 처리하거나 또는 SPE(530)에 전달하여 처리할 수도 있다. After reading the frame from the
캐싱된 프레임을 처리한 후, 주 저장부(540)에 처리할 프레임이 존재 하는지를 확인한다(S1250). After processing the cached frame, it is confirmed whether there is a frame to be processed in the main storage unit 540 (S1250).
처리할 프레임이 존재하는 경우에는, S1230 단계로 이동하여 프레임을 캐싱한 후, 전술한 단계를 처리할 프레임이 존재하지 않을 때까지 반복한다. 그 후, 처리할 프레임이 존재하지 않으면 프로세스를 종료 한다. If there is a frame to be processed, the process moves to step S1230 and caches the frame, and repeats the above steps until there is no frame to process. Thereafter, if there is no frame to be processed, the process is terminated.
처리할 프레임이 존재하지 않는 경우에는, 프로세스를 종료 한다. If there is no frame to be processed, the process is terminated.
도 13은본 발명의 일 실시예에 따른, 제 2 모드를 이용하여 이미지 프레임을 처리하는 방법을 나타내는 도면이다.13 is a diagram illustrating a method of processing an image frame using a second mode, according to an embodiment of the invention.
주 저장부(540)로부터 캐싱될 프레임의 위치 정보를 수신한다(S1310). 전술한 위치 정보는 캐싱될 프레임내의 블록의 기준 좌표의 주소를 나타내는 포인터를 읽어 들인다. The position information of the frame to be cached is received from the main storage unit 540 (S1310). The above-described position information reads a pointer indicating an address of a reference coordinate of a block in a frame to be cached.
위치 정보를 수신한 후, 상기 수신된 위치 정보를 이용하여 제 2 모드의 초기 값을 설정한다(S1320). 전술한 바와 같이, 규정된 Region과 주 저장부로 읽어 들인 프레임 내의 블록들의 주소를 나타내는 포인터를 제 2모드의 기준 포인터로 규정하는 제 2 모드의 초기 값을 설정한다. After receiving the position information, the initial value of the second mode is set using the received position information (S1320). As described above, an initial value of a second mode for defining a pointer indicating the addresses of blocks in a frame read into the prescribed region and main storage to the reference pointer of the second mode is set.
제 2모드의 초기 값이 설정된 후, 상기 제 2 모드를 이용하여 주 저장부(540)로부터 프레임을 캐싱한다(S1330). After the initial value of the second mode is set, the
일 실시예로, 전술한 바와 같은 연관성(Associativity)을 제공하여, 저장 모듈(525)내에 다수 개의 슬롯을 포함하고 있으며, 하나의 슬롯이 교체되지 않고도 다수 개의 프레임의 영역들을 캐시할 수 있다.In one embodiment, the associativity as described above may be provided to include a plurality of slots in the
일 실시예로, 전술한 바와 같은 프리패치(prefetch)를 제공하여, 규정된 Region에 대응되는 블록들을 캐싱하면서, 향후에 캐싱할 블록들을 미리 예측하여 프리패치할 수 있다. In one embodiment, a prefetch as described above is provided, and blocks to be cached in the future can be predicted and prefetched in advance while caching blocks corresponding to the prescribed region.
일 실시예로, 전술한 바와 같은 Write Mask를 제공하여, 프레임 내의 일정하지 않은 크기들의 블록 들을 캐싱하더라도, 주 저장부(540)의 인접 영역의 데이터 파괴되지 않은 방법을 제공한다. 또한, 사용자는 Write Mask의 적용 여부를 설정할 수 있다. In one embodiment, a Write Mask as described above is provided to provide a method of not destroying data in a contiguous area of the
주 저장부(540)로부터 캐싱을 한 후, 캐싱된 프레임을 처리한다(S1340). 전술한 바와 같이, 처리는 캐싱된 프레임의 일부를 write 하는 것 등을 포함할 수 있다. 처리 모듈(515)는 캐싱된 프레임 일부를 자신이 처리하거나 또는 SPE(530)에 전달하여 처리할 수도 있다.After caching from the
처리할 프레임이 존재하는지를 확인한다(S1350).It is confirmed whether there is a frame to be processed (S1350).
처리할 프레임이 존재하는 경우에는, S1330 단계로 이동하여 프레임을 캐싱한 후, 전술한 단계를 처리할 프레임이 존재하지 않을 때까지 반복한다. 그 후, 처리할 프레임이 존재하지 않으면 프로세스를 종료 한다. If there is a frame to be processed, the process moves to step S1330 and caches the frame, and repeats the above steps until there is no frame to process. Thereafter, if there is no frame to be processed, the process is terminated.
처리할 프레임이 존재하지 않는 경우에는, 프로세스를 종료 한다. If there is no frame to be processed, the process is terminated.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.It will be understood by those skilled in the art that the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive.
도 1은 종래의 기술에 따른 멀티-프로세서를 나타내는 개요도이다.1 is a schematic diagram illustrating a multi-processor according to the prior art.
도 2는 도 1의 멀티 프로세서에 저장된 이미지 프레임을 나타내는 도면이다.2 is a diagram showing an image frame stored in the multiprocessor of FIG.
도 3은 도 2의 이미지 프레임이 이미지 콘볼루션 된 경우 주 저장부(540)로부터 DMA(Direct Memory Access)처리를 하는 방식을 나타내는 도면이다. FIG. 3 is a diagram illustrating a method of performing DMA (Direct Memory Access) processing from the
도 4는 도 2의 이미지 프레임이 모션 보상(Motion Compensation)인 경우, 주 저장부(540)로부터 DMA(Direct Memory Access)처리를 하는 방식을 나타내는 도면이다.FIG. 4 is a diagram illustrating a method of performing DMA (Direct Memory Access) processing from the
도 5는 본 발명의 일 실시예에 따른 프레임 캐싱 장치의 개요도 이다. 5 is a schematic diagram of a frame caching apparatus according to an embodiment of the present invention.
도 6은 프레임 캐싱 장치가 프레임을 처리하기 위한 일반적인 모드를 나타내는 도면이다.6 is a diagram showing a general mode for processing a frame by the frame caching apparatus.
도 7은 프레임 캐싱 장치가 프레임을 처리하기 위한 제 1모드의 설정을 나타내는 도면이다. 7 is a diagram showing a setting of a first mode for a frame caching apparatus to process a frame.
도 8은 도 7의 제 1모드가 프리패칭(prefetching)하는 방식을 나타내는 도면이다. 8 is a diagram illustrating a method of prefetching the first mode of FIG.
도 9는 프레임 캐싱 장치가 이미지 프레임을 처리하기 위한 프리 모드의 설정을 나타내는 도면이다. 9 is a diagram showing a setting of a pre-mode for processing an image frame by a frame caching apparatus.
도 10은 도 9의 제 2 모드가 프리패칭(prefetching)하는 방식을 나타내는 도면이다. FIG. 10 is a diagram illustrating a method of prefetching the second mode of FIG.
도 11은 본 발명의 일 실시예에 따른, Write Mask 방식을 나타내는 도면이 다. 11 is a diagram illustrating a write mask method according to an embodiment of the present invention.
도 12는 본 발명의 일 실시예에 따른, 제 1모드를 이용하여 이미지 프레임을 처리하는 방법을 나타내는 도면이다. 12 is a diagram illustrating a method of processing an image frame using a first mode, according to an embodiment of the present invention.
도 13은 본 발명의 일 실시예에 따른, 제 2모드를 이용하여 이미지 프레임을 처리하는 방법을 나타내는 도면이다. 13 is a diagram illustrating a method of processing an image frame using a second mode, according to an embodiment of the present invention.
<도면의 주요 부분에 대한 설명>DESCRIPTION OF THE EMBODIMENTS
500: 프레임 캐싱 장치500: Frame caching device
515: 처리 모듈515: Processing module
520: 제어 모듈520: control module
525: 저장 모듈525: Storage module
530: SPE530: SPE
540: 주 저장부540: main storage unit
Claims (25)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/193,091 US8463997B2 (en) | 2007-08-16 | 2008-08-18 | Apparatus and method of caching frame |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US95619407P | 2007-08-16 | 2007-08-16 | |
US60/956,194 | 2007-08-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090017954A KR20090017954A (en) | 2009-02-19 |
KR101458029B1 true KR101458029B1 (en) | 2014-11-04 |
Family
ID=40686490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070129116A KR101458029B1 (en) | 2007-08-16 | 2007-12-12 | Apparatus and Method for caching the frame |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101458029B1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050001848A1 (en) | 2001-08-01 | 2005-01-06 | Stmicroelectronics, Inc. | Method and apparatus using a two-dimensional circular data buffer for scrollable image display |
WO2006051513A2 (en) * | 2004-11-15 | 2006-05-18 | Koninklijke Philips Electronics, N.V. | Cache with prefetch |
-
2007
- 2007-12-12 KR KR1020070129116A patent/KR101458029B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050001848A1 (en) | 2001-08-01 | 2005-01-06 | Stmicroelectronics, Inc. | Method and apparatus using a two-dimensional circular data buffer for scrollable image display |
WO2006051513A2 (en) * | 2004-11-15 | 2006-05-18 | Koninklijke Philips Electronics, N.V. | Cache with prefetch |
WO2006051513A3 (en) | 2004-11-15 | 2007-05-18 | Koninkl Philips Electronics Nv | Cache with prefetch |
Also Published As
Publication number | Publication date |
---|---|
KR20090017954A (en) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230342305A1 (en) | Victim cache that supports draining write-miss entries | |
US7797493B2 (en) | Enhancing performance of a memory unit of a data processing device by separating reading and fetching functionalities | |
US9645934B2 (en) | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer | |
US6418515B1 (en) | Cache flush unit | |
US6650333B1 (en) | Multi-pool texture memory management | |
US20050080986A1 (en) | Priority-based flash memory control apparatus for XIP in serial flash memory,memory management method using the same, and flash memory chip thereof | |
US20030154349A1 (en) | Program-directed cache prefetching for media processors | |
EP0612013A1 (en) | Combination prefetch buffer and instruction cache cross references to related applications | |
JPH077360B2 (en) | Information processing device with cache memory | |
US6587113B1 (en) | Texture caching with change of update rules at line end | |
US6744438B1 (en) | Texture caching with background preloading | |
US7061500B1 (en) | Direct-mapped texture caching with concise tags | |
CN104981838B (en) | Optimizing image memory access | |
US20220214979A1 (en) | Dedicated cache-related block transfer in a memory system | |
WO2005086096A2 (en) | Embedded system with 3d graphics core and local pixel buffer | |
CN116134475A (en) | Computer memory expansion device and method of operating the same | |
US6683615B1 (en) | Doubly-virtualized texture memory | |
US5386538A (en) | Data cache access for signal processing systems | |
KR101458029B1 (en) | Apparatus and Method for caching the frame | |
US8463997B2 (en) | Apparatus and method of caching frame | |
US7050061B1 (en) | Autonomous address translation in graphic subsystem | |
JPH0743671B2 (en) | Cache memory control method | |
US6397298B1 (en) | Cache memory having a programmable cache replacement scheme | |
JP2001249846A (en) | Cache memory device and data processing system | |
US7710425B1 (en) | Graphic memory management with invisible hardware-managed page faulting |
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: 20170919 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180917 Year of fee payment: 5 |