KR100605142B1 - 코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅 - Google Patents

코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅 Download PDF

Info

Publication number
KR100605142B1
KR100605142B1 KR1020017007739A KR20017007739A KR100605142B1 KR 100605142 B1 KR100605142 B1 KR 100605142B1 KR 1020017007739 A KR1020017007739 A KR 1020017007739A KR 20017007739 A KR20017007739 A KR 20017007739A KR 100605142 B1 KR100605142 B1 KR 100605142B1
Authority
KR
South Korea
Prior art keywords
node
probe
response
data
packet
Prior art date
Application number
KR1020017007739A
Other languages
English (en)
Other versions
KR20010082373A (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 KR20010082373A publication Critical patent/KR20010082373A/ko
Application granted granted Critical
Publication of KR100605142B1 publication Critical patent/KR100605142B1/ko

Links

Images

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
    • 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
    • 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
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • 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/254Distributed memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)
  • Multi Processors (AREA)
  • Noise Elimination (AREA)

Abstract

본 발명의 컴퓨터 시스템(10)은 다수의 처리 노드들(12A-12D)을 포함할 수 있는바, 이들중 1개 이상의 처리 노드들은 분산 메모리 시스템을 형성할 수 있는 개별적인 메모리들(14A-14D)에 결합될 수 있다. 처리 노드들(12A-12D)은 캐시들(90, 94)을 포함할 수 있으며, 컴퓨터 시스템(10)은 캐시들(90, 94)과 분산 메모리 시스템 간에 코히런시를 유지할 수 있다. 특히, 컴퓨터 시스템(10)은 유연한 프로브 커맨드/응답 라우팅 구성을 구현할 수 있다. 이러한 구성은 프로브 응답들을 수신하는 수신 노드(12A; 13B; 12C; 12D)를 식별하는 프로브 커맨드 내의 표시를 이용할 수 있다. 예를 들어, 트랜잭션의 타겟 또는 소스가 트랜잭션에 대응하는 프로브 응답들을 수신해야 함을 나타내는 프로브 커맨드들이 포함될 수 있다.
컴퓨터 시스템, 코히런시, 프로브 응답, 커맨드, 트랜잭션, 처리 노드

Description

