KR100810781B1 - 캐시 메모리를 구비한 데이터 프로세서 - Google Patents

캐시 메모리를 구비한 데이터 프로세서 Download PDF

Info

Publication number
KR100810781B1
KR100810781B1 KR1020017010442A KR20017010442A KR100810781B1 KR 100810781 B1 KR100810781 B1 KR 100810781B1 KR 1020017010442 A KR1020017010442 A KR 1020017010442A KR 20017010442 A KR20017010442 A KR 20017010442A KR 100810781 B1 KR100810781 B1 KR 100810781B1
Authority
KR
South Korea
Prior art keywords
cache memory
cache
address
main memory
addresses
Prior art date
Application number
KR1020017010442A
Other languages
English (en)
Other versions
KR20010102210A (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 KR20010102210A publication Critical patent/KR20010102210A/ko
Application granted granted Critical
Publication of KR100810781B1 publication Critical patent/KR100810781B1/ko

Links

Images

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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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

Abstract

본 발명에 따른 데이터 프로세서는 각각의 메인 메모리 어드레스아 캐시 메모리 로케이션 사이의 연관들(associations)의 적어도 제 1 및 제 2 그룹을 저장하는 연관 메모리를 구비한 캐시 메모리를 구비한다. 적어도 하나의 캐시 메모리 로케이션이 상기 할당된 그룹의 연관들에 사용하기 위해 상기 그룹들 중 상이한 그룹에 동적으로 할당될 수 있다. 인스트럭션이 메인 메모리 어드레스를 지시할 때, 상기 메인 메모리 어드레스와 연관된 캐시 메모리 로케이션을 찾아내기 위한 그룹이 선택된다. 일실시예에서, 상기 프로세서는 반복적으로 계산된 메인 메모리 어드레스들로부터 어드레스들의 스트림들을 액세스한다. 각각의 스트림은 그 그룹에 할당된 캐시 메모리 로케이션들을 갖는 스트림으로부터 어드레스들의 그 자신의 연관들의 그룹을 갖는다. 나머지 캐시 메모리 로케이션들은 세트 연관 맵핑과 연관된다. 따라서, 캐시 메모리 로케이션들은 필요한 경우에 상이한 스트림들에 할당될 수 있으며, 나머지 캐시 메모리 로케이션들은 비스트림(non-stream) 어드레스에 사용될 수 있다.

Description

캐시 메모리를 구비한 데이터 프로세서{DATA PROCESSOR WITH CACHE}
캐시 메모리는 흔히 메인 메모리에서 데이터로의 액세스 속도를 빠르게 하는데 사용된다. 각 캐시 메모리 로케이션(cache memory location)은 많은 메인 메모리 로케이션들 중 선택 가능한 하나의 로케이션에 대한 플레이스홀더(placeholder)로서 사용될 수 있다. 메인 메모리 어드레스가 데이터를 액세스하기 위하여 발행될 때, 캐시 메모리는 메인 메모리 어드레스에 의해 어드레스된 메인 메모리 로케이션의 플레이스홀더(placeholder)로서 동작하는 캐시 메모리 로케이션을 결정한다. 이어서 상기 캐시 메모리 로케이션은 메인 메모리 로케이션을 대신하여 사용된다.
메인 메모리 어드레스로부터 캐시 메모리 로케이션의 결정은 어드레스 맵핑(address mapping)이라고 한다. 캐시 메모리 내부에서 사용되는 어드레스 맵핑의 형태는 캐시 메모리의 중요한 설계요소(Design Parameter)이다. 완전 연관 캐시(Fully associative Cache), 세트 연관 캐시(Set-associative Cache) 및 직접맵핑 캐시(Direct-mapped Cache)에서는 다른 형태의 어드레스 맵핑이 사용된다. 완전 연관 캐시는 어드레스 맵핑 유닛(Address Mapping Unit)을 포함하는데, 이러한 어드레스 맵핑 유닛은 각 메인 메모리 어드레스(또는 메모리 블록 어드레스)를 임의의 캐시 로케이션(또는 로케이션 블록(Block of Location)에 맵핑할 수 있다. 이러한 완전 연관 캐시는, 메인 메모리 어드레스가 주어질 때, (만약 있다면) 캐시 장소 중 어느 쪽이 그 메인 메모리 어드레스와 관련되느냐에 관해 결정하는 어드레스 맵핑 유닛을 필요로 한다. 이러한 목적을 위하여 맵핑 유닛은 값비싼 연관 메모리 기능(associative memory function)을 수행하여야 하는데, 이는 액세스 속도를 잠재적으로 떨어뜨린다.
이와는 달리 직접 맵핑 캐시에서는 어느 캐시 메모리 로케이션이 메인 메모리 어드레스에 대응하는지에 대해 선택의 여지가 없다. 주어진 메인 메모리 어드레스는 단지 하나의 캐시 메모리 어드레스에만 맵핑될 수 있다. 그러므로, 직접 캐시에서 어드레스 맵핑 유닛은 요구된 캐시 메모리 로케이션을 쉽게 결정할 수 있다. 그렇지만, 그 캐시 메모리 로케이션이 또 다른 메인 메모리 어드레스에 의해 이미 사용되고 있을 때, 그 다른 메인 메모리 어드레스에 대한 데이터는 비록 그 데이터가 유용하다고 할지라도, 캐시 메모리로부터 삭제되어야 할 것이다. 이것은 메인 메모리 어드레스들의 어떠한 조합에 대해서도 데이터를 저장할 수 있는 완전 연관 캐시와 비교되는 단점이다.
세트 연관 캐시는 직접 맵핑 캐시와 완전 연관 캐시의 중간이다. 세트 연관 캐시는 캐시 메모리 로케이션의 세트들(하나의 세트는 전체 캐시 메모리보다 작음)을 사용한다. 각 메모리 어드레스는 하나의 세트에 대응한다. 메인 메모리 어드레스는 캐시 메모리 로케이션의 그것에 대응하는 세트내의 임의의 캐시 로케이션에 관련될 수 있다. 따라서, 한편으로는 메인 메모리 어드레스로부터 캐시 메모리 로케이션을 결정하기가 쉬운데, 이는 연관 메모리 기능이 단지 그 메인 메모리 어드레스에 대응하는 세트 내에서만 수행되기 때문이다. 다른 한편으로는 직접 맵핑 캐시에서보다 데이터가 캐시로부터 덜 삭제되는데, 이는 메모리 로케이션들이 그 세트 내에서 선택되기 때문이다. 그러므로, 메인 메모리 어드레스들의 조합에 대한 데이터는 그 세트 내에서 저장될 수 있다.
완전 연관 캐시, 세트 연관 캐시 및 직접 맵핑 캐시는 동일 메모리 어드레스에 대해 사용될 수 있는 택일적(alternative) 캐시 메모리 로케이션의 개수가 다르다. 이 개수는 고정된 설계 요소이며, 완전 연관 캐시, 세트 연관 캐시, 직접 맵핑 캐시 순으로 적어진다. 이 개수가 많아지면 새로운 데이터를 위한 장소를 확보하기 위해 캐시로부터 유용한 데이터를 삭제하게 될 빈도가 줄어든다. 그렇지만 이 개수가 많아지면, 캐시의 복잡성(complexity) 역시 증가하고, 그것의 액세스 속도도 감소할 것이다. 그래서, 이 개수의 선택은 캐시 설계에 있어서 중요한 절충점이 된다.
본 발명의 목적은 캐시 메모리 내에서 어드레스 맵핑의 효율을 향상시키는 데 있다.
본 발명의 다른 목적은 동일 메모리 어드레스에 대해 사용될 수 있는 선택적인 캐시 메모리 로케이션의 개수를 선택함에 따르는 절충을 최적화하는 것이다.
본 발명의 또 다른 하나의 목적은 다른 사용의 차단(blocking) 없이 캐시 메모리의 실시간 사용을 고려하는 것이다. 특히, 본 발명의 궁극적인 목적은 범용 캐싱 구성(scheme)이 동일 캐시 메모리 내에서 스트림 캐싱의 실시간 특성을 보장하면서 스트림 캐싱과 결합될 수 있다는 것이다.
본 발명에 따른 데이터 프로세서가 청구항 1에서 기술되어 있다. 세트 연관 맵핑에서와 같이 이 데이터 프로세서는 액세스되는 캐시 메모리 로케이션을 결정하기 위하여 참조할 필요가 있는 메인 메모리 어드레스들과 캐시 메모리 로케이션들 사이의 연관(association)의 수를 제한한다. 연관에 대한 검색은, 세트 연관 맵핑에서 세트로 한정되는 것과 같이, 연관의 그룹에 한정된다. 각 그룹안에서 연관 맵핑은 그룹에 할당된 어떤 캐시 메모리 로케이션에라도 가능하다. 그러나, 세트 연관 맵핑과는 달리, 캐시 메모리 로케이션들은 그 그룹들에 동적으로 할당된다. 그래서, 할당된 메모리 로케이션의 개수는 실행되는 프로그램 또는 프로그램측의 요구에 의해 만들어 질 수도 있다. 이 개수는 최소한 0과 캐시 메모리 로케이션들의 0이 아닌 개수 사이에서 가변될 수 있다.
그룹들의 크기를 가변함에 의해, 맵핑은 캐시 메모리 로케이션 내의 오버헤드없이 프로그램의 요구에 적합하게 될 수 있다. 프로세서에 의해 실행되는 프로그램은 동적으로(즉, 프로그램 실행 중) 어떤 메모리 어드레스들을 얼마나 각 그룹의 연관관계들 내에 끌어들일 것인지를 선택한다. 그래서, 높은 캐시 성능이 그들 메모리 어드레스들에 대해 보장될 수 있다. 예를 들어, 하나의 그룹내에서 동시에 연관될 수 있는 메인 메모리 어드레스들의 개수가 임의의 실시간 작업동안 필요한 어드레스들의 개수와 같다고 한다면, 그 캐시의 실시간 응답은 보장될 수 있다. 하나의 프로그램동안 메인 메모리 어드레스들이 하나의 그룹내 임의의 캐시 메모리 로케이션들에 맵핑될 수 있다. 그리고, 다른 프로그램동안 메인 메모리 어드레스들은 다른 그룹내의 캐시 메모리 어드레스들에 맵핑될 수 있다.
본 발명에 따른 프로세서의 실시예에 있어서, 프로세서는 반복적으로 계산되는 메인 메모리 어드레스(예를 들어 고정된 어드레스 스텝 크기에 의해 분리된)들로부터 하나 이상의 데이터 스트림들을 프리페치 및 기록하도록 구성된다. 임의의 시점에서 이전에 사용된 스트림 내의 그 어드레스들의 윈도우만이 이후에도 역시 사용될 것이다. 이들 스트림들에 대한 어드레스들은 제1 그룹을 사용하여 맵핑되고, 다른 어드레스들이 다른 그룹들에 의해 맵핑된다. 상기 윈도우 내의 모든 어드레스에 대한 연관을 유지하기에 충분한 다수의 캐시 메모리 로케이션을 제 1 그룹에 할당함으로써, 재사용될 수 있는 스트림들로부터 데이터를 교체할 필요를 제거할 수 있다. 나머지 그룹들은 세트 연관 맵핑을 사용할 수도 있다. 즉, 메인 메모리 어드레스는 나머지 그룹 중 하나에 직접 맵핑될 수도 있다.
프로세서가 반복적으로 계산되는 메인 메모리 어드레스들로부터 데이터 항목의 다중 스트림들을 프리페치하거나 기록할 때, 각 스트림은 그 스트림으로부터의 어드레스들의 연관들로 이루어진 그 자신의 그룹을 가질 수 있으며, 이 경우 캐시 메모리 로케이션들이 그 그룹에 할당되어 있다. 남은 캐시 메모리 로케이션들은 세트 연관 맵핑에 의해 액세스된다. 그래서, 캐시 메모리 로케이션들은 "필요에 따라(as needed)" 다른 스트림들에 할당될 수 있다. 그리고, 남은 캐시 메모리 장소들은 비 스트림 어드레스들을 위해 사용될 수 있다.
메모리 액세스 인스트럭션에 대해 사용될 그룹은 인스트럭션에 따라 선택될 수 있다. 이들 인스트럭션은 그 자신의 피연산자 혹은 결과를 액세스하는 데 어떤 유형의 어드레스 맵핑이 사용되는지를, 즉 스트림을 지시하는 것에 의해 명시적으로 나타낸다. 이와 달리, 한 인스트럭션은 예를 들어, 특정 유형의 어드레스 맵핑이 사용될 메인 메모리 어드레스들의 범위 또는 세트를 명시하는 것에 의해 다른 인스트럭션들이 사용할 어드레스 맵핑의 유형을 지시할 수 있다. 전자가 보다 융통성이 있다. 후자는 보다 작은 인스트럭션 오버헤드를 요구한다.
한 그룹에 사용되는 캐시 메모리 로케이션들은 일반적으로 또 다른 그룹에 사용될 수 없다. 세트 연관 맵핑이 어떠한 스트림에도 속하지 않는 메인 메모리 어드레스들에 대해 사용될 때, 세트로부터의 캐시 어드레스의 제거는 그 세트의 효율을 감소시킨다. 바람직하게, 하나의 스트림을 지원하는 한 그룹에 대해 사용되는 캐시 메모리 어드레스들은 세트 연관 맵핑에서 사용된 상이한 세트로부터 균일하게 선택된다. 그래서, 어떤 세트들에 대한 사용가능한 택일적 캐시 메모리 어드레스의 개수가 다른 세트들에 대한 사용가능한 택일적 캐시 메모리 어드레스의 개수 보다 훨씬 작은 것이 방지된다. 이것은 세트 연관 맵핑을 사용하여 캐시를 교체할 필요를 최소화한다.
본 발명에 의한 프로세서의 다른 실시예에 있어서, 상이한 그룹에 관련된 캐시 메모리 로케이션들에 대해 별개의 캐시 교체 결정이 행해진다. 새로운 메인 메모리 어드레스가 캐시 메모리 로케이션에 배치되어야 하나, 전혀 빈 캐시 메모리 로케이션이 존재하지 않다면 교체가 필요하다. 이 캐시에 있어서 하나의 캐시 메모리 로케이션은 그 캐시 메모리 로케이션에 배치된 이전 메인 메모리 어드레스를 희생하여, 새로운 메인 메모리 어드레스에 의한 재사용을 위하여 선택되어져야 한다. 잘 알려진 방법은 최근에 가장 적게 사용된 캐시 메모리 로케이션을 재사용하는 것이다.
본 발명에 의한 데이터 프로세서의 상기 및 다른 이점이 아래의 도면을 통하 여 비 제한적인 방법으로 기술될 것이다.
도 1은 캐시 메모리를 구비한 데이터 프로세서를 도시한 블럭도,
도 2는 스트림 액세스에 대한 완전 연관 캐시 맵핑 유닛을 도시한 블록도.
도 1은 처리 유닛(10), 메인 메모리(12) 및 캐시 메모리 유닛(14)로 구성된 데이터 프로세서를 도시한다. 캐시 메모리 유닛(14)은 캐시 메모리(140), 캐시 제어 유닛(146) 및 어드레스 맵핑 유닛(141)으로 구성되며, 어드레스 맵핑 유닛(141)은 제1 및 2 어드레스 맵핑 서브 유닛(142,144)으로 구성된다. 처리 유닛(10)은 어드레스 출력부와 캐시 메커니즘 선택 출력부를 가지는데, 캐시 메커니즘 선택 출력부는 어드레스 맵핑 유닛(142, 144) 및 캐시 제어 유닛(146)에 연결되어 있다. 어드레스 맵핑 유닛(142, 144) 및 캐시 제어 유닛은 캐시 메모리(140)에 연결된 캐시 어드레스 출력부를 가진다. 어드레스 맵핑 유닛(142, 144)은 캐시 제어 유닛(146)과 연결된 캐시 미스 처리 인터페이스(a cache miss handling interface)를 가진다. 캐시 제어 유닛은 메인 메모리(12)에 연결된 메인 메모리 어드레스 출력부를 가진다. 메인 메모리(12)는 캐시 메모리(140)에 연결된 데이터 출력부를 가진다.
동작에 있어서, 메인 메모리 어드레스를 위하여 사용될 캐시 어드레스 맵핑 유닛(142, 144)을 나타내는 명시적이거나 묵시적인 정보와 함께, 처리 유닛(10)은 데이터 판독 및 기록을 위한 그 메인 메모리 어드레스를 발행하게 하는 프로그램을 실행한다. 신호는 어드레스 맵핑 유닛(142, 144)중 적당한 하나를 선택하는데, 선택된 어드레스 맵핑 유닛은 캐시 메모리(140)내에 그 어드레스에 대응한 데이터가 존재하는지를 판정한다. 만약 존재한다면 대응하는 캐시 메모리 어드레스는 캐시 메모리(140)에 검색되어 공급된다. 이에 응답하여, 캐시 메모리(140)는 처리 유닛(10)에 그 어드레스에 대한 데이터를 공급한다.
캐시 제어 유닛(146)은 어느 캐시 메모리 로케이션이 제1 어드레스 맵핑 유닛(142)에 의하여 맵핑될 수 있는지를 결정한다. 이 작업은 프로그램 제어 하에 수행된다. 처리기내에서 실행되는 프로그램은 얼마나 많은 캐시 메모리 로케이션이 제 1 어드레스 맵핑 유닛에 의한 맵핑을 위하여 필요한지를 나타낸다. 그 후, 캐시 제어 유닛은 충분한 수의 메모리 로케이션들을 선택하고, 그들 로케이션에 메인 메모리 어드레스들이 맵핑될 수 있도록 그 선택된 로케이션을 캐시 맵핑 유닛에 전달한다. 캐시 제어 유닛(146)은 예를 들어 이들 기능들을 수행하도록 적절히 프로그램된 마이크로컨트롤러 코어를 포함한다.
물론, 임의의 수의 캐시 맵핑 유닛(142, 144)이 있을 수 있으며, 이들은 각각 캐시 맵핑 유닛이 메인 메모리 어드레스들을 맵핑할 수 있는 그 자신의 동적으로 선택된 캐시 메모리 어드레스 그룹을 구비한다.
메인 메모리 어드레스가 캐시 맵핑 유닛(142, 144)에 전달되고, 선택된 어드레스 맵핑 유닛(142, 144)이 메인 메모리 어드레스에 대응하는 데이터가 캐시 메모리(140)내에 존재하는 것을 검출하지 못한다면, 해당 메인 메모리 어드레스에 대해 캐시 미스(Cache Miss)가 발생한 것이다. 어드레스 맵핑 유닛(142, 144)은 캐시 제어 유닛(145)에 캐시 미스를 전달한다. 캐시 제어 유닛(146)은 어드레스에 대응하는 데이터를 인출하기 위하여 메인 메모리(12)에 메인 메모리 어드레스를 제공한다. 캐시 제어 유닛은 해당 어드레스에 대하여 캐시 맵핑 유닛(142,144)를 선택한다. 캐시 제어 유닛(146)은 또한 해당 캐시 맵핑 유닛(142,144)에서 할당된 캐시 메모리 어드레스들로부터 상기 데이터에 대한 캐시 메모리 어드레스를 선택한다. 메인 메모리(12)로부터의 데이터는 캐시 메모리내의 선택된 캐시 메모리 어드레스에 저장되고, 처리 유닛(10)에 공급된다.
캐시 제어 유닛(146)은 캐시 맵핑 유닛(142, 144)에 선택된 캐시 메모리 어드레스를 전달한다. 만약 캐시 메모리 어드레스가 또 다른 메인 메모리 어드레스를 위해 사용되고 있으면, 캐시 맵핑 유닛(142, 146)은 그 다른 메인 메모리 어드레스가 그 선택된 캐시 메모리 어드레스에 맵핑되지 않을 것을 보장한다. 적어도 캐시 맵핑 유닛(142, 144) 중 선택된 하나는 데이터가 상기 메인 메모리 어드레스에 대하여 캐시 메모리내의 선택된 캐시 메모리 어드레스에 저장되어 있음을 기록한다. 실시예에서, 양 캐시 맵핑 유닛(142, 144)은 적어도 몇 개의 캐시 메모리 어드레스들에 대하여 캐시 메모리 어드레스와 메인 메모리 어드레스간의 연관을 기록한다.
캐시 맵핑 유닛(142, 1444)에 할당된 모든 캐시 메모리 어드레스들이 사용중이라면, 캐시 제어 유닛(146)은 소정의 캐시 교체 방법에 따라, 그리고 선택된 캐시 맵핑 유닛(142, 144)에서 사용되는 어드레스 맵핑에 따라서 선택된 캐시 메모리 어드레스를 선택할 것이다. 몇몇 방법들은 당업자들에게 알려져 있다. 그 방법의 예로써 "최근 가장 적게 사용"(least recently used(LRU)) 방법이 있다. 이 방법에 따르면, 캐시 제어 유닛(146)은 캐시 메모리 어드레스 중 어느 것이 다른 어떤 캐시 메모리 어드레스보다 오랫동안 사용되지 않고 있었느냐에 관해 결정한다. 다음에, 그 LRU 캐시 메모리 어드레스는 그 메인 메모리 로케이션의 데이터를 저장하기 위해 선택된다.
어드레스 맵핑 유닛(142, 144)에 의해 사용되는 어드레스 맵핑의 유형에 따라, 단지 캐시 메모리(140)내 어드레스들의 서브세트(subset)만이 캐시 미스를 초래했던 메인 메모리 어드레스를 위하여 이용될 수가 있다. 그 경우, 캐시 제어 유닛은 다시 LRU와 같은 몇몇 방법에 따라, 선택된 캐시 맵핑 유닛(142, 144)내에서 메인 메모리 어드레스에 대해 이용할 수 있는 캐시 메모리 어드레스들로부터 캐시 메모리 어드레스를 선택한다.
어드레스 맵핑 유닛(142, 144)은 서로 다른 어드레스 맵핑 메카니즘을 사용할 수 있다. 실시예에서 제 1 어드레스 맵핑 유닛(142)은 캐시 메모리 어드레스의 동적으로 선택된 제한된 세트로의 완전 연관 어드레스 맵핑을 사용하고, 제 2 어드레스 맵핑 유닛(144)은 바람직하게 제 1 맵핑 유닛(142)에서 사용하는 것을 제외한 모든 캐시 메모리 어드레스로의 세트 연관 맵핑을 사용한다. 이들 및 다른 종류의 맵핑을 위한 어드레스 맵핑 유닛의 구현은 그것 자체로 알려져 있다.
보통, 메인 메모리(12)로부터의 데이터는 캐시 라인들의 단위로 인출되어 캐시 메모리(140)에 저장되는데, 이들 캐시 라인 각각은 최상위 비트들이 동일한 연속하는 복수개의 어드레스들의 데이터를 포함된다. 완전 연관 맵핑 유닛에서, 캐시 메모리(140)에서 표현되는 메인 메모리 어드레스의 이들 최상위 비트들(태그 비트들)은 완전 연관 맵핑 유닛에 의해 맵핑될 수 있는 각각의 캐시 메모리 어드레스에 대해 저장된다. 입력되는 메인 메모리 어드레스의 태그 비트는 저장된 어드레스들의 태그 비트와 비교된다. 동일하다면, 그 연관된 캐시 메모리 어드레스가 리턴된다. 세트 연관 맵핑 유닛에 있어서, 메인 메모리 어드레스의 최상위 부분은 세트 선택 비트와 태그 비트로 분리된다. 세트 선택 비트는 미리 결정된 방식에 의해 캐시 어드레스 비트로 변환된다. 이들 캐시 어드레스 비트들은 캐시 메모리 로케이션의 세트를 선택한다. 이것은 그 메인 메모리 어드레스를 위해 사용될 수 있는 제한된 수의 캐시 메모리 어드레스들을 그 세트내에 남겨둔다. 태그 비트들은 마치 완전 연관 맵핑 유닛에서 모든 가용 캐시 메모리 어드레스들 중에서 선택하는데 사용되는 태그비트들처럼 이러한 제한된 수의 캐시 메모리 어드레스들 중에서 선택을 하는데 사용된다.
실시간 처리가 요구되는 데이터와 같은 소정의 임계 데이터를 위한 캐시 메모리 어드레스들의 할당 가능한 그룹에 완전 연관 맵핑 유닛을 사용함으로써, 세트-연관 캐싱 또는 직접-맵핑 캐싱에 의해 가해지는 제한 없이 데이터를 캐싱하는 것이 가능하다. 세트-연관 맵핑 유닛과 함께 사용하면, 완전 연관 맵핑 유닛은 세트-연관 맵핑 유닛이 동일 세트에 맵핑을 하는 경우에도, (세트-연관 캐시 맵핑 유닛에 의해 규정된) 상이한 세트들에 속하는 캐시 메모리 로케이션으로 메모리 어드레스를 맵핑할 수도 있다. 따라서, 동일 세트에 맵핑되는 메인 메모리 로케이션들이, 세트 연관 캐시 맵핑 유닛만을 이용할 때 가능한 경우보다 더 많이 캐시 메모리(140)에 존재할 수 있다. 완전 연관 캐시는, 맵핑되지 않은 어드레스들이 다른 맵핑 메커니즘에 여전히 유용하므로, 이 경우에 모든 캐시 메모리(140)로 맵핑할 수 있는 능력을 제공할 필요가 없다. 따라서, 완전 연관 캐시 맵핑 유닛은 소형으로 유지될 수 있다. 따라서 상이한 캐시 맵핑 유닛(142, 144)에 의해 맵핑되는 캐시 메모리 어드레스에 대해 상이한 캐시 교체 방법이 사용될 수도 있다.
완전 연관 맵핑 유닛은 메모리 액세스의 특정 타입으로 한정될 수도 있다. 예를 들면, 스트림 액세스를 이용하는 프로그램의 경우, 메인 메모리 어드레스 부분은 사전에 계산될 수 있는 일련의 어드레스들(예를 들면, 서로 고정된 거리를 갖는 어드레스들)로 이루어질 수 있다. 스트림 액세스에서, 어느 시점에 사용될 수 있는 메인 메모리 어드레스는 상기 일련의 어드레스들 내의 윈도우 내에 위치한다(즉, 상기 시점 이전에 사용된 스트림 내의 모든 어드레스들중 그 윈도우 내의 어드레스들만이 나중에 사용될 수 있다.)
상기 윈도우는 시간에 따라 이동한다. 캐시 메모리(140)는 윈도우 내의 어드레스들에 대한 데이터를 저장해야 한다. 즉, 캐시 메모리(140)는 연속하는 일련의 어드레스들의 윈도우에 대한 데이터를 저장한다. 상기 방법으로 액세스된 데이터는 계산된 어드레스들에서 프로세서에 의해 기록된 데이터 및/또는 프로세서에 의한 판독을 위해 프리페치된 데이터를 포함할 수도 있다.
스트림 프리페칭 및 기록은 공지되어 있다. 바람직하게는 스트림 프리 페칭은 스트림 프리페치 유닛(도시되지 않음)을 이용하여 구현되는데, 상기 스트림 프리페치 유닛은 프로세서에 의해 발행된 어드레스들 또는 어드레스 표시를 검사하고 이들을 현재의 스트림 어드레스와 비교한다. 모든 발행된 어드레스들이 비교되거나 또는 프로세서가 스트림 어드레스로 식별한 어드레스들 또는 표시들만 비교된다. 일치하는 것이 있다면, 스트림 프리페치 유닛은 상기 스트림 내의 그 다음 메인 메모리 어드레스를 계산하여, 상기 어드레스에 대응하는 데이터가 캐시 메모리에 저장되도록 상기 어드레스를 캐시에 제공한다.
도 2는 스트림 액세스의 경우 완전 연관 맵핑 유닛를 도시한 도면이다. 맵핑 유닛은 베이스 어드레스 레지스터(20), 탑 어드레스 레지스터(21), 베이스 인덱스 레지스터(22), 인덱스 계산 유닛(24), 어드레스 비교 유닛(25), 캐시 미스 처리 인터페이스(28)(연결 도시 안됨)에 모두 연결된 어드레스 메모리(26)를 포함한다. 맵핑 유닛의 어드레스 입력은 인덱스 계산 유닛(24) 및 어드레스 비교 유닛(25)에 연결된다. 베이스 어드레스 유닛(20)은 인덱스 계산 유닛(24)에 연결된다. 탑 어드레스 레지스터(1)는 어드레스 비교 유닛(25)에 연결된다. 베이스 인덱스 레지스터(22)는 인덱스 계산 유닛(24)에 연결된다. 인덱스 계산 유닛(24)은 드레스 메모리(26)에 연결된 인덱스 출력을 가진다. 어드레스 메모리(26)는 맵핑 유닛의 맵핑 메카니즘 선택 입력부에 연결된 입력부와 맵핑 유닛의 어드레스 출력부와 연결된 출력부를 가진다.
동작시, 맵핑 유닛은 스트림 액세스에서 사용하는 일련의 캐시 메모리 어드레스들의 윈도우(window)에 대한 캐시 메모리 어드레스들을 공급하는 기능을 수행한다. 스트림을 위하여 캐시 메모리 어드레스의 고정된 세트가 사용된다. 윈도우가 진행할 때, 일련의 새로운 메인 메모리 어드레스로부터의 데이터는, 초기에 그 열로부터의 데이터가 아직 존재하지 않을 때를 제외하고, 캐시 메모리(140) 내에 여전히 존재하는 가장 오래된 메인 메모리 어드레스의 데이터에 덧쓰게 된다. 캐시 제어 유닛(146)은 스트림의 데이터를 저장하기 위한 캐시 메모리 어드레스의 개수를 어드레스 메모리(26)에 로딩한다. 윈도우가 진행됨에 따라 이들 캐시 메모리 어드레스는 통상 변경되지 않을 것이다. 이들 캐시 메모리 어드레스는 일련의 어드레스들을 위하여 주기적으로 사용될 것이다. 이것은, 기존 완전 연관 맵핑 유닛들의 경우와 같이 메인 메모리 어드레스를 모든 이용가능 어드레스와 비교함 없이 캐시 메모리 어드레스를 계산할 수 있는 이점을 가지고 있다.
베이스 어드레스 레지스터(20)는 캐시 메모리(140)내에 존재하는 일련의 로케이션들로부터 가장 오래된 메인 메모리 어드레스 A0를 갖는다. 탑 어드레스 레지스터(21)는 캐시 메모리(140)내에 존재하는 일련의 어드레스로부터 가장 최근의 메인 메모리 어드레스 AN을 갖는다. 베이스 인덱스 레지스터(22)는 가장 오래된 메인 메모리 어드레스의 데이터를 저장하는 캐시 어드레스를 포함하는 어드레스 메모리(26)내의 소정 로케이션의 어드레스 I0를 포함한다.
맵핑 유닛이 선택되고 메인 메모리 어드레스 A가 제공될 때, 인덱스 계산 유닛(24)은 이 메인 메모리 어드레스 A를, 어드레스 메모리(26)를 어드레스하는 인덱스 I로 변환한다. 예를들어, 스트림내의 연속 메인 메모리 어드레스들 사이의 간격이 "D"라면, I=(I0+(A-A0)/D)mod N(N : 어드레스 메모리(26)내의 어드레스 개수)이다. 인덱스 I에 의해 메인 메모리 어드레스 A에 대응하는 캐시 메모리 어드레스가 어드레스 메모리(26)로부터 인출된다.
어드레스 비교 유닛(25)은 현재 저장된 윈도우 외부의 메인 메모리 어드레스가 사용되는 경우를 알린다. 만약 그렇다면 캐시 제어 유닛(146)은 메인 메모리(12)로부터 캐시 메모리(140)로 어드레스 A0에서 그 메인 메모리 어드레스의 데이터를 로딩하고, A0, AN 및 I0를 갱신한다. 바람직하게, 스트림에 대한 데이터는 프리페치되는데, 즉 프로그램이 그 데이터를 필요로 하기 전에 이들 메인 메모리 어드레스가 캐시 메모리 유닛(14)에 제공된다. 그래서 캐시 미스 지연(Cache Miss Delay)이 초래될 필요가 없다. 실시예에 있어서, 도 2의 맵핑 유닛에 제공되는 어드레스들은 메인 메모리 어드레스들 대신에 스트림 관련 어드레스들이다. 이 경우에 있어서, 어드레스 메모리(26)내의 인덱스 I의 계산은 단지 제공된 어드레스의 모듈(I=A mod N)을 계산하는 것이다.
따라서, 캐시된 메인 메모리 어드레스들의 데이터는 어드레스들의 스트림으로부터의 연속하는 어드레스들에 대해 주기적으로 사용되는 일련의 캐시 메모리 로케이션들 내에 저장된다. 일련의 로케이션내에서의 인덱스는 스트림으로부터의 어드레스들로부터 계산되고, 일련의 로케이션내에서의 어드레스들을 결정하기 위하여 사용된다. 본 예에서, 후자는 어드레스 메모리에 의해 실현되지만, 물론 소정의 베이스 어드레스에 대해 상대적으로 캐시 메모리를 직접 어드레스하는데 인덱스를 사용하는 것과 같은 다른 구현이 사용될 수도 있다.
물론, 도 2의 맵핑 유닛은 단지 유용한 예일 뿐이다. 본 발명으로부터 벗어나지 않고 다른 완전 연관 맵핑 유닛이 사용될 수도 있다.
지금 도 1로 되돌아 가보면, 캐시 제어 유닛(146)이 캐시 미스시 메인 메모리 로케이션에 대한 캐시 메모리 어드레스를 선택함을 기억할 것이다. 일 실시예에서 캐시 맵핑 유닛들(142, 144)은 각각 완전 연관 맵핑 유닛과 세트-연관 맵핑 유닛이다. 또, 캐시 제어 유닛(146)은 완전 연관 맵핑 유닛에 의한 사용을 위하여 캐시 메모리 어드레스들을 선택하여, 캐시 메모리 어드레스들이 세트-연관 맵핑 유닛의 상이한 세트들에 걸쳐 고르게 분산되도록 한다.
완전 연관 맵핑 유닛이 소정의 메인 메모리 어드레스를 어떠한 캐시 메모리 어드레스와도 연관시킬 수 있음을 기억할 것이다. 반면에, 세트-연관 맵핑 유닛은 상대적으로 작은 세트내의 소정 수의 캐시 메모리 어드레스들 중 단지 하나로만 메인 메모리 어드레스를 맵핑 할 수 있다. 완전 연관 맵핑 유닛이 메인 메모리 어드레스를 캐시 메모리 어드레스에 맵핑할 때, 그 캐시 메모리 어드레스는 완전 연관 맵핑 유닛에 의해 "점유(occupied)"되었다고 말할 것이다. 완전 연관 맵핑 유닛으로 "점유"되지 않은 세트내의 캐시 메모리 어드레스들만이 완전 연관 맵핑 유닛의 간섭없이 세트 연관 맵핑 유닛에 의해 사용될 수 있다. 대개, 세트-연관 맵핑 유닛에 의해 점유된 로케이션들에서 캐시 교체를 불가능하게 하는 어떤 하드웨어 로킹 메카니즘에 의해 점유가 실시된다.
극단적인 상황에서, 어떤 세트내의 모든 캐시 메모리 어드레스들이 점유될 수도 있다. 그 경우에, 그 세트에 맵핑된 메인 메모리 어드레스에 대한 캐시 미스는 완전 연관 맵핑 유닛에 의해 맵핑된 메인 메모리 어드레스들을 무효화하지 않고서는 세트 연관 맵핑 유닛을 갱신함에 의해 처리할 수 없다. 역시, 어떤 세트의 대부분이 점유되면, 캐시된 데이터는 세트 연관 맵핑 유닛의 이점이 없어질 만큼 자주 교체되어야 할지도 모른다.
이것은 세트 연관 맵핑 유닛에 의해 사용되는 다른 세트들에 걸쳐 점유된 캐시 메모리를 고르게 분산시킴으로써 피할 수 있다. 즉, 캐시 제어 유닛(146)은 바람직하게, 다른 세트들 보다 더 많이 점유된 캐시 메모리 어드레스들을 포함하는 소정 세트들로부터의 캐시 메모리 어드레스들을 피하는 완전 연관 맵핑의 캐시 메모리 어드레스를 선택한다. 그래서, 임의의 세트 내에서 점유되는 캐시 메모리 어드레스들의 최대 개수는 최소화된다.
일 실시예에서, 캐시 제어 유닛(146)은 완전 연관 맵핑 유닛에 의해 사용되지 않은 캐시 메모리 어드레스들의 링크된 리스트(linked list)를 유지한다. 처음에, 이 리스트는 세트들을 통해 순환하는데, 이 리스트내에 연속적으로 나타나는 캐시 메모리 어드레스들은 모든 세트로부터의 캐시 메모리 어드레스들이 나타날 때까지, 연속하는 상이한 세트들에 속하게 되고, 이 시점으로부터 이 리스트는 다시 모든 세트를 통해 순환한다. 예를 들면, 상기 리스트는 (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9...)를 연속적으로 포함할 수 있는데, 여기서 A0, A4, A8은 제 1 세트에 속하고, A1, A5, A9는 제 2 세트에 속하며, A2, A6은 제 3 세트에 속하는 등의 방식으로 될 수 있다. 이 경우, 캐시 제어 유닛(146)은 완전 연관 맵핑 유닛에 사용하기 위한 캐시 메모리 어드레스를 선택할 필요가 있을때, 상기 캐시 제어 유닛은 이들 캐시 메모리 어드레스가 상기 리스트내에 나타나도록 이들 캐시 메모리 어드레스를 선택한다.
캐시 메모리 어드레스들이 완전 연관 캐시내에서의 사용으로부터 해제되면, 이들은 동일 세트로부터의 연속하는 어드레스들이 다른 세트들로부터 최대 가능한 수의 어드레스들로부터의 어드레스들에 의해 분리되는 속성을 갖는 시퀀스로 리스트 내로 되돌려진다.
도 2의 캐시 맵핑의 경우, 그 스트림을 이용하기 시작할 때, 처리 유닛(10)에 의한 실행되는 프로그램은 스트림을 선언하는 것이 바람직하며, 상기 선언은 스트림에 사용되는 캐시 메모리 어드레스의 수를 명시적으로 또는 묵시적으로 지정한다. 스트림이 시작될 때, 필요한 수의 캐시 메모리 로케이션이 리스트 내의 연속하는 로케이션들로부터 취해진다.
주어진 메인 메모리 어드레스를 처리하는 캐시 맵핑 유닛(144, 146)을 선택하는데 있어서 다양한 기술이 이용될 수도 있다. 그러한 기술의 일례는 스트림 액세스와 함께 사용된다. 이 경우, 처리 유닛(10)은 메모리 어드레스가 스트림에 속하는지의 여부를 나타내는 신호를 출력하고, 만약 메모리 어드레스가 스트림에 속한다면 그 스트림에 출력한다. 상기 신호는 사용될 캐시 맵핑 유닛(142, 144)을 선택한다. 만약 캐시 미스가 발생하면, 상기 신호는 또한 캐시 제어 유닛(146)이 메인 메모리 어드레스를 맵핑해야 하는 캐시 맵핑 유닛(142, 146)을 선택하도록 한다. 처리 유닛(10)은 완전한 어드레스 형태로 또는 스트림 내의 현재의 윈도우에 대한 인덱스 형태로 메인 메모리 어드레스를 발행할 수도 있다.
다른 예에서, 상기 선택된 캐시 맵핑 유닛은 처리 유닛(10)에 의해 발행된 메인 메모리 어드레스가 지정된 범위 또는 어드레스들의 집합(collection of addresses)에 속하는지의 여부를 검사함으로서 결정된다. 프로그램 인스트럭션은 완전 연관 캐시 맵핑 유닛에 의해 맵핑되어야 하는 메인 메모리 어드레스들의 집합 또는 범위를 규정한다. 만약 캐시 미스가 발생하면, 캐시 제어 유닛(146)은, 그것이 그러한 범위 또는 집합에 속하는지의 여부에 기초하여 메인 메모리 어드레스를 맵핑해야하는 캐시 맵핑 유닛(142, 146)을 선택한다. 그러한 범위 또는 집합에 속하는 어드레스들은 정규 어드레스 맵핑 동안 어드레스 맵핑 유닛(142, 144)을 선택하는데 사용될 수도 있다.
일 실시예에서, 모든 어드레스 맵핑 유닛(142, 14)이 동시에 처리 유닛(10)에 의해 발행된 메인 메모리 어드레스에 대한 캐시 메모리 어드레스를 결정하고자 할 수도 있다. 캐시 맵핑 유닛(142, 144) 중 어느 하나도 캐시 미스를 보고하지 않으면, 그 캐시 맵핑 유닛(142, 144)에 의해 생성된 캐시 메모리 어드레스가 캐시 메모리(140)를 어드레스하는데 사용될 수도 있다. 만약 모든 캐시 맵핑 유닛(142, 144)이 캐시 미스를 보고하면, 캐시 제어 유닛(146)이 메인 메모리(12)로부터 데이터를 페치하도록 트리거된다. 만약 하나 이상의 어드레스 맵핑 유닛(142, 144)이 캐시 히트(cache hit)를 보고하면, 메모리 판독 동작에 사용하는데 어드레스 맵핑 유닛(142, 144)에 의해 보고된 캐시 메모리 어드레스들 중 하나의 캐시 메모리 어드레스만이 메모리 판독 동작에 사용되면 된다. 메모리 기록 동작의 경우, 데이터는 모든 보고된 캐시 메모리 로케이션에 기록될 수도 있고, 또는 보고된 로케이션들 중 단지 하나의 로케이션에만 기록되고, 기타 다른 보고된 로케이션 내의 데이터는 무효가 되게 할 수도 있다.

Claims (9)

  1. 캐시 메모리를 구비한 데이터 프로세서에 있어서,
    상기 캐시 메모리는,
    메인 메모리 어드레스를 수신하는 입력부와,
    캐시 메모리 로케이션들과,
    각각의 메인 메모리 어드레스와 캐시 메모리 로케이션 사이의 연관들(associations)의 적어도 제 1 및 제 2 그룹들을 저장하기 위한 연관 메모리(associative memory) - 상기 그룹들 중 상이한 그룹마다 적어도 하나의 캐시 메모리 로케이션이 동적으로 할당되어 상기 할당된 그룹의 연관에 사용됨 - 와,
    상기 메인 메모리 어드레스에 대해 선택된 그룹을 선택하기 위한 선택 수단과,
    상기 선택된 그룹에서 상기 메인 메모리 어드레스와 연관되는 어드레스된 캐시 메모리 로케이션을 선택하여 어드레싱하도록 구성된 어드레스 맵핑 유닛
    을 포함하는 데이터 프로세서.
  2. 제 1 항에 있어서,
    반복적으로 계산되는 메인 메모리 어드레스들의 스트림에 대한 상기 캐시 메모리 내의 데이터를 액세스하는 스트림 액세스 유닛을 포함하고,
    상기 데이터 프로세서는 상기 스트림을 액세스할 때 상기 스트림으로부터 액세스된 데이터의 상기 메인 메모리 어드레스들을 모두 상기 제 1 그룹의 연관들을 이용하여 캐시 메모리 로케이션들과 연관시키도록 구성된 데이터 프로세서.
  3. 제 2 항에 있어서,
    상기 선택 수단은 세트 연관 매핑(set associative mapping)을 사용하여 메인 메모리 어드레스들 각각을, 제 2 그룹 또는 추가의 그룹들 중 상기 메인 메모리 어드레스 각각의 한 그룹에 직접 맵핑시키되, 상기 제 2 그룹 또는 추가의 그룹들은 그에 할당된 캐시 메모리 로케이션들의 세트로부터의 캐시 메모리 로케이션들을 가지며,
    상기 데이터 프로세서는 캐시 메모리 로케이션들을 상기 제 1 그룹에 동적으로 할당하고, 상기 할당은 상기 캐시 메모리 로케이션들의 상기 제 2 그룹 및 추가의 그룹들로의 할당을 불가능하게 하는 데이터 프로세서.
  4. 삭제
  5. 제 2 항에 있어서,
    상기 어드레스 맵핑 유닛은, 상기 제 1 그룹이 선택되는 상기 메인 메모리 어드레스들을 상기 스트림 내의 그들의 순위 번호에 기초하여 맵핑하는 데이터 프로세서.
  6. 제 2 항에 있어서,
    반복적으로 계산되는 메인 메모리 어드레스들의 둘 이상의 스트림의 데이터를 상기 캐시 메모리내로 액세스하는 스트림 액세스 유닛을 포함하고, 상기 액세스시 각각의 스트림으로부터의 액세스된 데이터의 상기 메인 메모리 어드레스들은 모두 그 스트림에 할당된 그룹들 각각의 연관들(associations)을 이용하여 캐시 메모리 로케이션들에 연관되는 데이터 프로세서.
  7. 제 1 항에 있어서,
    상기 제 1 그룹의 연관에 사용하기 위한 메인 메모리 어드레스들의 세트를 규정하는 커맨드를 수신하여 처리하도록 구성된 데이터 프로세서.
  8. 제 1 항에 있어서,
    캐시 메모리 로케이션들이 다른 메인 메모리 어드레스에 재사용하도록 선택되고, 상기 제 1 그룹의 연관(associations)에 사용된 상기 캐시 메모리 로케이션들은 다른 그룹들 내의 캐시 메모리 로케이션들의 이전의 사용에 관계없이 상기 제 1 그룹 내의 캐시 메모리 로케이션들의 이전의 사용의 차이에 따라서 재사용되도록 선택되는 데이터 프로세서.
  9. 제 1 항에 있어서,
    상기 메인 메모리 어드레스를 참조하는 피연산자 또는 결과를 이용하여 인스트럭션을 실행하는 처리 유닛을 포함하고, 상기 인스트럭션은 상기 인스트럭션의 상기 피연산자 또는 결과를 액세스하는데 사용되는 상기 선택된 그룹을 나타내는 데이터 프로세서.
KR1020017010442A 1999-12-17 2000-12-04 캐시 메모리를 구비한 데이터 프로세서 KR100810781B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP99204375.2 1999-12-17
EP99204375 1999-12-17

Publications (2)

Publication Number Publication Date
KR20010102210A KR20010102210A (ko) 2001-11-15
KR100810781B1 true KR100810781B1 (ko) 2008-03-06

Family

ID=8241020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017010442A KR100810781B1 (ko) 1999-12-17 2000-12-04 캐시 메모리를 구비한 데이터 프로세서

Country Status (7)

Country Link
US (1) US6643738B2 (ko)
EP (1) EP1157336B1 (ko)
JP (1) JP2003517682A (ko)
KR (1) KR100810781B1 (ko)
CN (1) CN1206594C (ko)
DE (1) DE60042640D1 (ko)
WO (1) WO2001044948A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002306495A1 (en) * 2001-02-13 2002-08-28 Candera, Inc. Storage virtualization and storage management to provide higher level storage services
US6933945B2 (en) * 2003-03-31 2005-08-23 Sun Microsystems, Inc. Design for a non-blocking cache for texture mapping
US7063151B2 (en) * 2004-03-05 2006-06-20 Halliburton Energy Services, Inc. Methods of preparing and using coated particulates
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8443162B2 (en) 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
US7574564B2 (en) * 2006-05-11 2009-08-11 Freescale Semiconductor, Inc. Replacement pointer control for set associative cache and method
JP5245349B2 (ja) * 2007-10-17 2013-07-24 日本電気株式会社 登録先ウェイの固定方法、プロセッサ、及び情報処理装置
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
ES2304118B1 (es) * 2008-02-25 2009-07-29 Sener Grupo De Ingenieria, S.A Procedimiento para generar energia mediante ciclos termicos con vapor de presion elevada y temperatura moderada.
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
WO2011127933A1 (en) 2010-04-16 2011-10-20 Nuevolution A/S Bi-functional complexes and methods for making and using such complexes
US20120144118A1 (en) * 2010-12-07 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for selectively performing explicit and implicit data line reads on an individual sub-cache basis
CN102521161B (zh) * 2011-11-21 2015-01-21 华为技术有限公司 一种数据的缓存方法、装置和服务器
US10961920B2 (en) 2018-10-02 2021-03-30 8 Rivers Capital, Llc Control systems and methods suitable for use with power production systems and methods
US10931267B1 (en) 2019-07-31 2021-02-23 Quantum Machines Frequency generation in a quantum controller
US10862465B1 (en) 2019-09-02 2020-12-08 Quantum Machines Quantum controller architecture
US11126926B1 (en) * 2020-03-09 2021-09-21 Quantum Machines Concurrent results processing in a quantum control system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
WO1998034172A1 (en) * 1997-01-30 1998-08-06 Sgs-Thomson Microelectronics Limited A cache system
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5070502A (en) * 1989-06-23 1991-12-03 Digital Equipment Corporation Defect tolerant set associative cache
US5450564A (en) * 1990-05-04 1995-09-12 Unisys Corporation Method and apparatus for cache memory access with separate fetch and store queues
US5353424A (en) * 1991-11-19 1994-10-04 Digital Equipment Corporation Fast tag compare and bank select in set associative cache
US5509135A (en) * 1992-09-25 1996-04-16 Digital Equipment Corporation Multi-index multi-way set-associative cache
US6047357A (en) * 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US5715427A (en) * 1996-01-26 1998-02-03 International Business Machines Corporation Semi-associative cache with MRU/LRU replacement
JPH09259041A (ja) * 1996-03-27 1997-10-03 Hitachi Ltd キャッシュメモリ制御方式
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
WO1998034172A1 (en) * 1997-01-30 1998-08-06 Sgs-Thomson Microelectronics Limited A cache system

Also Published As

Publication number Publication date
JP2003517682A (ja) 2003-05-27
DE60042640D1 (de) 2009-09-10
US20020004876A1 (en) 2002-01-10
CN1347527A (zh) 2002-05-01
WO2001044948A1 (en) 2001-06-21
KR20010102210A (ko) 2001-11-15
CN1206594C (zh) 2005-06-15
EP1157336A1 (en) 2001-11-28
EP1157336B1 (en) 2009-07-29
US6643738B2 (en) 2003-11-04

Similar Documents

Publication Publication Date Title
KR100810781B1 (ko) 캐시 메모리를 구비한 데이터 프로세서
US7284096B2 (en) Systems and methods for data caching
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US5630097A (en) Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses
US5689679A (en) Memory system and method for selective multi-level caching using a cache level code
KR100240912B1 (ko) 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법
US7099999B2 (en) Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
EP1149342B1 (en) Method and apparatus for managing temporal and non-temporal data in a single cache structure
US6772288B1 (en) Extended cache memory system and method for caching data including changing a state field value in an extent record
US6578111B1 (en) Cache memory system and method for managing streaming-data
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
JPH0574102B2 (ko)
US6668307B1 (en) System and method for a software controlled cache
KR20000069836A (ko) 로킹을 사용한 캐시 대체방법
US20100217937A1 (en) Data processing apparatus and method
WO2010004497A1 (en) Cache management systems and methods
US5717888A (en) Accessing cached data in a peripheral disk data storage system using a directory having track and cylinder directory entries
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US20190034335A1 (en) Cache and method
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
US6598124B1 (en) System and method for identifying streaming-data
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
JPH0743671B2 (ja) キャッシュ・メモリ制御方式
WO2002027498A2 (en) System and method for identifying and managing streaming-data
US7143239B2 (en) Cache structure and methodology

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130130

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee