KR20070038955A - Cash memory managemnet system and methods - Google Patents

Cash memory managemnet system and methods Download PDF

Info

Publication number
KR20070038955A
KR20070038955A KR1020067023350A KR20067023350A KR20070038955A KR 20070038955 A KR20070038955 A KR 20070038955A KR 1020067023350 A KR1020067023350 A KR 1020067023350A KR 20067023350 A KR20067023350 A KR 20067023350A KR 20070038955 A KR20070038955 A KR 20070038955A
Authority
KR
South Korea
Prior art keywords
data
cache
pcm
scm
control
Prior art date
Application number
KR1020067023350A
Other languages
Korean (ko)
Other versions
KR101158949B1 (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 KR20070038955A publication Critical patent/KR20070038955A/en
Application granted granted Critical
Publication of KR101158949B1 publication Critical patent/KR101158949B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0879Burst mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

2차원 데이터 처리를 위한 캐시 메모리 방법 및 이에 상응하는 시스템으로, 동시 좌표 변환에 의한 2차원 영상 처리가 포함되어 있다. 이 방법은 각각의 장치에 데이터가 동시에 액세스할 수 있도록 복수의 뱅크가 포함되어 있는, 넓고 빠른 1차 캐시 메모리 (PCM) 장치 및 깊은 2차 캐시 메모리(SCM) 장치를 사용한다. 외부 프로세서 시스템 (PU1)으로부터 제어 변수를 받을 수 있는 외부 메모리에서 화소 데이터를 받고, 2차 제어 큐를 기초로 PCM에 이 데이터를 제공할 수 있도록, 제공된 선인출 논리가 사용되었다. 그 후에 이 데이터는 일정한 블록 크기 및 포맷으로 준비되고, 최적화된 크기로 1차 제어 큐 선인출을 기초로 PCM내에 저장된다. 준비된 데이터는 그후에 프로세싱을 위한 또다른 외부 프로세서 시스템 (PU2)에 의해 읽혀진다. 캐시 제어 논리는 PU2 의 입력에서의 데이터 및 제어 변수의 일관성을 보증한다.A cache memory method for two-dimensional data processing and a corresponding system, which includes two-dimensional image processing by simultaneous coordinate transformation. This method uses a wide and fast primary cache memory (PCM) device and a deep secondary cache memory (SCM) device, which contains multiple banks so that each device can access data simultaneously. The provided prefetch logic was used to receive pixel data from an external memory capable of receiving control variables from the external processor system PU1 and to provide this data to the PCM based on the secondary control queue. This data is then prepared in a constant block size and format and stored in the PCM based on the primary control queue prefetch at the optimized size. The prepared data is then read by another external processor system (PU2) for processing. Cache control logic ensures consistency of data and control variables at the input of PU2.

Description

캐시 메모리의 관리시스템 및 방법{CASH MEMORY MANAGEMNET SYSTEM AND METHODS}Cache Memory Management System and Method {CASH MEMORY MANAGEMNET SYSTEM AND METHODS}

본 발명은 디지털 데이터 처리와 관련된 캐시메모리 구조 및 관리와 관련한 것으로서, 구체적으로, 디지털 영상 데이터 처리와 관련한 것이다.The present invention relates to a cache memory structure and management related to digital data processing, and more particularly, to digital image data processing.

새로운 컴퓨터 시스템들의 발명 때문에, 보다 빠른 처리 및 보다 빠른 시스템에 대한 경쟁이 항상 있어왔다. 보다 빠른 처리는 클록 속도의 폭발적인 증가에 의해서 이루어져 왔다. 자연적으로, 데이터와 명령의 양도 마찬가지로 급속도로 증가 되었다. 컴퓨터 시스템에는 데이터 명령을 저장하는 ROM(읽기 전용 메모리)와 같은 기억장치와, DRAM과 같은 버스트(BURST)를 기반으로 하는 기억장치가 비약적으로 용량이 높아졌다. 구조적으로, 큰 메모리 공간은 심층적이고, 메모리내에서 프로세서가 데이터와 명령을 액세스 하는 것을 느리게 할 수 있다. 이러한 문제 때문에 메모리 관리와 캐시 메모리의 생성 및 캐시 메모리 구조를 보다 효율적으로 할 필요가 발생하였다. 캐시 메모리는 일반적으로 얕고 넓은 기억장치로서 데이터와 데이터의 내용을 변경하기 위한 장치프로세서의 액세스를 할 수 있도록 프로세서 내부 또는 근접한 곳에 있다. 캐시 메모리 관리의 기본은 자주 사용하고, 가까운 장래에 프로세서에서 사용될 데이터와 명령의 복사를 가장 빠르게 기억할 수 있는 기억장치에 보관 하는것에 있다. 이렇게 하여 프로세서가 데이터와 명령에 액세스하는 것이 외부메모리에서 액세스하는 것보다 몇 배가 빠르게 된다. 그러나, 이러한 작업은 주의 깊게 하여야 하는데, 캐시 메모리와 외부메모리 내의 내용은 반드시 조화롭게 이루어져야 한다. 이러한 주제들은, 하드웨어 및 소프트웨어 특성에 따라 캐시 메모리 구조 및 관리하는 기술을 만들게 되었다.Because of the invention of new computer systems, there has always been competition for faster processing and faster systems. Faster processing has been achieved by an explosive increase in clock speed. Naturally, the amount of data and commands has likewise increased rapidly. In computer systems, storage devices such as ROM (read only memory) for storing data instructions and burst-based storage devices such as DRAM are dramatically increased in capacity. Architecturally, large memory space is deep and can slow the processor to access data and instructions in memory. These problems have led to the need for more efficient memory management, cache memory creation, and cache memory structure. Cache memory is generally shallow and wide memory that resides within or in proximity to the processor to allow access to the data and the device processor for changing the content of the data. The basics of cache memory management are to store frequently used copies of data and instructions to be stored in the processor in the near future. This makes the processor accessing data and instructions many times faster than accessing it from external memory. However, this task must be done carefully, and the contents of cache memory and external memory must be harmonized. These themes have led to the creation of techniques to manage and manage cache memory in accordance with hardware and software characteristics.

언급한 바와 같이, 캐시메모리는 프로세서에서 다음에 액세스할 확률이 높은 자료와 주소를 복사하여 보완한다. 외부메모리는 보통 저항체에 데이터를 보유하고 데이터의 손실을 방지하기 위하여 저항체를 재충전시키기 위한 재입력사이클이 필요하다. 그러나 일반적인 캐시 메모리는 1비트로 표시되는 8개의 트랜지스터를 사용하므로 재입력 사이클이 필요하지 않다. 그러므로 캐시 메모리는 단위 크기가 외부메모리보다 훨씬 작은 데이터를 저장할 수 있다. 따라서 데이터와 명령을 신중하게 선택하여 캐시 운영을 최적화하여야 한다.As mentioned, cache memory supplements by copying data and addresses that the processor is likely to access next. External memory usually requires re-entry cycles to hold the data in the resistor and recharge the resistor to prevent loss of data. However, a typical cache memory uses eight transistors represented by one bit, eliminating the need for re-entry cycles. Therefore, cache memory can store data whose unit size is much smaller than that of external memory. Therefore, carefully select data and instructions to optimize cache operations.

캐시 메모리 운영을 최적화하기 위하여 서로 다른 방식 및 프로토콜이 사용되어 왔다. 이들 중 가장 잘 알려진 방법이 직접매핑, 연관매핑, 세트연관매핑이다. 이러한 프로토콜은 사람들에게 익숙하게 알려져 있다. 이들은 데이터 프로세싱, 웹 기반 어플리케이션 등을 포함하는 연산을 일반적인 목적으로 사용한다. 포머렌(Pomerene)의 미국특허번호 4,295,193에서 이중 명령어를 통한 동시실행 명령을 위한 연산기기를 출원하였다. 이것은 캐시메모리, 주소 발생기, 명령레지스터 및 파이프 라이닝이 포함되어 있는 가장 초기의 특허이다. 마츠오(Matsuo)는 미국특허번호 4,796,175에서 메인 메모리와 명령 캐시의 형태로 선인출명령을 위한 명령 큐를 포함하는 마이크로 프로세서를 출원했다. 스틸즈(Stiles)는 미국특허번호 6,067,616에서 분기예측캐시(BPC) 형상을 하이브리드 캐시구조로 출원하였는데, 전체 연관의 넓고 얕은 제1레벨 BCP, 일부 예측정보와 함께 2차 심층적이고 좁은 매핑 레벨 BCP로 되어있다. 프랑크(Frank)는 미국특허번호 6,654,856에서 컴퓨터시스템 내의 캐시관리시스템에 대하여 출원하였는데, 여기에는 캐시메모리구조의 주소관점 순환구조가 강조되었다.Different approaches and protocols have been used to optimize cache memory operations. The best known of these methods is direct mapping, associative mapping and set associative mapping. Such protocols are familiar to people. They use operations for general purposes, including data processing, web-based applications, and so on. In U.S. Patent No. 4,295,193 to Pomerene, a computing device for simultaneous execution of instructions via a double instruction has been filed. This is the earliest patent that includes cache memory, address generators, instruction registers and pipelining. Matsuo has applied for a microprocessor in US Pat. No. 4,796,175 that includes an instruction queue for prefetch instructions in the form of a main memory and an instruction cache. Stills filed Branch Predictive Cache (BPC) as a hybrid cache structure in US Pat. No. 6,067,616. It is. Frank filed for a cache management system in a computer system in US Pat. No. 6,654,856, which emphasizes the address-view cyclic structure of the cache memory structure.

라이오(Liao)는 미국특허번호 6,681,296에서 제어유닛 과 캐시가 포함된 마이크로프로세서를 출원하였는데, 그것은 선택적인 형상을 단독 또는 고정되고 정상적인 부분으로 구획되었다. 아리밀리(Arimilli)는 미국특허번호 6,721,856에서 프로세서 액세스 시퀀스가 포함되어 있는 서로 다른 프로세서들에 대하여 서로 다른 서브엔트리를 갖는 각각의 행에 대한 일관성 상태 및 시스템 제어에 대한 캐시에 대하여 특허를 받았다. 미국특허번호 6,629,188에서는 저장공간의 1차 및 2차의 다수 캐시메모리에 대한 것이 포함되어 있다. 미국특허번호 6,339,428에서는 압축된 텍스춰(TEXTURE) 정보를 받아서 텍스춰 압축을 푸는 작동을 하는 비디오 그래픽 내에서의 캐시장치가 포함되어 있다. 미국특허번호 6,353,438에서는 텍스춰의 다수 타일과 데이터를 캐시에 직접매핑 하는 캐시조합이 포함되어 있다.Liao filed a microprocessor with a control unit and a cache in US Pat. No. 6,681,296, which was divided into optional or single or fixed and normal parts. Arimmilli patents US Pat. No. 6,721,856 for a cache for coherency state and system control for each row having a different subentry for different processors containing a processor access sequence. U. S. Patent No. 6,629, 188 includes a plurality of primary and secondary cache memories of storage space. U. S. Patent No. 6,339, 428 includes a cache device in a video graphic that receives compressed texture information and operates to decompress texture. US Pat. No. 6,353,438 includes a cache combination that maps multiple tiles of a texture and data directly to the cache.

위의 발명들은 각각 특정한 장점들을 제공한다. 효율적인 캐시 구조 및 정책은 특정한 어플리케이션에 대해서 금방 사용할 수 있는 가에 따라 밀접하게 달려있다. 디지털 비디오 어플리케이션에 있어서, 고화질 실시간 디지털 영상 프로세싱은 이 분야에서의 커다란 도전중의 하나이다. 특별히 사람들은 비선형 좌표변환에 의한 상세한 2차원 영상 프로세싱을 수행하기를 원한다. 그러므로 전용 시스템 및 전문적인 시스템은 데이터의 일관성을 유지하면서 빠르게 액세스할 수 있는 특별한 장점을 필요로 한다. 따라서 이러한 어플리케이션에 대한 캐시구조 및 캐시 관리정책을 최적화하는 것이 필요하다.Each of the above inventions provides specific advantages. Effective cache structures and policies depend closely on the immediate availability of a particular application. For digital video applications, high quality real-time digital image processing is one of the biggest challenges in this field. In particular, people want to perform detailed two-dimensional image processing by nonlinear coordinate transformation. Dedicated and professional systems therefore require special advantages of fast access while maintaining data consistency. Therefore, it is necessary to optimize the cache structure and cache management policy for these applications.

이하, 첨부도면을 참고하여 본 발명에 대해 자세히 설명한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도1은 본 발명에 따라 만들어진 캐시시스템의 전체 계획에 대해서 나타낸 것이다;1 shows the overall plan of a cache system made in accordance with the present invention;

도2는 본 발명에 따라 만들어진 캐시시스템의 상세 구조를 나타낸 것이다;2 shows a detailed structure of a cache system made in accordance with the present invention;

도3은 캐시될 입력자료의 블록 구조의 예를 나타낸 것이다;3 shows an example of a block structure of input data to be cached;

도4는 본 발명에 따라 만들어진 1차 캐시 시스템의 일반적인 구조를 나타낸 것이다;4 illustrates the general structure of a primary cache system made in accordance with the present invention;

도5는 본 발명에 따라 만들어진 2차 캐시 시스템의 일반적인 구조를 나타낸 것이다; 그리고,5 shows the general structure of a secondary cache system made in accordance with the present invention; And,

도6은 본 발명에 따라 만들어진 캐시 시스템의 논리 흐름을 나타낸 것이다.Figure 6 illustrates the logic flow of a cache system made in accordance with the present invention.

이하, 첨부 도면을 참조하여 본 발명에 대해 자세히 설명한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

한가지 관점에서 본 발명은 디지털 데이터 프로세싱 특히, 디지털 화상 프로세싱의 캐시메모리 관리 및 구조에 대한 방법을 제공하고 있는바, 특히 다음과 같은 장치를 포함하고 있다.In one aspect, the present invention provides a method for cache memory management and structure of digital data processing, in particular, digital image processing, and particularly includes the following apparatus.

a) 액세스하여 처리할 데이터가 저장될 외부메모리;a) an external memory in which data to be accessed and processed is stored;

b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및b) a plurality of processor units PU1 for generating control commands and generating memory addresses and control variables of data to be processed in the external memory; And

c) 데이터를 처리할 다수의 프로세서 유니트(PU2)c) multiple processor units (PU2) to process data;

이 방법은 ;This method is;

(i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);(i) a deep secondary cache memory (SCM) having a plurality of banks having a plurality of storage lines for reading data from the external memory and having a large storage capacity;

(ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및(ii) a fast and wide primary cache memory (PCM) having a plurality of banks having several storage lines for reading data by the PU2, and having low storage capacity; And

(iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하는 캐시구조를 이용하여, (iii) using a cache structure that provides control of prefetching and cache, and includes control logic including a control stage and a control queue,

PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 외부메모리에서 데이터에 액세스하고, PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하고, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추는 것을 특징으로 하는 방법.When PU1 receives address sequence and control parameters, it accesses data from external memory, prepares data for fast access and processing by PU2, and then goes through the following steps to achieve cache consistency and hide memory read delays. Characterized in that the method.

(a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;(a) identifying a data block to be processed in an external memory based on the form and structure of the processing operation network of the PU2;

(b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;(b) create a sufficiently large SCM control queue based on the results of (a) and determine whether the data is in the PCM, so that the SCM can access data in external memory much faster than it is processed by PU2. Doing;

(c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계; (c) Simultaneously reading input data blocks from a plurality of banks of the SCM at a predetermined number of clock cycles, extracting and reformatting the external memory data from the cache data organization, extracting this data, and hiding the external data organization from the PU2. Increasing the data processing rate in PU2;

(d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및 (d) generating PCM control queues large enough to store the extracted data in the PCM before the data needed by the PU2 based on the results of (a) and (b); And

(e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계. (e) synchronizing the arrival of data and control parameters in the PU2 to maintain cache coherency.

또 다른 관점으로, 본 발명은 상기에 기술한 것에 근거한 캐시 시스템을 제공한다.In another aspect, the present invention provides a cache system based on what has been described above.

발명이 구체화된 것에 따른 다른 관점 및 장점에 대한 보다 더 자세한 것은 다음에 첨부 도면 설명에 나타날 것이다.Further details of other aspects and advantages as the invention is embodied will appear in the following description of the accompanying drawings.

이제부터 첨부된 도면 및 전형적인 방법에 따라 발명에 대한 상세한 설명을 하겠다. 본 발명은 캐시 구조 및 관리와 관련되어 있다. 본 설명에서 주어진, 실시된 예제는 동시 좌표 변환을 통한 영상 처리에 관한 것이다. 그러나, 당업자라면 이 발명의 범위가 이런 특별한 예제에 국한 하지 않는다는 것을 인식할 수 있을 것이다. 이것은 모든 종류의 디지털 데이터 처리와 관련 되어 있는데, 그 데이터 처리는 복수의 프로세서가 데이터 및 외부메모리와 일정한 형식을 가진 다른 프로세서에서 온 제어 매개변수를 인출하는 시도를 나타낸다. 특별히, 여기에서 주어진, 2차원(2D) 영상 변환 예제는 본 발명의 범위를 벗어나지 않고 간단하게 어떠한 2D 데이터 변환으로도 바꿀 수 있다. 따라서, 앞으로는, 데이터를 영상 화소 데이터로 부르기로 한다. 입력 데이터의 구조 및 망의 형태를 고려한 제어 매개변수를 발행하는 다수의 프로세서를 기하 엔진(Geometry engine)이라고 할 것이다. 거기에 추가해서, 오퍼레이션을 위한 데이터에 액세스하는 다수의 프로세서를 필터엔진(Filter engine)이라 하고, 이에 상응하는 오퍼레이션을 필터링(Filtering)이라 할 것이다.DETAILED DESCRIPTION OF EMBODIMENTS The following detailed description of the invention according to the accompanying drawings and typical methods. The present invention relates to cache structure and management. The given example, given in this description, relates to image processing via co-ordinate transformations. However, one of ordinary skill in the art will recognize that the scope of this invention is not limited to this particular example. This involves all sorts of digital data processing, which refers to attempts by multiple processors to fetch control parameters from other processors of some form with data and external memory. In particular, the two-dimensional (2D) image transformation example, given herein, can be easily changed to any 2D data transformation without departing from the scope of the present invention. Therefore, in the future, the data will be referred to as image pixel data. Many processors that issue control parameters that take into account the structure of the input data and the shape of the network will be referred to as the geometry engine. In addition, a number of processors that access data for an operation will be referred to as a filter engine, and the corresponding operation will be referred to as filtering.

본 발명 따라 만들어진 도 1은 연산장치 내에 동시 좌표변환을 포함하는 디지털 데이터 처리를 위해 설계된, 캐시시스템(100)의 설정의 예제를 그림으로 나타낸 것이다. 캐시시스템(100)은 2세트의 프로세서와 인터페이스 한다. 첫번째 다수의 프로세서는, 본 예제의 방법에서는, 기하 엔진(300)으로 구성되어 있고, 두번째 다수의 프로세서는 필터엔진으로 구성되어 있다. 이들 두개의 엔진에 추가해서, 캐시시스템(100)은 외부메모리(700)과 인터페이스 하는데, 이 외부메모리는 액세스 시간 지연을 갖는 모든 메모리가 될 수 있다. 캐시시스템(100)은 기하 엔진(300)에서 필터 밑넓이 매개변수 뿐만 아니라 좌표 변환을 포함하는 제어 매개변수를 받는다. 그것은 외부메모리(700)에서 화소 데이터를 동시에 받아들인다. 캐시시스템(100)은 이들 데이터들을 필터엔진(500)을 최소 스톨링(stalling)하면서 필터링 프로세스를 최적화 하는 방법으로 필터엔진(500)에 제공한다.Figure 1 made in accordance with the present invention graphically illustrates an example of the configuration of the cache system 100, designed for digital data processing including simultaneous coordinate transformations within the computing device. The cache system 100 interfaces with two sets of processors. The first plurality of processors, in the method of this example, consists of a geometry engine 300, and the second plurality of processors consists of a filter engine. In addition to these two engines, cache system 100 interfaces with external memory 700, which may be any memory having an access time delay. The cache system 100 receives a control parameter including a coordinate transformation as well as a filter width parameter in the geometry engine 300. It simultaneously accepts pixel data from the external memory 700. The cache system 100 provides these data to the filter engine 500 in a manner that optimizes the filtering process with minimal stalling of the filter engine 500.

2차(2D) 데이터 프로세싱에서는, 특별히, 디지털 영상 데이터 프로세싱, 포괄적인 필터링 또는 샘플링 기능이 요구된다. 앞으로, 2D 영상 프로세싱의 특별한 예제를 다룰 것이며; 따라서 "영상"이라는 단어는 임의의 2D 데이터의 특별한 경우로 사용될 것이다. 2D 디지털 영상 프로세싱에서, 각각의 출력 영상은 많은 입력 영상 정보에 기반을 두고 형성된다. 먼저, 출력 영상 좌표들은 입력 영상 좌표들 위에 표시된다. 이것이 좌표변환으로서, 보통 영상 래핑(warping) 기술을 통해 전자적으로 이루어진다. 한번 중앙의 입력 영상이 결정되면, 필터링 또는 샘플링 기능이 출력 영상 사양, 즉, 색채 성분의 강도와 샘플링 포맷 및 혼합 기능 같은 기타 정보를 생성하는 것을 필요로 한다. 중심의 입력영상 주위의 모든 영상을 포함하는 면적, 샘플링이 수행되는 장소는 필터 밑넓이라고 불리운다. 이 분야에서는 필터 밑넓이의 크기와 모양이 출력영상의 질에 영향을 주는 것은 매우 잘 알려진 일이다.In secondary (2D) data processing, digital image data processing, comprehensive filtering or sampling functions are required in particular. In the future, we will cover a special example of 2D image processing; The word "image" will therefore be used as a special case of any 2D data. In 2D digital image processing, each output image is formed based on a lot of input image information. First, output image coordinates are displayed over input image coordinates. This is the coordinate transformation, usually done electronically via image wrapping techniques. Once the central input image is determined, the filtering or sampling function needs to generate the output image specification, i.e., the intensity of the color components and other information such as the sampling format and the mixing function. The area including all the images around the center input image and the place where sampling is performed are called the filter bottom width. It is well known in this field that the size and shape of the filter footprint affect the quality of the output image.

캐시시스템(100)의 기능은 전용의 구조 및 충분한 랜덤 액세스 영상 데이터 및 제어 매개변수를 필터 엔진(500)에 충분하게 렌덤 액세스 할 수 있도록 하는 선인출 논리를 사용하는 하는 것으로서, 그렇게 함으로 최소한의 스톨링으로 주어진 클럭 속도로 데이터를 처리할 수 있게 한다. 최적화된 크기의 읽기 요구 큐로, 캐시 시스템(100)은, 화소 데이터가 인출 되는, 외부 메모리(700) 본래의 메모리 읽기 시간지연의 대부분을 감출 수 있다. 이 메모리 읽기 시간지연감춤은 필터 성능에 탁월하게 좋다. 만약 이 시간지연이 적절하게 감추어지지 않는다면, 필터 엔진(500)은 최대한의 출력을 갖지 못할 것이다. 허용 스톨링 양은 설계 매개변수이다. 필요로 하는 출력을 얻기 위하여, 하드웨어 비용과 교환하여, 서로 다른 매개변수를 조절하는 것이 필요하다. The function of the cache system 100 is to use a prefetch logic that allows for a sufficient random access of the dedicated structure and sufficient random access image data and control parameters to the filter engine 500, thereby minimizing stall Allows the ring to process data at a given clock rate. With the read request queue of the optimized size, the cache system 100 can hide most of the memory read time delay inherent in the external memory 700 from which the pixel data is fetched. This memory read time delay is excellent for filter performance. If this time delay is not adequately concealed, the filter engine 500 will not have maximum power. The allowable stalling amount is a design parameter. In order to obtain the required output, it is necessary to adjust different parameters in exchange for hardware costs.

게다가, 캐시시스템(100)은 좌표 변환, 필터 밑넓이 매개변수 및 기하 엔진(300)으로부터 읽기를 위한 제어 경로를 제공한다. 캐시시스템(100)은 한편으로 외부메모리(700)로 부터 화소 데이터가, 다른 한편으로 기하 엔진(300)으로부터 제어 데이터가 필터엔진(500)에 입력될 때 동기화 되게 한다.In addition, the cache system 100 provides coordinate transformations, filter footing parameters, and control paths for reading from the geometry engine 300. The cache system 100 allows the pixel data from the external memory 700 to be synchronized on the one hand and the control data from the geometry engine 300 to the filter engine 500 on the other hand.

본 명세서에서는, 참고 번호 (예, 필터엔진(500))와 구별하기 위하여 수량(예, 64 바이트)을 관례대로 이태리체로 표시하였다.In this specification, the quantity (eg, 64 bytes) is conventionally indicated in Italian to distinguish it from the reference number (eg, the filter engine 500).

도2는 캐시시스템(100)의 상세구조를 도면에 예시한 것이다. 각각의 출력 화소에 대하여 캐시시스템(100)은 기하 엔진(300)으로부터 일정한 제어 매개변수를 받는다. 이 매개변수는 입력화소의 맵 좌표, U 및 V, 및 필터 밑넓이의 형상, 회전 및 크기를 포함한 추가적인 제어 매개변수를 포함한다. 동시에, 캐시시스템(100)은 외부메모리(700)로 부터 필터 밑넓이 내에 포함된 각각의 화소에 대한 화소 데이터를 받는다. 이들 데이터들은 컬러 공간 내에서 컬러 성분의 강도, 즉 RGB 또는 YCrCb, 샘플링 포맷, 즉 4:4:4 또는 4:2:2, 및 혼합 기능 바꿔 말하면 @가 있거나 없는 것을 포함한다. 2 illustrates a detailed structure of the cache system 100 in the drawing. For each output pixel, the cache system 100 receives certain control parameters from the geometry engine 300. This parameter contains additional control parameters including the map coordinates of the input pixel, U and V, and the shape, rotation and size of the filter footprint. At the same time, the cache system 100 receives the pixel data for each pixel included in the filter width from the external memory 700. These data include the intensity of the color component in the color space, i.e. RGB or YCrCb, the sampling format, i.e. 4: 4: 4 or 4: 2: 2, and with or without the blending function, in other words.

캐시시스템(100)의 구조는 입력 영상을 m x n 화소의 블록 크기로 나누는 것과 관련이 있다. 도3에서는 입력 영상 화소 블록 구조의 특별한 예를 나타내고 있는데, 여기에서는 n=8, m=4이다. 입력영상(330)은 일정한 숫자의 화소를 포함하여 , 예를 들어, 1024x1024, 블록으로 그룹되어 있다. 각각의 입력 화소 블록(332)에는 m x n 입력화소(334)가 들어 있다. 서로 다른 필터링 구성에서 블록의 구조는 일반적으로 밑넓이의 형상 및 크기의 함수이다.The structure of the cache system 100 is related to dividing the input image by the block size of m x n pixels. 3 shows a special example of the input video pixel block structure, where n = 8 and m = 4. The input image 330 is grouped into blocks, for example, 1024x1024, including a certain number of pixels. Each input pixel block 332 contains an m x n input pixel 334. In different filtering schemes, the structure of the block is generally a function of the shape and size of the footprint.

캐시시스템(100)은 mxn 입력 화소 블록(332)와 관련 있는 데이터를 인출하고, 필터엔진(500)에 유용한 데이터 블록을 생성한다. 그렇게 함으로서, 시스템은 어떤 블록이 밑넓이 내에 떨어지고, 필터링을 위해서 블록내의 어떤 화소가 반드시 포함되어야 하는지를 결정해야만 한다. 캐시시스템(100)의 구조는 입력 데이터 구조에 맞추기 위해서 크기조정이 가능하다. 일반적으로 캐시시스템(100)의 구조는 필터엔진(500)의 성질 및 작동구조의 함수이다. 영상 프로세싱의 특별한 경우에, 작동의 구조 및 망의형태가 필터 밑넓이에 의해 부분적으로 정의된다.The cache system 100 fetches data related to the mxn input pixel block 332 and generates a data block useful for the filter engine 500. In doing so, the system must determine which blocks fall within the footprint and which pixels within the blocks must be included for filtering. The structure of the cache system 100 can be scaled to fit the input data structure. In general, the structure of the cache system 100 is a function of the nature and operation of the filter engine 500. In the special case of image processing, the structure of the operation and the shape of the network is defined in part by the filter footprint.

도2의 예제 그림에 대해서 살펴보면, 캐시시스템(100)은 얕고 넓지만 낮은 용량의 1차 캐시(110) 및 깊고 높은 용량의 2차 캐시(120), 블록 포함 스테이지(150), 블록 데이터 생성 스테이지(130), 1차 캐시 제어 스테이지(170), 2차 캐시 제어 스테이지(190)을 포함하고 있다. 캐시시스템에는 또한 많은 수의 큐가 있는데, 그것은 본 명세서에서 나중에 설명될 것이다. 화소 데이터는 먼저 외부메모리(700)로 부터 2차 캐시 메모리(120)로 읽혀진다. 그리고 이들 데이터는 필터엔진(500)에 사용되어지도록 블록 생성 스테이지(130)에 의해 재 포맷 되고 압축이 풀리게 될 것이다. 이들 재 포맷된 데이터는 큐로 놓여지고, 필터엔진(500)에 의해 즉시 액세스 할 수 있도록, 적절한 시간에 1차 캐시(110)에 위치하게 된다. 아래에서 데이터 경로와 제어 논리 구조에 대해 각각 설명될 것이다.Referring to the example diagram of FIG. 2, the cache system 100 is a shallow and wide but low capacity primary cache 110 and deep and high capacity secondary cache 120, block containing stage 150, block data generation stage 130, a primary cache control stage 170, and a secondary cache control stage 190. There is also a large number of queues in the cache system, which will be described later herein. The pixel data is first read from the external memory 700 into the secondary cache memory 120. These data will then be reformatted and decompressed by the block generation stage 130 for use in the filter engine 500. These reformatted data are placed in a queue and placed in the primary cache 110 at an appropriate time for immediate access by the filter engine 500. The data path and control logic structure will be described below respectively.

이제 도5의 예제 그림에 대해서 살펴보면, 2차 캐시(120)는 외부 메모리(700)로 부터 처리 안 한 데이터를 읽는 높은 용량의 저장 장치이다. 외부 메모리(700) 내의 화소 데이터는 일정한 포맷으로 저장되는데, 일반적으로 필터엔진(500)내에서 프로세싱하기에 적합하지 않으며, 예를들어, 특별한 경우로서, 데이터는 주사선 순서로 순차적으로 저장된다. 2차 캐시(120)은 최소한의 간섭을 갖도록 이들 데이터를 효율적으로 읽게 설계된다.Referring now to the example diagram of FIG. 5, the secondary cache 120 is a high capacity storage device that reads unprocessed data from the external memory 700. The pixel data in the external memory 700 is stored in a certain format, which is generally not suitable for processing within the filter engine 500, for example, as a special case, the data is stored sequentially in the scan line order. The secondary cache 120 is designed to read these data efficiently with minimal interference.

2차 캐시 내의 각각의 라인은 외부 메모리(700)로 부터 b2 바이트의 데이터를 가득 수용할 수 있게 설계되었다. 이러한 이유로, 2차 캐시(120) 내의 각각의 라인은 외부 메모리(700)의 구조 및 읽기 필수조건에 따른 크기로 만든다. 데이터가 저장되는 2차 캐시(120) 내의 각각의 라인들은 또한 2차 캐시 계산에서 빠지는 것(miss count)을 줄이기 위해 최적화하도록 하는 설계 매개변수이다. 2차 캐시(120)은 필터엔진(500)의 스톨링(stalling)을 최소화 하기 위하여 1차 캐시(110)의 업데이트를 하기에 충분한 읽기 출력물을 허용하도록 줄지어 놓여져 있다. 많은 부근의 화소들이 중앙의 입력화소를 샘플링 하는데 필요로 하기 때문에, 이들 설계 매개변수들은 필터엔진(500)에 의한 화소 프로세싱을 위한 충분한 데이터를 저장하는 데에 결정적인 역활을 한다.Each line in the secondary cache is designed to accommodate a full b2 bytes of data from external memory 700. For this reason, each line in the secondary cache 120 is sized according to the structure and read requirements of the external memory 700. Each line in the secondary cache 120 where the data is stored is also a design parameter that allows for optimization to reduce miss counts in the secondary cache calculation. The secondary cache 120 is lined up to allow sufficient read output to update the primary cache 110 to minimize stalling of the filter engine 500. Because many nearby pixels are needed to sample the central input pixel, these design parameters play a crucial role in storing enough data for pixel processing by the filter engine 500.

따라서 2차 캐시(120)은 외부 메모리(700)로 부터 데이터를 동시에 읽기 위하여 독립적인 액세스 라인을 갖는 일정한 수의 뱅크들을 갖도록 설계되었다. 도5의 예제 그림에서 보여지는 바와 같이, 2차 캐시(120)은 여러개의 뱅크(122)로 이루어져 있고, 각각의 뱅크들은 일정한 수의 라인(124)을 갖고 있다. 각각의 2차 캐시 라인은 외부 메모리(700)로 부터 읽어진 데이터를 포함하고 있다. 이들 데이터 들은 결국 필터엔진(500)에 의해서 읽혀지게 될 것이다. 그렇게 함으로서, 여러개의 2차 캐시 뱅크들은 데이터 출력물의 함수로 설계될 것이다. m x n 입력 블록 구조 및 필요한 클럭 사이클 Nc일때, 데이터를 읽기 위해서는, n/Nc 뱅크들이 2차 캐시(120)에 필요하다. 2차 캐시뱅크들 사이에 데이터를 분산하기 위하여, 특별한 도구로서, 컴퓨터 최소유효비트(LSB) U 및 V의 조합이 사용된다. 이것은 디코딩 논리의 복잡성을 감소시켜서, 면적을 절약하게 하고 업데이트를 보다 빠르게 하여준다. 각각의 뱅크를 2i의 부분으로 나누기 위해서, i LSB가 사용된다. 만약에 2차 캐시 뱅크(122) 별로 2j개의 라인이 있다면, 2 j /2 i 세트조합 2차 캐시 구조가 만들어 진다. 2차 캐시(120)에 대한 적절한 교체 정책에, 캐시논리에 따라 나중에 설명하게 되는, 따르는 이러한 설계는 2차 캐시(120)을 통과하는 데이터를 분배하기 위한 간단하고 효율적인 분할을 이끌어 낸다.Thus, the secondary cache 120 is designed to have a certain number of banks with independent access lines to simultaneously read data from the external memory 700. As shown in the example figure of FIG. 5, the secondary cache 120 consists of several banks 122, each of which has a certain number of lines 124. Each secondary cache line contains data read from external memory 700. These data will eventually be read by the filter engine 500. In so doing, several secondary cache banks will be designed as a function of the data output. With the mxn input block structure and the required clock cycle Nc, n / Nc banks are needed in the secondary cache 120 to read the data. As a special tool, a combination of computer least significant bits (LSB) U and V is used to distribute data between secondary cachebanks. This reduces the complexity of the decoding logic, saving area and making updates faster. To divide each bank into parts of 2i, i LSB is used. If the second line, if this 2j of each cache bank (122), 2 j / 2 i set combination divalent primary cache structure is created. This design, which will be described later in accordance with cache logic, with the appropriate replacement policy for the secondary cache 120, leads to a simple and efficient partitioning for distributing data through the secondary cache 120.

일단 데이터가 외부메모리(700)에서 2차 캐시(120)으로 읽혀지게 되면, 이들 데이터 들은 필터엔진(500)에 사용될 수 있는 포맷으로 변환되어져야 한다. 블록 생성 스테이지(130)은 2차 캐시(120)내의 데이터를 읽고 m x n 입력 화소 블록에 있는 모든 데이터를 포함하고 있는 블록 내에서 이들 데이터 들을 준비한다. 위에서 설명한 바와 같이, 블록생성 스테이지(130)은 매 클록 사이클마다 2차 캐시(120)의 n/Nc라인들로 부터 읽는다. 이렇게 함으로써 각각의 Nc 클록 사이클 내에, 하나의 입력 화소 블록과 관련된 모든 데이터가 동시에 읽혀진다. 데이터의 패킹 포맷과 출력 필수조건에 따라, 입력 화소 블록을 생성하기 위해서 2차 캐시(120)으로부터 복수로 읽는 것을 필요로 한다. 이들 데이터를 읽는데 추가하여, 블록 생성 스테이지(130)은 이들 데이터들을 필터엔진(500)에 바로 사용될 수 있는 포맷으로 재 포맷하고 압축을 풀수 있게 적합하도록 할 것이다. 블록 생성 스테이지(130)은 따라서 원 화소 데이터 포맷을 감추고, 여러가지 압축 형태로 압축 될 수 있다. 이것은 필터엔진(500)이 외부 메모리(700)내의 화소 데이터를 해결하고 필터링에 사용될 블록 내의 본래의 포맷된 데이터의 패킷을 푸는 것을 입증한다. 이들 블록 데이터는 결국 필터엔진(500)에 의해서 읽혀지게 되는 1차 캐시(110)에 저장 된다.Once data is read from the external memory 700 into the secondary cache 120, these data must be converted into a format that can be used by the filter engine 500. The block generation stage 130 reads the data in the secondary cache 120 and prepares these data in a block containing all the data in the m x n input pixel block. As described above, block generation stage 130 reads from the n / Nc lines of secondary cache 120 every clock cycle. By doing this, within each Nc clock cycle, all data associated with one input pixel block is read simultaneously. Depending on the packing format of the data and the output requirements, multiple reads from the secondary cache 120 are required to generate the input pixel block. In addition to reading these data, block generation stage 130 will be adapted to reformat and decompress these data into a format that can be used directly with filter engine 500. The block generation stage 130 thus hides the original pixel data format and can be compressed in various compression forms. This demonstrates that the filter engine 500 solves the pixel data in the external memory 700 and solves the packet of original formatted data in the block to be used for filtering. These block data are stored in the primary cache 110 which is eventually read by the filter engine 500.

도4의 예제 그림에 대해 살펴보면, 1차 캐시(110)은 필터엔진(500)내에서 데이터 액세스율을 최적화 하는 방향으로 설계되어 진다. 그렇게 함으로서, 그것은 복수의 라인이 액세스 할 수 있도록 얕지만 넓은 구조를 가지게 된다. 1차 캐시(110)은 일정한 수의 뱅크로 나누어져 있고, 각각의 1차 캐시 뱅크 112는 필터엔진(500)에 의해 독립적이고 동시적으로 읽혀진다. 1차 캐시 뱅크의 수는 필터링 성능을 최적화 하기위한 실험 데이터 및 시뮬레이션에 따라 결정되어 진다. 각각의 1차 캐시 뱅크 112는 일정한 숫자의 1차 캐시 라인을 포함하고 있다. 각각의 1차 캐시 라인(114)은 전체 m x n의 입력 데이터 블록으로부터 나온 데이터를 포함하고 있다. 그렇게 함으로서, b1의 1차 캐시 뱅크에 대하여, 필터엔진(500)은 알맞은 포맷으로 사이클 당 b1 입력 블록을 포함하는 데이터를 읽는다. 이것은 중대한 것인데, 샘플링의 경우 입력 화소 주위에 많은 입력 블록이 필요로 하고 만약 그것들이 필터엔진(500)에 제공되어 지지않을 경우에는 지연이 발생한다. 스톨링의 양과 주기는 출력 효율을 결정한다.Referring to the example diagram of FIG. 4, the primary cache 110 is designed to optimize the data access rate in the filter engine 500. By doing so, it has a shallow but wide structure that can be accessed by multiple lines. The primary cache 110 is divided into a certain number of banks, and each primary cache bank 112 is read independently and simultaneously by the filter engine 500. The number of primary cache banks is determined by experimental data and simulations to optimize filtering performance. Each primary cache bank 112 contains a certain number of primary cache lines. Each primary cache line 114 contains data from the entire m x n input data block. In so doing, for the primary cache bank of b1, filter engine 500 reads the data containing the b1 input block per cycle in a suitable format. This is significant, in the case of sampling, many input blocks are required around the input pixels and if they are not provided to the filter engine 500, a delay occurs. The amount and period of stalling determines the output efficiency.

서로 다른 1차 캐시 뱅크에 데이터를 분산시키기 위하여, 입력 화소 좌표의 LSB, U 및 V,가 사용된다. 1차 캐시(110)내의 각각의 1차 뱅크 112는 또한 일정한 숫자의 부분으로 나뉘어진다. 위에서 설명한 바와 같이, 일정한 숫자의 LSB가 서로 다른 1차 캐시 뱅크 112중의 데이터 분산에 다시 사용되어진다. 입력 화소 U 및 V 주소의 남아있는 비트 내에서, 그 이상의 LSB가 각각의 1차 캐시뱅크 112내의 데이터를 분산하는데 다시 사용된다. 1차 캐시 뱅크 당 2f 라인들과 g LSB가 각각의 뱅크를 분리하는데 사용되어진데, 이렇게 분리되면 2 f /2 g 의 세트조합 구조가 만들어진다.In order to distribute the data to different primary cache banks, LSB, U and V, of the input pixel coordinates are used. Each primary bank 112 in primary cache 110 is also divided into a certain number of portions. As described above, a certain number of LSBs are used again for data distribution in different primary cache banks 112. Within the remaining bits of the input pixel U and V addresses, more LSBs are again used to distribute the data in each primary cachebank 112. Jinde been used to 2f of the first line and the g LSB separates the respective banks per cache bank, when this separation 2 f / 2 is made a set combination of structure g.

이러한 설계는 최적의 출력을 얻기 위하여 1차 캐시(110)을 위한, 나중에 설명되어지는, 알맞은 교체 정책과 함께 사용되어진다. 입력 데이터의 양이 커질수록 U 및 V 주소 내에서 더욱 많은 비트들이 사용되기 때문에, 이 구조는 간단하고 자연스런 방법으로 크기조정이 가능하다. 필터엔진(500)이 필요로 할 때 사용 가능한 포맷 내에 데이터의 존재를 확보하기 위하여, 선인출 논리 구조가 설계되어진다. 도6은 캐시논리 400을 나타낸다. 이 논리 구조는 2차캐시(120)에 의해 외부 메모리(700)로 부터 데이터 읽기 및 블록 생성 스테이지(130)내에서의 데이터 읽기와 재 포맷, 1차 캐시(110)내에서의 데이터 블록 저장을 제어 한다.This design is used with a suitable replacement policy, described later, for the primary cache 110 to obtain optimal output. As the amount of input data increases, more bits are used in the U and V addresses, so this structure can be scaled in a simple and natural way. In order to ensure the presence of data in a format usable when the filter engine 500 requires, a prefetch logic structure is designed. 6 illustrates cache logic 400. This logical structure allows the secondary cache 120 to read data from the external memory 700 and read and reformat the data in the block generation stage 130 and to store the data blocks in the primary cache 110. To control.

단계 402에서, 데이터의 어떤 블록이, 기하 엔진(300)으로부터 받은 제어 매개변수에 기반하여, 샘플링에 필요한지 결정되어진다. 일단 데이터가 확인되면, 단계 410에서 이들 데이터가 1차 캐시내에 존재하는지 결정되어진다. 만약에 존재하면, 엔트리가 단계 412에서 1차 제어 큐로 쓰여지고 단계 414에서 이들 데이터의 주소가 필터엔진으로 보내진다. 만약에 데이터가 1차 캐시 내에 존재하지 않는다면, 단계 415에서, 나중에 설명할 교체정책에 맞추어서, 교체될 1차 캐시 라인이 결정된다. 그 후 이 1차 캐시 라인의 주소가 단계 416에서 1차 제어 큐에 쓰여지고 단계 418에서 필터엔진으로 보내진다. 그후 이들 데이터들이 단계 420에서 2차 캐시에 존재하는지 여부를 판단할 것이다. 만약에 데이터가 거기에도 없다면, 단계 422에서 어떤 캐시라인을 교체할지 판단되어질 것이다. 그 후 읽기 요구가 외부 메모리로 보내어져서 단계 426에서 2차 캐시로 추후에 읽혀질 데이터를 인출하게 될 것이다. 만약에 데이터가 2차 캐시에 존재한다면, 엔트리가 단계 428에서 2차 캐시 제어 큐로 쓰여질 것이다.In step 402, it is determined which block of data is needed for sampling, based on the control parameters received from the geometry engine 300. Once the data is verified, it is determined at step 410 whether these data exist in the primary cache. If present, an entry is written to the primary control queue at step 412 and the addresses of these data are sent to the filter engine at step 414. If the data is not in the primary cache, then at step 415, the primary cache line to be replaced is determined in accordance with the replacement policy described later. The address of this primary cache line is then written to the primary control queue in step 416 and sent to the filter engine in step 418. It will then be determined whether these data exist in the secondary cache at step 420. If the data is not there, it will be determined in step 422 which cache line to replace. A read request will then be sent to external memory to fetch the data to be read later into the secondary cache at step 426. If the data is in the secondary cache, the entry will be written to the secondary cache control queue at step 428.

외부 메모리로 부터 데이터가 인출된 후 2차 캐시가 적중하거나, 또는 2차 캐시가 부적중하는, 두가지 경우 모두, 2차 캐시 데이터가 단계 440에서 블록 생성을 위하여 읽혀진다. 여기에서 데이터는 복수의 2차 캐시 뱅크에서 읽혀지고 단계 442에서 재포맷 되고 압축이 풀린다. 이 스테이지에서, 단계 450에서, 알맞은 포맷의 입력 데이터 블록이 1차 캐시내로 저장될 큐로 보내지게 된다.In both cases, secondary cache data is read after the data is fetched from external memory, or secondary cache is missed, in step 440 to read the block for block generation. Here data is read from the plurality of secondary cache banks, reformatted and decompressed in step 442. At this stage, in step 450, an input data block of the appropriate format is sent to the queue to be stored in the primary cache.

1차 캐시(110)의 업데이트는 관련된 제어 데이터가 1차 제어 큐 212와 화소 제어 큐(218)로 부터 읽혀질 때 발생한다. 이것은 캐시 일관성이 1차 캐시(100)내부에서 유지될 수 있도록 하여 준다. 이때 제어 매개변수의 일관성을 유지하면서 1차 캐시로 읽혀지는 데이터는 단계 510에서 필터엔진에 입력되어진다.The update of the primary cache 110 occurs when associated control data is read from the primary control queue 212 and the pixel control queue 218. This allows cache coherency to be maintained within primary cache 100. At this time, the data read into the primary cache while maintaining control parameter consistency is input to the filter engine in step 510.

도2로 다시 돌아가서, 캐시 제어 논리 400에 하드웨어 장치에 대해서 설명하겠다. 블록 포함(inclusion) 스테이지(150)은 제어 논리의 시작점이다. 이 장치는 각각의 출력 화소에 대하여, 기하 엔진(300)으로부터 입력 화소의 매핑 좌표 및 필터 밑넓이의 형상이 포함 되어있는 제어 매개변수를 받아들인다. 입력 좌표, U 및 V, 및 밑넓이 형상, 기타 제어 매개변수를 기초로 하여, 블록 포함 논리는 어떠한 입력블록이 각각의 출력 화소 프로세싱을 위하여 필요하고 블록내의 어떠한 화소가 샘플링에 필요한지 결정한다.2, a hardware device will be described in the cache control logic 400. The block inclusion stage 150 is the starting point of the control logic. The device accepts, for each output pixel, a control parameter from the geometry engine 300 containing the mapping coordinates of the input pixel and the shape of the filter footprint. Based on input coordinates, U and V, and footprint geometry, and other control parameters, block inclusion logic determines which input blocks are needed for each output pixel processing and which pixels in the block are required for sampling.

블록 포함 스테이지(150)은, 본 발명의 한 예에서, 샘플링을 위하여 필요한 화소의 블록을 포함하기 위하여 밑넓이의 형상을 포함한 주변 블록의 좌표 위치를 비교한다. 블록 포함 논리는 각각의 블록주소 내의 최소한 최하위의 비트인 1개의 U값 또는 V값이 다른 각각의 블록과 함께 클럭 사이클 마다 k 블록을 생성한다. 이것은 LSB의 k 조합이 블록 포함 논리에 의해 각각의 블록 세트내에 존재하게 되는 것을 보장한다. 이러한 제약이 1차 캐시 뱅크사이에 블록을 분배 하는데 사용되어진다. 매 클럭 사이클, k, 마다 생성되는 블록의 수는 밑넓이 크기의 함수이고 블록의 위상은 밑넓이 형상의 함수이다. 이들 매개변수 들은 주의깊은 시뮬레이션 및 실험으로 필터엔진(500)내의 데이터 프로세싱과 관련된 캐시시스템의 설계에 고려되어져야 한다. 블록 포함 스테이지(150)에 의해 생성된, 화소 제어 큐(218)은 실제 화소 데이터보다 앞서 크기조정 매개변수를 생성하기 위한 필터엔진(500)을 허용하기에 전에 필터엔진(500)으로 보내어 진다.The block containing stage 150 compares the coordinate positions of the neighboring blocks, including the shape of the base, to include the block of pixels required for sampling in one example of the invention. Block inclusion logic generates k blocks per clock cycle with each block having one U or V value that is at least the least significant bit in each block address. This ensures that the k combination of LSBs will be present in each block set by block inclusion logic. This constraint is used to distribute blocks between primary cache banks. The number of blocks generated every clock cycle, k, is a function of the size of the floor, and the phase of the block is a function of the shape of the floor. These parameters should be considered in the design of the cache system related to the data processing in the filter engine 500 with careful simulation and experimentation. The pixel control queue 218, generated by the block inclusion stage 150, is sent to the filter engine 500 before allowing the filter engine 500 to generate the scaling parameters ahead of the actual pixel data.

1차 캐시 제어 스테이지(170)은 1차 캐시(110)내의 데이터 처리를 위한 제어 논리를 제공한다. 블록 포함 스테이지(150)에 의해 결정된 각각의 입력 블록에 대하여, 1차 캐시 제어(170)은 블록이 1차 캐시(110)내에 존재하는지 여부를 점검한다. 만약에 데이터가 존재한다면, 이것은 캐시 적중라고 불리어진다. 존재하지 않는다면 캐시 부적중이 기록되고 부적중플래그가 2차 캐시 제어(190)으로 보내지게 된다. 1차 캐시 제어 스테이지(170)은 1차 제어 큐 212에 엔트리를 쓰는데, 이 큐는 1차 캐시 적중 또는 부적중이 있었는지를 알려줄 뿐만 아니라 1차 캐시(110)내의 데이터의 주소를 가르킨다. 1차 제어 큐(212)는 FIFO를 기반으로 하여 필터엔진(500)에 의해 읽혀진다. 만약에 캐시 부적중 플래그가 엔트리들 중 하나에서 올라가면, 필터엔진(500)은 1차 캐시(110)을 업데이트할 블록 큐(214)에 읽기 요구를 보낸다.The primary cache control stage 170 provides control logic for processing data in the primary cache 110. For each input block determined by the block inclusion stage 150, the primary cache control 170 checks whether the block exists in the primary cache 110. If data exists, it is called a cache hit. If not present, a cache miss is recorded and a miss flag is sent to secondary cache control 190. The primary cache control stage 170 writes an entry to the primary control queue 212 that not only indicates whether there was a primary cache hit or miss, but also points to the address of the data in the primary cache 110. The primary control queue 212 is read by the filter engine 500 based on the FIFO. If the cache miss flag is raised in one of the entries, the filter engine 500 sends a read request to the block queue 214 to update the primary cache 110.

1차 캐시 부적중의 경우, 데이터 블록이 1차 캐시(110)내에 존재 하지 않을 때 발생하고, U 또는 V 주소가 검사된 모든 블록에서 일치하지 않거나, 관련된 유효한 비트가 설정되지 않았을 때, 이러한 일이 1차 캐시 부적중라고 불리운다. 2차 캐시 제어 스테이지(190)내의 제어 논리는, 1차 캐시 부적중 플래그를 접수한 상태에서, 1차 캐시로 쓰여질 m x n 블록을 생성할 단계를 결정한다. 2차 캐시 제어 스테이지(190)은 먼저 데이터가 2차 캐시(120)내에 있는지 여부를 결정할 것이다. 이것은 2차 캐시 적중 또는 2차 캐시 부적중을 산출할 것이다. 만약에 2차 캐시 부적중이 발생하면, 2차 캐시 제어(190)은 외부 메모리(700)로 부터 2차 캐시(120)으로 읽어버린 데이터를 인출하기 위하여, 외부 메모리(700)에 읽기 요구를 하고 2차 제어 큐(216)에 엔트리를 기록한다. 만약 2차 캐시 적중이 발생하면, 2차 캐시 제어 스테이지(190)은 읽기 요구를 보내지 않고 단지 2차 제어 큐(216)에 엔트리를 쓰는데, 이 엔트리는 FIFO를 기반으로 하여 블록 생성 스테이지(130)에 의해서 읽혀질 것이다.In the case of primary cache mismatch, this happens when a data block does not exist in the primary cache 110, and this happens when the U or V address does not match in all the blocks examined, or the associated valid bits are not set. This primary cache miss is called. The control logic in the secondary cache control stage 190 determines the stage in which to generate an m x n block to be written to the primary cache, with the primary cache miss flag received. The secondary cache control stage 190 will first determine whether the data is in the secondary cache 120. This will yield a secondary cache hit or a secondary cache miss. If a secondary cache miss occurs, the secondary cache control 190 issues a read request to the external memory 700 to fetch the data read from the external memory 700 to the secondary cache 120. And write an entry to the secondary control queue 216. If a secondary cache hit occurs, the secondary cache control stage 190 only writes an entry to the secondary control queue 216 without sending a read request, which entry is based on the FIFO and the block generation stage 130. Will be read by

각각의 큐 엔트리를 받은 후에, 블록 생성 스테이지(130)은 2차 캐시(120)로 부터 전체 입력 블록과 관련한 가공되지 않은 데이터를 읽는다. 이들 데이터들은 그 후 블록 생성 스테이지(130)에서 재 포맷되어 필터엔진(500)에 의해 곧 사용되어질 수 있도록 포맷 될 것이다. 데이터 패킹 모드에 따라, 복수의 2차 캐시 라인들은 아마도 1차 캐시 라인(114)를 생성하는 것을 필요로 할 것이다. 하나의 입력 블록과 관련한 모든 데이터를 얻고 이들 데이터를 재 포맷한 후, 블록 생성 스테이지(130)은 블록 큐(214)로 엔트리를 기록한다. 따라서 각각의 블록 큐 엔트리는 알맞은 포맷으로 전체 입력 블록으로부터 온 모든 데이터를 포함하고 있다. 블록 큐 엔트리들은 그 후 1차 캐시(110)에서 접수되기 시작하는데, 그곳에서 필터엔진(500)에 의해 곧 액세스할 수 있도록 저장된다. 따라서, 블록 큐(214)는 필터엔진(500)에 앞서서 실행될 수 있도록 2차 캐시(120)를 허용한다.After receiving each cue entry, block generation stage 130 reads raw data associated with the entire input block from secondary cache 120. These data will then be reformatted in the block generation stage 130 and formatted for use by the filter engine 500 soon. Depending on the data packing mode, the plurality of secondary cache lines will probably need to create the primary cache line 114. After obtaining all the data related to one input block and reformatting these data, block generation stage 130 writes an entry to block queue 214. Thus, each block queue entry contains all the data from the entire input block in the proper format. Block queue entries then begin to be received in the primary cache 110 where they are stored for immediate access by the filter engine 500. Thus, block queue 214 allows secondary cache 120 to run prior to filter engine 500.

캐시시스템(100)의 기능은 제공된 선인출 논리에 추가하여 화소 데이터의 동일성 및 제어 매개변수에 기반한다는 것에 주목하여야 한다. 2차 캐시 제어 스테이지(190)으로부터 요청이 없는 한 2차 캐시(120)에 의해 어떤 데이터도 읽혀지지 않는다. 일단 그러한 데이터가 2차 캐시내에 있다면, 2차 제어 큐(216)내의 엔트리만이 이들 데이터가 블록 생성 스테이지(130)내의 블록 생성에 필요한지 여부를 결정할 수 있다. 일단 데이터 블록이 생성되면, 필터엔진(500)으로부터의 읽기 요청에 의해서만 그것들은 큐에 놓여져서 1차 캐시(110)에 저장되는데, 이 필터엔진은 1차 제어 큐 212내의 엔트리에 의해 자체적으로 유발되어 진다. 더우기, 필터 엔진은 데이터를 처리하기 전에 2개의 독립적인 큐로 부터 제어 매개변수 뿐만 아니라 양 화소 데이터 도착을 기다린다.It should be noted that the functionality of the cache system 100 is based on the identity and control parameters of the pixel data in addition to the prefetch logic provided. No data is read by the secondary cache 120 unless there is a request from the secondary cache control stage 190. Once such data is in the secondary cache, only entries in the secondary control queue 216 can determine whether these data are required for block generation in block generation stage 130. Once the data blocks are created, they are queued and stored in the primary cache 110 only by a read request from the filter engine 500, which is triggered by an entry in the primary control queue 212 itself. It is done. Moreover, the filter engine waits for the arrival of both pixel data as well as control parameters from two independent queues before processing the data.

필터 밑넓이의 상대적 크기 및 캐시 저장 공간에 따라, 밑넓이를 분리하여 하위 밑넓이 부분으로 나누고 각각의 하위 밑넓이를 순차적으로 데이터 처리하는 것이 필요로 할지도 모른다. 이 크기는 동적인 크기의 밑넓이에 대한 캐시시스템(100)의 설계에 따라 예측된다. 일단 각각의 하위 밑넓이와 관련한 데이터가 캐시되면, 필터엔진은 이들 데이터를 순차적으로 처리한다.Depending on the relative size of the filter footprint and the cache storage space, it may be necessary to divide the footprint into subsections and process each subsection sequentially. This size is predicted according to the design of the cache system 100 for dynamic size footprints. Once the data associated with each lower footprint is cached, the filter engine processes these data sequentially.

메모리 읽기 시간지연을 감추기 위하여 캐시 시스템(100)을 사용한 데이터 선인출의 효과를 평가하기 위하여, 본 발명의 한 예에서, 읽기 시간지연이 128 클럭 사이클의 순서대로 였다는 것을 밴치마크 하였다. 충분히 커다란 큐를 공급함으로 써, 거의 모든 시간지연이 감추어졌다. 본 발명에서 큐의 크기는 시스템 내에서 보여지는 메모리 읽기 시간지연에 맞추어서 조정될 수 있고, 그렇게 함으로서, 그것들은 시스템 사양에 근거하여 설계 매개변수를 조정 할 수 있다.To evaluate the effect of data prefetching using the cache system 100 to hide the memory read time delay, it was benchmarked in one example of the invention that the read time delays were in the order of 128 clock cycles. By supplying a sufficiently large cue, almost all time delays are hidden. In the present invention, the size of the queues can be adjusted to match the memory read time delay seen in the system, so that they can adjust the design parameters based on system specifications.

일단 캐시 논리 구조가 일정한 데이터 블록이 2차 캐시(120)에 의해서 읽혀져야 하거나 1차 캐시(110)내에 저장되도록 준비되어야 한다고 결정한다면, 교체 정책이 필요하게 된다. 하나의 기존 1차 캐시 라인(114) 또는 복수의 2차 캐시라인(124)이 교체될 필요가 있다. 본 발명의 예제에서, 캐시 교체 정책은 거리를 기준으로 한다. 입력 블록 주소 U 및 V 에 따라, 1차 캐시 제어 스테이지(170) 및 2차 캐시 제어 스테이지(190)은 캐시라인 내의 중앙 입력 화소 U 및 V 좌표를 기존 블록의 좌표 값과 비교한다. 그리고 중앙 입력 화소에서 가장 멀리 떨어진 엔트리가 교체된다. 이러한 정책은 중앙화소와 거리가 가까울수록, 샘플링 계산에 필요로 할 확율이 높아진다는 사실에서 유래 되었다.Once the cache logical structure determines that certain data blocks should be read by the secondary cache 120 or prepared to be stored in the primary cache 110, a replacement policy is needed. One existing primary cache line 114 or a plurality of secondary cache lines 124 need to be replaced. In the example of the present invention, the cache replacement policy is based on distance. According to the input block addresses U and V, the primary cache control stage 170 and the secondary cache control stage 190 compare the central input pixel U and V coordinates in the cache line with the coordinate values of the existing block. The entry farthest from the center input pixel is replaced. This policy stems from the fact that the closer the central pixel is, the higher the probability that sampling calculations will require.

본 발명의 또 다른 예제에서, 캐시 교체 정책은 최소-최근-사용(LRU)에 기반한다. 본 예제의 마지막에서, 1차 캐시 제어 스테이지(170) 및 2차 캐시 제어 스테이지(190)은 최소의 최근 사용한 캐시라인을 교체하는 것을 선택한다.In another example of the present invention, the cache replacement policy is based on least recently used (LRU). At the end of this example, the primary cache control stage 170 and the secondary cache control stage 190 choose to replace the least recently used cache line.

캐시시스템(100)의 설계는 이 시스템이 크기조정이 가능하다는 것을 확실히 하기 위하여 소수의 치수만 갖고 있다. 2차 캐시 라인의 크기는 외부 메모리(700) 및 블록 생성율로 부터 메모리 읽기 크기, 즉 버스트 사이즈,에 따라 크기조정이 가능하다. 2차 캐시 라인의 수는 필요로 하는 캐시 효율에 따라 크기조정이 가능하다. 2차 캐시 뱅크의 수는 필요로 하는 입력 블록 데이터 구조 및 2차 캐시에서 나가는 액세스에 따른 클럭 사이클의 수에 따라 크기조정이 가능하다. 2차 캐시(120)의 크기조정은 필요 크기 및 캐시 시스템 효율, 즉, 다시 읽어야할 입력 디지털 데이터의 양을 기초로 한다.The design of the cache system 100 has only a few dimensions to ensure that the system is resizable. The size of the secondary cache line can be adjusted according to the memory read size, that is, burst size, from the external memory 700 and the block generation rate. The number of secondary cache lines can be scaled according to the cache efficiency required. The number of secondary cache banks can be scaled according to the required input block data structure and the number of clock cycles due to accesses leaving the secondary cache. Sizing of the secondary cache 120 is based on the required size and cache system efficiency, i.e., the amount of input digital data to be read back.

블록 포함 스테이지(150)에서 클럭 사이클당 생성되는 블록의 수는 필터링 알고리듬 및 밑넓이 크기 및 필요로 하는 출력물에 따라 크기조정이 가능하다. 1차 캐시(110) 및 2차 캐시(120)의 분할은, 입력화소 LSB인 U 및 V에 기초하여, 캐시의 크기에 맞출수 있다. 이것은 특별한 분할을 위해 사용된 비트의 수로 이행된다. 1차 캐시 라인의 크기는 입력 블록 크기를 기초로 크기조정이 가능하다. 1차 캐시 뱅크의 수는 필터링 출력물을 기초로 크기조정이 가능하다. 서로 다른 큐의 크기는 또한 메모리 시간지연 대 필요로 하는 출력물을 기초로 한 매개변수를 기초로 크기조정이 가능하다. 이들 크기들은 시뮬레이션 및 실험을 근거로 결정된다.The number of blocks generated per clock cycle in the block inclusion stage 150 may be scaled according to the filtering algorithm, the size of the width, and the output required. The partitioning of the primary cache 110 and the secondary cache 120 can be adapted to the size of the cache based on U and V, which are input pixels LSB. This translates to the number of bits used for the particular division. The size of the primary cache line can be scaled based on the input block size. The number of primary cache banks can be scaled based on the filtering output. Different queue sizes can also be scaled based on parameters based on the output needed versus memory time delay. These sizes are determined based on simulations and experiments.

모든 이들 설계 매개변수들은 가격 대 성능비를 반드시 주의 깊게 고려하여야 한다. 따라서 주의 깊은 시뮬레이션 및 실험이 본 발명의 특별한 장치에 대해서 항상 사용할 수 있는 특별한 경우에 캐시 솔루션을 최적화하기 위하여 이루어졌다.All these design parameters must carefully consider the price-to-performance ratio. Therefore, careful simulation and experimentation have been done to optimize the cache solution in the special case that is always available for the particular device of the present invention.

발명의 일정한 특징이 이글에서 도해되고 설명되어지면서, 많은 변경 및 대체, 변화 등이 이 분야의 본래의 기술에 대한 사항들에 대해서 일어났다. 따라서 첨부된 요청들은 발명의 진정한 정신에 따라 모든 그러한 변경 및 변화들을 포함 하려는 의도라는 것을 이해하여야 한다.While certain features of the invention have been illustrated and described in this article, numerous modifications, substitutions, changes, etc. have occurred in light of the original art in the art. It is, therefore, to be understood that the appended claims are intended to embrace all such changes and changes in accordance with the true spirit of the invention.

Claims (34)

데이터 처리, 구체적으로 동시 좌표변환에 의한 2차원 영상 처리에서의 캐시구조 및 관리에 대한 방법에 있어서 :In the data processing, specifically the method for the cache structure and management in the two-dimensional image processing by the coordinate coordinate conversion: a) 액세스하여 처리할 데이터가 저장될 외부메모리;a) an external memory in which data to be accessed and processed is stored; b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및b) a plurality of processor units PU1 for generating control commands and generating memory addresses and control variables of data to be processed in the external memory; And c) 데이터를 처리할 다수의 프로세서 유니트(PU2);로 이루어지는 장치내에서,c) in the apparatus consisting of a plurality of processor units (PU2) to process data; (i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);(i) a deep secondary cache memory (SCM) having a plurality of banks having a plurality of storage lines for reading data from the external memory and having a large storage capacity; (ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및(ii) a fast and wide primary cache memory (PCM) having a plurality of banks having several storage lines for reading data by the PU2, and having low storage capacity; And (iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하는 캐시시스템을 이용하여, (iii) using a cache system that provides control of prefetching and cache, and includes control logic including control stages and control queues, 상기 PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 상기 외부메모리에서 데이터에 액세스하고, 상기 PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하고, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추는 것을 특징으로 하는 방법.Upon receiving the address sequence and control parameters from the PU1, access the data from the external memory, prepare the data for fast access and processing by the PU2, and follow the steps below to achieve cache coherency and read memory. Hiding the delay. (a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;(a) identifying a data block to be processed in an external memory based on the form and structure of the processing operation network of the PU2; (b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;(b) create a sufficiently large SCM control queue based on the results of (a) and determine whether the data is in the PCM, so that the SCM can access data in external memory much faster than it is processed by PU2. Doing; (c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계; (c) Simultaneously reading input data blocks from a plurality of banks of the SCM at a predetermined number of clock cycles, extracting and reformatting the external memory data from the cache data organization, extracting this data, and hiding the external data organization from the PU2. Increasing the data processing rate in PU2; (d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및 (d) generating PCM control queues large enough to store the extracted data in the PCM before the data needed by the PU2 based on the results of (a) and (b); And (e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계. (e) synchronizing the arrival of data and control parameters in the PU2 to maintain cache coherency. 제 1항에 있어서, 입력 블록 데이터 구조 및 상기 외부 메모리의 읽기 포맷을 기초로 한 SCM 뱅크의 수, SCM 뱅크당 라인 수 및 SCM 라인 크기를 포함하는 상기 SCM 구조 및 필요한 작업량을 최적화하는 단계를 더 포함하는 것을 특징으로 하는 방법.2. The method of claim 1, further comprising optimizing the SCM structure and the required workload, including the number of SCM banks, the number of lines per SCM bank, and the SCM line size based on an input block data structure and a read format of the external memory. Method comprising a. 제 2항에 있어서, 출력 데이터 구조 및 포맷을 기초로 한 PCM 뱅크의 수, PCM 뱅크당 라인 수 및 PCM 라인 크기를 포함하는 상기 PCM 구조 및 필요한 작업량을 최적화하는 단계를 더 포함하는 것을 특징으로 하는 방법.3. The method of claim 2, further comprising optimizing the PCM structure and the amount of work required, including the number of PCM banks, the number of lines per PCM bank, and the PCM line size based on an output data structure and format. Way. 제 3항에 있어서, 캐시 시스템에 대한 매핑이 주소 시퀀스를 기초로 한 직접 매핑인 것을 특징으로 하는 방법. 4. The method of claim 3, wherein the mapping to the cache system is a direct mapping based on an address sequence. 제 3항에 있어서, 캐시시스템에 대한 매핑이 아래 2 단계로 이루어지는 것을 특징으로 하는 방법. 4. The method of claim 3, wherein the mapping to the cache system consists of two steps below. (a) 주소 시퀀스를 기초로 한 직접 매핑; 및(a) direct mapping based on address sequences; And (b) 처리중인 데이터 블록에서 가장 먼 입력블록과 관련된 데이터를 교체하는 거리 기반 교체 정책.(b) Distance-based replacement policy for replacing data associated with the input block furthest from the data block being processed. 제 3항에 있어서, 캐시시스템에 대한 매핑이 아래 2 단계로 이루어지는 것을 특징으로 하는 방법. 4. The method of claim 3, wherein the mapping to the cache system consists of two steps below. (a) 주소 시퀀스를 기초로 한 직접 매핑; 및(a) direct mapping based on address sequences; And (b) 가장 최근에 사용한 입력블록과 관련된 데이터를 교체하는 최근사용 기반 교체정책.(b) Recently used replacement policy that replaces data related to the most recently used input block. 제 3항에 있어서, 액세스할 데이터량을 기초로 상기 PCM 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the PCM size based on the amount of data to access. 제 3항에 있어서, 액세스할 데이터량을 기초로 상기 SCM 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the SCM size based on the amount of data to access. 제 3항에 있어서, 캐시 업데이트의 빈도를 기초로 상기 PCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the PCM line size based on the frequency of cache updates. 제 3항에 있어서, 다시 읽기 요소를 기초로 상기 SCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the SCM line size based on read back elements. 제 3항에 있어서, 입력 데이터 블록을 하위 블록으로 나누고 PU2에서의 처리를 위해 각각의 하위 블록으로부터 데이터를 순차적으로 캐시하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising dividing the input data block into sub-blocks and sequentially caching data from each sub-block for processing at PU2. 제 3항에 있어서, 작업량을 최적화 하기 위하여 제어 큐와 데이터 큐의 깊이를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting depths of control queues and data queues to optimize workload. 제 3항에 있어서, 상기 PU2의 필요 작업량을 기반으로 상기 PCM 출력 폭 및 뱅크의 수를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the PCM output width and the number of banks based on the required workload of the PU2. 제 3항에 있어서, 입력 데이터블록 크기를 기반으로 상기 PCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the PCM line size based on an input datablock size. 제 3항에 있어서, 상기 외부 메모리 버스트(burst) 크기를 기반으로 SCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting an SCM line size based on the external memory burst size. 제 3항에 있어서, 필요한 PCM 업데이트 속도를 기반으로 상기 SCM 뱅크의 수를 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising adjusting the number of SCM banks based on the required PCM update rate. 제 3항에 있어서, 입력 데이터 블록의 메모리 주소의 최소유효비트를 기반으로 상기 PCM과 SCM내의 데이터를 분산시키는 단계를 더 포함하는 것을 특징으로 하는 방법.4. The method of claim 3, further comprising distributing data in the PCM and SCM based on the least significant bit of a memory address of an input data block. 데이터 처리, 구체적으로 동시 좌표변환으로 2차원 영상을 처리하는 캐시시스템에 있어서 :In a cache system that processes two-dimensional images by data processing, specifically co-ordinate transformations: a) 액세스하여 처리할 데이터가 저장될 외부메모리;a) an external memory in which data to be accessed and processed is stored; b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및b) a plurality of processor units PU1 for generating control commands and generating memory addresses and control variables of data to be processed in the external memory; And c) 데이터를 처리할 다수의 프로세서 유니트(PU2);로 이루어지는 장치내에서,c) in the apparatus consisting of a plurality of processor units (PU2) to process data; (i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);(i) a deep secondary cache memory (SCM) having a plurality of banks having a plurality of storage lines for reading data from the external memory and having a large storage capacity; (ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및(ii) a fast and wide primary cache memory (PCM) having a plurality of banks having several storage lines for reading data by the PU2, and having low storage capacity; And (iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하는 캐시시스템을 이용하여, (iii) using a cache system that provides control of prefetching and cache, and includes control logic including control stages and control queues, 상기 PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 상기 외부메모리에서 데이터에 액세스하고, 상기 PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하고, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추는 것을 특징으로 하는 캐시시스템.Upon receiving the address sequence and control parameters from the PU1, access the data from the external memory, prepare the data for fast access and processing by the PU2, and follow the steps below to achieve cache coherency and read memory. Cache system, characterized in that to hide the delay. (a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;(a) identifying a data block to be processed in an external memory based on the form and structure of the processing operation network of the PU2; (b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;(b) create a sufficiently large SCM control queue based on the results of (a) and determine whether the data is in the PCM, so that the SCM can access data in external memory much faster than it is processed by PU2. Doing; (c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계; (c) Simultaneously reading input data blocks from a plurality of banks of the SCM at a predetermined number of clock cycles, extracting and reformatting the external memory data from the cache data organization, extracting this data, and hiding the external data organization from the PU2. Increasing the data processing rate in PU2; (d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및 (d) generating PCM control queues large enough to store the extracted data in the PCM before the data needed by the PU2 based on the results of (a) and (b); And (e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계. (e) synchronizing the arrival of data and control parameters in the PU2 to maintain cache coherency. 제 18항에 있어서, 입력 블록 데이터 구조 및 상기 외부 메모리의 읽기 포맷을 기초로 한 SCM 뱅크의 수, SCM 뱅크당 라인 수 및 SCM 라인 크기를 포함하는 상기 SCM 구조 및 필요한 작업량을 최적화하기에 적합한 것을 특징으로 하는 시스템.19. The method of claim 18, wherein the SCM structure comprises a number of SCM banks, lines per SCM bank, and SCM line size based on an input block data structure and a read format of the external memory, and is suitable for optimizing the required workload. System characterized. 제 19항에 있어서, 출력 데이터 구조 및 포맷을 기초로 한 PCM 뱅크의 수, PCM 뱅크당 라인 수 및 PCM 라인 크기를 포함하는 상기 PCM 구조 및 필요한 작업량을 최적화하기에 적합한 것을 특징으로 하는 시스템.20. The system of claim 19, wherein the system is suitable for optimizing the PCM structure and required workload, including the number of PCM banks, the number of lines per PCM bank, and the PCM line size based on output data structure and format. 제 20항에 있어서, 캐시 시스템에 대한 매핑이 주소 시퀀스를 기초로 한 직접 매핑인 것을 특징으로 하는 시스템.21. The system of claim 20, wherein the mapping to the cache system is a direct mapping based on an address sequence. 제 20항에 있어서, 캐시시스템에 대한 매핑이 아래 2 단계로 이루어지는 것을 특징으로 하는 시스템. 21. The system of claim 20, wherein the mapping to the cache system consists of two steps below. (a) 주소 시퀀스를 기초로 한 직접 매핑; 및(a) direct mapping based on address sequences; And (b) 처리중인 데이터 블록에서 가장 먼 입력블록과 관련된 데이터를 교체하는 거리 기반 교체 정책.(b) Distance-based replacement policy for replacing data associated with the input block furthest from the data block being processed. 제 20항에 있어서, 캐시시스템에 대한 매핑이 아래 2 단계로 이루어지는 것을 특징으로 하는 시스템. 21. The system of claim 20, wherein the mapping to the cache system consists of two steps below. (a) 주소 시퀀스를 기초로 한 직접 매핑; 및(a) direct mapping based on address sequences; And (b) 가장 최근에 사용한 입력블록과 관련된 데이터를 교체하는 최근사용 기반 교체정책.(b) Recently used replacement policy that replaces data related to the most recently used input block. 제 20항에 있어서, 액세스할 데이터량을 기초로 상기 PCM 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the PCM size based on the amount of data to access. 제 20항에 있어서, 액세스할 데이터량을 기초로 상기 SCM 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the SCM size based on the amount of data to access. 제 20항에 있어서, 캐시 업데이트의 빈도를 기초로 상기 PCM 라인 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the PCM line size based on the frequency of cache updates. 제 20항에 있어서, 다시 읽기 요소를 기초로 상기 SCM 라인 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the SCM line size based on read back elements. 제 20항에 있어서, 입력 데이터 블록을 하위 블록으로 나누고 PU2에서의 처리를 위해 각각의 하위 블록으로부터 데이터를 순차적으로 캐시하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to divide the input data block into sub-blocks and to sequentially cache data from each sub-block for processing at PU2. 제 20항에 있어서, 작업량을 최적화하기 위해 제어 큐와 데이터 큐의 깊이를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the depth of the control queue and the data queue to optimize workload. 제 20항에 있어서, 상기 PU2의 필요 작업량을 기반으로 상기 PCM 출력 폭 및 뱅크의 수를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the PCM output width and the number of banks based on the required workload of the PU2. 제 20항에 있어서, 입력 데이터블록 크기를 기반으로 상기 PCM 라인 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the PCM line size based on an input datablock size. 제 20항에 있어서, 상기 외부 메모리 버스트(burst) 크기를 기반으로 SCM 라인 크기를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust SCM line size based on the external memory burst size. 제 20항에 있어서, 필요한 PCM 업데이트 속도를 기반으로 상기 SCM 뱅크의 수를 조정하기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to adjust the number of SCM banks based on a required PCM update rate. 제 20항에 있어서, 입력 데이터 블록의 메모리 주소의 최소유효비트를 기반으로 상기 PCM과 SCM내의 데이터를 분산시키기에 적합한 것을 특징으로 하는 시스템.21. The system of claim 20, adapted to distribute data in the PCM and SCM based on the least significant bit of the memory address of an input data block.
KR1020067023350A 2004-07-14 2004-07-14 Cache memory managemnet system and methods KR101158949B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2004/022878 WO2006019374A1 (en) 2004-07-14 2004-07-14 Cache memory management system and method

Publications (2)

Publication Number Publication Date
KR20070038955A true KR20070038955A (en) 2007-04-11
KR101158949B1 KR101158949B1 (en) 2012-07-06

Family

ID=35907684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067023350A KR101158949B1 (en) 2004-07-14 2004-07-14 Cache memory managemnet system and methods

Country Status (5)

Country Link
EP (1) EP1769360A4 (en)
JP (1) JP5071977B2 (en)
KR (1) KR101158949B1 (en)
CN (1) CN100533403C (en)
WO (1) WO2006019374A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806164B2 (en) * 2011-03-04 2014-08-12 Micron Technology, Inc. Apparatus, electronic devices and methods associated with an operative transition from a first interface to a second interface
US9001138B2 (en) * 2011-08-29 2015-04-07 Intel Corporation 2-D gather instruction and a 2-D cache
CN105393583B (en) * 2013-02-22 2019-07-05 瑞典爱立信有限公司 Media distributing network with media bursts transfer capability
CN107153617B (en) * 2016-03-04 2023-04-07 三星电子株式会社 Cache architecture for efficient access to texture data using buffers
US10181176B2 (en) * 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture
US11042962B2 (en) 2016-04-18 2021-06-22 Avago Technologies International Sales Pte. Limited Hardware optimisation for generating 360° images
US10209887B2 (en) * 2016-12-20 2019-02-19 Texas Instruments Incorporated Streaming engine with fetch ahead hysteresis
JP2020004247A (en) * 2018-06-29 2020-01-09 ソニー株式会社 Information processing apparatus, information processing method, and program
CN110569204B (en) * 2019-07-23 2023-01-20 广东工业大学 Configurable image data caching system based on FPGA and DDR3SDRAM

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410649A (en) 1989-11-17 1995-04-25 Texas Instruments Incorporated Imaging computer system and network
JPH1083347A (en) * 1996-09-06 1998-03-31 Fujitsu Ltd Cache memory device
JPH10116191A (en) * 1996-10-14 1998-05-06 Hitachi Ltd Processor equipped with buffer for compressed instruction
JP3104643B2 (en) * 1997-05-07 2000-10-30 株式会社セガ・エンタープライゼス Image processing apparatus and image processing method
EP0926600B1 (en) * 1997-12-24 2003-06-11 Texas Instruments Inc. Computer system with processor and memory hierarchy and its operating method
JP3365293B2 (en) * 1998-02-12 2003-01-08 株式会社日立製作所 Cache memory using DRAM and logic embedded LSI and graphics system using the same
US6560674B1 (en) * 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system
US6825848B1 (en) * 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6812929B2 (en) * 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US6957305B2 (en) * 2002-08-29 2005-10-18 International Business Machines Corporation Data streaming mechanism in a microprocessor

Also Published As

Publication number Publication date
JP5071977B2 (en) 2012-11-14
CN100533403C (en) 2009-08-26
JP2008507028A (en) 2008-03-06
WO2006019374A1 (en) 2006-02-23
KR101158949B1 (en) 2012-07-06
EP1769360A4 (en) 2008-08-06
EP1769360A1 (en) 2007-04-04
CN1961295A (en) 2007-05-09

Similar Documents

Publication Publication Date Title
US20110072235A1 (en) Efficient memory translator with variable size cache line coverage
US8627041B2 (en) Efficient line and page organization for compression status bit caching
CN105630703B (en) Utilize the method and related cache controller of the control cache access of programmable Hash Round Robin data partition
US6426753B1 (en) Cache memory for high latency and out-of-order return of texture data
US6856320B1 (en) Demand-based memory system for graphics applications
US10515011B2 (en) Compression status bit cache and backing store
EP2721584B1 (en) Real time on-chip texture decompression using shader processors
US8982140B2 (en) Hierarchical memory addressing
US6650333B1 (en) Multi-pool texture memory management
EP0998709B1 (en) Non-stalled requesting texture cache system and method
CN105183662B (en) Storage architecture on a kind of Distributed sharing piece of no cache consistency protocols
US7580042B2 (en) Systems and methods for storing and fetching texture data using bank interleaving
JP2012530953A (en) Apparatus and method for warping and displaying original image
US9280464B2 (en) System and method for simultaneously storing and reading data from a memory system
EP2113103B1 (en) Dynamic configurable texture cache for multi-texturing
US6587113B1 (en) Texture caching with change of update rules at line end
KR101158949B1 (en) Cache memory managemnet system and methods
CN105393210B (en) Memory cell and method for handling data storage reference
US10466915B2 (en) Accessing encoded blocks of data in memory
KR20060116916A (en) Texture cache and 3-dimensional graphics system including the same, and control method thereof
US6538650B1 (en) Efficient TLB entry management for the render operands residing in the tiled memory
US8656093B1 (en) Supporting late DRAM bank hits
US7589738B2 (en) Cache memory management system and method
CN107797757A (en) The storage management method and memory management unit related to the memory cache in image processing system
CN105488012A (en) Consistency protocol design method based on exclusive data

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7