KR100327935B1 - 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴 - Google Patents

연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴 Download PDF

Info

Publication number
KR100327935B1
KR100327935B1 KR1019990005171A KR19990005171A KR100327935B1 KR 100327935 B1 KR100327935 B1 KR 100327935B1 KR 1019990005171 A KR1019990005171 A KR 1019990005171A KR 19990005171 A KR19990005171 A KR 19990005171A KR 100327935 B1 KR100327935 B1 KR 100327935B1
Authority
KR
South Korea
Prior art keywords
cache
address
cache directory
directory
group
Prior art date
Application number
KR1019990005171A
Other languages
English (en)
Other versions
KR19990077432A (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 KR19990077432A publication Critical patent/KR19990077432A/ko
Application granted granted Critical
Publication of KR100327935B1 publication Critical patent/KR100327935B1/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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/601Reconfiguration of cache memory

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

크리티컬 어드레스 경로내의 멀티플렉싱을 피하기 위해, 동일한 어드레스 필드가 캐시 메모리 크기와 무관하게 인덱스로서 캐시 디렉토리 및 캐시 메모리에 이용된다. 캐시 메모리 크기의 증가는 상기 캐시 디렉토리 및 상기 메모리내의 연관성(associativity)을 증가시킴으로써, 예를 들면, 2개의 부재에서 4개의 부재로 합동 클래스(congruence class)를 증가시킴으로써 지원된다. 보다 큰 캐시 크기인 경우, 부수적인 어드레스 '인덱스' 비트는 로직 '1'로 된 비트에 비교하여 상기 캐시 디렉토리 또는 상기 캐시 메모리 행내의 다중 그룹의 어드레스 태그/데이터 항목중 한 그룹을 선택하는데 이용된다.

Description

연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴{HIGH PERFORMANCE CACHE DIRECTORY ADDRESSING SCHEME FOR VARIABLE CACHE SIZES UTILIZING ASSOCIATIVITY}
본 발명은 일반적으로 데이터 처리 시스템에서 업그레이드 가능한 캐시에 관한 것으로, 특히, 업그레이드 가능한 캐시용 캐시 디렉토리 어드레싱 스킴에 관한 것이다. 보다 상세하게는, 본 발명은 데이터 처리 시스템에서 업그레이드 가능한 캐시에 대한 크리티컬 어드레스 경로의 지연을 감소시키는 캐시 디렉토리 어드레싱 스킴에 관한 것이다.
현대의 데이터 처리 시스템은 일반적으로 감소된 액세스 대기 시간(latency)으로 시스템 메모리로부터 프로세서에 데이터를 스테이징(staging)하기 위한 업그레이드 가능한 캐시를 이용한다. 예를 들면, 데이터 처리 시스템은 512KB로 업그레이드 가능한 256KB, 또는 4MB로 업그레이드 가능한 2MB 캐시를 구비한 채 판매될 수 있다. 이 때, 업그레이드 가능한 캐시는 데이터 처리 시스템을 구매하는 사용자를 위하여 성능당 다른 가격대를 제공한다. 다수의 캐시 크기에 대해 공통 디렉토리가 지원되게 하기 위하여, 종래의 시스템은 일반적으로 업그레이드할 때 섹터 크기를 증가시킨다. 따라서, 이러한 캐시 업그레이드는 전형적으로 캐시 크기에 따라 다른 캐시 디렉토리 어드레싱 스킴이 선택됨으로써 데이터 처리 시스템에 지원된다. 서로 다른 캐시 디렉토리 어드레싱 스킴은 서로 다른 캐시 라인 길이에 의존하며, 캐시 라인을 선택하고 캐시내(intra-cache) 라인 어드레스 및/또는 어드레스 태그로서 역할을 하는 다른 어드레스 비트를 이용할 수 있다. 데이터 처리 시스템에서 업그레이드 가능한 캐시를 지원하는데 현재 이용되는 유형의 전형적인 캐시 디렉토리 어드레싱 스킴이 도 3에 도시되어 있다.
도 3은 1MB에서 2MB로 업그레이드 가능한 2-웨이 세트 연관 캐시를 이용하는 32비트 데이터 처리 시스템의 캐시 디렉토리 어드레싱 스킴을 도시한다. 1MB 캐시 디렉토리 어드레싱 구성은 64 바이트 캐시 라인을 이용한다. 캐시 라인은 코히어런시 상태(coherency state)가 나타나는 메모리 블록이며, 또한 캐시 블록이라고도 한다. 1MB 캐시를 어드레싱할 때, 어드레스의 비트 26-31(6비트)은 캐시간 라인 어드레스를 지정하며, 어드레스의 비트 13-25(13비트)는 인덱스로서 캐시 디렉토리 및 캐시 메모리의 한 세트의 2 캐시 라인에 이용되고, 어드레스의 비트 0-12(13비트)는 캐시 라인 어드레스 태그로서 이용되어 한 세트의 2 캐시 라인내의 특정 캐시 라인을 식별한다. 인덱스 필드는 한 세트의 2 캐시 라인을 포함한 캐시 디렉토리 및 메모리내에 행 또는 합동 클래스(congruence class)를 지정하며, 어드레스 태그 필드는 지정된 합동 클래스의 부재(즉, 한 세트의 2 캐시 라인내의 특정 캐시 라인)를 식별하고, 캐시간 라인 어드레스 필드는 특정 바이트가 식별된 합동 클래스 부재(캐시 라인)로부터 선택되게 한다.
2MB 캐시 디렉토리 어드레싱 구성은, 어드레스의 비트 25-31(7비트)이 캐시간 라인 어드레스를 결정하며, 어드레스의 비트 12-24(13비트)는 인덱스로서 캐시 디렉토리 및 캐시에 이용되고, 어드레스의 비트 0-11(12비트)은 캐시 라인 어드레스 태그로서 이용되는 128 바이트 캐시 라인을 이용한다. 64 바이트 캐시 라인의 본래 시스템에서 동작하도록, 128 바이트 캐시 라인은 2개의 64 바이트 캐시 라인으로서 섹터화된다. 따라서, 캐시 메모리 크기를 업그레이드할 때, 인덱스 필드는 보다 큰 캐시 라인내의 캐시간 라인 어드레싱에 유용한 비트수를 증가시키기 위해 아래로 시프트된다.
상술된 유형의 선택 가능한 캐시 디렉토리 어드레싱 시스템을 구현하는 방법이 갖는 한가지 문제점은, 현재 위치의 캐시 메모리의 크기에 따라 인덱스 필드로서 역할하는 서로 다른 어드레스 비트의 선택이 필요하게 된다는 것이다. 전형적으로, 멀티플렉서(302)는, 13개의 어드레스 비트, [7-25] 또는 [6-24]가 특정 세트의 4 캐시 라인을 선택하기 위한 인덱스로서 이용될 캐시 디렉토리 및 메모리에 전달되는 것을 선택하는데 이용된다. 그러나, 멀티플렉서(302)는 캐시 디렉토리(308)의 어드레스로부터 인덱스 필드를 얻을시의 지연을 도입하여 어드레스를 검색하기 시작한다. 캐시 메모리(306)의 액세스 역시 중요한데, 이는 인덱스된 캐시 라인 검색시 멀티플렉서(302)에 의해 지연이 유사하게 도입되기 때문이다.
일반적으로, 3개의 크리티컬 경로는 도 3에 도시된 메카니즘, 즉 어드레스 버스 입력 Add[13-25] 또는 Add[12-24]로부터 캐시 메모리(306)를 거쳐 캐시 데이터 출력부(304)까지, 어드레스 버스 입력부로부터 캐시 디렉토리(308)를 거쳐 캐시 데이터 출력부(304)까지, 및 어드레스 버스 입력부로부터 비교기(310)의 출력 HIT_A 및 HIT_B에서의 다른 로직(예를 들면, 희생 선택(victim selection)을 위하거나 또는 재시행 신호를 구동시키기 위한 로직)내에서 식별될 수 있다. 이들 크리티컬 경로들의 각각은 멀티플렉서(302) 및 부수적인 지연과 공간 전제 조건을 포함한다. 더욱이, 캐시 디렉토리(308) 및 비교기(310) 간의 멀티플렉서(312)는, 어드레스 라인 [12]이 어드레스 태그 [12] 또는 그 자체에 비교되는지의 여부를 결정하는데 필요하게 된다. 이들 멀티플렉서의 전제 조건은 캐시내의 프로세서 측 어드레스 흐름 및 스눕(snoop) 측 어드레스 흐름 모두에 대해 필요하다. 적절한 인덱스 필드를 선택하는 어드레스 버스 라인의 멀티플렉싱은 또한 어드레스를 로드하기 위한 큐(queue) 및 파이프라인 충돌 검출을 어드레스하는 어드레스 흐름에 요구된다. 따라서, 데이터 처리 시스템에서 업그레이드 가능한 캐시 메모리를 이용하는 것은 업그레이드될 수 없는 캐시 메모리 전반에 걸쳐 성능 장애를 초래한다.
따라서, 크리티컬 어드레스 경로에서의 임의의 추가 게이트 지연을 포함하지 않는 가변 캐시 크기에 대한 캐시 디렉토리 어드레싱 스킴을 제공하는 것이 바람직하다. 이는, 만약 이용되는 캐시 디렉토리 어드레싱 스킴이 이용되는 캐시 메모리의 크기에 따라 비교될 다른 크기의 어드레스 태그를 필요로 하지 않으면 더욱 유리할 것이다.
따라서, 본 발명의 목적은 데이터 처리 시스템에 사용하기 위한 개선된 업그레이드 가능한 캐시를 제공하는 것이다.
본 발명의 다른 목적은 업그레이드 가능한 캐시에 대한 개선된 캐시 디렉토리 어드레싱 스킴을 제공하는 것이다.
본 발명의 또 다른 목적은 데이터 처리 시스템에서 업그레이드 가능한 캐시에 대한 크리티컬 어드레스 경로의 지연을 감소시키는 캐시 디렉토리 어드레싱 스킴을 제공하는 것이다.
본 발명의 또 다른 목적은 캐시를 업그레이드할 때 많은 연관성(associativity)을 통해 시스템 성능을 더욱 개선하는 것이다.
상기 목적들은 다음과 같이 달성된다. 크리티컬 어드레스 경로내의 멀티플렉스를 피하기 위해, 동일한 어드레스 필드는 캐시 메모리 크기와 무관하게 인덱스로서 캐시 디렉토리 및 캐시 메모리에 이용된다. 캐시 메모리 크기의 증가는 캐시 디렉토리 및 메모리내의 연관성을 증가시킴으로써, 예를 들면, 2개의 부재에서 4개의 부재로 합동 클래스를 증가시킴으로써 지원된다. 보다 작은 캐시 크기인 경우, 추가 어드레스 '인덱스' 비트는 논리 1로 강요된 비트와 비교하여 캐시 디렉토리 또는 캐시 메모리 행내의 다중 그룹의 어드레스 태그/데이터 항목중 한 그룹을 선택하는데 이용된다.
본 발명의 상기 뿐만 아니라, 부수적인 목적, 특징, 및 장점이 다음의 상세한 설명에서 명백해질 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 멀티프로세서 데이터 처리 시스템을 도시한 도면.
도 2a는 본 발명의 바람직한 실시예에 따른 공통 캐시 디렉토리 어드레싱 스킴에 대한 캐시 구성을 도시한 도면.
도 2b는 본 발명의 바람직한 실시예에 따른 공통 캐시 디렉토리 어드레싱 스킴의 대체적인 실시예를 나타내는 도면.
도 3은 종래의 캐시 디렉토리 어드레싱 스킴을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
102, 104 : 프로세서
114, 116 : L2 캐시
118, 119 : L3 캐시
120 : 시스템 메모리
124 : 메모리-맵 장치
126 : I/O 버스 브릿지
130 : I/O 장치
132 : 불휘발성 메모리
본 발명의 새로운 특징이 첨부된 청구범위에 기술되어 있다. 그러나, 바람직한 기능의 용도, 다른 목적 및 장점뿐 아니라, 발명 그 자체가 첨부한 도면과 관련하여 기술한 실시예에 대한 다음의 상세한 설명을 참조하면 가장 잘 이해될 것이다.
지금부터 도면, 특히 도 1을 참조하면, 본 발명의 바람직한 실시예에 따른멀티프로세서 데이터 처리 시스템이 도시되어 있다. 데이터 처리 시스템(100)은, 바람직하게 뉴욕, Armonk의 IBM으로부터 유용한 PowerPCTM군의 프로세서중 하나를 구비하는 복수의 프로세서(102 및 104)를 포함하는 대칭 멀티프로세서(symmetric multiprocessor: SMP) 시스템이다. 두개의 프로세서만이 예시적인 실시예에 도시되어 있지만, 기술 분야의 당업자는, 부수적인 프로세서가 본 발명에 따른 멀티프로세서 데이터 처리 시스템에 이용될 수 있다는 것을 알 것이다.
각각의 프로세서(102 및 104)는 레벨 1(L1) 데이터 캐시(106 및 108), 및 L1 명령 캐시(110 및 112)를 각각 포함한다. 예시적인 실시예에서 분기된 명령 및 데이터 캐시로서 기술되어 있지만, 기술 분야의 당업자는 하나의 단일화된 L1 캐시가 구현될 수 있다는 것을 알 것이다. 데이터 액세스 대기 시간을 최소화하기 위해, 캐시 메모리의 하나 이상의 추가 레벨은 레벨 2(L2) 캐시(114 및 116) 및 레벨 3(L3) 캐시(118 및 119)와 같이, 데이터 처리 시스템(100)내에 구현될 수 있다. 하부 캐시 레벨 '­' L2 및 L3 '­'은 데이터를 L1 캐시에 스테이지하는데 이용되고, 전형적으로 점차 더 큰 기억 용량을 갖지만 더 긴 액세스 대기 시간을 갖는다. 예를 들면, 데이터 캐시(106 및 108) 및 명령 캐시(110 및 112)는 각각 32KB의 기억 용량 및 약 1-2 프로세서 사이클의 액세스 대기 시간을 가질 수 있다. L2 캐시(114 및 116)는 512KB의 기억 용량을 갖지만 5 프로세서 사이클의 액세스 대기 시간을 갖는 한편, L3 캐시(118 및 119)는 4MB의 기억 용량을 갖지만 15 프로세서 사이클 이상의 액세스 대기 시간을 가질 수 있다. 따라서, L2 캐시(114 및 116)및 L3 캐시(118 및 119)는 프로세서(102 및 104) 및 시스템 메모리(120) 간의 중간 기억부로서 역할을 하며, 전형적으로 훨씬 큰 기억 용량을 갖지만 50 프로세서 사이클 이상의 액세스 대기 시간을 가질 수 있다.
데이터 처리 시스템(100)에 이용되는 캐시 계층의 레벨수 및 캐시 계층 구성 모두는 변할 수 있다. 도시된 예에서 L2 캐시(114 및 116)는 각각의 프로세서(102 및 104) 및 시스템 메모리(120)(시스템 버스(122)를 거쳐) 간에 접속되는 전용 캐시이다. L3 캐시(118 및 119)는 L2 캐시(114 및 116)와 논리적으로 수직인 룩어사이드 캐시(Lookaside caches)로서 도시되어 있다. 그 결과, 데이터 또는 명령은 L2 캐시(114 또는 116)중 하나 및 L3 캐시(118 및 119)중 하나에서 동시에 검색되지만, 각각의 L2 캐시(114 또는 116)가 미스(miss)한 반면 L3 캐시(118 또는 119)가 히트(hit)하는 경우에는, 데이터 또는 명령은 단지 L3 캐시(118 또는 119)로부터 검색될 것이다. 기술 분야의 당업자는, 도시된 다양한 순열의 레벨 및 구성이 구현될 수 있다는 것을 알 것이다.
L2 캐시(114 및 116) 및 L3 캐시(118 및 119)는 시스템 버스(122)를 거쳐 시스템 메모리(120)에 접속된다. 또한, 시스템 버스(122)에 접속되는 것은 디스플레이용 접속(도시되지 않음)을 제공하는 그래픽 어댑터, 및 입력/출력 (I/O) 버스 브릿지(126)와 함께, 메모리 맵 장치(124)일 수 있다. I/O 버스 브릿지(126)는 시스템 버스(122)를 I/O 장치(130) 및 비휘발성 메모리(132)로 접속시킬 수 있는 I/O 버스(128)에 결합된다. 따라서, 시스템 버스(122), I/O 버스 브릿지(126), 및 I/O 버스(128)는 부착된 장치를 결합시키는 상호접속부를 형성하며, 데이터 또는 명령은 L2 캐시(114 또는 116)중 하나 및 L3 캐시(118 및 119)중 하나에서 동시에 검색될 수 있다. I/O 장치(130)는 키보드, 마우스 또는 트랙볼과 같은 그래픽 지시 장치, 디스플레이부 및 프린터를 포함하는 종래의 주변 장치를 포함할 수 있으며, 종래의 어댑터를 거쳐 I/O 버스(128)에 인터페이스된다. 비휘발성 메모리(132)는 하드 디스크 드라이브를 포함할 수 있고 전력온되는 시스템에 응답하여 휘발성 시스템 메모리(120)로 로드되는 시스템(100)의 운영 체제 및 다른 소프트웨어 제어 동작을 저장한다. 본 기술 분야의 당업자는, 데이터 처리 시스템(100)이 직렬 및 병렬 포트, 네트워크 또는 부착 장치에의 접속부, 시스템 메모리(120)에의 액세스를 조정하는 메모리 제어기 등과 같이, 도 1에 도시되지 않은 많은 부수적인 구성요소를 포함할 수 있다는 것을 알 것이다. 이러한 변형 및 변화는 본 발명의 사상 및 범위내에 포함된다.
시스템 버스(122)를 통한 전형적인 통신 트랜잭션은 트랜잭션의 소오스를 가리키는 소오스 태그, 및 어드레스 및/또는 데이터를 포함한다. 시스템 버스(122)에 접속된 각각의 장치는 바람직하게는 시스템 버스(122)상의 모든 통신 트랜잭션을 스눕(snoop)하며, 필요시에는 다른 수용를 위한 통신 트랜잭션에 개입하고, 가능하고 적절할 때에는 장치내에 복제된 시스템 메모리 데이터를 변화시킨다.
도 2a를 참조하면, 본 발명의 바람직한 실시예에 따른 공통 캐시 디렉토리 어드레싱 스킴에 대한 캐시 구성의 도면이 도시되어 있다. 도시된 캐시 디렉토리 및 메모리 구성은 도 1에 도시된 업그레이드 가능한 임의의 캐시에 이용되며, L2 캐시(114 및 116) 및 L3 캐시(118 및 119)를 포함할 수 있다. 기술된 캐시 디렉토리 어드레싱 스킴의 예시적인 실시예는 1MB에서 2MB로 업그레이드 가능한 2-웨이 세트 연관 캐시에 관한 것이다. 그러나, 본 발명의 공통 캐시 디렉토리 어드레싱 스킴은 적절한 변형으로 데이터 처리 시스템 기억 계층의 임의의 레벨에서 임의의 연관량을 이용하는 임의의 크기 캐시에 구현될 수 있다.
도 2a에 도시된 1MB, 2-웨이 세트 연관 캐시에 대한 캐시 디렉토리 어드레싱 스킴은, 이하에 보다 상세히 기술되듯이, 어드레스의 비트 26-31(6비트)가 캐시간 라인 어드레스를 결정하며, 어드레스의 비트 13-24(12비트)가 캐시 디렉토리 및 캐시 메모리의 행에 인덱스로서 역할하며, 어드레스의 비트 0-12(13비트)가 어드레스 태그로서 이용되고, 비트 25가 캐시 메모리 및 디렉토리 내의 동일한 행으로부터 한 세트의 캐시 라인 및 그 대응하는 어드레스 태그를 선택하는데 사용되는 64 바이트 캐시 라인을 이용한다. 도 2a에 도시된 2MB, 2-웨이 세트 연관 캐시에 대한 캐시 디렉토리 어드레싱 스킴은 어드레스의 비트 25-31(7비트)이 캐시간 라인 어드레스를 결정하며, 어드레스의 비트 13-24(12비트)가 캐시 디렉토리 및 캐시 메모리의 행에 인덱스로서 역할하며, 어드레스의 비트 0-11(12비트)이 어드레스 태그로서 이용되고, 비트 12가 캐시 메모리 및 디렉토리 내의 동일한 행으로부터 한 세트의 캐시 라인 및 그 대응하는 어드레스 태그를 선택하는 128 바이트 캐시 라인을 이용한다.
캐시 디렉토리(202)내의 어드레스 태그 TAG_A 및 TAG_B는 캐시 메모리(204)내의 데이터 DATA_A 및 DATA_B에 대응하기 위한 어드레스의 어드레스 태그 필드를 포함한다. 어드레스의 인덱스 필드에 대응하는 어드레스 버스 입력 ADD[13-24]는 인덱스로서 캐시 디렉토리(202) 및 캐시 메모리(204)에 이용된다. 이 인덱스 필드는 캐시 디렉토리(202) 및 캐시 메모리(204)로부터 2 그룹의 어드레스 태그 및 캐시 라인을 선택하는데 이용되며, 각각의 그룹은 예시적인 실시예에서 2개의 어드레스 태그 및 2개의 캐시 라인을 포함한다. 이용되는 캐시의 크기에 따라, 어드레스 버스 입력 Add[25] 또는 Add[12]는 또한 캐시 디렉토리(202) 및 캐시 메모리(204)로부터 1 그룹의 어드레스 태그/캐시 라인을 선택하는데 이용된다. 어드레스 버스 입력 Add[25] 또는 Add[12]는 캐시 디렉토리(202) 및 캐시 메모리(204)에 의해 이용되어 어드레스의 인덱스 필드, Add[13-24]에 근거하여 선택된 2 그룹의 어드레스 태그/캐시 라인중 하나의 그룹을 선택한다. 그러나, 이 메카니즘은 캐시 디렉토리(202) 및 캐시 메모리(204) 내에서 멀티플렉스하는 최종 단계에서 공지된 기술에 따른 '레이트 선택(late select)'으로서 구현될 수 있다. 따라서, Add[25] 및 Add[12]로부터 하나의 어드레스 버스 입력을 선택하는데 요구되는 멀티플렉싱 기능부(206)는 인덱스 필드에 근거하여 캐시 디렉토리 및 메모리 액세스와 병행하여 진행할 수 있다. Add[25] 및 Add[12]의 레이트 선택 메카니즘은, 캐시 디렉토리(202)로부터의 TAG_A 및 TAG_B 를 비교기(202)로 보내는 데에 또는 어드레스의 제공 후에 캐시 메모리(204)로부터의 DATA_A 및 DATA_B 를 보내는 데에 요구되는 지연을 증가시키지 않을 것이다.
캐시 디렉토리(202)로부터 선택된 어드레스 태그 TAG_A 및 TAG_B는 제공된 어드레스의 어드레스 태그 필드와 비교하기 위하여 비교기(208)에 전달된다. 선택된 캐시 디렉토리 엔트리내의 TAG_A 및 TAG_B는, 대응하는 HIT_A 또는 HIT_B 신호의 어써션(assertion)에 의한 매치로 제공된 어드레스의 어드레스 태그 필드와 동시에 비교된다. 보다 작은 1MB 캐시 메모리가 이용될 때, 어드레스 태그 필드는 비트 [0-12]를 포함한다. 그러나, 보다 큰 2MB 캐시 메모리가 이용될 때, 어드레스 태그 필드는 비트 [0-11]만을 포함한다. 따라서, 로직 게이트(212)는, 제공된 어드레스의 비트 [12]가 어드레스 태그 TAG_A 및 TAG_B의 비트 [12] 또는 로직 '1'에 비교되는지를 제어하기 위해 제공된다. 2MB 캐시 메모리가 이용될 때, 캐시 디렉토리(202)에 저장된 어드레스 태그의 비트 [12]는 항상 로직 '1'로 기록된다. 1MB_모드 제어 신호가 어써트될 때(1MB 캐시 메모리가 이용될 때), 로직 게이트(212)는 TAG_A 및 TAG_B의 비트 [12]에 비교하기 위하여 제공된 어드레스의 비트 [12]를 비교기에 전달한다. 그러나, 2MB 캐시 메모리가 이용될 때, 로직 게이트(212)는 항상 로직 '1'로 기록되는 TAG_A 및 TAG_B의 비트 [12]에 비교하기 위하여, 제공된 어드레스의 비트 [12]로서 로직 '1'을 비교기(208)에 전달한다. 이는, 가변 크기의 어드레스 태그 필드가 캐시 디렉토리(202) 및 비교기(208) 간에 멀티플렉서를 필요로 하지 않고 이용되도록 한다. 로직 게이트(212)는 캐시 디렉토리(202)의 액세스와 병행하여 연산하므로, 크리티컬 어드레스 경로에 임의의 대기 시간을 부가하지 않는다.
인덱스 필드 Add[13-24] 및 레이트 선택 Add[25] 또는 Add[12]는 캐시 디렉토리(202)에 의해 이용되는 동일한 방식으로, 캐시 메모리(204)에 의해 역시 이용되어, 어드레스 태그 TAG_A 및 TAG_B에 대응하는 캐시 라인 DATA_A 및 DATA_B를 각각 선택한다. 비교기 출력 신호 HIT_A 및 HIT_B는 멀티플렉서(210)에 의해 이용되어, 공지된 기술에 따른 캐시 출력으로서 2개의 캐시 라인 DATA_A 및 DATA_B중 하나를 선택한다. 또한, 신호 HIT_A 및 HIT_B는 희생 선택 로직과 같은 다른 타이밍-크리티컬 로직 및 '재시행', '공유' 등과 같은 스눕 응답을 구동하기 위한 로직에 의해 이용될 수 있다.
예시적인 실시예가 2 웨이 세트 연관 캐시 스킴을 포함하지만, 4 웨이 세트 연관 스킴과 같은 다른 변화가 가능하다. 이러한 실시예에서, 인덱스 필드는, 각 그룹이 4개의 어드레스 태그 또는 캐시 라인을 포함하는 4 그룹의 어드레스 태그/캐시 라인(합동 클래스)을 선택하는데 이용될 수 있다. 어드레스의 두 비트는 레이트 선택으로서 이용되어, 캐시 디렉토리의 출력시 한 그룹의 4 어드레스 태그 및 캐시 라인을 비교기에 전달하고 캐시 메모리의 출력시 멀티플렉서에 전달할 수 있다.
도 2b를 참조하면, 본 발명의 바람직한 실시예에 따른 공통 캐시 디렉토리 어드레싱 스킴에 대한 대체적인 캐시 구성의 도면이 도시되어 있다. 또한, 이 캐시 디렉토리 및 메모리 구성은 도 1에 도시된 업그레이드 가능한 임의의 캐시에 이용되며, L2 캐시(114 및 116) 및 L3 캐시(118 및 119)를 포함할 수 있다. 대체적인 캐시 디렉토리 어드레싱 스킴의 예시적인 실시예는 4-웨이 세트 연관, 2MB 캐시로 업그레이드 가능한 2-웨이 세트 연관, 1MB 캐시에 관한 것이다. 그러나, 본 발명의 대체적인 공통 캐시 디렉토리 어드레싱 스킴은 적절한 변형으로 데이터 처리 시스템 기억 계층의 임의의 레벨에서 임의의 크기 캐시에 구현될 수 있다.
대체적인 실시예에서, 캐시 디렉토리(222)내의 행(합동 클래스)은 1MB 연산 동안에 2세트의 2 어드레스 태그로서 논리적으로 취급되는 4 어드레스 태그,TAG_A, TAG_B, TAG_C 및 TAG_D를 포함한다. 캐시 메모리(224)내의 행은 유사하게 1MB 연산 동안에 2세트의 2 캐시 라인으로서 논리적으로 취급되는 4 대응 캐시 라인, DATA_A, DATA_B, DATA_C 및 DATA_D를 포함한다. 제공된 어드레스로부터의 인덱스 필드, Add[13-24]는 캐시 디렉토리(222) 및 캐시 메모리(224)내의 행을 선택하는데 이용된다. 캐시 디렉토리(222)의 선택된 행내의 어드레스 태그는 제공된 어드레스의 어드레스 태그 필드, Add[0-12]와 비교하기 위하여 비교기(226)에 전달된다. 캐시 메모리(224)의 선택된 행내의 캐시 라인은 멀티플렉서(228)에 유사하게 전달된다.
캐시 디렉토리(222)의 선택된 행내의 어드레스 태그 TAG_A, TAG_B, TAG_C, 및 TAG_D의 13비트는 제공된 어드레스의 어드레스 태그 필드의 13비트, Add[0-12]에 비교기(226)에 의해 비교된다. 그러나, 비교기(226)는 또한 14비트를 로직 '1'에 비교한다.
상술된 바와 같이, 1MB 연산 동안에, 선택된 캐시 디렉토리 행내의 4 어드레스 태그는 2세트의 2 어드레스 태그로서 논리적으로 취급되며, 2 웨이 세트 연관을 효과적으로 구현한다. 비교기(226)에 의한 14비트의 비교로 2세트중 한세트가 선택된다. 1MB 캐시 메모리가 이용될 때(신호 1MB_모드가 어써트됨), 제공된 어드레스의 인덱스 필드내의 레이트 선택 Add[25]는 어드레스 태그의 세트들중 하나를 선택하는데 이용된다. 로직 게이트(230a 및 230b)는 Add[25]를 반전하는 한편, 로직 게이트(230c 및 230d)는 Add[25]의 상태를 단순히 전달한다. (로직 게이트(230a 내지 230d)에의 다른 입력, 반전된 1MB_모드 신호는 1MB 캐시가 이용될 때 항상 비어써트될 것임). 따라서, 로직 게이트(230a 내지 230d)는 Add[25] 및 그 보수가 동시에 비교기(226)에 의해 로직 '1'에 비교되게 한다. 한 쌍의 어드레스 태그, TAG_A 및 TAG_B, 또는 TAG_C 및 TAG_D만이 Add[25]의 상태에 따라 비교기(226)에 의해 매치가 가능해질 수 있다. 따라서, Add[25]는 한 그룹의 어드레스 태그를 선택하고 비교기(226)에서 다른 그룹(또는 그룹들)을 나타내는 효과를 갖는다. 기본적으로, 이 메카니즘은 2-웨이 세트 연관으로서 디렉토리 및 캐시를 취급한다. 비교기(226)의 출력, 신호 HIT_A, HIT_B, HIT_C 및 HIT_D는 멀티플렉서(228)에 의해 이용되어, 캐시 데이터 출력으로서 선택된 행으로부터 캐시 라인을 선택한다. 비교기(226)의 출력 신호는 상술된 다른 로직에 의해 역시 이용될 수 있다.
기술된 대체적인 실시예에서 2MB 캐시 메모리가 이용될 때, 1MB_모드 신호는 어써트되는 것이 아니라, (로직 '1')로 반전되고, 14비트(또한 로직 '1')로서 비교하기 위해 로직 게이트(230a 내지 230d)에 의해 비교기(226)에 전달된다. 따라서, 선택된 캐시 디렉토리 행내의 모든 4개의 어드레스 태그 TAG_A, TAG_B, TAG_C 및 TAG_D는 제공된 어드레스의 어드레스 태그 필드와 매치될 수 있다. 캐시 라인 크기의 증가 이외에도, 업그레이드는 또한 연관을 4 웨이 세트 연관으로 증가시킨다. 비교기(226)의 출력 신호는 멀티플렉서(228)에 의해 이용되어, 캐시 메모리(224)의 선택된 행내의 캐시 라인을 선택한다.
도 2b에 도시된 예시적인 실시예가 2 그룹의 2 어드레스 태그(2 웨이 세트 연관) 및 한 그룹의 4 어드레스 태그(4 웨이 세트 연관)에 관한 것이지만, 본 발명은 다른 구성에 이용될 수 있다. 예를 들면, 대체적인 실시예는 4개 세트의 4 어드레스 태그(4 웨이 세트 연관) 및 2 세트의 8 어드레스 태그(8 웨이 세트 연관)로서 구현될 수 있다.
본 발명은 크리티컬 어드레스-대-디렉토리 및 어드레스-대-캐시 어드레스 경로로부터 어드레스 버스 입력의 멀티플렉싱을 제거한다. 부수적으로, 디렉토리의 크리티컬 출력(어드레스 태그)은 멀티플렉싱을 필요로 하지 않고 비교기에 직접 전달된다. 이는 레이트 선택을 거쳐 '히트' 로직 및 캐시 데이터 경로를 가속화한다. 대체적인 실시예를 업그레이드함으로써 실현되는 증가된 연관성은, 로딩을 위한 큐 및 스눕 충돌 비교의 어드레스 흐름으로부터 멀티플렉스를 제거하듯이, 전체 성능을 개선한다.
본 발명에서, 어드레스로부터의 동일한 필드는 캐시 메모리의 크기와 무관하게 캐시 디렉토리 및 메모리 행을 인덱스하는데 이용된다. 동일한 세트의 비트는, 캐시, 예를 들면, 1MB 또는 2MB인지와 무관하게 합동 클래스를 선택하는데 이용된다. 이는 멀티플렉싱에 대한 필요성, 및 어드레스의 인덱스 필드에 의해 디렉토리 및 캐시 액세스 기능에 도달하는 크리티컬 어드레스 경로내의 관련된 지연을 제거한다. 캐시 디렉토리 및 메모리내의 합동 클래스(또는 행)는, 각 그룹이 다중 어드레스 태그 또는 캐시 라인을 포함하는 다중 그룹으로서 논리적으로 취급된다. 하나의 그룹은 캐시 메모리 크기에 따라 선택된 어드레스 비트에 근거한 특정 합동 클래스로부터 선택된다. 그러나, 이 선택은 디렉토리 및 캐시 액세스와 병행하여 수행될 수 있고 대기 시간을 증가시키지 않는다. 선택된 그룹의 어드레스 태그의 부재는 어드레스로부터의 어드레스 태그 필드와 병행하여 비교되며, 대응하는 그룹의 캐시 라인에서 적절한 캐시 라인을 선택하게 한다. 동일한 수의 비트가 캐시 메모리의 크기와 무관하게 어드레스 태그를 어드레스 태그 필드에 비교하는데 이용된다. 이는 비교 과정에 요구되는 로직량을 감소시킨다.
동일한 연관성(즉, 그룹당 동일한 수의 어드레스 태그 또는 캐시 라인을 갖는 행당 동일한 수의 그룹)은 어드레스되는 캐시 메모리 크기에 이용될 수 있거나, 또는 이용되는 캐시 메모리의 크기에 따라 다른 연관성이 이용될 수 있다. 캐시 메모리의 크기가 이용된다. 따라서, 예를 들면, 2-웨이/4-웨이 세트 연관 구성은 1MB/2MB 캐시 메모리에 이용될 수 있는 한편, 4-웨이/8-웨이 세트 연관 구성은 2MB/4MB 캐시 메모리에 이용된다.
본 발명의 캐시 디렉토리 어드레싱 스킴은 가변 크기 캐시에 적용될 수 있으므로, 데이터 처리 시스템에서 업그레이드 가능한 캐시를 지원한다. 어드레스로부터의 동일한 필드가 캐시 메모리의 크기와 무관하게 캐시 디렉토리 및 메모리를 인덱스하는데 이용되기 때문에, 크리티컬 어드레스 경로에서의 멀티플렉싱 로직은 업그레이드 가능한 캐시를 지원하는데 요구되지 않는다. 본 발명의 디렉토리 어드레싱 스킴은 부수적인 오버헤드를 유발하지 않고 기존 어드레싱 스킴보다 대응하는 캐시 라인에 대한 어드레스 태그의 연관성을 더욱 실현한다. 또한, 본 발명의 캐시 디렉토리 어드레싱 스킴은 1:1 어드레스 흐름을 생성하고 캐시 디렉토리의 효율적인 이용성을 제공한다. 본 발명은 짝수/홀수 디렉토리 패리티 메카니즘으로 또는 잔여, 프로세서-측 및 스누프-측 캐시 디렉토리 구성과 관련하여 유리하게 이용될 수 있다.
본 발명은 특정하게 도시되고 바람직한 실시예를 참조하여 기술되었지만, 기술 분야의 당업자는 형식과 세부사항의 다양한 변화가 본 발명의 사상 및 범위를 벗어나지 않고 이루어질 수 있다는 것을 알 것이다.

Claims (20)

  1. 가변 크기 캐시에 대한 캐시 디렉토리를 어드레싱하는 방법에 있어서,
    어드레스로부터의 인덱스 필드를 이용하여 캐시 디렉토리 내의 적어도 하나의 합동 클래스(congruence class)를 선택하는 단계,
    제 1 캐시 크기에 대해서, 인덱스 필드를 사용하여 선택된 합동 클래스 중에서 한 합동 클래스를 선택하거나 또는 인덱스 필드를 사용하여 선택된 합동 클래스 내의 캐시 디렉토리 엔트리들 중에서 한 그룹을 선택하기 위하여 어드레스로부터의 한 어드레스 비트를 채용하는 단계,
    제 2 캐시 크기에 대해서, 캐시 디렉토리 엔트리들 중에서 선택된 합동 클래스 또는 그룹 내의 임의의 캐시 디렉토리의 선택을 이루기 위하여 어드레스 태그를 캐시 디렉토리 엔트리들에 비교하는 하나 또는 그 이상의 비교기들에서 한 모드 비트를 지정된 논리 상태와 비교하는 단계,
    어드레스로부터의 어드레스 태그 필드를 캐시 디렉토리 엔트리들 중에서 선택된 합동 클래스 또는 그룹 내의 각각의 캐시 디렉토리 엔트리와 비교하는 단계, 및
    캐시 디렉토리 엔트리 및 어드레스 태그 필드 사이의 일치를 식별한 것에 응답하여, 일치된 캐시 디렉토리 엔트리와 관련된 캐시 메모리의 일부를 선택하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    어드레스로부터의 인덱스 필드를 이용하여 캐시 디렉토리 내의 합동 클래스를 선택하는 상기 단계는
    캐시 크기와 무관하게 합동 클래스를 선택하기 위해 상기 어드레스로부터의 동일한 인덱스 필드를 이용하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 어드레스로부터의 인덱스 필드를 이용하여 캐시 디렉토리내의 합동 클래스를 선택하는 상기 단계는
    상기 어드레스로부터의 인덱스 필드를 멀티플렉스하지 않고 상기 인덱스 필드를 직접 이용하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    인덱스 필드를 이용하여 선택된 합동 클래스 내의 캐시 디렉토리 엔트리 들 중의 한 그룹을 선택하기 위해 어드레스로부터의 하나의 어드레스 비트를 채용하는 상기 단계는
    제2 그룹을 억제하면서 상기 선택된 합동 클래스로부터 두 개의 캐시 디렉토리 엔트리 그룹 중 한 그룹을 선택하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서,
    인덱스 필드를 이용하여 선택된 합동 클래스 내의 캐시 디렉토리 엔트리 들 중의 한 그룹을 선택하기 위해 어드레스로부터의 하나의 어드레스 비트를 채용하는 상기 단계는
    상기 어드레스 비트 및 상기 어드레스 비트의 보수를 상기 지정된 논리 상태와 비교하는 단계를 더 포함하는 방법.
  6. 청구항6는 삭제 되었습니다.
  7. 제1항에 있어서,
    제 2 캐시 크기에 대해서, 각각의 캐시 디렉토리 엔트리 내의 하나의 선택된 비트를 지정된 논리 상태에 기입하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 캐시 디렉토리의 각각의 행을 n 개의 캐시 디렉토리 엔트리 그룹 -상기 각각의 캐시 디렉토리 엔트리 그룹은 m개의 캐시 디렉토리 엔트리를 포함함- 으로 논리적으로 분할하는 단계, 및
    캐시 메모리의 각각의 행을 n 개의 캐시 라인 그룹 -상기 캐시 라인의 각각의 캐시 라인 그룹은 m개의 캐시 라인을 포함하며 상기 캐시 디렉토리내의 동일한 행에서 대응하는 캐시 디렉토리 엔트리 그룹과 관련됨- 으로 분할하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    연관된 캐시 메모리가 제1 크기를 가질 때, 상기 어드레스로부터의 제1 필드를 내부 캐시 라인 어드레스로서 이용하는 단계, 및
    상기 연관된 캐시 메모리가 제2 크기를 가질 때, 상기 어드레스로부터의 제1 필드와 다른 제2 필드를 내부 캐시 라인 어드레스로서 이용하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    연관된 캐시 메모리가 제1 크기를 가질 때, 디렉토리 엔트리 및 캐시 라인 간의 제1 연관성(associativity)을 이용하는 단계, 및
    상기 연관된 캐시 메모리가 제2 크기를 가질 때, 디렉토리 엔트리 및 캐시 라인 간의 제1 연관성과 다른 제2 연관성을 이용하는 단계를 더 포함하는 방법.
  11. 가변 크기 캐시에 대한 캐시 디렉토리 어드레싱 장치에 있어서,
    복수의 합동 클래스 -상기 각각의 합동 클래스는 n 개의 m 캐시 디렉토리 엔트리 그룹을 포함함- 를 포함하는 캐시 디렉토리,
    복수의 합동 클래스 -상기 각각의 합동 클래스는 n개의 m 캐시 라인 그룹을 포함하고, 상기 합동 클래스의 각각의 캐시 라인 그룹은 상기 캐시 디렉토리의 동일한 합동 클래스의 대응하는 캐시 디렉토리 엔트리 그룹과 관련됨- 를 포함하는 캐시 메모리,
    어드레스로부터의 인덱스 필드를 이용하여 상기 캐시 디렉토리 내의 적어도 하나의 합동 클래스를 선택하는 선택 로직(selection logic) -상기 선택 로직은
    제 1 캐시 크기에 대해서, 선택된 합동 클래스내의 캐시 디렉토리 엔트리들 중에서 한 그룹을 선택하기 위하여 어드레스로부터의 한 어드레스 비트를 채용하고,
    제 2 캐시 크기에 대해서, 캐시 디렉토리 엔트리들 중에서 선택된 합동 클래스 또는 그룹 내의 임의의 캐시 디렉토리의 선택을 이루기 위하여 어드레스 태그를 캐시 디렉토리 엔트리들에 비교하는 하나 또는 그 이상의 비교기들에서 한 모드 신호를 지정된 논리 상태와 비교함-, 및
    어드레스로부터의 어드레스 태그 필드를 캐시 디렉토리 엔트리들중에서 선택된 그룹 내의 각각의 캐시 디렉토리 엔트리에 비교하는 하나 이상의 비교기, 및
    캐시 디렉토리 엔트리들 중에서 선택된 그룹과 어드레스 태그 필드 간의 일치가 식별되는 것에 응답하여, 일치된 캐시 디렉토리 엔트리에 대응하는 캐시 메모리의 캐시 라인을 선택하는 멀티플렉서
    를 포함하는 캐시 디렉토리 어드레싱 장치.
  12. 제11항에 있어서,
    상기 캐시 디렉토리는 각각의 합동 클래스에 두개의 캐시 디렉토리 엔트리 그룹을 더 포함하는 캐시 디렉토리 어드레싱 장치.
  13. 제11항에 있어서,
    상기 캐시 디렉토리는 각각의 행에 n 개의 2 캐시 디렉토리 엔트리 그룹을 더 포함하는 캐시 디렉토리 어드레싱 장치.
  14. 제11항에 있어서,
    상기 선택 로직은 상기 어드레스로부터 동일한 인덱스 필드를 이용하여, 상기 캐시 메모리의 크기와 무관하게 상기 캐시 디렉토리내의 합동 클래스를 선택하는 디렉토리 룩업부를 더 포함하는 캐시 디렉토리 어드레싱 장치.
  15. 제11항에 있어서,
    각각의 캐시 디렉토리 엔트리 내의 하나의 상응하는 비트와 비교하기 위해 상기 어드레스 태그 비트 또는 상기 모드 신호를 상기 적어도 하나의 비교기에 전달하는 논리 게이트를 더 포함하는 캐시 디렉토리 어드레싱 장치.
  16. 제15항에 있어서,
    각각의 캐시 디렉토리 엔트리 내의 하나의 상응하는 비트와 비교하기 위해 상기 어드레스 비트의 보수 또는 상기 모드 신호를 제2 비교기로 전달하는 논리 게이트를 더 포함하는 캐시 디렉토리 어드레싱 장치.
  17. 제15항에 있어서,
    연관된 캐시 메모리가 제1 크기를 가질 때, 상기 선택된 합동 클래스 내의 한 개의 캐시 디렉토리 엔트리 그룹을 선택하기 위해 상기 어드레스 태그 비트 및 상기 어드레스 태그 비트의 보수를 이용하는 로직, 및
    상기 연관된 캐시 메모리가 제2 크기를 가질 때, 상기 선택된 합동 클래스내의 한 개의 캐시 디렉토리 엔트리 그룹을 선택하기 위해 상기 모드 신호의 보수를 이용하는 로직을 더 포함하는 캐시 디렉토리 어드레싱 장치.
  18. 제11항에 있어서,
    상기 캐시 디렉토리의 각각의 합동 클래스는 n 개의 캐시 디렉토리 엔트리 그룹으로 논리적으로 분할되되 각각의 캐시 디렉토리 엔트리 그룹은 m 캐시 디렉토리 엔트리를 포함하고, 캐시 메모리의 각각의 합동 클래스는 n 개의 캐시 라인 그룹으로 논리적으로 분할되되 각각의 캐시 라인 그룹은 m 캐시 라인을 포함하고, 각각의 캐시 라인 그룹은 상기 캐시 디렉토리 내의 동일한 합동 클래스의 대응하는 캐시 디렉토리 엔트리 그룹과 관련되는 캐시 디렉토리 어드레싱 장치.
  19. 제11항에 있어서,
    연관된 캐시 메모리가 제1 크기를 가질 때, 상기 어드레스로부터의 제1 필드를 내부 캐시 라인 어드레스로서 이용하는 로직, 및
    상기 연관된 캐시 메모리가 제2 크기를 가질 때, 상기 어드레스로부터의 제1 필드와 다른 제2 필드를 내부 캐시 라인 어드레스로서 이용하는 로직을 더 포함하는 캐시 디렉토리 어드레싱 장치.
  20. 제18항에 있어서,
    상기 디렉토리 엔트리는 연관된 캐시 메모리가 제1 크기를 가질 때 상기 캐시 라인과 제1 연관성을 갖고,
    상기 디렉토리 엔트리는 상기 연관된 캐시 메모리가 제2 크기를 가질 때 상기 캐시 라인과의 제1 연관성과 다른 제2 연관성을 갖는 캐시 디렉토리 어드레싱 장치.
KR1019990005171A 1998-03-23 1999-02-12 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴 KR100327935B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/046,015 1998-03-23
US09/046,015 1998-03-23
US09/046,015 US6192458B1 (en) 1998-03-23 1998-03-23 High performance cache directory addressing scheme for variable cache sizes utilizing associativity

Publications (2)

Publication Number Publication Date
KR19990077432A KR19990077432A (ko) 1999-10-25
KR100327935B1 true KR100327935B1 (ko) 2002-03-14

Family

ID=21941109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990005171A KR100327935B1 (ko) 1998-03-23 1999-02-12 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴

Country Status (3)

Country Link
US (1) US6192458B1 (ko)
JP (1) JPH11312121A (ko)
KR (1) KR100327935B1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555603B1 (en) * 1998-12-16 2009-06-30 Intel Corporation Transaction manager and cache for processing agent
US6754776B2 (en) * 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
US20030101280A1 (en) * 2001-11-27 2003-05-29 Chiu Kenneth Y. Fast jump address algorithm
US7107403B2 (en) * 2003-09-30 2006-09-12 International Business Machines Corporation System and method for dynamically allocating cache space among different workload classes that can have different quality of service (QoS) requirements where the system and method may maintain a history of recently evicted pages for each class and may determine a future cache size for the class based on the history and the QoS requirements
US7143240B2 (en) * 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8698817B2 (en) 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
US7386681B2 (en) * 2005-02-11 2008-06-10 International Business Machines Corporation Reducing number of rejected snoop requests by extending time to respond to snoop request
US8135910B2 (en) * 2005-02-11 2012-03-13 International Business Machines Corporation Bandwidth of a cache directory by slicing the cache directory into two smaller cache directories and replicating snooping logic for each sliced cache directory
US7386682B2 (en) * 2005-02-11 2008-06-10 International Business Machines Corporation Reducing number of rejected snoop requests by extending time to respond to snoop request
US7340568B2 (en) * 2005-02-11 2008-03-04 International Business Machines Corporation Reducing number of rejected snoop requests by extending time to respond to snoop request
US7478218B2 (en) * 2005-02-18 2009-01-13 Vmware, Inc. Adaptive cache sizing based on monitoring of regenerated and replaced cache entries
EP1717708B1 (en) * 2005-04-29 2010-09-01 STMicroelectronics Srl An improved cache memory system
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7615857B1 (en) * 2007-02-14 2009-11-10 Hewlett-Packard Development Company, L.P. Modular three-dimensional chip multiprocessor
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8028128B2 (en) * 2007-10-10 2011-09-27 International Business Machines Corporation Method for increasing cache directory associativity classes in a system with a register space memory
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US7925857B2 (en) * 2008-01-24 2011-04-12 International Business Machines Corporation Method for increasing cache directory associativity classes via efficient tag bit reclaimation
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
JP2010146205A (ja) * 2008-12-17 2010-07-01 Toshiba Corp キャッシュメモリ装置及び画像処理装置
US20140082252A1 (en) * 2012-09-17 2014-03-20 International Business Machines Corporation Combined Two-Level Cache Directory
WO2016097810A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode
EP3129886B1 (en) 2014-12-14 2019-10-02 VIA Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
WO2016097795A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode
US10452556B2 (en) * 2015-09-11 2019-10-22 Toshiba Memory Corporation Memory device and information processing device
US11507517B2 (en) * 2020-09-25 2022-11-22 Advanced Micro Devices, Inc. Scalable region-based directory
GB2605577A (en) * 2021-03-31 2022-10-12 Advanced Risc Mach Ltd Accessing Encoded Blocks of Data

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797814A (en) * 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
JPH0786848B2 (ja) * 1989-11-01 1995-09-20 三菱電機株式会社 キャッシュメモリ
JPH04127339A (ja) 1990-09-19 1992-04-28 Hitachi Ltd キヤツシユメモリシステム
JPH0512119A (ja) 1991-07-04 1993-01-22 Nec Corp キヤツシユメモリ回路
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US5418922A (en) * 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5392410A (en) * 1992-04-30 1995-02-21 International Business Machines Corporation History table for prediction of virtual address translation for cache access
JP3169155B2 (ja) * 1993-12-22 2001-05-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 情報をキャッシュするための回路
US5680577A (en) * 1995-04-27 1997-10-21 International Business Machines Corporation Method and system for processing multiple requests for data residing at the same memory address
US5897651A (en) * 1995-11-13 1999-04-27 International Business Machines Corporation Information handling system including a direct access set associative cache and method for accessing same
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
DE19643935C2 (de) 1996-10-31 1998-10-08 Sekurit Saint Gobain Deutsch Verfahren und Vorrichtung zum schrittweisen Biegen von Glasscheiben
JPH10280850A (ja) 1997-03-31 1998-10-20 Shin Nikkei Co Ltd 門扉の落し錠における落し棒の案内機構
US5943686A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Multiple cache directories for non-arbitration concurrent accessing of a cache memory
JPH1160298A (ja) 1997-08-21 1999-03-02 Denki Kagaku Kogyo Kk セメント混和材及びセメント組成物

Also Published As

Publication number Publication date
JPH11312121A (ja) 1999-11-09
US6192458B1 (en) 2001-02-20
KR19990077432A (ko) 1999-10-25

Similar Documents

Publication Publication Date Title
KR100327935B1 (ko) 연관성을 이용한 가변 캐시 크기에 대한 고성능 캐시 디렉토리 어드레싱 스킴
KR100327934B1 (ko) 가변 캐시 크기를 위한 개선된 캐시 디렉토리 어드레싱 메카니즘
US8015358B2 (en) System bus structure for large L2 cache array topology with different latency domains
US8001330B2 (en) L2 cache controller with slice directory and unified cache structure
US5584013A (en) Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
KR100320978B1 (ko) 캐시 갱신 프로토콜을 이용한 캐시 할당 해제 방법 및 데이터 처리 시스템
US7783834B2 (en) L2 cache array topology for large cache with different latency domains
US5765199A (en) Data processor with alocate bit and method of operation
US5715427A (en) Semi-associative cache with MRU/LRU replacement
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US7308537B2 (en) Half-good mode for large L2 cache array topology with different latency domains
US7308536B2 (en) System bus read data transfers with data ordering control bits
US6571316B1 (en) Cache memory array for multiple address spaces
US6360297B1 (en) System bus read address operations with data ordering preference hint bits for vertical caches
US5636354A (en) Data processor with serially accessed set associative memory cache interface and method
US6182201B1 (en) Demand-based issuance of cache operations to a system bus
EP0942376A1 (en) Method and system for pre-fetch cache interrogation using snoop port
US5905999A (en) Cache sub-array arbitration
JP3007871B2 (ja) アーキテクチャ操作を管理する方法及び装置
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US6349360B1 (en) System bus read address operations with data ordering preference hint bits
US6460117B1 (en) Set-associative cache memory having a mechanism for migrating a most recently used set
JPH04315235A (ja) キャッシュメモリにおけるキャッシュデータリプレース方法及びキャッシュデータリプレース装置

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