KR100330935B1 - 최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜 - Google Patents

최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜 Download PDF

Info

Publication number
KR100330935B1
KR100330935B1 KR1019990004882A KR19990004882A KR100330935B1 KR 100330935 B1 KR100330935 B1 KR 100330935B1 KR 1019990004882 A KR1019990004882 A KR 1019990004882A KR 19990004882 A KR19990004882 A KR 19990004882A KR 100330935 B1 KR100330935 B1 KR 100330935B1
Authority
KR
South Korea
Prior art keywords
cache
block
state
value
memory
Prior art date
Application number
KR1019990004882A
Other languages
English (en)
Other versions
KR19990072598A (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 KR19990072598A publication Critical patent/KR19990072598A/ko
Application granted granted Critical
Publication of KR100330935B1 publication Critical patent/KR100330935B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

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

본 발명은 최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜에 관한 것이다. 캐시 일관성 프로토콜은 "태그된(Tagged)" 일관성 상태를 사용하여 수정된 값을 시스템 메모리로 기록할 책임을 추적하고, 상기 수정된 값을 즉시 시스템 메모리로 기록하지 않고서도 그 값의 개입을 허용함으로써 메모리 대역폭(bandwidth)을 증가시킨다. 상기 태그된 상태는 수정된 값을 가장 최근에 로드한 캐시 라인에 할당되는 경우 상기 캐시 사이를 수평적으로 이주할 수 있다. 상기 태그된 상태에 관련된 히스토리 상태(history state)가 추가적으로 사용될 수 있다. 본 발명은 또한 프로세스 유닛 클러스터를 갖는 멀티프로세서 컴퓨터 시스템에 적용되어, 상기 "T" 상태가 개별 프로세스 유닛 클러스터를 지원하는 각 캐시 그룹의 하나의 캐시 라인에 사용되도록 할 수 있다. 우선권이 상기 태그된 상태를 포함하는 다른 캐시 상태에 부여되어 대응 메모리 블록에 액세스한다. (요구에 응답하기 위한) 태그된 개입 응답은 모두 크로스-바를 사용하여 상기 개입 응답에 영향받을 수 있는 선택된 캐시에만 전달될 수 있다. 상기 태그된 프로토콜은 기존 및 새로운 캐시 일관성 프로토콜과 결합될 수 있다. 본 발명은 또한 상기 태그된 상태를 사용하여 캐시 동작을 독립적으로 최적화(independent optimization)시킬 수 있다.

Description

최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜 {CACHE COHERENCY PROTOCOL WITH INDEPENDENT IMPLEMENTATION OF OPTIMIZED CACHE OPERATIONS}
본 발명은 컴퓨터 시스템에 관한 것으로, 좀더 상세하게는 수정된 데이터에 신규한 일관성 상태(coherency state)를 제공하여 개입 데이터(intervention data)를 시스템 메모리에 기록할 필요 없이 캐시 개입(cache intervention)을 개선하는 캐시 일관성 프로토콜에 관한 것이다.
도 1은 종래 멀티프로세서 컴퓨터 시스템(10)의 기본 구조를 도시하고 있다. 컴퓨터 시스템(10)은 다양한 주변 장치에 연결되는 다수의 프로세스 유닛을 가지며, 도 1에서는 2개의 프로세스 유닛(12a, 12b)만을 도시한다. 이들 주변 장치의 예로서 도 1에는 디스플레이 모니터, 키보드, 그래픽 포인터(마우스) 및 영구 저장 장치(하드디스크)와 같은 입/출력 장치(14), 프로세스 유닛이 프로그램 인스트럭션을 수행하기 위해 사용하는 RAM(random access memory)과 같은 메모리 장치(16) 및 컴퓨터에 처음 전원이 인가된 경우에 주변장치 중 하나―일반적으로 영구 메모리 장치―로부터 운영체제(operating system)를 찾아 로드(load)하는 것을 주목적으로 하는 펌웨어(18)가 도시되어 있다. 프로세스 유닛(12a 및 12b)은 범용 상호접속망(generalized interconnect) 또는 버스(20), 또는 직접 메모리 액세스 채널(도시되지 않음)을 포함하는 다양한 수단을 통해 상기 주변장치와 통신한다. 컴퓨터 시스템(10)은 이외에도 예를 들어 모뎀 또는 프린터를 연결하기 위한 직렬 및 병렬 포트와 같은 도시되지 않은 많은 부가적 구성요소를 가질 수 있다. 예를 들어, 비디오 디스플레이 모니터를 제어하는데 사용되는 디스플레이 어댑터, 메모리(16) 액세스에 사용될 수 있는 메모리 컨트롤러 등의 다른 구성요소들이 도 1의 블록도에 도시된 구성들과 함께 사용될 수 있다.
대칭형 멀티프로세서(symmetric multi-processor, 이하 SMP) 컴퓨터에서, 모든 프로세스 유닛은 동작에 필요한 인스트럭션 및 프로토콜의 집합 또는 부분 집합을 공통으로 사용한다는 점에서 일반적으로 동일하며, 또한 일반적으로 동일한 아키텍처를 갖는다. 이러한 프로세스 유닛의 전형적인 아키텍처가 도 1에 도시되어 있다. 하나의 프로세스 유닛은 다수의 레지스터 및 컴퓨터를 동작시키기 위하여 프로그램 인스트럭션을 수행하는 실행유닛(execution unit)을 가지는 프로세서 코어(22)를 포함한다. IBM사가 판매하고 있는 PowerPCTM프로세서는 이러한 프로세스 유닛의 전형적인 예가 된다. 프로세스 유닛은 또한 명령어 캐시(24) 및 데이터 캐시(26)와 같은 고속 메모리 장치를 사용하여 구현되는 하나 이상의 캐시를 가질 수 있다. 캐시는 프로세서가 반복해서 액세스할 수 있는 값을 일시적으로 저장하여, 그 값을 메모리(16)로부터 로드하는 긴 단계를 회피할 수 있게 함으로써 프로세싱 속도를 향상시키는데 사용된다. 캐시들이 단일 통합 칩(single integrated chip, 28)에 프로세서 코어와 함께 일체로 패키지되는 경우 이러한 캐시들을 "온보드(on-board)" 상태라고 부른다. 각 캐시는 프로세서 코어와 캐시 메모리 사이의 데이터 및 인스트럭션의 전송을 관리하는 캐시 컨트롤러(도시되지 않음)와 서로 연관되어 있다.
프로세스 유닛은 캐시(30)와 같은 부가적인 캐시를 포함하는데, 이 부가적인 캐시는 온보드(레벨1) 캐시(24 및 26)를 지원하기 때문에 레벨2(L2) 캐시로 지칭된다. 환언하면, 캐시(30)는 메모리(16) 및 상기 온보드 캐시 사이의 매개자로서 동작하며, 상기 온보드 캐시보다 많은 정보(인스트럭션 및 데이터)를 저장하지만 액세스가 길어지는 단점이 있다. 예를 들어, 캐시(30)는 저장 용량이 256 또는 512KB인 칩일 수 있으며, 반면 프로세서는 총용량이 64KB인 온보드 캐시를 갖는 IBM PowerPCTM604 계열 프로세서일 수 있다. 캐시(30)는 버스(20)에 연결되며, 메모리(16)로부터 프로세서 코어(22)로의 모든 정보의 로드는 반드시 이 캐시(30)를 통하도록 되어있다. 비록 도 1은 2 레벨 캐시 계층만을 도시하지만, 직렬 연결된 다수 레벨(L3, L4 등)의 캐시를 가지는 다중 레벨 캐시 계층도 가능하다. 만일 소정 프로세스 유닛의 L1 캐시에 블록이 존재한다면, 상기 블록은 이 프로세스 유닛의 L2 및 L3 캐시에도 존재한다. 이러한 성질(property)은 포함(inclusion)으로 알려져 있다. 이하 포함의 원리는 본 발명과 관련된 캐시에 적용된다고 가정한다.
SMP 컴퓨터에서는 일관성이 있는(coherent) 메모리 시스템을 설계하는 것, 즉 모든 프로세서에 대해 각 개별 메모리 위치로의 기록 동작(write operation)을 일정 순서로 직렬화시키는 것이 중요하다. 예를 들어, 메모리 내에서의 어떤 위치가 일련의 기록 동작에 의하여 변경되어 값 1, 2, 3, 4를 갖는 것으로 가정한다. 캐시 일관성 시스템에서는, 모든 프로세서가 그 표시된 순서로 생기도록 소정의 위치로의 기록을 감시할 것이다. 그러나 소정의 프로세싱 요소(프로세스 유닛)가 상기 메모리 위치(예컨대 2)로의 기록을 미스(miss)할 수 있다. 그러면, 상기 메모리 위치를 판독하는 다른 프로세싱 요소는 값 2에 대한 갱신을 미스한 채 1, 3, 4 순서를 만나는 것이다. 이러한 성질을 구현한 시스템을 "일관성이 있다"고 한다. 사실상 모든 일관성 프로토콜은 캐시 블록 크기의 세분도(granularity)에만 맞추어서 동작한다. 즉 상기 일관성 프로토콜은 각 개별 메모리 위치별로가 아니라 캐시 블록에 기반하여 데이터의 이동 및 기록 허가(write permission)를 제어한다(이하에서, "데이터"라는 용어는 프로그램에 의하여 사용되는 수치 또는 프로그램 인스트럭션에 대응하는 값인 메모리 값을 지칭하는데 사용된다).
캐시 일관성을 달성하는 많은 프로토콜 및 기술이 당해 분야의 기술자들에게 알려져 있다. 일관성을 유지하기 위한 이러한 메카니즘에 따르면, 상기 프로토콜은 임의의 시점에서 일정한 메모리 위치(캐시 블록)로의 기록 동작을 가능하게 하는 "허가(permission)"를 갖는 것을 1개의 프로세서에만 허용하는 것이 필요하다. 이러한 필요 조건의 결과 소정의 프로세싱 요소가 메모리 위치에 기록을 시도할 때마다, 상기 프로세싱 요소는 먼저 다른 모든 프로세싱 요소에 자신이 상기 메모리에 기록하기를 원한다는 요구를 알리고, 다른 모든 프로세싱 요소로부터 상기 기록 요구에 대한 허가를 받는다.
시스템의 캐시 일관성을 구현하기 위해, 상기 프로세서들은 공통의 범용화된 상호접속망[즉, 버스(20)]을 통하여 서로 통신한다. 상기 프로세서는 메모리 위치로 판독 또는 기록을 하고자 한다는 요구를 표시하는 메시지를 상기 상호접속망을 통하여 전달한다. 소정 동작이 상호접속망에 위치하게 되면, 다른 모든 프로세서는 이 동작을 "스누프(snoop)"(감시)하고, 그들의 캐시상태가 요구된 동작이 처리되는 것을 허용할 수 있는지 여부를 판단하고, 만일 허용 가능하다면 어떤 조건하에서 가능한지를 판단한다. 또한, 다수의 버스 트랜잭션이 존재하는데, 상기 버스 트랜잭션은 자신을 관장(honor)하고 메모리 일관성을 유지하기 위하여 스누핑(snooping) 및 이후의 동작을 필요로 한다. 상기 스누핑 동작은 특정 버스 신호의 주장(assertion)에 의하여 발생된 적격(qualified) 스누프 요구(request)의 수신에 의해 트리거(trigger)된다. 인스트럭션 프로세싱은 스누프 히트(snoop hit)가 발생하고 스누프 상태기계(snoop state machine)가 불량 섹터(offended sector)의 일관성 문제를 해결하기 위하여 부가적인 캐시 스누프가 요구된다고 결정한 경우에만 인터럽트된다.
상기한 바와 같이, 정해진 메모리 블록의 가장 최근의 유효 카피(copy)가 시스템 메모리(16)로부터 시스템 내의 하나 이상의 캐시로 이동할 수 있으므로, 캐시가 존재하는 시스템에서는 상기 통신이 필요하다. 소정 프로세서[가령 프로세서 (12a)]가 자신의 캐시 계층 내에 현존하지 않는 메모리 위치에 액세스하고자 하는 경우에는 이 메모리 위치에 대한 실제 값(현재 값)을 가지는 블록의 올바른 버전이 시스템 메모리(16) 또는 다른 프로세스 유닛[예를 들어, 프로세스 유닛 (12b)]의 하나 이상의 캐시에 존재할 수 있다. 만일 올바른 버전이 시스템 내의 하나 이상의 다른 캐시에 있으면, 시스템 메모리 대신에 시스템 내의 상기 캐시(들)로부터 올바른 값을 얻을 필요가 있다.
예를 들어, 프로세서(12a)가 메모리 위치를 판독하고자 한다고 가정하자. 이 프로세서는 처음에 자신의 L1 캐시(24 또는 26)를 폴링(polling)한다. 이때, 블록이 L1 캐시에 존재하지 않은 경우 이 요구(폴링)는 L2 캐시(30)에 전달된다. 또한, 상기 블록이 상기 L2 캐시에 존재하지 않은 경우에는 상기 요구는 하위 캐시 레벨, 예를 들어 상기 L3 캐시에 전달된다. 한편, 상기 블록이 상기 하위 레벨 캐시에도 존재하지 않은 경우에는 상기 요구는 상기 범용화된 상호접속망(20)에 제공된다. 일단 소정 동작이 상기 범용화된 상호접속망 상에 위치하게 되면, 다른 모든 프로세스 유닛은 이 동작을 스누프(감시)하고 상기 블록이 자신의 캐시에 존재하는지를 판단한다. 프로세스 유닛에 의하여 요구된 상기 블록을 어떤 프로세스 유닛이 자신의 L1 캐시에 가지고 있으며 또한 이 블록의 값이 수정되었다면, 상기 포함의 원리에 의하여 상기 L2 캐시 및 모든 하위 레벨 캐시 또한 상기 블록의 카피를 가지고 있다. 그러나 상기 프로세서 캐시의 카피는 수정되었기 때문에 상기 모든 하위 레벨 캐시의 카피는 쓸모 없는(stale) 것이 된다. 따라서 상기 프로세스 유닛의 최하위 레벨 캐시(예를 들어 L3)가 상기 판독 동작을 스누프하면, 상기 최하위 레벨 캐시는 상위 레벨 캐시에 상기 요구된 블록이 존재하고 수정되었음을 결정하게 된다. 이 경우 상기 L3 캐시는 상기 프로세스 유닛이 후에 상기 동작을 "재시도"해야 함을 알리는 메시지를 범용화된 상호접속망에 위치시킨다. 이는 메모리 위치의 실제 값이 메모리 계층의 상부에 위치한 L1 캐시에 있으며 그 실제 값이 상기 개시(initiating) 프로세스 유닛의 판독 요구를 충족하는데 사용되기 위하여 검색(retrieve)되어야 하기 때문이다.
일단 상기 개시 프로세스 유닛이 상기 요구를 다시 시도하면, L3 캐시는 L1 캐시로부터 수정된 값을 검색하는 과정을 시작하고, 구현예에 따라 L3 캐시, 메인 메모리 중 하나 또는 모두에 수정된 값을 사용할 수 있도록 한다. 상위 레벨 캐시로부터 상기 블록을 검색하기 위하여, 상기 L3 캐시는 내부 캐시간 연결을 통하여 상기 상위 레벨 캐시에 검색될 블록을 요구하는 메시지를 전송한다. 이러한 메시지는 상기 L1 캐시에 도달할 때까지 프로세스 유닛 계층에 전파되고, 상기 블록이 최하위 레벨(L3 또는 메인 메모리)의 계층으로 이동하도록 하여 상기 개시 프로세스 유닛의 요구가 충족될 수 있도록 한다.
상기 개시 프로세스 유닛은 궁극적으로 판독 요구를 범용화된 상호접속망에 다시 제공하게 된다. 이때, 상기 수정된 값은 어떤 프로세스 유닛의 L1 캐시로부터 검색되어 이미 시스템 메모리에 위치하므로, 상기 개시 프로세서로부터의 판독요구는 만족된다. 이와 같은 시나리오를 "스누프 푸쉬(snoop push)"라 한다. 판독 요구는 상기 범용화된 상호접속망상에서 스누프되어 상기 프로세스 유닛이 상기 블록을 계층의 하부로 푸쉬하도록 함으로써, 상기 개시 프로세스 유닛에 의한 판독 요구를 만족시킨다.
프로세서가 블록을 판독하거나 기록하기를 원하는 경우에는 캐시 일관성을 유지하기 위하여 상기 프로세서는 이러한 의도를 시스템의 다른 프로세스 유닛과 통신해야 한다는 점이 중요하다. 이를 달성하기 위하여, 상기 캐시 일관성 프로토콜은 캐시 계층의 각 레벨에 있는 각 블록 및 상기 블록의 현 "상태"를 지시하는 상태 지시자(status indicator)와 관계를 갖는다. 상기 상태 정보(state information)는 상기 일관성 프로토콜을 최적화하는데 사용되어 상기 범용화된 상호접속망 및 내부 캐시간 접속망의 메시지 트래픽을 감소시킨다. 이러한 메카니즘의 일례로, 프로세스 유닛이 판독을 실행하는 경우 이 프로세스 유닛은 상기 판독이 후에 재시도되어야 하는지 여부를 표시하는 메시지를 수신한다. 만일 이러한 판독 동작이 재시도되지 않은 경우에는 상기 메시지는 일반적으로 다른 프로세스 유닛이 여전히 상기 블록의 카피를 가지고 있는지 여부에 대한 판별을 상기 프로세스 유닛이 하도록 하는 정보를 또한 포함한다(이것은 상기 다른 최하위 레벨 캐시가 재시도하지 않는 모든 판독에 대하여 "공유" 또는 "비공유" 표시를 하도록 함으로써 달성됨). 따라서 프로세스 유닛은 시스템 내의 다른 프로세서가 상기 블록의 카피를 가지고 있는지 여부를 판별할 수 있다. 만일 다른 모든 프로세스 유닛이 상기 블록의 실제 카피(active copy)를 갖고 있지 않으면, 상기 판독 프로세스 유닛은 상기 블록의 상태를 "배타적(exclusive)"이라고 표시한다. 만일 블록이 배타적인 것으로 표시되면, 다른 어떤 프로세스 유닛도 상기 블록의 카피를 가지지 않기 때문에 상기 프로세스 유닛은 시스템 내의 다른 프로세스 유닛과 먼저 통신하지 않고 상기 블록을 후에 기록하는 것이 허용된다. 따라서 프로세서는 위치(location)를 판독하거나 기록하고자 하는 의도를 먼저 상호접속망을 통하여 다른 프로세서들과 통신하지 않고도 상기 위치를 읽거나 기록할 수 있다. 그러나, 이는, 다른 프로세서는 상기 블록과 이해 관계가 없다고 일관성 프로토콜이 보장하는 경우에만 해당된다.
상술한 캐시 일관성 기술은 "MESI"라 불리우는 특정의 프로토콜에 구현되었으며, 이를 도 2에 도시하였다. 이 프로토콜에 잇어서, 캐시 블록은 "M"(수정), "E"(배타적), "S"(공유) 또는 "I"(무효)의 4가지 상태 중 하나의 상태에 있을 수 있다. 상기 MESI 프로토콜 하에서, 예를 들어 32 바이트 섹터(sector)인 캐시 엔트리(cache entry) 각각은 상기 4개의 가능한 상태 중 상기 엔트리의 상태를 표시하는 2개의 부가적인 비트를 갖는다. 요구 프로세서에 의해 탐색되는 액세스의 타입 및 엔트리의 캐시 상태에 따라 상기 상태는 변경될 수 있으며, 요구 프로세서의 캐시 내의 엔트리는 특정 상태로 설정된다. 예를 들어, 섹터가 수정 상태(M 상태)인 경우, 주소 지정된 섹터(addressed sector)는 상기 수정 섹터를 갖는 캐시에서만 유효하고, 상기 수정된 값은 시스템 메모리에 재기록되지 않는다. 섹터가 배타 상태(E 상태)인 경우, 이 섹터는 표시(noted)된 섹터에만 존재하며 시스템 메모리와 일치한다. 섹터가 공유 상태(S 상태)인 경우, 이 섹터는 자신의 캐시 및 최소한 하나의 다른 캐시에서 유효하며, 모든 공유 섹터는 시스템 메모리와 일치한다. 마지막으로 섹터가 무효 상태(I 상태)인 경우에는, 이것은 상기 주소 지정된 섹터가 캐시 내에 존재하지 않는다는 것을 표시한다. 도 2로부터 알 수 있는 바와 같이, 만일 섹터가 M, S 또는 I 상태 중 하나이면 섹터는 특정의 버스 트랜잭션에 따라서 상기 상태 사이를 이동할 수 있다. 반면, E 상태에 있는 섹터는 다른 어떠한 상태로도 이동할 수 있지만, E 상태가 되려는 섹터는 먼저 I 상태가 되어야 한다.
상기 캐시 일관성 프로토콜을 사용하여 캐시 블록에의 액세스를 추가적으로 개선할 수 있다. "개입(intervention)"이라 불리우는 이러한 개선에 따르면, 메모리 블록에 대한 제어권을 갖는 캐시는 상기 메모리 블록의 데이터를 판독형의 동작을 위해 그 값을 요구하는 다른 캐시에 직접적으로 제공하는 것이 허용된다. 환원하면, 상기 데이터를 시스템 메모리로 기록하고 그 후에 상기 요구 프로세서가 기록된 데이터를 다시 메모리로부터 판독할 필요를 회피하도록 한다. 블록이 M 또는 E 상태인 값을 갖는 캐시만이 이러한 개입을 실행할 수 있다. 이들 상태에서 상기 값의 유효한 카피를 갖는 캐시 블록은 오직 하나이기 때문에, 상기 값을 먼저 시스템 메모리에 기록할 필요 없이 상기 버스(20)를 통하여 이 값을 제공(기록)하는 것이 매우 용이하다. 따라서 개입 절차는 시스템 메모리에 대한 판독 및 기록의 긴 과정(이 과정은 실제로 3번의 버스 동작과 2번의 메모리 동작을 포함한다)을 회피함으로써 처리속도를 향상시킨다. 이러한 절차는 대기시간(latency)의 개선뿐만 아니라 버스 대역폭을 향상시킨다.
개입 절차의 일부로서 상기 시스템 메모리의 메모리 컨트롤러는 M 상태를 갖는 캐시 라인으로부터 개입 응답을 또한 수신할 수 있으며, 이에 따라 상기 메모리 컨트롤러는 수정된 데이터가 다른 프로세서에 제공되는 경우 이 수정된 데이터를 병렬 형식으로 판독할 수 있다. 상기 절차의 종반에는 상기 수정된 데이터가 시스템 메모리로 복사되기 때문에, 상기 데이터를 M 상태로 유지하고 있는 캐시는 S 상태로 전환되며 다른 프로세서의 캐시 블록은 I 상태에서 S 상태로 전환된다. 종래의 캐시 일관성 프로토콜에서, 상기 수정된 데이터는 개입에 따라 시스템 메모리에 기록되어야 하며, 이러한 기록은 프로세싱의 속도를 향상시키기 위하여 병렬 형식으로 행해지지만, 이것은 많은 경우에 있어서 여전히 불필요한 것이 된다. 예를 들어 만일 첫 번째 프로세서의 수정된 캐시 블록이 두 번째 프로세서의 캐시에 제공되는 경우, 상기 두 번째 프로세서는 데이터를 더 많이 수정할 수 있는데 이는 결국 시스템 메모리로 다른 기록 동작을 요구하는 것이 된다. 이때, 만일 상기 첫 번째 프로세서에 의한 상기 데이터(메모리 블록)의 제공과 상기 두 번째 프로세서에 의한 데이터의 수정 사이 시간 동안 상기 데이터를 요구하는 다른 프로세서가 없다면, 시스템 메모리에 대한 첫 번째 기록 동작(개입 절차의 일부임)은 불필요한 것이 된다.
시스템 메모리로의 불필요한 기록 문제를 해결하기 위한 하나의 방안으로, 비록 상기 프로세서가 판독 동작을 위해서만 상기 데이터를 원하는 경우에도 상기 두 번째 프로세서가 상기 제공된 데이터를 M 상태로 강제로 유지하도록 하는 방법이 있다. 이러한 방법에서, 상기 두 번째 프로세서는 장래에 시스템 메모리로 상기 데이터를 기록할 책임을 지게된다. 그러나 이러한 방법에 따르면, 개입을 하는(첫 번째) 프로세서가 자신의 캐시 라인을 I 상태로 설정하여 데이터의 공유가 없도록 해야만 하고, 어느 시점에서 단지 하나의 프로세서만이 데이터를 판독할 수 있으며 이 데이터는 항상 프로세서 사이를 전후로 이동하여 과도한 버스 트래픽을 유발하는 등의 심각한 문제를 야기한다. 따라서 데이터의 효율적인 개입을 허용하나 시스템 메모리로 불필요한 기록동작을 회피할 수 있는 캐시 일관성 유지 방법을 고안할 필요가 있다. 또한, 이 방법에 수정된 데이터를 공유된 상태로 메모리에 영향을 주지 않고 캐시에서 캐시로의 이동을 허용하면 더욱 더 바람직할 것이다.
본 발명의 목적은 멀티프로세서 컴퓨터 시스템의 캐시 일관성을 유지하는 개선된 방법의 제공하기 위한 것이다.
또한 본 발명의 다른 목적은 캐시 개입을 허용하지만 시스템 메모리에 대한 불필요한 기록동작을 회피하는 방법을 제공하기 위한 것이다.
본 발명의 또 다른 목적은 수정된 데이터가 공유 상태로 다수의 다른 캐시에유지되면서, 상기 데이터의 개입을 허용하는 방법을 제공하기 위한 것이다.
도 1은 종래 기술에 따른 멀티프로세서 컴퓨터 시스템의 블록도이다.
도 2는 종래 기술에 따른 캐시 일관성 프로토콜(MESI)을 설명하는 상태도이다.
도 3은 본 발명에 따른 수정된 데이터를 시스템 메모리에 기록할 것을 요구하지 않고 개입을 허용하도록 수정된 데이터에 대한 태그된 상태를 제공하는 캐시 일관성 프로토콜을 설명하는 상태도이다.
도 4는 본 발명의 태그된 일관성 상태를 전역 규모(global scale) 및 지역(CPU 군) 규모 모두에 대하여 사용하기에 적합하도록 구성될 수 있는 다중 레벨 캐시 구조를 갖는 멀티프로세서 컴퓨터 시스템의 블록도이다.
도 5는 가장 최근에 판독된 값을 갖는 캐시 라인의 식별을 허용하는 일관성 프로토콜과 결합된 본 발명의 캐시 일관성 프로토콜을 설명하는 상태도이다.
상기 목적은, 특정 캐시 라인이 수정된 값(즉 시스템 메모리 장치의 대응하는 메모리 블록과 일치하지 않는 값)을 포함하고 있고 이 캐시 라인이 최소한 현재는 상기 수정된 값을 상기 시스템 메모리 장치(또는 개입을 통한 메모리 계층상 다른 곳)에 기록할 책임이 있음을 표시하는 태그된 일관성 상태(tagged coherency state)를 사용하여 멀티프로세서 컴퓨터 시스템의 캐시 일관성을 유지하는 방법에 의하여 달성된다. 상기 수정된 값의 카피를 포함하는 다른 모든 캐시 라인(시스템의 다른 프로세스 유닛을 지원함)은 제 2의 일관성 상태(공유)로 지정되어, 이들 라인은 상기 수정된 값을 포함하지만 상기 시스템 메모리가 결국 상기 수정된 값으로 갱신된다는 것을 보장할 책임이 없다는 것을 표시한다. 이 태그된 상태가 가장 최근에 상기 수정된 값을 로드한 캐시 라인에 지정되면, 이 태그된 상태는 캐시 사이를 수평적으로 이주(migrate)할 수 있다. 히스토리 일관성 상태(historical coherency states)는 특정 캐시 라인이 상기 수정된 값을 포함하고 있으며 가장 최근에 그 값을 제공하였음을 표시하도록 추가로 사용되어, 예를 들어 기존의 캐시 라인이 최소 최근 사용 알고리즘(least-recently used algorithm, 이하 LRU 알고리즘이라 함)의 결과로서 퇴거(evict)되면 "부(secondary)" 히스토리 상태 캐시 라인이 상기 태그된 상태로 전환되어 "주(primary)" 태그된 캐시 라인이 메모리로의 기록 책임을 면제받을 수 있다.
본 발명은 또한 여러 클러스터(cluster)로 분류되는 다수의 프로세스 유닛을가지고 각 클러스터를 지원하는 다중 캐시 레벨을 가지는 멀티프로세서 컴퓨터 시스템에 사용되어, 상기 태그된 일관성 상태가 개별 프로세스 유닛 클러스터를 지원하는 캐시의 각 그룹내 하나의 캐시라인에 사용될 수 있도록 한다. 또한 상기 태그된 상태는 이러한 클러스터로 나누어진 시스템의 하위 레벨에 구현될 수 있다.
바람직한 실시예에 따르면, 본 발명에 의하여 사용되는 각 일관성 상태는 블록에 액세스하고자 하는 요구가 발생하면 가장 높은 우선권을 갖는 응답만이 상기 요구를 한 프로세스 유닛에 전달되는 연관된 우선권(associated priority)을 갖는다. 모든 태그된 개입 응답은 크로스-바(cross-bar)를 사용하여 상기 개입 응답에 의하여 영향받을 수 있는 선택된 캐시에 대하여만 전달될 수 있다.
상기 태그된 프로토콜은, 캐시가 가장 최근에 액세스된 값의 카피를 포함한다는 것을 나타내는 "최근(Recent)" 상태를 포함하는 프로토콜과 같은 공유된 개입을 허용하는 다른 캐시 일관성 프로토콜과 조합될 수 있다. 상기 태그된 상태("T 상태")는 메모리 블록을 요청하기 위해 상호 충돌하는 다른 캐시로부터의 요구에 우선하는 충돌 우선권(collision priority)을 지정하는데 사용될 수 있다(DClaim 동작). (i) 데이터의 개입, (ii) 수정된 데이터를 메모리 계층에 기록하는 책임의 추적, (iii) DClaim 충돌 우선권의 제공과 같은 3가지 기능은 단일 태그된 상태로 결합될 필요는 없지만, 본 발명의 좀더 복잡한 구현을 사용하여 독립적으로 실행될 수 있다.
이러한 본 발명의 목적 및 부가적 목적, 특징 및 이점은 후술하는 상세한 설명에 의하여 좀더 명확해진다. 즉, 본 발명의 신규한 특징은 특허청구범위에 기재되어 있으나, 첨부된 도면과 함께 후술하는 실시예의 상세한 설명을 참조하면 본 발명의 바람직한 실시예, 추가적 목적 및 이점뿐만 아니라 본 발명 자체도 가장 잘 이해할 수 있다.
본 발명은 도 1의 시스템과 같은 멀티프로세서 시스템의 캐시 일관성을 유지하는 방법에 관한 것이나, 반드시 종래의 컴퓨터 시스템에만 적용되는 것은 아니며 도 1에 도시되지 않은 새로운 하드웨어 구성요소를 포함하거나 종래 구성요소에 사용할 수 있는 신규의 상호접속 아키텍처를 가질 수 있는 컴퓨터 시스템에 사용될 수 있다. 따라서 본 발명이 상기 도 1에 도시된 일반화된 시스템에 한정되지 않는다는 것은 당해 기술분야의 통상의 지식을 갖는 자에게 자명하다.
도 3을 참조하여 설명하면, 도 3에는 본 발명에 따른 캐시 일관성 프로토콜의 하나의 실시예에 대한 상태도가 도시되어 있다. 이 프로토콜은 종래의 4가지 상태 즉, M(수정), E(배타), S(공유) 및 I(무효) 상태를 포함하고 있다는 점에서 도 2에 도시한 종래 MESI 프로토콜에 유사하지만, 종래 MESI 프로토콜과는 달리 캐시 블록이 소정 프로세서에 의하여 수정되었지만 아직 시스템 메모리에는 기록되지 않았다는 표시를 제공하는 새로운 "T" 상태(태그됨)를 더 포함한다. 예를 들어, 하나의 프로세서의 캐시 블록이 M 상태에 있고 다른 프로세서에 의하여 판독 동작이 요구되면, 상기 첫 번째 프로세서는 수정된 개입 응답을 전송하고, 상기 판독 프로세서는 그 후 상기 데이터를 T 상태로 유지한다. (이때, 상기 첫 번째 프로세서는 M 상태에서 S 상태로 전환된다.) 이러한 동작은, 다른 부가적인 프로세서에서 반복될 수 있으며, 이에 따라 상기 수정된 데이터의 카피를 가장 최근에 판독한 캐시는 그 값을 T 상태로 유지하며, 상기 값의 카피를 갖는 다른 모든 프로세서는 그 값을 공유된 상태로 유지한다. 이러한 방법에 따르면 하나의 캐시는 태그되어 장래 어느 시간에 상기 수정된 데이터를 메모리 계층에 기록―필요하다면, 수정된 개입 응답중에 다른 캐시에 상기 데이터를 제공하거나, 시스템 메모리로 기록함―할 책임이 있다는 것을 나타나게 된다. 이러한 접근 방법은 시스템 메모리에 대한 전체적인 기록 동작의 수를 감소시킨다.
종래 MESI 프로토콜에 있어서, 수정된 값의 카피를 판독한 캐시는 상기 I 상태로부터 T 상태가 아닌 S 상태로 전환되며, 메모리 컨트롤러는 수정된 개입 응답을 찾아내어 상기 데이터가 메모리에 기록되도록 한다. 이하 "T-MESI" 프로토콜이라 언급될 본 발명의 기본 프로토콜에서는, 상기 메모리 컨트롤러가 트랜잭션을 무시하고 메모리 대역폭을 자유롭게(free up)한다. 수정된 값은 예를 들어 LRU(lease recently used) 캐시 할당해제 알고리즘(cache deallocation algorithm)의 결과로서 요구되는 경우만 시스템 메모리로 기록된다.
종래 프로토콜에 따르면 M-E-S-I의 4개 상태는 엔트리의 초기 상태 및 상기 요구 프로세서가 추구하는 액세스 형태에 기초하여 변화한다. 이들 4개 상태가 변화하는 방법은 일반적으로 종래 MESI 프로토콜과 일치하며, 다음에 설명하는 부가 사항이 추가된다. 도 3에서 알 수 있는 바와 같이, 캐시 라인은 I 상태에서 T 상태로, T 상태에서 I 상태로 그리고 T 상태에서 S 상태로 변화할 수 있다. 3개의 다른 프로세서 P0, P1및 P2의 특정 캐시 블록의 캐시 일관성 상태를 나타낸 표 1을 참조하면 T-MESI 프로토콜의 실시예를 좀더 잘 이해할 수 있다.
P0 P1 P2
초기상태 I I I
P0RWITM M I I
P1판독 S T I
P2판독 S S T
스누프 푸쉬(P1DClaim) S S I
P1DClaim(재시도 후) I M I
첫째 행에서, 3개의 모든 프로세서는 I 상태의 캐시 블록으로 시작한다. 둘째 행에서, 프로세서 P0는 수정할 의사가 있는 판독(read-with-intent-to- modify, 이하 RWITM) 동작을 수행하며, 이에 따라 P0의 캐시 라인은 I 상태에서 M 상태로 변한다. 그 후에, 프로세서 P1가 상기 캐시 라인의 판독을 요구하면 프로세서 P0가 개입하여 S 상태로 전환되고, 프로세서 P1은 I 상태에서 T 상태로 변한다(표 1의 셋째 행). 그 후에, 프로세서 P2가 상기 캐시 라인의 판독을 요구하면 프로세서 P1이 개입하여 S 상태로 전환되고, 프로세서 P2는 I 상태에서 T 상태로 변한다(표 1의 넷째 행).
표 1은 T 상태에 있는 캐시 라인이 비록 할당해제 되지 않은 경우에도 시스템 메모리로 상기 데이터를 강제로 기록하는지를 또한 나타내고 있다. PowerPCTM프로세서를 포함하는 몇몇 프로세서 아키텍처는 프로세서가 블록에 기록하기 위한 허가(permission)를 원하는 경우 RWITM 인스트럭션과는 다른 특별한 인스트럭션의 실행을 허용한다. 상기 "DClaim" 인스트럭션이 그 예이다. 표 1의 다섯째 행에서, 프로세서 P1이 특정한 캐시 라인의 DClaim용 요구를 전송하면, 프로세서 P2는 상기 DClaim을 스누프하고 재시도 메시지를 전송하여 상기 데이터의 시스템 메모리로의 푸쉬를 시도한다. 상기 푸쉬가 완료되면 캐시 라인이 T 상태에서 I 상태로 변하지만, 프로세서 P0및P1의 캐시 라인은 공유 상태로 남는다. 상기 재시도 후, 프로세서 P2는 상기 DClaim을 다시 발생시키며,(그러나, 이 DClaim은 더 이상 재시도 되지 않을 것임) 이에 따라 상기 캐시 라인은 P0의 경우 I 상태로 변화하고, P1의 경우에 M 상태가 된다.
소정의 수정된 값은 캐시 사이를 이주하지만 시스템 메모리에는 절대 기록되지 않는 경우도 있다. 예를 들어 이미 T 상태로 유지된 값의 RWITM 요구를 하는 프로세서를 가정하면, T 상태에 있는 이 프로세서의 캐시 라인뿐만 아니라 S 상태에 있는 다른 프로세서의 모든 대응하는 캐시 라인은 상기 값을 "소유"한 캐시(이 캐시는 T 상태임)를 사용한 개입을 통하여 상기 값이 제공되어진 후 I 상태로 전환된다. RWITM을 실행한 새로운 프로세서는 M 상태로 설정되고, 따라서 이미 T 상태로 된 상기 값은 시스템 메모리에 절대 기록되지는 않는다.
데이터는 하나 이상의 프로세서에서 S 상태로 유지되고 상기 데이터는 수정되나, 시스템 메모리에는 아직 기록되지 않았기 때문에, 상기 T 상태는 S 상태와 M 상태 모두의 성질을 갖는다. 실제, CPU 관점에서 보면, 상기 T 상태는 S 상태와 등가이고, 시스템 버스 관점에서 보면, 상기 T 상태에 있는 캐시 라인은 수정된 블록(modified block)과 동일하게 취급된다.
도 3의 실시예에서, 상기 T 상태는 캐시 라인 사이를 이주하지만, 다른 실시예에 따르면 값을 수정한 원 프로세서의 캐시 라인이 상기 T 상태를 유지할 수 있다. 환언하면, M 상태로 값을 유지하고 있는 캐시 라인은 상기 데이터를 다른 프로세서에 제공하는 경우 (S 상태가 아닌) T 상태로 전환한다. 상기 다른 실시예의 상태도는 M 상태의 캐시 라인이 T 상태로 변화할 수 있으나 S 상태로 변화하지 못하는 것을 제외하고는 도 3과 유사하다. 이러한 실시예는 캐시로부터 오래되어 사용되지 않는 값을 제거하는 특정 구조에 바람직하다. 예를 들어 캐시가 다중레벨(최소한 L3)인 경우에는, 시스템이 상기 값을 상기 L2 레벨로부터 검색하기 위하여 대기하는 것보다 L2 캐시로부터 L3 캐시로 상기 값을 푸쉬함으로써 상기 값이 신속하게 다른 L3 캐시로 제공될 수 있다. 이러한 상기 값의 푸쉬는 백그라운드 방식(background manner)으로 발생할 수 있어서 (예를 들어 특정 버스 동작에 응답해서가 아니라 LRU 할당해제의 결과로 발생할 수 있음) 전체적인 동작의 효율을 향상할 수 있다.
주소 응답 우선권 정의
000 - <예약됨>
001 3(1) 공유된 개입
010 6 원격 상태(remote status)
011 4 재실행(Rerun)
100 1(2) 재시도(Retry)
101 2(3) 태그된 개입
110 5 공유
111 7 널(NULL) 또는 Clean
본 발명에 따르면, 멀티프로세서 컴퓨터 시스템의 다른 프로세서와 관계를 갖는 모든 캐시의 스누퍼(snooper, 감시자)로부터 판독 동작을 요구하는 프로세서로 특정 일관성 응답을 전달함으로써 상기 프로토콜을 구축할 수 있다.
본 발명의 하나의 실시예에 대한 응답을 표 2에 나타내었다.
3비트 스누프 응답 형식을 갖는 신호의 값(주소 응답) 및 정의가 표 2에 기술되어 있다. 이들 신호는 상기 주소 보유 후 스누프 결과를 표시하기 위하여 부호화된다. 표 2는 재시도 응답뿐만 아니라 공유된 라인 및 클린(무효화된) 라인의 응답도 나타내고 있다. 이러한 3 가지 응답은 종래 기술분야에 기본적으로 알려져 있다. 표 2는 또한 "태그된 개입", "공유된 개입", "원격 상태" 및 "재실행"의 4 가지 새로운 응답을 보여주고 있다. 캐시 블록이 M 또는 T 상태로 값을 유지하고 있는 경우 상기 태그된 개입 응답이 사용되는데, 이 태그된 개입 응답은 캐시 블록이 그 값을 개입할 수 있지만 그 값을 요구한 새로운 캐시 블록은 일시적으로 시스템 메모리로 그 값을 복사할 책임을 진다는 것을 나타낸다("T" 상태의 선택적 구현에 대해 이하에서 설명하는 바와 같이, 필요한 경우 수정된 블록 대 태그된 블록에 대하여 다른 응답이 제공될 수 있음).
상기 다른 3개의 응답은 본 발명과 직접적으로 관련되는 것은 아니다. 상기 공유된 개입 응답은 상기 값의 유효한 카피를 유지하고 있는 블록이 그 값을 제공하는 것을 허용한다(후술하는 R-MESI 프로토콜 참조). 오직 판독 동작에만 사용되는 원격 상태 응답은 상기 판독이 성공적일 것이며 상기 공유 또는 배타 일관성 응답이 나중에 다른 신호를 사용한 데이터와 함께 반환될 것임을 표시하는데 사용된다. 재실행 응답은 상기 일관성 응답이 즉시 결정될 수 없으며 상기 요구가 계층의 하부로 전송되어야 하는 경우 사용된다. 이 재실행 응답은 이전 메시지가 반드시 재발행 되어야 하고, 이전에 전달된 메시지와 일치될 수 있도록 동일한 식별자(identifier)를 반드시 가져야 하는 점에서 재시도 응답과는 구별된다.
우선권 값은 각 응답들에 대한 추가적인 관계를 가지며, 표 2에 나타난 바와 같이 상기 요구 프로세서에 대한 하나의 응답을 형성함에 있어 어떤 응답이 우선권을 가져야 하는지를 시스템 로직(logic)이 결정하도록 한다. 예를 들어, 하나 이상의 캐시가 태그된 응답(우선권 2)에 반응하고, 하나 이상의 캐시가 재시도 응답(우선권 1)에 반응하는 경우, 상기 재시도 응답이 우선권을 가지며 상기 시스템 로직은 상기 요구 프로세서에 상기 재시도 응답을 발행한다. 이 시스템 로직은 시스템 컨트롤 포인트 유닛(system control point unit)과 같은 다양한 구성요소 또는 상기 메모리 컨트롤러 내에까지도 존재할 수 있다.
표 2의 우선권에 대한 주요 값으로부터 알 수 있듯이, 재시도 응답이 가장 높은 우선권을 갖는다. 그러나 다른 우선권 부여 방법이 T-MESI 프로토콜의 사용을 증대시키기 위해 제공될 수 있다. 이 우선권 부여 방법에 따르면 표 2의 괄호에 우선권 번호를 기재한 바와 같이, 공유된 개입 응답이 최고의 우선권을 가지며, 재시도 응답과 태그된 개입 응답이 각각 두 번째 및 세 번째 우선권을 가진다. 또한 다른 모든 우선권은 첫 번째 우선권 부여 방법과 동일하다. 이 방법에 따르면 공유된 개입 응답은 다음과 같은 많은 이유로 항상 다른 응답에 우선한다. 무엇보다도 만일 캐시 라인이 소정 값(데이터 또는 인스트럭션)을 아래 기술된 "R" 상태(공유된 개입에 사용됨)로 유지하고 있는 경우, 어떠한 캐시도 M 또는 T 상태의 동일 주소에 대응하는 값을 유지할 수 없으며, 이에 따라 어떠한 캐시도 상기 태그된 개입 응답에 응답할 수 없음이 명백하다. 또한 다른 캐시가 재시도를 발행하는 경우 상기 재시도에 기초한 동일 캐시로부터의 그 후 응답만이 기껏해야 공유로 될 수 있는데 이것은 또한 처음부터 상기 공유된 개입 응답을 발행하는 것도 받아들 수 있음을 의미한다.
본 발명은 T-MESI 프로토콜을 지원하는 일부 캐시와 이 프로토콜을 지원하지 않는 다른 캐시를 갖는 컴퓨터 시스템에 선택적으로 구현될 수 있다. 예를 들어, 시스템 기판에 4개 프로세스 유닛이 탑재되며 추후 다른 프로세스 유닛의 추가를 위하여 4개의 소켓(socket)을 가지는 멀티프로세서 컴퓨터 시스템이 제조, 판매될 수 있다. 초기 탑재된 원(original) 프로세스 유닛(또는 그들의 캐시 컨트롤러)은, 비록 시스템 로직(시스템 컨트롤 포인트 유닛)이 T-MESI 프로토콜을 지원한다고 하더라도 가격을 낮추기 위해 상기 T-MESI 프로토콜을 지원하지 않을 수 있다. 그러나 이러한 원 프로세스 유닛에 신호-비트 플래그(signal-bit flag)의 사용과 같이 상기 프로세스 유닛이 상기 프로토콜을 지원하는지 여부를 표시하기 위한 수단―상기 시스템 로직에게 T-MESI 지원의 유무를 알리기 위한 수단―을 저렴한 가격으로 제공할 수 있다. 그러면, 만일 새로운 프로세서 유닛이 T-MESI 프로토콜을 지원하는 캐시를 가지는 상기 소켓에 부가되는 경우 상기 시스템 로직이 상기 플래그를 사용하여 이들 캐시들을 구별할 수 있으며, 상기 프로토콜을 적절한 프로세스 유닛에 사용할 수 있다.
이와 같은 내용을 좀더 자세히 설명하기 위하여 T-MESI 프로토콜을 지원하는 몇 개의 프로세스 유닛과 그렇지 못한 몇 개의 프로세스 유닛을 가지는 시스템을 가정한다. 각 유닛이 판독 요구를 발행하는 경우 상기 요구에는 T-MESI 지원을 확인하는 플래그가 포함된다. 만일 소정 값이 (다른 타입의 프로세서에 의해) M 상태의 캐시 라인에 유지되고 이 값이 T-MESI 프로토콜을 지원하지 않는 프로세스 유닛에 의해 요구된다면, 상기 시스템 로직은 수정된 개입 응답을 상기 요구 프로세서 및 메모리 컨트롤러에 전달한다. 상기 요구 프로세서의 캐시 라인은 I 상태에서 S 상태로 전환하며, 상기 메모리 컨트롤러는 상기 값을 찾아내어 개입동안 시스템 메모리에 저장한다. 그러나 만일 상기 요구 프로세스 유닛이 T-MESI를 지원하는 경우에는 상기 시스템 로직은 태그된 개입 응답[이것은 비순응 캐시(non-compliant cache)로부터의 수정된 개입 응답을 태그된 개입 응답으로 변환함]을 전달한다. 즉, 상기 요구 프로세서 유닛의 캐시 라인은 I 상태로부터 T 상태로 전환하고, 상기 메모리 컨트롤러는 상기 트랜잭션을 무시한다. 어느 경우라도, 요구 프로세스 유닛의 캐시 라인은 M 상태로부터 S 상태로 전환한다. 이러한 구조에 의하여 컴퓨터 시스템은 T-MESI 및 보통 MESI 캐시를 혼합할 이유에 상관없이, 상기 T-MESI 프로토콜을 지원하는 임의 프로세스 유닛의 존재를 이용할 수 있다. 상기 프로토콜의 선택적 구현은 또한 시스템의 진단을 위해 사용될 수 있다.
상기 요구 프로세서에 기초하여 선택적으로 상기 T 상태를 구현하기 위한 플래그의 사용과는 별도로, 전역에 걸쳐(global basis) 상기 T 상태를 인에이블 또는 디스에이블(enable or disable)하기 위하여 시스템 로직의 단일-비트 필드를 사용한 시스템 플래그가 제공될 수 있다. 예를 들어, 마스터 프로세서(요구 프로세서)가 T-MESI 프로토콜을 지원하나 상기 시스템이 상기 수정된 값을 메모리 계층의 하부(예를 들어 계층 하부의 L3 캐시)로 가져오길 원할 수 있다.
상기한 바와 같이, 표 1 및 표 2에 나타나지 않은 상태 및 동작에 대한, 전이(transition) 및 일관성 응답은 종래의 MESI 프로토콜에 따라서 수행된다. 도 3에 구현된 T-MESI 프로토콜에 대하여 추가로 언급될 만한 점은 다음과 같다. 엔트리는 현재 I 상태인 경우에만 T 상태로 전환할 수 있고(즉, 이미 S 상태에 있는 경우 상기 엔트리는 S 상태로 계속 유지되며, 만일 하나의 캐시가 T 상태로 소정 값을 유지하고 있으면, 상기 엔트리는 M 또는 E 상태의 임의 다른 캐시에 유지될 수 없음), 태그된 엔트리는 수정된 개입 응답에 따라 S 상태로, 할당해제 또는 DClaim 푸쉬에 따라 I 상태로 또는 동일 프로세서가 이미 수정된 데이터를 추가적으로 수정하는 경우 M 상태로 전환 할 수 있다.
이러한 새로운 T-MESI 프로토콜에 의하여, 블록의 소유권은 상기 데이터를 판독하는 마지막 캐시로 이동하는데, 이것은 가장 최근에 사용된 캐시 상태를 유지하는 추가적 이득을 가짐으로써 LRU 대체 메카니즘이 사용된 경우에 할당해제의 빈도를 완화시킨다. 상기 "T" 캐시 상태는, 캐시된 입출력 상태 위치(I/O status location)를 가장 최근에 판독한 프로세서/캐시를 인터럽트하는 지능형 입출력 컨트롤러와 같은 다른 응용 요소에 사용될 수 있다. 이 프로세서/캐시는 상기 캐시된 I/O 장치 드라이버 코드를 가질 가능성이 가장 높으므로 상기 코드를 프로세서의 캐시에 인출(fetch)할 필요가 있는 다른 프로세서보다 빠르게 실행할 수 있는 장점이 있다. 물론 본 발명은 수정 및 개입 데이터의 공유를 가능하게 한다는 점에서 특히 장점이 있다.
상기 "T" 상태의 다른 특징은 이 상태에 있는 캐시 라인이 할당해제되는 경우, 상기 범용화된 상호접속망을 통하여 모든 프로세서가 상기 할당해제를 알 수 있다는데 있다[가시성(visibility)이라 함]. 상기 할당해제의 가시성은 캐시 상태의 히스토리 정보를 지원한다는 점에서 추가적 이점을 제공한다. 표 1에서 설명된 예와 유사한 각각의 캐시 라인이 I 상태에서 시작하는 3개의 프로세서의 예를 생각한다. 첫 번째 프로세서가 RWITM 동작을 실행하면, 이 프로세서의 캐시 라인은 I 상태에서 M 상태로 변하고 두 번째 프로세서가 그 후에 상기 캐시 라인의 판독을 요구하면 상기 첫 번째 프로세서는 상기 데이터를 개입하여 그 캐시 라인을 S 상태로 전환하며, 상기 두 번째 프로세서의 캐시 라인은 I 상태로부터 T 상태로 변화한다(표 1의 처음 3째 행까지와 유사함). 그러나 상기 첫 번째 프로세서가 그 캐시 라인이 "ST"(공유-태그됨, shared-tagged)로 언급되는 특별한 형식의 공유상태를 가지고 있다고 표시한다. 그리고 나서, 만일 상기 세 번째 프로세서가 상기 T 상태(예를 들어, LRU 메카니즘을 통함)의 캐시 라인을 할당해제하면, 상기 첫 번째 프로세서는 상기 할당해제를 인식하게 되고 ST상태에 있는 그 캐시 라인을 다른 상태로 변화시킴으로써 응답할 수 있다. 이때, 상기 다른 상태는 특정 구현에 따라 달라진다. 예를 들어, 상기 태그된 캐시 라인은 시스템 메모리로 기록될 수 있으며, ST상태의 캐시 라인은 공유된 데이터의 개입에 사용될 수 있는 "R" 상태(최근 액세스된 상태)라 언급되는 특별한 상태로 전환될 수 있다. 상기 R 상태에 대하여는 이하에서 상세히 설명할 것이며, 또한 본 명세서에서 참조한 미국 특허 출원 제 08/839,557호(1997.4.14 출원)에 논의되어 있다.
다른 구현 예에 따르면, 할당해제에 따라 상기 수정된 데이터 값을 T 상태 캐시 라인으로부터 시스템 메모리로 기록하는 것보다 오히려 ST상태의 상기 캐시 라인을 상기 값의 푸쉬를 생략하면서 단순히 T 상태로 복귀시킬 수 있다. 또한 상기 공유-태그된 블록의 데이터는 동일하기 때문에 상기 데이터를 태그된 캐시 블록으로부터 복사할 필요가 없으며, 단지 캐시 상태만 갱신된다. 표 3의 처음 4행에는 이러한 단계가 설명되어있다.
P0 P1 P2
초기상태 I I I
P0RWITM M I I
P1판독 ST T I
P1LRU 할당해제 T I I
P1판독 ST T I
P2판독 S ST T
P2LRU 할당해제 S T I
P2판독 S ST T
이 ST의 사용은 태그된 캐시 라인의 할당해제 후 개입을 유지하도록 하기 때문에 시스템 성능을 향상시킨다.
표 3의 처음 4행은 M 상태 캐시 블록의 변환으로부터 유래한 ST상태의 사용을 나타내며, 표 3의 밑에서부터 4행은 어떻게 태그된 캐시 블록이 ST상태로 전환하는가를 나타낸다. 5 및 6행은 프로세서에서 프로세서로 이주하는 T 상태 캐시 블록을 나타내고 있으며 이 때 프로세서 P1의 캐시 블록은 T 상태에서 ST상태로 전환하고, ST상태에 있던 프로세서 P0의 캐시 블록은 S 상태로 전환된다. 7행은 P2의 캐시 블록이 할당해제되어 P1의 캐시 블록이 ST상태에서 다시 T 상태로 전환됨을 설명한다. 이 시점에는 하나는 S 상태이며 다른 하나는 T 상태일지라도 ST상태에 있는 캐시 블록은 없다(이러한 상태는 공유-태그된캐시 라인이 조기에 할당해제되면 발생할 수 있음). 그럼에도 불구하고, 프로세서 P2가 다른 판독을 요구하는 마지막 행과 같이 상기 ST상태는 여전히 다시 나타날 수 있다.
이러한 접근법은, 시스템 메모리로의 기록 동작을 피하기 위해 상기 ST상태의 캐시 블록에 따르길 원한다는 메시지를 상기 T 상태의 캐시 라인으로 하여금 동보(broadcast, 同報)하도록 함으로써 구현될 수 있다. ST상태의 캐시 라인이 상기 메시지를 수신하면, 그 캐시 라인은 적절한 응답을 전송하고 상기 T 상태의 캐시 라인은 단순히 할당해제된다. 만일 응답이 없으면(즉 ST상태에 있는 캐시 라인이 없으면) 상기 태그된 캐시 라인을 갖는 프로세서는 상기 수정된 값을 시스템 메모리에 할당해제에 따라서 기록해야 한다.
이전의 ST상태의 구현에서는, 상기 태그된 캐시 라인의 할당해제에 따라서 오직 하나의 캐시 라인만이 다른 상태로 진행될 수 있다. 좀더 정교한 다른 구현예에서는, 캐시의 히스토리 정보를 갖는 다중 레벨이 제공될 수 있다. 예를 들어서, 오직 하나의 공유-태그된 캐시 블록만이 주어진 시간에 존재하는 대신에, ST상태의 많은 캐시 블록이 존재할 수 있다. 이러한 구현은 자신의 레벨에 따라 일련 번호를 각 공유-태그된 캐시에 부여함으로써 쉽게 달성될 수 있다. 즉 상기 데이터를 방금 상기 "T"캐시 라인에 제공한 캐시 라인에는 ST1상태를 부여하고, 상기 데이터를 종전에 상기 ST1캐시 라인에 제공한 캐시 라인에는 ST2상태를 부여하고, 상기 데이터를 종전에 상기 ST2캐시 라인에 제공한 캐시 라인에는 ST3상태를 부여한다. 상기 태그된 캐시 라인이 할당해제되면, 모든 공유-태그된 캐시 라인은 표 4에 설명된 바와 같이 한 레벨씩 진행한다.
P0 P1 P2 P3
초기상태 I I I I
P0RWITM M I I I
P1판독 ST1 T I I
P2판독 ST2 ST1 T I
P3판독 ST3 ST2 ST1 T
P3LRU 할당해제 ST2 ST1 T I
표 1 및 표 3과 유사한 표 4의 처음 3행에서, P0프로세서의 캐시 라인은 M 상태가 되고, 상기 값을 T 상태가 되는 P1프로세서의 캐시 라인에 제공한다. 상기 P0프로세서의 캐시 라인은 ST1레벨로 전환한다. 다음의 2 행에서, 상기 태그된 캐시 라인은 프로세서 P2및 P3로 이주하며, 반면 이전에 태그된 캐시 라인은 ST1레벨로 전환한다. 다섯째 행에서 ST1레벨인 모든 캐시 라인은 ST2레벨로 전환하며, 상기 P0의 캐시 라인은 ST2레벨에서 ST3레벨로 전환한다. 여섯째 행에서, 상기 프로세서 P3의 캐시 라인은 LRU 메카니즘에 의하여 할당해제된다. 상기 프로세서 P2의 ST1캐시 라인은 상기 T 상태로 전환하고, 상기 프로세서 P0의 ST3캐시 라인은 상기 ST2상태로 전환한다.
상기 ST상태 레벨에 일련의 식별자를 사용하면, 특정 STn레벨 상태의 캐시 라인이 할당해제될 가능성을 줄일 수 있으며, 이에 따라 상기 수정된 값이 수평 캐시 구조에 잔존할 전체적인 가능성을 증가시키기 때문에 LRU 할당해제 메카니즘에 관한 성능을 향상시킬 수 있다. 캐시의 히스토리 정보의 레벨 수는 상기 캐시 라인의 캐시 일관성 상태 필드의 비트 수에 의하여 제한 받는다.
본 발명에 대한 이전의 설명은 상기 기술은 일반적으로 임의 레벨 예를 들어 L2, L3 등의 캐시 구조에 적용할 수 있지만, 특히 다중 레벨 캐시의 경우에 본 발명은 약간 변경된 모델을 적용할 수 있다. 도 4는 2개의 CPU 클러스터(42a 및 42b)를 포함하는 멀티프로세서 컴퓨터 시스템(40)을 도시하고 있다. CPU 클러스터(42a)는 4개의 CPU(44a, 44b, 44c 및 44d)를 가지며, 각 CPU는 프로세서 코어, 온보드(L1) 인스트럭션 및 데이터 캐시와, L2 캐시를 가진다. 이들 4개 CPU(44a, 44b, 44c 및 44d)의 L2 캐시는 공유된 L3 캐시(46a)에 연결되며, L3 캐시는 범용화된 상호접속망 또는 버스(50)를 통하여 시스템 메모리(RAM, 48)에 연결된다. CPU 클러스터(42b)는 CPU 클러스터 (41a)와 유사하게 4개의 CPU(44e, 44f, 44g 및 44h)를 가지며, 각 CPU는 프로세서 코어, 온보드(L1) 인스트럭션 및 데이터 캐시와, L2 캐시를 가진다. 이들 4개 CPU(44e, 44f, 44g 및 44h)의 L2 캐시는 버스(50)를 통하여 메모리(48)에 연결된 다른 공유된 L3 캐시(46b)에 연결된다. T-MESI 프로토콜의 계층적 변형에서는, 대응 캐시 라인 중 최대 3개까지 상기 T 상태가 될 수 있다. 즉 CPU(44a, 44b, 44c 및 44d)의 L2 캐시 중 하나, CPU(44e, 44f, 44g 및 44h)의 L2 캐시 중 하나와, 두 L3 캐시(46a 및 46b)중 하나만이 T 상태가 될 수 있다.
CPU(44a - 44h)의 모든 대응 캐시 라인이 I 상태에서 시작한다고 가정한다. 프로세서(44a)는 RWITM 동작을 실행하며, 이에 따라 이 프로세서의 캐시 라인(L2)은 I 상태에서 M 상태로 변하고 L3 캐시(46a)의 대응 캐시 라인 또한 I 상태에서 M 상태로 변한다. 그 후에, 프로세서(44b)는 상기 캐시 라인의 판독을 요구한다. 상기 프로세서(44b)의 캐시 라인(L2)이 I 상태에서 T 상태로 변화하는 동안, 프로세서(44a)는 개입하고 그 캐시 라인(L2)은 상기 S 상태로 전환한다. 상기 L3 캐시(46a)의 캐시 라인은 M 상태로 유지된다. 그 후, 프로세서(44e)가 상기 캐시 라인의 판독을 요구한다. 프로세서(44b)는 개입을 하지만 프로세서(44e)와는 다른 CPU 클러스터에 속하기 때문에 프로세서(44b)의 캐시 라인(L2)은 T 상태로 유지된다. 상기 프로세서(44e)의 캐시 라인(L2)은 그럼에도 불구하고 I 상태에서 T 상태로 전환한다. 또한 상기 개입된 데이터는 두 L3 캐시(46a, 46b)를 통하여 전달되기 때문에, 상기 L3 캐시(46a)의 캐시 라인은 M 상태에서 S 상태로 전환하며 상기 L3 캐시(46b)의 캐시 라인은 I 상태에서 T 상태로 전환한다. 그 후에, 프로세서(44f)가 상기 캐시 라인의 판독을 요구하면, 상기 프로세서(44e)의 캐시 라인(L2)에 의하여 제공될 수 있다. 이러한 경우, 상기 프로세서(44e)의 캐시 라인(L2)은 T 상태에서 S 상태로 전환하며 상기 프로세서(44f)의 캐시 라인(L2)은 I 상태에서 T 상태로 전환한다. 이러한 단계는 표 5에 설명되어 있다.
L244a L244b L244e L244f L346a L346b
초기상태 I I I I I I
P44aRWITM M I I I M I
P44b판독 S T I I M I
P44e판독 S T T I S T
P44f판독 S T S T S T
표 5의 마지막 행에서, 각 CPU 클러스터는 각각 하나의 T 상태 캐시 라인을 가지며, 상기 L3 캐시 중 하나 또한 T 상태의 캐시 라인을 가진다. 이러한 상태 하에서는, 상기 수정된 데이터가 지역 프로세서(즉 상기 요구 프로세서와 동일한 클러스터에 속한 프로세서)로부터 상기 L2 레벨로 제공될 수 있어 성능을 더욱 향상시킬 수 있다. 따라서 그 후에 만일 프로세서(44c)가 상기 캐시 라인의 판독을 요구하는 경우에는 상기 프로세서(44b)의 캐시 라인(L2)에 의해 이 요구를 충족시키지만, 만일 프로세서(44g)가 상기 캐시 라인의 판독을 요구하는 경우에는 상기 프로세서(44f)의 캐시 라인(L2)에 의해 이 요구를 충족시킨다. 이 두 동작은 L3 캐시(46a 및 46b)에 어떠한 동작도 초래하는 일없이 L2 레벨에서 발생한다. 만일 2 이상의 CPU 클러스터가 있다면, 상기 "T" 캐시 라인은 부가된 L3 캐시 사이에서 상기와 유사하게 이주할 수 있다. 이 개념은 3 캐시 레벨(L1, L2, L3) 이상을 가지는 캐시 아키텍처에 확장될 수 있다. 상기 "T" 상태는 모든 레벨에서 구현될 필요가 있는 것은 아니다.
또한 본 발명은 이미 언급되었고 상기한 미국 특허 출원번호 제08/839,557호에 논의된 R-MESI 프로토콜과 같은 MESI 프로토콜의 다른 변형과 결합될 수 있다. 상기 프로토콜에 따르면, 공유된 데이터를 판독한 마지막 캐시에 R 상태(Recent state)를 부여하여 공유된 개입 응답을 가능하게 한다. 따라서 RT-MESI 프로토콜의 조합이 고안될 수 있으며, 도 5에는 이러한 RT-MESI 프로토콜의 하나의 실시예가 도시되어 있다. 이러한 혼합형 프로토콜에서, T 상태에 있는 캐시 라인은 상기 수정된 값이 상기 메모리 계층상 어떤 다른 위치(즉 다른 캐시 또는 시스템 메모리)에 제공되면 상기 R 상태로 전환할 수 있으며, M 상태에 있는 캐시 라인은 상기와 유사하게 다른 위치로 제공하는 경우 R 상태로 전환한다. 이러한 예가 표 6에 나타내어져 있다.
P0 P1 P2
초기 상태 I I I
P0RWITM M I I
P1판독 R T I
P2판독 S R T
P2할당해제 S R I
표 6에서, 프로세서 P1, P2, P3의 대응하는 3개 캐시 라인 모두 I 상태에서 시작하며(표 1과 유사함), 프로세서 P0가 대응하는 메모리 블록에 RWITM을 실행하는 경우 그 캐시 라인은 M 상태가 된다. 프로세서 P1이 판독 동작을 실행하는 경우 그 대응 캐시 라인은 T 상태로 전환하나 상기 프로세서 P0의 캐시 라인은 S 상태 대신에 R 상태로 전환한다(표 6의 3행). 그 후, 프로세서 P2가 판독 동작을 실행할 때, 그 캐시 라인은 T 상태로 전환하나 반면 상기 프로세서 P1의 캐시 라인은 R 상태로 전환하며 상기 프로세서 P0의 캐시 라인은 S 상태로 전환한다(표 6의 4행). 그리고 나서, 프로세서 P2가 예를 들어 LRU 알고리즘 때문에 상기 블록을 할당해제하면, 프로세서 P1은 여전히 상기 값을 "R" 상태로 유지한다. 이 방법에서, 프로세서 P1은 장래에 상기 값을 상기 공유된 개입 응답을 통하여 제공할 수 있다. 이 프로토콜의 다른 변형예에서, E 상태는 생략될 수 있으며 상기 R 상태에 의하여 효과적으로 대체될 수 있다.
본 기술분야의 통상의 지식을 가진 자는 이전에 설명한 "ST" 상태를 사용한 혼합형과 같은 좀더 복잡한 형태의 RT-MESI 프로토콜이 가능함을 알 수 있다. 여기서, 상기 "ST" 상태의 캐시 라인은 현재 상기 값을 "T" 상태에 유지하고 있는 캐시 라인의 할당해제에 따라 상기 값이 시스템 메모리에 기록되어 있다고 가정하여 "T" 상태 대신에 "R" 상태로 전환한다. 다중 ST상태에 의해 제공되는 캐시의 히스토리 정보를 사용하여 유사한 실시예를 고안할 수 있다. 또한 상기 RT-MESI 프로토콜은 도 4의 전역/지역 캐시 구조와 함께 구현될 수 있다. 예를 들어, M 상태에 값을 유지하고 있는 프로세스 유닛(44d)의 지역 캐시가 상기 값을 프로세스 유닛(44h)에 제공한다고 가정한다. 전과 같이, 상기 프로세스 유닛(44h)의 캐시 라인은 I 상태에서 T 상태로 전환하나 상기 프로세스 유닛(44d)의 캐시 라인은 현재 M 상태에서 R 상태로 전환할 수 있다.
상기 "T" 및 "R" 상태 모두는 값을 공유하는 캐시 블록의 그룹으로부터 하나의 캐시 블록을 식별하는 메카니즘을 제공한다. 상기한 바와 같이, 상기 상태들의 이런 점은 상기 블록을 개입에 사용하기 편리하게 한다. 상기 블록에 대한 독특한 표시는 다른 이점을 갖게 한다. 이러한 이점 중 하나는 전에 언급한 DClaim 동작과 관계가 있다. 상기 동작은 실질적으로 많은 프로세서로부터 동시에 발행될 수 있어 충돌을 야기한다. 이때, 상기 T 상태는 충돌되는 다른 캐시로부터 의 요구에 우선하는 충돌 우선권을 부여하기 위해 사용될 수 있다. 이러한 충돌 우선권을 부여함으로써 상기 "T" 상태 블록으로부터의 DClaim 동작은 좀더 오랫동안 게시(post)되나, [예를 들어, 상기 메모리 계층의 나머지 부분으로 최후 동보(eventual broadcast)를 위하여 상기 DClaim 동작은 캐시 동작 큐에 위치됨] 상기 DClaim 저장 인스트럭션은 즉시 완료될 수 있어서 시스템 동작의 전체적인 고속화에 기여한다.
캐시 블록 다른 캐시 블록(수평적)에 가능한 상태
I Q QDQTQDTR RDRTRDTS SDSTSDTH M I
H Q QDQTQDTR RDRTRDTS SDSTSDTH M I
M I
Q R RDRTRDTS SDSTSDTH I
QD R RTS STH I
QT R RDS SDH I
QDT R S H I
R Q QDQTQDTS SDSTSDTH I
RD Q QTS STH I
RT Q QDS SDH I
RDT Q S H I
S Q QDQTQDTR RDRTRDTS SDSTSDTH I
SD Q QTR RTS STH I
ST Q QDR RDS SDH I
SDT Q R S H I
상기 "T" 상태는 (i) 데이터의 개입, (ii) 수정된 데이터를 메모리 계층에 기록하는 책임의 추적, (iii) DClaim 충돌 우선권의 제공에 유용하게 사용될 수 있지만, 이 3가지 기능은 단일 일관성 상태로 결합될 필요는 없다. 표 7은 이들 기능이 독립적으로 수행되는 좀더 복잡한 일관성 프로토콜을 나타내고 있다.
표 7에서, 좌측 열은 특정 캐시 블록의 상태를 표시하고 있으며, 우측 열은 다른 수평적 캐시(동일 레벨의 캐시)의 대응 블록이 가질 수 있는 일관성 상태를 표시하고 있다. 이 프로토콜 변형에는 15개의 일관성 상태가 있으며 이에 따라 상기 일관성 필드를 위해 4비트가 필요하다. 상술한 3가지 기능은 다음과 같이 독립적으로 할당된다. 첫째, 아래 첨자 "D"를 가지는 일관성 상태(QD, QDT, RD, RDT, SD, SDT)는 DClaim 동작을 게시할 수 있다(즉 이러한 블록은 만일 충돌 DClaim 요구가 발생하면, 충돌 우선권을 가짐). 둘째, 아래 첨자 "T"를 가지는 일관성 상태(QT,QDT,RT,RDT,ST또는SDT)는 수정된 값을 상기 메모리 계층의 하부에 기록할 책임이 있다. 셋째, 임의 "R[X]" 일관성 상태(R, RD,RT또는RDT)는 상기 값에 개입할 권한이 있다. "Q[X]" 일관성 상태(Q, QD,QT또는QDT)는 "R[X]" 상태가 존재하지 않을 때 개입을 제공한다. 즉 "R[X]" 상태가 1차 개입을 허용하고, "Q[X]" 상태(historical)가 2차 개입을 허용한다. 상기 "H" 상태는 이하 설명될 "Hover" 상태이다. 본 실시예에서 "E" 상태는 사용되지 않는다.
상기 언급된 3가지 기능은 독립적으로 구현될 수 있지만 그럼에도 불구하고, 특정 일관성 상태에 결합될 수 있다. 개입과 기록 책임의 두 기능은 상기 RT및 QT상태에서 결합된다. 개입과 DClaim 우선권의 두 기능은 상기 RD및 QD상태에서 결합된다. 기록 책임과 DClaim 우선권의 두 기능은 상기 STD상태에서 결합된다. 상기 세 기능 모두 상기 QDT및 RDT상태에 결합된다. 이들 세 기능의 독립성은 데이터 흐름 엔진(data flow engine)을 사용한 시스템 비트의 설정에 의하여 제어될 수 있다. 이러한 개념은 또한 상기 CPU 클러스터를 지원하는 캐시에도 사용될 수 있다.
마지막으로, 본 발명은 또한 "크로스-바"의 사용과 특히 호환성이 있다. 종래 캐시 디자인은 통신 향상을 위하여 주소 크로스-바(address cross-bar) 및 데이터 크로스-바(data cross-bar) 모두를 사용한다. 일반적으로 캐시는 2 지점간 통신로(point-to-point communication)를 갖지 않지만 메모리 계층상 다른 위치에 동보 방식으로 요구 및 응답을 발행해야 한다. 크로스-바는 버스를 좀더 효율적으로 사용하기 위하여 상기 요구 및 응답을 버스의 다른 경로로 안내하는 단순한 전환 또는 중계기이다. 환언하면, 모든 캐시는 상기 크로스-바에 상호 접속되며, 상기 크로스-바는 큐(queue)를 유지하여 상기 버스의 다양한 경로 상으로 상기 캐시 동작이 고르게 분배되도록 하여 상당히 많은 버스 대역폭을 생성한다. 시스템 컨트롤러는 이 크로스-바를 제어할 수 있으며, 소정 캐시(예컨대, L2)는 이 크로스-바 컨트롤러에게 자신이 소정 태그에 관한 동작을 찾아야 한다는 것을 알려야 한다.
특정 주소 및 데이터 동작은 이 동작을 요구하는 장치에만 제시되기 때문에 상기 T-MESI 프로토콜은 크로스-바와 관련하여 유용하다. "T" 상태의 캐시 블록을 갖는 프로세스 유닛과, "ST" 상태의 대응 블록을 갖는 프로세스 유닛과, "I" 상태의 대응 블록을 갖는 2개의 프로세스 유닛을 가정한다. 상기 "I" 상태의 2개 프로세서중 하나가 상기 값의 판독을 요구하면, 시스템 로직은 가장 상위의 우선권 응답(태그된 개입)이 오직 상기 4개 프로세서 중 3개에 전송되어야 한다고 결정할 수 있다. 따라서 이 주소 동작(address operation)은 4 번째 프로세서[I 상태의 캐시 블록을 갖는 비-요구(non-requesting) 프로세서]에는 제공되지 않는다. 유사하게, 상기 데이터 크로스-바는 상기 값을 오직 상기 요구 프로세서에만 제공하도록 사용될 수 있다. 만일 상기 태그된 개입 응답이 재시도 응답에 우선하는 우선권 부여 방법이 사용되면, 상기 응답은 상기 재시도 프로세서에 제시될 필요가 있다.
비록 본 발명은 특정 실시예를 참조하여 설명되었지만, 이 설명은 본 발명을 제한하는 의미로 해석됨을 뜻하는 것은 아니다. 본 발명의 실시예의 변형뿐만 아니라 상기 개시된 실시예의 다양한 개량은 본 발명의 설명을 참조하면, 당해 기술분야 통상의 지식을 갖는 자에게 명백해진다. 예를 들어, 상기 프로토콜은 R-MESI 프로토콜 이외의 캐시 일관성 프로토콜과 함께 사용될 수 있다. 이미 미국에 출원된 출원서(attorney docket no. AT9-97-410)는 유효한 값의 전송을 대기하도록 "Hover" 상태로 캐시 라인이 동작하는 "H-MESI" 프로토콜을 설명하고 있는 바, 상기 H-MESI 프로토콜은 상기 Hover 캐시 라인이 유효 값을 로드(적재)하였을 때 "H" 상태의 캐시 라인을 "ST" 상태로 전환하도록 하여 본 T-MESI 프로토콜에 결합될 수 있다. 따라서 상기 변형 및 개량은 특허 청구범위에 정의된 본 발명의 사상 또는 범위를 벗어나지 않고 달성될 수 있다.
본 발명은 멀티프로세서 컴퓨터 시스템의 캐시 일관성을 유지하는 개선된 방법을 제공하며, 캐시 개입을 허용하지만 시스템 메모리에 대한 불필요한 기록동작을 회피할 수 있고, 수정된 데이터가 공유된 상태로 다수의 다른 캐시에 유지되면, 상기 데이터의 개입을 허용하는 효과가 있다.

Claims (22)

  1. 각각 적어도 하나의 캐시를 가지는 다수의 프로세스 유닛을 포함하는 멀티프로세서 컴퓨터 시스템에서 캐시 일관성을 유지하는 방법에 있어서,
    a) 메모리 블록에 관련되는 값을 각각 제1 캐시 및 제2 캐시―여기서 상기 제1 캐시 및 제2 캐시는 각각 제1 프로세스 유닛 및 제2 프로세스 유닛을 지원함―에 위치하는 제1 캐시 블록과 제2 캐시 블록에 복사하는 단계;
    b) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 값의 공유된 카피를 포함하며 상기 값을 배타적으로 제공한다는 것을 나타냄―를 부여하는 단계; 및
    c) 상기 제2 캐시 블록에 제2 일관성 상태―여기서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 값의 공유된 카피를 포함하며 서로 충돌하는 상기 메모리 블록에 대한 요구에 대하여 충돌 우선권을 가진다는 것을 나타냄―를 부여하는 단계
    를 포함하는 것인 캐시 일관성 유지 방법.
  2. 제1항에 있어서,
    상기 값은 상기 메모리 블록의 이전 값에 대해 수정된 값이며,
    상기 방법은
    제3 프로세스 유닛을 지원하는 제3 캐시에 위치하는 제3 캐시 블록으로 상기 수정된 값을 복사하는 단계; 및
    상기 제3 캐시 블록에 제3 일관성 상태―여기서 제3 일관성 상태는 상기 제3 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 상기 수정된 값을 상기 메모리 블록에 기록할 책임이 있다는 것을 나타냄―를 부여하는 단계
    를 더 포함하는 것인 캐시 일관성 유지 방법.
  3. 제1항에 있어서,
    상기 제1 캐시 블록으로부터 제3 프로세스 유닛을 지원하는 제3 캐시에 위치하는 제3 캐시 블록에 상기 값을 제공하는 단계를 더 포함하는 것인 캐시 일관성 유지 방법.
  4. 제1항에 있어서,
    장래 수정을 위해 상기 메모리 블록을 요청하는 다른 캐시 블록에 관련되는 제1 요구를 발행하는 단계;
    장래 수정을 위해 상기 메모리 블록을 요청하는 상기 제2 캐시 블록에 관련되는 제2 요구를 발행하여, 상기 제2 요구가 상기 제1 요구와 충돌되도록 하는 단계; 및
    상기 제2 요구를 발행하는 단계에 응답하여 상기 제1 요구를 철회하는 단계
    를 포함하는 것인 캐시 일관성 유지 방법.
  5. 제2항에 있어서,
    상기 제3 캐시 블록으로부터 상기 메모리 블록으로 상기 수정된 값을 기록하는 단계를 더 포함하는 것인 캐시 일관성 유지 방법.
  6. a) 시스템 메모리 장치;
    b) 상기 시스템 메모리 장치에 연결되는 버스;
    c) 상기 버스에 연결되며, 각각 상기 시스템 메모리 장치로부터의 값을 저장하기 위한 적어도 하나의 캐시 블록을 가지고 있는 다수의 프로세스 유닛; 및
    d) ⅰ) 상기 시스템 메모리 장치의 메모리 블록에 관련되는 값을 각각 제1 및 제2 프로세스 유닛과 관련되는 제1 및 제2 캐시 블록으로 복사하며,
    ⅱ) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 값의 공유된 카피를 가지고 있으며 상기 값을 배타적으로 제공한다는 것을 나타냄―를 부여하며,
    ⅲ) 상기 제2 캐시 블록에 제2 일관성 상태―여기서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 값의 공유된 카피를 포함하며 서로 충돌하는 상기 메모리 블록에 대한 요구에 대하여 충돌 우선권을 가진다는 것을 나타냄-를 부여하는
    캐시 일관성 수단
    을 포함하는 것인 컴퓨터 시스템.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 각각 적어도 하나의 캐시를 가지는 다수의 프로세스 유닛을 포함하는 멀티프로세서 컴퓨터 시스템에서 캐시 일관성을 유지하는 방법에 있어서,
    a) 메모리 블록에 관련되는 값―여기서 관련되는 값은 상기 메모리 블록의 이전 값에 대해 수정된 값임―을 제1 프로세스 유닛 및 제2 프로세스 유닛을 각각 지원하는 제1 캐시 및 제2 캐시에 위치하는 제1 캐시 블록과 제2 캐시 블록에 복사하는 단계;
    b) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 상기 수정된 값을 상기 메모리 블록에 기록할 책임이 있다는 것을 나타냄―를 부여하는 단계; 및
    c) 상기 제2 캐시 블록에 제2 일관성 상태―여기서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 서로 충돌하는 상기 메모리 블록의 요구에 대하여 충돌 우선권을 가진다는 것을 나타냄―를 부여하는 단계
    를 포함하는 것인 캐시 일관성 유지 방법.
  12. 제11항에 있어서,
    장래 수정을 위해 상기 메모리 블록을 요청하는 다른 캐시 블록에 관련되는 제1 요구를 발행하는 단계;
    장래 수정을 위해 상기 메모리 블록을 요청하는 상기 제2 캐시 블록에 관련되는 제2 요구를 발행하여, 상기 제2 요구가 상기 제1 요구와 충돌되도록 하는 단계; 및
    상기 제2 요구를 발행하는 단계에 응답하여 상기 제1 요구를 철회하는 단계
    를 더 포함하는 것인 캐시 일관성 유지 방법.
  13. 제11항에 있어서,
    상기 제1 캐시 블록으로부터 상기 메모리 블록으로 상기 수정된 값을 기록하는 단계를 더 포함하는 것인 캐시 일관성 유지 방법.
  14. a) 시스템 메모리 장치;
    b) 상기 시스템 메모리 장치에 연결되는 버스;
    c) 상기 버스에 연결되며, 각각 상기 시스템 메모리 장치로부터의 값을 저장하기 위한 적어도 하나의 캐시 블록을 가지고 있는 다수의 프로세스 유닛; 및
    d) ⅰ) 상기 시스템 메모리 장치의 메모리 블록에 관련되며 상기 메모리 블록의 이전 값에 대하여 수정된 값을 각각 제1 및 제2 프로세스 유닛과 관련되는 제1 및 제2 캐시 블록으로 복사하며,
    ⅱ) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 수정된 값의 공유된 카피를 가지고 있으며 상기 수정된 값을 상기 메모리에 기록한다는 것을 나타냄―를 부여하며,
    ⅲ) 상기 제2 캐시 블록에 제2 일관성 상태―여기서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 서로 충돌하는 상기 메모리 블록의 요구에 대하여 충돌 우선권을 가진다는 것을 나타냄―를 부여하는
    캐시 일관성 수단
    을 포함하는 것인 컴퓨터 시스템.
  15. 삭제
  16. 삭제
  17. 각각 적어도 하나의 캐시를 가지는 다수의 프로세스 유닛을 포함하는 멀티프로세서 컴퓨터 시스템에서 캐시 일관성을 유지하는 방법에 있어서,
    a) 메모리 블록에 관련되는 값―여기서 관련되는 값은 상기 메모리 블록의 이전 값에 대해 수정된 값임―을 제1 프로세스 유닛 및 제2 프로세스 유닛을 각각 지원하는 제1 캐시 및 제2 캐시에 위치하는 제1 캐시 블록과 제2 캐시 블록에 복사하는 단계;
    b) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 상기 수정된 값을 상기 메모리 블록에 기록할 책임이 있다는 것을 나타냄―를 부여하는 단계; 및
    c) 상기 제2 캐시 블록에 제2 일관성 상태―여기서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 상기 수정된 값을 배타적으로 제공한다는 것을 나타냄―를 부여하는 단계
    를 포함하는 것인 캐시 일관성 유지 방법.
  18. 제17항에 있어서,
    상기 수정된 값을 상기 제2 캐시 블록으로부터 제3 프로세스 유닛을 지원하는 제3 캐시에 위치하는 제3 캐시 블록으로 제공하는 단계를 더 포함하는 것인 캐시 일관성 유지 방법.
  19. 제17항에 있어서,
    상기 제1 캐시 블록으로부터 상기 메모리 블록으로 상기 수정된 값을 기록하는 단계를 더 포함하는 것인 캐시 일관성 유지 방법.
  20. a) 시스템 메모리 장치;
    b) 상기 시스템 메모리 장치에 연결되는 버스;
    c) 상기 버스에 연결되며, 각각 상기 시스템 메모리 장치로부터의 값을 저장하기 위한 적어도 하나의 캐시 블록을 가지고 있는 다수의 프로세스 유닛; 및
    d) ⅰ) 상기 시스템 메모리 장치의 메모리 블록에 관련되며 상기 메모리 블록의 이전 값에 대하여 수정된 값을 각각 제1 및 제2 프로세스 유닛과 관련되는 제1 및 제2 캐시 블록으로 복사하며,
    ⅱ) 상기 제1 캐시 블록에 제1 일관성 상태―여기서 제1 일관성 상태는 상기 제1 캐시 블록이 상기 수정된 값의 공유된 카피를 가지고 있으며 상기 수정된 값을 상기 메모리에 기록한다는 것을 나타냄―를 부여하며,
    ⅲ) 상기 제2 캐시 블록에 제2 일관성 상태―여시서 제2 일관성 상태는 상기 제2 캐시 블록이 상기 수정된 값의 공유된 카피를 포함하며 상기 수정된 값을 배타적으로 제공한다는 것을 나타냄―를 부여하는
    캐시 일관성 수단
    을 포함하는 것인 컴퓨터 시스템.
  21. 삭제
  22. 삭제
KR1019990004882A 1998-02-17 1999-02-11 최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜 KR100330935B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/024,306 US6141733A (en) 1998-02-17 1998-02-17 Cache coherency protocol with independent implementation of optimized cache operations
US9/024,306 1998-02-17
US09/024,306 1998-02-17

Publications (2)

Publication Number Publication Date
KR19990072598A KR19990072598A (ko) 1999-09-27
KR100330935B1 true KR100330935B1 (ko) 2002-04-01

Family

ID=21819913

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990004882A KR100330935B1 (ko) 1998-02-17 1999-02-11 최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜

Country Status (7)

Country Link
US (1) US6141733A (ko)
EP (1) EP0936555B1 (ko)
JP (1) JPH11272557A (ko)
KR (1) KR100330935B1 (ko)
CN (1) CN1143227C (ko)
DE (1) DE69900797T2 (ko)
TW (1) TW400478B (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446237B1 (en) * 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6397300B1 (en) * 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6438651B1 (en) * 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US6345343B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Multiprocessor system bus protocol with command and snoop responses for modified-unsolicited cache state
US6345342B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US6374333B1 (en) * 1999-11-09 2002-04-16 International Business Machines Corporation Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6345344B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6349369B1 (en) * 1999-11-09 2002-02-19 International Business Machines Corporation Protocol for transferring modified-unsolicited state during data intervention
US6405289B1 (en) * 1999-11-09 2002-06-11 International Business Machines Corporation Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
US6321306B1 (en) * 1999-11-09 2001-11-20 International Business Machines Corporation High performance multiprocessor system with modified-unsolicited cache state
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6901450B1 (en) 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7500036B2 (en) * 2000-12-28 2009-03-03 International Business Machines Corporation Quad aware locking primitive
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6791412B2 (en) 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US7206879B2 (en) * 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
US7394823B2 (en) 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6748479B2 (en) 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US6807586B2 (en) * 2002-01-09 2004-10-19 International Business Machines Corporation Increased computer peripheral throughput by using data available withholding
KR100469360B1 (ko) * 2002-02-22 2005-02-02 엘지.필립스 엘시디 주식회사 액정표시소자의 제조 장비용 진공 합착 장치 및 구동 방법
US6965973B2 (en) 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US7003631B2 (en) 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US6993631B2 (en) 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7469321B2 (en) * 2003-06-25 2008-12-23 International Business Machines Corporation Software process migration between coherency regions without cache purges
CN1311367C (zh) * 2003-10-23 2007-04-18 英特尔公司 用于提高存取数据请求的处理速度的方法、装置和系统
US7584331B2 (en) * 2005-06-06 2009-09-01 International Business Machines Corporation Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
EP1988464B1 (en) 2006-02-24 2018-11-21 Fujitsu Ltd. Snoop control method and information processing device
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US9311085B2 (en) * 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
WO2014065873A1 (en) * 2012-10-22 2014-05-01 Jeff Willey Control messaging in multislot link layer flit
US9921962B2 (en) * 2015-09-24 2018-03-20 Qualcomm Incorporated Maintaining cache coherency using conditional intervention among multiple master devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110844A (ja) * 1992-08-11 1994-04-22 Toshiba Corp 分散共有メモリ型マルチプロセッサシステム
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5749095A (en) * 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5832276A (en) * 1996-10-07 1998-11-03 International Business Machines Corporation Resolving processor and system bus address collision in a high-level cache
US5946709A (en) * 1997-04-14 1999-08-31 International Business Machines Corporation Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing

Also Published As

Publication number Publication date
DE69900797T2 (de) 2002-09-19
CN1226705A (zh) 1999-08-25
KR19990072598A (ko) 1999-09-27
CN1143227C (zh) 2004-03-24
EP0936555B1 (en) 2002-01-23
US6141733A (en) 2000-10-31
TW400478B (en) 2000-08-01
EP0936555A3 (en) 1999-09-22
EP0936555A2 (en) 1999-08-18
DE69900797D1 (de) 2002-03-14
JPH11272557A (ja) 1999-10-08

Similar Documents

Publication Publication Date Title
KR100330935B1 (ko) 최적화된 캐시 동작을 독립적으로 구현하는 캐시 일관성 프로토콜
US6018791A (en) Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states
US6145059A (en) Cache coherency protocols with posted operations and tagged coherency states
US6330643B1 (en) Cache coherency protocols with global and local posted operations
US6405289B1 (en) Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
US6868481B1 (en) Cache coherence protocol for a multiple bus multiprocessor system
US5940856A (en) Cache intervention from only one of many cache lines sharing an unmodified value
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US5946709A (en) Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
US5963974A (en) Cache intervention from a cache line exclusively holding an unmodified value
US6334172B1 (en) Cache coherency protocol with tagged state for modified values
US5940864A (en) Shared memory-access priorization method for multiprocessors using caches and snoop responses
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
US5943685A (en) Method of shared intervention via a single data provider among shared caches for SMP bus
US6418514B1 (en) Removal of posted operations from cache operations queue
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
US6247098B1 (en) Cache coherency protocol with selectively implemented tagged state
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6701416B1 (en) Cache coherency protocol with tagged intervention of modified values
US6341336B1 (en) Cache coherency protocol having tagged state used with cross-bars
US6345340B1 (en) Cache coherency protocol with ambiguous state for posted operations
US6347361B1 (en) Cache coherency protocols with posted operations

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee