KR20110031361A - 스누프 필터링 메커니즘 - Google Patents

스누프 필터링 메커니즘 Download PDF

Info

Publication number
KR20110031361A
KR20110031361A KR1020117002531A KR20117002531A KR20110031361A KR 20110031361 A KR20110031361 A KR 20110031361A KR 1020117002531 A KR1020117002531 A KR 1020117002531A KR 20117002531 A KR20117002531 A KR 20117002531A KR 20110031361 A KR20110031361 A KR 20110031361A
Authority
KR
South Korea
Prior art keywords
directory
node
cache
shared
entries
Prior art date
Application number
KR1020117002531A
Other languages
English (en)
Other versions
KR101497002B1 (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 KR20110031361A publication Critical patent/KR20110031361A/ko
Application granted granted Critical
Publication of KR101497002B1 publication Critical patent/KR101497002B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

프로브 명령들을 선택적으로 전송하고 네트워크 트래픽을 감소시키기 위한 시스템 및 방법이 제시된다. 디렉토리 엔트리들은 프로브 명령을 필터링하고 특정 코히어런트 트랜잭션들(coherent transactions)에 대해 응답하도록 유지된다. 지정된 디렉토리 저장소에 디렉토리 엔트리들을 저장하는 대신, 디렉토리 엔트리들은 L3 캐시와 같은 공유 캐시 메모리 서브시스템의 지정된 위치들에 저장될 수 있다. 디렉토리 엔트리들은 공유 캐시 메모리 서브시스템 내에 저장되어 배타적-수정, 소유, 공유, 일-공유, 또는 무효 코히어런시 상태들로 캐시되는 라인들(또는 블록들)에 대한 표시들을 제공한다. 특정 라인에 대한 디렉토리 엔트리의 부재는 그 라인이 컴퓨팅 시스템의 어디에서도 캐시되지 않음을 의미한다.

Description

스누프 필터링 메커니즘{SNOOP FILTERING MECHANISM}
본 발명은 고성능 컴퓨팅 네트워크 시스템에 관한 것이며, 보다 구체적으로는, 다중-프로세서 노드들에서 효율적인 캐시 일관성(cache coherency)를 유지하는 것에 관한 것이다.
최신 마이크로프로세서들에서, 하나 이상의 프로세서 코어들, 또는 프로세서들이 마이크로프로세서 내에 포함될 수 있으며, 여기서 각각의 프로세서는 슈퍼스칼라 파이프라인(superscalar pipleline)으로 명령어들을 실행할 수 있다. 판독 또는 기록 오퍼레이션에 대한 메모리 내에서의 마이크로프로세서의 데이터 요청 지연(latency)을 감소시키기 위하여, 마이크로프로세서는 하나 이상의 레벨들의 캐시 계층(cache hierarchy)에 연결될 수 있다. 일반적으로, 캐시는 하나 이상의 블록들을 저장할 수 있으며, 각각의 블록은 시스템 메모리내의 대응 주소에 저장된 데이터의 사본(copy)이다. 본 명세서에서, "블록"은 연속적인 메모리 위치들에 저장된 바이트들의 세트이며, 일관성 목적을 위하여 하나의 단위(unit)로서 취급된다. 몇몇 실시예들에서, 블록은 캐시 내에서의 할당(allocation) 및 할당해제(deallocation)의 단위일 수 있다. 블록 내의 바이트들의 수는 설계에 따라 달라질 수 있으며 임의의 사이즈가 될 수 있다. 예로서, 32 바이트 및 64 바이트 블록들이 종종 사용된다.
컴퓨팅 성능을 향상시키기 위하여, 컴퓨팅 시스템은 프로세싱 노드들(각각의 노드가 하나 이상의 마이크로프로세서들을 포함함)과 같은 서브시스템들을 포함함으로써 병렬 처리(parallel processing)를 증가시킬 수 있다. 프로세싱 노드(즉, 노드) 내의 각각의 마이크로프로세서는 그 자체의 캐시 계층을 가질 수 있다. 또한, 각각의 노드는 복수의 마이크로프로세서들 간에 공유되는 고 레벨의 캐시 계층을 가질 수 있다. 예를 들어, 일 실시예에서, 노드는, 각각 대응하는 레벨 1(L1) 캐시를 구비한 두개의 마이크로프로세서들을 포함할 수 있다. 노드는 두개의 마이크로프로세서들에의해 공유되는 L2 캐시를 가질 수 있다. 메모리 제어기 또는 다른 인터페이스는 각각의 노드를, 컴퓨팅 시스템 내의 다른 노드들, 복수의 노드들에 사이에서 공유되는 L3 캐시와 같은 고 레벨의 캐시 계층, 그리고 동적 랜덤-액세스 메모리(DRAM), 듀얼 인-라인 메모리 모듈들(DIMMS), 하드 디스크 등에 연결할 수 있다. 대안적인 실시예들에서, 다양한 컴포넌트들 및 이러한 컴포넌트들의 결합이 사용될 수 있다.
주어진 블록이 하나 이상의 캐시들 내에 저장될 수 있기 때문에, 그리고 또한 캐시 사본들(cached copies) 중 하나가 메모리 시스템 내의 사본과 관련하여 수정될 수 있으므로, 컴퓨팅 시스템들은 캐시들과 메모리 시스템과의 사이에서 대개 일관성(coherency)를 유지한다. 블록에 대한 갱신(update)이 소정의 일관성 프로토콜에 따라 상기 블록의 다른 캐시 사본들에 의해 반영된다면 일관성이 유지된다. 다양한 구체적인 일관성 프로토콜들이 잘 알려져 있다.
많은 일관성 프로토콜들은, 컴퓨팅 시스템 내의 다양한 캐시들 사이에서 통신하기 위하여, 메모리 제어기와 같은 일관성 지점(coherency point)으로부터 전달되는 메시지들 또는 프로브들의 사용을 포함한다. 일관성 지점은 블록을 판독 또는 기록하라는 컴포넌트(예를 들어, 프로세서)로부터의 명령에 응답하여 프로브들을 전송할 수 있다. 프로브들은 캐시가 블록의 사본을 가지는지를 결정하고 선택적으로 캐시가 상기 블록을 놓아야할 상태를 지시하기 위하여 사용될 수 있다. 각각의 프로브 수신기는 상기 프로브에 응답하며, 일단 모든 프로브 응답들이 수신되면, 명령이 처리되어 완료된다.
컴퓨터 시스템들은 일반적으로 브로드캐스트 캐시 일관성 프로토콜(broadcast cache coherency protocol) 또는 디렉토리 기반의 캐시 일관성 프로토콜(directory based cache coherency protocol)을 사용한다. 브로드캐스트 프로토콜을 사용하는 시스템에서, 프로브들은 모든 프로세서들(또는 캐시 서브시스템들)로 브로드캐스트된다. 공유된 데이터 사본(shared copy of data)을 갖는 서브시스템이 블록에 대한 배타적 액세스(exclusive access)를 위한 명령으로부터 기인된 프로브를 관측(observe)한다면, 그것의 사본은 일반적으로 무효화된다. 마찬가지로, 데이터 블록을 현재 소유한 서브시스템이 그 블록에 대응하는 프로브를 관측한다면, 소유 서브시스템(owning subsystem)은 일반적으로, 요청자에게 데이터를 제공하고 필요하다면 그 사본을 무효화함으로써 응답한다.
이와는 대조적으로, 디렉토리 기반의 프로토콜들을 사용하는 시스템들은 데이터의 캐시 사본들의 존재를 표시하는 정보를 포함하는 디렉토리를 유지한다. 무조건적으로 프로브들을 브로드캐스트하는 것이 아니라, 특정 일관성 동작들을 발생시키기 위하여 프로브가 운반될 필요가 있는 특정 서브시스템들(상기 서브시스템들은 데이터의 캐시 사본들을 포함할 수 있음)을 결정하는데 상기 디렉토리 정보가 사용된다. 예를 들어, 디렉토리는 다양한 서브시스템들이 데이터 블록의 공유 사본들을 포함한다는 것을 나타내는 정보를 포함할 수 있다. 그 블록에 대한 배타적 액세스를 위한 명령에 응답하여, 무효화 프로브들이 공유 서브시스템들로 운반될 수 있다. 디렉토리는 또한 현재 특정 데이터 블록들을 소유한 서브시스템들을 나타내는 정보를 포함할 수 있다. 따라서, 명령들에 대한 응답들은 소유 서브시스템들(owning subsystem)로 하여금 데이터를 요청 서브시스템(requesting subsystem)으로 운반하게 하는 프로브들을 더 포함할 수 있다. 디렉토리 기반 캐시 일관성 프로토콜들에 대한 다양한 변형이 잘 알려져 있다.
브로드캐스트 캐시 일관성 프로토콜들을 사용하는 시스템 내의 다른 모든 프로세서들에 프로브들이 브로드캐스트되어야 하므로, 프로세서들을 서로연결하는 네트워크와 관련된 대역폭은 곧 성능에 있어서의 제한 요소가 될 수 있는바, 특히 많은 수의 프로세서들을 사용하는 시스템들에서 또는 많은 수의 프로브들이 짧은 기간 동안 전송될 때 그러하다. 가능한 대역폭 문제점들에 부가하여, 메모리 액세스에 대한 지연이 프로브들로인하여 증가될 수 있다. 예를 들어, 프로세서가 프로세서의 캐시 계층에서 미스(miss)되는 메모리 요청을 수행할 때, 요청된 데이터는 모든 프로브들의 완료 전에 DRAM으로부터 검색되어 메모리 제어기로 리턴될 수 있다. 그러므로, 메모리 액세스에 대한 지연이 증가한다.
디렉토리 기반 프로토콜들은 프로브들을 무조건적으로 송신하지 않고 조건적으로 송신함으로써 네트워크 트래픽을 야기하는 프로브들의 수를 감소시킨다. 그러므로, 디렉토리 기반 프로토콜들을 사용하는 시스템들은 줄어든 네트워크 트래픽 및 감소된 메모리 요청 지연으로 인하여 전체적으로 보다 높은 성능을 달성할 수 있다. 그러나, 디렉토리 기반 시스템들은 보다 효율적인 캐시 일관성 프로토콜들이 될 수 있게 하는 반면, 대개 추가의 하드웨어를 필요로 한다.
디렉토리 기반 프로토콜은 때때로 ASIC(Application Specific Integrated Circuit) 또는 프로세서와는 별개의 다른 세미-커스텀 칩(semi-custom chip) 상에 구현될 수 있는 디렉토리 캐시를 포함한다. 디렉토리 캐시가 별개의 칩 상에 구현될 때, 보드 요구조건들, 전력 소비, 및 냉각 요구조건들 뿐만 아니라 시스템의 전체 비용이 증가한다. 반면, 특히 단일 프로세서 또는 복수 프로세서 시스템들 모두에서 사용하도록 의도된 상용 마이크로프로세서들(ommodity microprocessors)에서는, 동일한 칩 상에 디렉토리 캐시를 프로세서 코어로서 통합하는 것은 바람직하지 않다. 단일 프로세서 시스템에서 사용될 때, 디렉토리 캐시가 사용되지 않을 것이므로, 고가의 다이 영역이 낭비되거나 감소된 수율로 인하여 비용이 추가된다.
제3의 대안은 디렉토리 엔트리들을 프로세서 코어와 관련된, L2 캐시와 같은, 캐시 메모리 서브시스템의 지정 위치들에 저장한다. 예를 들어, 캐시 메모리 서브시스템의 지정된 웨이(designated way)가 디렉토리 엔트리들을 저장하기 위해 할당될 수 있는 반면, 캐시의 나머지 웨이들은 일반 프로세서 데이터(normal processor data)를 저장하는데 사용된다. 일 구체적인 실시예에서, 수정된, 배타적인, 또는 소유된 일관성 상태들(modified, exclusive, or owned coherency states)로 캐시될 수 있는 라인들(또는 블록들)에 대한 표시를 제공하기 위하여, 디렉토리 엔트리들이 캐시 메모리 서브시스템 내에 저장된다. 특정 블록에 대한 디렉토리 엔트리의 부재(absence)는 그 블록이 공유 상태 또는 무효 상태(shared or invalid states)로 캐시된다는 것을 의미한다. 보다 자세한 내용은 미국 특허 번호 제 6,868,485, 16005, "Computer System with Integrated Directory and Processor Cache"(P. Conway)에서 찾아볼 수 있다.
그러나, 제3 대안은 빈번하게 사용되는 캐시의 상당 부분(significant portion)을 점유함이 없이는 높은 커버리지 비율(high coverage ratio)을 제공할 수 없다. 만약 상당 부분이 디렉토리를 위해 사용된다면, 데이터를 위해서는 캐시내에서 더 적은 라인들이 사용된다. 그러므로, 용량 미스 및 충돌 미스(capacity and conflict misses)와 같은 더 많은 캐시 미스들이 발생할 수 있다. 디렉토리를 위해 사용하는 캐시 스페이스의 양을 감소시키기 위하여, 특정 상태의 라인들은 캐시되지 않는 것으로 결정될 수 있다. 그러나, 블록에서 디렉토리 엔트리의 부재는 프로브들이 송신되게 할 것이고 네트워크 트래픽을 증가시킬 수 있다.
전술한 측면에서, 다중-프로세서 노드들에서의 캐시 일관성 프로토콜을 위한 효율적인 방법들이 요구된다.
선택적으로 프로브 명령들을 전송하고 네트워크 트래픽을 감소시키기 위한 시스템 및 방법들이 고려된다.
일 실시예에서, 서로 연결된 복수의 프로세싱 노드들을 포함하는 컴퓨팅 시스템이 제공된다. 각각의 프로세싱 노든느 하나 이상의 프로세싱 코어들, 하나 이상의 대응하는 캐시 메모리 서브시스템들, 및 L3 캐시 구조와 같은 공유 캐시 메모리 서브시스템을 포함한다. 공유 캐시 메모리 서브시스템 내의 저장 엔트리들은 전역 일관성 프로토콜(global coherence protocol)을 제어하기 위한 디렉토리 정보를 포함하는 디렉토리 엔트리들 또는 프로세서 데이터를 선택적으로 저장하도록 되어 있다. 공유 캐시 메모리 서브시스템을 위한 캐시 제어기는, 엔트리들 중 적어도 일부 엔트리들로 하여금 프로세서 데이터를 저장하거나 또는 디렉토리 디렉토리 정보를 저장하도록 제어하기 위한 값을 저장하도록 되어 있다.
디렉토리 엔트리들은 프로브 명령들을 필터링하고 특정 캐시 코히어런트 트랜잭션들(cache coherent transactions)에 대한 트래픽에 응답하도록 유지된다. 공유 캐시 메모리 서브시스템 내에 엔트리들을 저장함으로써, 전용 디렉토리 저장소를 위한 추가적인 실제 공간(extra real estate)이 전혀 필요하지 않다. L3 캐시 구조의 일부, 예를 들어, 캐시의 나머지 웨이들은 일반 프로세서 데이터를 저장하는데 사용된다. 일 구체적인 실시예에서, 디렉토리 엔트리들이 캐시 메모리 서브시스템 내에 저장되어, 배타적-수정(exclusive-modified), 소유(owned), 공유(shared), 일-공유(shared-one), 또는 무효의 일관성(invalid coherency) 상태들로 캐시될 수 있는 라인들(또는 블록들)의 표시들을 제공한다. 일-공유 상태는 대응 데이터의 모든 캐시 사본들이 단일 프로세싱 노드 내에 존재하는 것을 의미한다. 특정 블록에 대한 디렉토리 엔트리의 부재는 그 블록이 컴퓨팅 시스템의 어디에서도 캐시되지 않음을 의미할 수 있다. 컴퓨팅 시스템 내의 모든 초기의 캐시 사본들은 배타적-수정 상태로 주어질 수 있다. 그러므로, 대응하는 캐시 블록이 수정될 때, 어떠한 프로브 명령들도 전송될 필요가 없다.
서브시스템이 단일-프로세서 환경에 배치되는지 또는 다중-프로세서 환경에 배치되는지에 근거하여, 디렉토리 엔트리들의 저장을 위한 공유 캐시 메모리 서브시스템의 사용이 선택적으로 인에이블되는 실시예들이 가능하다. 그러므로, 단일-프로세서 환경에 배치될 때, 공유 캐시 메모리 서브시스템의 저장 위치들은 프로세서-캐싱 오퍼레이션들에 대해 배타적으로 사용될 수 있고, 전용 디렉토리 저장소(dedicated directory storage)의 비사용(non-utilization)이 방지될 수 있다.
도 1은 컴퓨팅 시스템의 일 실시예를 도시하는 일반화된 블록도이다.
도 2는 예시적인 프로세싱 노드의 일 실시예를 도시하는 일반화된 블록도이다.
도 3은 메모리 제어기의 일 실시예의 일반화된 블록도이다.
도 4는 디렉토리 엔트리들이 4-웨이 캐시 구조(cache organization)을 사용하여 저장되는 저장 구성의 일 실시예의 일반화된 블록도이다.
도 5a는 단일 프로브 명령을 필요로하는 오퍼레이션들의 예시적인 세트를 도시하는 프로브 필터링 컴퓨팅 시스템의 일 실시예의 일반화된 블록도이다.
도 6b는 프로브 명령을 필요로하지 않는 예시적인 오퍼레이션들의 세트를 도시하는 프로브 필터링 컴퓨팅 시스템의 일 실시예의 일반화된 블록도이다.
도 5c는 백-투-백 로드 오퍼레이션들 및 대응하는 프로브 명령들의 전송을 도시하는 프로브 필터링 컴퓨팅 시스템의 일 실시예의 일반화된 블록도이다.
본 발명은 다양한 수정 및 대안적인 형태가 가능하지만, 구체적인 실시예들이 도면에서 예로서 도시되었고 여기에서 자세히 설명된다. 그러나, 도면 및 그에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려 의도된 것이 아니라, 그와는 반대로, 본 발명은 모든 첨부된 청구항들에 의해 정의된 것과 같은 본 발명의 범주 및 정신 내에 부합하는 모든 수정, 등가 및 대안을 포함하도록 의도된 것임을 이해하여야 한다.
하기에서는, 본 발명에 대한 개괄적인 이해를 제공하기 위하여 다양한 구체적인 세부사항들이 설명된다. 그러나, 당업자는 본 발명이 이러한 구체적인 세부사항들 없이도 실시될 수 있음을 이해할 것이다. 본 발명을 모호하게 하지 않기 위하여, 일부 경우에, 잘 알려진 회로들, 구조들, 그리고 기법들은 상세하게 설명되지 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시예가 도시된다. 컴퓨팅 시스템(100)은 복수의 프로세싱 노드들(110a-110d)을 포함한다. 도 1에는 4개의 노드들이 도시되었으나, 다른 실시예들은 각각 하나 이상의 프로세서 코어들을 포함하는 다른 개수의 노드들을 포함할 수 있다. 본 명세서에서, 문자가 뒤에 오는 도면번호에 의해 참조되는 소자들은 그 번호 단독으로 공동으로 참조될 수 있다. 예를 들어, 프로세싱 노드들(110a-110d)은 프로세싱 노드(110), 또는 노드들(110)로서 공동으로 참조될 수 있다. 각각의 노드(110)는 각각의 메모리 제어기(120)를 통해 각각의 메모리(130)에 연결될 수 있다. 추가적으로, 각각의 프로세싱 노드(110)는 다른 프로세싱 노드들(110)과 통신하는데 사용되는 인터페이스 로직(140)을 포함할 수 있다. 예를 들어, 프로세싱 노드(110a)는 프로세싱 노드들(110b, 110c)과 통신하기 위하여 인터페이스 로직(140a)를 포함한다. 마찬가지로, 프로세싱 노드(110b)는 프로세싱 노드들(110a, 110d)과 통신하기 위하여 인터페이스 로직(140b)을 포함한다. 도 1의 실시예에서, 프로세싱 노드(110d)는 인터페이스 로직(140d)를 통해 I/O(입출력) 디바이스 (160a)와 통신하도록 연결되고, I/O 디바이스(160a)는 제2 I/O 디바이스(160b)에 연결되는 것으로 도시된다. 다른 프로세싱 노드들도 유사한 방식으로 다른 I/O 디바이스들과 통신할 수 있다. 대안적으로, 프로세싱 노드는 I/O 버스와 연결된 I/O 브리지와 통신할 수 있다.
컴퓨팅 시스템(100)은 노드간 통신(inter-node communication)을 위한 패킷 기반 링크(packet-based link)를 구현할 수 있다. 도시된 실시예에서, 링크는 단방향 라인들의 세트로서 구현된다(예를 들어, 프로세싱 노드(110a)로부터 프로세싱 노드(110b)로 패킷들을 전송하는데 라인들(150a)가 사용되고, 프로세싱 노드(110b)로부터 프로세싱 노드(110a)로 패킷들을 전송하는데 라인들(150b)가 사용된다). 다른 세트의 라인들(150c-150h)은 도 1에 도시된 것과 같이 다른 프로세싱 노드들 사이에서 패킷들을 전송하는데 사용된다. 링크는 프로세싱 노드들 사이에서의 통신을 위하여 캐시 코히어런트 방식(cache coherent fashion)으로 동작하거나 I/O 디바이스들(160a-160b)(및, 필요에 따라 추가적인 I/O 디바이스들) 사이에서 데이지-체인 구조(daisy-chain structure)로서 논코히어런트 방식(noncoherent fashion)으로 동작할 수 있다. 일 프로세싱 노드(110)에서 또 다른 프로세싱 노드로 전송될 패킷은 하나 이상의 중간 노드들(intermediate nodes)을 통과(pass through)한다. 예를 들어, 도 1에 도시된 바와 같이, 프로세싱 노드(110a)에 의해 프로세싱 노드(110d)로 전송되는 패킷은 프로세싱 노드(110b) 또는 프로세싱 노드(110c)를 통과할 수 있다. 임의의 적절한 라우팅 알고리즘이 사용될 수 있다. 컴퓨팅 시스템(100)의 다른 실시예들은 도 1에 도시된 실시예보다 더 적은 또는 더 많은 프로세싱 노드들을 포함할 수 있다. 추가적으로, 각각의 프로세싱 노드가 점-대-점 네트워크(point-to-point network)를 통해 모든 다른 프로세싱 노드에 연결되는 다른 실시예들이 가능하다.
도시된 메모리 제어기 및 인터페이스 로직에 부가하여, 각각의 프로세싱 노드(110)는, 하기에서 설명되는 것과 같이, 하나 이상의 프로세서들 및 관련된 캐시들을 포함할 수 있다. 개략적으로, 프로세싱 노드(110)는 적어도 하나의 프로세서를 포함하며, 필요에 따라, 메모리 및 다른 로직과 통신하기 위한 메모리 제어기를 선택적으로 포함할 수 있다.
메모리들(130)은 임의의 적절한 메모리 디바이스들을 포함할 수 있다. 예를 들어, 메모리(130)는 하나 이상의 RAMBUS DRAMs(dynamic random access memories), SDRAMs(synchronous DRAMs), DRAM, 정적 RAM 등을 포함할 수 있다. 컴퓨팅 시스템(100)의 어드레스 스페이스는 메모리들(130) 사이에서 분할된다. 각각의 프로세싱 노드(110)는 어떤 어드레스가 어떤 메모리들(130)로 매핑되는지, 그리고 그에 따라 특정 어드레스에 대한 메모리 요청이 어떤 프로세싱 노드(110)로 라우팅되어야 하는지를 결정하는데 사용되는 메모리 맵을 포함한다. 일 실시예에서, 컴퓨팅 시스템(100) 내에서 어드레스에 대한 일관성 지점은 그 어드레스에 대응하는 바이트들을 저장하는 메모리에 연결된 메모리 제어기(120)이다. 메모리 제어기들(120)은 메모리들(130)과 인터페이싱하기 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기들(120)은 메모리 요청들을 큐잉(queuing)하기 위한 요청 큐들(request queues)을 포함할 수 있다.
일반적으로, 인터페이스 로직(140)은 링크로부터 패킷들을 수신하기 위한, 그리고 링크 상에 전송될 패킷들을 버퍼링하기 위한 버퍼들을 포함한다.
컴퓨팅 시스템(100)은 패킷들을 전송하기 위한 임의의 적절한 흐름 제어 메커니즘을 사용할 수 있다. I/O 디바이스들(160)은 임의의 바람직한 주변 장치들의 예이다. 예를 들어, I/0 디바이스들(160)은 네트워크 인터페이스 카드들, 비디어 액셀레이터들, 오디오 카드들, 하드 또는 플로피 디스크 드라이브들 또는 드라이브 제어기들, SCSI(Small Computer Systems Interface) 어댑터들과 텔레폰 카드들, 모델들, 사운드 카드들, 및 GPIB(General Purpose Interface Bus) 또는 필드 버스 인터페이스 카드들과 같은 다양한 데이터 획득 카드들을 포함할 수 있다.
도 2는 예시적인 프로세싱 노드(110)의 일 실시예의 블록도이다. 도 1의 회로 부분들에 대응하는 회로 부분들은 도 1과 동일한 번호로 표시된다. 프로세싱 노드(110)는. 메모리 제어기(120), 인터페이스 로직(140), 하나 이상의 프로세싱 유닛들(115)(상기 프로세싱 유닛들(115)은 프로세서 코어들(112) 및 대응하는 캐시 메모리 서브시스템들(114)를 포함할 수 있음), 패킷 프로세싱 로직(116), 그리고 공유 캐시 메모리 서브시스템(118)을 포함할 수 있다. 일 실시예에서, 도시된 프로세싱 노드(110)의 기능이 단일 집적 회로에 통합된다.
일반적으로, 패킷 프로세싱 로직(116)은 프로세싱 노드(110)가 연결된 링크들 상에서 수신되는 제어 패킷들에 응답하고, 프로세서 코어들(112) 및/또는 캐시 메모리 서브시스템들(114)에 응답하여 제어 패킷들을 생성하고, 서비스를 위해 메모리 제어기(120)에 의해 선택된 트랜잭션들에 응답하여 프로브 명령들 및 응답 패킷들을 생성하고, 그리고 노드(110)가 중간 노드(intermediate node)일 때 인터페이스 로직(140)을 통해 다른 노드들로 패킷들을 라우팅하도록 구성된다. 인터페이스 로직(140)은, 패킷들을 수신하고 상기 패킷들을 패킷 프로세싱 로직(116)에 의해 사용되는 내부 클럭과 동기화시키기 위한 로직을 포함할 수 있다.
캐시 서브시스템(114, 118)는 데이터 블록들을 저장하도록 된 고속 캐시 메모리들을 포함할 수 있다. 캐시 메모리 서브시스템들(114)는 각각의 프로세서 코어들(112) 내에 통합될 수 있다. 대안적으로, 필요에 따라, 캐시 메모리 서브시스템들(114)은 백사이드 캐시 구성(backside cache configuration) 또는 인라인 구성(inline configuration)으로 프로세서 코어들(114)에 연결될 수 있다. 또한, 캐시 메모리 서브시스템들(114)는 캐시들의 계층으로서 구현될 수 있다. 계층 내에서 더 가까운 프로세서 코어들(112)인 캐시들은, 필요하다면 프로세서 코어들(112) 내에 통합될 수 있다. 일 실시예에서, 캐시 메모리 서브시스템들(114) 각각은 L2 캐시 구조들을 나타내며, 공유된 캐시 서브시스템(118)은 L3 캐시 구조를 나타낸다.
캐시 메모리 서브시스템(114)과 공유 캐시 메모리 서브시스템(118) 양자 모두는 대응하는 캐시 제어기에 연결된 캐시 메모리를 포함할 수 있다. 공유 캐시 메모리 서브시스템(118)에 대해, 서브시스템(118)의 위치 냐에 디렉토리 엔트리들을 저장하는 것을 프로그램적으로 가능하게 하기 위하여, 캐시 제어기는 프로그램가능 로직(programmable logic)을 포함할 수 있다. 단일 프로세서 환경에 배치될 때, 서브시스템(118)의 모든 저장 위치들은 일반 캐시 엔트리들을 위해 사용될 수 있다. 복수 프로세서 환경에 배치될 때, 서브시스템(118)의 일부 위치들이 디렉토리 엔트리들을 저장하는데 사용될 수 있다. 디렉토리 엔트리들은 일관성 오퍼레이션들을 제어하기 위한 일관성 제어 회로에 의해 유지되고 액세스될 수 있는바, 이는 하기에서 설명될 것이다.
프로세서 코어들(112)은 소정의 명령 세트에 따라 명령들을 실행하기 위한 회로를 포함한다. 예를 들어, x86 명령 세트 구조가 선택될 수 있다. 대안적으로, 알파(Alpha), 파워PC(PowerPC), 또는 임의의 다른 명령 세트 구조가 선택될 수 있다. 일반적으로, 프로세서 코어(112)는 데이터 및 명령들을 위해 캐시 메모리 서브시스템들(114) 각각에 액세스한다. 요청된 블록이 캐시 메모리 서스시스템(114) 또는 공유 캐시 메모리 서브시스템(118)에서 발견되지 않는 경우, 미싱 블록이 매핑되는 노드 내에서 판독 요청이 발생되어 메모리 제어기로 전송될 수 있다.
하기에서 보다 자세히 설명될 바와 같이, 컴퓨팅 시스템(100)의 일 실시예에서, 디렉토리 엔트리들은 프로브 명령들을 필터링하고 특정 트랜잭션들에 대한 트래픽에 응답하도록 유지된다. 전용 디렉토리 저장소에 디렉토리 엔트리들을 저장하기 보다는, 디렉토리 엔트리들은 공유 캐시 메모리 서브시스템(118)의 지정 위치에 저장될 수 있다. 디렉토리 엔트리의 저장을 위하여 공유 캐시 메모리 서브시스템(118)을 사용하는 것에 의해, 별도의 디렉토리 저장소가 필요없게 된다. 결과적으로, 요구되는 보드 영역, 전력 소비, 및 냉각 요구조건들 뿐만아니라 전체적인 비용이 절감된다. 일 실시예에서, 디렉토리를 저장하기 위하여 L3 캐시 구조가 사용될 수 있다. HPC(High Performance Computing) 애플리케이션들은 일반적으로 L3 캐시에 의존하지 않음에 주목하여야 한다. 그러므로, 디렉토리 엔트리들을 저장하기 위하여 L3 캐시의 일부를 사용하는 것은 성능에 영향을 주지 않는다.
이제 도 3을 참조하면, 메모리 제어기(120)의 일 실시예의 블록도가 도시된다. 도 3의 실시예에서, 메모리 제어기(120)는 요청 큐(122), 일관성 제어 회로(124), 그리고 메모리 액세스 제어 회로(126)를 포함한다.
메모리 제어기(120)는 패킷 프로세싱 로직(116)으로부터 요청 큐(122)로의 명령 패킷들을 수신한다. 명령에 의해 영향받는 어드레스가 메모리(130) 내의 메모리 위치에 대응하면 명령 패킷들은 패킷 프로세싱 로직(116)에 의해 메모리 제어기(120)로 라우팅될 수 있다. 즉, 명령 패킷의 어드레스가 메모리(130)에 저장된 블록을 어드레싱하면, 명령 패킷이 메모리 제어기(120)로 라우팅된다. 메모리 제어기(120)는 요청 큐(122) 내에 명령 정보를 큐하고, 후속적으로, 그 명령을 처리한다. 일관성 제어 회로(124)는 상기 명령이 코히어런트 방식(coherent fashion)으로 수행되게 한다. 상기 명령을 위해 프로브들이 요구된다면, 일관성 제어 회로(124)는 프로브 표시를 패킷 프로세싱 로직(116)으로 전송한다. 예를 들어, 프로브 표시는 대응하는 명령으로부터의 소스 노드와 소스 태그, 어드레스, 명령의 종류, 및 다른 정보를 포함할 수 있다.패킷 프로세싱 로직(116)은 프로브 표시에 응답하여 프로브 명령들을 전송할 수 있다. 일관성 제어 회로(124)는 패킷 프로세싱 로직(116)으로부터 대응하는 트랜잭션이 완료되었음을 표시하는 패킷들을 수신할 수 있으며, 기록 명령들에 대한 프로브 응답들을 수신할 수 있다. 메모리 액세스 제어 회로(126)는 (예를 들어, 일관성 오퍼레이션들이 전송완료되고 다른 노드들로부터 수신될 모든 응답들이 수신완료된 후) 일관성 제어 회로(124)에 의해 커미트(commit)되는 명령들을 수행하기 위하여 메모리(13)와 인터페이스할 수 있다. 명령이 판독 오퍼레이션이라면, 응답 패킷으로 소스 노드에 포워딩하기 위하여 데이터가 메모리(130)로부터 패킷 프로세싱 로직(116)으로 리턴될 수 있다.
일관성 제어 회로(124)는 추가적으로 특정 데이터 블록들에 대한 디렉토리 엔트리들을 유지하도록 되어 있다. 위에서 논의된 바와 같이, 일 실시예에서, 이 디렉토리 엔트리들은 공유 캐시 메모리 서브시스템(118)의 지정 위치들 내에 저장된다. 이러한 목적으로, 일관성 제어 회로(124)는 공유 캐시 메모리 서브시스템(118)로의 인터페이스를 포함할 수 있다. 일관성 제어 회로(124)는, 명령의 종류에 근거하여 그리고 그 명령에 의해 지정된 어드레스에 디렉토리 엔트리가 존재함에 근거하여, 명령에 대해 프로브들이 요구되는지를 결정한다. 디렉토리 엔트리들은 실시예에 따라 다양한 일관성 정보를 포함할 수 있다. 예를 들어, 디렉토리 엔트리는 주어진 블록의 소유자(owner), 블록이 주어진 모드에서 수정되었는지 여부, 및/또는 블록의 공유된 사본들을 가지는 노드들의 존재를 표시할 수 있다. 다양한 실시예의 디렉토리 엔트리 포맷들에 관한 추가적인 세부사항들이 하기에서 제공된다.
컴퓨팅 시스템(100)의 일 실시예에서, 프로브 필터 내의 디렉토리 엔트리들은 배타적-수정(EM: Exclusive-Modified), 소유(O: Owned), 한 노드에서만 공유됨(Sl: Shared within only one node), 두개 또는 세개의 노드들에 걸쳐 공유됨(S: Shared across two or more nodes), 또는 무효화(I: invalidated) 상태들 중 하나를 가지는 캐시 블록들을 추적(track)하는데 사용된다. S 상태 및 SI 상태는 공유-수정된 상태들(shared-modified states)이다. 이 두 상태들 중 어느 상태를 가진 캐시 라인에 대한 판독 오퍼레이션도 캐시 라인의 다른 사본들을 무효화하기 위한 프로브 명령들을 요구하지 않는다. 판독 오퍼레이션을 위해서는 무효화하지 않는 것(no invalidation)이 요구될 것이다. 그러나, S 상태의 캐시 라인에 대한 기록 오퍼레이션은 다른 프로세싱 노드들 내의 다른 사본들의 무효화를 브로드캐스트할 것을 프로브 명령들에 요구할 것이다. S1 상태의 캐시 라인에 대한 기록 오퍼레이션은 프로브 커맨드들이 동일한 프로세싱 노드 내에서 캐시 라인의 사본들의 디렉팅된 무효화(directed invalidation)를 수행할 것을 요구할 것이다. 이 실시예는 MOESI 일관성 프로토콜의 변형이다. 프로세서가 프로브 명령들 없이 배타적 상태(Exclusive state)에서 수정된 상태(Modified state)로 조용히(silently) 블록을 천이(transition)하기 때문에, EM 상태의 캐시 블록은 프로세서 코어 및 대응하는 캐시 메모리 서브시스템 바깥에서 구분이 불가능(indistinguishable)함에 주목하여야 한다.
프로브 필터 내의 디렉토리 엔트리의 존재는, 대응하는 메모리 블록이 캐시 사본을 가진다는 것을 의미한다. 본 명세서에서, 용어 캐시 블록 및 캐시 라인은 다양한 실시예들에 대한 하기의 설명 중에 상호교환될수 있다. 디렉토리 엔트리의 부재는 블록이 캐시 메모리 서브시스템들(114) 내에 저장되지 않음을 의미한다. 일 실시예에서, 임의의 프로세싱 노드에서 캐시 충돌 미스(cache conflict miss)가 발생할 때, 영향받는 캐시 블록(affected cache block)에 대한 모든 프로세싱 노드들 내의 모든 대응하는 디렉토리 엔트리들이 갱신될 수 있다. 예를 들어, EM 또는 O 상태의 대응하는 디렉토리 엔트리들은 캐시 블록에 대응하는 메모리로 다시 복사된(copied back) 캐시 블록의 데이터를 가질 수 있으며 디렉토리 상태 필드는 I 상태로 천이할 수 있다. S1 또는 S 상태의 대응하는 디렉토리 엔트리들은 메모리로 다시 카피되는(copied back) 캐시 블록의 데이터를 가지지 않을 수 있으며 디렉토리 상태 필드는 I 상태로 천이할 수 있다.
디렉토리 엔트리들은 다양한 방식으로 공유된 캐시 메모리(118) 내에 저장될 수 있다. 예를 들어, 도 4는 디렉토리 엔트리들이 4-웨이 캐시 구조(4-way cache organization)를 사용하여 저장되는 저장 구성(storage arrangement)(400)의 일 실시예를 도시한다. 프로브 필터는 또한 4-웨이 세트 어쏘씨에이티브(4-way set associative)일 수 있으나. 프로브 필터 디렉토리 엔트리들은 캐시 라인들, 또는 캐시 블록들보다 더 작을 수 있다. 예를 들어, 일 실시예에서, 각각의 디렉토리 엔트리(460)는 32 비트들(또는 4바이트들)을 포함할 수 있다. 태그 필드(462)는 22 비트들을 포함할 수 있으며, 이 비트들은 디렉토리 엔트리를 디렉토리 세트(450) 내의 다른 3개의 엔트리들과 구분하는데 사용될 수 있다. 디렉토리 상태 필드(464)는 3 비트들을 포함할 수 있으며, 이 비트들은 대응하는 캐시 블록의 상태(예를 들어, EM, O, Sl, S, 또는 I)를 식별하는데 사용될 수 있다.
일 실시예에서, 소유자 필드(466)는 3 비트들을 포함할 수 있으며, 이 3 비트들은 어떤 프로세싱 노드(110)가 대응하는 캐시 블록들을 저장하고 가능하게는 소유하는가를 표시한다. 소유자 필드(466)에 의해 표시된 프로세싱 노드(110)는 EM 상태의 캐시 블록의 사본만을 저장할 수 있다. 대안적으로, 소유자 필드(466)는 O 상태의 캐시 블록의 사본을 저장하는 프로세싱 노드(110)를 표시할 수 있으며, 다른 노드들(110)은 캐시 메모리 서브시스템들(114) 내에 동일한 캐시 블록의 사본들을 저장할 수 있다. 3 비트 소유자 필드(466)는 8개의 노드들을 지원하는데 충분하다. 예약된 필드(468)는 4 비트들을 포함하며, 이 4 비트들은 축출(eviction)에 대한 LRU(Least Recently Used) 정보를 표시하는데 사용될 수 있다. LRU 정보는 디렉토리 세트 내의 어떤 엔트리가 최근에 최소로 참조(least recently referenced)되었는지를 표시하는데 사용될 수 있으며, 캐시 제어기에 의해 사용되는 캐시 교체 알고리즘(cache replacement algorithm)과 관련하여 사용될 수 있다.
4-웨이 세트 어쏘씨에이티브 기법에서, 디렉토리 세트(450)는 4개의 디렉토리 엔트리들(460)을 포함한다. 주어진 디렉토리 세트(450)는, 공유 캐시 메모리 서브시스템(118)에 액세스하는데 사용되는 어드레스(410)의 디렉토리 인덱스(416)부분에 의해 다른 세트들로부터 선택될 수 있다. 디렉토리 엔트리(460) 히트가 발생한다. 블록 태그(436) 및 디렉토리 태그(462)가 모두 캐시에 액세스하는데 사용되는 어드레스의 대응하는 태그 부분들(예를 들어, 블록 태그(412) 및 디렉토리 태그(414))과 매치될 때 디렉토리 엔트리(460) 히트가 발생한다. 디렉토리 엔트리의 존재는 블록이 캐시됨을 의미한다. 디렉토리 엔트리의 부재는 블록이 캐시되지 않음을 의미한다.
도시된 실시예에서, 4 개의 디렉토리 세트들(450) 각각은 4개의 디렉토리 엔트리들(460)을 포함한다. 각각의 디렉토리 엔트리(460)는 4 바이트를 포함한다. 공유 캐시 메모리 서브시스템(118)의 일 실시예로서, 프로브 필터 외부에서(Outside the probe filter), 디렉토리 엔트리들(438) 부분은 4-웨이 세트 어쏘씨에이티브 캐시(430) 내의 캐시 라인의 데이터 부분이다. 캐시 라인의 데이터 부분, 및 디렉토리 부분(438)은 64 바이트(4 바이트 x 디렉토리 엔트리들 x 4 디렉토리 세트들)를 저장한다. 캐시(430)의 4 웨이들 각각은 또한 상태 정보(434)를 구비하는바, 상기 상태 정보는 유효 비트 및 캐시 라인에 대한 다른 상태 정보, 그리고 4 웨이 캐시 라인들 중 어느것이 선택된 캐시 세트(432) 내에서 액세스되고 있는지를 판단하는데 사용될 블록 태그(436)를 포함한다. 또한, 어드레스(410)의 오프셋(420)이 캐시 라인 내의 특정 바이트 또는 워드를 표시하는데 사용될 수 있다. 디렉토리 엔트리들(460)에 대해, 오프셋(420)은 사용되지 않을 수 있다. 디렉토리 엔트리는 메모리 블록의 복수의 캐시 사본들에 의해 공유될 수 있는바, 따라서 프로브 필터의 커버리지 비율이 증가됨에 주목하여야 한다.
캐시 세트(432)는 어드레스(410)의 블록 인덱스(418)에 의해 선택된다. 디렉토리 태그(462)는 디렉토리 엔트리(460)의 다른 컴포넌트들과 연속적인 비트 내에 저장될 수 있지만, 일 실시예에서, 블록 상태(434) 및 블록 태그(436)는, 디렉토리 엔트리들(438)과 동일한 어레이에 저장되기 보다는, 별개의 어레이에 저장될 수 있다.
도 5a를 참조하면, 단일 프로브 명령을 필요로하는 오퍼레이션들의 예시적인 세트를 보여주는 프로브 필터링 컴퓨팅 시스템(500)의 일 실시예의 블록도가 도시된다. 도 1의 회로 부분들에 대응하는 회로 부분들은 도 1의 도면번호와 동일하게 표시되었다. 일 실시예에서, 시스템(500)은 4 개의 노드들(110)을 포함하지만, 대안적인 실시예들은 다른 개수의 노드들을 포함할 수 있다. 디렉토리들(0-3)은 프로세싱 노드(110) 내에서 L3 캐시와 같은 공유 캐시 메모리 서브시스템(118) 내에 저장될 수 있는 디렉토리 엔트리들을 도시한다. 시스템(500)에서 캐시 내에 저장되는 각각의 메모리 라인은 대응하는 디렉토리 엔트리를 가진다. 예를 들어, 시스템(500)에서 캐시에 저장되는 메모리(130a) 내의 각각의 데이터 블록은 Dir 0 내에 대응하는 디렉토리 엔트리를 가진다. 시스템(500)에서 캐시 내에 저장되는 메모리(130b) 내의 각각의 데이터 블록은 Dir 1 내에 대응하는 디렉토리 엔트리를 가지는 등의 방식이다.
일 실시예에서, 시스템(500) 내의 캐시 블록에 대한 4개의 상태들은 무효화(I), 소유(O), 두개 이상의 노드들에서 공유됨(S), 하나의 노드에서만 공유됨(Sl), 그리고 배타적-수정(EM) 상태일 수 있다. 일반적으로, 후속적인 프로브 명령들을 요구하는 4가지 타입의 요청 오퍼레이션들이 존재할 수 있다. 이 요청 오퍼레이션들은 페치(Fetch), 적재(Load), 및 저장(Store)일 수 있다. 페치 요청은 캐시 라인의 판독전용 사본(read-only copy)를 얻기위해 사용될 수 있다. 일 실시예에서, 명령 캐시(instruction cache (i-cache))가 페치 요청을 송신할 수 있다. 페치 요청을 송신하는 캐시가 캐시 라인의 최근 사본(most-recent copy)을 항상 저장할 것이라는 것은 확실하지 않을 수 있다. 또한, 이 캐시는 캐시 라인을 수정하도록 허가되지 않을 수 있다. 적재 요청은 판독 오퍼레이션이고 저장 요청은 기록 오퍼레이션이다.
일반적으로, 요청을 발행하는 프로세싱 노드(110)는 "요청(Requesting)" 노드라고 지칭된다. 요청 메모리 어드레스가 프로세싱 노드에 연결된 메모리(130)에 매핑되면 그 프로세싱 노드(110)는 "홈(Home)" 노드라고 지칭된다. 프로세싱 노드 내의 캐시가메모리 블록의 최근 사본을 현재 저장하고 있으면 그 프로세싱 노드는 "소유자(Owner)" 노드라고 지칭된다. 예를 들어, 노드(110d)는 메모리(130a)에 매핑되는 어드레스를 가진 메모리 블록에 대한 적재 요청을 발행할 수 있다. 그러나, 노드(110b) 내의 캐시는 데이터 블록의 최근 사본을 저장할 수 있다. 이 예에서, 노드(110d)는 "요청") 노드이고, 노드(110a)는 "홈" 노드이며, 노드(110b)는 "소유자" 노드이다.
도 5a의 오퍼레이션들의 세트는 노드(110d)(즉, "요청" 노드)로부터, 메모리(130a)에 매핑되는 어드레스를 지닌 데이터 블록에 대한 저장 요청을 포함한다. 이 경우에, 노드(110a)는 "홈" 노드이다. 단계 1-2에서, 저장 요청은 노드(110d)로부터 노드(110a)로 노드(110c)를 통해 라우팅된다. 노드(110c)를 통해 요청을 라우팅하는 것은 예시적인 것이며, 노드(110b)를 통해 요청을 라우팅하는 것과 같은 다른 대안적인 라우팅이 사용될 수 있다. 단계(3-4)는 노드(110a)에 의해(예를 들어, 도 3의 대응하는 일관성 제어 회로(124)에 의해) 수행되는 디렉토리 룩업(lookup)을 포함한다. 상기 룩업은, 요청된 메모리 블록에 대해, 디렉토리 엔트리가 공유 캐시 메모리 서브시스템(118) 내에 존재하는지 또는 디렉토리 0에 존재하는지를 결정한다. 후속적인 디렉토리 히트(hit)가 공유 캐시 메모리 서브시스템의 대응하는 엔트리에서 발생한다. 디렉토리 엔트리는 블록이 프로세싱 노드(110b)("소유자"노드임)에서 EM 상태에 있다는 것을 표시한다. 단계 5에서, 따라서, 프로세싱 노드(110a)의 일관성 제어 회로(124)는 프로브 명령이 프로세싱 노드(110b)로 포워딩되게 한다. 이 프로브 명령은 단계 6에서 노드(110b)가 데이터를 프로세싱 노드(110d)로 포워딩하게 한다. 또한, 이 프로브 명령은 노드(110b) 내의 대응하는 캐시 라인을 무효화(DI)하도록 지시될(directed) 수 있다.
데이터는 EM 상태로 노드(110d) 내의 캐시에 인스톨될 수 있다. 저장 오퍼레이션이 진행되고 대응하는 캐시 블록 내의 데이터가 수정될 수 있다. 노드(110a)("홈"노드)의 일관성 제어 회로는 캐시 블록의 최근 사본이 이제 EM 상태로 노드(110d)에 있다는 것을 표시하기 위하여 블록에 대한 대응하는 디렉토리 엔트리를 갱신할 수 있다. 이 경우에, 디렉토리(0)의 디렉토리 상태 필드(464)는 EM 상태를 계속해서 표시할 수 있으나, 소유자 필드(466)는 노드(110b)를 표시하는 것에서 노드(110d)를 표시하는 것으로 변경될 수 있다. 이 예에서, EM 상태의 캐시 블록에 대해 노드(110a)에서 디렉토리 히트가 발생하므로, 프로세싱 노드(110a)는, 복수의 프로브들을 시스템(500) 내의 모든 노드들로 브로드캐스트하는 것 보다는, 단일 방향 프로브(single directed probe)를 한 노드(예를 들어, 노드(110b)로 전송할 것만을 요청받는다. 프로세싱 노드(110d)가 데이터를 수신할 때, 소스 완료(source done) 메시지가 프로세싱 노드(110d)로부터 프로세싱 노드(110a)로 예를 들어, 프로세싱 노드(110c)를 통해 전송될 수 있다. 이는 트랜잭션을 완료한다.
도 5a에서 도시된 위의 단계들은 요청된 캐시 블록이 디렉토리(0)에서 S1 상태를 가지는 경우와 같다. 그러나, 대응하는 소유자 필드(466)가 노드(110b)를 표시하는 것에서 노드(110d)를 표시하는 것으로 변경되는 반면, 디렉토리 0에서의 갱신(update)은 디렉토리 상태 필드(464)가 S1 상태를 표시하는 것으로부터 EM 상태를 표시하는 것으로 변경될 것을 요청할 것이다. 또한, (이 경우와 유사한) 어떤 경우들에서는, 요청자(requester)에게 데이터를 제공하기 위하여 DRAM 응답이 생성될 것이 요구될 수 있다. 이는 (ME 상태로 인하여) 소유 노드가 데이터를 사용하여 응답하는 것이 보장되었으므로 DRAM 응답이 요구되지 않는 위의 경우와는 대조적이다. 이는 모두 디렉토리 (프로브 필터) 상태에 기반하여 알 수 있는 것이다.
도 5b는 프로세싱 노드(110d)("요청"노드)가 메모리(130a)에 매핑되는 어드레스를 사용하여 메모리 블록에 저장 요청을 발행하는 유사한 예를 도시한다. 노드(110a)는 "홈"노드이다. 이 예에서, 대응하는 메모리 블록은 I 상태로 시스템(500) 내의 캐시 내에 있다. 단계 1-2에서, 저장 요청이 노드(110d)로부터 노드(110a)로 노드(110c)를 통해 라우팅된다. 단계 3-4는 노드(110a)에서 대응하는 일관성 제어 회로(124)에 의해 수행되는 디렉토리 룩업을 포함한다. 상기 룩업은, 요청된 메모리 블록에 대해, 디렉토리 엔트리가 공유 캐시 메모리 서브시스템(118) 내에 존재하는지 디렉토리 0에 존재하는지를 결정한다. 후속적인 디렉토리 히트가 디렉토리 0의 대응하는 엔트리에서 발생된다. 대응하는 디렉토리 상태 필드(464)는 블록이 I 상태에 있음을 표시할 수 있다.
단계 5-8에서, 노드(110a)는 메모리(130a)로부터 요청된 데이터를 검색하고 그 데이터를 프로세싱 노드(110c)를 통해 프로세싱 노드(110d)에 제공한다. 데이터는 EM 상태로 노드(110d) 내의 캐시에 인스톨될 수 있다. 저장 오퍼레이션이 진행되고 대응하는 캐시 블록 내의 데이터를 수정할 수 있다. 노드(110a)("홈" 노드)의 일관성 제어 회로(124)는, 캐시 블록의 최근 사본이 이제 EM 상태로 노드(110d)에 있다는 것을 표시하기 위해 블록에 대한 대응하는 디렉토리 엔트리를 갱신할 수 있다. 이 경우에, 디렉토리 0의 대응하는 디렉토리 상태 필드(464)는 I 상태를 표시하는 것에서 EM 상태를 표시하는 것으로 변경될 수 있다. 소유자 필드(466)는 노드(110d)를 표시하도록 변경될 수 있다.
이 예에서, I 상태의 캐시 블록에 대해 노드(110a)에서 디렉토리 히트가 발생하므로, 프로세싱 노드(110a)는 시스템(500) 내의 임의의 노드로 임의의 프로브들을 전송할 것을 요청받지 않는다. 이는 위에서 도 1에 도시된 바, 여기서, 대응하는 I 상태의 엔트리에 대한 디렉토리 히트에 후속하여 프로브들이 임의의 노드로 전혀 송신되지 않느다. 프로브 명령들이 송신되지 않는 것과 동일한 효과는 디렉토리 미스들로부터도 발생된다. 메모리 액세스 요청의 타입에 관계없이 이러한 타입의 디렉토리 히트 동안에는 모든 프로브들이 필터링된다. 그러므로, 네트워크 트래픽은 현저하게 감소될 수 있다. 프로세싱 노드(110d)가 데이터를 수신할 때, 소스 완료(source done) 메시지가 프로세싱 도느(110d)로부터 프로세싱 노드(110a)로, 예를 들어, 프로세싱 노드(110c)를 통해 전송될 수 있다. 이는 트랜잭션을 완료한다.
도 5c는 프로세싱 노드(110d)("요청" 노드)가 메모리(130a)에 매핑되는 어드레스를 사용하여 메모리 블록으로 적재 요청을 발행하는 예를 도시한다. 노드(110a)는 "홈"노드이다. 이 경우에, 메모리 블록은 시스템(500) 내의 어떠한 캐시에도 저장되지 않는다. 단계 1-2에서, 적재 요청이 노드(110d)로부터 노드(110a)로 노드(110c)를 통해 라우팅된다. 단계 3-4는 노드(110a) 내에서 대응하는 일관성 제어 회로(124)에 의해 수행되는 디렉토리 0의 디렉토리 룩업을 포함한다. 이 룩업은 요청된 메모리 블록에 대해 디렉토리 메모리가 공유 캐시 메모리 서브시스템(118)에 존재하는지 또는 디렉토리 0에 존재하는지를 결정한다. 후속적인 디렉토리 미스가 발생한다. 디렉토리 엔트리가 존재하지 않으므로, 메모리 블록이 시스템(500)내의 캐시에 저장되지 않는다.
상태 5-9에서, 노드(110a)는 메모리(130a)로부터 요청된 데이터를 검색하고 상기 데이터를 프로세싱 노드(110c)를 통해 프로세싱 노드(110d)에 제공한다. 데이터는 EM 상태로 노드(110d) 내에서 캐시에 인스톨될 수 있다. 적재 오퍼레이션이 진행되고 대응하는 캐시 블록으로부터 데이터를 판독한다. 노드(110a)("홈"노드)의 일관성 제어 회로(124)는, 캐시 블록의 최근 사본이 이제 EM 상태로 노드(110d)에 있다는 것을 표시하기 위하여 블록에 대한 새로운 대응하는 디렉토리 엔트리를 입력(entering)할 수 있다. 새 대응 디렉토리 엔트리가 디렉토리 0에 입력될 때, 충돌 미스가 발생할 수 있으며, 다른 디렉토리 인트리가 축출될 필요가 있다. 축출에 대한 세부적인 사항들은 하기에서 논의될 것이다. 새로운 디렉토리 엔트리에 대한 디렉토리 0 내의 대응하는 디렉토리 상태 필드(464)는 EM 상태를 표시할 수 있다. 소유자 필드(466)는 노드(110d)를 표시할 수 있다.
요청된 캐시 블록에 대해 노드(110a)에서 디렉토리 미스가 발생했으므로, 프로세싱 노드(110a)는 임의의 프로브를 시스템(500)내의 어떠한 노드로도 전송할 것이 요청되지 않음에 주목하여야한다. 프로세싱 노드(110d)가 데이터를 수신할 때, 소스 완료 메시지가 프로세싱 노드(110d)로부터 프로세싱 노드(110a)로, 예를 들어 프로세싱 노드(110c)를 통해 전송될 수 있다. 이는 트랜잭션을 완료한다. 그러나, 그후, 단계(10)에서, 노드(110d) 내의 프로세서가 이 캐시 블록을 수정할 수 있다. 주목할 점은 어떠한 프로브들도 송신되지 않는다는 것이다. 디렉토리(0) 내의 대응하는 디렉토리 엔트리는 여전히 이 캐시 블록이 EM 상태에 있다는 것을 표시한다.
단계 11에서, 동일한 메모리 블록에 대한 적재 요청이 노드(110b)로부터 노드(110a)로 라우팅된다. 단계 12-13은 노드(110a) 내의 대응하는 일관성 제어 회로(124)에 의해 수행되는 디렉토리 0의 디렉토리 룩업을 포함한다. 상기 룩업은 요청된 메모리 블록에 대해, 디렉토리 엔트리가 공유 캐시 메모리 서브시스템(118)에 존재하는지 또는 디렉토리 0에 존재하는지를 결정한다. 후속적인 디렉토리 히트가 공유 캐시 메모리 서브시스템의 대응 엔트리에서 발생한다. 디렉토리 엔트리는 상기 블록이 프로세싱 노드(110d)("소유자"노드)에서 EM 상태에 있다는 것을 표시한다. 단계 14-15에서, 프로세싱 노드(110A)의 일관성 제어 회로(124)는 이에 다라 단일 방향 프로브 명령(D)이 프로세싱 노드(110d)로 포워딩되게 한다. 이 프로브 명령은 단계(16)에서 노드(110d)가 상기 요청된 데이터를 프로세싱 노드(110b)로 포워딩하게 한다. 주목할 점은 노드(110a)는 프로브들의 브로드캐스트를 시스템(500) 내의 모든 노드들로 송신하도록 요청받지 않는다는 것이다.
단계 17에서, 데이터는 S 상태로 노드(110b) 내의 캐시에 인스톨될 수 있다. 적재 오퍼레이션이 진행되고 대응하는 캐시 블록 내의 데이터를 판독할 수 있다. 노드(110a)("홈"노드)의 일관성 제어 회로(124)는 블록에 대한 대응하는 디렉토리 엔트리를 갱신하여 캐시 블록의 최근 사본이 여전히 노드(110d)에 있지만 이제 O 상태로 있다는 것을 표시할 수 있다. 이 경우에, 디렉토리 0 내의 대응하는 디렉토리 상태 필드(464)는 EM 상태를 표시하는 것으로부터 O 상태를 표시하는 것으로 변경될 수 있다. 프로세싱 노드(110b)가 데이터를 수신할 때 소유자 필드(466)는 계속해서 노드(110d)를 나타내며, 소스 완료 메시지가 프로세싱 노드(110b)로부터 프로세싱 노드(110a)로 전송될 수 있다. 이것이 트랜잭션을 완료한다.
주목할 점은 시스템(500)에서 송신되는 프로브들의 수가 감소될 수 있다는 것이다. 설명의 목적으로, 도 5a-5c에 도시된 실시예들의 단계들은 순차적으로 발생하는 것으로 되어 있다. 그러나, 일부 단계들은 도시된 것과 다른 순서로 발생할 수 있으며, 일부 단계들은 동시에 발생할 수 있고, 일부 단계들은 다른 단계들과 결합될 수 있으며, 그리고 일부 단계들은 또 다른 실시예에서는 존재하지 않을 수 있다.
다른 다양한 구체적인 일관성 오퍼레이션들이 프로세싱 노드에 의해 개시되는 다른 트랜잭션들에 응답하여 호출(invoking)될 수 있다. 위의 예와 유사하게, 프로브 명령들 및 네트워크 응답 트래픽은, 액세스되는 블록의 디렉토리 엔트리의 존재에 근거하여, 및/또는 디렉토리 엔트리내에 표시된 것과 같은 블록의 상태에 근거하여 필터링될 수 있다. 또한, 프로브 명령들 및 네트워크 응답 트래픽의 감소로 인하여 메모리 액세스 지연이 감소될 수 있다. 다양한 다른 구체적인 일관성 오퍼레이션들이 유사하게, 트랜잭션의 타입, 디렉토리 엔트리의 존재, 그리고 디렉토리 엔트리에서 블록의 상태에 따라 적절히 수행될 수 있다.
다른 실시예들에서 많은 다른 디렉토리 엔트리 포맷들이 가능하다. 디렉토리 엔트리의 구체적인 포맷은 다른 무엇들 보다도 유지되는 상태 정보의 양, 시스템의 확장성(scalability), 그리고 디렉토리 저장 오버헤드에 근거할 수 있다.
하기의 테이블 1은 "소유자" 프로세싱 노드에서 디렉토리 내의 프로브 필터 히트에 대한 트랜잭션 시나리오들을 보여준다. 트랜잭션 시나리오들은 첫번째 행의 캐시 블록 상태과 최좌측 열의 메모리 액세스 요청들의 조합에 의해 도시된다. 일 실시예에서, 캐시 블록의 상태는, 무효화(I), 소유(O), 두개 이상의 노드들에서 공유됨(S), 하나의 노드에서만 공유됨(S1), 및 배타적-수정(EM)의 4가지 상태들이 있을 수 있다. 일 실시예에서, 메모리 액세스 요청의 예는 페치(Fetch), 적재(Load), 저장(Store), CtoD(Change-to-Dirty) 명령을 포함할 수 있다. 이 요청들에 대한 추가의 설명은 하기에서 간략하게 주어진다. 이 4개의 요청들은 예시적인 목적으로 보여진 것이다. 다른 실시예들은 다른 개수의 요청들을 가질 수 있으며, 도시된 것과 동일한 요청들을 복수개, 또는 하나, 또는 전혀 가지지 않을 수 있다.
캐시 라인 상태 및 요청 오퍼레이션의 각각의 조합에 대한 프로브 명령들과 관련하여 "홈"노드와 같은 프로세싱 노드에 의해 취해질 수 있는 가능한 동작은 표 1의 엔트리들에서 도시된다. 프로브 명령은 필터링(-)될 수 있고 프로브들이 전혀 송신되지 않는다. 캐시 라인의 사본을 "요청" 노드와 같은 또 다른 노드로 포워딩하기 위하여 그리고 캐시 라인의 상태를 무효화(I) 상태 이외의 상태로 변경하기 위하여, 프로브 명령은 "소유자"노드와 같은 특정 노드로 디렉팅(D)될 수 있다. 프로브 명령은 특정 노드에서 캐시 라인을 무효화하도록 디렉팅(DI)될 수 있다. 마지막으로, 프로브 명령은 캐시 라인의 복수의 사본들을 무효화하기 위하여 모든 노드들로 브로드캐스트(B)될 수 있다.
PF 히트에 대한 프로브 필터(PF) 트랜잭션 시나리오들
I O S SI EM
페치(FETCH) - D - - D
적재(LOAD) - D - - D
저장(STORE) - B B DI DI
CtoD - B B B B
페치 요청은 캐시 라인의 판독 전용 사본을 얻기위하여 사용될 수 있다. 일 시릿예에서, 명령 캐시(i-cache)가 페치 요청을 송신할 수 있다. 페치 요청을 송신하는 캐시가 캐시 라인의 최근 사본(most-recent copy)을 항상 저장할 것이라는 것은 확실하지 않을 수 있다. 또한, 이 캐시는 캐시 라인을 수정할 허가를 받지 못할 수 있다. 적재 요청은 판독 오퍼레이션이고 저장 요청은 기록 오퍼레이션이다. 노드 내의 프로세서가 기록 허가를 원하나 이미 블록(상기 블록은 대응하는 S상태 또는 O상태를 가질 수 있음)의 유효 사본을 가질 때 CtoD 요청이 생성된다. 이와는 대조적으로, 저장 요청은, 요청 프로세서가 캐시 블록의 유효 사본을 가지지 않을 때 발생된다. CtoD 요청에서, 응답은 DRAM과 같은 시스템 메모리로부터 데이터를 리턴하지 않는다. 표 1에 표시된 상태들, 오퍼레이션 요청들, 그리고 동작들에 대한 설명은 하기에서 제공된다. 일 실시예에서, 프로브 필터가 프로세싱 노드(110) 내의 캐시(430)에 저장될 수 있다. 일 실시예에서, L3 캐시일 수 있는 공유 캐시 메모리 서브시스템(118)은 프로브 필터 디렉토리를 저장하기위해 선택된 캐시일 수 있다. 도 1에서 취해진 동작들을 강조하기 위한 예들이 도 5a 내지 도 5c를 참조로 하기에서 제시된다.
일 실시예의 예로서 도 5a를 참조하면, 각각의 프로세싱 노드(110)는 프로브 필터 디렉토리를 포함할 수 있다. 프로브 필터 디렉토리는 대응하는 메모리(130)로부터 블록의 상태를 저장할 수 있는바, 여기서 블록의 어드레스는 노드의 대응 메모리(130)에 매핑되고 상기 블록은 현재 컴퓨팅 시스팀(100) 내의 임의의 프로세싱 노드들(110)의 캐시내에 있다. 표 1은 캐시 블록에 대해 취해진 동작들을 표시하며, 여기서 그 대응 어드레스는 "홈"노드에 매핑된다. 메모리 블록의 사본이 "소유자"노드로서 지정된 또 다른 노드 내의 캐시에 있으면, 이 정보는 "홈" 노드 내의 프로브 필터 디렉토리에 저장된다. 그러므로, "홈"노드는, 다른 노드가 대응 캐시 블록의 "소유자"노드일 수 있는 프로브 필터 디렉토리(예를 들어, 소유자 필드(466))에 저장된 표시, 및 "소유자" 노드의 캐시 블록의 상태의 프로브 필터 디렉토리(예를 들어, 상태 필드(464)에 저장된 표시를 가진다. 요청된 캐시 블록의 데이터는 대응하는 메모리(130)로부터 적재되어(loaded), "요청" 노드로 송신된다. 어떠한 프로브도 필요하지 않다.
"요청" 노드는 페치 또는 적재 요청을 "홈"노드로 송신할 수 있다. "홈" 노드의 디렉토리 내에서 후속적인 프로브 필터 히트가 있을 수 있다. 대응하는 디렉토리 엔트리는 "소유자" 노드와 같은 또 다른 노드 내에 있는 요청된 캐시 블록을 표시할 수 있다. 일 실시예에서, "소유자" 노드 내의 캐시 블록의 사본의 상태는 O일 수 있다. 표 1은, "요청" 노드로부터의 페치 또는 적재 요청이 "홈" 노드의 디렉토리에서 후속적인 프로브 필터 히트를 가지고 "소유자" 노드의 캐시 라인이 O 상태를 가질때 디렉팅된 프로브(directed probe)(D)가 필요함을 나타낸다. "소유자" 노드가 요청된 데이터를 "요청"노드로 포워딩하기 위하여 "홈" 노드는 디렉팅된 프로브 명령(D)를 "소유자" 노드로 송신할 필요가 있다. 디렉팅된 프로브 명령은 단지 하나의 프로브이다. 브로드캐스트 프로브 명령들은 필요하지 않다. 캐시 라인의 다른 사본들이 "소유자" 노드 또는 다른 노드들 내에 존재할 수 있지만, 최근에 업데이트된 사본(most updated copy)는 "홈" 노드의 프로브 필터 내의 대응 사본이다.
마찬가지로, "소유자" 노드 내의 캐시 블록의 사본의 상태는 EM일 수 있다. 표 1은, "요청" 노드로부터의 페치 또는 적재 요청이 "홈" 노드의 디렉토리 내에서 후속적인 프로브 필터를 가지고 "소유자" 노드 내의 캐시 라인이 EM 상태를 가질 때 디렉팅된 프로브(D)가 필요함을 표시한다. "소유자" 노드가 요청된 데이터를 "요청" 노드로 포워딩하기 위하여, "홈" 노드는 디렉팅된 프로브 명령(D)을 "소유자" 노드로 송신할 필요가 있다. 디렉팅된 프로브 명령은 단지 하나의 프로브이다.
도 5a를 참조하면, 일 실시예에서, 메모리(130a) 내의 메모리 블록은 노드(110d)와 같은 "소유자" 노드 내의 캐시에 저장된 그 데이터의 사본을 가질 수 있고, 위의 예에서와 같이 "소유자" 노드 내의 캐시 라인은 O 상태 또는 EM 상태를 가질 수 있다. 이 실시예에서 그리고 이러한 시나리오에서, 그러한 캐시 블록이 "홈" 노드의 프로브 필터에 저장되는 S 또는 S1 상태를 가지는 것이 불가능할 수 있다. 예를 들어, 노드(110d)는 메모리(130a) 내의 캐시되지 않은(non-cached) 메모리 블록의 페치 또는 적재와 같은 판독 요청을 수행하고, 그후 판독 요청이 노드(110d)로부터 노드(110a)로 송신된 후, 메모리 블록이 아직 캐시되지 않았으므로, 디렉토리 0 내에서 프로브 필터 미스가 있을 것이다. 메모리 블록은 노드(110a)에 의해 메모리(130a)로부터 판독되어 노드(110d)로 송신될 수 있다. 캐시 블록은 EM 상태로 노드(110d)에 저장된다. 또한, 디렉토리 0 내의 디렉토리 엔트리(460)와 같은 디렉토리 엔트리가 이 캐시 블록에 대해 갱신될 수 있다. 디렉토리 세트(450) 내에서 캐시 충돌 미스가 발생할 수 있으며 별개의 디렉토리 엔트리가 축출될 필요가 있을 수 있다. 이러한 시나리오에 대한 추가적인 세부사항은 하기에서 제공된다.
후속적으로, 노드(110b)가 동일한 메모리 블록의 페치 또는 적재와 같은 판독 요청을 수행하면, 메모리 블록이 노드(110d) 내에 캐시되었기 때문에, 디렉토리 0 내에서 프로브 필터 히트가 있을 것이다. 단일의 디렉팅된 프로브 명령(D)가 노드(110a)로부터 노드(110d)로 송신되어, 요청된 캐시라인의 데이터의 사본을 노드(110b)에 제공할 수 있다. 이 데이터는 S 상태로 노드(110b)에 저장될 수 있다. 이 캐시 라인에 대한 디렉토리 0 내의 대응 정보는 소유자가 여전히 노드(110d)이고 그 상태가 EM으로부터 O로 변경된다는 것을 보여주기 위해 갱신될 수 있다. 단일의 디렉팅된 프로브 명령(D)이 표1의 표 엔트리 페치-EM 및 로드-EM에 도시된다.
"요청" 노드는 저장 요청을 "홈" 노드로 송신할 수 있다. "홈" 노드의 디렉토리 에서는 후속적인 프로브 필터 히트가 있을 수 있다. 대응하는 디렉토리 엔트리는 "소유자" 노드와 같은 또 다른 노드 내에 요청된 캐시 블록이 있음을 나타낼 수 있다. 일 실시예에서, "소유자" 노드 내의 캐시 블록의 사본의 상태는 O 또는 S일 수 있다. "소유자" 노드가 요청된 데이터를 "요청" 노드로 포워딩하기 위하여, "홈" 노드는 디렉팅된 프로브 명령을 "소유자" 노드로 송신할 필요가 있다. 이에 후속하여, "요청" 노드는 새로운 "소유자" 노드가 되며, 캐시 블록은 그것의 상태를 O 또는 S 에서 EM으로 변경한다. 또한, 요청된 캐시 블록의 임의의 다른 사본들을 무효화하기 위하여 브로드캐스트 프로브 명령들(B)이 모든 프로세싱 노드들로 송신된다. 캐시 블록의 다른 사본들을 무효화하기 위한 브로드캐스트 프로브 명령(B)은 표 1에 표 엔트리 저장-O 및 저장-S로 도시된다.
마찬가지로, "소유자" 노드 내의 캐시 블록의 사본의 상태는 S1 또는 EM이고, 캐시 블록의 다른 사본들은 "소유자" 노드 이외의 다른 프로세싱 노드들에는 존재하지 않는다. "소유자" 노드가 요청된 데이터를 "요청" 노드로 포워딩하기 위하여, "홈" 노드는 디렉팅된 프로브 명령을 "소유자" 노드로 송신할 필요가 있을 수 있다. 이에 후속하여, "요청" 노드는 새로운 "소유자" 노드가 되며, 캐시 블록은 그 상태를 S1에서 EM으로 변경한다. 대응하는 상태가 이미 EM이면, 그 상태는 변경되지 않는다. 또한, "소유자" 노드 내의 요청된 캐시 블록의 사본들을 무효화하기 위하여, 무효화를 위한 단일의 디렉팅된 프로브 명령(DI)이 "홈" 노드로부터 "소유자" 노드로 송신된다. 무효화를 위한 단일의 디렉팅된 프로브 명령(DI)는 표 1에서 표 엔트리 저장-S1 과 저장-EM으로 도시된다.
하기의 표 2는 "홈" 프로세싱 노드 내의 디렉토리 엔트리의 프로브 필터 축출을 위한 트랜잭션 시나리오를 표시한다. 표 2의 상태들, 오퍼레이션 요청들, 그리고 동작들은 표 1의 것들과 동일한 의미를 가진다.
PF 축출(Eviction)을 위한 프로브 필터(PF) 트랜잭션 시나리오
I O S S1 EM
페치 - B B DI DI
적재 - B B DI DI
저장 - B B DI DI
CtoD - B B DI DI
위에서 논의된 바와 같이, 디렉토리 엔트리(460) 내의 예약된 필드(reserved field)(468)는 LRU 정보를 포함할 수 있다. LRU 정보는 디렉토리 세트(450) 내에서 어떠한 디렉토리 엔트리(460)가 최근 최소 참조(least recently referenced)되었는지를 표시하는데 사용된다. LRU 정보는 캐시 제어기에 의해 사용되는 캐시 교체 알고리즘(cache replacement algorithm)과 함께 사용될 수 있다. 일 실시예에서, 디렉토리 상태 필드(464)는 캐시 교체 알고리즘에서 사용될 수 있다. 예를 들어, 디렉토리 엔트리(460)가 I 상태를 가지면, 다른 상태들을 가진 엔트리들에 앞서서 무효화된 디렉토리 엔트리들이 축출되게 하기 위해, 이 정보가 캐시 교체 알고리즘에서 사용될 수 있다. 또한, 이 알고리즘은 유효 디렉토리 상태들의 제2 그룹보다 유효 디렉토리 상태들의 그룹에 더 높은 우선권을 줄 수 있다. 예를 들어, EM 또는 S1 디렉토리 상태들을 가진 디렉토리 엔트리들은 O 또는 S 디렉토리 상태들을 가진 디렉토리 엔트리들보다 축출에 대한 더 높은 우선권을 가질 수 있는바, 이는 대응하는 데이터를 캐시하고 있을 가능성이있는 노드들의 개수로 인한 것이다.
도 5A의 노드(110d)와 같은 "요청" 노드는, 요청(예를 들어, 페치, 적재, 또는 저장)을 노드(110a)와 같은 "홈" 노드로 송신할 수 있다. 대응하는 데이터가 컴퓨팅 시스템(100)의 임으의 캐시에 저장되지 않으면, "홈" 노드의 디렉토리에서 후속적인 필터 미스가 있을 수 있다. 요청된 데이터는 노드(110a)에 의해 메모리(130a)로부터 판독되어 노드(110d)로 포워딩될 수 있다. 대응하는 캐시 블록은 "요청" 노드 내에서 EM 상태로 캐시 내에 저장될 수 있다. 또한, "홈" 노드의 디렉토리 O 내에서 디렉토리 엔트리(460)와 같은 디렉토리 엔트리가 이 캐시 블록에 대해 갱신될 수 있다. 이러한 갱신 중에, 디렉토리 세트(450) 내에서 디렉토리 충돌 미스가 발생하는 것이 가능하며 기존의 디렉토리 엔트리가 축출될 필요가 있다.
"요청" 노드로부터 "홈" 노드로의 모든 요청들(예를 들어, 페치, 적재, 저장, CtoD, 등)에 대해, "홈" 노드의 프로브 필터에 저장된 I 상태를 가진 축출될 선택된 디렉토리 엔트리는 임의의 프로브들이 "홈" 노드로부터 송신되는 것을 요구하지 않는다. I 상태를 가진 축출된 디렉토리 엔트리에 대한 프로브들의 필터링(-)은 표 2의 제1 열에 도시된다. 이 축출 케이스에서의 어떠한 프로브들도 송신하지 않는 성능은 네트워크 트래픽을 감소시킬 수 있다.
축출될 선택된 디렉토리 엔트리가 O 상태 또는 S 상태를 가지면, 대응하는 캐시 블록의 임의의 다른 사본들을 무효화하기 위하여 브로드캐스트 프로브 명령들(B)이 "홈" 노드로부터 모든 다른 가능한 노드들로 송신된다. O 상태를 가진 캐시 블록에 대한 데이터는 그 대응 프로세싱 노드 내의 그 대응하는 메모리에 다시 기록될 수 있다. O 상태 또는 S 상태를 가진 축출된 디렉토리 엔트리에 대응하는 캐시 블록의 사본들을 무효화하기 위한 브로드캐스트 프로브 명령들(B)은 표 2에 도시된다.
마찬가지로, 축출될 선택된 디렉토리 엔트리는 S1 상태 또는 EM 상태를 가지며, "소유자" 노드 내에서 요청된 캐시 블록의 사본들을 무효화하기 위하여 무효화를 위한 단일의 디렉팅된 프로브 명령(DI)이 "홈" 노드로부터 "소유자" 노드로 송신된다. EM 상태를 가진 캐시 블록에 대한 데이터는 그것의 대응하는 프로세싱 노드(이 경우에 "홈" 노드)의 그것의 대응하는 메모리에 다시 기록될 수 있다. S1 상태 또는 EM 상태를 가진 축출된 디렉토리 엔트리에 대응하는 캐시 블록의 사본을 무효화하기 위한 단일의 디렉팅된 프로브 명령(DI)이 표 2에 도시된다.
위의 실시예들에서는 고려가능한 세부사항들이 설명되지만, 위의 개시를 완전히 이해하는 당업자들에게는 다양한 변형들 및 수정들이 자명할 것이다. 하기의 청구항들은 그러한 모든 변형 및 수정을 포괄하도록 의도된 것이다.
본 발명은 일반적으로 고 성능의 컴퓨팅 네트워크 시스템에 적용될 수 있다.

Claims (10)

  1. 컴퓨팅 시스템으로서,
    프로세서 코어(112)와;
    하나 이상의 프로세서 코어들에 의해 액세스가능한 데이터를 저장하기 위한 복수의 공유 엔트리들(shared entries)을 포함하는 공유 캐시 메모리 서브시스템(shared cache memory subsystem)(118)과;
    상기 공유 캐시 메모리 서브시스템을 위한 공유 캐시 제어기(shared cache controller)와; 그리고
    제1 시스템 메모리를 포함하여 구성되며,
    여기서 상기 공유 엔트리들은 전역 일관성 프로토콜(global coherence protocol)을 제어하기 위한 디렉토리 정보를 포함하는 디렉토리 엔트리들(460) 또는 프로세스 데이터를 선택적으로 저장하도록 되어있고; 그리고
    상기 공유 캐시 제어기는 상기 공유 엔트리들 중 적어도 일부 엔트리들로 하여금 프로세서 데이터를 저장하거나 또는 디렉토리 디렉토리 정보를 저장하도록 제어하기 위한 값을 저장하도록 된 것을 특징으로 하는 컴퓨팅 시스템.
  2. 제1 항에 있어서,
    상기 공유 엔트리들이 디렉토리 정보를 저장하도록 된 것이라 결정함에 응답하여, 상기 제1 시스템 메모리 내에서 매핑된 어드레스 위치에 대응하는 데이터의 각각의 캐시 사본(cached copy)은 대응하는 디렉토리 엔트리를 가지는 것을 특징으로 하는 컴퓨팅 시스템.
  3. 제2 항에 있어서,
    상기 디렉토리 정보는 상기 캐시 사본이 배타적-수정(exclusive-modified), 소유(owned), 공유(shared), 또는 무효(invalid) 상태에 있는지를 표시하는 것을 특징으로 하는 컴퓨팅 시스템.
  4. 제3 항에 있어서,
    각각의 초기의 캐시 사본(initial cached copy)은 그것의 대응하는 디렉토리 엔트리 내에 위치되고 배타적-수정 상태를 가지는 것을 특징으로 하는 컴퓨팅 시스템.
  5. 제4 항에 있어서,
    상기 공유 캐시 메모리 서브시스템의 저장소의 주어진 라인(given line)은 복수의 디렉토리 엔트리들을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  6. 제1 항에 있어서,
    상기 프로세서 코어, 상기 캐시 메모리 서브시스템, 및 상기 공유 캐시 메모리 서브시스템은 제1 프로세싱 노드의 부분들을 형성하며, 그리고 여기서 상기 제1 프로세싱 노드는 제2 시스템 메모리를 포함하는 제2 프로세싱 노드에 연결되는 것을 특징으로 하는 컴퓨팅 시스템.
  7. 제3 항에 있어서,
    상기 디렉토리 정보는 또한, 상기 캐시 사본이, 대응하는 데이터의 모든 캐시 사본들이 단일 노드 내에 존재함을 나타내는 일-공유 상태(shared-one state)에 있는지를 표시하는 것을 특징으로 하는 컴퓨팅 시스템.
  8. 제6 항에 있어서,
    상기 공유 캐시 메모리 서브시스템의 지정된 웨이(designated way)는 디렉토리 정보를 저장하기 위하여 선택적으로 인에이블(enable)되는 것을 특징으로 하는 컴퓨팅 시스템.
  9. 프로브 명령들(probe commands)을 선택적으로 전송하는 방법으로서,
    전역 일관성 프로토콜을 제어하기 위한 디렉토리 정보를 포함하는 디렉토리 엔트리들 또는 프로세서 데이터를 공유 캐시 메모리 서브시스템에 선택적으로 저장하는 단계와; 그리고
    공유 엔트리들 중 적어도 일부 엔트리들로 하여금 프로세서 데이터를 저장하거나 또는 디렉토리 정보를 저장하도록 제어하기 위한 값을 저장하는 단계를 포함하는 것을 특징으로 하는 프로브 명령들을 선택적으로 전송하는 방법.
  10. 공유 캐시 메모리 서브시스템으로서,
    하나 이상의 캐시 메모리 서브시스템들과 통신하도록 된 인터페이스와;
    복수의 공유 엔트리들(shared entries)과; 그리고
    캐시 제어기를 포함하여 구성되며,
    여기서 상기 공유 엔트리들은 전역 일관성 프로토콜(global coherence protocol)을 제어하기 위한 디렉토리 정보를 포함하는 디렉토리 엔트리들(460) 또는 프로세스 데이터를 선택적으로 저장하도록 되어있고; 그리고
    상기 캐시 제어기는 상기 공유 엔트리들 중 적어도 일부 엔트리들로 하여금 프로세서 데이터를 저장하거나 또는 디렉토리 디렉토리 정보를 저장하도록 제어하기 위한 값을 저장하도록 된 것을 특징으로 하는 공유 캐시 메모리 서브시스템.
KR1020117002531A 2008-06-30 2009-06-30 스누프 필터링 메커니즘 KR101497002B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/164,871 US8185695B2 (en) 2008-06-30 2008-06-30 Snoop filtering mechanism
US12/164,871 2008-06-30
PCT/US2009/003878 WO2010005514A1 (en) 2008-06-30 2009-06-30 Snoop filtering mechanism

Publications (2)

Publication Number Publication Date
KR20110031361A true KR20110031361A (ko) 2011-03-25
KR101497002B1 KR101497002B1 (ko) 2015-02-27

Family

ID=41077654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117002531A KR101497002B1 (ko) 2008-06-30 2009-06-30 스누프 필터링 메커니즘

Country Status (7)

Country Link
US (1) US8185695B2 (ko)
EP (1) EP2318932B8 (ko)
JP (1) JP5679969B2 (ko)
KR (1) KR101497002B1 (ko)
CN (1) CN102132262A (ko)
TW (1) TWI506433B (ko)
WO (1) WO2010005514A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447934B2 (en) * 2010-06-30 2013-05-21 Advanced Micro Devices, Inc. Reducing cache probe traffic resulting from false data sharing
JP5435132B2 (ja) * 2010-07-12 2014-03-05 富士通株式会社 情報処理システム
US8656115B2 (en) 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
US8732410B2 (en) 2010-12-07 2014-05-20 Advanced Micro Devices, Inc. Method and apparatus for accelerated shared data migration
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
US9304924B2 (en) * 2012-08-17 2016-04-05 Futurewei Technologies, Inc. Cache coherent handshake protocol for in-order and out-of-order networks
KR101695845B1 (ko) 2012-09-20 2017-01-12 한국전자통신연구원 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
KR102069696B1 (ko) 2013-11-20 2020-01-23 한국전자통신연구원 캐시 제어 장치 및 방법
CN103970678B (zh) * 2014-04-21 2017-01-25 华为技术有限公司 目录设计方法及装置
GB2539383B (en) * 2015-06-01 2017-08-16 Advanced Risc Mach Ltd Cache coherency
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
JP6613874B2 (ja) * 2015-12-24 2019-12-04 富士通株式会社 情報処理装置、演算処理装置および情報処理装置の制御方法
KR102457179B1 (ko) 2016-03-02 2022-10-21 한국전자통신연구원 캐시 메모리 및 그것의 동작 방법
US20180004660A1 (en) * 2016-06-30 2018-01-04 Microsoft Technology Licensing, Llc Direct store to coherence point
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US11163688B2 (en) * 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing
US11567791B2 (en) * 2020-06-26 2023-01-31 Intel Corporation Technology for moving data between virtual machines without copies
CN112463652B (zh) * 2020-11-20 2022-09-27 海光信息技术股份有限公司 基于缓存一致性的数据处理方法、装置、处理芯片及服务器
CN112612726B (zh) * 2020-12-08 2022-09-27 海光信息技术股份有限公司 基于缓存一致性的数据存储方法、装置、处理芯片及服务器
US11868259B2 (en) * 2022-04-04 2024-01-09 International Business Machines Corporation System coherency protocol

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410669A (en) * 1993-04-05 1995-04-25 Motorola, Inc. Data processor having a cache memory capable of being used as a linear ram bank
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
JPH10154100A (ja) * 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法
US6487685B1 (en) * 1999-09-30 2002-11-26 Silicon Graphics, Inc. System and method for minimizing error correction code bits in variable sized data formats
US6412047B2 (en) * 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6662276B2 (en) * 2000-12-29 2003-12-09 Intel Corporation Storing directory information for non uniform memory architecture systems using processor cache
JP3620473B2 (ja) * 2001-06-14 2005-02-16 日本電気株式会社 共有キャッシュメモリのリプレイスメント制御方法及びその装置
US7096323B1 (en) * 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US20050144397A1 (en) * 2003-12-29 2005-06-30 Rudd Kevin W. Method and apparatus for enabling volatile shared data across caches in a coherent memory multiprocessor system to reduce coherency traffic
US7711901B2 (en) * 2004-02-13 2010-05-04 Intel Corporation Method, system, and apparatus for an hierarchical cache line replacement

Also Published As

Publication number Publication date
US8185695B2 (en) 2012-05-22
EP2318932B8 (en) 2018-05-16
EP2318932A1 (en) 2011-05-11
US20090327616A1 (en) 2009-12-31
TWI506433B (zh) 2015-11-01
JP2011527037A (ja) 2011-10-20
JP5679969B2 (ja) 2015-03-04
CN102132262A (zh) 2011-07-20
TW201007453A (en) 2010-02-16
KR101497002B1 (ko) 2015-02-27
WO2010005514A1 (en) 2010-01-14
EP2318932B1 (en) 2018-04-04

Similar Documents

Publication Publication Date Title
KR101497002B1 (ko) 스누프 필터링 메커니즘
US7814286B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
KR100970229B1 (ko) 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템
US6868485B1 (en) Computer system with integrated directory and processor cache
US9792210B2 (en) Region probe filter for distributed memory system
KR100545951B1 (ko) 최적화된 입/출력 애플리케이션을 위한 분산된 판독 및기입 캐싱 구현
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US7669011B2 (en) Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor
US20060155934A1 (en) System and method for reducing unnecessary cache operations
JP2014089760A (ja) キャッシュ競合の解決
WO2003060730A1 (en) Method and apparatus for using global snooping to provide cache coherence to distributed computer nodes in a single coherent system
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US20140229678A1 (en) Method and apparatus for accelerated shared data migration
US8332592B2 (en) Graphics processor with snoop filter

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20180201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 6