코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅{FLEXIBLE PROBE/PROBE RESPONSE ROUTING FOR MAINTAINING COHERENCY}
본 발명은 컴퓨터 시스템에 관한 것으로서, 특히 컴퓨터 시스템들 내의 코히런시 시스템에 관한 것이다.
일반적으로, 개인용 컴퓨터(PC) 및 다른 타입의 컴퓨터 시스템은 공유 버스 시스템을 통해 메모리를 액세스하도록 설계된다. 1개 이상의 프로세서들 및 1개 이상의 입/출력(I/O) 디바이스들이 공유 버스를 통해 메모리에 결합된다. I/O 디바이스들은, 공유 버스와 I/O 디바이스들 간의 정보 전송을 처리하는 I/O 브리지를 통해 공유 버스에 결합될 수 있으며, 프로세서들은 전형적으로 공유 버스에 바로 결합되거나, 또는 캐시 계층을 통해 공유 버스에 결합된다.
불행히도, 공유 버스 시스템들은 몇 개의 단점들을 갖는다. 예를 들어, 공유 버스에는 다수의 디바이스들이 부착되기 때문에, 이 공유 버스는 전형적으로 비교적 낮은 주파수에서 동작한다. 부착된 다수의 디바이스들은 버스 상에서 신호를 구동하는 디바이스에 고용량성 부하를 제시하며, 그리고 다수의 부착 포인트들은 고주파수에 대한 비교적 복잡한 전송 라인 모델을 제시한다. 따라서, 주파수는 낮게 유지되며, 이와 유사하게 공유 버스 상에서 이용가능한 대역폭 또한 매우 낮다. 이용가능한 대역폭에 의해 성능이 한정될 수 있기 때문에, 낮은 대역폭은 공유 버스에 부가적인 디바이스들을 부착하는데 장벽을 제공한다.
공유 버스 시스템의 다른 단점은 보다 많은 수의 디바이스들에 대한 확장성이 부족하다는 것이다. 상기 설명한 바와 같이, 대역폭의 양은 한정되어 있으며 (그리고 부가적인 디바이스들을 부가하여 버스의 동작 주파수가 낮아지는 경우 감소될 수 있다). 일단 버스에 (직접적으로 또는 간접적으로) 부착된 디바이스들의 대역 요건들이 버스의 이용가능한 대역폭을 초과한다면, 버스로의 액세스를 시도할 때 디바이스들은 빈번하게 불안정해질 것이다. 이에 따라, 전체 성능이 저하될 수 있다.
상기의 1개 이상의 문제들은 분산 메모리 시스템(distributed memory system)을 이용하여 해소될 수 있다. 이러한 분산 메모리 시스템을 이용하는 컴퓨터 시스템은 다중 노드들을 포함한다. 2개 이상의 노드들이 메모리에 결합되는바, 이 노드들은 임의의 적절한 상호연결을 이용하여 내부적으로 연결된다. 예를 들어, 각 노드는 전용선들을 이용하여 서로 연결될 수 있다. 대안적으로, 각 노드는 고정된 수의 다른 노드들에 연결될 수 있으며, 트랜잭션은 제 1 노드에서 제 2 노드로 라우팅(routing)될 수 있는바, 상기 제 1 노드는 상기 제 2 노드에 바로 연결되지 않고 1개 이상의 중간 노드들을 통해 연결된다. 각 노드의 메모리들에 걸쳐서 메모리 어드레스 공간이 할당된다.
노드들은 또한 1개 이상의 프로세서들을 포함한다. 이 프로세서들은 전형적으로 메모리로부터 판독된 데이터의 캐시 블록들을 저장하는 캐시들을 포함한다. 또한, 노드는 프로세서들 외부에 1개 이상의 캐시들을 포함할 수 있다. 프로세서들 및/또는 노드들은 다른 노드들에 의해 액세스되는 캐시 블록들을 저장할 수 있기 때문에, 노드들 내의 코히런시를 유지하기 위한 메커니즘이 필요하다.
상기 문제들은 본 발명의 컴퓨터 시스템에 의해 해결된다. 이 컴퓨터 시스템은 다수의 처리 노드(processing node)들을 포함하는바, 이들중 1개 이상은 분산 메모리 시스템을 형성할 수 있는 개별적인 메모리들에 결합될 수 있다. 상기 처리 노드들은 캐시들을 포함할 수 있으며, 컴퓨터 시스템은 캐시들과 분산 메모리 시스템 간의 코히런시를 유지할 수 있다. 특히, 컴퓨터 시스템은 유연한 프로브 커맨드/응답 라우팅 구성을 구현할 수 있다.
일 실시예에서, 이러한 구성은 프로브 커맨드 내의 표시를 이용하는바, 이는 프로브 응답을 수신하는 수신 노드를 식별한다. 일반적으로, 프로브 커맨드는 노드에게 캐시 블록이 그 노드 내에 저장되었는 지의 여부를 결정하도록 하는 요청이고 그리고 만일 캐시 블록이 그 노드에 저장되어 있는 경우에는 상기 노드에서 수행될 행동(action)들의 표시이다. 프로브 응답은 행동들이 수행되었는 지를 나타내며, 캐시 블록이 노드에 의해 변형된 경우 데이터의 전송을 포함할 수 있다. 전송되는 커맨드에 의존하여 서로 다른 수신 노드들에게 프로브 응답들을 라우팅하는 유연성을 제공함으로써, 코히런시가 여전히 유지되도록 보장하면서 (예를 들어, 처리 노드들 간의 최소의 패킷 전송을 이용하는) 효율적인 방법으로 코히런시의 유지를 수행할 수 있다.
예를 들어, 트랜잭션의 타겟 또는 소스가 그 트랜잭션에 대응하는 프로브 응답들을 수신해야 함을 나타내는 프로브 커맨드들이 포함될 수 있다. 이 프로브 커맨드들은 (더티(dirty) 데이터가 자신을 저장하는 노드로부터 소스 노드로 전달될 수 있도록) 트랜잭션의 소스를 판독 트랜잭션들에 대한 수신 노드로서 특정할 수 있다. 반면, (트랜잭션의 타겟 노드에서 메모리의 데이터가 갱신되는) 기록 트랜잭션에 있어서, 프로브 커맨드들은 트랜잭션의 타겟을 수신 노드로서 특정할 수 있다. 이러한 방식으로, 상기 타겟은 언제 기록 데이터를 메모리로 보낼 지를 결정할 수 있고, 기록 데이터에 포함되는 모든 더티 데이터를 수신할 수 있다.
개략적으로, 컴퓨터 시스템이 고려된다. 이 컴퓨터 시스템은 제 1 처리 노드 및 제 2 처리 노드를 포함할 수 있다. 제 1 처리 노드는 요청을 전송함으로써 트랜잭션을 개시하도록 구성될 수 있다. 제 1 처리 노드로부터 요청을 수신하도록 결합된 제 2 처리 노드는 상기 요청에 응답하여 프로브를 발생시키도록 구성될 수 있다. 이 프로브는, 그 프로브에 대한 응답을 수신할 수신 노드를 지시하는 표시를 포함한다. 또한, 제 2 처리 노드는 트랜잭션의 타입에 응답하여 표시를 발생시키도록 구성될 수 있다.
또한, 컴퓨터 시스템에서 코히런시를 유지하는 방법이 고려된다. 소스 노드로부터 타겟 노드로 요청이 전송된다. 이 요청에 응답하여, 타겟 노드에서 프로브가 발생된다. 프로브 내의 표시에 의해 프로브 응답들에 대한 수신 노드가 지정된다. 프로브에 대한 프로브 응답은 수신 노드로 라우팅된다.
본 발명의 다른 목적들 및 장점들은 첨부 도면을 참조로 하여 설명되는 하기의 상세한 설명으로부터 보다 명확해질 것이다.
도 1은 컴퓨터 시스템의 일 실시예의 블록도이다.
도 2는 처리 노드들 사이의 상호연결의 일 실시예를 강조한, 도 1에 도시된 한 쌍의 처리 노드들의 블록도이다.
도 3은 정보 패킷의 일 실시예의 블록도이다.
도 4는 어드레스 패킷의 일 실시예의 블록도이다.
도 5는 응답 패킷의 일 실시예의 블록도이다.
도 6은 데이터 패킷의 일 실시예의 블록도이다.
도 7은 컴퓨터 시스템의 일 실시예에 의해 이용될 수 있는 예시적인 패킷 타입들을 나타낸 표이다.
도 8은 프로브 패킷의 일 실시예의 블록도이다.
도 9는 프로브 응답 패킷의 일 실시예의 블록도이다.
도 10은 판독 응답 패킷의 일 실시예의 블록도이다.
도 11은 판독 블록 트랜잭션에 대응하는 예시적인 패킷들의 흐름을 나타낸 블록도이다.
도 12는 판독 블록 트랜잭션에 대응하는 제 2의 예시적인 패킷들의 흐름을 나타낸 블록도이다.
도 13은 Wrsized(sized write) 트랜잭션에 대응하는 예시적인 패킷들의 흐름을 나타낸 블록도이다.
도 14는 메모리 컨트롤러의 일 실시예의 동작을 도시한 흐름도이다.
도 15는 프로브 패킷을 수신하는 처리 노드의 일 실시예의 동작을 도시한 흐름도이다.
도 16은 처리 노드의 일 실시예의 블록도이다.
본 발명은 다양한 변경들 및 변형적인 형태들을 가질 수 있지만, 본원에서는 특정한 실시예들에 대해 예시적으로 설명한다. 그러나, 본원에서 설명되는 도면들 및 상세한 설명은 본 발명을 개시된 형태로 한정하지 않는다. 주목할 사항으로서, 본 발명은 첨부된 청구범위에 의해 규정되는 본 발명의 범위에 포함되는 모든 변경들, 등가들 및 변형들을 포함한다.
예시적인 컴퓨터 시스템의 실시예
도 1은 컴퓨터 시스템(10)의 일 실시예를 도시한다. 다른 실시예들이 또한 가능하며 고려된다. 도 1의 실시예에서, 컴퓨터 시스템(10)은 몇 개의 처리 노드들(12A, 12B, 12C 및 12D)을 포함한다. 각 처리 노드(12A-12D)는 그 내부에 각각 포함된 메모리 컨트롤러(16A-16D)를 통해 각각의 메모리(14A-14D)에 결합된다. 또한, 처리 노드들(12A-12D)은 처리 노드들(12A-12D) 간의 통신에 이용되는 인터페이스 로직을 포함한다. 예를 들어, 처리 노드(12A)는 처리 노드(12B)와 통신하기 위한 인터페이스 로직(18A)과, 처리 노드(12C)와 통신하기 위한 인터페이스 로직(18B), 또 다른 처리 노드(미도시)와 통신하기 위한 인터페이스 로직(18C)를 포함한다. 유사하게, 처리 노드(12B)는 인터페이스 로직(18D, 18E 및 18F)를 포함하고; 처리 노드(12C)는 인터페이스 로직(18G, 18H 및 18I)를 포함하며; 그리고 처리 노드(12D)는 인터페이스 로직(18J, 18K 및 18L)을 포함한다. 처리 노드(12D)는 인터페이스 로직(18L)을 통해 I/O 브리지(20)와 통신하도록 결합된다. 다른 처리 노드들 또한 유사한 방식으로 다른 I/O 브리지들과 통신할 수 있다. I/O 브리지(20)는 I/O 버스(22)에 결합된다.
처리 노드들(12A-12D)은 처리 노드들 간의 통신을 위한 패킷 기반 링크를 구현한다. 본 실시예에서, 링크는 단방향 라인들(unidirectional lines)의 세트들로서 구현된다(예를 들어, 라인들(24A)은 처리 노드(12A)로부터 처리 노드(12B)로 패킷들을 전송하는 데에 이용되고, 라인들(24B)은 처리 노드(12B)로부터 처리 노드(12A)로 패킷들을 전송하는 데에 이용된다). 다른 라인들의 세트(24C-24H)는 도 1에 도시된 다른 처리 노드들 간에 패킷들을 전송하는 데에 이용된다. 링크는 처리 노드들 간의 통신에 대해서는 캐시 코히런트 방식으로 동작하거나, 또는 처리 노드와 I/O 브리지들 간의 통신에 대해서는 넌-코히런트 방식으로 동작할 수 있다. 주목할 사항으로서, 한 처리 노드에서 다른 처리 노드로 전송되는 패킷은 1개 이상의 중간 노드들을 통해 전송될 수 있다. 예를 들어, 처리 노드(12A)에 의해 처리 노드(12D)로 전송되는 패킷은 도 1에 도시된 처리 노드(12B) 또는 처리 노드(12C)를 통해 전송될 수 있다. 임의의 적절한 라우팅 알고리즘이 이용될 수 있다. 컴퓨터 시스템(10)의 다른 실시예들은 도 1에 도시된 실시예보다 많거나 적은 수의 처리 노드들을 포함할 수 있다.
메모리 컨트롤러 및 인터페이스 로직에 부가적으로, 처리 노드들(12A-12D)은 1개 이상의 프로세서들을 포함할 수 있다. 일반적으로, 처리 노드는 적어도 1개의 프로세서를 포함하며, 메모리와 통신하기 위한 메모리 컨트롤러 및 바람직한 다른 로직을 선택적으로 포함할 수 있다. 본원에서는 또한 "노드"라는 용어가 이용될 수 있는바, 이는 "처리 노드"를 의미한다.
메모리들(14A-14D)은 임의의 적절한 메모리 디바이스들을 포함할 수 있다. 예를 들어, 메모리들(14A-14D)은 1개 이상의 RAMBUS DRAM (RDRAM), 동기 DRAM (SDRAM), 스태틱 RAM 등을 포함한다. 컴퓨터 시스템(10)의 어드레스 공간이 메모리들(14A-14D) 사이에 분할된다. 각 처리 노드(12A-12D)는 메모리 맵을 포함할 수 있는바, 이 메모리 맵은 어떤 어드레스들이 어떤 메모리들(14A-14D)에 맵핑될 것인지를 결정하여, 특정한 어드레스에 대한 메모리 요청이 어떤 처리 노드(12A-12D)로 라우팅되어야 하는 지를 결정하는 데에 이용된다. 일 실시예에서, 컴퓨터 시스템(10) 내의 어드레스에 대한 코히런시 포인트는 어드레스에 대응하는 바이트들을 저장하는 메모리에 결합된 메모리 컨트롤러(16A-16D)이다. 다시 말해, 메모리 컨트롤러(16A-16D)는 대응하는 메모리(14A-14D)로의 각각의 메모리 액세스가 캐시 코히런트 방식으로 이루어지도록 보장한다. 메모리 컨트롤러들(16A-16D)은 메모리들(14A-14D)과 인터페이스하기 위한 제어 회로를 포함할 수 있다. 또한, 메모리 컨트롤러들(16A-16D)은 메모리 요청들을 큐잉(queuing)하기 위한 요청 큐를 포함할 수 있다.
일반적으로, 인터페이스 로직(18A-18L)은 링크로부터 패킷들을 수신하고 링크 상으로 전송될 패킷들을 버퍼링하는 다양한 버퍼들을 포함할 수 있다. 컴퓨터 시스템(10)은 패킷들을 전송하기 위한 어떠한 적절한 흐름 제어 메커니즘을 이용할 수 있다. 예를 들어, 일 실시예에서, 각 인터페이스 로직(18)은 자신이 연결된 로직의 다른 단부에 있는 수신기 내의 각 타입의 버퍼의 총수를 저장한다. 이 인터페이스 로직은, 수신 인터페이스 로직이 패킷을 저장하기 위한 빈 버퍼를 갖고 있지 않는 경우에는 패킷을 전송하지 않는다. 패킷을 전방으로 라우트시킴으로써 수신 버퍼가 비게 되므로, 수신 인터페이스 로직은 메세지를 송신 인터페이스 로직으로 전달하여 버퍼가 비었음을 나타낸다. 이러한 메커니즘은 "쿠폰 기반(coupon-based)" 시스템으로서 알려져있다.
도 2는 링크들의 일 실시예를 보다 상세히 도시한 것으로서, 도 1에 도시된 한 쌍의 처리 노드들의 블록도이다. 다른 실시예들이 또한 가능하며 고려된다. 도 2의 실시예에서, 라인들(24A)은 클록 라인(24AA), 제어 라인(24AB), 및 제어/어드레스/데이터 버스(24AC)를 포함한다. 유사하게, 라인들(24B)은 클록 라인(24BA), 제어 라인(24BB), 및 제어/어드레스/데이터 버스(24BC)를 포함한다.
클록 라인은 제어 라인 및 제어/어드레스/데이터 버스에 대한 샘플 포인트를 나타내는 클록 신호를 전송한다. 일 특정 실시예에서, 데이터/제어 비트들이 클록 신호의 각 에지(즉, 라이징 에지(rising edge) 및 폴링 에지(falling edge))를 통해 전송된다. 따라서, 라인당 2개의 데이터 비트들이 클록 주기 마다 전송된다. 본원에서, 라인당 한 비트를 전송하는 데에 이용되는 시간의 양은 "비트 타임(bit time)"이라 한다. 상기 설명된 실시예는 클록 주기당 2개의 비트 타임들을 포함한다. 패킷은 2개 이상의 비트 타임들을 통해 전송될 수 있다. 제어/어드레스/데이터 버스의 폭에 의존하여 다수의 클록 라인들이 이용될 수 있다. 예를 들어, (클록 라인들 중 하나에 관련된 1/2의 제어/어드레스/버스, 및 클록 라인들 중 나머지 하나에 관련된 1/2의 제어/어드레스/데이터 버스 및 제어 라인을 갖는) 32 비트 제어/어드레스/데이터 버스에 대해서는 2개의 클록 라인들이 이용될 수 있다. 일반적으로, "패킷"은 2개의 처리 노드들(12A-12D) 간의 통신이다. 1개 이상의 패킷들이 "트랜잭션"을 형성할 수 있는바, 이는 한 처리 노드에서 다른 처리 노드로의 정보의 전송이다. 트랜잭션을 형성하는 패킷들은 (전송을 요청하는 노드를 개시하는) 소스 노드로부터 (트랜잭션이 전달되는 노드인) 타겟 노드로의 트랜잭션을 개시하는 요청 패킷, 코히런시를 유지하기 위해 다른 처리 노드들 간에 전송되는 패킷들, 데이터 패킷들 및 트랜잭션을 종료시키는 승인 패킷(acknowledgement packet)을 포함할 수 있다.
제어 라인은 제어/어드레스/데이터 버스를 통해 전송되는 데이터가 제어 패킷의 비트 타임인지, 아니면 데이터 패킷의 비트 타임인지를 나타낸다. 제어 라인은, 표명(assert)되면 제어 패킷을 나타내며, 비표명(deassert)되면 데이터 패킷을 나타낸다. 어떠한 제어 패킷들은 데이터 패킷이 뒤따른다는 것을 나타낸다. 데이터 패킷은 대응하는 제어 패킷 바로 뒤에 온다. 일 실시예에서는, 다른 제어 패킷들이 데이터 패킷의 전송을 방해할 수 있다. 이러한 방해는 데이터 패킷을 전송하는 동안 다수의 비트 타임들에 대해 제어 라인을 표명하고, 제어 라인이 표명되는 동안 제어 패킷의 비트 타임들을 전송함으로써 수행될 수 있다. 데이터 패킷을 방해하는 제어 패킷들은 데이터 패킷이 뒤따를 것임을 나타내지 않을 수 있다.
제어/어드레스/데이터 버스는 데이터/제어 비트들을 전송하기 위한 한 세트의 라인들을 포함할 수 있다. 일 실시예에서, 제어/어드레스/데이터 버스는 8개, 16개 또는 32개의 라인들을 포함할 수 있다. 설계의 선택에 따라, 각 처리 노드 또는 I/O 브리지는 지원되는 라인들의 수 중에서 어느 것이라도 이용할 수 있다. 다른 실시예들은 필요에 따라 다른 크기의 제어/어드레스/데이터 버스를 지원할 수 있다.
일 실시예에 따르면, 커맨드/어드레스/데이터 버스 라인들 및 클록 라인은 반전 데이터(inverted data)를 전달할 수 있다(즉, 로직 1이 라인 상에서 저 전압으로서 표현되고, 로직 0이 고 전압으로서 표현된다). 대안적으로, 라인들은 (로직 0이 라인 상에서 고 전압으로서 표현되고, 로직 0이 저 전압으로서 표현되는) 비반전 데이터를 전달할 수 있다.
도 3 내지 6은 컴퓨터 시스템(10)의 일 실시예에 따라 이용되는 예시적인 패킷들을 도시한다. 도 3 내지 5는 제어 패킷들을 도시하며, 도 6은 데이터 패킷을 도시한다. 다른 실시예들은 필요에 따라 다른 패킷 정의들을 이용할 수 있다. 각 패킷들은 "비트 타임"의 표제하에서 열거된 일련의 비트 타임들로서 도시된다. 패킷의 각 비트 타임들은 리스트된 비트 타임의 순서에 따라 전송된다. 도 3 내지 6은 8비트의 제어/어드레스/데이터 버스의 구현을 위한 패킷들을 도시한다. 따라서, 각 비트 타임은 0부터 7까지 번호가 매겨진 8비트를 포함한다. 도면들에서 어떤 값도 제공되지 않은 비트들은 소정의 패킷에 대해 예약되거나, 또는 패킷 특정 정보를 전송하는 데에 이용될 수 있다.
도 3은 정보 패킷(info packet)(30)을 도시한다. 이 정보 패킷(30)은 8비트 링크 상에 2개의 비트 타임들을 포함한다. 커맨드 엔코딩은 비트 타임 1 동안 전송되며, 본 실시예에서는 6비트를 포함한다. 도 4 및 5에 도시된 각각의 다른 제어 패킷들은 비트 타임 1 동안 동일한 비트 위치들에 커맨드 엔코딩을 포함한다. 정보 패킷(30)은 메세지들이 메모리 어드레스를 포함하지 않을 때 처리 노드들 간에 메세지들을 전송하는 데에 이용될 수 있다.
도 4는 어드레스 패킷(32)을 도시한다. 이 어드레스 패킷(32)은 8비트 링크 상에 8개의 비트 타임들을 포함한다. 커맨드 엔코딩은 비트 타임 1 동안 목적지 노드 번호의 일부와 함께 전송된다. 이 목적지 노드 번호의 나머지 부분 및 소스 노드 번호는 비트 타임 2 동안 전송된다. 노드 번호는 컴퓨터 시스템(10) 내의 처리 노드들(12A-12D)중 하나를 명백히 식별하며, 컴퓨터 시스템(10)을 통해 패킷을 라우트시키는 데에 이용된다. 또한, 패킷의 소스는 비트 타임들 2 및 3 동안 전송되는 소스 태그를 할당할 수 있다. 이 소스 태그는 소스 노드에 의해 개시된 특정한 트랜잭션에 대응하는 패킷들을 식별한다(즉, 특정한 트랜잭션에 대응하는 각 패킷은 동일한 소스 태그를 포함한다). 비트 타임들 4 내지 8은 트랜잭션에 의해 영향을 받는 메모리 어드레스를 전송하는 데에 이용된다. 어드레스 패킷(32)은 트랜잭션(예를 들어, 판독 또는 기록 트랜잭션)을 개시하는 데에 이용될 수 있을 뿐 아니라, 트랜잭션에 의해 영향을 받는 메모리 어드레스를 전달하는 커맨드들에 대한 트랜잭션을 수행하는 과정에서 커맨드들을 전송하는 데에 이용될 수 있다.
도 5는 응답 패킷(34)을 도시한다. 이 응답 패킷(34)은 어드레스 패킷(32)과 유사하게 커맨드 엔코딩, 목적지 노드 번호, 소스 노드 번호 및 소스 태그를 포함한다. 다양한 타입의 응답 패킷들이 부가적인 정보를 포함할 수 있다. 예를 들어, 판독 응답 패킷은 다음 데이터 패킷에 제공되는 판독 데이터의 양을 나타낼 수 있다. 프로브 응답들은 요청된 캐시 블록에 대해 히트(hit)가 검출되었는지의 여부를 나타낼 수 있다. 일반적으로, 응답 패킷(34)은 트랜잭션에 의해 영향을 받는 메모리 어드레스의 전송을 요청하지 않는 트랜잭션을 수행하는 동안 커맨드들에 대해 이용된다. 또한, 응답 패킷(34)은 트랜잭션을 종료하기 위해 긍정적인 승인 패킷들을 전송하는 데에 이용될 수 있다.
도 6은 데이터 패킷(36)을 도시한다. 이 데이터 패킷(36)은 도 6의 실시예에서 8비트 링크 상에 8개의 비트 타임들을 포함한다. 데이터 패킷(36)은 전송되는 데이터의 양에 따라 다른 수의 비트 타임들을 포함할 수 있다. 예를 들어, 일 실시예에서, 캐시 블록은 64 바이트를 포함하기 때문에, 8비트 링크 상에 64개의 비트 타임들을 포함한다. 다른 실시예들은 필요에 따라 다른 크기를 갖는 캐시 블록을 정의할 수 있다. 또한, 데이터는 캐시불가능 판독들 및 기록들에 대해 캐시 블록 크기 이하의 크기로 전송될 수 있다. 캐시 블록 크기 이하의 데이터를 전송하는 데이터 패킷은 보다 적은 수의 비트 타임들을 이용한다.
도 3 내지 6은 8비트 링크에 대한 패킷들을 도시한다. 16 및 32 비트 링크들에 대한 패킷들은 도 3 내지 6에 도시된 연속적인 비트들을 결합시킴으로써 형성될 수 있다. 예를 들어, 16 비트 링크 상의 패킷의 비트 타임 1은 8비트 링크 상의 비트 타임들 1 및 2 동안 전송되는 정보를 포함할 수 있다. 유사하게, 32 비트 링크 상의 패킷의 비트 타임 1은 8비트 링크의 비트 타임들 1 내지 4 동안 전송되는 정보를 포함할 수 있다. 하기의 수학식 1 및 2는 8비트 링크로부터의 비트 타임들에 따른 16 비트 링크의 비트 타임 1 및 32 비트 링크의 비트 타임 1의 형성을 도시한다.
Figure 112001014655141-pct00001
(1)
Figure 112001014655141-pct00002
(2)
도 7은 컴퓨터 시스템(10)의 링크의 예시적인 실시예에 따라 이용되는 커맨드들을 도시한 표(38)이다. 다른 실시예들이 또한 가능하며 고려된다. 표(38)는 각 커맨드에 할당된 커맨드 엔코딩을 도시하는 커맨드 코드 칼럼과, 커맨드를 명명하는 커맨드 칼럼과, 그리고 커맨드 패킷들(30-34)중 어떤 것이 그 커맨드에 이용되는 지를 나타내는 패킷 타입 칼럼을 포함한다.
판독 트랜잭션은 ReadSized, RdBlk, RdBlkS 또는 RdBlkMod 커맨드들중 하나를 이용하여 개시된다. ReadSized 커맨드는 캐시불가능 판독들 또는 캐시 블록과 다른 크기를 갖는 데이터의 판독들에 이용된다. 판독될 데이터의 양이 ReadSized 커맨드 패킷으로 엔코드된다. 캐시 블록의 판독을 위해, (ⅰ) 캐시 블록의 기록가능한 카피(copy)가 바람직하지 않은한(이 경우, RdBlkMod 커맨드가 이용될 수 있다); 또는 (ⅱ) 캐시 블록의 카피가 바람직하기는 하지만 블록을 변형하고자 하는 어떠한 의도도 알려져 있지 않은한(이 경우, RdBlkS 커맨드가 이용될 수 있다), RdBlk 커맨드가 이용될 수 있다. RdBlkS 커맨드는 특정한 타입들의 코히런시 구성(예를 들어, 디렉토리 기반 코히런시 구성)을 보다 효율적으로 형성하는 데에 이용될 수 있다. 일반적으로, 적절한 판독 커맨드가, 트랜잭션을 개시하는 소스로부터 캐시 블록에 대응하는 메모리를 소유하는 타겟 노드로 전송된다. 타겟 노드 내의 메모리 컨트롤러는 Probe/Src 커맨드들을 시스템의 다른 노드들로 전송하여, 이들 노드들의 캐시 블록의 상태를 바꾸고, 캐시 블록의 갱신된 카피를 포함하는 노드가 캐시 블록을 소스 노드로 전송하게 함으로써 코히런시를 유지한다. Probe/Src 커맨드를 수신하는 각 노드는 ProbeResp 패킷을 소스 노드로 전송한다. 프로브 노드가 판독 데이터의 갱신된 카피(즉, 더티 데이터)를 갖는 다면, 그 노드는 RdResponse 패킷 및 더티 데이터를 전송한다. 또한, 타겟 노드 내의 메모리 컨트롤러는 데이터 패킷 내의 데이터가 수반되는 RdResponse 패킷을 이용하여 요청된 판독 데이터를 전송한다. 이 판독 데이터는, 소스 노드가 프로브 노드로부터 RdResponse 패킷을 수신하는 경우 이용된다. 그렇지 않으면, 타겟 노드로부터의 데이터가 이용된다. 각각의 프로브 응답들 및 판독 데이터가 소스 노드에서 수신되면, 소스 노드는 SrcDone 응답 패킷을 트랜잭션의 종료에 대한 긍정 승인으로서 타겟 소스로 전송한다.
기록 트랜잭션은 대응하는 데이터 패킷을 수반하는 WrSized 또는 VicBlk 커맨드를 이용하여 개시된다. WrSized 커맨드는 캐시불가능 기록들 또는 크기에 있어서 캐시 블록과 다른 데이터의 기록들에 이용된다. WrSized 커맨드들의 코히런시를 유지하기 위해, 타겟 노드의 메모리 컨트롤러는 Probe/Tgt 커맨드들을 시스템의 각각의 다른 노드들로 전송한다. Probe/Tgt 커맨드들에 응답하여, 각각의 프로브 노드는 ProbeResp 패킷을 타겟 노드로 전송한다. 프로브 노드가 더티 데이터를 저장하고 있으면, 이 프로브 노드는 RdResponse 패킷 및 더티 데이터로 응답한다. 이러한 방식으로, WrSized 커맨드에 의해 갱신된 캐시 블록은 WrSized 커맨드에 의해 제공되는 데이터를 통합하기 위해 메모리 컨트롤러로 반환된다. 각각의 프로브 노드들로부터 프로브 응답들을 수신할 때, 메모리 컨트롤러는 TgtDone 패킷을 소스 노드로 전송함으로써 그 트랜잭션의 종료에 대한 긍정 승인을 제공한다. 소스 노드는 SrcDone 응답 패킷에 응답한다.
노드에 의해 변형되어 그 노드 내의 캐시에서 대체되는 희생 캐시 블록(victim cache block)이 VicBlk 커맨드를 이용하여 메모리로 다시 전송된다. VicBlk 커맨드에 대해, 프로브들은 필요없다. 따라서, 타겟 메모리 컨트롤러가 희생 블록 데이터를 메모리로 보낼 준비가 되면, 타겟 메모리 컨트롤러는 TgtDone 패킷을 희생 블록의 소스 노드로 전송한다. 이 소스 노드는, SrcDone 패킷에 응답하여 데이터가 전송되어야 함을 나타내거나, 또는 MemCancel 패킷에 응답하여 (예를 들어, 중간 프로브(intervening probe)에 응답하여) VicBlk 커맨드를 전송하고 TgtDone 패킷을 수신하는 사이에 데이터가 무효화되었음을 나타낸다.
ChangetoDirty 패킷이 소스 노드에 의해 전송되어, 기록이 불가능한 상태에서 소스 노드에 의해 저장된 캐시 블록에 대한 기록 허가를 얻는다. ChangetoDirty 커맨드에 의해 개시되는 트랜잭션은 타겟 노드가 데이터를 돌려 보내지 않는다는 것을 제외하고는 판독과 유사하다. ValidateBlk 커맨드는 소스 노드가 전체 캐시 블록을 갱신하고자 하는 경우, 소스 노드에 의해 저장되지 않은 캐시 블록에 대한 기록 허가를 얻는 데에 이용될 수 있다. 이러한 트랜잭션에 대해 소스 노드에 어떠한 데이터도 전송되지 않지만, 소스 노드에 어떠한 데이터가 전송되면 판독 트랜잭션과 유사하게 동작한다.
InterruptBroadcast, Interrupt Target, 및 IntrResponse 패킷들은 인터럽트들을 방송하고, 특정한 타겟 노드에 인터럽트를 전송하며, 그리고 인터럽트들 각각에 대해 응답하는 데에 이용될 수 있다. CleanVicBlk 커맨드는 메모리 컨트롤러에 크린(clean) 희생 블록이 노드로부터 버려졌음(예를 들어, 디렉토리 기반 코히런시 구성을 위해)을 알리는 데에 이용될 수 있다. TgtStart 커맨드는 트랜잭션이 (예를 들어, 이후의 트랜잭션들의 배열(ordering)을 위해) 시작되었음을 나타내기 위해 타겟에 의해 이용될 수 있다. Error 커맨드는 에러 표시를 전송하는 데에 이용된다.
프로브/프로브 응답 라우팅
도 8은 프로브 패킷(40)의 일 실시예의 블록도를 도시한다. 다른 방법들로 프로브 패킷들을 구성하고, 선택적이거나, 유사하거나 또는 대체적인 정보를 갖는 다른 실시예들이 또한 가능하며 고려된다. 프로브 패킷(40)은 도 4에 도시된 어드레스 패킷(32)의 한 형태이다. 도 8에 도시한 바와 같이, 프로브 패킷(40)은 커맨드 필드(도 8의 CMD[5:0]), 타겟 노드 필드(도 8의 TgtNode[1:0] 및 TgtNode[3:2]), 소스 노드 필드(도 8의 SrcNode[3:0]), 소스 태그 필드(도 8의 SrcTag[1:0] 및 SrcTag[6:2]), 데이터 이동 필드(도 8의 DM), 다음 상태 필드(도 8의 NextState[1:0]) 및 어드레스 필드(도 8의 비트 타임들 4 내지 8을 통해 Addr[39:0])를 포함한다.
커맨드 필드는 패킷(40)을 프로브 패킷으로 식별할 수 있도록 엔코드된다. 예를 들어, 도 7에 도시된 Probe/Src 및 Probe/Tgt가 이용될 수 있다. 일반적으로, 트랜잭션의 타겟 노드는 트랜잭션에 의해 영향을 받는 캐시 블록의 코히런시를 유지하기 위해 프로브 커맨드들을 발생시킨다. 개시되는 트랜잭션의 타입에 기초하여, 프로브 커맨드들의 세트중 하나가 타겟 노드에 의해 선택된다. 선택된 프로브 커맨드는 프로브 커맨드들에 대해 응답하기 위한 수신 노드들을 식별한다. 프로브 응답들을 다수의 가능한 수신 노드들중 하나로 라우트시키는 데에 유연성을 제공함으로써, (소정의 수신 노드에 프로브 응답들을 라우트시키는 것과 대조적으로) (예를 들어, 노드들 간에 전송되는 패킷들의 수의 관점에서) 효율적이며 결과를 정확하게 하는 방식으로 코히런시의 유지가 이루어질 수 있다.
예를 들어, 캐시 블록을 트랜잭션의 소스 노드로 전송하는 트랜잭션들은 (데이터를 전송시키는 응답들을 포함하여) 프로브 응답들을 소스 노드로 보냄으로써 코히런시를 유지할 수 있다. 소스 노드는 다른 노드들(프로브 노드들) 각각으로부터 응답들을 기다리고 타겟 노드로부터 응답을 기다린 다음, 노드 내에 전송된 캐시 블록을 설정하며 타겟 노드에 승인 패킷을 전송하여 트랜잭션을 종료시킨다. 트랜잭션을 종료시키기 전에 프로브 노드들로부터 프로브 응답들을 기다림으로써, 각 노드에는 종료되기 전에 그 트랜잭션에 대한 정확한 코히런시 상태가 설정된다. 반면, (캐시 블록 이하로 갱신될 수 있는) WrSized 트랜잭션은 WrSized 커맨드 및 대응하는 데이터를 타겟 노드로 전송함으로써 개시된다. 타겟 노드는 데이터를 타겟 노드의 메모리로 보내기 때문에, 이 타겟 노드는 소스 노드 대신 프로브 응답들을 수신할 수 있다. 특히, WrSized 트랜잭션에 의해 갱신되는 바이트들을 포함하는 캐시 블록이 프로브 노드 내에서 더티 상태이면, 타겟 노드는 프로브에 응답하여 더티 데이터를 수신할 수 있으며 그 데이터를 WrSized 커맨드에 대응하는 데이터에 통합시킬 수 있다. 일단 프로브 응답들이 수신되면, 기록 연산에 의해 규정되는 코히런시 상태가 프로브된 노드들 내에 설정되며, 기록 데이터는 메모리로 전송될 수 있다. 따라서, 본 실시예에서는, 노드가 프로브 응답을 수신하게 될 프로브 노드들(예를 들어, 소스 또는 타겟 노드)을 나타내는 데에 2가지 타입의 프로브 커맨드들이 지원된다. 다른 실시예들은 필요에 따라 부가적인 수신 노드들을 나타내는 부가적인 프로브 커맨드들을 지원할 수 있다.
예시적인 일 실시예에서, 타겟 노드의 메모리 컨트롤러는 처리될 요청들의 큐들로부터 트랜잭션을 선택할 수 있으며, 이 선택에 응답하여 프로브 커맨드를 발생시킬 수 있다. 프로브 커맨드는 컴퓨터 시스템 내의 프로브 노드들로 방송될 수 있다. 커맨드 필드는 프로브 응답이 타겟 노드 또는 소스 노드로 라우트되어야 하는 지의 여부를 나타낸다. 예를 들어, 도 7의 표(38)에 도시된 바와 같이, 커맨드 필드의 비트 0은 (소스 노드를 나타내는 이진 0 및 타겟 노드를 나타내는 이진 1로) 수신 노드를 나타낼 수 있다. 타겟 노드 필드는 트랜잭션의 타겟 노드를 식별하며, 소스 노드 필드는 트랜잭션의 소스 노드를 식별한다. 프로브 커맨드는 타겟 노드 내의 캐시들에 또한 방송될 수 있으며, 타겟 노드는 프로브 응답을 제공할 수 있다. 다시 말해, 타겟 노드 또한 프로브 노드가 될 수 있다.
또한, 데이터 이동 필드(예를 들어, 일 실시예에서는 1 비트)는, 캐시 블록이 프로브 노드 내에서 더티한 경우 프로브에 응답하여 데이터가 돌려 보내질 것인 지의 여부를 나타내는 데에 이용될 수 있다. 이 데이터 이동 필드가 어떠한 이동도 없음(예를 들어, 클리어 상태)을 나타내면, 더티 데이터를 갖는 노드는 프로브 응답을 지정된 수신 노드로 돌려 보내지만, 이 수신 노드에 더티 데이터를 전송하지는 않는다. 데이터 이동 필드가 이동(예를 들어, 세트 상태)을 나타낸다면, 더티 데이터를 갖는 노드는 이 더티 데이터를 포함하는 소스 노드로 판독 응답을 돌려 보낸다. 다음 상태 필드는 (프로브 노드가 캐시 블록의 카피를 저장하는 경우) 프로브 노드 내에서 캐시 블록의 다음 상태를 나타낸다. 일 실시예에서, 다음 상태 필드의 엔코딩은 하기의 표 1에 도시한 바와 같다.
다음 상태 필드 엔코딩
엔코딩 의미
00 변화없음
01 공유됨: 클린->공유됨 더티->공유됨/더티
10 무효
11 예약됨
일 실시예에 따르면, 하기의 표 2는 예시적인 트랜잭션 타입들 및 대응하는 프로브 커맨드들을 도시한다.
트랜잭션 타입들 및 프로브 커맨드들
트랜잭션 타입 프로브 커맨드 다음 상태 데이터 이동
ReadSized Porbe/Src 변화 없음(00) Y(1)
Block Reads Porbe/Src 공유됨(01) Y(1)
ChangetoDirty Porbe/Src 무효(10) Y(1)
ValidateBlk Porbe/Src 무효(10) N(0)
WrSized Porbe/Tgt 무효(10) Y(1)
VicBlk 없음 - -
일반적으로, "프로브" 또는 "프로브 커맨드"라는 용어는 (예를 들어, 어드레스 필드에 의해) 프로브에 의해 정의되는 캐시 블록이 프로브 노드에 의해 저장되는지를 결정하고, 프로브 노드로부터의 바람직한 응답을 나타내기 위한, 프로브 노드에 대한 요청을 말한다. 응답은 캐시 블록에 대한 다른 코히런시 상태 설정을 포함할 수 있으며, 그리고/또는 수신 노드로의 캐시 블록의 전송을 포함할 수 있다. 프로브 노드는 "프로브 응답"을 이용하여 프로브에 응답하는데, 이는 수신 노드에 바람직한 코히런시 상태 변화가 이루어졌음을 긍정적으로 승인한다. 프로브 응답은 프로브 노드가 더티 데이터를 저장하고 있는 경우 데이터를 포함할 수 있다.
도 9는 프로브 응답 패킷(42)의 일 실시예의 블록을 도시한다. 다른 방법들로 프로브 응답 패킷들을 구성하고, 선택적이며, 유사하거나 대체적인 정보를 갖는 다른 실시예들이 또한 가능하며 고려된다. 프로브 응답 패킷(42)은 도 5에 도시된 응답 패킷(34)의 한 형태이다. 도 8에 도시된 프로브 패킷과 유사하게, 프로브 응답 패킷(42)은 커맨드 필드(CMD[5:0]), 소스 노드 필드(SrcNode[3:0]), 및 소스 태그 필드(SrcTag[1:0] 및 SrcTag[6:2])를 포함한다. 또한, 프로브 응답 패킷(42)은 응답 노드 필드(도 9의 RespNode[3:2]) 및 RespNode[1:0]) 및 히트 표시(도 9의 Hit)를 포함한다.
프로브 노드는 프로브 패킷(40)에 수신된 어드레스에 의해 식별되는 캐시 블록에 대한 캐시들을 찾는다. 캐시 블록의 카피가 발견되면, 프로브 노드는 캐시 블록의 상태를 다음 상태 필드에서 규정된 바와 같이 변화시킨다. 또한, 캐시들이 캐시 블록의 더티 카피를 저장하고, 프로브 패킷(40)의 데이터 이동 필드가 캐시 블록이 전송될 것임을 나타낸다면, 프로브 노드는 캐시들로부터 더티 데이터를 판독한다.
프로브 노드는, (ⅰ) 어떠한 더티 데이터도 없는 경우; 또는 (ⅱ) 더티 데이터 및 데이터 이동 필드가 어떠한 이동도 없음을 나타내는 경우, 프로브 응답 패킷(42)을 지정된 수신 노드로 라우트시킨다. 보다 명확하게, 본 실시예에서, 프로브 노드는 (지정된 수신 노드가 타겟 노드인 경우) 프로브 패킷(40)의 타겟 노드 필드를 판독하거나, 또는 (지정된 수신 노드가 소스 노드인 경우) 프로브 패킷(40)의 소스 노드 필드를 판독할 수 있으며, 결과적인 노드 ID를 프로브 응답 패킷(42)의 응답 노드 필드에 저장할 수 있다. 또한, 히트 표시는 프로브 노드가 캐시 블록의 카피를 보유하고 있는지의 여부를 나타내는 데에 이용된다. 예를 들어, 히트 표시는, 세트되면 프로브 노드가 캐시 블록의 카피를 보유하고 있음을 나타내며, 클리어되면 프로브 노드가 캐시 블록의 카피를 보유하고 있지 않음을 나타내는 비트를 포함할 수 있다. 이 히트 비트는 (i) 캐시 블록의 카피가 프로브 노드의 캐시들에서 발견되지 않을 경우; 또는 (ii) 캐시 블록의 카피가 프로브 노드에서 발견되기는 했지만 프로브 커맨드에 응답하여 무효화되었을 경우, 클리어될 수 있다.
도 7의 표(38)에 도시된 일 실시예에서, 프로브 응답 패킷(42)의 커맨드 필드는 ProbResp를 나타낼 수 있으며, 또한 프로브 응답이 Probe/Src 커맨드에 대한 응답인지 아니면 Probe/Tgt 커맨드에 대한 응답인지를 나타낼 수 있다. 보다 구체적으로, 커맨드 필드의 비트 0은, 클리어되면 프로브 응답이 Probe/Src에 대한 응답임을 나타내고, 세트되면 프로브 응답이 Probe/Tgt 커맨드에 대한 응답임을 나타낼 수 있다. 이러한 표시는 수신 노드에 의해, 프로브 응답이 수신 노드의 메모리 컨트롤러로 라우트될 것인지(비트 0 세트), 아니면 수신 노드의 캐시들에 대한 필 수신 로직(fill receive logic)으로 라우트될 것인지(비트 0 클리어)를 결정하는 데에 이용될 수 있다.
도 10은 판독 응답 패킷(44)의 일 실시예의 블록도이다. 다른 방법들로 판독 응답 패킷들을 구성하고, 선택적이거나 유사하거나 또는 대체적인 정보를 갖는 다른 실시예들이 또한 가능하며 고려된다. 판독 응답 패킷(44)은 도 5에 도시된 응답 패킷(34)의 한 형태이다. 도 9에 도시된 프로브 응답 패킷과 유사하게, 판독 응답 패킷(44)은 커맨드 필드(CMD[5:0]), 소스 노드 필드(SrcNode[3:0]), 및 소스 태그 필드(SrcTag[1:0] 및 SrcTag[6:2]), 및 응답 노드 필드(RespNode[3:2] 및 RespNode[1:0])를 포함한다. 또한, 판독 응답 패킷(44)은 카운트 필드(도 10의 Count), 타입 필드(도 10의 Type) 및 프로브 필드(도 10의 Prb)를 포함한다.
데이터 이동이 요청됨을 나타내는 프로브 커맨드에 대해 더티 데이터에 대한 히트를 검출하는 프로브 노드는 판독 응답 패킷(44)을 이용하여 프로브 응답 및 더티 데이터를 전송할 수 있다. 카운트 필드는 전송되는 데이터의 양을 표시하는 데에 이용되며, 타입 필드는 카운트가 바이트들 또는 쿼드워드(quadword)(8 바이트)로 측정되는 지를 나타낸다. 프로브에 응답한 캐시 블록의 전송에 있어서, 카운트필드는 8(이진 '111'로서 엔코드됨)을 나타내고, 타입 필드는 쿼드워드(예를 들어, 일 실시예에서, 타입 필드 내의 세트 비트)를 나타낸다. 프로브 필드는 판독 응답 패킷(44)이 타겟 노드 또는 프로브 노드로부터 전송되었음을 나타내는 데에 이용된다. 예를 들어, 이 프로브 필드는, 세트되면 판독 응답 패킷(44)이 프로브 노드로부터 전송되었음을 나타내고, 클리어되면 판독 응답 패킷(44)이 타겟 노드로부터 전송되었음을 나타내는 비트를 포함할 수 있다. 따라서, 이러한 프로브 노드는 판독 응답 패킷(44)을 이용할 때 프로브 비트를 세트시킨다.
판독 응답 패킷(44)은 데이터 패킷이 뒤따른다는 것을 나타내는 패킷 타입이다. 따라서, 프로브 노드는 판독 응답 패킷(44) 이후의 데이터 패킷의 캐시 블록을 전송한다. 프로브 노드는 상기 설명된 프로브 응답 패킷(42)의 라우팅과 유사한 방법으로 판독 응답 패킷(44)을 라우트시킨다(예를 들어, 프로브 노드는 (지정된 수신 노드가 타겟 노드인 경우) 프로브 패킷(40)의 타겟 노드 필드를 판독하거나, 또는 (지정된 수신 노드가 소스 노드인 경우) 프로브 패킷(40)의 소스 노드 필드를 판독할 수 있으며, 결과적인 노드 ID를 판독 응답 패킷(44)의 응답 노드 필드에 저장할 수 있다).
도 7의 표(38)에 도시된 일 실시예에서, 판독 응답 패킷(44)의 커맨드 필드는 RdResponse를 나타낼 수 있으며, 또한 판독 응답이 Probe/Src 커맨드에 대한 응답인지, 아니면 Probe/Tgt 커맨드에 대한 응답인지를 나타낼 수 있다. 보다 특정하게, 커맨드 필드의 비트 0은, 클리어되면 판독 응답이 Probe/Scr 커맨드의 응답임을 나타내고, 세트되면 판독 응답이 Probe/Tgt 커맨드의 응답임을 나타낼 수 있다. 이러한 표시는 수신 노드에 의해, 판독 응답이 수신 노드의 메모리 컨트롤러로 라우트될 것인지(비트 0 세트), 아니면 수신 노드의 캐시들을 위한 필 수신 로직로 라우트될 것인지(비트 0 클리어)를 결정하는 데에 이용될 수 있다.
도 11은 예시적인 판독 블록 트랜잭션에 대응하는 한 세트의 노드들 사이에서 이루어지는 패킷들의 흐름을 예시한 다이어그램이다. 소스 노드(50), 타겟 노드 메모리 컨트롤러(52) 및 한 세트의 프로브 노드들(54A-54N)이 도시된다. 도 11에서 패킷들의 (시간적인) 순서는 왼쪽에서부터 오른쪽으로 도시된다. 다시 말해, 타겟 노드 메모리 컨트롤러(52)가 Probe/Src 패킷들을 프로브 노드들(54A-54N) 등으로 전송하기 전에, RdBlk 패킷들이 소스 노드(50)로부터 타겟 노드 메모리 컨트롤러(52)로 전송된다. 패킷들의 시간 순서를 도시하기 위해, 소스 노드(50) 및 타겟 메모리 컨트롤러(52)가 도 11에서 두 번 도시된다. 유사하게, 하기의 도 12 및 13에서는 특정 블록들이 한번 이상 도시될 수 있다. 소스 노드(50), 타겟 노드 메모리 컨트롤러(52)를 포함하는 타겟 노드, 및 프로브 노드들(54A-54N)은 각각 도 1에 도시된 처리 노드들(12A-12D)과 유사한 처리 노드들을 포함할 수 있다.
소스 노드(50)는 RdBlk 패킷을 타겟 노드 메모리 컨트롤러(52)로 전송하여 판독 블록 트랜잭션을 개시한다. 이후, 타겟 노드 메모리 컨트롤러(52)가 서비스될 RdBlk 패킷을 선택한다. 타겟 노드 메모리 컨트롤러(52)는 Probe/Src 패킷들을 발생시킨 다음 이 패킷들을 프로브 노드들(54A-54N)로 방송한다. 또한, 타겟 노드 메모리 컨트롤러(52)는 자신이 결합된 메모리(14A-14D)로부터의 판독을 개시한다. 이 메모리(14A-14D)로부터의 판독이 완료되면, 타겟 노드 메모리 컨트롤러(52)는 데이터를 포함하는 RdResponse 패킷을 발생시킨 다음, 이 패킷을 소스 노드(50)로 전송한다.
각각의 프로브 노드들(54A-54N)은 자신의 캐시들을 검사하여, 이 캐시들 내에 RdBlk 패킷에 의해 판독된 캐시 블록이 저장되어 있는 지의 여부를 결정한다. 히트가 검출되면, 대응하는 프로브 노드들(54A-54N)은 타겟 노드 메모리 컨트롤러(52)로부터 수신된 프로브 패킷의 다음 상태 필드에 따라 캐시 블록의 상태를 갱신한다. 또한, 각각의 프로브 노드들(54A-54N)은 (Probe/Src 패킷들이 수신된 후) ProbeResp 패킷을 소스 노드(50)로 라우트시킨다. 본 예에서는, 어떠한 프로브 노드(54A-54N)도 캐시 블록의 더티 카피를 저장하지 않는다.
소스 노드(50)는 프로브 노드들(54A-54N)로부터 ProbeResp 패킷들을 기다리고, 타겟 메모리 컨트롤러(52)로부터 RdResponse 패킷을 기다린다. 이러한 패킷들이 수신되면, 소스 노드(50)는 SrcDone 패킷을 타겟 메모리 컨트롤러(52)로 전송하여 트랜잭션을 종료시킨다.
도 12는 제 2의 예시적인 판독 블록 트랜잭션을 도시한 다이어그램이다. 소스 노드(50), 타겟 노드 메모리 컨트롤러(52) 및 프로브 노드들(54A-54N)이 도시된다. 소스 노드(50)와, 타겟 노드 메모리 컨트롤러(52)를 포함하는 타겟 노드와, 그리고 프로브 노드들(54A-54N)은 각각 도 1에 도시된 처리 노드들(12A-12D)과 유사한 처리 노드들을 포함할 수 있다.
도 11에 도시된 예와 유사하게, 소스 노드(50)는 RdBlk 패킷을 타겟 노드 메모리 컨트롤러(52)로 전송한다. 이 타겟 노드 메모리 컨트롤러(52)는 Probe/Src 패킷들을 프로브 노드들(54A-54N)로 전송하고, RdResponse 패킷을 소스 노드(50)로 전송할 수 있다.
도 12의 예에서, 프로브 노드(54A)는 판독 블록 트랜잭션에 의해 액세스되는 캐시 블록에 대한 더티 데이터를 검출한다. 따라서, 프로브 노드(54A)는 이 프로브 노드(54A) 내부의 캐시로부터 판독된 더티 캐시 블록과 함께 RdResponse 패킷을 (Probe/Src 커맨드에 의해 지시되는) 소스 노드(50)로 전송한다. 또한, 일 실시예에서, 프로브 노드(54A)는 MemCancel 패킷을 타겟 노드 메모리 컨트롤러(52)로 전송할 수 있다. 타겟 노드 메모리 컨트롤러(52)가 RdResponse 패킷을 소스 노드(50)로 전송하기 전에 MemCancel 패킷이 타겟 노드 메모리 컨트롤러(52)에 도달하게 되면, 이 타겟 노드 메모리 컨트롤러(52)는 RdResponse 패킷을 전송하지 않는다. 이에 따라, "RdResponse"로 라벨이 붙여진, 타겟 노드 메모리 컨트롤러(52)로부터 소스 노드(50)로의 라인은 점선으로 표시되어 선택적인 특성을 나타낸다. MemCancel 메세지에 응답하여, 타겟 노드 메모리 컨트롤러(52)는 TgtDone 패킷을 소스 노드(50)로 전송한다.
본 예에서, 프로브 노드들(54B-54N)은 더티 데이터를 검출하지 않기 때문에, ProbeResp 패킷들을 소스 노드(50)로 라우트시킨다. 소스 노드(50)가 TgtDone, RdResponse 및 ProbeResp 패킷들을 수신하게 되면, 이 소스 노드(50)는 SrcDone 패킷을 타겟 메모리 컨트롤러(52)로 전송하여 판독 블록 트랜잭션을 종료시킨다.
도 13은 예시적인 Wrsized 트랜잭션을 도시한 블록도이다. 소스 노드(50), 타겟 노드 메모리 컨트롤러(52) 및 프로브 노드들(54A-54N)이 도시된다. 소스 노드(50), 타겟 노드 메모리 컨트롤러(52)를 포함하는 타겟 노드, 및 프로브 노드들(54A-54N)은 각각 도 1에 도시된 처리 노드들(12A-12D)과 유사한 처리 노드들을 포함할 수 있다.
소스 노드(50)는 WrSized 패킷 및 기록될 데이터를 타겟 노드 메모리 컨트롤러(52)에 전송함으로써 WrSized 트랜잭션을 개시한다. 이 WrSized 트랜잭션은 캐시 블록의 일부 만을 갱신하고, 이 캐시 블록의 나머지 부분은 갱신하지 않기 때문에, 타겟 노드 메모리 컨트롤러(52)는 프로브 노드들(54A-54N)로부터 (존재하는 경우) 더티 캐시 블록을 수집한다. 또한, 캐시 블록의 클린 카피들은 프로브 노드들(54A-54N)에서 무효화되어 코히런시를 유지한다. 서비스될 WrSized 트랜잭션을 선택하게 되면, 타겟 노드 메모리 컨트롤러(52)는 Probe/Tgt 패킷을 프로브 노드들(54A-54N)로 전송한다. 이 프로브 노드들(54A-54N)은 (Probe/Tge 패킷들이 수신된 후), (어떠한 더티 데이터도 검출되지 않는 경우에는) ProbeResp 패킷들을 전송하거나, 또는 (더티 데이터가 검출되는 경우에는) RdResponse 패킷들을 타겟 노드 메모리 컨트롤러(54)로 전송한다. 타겟 노드 메모리 컨트롤러(52)가 프로브 노드들(54A-54N)로부터 응답들을 수신하게 되면, 이 타겟 노드 메모리 컨트롤러(52)는 TgtDone 패킷을 소스 노드(50)로 전송하며, 소스 노드(50)는 SrcDone 패킷에 반응하여 WrSized 트랜잭션을 종료시킨다.
타겟 노드 메모리 컨트롤러(52)가 프로브 노드들(54A-54N)중 하나로부터 더티 캐시 블록을 수신하면, 타겟 노드 메모리 컨트롤러(52)는 WrSized 데이터 패킷 내에 소스 노드(50)에 의해 제공되는 바이트들과 더티 캐시 블록을 통합한다. 이러한 통합을 달성하는 데에 적절한 어떠한 메커니즘이라도 이용될 수 있다. 예를 들어, 타겟 노드 메모리 컨트롤러(52)는 데이터를 통합할 수 있고 메모리를 갱신하기 위해 단일 블록 기록을 수행할 수 있다. 대안적으로, 더티 블록이 메모리에 먼저 기록될 수 있고, 이후 소스 노드(50)에 의해 제공되는 바이트들의 기록이 수행된다.
주목할 사항으로서, 본 발명의 설명이 노드들 간에 전송되는 패킷들에 대해 설명하고 있기는 하지만, 커맨드들, 응답들 및 다른 메세지들을 전송하기 위한 어떠한 적절한 메커니즘이라도 이용될 수 있다.
도 14는 서비스하기 위한 트랜잭션의 선택에 응답하여 이루어지는, 메모리 컨트롤러(16A-16D)의 일 실시예의 일부의 동작을 나타낸 흐름도이다. 특히, 프로브들을 발생시키는 메모리 컨트롤러(16A-16D)의 부분이 도시된다. 다른 실시예들이 또한 가능하며 고려된다. 도 14에서는 이해를 돕기 위해 단계들이 특정한 순서로 도시되었지만, 어떠한 적절한 순서라도 이용될 수 있다. 또한, 설계 선택에 따라서 필요한 경우, 이러한 단계들은 메모리 컨트롤러(16A-16D) 내의 병렬 하드웨어를 이용하여 병렬로 수행될 수 있다.
메모리 컨트롤러는 선택된 트랜잭션이 WrSized 트랜잭션인지의 여부를 결정한다(결정 블록 60). 선택된 트랜잭션이 WrSized 트랜잭션이면, 메모리 컨트롤러는 Probe/Tgt 패킷을 각각의 프로브 노드들로 전송한다(단계 62). 선택된 트랜잭션이 WrSized 트랜잭션이 아니면, 메모리 컨트롤러는 선택된 트랜잭션이 VicBlk 또는 CleanVicBlk 트랜잭션인지를 결정한다(결정 블록 64). 선택된 트랜잭션이 VicBlk 또는 CleanVicBlk 트랜잭션이면, 어떠한 프로브 패킷들도 발생되지 않는다. 반면, 선택된 트랜잭션이 WrSized, VicBlk 또는 CleanVicBlk이 아니라면, Probe/Src 패킷들이 프로브 노드들로 전송된다(단계 66).
도 15는 프로브 패킷에 응답하는 프로브 노드의 일 실시예의 동작을 나타낸 흐름도이다. 다른 실시예들이 또한 가능하며 고려된다. 도 15에서는 이해를 돕기 위해 단계들이 특정한 순서로 도시되었지만, 어떠한 적절한 순서라도 이용될 수 있다. 또한, 단계들은 설계 선택에 따라서 필요한 경우, 프로브 노드 내의 병렬 하드웨어를 이용하여 병렬로 수행될 수 있다.
프로브 노드들은 자신의 캐시들을 검사하여 프로브에 의해 표시된 캐시 블록이 저장되어 있는 지의 여부를 결정하고, 발견되면 이 캐시 블록의 상태를 결정한다. 캐시 블록이 더티 상태인 것으로 밝혀지면(결정 단계 70), 프로브 노드는 RdResponse 패킷을 발생시킨다. 프로브 노드는 RdResponse 패킷을 뒤따르는 데이터 패킷의 전송을 위해 캐시로부터 더티 데이터를 판독한다(단계 72). 반면, 캐시 블록이 발견되지 않거나, 또는 발견되더라도 더티 상태가 아니라면, 프로브 노드는 ProbeResp 패킷을 발생시킨다(단계 74). 또한, 캐시 블록의 상태는 프로브 패킷의 다음 상태 필드에서 특정된 바와 같이 갱신된다.
프로브 노드는 수신된 프로브 패킷을 검사한다(결정 블록 76). 프로브 패킷이 Probe/Src 패킷이면, 프로브 노드는 상기 발생된 응답을 Probe/Scr 패킷에 표시된 소스 노드로 라우트시킨다(단계 78). 다시 말해, 프로브 노드는 응답 패킷의 RespNode 필드를 Probe/Scr 패킷의 SrcNode 필드의 값으로 세트시킨다. 반면, 프로브 패킷이 Probe/Tgt 패킷이면, 프로브 노드는 상기 발생된 응답을 Probe/Tgt 패킷에 표시된 타겟 노드로 라우트시킨다(단계 80). 다시 말해, 프로브 노드는 응답 패킷의 RespNode 필드를 Probe/Tgt 패킷의 TgtNode 필드의 값으로 세트시킨다.
도 16은 예시적인 처리 노드(12A)의 일 실시예의 블록도이다. 다른 실시예들이 또한 가능하며 고려된다. 도 16의 실시예에서, 처리 노드(12A)는 인터페이스 로직들(18A, 18B 및 18C) 및 메모리 컨트롤러(16A)를 포함한다. 또한, 처리 노드(12A)는 프로세서 코어(92), 캐시(90) 및 코히런시 관리 로직(98)을 포함하며, 제 2 프로세서 코어(96) 및 제 2 캐시(94)를 선택적으로 포함할 수 있다. 인터페이스 로직들(18A-18C)은 서로 결합되며, 또한 코히런시 관리 로직(98)에 결합된다. 프로세서 코어들(92 및 96)은 각각 캐시들(90 및 94)에 결합된다. 캐시들(90 및 94)은 코히런시 관리 로직(98)에 결합된다. 이 코히런시 관리 로직(98)은 메모리 컨트롤러(16A)에 결합된다.
일반적으로, 코히런시 관리 로직(98)은 처리 노드(12A)에 의해 수신된 프로브 커맨드들에 응답하도록, 그리고 서비스를 위해 메모리 컨트롤러(16A)에 의해 선택된 트랜잭션들에 응답하여 프로브 커맨드들을 발생시키도록 구성된다. 코히런시 관리 로직(98)은 서비스를 위해 선택된 트랜잭션의 타입에 따라 Probe/Scr 커맨드 또는 Probe/Tgt 커맨드를 방송한다. 또한, 이 코히런시 관리 로직(98)은 수신된 프로브 커맨드에 의해 특정되는 캐시 블록에 대해 캐시들(90 및 94)을 검사하고 적절한 프로브 응답을 발생시킨다. 또한, Probe/Tgt 커맨드를 발생시키는 경우, 코히런시 관리 로직(98)은 Probe/Tgt 커맨드에 응답하여 돌려 보내지는 프로브 응답들을 수집할 수 있다. 캐시들(90 및 94)은 처리 노드(12A)에서 개시되는 판독 요청으로부터 데이터 수신을 처리하는 필 로직, 또는 코히런시 관리 로직(98)에 포함될 수 있는 필 로직(fill logic)을 포함할 수 있다. 코히런시 관리 로직(98)은 또한 넌-코히런트 요청들을 메모리 컨트롤러(16A)로 라우트시키도록 구성될 수 있다. 일 실시예에서, 프로세서들(92 및 96)은 임의의 캐시불가능 그리고/또는 넌-코히런트 메모리 요청들에 대해 메모리 컨트롤러(16A)를 직접 액세스할 수 있도록 캐시들(90 및 94) 및 코히런시 관리 로직(98)을 바이패스(bypass)시킬 수 있다.
캐시들(90 및 94)은 데이터의 캐시 블록들을 저장하도록 구성된 고속 캐시 메모리들을 포함한다. 이 캐시들(90 및 94)은 각각의 프로세서 코어들(92 및 96) 내에 통합될 수 있다. 대안적으로, 캐시들(90 및 94)은 필요에 따라 백사이드(backside) 캐시 구성 또는 인라인 구성으로 프로세서 코어들(92 및 96)에 결합될 수 있다. 또한, 캐시들(90 및 94)은 캐시들의 계층으로서 구현될 수 있다. 필요에 따라, (계층 내에서) 프로세서 코어들(90 및 94)에 보다 가까이 있는 캐시들은 프로세서 코어들(92 및 96) 내에 통합될 수 있다.
프로세서 코어들(92 및 96)은 미리 규정된 명령 세트에 따라 명령들을 실행하는 회로를 포함한다. 예를 들어, x86 명령 세트 구조가 선택될 수 있다. 대안적으로, 알파(Alpha), 파워피씨(PowerPC) 또는 다른 어떠한 명령 세트 구조가 선택될 수 있다. 일반적으로, 프로세서 코어들은 데이터 및 명령들에 대해 캐시들을 액세스한다. 캐시 미스가 검출되면, 판독 요청이 발생되어, 미싱 캐시 블록이 맵핑되는 노드 내의 메모리 컨트롤러로 전송된다.
주목할 사항으로서, 컴퓨터 시스템(10)의 특정 실시예들은 분산 메모리 시스템을 이용하는 것으로 설명되었지만, 이러한 분산 메모리 시스템을 이용하지 않는 실시예들 또한 본 발명에서 설명되는 유연한 프로브/프로브 응답 라우팅을 이용할 수 있다. 이러한 실시예들이 고려된다.
상기의 설명을 완전히 숙지한다면, 당업자에게 있어서 본 발명의 다양한 변형들 및 수정들이 이루어질 수 있음은 자명하다. 하기의 청구 범위들은 이러한 모든 변형들 및 수정들을 포함하는 것으로 해석된다.
본 발명은 컴퓨터 시스템에 이용될 수 있다.

Claims (16)

  1. 소스 노드에 의해 타겟 노드로 전송되는 요청에 응답하여 상기 타겟 노드에 의해 발생되는 프로브를 수신하도록 결합된 제 1 노드를 포함하는 장치에 있어서,
    상기 제 1 노드가 상기 프로브에 응답하여 프로브 응답을 발생시키고, 상기 제 1 노드가 상기 타겟 노드와 상기 소스 노드 중 어느 것이 상기 프로브 내의 표시에 응답하여 상기 프로브 응답을 수신할 것인지를 선택하며, 그리고 상기 제 1 노드가 상기 프로브 응답을 상기 타겟 노드와 상기 소스 노드 중 하나로 전송하는 것을 특징으로 하는 장치.
  2. 제 1 항에 있어서,
    상기 프로브는 상기 타겟 노드를 나타내는 제 1 노드 번호와 상기 소스 노드를 나타내는 제 2 노드 번호를 포함하고, 상기 제 1 노드는 상기 프로브 내의 표시에 응답하여 상기 프로브 응답을 라우팅하기 위해 상기 제 1 노드 번호와 상기 제 2 노드 번호 중 하나를 선택하는 것을 특징으로 하는 장치.
  3. 제 1 항에 있어서,
    상기 프로브 응답은 상기 제 1 노드가 상기 프로브에 의해 식별되는 데이터의 변형된 카피를 저장하고 있는 지의 여부에 의존하는 데이터를 포함하는 것을 특징으로 하는 장치.
  4. 제 3 항에 있어서,
    상기 프로브는 상기 변형된 카피가 상기 프로브에 응답하여 전송되어야 하는지의 여부를 나타내는 데이터 이동 표시를 포함하고, 상기 프로브 응답은 상기 데이터 이동 표시에 또한 의존하는 데이터를 포함하는 것을 특징으로 하는 장치.
  5. 제 1 항에 있어서,
    상기 프로브는 상기 제 1 노드가 데이터를 캐싱하고 있는 경우 상기 제 1 노드의 프로브에 의해 식별되는 상기 데이터에 대한 다음 상태를 식별하는 다음 상태 필드를 포함하고, 상기 제 1 노드는 상기 다음 상태 필드에 응답하여 상기 제 1 노드의 데이터의 상태를 변경하는 것을 특징으로 하는 장치.
  6. a)제 1 노드에서 프로브를 수신하는 단계와, 여기서 상기 프로브는 소스 노드에 의해 타겟 노드로 전송된 요청에 응답하여 상기 타겟 노드에 의해 발생되며;
    b)상기 프로브에 응답하여 상기 제 1 노드에서 프로브 응답을 발생시키는 단계와;
    c)상기 프로브 내의 표시에 응답하여 상기 프로브 응답을 수신하도록, 상기 타겟 노드와 상기 소스 노드 중 하나를 선택하는 단계와; 그리고
    d)상기 프로브 응답을 상기 타겟 노드와 상기 소스 노드 중 하나에 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서,
    상기 프로브는 상기 타겟 노드를 나타내는 제 1 노드 번호와 상기 소스 노드를 나타내는 제 2 노드 번호를 포함하며;
    상기 c) 단계는 상기 프로브 내의 표시에 응답하여 상기 프로브 응답을 라우팅하기 위해 상기 제 1 노드 번호와 상기 제 2 노드 번호 중 하나를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서,
    상기 d) 단계는 상기 제 1 노드가 상기 프로브에 의해 식별되는 데이터의 변형된 카피를 저장하고 있는 지의 여부에 의존하는 데이터를 상기 프로브 응답에서 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서,
    상기 프로브는 상기 변형된 카피가 상기 프로브에 응답하여 전송되어야 하는지의 여부를 나타내는 데이터 이동 표시를 포함하며, 여기서 상기 전송하는 단계는 상기 데이터 이동 표시에 또한 의존하는 것을 특징으로 하는 방법.
  10. 제 6 항에 있어서,
    상기 프로브는 상기 제 1 노드가 데이터를 캐싱하고 있는 경우 상기 제 1 노드의 프로브에 의해 식별되는 상기 데이터에 대한 다음 상태를 식별하는 다음 상태 필드를 포함하며;
    상기 a) 단계 후에, 상기 다음 상태 필드에 응답하여 상기 제 1 노드의 상기 데이터의 상태를 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 트랜잭션을 개시하도록 소스 노드에서 발생되는 요청을 수신하도록 연결되는 회로를 포함하는 타겟노드에 있어서,
    상기 회로는 상기 요청에 응답하여 프로브를 발생시키며, 상기 프로브는 상기 프로브에 대한 응답들을 수신하는 수신 노드를 지시하는 표시를 포함하며, 상기 수신 노드는 제 1 타입의 트랜잭션에 대해서는 상기 타겟 노드가 되고, 그리고 상기 수신 노드는 제 2 타입의 트랜잭션에 대해서는 상기 소스 노드가 되는 것을 특징으로 하는 타겟노드.
  12. 제 11항에 있어서, 상기 프로브는 패킷을 포함하며, 상기 패킷은 상기 패킷을 프로브로 식별하는 커맨드 필드를 포함하며, 그리고 상기 표시는 상기 커맨드 필드에 포함되는 것을 특징으로 하는 타겟노드.
  13. 제 11항에 있어서, 상기 제 1 타입은 제 1 바이트 수의 기록이며, 상기 제 1 바이트 수는 데이터의 캐시 블럭의 제 2 바이트 수보다 적은 것을 특징으로 하는 타겟 노드.
  14. 제 13항에 있어서, 상기 제 2 타입은 판독인 것을 특징으로 하는 타겟 노드.
  15. 제 11항에 있어서, 상기 프로브는 상기 타겟 노드를 식별하는 타겟 노드 필드와 상기 소스 노드를 식별하는 소스 노드 필드를 포함하는 제 1 패킷을 포함하는 것을 특징으로 하는 타겟 노드.
  16. 제 11항에 있어서, 상기 회로는 캐시 블럭이 저장되어 있는 메모리와 통신하는 메모리 컨트롤러를 포함하고, 그리고 상기 메모리 컨트롤러는 상기 메모리에 액세스하기 위해 상기 요청을 선택하는 것에 응답하여 상기 프로브를 발생시키는 것을 특징으로 하는 타겟 노드.
KR1020017007739A 1998-12-21 1999-08-26 코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅 KR100605142B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/217,367 1998-12-21
US09/217,367 US6631401B1 (en) 1998-12-21 1998-12-21 Flexible probe/probe response routing for maintaining coherency

Publications (2)

Publication Number Publication Date
KR20010082373A KR20010082373A (ko) 2001-08-29
KR100605142B1 true KR100605142B1 (ko) 2006-07-28

Family

ID=22810782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017007739A KR100605142B1 (ko) 1998-12-21 1999-08-26 코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅

Country Status (7)

Country Link
US (2) US6631401B1 (ko)
EP (1) EP1141839B1 (ko)
JP (1) JP4712974B2 (ko)
KR (1) KR100605142B1 (ko)
BR (1) BR9907499A (ko)
DE (1) DE69904758T2 (ko)
WO (1) WO2000038069A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101089810B1 (ko) * 2003-01-27 2011-12-12 어드밴스드 마이크로 디바이시즈, 인코포레이티드 캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
JP4718012B2 (ja) * 1998-12-21 2011-07-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US7529799B2 (en) * 1999-11-08 2009-05-05 International Business Machines Corporation Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6757793B1 (en) * 2000-03-29 2004-06-29 Advanced Micro Devices, Inc. Reducing probe traffic in multiprocessor systems using a victim record table
US20020082621A1 (en) 2000-09-22 2002-06-27 Schurr Marc O. Methods and devices for folding and securing tissue
US6745272B2 (en) * 2001-04-04 2004-06-01 Advanced Micro Devices, Inc. System and method of increasing bandwidth for issuing ordered transactions into a distributed communication system
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US6748479B2 (en) 2001-11-20 2004-06-08 Broadcom Corporation System having interfaces and switch that separates coherent and packet traffic
US6912602B2 (en) 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
US7206879B2 (en) 2001-11-20 2007-04-17 Broadcom Corporation Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
US7752281B2 (en) 2001-11-20 2010-07-06 Broadcom Corporation Bridges performing remote reads and writes as uncacheable coherent operations
US7394823B2 (en) 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US7227870B2 (en) 2001-11-20 2007-06-05 Broadcom Corporation Systems including packet interfaces, switches, and packet DMA circuits for splitting and merging packet streams
US7395379B2 (en) * 2002-05-13 2008-07-01 Newisys, Inc. Methods and apparatus for responding to a request cluster
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US6993631B2 (en) 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US6965973B2 (en) 2002-05-15 2005-11-15 Broadcom Corporation Remote line directory which covers subset of shareable CC-NUMA memory space
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
EP1616260A2 (en) * 2003-04-11 2006-01-18 Sun Microsystems, Inc. Multi-node system with global access states
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US7856534B2 (en) 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US7240165B2 (en) * 2004-01-15 2007-07-03 Hewlett-Packard Development Company, L.P. System and method for providing parallel data requests
US7962696B2 (en) * 2004-01-15 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for updating owner predictors
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US7143245B2 (en) * 2004-01-20 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for read migratory optimization in a cache coherency protocol
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US7769959B2 (en) * 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7149852B2 (en) * 2004-01-20 2006-12-12 Hewlett Packard Development Company, Lp. System and method for blocking data responses
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7350032B2 (en) 2004-03-22 2008-03-25 Sun Microsystems, Inc. Cache coherency protocol including generic transient states
US20070186043A1 (en) * 2004-07-23 2007-08-09 Darel Emmot System and method for managing cache access in a distributed system
US7296167B1 (en) 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
US8254411B2 (en) * 2005-02-10 2012-08-28 International Business Machines Corporation Data processing system, method and interconnect fabric having a flow governor
US7619982B2 (en) * 2005-04-25 2009-11-17 Cisco Technology, Inc. Active probe path management
US7353340B2 (en) * 2005-08-17 2008-04-01 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US7398360B2 (en) * 2005-08-17 2008-07-08 Sun Microsystems, Inc. Multi-socket symmetric multiprocessing (SMP) system for chip multi-threaded (CMT) processors
US7529894B2 (en) * 2005-08-17 2009-05-05 Sun Microsystems, Inc. Use of FBDIMM channel as memory channel and coherence channel
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7536515B2 (en) * 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7640401B2 (en) 2007-03-26 2009-12-29 Advanced Micro Devices, Inc. Remote hit predictor
US20080298246A1 (en) * 2007-06-01 2008-12-04 Hughes William A Multiple Link Traffic Distribution
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
US20080320233A1 (en) * 2007-06-22 2008-12-25 Mips Technologies Inc. Reduced Handling of Writeback Data
US7992209B1 (en) 2007-07-19 2011-08-02 Owl Computing Technologies, Inc. Bilateral communication using multiple one-way data links
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US20120054439A1 (en) * 2010-08-24 2012-03-01 Walker William L Method and apparatus for allocating cache bandwidth to multiple processors
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
US9952975B2 (en) * 2013-04-30 2018-04-24 Hewlett Packard Enterprise Development Lp Memory network to route memory traffic and I/O traffic
US11159636B2 (en) 2017-02-08 2021-10-26 Arm Limited Forwarding responses to snoop requests
US10747298B2 (en) 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US10503648B2 (en) 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
US10776282B2 (en) 2017-12-15 2020-09-15 Advanced Micro Devices, Inc. Home agent based cache transfer acceleration scheme
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
US11210246B2 (en) 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02205963A (ja) 1989-01-27 1990-08-15 Digital Equip Corp <Dec> 読取中断処理
EP0412353A3 (en) 1989-08-11 1992-05-27 Hitachi, Ltd. Multiprocessor cache system having three states for generating invalidating signals upon write accesses
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US5590307A (en) 1993-01-05 1996-12-31 Sgs-Thomson Microelectronics, Inc. Dual-port data cache memory
US6049851A (en) 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5537575A (en) 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
US5655140A (en) 1994-07-22 1997-08-05 Network Peripherals Apparatus for translating frames of data transferred between heterogeneous local area networks
US5517494A (en) * 1994-09-30 1996-05-14 Apple Computer, Inc. Method and system of multicast routing for groups with a single transmitter
US5659708A (en) 1994-10-03 1997-08-19 International Business Machines Corp. Cache coherency in a multiprocessing system
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5987544A (en) 1995-09-08 1999-11-16 Digital Equipment Corporation System interface protocol with optional module cache
US5659710A (en) 1995-11-29 1997-08-19 International Business Machines Corporation Cache coherency method and system employing serially encoded snoop responses
US5673413A (en) 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5893144A (en) 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6038644A (en) 1996-03-19 2000-03-14 Hitachi, Ltd. Multiprocessor system with partial broadcast capability of a cache coherent processing request
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5749095A (en) 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5887138A (en) 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US5859983A (en) 1996-07-01 1999-01-12 Sun Microsystems, Inc Non-hypercube interconnection subsystem having a subset of nodes interconnected using polygonal topology and other nodes connect to the nodes in the subset
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5991819A (en) 1996-12-03 1999-11-23 Intel Corporation Dual-ported memory controller which maintains cache coherency using a memory line status table
US6018791A (en) 1997-04-14 2000-01-25 International Business Machines Corporation Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states
US5924118A (en) 1997-04-14 1999-07-13 International Business Machines Corporation Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system
US5966729A (en) * 1997-06-30 1999-10-12 Sun Microsystems, Inc. Snoop filter for use in multiprocessor computer systems
US6112281A (en) * 1997-10-07 2000-08-29 Oracle Corporation I/O forwarding in a cache coherent shared disk computer system
US6108737A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US6108752A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6101420A (en) 1997-10-24 2000-08-08 Compaq Computer Corporation Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6085263A (en) 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US6085294A (en) 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6012127A (en) 1997-12-12 2000-01-04 Intel Corporation Multiprocessor computing apparatus with optional coherency directory
US6138218A (en) 1998-02-17 2000-10-24 International Business Machines Corporation Forward progress on retried snoop hits by altering the coherency state of a local cache
US6098115A (en) 1998-04-08 2000-08-01 International Business Machines Corporation System for reducing storage access latency with accessing main storage and data bus simultaneously
US6286090B1 (en) 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6295583B1 (en) * 1998-06-18 2001-09-25 Compaq Information Technologies Group, L.P. Method and apparatus for resolving probes in multi-processor systems which do not use external duplicate tags for probe filtering
US6199153B1 (en) 1998-06-18 2001-03-06 Digital Equipment Corporation Method and apparatus for minimizing pincount needed by external memory control chip for multiprocessors with limited memory size requirements
US6275905B1 (en) * 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
JP4718012B2 (ja) * 1998-12-21 2011-07-06 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリキャンセルメッセージを用いたシステムメモリ帯域幅の節約およびキャッシュコヒーレンシ維持
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101089810B1 (ko) * 2003-01-27 2011-12-12 어드밴스드 마이크로 디바이시즈, 인코포레이티드 캐시로 쓰기 데이터를 삽입하기 위한 방법 및 장치

