KR20050024371A - 캐쉬 메모리 제어 장치 및 방법 - Google Patents

캐쉬 메모리 제어 장치 및 방법 Download PDF

Info

Publication number
KR20050024371A
KR20050024371A KR10-2004-7020902A KR20047020902A KR20050024371A KR 20050024371 A KR20050024371 A KR 20050024371A KR 20047020902 A KR20047020902 A KR 20047020902A KR 20050024371 A KR20050024371 A KR 20050024371A
Authority
KR
South Korea
Prior art keywords
boundary
block
data
zone
dividing line
Prior art date
Application number
KR10-2004-7020902A
Other languages
English (en)
Other versions
KR100688875B1 (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 KR20050024371A publication Critical patent/KR20050024371A/ko
Application granted granted Critical
Publication of KR100688875B1 publication Critical patent/KR100688875B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Abstract

본 발명은 캐쉬 메모리 제어 장치 및 방법에 관한 것으로, 좀 더 구체적으로 주 메모리를 적어도 다른 블록들 중 하나와 인접하고 하나 이상의 비트를 포함하는 다수의 데이터 단위 (122)를 포함하는 다수의 블록들 (120)로 분할하는 제 1 분할 단계; 주 메모리의 각 블록을 하나 이상의 데이터 단위를 포함하는 다수의 구역으로 분할하는 제 2 분할 단계; 다른 인접 블록들과 각 주어진 블록의 각 구역들 중 일부와 연관하는 연관 단계; 및 상기 블록내에 있는 임의의 연관 구역들의 데이터 단위 중 하나가 어드레스 될 때, 캐쉬 메모리로의 주어진 다른 블록들 중 하나를 선인출하는 단계를 포함하는 것을 특징으로 한다.

Description

캐쉬 메모리 제어 장치 및 방법{METHODS AND APPARATUS FOR CONTROLLING A CACHE MEMORY}
본 발명은 캐쉬 메모리를 제어하는 장치 및 방법에 관한 것으로, 좀 더 구체적으로 캐쉬 메모리로의 데이터를 선인출(pre-fetching)하는 장치 및 방법들에 관한 것이다.
근래에, 최첨단 컴퓨터 응용은 점점 더 복잡해지고 있고, 시스템을 마이크로프로세싱하는 것에 대한 요청이 증가하고 있어서, 데이터를 보다 더 빨리 처리할 수 있는 컴퓨터가 요구되고 있다. 또한, 그래픽 응용은 마이크로프로세싱 시스템에 대한 높은 요구를 하고 있는데, 그것들은 방대한 데이터 엑세스, 데이터 계산, 상대적으로 짧은 시간 안에 원하는 시각적 결과들을 얻기 위한 데이터 처리(문제 해결을 위해 자료를 변화시키는 과정)등이 필요로 하기 때문이다. 종래의 마이크로프로세서는 2ns(nanosecond)같이 빠른 사이클 시간(즉, 마이크로프로세서가 데이터를 조작할 수 있는 단위 시간)을 가짐에 비하여, 주 메모리에 저장된 데이터로의 엑세스 시간이 마이크로프로세서 사이클 시간보다 상당히 길다. 예를 들면, DRAM(dynamic random access memory)기술을 이용해 구현된 주 메모리로부터 1 바이트의 데이터를 얻는데 필요한 엑세스 시간은 대략 60ns정도 된다.
DRAM 메모리로의 상대적 긴 엑세스 시간 때문에 생긴 정체를 개선하기 위해서, 종래 기술에서는 캐쉬 메모리를 이용해왔다. 캐쉬 메모리는 DRAM 메모리보다 매우 빠르며 데이터 저장 기능은 주 메모리에 의해 증대된다. 예를 들면, L2 캐쉬 메모리는 외부적으로 마이크로프로세서와 연결되고 L1 캐쉬 메모리는 내부적으로 마이크로프로세서와 연결된다. 이 메모리들은 DRAM 기술을 이용해 구현된 주 메모리보다 훨씬 더 빠르다. 예를 들면, L2 캐쉬 메모리는 SRAM(static random access memory)기술을 이용해 구현될 수 있는데, 대략 DRAM 기술보다 2~3배 빠르다. 또한, L1 캐쉬 메모리는 L2 캐쉬 메모리보다 훨씬 더 빠르다.
상대적으로 높은 가격 때문에, 캐쉬 메모리는 일반적으로 주 메모리보다 매우 작다. 따라서, 기존의 알고리즘은 캐쉬 메모리에 어떤 데이터가 저장되어야 하는지를 결정하기 위해 채택되었다. 예를 들면 이 기존의 알고리즘은 "참조 국소성(locaㅣity of reference)"이라는 이론적 개념에 기초하고 있는데, 이는 큰 프로그램의 상대적으로 작은 영역들이 때를 맞추어 어떤 특정한 지점에서 사용된다는 장점을 가진다. 그러므로 참조 국소성의 개념에 따라, 오직 모든 실행할 수 있는 프로그램의 작은 부분만이 때에 맞게 캐쉬 메모리 임의의 특수한 지점에 저장된다.
참조 국소성의 장점을 도입한 알고리즘의 상세한 내용이나 캐쉬 메모리로의 데이터 저장을 제어하기 위한 다른 개념들을 이 명세서에서 설명하기에는 너무 방대하다. 그러나 다양한 응용들의 데이터 처리 목표가 매우 다른 것처럼 어떤 알고리즘이 모든 응용에서 적합한 것은 아니라고 말하기에는 충분하다.
예를 들면, 그래픽 응용에서 강력한 데이터 저장 국소성은 주 메모리 안에 존재하고, 그 국소성은 주 메모리내의 픽셀 데이터 좌표의 함수이다. 좀더 구체적으로, 그래픽 응용에 이용된 주 메모리는 개념적으로 2차원으로 구조화되고, 영상의 각 픽셀 정보는 특정한 X,Y좌표에 저장된다. 그래픽 응용에 이용된 주 메모리는 더욱이 다수의 직사각 블록들로 구조화되는데, 이 각각의 블록들은 다수의 픽셀에 대한 정보를 가지고 있다. 게다가 특정한 블록 내에 있는 픽셀들의 주소 지정은 대단히 선형적이다. 즉, 픽셀 정보에 대한 엑세스는 주어진 직사각 블록 내에서 대단히 순차적이다.
그러므로, 그래픽 응용에서 캐쉬 메모리를 제어하는 기존의 알고리즘은 전형적으로 주어진 캐쉬 선(line)이 전체 직사각 블록에 대한 픽셀 정보를 저장하도록 지시한다. 캐쉬 적중(hit)이 발생할 때(즉, 특정한 데이터에 대한 메모리 엑세스 요청이 캐쉬 메모리에 엑세스함으로 충족될 수 있을 때),주어진 직사각 블록 내부에 픽셀 정보의 높은 선형성은 다음 데이터 접근 요청에 대한 캐쉬 적중으로 될 수 있다. 반면에, 캐쉬 미스가 일어날 때 (즉, 특정한 데이터에 대한 메모리 엑세스 요청이 캐쉬 메모리에 엑세스함으로 충족될 수 없을 때), 원하는 데이터가 위치한 직사각형 블록 내부의 모든 픽셀 정보는 주 메모리로부터 읽혀지고 캐쉬 메모리에 저장된다. 불행히도, 이 기존의 알고리즘은 그래픽 응용에 이용된 메모리의 선형성과 강력한 국소성에 관련된 특성을 충분히 활용하지 못하고 있다. 게다가, 그러한 알고리즘은 원하지 않는 캐쉬 미스를 일으키고, 그래서 비효율적인 메모리 제어, 낮은 처리량, 그리고 저품질의 그래픽 이미지화를 가져온다.
따라서, 기술에 있어서 메모리 효율을 증가, 처리량 증가, 및 그래픽 이미지의 질적 향상을 위해서 메모리에 나타난 선형성과 강력한 국소성을 이용하는 전체적인 메모리 제어(캐쉬 메모리를 포함하여)에 대한 새로운 장치 및 방법이 필요하다.
발명의 설명을 위하여 도면을 도시하였다. 그러나 주지한 바와 같이 본 발명은 도시된 바에 한정되지 않는다.
도 1은 본 발명의 실시예에 따른 메모리 제어에 적합한 장치의 모습(또는 방법의 모습)을 나타내는 계통도(블록 다이어그램)이다.
도 2는 도 1에서 도시된 것처럼 본 발명의 실시예에 따라 수행되거나 실행되는 임의의 작용/기능을 보여주는 흐름도이다.
도 3은 도 1에 도시된 장치(또는 방법)와 관련하여 이용될 메모리의 구체적인 특징을 그린 개념도이다.
도 4는 도 3의 메모리의 개념적 세부사항을 설명한 개념도이다.
도 5는 도 3의 메모리의 개념적 세부사항을 계속 설명한 개념도이다.
도 6은 도 3의 메모리의 데이터 블록의 구체적인 면의 세부사항을 설명한 개념도이다.
도 7A-7B는 본 발명의 하나 이상의 추가된 모습과 일치하여 메모리의 제어 및/또는 구현에 관련한 도 5에서 보여진 것에 대한 선택적 세부사항을 도시한다.
본 발명에 따르면, 메모리 제어 장치는 다수의 이차원 블록으로 분할된 주 메모리, 1 이상 바이트의 데이터를 포함하는 다수의 데이터 구역(zone)으로 분할된 각 블록, 다수의 구역으로 분할된 각 주어진 블록, 하나 이상의 데이터 단위(unit)를 가지고 있고 적어도 구역들 중 일부는 주어진 블록에 인접한 각 블록과 연관되는 각 구역, 주 기억 장치의 데이터로 주소를 받게 하고 각 데이터가 어느 구역에 위치하는지를 결정하기 위해 주소를 해독하는 주소 디코터(해독기), 주소 디코더가 각 구역에 위치한 데이터의 주소를 받을 때 캐쉬 메모리로 각 구역을 연관시키는 블록을 선인출 하기 위한 요청을 생성하는 선인출 주소 생성기를 포함한다.
예를 들면, 각 블록은 왼쪽 인접 블록과 공통된 왼쪽 경계, 오른쪽 인접 블록과 공통된 오른쪽 경계, 상부 인접 블록과 공통된 상부 경계, 및 하부 인접 블록과 공통된 하부 경계를 포함한다. 게다가, 각 블록들은 적어도 왼쪽에 인접한 블록과 연관되고 왼쪽 경계를 따라서 배열된 적어도 한 데이터 단위를 포함하는 왼쪽 구역, 오른쪽에 인접한 블록과 연관되고 오른쪽 경계를 따라서 배열된 적어도 한 데이터 단위를 포함하는 오른쪽 구역, 상부에 인접한 블록과 연관되고 상부 경계를 따라서 배열된 적어도 한 데이터 단위를 포함하는 상부 구역, 및 하부에 인접한 블록과 연관되고 하부 경계를 따라서 배열된 적어도 한 데이터 단위를 포함하는 하부 구역 중 하나를 포함한다.
여기서 왼쪽 구역은 적어도 상부 경계로부터 하부 경계로까지 뻗은 왼쪽 분활선에 의해 정의되고 왼쪽 구역은 적어도 왼쪽 경계와 왼쪽 분할선 사이에 위치한 데이터 단위 중 일부를 포함한다. 오른쪽 구역은 적어도 상부 경계로부터 하부 경계로까지 뻗은 오른쪽 분할선에 의해 정의되고 오른쪽 구역은 적어도 오른쪽 경계와 오른쪽 분할선 사이에 위치한 데이터 단위 중 일부를 포함한다. 상부 구역은 적어도 왼쪽 경계로부터 오른쪽 경계로까지 뻗은 상부 분할선에 의해 정의되고 상부 구역은 적어도 상부 경계와 상부 분할선 사이에 위치한 데이터 단위 중 일부를 포함한다. 하부 구역은 적어도 왼쪽 경계로부터 오른쪽 경계로까지 뻗은 하부 분할선에 의해 정의되고 하부 구역은 적어도 하부 경계와 하부 분할선 사이에 위치한 데이터 단위 중 일부를 포함한다.
바람직하게는, 왼쪽, 오른쪽, 상부, 및 하부 분할선은 임의의 주소 비트들에 대응되고, 주소 디코더는 각 데이터가 어느 비트에 기반해서 어느 구역에 위치되는지를 결정하는 주소를 디코더 하게 한다.
예를 들면, 각 블록은 하나 이상의 데이터 단위를 가지고 있는 왼쪽, 오른쪽, 상부 및 하부 분할선 사이에 놓인 중심 구역을 포함한다. 그러나 중심 구역은 임의의 인접 블록과도 연관되지 않는다. 각 블럭은 왼쪽 경계, 상부 경계, 상부 분할선, 왼쪽 분할선 사이에 위치한 데이터 단위를 포함하는 왼쪽 상부 구역(그리고 왼쪽 상부 구역은 어떤 인접한 블록과도 연관되지 않는다)및 왼쪽 경계, 하부 경계, 하부 분할선, 왼쪽 분할선 사이에 위치한 데이터 단위를 포함하는 왼쪽 하부 구역 (왼쪽 하부 구역은 어떤 인접한 블록과도 연관되지 않는다)및 오른쪽 경계, 상부 경계, 상부 분할선, 오른쪽 분할선 사이에 위치한 데이터 단위를 포함하는 오른쪽 상부 구역(오른쪽 상부 구역은 어떤 인접한 블록과 연관되지 않는다)및 오른쪽 경계, 하부 경계, 하부 분할선, 오른쪽 분할선 사이에 위치한 데이터 단위를 포함하는 오른쪽 하부 구역(오른쪽 하부 구역은 어떤 인접한 블록과 연관되지 않는다)중 적어도 하나를 포함한다.
본 발명에 따라, 방법은 주 메모리를 다수의 2차원 블록으로 분할하고 분할된 각 블록을 1 이상의 데이터를 포함하는 다수의 데이터 단위로 분할하는 제 1 분할 단계; 주 메모리의 각 블록을 1 이상의 데이터 단위를 포함하는 다수의 구역으로 분할하는 제 2 분할 단계; 다른 블록들과 적어도 하나의 블록의 적어도 하나의 상기 구역을 연관시키기는 연관 단계; 및 적어도 구역들 중 하나의 내부에 있는 데이터 단위 중 하나 이상의 데이터가 어드레스 될 때 다른 블록의 일부분을 캐쉬 메모리로 선인출하는 선인출 단계를 포함한다.
바람직하게는, 적어도 각 블록의 일부 구역은 한 인접 블록과 연관된다. 게다가 블록의 한 구역은 바람직하게는 주어진 블록과 연관된 인접 블록 사이의 경계를 따라 배열된다.
여기서 발명의 명세가 첨부된 도면들과 함께 주어질 때 다른 모습, 특성, 장점 등이 당업자에게 명백하게 될 것이다.
도면들을 참조하면, 본 발명에 따른 메모리 제어 방법의 장치 및/또는 모습이 도 1에서 도시된다. 간단하고 명료한 설명을 위하여 도 1의 계통도가 참조되고 장치 (100)을 도시함으로써 설명될 것이다. 그러나 이러한 설명은 동일한 효력을 가진 다양한 방법들에 쉽게 적용될 수 있다. 장치 (100)은 프로세서 (102), 주소 레지스터 (104), 주소 디코더 (106), 선인출 주소 생성기 (108), 메모리 제어기 (110), 주 메모리 (112), 및 캐쉬 메모리 (114)를 포함한다.
프로세서 (102)는 주 메모리나 캐쉬 메모리 (114)로 부터 데이터를 요청하게 하거나 원하는 결과를 이루기 위해 데이터를 제어하게 하는 임의의 종래기술을 이용함으로 구현된다. 예를 들면, 프로세서 (102)는 표준 마이크로프로세서나 분산된 마이크로프로세서등을 포함한 소프트웨어나 펌웨어를 실행하게 할 수 있는 알려진 어떤 마이크로프로세서를 이용함으로 구현된다. 예를 들면, 프로세서 (102)는 음영 비율 정도, 색 정보, 문자 데이터, 다면 정보, 비디오 프레임 정보 등을 포함한 픽셀 데이터의 요청과 제어를 가능하게 하는 그래픽 프로세스일 수 있다.
프로세서 (102)는 주소 레지스터 (104)와 메모리 제어기 (110)로 메모리 주소와 같은 데이터 엑세스 요청을 제공한다. 캐쉬 메모리 (114)에 저장된 정보를 제어한다는 관점에서, 주 메모리 (112)와 비교해 원하는 결과를 달성하기 위해서 주소 디코더 (106)와 선인출 주소 생성기 (108)은 메모리 제어기 (110)로 정보 제공을 하게 한다. 더 자세히는, 장치 (100)의 다양한 기능 블록들의 세세한 상호작용을 묘사하기 위하여, 도 2 - 5가 계속 참조된다.
도 2는 도 1에 도시된 기능 블록에 따라 수행되며 구현되는 어떤 동작/기능을 나타내는 흐름도이다. 동작 (200)에서 주 메모리 (도 1의 112)는 다수의 2차원 데이터 블록으로 분할된다. 주 메모리 (112)의 분할은 큰 범위에서 주 메모리 (112)가 물리적으로 분할될 필요가 없는 개념적 분할이라는 것이 이해된다. 바람직하게는, 주 메모리 (112)는 장치 (100)의 다양한 기능 블록들에 의해 수행된 데이터 저장과 데이터 엑세스와 비교하여 기능적으로 분할된다.
좀더 구체적으로 도 3을 참조하면, 주 메모리 (112)는 되도록 DRAM 같은 공지의 기술들을 이용함으로 구현되고, 다수의 데이터 저장 장소 (112A)를 포함한다. 각 데이터 저장 장소 (112A)는 1 바이트의 데이터를 나타내고, 각 바이트는 예를 들면 8 비트, 16 비트, 32 비트, 64 비트 등을 포함한다. 데이터 저장 장소 (112A)는 16진법 주소 방식 즉, 0000,0001,0002,...003F,...023F에 의해 표시된다. 도 3에 도시된 주 메모리 (112)는 1,024개 데이터 저장 장소 (112A)를 포함하고, 각 데이터 위치 (112A)는 1 바이트의 데이터를 저장할 수 있다. 주 메모리 (112)의 크기는 단지 예시에 불과하며 발명의 범위를 한정하기 위한 것은 아니다.
도 2의 동작 (200)으로 다시 돌아가서, 주 메모리 (112)는 2차원 데이터 블록 (120)들로 분할되고, 도 3을 참조하면 주 메모리 (112)의 데이터 저장 장소 (112A)는 예를 들면 주소 0000-003F에 저장된 모든 픽셀의 정보(즉, 몇 바이트의 데이터)를 가지고 있는 데이터 블록 (120)으로 구성된다. 여기서 영상의 한 픽셀을 나타내는데 필요한 정보는 4 바이트가 필요하다고 가정한다.( 예를 들면, 음영 정도에 대해 1바이트, 색깔에 대해 1바이트 등등) 따라서, 이 예에서 도 3에 도시된 메모리 (112)는 114개 픽셀들에 관계된 정보를 저장할 수 있다. 각 데이터 블록 (120)은 주 메모리 (112)에 저장된 144개의 픽셀의 일부분에 관계된 정보를 가지고 있다. 여기서 각 데이터 블록 (120)은 X,Y 직각 좌표계상에 픽셀들의 각 부분에 관련된 정보가 위치한 2차원 직사각형 블록이다.
도 2와 3을 참조하면, 동작 (202)에서, 각 데이터 블록 (120)은 다수의 데이터 단위 (122)로 분할되는데, 각 데이터 단위 122는 각 한 픽셀에 관련된 정보를 포함한다. 계속하면, 도 3에 도시된 각 데이터 단위 (122)는 4바이트의 데이터를 포함한다. 데이터 단위 (122)가 발명에 따라 구성된 많은 방식들 중에, 선형 순차(liner sequence)가 지그 재그 패턴에 따르는 것 같이 데이터 단위 (122)는 왼쪽에서 오른쪽으로 그리고 위에서 아래로 순차적으로 구성되는 방식이 채택된다. 이 방식에서, 데이터들은 0000, 0001, 0002, 0003(처음 데이터 단위 122안에서),0004, 0005, 0006, 0007 (다음 데이터 단위 122에서) 등의 주소 순서로 흐른다. 데이터 단위 (122)안에서 데이터는 순차적으로 데이터 블록 120을 훑으며 왼쪽에서 오른쪽으로 (X방향),위에서 아래로 (Y방향) 흐르는 것을 계속한다.
도 4에 도시된 것처럼, 주 메모리 (112)내에 있는 다른 픽셀 그룹과 관련된 정보는 계속 데이터 블록 (120)으로 분할되고, 각 데이터 블록 (120)은 2차원 X,Y 격자에 배치된다. 계속하면, 이것은 중심 블록(표지 되지 않은),왼쪽 상부 데이터 블록, 상부 데이터 블록, 오른쪽 상부 데이터 블록, 왼쪽 데이터 블록, 오른쪽 데이터 블록, 왼쪽 하부 데이터 블록, 하부 데이터 블록, 오른쪽 하부 데이터 블록을 포함하는 9개의 데이터 블록 (120)을 생성한다. 왼쪽 상부 데이터 블록 (120)(즉, 도 3에 도시된 데이터 블록 )이 주소들 0000-003F에 저장된 데이터의 정보를 나타낸다고 가정하면, 도 4에 도시된 중심 블록은 주 메모리 (112)의 주소 0100-003F에 저장된 픽셀 정보를 가지고 있다.
메모리 제어기 (110)에 의해 채택된 알고리즘이 캐쉬 메모리 (114) 안에 주어진 캐쉬선이 모든 데이터 블록 (120)의 픽셀 정보를 저장하도록 지시한다고 가정하면, 프로세서 (102)가 예를 들면, 주소 0114와 같은 곳에 저장된 데이터를 요청 (도 4의 중심 블록 내에 있는)하고 캐쉬 메모리 (114)가 중앙 블록과 연관된 픽셀 정보를 함유하지 않을 때, 캐쉬 미스가 생긴다. 결과적으로, 메모리 제어기 (110)은 주소 0100-013F에 저장된 주 메모리 (112)로부터 픽셀 정보를 읽고 캐쉬 메모리 (114)에 같은 것을 저장한다.
계속하여, 다음 데이터 엑세스 요청은 아마도 메모리 위치 0115에 저장된 데이터일 것이다. 그것은 이미 캐쉬 메모리 (114)에 저장되어 있고, 캐쉬 적중으로 귀착된다. 게다가, 프로세서 (102)가 주소 0114-0117(즉, 같은 데이터 단위 (122) 내에 있는 주소들)에 저장된 모든 바이트를 요청했다고 생각하면, 다음 데이터 엑세스 요청은 중앙 데이터 블록 안에 있을 수도 있지 않을 수도 있다. 또한, 다음 데이터 요청은 왼쪽 상부 데이터 블록 (120), 상부 데이터 블록 (120), 오른쪽 상부 데이터 블록 (120)등 같은 그러한 인접 데이터 블록 (120)내부에 있는 1 바이트 데이터일지 모른다. 사실 만약 다음 바이트가 캐쉬 메모리 (114)에 이미 저장이 안된 인접 데이터 블록 (120)에 위치한다면, 캐쉬 미스가 일어난다.
본 발명의 목적은 다른 데이터 블록 내에서 데이터 요청에 기초하여 캐쉬 메모리 (114)로 하나 이상의 인접 블록 (120)들을 선인출 함으로서 캐쉬 적중율을 증가시키는 방법과 장치를 제공하기 위함이다. 이러한 목적을 달성하기 위하여, 동작 (도 2의 204)에서 각 데이터 블럭 (120)은 오히려 다수의 구역으로 분할되고, 각 구역은 하나 이상의 데이터 단위 (122)를 포함한다.
도 5를 참조하면, 예를 들면, 중앙 데이터 블럭 (120)은 구역1 - 구역9로 표지된 9개의 구역으로 분할된다. 비록 도 5가 구역들로 분할된 중앙 데이터 블럭 (120)만을 도시할지라도, 본 발명은 다수의 데이터 블럭 (120)들이 구역으로 분할되고, 바람직하게는, 각 데이터 블럭 (120)은 이와 같이 분할되는 것을 제공한다. 이 예에서, 구역 1, 3, 7, 9는 각각 한 개의 데이터 단위 (122)를 포함한다. 구역 2, 4, 6, 8 각각은 두개의 데이터 단위 (122)를 포함한다. 또한 구역 5는 4개의 데이터 단위 (122)를 포함한다.
동작(도 2의 206)에서, 도 5에 도시된 중앙 데이터 블럭 (120)처럼 적어도 각 데이터 블럭 (120)내에 있는 각 구역 중 일부는 중앙 데이터 블럭 (120)과 인접한 데이터 블럭 (120)들 중 하나와 연관된다. 예를 들면, 본 발명에 따라서, 구역 2는 상부 데이터 블럭 (120)과 연관되고, 구역 4는 왼쪽 데이터 블럭 (120)과 연관된다. 구역 6은 오른쪽 데이터 블럭 (120)과 연관되고, 구역 8은 하부 데이터 블럭 (120)과 연관된다. 중앙 데이터 블럭 (120)의 구역 1, 3, 7, 9는 오히려 어떤 인접 데이터 블럭 (120)들과도 연관되지 않는다. 이런 연관에 대한 합리적 이유는 후술하는 부분에서 자세히 다룰 것이다.
동작(도 2의 208)에서, 프로세서 (120)은 엑세스 요청을 발생시킨다(예를 들면, 1 이상 바이트 데이터의 주소들). 전술한 것처럼, 이 데이터는 데이터 블럭 (120) 구역 내에 있는 데이터 단위 (122)에 위치한다. 엑세스 요청은 주소 레지스터 (104)와 메모리 제어기 (110)에 제공된다(작용 208). 메모리 제어기 (110)은 엑세스 요청이 캐쉬 메모리 (114)의 캐쉬선과 연관된 많은 캐쉬 태크(tag)들 중 하나와 일치하는지 아닌지에 따라서 결정한다. 만약 캐쉬 적중이 일어난다면, 즉 엑세스 요청이 캐쉬 메모리 (114)내에 저장된 데이터와 일치한다면, 원하는 바이트의 데이터가 캐쉬 메모리 (114)로부터 읽혀지고 프로세서 (102)로 제공된다(또는 어떤 다른 적합한 장치나 과정에 제공된다).
본 발명에 따르면, 주소 레지스터 (104)는 바람직하게는 주소 디코더 (106)로 엑세스 요청(즉, 원하는 데이터로 주소들)을 제공한다. 주소 디코더 (106)은 데이터가 어느 구역에 위치하는지를 결정하기 위한 엑세스 요청을 디코더 할 수 있게 (즉, 원하는 데이터의 주소를 디코드 하게) 한다.(동작 210). 예를 들면, 주소 디코더 (106)은 원하는 데이터가 위치한 구역을 결정할 때 오히려 주소의 비트 분석을 하게 한다. 이것은 지금 도 6에서 상세하게 설명될 것이다. 중앙 데이터 블럭 (120)은 9개의 구역으로 분할됐는데 왼쪽 인접 데이터 블록 (120)과 공통인 왼쪽 경계 (130), 오른쪽 인접 데이터 블록 (120)과 공통인 오른쪽 경계 (132), 상부 인접 데이터 블록 (120)과 공통인 상부 경계 (134), 및 하부 인접 데이터 블럭 (120)과 공통인 하부 경계 (136)에 의해 정의된다. 게다가 구역은 상부 경계 (134)로부터 하부 경계 (136)까지 뻗은 왼쪽 분할선 (140), 또한 상부 경계 (134)부터 하부 경계 (136)까지 뻗은 오른쪽 분할선(142), 왼쪽 경계 (130)에서 오른쪽 경계 (132)까지 뻗은 상부 분할선 (144)와 또한 왼쪽 경계 (130)에서 오른쪽 경계 (132)까지 뻗은 하부 분할선 (146)에 의해 정의된다.
경계와 분할선의 이러한 예에 따르면, 구역 1(왼쪽 상부 구역)은 왼쪽 경계 (130), 상부 경계 (134), 상부 분할선 (144), 및 왼쪽 분할선 (140)사이에 위치한 한 개의 데이터 단위 (122)를 포함한다. 구역 2(상부 구역)은 상부 경계 (134)와 상부 부할선 (144)사이에 위치한 두 개의 데이터 단위 (122)을 포함한다. 구역 3(오른쪽 상부 구역)은 오른쪽 경계 (132), 상부 경계 (134), 상부 분할선 (144) 및 오른쪽 분할선 (142) 사이에 위치한 한 개의 데이터 단위 (122)를 포함한다. 구역 4( 왼쪽 구역)는 왼쪽 경계 (130)과 왼쪽 분할선 (140) 사이에 위치한 두 개의 데이터 단위들 (122)를 포함한다. 구역 5(중앙 구역)는 왼쪽, 오른쪽, 상부, 및 하부 분할선(140, 142, 144, 146) 사이에 위치한 네 개의 데이터 단위 (122)들을 포함한다. 구역 6(오른쪽 구역)은 오른쪽 경계 (132)와 오른쪽 분할선 (142) 사이에 위치한 두 개의 데이터 단위를 포함한다. 구역 7(왼쪽 하부 구역)은 왼쪽 경계 (130), 하부 경계 (136), 하부 분할선 (146), 왼쪽 분할선 (140) 사이에 놓인 한 개의 데이터 단위 (122)를 포함한다. 구역 8(하부 구역)은 하부 경계 (136)과 하부 분할선 (146)사이에 위치한 두 개의 데이터 단위를 포함한다. 마지막으로, 구역 9(오른쪽 하부 구역)는 오른쪽 경계 (132), 하부 경계 (136), 하부 분할선 (146), 및 오른쪽 분할선 (142) 사이에 위치한 한 개의 데이터 단위 (122)를 포함한다.
왼쪽 분할선 (140), 오른쪽 분할선 (142), 상부 분할선 (144), 하부 분할선 (146)은 중앙 데이터 블럭 (120)내에 저장된 데이터의 비트 주소에 의해 정의된다(그리고 확대하면 임의의 데이터 블록;120). 또한, 왼쪽 분할선 (140), 오른쪽 분할선 (142)은 엑세스 요청 주소의 세 번째와 두 번째 비트에 의해 정의된다. 예를 들면 세 번째와 두 번째 비트로부터 디코드되거나 확언된다. 유사하게, 상부 분할선 (144)와 하부 분할선 (146)은 엑세스 요청 주소의 다섯 번째와 네 번째 비트에 의해 정의된다. 이런 기술들은 각 구역의 경계를 정의하거나 디코더 하기 위해 사용된 주소의 특별한 비트들이 데이터 블록 (120)의 크기, 데이터 단위 (122)의 크기, 바이트 크기, 분할선과 경계의 위치와 궤도에 대한 의존성을 판단할 것이다.
계속하면, 주소 디코더 (106)은 원하는 데이터가 어느 구역에 위치하는지를 결정하기 위한 엑세스 요청 주소 비트 5, 4, 3, 2를 분석한다(도 2의 동작 210). 동작 (212)에서, 검출된 구역이 인접한 데이터 블록 (120)과 연관되는지에 따라 결정이 이루어진다. 선인출 주소 생성자 (108)는 동작 (206)에 의해 만들어진 연관에 기반한 이런 결정을 하게한다. 예를 들면, 만약 엑세스 요청 주소가 도 5의 011C 이라면, 주소 디코더 (106)은 엑세스 요청 주소 비트를 분석하고 원하는 바이트가 구역 6에 위치되도록 결정한다. 결과적으로 선인출 주소 생성기 (108)은 오히려 주 메모리 (112)로부터 캐쉬 메모리 (114)로의 오른쪽 데이터 블록 (120)을 선인출 하기 위한 요청을 발생시킨다(동작 214). 만약 주소 디코더 (106)에 의해 결정된 구역이 인접한 데이터 블록 (120)과 연관되지 않다는면(동작 212), 처리 흐름는 오히려 다음 엑세스 요청이 프로세서 (102)로부터 받은 동작 (208)으로 분기한다.
도 5와 관련하여, 구역 2, 4, 6과 8은 어떤 가정에 기반한 상부 데이터 블록 (120), 왼쪽 데이터 블록 (120), 오른쪽 데이터 블록 (120), 하부 데이터 블록 (120)과 각각 연관된다. 예를 들면, 통용하는 엑세스 요청이 중심 데이터 블록 (120)의 구역 2에 위치한 한 바이트의 데이터를 위해 조성될 때, 상부 데이터 블록 (120)으로의 다음 엑세스 요청 가능성은 높다고 가정되었다. 유사한 가정이 왼쪽 데이터 블록 (120)에 대하여 구역 4에 대하여 성립하고, 구역6은 오른쪽 데이터 블록 (120)에 대하여, 구역 8은 하부 데이터 블록 (120)에 대하여 성립된다.
게다가, 통용하는 엑세스 요청이 구역 5에 위치한 데이터였을 때 중앙 데이터 블록 (120) 외부로의 그 다음 엑세스 요청은 없을 것이라고 가정되었다. 구역 1, 3, 7, 9에 관하여서는, 비록 그 다음 접근 요청이 인접 데이터 블록 (120)으로는 가능하지 않을지라도, 인접한 데이터 블록 (120)은 왼쪽 데이터 블록, 왼쪽 상부 데이터 블록, 상부 데이터 블록이 됨이 동등히 가능할 것이라고 가정된다. 그러므로 예를 들면, 이들 인접한 블록 (120)들 중 주어진 하나와 구역 1과의 연관은 반드시 더 높은 캐쉬 적중율로 귀착되지는 않을 것이다. 물론 상황의 긴급성에 의존하여, 하나 이상의 인접 데이터 블록 (120)과 구역 1, 3, 7 및 구역 9의 연관은 유용하게 증명될 수 있고 이것은 본 발명의 개선된 모습으로 계획된다.
도 5와 6에 도시된 구역의 특정한 배치는 발명에 의해 요청되지 않는다. 게다가 도 7A-7B에 도시된 것처럼 선택적인 구역 배치의 도면이 있고, 여기서 이들 구역의 배치는 오직 도면으로서 주어지고 발명의 범위를 제한하지 않는다.
적어도 본 발명의 한 모습에 따라, 주 메모리 (112)와 캐쉬 메모리 (114)를 제어하기 위한 장치 및 방법은 도 1에 도시된 것 같이 적당한 하드웨어를 이용함에 의해 이루어질 수도 있다. 그러한 하드웨어는 표준 디지털 회로, 소프웨어나 펌웨어 프로그램을 쉽게 실행하게 하는 어떤 알려진 과정들, 하나 이상의 프로그램 할 수 있는 디지털 장치나 시스템들, 프로그램할 수 있는 읽기만 되는 메모리들(PROMs), 프로그램할 수 있는 배열 논리 장치(PALs)등과 같은 임의의 공지된 기술을 이용해서 구현될지 모른다. 게다가, 비록 도 1에서 도시된 장치 (100)은 어떤 기능 블록으로 분할됨으로 도시됐지만, 그러한 블록은 분리된 회로에 의해 구현되고 하나 이상의 기능 단위로 결합될 지 모른다. 게다가 여전히, 발명은 수송성이나 분산성을 위한 적당한 저장 장치(플로피 디스크, 메모리 칩 등과 같은)에 저장될 소프트웨어나 펌웨어 프로그램으로 구현될 가능성이 있다.
여기서 설명되고 청구된 메모리 제어 방법과 장치는 예를 들면, 그래픽 응용에서 사용되는 강력한 메모리의 국소성과 선형성에 연관된 특성을 이용한다. 캐쉬 적중의 잠재적인 증가는 일어나고 그래서 메모리 효율, 처리량, 및 그래픽 이미지의 질의 증가가 획득된다.
비록 본 발명이 특정한 실시예에 따라 설명되었지만, 이 실시예는 단지 본 발명 원리와 응용을 설명하기 위한 것일 뿐이다. 수 많은 변경이 이루어질 수 있고 첨부된 청구항에서 정의된 것같이 다른 작품들이 본 발명의 정신과 규모에서 벗어나지 않게 발명 될 수 있음이 이해되어야 한다.

Claims (16)

  1. 다수의 이차원 블록들로 분할된 주 메모리, 1 이상 바이트의 데이터를 포함하는 다수의 데이터 단위(unit)를 포함하고 각각 다수의 구역(zone)으로 분할된 각 블록, 1 이상의 데이터 단위를 포함하고 적어도 각 구역의 일부는 주어진 블럭에 인접하는 각각의 블록과 연관된 각 구역;
    상기 주 메모리 내에 있는 데이터로 주소를 받게 하고 상기 각 데이터가 어느 구역에 위치하는가를 결정하기 위하여 상기 주소들을 디코더 하도록 동작하는 주소 디코더; 및
    상기 주소 디코더가 주소를 상기 각 구역에 위치한 수 바이트의 데이터로 받을 때 각 구역과 연관된 상기 블록을 선인출 하는 요청을 캐쉬 메모리에 생성하기 위한 선인출 주소 생성기를 포함하는 캐쉬 메모리 제어 장치.
  2. 제 1항에 있어서,
    상기 각 블록은 왼쪽 인접 블록을 가지는 왼쪽 경계 공통, 오른쪽 인접 블록과 공통인 오른쪽 경계, 상부 인접 블록과 공통인 상부 경계, 하부 인접 블록과 공통인 하부 경계 중 적어도 하나를 포함하고,
    상기 각 블록은 상기 왼쪽 인접 블록과 연관되고 상기 왼쪽 경계를 따라서 배치된 데이터 단위를 적어도 하나 포함하는 왼쪽 구역, 상기 오른쪽 인접 블록과 연관되고 상기 오른쪽 경계를 따라 배치된 데이터 단위를 적어도 하나 포함하는 오른쪽 구역, 상기 상부 인접 블록과 연관되고 상기 상부 경계를 따라서 배치된 데이터 단위를 적어도 하나 포함하는 상부 구역, 상기 하부 인접 블록과 연관되고 상기 하부 경계를 따라 배치된 데이터 단위를 적어도 하나 포함하는 하부 구역 중 적어도 하나를 포함하는 것을 특징으로 하는 캐쉬 메모리 제어 장치.
  3. 제 2항에 있어서,
    상기 왼쪽 구역은 부분적으로 상기 상부 경계에서 상기 하부 경계까지 뻗은 왼쪽 분할선에 의해 정의되며, 상기 왼쪽 경계와 상기 왼쪽 분할선 사이에 위치된 데이터 단위 중 적어도 일부를 포함하고,
    상기 오른쪽 구역은 부분적으로 상기 상부 경계에서 상기 하부 경계까지 뻗은 오른쪽 분할선에 의해 정의되며, 상기 오른쪽 경계와 상기 오른쪽 분할선 사이에 위치된 데이터 단위 중 적어도 일부를 포함하고,
    상기 상부 구역은 부분적으로 상기 왼쪽 경계에서 상기 오른쪽 경계까지 뻗은 상부 분할선에 의해 정의되며, 상기 상부 경계와 상기 상부 분할선 사이에 위치된 데이터 단위 중 적어도 일부를 포함하며,
    상기 하부 구역은 부분적으로 상기 왼쪽 경계에서 상기 오른쪽 경계까지 뻗은 상기 하부 분할선에 의해 정의되며, 상기 하부 경계와 상기 하부 분할선 사이에 위치된 데이터 단위 중 적어도 일부를 포함하는 것을 특징으로 하는 캐쉬 메모리 제어 장치.
  4. 제 3항에 있어서,상기 왼쪽, 상기 오른쪽, 상기 상부,및 상기 하부 분할선은 임의의 비트 주소에 대응하고, 상기 주소 디코더는 각 상기 데이터 바이트가 어느 구역에 위치하는지를 결정하기 위한 임의의 비트에 기초하여 상기 주소를 디코드 하게 하는 것을 특징으로 하는 캐쉬 메모리 제어 장치.
  5. 제 3항에 있어서, 각 블록은 상기 왼쪽, 상기 오른쪽, 상기 상부 및 상기 하부 분할선 사이에 위치한 하나 이상의 상기 데이터 단위를 포함하는 중심 구역을 포함하며, 상기 중심 구역은 상기 임의의 인접 블록과 연관되지 않는 것을 특징으로 하는 캐쉬 메모리로의 선인출 제어 장치.
  6. 제 3항에 있어서,
    각 블록은 적어도 상기 왼쪽 경계, 상기 상부 경계, 상기 상부 분할선 및 상기 왼쪽 분할선 사이에 위치된 상기 데이터 단위를 포함하며 임의의 인접 블록과도 연관되지 않는 왼쪽 상부 구역;
    상기 왼쪽 경계, 상기 하부 경계, 상기 하부 분할선 및 상기 왼쪽 분할선 사이에 위치된 상기 데이터 단위를 포함하며 임의의 인접 블록과도 연관되지 않는 왼쪽 하부 구역;
    상기 오른쪽 경계, 상기 상부 경계, 상기 상부 분할선 및 상기 오른쪽 분할선 사이에 위치된 상기 데이터 단위를 포함하며 임의의 인접 블록과도 연관되지 않는 오른쪽 상부 구역; 및
    상기 오른쪽 경계, 상기 하부 경계, 상기 하부 분할선 및 상기 오른쪽 분할선 사이에 위치된 상기 데이터 단위를 포함하며 임의의 인접 블록과도 연관되지 않는 오른쪽 하부 구역 중 하나를 더 포함하는 것을 특징으로 하는 캐쉬 메모리로 제어 장치.
  7. 주 메모리를 다수의 2차원 블록들로 분할하고 분할된 각 블록을 1 이상 바이트의 데이터를 포함하는 다수의 데이터 단위로 분할하는 제 1 분할 단계;
    상기 주 메모리의 각 블록을 1 이상의 상기 데이터 단위를 포함하는 다수의 각 구역으로 분할하는 제 2 분할 단계;
    상기 다른 블록들과 적어도 하나의 상기 블록의 적어도 하나의 상기 구역 을 연관시키기는 연관 단계; 및
    적어도 상기 구역들 중 하나의 내부에 있는 상기 데이터 단위 중 하나 이상의 데이터가 어드레스 될 때 상기 다른 블록의 일부분을 캐쉬 메모리로 선인출하는 선인출 단계를 포함하는 캐쉬 메모리 제어 방법.
  8. 주 메모리를 다수의 2차원 블록들로 분할하고 분할된 각 블록을 1 이상 바이트의 데이터를 포함하는 다수의 데이터 단위로 분할하는 제 1 분할 단계;
    상기 주 메모리의 상기 각 블록을 1 이상의 상기 데이터 단위를 포함하는 다수의 각 구역으로 분할하는 제 2 분할 단계;
    상기 다른 블록들과 적어도 하나의 상기 각 블록의 적어도 하난의 상기 구역을 연관시키는 연관 단계; 및
    상기 블록의 상기 연관 구역 내에 있는 상기 데이터 단위 중 임의의 하나가 어드레스 될 때 상기 다른 단위 블록 중 하나의 일부분을 캐쉬 메모리로 선인출하는 단계를 포함하는 캐쉬 메모리 제어 방법.
  9. 제 8항에 있어서, 적어도 상기 각 블록의 일부 각 구역은 한 인접 블록과 연관되는 것을 특징으로 하는 캐쉬 메모리 제어 방법.
  10. 제 9항에 있어서, 적어도 상기 각 블록의 한 구역은 상기 블록과 연관된 인접 블록 사이의 경계를 따라 배열되는 것을 특징으로 하는 캐쉬 메모리 제어 방법.
  11. 제 10항에 있어서, 상기 블록의 각 경계를 따라서 배열된 상기 각 구역과 상기 각 연관된 인접 블록을 포함하는 것을 특징으로 하는 캐쉬 메모리 제어 방법.
  12. 각 블록이 공통의 경계를 따라 적어도 상기 다른 블록 중 하나에 인접해 있고 하나 이상의 데이터 바이트를 포함하는 다수의 데이터 단위를 포함하는 특징을 가지는 주 메모리를 다수의 2차원 직사각형 블록으로 분할하는 제 1 분할 단계;
    각 구역은 하나 이상의 상기 데이터 단위를 포함하는 특징이 있는 상기 주 메모리의 각 블록을 다수의 구역으로 분할하는 제 2 분할 단계 ;
    적어도 주어진 블록에 인접한 상기 다른 각 블록들과 각 주어진 블록의 상기 각 구역의 일부를 연관시키는 연관 단계; 및
    상기 블록의 연관된 상기 영역 중 어느 하나의 내에 있는 상기 데이터 단위 중 임의의 하나가 어드레스 될 때 주어진 상기 다른 블록들 중 하나를 캐쉬 메모리로 선인출하는 선인출 단계를 포함하는 캐쉬 메모리 제어 방법.
  13. 제 12항에 있어서,
    상기 각 블록들은 왼쪽 인접 블록과 공통인 왼쪽 경계, 오른쪽 인접 블록과 공통인 오른쪽 경계, 상부 인접 블록과 공통인 상부 경계, 및 하부 인접 블록과 공통인 하부 경계 중 적어도 하나를 포함하며,
    상기 각 블록들은 상기 왼쪽 인접 블록과 연관되고 상기 왼쪽 경계를 따라 배열된 적어도 한 데이터 단위를 포함하는 왼쪽 구역, 상기 오른쪽 인접 블록과 연관되고 상기 오른쪽 경계를 따라 배열된 적어도 한 데이터 단위를 포함하는 오른쪽 구역, 상기 상부 인접 블록과 연관되고 상기 상부 경계를 따라 배열된 적어도 한 데이터 단위를 포함하는 상부 구역 및 상기 하부 인접 블록과 연관되고 상기 하부 경계를 따라 배열된 적어도 한 데이터 단위를 포함하는 하부 구역 중 적어도 하나를 포함하는 것을 특징으로 하는 캐쉬 메모리 제어 방법.
  14. 제 13항에 있어서,
    상기 왼쪽 구역은 부분적으로 상기 상부 경계에서 상기 하부 경계까지 뻗은 왼쪽 분할선에 의해 정의되고, 상기 왼쪽 경계와 상기 왼쪽 분할선 사이에 위치한 상기 데이터 단위 중 적어도 일부를 포함하고,
    상기 오른쪽 구역은 부분적으로 상기 상부 경계에서 상기 하부 경계까지 뻗은 오른쪽 분할선에 의해 정의되고, 상기 오른쪽 경계와 상기 오른쪽 분할선 사이에 위치한 상기 데이터 단위 중 적어도 일부를 포함하고,
    상기 상부 구역은 부분적으로 상기 왼쪽 경계에서 상기 오른쪽 경계까지 뻗은 상부 분할선에 의해 정의되고, 상기 상부 경계와 상기 상부 분할선 사이에 위치한 상기 데이터 단위 중 적어도 일부를 포함하며,
    상기 하부 구역은 부분적으로 상기 왼쪽 경계에서 상기 오른쪽 경계까지 뻗은 하부 분할선에 의해 정의되고, 상기 하부 경계와 상기 하부 분할선 사이에 위치한 상기 데이터 단위 중 적어도 일부를 포함하는 것을 특징으로 하는 캐쉬 메모리제어 방법.
  15. 제 14 항에 있어서, 각 블럭은 상기 왼쪽, 상기 오른쪽, 상기 상부 및 상기 하부 분할선 사이에 위치한 하나 이상의 상기 데이터 단위를 포함하는 중심 구역을 포함하며 상기 중심 구역은 임의의 인접한 블록과 연관되지 않는 것을 특징으로 하는 캐쉬 메모리로 제어 방법.
  16. 제 14항에 있어서, 각 블록은 적어도 상기 왼쪽 경계, 상기 상부 경계, 상기 상부 분할선 및 상기 왼쪽 분할선 사이에 위치한 상기 데이터 단위를 포함하며 임의의 인접 블록과 연관되지 않는 왼쪽 상부 구역;
    상기 왼쪽 경계, 상기 하부 경계, 상기 하부 분할선 및 상기 왼쪽 분할선 사이에 위치한 상기 데이터 단위를 포함하며 임의의 인접 블록과 연관되지 않는 왼쪽 하부 구역;
    상기 오른쪽 경계, 상기 상부 경계, 상기 상부 분할선 및 상기 오른쪽 분할선 사이에 위치한 상기 데이터 단위를 포함하며 임의의 인접 블록과 연관되지 않는 오른쪽 상부 구역; 및
    상기 오른쪽 경계, 상기 하부 경계, 상기 하부 분할선 및 상기 오른쪽 분할선 사이에 위치한 상기 데이터 단위를 포함하며 임의의 인접 블록과 연관되지 않는 오른쪽 하부 구역 중 하나를 더 포함하는 것을 특징으로 하는 캐쉬 메모리 제어 방법.
KR1020047020902A 2002-07-01 2003-06-24 메모리 제어 장치 및 방법 KR100688875B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/187,072 2002-07-01
US10/187,072 US6816946B2 (en) 2002-07-01 2002-07-01 Methods and apparatus for controlling a cache memory
PCT/JP2003/007959 WO2004003753A1 (en) 2002-07-01 2003-06-24 Methods and apparatus for controlling a cache memory

Publications (2)

Publication Number Publication Date
KR20050024371A true KR20050024371A (ko) 2005-03-10
KR100688875B1 KR100688875B1 (ko) 2007-03-02

Family

ID=29779984

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047020902A KR100688875B1 (ko) 2002-07-01 2003-06-24 메모리 제어 장치 및 방법

Country Status (7)

Country Link
US (1) US6816946B2 (ko)
EP (1) EP1518178B1 (ko)
JP (1) JP4005083B2 (ko)
KR (1) KR100688875B1 (ko)
AU (1) AU2003243005A1 (ko)
TW (1) TWI232374B (ko)
WO (1) WO2004003753A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100654462B1 (ko) * 2005-08-24 2006-12-06 삼성전자주식회사 캐쉬 메모리를 메모리 블록으로 나누어 파일의 데이터를저장하는 캐쉬 방법 및 캐쉬 시스템

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493450B2 (en) * 2003-04-14 2009-02-17 Hewlett-Packard Development Company, L.P. Method of triggering read cache pre-fetch to increase host read throughput
JP2005313627A (ja) * 2004-03-31 2005-11-10 Seiko Epson Corp 液体噴射装置及び液体噴射装置の液体吐出方法
US7877546B2 (en) * 2004-08-09 2011-01-25 International Business Machines Corporation System, method, and circuit for retrieving data in data blocks into a cache memory from a mass data storage device based on a triggering event
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US8195889B2 (en) * 2009-03-25 2012-06-05 Advanced Micro Devices, Inc. Hybrid region CAM for region prefetcher and methods thereof
US8988531B2 (en) 2010-07-08 2015-03-24 Texas Instruments Incorporated Method and apparatus for sub-picture based raster scanning coding order
JP5708072B2 (ja) * 2011-03-14 2015-04-30 大日本印刷株式会社 画像変形装置および命令付加装置
US8560719B2 (en) * 2011-09-14 2013-10-15 Mobitv, Inc. Fragment server directed device fragment caching
KR20130081526A (ko) 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US20140184630A1 (en) 2012-12-27 2014-07-03 Scott A. Krig Optimizing image memory access
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
JP6127964B2 (ja) * 2013-12-26 2017-05-17 ソニー株式会社 信号切換装置および信号切換装置の動作制御方法
CN105431831B (zh) * 2014-02-17 2018-10-02 联发科技股份有限公司 数据存取方法和利用相同方法的数据存取装置
US9788078B2 (en) * 2014-03-25 2017-10-10 Samsung Electronics Co., Ltd. Enhanced distortion signaling for MMT assets and ISOBMFF with improved MMT QoS descriptor having multiple QoE operating points
CN110226158B (zh) 2017-12-29 2021-06-29 华为技术有限公司 一种数据预取方法、装置和存储设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995012165A1 (en) * 1993-10-22 1995-05-04 Gestalt Technologies, Incorporated Distributed management in a partitioned memory system
US5752037A (en) * 1996-04-26 1998-05-12 Hewlett-Packard Company Method of prefetching data for references with multiple stride directions
US6629188B1 (en) * 2000-11-13 2003-09-30 Nvidia Corporation Circuit and method for prefetching data for a texture cache
JP4093741B2 (ja) * 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
US20030154349A1 (en) * 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
US6760818B2 (en) * 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100654462B1 (ko) * 2005-08-24 2006-12-06 삼성전자주식회사 캐쉬 메모리를 메모리 블록으로 나누어 파일의 데이터를저장하는 캐쉬 방법 및 캐쉬 시스템

Also Published As

Publication number Publication date
US20040003178A1 (en) 2004-01-01
AU2003243005A1 (en) 2004-01-19
JP4005083B2 (ja) 2007-11-07
KR100688875B1 (ko) 2007-03-02
JP2005531847A (ja) 2005-10-20
US6816946B2 (en) 2004-11-09
TWI232374B (en) 2005-05-11
EP1518178A1 (en) 2005-03-30
EP1518178B1 (en) 2019-01-23
WO2004003753A1 (en) 2004-01-08
TW200402624A (en) 2004-02-16

Similar Documents

Publication Publication Date Title
KR100688875B1 (ko) 메모리 제어 장치 및 방법
US7050063B1 (en) 3-D rendering texture caching scheme
CN102460503B (zh) 显示源图像的变形版本的设备和方法
JP3172950B2 (ja) 予測キャッシングシステム
US8704840B2 (en) Memory system having multiple address allocation formats and method for use thereof
US6674443B1 (en) Memory system for accelerating graphics operations within an electronic device
KR100817057B1 (ko) 동일한 픽셀 데이터 그룹에 포함되는 픽셀 데이터들을메모리의 동일한 뱅크 어드레스로 매핑하는 매핑 방법 및비디오 시스템
US20080147980A1 (en) Enhancing Performance of a Memory Unit of a Data Processing Device By Separating Reading and Fetching Functionalities
US20070052713A1 (en) Systems and methods for storing and fetching texture data using bank interleaving
US6999091B2 (en) Dual memory channel interleaving for graphics and video
US20060274080A1 (en) Texture cache memory device, 3-dimentional graphic accelerator using the same and method thereof
US20050232027A1 (en) Data storage device, data storage control apparatus, data storage control method, and data storage control program
KR20040090392A (ko) 프레임 버퍼 접근 장치, 프레임 버퍼 접근 방법, 컴퓨터프로그램 및 기록 매체
US6924812B2 (en) Method and apparatus for reading texture data from a cache
JP2000293432A (ja) バンク可変メモリ
JP4534488B2 (ja) データ格納装置、データ格納制御装置、データ格納制御方法及びデータ格納制御プログラム
JP3397709B2 (ja) フレーム・バッファ線形アドレス指定方法
US7039751B2 (en) Programmable cache system
US6963343B1 (en) Apparatus and method for dynamically disabling faulty embedded memory in a graphic processing system
JP4487568B2 (ja) データ格納装置、データ格納制御装置、データ格納制御方法及びデータ格納制御プログラム
US6903744B2 (en) Graphics processing system
JP2004133608A (ja) 画像生成装置
JP2003281564A (ja) 画像生成装置
JPH07118006B2 (ja) 画像処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130207

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140210

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150206

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160205

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180208

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200213

Year of fee payment: 14