KR100240912B1 - 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법 - Google Patents

데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법 Download PDF

Info

Publication number
KR100240912B1
KR100240912B1 KR1019960029940A KR19960029940A KR100240912B1 KR 100240912 B1 KR100240912 B1 KR 100240912B1 KR 1019960029940 A KR1019960029940 A KR 1019960029940A KR 19960029940 A KR19960029940 A KR 19960029940A KR 100240912 B1 KR100240912 B1 KR 100240912B1
Authority
KR
South Korea
Prior art keywords
stream
cache
data
streams
buffer
Prior art date
Application number
KR1019960029940A
Other languages
English (en)
Other versions
KR980010800A (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 KR980010800A publication Critical patent/KR980010800A/ko
Application granted granted Critical
Publication of KR100240912B1 publication Critical patent/KR100240912B1/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
    • 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
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

본 발명의 시스템 및 방법은 스트림 필터를 사용하여 스트림의 활성 레벨에 기초하여 스트림의 할당해제(de-allocate)를 지연시킴으로써, 스트림 스래싱 상황이 발생하는 것을 방지한다. 최근에 가장 적게 사용된(LRU : least recently used)스트림은 다수의 잠재적인 스트림이 검출된 후에만 할당해제된다. 데이터 처리 시스템에서, 주 메모리로부터 L1 캐시로 캐시 라인을 프리페치하기 위한 방법은 주 메모리에 버스에 의해 결합된 프로세서에 결합하는 것으로서, 프리페칭은 스트림 버퍼 및 스트림 필터를 이용하여 증대되고, 스트림 버퍼는 어드레스 버퍼 및 데이터 버퍼를 포함하며, 스트림 버퍼는 하나 이상의 활성 스트림을 보유하고, 스트림 필터는 하나 이상의 활성 스트림에 대응하는 하나 이상의 엔트리를 포함하며, 상기 방법은 L1 캐시 미스의 시퀀스를 모니터하는 단계, LRU에 기초하여 L1캐시미스에 응답하여 스트림 필터내의 엔트리를 교체하는 단계, 및 스트림 버퍼내 하나 이상의 활성 스트림중 하나를, 하나 이상의 활성 스트림중 그 하나에 대응하는 하나 이상의 엔트리 모두가 교체 단계에 의해 교체될 때까지 유지하는 단계를 포함한다.

Description

데이타 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법
본 발명은 일반적으로 데이터 처리 시스템(data processing system)에 관한 것으로, 특히, 데이터 처리 시스템에서 스트림 필터(stream filter)를 조작하는 시스템 및 방법에 관한 것이다.
현재의 프로그램 및 데이터를 고속으로 프로세서(processor)("CPU")가 이용할 수 있도록 함으로써 데이터 처리 시스템(data processing system)의 처리 속도를 증가시키기 위해 매우 높은 고속 메모리가 종종 사용된다. 이러한 고속 메모리는 캐시(cache)로서 알려져 있으며, 캐시는 주 메모리 액세스 시간(main memory access time)과 프로세서 로직(processor logic)간의 속도차를 보상해주기 위해 대형 컴퓨터 시스템(large computer system)에서 종종 활용된다. 프로세서 로직은 통상적으로 주 메모리 액세스 시간보다 빠르며, 결과적으로 처리 속도는 주 메모리의 속도에 의해 주로 제한된다. 동작 속도에서의 불일치를 보상하기 위해 사용되는 기법은 CPU와 주 메모리 사이에 프로세서 로직 전파 지연(processor logic propagation delays)에 가까운 액세스 시간을 갖는 매우 빠르고, 소형인 메모리를 활용하는 것이다. 이 메모리는 CPU에서 현재 실행중인 프로그램의 일부(segment) 및 본 발명의 계산에 있어서 자주 요구되는 임시 데이터(temporary data)를 저장하기 위해 사용된다. 프로그램(인스트럭션) 및 데이터를 고속으로 이용할 수 있도록 함으로써, 프로세서의 수행 속도(performance rate)를 증가시킬 수 있다.
대다수의 전형적인 프로그램을 분석한 결과 소정의 주어진 시간의 간격에서 메모리에 대한 참조(reference)는 메모리의 몇몇 국한된 영역내에 제한되려는 경향이 있다는 것을 알게 되었다. 이러한 현상은 "참조의 국한성(locality of reference)"이라는 특성으로 알려져 있다. 이러한 특성에 대한 이유는, 전형적인 컴퓨터 프로그램이, 종종 마주치게 되는프로그램 루프 및 서브루틴 호출을 수반하여 직선적으로 진행된다는 것을 고려하면 이해될 것이다. 프로그램 루프가 실행되는 경우, CPU는 루프를 구성하는 메모리내 인스트럭션의 세트를 반복적으로 참조한다. 주어진 서브루틴이 호출될 때마다, 서브루틴의 인스트럭션 세트가 메모리로부터 인출된다. 따라서, 루프 및 서브루틴은 인스트럭션을 인출하기 위해 메모리에 대한 참조를 국한시켜려는 경향이 있다. 정도는 작지만, 데이터에 대한 메모리 참조도 또한 국한성을 띠는 경향이 있다. 테이블 탐색 프로시져(table look-up pordedure)는 테이블이 저장되어 있는 메모리 부분을 반복적으로 참조한다. 반복적인 프로시쥬어는 공통된 메모리 위치를 참조하고, 숫자 어레이는 메모리의 국부적 영역내에 제한된다. 이러한 모든 관측의 결과는 참조의 국한성의 특성이고, 이로 인해 짧은 시간 간격에 걸쳐, 전형적인 프로그램에 의해 발생되는 인스트럭션의 어드레서는 몇몇 국한된 메모리의 영역을 반복적으로 참조하는 반면에 메모리의 나머지는 비교적 덜 빈번하게 액세스된다.
프로그램 및 데이터의 활성 부분이 고속의 소형 메모리내에 배치되는 경우, 평균 메모리 액세스 시간이 감소될 수 있으며, 따라서 프로그램의 전체 실행 시간이 감소된다. 이러한 고속의 소형 메모리는 전술한 바와 같이 캐쉬 메모리로 지칭된다. 캐시 메모리 액세스 시간은 종종 5 내지 10(배)만큼 주 메모리의 액세스 시간보다 작다. 캐시는 메모리 계층에 있어서 가장 빠른 구성요소로서 CPU구성요소의 속도에 근접한다.
캐시 구조의 기본적인 사상은 고속 캐시 메모리내에 가장 자주 액세스되는 인스트럭션 및 데이터를 유지하으로써, 평균 액세스 시간이 캐시의 액세스 시간에 근접할 것이라는 것에 토대를 둔 것이다. 캐시가 주 메모리의 크기의 작은 부분이기는 하지만, 프로그램의 참조 국한성 특성으로 인해, 요구된 메모리의 대부분은 고속 캐시 메모리에서 발견될 것이다.
캐시의 기본적은 동작은 다음과 같다. CPU가 메모리 액세스를 필요로 하는 경우, 캐시가 조사된다. 캐시내에서 워드가 발견되면, 고속 메모리로부터 워드가 판독된다. CPU에 의해 어드레스된 워드가 캐시에서 발견되지 않으면, 워드 판독을 위해 주 메모리가 액세스된다. 그 다음, 방금 액세스된 워드를 포함하는 워드의 블럭이 주 메모리로부터 캐시 메모리로 전송된다. 이러한 방법으로, 몇몇 데이터는 메모리에 대해 이후의 참조가 있을시 고속 캐시 메모리내에서 필요한 워드를 발견할 수 있도록 캐시로 전송된다.
컴퓨터 시스템의 평균 메모리 액세스 시간은 캐시를 사용함으로써 상당히 개선될 수 있다. 캐시 메모리의 성능은 "히트율(hit ratio)"로 불리우는 양(quantity)에 의해 종종 측정된다. CPU가 메모리를 참조하여 캐시내의 워드를 발견하는 경우, CPU는 "히트(hit)"되었다고 말한다. 워드가 캐시내에서 발견되지 않는 경우, 워드는 주 메모리내에 존재하며 워드는 "미스(miss)"로서 간주된다. 히트율이 충분히 높아 CPU가 대부분의 시간에 주 메모리 대신에 캐시를 액세스할 수 있으면, 평균 액세스 시간은 고속 캐시 메모리의 액세스 시간에 근접한다. 예를 들면, 100ns의 캐시 액세스 시간, 1000ns의 주 메모리 액세스 시간 및 0.9의 히트율을 갖는 컴퓨터는 200ns의 평균 액세스 시간을 발생한다. 이것은 캐시 메모리가 없는 유사한 컴퓨터, 즉 액세스 시간이 1000ns인 컴퓨터에 비해 상당히 개선된 것이다.
최근의 마이크로프로세서(microprocessor)에서, 프로세서 사이클 시간은 기술 혁신에 의해 지속적으로 개선되고 있다. 또한, 추론적 실행(speculative execution), 심층 파이프라인, 보다 많은 실행 소자 등의 설계 기법은 마이크로프로세서의 성능을 지속적으로 개선한다. 개선된 성능은 메모리 인터페이스에 상당한 부담을 지울 수 있는데, 이는 프로세서가 마이크로프로세서에 공급하기 위해 메모리로부터 보다 많은 데이터 및 인스트럭션을 요구하기 때문이다. 대형 온-칩 캐시(large on-chip caches)(L1 캐시)는 메모리 대기시간(memory latency)을 감소시키기 위해 구현되고, 이들 캐시는 보다 대형의 오프-칩 캐시(L2 캐시)에 의해 종종 증대된다.
프리페칭 기법은 대기시간을 감소시키기 위해 미리 L1캐시로 메모리 데이터 공급을 시도하도록 구현된다. 이상적으로, 프로그램은 프로세서가 메모리 데이터를 필요로 하는 경우 이 메모리 데이터의 사본이 항상 L1 캐시내에 존재하도록 사전에 데이터 및 인스트럭션을 충분히 프리페치할 것이다.
문제는 마이크로프로세서 구조가 사전 정보를 충분히 제공하지 않기 때문에, 필요할 수도 있는 데이터 어드레스를 모든 경우에 있어서 명시적으로 결정할 수 없다는 것이다. 예를 들면, 메모리내의 데이터 오퍼랜드(data operand)에 대한 어드레스 그 자체는 메모리내에 존재하므로, 메모리 인스트럭션에 의해 사용되려면, 소정의 제1 인스트럭션에 의해 인출되어야만 한다. 이러한 시퀀스에서, 프로세서는 프리페치를 수행하기 위해 미리 어드레스를 가지고 있지 않다.
인스트럭션 및/또는 데이터의 프리페칭은 당해 기술분야에 잘 알려져 있다. 그러나, 기존의 프리페칭 기법은 종종 인스트럭션 및/또는 데이터를 너무 이르게 프리페치한다. 프리페칭한 후 프리페치된 인스트럭션 및/또는 데이터를 사용하지 않음으로써 발생하는 문제는 2가지로 요약된다. 첫째, 프리페치 데이터가, 프로세서가 필요로 하는 데이터를 교체했을 수도 있고, 둘째, 프리페치 메모리 액세스로 인해, 후속 프로세서 캐시 재로드가 그 프리페치 액세스 동안 대기해야 한다는 것으로서, 이로 인해, 요구된 데이터의 지연이 증가하게 된다. 이들 모두는 CPU의 효율을 떨어뜨린다.
점진적 메모리 위치에 대한 지속적인 액세스가 검출되는 경우 메모리로부터 데이터를 프리페치하는 데 도움을 주기 위해 스트림 버퍼가 사용된다.
문제를, N개의 스트림이 임의의 시간에 활성화(할당(allocate))될 수 있는 한정된 수의 스트림 버퍼에 있어서, N개의 할당된 스트림이 더이상 사용되지 않게 되기 전에 , 새로운 잠재적인 스트림의 스트림 할당이 존재하고, 그 새로운 스트림이 활성 스트림 중 하나를 그 프리페치된 데이터가 사용되기 전에 교체하는 경우, "스래싱"상태가 발생할 수 있다는 것이다. 따라서, 데이터 처리 시스템의 프리페칭 프로토콜(perfetching protocol)에서 이용되는 스트림 버퍼내에서 스트림의 스래싱을 감소시키기 위한 시스템 및 방법에 대한 기술이 필요하다.
본 발명의 목적은 스트림의 활성 레벨에 기초하여 스트림의 할당해제(de-allocate)를 지연시키는 스트림 필터를 사용하는 시스템 및 방법을 제공함으로써, 스트림 스래싱 상황이 야기되는 것을 방지하는데 있다. 최근에 가장 적게 사용된(LRU : least recently used) 스트림은 다수의 잠재적인 새로운 스트림이 검출된 후에만 할당해제된다.
개시된 사상의 실시예는 임의의 시간에 4개의 스트림까지 할당할 수 있는 스트림 버퍼를 구현하는데 있다. 실시예와 연관된 필터 버퍼는 LRU에 기초하여 할당되는 10개의 엔트리를 갖는다.
통상의 동작에서, 필터에 의해 스트림 액세스가 검출되는 경우, 그 스트림에 대한 필터 엔트리는 필터의 가장 최근에 사용된(MRU : most recently used)위치에 세트된다. 새로운 라인이 연관된 스트림내에서 액세스될 때마다, 엔트리는 MUR 위치로 복귀한다. 예를 들면, 4 개의 스트림(1,2,3,4)이 활성이고, 다른 캐시 미스가 없으면, 4개의 스트림은 필터 버퍼의 4개의 MRU 위치중 하나를 항상 차지할 것이다. 후속 스트림 액세스간에 캐스 미스가 있으면, 필터는 이들에 대해서도 마찬가지로 엔트리를 포함할 것이며, 따라서 4개의 스트림은 때때로 4개의 MUR 위치 이외의 위치를 차지할 것이다. 필터가 10개 엔트리를 갖는 경우, 임의의 두 연속적인 스트림 액세스간에 9개 미만의 캐시 미스의 사례가 있는 한, 스트림은 할당된 상태로 유지될 수 있다. 명백히, 스트림 액세스 사이에서 10개의 캐시 미스가 있었다면, LRU 방안은 전체 10개의 필터 엔트리를 그 미스한 라인에 할당함으로서, 스트림 할당을 에이지 아웃(age out)할 것이다. 4 개의 스트림이 할당되어 있는 경우, 스트림은(필터가 4개의 스트림에 대한 충분한 엔트리 이외에 6개의 다른 필터 엔트리를 포함하고 있기 때문에)스트림 액세스 사이에 7개의 캐시 미스가 발생할 때 까지 필터를 에어지 오프(age off)하지 않을 것이다.
이하 설명되는 본 발명의 상세한 설명을 보다 쉽게 이해할 수 있도록 하기 위해 본 발명의 특징 및 기술적 장점을 다소 광범위하게 설명하였다. 본 발명의 추가적인 특징 및 장점은 이후 상세히 설명될 것이며, 이들 특징 및 장점들은 본 발명의 청구범위에 있어서 요지를 형성한다.
본 발명을 보다 완전히 이해할 수 있도록 하고, 본 발명의 장점에 대해 첨부 도면과 함께 상세한 설명이 이루어질 것이다.
제1도는 본 발명에 따라 구성할 수 있는 멀티프로세서 시스템을 도시한 도면.
제2도는 본 발명에 따라 구성할 수 있는 데이터 처리 시스템을 도시한 도면.
제3도는 스트림 필터 및 스트림 버퍼를 도시한 도면.
제4도는 제2도에 도시된 시스템의 보다 상세한 도면을 도시한 도면
제5도는 본 발명에 따른 기능적인 도면을 도시한 도면.
제6a~d도는 본 발명에 의한 프리페칭 국면에 따른 흐름도를 예시한 도면.
제7도는 L1 캐시에 대해 캐시 라인을 프리페치하고 L2 캐시에 대해 캐시 라인을 프리페치하지 않는 프리페칭의 흐름도 및 그 프리페치된 캐시 라인과 연관된 디렉토리 필드내의 태그 비트의 셋팅을 도시한 도면.
제8도는 제7도의 흐름도에 따라 프리페치된 프리페치 캐시 라인의 할당해제를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
102 : 시스템 메모리 104 : 메모리 제어기
106, 108, 110 : 프로세서 126 : 입/출력 제어기
128 : 입/출력 디바이스 205 : 노드 제어기
207 : 스위치 403 : 필터
이어지는 설명에서, 특정한 워드 혹은 바이트 길이 등과 같은 다수의 특정한 세부적 상황을 제시하여 본 발명을 완전히 이해할 수 있도록 할 것이다. 그러나, 본 발명이 이러한 특정한 세부적 사항에 의하지 않고도 실행될 수 있다는 것은 당업자에게 자명할 것이다. 다른 예에서, 불필요한 세부적 사항으로 인해 본 발명이 불명확해지지 않도록 하기 위해 잘 알려진 회로는 블럭도 형태로 도시된다. 대부분의 경우, 타이밍에 대한 고려 등과 관련한 상세 설명은 본 발명을 완전히 이해하는데 필요없기 때문에 생략되었으며 관련 기술분야에서 통상의 지식을 가진자에게 자명할 것이다.
도시한 구성요소는 반드시 실제 축적대로 도시된 것은 아니며, 동일하거나 혹은 유사한 구성요소는 여러 도면에 걸쳐 동일한 참조 부호로 표시된다.
제1도를 참조하여, 본 발명을 유효 적절하게 구현한 데이터 처리 시스템이 기술될 것이다. 멀티프로세서 시스템(100)은 시스템 버스(124)에 동작가능하게 접속된 다수의 프로세싱 유닛(106, 108, 110)을 포함한다. 주목해야 할 것은 임의의 갯수의 폴세싱 유닛이 시스템(100)내에서 이용될 수 있다는 것이다. 시스템 메모리(102)에 대한 엑세스를 제어하는 메모리 제어기(104)가 시스템 버스(124)에 또한 접속된다. 메모리 제어기(104)는 입/출력 제어기(126)에 또한 결합되고, 이 제어기(126)는 입/출력 디바이스(128)에 결합된다. 프로세싱 유닛(106, 108, 110), 입/출력 제어기(126), 입/출력 디바이스(128)는 본 명세서에서 모두 버스 디바이스로 지칭될 수 있다. 도시된 바와 같이, 각각이 프로세서 유닛(106, 108, 110)은 프로세서 및 L1 캐시(112, 114, 116)를 각각 포함할 수 있다. L1캐시는 개별 프로세서와 동이한 칩상에 위치할 수 있다. L2캐시(118, 120, 122)는 프로세싱 유닛(106, 108, 110)에 각각 결합된다. 이들 L2캐시는 자신들이 부착된 프로세서를 통해 시스템 버스(124)에 접속된다.
각각의 L1 및 L2 쌍은 통상 직렬로 관련된다. L1 캐시는 스토어 인(store in) 혹은 라이트 쓰루(write-through)로서 구현될 수 있는 반면에, 대형이며 저속의 L2캐시는 라이트 백 캐시(write-back cache)로서 구현된다. L1 및 L2 캐시 제어기는 프로세싱 유닛의 일부로서 물리적으로 구현되며, 내부 버스를 통해 프로세싱 유닛에 접속된다. L2제어기는 오프 칩(off chip)일 수 있으며, 본 발명이 마찬가지로 적용될 것이다.
제2도를 참조하면, 데이터 처리 시스템(200)이 도시되어 있으며, 이러한 처리시스템은 또한 본 발명에 따라 동작하도록 구성될 수 있다. 시스템(200)은 시스템(100)의 또다른 구조이다. 시스템(100 및 200)에서, 프로세서 및 캐시의 기본적인 동작은 유사하다. 메모리 제어기(104) 및 노드 제어기(205)의 제어 및 기능은 본 발명에 대해 유사하다.
시스템(200)에서, 프로세서(201)는 내부 L1 캐시(202)를 가지며, 이 L1 캐시(202)는 외부 L2 캐시(203)에 결합된다. 프로세서(201)는 버스(204)에 의해 노드 제어기(205)에 결합된다. 노드 제어기(205)는 시스템(200)의 나머지를 포로세서(201)에 접속하는 것과 관련하여, 당해 기술분야에 알려진 기본적인 기능을 수행한다. 노드 제어기(205)는 버스(206)에 의해 스위치(207)에 결합되고, 이 스위치(207)는 다른 프로세서 및/또는 입/출력 디바이스(도시되지 않음)를 버스 (208)에 의해 시스템 메모리(209)에 결합할 수 있는 교차점 스위치(cross-point switch)일 수 있다. 논의의 나머지는 시스템(200)에 대한 것이지만, 이어지는 본 발명에 대한 논의는 시스템(100)내에서도 타당하며 시스템(100)내에서 구현될 수도 있다.
본 발명의 목적은 L1캐시(202)내로 캐시 라인을 프리페치하기 위한 효율적이고 정확한 기법을 제공함으로써 프로세서(201)가 상당한 시간동안 L1캐시(202)내의 이들 캐시 라인에 히트되도록 하고, 이에 의해 프로세서(201)의 성능을 저하시키는 시스템 메모리(209)로부터의 어드레스 및 데이터 정보의 검색을 최소화하는데 있다.
프로세서 동작의 성능을 개선하기 위해 마련된 종래 기법의 하나는 캐시 라인의 프리페치를 위해 스트림 필터 및 버퍼를 이용하는 것이었다. 제3도를 참조하면, 스트림 필터 및 스트림 버퍼는 당해 기술분야에 알려져 있다. 스트림 필터는 사용되지 않는 데이터의 프리페치 발생을 감소시키기 위한 것이다. 이들 펄터는 어드레스 및 방향 정보를 포함하는 히스토리 버퍼이다. 필터는 L1캐시내에서 미스한 캐시 라인의 다음의 순서적 상위 라인인 캐시 라인의 어드레스를 포함한다. 다음의 상위 캐시 라인에 액세스가 이루어지면, 스트림 상태가 검출되고 스트림 버퍼가 할당된다. "X"에 대한 액세스가 있으면, 필터는 라인 어드레서 "X+1"로 기록될 것이다. "X+1"가 여전히 스트림 필터내에 상주하는 동안 어드레스 "X+1"에 대해 후속적인 액세스가 이루어지면, "X+1"이 스트림으로서 할당된다.
스트림 버퍼는 잠재적인 캐시 데이터를 보유하는 프리페치 버퍼이다. 프로세서내에서 실행중인 프로그램이 데이터/인스트럭션의 순차적인 스트림을 실행하면, 추가의 라인들을 스트림 버퍼내로 프리페치하는 것이 유용할 수 있다는 점에 착안한다. 따라서, 후속 캐시 미스일 경우, 스트림 버퍼 내에서 그 데이터를 발견할 수 있을 것이다. 스트림 필터와 스트림 버퍼는 상호협조하여, 스트림 버퍼에 대해서도 미스한 L1 캐시 미스가 있으면, 미스 어드레스가 스트림 필터내에 저장된 어드레스에 비교되도록 한다. 스트림 필터내에 히트가 있으면(데이터의 순차적인 라인들에 대해 순차적인 액세스가 있었음을 의미), 그 다음 라인이 또한 장래에 요구될 수 있다는 충분한 가능성이 있다. 스트림 버퍼 및 스트림 필터에 대한 보다 상세한 설명에 대해서는, 에스. 팰러칼라(S.Palacharla) 및 알.케슬러(R.Kessler)에 의한 1994 IEEE 106-6879/94의 Evaluating Stream Buffers as a Secondary Cache Replacement를 참조하기 바라며, 이것은 본 명세서에서 참조로서 인용된다.
제4도를 참조하면, 본 발명에 따라서 구성되고 CPU(201)를 통한 데이터 흐름을 예시하는 시스템(200)의 보다 상세한 흐름도가 예시되어 있다. 흐름에 대해 변화를 가하는 것은 당해 기술에 알려져 있으며, 인스트럭션 및 데이터에 대해 개별적인 L1캐시의 사용을 포함한다. L1 캐시(202)는 당해 기술분야에 잘 알려진 임의의 교체 정책(replacement policy)을 이용하여 메모리(209)로부터 자주 사용되는 데이터의 사본을 보유한다. 대형 L2 캐시(203)는 L1캐시보다 많은 데이터를 보유하며 통상적으로 메모리 코히어런시 프로토콜을 제어한다. 본 발명에서, L1캐시(202)내의 데이터는 L2캐시(203)내의 데이터의 서브세트일 수도 있다. L1캐시(202) 및 L2 캐시(203)는 "스토어인(store-in)" 캐시이다. (입/출력을 포함하는)다른 기능적인 구성요소는 당해 기술분야에 알려진 스누프 프로토콜(snoop protocol)을 사용하여 데이터에 대해 경쟁한다. 스누핑의 한 형태가 미국 특허 출원 제 08/442,740호에 개시되어 있다.
CPU(201)에 대해 도시된 경계는 칩 경계(chip boundary) 및 기능적인 경계(functional boundary)를 나타내지만, 본 발명의 범위를 제한하려는 것은 아니다. PCC(404)는 프로세서 캐시 제어기이며 메모리 서브시스템에 대한 인출 및 저장을 제어한다. PCC(404)는 L1 캐시(202)에 대한 디렉토리의 구현 및 유효 어드레스(effective address)를 실 어드레스로 변환하거나 그 반대의 변환과 같은 당해 기술분야에 잘 알려진 다른 기능을 갖는다. 프리페치 버퍼("PBFR")(402)는 CPU(201) 및 L1 캐시(202)로 전달될 소정 수의 메모리 데이터 라인들을 보유한다. PBER(402)은 스트림 버퍼이다.
PCC(404)가 데이터를 인출하는 경우, 데이터가 L1 캐시(202)내에 있으면(L1 히트), 데이터는 PCC(404)로 전송된다. 데이터가 L1캐시(202)내에 있지 않고(L1이 미스), L2 캐시(203)내에 있으면(L2가 히트), L1 캐시(202)의 라인은 L2캐시(203)로부터 이러한 대상 데이터(subject data)로 교체된다. 이러한 경우, 데이터는 L1 캐시(202) 및 PCC(404)로 동시에 전송된다. 마찬가지로 L2 캐시(202)내에서 미스가 있으면, 데이터는 메모리(209)로부터 BIU(401)내로 인출될 수 있고, L1캐시(202), L2캐시(203), 및 PCC(404)내로 동시에 로드된다. 이러한 동작에 대해 변화를 주는 것은 당해 기술분야에 잘 알려져 있다. 데이터 저장 동작은 데이터가 L1내에 저장되어 동작을 완료한다는 것을 제외하고는 인출 동작과 유사하다.
이하의 설명에서, 스트림 버퍼의 여러 부분은 시스템(200)의 여러 부분에 위치한다. 본 발명을 구현함에 있어, 스트림 버퍼는 4개의 캐시 라인을 저장할 수 있는 능력을 갖지만, 임의의 수의 캐시 라인들이 스트림 버퍼내에 구현될 수 있다. 스트림 버퍼의 한 캐시 라인은 L1 캐시(202)내에서 구현된다. 본질적으로, L1 캐시(202)내의 캐시 라인중 하나는 스트림 버퍼의 캐시 라인중 하나의 기능을 위해 이용된다. 스트림 버퍼의 제2 캐시 라인은 PBFR(402)내에 위치한다. 스트림 버퍼의 나머지 두 캐시 라인은 노드 제어기(205)내의 PBFR2(405) 및 PBFR3(406)내에 위치한다. 노드 제어기(205)는 버스(204)를 따라 CPU(201)로부터 하향으로(downstream)칩상에 위치할 수 있다. 주목해야 할 것은, 시스템(100)의 구조가 이용되는 경우, 메모리 제어기(104)가 이들 스트림 버퍼 라인을 포함할 수도 있다는 점이다.
상기 인용된 IEEE 논문에 개시되어 있는 바와 같이, 스트림 필터 및 스트림 버퍼의 기본적인 동작은, 요구된 캐시 라인에 대한 L1캐시 미스가 있는 경우, 이 캐시 라인의 어드레스가 증가(일반적으로 1만큼)되고, 이러한 증가된 어드레스는 스트림 필터(403)내에 삽입된다. L1 캐시(202)내에서 캐시 라인의 후속적인 미스가 발생하는 순간, 이러한 L1 캐시 미스의 어드레스는 필터(403)내에 포함된 어드레스와 비교된다. 어드레스의 일치(match)가 확인되면, 캐시 라인들로 이루어진 한 스트림이 스트림 버퍼내에 할당된다.
전술한 바와 같이, 캐시 미스가 있는 경우, 필터 버퍼에는 다음의 순차 캐시 라인의 어드레스가 기록된다. 필터는 이러한 이벤트의 "히스토리"를 포함하는 어드레스를 보유할 수 있는 다수의 위치를 포함한다. 이들은 LRU(least recently used)에 기초하여 교체될 수 있다. 캐시 미스가 있는 경우에는 언제나, 필터내의 어드레스는 캐시 라인 미스의 어드레스와 비교된다. 히트가 있다면, 필터 히트가 존재한다고 하며 스트림이 할당된다. 스트림 모드에서는, 여분의 캐시 라인(들)이 스트림 버퍼내로 프리페치된다. 이는, 그 여분의 캐시 라인(들)이 소정 스트림의 일부로서 L1캐시에 의해 요구될 것이라는 기대하에 이루어지는 것이다.
제5도는 본 발명에 따른 스트림 버퍼의 동작을 도시하는 하이 레벨의 기능도이다. CPU(201)는 사용된 구조에 따라 유효 어드레스(effective address : EA)를 발생한다. EA는 잠재적으로 오프셋을 갖는 프로그램 어드레스이다. CPU(201)는 EA에 대응하는 변환된 어드레스, 즉 실 어드레스(RA)를 발생한다. 큐(502)에 의해 실 어드레스가 사용되지만, 이와 달리 필터 큐(502)가 유효 어드레스를 사용하는 것은 본 발명의 범주내에 포함될 것이다. RA는 필터 큐(502)내의 RA와 일제히 비교되고, 자신의 유효 비트(V)로 표시된 바와 같이, 엔트리가 유효한 경우, 필터 히트으로 불리우는 일치가 발생한다. 필터 큐(502)는 또한 각각의 엔트리에 대한 추측 방향 표시기(guessed direction indicator)를 포함한다. 이 표시기는, 추측된 스트림이 증가되거나 혹은 감소(+/- 혹은 UP/DOWN)될 것임을 표시한다. 각각의 필터 큐 엔트리는 그 어드레스에 대응하는 스트림이 존재하는지를 표시하고 스트림이 존재하는 경우, 스트리의 스트림 번호를 표시하는, 소정의 필드를 또한 포함한다.
잘 알려진 바와 같이, 메모리(209)는 종종 논리적인 서브섹션으로 나누어지고, 특히 메모리(209)는 페이지로 나누어지며, 이 페이지는 운영 체제에 의해 프로그램에 할당되는 메모리의 증가를 나타내며, 직접 액세스 저장 디바이스(direct access storage device : DASD)와 메모리(209) 사이의 데이터 "페이징"을 제어하기 위해 사용될 수 있다. 페이지는 순차적인 EA에 비해 비순차적으로 지정될 수 있다. 따라서, EA가 스트림 데이터의 프리페치를 위해 사용되면, 어드레스 변환은 페이지 경계가 교차하는 경우 변환기(XLATE)(503)내에서 수행되어야 하는데, 그 이유는 스트림 버퍼가 전술한 바와 같이 순서적이지 않을 수도 있는 실 어드레스를 포함하기 때문이다. 각각의 페이지는 라인으로 더욱 분할된다. 라인 크기는 캐시 구현에 의해 결정되고 캐시 라인내 메모리 데이터의 양에 대응한다. 캐시 미스는 데이터의 한 라인이 캐시로 전달되는 결과를 가져올 것이다.
필터 히트가 있는 경우, 소정의 스트림이 스트림 어드레스 큐(501)내에 할당될 수 있으며, 대응하는 할당이 스트림 데이터 버퍼(506)내에 이루어질 수 있다. 스트림 어드레스 엔트리는 특정한 할당 스트림에 대해 다음의 데이터 라인의 추측 유효 어드레스를 포함한다. 일단, 이것은 마찬가지로 구현상의 선택일 뿐이며, 실 어드레스가 대안으로서 사용될 수 있다. 스트림 어드레스 엔트리는 또한 스트림이 할당되었다는 것을 표시하는 유효 비트(V)를 포함한다. 또한, 스트림의 상태를 추적하기 위해 사용되는 상태 필드가 있다. 또한, 추측 방향의 사본이 스트림 버퍼내에 유지된다. 비교기(505)는 프로세서 EA를, 스트림 어드레스 큐(501)내에 포함된 페이지 및 라인 어드레스와 비교한다.
제5도에 도시된 기능성은 대안적인 방법으로 구현될 수 있으며, 여전히 본 발명의 범주내에 존재한다.
메모리(209)내의 메모리 공간은 128 바이트 라인으로 분할될 수 있다. 각각의 라인은 절반으로 분할될 수 있으며, 따라서, 라인의 짝수 절반은 어드레스 0에서 어드레스 63까지이고, 홀수 절반은 어드레스 64에서 어드레스 127까지이다. 전술한 바와 같이, CPU(201)는 논리 어드레스(logical address : EA)를 발생하며, 이 어드레스는 메모리내의 캐시 가능한 라인에 대해 실 어드레스로 변환된다. 메모리는 2*N 바이트의 페이지로 분할된다. 페이지는 크기에 있어 캐시 엔트리에 대응하는 라인으로 분할된다. 캐시 미스가 있을 때마다, 연관된 실 어드레스가 분석된다. 실 어드레스가 라인의 짝수 절반내에 있으면, 잠재적은 스트림은 증가 스트림이다. 필터 큐(502)내의 LRU 필터 큐 엔트리는 "업(up)"의 방향으로 표시되고, 라인 미스 RA는 "1"만큼 증가되어 엔트리내에 저장된다. RA가 라인의 홀수 측에 있으면, 큐(502)내의 RA엔트리는 1만큼 감소되고, 엔트리내에 "다운(down)"으로 표시된다.
이와 다른 구현으로서 미스시 필터 엔트리내에 RA를 저장하고 업 혹은 다운의 방향으로 결정하기 위해 엔트리에 대해 후속적인 미스를 비교하는 것은 본 발명의 범주에 속한다.
소정의 스트림이 할당되는 때, "다음의" 유효 라인 어드레스가 스트림 어드레스 버퍼(501)내에 저자됨을 알 수 있다. 버퍼(501)는 각각의 활성 스트림에 대해 하나의 엔트리를 포함한다. 유효 "V" 비트는 엔트리가 사용중이라는 것을 표시하고, 방향 표시기는 스트림이 업(+)인지 혹은 다운(-)인지를 표시한다. 상태 필드는 스트림의 상태를 표시하는데 사용된다. 데이터의 프리페치된 라인을 보유하는 스트림 데이터 버퍼(506)는 스트림 어드레스 버퍼(501)와 연관된다. 필터 큐(502)와 스트림 버퍼(501)에 의해 예측된 어드레스는 모두 페이지 경계와 마주치는 경우 종료된다.
L1 캐시(202)와 L2 캐시(203)가 캐시 미스이면, 메모리(209)를 액세스하기전에 스트림 버퍼가 참조된다. 필터 큐(502)와 스트림 어드레스 버퍼(501)의 회로를 조합하는 것은 명백히 본 발명의 실시예에 해당된다.
전술한 스트림 필터 및 스트림 버퍼와 관련한 종래 기술과 앞서 참조한 IEEE 논문에 기재되어 있는 종래 기술은 L2 캐시의 대안으로서 스트림 버퍼의 효과를 분석한다. 이 경우, 프리페치는 항상 증가하는 것으로 추측된다. 또한, 하나의 라인 혹은 워드와 달리 "스트라이트(stride)"만큼 어드레스가 증가될 수 있는 스트라이드 필터 - 스트라이드 길이는 그 버퍼내에 저장됨 - 가 개시되고 도시된다. 스트라이드 필터 개념은 대안적인 실시예로서 구현될 수 있으며 본 발명의 범주내에 있다.
제6a-d도를 참조하면, 본 발명의 점진적 프리페치 모드의 흐름도가 도시되어 있다. 전술한 바와 같이, 본 발명은 3개의 점진적 프리페치 모드, 즉 정규 모드, 데이터 프리페치 모드, 블라스트(Blast) 모드를 허용한다. 정규 모드에서, 데이터는 프리페치되지 않는다. 데이터 프리페치 모드에서는, 2개의 라인이 프르페치되며, 하나의 라인은 L1 캐시로 프리페치되고 하나의 라인은 스트림 버퍼로 된다. 블라스트 모드에서는, 2개를 초과하는 라인이 동시에 프리페치된다. 본 발명의 바람직한 실시예의 블라스트 모드에서, 4개의 라인, 즉 데이터 프리페치 모드로서 2개의 라인 및 스트림 버퍼로 2개의 추가의 라인이 프리페치된다. 모든 모드에서, 프리페치된 버퍼는 프로세서 칩, 캐시 칩, 외부 칩 혹은 메모리 카드상에 패키지화될 수 있으며, 계속해서 본 발명의 범주내에 속한다. 제6a-d도는 스트림이 어느 방향으로 흐를 것인지를 추측하기 위한 방향이 증가되고 있는 예를 도시한다. 감소되는 예는 명백히 이러한 예의 변형일 것이다. 제6a-d도의 흐름도는 데이터 프리페치 및 블라스트 모드가 어떻게 개시되는지를 도시한다.
단계(601)에서, CPU(201)는 캐시 라인 A에서 시작하는 데이터를 액세스하기 시작한다. 단계(602)에서, 캐시 라인 A가 L1캐시(202)내에 있는지 없는지에 대한 판단이 이루어진다. L1 캐시내에 있다면, 프로세스는 단계(603)로 진행하고, 이 단계에서 캐시 라인 A는 CPU(201)로 복귀된 후 단계(604)에서 프로세스는 끝난다.
그러나, 캐시 라인 A상에서 미스가 있다면, 프로세스는 단계(605)로 진행하고, 이 단계에서 캐시 라인 A의 어드레스는 스트림 필터(403)내에 포함된 모든 어드레스와 비교된다.
캐시 라인 A가 필터(403)내에 존재하지 않는 경우, 프로세스는 단계(606)로 진행하고, 이 단계에서 캐시 라인 A의 어드레스는 1만큼 증가되고 필터(403)내에 삽입된다. 그후, 단계(607)에서, 캐시 라인 A는 L2 캐시(203)나 메모리(209)로부터 L1 캐시(202)로 인출된다. 이러한 단계는 당해 기술분야에 잘 알려져 있다.
제6a-d도의 단계(607)에서 단계(608)로의 점선 화살표는 단계(608)가 단계(607)에 바로 뒤이어 발생하거나 발생하지 않을 수도 있다는 것을 도시한다. 일반적으로, 스트림 필터내의 어드레스 엔트리만큼의 미스가 캐시 라인 A+1에 대한 요구에 대해 앞서 발생할 수도 있다.
잠시 후, CPU(201)는 캐시 라인 A+1을 요구할 수 있다. 또한, PCC(404)는 캐시 라인 A+1이 L1 캐시(202)내에 존재하는지 여부를 판단한다(609). 캐시 라인 A+1이 L1 캐시(202)내에 존재한다면, 캐시 라인 A+1은 단계(601)에서 CPU(201)로 복귀되고, 프로세스는 단계(611)에서 끝난다. 주목해야 할 것은 캐시 라인 A+1이 L1 캐시(202)내에 있기 때문에, 스트림 필터(403)에 대한 비교가 없으며, A+1엔트리는, 이하에 기술되어 있는 필터 교체 알고리즘(filter replacement algorithm)에 의해 퇴거될 때까지 필터(403)내에 유지된다는 점이다. 그러나, L1 캐시(202)내의 캐시 라인 A+1 상에서 미스가 있고 필터 히트(637)이 있으면, 프로세스가 단계(612)로 진행하며, 이 단계(612)에서 캐시 라인 A+2로 시작하는 캐시 라인들의 소정의 스트림이 할당되는데, 그 이유는 요구된 캐시 라인 A+1의 어드레스가 필터(403)내에 상주하는 어드레스 A+1과 일치하여, 그 결과 필터(403)내에서 히트가 발생하였기 때문이다. 이어, 단계(613)에서, 캐시 라인 A+1은 L2 캐시(203)나 메모리(209)로부터 L1캐시(202)로 인출된다. 또한, 캐시 라인 A+2가 존재하는지를 판단하기 위해 L1 캐시(202)가 체크된다. 캐시 라인 A+2가 존재하지 않는다면, 캐시 라인 A+2가 L2 캐시(203)나 메모리(209)로부터 인출된다.
그후, 단계(614)에서, 캐시 라인 A+3이 L2캐시(203)내에 상주하는지 여부가 판단된다. 상주하지 않는다면, 프로세스는 단계(615)로 진행하고, 이 단계에서 캐시 라인 A+3이 메모리(209)로부터 프리페치되어 프리페치 버퍼(402)내에 삽입된다. 그러나, 캐시 라인 A+3이 캐시(203)내에 상주하면, 프로세스는 단계(615)를 건너뛴다.
또한, 단계(615)에서 단계(616)로의 점선 화살표는 단계(616)가 단계(615)에 바로 뒤이어 발생하지 않을 수도 있다는 것을 나타낸다.
단계(616)에서, 프로세서(201)는 캐시 라인 A+2를 요구할 수 있다. 이는, L1 캐시(202)에 대한 캐시 라인 A+2의 액세스에 해당하는 것이다. 단계(613)에서, 캐시 라인 A+2가 L1 캐시(202)내로 인출되었기 때문에, L1 캐시(202)는 이러한 캐시 라인을 CPU(201)로 공급할 수 있을 것이다. 단계(617)에서, 스트림 어드레스 버퍼(501)내의 스트림 어드레스는 스트림의 헤드에 어드레스 A+3을 갖도록 갱신된다. 그후, 단계(618)에서, 캐시라인 A+3이 존재하는지를 판단하기 위해 L1 캐시(202)가 체크되고, 존재하지 않으면, 캐시 라인 A+3이 L2캐시(203)나 버퍼(402)에 L1 캐시(202)로 인출된다. 이어, 단계(619)에서, 캐시 라인 A+4가 L2 캐시(203)나 메모리(209)로부터 프리페치 버퍼(402)로 인출될 것이다.
그후, 블라스트 모드가 시스템(200)에서 이네이블되어 있지 않으면(620), 프로세스는 본질적으로 단계(616)로 복귀하고 CPU(201)가 도시된 바와 같이 순차적 증가 방법으로 캐시 라인을 통해 지속적으로 증가하는 동안 단계(616)에서 단계(621)까지를 반복적으로 순환한다. 단계(621)는 단계(616)에서 라인 A+3에서 대한 L1캐시 액세스가 있을 수도 있으며, 게다가 단계(617)에서, 스트림이 어드레스 A+3에 의해 갱신되고, 단계(618)에서, 라인 A+4가 L1 캐시(202)로 인출되고, 단계(619)에서, 캐시 라인 A+4가 버퍼(402)로 인출된다는 것을 나타낸다.
앞서 데이터 프리페치 모드를 기술하였다. 단계(620)에서, 블라스트 모드가 시스템(200)에서 이네이블되면, 캐시 라인 A+3에 대해 CPU(201)로부터의 요구가 있는 경우 프로세스는 단계(622)로 진행할 수 있다. 단계(622)에서, 이러한 요구에 대해, PCC(404)는 L1 캐시(202)내에서 캐시 라인 A+3에 대해 조사할 것이다. 단계(618)로 인해 캐시 라인 A+3이 L1 캐시(202)내에 상주하므로, 캐시 라인(A+3)은 CPU(201)로 복귀될 것이다.
그후, 단계(623)에서, 스트림 어드레스 버퍼(501)내의 스트림 어드레스는 A+4로 갱신될 것이다. 단계(624)에서, 라인 A+4가 존재하는지 판단하기 위해 L1 캐시(202)가 체크되고, 존재하지 않으면, 캐시 라인 A+4가 버퍼(402)로부터 L1캐시(202)내에 구현된 프리페치 버퍼 위치로 인출될 것이다.
그후, 단계(625)에서, 캐시 라인 A+5가 L2 캐시(203)내에 상주하는지 여부가 판단된다. 캐시 라인 A+5가 L2 캐시(203)내에 상주하면, 프로세스는 단계(626)나 단계(627)로 진행할 수 있다. 구현시, 노드 제어기(205)가 모든 스트림 버퍼 액세스를 통지받는 것이 필요할 것이다. 다음 스트림 버퍼 라인이 L1 캐시(203)에 있지 않아서 인출될 필요가 있다는 것으로 이러한 통지를 한정하면, 노드 제어기 버퍼(405 및 406)는 프로세서(201)와 임시적으로 동기화되지 않게 된다. 이러한 설계 트레이드 오프의 잇점은 단계(626 및 627)가 결합될 수 있어 노드 제어기(205)로의 어드레스 버스 트래픽을 감소시킨다는 것이다. 주목해야 할 것은, 커버될 주요 케이스에 있어서, A, A+1 라인 등의 어느 것도 프리페치되기 전에는 캐시(202)내에 존재하지 않았기 때문에, 캐시 라인 A+5는 통상적으로 L2 캐시(203)내에 없을것으로 예상된다는 점이다.
단계(626 및 627)가 전술한 이유로 인해 결합되는 경우, 단계(627)의 통지는 단계(626)의 프리페치에 추가된 4개의 추가적인 제어 비트에 의해 구현될 수 있다. 4개의 비트는 1비트 유효 프리페치, 2비트 스트림 식별 및 1 비트 프리페치 방향일 수 있다. 캐시 라인 A+5에 대한 어드레스 및 이들 비트를 사용하여, 노드 제어기(205)는 캐시 라인 A+6 및 A+7에 대한 메모리 요구를 발생할 수 있다. 전술한 바와 같이, 노드 제어기(205)는 임의의 캐시 라인을 프리페치하도록 구현될 수 있다. 단계(628)에서, 노드 제어기(205)는 라인 A+6을 프리페치 버퍼 PBFR2(405)로 프리페치하고, 캐시 라인 A+7을 버퍼(406)(PBFR3)로 프리페치할 것이다.
단계(628)와 단계(629) 사이의 점선은 캐시 라인 A+4에 대한 CPU(201)로부터의 요구가 단계(628)에 바로 뒤이어 발생하지 않을 수도 있다는 것을 표시한다.
단계(629)에서, L1 캐시(202)는 CPU(201)가 요구된 캐시 라인 A+4에 대해 엑세스된다. 캐시 라인 A+4가 단계(624)에서 L1 캐시(202)내에 삽입되었기 때문에, 캐시 라인 A+4는 CPU(201)로 복귀될 것이다. 단계(630)에서, 스트림 어드레스는 이제 어드레스 A+5가 앞에 오도록 증가된다. 단계(631)에서, 캐시 라인 A+5가 존재하는지를 판단하기 위해 L1 캐시(202)가 체크되고, 캐시 라인 A+5가 존재하지 않으면, 캐시 라인 A+5는 L2 캐시(203)나 버퍼(402)로부터 L1 캐시(202)로 인출된다.
그후, 단계(632)에서, 캐시 라인 A+6은 버퍼(405)에서 버퍼(405)로 이동된다. 그후, 단계(634)에서, 캐시 라인 A+7은 버퍼(406)에서 버퍼(405)로 이동된다. 그후, 단계(634)에서, 노드 제어기(205)는 캐시 라인 A+8을 프리페치하도록 통지받는다. 이러한 구현에서, 단계(632)에서의 캐시 라인 A+6의 인출은 노드 제어기(205)로 통지되어 캐시 라인 A+8을 프리페치하도록 한다(634). 단계(635)에서, 노드 제어기(205)는 메모리 (209)로부터 버퍼(406)로 캐시 라인 A+8을 프리페치한다.
그후, CPU(201)가 순차적 증가 방식(incremental sequencial manners)으로 캐시 라인을 지속적으로 액세스하는 한(즉, CPU(201)가 할당된 스트림내에서 캐시 라인을 지속적으로 액세스 함), 프로세스는 증가 방식으로 단계(629-636)를 반복적으로 순환할 것이다.
전술한 바와 같이, 버스 인터페이스 유닛(BIU)(410)은 메모리(209)로부터 캐시 라인의 인출을 수행할 수 있다.
노드 제어기(205)는 스위치(207)상의 포트일 수 있다.
유효 어드레스는 페이스 경계간에 연속적이고 실 어드레스는 그렇지 않기 때문에, 스트림 어드레스 버퍼(501)내에서 두 어드레스를 비교하는 경우 유효 어드레스를 이용하는 것이 종종 유리하다. 또한, 전술한 이유로 인해, 카운터가 증가 어드레스를 제공하기 위해 사용될 수도 있다.
전술한 바와 같이, BIU(401)로부터 메모리(209)로의 인출간에 제어 비트를 이용하면, 캐시 라인을 버퍼(405 및 406)로 프리페치하도록 노드 제어기(205)에 통지할 수 있다. 하나의 비트는, 이러한 특정 라인 요구가 노드 제어기(205)로 하여금 자신의 버퍼내로 프리페치를 수행하도록 요구한다는 것을 노드 제어기(205)에 통지할 수 있다. 다른 두 개의 비트는 어떤 스트림 번호가 그 프리페치와 연관되는 지를 노드 제어기(205)에 통지할 수 있다. 다른 비트는 캐시 라인내에서 어느 방향으로 어드레스가 향하고 있는 지를 나타낼 수 있다. 프리페치를 수행하도록 통지받은 경우 노드 제어기(205)는 CPU(201)의 동작과 독립적으로 이러한 프리페치를 수행할 수 있다. L1 캐시(202) 및 L2 캐시(203)에 관해 포함 관계를 유지하는 경우, 소정의 캐시 라인이 전술한 절차내에서 버퍼(402)로부터 L1 캐시(202)로 상향이동되는 경우, 동일한 캐시 라인이 L2 캐시(203)내에 또한 포함될 것이다.
스트림 버퍼 라인들중 하나를 L1 캐시(202)내에 갖는 잇점은 프로세서(201)에 의해 L1캐시(202)내의 그 버퍼 라인내에 포함되는 특정 캐시 라인이 요구되는 경우, 히트가 L1 캐시(202)내에서 발생하고 미스가 일어나지 않는다는 것이다. 기술적으로, 미스는 요구된 캐시 라인이 L1 캐시(202)에 부착된 별개의 버퍼내에 포함되어 있는 경우에도 발생할 수 있다. 이러한 미스로 인해, 스트림 버퍼 라인으로부터 CPU(201)로 그 캐시 라인을 검색하는 데에 과도한 하드웨어 및 사이클 시간이 필요하게 된다. 스트림 버퍼 캐시 라인들중 하나로서 작용하는 L1 캐시(202)의 그 캐시 라인은 논리적인 의미로 프리페치 스트림 버퍼내에 포함되어 있다고 말할 수 있다.
L1 캐시(202) 및 L2 캐시(203)에 대해 포함을 유지하는 경우, 캐시 라인이 전술한 절차내에서 버퍼(402)로부터 L1 캐시(202)로 상향 이동되는 때, 동일한 캐시 라인이 L2 캐시(203)내에 포함될 것이다.
통상의 구현에 있어서, L2 캐시는 L1 캐시내의 데이터의 수퍼세트(superset)를 포함하고 있다. 이러한 "포함(inclusion)" 알고리즘은 데이터 처리 시스템에 있어서 코히어런시를 보장하기 위한 수단을 제공한다. 본질적으로, 포함은 L1캐시내에 있는 모든 캐시 라인이 L2 캐시내에 또한 존재한다는 것을 의미한다. 예를 들면, L1 캐시는 L1캐시에 있어서의 데이터의 여하한 수정도 L2캐시내에 반영될 수 있도록 라이트-백(write-back)을 수행할 수 있다. 캐시 라인이 L1 캐시로부터 제거되는 경우, 데이터가 L2 캐시내에도 또한 존재하기 때문에 그것은 폐기가능하다.
L2 캐시(203)는 직접 맵핑(direct-map)될 수 있으며, 이것은 메모리내의 모든 라인이 L2 캐시((203)내의 한 위치에만 존재할 수 있수 있다는 것을 의미한다. 역으로, 연관 캐시는 특정 캐시 라인이 동시에 존재할 수 있는 여러 위치를 갖는다. 예를 들면, L2 캐시(203)는 직접 맵핑되고 16개의 캐시 라인의 용량을 갖는 것으로 가정한다. 예를 들면, 이러한 구조에 대해, 0으로 끝나는(즉, 0으로 연결된)어드레스를 갖는 모든 캐시 라인은 L2캐시(203)내의 0슬롯에서 끝날 것이다. 1로 끝나는 모든 캐시 라인은 1 슬롯에서 끝날 것이고, 15로 끝나는 모든 캐시 라인은 15슬롯에서 끝날 것이다.
역으로, L1 캐시(202)는 세트 연관되어 있다. 따라서, 캐시 라인은 L1 캐시 내의 여러 장소에 나타날 수 있다. 그 결과, 예를 들면, L1캐시(202)는 15에서 끝나는 XYZ 라인과 15에서 끝나는 ABC라인을 동시에 가질 수 있다. "포함"이 L1 캐시(202)와 L2 캐시(203) 사이에 유지되지 않으면 이러한 예가 발생할 수 있다. 그러나, 시스템(200)이 캐시 사이에 "포함"을 유지하고자 하는 경우, CPU(201)가 XYZ 라인을 로드하길 원하지만, ABC 라인도 역시 포함하는 경우, L2 캐시(203)는 CPU(201)로 하여금 XYZ 라인을 로드하기에 앞서 강제로 ABC 라인을 버리도록 하는데, 그 이유는 L1 캐시(202)가 XYZ 라인을 로드하기 위해 여러 장소를 갖는다 하더라도, L2 캐시(203)는 XYZ를 배치하기 위한 장소를 단 한 곳만 갖기 때문이다. 이것은 프리페칭시 문제시 야기할 수 있다. 예를 들면, 제6a-d도에 대하여 도시된 알고리즘에 따라서 개시 라인 XYZ 15는 버퍼(402)내에 있으며 CPU(201)는 L1 캐시(202)내에 상주하는 XYZ 14에 대한 히트를 획득한다고 가정한다. 흐름도에 따라서, 버퍼(402)내의 XYZ 15는 L1 캐시(202)내로 프리페치될 것이다. 포함이 유지되면, XYZ 15는 L2 캐시(203)내에 또한 로드될 것이다. L2 캐시(203)가 ABC 15를 또한 포함하면, 전술한 프리페치 동작은 L1 캐시(202)내의 캐시 라인이 스래시되거나 킥 아웃(thrashed or kicked out)되도록 할 것이다.
L1 캐시(202)내의 라인은 L1 캐시(202)내로의 XYZ 15의 프리페칭으로 인해 폐기될 뿐 아니라, L2 캐시(203)내의 ABC 15도 또한 XYZ 15의 포함으로 인해 제거될 것이며(L2 캐시(203)가 직접 맵핑된다는 것을 상기할 것), 또한 L1 캐시(202)내의 캐시 라인이 캐시 라인 ABC 15를 포함할 가능성이 있다. XYZ 15의 포함으로 인해 ABC 15가 L2 캐시(203)으로부터 폐기되면, 캐시 라인 ABC(15)도 역시 L1 캐시(202)로부터 폐기되지 않으면 안될 것이다.
전술한 시나리오는 랜덤 데이터와 스트림 데이터를 모두 사용하는 응용 프로그램에서와 같이 CPU(201)가 랜덤 데이터를 이용하고자 하는 경우의 문제이다. 이러한 랜덤 데이터는 L2 캐시(203)내에 위치될 것이다. 그러나, 전술한 시나리오 및 데이터 포함의 경우, XYZ 15가 L1 캐시(202)내로 프리페치되는 경우, XYZ 15는 역시 L2 캐시(203)내의 캐시 라인내에 포함될 것이고, 이것은 L2 캐시(203)내의 그 위치에 이미 존재하는 데이터를 이동시킬 것이다. 이러한 데이터가 CPU(201)에 의해 처리되고 있는 랜덤 데이터의 일부이면, CPU(201)가 그러한 특정 데이터 일부분의 사용을 필요로 하는 다음번에는, CPU(201)는 메모리(209)로부터 그러한 데이터를 요구해야 할 것이고, 이것은 전술한 바와 같이 상당한 메모리 대기시간 문제를 야기한다.
소정의 다른 동작에 있어서, 데이터의 스트링은 이들을 수정할 의사없이 CPU(201)내로 판독될 수 있다. 이러한 예는 스트링이 특정 레코드의 발생을 위해 판독되는 데이터베이스 어플리케이션 탐색(database application search)일 것이다. 이러한 레코드와 마주치는 경우, 레코드가 기록되거나 혹은 기록되지 않을 수도 있다. 이들 경우에 있어서, 판독중인 데이터는 L2 캐시(203)내 있을 필요가 없고, 실제로, L2 캐시(203)에로의 데이터의 기록은, 캐스트 아웃으로 인한 추가적인 버스 정체를 야기할 수 있다. L2 캐시(203)에서의 필요한 데이타를 일시적 판독전용 데이터로 교체하는 스트링에 의해 성능은 상당한 영향을 받을 것이다.
블라스트 모드에서, 제6a-d도에 대하여 전술한 바와 같이, 프리페치 데이타는 L1 캐시(202)에 기록되며 L2 캐시(203)에는 기록되지 않는다(즉, "포함"이 아니라 "배타"). 이것은 L2 캐시(203)내에 포함되지 않는 라인을 L1 캐시(202)내에 생성한다. 디렉토리에 기초한 시스템에서, 캐시 제어기(411)에 의해 수정되지 않은 라인이 버려지는(할당해제되는) 경우, 할당해제는 시스템 메모리에 대한 디렉토리에 신호되어야하고, 이러한 신호는 어느 프로세서가 어느 라인을 갖는지를 추적한다. 결론적으로, L1 캐시 제어기(411)가 L2 캐시( 203)내에 포함되지 않은 수정되지 않은 라인을 할당해제하는 경우, 이러한 이벤트는 메모리 디렉토리에 신호되어야 한다. 전술한 구현에 있어서, 이러한 이벤트의 신호의 CPU(201)로부터 메모리(209) 디렉토리로 전송된 "리세트 포함"커맨드를 통해 이루어진다.
도 7을 참조하면, 캐시 라인이 L2 캐시(203)내에 로드되지 않고(배타) L1 캐시(202)내에 로드되는 경우의 흐름도가 도시되어 있다. 프로세스는 L1 캐시(202)로부터 요구된 캐시 라인에 대하여 미스가 발생된 단계(700)에서 개시된다. 이러한 미스는 통상의 요구 미스이거나, 혹은 제6a-d도에 기술된 바와 같이 프리페치 요구일 수도 있다. 그후, 단계(701)에서, 블라스트 모드가 이네이블되어 있는지 여부가 판단된다. 이네이블되어 있지 않으면, 프로세스는 단계(705)로 진행하여 프리페치가 요구되었는지 여부를 판단한다. 프리페치가 요구되지 않았다면, 프로세스는 단계(701)로 복귀한다. 그러나, 단계(705)에서 프리페치가 요구되었다면, 프로세스는 단계(706)로 진행하여 프리페치하고자 하는 라인이 L2 캐시(203)내에 상주하는지 여부를 판단한다. L2 캐시(203)내에 상주하지 않는다면, 단계(708)에서, 요구된 캐시 라인은 메모리(209) 혹은 스트림 버퍼(402, 405, 혹은 406)중 하나의 버퍼로부터 L1 캐시(202) 및 L2 캐시(203)로 프리페치되니다. 추가적으로, 배타 태그(하나 이상의 비트)가 L1 캐시 디렉토리(410)내에서 리세트된다. 디렉토리(410)는 캐시 디렉토리의 전형적인 기능을 수행한다. 이러한 경우, 프리페치된 캐시 라인과 연관된 디렉토리 필드내의 엔트리는 배타 태그 비트가 프리페치된 캐시 라인이 L1 캐시(202)와 L2 캐시(203) 모두에 상주한다는 것을 표시하도록 리세트된다. 이하 기술되는 바와 같이, L1 캐시제어기(411)내의 제어 로직은, 캐시 라인을 할당해제하는 경우 이러한 배타 태그를 모니터링하도록, 도 8의 흐름도에 따라 수정된다.
프리페치될 라인이 L2 캐시(203)내에 상주하면, 프로세스는 단계(704)로 진행하여 L2 캐시(203)로부터 L1 캐시(202)로 캐시 라인을 프리페치할 것이다. 요약해서, 단계(700, 704, 705, 706 및 708)에 대하여 기술된 전술한 절차는 본질적으로 도 6a-d도에 도시된 단계(601-621)에 대응한다. 단계(704 및 708)는 단계(607, 613, 618, 619)에 대응한다.
단계(701)에서, 블라스트 모드가 이네이블되어 있으면(단계(620)를 참조), 프로세스는 단계(702)로 진행하여 블라스트 모드내의 프리페치가 이네이블되었는지 여부를 판단한다. 이네이블되지 않았다면, 프로세스는 단계(701)로 되돌아간다. 그러나, 블라스트 모드에서 프리페치가 개시되었다면, 프로세스는 단계(703)로 진행하여 프리페치될 라인이 L2 캐시(203)내에 상주하는지 여부를 판단한다. 프리페치될 라인이 L2(203) 캐시내에 상주한다면, 프로세스는 단계(704)로 진행하여 L2 캐시(203)로부터 L1 캐시(202)로 라인을 프리페치한다. 또한, L1디렉토리(410)내의 배타 태그가 단계(708)에 대해 전술한 바와 같이 리세트된다.
캐시 라인이 L2 캐시(203)내에 상주하지 않으면, 프로세스는 단계(707)로 진행하여 메모리(209) 혹은 버퍼(402, 405, 406)중 하나의 버퍼로부터 L1 캐시(202)로 캐시 라인을 프리페치한다. 또한, 전술한 배타 태그는 메모리(209) 혹은 스트림 버퍼중 하나로부터 프리페치된 캐시 라인이 L2 캐시(203)가 아닌 L1 캐시(202)내에만 상주한다는 것을 표시하도록 L1 디렉토리(410)내에서 세트된다.
제7도의 흐름도에 의해 알 수 있는 바와 같이, 블라스트 모드가 이네이블되지 않은 경우, "포함"이 유지되는 반면에, 블라스트 모드에서는 "포함"이 유지되지 않으며, 단계(707)에서 프리페칭은 L1 캐시(202)내로만 발생한다.
제8도를 참조하면, "포함"이 L1 캐시(202)와 L2 캐시(203) 사이에 유지되지 않은 경우(블라스트 모드가 이네이블된 경우)캐시 라인의 할당해제가 도시되어 있다. 프로세스는 단계(801)에서 시작하여 단계(802)로 진행하며, 이 단계(802)에서 캐시 라인이 할당해제될 것인지 여부가 판단된다. 할당해제되지 않는다면, 특정 캐시 라인에 대한 할당해제 판단이 이루어질 때까지 프로세스는 단지 루프를 돈다. 프로세스는 단계(803)로 진행하고, 이 단계에서 할당해제될 캐시 라인이 수정되었는지 여부가 판단된다. 수정되지 않았다면, 단계(808)에서, 할당해제될 캐시 라인이 L2 캐시(203)내에 또한 상주하는지 여부가 판단된다. 이러한 판단은 디렉토리(410)내의 배타 태그를 감시하는 제어기(411)에 의해 이루어진다.
캐시 라인에 대하여 배타 태그가 세트됨으로써, 캐시 라인이 L2 캐시(203)내에 또한 상주하지 않는다는 것을 표시하면, 프로세스는 단계(809)로 진행하고, 이 단계에서 시스템(200)은 "리세트 포함"신호에 의해 신호되고, 할당될 캐시 라인에 대응하는 어드레스는 시스템(200)을 통해 버스(204)에 의해 전송되어, 그 캐시 라인이 할당해제된다.
단계(808)에서, 캐시 라인이 L2 캐시(203)내에 상주한다고 판단(즉, 배타 태그가 세트되지 않았음)되면, 프로세스는 단계(810)로 진행하여 "포함"에 후속하는 때의 통상의 방법으로 캐시 라인을 할당해제한다.
단계(803)에서, CPU(201)에 의해 할당해제될 캐시 라인이 수정된 것으로 판단되면, 프로세스는 단계(804)로 진행하여 캐시 라인이 L2 캐시(203)내에 상주하는지 여부를 판단한다. 전술한 바와 같이, 이것은 디렉토리(410)내의 배타 태그가 세트되었는지 혹은 세트되지 않았는지를 판단하는 제어기(411)에 의해 성취될 수도 있다. 배타태그가 세트되지 않았다면, 단계(806)에서, 캐시 라인은 L1 캐시(202)로부터 L2 캐시(203)로 기록되고, 이것은 시스템(200)내의 데이터 코히어런시에 원인이 있다. 프로세스는 단계(807)에서 끝난다.
단계(804)에서 캐시 라인이 L2 캐시(203)내에 상주하지 않는다면(즉, 배태 태그가 이러한 캐시 라인에 대하여 세트되었다면), 프로세스는 단계(805)로 진행하여 캐시 라인을 메모리(209)에 기록한다.
전술한 바와 같이, 스트림 필터 엔트리 및 스트림 어드레스 버퍼(및 대응하는 스트림 데이터 버퍼 엔트리)의 할당을 관리하기 위해, 필터 교체 알고리즘(filter replacement algorithm)이 실시된다. 제6a-d도에 대하여 전술한 설명에 따르면, 필터 히트의 발생(637)시 스트림이 할당(612)될 수 있다. 이러한 스트림의 할당시, 스트림 어드레스 버퍼내에 이미 존재하는 스트림이 스래치(교체)될 것이다. 또한, 스트림 엔트리의 완전한 새로운 세트는 각종 프리페치 버퍼내로 프리페치될 것이다.
제6a-d도의 설명에서, CPU(201)가 프리페치 버퍼내에 존재하는 스트림 데이터에 대한 요구 사이에서 비스트림 데이터를 요구할 수도 있다는 가능성에 대한 여러 논의가 있다. 문제는 이러한 요구가 스트림 어드레스 버퍼내에 새로운 스트림의 할당을 야기할 수도 있으며, 이에 따라서 CPU(201)에 의해 여전히 액세스되고 있는 기존의 스트림을 교체할 수도 있다는 것이다. 이것은 비효율적인데, 그 이유는 기존의 스트림이 반복적으로 액세스되고 있는 "매우 양호한"스트림이고, 새로이 할당된 스트림이 매우 자주 액세스되지 않고 끝날 수도 있기 때문이다. 따라서, 본 발명의 목적은 최근에 액세스가 없었거나 새로운 스트림이 검출된 경우에만 스트림 버퍼로부터 스트림을 할당해제함으로써 프로세서의 성능을 증대시키는데 있다.
이하의 논의는 아래의 테이블과 관련된다. 상대 시간은 시간 0에서 시작되어 좌에서 우로 시간 17로 진행하는 것으로 표시된다. 따라서, 각각의 열은 열의 상부에 표시된 상대 시간에 대응한다. 캐시 미스 시퀀스는 예시적인 시퀀스이고, 이 시퀀스는 본질적으로 단계(601 및 602)에 대응하며, 이 단계에서 표시된 캐시라인에 대한 L1 캐시 미스가 존재한다. 전술한 바와 같이, 스트림 어드레스 버퍼는 4개의 스트림을 위한 용량을 갖지만, 임의의 스트림 수가 본 발명에서 구현될 수도 있다. 스트림 필터는 열개의 엔트리를 위한 용량을 갖지만, 임의의 수의 엔트리가 본 발명에서 구현될 수도 있다.
개시된 사상의 실시예는 어느 때나 4개의 스트림까지 할당할 수 있는 스트림버퍼를 구현하는 것이다. 실시예와 연관된 필터 버퍼는 LRU에 기초하여 할당되는 10개의 엔트리를 갖는다.
통상의 동작에서, 필터에 의해 스트림 액세스가 검출되는 경우, 스트림에 대한 필터 엔트리는 필터의 MRU 위치에 세트된다. 새로운 라인이 연관된 스트림내에서 액세스될 때마다, 엔트리는 MRU 위치로 복귀한다. 예를 들면, 4개의 스트림 활성(1,2,3,4)이 있으며, 그 밖의 다른 캐시 미스가 없다면, 4개의 스트림은 필터 버퍼의 4개의 MRU위치중 하나의 위치를 항상 차지할 것이다. 후속적인 스트림 액세스 사이에 캐시 미스가 있으면, 마찬가지로 필터는 이들에 대한 엔트리를 포함하고, 따라서 4개의 스트림은 때때로 4개의 MRU 위치 이외의 위치를 차지할 것이다. 필터가 10개의 엔트리를 갖는 경우, 두개의 연속적인 스트림 액세스 사이에 10개 미만의 캐시 미스의 예가 있는 한, 스트림은 필터내에 할당되어 유지될 수 있다. 명백히, 스트림 액세스 사이에 10개의 캐시 미스가 있으면, LRU 방안은 전체 10개의 필터 엔트리를 그 미스한 라인에 할당함으로써 스트림 필터 엔트리를 에이지 아웃할 것이다. 4개의 스트림이 할당되었다면, 스트림 필터 엔트리는 스트림 액세스간에 7개의 캐시 미스가 있을 때까지(필터가 4개의 스트림에 대한 충분한 엔트리 이외에 6개의 기타 필터 엔트리를 갖기 때문에) 필터를 에이지 오프하지 않을 것이다.
아래의 테이블을 참조하라. 스트림 버퍼 및 필터의 상태는 일련의 캐시 액세스를 통해 진행하는 것으로 도시된다. 일련의 캐시 미스 라인이 예로서 도시되어 있다. 스트림 버퍼의 데이터 프리페치 모드 혹은 블라스트 모드내에 있는 라인은, 추론적으로 로드된 라인이 처음으로 액세스되는 경우(첫번째 히트) 필터의 MRU 위치로 이동될 것이다.
예로서, 초기(상대 시간 0)에 4개의 스트림 활성(A,B,C,D)이 있으며, 스트림 어드레스 버퍼내에 포함된다. 스트림 필터 내용에 의해 위치 1에서 가장 최근의 엔트리를 갖는 최종 10개의 L1 미스가 도시되어 있다. 스트림 필터내 "N" 엔트리는 본 발명의 논의에 있어서 중요하지 않은 미스를 표시한다.
상대 시간 1에서, 스트림 A에 대한 L1으로의 또하나의 라인 로드가 있다. 결과적인 스트림 필터 내용은 이러한 열내에 도시되어 있다. 주목해야 할 것은 A가 가장 최근의 미스이기 때문에, A 엔트리는 위치 1로 이동하고, 위치 8에서 A 엔트리가 교체된다. 또한, 엔트리 8은 무효화될 수는 있지만, 필터로부터 제거되지는 않는다.
미스 시퀀스는 도시된 바와 같이 처리되고, X1, X2는 스트링 할당을 트리거할 수 있는 새로운 스트림을 표시한다. 상대 시간 7에서, X4 미스와 함께, D에 대한 스트림 엔트리는 필터로부터 제거된다. 그러나, 이 시점에서 스트림 D는 스트림 어드레스 버퍼내에서 계속적으로 유효하며, 따라서 이러한 스트림에 대한 액세스는 계속적으로 검출될 것이며 스트림은 계속적으로 프리페치될 것이다. 시간 8에서 도시된 예에 있어서, 스트림 D가 다시 액세스되고 스트림 필터내에 D가 다시 배치된다.
상대 시간 13에서, 스트림 X5에 대한 두번째 미스가 발생한다. 이 시점에서, 스트림 B는 더 이상 스트림 필터내에 존재하지 않으며, 따라서 X5가 스트림 어드레스 버퍼 2에 할당된다. 시간 14에서, 스트림 X2에 대한 두번째 미스가 발생하다. 4개의 스트림 활성(A, X5, C, D)이 스트림 필터내에 포함되어 있기 때문에, X2는 스트림으로서 할당되지 않는다. 또한, 다른 X2 엔트리(여러 개의 엔트리가 있을 수 있음)는 에이지 아웃될 때까지 스트림 필터내에 유지된다. 유사하게, 시간 15에서, 필터내에서 다른 X3 엔트리가 만들어진다.
상대 시간 17에서, X6에 대한 필터 히트가 있는 경우 스트림 C가 필터내에 더 이상 존재하지 않기 때문에 X6가 할당된다.
이러한 메카니즘을 사용함으로써 스트림 어드레스 버퍼는 어플리케이션내에 4개 이상의 데이터 스트림이 존재하는 경우 4개의 활성 스트림을 보유할 수 있다. 이러한 메카니즘이 없는 경우, 4개를 초과하는 활성 스트림은 연속적으로 새로운 스트림 할당을 야기할 것이며, 데이터는 폐기물 위해서만 프리페치 버퍼내로 연속적으로 판독될 것이다. 결과적으로, 프로세서 성능이 저하될 것이다.
본 발명의 대안적인 구현은, 할당된 스트림에 대해 필터 엔트리를 사용하지 않고 그 스트림이 할당해제되어야 하는지 여부를 판단하기 위해, 스트림 히트 사이에 사전결정된 수의 캐시 라인 액세스를 카운트할 카운터를 제공하는 것이다. 이러한 카운터는 PCC(404)내에서 구현되어 특정 캐시 라인에 대한 캐시 미스 및 히트를 카운트할 수 있다. 마찬가지로 당업자에 의해 본 발명의 범주내의 다른 메카니즘이 생각될 수 있다.
본 발명 및 이들의 잇점이 상세히 설명되었지만, 첨부된 청구범위에 의해 정의된 바와 같이 본 발명의 사상 및 범주를 벗어나는 일이 없어 본 명세서에서 각종 변화, 교체 및 변경이 이루어질 수도 있다는 것이 자명할 것이다.
본 발명에 의해, 스트림 필터를 사용하여 스트림의 활성 레벨에 기초하여 스트림의 할당해제를 지연시킴으로써, 스트림 스래싱 상황의 발생이 방지된다.

Claims (24)

  1. 주 메모리(a main memory)로부터, 상기 주 메모리에 결합된 프로세서(a processor)와 연관된 메모리 서브시스템(a memory subsystem)으로 데이터를 프리페치하도록 동작가능한 장치에 있어서, X개(X는 양의 정수)의 스트림을 포함하도록 동작가능한 스트림 버퍼(a stream buffer)와, 사전결정된 수의 잠재적인 새로운 스트림이 검출된 후 상기 X개의 스트림중 하나를 할당해제(de-allocate)하도록 동작가능한 수단- 상기 사전결정된 수는 1보다 큼- 을 포함하는 데이터 프리페치 장치.
  2. 제1항에 있어서, 상기 사전결정된 수 뒤에 상기 스트림 버퍼내에 상기 새로운 스트림을 할당하도록 동작가능한 수단을 더 포함하되, 상기 새로운 스트림은 상기 X개(X는 상기 스트림 버퍼내 스트림의 최대수)의 스트림중 상기 하나를 교체하는 데이터 프리페치 장치.
  3. 제1항에 있어서, 상기 메모리 서브시시템은 상기 프로세서와 연관된 캐시(a cache)인 데이터 프리페치 장치.
  4. 제2항에 있어서, 상기 X개의 스트림중 상기 하나는 상기 새로운 스트림이 할당될 때까지 상기 스트림 버퍼내에 유지되는 데이터 프리페치 장치.
  5. 제3항에 있어서, 상기 메모리 서브시스템은 상기 프로세서에 접속된 주 캐시(a primary cache)인 데이터 프리페치 장치.
  6. 제1항에 있어서, 상기 할당해제 수단은 상기 사전결정된 수를 카운트하기 위한 수단을 더 포함하는 데이터 프리페치 장치.
  7. 제1항에 있어서, 상기 사전 결정된 수는, (스트림 필터 엔트리의 수-스트림 버퍼 엔트리의 수)와 같거나 이보다 큰 데이터 프레페치 장치.
  8. 제1항에 있어서, 상기 X개의 스트림의 각각의 헤드는 상기 프로세서에 접속된 주 캐시(a primary cache)내에 존재하는 데이터 프리페치 장치.
  9. 제5항에 있어서, 상기 주 캐시는 상기 프로세서와 동일한 칩 상에 내장되는 데이터 프리페치장치.
  10. 주 메모리로부터 버스에 의해 상기 주 메모리에 결합된 프로세서와 연관된 캐시로 데이터를 프리페치하기 위한 시스템에 있어서 X개(X는 양의 정수)의 스트림을 할당하기 위한 스트림 버퍼(a stream buffer)와, 각각이 캐시 미스(a cache miss)를 나타내는 Y개(Y는 양의 정수)의 엔트리를 가지고, 상기 X개의 스트림 각각이 상기 Y개의 엔트리중 적어도 하나에 의해 표시되는 스트림필터(a stream fillter)와, 상기 스트림을 나타내는 상기 Y개의 엔트리중 상기 적어도 하나의 전부가 상기 스트림 필터로부터 할당해제되어 버릴 때까지 상기 스트림 버퍼내에 스트림을 유지하기 위한 수단을 포함하는 데이터 프리패치 시스템.
  11. 제10항에 있어서, 상기 스트림을 나타내는 상기 Y개의 엔트리중 상기 적어도 하나의 전부가 상기 스트림 필터로부터 할당해제된 후, 상기 새로운 스트림에 대응하는 데이터의 캐시 미스에 응답하여 상기 스트림 버퍼내에 새로운 스트림을 할당하기 위한 수단을 더 포함하는 데이터 프리페치 시스템.
  12. 제10항에 있어서, 캐시 미스가 상기 스트림에 대응하여 발생하는 경우 상기 스트림을 나타내는 상기 Y개의 엔트리중 상기 적어도 하나의 전부가 상기 스트림 필터로부터 할당해제된 후, 상기 스트림 버퍼내에 상기 스트림을 재할당하기 위한 수단을 더 포함하는 데이터 프리페치 시스템.
  13. 제10항에 있어서, 상기 Y개의 엔트리는 LRU에 기초하여 상기 스트림 필터로부터 할당해제되는 데이터 프리페치 시스템.
  14. 제11항에 있어서, 상기 스트림은 상기 새로운 스트림이 상기 스트림 버퍼내에 할당될 때까지 상기 스트림 버퍼내에 유지되는 데이터 프리페치 시스템.
  15. 데이터 처리 시스템에서, 주 메모리로부터 버스를 통해, 상기 주메모리에 결합된 프로세서에 결합된 L1 캐시로 캐시 라인을 프리페치하기 위한 방법 - 상기 프로페칭은 스트림 버퍼 및 스트림 필터를 이용함으로써 증대되고, 상기 스트림 버퍼는 어드레스 버퍼 및 데이터 버퍼를 포함하며, 상기 스트림 버퍼는 하나 이상의 활성 스트림을 보유하고, 상기 스트림 필터는 상기 하나 이상의 활성스트림에 대응하는 하나 이상의 엔트리를 포함한다 - 에 있어서, 일련의 L1 캐시 미스를 모니터하는 단계와, 상기 L1 캐시 미스에 응답하여 LRU에 근거하여 상기 스트림 필터내의 엔트리를 교체하는 단계와, 상기 하나 이상의 활성 스트림중 상기 하나에 대응하는 상기 하나 이상의 엔트리의 전부가 상기 교체 단계에 의해 교체될 때까지 상기 스트림 버퍼내에 상기 하나 이상의 활성 스트림중 하나를 유지하는 단계를 포함하는 캐시 라인 프리페치 방법.
  16. 제15항에 있어서, 상기 하나 이상의 활성 스트림중 상기 하나에 대응하는 상기 하나 이상의 엔트리의 상기 전부가 상기 교체 단계에 의해 교체된 후 상기 새로운 활성 스트림에 대응하는 데이터의 캐시 미스에 응답하여 상기 스트림 버퍼내에 새로운 활성 스트림을 할당하는 단계를 더 포함하는 캐시 라인 프리페치 방법.
  17. 제15항에 있어서, 캐시 미스가 상기 하나 이상의 활성 스트림중 상기 하나에 대응하여 발생하는 경우, 상기 하나 이상의 활성 스트림중 상기 하나에 대응하는 상기 하나 이상의 엔트리의 상기 전부가 상기 교체 단계에 의해 교체된 후 상기 스트림 버퍼내에 상기 하나 이상의 활성 스트림중 상기 하나를 재할당하는 단계를 더 포함하는 캐시라인 프레페치 방법.
  18. 제16항에 있어서, 상기 하나 이상의 활성 스트림중 상기 하나는 상기 새로운 활성 스트림이 상기 스트림 버퍼내에 할당될 때까지 상기 스트림 버퍼내에 유지되는 캐시 라인 프리페치 방법.
  19. 제15항에 있어서, 상기 하나 이상의 활성 스트림의 각각의 헤드는, 상기 프로세서를 상기 주메모리에 접속하는 버스(a bus)의 프로세서 측(a processor-side)상에 존재하는 캐시 라인 프리페치 방법.
  20. 제10항에 있어서, 상기 X개의 스트림의 각각의 헤드는 상기 프로세서를 상기 주 메모리에 접속하는 버스(a bus)의 프로세서 측(a processor-side) 상에 존재하는 데이터 프리페치 시스템.
  21. 주 메모리로부터, 상기 주 메모리에 접속된 프로세서에 연관된 메모리 서브시스템으로 데이터를 프리페치하도록 동작가능한 장치에 있어서, X개(X는 양의 정수)의 스트림을 포함하도록 동작가능한 스트림 버퍼와, 사전 결정된 수의 잠재적인 새로운 스트림이 검출된 후 상기 X개의 스트림중 하나를 할당해제(de-allocate)하도록 동작가능한 수단을 포함하되, 상기 할당해제 수단은, Y개(Y는 양의 정수) 엔트리를 포함하도록 동작가능한 스트림 필터(a stream filter)를 더 포함하고, 상기 Y개의 엔트리는 LRU에 기초하여 할당되고, 상기 Y개의 엔트리는 메모리 서브시스템 미스에 대응하며, 상기 사전 결정된 수 뒤에 상기 스트림 필터로부터 엔트리(an entry)가 에이지 아웃(aged out)되는 데이터 프리페치 장치.
  22. 제21항에 있어서, 상기 Y개의 엔트리 중 2개는 같은 것인 데이터 프리페치 장치.
  23. 제21항에 있어서, 상기 사전결정된 수는 Y와 같은 데이터 프리페치 장치.
  24. 제21항에 있어서, 상기 새로운 스트림에 대한 메모리 서브시스템 액세스(a memory subsystem access) 이전에 상기 X개의 스트림중 상기 하나에 대한 메모리 서브시스템 액세스가 존재하는 경우, 상기 X개의 스트림중 상기 하나를 재할당하도록 동작가능한 수단을 더 포함하는 데이터 프리페치 장치.
KR1019960029940A 1995-08-24 1996-07-24 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법 KR100240912B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/519,032 1995-08-24
US08/519,032 1995-08-24
US08/519,032 US5737565A (en) 1995-08-24 1995-08-24 System and method for diallocating stream from a stream buffer

Publications (2)

Publication Number Publication Date
KR980010800A KR980010800A (ko) 1998-04-30
KR100240912B1 true KR100240912B1 (ko) 2000-01-15

Family

ID=24066488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960029940A KR100240912B1 (ko) 1995-08-24 1996-07-24 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법

Country Status (5)

Country Link
US (1) US5737565A (ko)
EP (1) EP0763795B1 (ko)
JP (1) JPH0962572A (ko)
KR (1) KR100240912B1 (ko)
DE (1) DE69616223T2 (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
JP3961028B2 (ja) 1996-12-27 2007-08-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US5958040A (en) * 1997-05-28 1999-09-28 Digital Equipment Corporation Adaptive stream buffers
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6105111A (en) * 1998-03-31 2000-08-15 Intel Corporation Method and apparatus for providing a cache management technique
US6219745B1 (en) * 1998-04-15 2001-04-17 Advanced Micro Devices, Inc. System and method for entering a stream read buffer mode to store non-cacheable or block data
US6321302B1 (en) 1998-04-15 2001-11-20 Advanced Micro Devices, Inc. Stream read buffer for efficient interface with block oriented devices
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6338115B1 (en) * 1999-02-16 2002-01-08 International Business Machines Corporation Advanced read cache management
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6505277B1 (en) * 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6430683B1 (en) 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6421762B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
US6510494B1 (en) 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
US6360299B1 (en) * 1999-06-30 2002-03-19 International Business Machines Corporation Extended cache state with prefetched stream ID information
US6532521B1 (en) 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US6496921B1 (en) 1999-06-30 2002-12-17 International Business Machines Corporation Layered speculative request unit with instruction optimized and storage hierarchy optimized partitions
US6393528B1 (en) * 1999-06-30 2002-05-21 International Business Machines Corporation Optimized cache allocation algorithm for multiple speculative requests
US6421763B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Method for instruction extensions for a tightly coupled speculative request unit
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
ATE437476T1 (de) * 2000-10-06 2009-08-15 Pact Xpp Technologies Ag Zellenanordnung mit segmentierter zwischenzellstruktur
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering
US6574718B2 (en) 2001-02-28 2003-06-03 International Business Machines Corporation Excessive spin detection and avoidance for systems using a least recently used page replacement algorithm
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US6654857B2 (en) 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management
US6760817B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US6711652B2 (en) 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6760809B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US6901485B2 (en) 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6615322B2 (en) 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US6754782B2 (en) 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6721853B2 (en) 2001-06-29 2004-04-13 International Business Machines Corporation High performance data processing system via cache victimization protocols
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
ATE402446T1 (de) * 2002-02-18 2008-08-15 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US6912612B2 (en) * 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7069397B2 (en) * 2003-04-15 2006-06-27 Sun Microsystems, Inc Stream based memory manager with function specific hardware logic for accessing data as a stream in memory
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
JP4532931B2 (ja) * 2004-02-25 2010-08-25 株式会社日立製作所 プロセッサ、および、プリフェッチ制御方法
US7290107B2 (en) * 2004-10-28 2007-10-30 International Business Machines Corporation Direct deposit using locking cache
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
US7516279B2 (en) * 2006-02-28 2009-04-07 International Business Machines Corporation Method using stream prefetching history to improve data prefetching performance.
US20080065834A1 (en) * 2006-09-13 2008-03-13 International Business Machines Corporation Method to Prevent Operand Data with No Locality from Polluting the Data Cache
US9164941B2 (en) * 2007-10-24 2015-10-20 Hitachi, Ltd. Storage system group
KR100981884B1 (ko) * 2008-01-08 2010-09-14 한국과학기술원 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
WO2013030628A1 (en) * 2011-09-01 2013-03-07 Freescale Semiconductor, Inc. Integrated circuit device, memory interface module, data processing system and method for providing data access control
US9037835B1 (en) * 2013-10-24 2015-05-19 Arm Limited Data processing method and apparatus for prefetching
KR102136792B1 (ko) * 2018-10-18 2020-07-22 인하대학교 산학협력단 Hbm 도입으로 인한 메모리 보틀넥 문제 해결 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
EP0457403B1 (en) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Multilevel instruction cache and method for using said cache
SE469402B (sv) * 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
JP2881049B2 (ja) * 1991-07-30 1999-04-12 株式会社日立製作所 プリフェッチバッファ
US5353419A (en) * 1992-01-09 1994-10-04 Trustees Of The University Of Pennsylvania Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection
US5371870A (en) * 1992-04-24 1994-12-06 Digital Equipment Corporation Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
DE69327981T2 (de) * 1993-01-21 2000-10-05 Advanced Micro Devices Inc Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
US5586294A (en) * 1993-03-26 1996-12-17 Digital Equipment Corporation Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US5388247A (en) * 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
US5490113A (en) * 1994-06-15 1996-02-06 Digital Equipment Corporation Memory stream buffer

Also Published As

Publication number Publication date
KR980010800A (ko) 1998-04-30
EP0763795A1 (en) 1997-03-19
US5737565A (en) 1998-04-07
JPH0962572A (ja) 1997-03-07
DE69616223T2 (de) 2002-06-27
EP0763795B1 (en) 2001-10-24
DE69616223D1 (de) 2001-11-29

Similar Documents

Publication Publication Date Title
KR100240912B1 (ko) 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법
KR100240911B1 (ko) 데이터 프리페치 방법, 캐시 라인 프리페치 방법 및 시스템(progressive data cache)
KR100262906B1 (ko) 데이터 선인출 방법 및 시스템
US5740399A (en) Modified L1/L2 cache inclusion for aggressive prefetch
US5758119A (en) System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5958040A (en) Adaptive stream buffers
US8495301B1 (en) System and method for scatter gather cache processing
US5751994A (en) System and method for enhancing computer operation by prefetching data elements on a common bus without delaying bus access by multiple bus masters
US6295582B1 (en) System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US6105111A (en) Method and apparatus for providing a cache management technique
EP0780770A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US20060179174A1 (en) Method and system for preventing cache lines from being flushed until data stored therein is used
EP0780769A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US20020116584A1 (en) Runahead allocation protection (rap)
JP2000242558A (ja) キャッシュシステム及びその操作方法
US20080301371A1 (en) Memory Cache Control Arrangement and a Method of Performing a Coherency Operation Therefor
US7330940B2 (en) Method and system for cache utilization by limiting prefetch requests
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US7380068B2 (en) System and method for contention-based cache performance optimization
KR100505695B1 (ko) 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
JPH06202951A (ja) キャッシュ・メモリ・システム
US7328310B2 (en) Method and system for cache utilization by limiting number of pending cache line requests

Legal Events

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

Payment date: 20030808

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee