KR19990077471A - 스누핑포트를사용하는프리페치캐시질의방법및시스템 - Google Patents

스누핑포트를사용하는프리페치캐시질의방법및시스템 Download PDF

Info

Publication number
KR19990077471A
KR19990077471A KR1019990006233A KR19990006233A KR19990077471A KR 19990077471 A KR19990077471 A KR 19990077471A KR 1019990006233 A KR1019990006233 A KR 1019990006233A KR 19990006233 A KR19990006233 A KR 19990006233A KR 19990077471 A KR19990077471 A KR 19990077471A
Authority
KR
South Korea
Prior art keywords
cache
address
port
circuit
snooping
Prior art date
Application number
KR1019990006233A
Other languages
English (en)
Other versions
KR100326989B1 (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 KR19990077471A publication Critical patent/KR19990077471A/ko
Application granted granted Critical
Publication of KR100326989B1 publication Critical patent/KR100326989B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed

Landscapes

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

Abstract

본 발명에서는 2개의 부분배열(subarrays)로 분할되어 인터리브(interleave)된 데이터 캐시 배열이 데이터 처리 시스템 내에 제공되어 사용된다. 각 부분배열은 복수의 캐시 라인을 포함하며, 각 캐시 라인은 선택된 데이터 블록, 패리티(parity) 필드, 선택된 데이터 블록에 대한 유효 어드레스(ECAM) 부분을 포함하는 제1 내용 주소화 필드, 선택된 데이터 블록에 대한 실제 어드레스(RCAM)를 포함하는 제2 내용 주소화 필드, 및 데이터 상태 필드를 포함한다. 유효 어드레스 포트(EA) 및 실제 어드레스 포트(RA)로 분리시켜 개별 부분배열 내에서 충돌함이 없이 캐시를 병렬로 액세스할 수 있게 하며, 유효 어드레스 포트(EA) 및 실제 어드레스 포트(RA) 모두를 통해 단일 부분배열을 동시 액세스하기 위해 부분배열 중재 논리 회로를 사용한다. 정상 워드 라인(normal word line)이 제공되어, 부분배열 중재를 통해 유효 어드레스 포트 또는 실제 어드레스 포트 중의 하나의 포트에 의해 활성화된다. 기존의 실제 어드레스(RA) 캐시 스누핑 어드레스 포트(cache snooping address port)는 프리페치 스트림(pre-fetching stream)의 라인 액세스의 결과가 참 캐시 히트(true cache hit)인지 아닌지를 검사하기 위해 사용된다. 스누핑 판독 어드레스는 프리페치 스트림의 결과가 히트인지를 검사하는 동안 (33 비트의) 실제 어드레스를 사용하여 데이터 포트를 점유하지 않고 데이터 캐시를 액세스한다. 따라서 2개의 유효 어드레스(EA) 액세스 및 RCAM 스누핑 액세스는 데이터 캐시를 동시에 액세스할 수 있으며, 그리하여 프리페치 성능을 증대시킨다.

Description

스누핑 포트를 사용하는 프리페치 캐시 질의 방법 및 시스템 {METHOD AND SYSTEM FOR PRE-FETCH CACHE INTERROGATION USING SNOOP PORT}
본 발명은 개선된 데이터 처리 시스템에 관한 것이며, 구체적으로는 데이터 처리 시스템에서 사용되는 개선된 데이터 캐시 배열에 관한 것이다. 더 구체적으로 설명하면, 본 발명은 마이크로프로세서 메모리 시스템의 효율적인 프리페치 성능 및 정상 로드 성능을 개선시키는 방법 및 시스템에 관한 것이다.
다수의 정보 처리 시스템은 시스템 메모리와 캐시 메모리를 포함한다. 캐시 메모리는 비교적 소형이며, 시스템 메모리의 하나 이상의 부분으로부터 정보의 복사본을 저장하는 고속 메모리이다. 종종 캐시 메모리는 시스템 메모리와 물리적으로 구별된다. 이러한 캐시 메모리는 시스템의 프로세서 장치와 일체형(L1 캐시라 함)으로 구성되거나 프로세서와 비일체형(L2 캐시라 함)으로 구성될 수 있다.
정보는 시스템 메모리의 일부로부터 캐시 메모리로 복사되는데, 그 후 캐시 메모리의 정보는 변경될 수 있다. 또한 변경된 정보는 캐시 메모리로부터 시스템 메모리의 일부로 다시 복사될 수 있다. 따라서 캐시 메모리 내의 정보를 시스템 메모리 내의 위치와 연관하여 매핑하는 것이 중요하다. 적당한 크기의 캐시 메모리가 선택되고 캐시 메모리 내에 데이터가 효율적으로 저장되어 있다고 가정하면, 캐시 성능에 있어서 제한 요소는 캐시 메모리의 속도 및 신속하게 캐시 메모리에 데이터를 기록하고 캐시 메모리로부터 데이터를 판독하는 시스템의 성능이다.
캐시 메모리는 통상적으로 복수의 메모리 섹션을 포함하며, 각 메모리 섹션은 둘 이상의 워드(words)로 구성된 데이터 블록 또는 "라인"을 저장하며, 여기서 하나의 라인은 8개의 "더블워드(doublewords)"로 구성되며, 각 더블워드는 8개의 8-비트 바이트로 구성된다. 각 라인은 각 라인과 연관되어 그 라인이 시스템 메모리의 어느 라인의 복사본인지를 유일하게 식별하는 어드레스 태그(address tag)를 가진다. 프로세서에 의해 새로운 워드(새로운 더블워드 또는 새로운 바이트)에 대한 판독 요청이 발생하면, 그것이 데이터이건 인스트럭션이건, 요청된 워드의 복사본이 캐시 메모리의 라인에 존재하는 지의 여부를 결정하기 위해 어드레스 태그를 비교한다. 복사본이 캐시 메모리의 라인에서 발견되면, 캐시로부터 데이터를 직접 판독한다. 이러한 이벤트(event)를 캐시 판독 "히트(hit)"라 한다. 복사본이 캐시 메모리의 라인에서 발견되지 않으면, 요청된 워드를 포함하는 라인을 시스템 메모리로부터 검색하여 캐시 메모리에 저장한다. 이와 동시에, 요청된 워드는 프로세서로 공급된다. 이러한 이벤트를 캐시 판독 "미스(miss)"라 한다.
캐시 메모리를 사용하여 데이터를 검색하는 것 이외에도, 프로세서는 또한 시스템 메모리 대신 캐시 메모리에 데이터를 직접 기록할 수 있다. 프로세서가 데이터를 메모리에 기록하고자 하는 경우, 데이터가 기록될 라인이 캐시 메모리 내에 존재하는 지의 여부를 결정하기 위해 어드레스 태그를 비교한다. 라인이 캐시 메모리에서 발견되면, 라인으로 데이터를 직접 기록한다. 이러한 이벤트를 캐시 기록 "히트"라 한다. 데이터가 기록될 라인이 캐시 메모리 내에 존재하지 않으면, 시스템 메모리로부터 캐시 메모리로 라인을 페치(fetch)하여 데이터를 캐시에 기록하거나, 또는 데이터를 시스템 메모리에 직접 기록한다. 이러한 이벤트를 캐시 기록 "미스"라 한다.
본 발명의 캐시 구현에 있어서, 캐시 라인 "히트"가 존재하는 가를 검증하기 위해 실제 어드레스(real address: RA)와 나란히 유효 어드레스(effective address: EA)를 가지는 디렉토리를 액세스함으로써 어드레스 태그를 비교할 필요가 있다. 예를 들어, 본 발명의 캐시는 2개 이상의 데이터 포트(data port)를 가질 수 있으며, 이중 하나는 부분(partial) EA 어드레스를 포함하는 EA 내용 주소화 메모리(EA content addressable memory: ECAM)이고, 다른 하나는 RA 어드레스를 포함하는 RA 내용 주소화 메모리(RA content addressable memory: RCAM)이다. ECAM 액세스의 결과가 "히트"이면, RCAM은 RA과 RCAM을 비교함으로써 상기 히트가 참(true)인가를 확인한다. 캐시에 대하여 데이터 프리페치(prefetch)를 수행하는 경우, 데이터 캐시 제어장치는 실제 어드레스(RCAM) 룩업(lookup) 사이클을 사용하여 프리페치 라인의 히트가 참인 지의 여부를 검사한다. RCAM의 결과가 히트인 경우, 캐시 제어장치는 작동을 "강제 중단(kill)"시킨다. RCAM의 결과 미스인 경우, 캐시 제어장치는 계속하여 한 라인의 데이터를 시스템 메모리로부터 캐시 메모리로 프리페치(prefetch)한다.
그러나 RCAM 룩업 사이클을 사용하여 프리페치 테스트를 실시하는 경우, 제한하기 위해, 2개의 데이터 포트 중 하나의 RCAM 경로를 사용한다. 따라서 본 발명의 이점은 프리페치 동작에 의해 데이터 포트의 데이터가 실제적으로 필요하지 않다는 것이다. 프리페치 액세스가 하나의 데이터 포트를 사용하기 때문에, 캐시 제어장치는 두 개의 전술한 EA 포트 중 하나의 포트를 차단시켜, 프리페치 동안에 단지 하나의 포트만이 캐시에 대하여 중요한 로드(load) 액세스를 실시할 수 있도록 한다. 이러한 형태의 종래 기술에 의한 프리페치의 결과로, 캐시 성능은 심각한 영향을 받는다. 하나의 EA 포트가 사용중이 아닌(free) 상태가 될 때까지 프리페치를 연기하는 것은 프리페치 성능을 저하시킨다.
상기한 바를 고려해보면, 데이터 캐시에 대한 메모리의 프리페치 성능을 개선하기 위한 방법 및 시스템이 고도로 요구된다는 것은 명확하다.
따라서 본 발명의 목적은 개선된 데이터 처리 시스템을 제공하는 것이다.
본 발명의 다른 목적은 마이크로프로세서 메모리 시스템의 정상 로드 성능뿐만 아니라 메모리의 프리페치 성능을 개선하기 위한 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 캐시 데이터 포트 액세스와 간섭함이 없이 캐시 내에 프리페치 라인이 존재하는 지를 검사하는 개선된 방법 및 시스템을 제공하는 것이다.
전술한 목적은 아래에 기술하는 방법으로 구현된다. 2개의 부분배열로 분리되어 인터리브(interleaved)된 데이터 캐시 배열이 데이터 처리 시스템 내에서 사용되기 위하여 제공된다. 각 부분배열은 복수의 캐시 라인을 포함하며, 각 캐시 라인은 선택된 데이터 블록, 패리티 필드(parity field), 선택된 데이터 블록에 대한 유효 어드레스 부분을 포함하는 제1 내용 주소화 필드(ECAM), 선택된 데이터 블록에 대한 실제 어드레스를 포함하는 제2 내용 주소화 필드(RCAM) 및 데이터 상태 필드(data status field)를 포함한다. 유효 어드레스 포트(EA) 및 실제 어드레스 포트(RA)의 분리는 분리된 부분배열에서 충돌(conflict)함이 없이 캐시를 병렬로 액세스할 수 있게 하며, 유효 어드레스 포트(EA) 및 실제 어드레스 포트(RA) 모두를 통해 단일 부분배열을 동시 액세스하기 위해 부분배열 중재 논리 회로(subarray arbitration logic circuit)가 제공된다. 정상 워드 라인이 제공되어, 부분배열 중재 논리 회로를 통해 유효 어드레스 포트 또는 실제 어드레스 포트 중의 하나의 포트에 의해 활성화(activated)된다. 기존의 실제 어드레스(RA) 캐시 스누핑 포트를 사용하여, 프리페치 스트림의 라인 액세스가 참(true) 캐시 히트인지의 여부를 검사한다. 스누핑 판독 액세스는 (33-비트의) 실제 어드레스를 사용하여, 프리페치 스트림의 라인 액세스가 히트인지의 여부를 테스트하는 동안 데이터 포트를 점유하지 않고 데이터 캐시를 액세스한다. 2개의 유효 어드레스(EA) 액세스 및 RCAM 스누핑 액세스가 데이터 캐시를 동시에 액세스할 수 있으며, 그 결과 정상 로드 성능뿐만 아니라 프리페치 성능을 증대시킨다.
본 발명에 대한 전술한 목적, 특징, 및 이점뿐만 아니라 추가 목적, 특징, 및 이점은 아래에 기술된 상세한 설명을 통해 명확해진다.
도 1은 본 발명에 따른 캐시 정보에 대한 세미-어소시어티브 매핑 기술(semi-associative mapping technique)의 개념을 예시하는 도면이다.
도 2는 제1 처리 시스템, 제2 처리 시스템 및 레벨 2("L2") 캐시 메모리를 포함하는 시스템의 일례를 예시하는 블록도이다.
도 3은 본 발명의 시스템 내에서 사용되는 어드레싱 방식(addressing scheme)을 예시하는 도면이다.
도 4는 본 발명에 따라 제공된 다수의 부분배열 캐시(multiple subarray cache)를 예시하는 개략적인 블록도이다.
도 5는 도 6에 도시된 캐시의 단일 부분배열을 도시하는 보다 상세한 블록도로서, 캠릿(camlet)을 보다 상세하게 예시하는 도면이다.
도 6은 본 발명에 따라 제공된 캐시 내의 할당 제어 시스템(system for allocation control)을 예시하는 개략적인 블록도이다.
본 발명의 독창적인 특징으로 간주되는 특성은 첨부된 특허청구범위에 기재되어 있다. 그러나 본 발명 자체뿐만 아니라 본 발명의 바람직한 실시 형태, 추가적인 목적 및 이점은 첨부된 도면을 참조하여 다음의 예시적인 실시예에 대한 상세한 설명을 읽는다면 가장 잘 이해할 수 있을 것이다.
동일한 도면부호가 동일 부품을 표시하는 도면을 참조하여 설명하면, 본 발명에 따른 캐시 정보에 대한 세미-어소시어티브 매핑 기술이 도 1에 개략적으로 도시되어 있다. 도시되어 있는 바와 같이, 캐시 디렉토리(20)는 P = 2k= 8개의 엔트리(또는 "위치")를 가지며, 각 엔트리는 본 발명에 따라 제공되는 캐시 메모리 내의 각각의 정보 블록(위치)과 연관되어 있다. q = 2m+k= 64개의 8진(octal) 어드레스를 포함하는 매트릭스(22)가 도시되어 있으며, 각 어드레스는 도 3에 도시된 2차 메모리 내의 해당 정보 블록(또는 "위치")을 표시한다. 매트릭스(22)의 q개의 8진 어드레스 각각은 m+k = 6개의 어드레스 비트를 가진다.
도 1에 도시되어 있듯이, 매트릭스(22) 및 디렉토리(20)는 2(k+j)개의 합동 클래스(congruence class)로 논리적으로 배열되며, 여기서 2k는 1차 합동 클래스의 개수이며, 2j는 2차 합동 클래스("합동 부분클래스")의 개수이다. 도 1에 있어서, p*2 = 2(k+j)= 16이며, 따라서 k = 3이고 j = 1이다. 1차/2차 합동 클래스는 어드레스의 (k+j) 어드레스 비트 인덱스에 의해 지정된다. 따라서 각 합동 클래스는 다수의 어드레스를 포함하며, 이들 모두는 동일한 (k+j) 어드레스 비트 인덱스를 공유한다.
예를 들어, 도 1에서 하나의 합동 클래스는 (k+j) 어드레스 비트 인덱스가 0001인 모든 어드레스를 포함한다. 이러한 합동 클래스는 8진 어드레스 01, 21, 41 및 61을 포함한다. 이와 유사하게, ((k+j) 어드레스 비트 인덱스가 1001)인 다른 합동 클래스는 8진 어드레스 11, 31, 51 및 71을 포함한다.
합동 클래스는 캐시 디렉토리(20) 내의 엔트리로 미리 할당(preassigned)되지 않는다는 것에 주의해야 한다. 대신 합동 클래스는 캐시 디렉토리(20) 내의 엔트리와 동적으로(dynamically) 연관("또는 엔트리로 할당")되어 있다. 따라서 각 캐시 디렉토리(20)의 엔트리는 캐시 메모리 블록을 하나 이상의 합동 클래스 내의 임의의 다수의 2차 메모리 블록 중 어느 것과도 연관시킬 수 있다.
따라서 어떠한 순간에도 2k+j개의 합동 클래스 중 최대 2k개의 합동 클래스는 캐시 디렉토리(20) 내에서 임의로 그룹화(grouping)되고 임의의 순서로 구성된 각각의 연관된 엔트리를 가진다. 따라서 어떠한 순간에도 캐시 메모리는 2(k+j)개의 합동 클래스 중 최대 2k개의 합동 클래스에 대한 정보를 임의로 그룹화시켜 임의의 순서로 저장한다. 합동 클래스의 값은 캐시 디렉토리(20) 내에서 합동 클래스의 동적으로 연관된 엔트리의 (k+j)개의 내용 주소화 메모리(CAM) 셀에 저장된다. 캐시 디렉토리(20) 내의 합동 클래스의 동적으로 연관된 엔트리에서, 합동 클래스의 다수의 어드레스 중 하나의 어드레스가 지정된다. 예를 들어, 합동 클래스의 연관 엔트리에서, 캐시 디렉토리(20)는 어드레스의 상위 (m-j)개의 어드레스 비트를 포함하는 태그를 저장할 수 있다. 도 1에서 m = 3이다.
일례로서, 도 1에서 (k+j) 어드레스 비트 인덱스가 1101(8진 어드레스 15, 35, 55 및 75)인 4개의 어드레스로부터, 캐시 디렉토리(20)는 캐시 메모리가 8진 어드레스 55에 대한 정보를 저장하고 있음을 표시한다. 이러한 경우, k+j 인덱스 비트 1101은 합동 클래스의 캐시 디렉토리(20) 엔트리의 CAM 비트 부분에 저장되며, m-j 태그 비트는 합동 클래스의 캐시 디렉토리(20) 엔트리의 태그 부분에 저장된다. 비교에 의해, 캐시 디렉토리(20)는 캐시 메모리가 (k+j) 어드레스 비트 인덱스가 0011인 4개의 어드레스(8진 어드레스 03, 23, 43 및 63)중의 어떠한 어드레스에 대한 정보도 저장하지 않고 있다는 것을 표시한다.
종래 기술에서, 특정 합동 클래스가 캐시 디렉토리(20) 내의 단지 하나의 연관된 엔트리만을 허용하기 때문에, 캐시 디렉토리는 어떠한 순간에도 특정 합동 클래스의 단지 하나의 어드레스에 대한 정보만을 저장할 수 있다. 바람직한 실시예에서는 비교에 의해, 특정 합동 클래스가 캐시 디렉토리(20) 내에서 임의로 그룹화되고 임의의 순서로 된 다수의 연관 엔트리를 허용하기 때문에, 캐시 메모리는 어떠한 순간에도 특정 합동 클래스의 다수의 어드레스에 대한 정보를 임의로 집단화시키고 임의의 순서로 저장할 수 있다.
도 2에 본 발명에 따른 데이터 처리 시스템(24)의 블록도가 도시되어 있으며, 상기 데이터 처리 시스템(24)은 시스템 버스(32)를 통해 서로 연결된 제1 처리 시스템(26) 및 레벨 2("L2") 캐시 제어장치(30)를 포함한다. L2 캐시 제어장치(30)는 실제 4중 세트 어소시어티브(4-way set associative) 매핑 기술에 의해 L2 캐시 메모리(34)를 제어한다. L2 캐시 메모리(34)는 실제 어드레스에 응답하여 액세스된다. 처리 시스템(26)은 프로세서(36), L1 캐시 제어장치(38), 및 L1 캐시 메모리(40)를 포함하는 것이 바람직하다. L1캐시 제어장치(38)는 시스템 버스 (32)와 연결되어, 프로세서(36) 및 L1 캐시 메모리(40)와 연결된다. L1 캐시 제어장치(38)는 본 명세서에 기술된 세미-어소시어티브 매핑 기술에 따라 L1 캐시 메모리(40)를 제어한다.
도 2를 다시 참조하여 설명하면, L2 캐시 메모리(34)는 적어도 L1 캐시 메모리(40)의 블록 크기와 동일한 크기의 블록 크기를 가지는 실제 캐시로 구성되는 것이 바람직하다. 주지하다시피, L1 캐시 메모리(40) 내의 블록 세트는 L2 캐시 메모리(34)의 하부세트 블록이다. 이와 마찬가지로 L2 캐시 메모리(34)에 저장된 임의의 정보 블록을 L1 캐시 메모리(40)에 저장할 수 있다. L1 캐시 메모리(40)의 블록 개수가 P이면, (L2 캐시 메모리(34)에 저장된 전체 블록의 수로부터) 임의의 P개의 블록을 L1 캐시 메모리(40)에 저장할 수 있다. 멀티프로세서 및 I/O 캐시의 일관성을 위해, L2 캐시 메모리(42)의 디렉토리는 L1 캐시 메모리(40)에 저장된 각 블록에 대한 실제 어드레스를 저장한다.
본 명세서에 기술된 유형의 시스템 내에서 별도의 이름을 붙이는 것(aliasing)은 페이지 세분성(page granularity)에 기초하여 지원되기 때문에 실제 정보 블록은 서로 다른 유효 어드레스를 가질 수 있다. 바람직한 실시예에서, (동일한 실제 블록의 정보에 해당하는) 서로 다른 유효 어드레스는 4 킬로바이트의 정수배만큼 다를 수 있으며, 여기서 4 킬로바이트는 페이지 크기이다. 일례로서, L1 캐시 메모리(40)의 크기가 32 킬로바이트이고 블록 크기가 64 바이트이면, L1 캐시 메모리(40)는 512 블록을 가지게 된다. 64 바이트의 정보 이외에도, 각 블록은 실제 어드레스 및 여러 가지 상태 비트를 포함하는 디렉토리 정보를 가진다.
그리하여, L1 캐시 메모리(40) 내의 512 정보 블록의 각각은 유효 어드레스와 연관되어 있다. 유효 어드레스의 부분은 212번째 내지 2C번째 비트의 각 블록의 연관된 유효 어드레스에 의해 구성된다. 바람직한 실시예에서, C = 19이며, 유효 어드레스는 32 비트 또는 64 비트의 길이를 가진다. 유효 어드레스(EA)에 응답하여 L1 캐시 메모리(40)를 검사함으로써(도 3 참조), 원-사이클 로드(one-cycle load)를 구현할 수 있다.
본 발명의 시스템 내에서 사용될 수 있는 어드레싱 시스템이 도해적으로 도 3에 예시되어 있다. 도시되어 있는 바와 같이, 유효 또는 가상 어드레스(EA: 44)가 도 3에 도해적으로 도시되어 있다. 유효 어드레스(EA: 44)가 64 비트를 포함하는 것이 바람직하지만, 본 발명의 데이터 캐시 배열 내에서는 0-43번째 비트를 사용하지 않는다. 도시되어 있는 바와 같이, 58-63번째 비트(52)는 유효 어드레스의 라인 오프셋을 표시한다. 57번째 비트(50)는 본 발명의 데이터 캐시 배열 내의 2개의 부분배열 중 하나의 부분배열을 선택하기 위해 사용된다. 다음, 52-56번째 비트(48)는 본 발명의 데이터 캐시 배열의 각 부분배열 내의 32개의 캠릿(camlet) 중 하나를 선택하기 위해 사용된다. 본 발명의 예시된 실시예에서, 각 "캠릿"은 8 라인의 데이터 캐시 배열을 포함하며, 아래에서 보다 상세하게 기술되어 있는 방식으로 설계된다. 최종적으로, 8 비트의 유효 어드레스, 44-51번째 비트(46)는 내용 주소화 메모리 필드를 구성하며, 본 명세서에서 내용 주소화 메모리 필드는 본 발명에 따라 제공된 데이터 캐시 배열 내의 각 라인에 존재하는 "ECAM" 라고 한다.
다음, 본 발명의 시스템에서 사용될 수 있는 바람직한 실제 어드레스(RA: 54)가 블록도에 도시되어 있다. 상기한 바와 같이, 6 비트 즉 34-39번째 비트(62)는 실제 어드레스(RA)에 있어서의 라인 오프셋이다. 33번째 비트(60)는 본 발명의 데이터 캐시 배열 내의 2개의 부분배열 중 하나의 부분배열을 선택하기 위해 사용되며, 5 비트, 즉 28-32번째 비트(58)는 각 부분배열 내의 32개의 캠릿 중 특정 하나의 캠릿을 선택하기 위해 사용된다. 최종적으로, 연관된 정보 블록에 대한 28 비트(56)의 실제 어드레스가 제2 내용 주소화 필드 내에 저장되며, 본 명세서에서는 상기 제2 내용 주소화 필드를 RCAM이라 한다. 본 명세서에서는 상세하게 기술되어 있지 않지만, 당업자는 희망 어드레스와 ECAM 필드 및 RCAM 필드 내에 저장된 어드레스의 일부를 비교하는 동안 캠릿을 구성하는 비트를 비교해야 한다는 사실을 이해하게 될 것이다.
따라서 당업자는 도 3 내에 도시된 어드레싱 시스템에 따라 본 발명의 캐시 배열을 사용하는 시스템 내의 각 정보 블록은 2개의 개별적이고 구별되는(distinct) 내용 주소화 필드를 포함하는데, 상기 내용 주소화 필드는 캐시 배열 내의 정보 블록을 선택하도록 유효 어드레스 또는 실제 어드레스의 일부와 연관되어 사용될 수 있는 한다는 것을 이해하게 될 것이다.
본 발명에 따라 제공되는 다수의 부분배열 캐시(64)의 개략적인 블록도가 도 4에 도시되어 있다. 도시된 바와 같이, 다수의 부분배열 캐시(64)가 2개의 부분배열(66, 68)을 포함하는 것이 바람직하지만, 당업자들은 또한 본 발명을 참조하여 다수의 부분배열을 사용할 수 있다는 것을 이해하게 될 것이다. 도시되어 있는 바와 같이, 데이터 캐시 배열 유닛(64)은 32킬로 바이트의 캐시 데이터를 포함하고 부분배열(66, 68)로 물리적으로 분할되는 것이 바람직하다. 각 부분배열은 256개의 캐시 라인을 포함하고, 각 캐시 라인은 512 비트 데이터 필드를 포함하며, 데이터 필드는 부분배열(66) 내에서 2개의 세그먼트(70, 72)로 분할되는 것이 바람직하다. 또한 각 캐시 라인은 64 비트의 패리티 필드(도시되지 않음), 28 비트의 RCAM 필드(74), 8 비트의 ECAM 필드(76) 및 3 비트의 MESI 필드(78)를 포함하는 것이 바람직하다.
당업자들이 이해하고 있듯이, 소위 "MESI" 상태 비트는 데이터 캐시 내에서 일반적으로 사용된다. 용어 "MESI"는 "Modified(변경)", "Exclusive(배타적)", "Shared(공유)" 및 "Invalid(무효)"의 두문자어(acronym)이다. 따라서 이들 3 비트의 상태를 결정함으로써 데이터 캐시 내의 특정 라인의 데이터의 상태를 신속하게 그리고 효율적으로 결정할 수 있다. 이와 유사하게 다른 비트를 MESI 필드에 기록함으로써 캐시 내의 데이터 상태를 변경할 수 있다.
추가적으로 도 4에 도시되어 있듯이, 각 부분배열은 연관된 할당 버퍼(associated allocate buffer: 78 및 80) 및 데이터를 배열 내의 캐시 라인으로 기록하기 위해 구동되는 연관된 기록 구동장치(associated write driver: 82 및 84)를 포함한다. 이와 유사하게, 특정 캐시 라인으로부터의 출력 신호를 증폭하기 위해 센스 증폭기(sense amplifier: 86 및 88)가 제공된다. 도 4에 도시되어 있는 바와 같이, 2개의 개별적이고 구분되는 내용 주소화 필드를 데이터 캐시 배열 내의 각 라인 내에 제공함으로써 이러한 라인 내의 데이터를 다수의 독창적이고 효율적인 시퀀스로 액세스할 수 있다.
하나의 캠릿을 보다 상세하게 도시하는 도 5를 참조하여 설명하면, 본 발명에 따라 제공된 단일 캐시 부분배열의 보다 상세한 블록도가 도시되어 있다. 도시되어 있는 바와 같이, 단일 부분배열(90)이 예시되어 있다. 상기한 바와 같이, 부분배열(90) 내의 각 라인은 512 비트의 데이터를 포함하며, 상기 512 비트는 데이터 필드(92 및 94)로 분할된다. 실제 어드레스를 포함하는 28 비트의 내용 주소화 필드(RCAM: 96) 및 8 비트의 유효 어드레스 내용 주소화 필드(ECAM: 98)가 예시되어 있다. 추가적으로 가장 최근에 사용된 (most recently utilized: MRU) 비트(100)가 도시되어 있으며, 상기 비트는 8 비트의 ECAM 내용 주소화 필드(98)와 연관되어 2개 이상의 유효 어드레스가 단일 실제 어드레스와 매핑되는 오프셋 상태를 해결하기 위해 사용된다.
종래의 방법에서는 출력 버퍼 및 센스 증폭기(102 및 104)를 사용하여 캐시 라인으로부터 데이터를 판독한다. 본 발명의 새로운 특징에 따라, 2개의 입력 포트가 각 부분배열 내에 제공된다. 도 6에 도시되어 있듯이, 제1 유효 어드레스(EA) 또는 실제 어드레스(RA) 입력 포트(116) 및 제2 유효 어드레스(EA) 또는 실제 어드레스(RA) 입력 포트(122)를 제공하여, 제1 포트(116) 및 제2 포트(122)가 RCAM 룩업(lookup) 사이클 동안 유효 어드레스(EA) 또는 실제 어드레스 중의 하나에 의해 액세스될 수 있도록 한다. 그리하여 동일한 사이클 동안 제1 유효 어드레스(EA) 액세스 포트(116) 및 제2 유효 어드레스(EA) 액세스 포트(122)를 동시에 사용할 수 있으며, 이들 EA 어드레스와 연관된 양 데이터는 캐시(118) 내의 2개의 데이터 포트를 통해 로드/저장 유닛으로 전송될 수 있다. 또한 동일한 사이클 동안 제1 유효 어드레스(EA) 액세스 포트(116) 및 제2 RCAM 룩업 사이클에 대한 실제 어드레스(RA) 액세스 포트(122) 또는 제1 RCAM 룩업 사이클에 대한 실제 어드레스(RA) 액세스 포트(116) 및 제2 유효 어드레스(EA) 액세스 포트(122)를 동시에 사용할 수 있다. 판독 제어 및 중재 논리 회로(106)를 제공하여, 포트(116) 및 포트(122)에 의해 동일한 부분배열에 대한 동시 액세스가 시도되는 이벤트 동안에, 제어 우선권(priority)이 낮은 사이클의 액세스를 차단하고 제어 우선권이 높은 사이클이 부분배열을 액세스하도록 허용한다. 이외에도 본 기술 및 바람직한 실시예에서는 소위 "스누핑" 사이클이라 표현되는 기술을 사용하는데, 이 기술은 MESI 비트를 액세스하기 위한 제2 워드 라인을 통해 임의의 유효 어드레스(EA) 사이클과 동시에 스누핑 액세스를 실행할 수 있도록 함으로써 제공되며, 이는 아래에서 보다 상세하게 기술된다. 최종적으로, 기록 드라이버 및 연관된 멀티플렉서(110 및 112)와 연관하여 기록 제어(108)를 사용하여, 데이터 캐시 내에 데이터를 기록한다.
본 발명에 따라 정상 로드 액세스 및 메모리 프리페치를 개선시키기 위한 블록도가 도 6에 도시되어 있다. 블록도(124)는 캐시 제어장치(114), 캐시(118) 및 메모리 제어 유닛(126)을 포함한다. 바람직한 실시예에서 데이터 캐시 제어장치(114)는 로드 액세스의 속도를 가속화시키기 위해 캐시(118) 내에서 도 3에 도시된 유효 어드레스(44)를 사용하여 데이터를 액세스한다. 도 5를 참조하여 설명하면, ECAM(98)에서 유효 어드레스(116)의 결과가 히트이면, ECAM(98)은 데이터를 로드/저장 유닛으로 전송해야 한다. 그러나 단지 유효 어드레스의 일부분만을 사용하여 ECAM 필드(98) 내에서 초기 캐시 룩업 또는 프리페치 사이클에 대한 매칭을 구한다. 사용된 일부 유효 어드레스의 결과가 "히트"이지만 이러한 ECAM 필드(98)와 연관된 데이터가 적당한 데이터가 아니면, "오프셋" 어드레스라고 알려진 상태가 발생한다. 캐시 내의 엔트리가 희망 부분 유효 어드레스를 포함하지만 원하는 데이터의 실제 어드레스가 이와 연관되지 않은 경우에 이러한 상황이 발생한다.
종래 기술에서 캐시 제어장치(114)는 "히트"가 참인지 아닌 지를 결정하기 위해, 실제 어드레스 액세스(RCAM 룩업 사이클)를 수행해야만 한다. RCAM(98)의 RA 결과가 히트이면, RCAM(96)이 데이터를 로드/저장 유닛으로 전송하며, 이외의 다른 동작은 필요하지 않다. 종래 기술의 문제점은 RCAM(96)의 RA 결과가 미스이면, 정상 미스 시퀀스(normal miss sequence)가 실행되어야 한다는 것이다. RCAM 룩업 사이클 때문에, 캐시 제어장치(114)는 2개의 어드레스 생성 동작 중 하나의 동작을 차단시켜 데이터 캐시(118)에 액세스하는 모든 추후의 로드 액세스의 속도를 감속시켜야 한다.
도 6을 다시 참조하여 설명하면, 바람직한 실시예에서, 특수 포트(현재 존재하는 실제 어드레스(RA) 캐시 스누핑 포트(120))를 사용하여 프리페치 스트림의 라인 액세스 결과가 캐시 "히트" 참인지 아닌지를 검사한다. 스누핑 판독 액세스는 (33 비트의) 실제 어드레스를 사용하여 데이터 캐시(118)를 액세스하고, 데이터 포트를 점유하지 않음으로써 프리페치(126) 스트림의 결과가 히트인지를 테스트하는데 사용된다. 그러므로 RCAM(96) 룩업 사이클을 RCAM 스누핑(102) 사이클로 변경함으로써, 캐시 제어장치(114)는 어떠한 EA 액세스도 차단할 필요가 없으며, 여전히 캐시(118)에 대한 RA 액세스를 사용하여 히트가 참인지 아닌지를 결정할 수 있다. 일례로서, 1 MEG 오프셋 EA 어드레스 때문에 ECAM(98)의 결과가 히트이고 RCAM(96)의 결과가 미스이며 그 후 RA 어드레스를 사용하는 RCAM(126)의 스누핑 액세스의 결과가 히트이면, 프리페치 스트림의 라인은 캐시 메모리 내에 위치하게 되고, 캐시 제어장치(114)는 이 동작을 강제로 중단시킨다. RCAM 스누핑(126) 사이클의 액세스 결과가 완전한 미스이면, 종래 기술(RCAM 룩업 사이클)의 정상 미스 시퀀스가 실행된다.
룩업 또는 프리페치가 시작되는 즉시, 캐시(118) 내의 ECAM(98) 필드 내에 포함된 유효 어드레스의 일부가 희망 유효 어드레스와 매치되지 않으며 여전히 희망 데이터가 캐시 내에 존재하게 되면, 이러한 상황을 "ECAM 미스"라고 한다. 이것은 2개의 서로 다른 유효 어드레스가 가상 어드레스인 "별도의 이름을 붙이는 것(aliasing)"으로 공지된 조건을 표시하는 동일한 실제 어드레스와 매칭될 수 있기 때문이다. 이러한 설계에서는, 부분 유효 어드레스를 사용하여 ECAM(98)을 액세스하며, 바람직한 부분배열 및 캠릿 내의 ECAM(98) 필드에 저장된 어떠한 데이터도 희망 부분 유효 어드레스와 매칭되지 않는다. 다시 한번 설명하면, RA 어드레스를 사용하는 RCAM(126)의 스누핑 액세스의 결과가 히트이면, 프리페치 스트림의 라인이 캐시 메모리 내에 위치하게 되고, 캐시 제어장치(114)는 이 동작을 강제 중단시킨다. RCAM 스누핑(126) 사이클의 액세스의 결과가 완전한 미스이면, 종래 기술(RCAM 룩업 사이클)의 정상 미스 시퀀스가 다시 한번 실행된다. 따라서 RCAM 스누핑(120) 판독 사이클을 사용하여, 제1 ECAM 액세스 포트(116) 및 제2 ECAM 포트(122)의 전체 대역폭을 사용하는 것은 대부분의 로드의 결과가 히트인 경우 속도를 가속화시킨다.
전술한 바를 참조하여, 당업자는 본 발명에서는 2개의 유효 어드레스(EA) 액세스 및 특수 RCAM 스누핑 액세스를 사용하여 데이터 캐시를 동시에 액세스함으로써 프리페치 성능을 증가시킬 수 있으며, 본 발명의 데이터 캐시 배열은 종래 기술에 공지된 세트 어소시어티브 캐시 디자인의 히트 비율을 높게 유지하면서, 전체적으로 연관된 캐시 설계에 비해 실질적으로 효과적일 수 있다는 것을 이해하게 될 것이다.
본 발명의 바람직한 실시예에 대하여 예시하고 기술하였지만, 당업자들은 본 발명의 원리와 범위를 벗어나지 않고 본 발명에 대하여 형식적으로 그리고 상세하게 다양한 변경을 행할 수 있다는 것을 이해해야 한다.
본 발명에서는 2개의 유효 어드레스(EA) 액세스 및 특수 RCAM 스누핑 액세스를 사용하여 데이터 캐시를 동시에 액세스함으로써 프리페치 성능을 증가시킬 수 있으며, 또한 본 발명의 데이터 캐시 배열은 종래 기술에 공지된 세트 어소시어티브 캐시 디자인의 히트 비율을 높게 유지하면서, 전체적으로 연관된 캐시 설계에 비해 실질적으로 효과적일 수 있다.

Claims (20)

  1. 메모리로부터 프리페치될 라인이 캐시 내에 존재하는 지의 여부를 결정하는 회로에 있어서,
    a) 내부 데이터 전송 시에 사용되지 않는 스누핑 포트를 구비하는 캐시;
    b) 상기 스누핑 포트가 사용가능한 지의 여부를 결정하는 제1 회로;
    c) 유효 사이클 동안 프리페치 어드레스를 상기 스누핑 포트에 인가하는 제2 회로;
    d) 상기 제2 회로에 응답하여 히트(hit) 또는 미스(miss) 신호를 전송하는 제3 회로; 및
    e) 상기 제3 회로에 의한 히트 신호에 응답하여 상기 보류 중인 프리페치를 중단하는 제4 회로
    를 포함하는 회로.
  2. 제1항에 있어서,
    상기 스누핑 포트가 RCAM 스누핑 포트인 회로.
  3. 제1항에 있어서,
    상기 프리페치 어드레스가 유효 어드레스의 일부이며, 상기 히트 또는 미스 신호를 전송하기 위해 ECAM 필드 내에서 일치를 얻기 위해 사용되는 회로.
  4. 제1항에 있어서,
    상기 제4 회로가 완전 미스에 응답하여 RCAM 룩업 사이클 정상(normal) 미스 시퀀스를 실행하는 회로.
  5. 제1항에 있어서,
    상기 스누핑 포트가 상기 캐시 내의 (33 비트의) 실제 어드레스 액세스 데이터를 사용하는 회로.
  6. 제1항에 있어서,
    상기 유효 사이클동안 2개의 유효 어드레스 포트가 동시에 사용될 수 있는 회로.
  7. 제1항에 있어서,
    상기 제3 회로가 히트 신호를 전송할 때, 데이터가 로드/저장 유닛으로 전송되는 회로.
  8. 제1항에 있어서,
    상기 유효 사이클동안 유효 어드레스 포트 및 실제 어드레스 포트가 동시에 사용될 수 있는 회로.
  9. 제1항에 있어서,
    상기 유효 사이클이 2개의 ECAM 액세스 포트의 전체 대역폭을 사용하는 RCAM 스누핑 판독 사이클인 회로.
  10. 메모리로부터 프리페치될 2개의 라인이 캐시 내에 존재하는 지의 여부를 결정하는 회로에 있어서,
    a) 내부 데이터 전송 시에 사용되지 않는 스누핑 포트를 구비하는 캐시;
    b) 상기 스누핑 포트가 사용가능한 지의 여부를 결정하는 제1 회로;
    c) 유효 사이클에서 프리페치 어드레스를 상기 스누핑 회로에 인가하는 제2 회로;
    d) 상기 제2 회로에 응답하여 2개의 라인 각각에 대하여 히트 또는 미스 신호를 전송하는 제3 회로; 및
    e) 상기 제3 회로에 의한 히트 신호에 응답하여 상기 캐시 내에 존재하는 것으로 판단된 상기 2개의 라인 중 하나의 라인에 대하여 상기 보류 중인 프리페치를 중단하는 제4 회로
    를 포함하는 회로.
  11. 제10항에 있어서,
    상기 스누핑 회로가 RCAM 스누핑 포트인 회로.
  12. 제10항에 있어서,
    상기 프리페치 어드레스가 유효 어드레스의 일부이며, 상기 히트 또는 미스 신호를 전송하기 위해 ECAM 필드 내에서 일치를 얻기 위해 사용되는 회로.
  13. 제10항에 있어서,
    상기 제4 회로가 상기 2개의 라인 중 하나의 라인에 대하여 완전 미스에 응답하여 RCAM 룩업 사이클 정상 미스 시퀀스를 실행하는 회로.
  14. 제10항에 있어서,
    상기 스누핑 포트가 상기 캐시 내의 (33 비트의) 실제 어드레스 액세스 데이터를 사용하는 회로.
  15. 제10항에 있어서,
    상기 유효 사이클동안 2개의 유효 어드레스 포트가 동시에 사용될 수 있는 회로.
  16. 제10항에 있어서,
    상기 제3 회로가 히트 신호를 전송할 때, 데이터가 상기 2개의 라인 중 하나의 라인으로부터 로드/저장 유닛으로 전송되는 회로.
  17. 제10항에 있어서,
    상기 유효 사이클동안 상기 2개의 라인 중 하나의 라인에 대하여 유효 어드레스 포트 및 실제 어드레스 포트가 동시에 사용될 수 있는 회로.
  18. 메모리로부터 프리페치될 라인이 캐시 내에 존재하는 지의 여부를 결정하는 방법에 있어서,
    a) RCAM 스누핑 포트가 사용가능한 지의 여부를 결정하는 단계;
    b) 유효 사이클동안 프리페치 어드레스를 상기 스누핑 포트에 인가하는 단계;
    c) 상기 프리페치 어드레스에 응답하여 히트 또는 미스 신호를 전송하는 단계; 및
    d) 히트 신호에 응답하여 상기 보류 중인 프리페치를 중단하는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    상기 유효 사이클동안 2개의 유효 어드레스 포트가 동시에 사용될 수 있는 회로.
  20. 제18항에 있어서,
    상기 유효 사이클동안 유효 어드레스 포트 및 실제 어드레스 포트가 동시에 사용될 수 있는 회로.
KR1019990006233A 1998-03-11 1999-02-25 스누핑 포트를 사용하는 프리페치 캐시 질의 방법 및 시스템 KR100326989B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/038,422 1998-03-11
US09/038,422 1998-03-11
US09/038,422 US6202128B1 (en) 1998-03-11 1998-03-11 Method and system for pre-fetch cache interrogation using snoop port

Publications (2)

Publication Number Publication Date
KR19990077471A true KR19990077471A (ko) 1999-10-25
KR100326989B1 KR100326989B1 (ko) 2002-03-04

Family

ID=21899861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990006233A KR100326989B1 (ko) 1998-03-11 1999-02-25 스누핑 포트를 사용하는 프리페치 캐시 질의 방법 및 시스템

Country Status (4)

Country Link
US (1) US6202128B1 (ko)
EP (1) EP0942376A1 (ko)
JP (1) JPH11328018A (ko)
KR (1) KR100326989B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477635B1 (en) * 1999-11-08 2002-11-05 International Business Machines Corporation Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing
US6640293B1 (en) * 2000-07-24 2003-10-28 International Business Machines Corporation Apparatus and method of utilizing Alias Hit signals to detect errors within the real address tag arrays
KR100518567B1 (ko) * 2003-04-15 2005-10-04 삼성전자주식회사 독출 동작과 기입 동작이 동시에 수행되는 메모리 셀어레이 구조를 가지는 집적 회로
US6990556B2 (en) * 2003-05-12 2006-01-24 International Business Machines Corporation System and method for simultaneous access of the same doubleword in cache storage
US7035986B2 (en) * 2003-05-12 2006-04-25 International Business Machines Corporation System and method for simultaneous access of the same line in cache storage
TWI227894B (en) * 2003-08-15 2005-02-11 Via Tech Inc A method for detecting flash card
US7734944B2 (en) * 2006-06-27 2010-06-08 International Business Machines Corporation Mechanism for windaging of a double rate driver
US7882322B2 (en) * 2006-06-27 2011-02-01 International Business Machines Corporation Early directory access of a double data rate elastic interface
US7783911B2 (en) * 2006-06-27 2010-08-24 International Business Machines Corporation Programmable bus driver launch delay/cycle delay to reduce elastic interface elasticity requirements
US7752475B2 (en) * 2006-06-27 2010-07-06 International Business Machines Corporation Late data launch for a double data rate elastic interface
US7739538B2 (en) * 2006-06-27 2010-06-15 International Business Machines Corporation Double data rate chaining for synchronous DDR interfaces
US20090106498A1 (en) * 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US8200905B2 (en) 2008-08-14 2012-06-12 International Business Machines Corporation Effective prefetching with multiple processors and threads
JP5833629B2 (ja) * 2010-04-06 2015-12-16 ジャストワン・データベース・インコーポレイテッドJustone Database,Inc. データベースモデル非依存、スキーマ非依存および作業負荷非依存のデータ記憶ならびにアクセスモデルに基づくデータ記憶および/または検索

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288940A (ja) 1988-05-16 1989-11-21 Nec Corp 論理アドレスキャッシュ制御方式
US5537640A (en) 1988-12-30 1996-07-16 Intel Corporation Asynchronous modular bus architecture with cache consistency
JPH03219345A (ja) * 1990-01-25 1991-09-26 Toshiba Corp 多ポートキャッシュメモリ制御装置
JPH03282948A (ja) 1990-03-30 1991-12-13 Nec Corp タグキャッシュ制御回路
JPH0485788A (ja) * 1990-07-27 1992-03-18 Toshiba Corp 多ポートキャッシュメモリ
US5426765A (en) 1991-08-30 1995-06-20 Compaq Computer Corporation Multiprocessor cache abitration
US5353424A (en) 1991-11-19 1994-10-04 Digital Equipment Corporation Fast tag compare and bank select in set associative cache
US5325503A (en) 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
US5696935A (en) 1992-07-16 1997-12-09 Intel Corporation Multiported cache and systems
US5557769A (en) 1994-06-17 1996-09-17 Advanced Micro Devices Mechanism and protocol for maintaining cache coherency within an integrated processor
US5640534A (en) 1994-10-05 1997-06-17 International Business Machines Corporation Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US5805855A (en) 1994-10-05 1998-09-08 International Business Machines Corporation Data cache array having multiple content addressable fields per cache line
EP0741356A1 (en) 1995-05-05 1996-11-06 Rockwell International Corporation Cache architecture and method of operation
US5761714A (en) * 1996-04-26 1998-06-02 International Business Machines Corporation Single-cycle multi-accessible interleaved cache
US5752260A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation High-speed, multiple-port, interleaved cache with arbitration of multiple access addresses
US5802567A (en) * 1996-10-31 1998-09-01 International Business Machines Corporation Mechanism for managing offset and aliasing conditions within a content-addressable memory-based cache memory
US5996061A (en) * 1997-06-25 1999-11-30 Sun Microsystems, Inc. Method for invalidating data identified by software compiler

Also Published As

Publication number Publication date
US6202128B1 (en) 2001-03-13
JPH11328018A (ja) 1999-11-30
EP0942376A1 (en) 1999-09-15
KR100326989B1 (ko) 2002-03-04

Similar Documents

Publication Publication Date Title
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
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
US5640534A (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
EP0470734B1 (en) Cache memory management system
US5813031A (en) Caching tag for a large scale cache computer memory system
US5509135A (en) Multi-index multi-way set-associative cache
US6640283B2 (en) Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
US5418927A (en) I/O cache controller containing a buffer memory partitioned into lines accessible by corresponding I/O devices and a directory to track the lines
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US5668972A (en) Method and system for efficient miss sequence cache line allocation utilizing an allocation control cell state to enable a selected match line
US5805855A (en) Data cache array having multiple content addressable fields per cache line
JPH0347540B2 (ko)
KR100326989B1 (ko) 스누핑 포트를 사용하는 프리페치 캐시 질의 방법 및 시스템
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
EP0470739B1 (en) Method for managing a cache memory system
US6311253B1 (en) Methods for caching cache tags
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
EP0706132A2 (en) Method and system for miss sequence handling in a data cache array having multiple content addressable fields per cache line
US7949833B1 (en) Transparent level 2 cache controller
EP0470736B1 (en) Cache memory system
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
EP0474356A1 (en) Cache memory and operating method
EP0470735B1 (en) Computer memory system
US20240054073A1 (en) Circuitry and Method
US6493792B1 (en) Mechanism for broadside reads of CAM structures

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: 20080204

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee