[go: up one dir, main page]

KR100262906B1 - 데이터 선인출 방법 및 시스템 - Google Patents

데이터 선인출 방법 및 시스템 Download PDF

Info

Publication number
KR100262906B1
KR100262906B1 KR1019960038616A KR19960038616A KR100262906B1 KR 100262906 B1 KR100262906 B1 KR 100262906B1 KR 1019960038616 A KR1019960038616 A KR 1019960038616A KR 19960038616 A KR19960038616 A KR 19960038616A KR 100262906 B1 KR100262906 B1 KR 100262906B1
Authority
KR
South Korea
Prior art keywords
cache
line
cache line
address
stream
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1019960038616A
Other languages
English (en)
Other versions
KR970029103A (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 KR970029103A publication Critical patent/KR970029103A/ko
Application granted granted Critical
Publication of KR100262906B1 publication Critical patent/KR100262906B1/ko
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • 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

Landscapes

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

Abstract

L1 및 L2 캐시와 스트림 필터 및 버퍼를 구현하는 데이터 처리 시스템에서, 캐시 라인의 선인출은 점진적인 방법으로 수행된다. 하나의 모드에서, 데이터가 선인출되지 않을 수 있다. 제2모드에서, 두 개의 캐시 라인이 선인출되며, 하나의 라인은 L1 캐시내로 선인출되고 다음 라인은 스트림 버퍼내로 선인출된다. 제3모드에서, 둘을 초과하는 캐시 라인이 한번에 선인출된다.

Description

데이터 선인출 방법 및 시스템
본 발명은 전반적으로 데이터 처리 시스템에 관한 것으로, 특히, 데이터 캐시에 대하여 데이터의 점진적 선인출(a progressive prefetching)을 구현하기 위한 시스템 및 방법에 관한 것이다.
현재의프로그램 및 데이터를 고속으로 프로세서(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 procedure)는 테이블이 저장되어 있는 메모리 부분을 반복적으로 참조한다. 반복적인 프로시쥬어는 공통된 메모리 위치를 참조하고, 숫자 어레이는 메모리의 국부적 영역내에 제한된다. 이러한 모든 관측의 결과는 참조의 국한성의 특성이고, 이로 인해 짧은 시간 간격에 걸쳐, 전형적인 프로그램에 의해 발생되는 인스트럭션의 어드레스는 몇몇 국한된 메모리의 영역을 반복적으로 참조하는 반면에 메모리의 나머지는 비교적 덜 빈번하게 액세스된다.
프로그램 및 데이터의 활성 부분이 고속의 소형 메모리내에 배치되는 경우, 평균 메모리 액세스 시간이 감속될 수 있으며, 따라서 프로그램의 전체 실행 시간이 감소된다. 이러한 .고속의 소형 메모리는 전술한 바와 같이 캐쉬 메모리로 지칭된다. 캐시 메모리 액세스 시간은 종종 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의 효율을 떨어뜨린다.
따라서, 마이크로프로세서의 성능을 저하시킴이 없이, 캐시 미스로 인한, L1 캐새에 대한 데이터 및 인스트럭션 액세스의 지연을 줄이는 개선된 선인출 기법이 당해 기술에서 필요하다.
본 발명의 목적은 마이크로프로세서내에서 L1 및 L2 캐시와 함께 스트림 필터를 사용하여 메모리로부터 선인출된 데이터를 제공함으로써 프로세서 시스템의 데이터 지연을 감소시키는데 있다.
본 발명의 다른 목적은 동시에 다수의 스트림을 지원할 수 있고 선인출 데이터를 점진적으로 증가시킬 수 있는 고유의 스트림 필터 장치를 사용하여, 선인출 깊이를 제어하는 데 있다.
본 발명은 3개의 점진적 선인출 모드, 즉 정규, 데이터 선인출("DP"), 및 블라스트를 이용한다. 정규 모드에서, 데이터는 선인출되지 않는다. 데이터 선인출 모드에서는, 두 개의 캐시 라인이 선인출되는데, 하나의 라인은 L1 캐시로 선인출되고, 나머지 하나의 라인은 스트림 버퍼로 선인출된다. 블라스트 모드에서는, 한번에 2개를 초과하는 캐시 라인이 선인출된다. 본 발명의 실시예의 블라스트 모드에서는, 4개의 라인이 선인출되는데, 두 개의 라인은 데이터 선인출 모드에서와 같이 선인출되고, 나머지 두 개의 추가의 라인은 스트림 버퍼로 선인출된다. 선인출 버퍼는 프로세서 칩, 캐시 칩, 외부 칩, 혹은 메모리 카드상에 패키지화될 수 있으며,이는 본 발명의 범주내에 여전히 속한다.
본 발명의 또다른 실시예의 정규 모드에서, 데이터는 선인출되지 않는다. 데이터 선이출 모드에서는, 하나의 라인이 스트림 버퍼로 선인출된다. 블라스트 모드에서는, 하나의 라인이 L1 캐시로 선인출되고 추가 라인들이 스트림 버퍼로 선인출된다. 본 발명의 실시예에서는, 블라스트 모드에서 세 개의 캐시 라인이 스트림 버퍼로 선인출된다.
블라스트 모드의 실시예에서, 하나의 스트림 버퍼 캐시 라인은 프로세서 침상으로 버퍼되고, 동일한 스트림의 나머지 캐시 라인은 시스템 버스를 인터페이스하는 노드 제어기 칩상에 버퍼된다.
이하 설명되는 본 발명의 상세한 설명을 보다 쉽게 이해할 수 있도록 하기 위해 본 발명의 특징 및 기술적 장점을 다소 광범위하게 설명하였다. 본 발명의 추가적인 특징 및 장점은 이후 상세히 설명될 것이며, 이들 특징 및 장점들은 본 발명의 청구범위에 있어서 요지를 형성한다.
본 발명을 보다 완전히 이해.할 수 있도록 하고, 본 발명의 장점에 대해 첨부 도면과 함께 상세한 설명이 이루어질 것이다.
제1도는 본 발명에 따라 구성할 수 있는 멀티프로세서 시스템을 도시한 도면.
제2도는 본 발명에 따라 구성할 수 있는 데이터 처리 시스템을 도시한 도면.
제3도는 스트림 필터 및 스트림 버퍼를 도시한 도면.
제4도는 제2도에 도시된 시스템의 보다 상세한 도시도.
제5도는 본 발명에 따른 기능적인 도면을 도시한 도면.
제6도 및 6a-6d도는 본 발명에 흐름도를 예시한 도면.
* 도면의 주요부분에 대한 부호의 설명
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"로 기록될 것이다. "Z+1"가 여전히 스트림 필터내에 상주하는 동안 어드레스 "Z+1"에 대해 후속적인 액세스가 이루어지면, "X+1"이 스트림으로서 할당된다.
스트림 버퍼는 잠재적인 캐시 데이터를 보유하는 선인출 버퍼이다. 프로세서내에서 실행중인 프로그램이 데이터/인스트럭션의 순차적인 스트림을 실행하면, 추가의 라인들을 스트림 버퍼내로 선인출하는 것이 유용할 수 있다는 점에 착안한다. 따라서, 후속 캐시 미스일 경우, 스트림 버퍼 내에서 그 데이터를 발견할 수 있을 것이다.
스트림 필터와 스트림 버퍼는 상호협조하여, 스트림 버퍼에대해서도 미스한 L1 캐시 미스가 있으면, 미스 어드레스가 스트림 펄터내에 저장된 어드레스에 비교되도록 한다. 스트림 필터내에 히트가 있으면(데이터의 순차적인 라인들에 대해 순차적인 액세스사 있었음을 의미), 그 다음 라인이 또한 장래에 요구될 수 있다는 충분한 가능성이 있다. 스트림 버퍼 및 스트림 펄터에 대한 보다 상세한 설명에 대해서는, 에스. 팰러칼라(S.P alachrla) 및 알케슬러(R.Kessler)에 의한 1994 IEEE 1063-6879/94의 Evaluating Stream Buffers as a Secondary Cache Replacement를 참조하기 바라며, 이것은 본 명세서에서 참조로서 인용된다.
제4도를 참조하면, 본 발명에 따라서 구성되고 CPU(201)를 통한 데이터 흐름으르 예시하는 시스템(200)의 보다 상세한 흐름도가 예시되어 있다. 흐름에 대해 변화를 가하는 것은 당해 기술에 알려져 있으며, 인스트럭션 및 데이터에 대해 개별적인 L1 캐시의 사용을 포함한다. L1 캐시(202)는 당해 기술분야에 잘 알려진 임의의 교체 정책(replacement policy)을 이용하여 메모리(209)로부터 자주 사용되는 데이터의 사본을 보유한다. 대형 L2 캐시(203)는 L1 캐시보다 많은 데이터를 보유하며 통상적으로 메AHFL 코히어런시 프로토콜을 제어한다. 본 발명에서, 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)로 전달될 소정 수의 메모리 데이터 라인들을 보유한다. PBFR(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 캐시(203)내에서 미스가 있으면, 데이터는 메모리(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)를 포함한다. 이 표시기는, 추측된 스트림이 증가되거나 혹은 감소(+/-1 혹은 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-6d도를 참조하면, 본 발명의 점진적 선인출 모드의 흐름도가 도시되어 있다. 전술한 바와 같이, 본 발명은 3개의 점진적 선인출 모드, 즉 정규 모드, 데이터 선인출 모드, 블라스트(Blast) 모드를 허용한다. 정규 모드에서, 데이터는 선인출되지 않는다. 데이터 선인출 모드에서는, 2개의 라인이 선인출되며, 하나의 라인은 L1 캐시로 선인출되고 하나의 라인은 스트림 버퍼로 선인출된다. 블라스트 모드에서는, 2개를 초과하는 라인이 동시에 선인출된다. 본 발명의 바람직한 실시예의 블라스트 모드에서, 4개의 라인, 즉 데이터 선인출 모드로서 2개의 라인 및 스트림 버퍼로 2개의 추가의 라인이 선인출된다. 모든 모드에서, 선인출된 버퍼는 프로세서 칩, 캐시 칩, 외부 칩 혹은 메모리 카드상에 패키지화될 수 있으며, 계속해서 본 발명의 범주내에 속한다. 제6a-6d도는 스트림이 어느 방향으로 흐를 것인지를 추측하기 위한 방향이 증가되고 있는 예를 도시한다. 감소되는 예는 명백히 이러한 예의 변형일 것이다. 제6a-6d도의 흐름도는 데이터 선인출 및 블라스트 모드가 어떻게 개시되는지를 도시한다.
단계(601)에서, CPU(201)는 캐시 라인 A에서 시작하는 데이터를 액세스하기 시작한다. 단계(602)에서, 캐시 라인 A가 L1 캐시(202)내에 있는지 없는지에 대한 판단이 이루어진다. L1 캐시내에 있다면, 프로세스는 단계(603)로 진행하고, 이 단계에서 캐시 라인 A는 CPU(201)로 복귀된 후 단계(604)에서 프로세스는 끝난다.
그러나, 캐시 라인 A상에서 미스가 있다면, 프로세스는 단계(0605)로 진행하고, 이 단계에서 캐시 라인 A의 어드레스는 스트림 필터(403)내에 포함된 모든 어드레스와 비교된다.
캐시 라인 A가 필터(403)내에 존재하지 않는 경우, 프로세스는단계(606)로 진행하고, 이 단계에서 캐시 라인 A의 어드레스는 1만큼 증가되고 필터(403)내에 삽입된다. 그후, 단계(607)에서, 캐시 라인 A는 L2 캐시(203)나 메모리(209)로부터 L1 캐시(202)로 인출된다. 이러한 단계는 당해 기술분야에 잘 알려져 있다.
제6a-6d도의 단계(607)에서 단계(608)로의 점선 화살표는 단계(608)가 단계(607)에 바로 뒤이어 발생하거나 발생하지 않을 수도 있다는 것을 도시한다. 일반적으로, 스트림 필터내의 어드레스 엔트리만큼의 미스가 캐시 라인 A+1에 대한 요구에 대해 앞서 발생할 수도 있다.
잠시 후, CPU(201)는 캐시 라인 A+1을 요구할 수 있다. 또한, PCC(404)는 캐시 라인 A+1이 L1 캐시(202)S에 존재하는지 여부를 판단한다(609). 캐시 라인 A+1이 L1 캐시(202)S에 존재한다면, 캐시 라인 A+1은 단계(610)에서 CPU(201)로 복귀되고, 프로세서는 단계(611)에서 끝난다. 주목해야 할 것은 캐시 라인 A+1이 L1 캐시(202)내에 있기 때문에, 스트림 필터(403)에 대한 비교가 없으며, A+1 엔트리는, 본 명세서에서 참조로서 인용되는 본 출원인의 미국 특허 출원 제08/519,032호에 개시되어 있는 필터 교체 알고리즘(filter replacement algorithm)에 의해 퇴거될 때까지 필터(403)내에 유지된다는 점이다. 그러나, L1캐시(202)내의 캐시 라인 A+1 상에서 미스가 있고 필터 히트(637)이 있으면, 프로세스가 단계(612)로 진행하며, 이 단계(612)에서 캐시 라인 A+2FHJ 시작하는 캐시 라인들의 소정의 스트림이 할당되는데, 그이유는 요구된 캐시 라인 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)에서 단계(612)까지를 반복적으로 순환한다. 단계(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이 LK1 캐시(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+55는 L2 캐시(203)나 버퍼(402)로부터 L1 캐시(202)로 인출된다.
그후, 단계(632)에서, 캐시 라인 A+6은 버퍼(405)에서 버퍼(402)로 이동된다. 단계(633)에서, 캐시 라인 A+7은 버퍼(406)에서 버퍼(405)로 이동된다. 그후, 단계(634)에서, 노드 제어기(205)는 ZOTKL 라인 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)(401)은 메모리(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)로 그 캐시 라인을 검색하는 데에 과도한 하드웨어 및 사이를 시간이 필요하게 된다. 스트림 버퍼 캐시 라인들중 하나로서 작용하는 L2 캐시(202)내의 그 캐시 라인은 논리적인 의미로 선인출 스트림 버퍼내에 포함되어 있다고 말할수 있다.
본 발명 및 본 발명의 잇점이 상세히 설명되었지만, 첨부된 청구항에 정의된 바오 같이 본 발명의 사상 및 범주를 벗어나지 않고 본 명세서에서 각종 변경, 대체 및 변형이 이루어질 수 있다는 것이 당업자에게 자명할 것이다.
본 발명에 의하면, 마이크로프로세서내에서 L1 및 L2 캐시와 함께 스트림 필터를 사용하여 메모리로부터 선인출 데이터를 제공함으로써 마이크로프로세서 시스템의 데이터 지연을 감소시키는 것이 가능하다. 또한, 동시에 다수의 스트림을 지원할 수 있고 선인출 데어터를 점진적으로 증가시킬 수 있는 고유의 스트림 필터 장치를 사용하여, 선인출 깊이를 제어할 수 있다.

Claims (13)

  1. 프로세서(a processor)와, 버스(a bus)를 통해 상기 프로세서에 결합된 시스템 메모리(a system memory)와, 상기 프로세서에 결합된 제1캐시(a first cache)와, 상기 프로세서에 결합된 제2캐시(a second cache)와, 상기 시스템 메모리로부터 선인출된 하나 이상의 데이터 라인을 저장하기 위한 스트림 버퍼 회로(a stream buffer circuit)와, 선인출 조건(a prefetch condition)을 표시하기 위한 스트림 필터 회로(a stream filter circuit)와, 상기 스트림 필터 회로에 결합되어, 상기 시스템 메모리로부터 상기 제1및 제2캐시와 상기 스트리,a 버퍼 회로로 데이터의 인출 및 선인출을 선택적으로 제어하기 위한 제어 회로를 포함하며, 상기 제어 회로는, 상기 스프로세서로부터 제1캐시 라인(a first cache line)에 대한 요구를 수신하기 위한 회로와, 상기 제1캐시 라인이 상기 제1캐시내에 있는지를 판단하기 위한 회로와, 상기 제1캐시 라인이 상기 제1캐시내에 없고 상기 제1캐시 라인이 상기 제2캐시내에 있으면, 상기 제2캐시로부터 상기 제1캐시로 상기 제1캐시 라인을 인출하기 위한 회로와, 상기 제1캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 제1캐시에 상기 제1캐시 라인을 인출하기 위한 회로와, 제1증가된 어드레스(a first incremented address)를 발생하기 위해 상기 제1캐시 라인의 어드레스를 증가시키기 위한 회로와, 상기 스트림 필터내에 상기 증가된 어드레스를 저장하기 위한 회로와, 상기 증가된 어드레스를 갖는 제2캐시 라인(a second cache line)에 대해 상기 프로세서로부터 요구(request)를 수신하기 위한 회로와, 상기 제2캐시 라인이 상기 제1캐시내에 있는지를 판단하기 위한 회로와, 상기 증가된 어드레스가 상기 스트림 필터내에 있는지를 판단하기 위한 회로와, 제2증가된 어드레스(second incremented address)를 발생하기 위해 상기 증가된 어드레스를 증가시키기 위한 회로와, 상기 제2증가된 어드레스로 시작하는 스트림(a stream)을 할당하기 위한 회로와, 상기 제2증가된 어드레스를 갖는 제3캐시 라인이 상기 제1캐시내에 있는지를 판단하기 위한 회로와, 상기 제2캐시 라인이 상기 제2캐시내에 있고, 상기 제2캐시 라인이 상기 제1캐시내에 없으면, 상기 제2캐시로부터 상기 제1캐시로 상기 제2캐시 라인을 인출하기 위한 회로와, 상기 제2캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 제1캐시로 상기 제2캐시 라인을 인출하기 위한 회로와, 상기 제3캐시 라인이 상기 제2캐시내에 있고, 상기 제3캐시 라인이 상기 제1캐시내에 없으면, 상기 제2캐시로부터 상기 제1캐시에 상기 제3캐시 라인을 선인출하기 위한 회로와, 상기 제3캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 제1캐시에 상기 제3캐시 라인을 선인출하기 위한 회로를 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서, 상기 제어 회로는 제3증가된 어드레스를 발생하기 위해 상기 제2증가된 어드레스를 증가시키기 위한 회로와, 상기 제3증가된 어드레스를 갖는 제4캐시 라인이 상기 제2캐시내에 있는지를 판단하기 위한 회로와, 상기 제4캐시 라인이 상기 제2캐시내에 없으면 상기 시스템 메모리로부터 상기 스트림 버퍼 회로로 상기 제4캐시 라인을 선인출하기 위한 회로와, 상기 제3캐시 라인에 대해 상기 프로세서로부터 요구를 수신하기 위한 회로와, 상기 제1캐시로부터 상기 프로세서로 상기 제3캐시 라인을 전송하기 위한 회로와, 상기 제4캐시 라인이 상기 제1캐시내에 있는지를 판단하기 위한 회로와, 상기 제4캐시 라인이 상기 제2캐시내에 있으면 상기 제2캐시로부터 상기 제1캐시로 상기 제4캐시 라인을 인출하기 위한 회로와, 상기 제4캐시 라인이 상기 제2캐시내에 없으면, 상기 스트림 버퍼 회로로부터 상기 제1캐시로 상기 제4캐시 라인을 인출하기 위한 회로와, 제4증가된 어드레스를 발생하기 위해 상기 제3증가된 어드레스를 증가시키기 위한 회로와, 상기 제4증가된 어드레스를 갖는 제5캐시 라인이 상기 제2캐시내에 있는지를 판단하기 위한 회로와, 상기 제5캐시 라인이 상기 제2캐시내에 있으면, 상기 제2캐시로부터 상기 스트림 버퍼 회로로 상기 제5캐시 라인을 인출하기 위한 회로와, 상기 제5캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 스트림 버퍼 회로로 상기 제5캐시 라인을 선인출하기 위한 회로를 더 포함하는 데이터 처리 시스템.
  3. 제1항에 있어서, 상기 스트림 버퍼 회로내에 저장된 하나 이상의 캐시 라인이 상기 제1캐시내에 위치하는 데이터 처리 시스템.
  4. 제1항에 있어서, 상기 스트림 버퍼 회로내에 저장된 하나 이상의 캐시 라인이 상기 프로세서를 포함하는 칩(a chip)내에 위치하는 데이터 처리 시스템.
  5. 제1항에 있어서, 상기 스트림 버퍼 회로내에 저장된 하나 이상의 캐시 라인이 상기 프로세서와 상기 시스템 메모리에 결합된 노드 제어기(a node controller)내에 위치하는 데이터 처리 시스템.
  6. 제1항에 있어서, 상기 제1캐시는 상기 프로세서와 동일한 칩상에 위치하는 주 캐시(primary cache)고, 상기 제2캐시는 상기 칩의 외부에 위치하는 보조 캐시(secondary cache)인 데이터 처리 시스템.
  7. 제1항에 있어서, 상기 스트림 필터 회로는 다수의 스트림을 추적할 수 있으며, 상기 스트림 필터 회로내 각각의 엔트리는 상기 다수의 스트림중 하나를 추적하고, 상기 각각의 엔트리는 상기 각각의 엔트리에 의해 추적된 상기 스트림의 유효성을 표시하는 제1표시기(indicator) 및 상기 각각의 엔트리에 대한 어드레스의 증가 방향을 표시하는 제2표시기를 포함하는 데이터 처리 시스템.
  8. 제1항에 있어서, 상기 스트림 버퍼 회로는 각각의 엔트리에 대해, 1)페이지 어드레스(a page address), 2)라인 어드레스(a line address), 및 3)유효성 표시기(a validity indicator)를 포함하는 데이터 처리 시스템.
  9. 제1항에 있어서, 상기 스트림 필커 회로내 엔트리는 실 어드레스를 갖는 반면에, 상기 스트림 버퍼 회로내 엔트리는 유효 어드레스를 갖는 데이터 처리 시스템.
  10. 제1항에 있어서, 상기 프로세서, 상기 제어 회로, 상기 스트림 필터 회로, 상기 제1캐시, 및 상기 스트림 버퍼 회로의 일부가 동일한 칩상에 위치하는 데이터 처리 시스템.
  11. 제1항에 있어서, 제2프로세서와, 상기 제2프로세서에 결합된 상기 시스템 메모리와, 상기 제2프로세서에 결합된 제3캐시와, 상기 제2프로세서에 결합된 제4캐시와, 상기 제2프로세서에 결합되어, 상기 시스템 메모리로부터 선인출된 하나 이상의 데이터의 라인을 저장하기 위한 제2스트림 버퍼 회로와, 상기 제2프로세서에 결합되어, 선인출 조건을 표시하기 위한 제2스트림 필터 회로와, 상기 제2스트림 필터 회로에 결합되어, 상기 시스템 메모리로부터 상기 제3및 제4캐시와 상기 제2스트림 버퍼 회로로 데이터의 인출 및 선인출을 선택적으로 제어하기 위한 제2제어 회로를 더 포함하는 데이터 처리 시스템.
  12. 데이터 처리 시스템에서, 프로세서로부터 제1캐시 라인에 대한 요구를 수신하는 단계와, 상기 제1캐시 라인이 제1캐시내에 있는지를 판단하는 단계와, 상기 제1캐시 라인이 상기 제1캐시내에 없고, 상기 제1캐시 라인이 제2캐시내에 있으면, 상기 제2캐시로부터 상기 제1캐시로 상기 제1캐시 라인을 인출하는 단계와, 상기 제1캐시 라인이 상기 제2캐시내에 없으면, 시스템 메모리로부터 상기 제1캐시로 상기 제1캐시 라인을 인출하는 단계와, 제1증가된 어드레스를 발생하기 위해 상기 제1캐시 라인의 어드레스를 증가시키는 단계와, 스트림 필터내에 상기 증가된 어드레스를 저장하는 단계와, 상기 증가된 어드레스를 갖는 제2캐시 라인에 대해 상기 프로세서로부터 요구를 수신하는 단계와, 상기 제2캐시 라인이 상기 제1캐시내에 있는지를 판단하는 단계와, 상기 증가된 어드레스가 상기 스트림 필터내에 있는지를 판단하는 단계와, 제2증가된 어드레스를 발생하기 위해 상기 증가된 어드레스를 증가시키는 단계와, 상기 제2증가된 어드레스로 시작하는 스트림(a stream)을 할당하는 단계와, 상기 제2증가된 어드레스를 갖는 제3캐시 라인이 상기 제1캐시내에 있는지를 판단하는 단계와, 상기 제2캐시 라인이 상기 제2캐시내에 있고, 상기 제2캐시 라인이 상기 제1캐시내에 없으면, 상기 제2캐시로부터 상기 제1캐시로 상기 제2캐시라인을 인출하는 단계와, 상기 제2캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 제1캐시로 상기 제2캐시 라인을 인출하는 단계와, 상기 제3캐시 라인이 상기 제2캐시내에 있고 상기 제3캐시 라인이 상기 제1캐시내에 없으면, 상기 제2캐시로부터 상기 제1캐시로 상기 제3캐시라인을 선인출하는 단계와, 상기 제3캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 제1캐시로 상기 제3캐시 라인을 선인출하는 단계를 포함하는 데이터 처리 방법.
  13. 제12항에 있어서, 제3증가된 어드레스를 발생하기 위해 상기 제2증가된 어드레스를 증가시키는 단계와, 상기 제3증가된 어드레스를 갖는 제4캐시 라인이 상기 제2캐시내에 있는지를 판단하는 단계와, 상기 제4캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 스트림 버퍼 회로로 상기 제4캐시 라인을 선인출하는 단계와, 상기 프로세서로부터 상기 제3캐시 라인에 대한 요구를 수신하는 단계와, 상기 제1캐시로부터 상기 프로세서로 상기 제3캐시 라인을 전송하는 단계와, 상기 제4캐시 라인이 상기 제1캐시내에 있는지를 판단하는 단계와, 상기 제4캐시 라인이 상기 제2캐시내에 있으면 상기 제2캐시로부터 상기 제1캐시로 상기 제4캐시 라인을 인출하는 단계와, 상기 제4캐시 라인이 상기 제2캐시내에 없으면 상기 스트림 버퍼 회로로부터 상기 제1캐시로 상기 제4캐시 라인을 인출하는 단계와, 제4증가된 어드레스를 발생하기 위해 상기 제3증가된 어드레스를 증가시키는 단계와, 상기 제4증가된 어드레스를 갖는 제5캐시 라인이 상기 제2캐시내에 있는지를 판단하는 단계와, 상기 제5캐시 라인이 상기 제2캐시내에 있으면, 상기 제2캐시로부터 상기 스트림 버퍼 회로로 상기 제5캐시 라인을 인출하는 단계와, 상기 제5캐시 라인이 상기 제2캐시내에 없으면, 상기 시스템 메모리로부터 상기 스트림 버퍼 회로로 상기 제5캐시 라인을 선인출하는 단계를 더 포함하는 데이터 처리 방법.
KR1019960038616A 1995-11-06 1996-09-06 데이터 선인출 방법 및 시스템 Expired - Fee Related KR100262906B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/554,180 1995-11-06
US08/554,180 US6085291A (en) 1995-11-06 1995-11-06 System and method for selectively controlling fetching and prefetching of data to a processor
US08/554,180 1995-11-06

Publications (2)

Publication Number Publication Date
KR970029103A KR970029103A (ko) 1997-06-26
KR100262906B1 true KR100262906B1 (ko) 2000-08-01

Family

ID=24212343

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960038616A Expired - Fee Related KR100262906B1 (ko) 1995-11-06 1996-09-06 데이터 선인출 방법 및 시스템

Country Status (4)

Country Link
US (1) US6085291A (ko)
JP (1) JPH09146835A (ko)
KR (1) KR100262906B1 (ko)
TW (1) TW371331B (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195735B1 (en) * 1996-12-31 2001-02-27 Texas Instruments Incorporated Prefetch circuity for prefetching variable size data
US6243822B1 (en) * 1997-12-24 2001-06-05 Elbrus International Limited Method and system for asynchronous array loading
JP3071752B2 (ja) 1998-03-24 2000-07-31 三菱電機株式会社 ブリッジ方法、バスブリッジ及びマルチプロセッサシステム
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
US6226721B1 (en) * 1998-12-09 2001-05-01 Advanced Micro Devices, Inc. Method and system for generating and utilizing speculative memory access requests in data processing systems
US6546439B1 (en) 1998-12-09 2003-04-08 Advanced Micro Devices, Inc. Method and system for improved data access
US6219769B1 (en) 1998-12-09 2001-04-17 Advanced Micro Devices, Inc. Method and system for origin-sensitive memory control and access in data processing systems
US6260123B1 (en) 1998-12-09 2001-07-10 Advanced Micro Devices, Inc. Method and system for memory control and access in data processing systems
US6381683B1 (en) 1998-12-09 2002-04-30 Advanced Micro Devices, Inc. Method and system for destination-sensitive memory control and access in data processing systems
US6510497B1 (en) 1998-12-09 2003-01-21 Advanced Micro Devices, Inc. Method and system for page-state sensitive memory control and access in data processing systems
JP3757117B2 (ja) 1998-12-18 2006-03-22 富士通株式会社 キャッシュ装置及び制御方法
US6223257B1 (en) * 1999-05-12 2001-04-24 Rise Technology Company Instruction cache address generation technique having reduced delays in fetching missed data
US6487637B1 (en) 1999-07-30 2002-11-26 International Business Machines Corporation Method and system for clearing dependent speculations from a request queue
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US6473833B1 (en) 1999-07-30 2002-10-29 International Business Machines Corporation Integrated cache and directory structure for multi-level caches
US6594730B1 (en) * 1999-08-03 2003-07-15 Intel Corporation Prefetch system for memory controller
US6317811B1 (en) * 1999-08-26 2001-11-13 International Business Machines Corporation Method and system for reissuing load requests in a multi-stream prefetch design
US6446167B1 (en) * 1999-11-08 2002-09-03 International Business Machines Corporation Cache prefetching of L2 and L3
US6467030B1 (en) * 1999-11-09 2002-10-15 International Business Machines Corporation Method and apparatus for forwarding data in a hierarchial cache memory architecture
US6567894B1 (en) * 1999-12-08 2003-05-20 International Business Machines Corporation Method and apparatus to prefetch sequential pages in a multi-stream environment
JP2001344153A (ja) * 2000-05-30 2001-12-14 Nec Corp マルチプロセッサシステムのキャッシュメモリ制御装置
US6901500B1 (en) * 2000-07-28 2005-05-31 Silicon Graphics, Inc. Method and apparatus for prefetching information and storing the information in a stream buffer
US6523093B1 (en) * 2000-09-29 2003-02-18 Intel Corporation Prefetch buffer allocation and filtering system
US6665776B2 (en) 2001-01-04 2003-12-16 Hewlett-Packard Development Company L.P. Apparatus and method for speculative prefetching after data cache misses
JP4341186B2 (ja) 2001-01-22 2009-10-07 株式会社日立製作所 メモリシステム
US6795876B1 (en) * 2001-03-27 2004-09-21 Intel Corporation Adaptive read pre-fetch
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US6954840B2 (en) 2001-11-30 2005-10-11 Intel Corporation Method and apparatus for content-aware prefetching
US6675280B2 (en) 2001-11-30 2004-01-06 Intel Corporation Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US7093077B2 (en) 2001-11-30 2006-08-15 Intel Corporation Method and apparatus for next-line prefetching from a predicted memory address
US7260704B2 (en) 2001-11-30 2007-08-21 Intel Corporation Method and apparatus for reinforcing a prefetch chain
US6871246B2 (en) * 2003-05-07 2005-03-22 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7139878B2 (en) * 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement
US7200719B2 (en) * 2003-07-31 2007-04-03 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US20050039016A1 (en) * 2003-08-12 2005-02-17 Selim Aissi Method for using trusted, hardware-based identity credentials in runtime package signature to secure mobile communications and high-value transaction execution
KR100546403B1 (ko) * 2004-02-19 2006-01-26 삼성전자주식회사 감소된 메모리 버스 점유 시간을 가지는 시리얼 플레쉬메모리 컨트롤러
JP4532931B2 (ja) * 2004-02-25 2010-08-25 株式会社日立製作所 プロセッサ、および、プリフェッチ制御方法
US7263579B2 (en) * 2004-03-24 2007-08-28 Intel Corporation Integrated circuit capable of pre-fetching data
US20060143401A1 (en) * 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US7350029B2 (en) * 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
JP4378335B2 (ja) 2005-09-09 2009-12-02 インターナショナル・ビジネス・マシーンズ・コーポレーション ディスクへのトランザクション・データ書き込みの方式を動的に切り替える装置、切り替える方法、及び切り替えるプログラム
US20080098176A1 (en) * 2006-10-18 2008-04-24 Krishna M V V Anil Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US9047198B2 (en) 2012-11-29 2015-06-02 Apple Inc. Prefetching across page boundaries in hierarchically cached processors

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5170476A (en) * 1990-01-22 1992-12-08 Motorola, Inc. Data processor having a deferred cache load
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5784711A (en) * 1990-05-18 1998-07-21 Philips Electronics North America Corporation Data cache prefetching under control of instruction cache
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
JPH07506921A (ja) * 1992-03-06 1995-07-27 ランバス・インコーポレーテッド コンピュータ・システムにおける主記憶装置のアクセス時間とキャッシュ・メモリのサイズを最小限にするためのキャッシュへの先取り
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
US5388247A (en) * 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
CA2128828C (en) * 1993-08-24 2001-01-02 David Michael Silver Multilingual standard resources
US5490113A (en) * 1994-06-15 1996-02-06 Digital Equipment Corporation Memory stream buffer
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
US5664147A (en) * 1995-08-24 1997-09-02 International Business Machines Corp. System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated

Also Published As

Publication number Publication date
JPH09146835A (ja) 1997-06-06
KR970029103A (ko) 1997-06-26
US6085291A (en) 2000-07-04
TW371331B (en) 1999-10-01

Similar Documents

Publication Publication Date Title
KR100262906B1 (ko) 데이터 선인출 방법 및 시스템
KR100240911B1 (ko) 데이터 프리페치 방법, 캐시 라인 프리페치 방법 및 시스템(progressive data cache)
KR100240912B1 (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
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
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US6105111A (en) Method and apparatus for providing a cache management technique
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
US5210845A (en) Controller for two-way set associative cache
US6725337B1 (en) Method and system for speculatively invalidating lines in a cache
EP0604139B1 (en) Computer system including a prefetch cache
US6321296B1 (en) SDRAM L3 cache using speculative loads with command aborts to lower latency
US12332790B2 (en) Multi-level cache security
JP2000242558A (ja) キャッシュシステム及びその操作方法
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
EP0470739B1 (en) Method for managing a cache memory system
US5717894A (en) Method and apparatus for reducing write cycle wait states in a non-zero wait state cache system
US5287512A (en) Computer memory system and method for cleaning data elements
US6976130B2 (en) Cache controller unit architecture and applied method
US5835945A (en) Memory system with write buffer, prefetch and internal caches
JP3219196B2 (ja) キャッシュデータアクセス方法及び装置
GB2454811A (en) Cache memory which pre-fetches data when an address register is written
GB2454808A (en) Cache which prefetches data at a second address when an access matches a first address

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19960906

A201 Request for examination
AMND Amendment
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19961126

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 19960906

Comment text: Patent Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 19990518

Patent event code: PE09021S01D

AMND Amendment
E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 19990928

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 19990518

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

J201 Request for trial against refusal decision
PJ0201 Trial against decision of rejection

Patent event date: 19991222

Comment text: Request for Trial against Decision on Refusal

Patent event code: PJ02012R01D

Patent event date: 19990928

Comment text: Decision to Refuse Application

Patent event code: PJ02011S01I

Appeal kind category: Appeal against decision to decline refusal

Decision date: 20000308

Appeal identifier: 1999101004604

Request date: 19991222

AMND Amendment
PB0901 Examination by re-examination before a trial

Comment text: Amendment to Specification, etc.

Patent event date: 20000113

Patent event code: PB09011R02I

Comment text: Request for Trial against Decision on Refusal

Patent event date: 19991222

Patent event code: PB09011R01I

Comment text: Amendment to Specification, etc.

Patent event date: 19990816

Patent event code: PB09011R02I

Comment text: Amendment to Specification, etc.

Patent event date: 19961126

Patent event code: PB09011R02I

B701 Decision to grant
PB0701 Decision of registration after re-examination before a trial

Patent event date: 20000308

Comment text: Decision to Grant Registration

Patent event code: PB07012S01D

Patent event date: 20000211

Comment text: Transfer of Trial File for Re-examination before a Trial

Patent event code: PB07011S01I

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20000509

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20000510

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20040210