KR101158949B1 - 캐시 메모리의 관리시스템 및 방법 - Google Patents

캐시 메모리의 관리시스템 및 방법 Download PDF

Info

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

Links

Images

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 의 입력에서의 데이터 및 제어 변수의 일관성을 보증한다.

Description

캐시 메모리의 관리시스템 및 방법{CACHE MEMORY MANAGEMNET SYSTEM AND METHODS}
본 발명은 디지털 데이터 처리와 관련된 캐시메모리 구조 및 관리와 관련한 것으로서, 구체적으로, 디지털 영상 데이터 처리와 관련한 것이다.
새로운 컴퓨터 시스템들의 발명 때문에, 보다 빠른 처리 및 보다 빠른 시스템에 대한 경쟁이 항상 있어왔다. 보다 빠른 처리는 클록 속도의 폭발적인 증가에 의해서 이루어져 왔다. 자연적으로, 데이터와 명령의 양도 마찬가지로 급속도로 증가 되었다. 컴퓨터 시스템에는 데이터 명령을 저장하는 ROM(읽기 전용 메모리)와 같은 기억장치와, DRAM과 같은 버스트(BURST)를 기반으로 하는 기억장치가 비약적으로 용량이 높아졌다. 구조적으로, 큰 메모리 공간은 심층적이고, 메모리내에서 프로세서가 데이터와 명령을 액세스 하는 것을 느리게 할 수 있다. 이러한 문제 때문에 메모리 관리와 캐시 메모리의 생성 및 캐시 메모리 구조를 보다 효율적으로 할 필요가 발생하였다. 캐시 메모리는 일반적으로 얕고 넓은 기억장치로서 데이터와 데이터의 내용을 변경하기 위한 장치프로세서의 액세스를 할 수 있도록 프로세서 내부 또는 근접한 곳에 있다. 캐시 메모리 관리의 기본은 자주 사용하고, 가까운 장래에 프로세서에서 사용될 데이터와 명령의 복사를 가장 빠르게 기억할 수 있 는 기억장치에 보관 하는것에 있다. 이렇게 하여 프로세서가 데이터와 명령에 액세스하는 것이 외부메모리에서 액세스하는 것보다 몇 배가 빠르게 된다. 그러나, 이러한 작업은 주의 깊게 하여야 하는데, 캐시 메모리와 외부메모리 내의 내용은 반드시 조화롭게 이루어져야 한다. 이러한 주제들은, 하드웨어 및 소프트웨어 특성에 따라 캐시 메모리 구조 및 관리하는 기술을 만들게 되었다.
언급한 바와 같이, 캐시메모리는 프로세서에서 다음에 액세스할 확률이 높은 자료와 주소를 복사하여 보완한다. 외부메모리는 보통 저항체에 데이터를 보유하고 데이터의 손실을 방지하기 위하여 저항체를 재충전시키기 위한 재입력사이클이 필요하다. 그러나 일반적인 캐시 메모리는 1비트로 표시되는 8개의 트랜지스터를 사용하므로 재입력 사이클이 필요하지 않다. 그러므로 캐시 메모리는 단위 크기가 외부메모리보다 훨씬 작은 데이터를 저장할 수 있다. 따라서 데이터와 명령을 신중하게 선택하여 캐시 운영을 최적화하여야 한다.
캐시 메모리 운영을 최적화하기 위하여 서로 다른 방식 및 프로토콜이 사용되어 왔다. 이들 중 가장 잘 알려진 방법이 직접매핑, 연관매핑, 세트연관매핑이다. 이러한 프로토콜은 사람들에게 익숙하게 알려져 있다. 이들은 데이터 프로세싱, 웹 기반 어플리케이션 등을 포함하는 연산을 일반적인 목적으로 사용한다. 포머렌(Pomerene)의 미국특허번호 4,295,193에서 이중 명령어를 통한 동시실행 명령을 위한 연산기기를 출원하였다. 이것은 캐시메모리, 주소 발생기, 명령레지스터 및 파이프 라이닝이 포함되어 있는 가장 초기의 특허이다. 마츠오(Matsuo)는 미국특허번호 4,796,175에서 메인 메모리와 명령 캐시의 형태로 선인출명령을 위한 명 령 큐를 포함하는 마이크로 프로세서를 출원했다. 스틸즈(Stiles)는 미국특허번호 6,067,616에서 분기예측캐시(BPC) 형상을 하이브리드 캐시구조로 출원하였는데, 전체 연관의 넓고 얕은 제1레벨 BCP, 일부 예측정보와 함께 2차 심층적이고 좁은 매핑 레벨 BCP로 되어있다. 프랑크(Frank)는 미국특허번호 6,654,856에서 컴퓨터시스템 내의 캐시관리시스템에 대하여 출원하였는데, 여기에는 캐시메모리구조의 주소관점 순환구조가 강조되었다.
라이오(Liao)는 미국특허번호 6,681,296에서 제어유닛 과 캐시가 포함된 마이크로프로세서를 출원하였는데, 그것은 선택적인 형상을 단독 또는 고정되고 정상적인 부분으로 구획되었다. 아리밀리(Arimilli)는 미국특허번호 6,721,856에서 프로세서 액세스 시퀀스가 포함되어 있는 서로 다른 프로세서들에 대하여 서로 다른 서브엔트리를 갖는 각각의 행에 대한 일관성 상태 및 시스템 제어에 대한 캐시에 대하여 특허를 받았다. 미국특허번호 6,629,188에서는 저장공간의 1차 및 2차의 다수 캐시메모리에 대한 것이 포함되어 있다. 미국특허번호 6,339,428에서는 압축된 텍스춰(TEXTURE) 정보를 받아서 텍스춰 압축을 푸는 작동을 하는 비디오 그래픽 내에서의 캐시장치가 포함되어 있다. 미국특허번호 6,353,438에서는 텍스춰의 다수 타일과 데이터를 캐시에 직접매핑 하는 캐시조합이 포함되어 있다.
위의 발명들은 각각 특정한 장점들을 제공한다. 효율적인 캐시 구조 및 정책은 특정한 어플리케이션에 대해서 금방 사용할 수 있는 가에 따라 밀접하게 달려있다. 디지털 비디오 어플리케이션에 있어서, 고화질 실시간 디지털 영상 프로세싱은 이 분야에서의 커다란 도전중의 하나이다. 특별히 사람들은 비선형 좌표변환에 의 한 상세한 2차원 영상 프로세싱을 수행하기를 원한다. 그러므로 전용 시스템 및 전문적인 시스템은 데이터의 일관성을 유지하면서 빠르게 액세스할 수 있는 특별한 장점을 필요로 한다. 따라서 이러한 어플리케이션에 대한 캐시구조 및 캐시 관리정책을 최적화하는 것이 필요하다.
한가지 관점에서 본 발명은 디지털 데이터 프로세싱 특히, 디지털 화상 프로세싱의 캐시메모리 관리 및 구조에 대한 방법을 제공하고 있는바, 특히 다음과 같은 장치를 포함하고 있다.
a) 액세스하여 처리할 데이터가 저장될 외부메모리;
b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및
c) 데이터를 처리할 다수의 프로세서 유니트(PU2)
이 방법은 ;
(i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);
(ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및
(iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하는 캐시구조를 이용하여,
PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 외부메모리에서 데이터에 액세스하고, PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하고, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추는 것을 특징으로 하는 방법.
(a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;
(b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;
(c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계;
(d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및
(e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계.
또 다른 관점으로, 본 발명은 상기에 기술한 것에 근거한 캐시 시스템을 제공한다.
발명이 구체화된 것에 따른 다른 관점 및 장점에 대한 보다 더 자세한 것은 다음에 첨부 도면 설명에 나타날 것이다.
이하, 첨부도면을 참고하여 본 발명에 대해 자세히 설명한다.
도1은 본 발명에 따라 만들어진 캐시시스템의 전체 계획에 대해서 나타낸 것이다;
도2는 본 발명에 따라 만들어진 캐시시스템의 상세 구조를 나타낸 것이다;
도3은 캐시될 입력자료의 블록 구조의 예를 나타낸 것이다;
도4는 본 발명에 따라 만들어진 1차 캐시 시스템의 일반적인 구조를 나타낸 것이다;
도5는 본 발명에 따라 만들어진 2차 캐시 시스템의 일반적인 구조를 나타낸 것이다; 그리고,
도6은 본 발명에 따라 만들어진 캐시 시스템의 논리 흐름을 나타낸 것이다.
이하, 첨부 도면을 참조하여 본 발명에 대해 자세히 설명한다.
이제부터 첨부된 도면 및 전형적인 방법에 따라 발명에 대한 상세한 설명을 하겠다. 본 발명은 캐시 구조 및 관리와 관련되어 있다. 본 설명에서 주어진, 실시된 예제는 동시 좌표 변환을 통한 영상 처리에 관한 것이다. 그러나, 당업자라면 이 발명의 범위가 이런 특별한 예제에 국한 하지 않는다는 것을 인식할 수 있을 것이다. 이것은 모든 종류의 디지털 데이터 처리와 관련 되어 있는데, 그 데이터 처리는 복수의 프로세서가 데이터 및 외부메모리와 일정한 형식을 가진 다른 프로세 서에서 온 제어 매개변수를 인출하는 시도를 나타낸다. 특별히, 여기에서 주어진, 2차원(2D) 영상 변환 예제는 본 발명의 범위를 벗어나지 않고 간단하게 어떠한 2D 데이터 변환으로도 바꿀 수 있다. 따라서, 앞으로는, 데이터를 영상 화소 데이터로 부르기로 한다. 입력 데이터의 구조 및 망의 형태를 고려한 제어 매개변수를 발행하는 다수의 프로세서를 기하 엔진(Geometry engine)이라고 할 것이다. 거기에 추가해서, 오퍼레이션을 위한 데이터에 액세스하는 다수의 프로세서를 필터엔진(Filter engine)이라 하고, 이에 상응하는 오퍼레이션을 필터링(Filtering)이라 할 것이다.
본 발명 따라 만들어진 도 1은 연산장치 내에 동시 좌표변환을 포함하는 디지털 데이터 처리를 위해 설계된, 캐시시스템(100)의 설정의 예제를 그림으로 나타낸 것이다. 캐시시스템(100)은 2세트의 프로세서와 인터페이스 한다. 첫번째 다수의 프로세서는, 본 예제의 방법에서는, 기하 엔진(300)으로 구성되어 있고, 두번째 다수의 프로세서는 필터엔진으로 구성되어 있다. 이들 두개의 엔진에 추가해서, 캐시시스템(100)은 외부메모리(700)과 인터페이스 하는데, 이 외부메모리는 액세스 시간 지연을 갖는 모든 메모리가 될 수 있다. 캐시시스템(100)은 기하 엔진(300)에서 필터 밑넓이 매개변수 뿐만 아니라 좌표 변환을 포함하는 제어 매개변수를 받는다. 그것은 외부메모리(700)에서 화소 데이터를 동시에 받아들인다. 캐시시스템(100)은 이들 데이터들을 필터엔진(500)을 최소 스톨링(stalling)하면서 필터링 프로세스를 최적화 하는 방법으로 필터엔진(500)에 제공한다.
2차(2D) 데이터 프로세싱에서는, 특별히, 디지털 영상 데이터 프로세싱, 포 괄적인 필터링 또는 샘플링 기능이 요구된다. 앞으로, 2D 영상 프로세싱의 특별한 예제를 다룰 것이며; 따라서 "영상"이라는 단어는 임의의 2D 데이터의 특별한 경우로 사용될 것이다. 2D 디지털 영상 프로세싱에서, 각각의 출력 영상은 많은 입력 영상 정보에 기반을 두고 형성된다. 먼저, 출력 영상 좌표들은 입력 영상 좌표들 위에 표시된다. 이것이 좌표변환으로서, 보통 영상 래핑(warping) 기술을 통해 전자적으로 이루어진다. 한번 중앙의 입력 영상이 결정되면, 필터링 또는 샘플링 기능이 출력 영상 사양, 즉, 색채 성분의 강도와 샘플링 포맷 및 혼합 기능 같은 기타 정보를 생성하는 것을 필요로 한다. 중심의 입력영상 주위의 모든 영상을 포함하는 면적, 샘플링이 수행되는 장소는 필터 밑넓이라고 불리운다. 이 분야에서는 필터 밑넓이의 크기와 모양이 출력영상의 질에 영향을 주는 것은 매우 잘 알려진 일이다.
캐시시스템(100)의 기능은 전용의 구조 및 충분한 랜덤 액세스 영상 데이터 및 제어 매개변수를 필터 엔진(500)에 충분하게 렌덤 액세스 할 수 있도록 하는 선인출 논리를 사용하는 하는 것으로서, 그렇게 함으로 최소한의 스톨링으로 주어진 클럭 속도로 데이터를 처리할 수 있게 한다. 최적화된 크기의 읽기 요구 큐로, 캐시 시스템(100)은, 화소 데이터가 인출 되는, 외부 메모리(700) 본래의 메모리 읽기 시간지연의 대부분을 감출 수 있다. 이 메모리 읽기 시간지연감춤은 필터 성능에 탁월하게 좋다. 만약 이 시간지연이 적절하게 감추어지지 않는다면, 필터 엔진(500)은 최대한의 출력을 갖지 못할 것이다. 허용 스톨링 양은 설계 매개변수이다. 필요로 하는 출력을 얻기 위하여, 하드웨어 비용과 교환하여, 서로 다른 매개 변수를 조절하는 것이 필요하다.
게다가, 캐시시스템(100)은 좌표 변환, 필터 밑넓이 매개변수 및 기하 엔진(300)으로부터 읽기를 위한 제어 경로를 제공한다. 캐시시스템(100)은 한편으로 외부메모리(700)로 부터 화소 데이터가, 다른 한편으로 기하 엔진(300)으로부터 제어 데이터가 필터엔진(500)에 입력될 때 동기화 되게 한다.
본 명세서에서는, 참고 번호 (예, 필터엔진(500))와 구별하기 위하여 수량(예, 64 바이트)을 관례대로 이태리체로 표시하였다.
도2는 캐시시스템(100)의 상세구조를 도면에 예시한 것이다. 각각의 출력 화소에 대하여 캐시시스템(100)은 기하 엔진(300)으로부터 일정한 제어 매개변수를 받는다. 이 매개변수는 입력화소의 맵 좌표, U 및 V, 및 필터 밑넓이의 형상, 회전 및 크기를 포함한 추가적인 제어 매개변수를 포함한다. 동시에, 캐시시스템(100)은 외부메모리(700)로 부터 필터 밑넓이 내에 포함된 각각의 화소에 대한 화소 데이터를 받는다. 이들 데이터들은 컬러 공간 내에서 컬러 성분의 강도, 즉 RGB 또는 YCrCb, 샘플링 포맷, 즉 4:4:4 또는 4:2:2, 및 혼합 기능 바꿔 말하면 @가 있거나 없는 것을 포함한다.
캐시시스템(100)의 구조는 입력 영상을 m x n 화소의 블록 크기로 나누는 것과 관련이 있다. 도3에서는 입력 영상 화소 블록 구조의 특별한 예를 나타내고 있는데, 여기에서는 n=8, m=4이다. 입력영상(330)은 일정한 숫자의 화소를 포함하여 , 예를 들어, 1024x1024, 블록으로 그룹되어 있다. 각각의 입력 화소 블록(332)에는 m x n 입력화소(334)가 들어 있다. 서로 다른 필터링 구성에서 블록의 구조는 일반적으로 밑넓이의 형상 및 크기의 함수이다.
캐시시스템(100)은 mxn 입력 화소 블록(332)와 관련 있는 데이터를 인출하고, 필터엔진(500)에 유용한 데이터 블록을 생성한다. 그렇게 함으로서, 시스템은 어떤 블록이 밑넓이 내에 떨어지고, 필터링을 위해서 블록내의 어떤 화소가 반드시 포함되어야 하는지를 결정해야만 한다. 캐시시스템(100)의 구조는 입력 데이터 구조에 맞추기 위해서 크기조정이 가능하다. 일반적으로 캐시시스템(100)의 구조는 필터엔진(500)의 성질 및 작동구조의 함수이다. 영상 프로세싱의 특별한 경우에, 작동의 구조 및 망의형태가 필터 밑넓이에 의해 부분적으로 정의된다.
도2의 예제 그림에 대해서 살펴보면, 캐시시스템(100)은 얕고 넓지만 낮은 용량의 1차 캐시(110) 및 깊고 높은 용량의 2차 캐시(120), 블록 포함 스테이지(150), 블록 데이터 생성 스테이지(130), 1차 캐시 제어 스테이지(170), 2차 캐시 제어 스테이지(190)을 포함하고 있다. 캐시시스템에는 또한 많은 수의 큐가 있는데, 그것은 본 명세서에서 나중에 설명될 것이다. 화소 데이터는 먼저 외부메모리(700)로 부터 2차 캐시 메모리(120)로 읽혀진다. 그리고 이들 데이터는 필터엔진(500)에 사용되어지도록 블록 생성 스테이지(130)에 의해 재 포맷 되고 압축이 풀리게 될 것이다. 이들 재 포맷된 데이터는 큐로 놓여지고, 필터엔진(500)에 의해 즉시 액세스 할 수 있도록, 적절한 시간에 1차 캐시(110)에 위치하게 된다. 아래에서 데이터 경로와 제어 논리 구조에 대해 각각 설명될 것이다.
이제 도5의 예제 그림에 대해서 살펴보면, 2차 캐시(120)는 외부 메모리(700)로 부터 처리 안 한 데이터를 읽는 높은 용량의 저장 장치이다. 외부 메모 리(700) 내의 화소 데이터는 일정한 포맷으로 저장되는데, 일반적으로 필터엔진(500)내에서 프로세싱하기에 적합하지 않으며, 예를들어, 특별한 경우로서, 데이터는 주사선 순서로 순차적으로 저장된다. 2차 캐시(120)은 최소한의 간섭을 갖도록 이들 데이터를 효율적으로 읽게 설계된다.
2차 캐시 내의 각각의 라인은 외부 메모리(700)로 부터 b2 바이트의 데이터를 가득 수용할 수 있게 설계되었다. 이러한 이유로, 2차 캐시(120) 내의 각각의 라인은 외부 메모리(700)의 구조 및 읽기 필수조건에 따른 크기로 만든다. 데이터가 저장되는 2차 캐시(120) 내의 각각의 라인들은 또한 2차 캐시 계산에서 빠지는 것(miss count)을 줄이기 위해 최적화하도록 하는 설계 매개변수이다. 2차 캐시(120)은 필터엔진(500)의 스톨링(stalling)을 최소화 하기 위하여 1차 캐시(110)의 업데이트를 하기에 충분한 읽기 출력물을 허용하도록 줄지어 놓여져 있다. 많은 부근의 화소들이 중앙의 입력화소를 샘플링 하는데 필요로 하기 때문에, 이들 설계 매개변수들은 필터엔진(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)을 통과하는 데이터를 분배하기 위한 간단하고 효율적인 분할을 이끌어 낸다.
일단 데이터가 외부메모리(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)에 저장 된다.
도4의 예제 그림에 대해 살펴보면, 1차 캐시(110)은 필터엔진(500)내에서 데이터 액세스율을 최적화 하는 방향으로 설계되어 진다. 그렇게 함으로서, 그것은 복수의 라인이 액세스 할 수 있도록 얕지만 넓은 구조를 가지게 된다. 1차 캐시(110)은 일정한 수의 뱅크로 나누어져 있고, 각각의 1차 캐시 뱅크 112는 필터엔진(500)에 의해 독립적이고 동시적으로 읽혀진다. 1차 캐시 뱅크의 수는 필터링 성능을 최적화 하기위한 실험 데이터 및 시뮬레이션에 따라 결정되어 진다. 각각의 1차 캐시 뱅크 112는 일정한 숫자의 1차 캐시 라인을 포함하고 있다. 각각의 1차 캐시 라인(114)은 전체 m x n의 입력 데이터 블록으로부터 나온 데이터를 포함하고 있다. 그렇게 함으로서, b1의 1차 캐시 뱅크에 대하여, 필터엔진(500)은 알맞은 포맷으로 사이클 당 b1 입력 블록을 포함하는 데이터를 읽는다. 이것은 중대한 것인데, 샘플링의 경우 입력 화소 주위에 많은 입력 블록이 필요로 하고 만약 그것들이 필터엔진(500)에 제공되어 지지않을 경우에는 지연이 발생한다. 스톨링의 양과 주기는 출력 효율을 결정한다.
서로 다른 1차 캐시 뱅크에 데이터를 분산시키기 위하여, 입력 화소 좌표의 LSB, U 및 V,가 사용된다. 1차 캐시(110)내의 각각의 1차 뱅크 112는 또한 일정한 숫자의 부분으로 나뉘어진다. 위에서 설명한 바와 같이, 일정한 숫자의 LSB가 서로 다른 1차 캐시 뱅크 112중의 데이터 분산에 다시 사용되어진다. 입력 화소 U 및 V 주소의 남아있는 비트 내에서, 그 이상의 LSB가 각각의 1차 캐시뱅크 112내의 데이터를 분산하는데 다시 사용된다. 1차 캐시 뱅크 당 2f 라인들과 g LSB가 각각의 뱅크를 분리하는데 사용되어진데, 이렇게 분리되면 2 f /2 g 의 세트조합 구조가 만들어진다.
이러한 설계는 최적의 출력을 얻기 위하여 1차 캐시(110)을 위한, 나중에 설명되어지는, 알맞은 교체 정책과 함께 사용되어진다. 입력 데이터의 양이 커질수록 U 및 V 주소 내에서 더욱 많은 비트들이 사용되기 때문에, 이 구조는 간단하고 자연스런 방법으로 크기조정이 가능하다. 필터엔진(500)이 필요로 할 때 사용 가능한 포맷 내에 데이터의 존재를 확보하기 위하여, 선인출 논리 구조가 설계되어진다. 도6은 캐시논리 400을 나타낸다. 이 논리 구조는 2차캐시(120)에 의해 외부 메모리(700)로 부터 데이터 읽기 및 블록 생성 스테이지(130)내에서의 데이터 읽기와 재 포맷, 1차 캐시(110)내에서의 데이터 블록 저장을 제어 한다.
단계 402에서, 데이터의 어떤 블록이, 기하 엔진(300)으로부터 받은 제어 매개변수에 기반하여, 샘플링에 필요한지 결정되어진다. 일단 데이터가 확인되면, 단계 410에서 이들 데이터가 1차 캐시내에 존재하는지 결정되어진다. 만약에 존재하 면, 엔트리가 단계 412에서 1차 제어 큐로 쓰여지고 단계 414에서 이들 데이터의 주소가 필터엔진으로 보내진다. 만약에 데이터가 1차 캐시 내에 존재하지 않는다면, 단계 415에서, 나중에 설명할 교체정책에 맞추어서, 교체될 1차 캐시 라인이 결정된다. 그 후 이 1차 캐시 라인의 주소가 단계 416에서 1차 제어 큐에 쓰여지고 단계 418에서 필터엔진으로 보내진다. 그후 이들 데이터들이 단계 420에서 2차 캐시에 존재하는지 여부를 판단할 것이다. 만약에 데이터가 거기에도 없다면, 단계 422에서 어떤 캐시라인을 교체할지 판단되어질 것이다. 그 후 읽기 요구가 외부 메모리로 보내어져서 단계 426에서 2차 캐시로 추후에 읽혀질 데이터를 인출하게 될 것이다. 만약에 데이터가 2차 캐시에 존재한다면, 엔트리가 단계 428에서 2차 캐시 제어 큐로 쓰여질 것이다.
외부 메모리로 부터 데이터가 인출된 후 2차 캐시가 적중하거나, 또는 2차 캐시가 부적중하는, 두가지 경우 모두, 2차 캐시 데이터가 단계 440에서 블록 생성을 위하여 읽혀진다. 여기에서 데이터는 복수의 2차 캐시 뱅크에서 읽혀지고 단계 442에서 재포맷 되고 압축이 풀린다. 이 스테이지에서, 단계 450에서, 알맞은 포맷의 입력 데이터 블록이 1차 캐시내로 저장될 큐로 보내지게 된다.
1차 캐시(110)의 업데이트는 관련된 제어 데이터가 1차 제어 큐 212와 화소 제어 큐(218)로 부터 읽혀질 때 발생한다. 이것은 캐시 일관성이 1차 캐시(100)내부에서 유지될 수 있도록 하여 준다. 이때 제어 매개변수의 일관성을 유지하면서 1차 캐시로 읽혀지는 데이터는 단계 510에서 필터엔진에 입력되어진다.
도2로 다시 돌아가서, 캐시 제어 논리 400에 하드웨어 장치에 대해서 설명하 겠다. 블록 포함(inclusion) 스테이지(150)은 제어 논리의 시작점이다. 이 장치는 각각의 출력 화소에 대하여, 기하 엔진(300)으로부터 입력 화소의 매핑 좌표 및 필터 밑넓이의 형상이 포함 되어있는 제어 매개변수를 받아들인다. 입력 좌표, U 및 V, 및 밑넓이 형상, 기타 제어 매개변수를 기초로 하여, 블록 포함 논리는 어떠한 입력블록이 각각의 출력 화소 프로세싱을 위하여 필요하고 블록내의 어떠한 화소가 샘플링에 필요한지 결정한다.
블록 포함 스테이지(150)은, 본 발명의 한 예에서, 샘플링을 위하여 필요한 화소의 블록을 포함하기 위하여 밑넓이의 형상을 포함한 주변 블록의 좌표 위치를 비교한다. 블록 포함 논리는 각각의 블록주소 내의 최소한 최하위의 비트인 1개의 U값 또는 V값이 다른 각각의 블록과 함께 클럭 사이클 마다 k 블록을 생성한다. 이것은 LSB의 k 조합이 블록 포함 논리에 의해 각각의 블록 세트내에 존재하게 되는 것을 보장한다. 이러한 제약이 1차 캐시 뱅크사이에 블록을 분배 하는데 사용되어진다. 매 클럭 사이클, k, 마다 생성되는 블록의 수는 밑넓이 크기의 함수이고 블록의 위상은 밑넓이 형상의 함수이다. 이들 매개변수 들은 주의깊은 시뮬레이션 및 실험으로 필터엔진(500)내의 데이터 프로세싱과 관련된 캐시시스템의 설계에 고려되어져야 한다. 블록 포함 스테이지(150)에 의해 생성된, 화소 제어 큐(218)은 실제 화소 데이터보다 앞서 크기조정 매개변수를 생성하기 위한 필터엔진(500)을 허용하기에 전에 필터엔진(500)으로 보내어 진다.
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)에 읽기 요구를 보낸다.
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)에 의해서 읽혀질 것이다.
각각의 큐 엔트리를 받은 후에, 블록 생성 스테이지(130)은 2차 캐시(120)로 부터 전체 입력 블록과 관련한 가공되지 않은 데이터를 읽는다. 이들 데이터들은 그 후 블록 생성 스테이지(130)에서 재 포맷되어 필터엔진(500)에 의해 곧 사용되어질 수 있도록 포맷 될 것이다. 데이터 패킹 모드에 따라, 복수의 2차 캐시 라인들은 아마도 1차 캐시 라인(114)를 생성하는 것을 필요로 할 것이다. 하나의 입력 블록과 관련한 모든 데이터를 얻고 이들 데이터를 재 포맷한 후, 블록 생성 스테이지(130)은 블록 큐(214)로 엔트리를 기록한다. 따라서 각각의 블록 큐 엔트리는 알맞은 포맷으로 전체 입력 블록으로부터 온 모든 데이터를 포함하고 있다. 블록 큐 엔트리들은 그 후 1차 캐시(110)에서 접수되기 시작하는데, 그곳에서 필터엔진(500)에 의해 곧 액세스할 수 있도록 저장된다. 따라서, 블록 큐(214)는 필터엔진(500)에 앞서서 실행될 수 있도록 2차 캐시(120)를 허용한다.
캐시시스템(100)의 기능은 제공된 선인출 논리에 추가하여 화소 데이터의 동일성 및 제어 매개변수에 기반한다는 것에 주목하여야 한다. 2차 캐시 제어 스테이지(190)으로부터 요청이 없는 한 2차 캐시(120)에 의해 어떤 데이터도 읽혀지지 않는다. 일단 그러한 데이터가 2차 캐시내에 있다면, 2차 제어 큐(216)내의 엔트리만이 이들 데이터가 블록 생성 스테이지(130)내의 블록 생성에 필요한지 여부를 결정할 수 있다. 일단 데이터 블록이 생성되면, 필터엔진(500)으로부터의 읽기 요청에 의해서만 그것들은 큐에 놓여져서 1차 캐시(110)에 저장되는데, 이 필터엔진은 1차 제어 큐 212내의 엔트리에 의해 자체적으로 유발되어 진다. 더우기, 필터 엔진은 데이터를 처리하기 전에 2개의 독립적인 큐로 부터 제어 매개변수 뿐만 아니라 양 화소 데이터 도착을 기다린다.
필터 밑넓이의 상대적 크기 및 캐시 저장 공간에 따라, 밑넓이를 분리하여 하위 밑넓이 부분으로 나누고 각각의 하위 밑넓이를 순차적으로 데이터 처리하는 것이 필요로 할지도 모른다. 이 크기는 동적인 크기의 밑넓이에 대한 캐시시스템(100)의 설계에 따라 예측된다. 일단 각각의 하위 밑넓이와 관련한 데이터가 캐시되면, 필터엔진은 이들 데이터를 순차적으로 처리한다.
메모리 읽기 시간지연을 감추기 위하여 캐시 시스템(100)을 사용한 데이터 선인출의 효과를 평가하기 위하여, 본 발명의 한 예에서, 읽기 시간지연이 128 클럭 사이클의 순서대로 였다는 것을 밴치마크 하였다. 충분히 커다란 큐를 공급함으로 써, 거의 모든 시간지연이 감추어졌다. 본 발명에서 큐의 크기는 시스템 내에서 보여지는 메모리 읽기 시간지연에 맞추어서 조정될 수 있고, 그렇게 함으로서, 그것들은 시스템 사양에 근거하여 설계 매개변수를 조정 할 수 있다.
일단 캐시 논리 구조가 일정한 데이터 블록이 2차 캐시(120)에 의해서 읽혀져야 하거나 1차 캐시(110)내에 저장되도록 준비되어야 한다고 결정한다면, 교체 정책이 필요하게 된다. 하나의 기존 1차 캐시 라인(114) 또는 복수의 2차 캐시라인(124)이 교체될 필요가 있다. 본 발명의 예제에서, 캐시 교체 정책은 거리를 기준으로 한다. 입력 블록 주소 U 및 V 에 따라, 1차 캐시 제어 스테이지(170) 및 2차 캐시 제어 스테이지(190)은 캐시라인 내의 중앙 입력 화소 U 및 V 좌표를 기존 블록의 좌표 값과 비교한다. 그리고 중앙 입력 화소에서 가장 멀리 떨어진 엔트리가 교체된다. 이러한 정책은 중앙화소와 거리가 가까울수록, 샘플링 계산에 필요로 할 확율이 높아진다는 사실에서 유래 되었다.
본 발명의 또 다른 예제에서, 캐시 교체 정책은 최소-최근-사용(LRU)에 기반한다. 본 예제의 마지막에서, 1차 캐시 제어 스테이지(170) 및 2차 캐시 제어 스테이지(190)은 최소의 최근 사용한 캐시라인을 교체하는 것을 선택한다.
캐시시스템(100)의 설계는 이 시스템이 크기조정이 가능하다는 것을 확실히 하기 위하여 소수의 치수만 갖고 있다. 2차 캐시 라인의 크기는 외부 메모리(700) 및 블록 생성율로 부터 메모리 읽기 크기, 즉 버스트 사이즈,에 따라 크기조정이 가능하다. 2차 캐시 라인의 수는 필요로 하는 캐시 효율에 따라 크기조정이 가능하다. 2차 캐시 뱅크의 수는 필요로 하는 입력 블록 데이터 구조 및 2차 캐시에서 나가는 액세스에 따른 클럭 사이클의 수에 따라 크기조정이 가능하다. 2차 캐시(120)의 크기조정은 필요 크기 및 캐시 시스템 효율, 즉, 다시 읽어야할 입력 디지털 데이터의 양을 기초로 한다.
블록 포함 스테이지(150)에서 클럭 사이클당 생성되는 블록의 수는 필터링 알고리듬 및 밑넓이 크기 및 필요로 하는 출력물에 따라 크기조정이 가능하다. 1차 캐시(110) 및 2차 캐시(120)의 분할은, 입력화소 LSB인 U 및 V에 기초하여, 캐시의 크기에 맞출수 있다. 이것은 특별한 분할을 위해 사용된 비트의 수로 이행된다. 1차 캐시 라인의 크기는 입력 블록 크기를 기초로 크기조정이 가능하다. 1차 캐시 뱅크의 수는 필터링 출력물을 기초로 크기조정이 가능하다. 서로 다른 큐의 크기는 또한 메모리 시간지연 대 필요로 하는 출력물을 기초로 한 매개변수를 기초로 크기조정이 가능하다. 이들 크기들은 시뮬레이션 및 실험을 근거로 결정된다.
모든 이들 설계 매개변수들은 가격 대 성능비를 반드시 주의 깊게 고려하여야 한다. 따라서 주의 깊은 시뮬레이션 및 실험이 본 발명의 특별한 장치에 대해서 항상 사용할 수 있는 특별한 경우에 캐시 솔루션을 최적화하기 위하여 이루어졌다.
발명의 일정한 특징이 이글에서 도해되고 설명되어지면서, 많은 변경 및 대체, 변화 등이 이 분야의 본래의 기술에 대한 사항들에 대해서 일어났다. 따라서 첨부된 요청들은 발명의 진정한 정신에 따라 모든 그러한 변경 및 변화들을 포함 하려는 의도라는 것을 이해하여야 한다.

Claims (34)

  1. a) 액세스하여 처리할 데이터가 저장될 외부메모리; b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및 c) 데이터를 처리할 다수의 프로세서 유니트(PU2);로 이루어지는 장치에서, 캐시 구조와 관리를 위해, 동시 좌표변환으로 2차원 영상을 처리하는 데이터처리방법에 있어서:
    (i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);
    (ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및
    (iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하는 캐시시스템을 이용하여,
    상기 PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 상기 외부메모리에서 데이터에 액세스하고, 상기 PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하며, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추기 위해,
    (a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;
    (b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;
    (c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계;
    (d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및
    (e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계;를 포함하는 것을 특징으로 하는 데이터처리방법.
  2. 제 1항에 있어서, 입력 블록 데이터 구조 및 외부 메모리의 읽기 포맷을 기초로 SCM 뱅크의 수, SCM 뱅크당 라인 수 및 SCM 라인 크기를 포함한 SCM 구조 및 필요한 작업량을 최적화하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  3. 제 2항에 있어서, 출력 데이터 구조 및 포맷을 기초로 한 PCM 뱅크의 수, PCM 뱅크당 라인 수 및 PCM 라인 크기를 포함하는 상기 PCM 구조 및 필요한 작업량을 최적화하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  4. 제 3항에 있어서, 캐시 시스템에 대한 매핑이 주소 시퀀스를 기초로 한 직접 매핑인 것을 특징으로 하는 데이터처리방법.
  5. 제 3항에 있어서, 캐시시스템에 대한 매핑이,
    (a) 주소 시퀀스를 기초로 한 직접 매핑; 및
    (b) 처리중인 데이터 블록에서 가장 먼 입력블록과 관련된 데이터를 교체하는 거리 기반 교체의 2단계로 이루어지는 것을 특징으로 하는 데이터처리방법.
  6. 제 3항에 있어서, 캐시시스템에 대한 매핑이,
    (a) 주소 시퀀스를 기초로 한 직접 매핑; 및
    (b) 가장 최근에 사용한 입력블록과 관련된 데이터를 교체하는 최근사용 기반 교체의 2단계로 이루어지는 것을 특징으로 하는 데이터처리방법.
  7. 제 3항에 있어서, 액세스할 데이터량을 기초로 상기 PCM 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  8. 제 3항에 있어서, 액세스할 데이터량을 기초로 상기 SCM 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  9. 제 3항에 있어서, 캐시 업데이트의 빈도를 기초로 상기 PCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  10. 제 3항에 있어서, 다시 읽기 요소를 기초로 상기 SCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  11. 제 3항에 있어서, 입력 데이터 블록을 하위 블록으로 나누고 PU2에서의 처리를 위해 각각의 하위 블록으로부터 데이터를 순차적으로 캐시하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  12. 제 3항에 있어서, 작업량을 최적화 하기 위하여 제어 큐와 데이터 큐의 깊이를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  13. 제 3항에 있어서, 상기 PU2의 필요 작업량을 기반으로 상기 PCM 출력 폭 및 뱅크의 수를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  14. 제 3항에 있어서, 입력 데이터블록 크기를 기반으로 상기 PCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  15. 제 3항에 있어서, 상기 외부 메모리 버스트(burst) 크기를 기반으로 SCM 라인 크기를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  16. 제 3항에 있어서, 필요한 PCM 업데이트 속도를 기반으로 상기 SCM 뱅크의 수를 조정하는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  17. 제 3항에 있어서, 입력 데이터 블록의 메모리 주소의 최소유효비트를 기반으로 상기 PCM과 SCM내의 데이터를 분산시키는 단계를 더 포함하는 것을 특징으로 하는 데이터처리방법.
  18. a) 액세스하여 처리할 데이터가 저장될 외부메모리; b) 제어명령을 발생시키고, 외부메모리에서 처리될 데이터의 메모리 주소와 제어변수를 생성하는 다수의 프로세서 유니트(PU1); 및 c) 데이터를 처리할 다수의 프로세서 유니트(PU2);로 이루어지는 장치에서, 동시 좌표변환으로 2차원 영상을 처리하는 캐시시스템에 있어서 :
    (i) 상기 외부 메모리에서 데이터를 읽기 위해, 복수의 저장라인을 갖춘 뱅크를 여러개 구비하고, 저장용량이 큰, 깊은 2차 캐시 메모리(SCM);
    (ii) 상기 PU2가 데이터를 읽어들이는 저장라인을 여러개 갖춘 뱅크를 다수 갖추고, 저장용량이 적은, 빠르고 넓은 1차 캐시 메모리(PCM); 및
    (iii) 선인출 및 캐시의 일관성을 제공하고, 제어 스테이지 및 제어 큐를 포함하고 있는 제어 논리;를 포함하고,
    상기 PU1에서 주소 시퀀스 및 제어 매개변수를 받았을 때 상기 외부메모리에서 데이터에 액세스하고, 상기 PU2에 의한 빠른 액세스 및 프로세싱을 위한 데이터를 준비하고, 이 때 아래의 단계들을 거쳐 캐시의 일관성을 이루고 메모리 읽기 지연을 감추기 위해,
    (a) 상기 PU2의 프로세싱 오퍼레이션 망의 형태와 구조를 기반으로 외부메모리에서 처리할 데이터 블록을 식별하는 단계;
    (b) 상기 SCM이 PU2에 의해 처리되는 것보다 훨씬 빨리 외부메모리의 데이터에 액세스하기 위하여, (a)의 결과를 기초로 충분하게 큰 SCM 제어 큐를 생성하고 데이터가 PCM내에 존재하는지 여부를 결정하는 단계;
    (c) 상기 SCM의 다수의 뱅크로부터 입력데이터 블록을 소정의 클럭 사이클 수로 동시에 읽고, 캐시 데이터 조직으로부터의 외부 메모리데이터의 압축을 풀고 재포맷하여 이 데이터를 추출해, 외부 데이터 조직을 상기 PU2로부터 감추어 PU2내의 데이터 프로세싱 속도를 높이는 단계;
    (d) (a) 및 (b)의 결과를 기반으로, 상기 PU2가 필요로 하는 데이터보다 먼저 상기 추출된 데이터를 PCM에 저장하기에 충분히 큰 PCM 제어큐들을 생성하는 단계; 및
    (e) 캐시 일관성을 유지하기 위하여 상기 PU2내의 데이터와 제어 매개변수의 도착을 동기화시키는 단계;를 진행하는 것을 특징으로 하는 캐시시스템.
  19. 제 18항에 있어서, 입력 블록 데이터 구조 및 외부 메모리의 읽기 포맷을 기초로 SCM 뱅크의 수, SCM 뱅크당 라인 수 및 SCM 라인 크기를 포함한 SCM 구조와 필요한 작업량을 조정하는 것을 특징으로 하는 캐시시스템.
  20. 제 19항에 있어서, 출력 데이터 구조 및 포맷을 기초로 PCM 뱅크의 수, PCM 뱅크당 라인 수 및 PCM 라인 크기를 포함한 PCM 구조 및 필요한 작업량을 조정하는 것을 특징으로 하는 캐시시스템.
  21. 제 20항에 있어서, 캐시 시스템에 대한 매핑이 주소 시퀀스를 기초로 한 직접 매핑인 것을 특징으로 하는 캐시시스템.
  22. 제 20항에 있어서, 캐시시스템에 대한 매핑이,
    (a) 주소 시퀀스를 기초로 한 직접 매핑; 및
    (b) 처리중인 데이터 블록에서 가장 먼 입력블록과 관련된 데이터를 교체하는 거리 기반 교체의 2단계로 이루어지는 것을 특징으로 하는 캐시시스템.
  23. 제 20항에 있어서, 캐시시스템에 대한 매핑,
    (a) 주소 시퀀스를 기초로 한 직접 매핑; 및
    (b) 가장 최근에 사용한 입력블록과 관련된 데이터를 교체하는 최근사용 기반 교체의 2단계로 이루어지는 것을 특징으로 하는 캐시시스템.
  24. 제 20항에 있어서, 액세스할 데이터량을 기초로 상기 PCM 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  25. 제 20항에 있어서, 액세스할 데이터량을 기초로 상기 SCM 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  26. 제 20항에 있어서, 캐시 업데이트의 빈도를 기초로 상기 PCM 라인 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  27. 제 20항에 있어서, 다시 읽기 요소를 기초로 상기 SCM 라인 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  28. 제 20항에 있어서, 입력 데이터 블록을 하위 블록으로 나누고 PU2에서의 처리를 위해 각각의 하위 블록으로부터 데이터를 순차적으로 캐시하기는 것을 특징으로 하는 캐시시스템.
  29. 제 20항에 있어서, 제어 큐와 데이터 큐의 깊이를 조정해 작업량을 조정하는 것을 특징으로 하는 캐시시스템.
  30. 제 20항에 있어서, 상기 PU2의 필요 작업량을 기반으로 상기 PCM 출력 폭 및 뱅크의 수를 조정하는 것을 특징으로 하는 캐시시스템.
  31. 제 20항에 있어서, 입력 데이터블록 크기를 기반으로 상기 PCM 라인 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  32. 제 20항에 있어서, 상기 외부 메모리 버스트(burst) 크기를 기반으로 SCM 라인 크기를 조정하는 것을 특징으로 하는 캐시시스템.
  33. 제 20항에 있어서, 필요한 PCM 업데이트 속도를 기반으로 상기 SCM 뱅크의 수를 조정하는 것을 특징으로 하는 캐시시스템.
  34. 제 20항에 있어서, 입력 데이터 블록의 메모리 주소의 최소유효비트를 기반으로 상기 PCM과 SCM내의 데이터를 분산시키는 것을 특징으로 하는 캐시시스템.
KR1020067023350A 2004-07-14 2004-07-14 캐시 메모리의 관리시스템 및 방법 KR101158949B1 (ko)

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 KR20070038955A (ko) 2007-04-11
KR101158949B1 true KR101158949B1 (ko) 2012-07-06

Family

ID=35907684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067023350A KR101158949B1 (ko) 2004-07-14 2004-07-14 캐시 메모리의 관리시스템 및 방법

Country Status (5)

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

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
WO2014127832A1 (en) * 2013-02-22 2014-08-28 Telefonaktiebolaget L M Ericsson (Publ) Media distribution network with media burst transmission capabilities
CN107153617B (zh) * 2016-03-04 2023-04-07 三星电子株式会社 用于利用缓冲器高效访问纹理数据的高速缓存体系结构
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 (ja) * 2018-06-29 2020-01-09 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
CN110569204B (zh) * 2019-07-23 2023-01-20 广东工业大学 基于fpga和ddr3 sdram的可配置图像数据缓存系统

Citations (2)

* 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
US6560674B1 (en) 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083347A (ja) * 1996-09-06 1998-03-31 Fujitsu Ltd キャッシュメモリ装置
JPH10116191A (ja) * 1996-10-14 1998-05-06 Hitachi Ltd 圧縮命令用バッファを備えたプロセッサ
JP3104643B2 (ja) * 1997-05-07 2000-10-30 株式会社セガ・エンタープライゼス 画像処理装置及び画像処理方法
DE69815482T2 (de) * 1997-12-24 2004-04-29 Texas Instruments Inc., Dallas Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren
JP3365293B2 (ja) * 1998-02-12 2003-01-08 株式会社日立製作所 Dram,ロジック混載lsiを使ったキャッシュメモリ及びそれを用いたグラフィックスシステム
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

Patent Citations (2)

* 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
US6560674B1 (en) 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system

Also Published As

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

Similar Documents

Publication Publication Date Title
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US20210312668A1 (en) Real time on-chip texture decompression using shader processors
US6426753B1 (en) Cache memory for high latency and out-of-order return of texture data
CN105630703B (zh) 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器
US8627041B2 (en) Efficient line and page organization for compression status bit caching
US6856320B1 (en) Demand-based memory system for graphics applications
US10515011B2 (en) Compression status bit cache and backing store
JP5663009B2 (ja) 原画像をワープまたは回転させて表示する装置、その方法、そのコンピュータプログラムおよびそれを記録した記録媒体
US6650333B1 (en) Multi-pool texture memory management
EP0998709B1 (en) Non-stalled requesting texture cache system and method
US7580042B2 (en) Systems and methods for storing and fetching texture data using bank interleaving
US20090077320A1 (en) Direct access of cache lock set data without backing memory
JP2001507152A (ja) 増強テクスチャマップデータフェッチング回路および方法
EP2113103B1 (en) Dynamic configurable texture cache for multi-texturing
KR101158949B1 (ko) 캐시 메모리의 관리시스템 및 방법
US6587113B1 (en) Texture caching with change of update rules at line end
US7170512B2 (en) Index processor
US6744438B1 (en) Texture caching with background preloading
CN107153617A (zh) 用于利用缓冲器高效访问纹理数据的高速缓存体系结构
KR20060116916A (ko) 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법
US6314490B1 (en) Method and apparatus for memory addressing
US6683615B1 (en) Doubly-virtualized texture memory
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

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