Also Published As

Publication number Publication date
KR20010082373A (ko) 2001-08-29
EP1141839A1 (en) 2001-10-10
JP2002533812A (ja) 2002-10-08
WO2000038069A1 (en) 2000-06-29
US6631401B1 (en) 2003-10-07
EP1141839B1 (en) 2003-01-02
DE69904758D1 (de) 2003-02-06
US20040024836A1 (en) 2004-02-05
BR9907499A (pt) 2000-10-03
JP4712974B2 (ja) 2011-06-29
US7296122B2 (en) 2007-11-13
DE69904758T2 (de) 2003-10-16

Similar Documents

Publication Publication Date Title
KR100605142B1 (ko) 코히런시를 유지하기 위한 유연한 프로브/프로브 응답 라우팅
US6490661B1 (en) Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6370621B1 (en) Memory cancel response optionally cancelling memory controller&#39;s providing of data in response to a read operation
US6275905B1 (en) Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6167492A (en) Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system
EP1363196B1 (en) System with interfaces, a switch and a memory bridge with cc-numa (cache-coherent non-uniform memory access)
EP1363191B1 (en) System with address-based intranode coherency and data-based internode coherency
EP1363192B1 (en) Level 2 cache with local ownership of coherency blocks
EP1255201A1 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
EP1222558B1 (en) Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6973543B1 (en) Partial directory cache for reducing probe traffic in multiprocessor systems
US7424561B2 (en) Systems using mix of packet, coherent, and noncoherent traffic to optimize transmission between systems
US7222220B2 (en) Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US11483260B2 (en) Data processing network with flow compaction for streaming data transfer
US20050080948A1 (en) Bridges performing remote reads and writes as uncacheable coherent
KR100615660B1 (ko) 메모리 취소 메세지를 이용한 시스템 메모리 대역폭의유지 및 캐시 코히런시 유지
EP1363190B1 (en) Remote directory which covers subset of shareable cc-numa (cache-coherent nonuniform memory access) memory space
US6757793B1 (en) Reducing probe traffic in multiprocessor systems using a victim record table

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee