KR20210002668A - 데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치 - Google Patents
데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치 Download PDFInfo
- Publication number
- KR20210002668A KR20210002668A KR1020207034229A KR20207034229A KR20210002668A KR 20210002668 A KR20210002668 A KR 20210002668A KR 1020207034229 A KR1020207034229 A KR 1020207034229A KR 20207034229 A KR20207034229 A KR 20207034229A KR 20210002668 A KR20210002668 A KR 20210002668A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- request
- slave
- response
- read
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크에서, 홈 노드가 리퀘스트 노드로부터의 읽기 요청에 응답하여 읽기 트랜잭션을 실행한다. 제1 실시례에서는, 상기 홈 노드로부터의 읽기 요청을 수신한 것을 확인하는, 슬레이브 노드로부터의 수신확인 메시지를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 제2 실시례에서는, 상기 홈 노드가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는 메세지를 상기 리퀘스트 노드로 송신한다. 상기 리퀘스트 노드로부터 이 메세지의 수신을 확인하는 메시지를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 이런 식으로, 상기 리퀘스트 노드로부터 상기 읽기 트랜잭션의 완료의 확인을 기다리지 않고 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다.
Description
본 발명은 데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치에 관한 것이다.
다중 프로세서 데이터 처리 시스템은 인터커넥트 패브릭(interconnect fabric)을 통하여 연결된 메모리, 프로세서, 액셀러레이터, 그리고 IO와 같은 다양한 유형의 노드를 가진 온칩 네트워크로 배열될 수 있다. 높은 레벨의 경우, 3개의 기본 노드 유형인, 리퀘스트(request), 홈(home) 그리고 슬레이브(slave)가 있다. 리퀘스트 노드(Request Node)(RN)는 읽기와 쓰기를 포함하여, 프로토콜 트랜잭션을 상기 인터커넥트에 발생시키는 노드이다. 이들 노드는 완전 코히어런트 프로세서(fully coherent processor) 또는 IO 코히어런트 소자로 될 수 있다. 홈 노드(Home Node)(HN)는 RN으로부터 프로토콜 트랜잭션을 수신하는 노드이다. 상기 시스템에서 각각의 어드레스는 상기 어드레스에 대한 요청을 위한 코히어런시 포인트(Point-of-Coherency)(PoC) 및 직렬화 포인트(Point of Serialization)(PoS)로서의 역할을 하는 홈(Home)을 가진다. 하나의 전형적인 구현예에서는, 다양한 어드레스에 대한 홈들이 홈 노드로서 함께 집단을 이룬다. 이들 홈 노드의 각각은 리던던트 스누프(redundant snoop)를 줄이기 위해서 시스템 레벨 캐시(system level cache) 및/또는 스누프 필터를 포함할 수 있다.
슬레이브 노드(Slave Node)(SN)는 HN으로부터 요청을 수신하여 완료하는 노드이다. SN은 주변 기억장치 또는 주 기억장치로부터 사용될 수 있다.
공유 데이터 자원으로부터 나온 데이터는 다수의 상이한 프로세서가 접근할 수 있고 상기 데이터의 복사본(copy)은 고속 접근을 위해 로컬 캐시에 저장될 수 있다. 모든 복사본이 최신본이라는 것을 보장하기 위해서 캐시 코히어런스 프로토콜이 사용될 수 있다. 상기 캐시 코히어런스 프로토콜은 접근이 진행되는 데이터의 복사본을 가지는 RN과 스누프 메세지를 교환하는 HN을 포함할 수 있다.
HN은 선착순 처리로 어드레스에 대한 접근들을 직렬화(serialization)할 수 있다. 예를 들면, 현재의 트랜잭션이 완료될 때까지 HN의 자원과 지정된 소자에 대한 접근이 유보될 수 있다. 이 접근 방식의 단점은 HN 자원이 필요 이상으로 오랫동안 보존될 수 있다는 것이고, 이것은 시스템 성능에 악영향을 줄 수 있다.
코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크에서, 홈 노드가 리퀘스트 노드로부터의 읽기 요청에 응답하여 읽기 트랜잭션을 실행한다. 제1 실시례에서는, 상기 홈 노드로부터의 읽기 요청을 수신한 것을 확인하는, 슬레이브 노드로부터의 수신확인 메시지를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 제2 실시례에서는, 상기 홈 노드가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는 메세지를 상기 리퀘스트 노드로 송신한다. 상기 리퀘스트 노드로부터 이 메세지의 수신을 확인하는 메시지를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 이런 식으로, 상기 리퀘스트 노드로부터 상기 읽기 트랜잭션의 완료의 확인을 기다리지 않고 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다.
첨부된 도면은 다양한 대표적인 실시례를 보다 충분히 기술하기 위해서 사용될 것이고 개시된 대표적인 실시례와 그것의 고유의 장점을 보다 잘 이해하기 위해서 당업자에 의해서 사용될 수 있는 시각적인 표현을 제공한다. 이들 도면에서, 유사한 참고 번호는 상응하는 요소들을 나타낸다.
도 1은 다양한 대표적인 실시례에 따른 데이터 처리 시스템의 블록도이고;
도 2는 데이터 처리 네트워크에서의 종래의 데이터 접근을 위한 트랜잭션 흐름도이고;
도 3 내지 도 5는 다양한 대표적인 실시례에 따른 데이터 접근을 위한 트랜잭션 흐름도이고; 그리고
도 6은 다양한 대표적인 실시례에 따른 데이터 처리 시스템에서 식별자의 이송을 나타내는 블록도이다.
도 1은 다양한 대표적인 실시례에 따른 데이터 처리 시스템의 블록도이고;
도 2는 데이터 처리 네트워크에서의 종래의 데이터 접근을 위한 트랜잭션 흐름도이고;
도 3 내지 도 5는 다양한 대표적인 실시례에 따른 데이터 접근을 위한 트랜잭션 흐름도이고; 그리고
도 6은 다양한 대표적인 실시례에 따른 데이터 처리 시스템에서 식별자의 이송을 나타내는 블록도이다.
본 명세서에 기술된 다양한 장치와 소자는 데이터 처리 시스템에서 수신 데이터(incoming data)의 자동적인 루팅(routing)과 할당을 위한 메카니즘을 제공한다.
본 발명은 많은 상이한 형태의 실시례가 가능하지만, 본 발명이 본 발명의 원리의 하나의 예로서 간주되어야 하며 본 발명을 도시되고 기술된 특정 실시례로 제한하기 위한 것이 아니라는 것을 조건으로, 특정 실시례가 도면에 도시되어 있고 본 명세서에 상세하게 기술될 것이다. 아래의 설명에서, 상기 도면들 중의 몇 개의 도면에서 동일하거나, 유사하거나 또는 상응하는 부분들을 기술하기 위해서 유사한 참고 번호가 사용되어 있다.
본 명세서에서, 제1 및 제2, 위(top) 및 아래(bottom) 등과 같은 상관적 용어(relational term)는 독립체들 또는 작용들 사이의 어떠한 실제의 상기와 같은 관계나 순서를 반드시 필요로 하거나 의미하는 것이 아니고 하나의 독립체 또는 작용을 다른 독립체 또는 작용과 단지 구별하기 위해서 사용될 수 있다. "포함한다", "포함하는"과 같은 표현, 또는 상기 표현의 임의의 다른 변형 표현은, 여러 요소들의 목록을 포함하는 프로세스, 방법, 물품, 또는 장치가 상기 요소들만 포함하는 것이 아니라 명시적으로 기재되지 않았거나 상기 프로세스, 방법, 물품, 또는 장치에 본질적인 다른 요소도 포함할 수 있도록, 비배타적인 포함 사항을 포함하고자 하는 것이다. 하나의 요소를 포함한다는 표현은, 더 이상 제한 없이, 상기 요소를 포함하는 프로세스, 방법, 물품, 또는 장치에서 추가적인 동일한 요소의 존재를 배제하지 않는다.
본 명세서의 전체에 걸쳐서 "하나의 실시례", "어떤 실시례", "한 실시례" 또는 유사한 표현은 상기 실시례와 관련하여 기술된 특정 부분, 구조 또는 특징이 본 발명의 적어도 하나의 실시례에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체의 다양한 부분에서 이러한 구절이 나올 때 반드시 모두 동일한 실시례를 나타내는 것은 아니다. 게다가, 상기 특정 부분, 구조 또는 특징이 하나 이상의 실시례에서 제한 없이 임의의 적절한 방식으로 결합될 수 있다.
본 명세서에 사용되어 있는 "또는"이라는 표현은 포괄적인 것 또는 임의의 하나 또는 임의의 결합형태를 의미하는 것으로 해석되어야 한다. 따라서, "A, B 또는 C"는 A; B; C; A와 B; A와 C; B와 C; A, B 그리고 C" 중의 하나를 의미한다. 이러한 정의에 대한 예외는 여러 요소, 여러 기능, 여러 단계 또는 여러 작용의 결합이 어떤 식으로든 본질적으로 상호 배타적인 경우에만 발생할 것이다.
설명의 간소화와 명료성을 기하기 위해서, 참고 번호는 상응하거나 유사한 요소를 나타내기 위해서 여러 도면에서 반복될 수 있다. 본 명세서에 기술된 실시례의 이해를 제공하기 위해서 많은 세부사항이 개시되어 있다. 상기 실시례는 이러한 세부사항 없이 실시될 수 있다. 다른 예에서는, 기술된 실시례를 모호하게 하지 않기 위해서 주지의 방법, 절차 및 구성요소는 상세하게 기술되어 있지 않다. 상기 기술(description)이 본 명세서에 기술된 실시례의 범위에 대한 제한으로 간주되어서는 안된다.
개시된 메카니즘은 인터커넥트에서의 데이터 인출 트랜잭션의 시간을 줄이는 것 외에, 인터커넥트 구성요소들을 충분히 이용하는데 필요한 자원의 수도 줄인다. 게다가, 개시된 메카니즘은 상이한 소스들로부터의 요청 응답 쌍(request response pair)들을 연쇄(chain)시킴으로써 인터커넥트에서의 트랜잭션의 처리량을 증진시킨다.
본 발명은 데이터 인출 작업을 위해 완료 응답과 데이터 응답을 분리시키기 위한 데이터 처리 네트워크에서의 메카니즘에 관한 것이다. 개시된 메카니즘은 상기 데이터 처리 네트워크를 통하여 데이터 패킷 홉(data packet hop)의 수를 줄여서, 보다 많은 요청 처리량과 함께 보다 낮은 인터커넥트 사용률을 제공하여 조기에 자원 할당해제(deallocation)를 가능하게 한다. 상기 메카니즘의 한 실시례는 읽기 트랜잭션을 위해 별개의 데이터 응답과 홈 노드 응답을 지원한다.
코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크에서, 홈 노드가 리퀘스트 노드로부터의 읽기 요청에 응답하여 읽기 트랜잭션을 실행한다. 제1 실시례에서는, 상기 홈 노드로부터의 읽기 요청을 수신한 것을 확인하는, 슬레이브 노드로부터의 수신확인 메시지(read receipt)를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 제2 실시례에서는, 상기 홈 노드가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는 메세지를 상기 리퀘스트 노드로 송신한다. 상기 리퀘스트 노드로부터 이 메세지의 수신을 확인하는 메시지를 수신하는 즉시 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다. 이런 식으로, 상기 리퀘스트 노드로부터 상기 읽기 트랜잭션의 완료의 확인을 기다리지 않고 상기 읽기 트랜잭션이 상기 홈 노드에서 종료된다.
도 1은 다양한 대표적인 실시례에 따른 데이터 처리 시스템(100)의 블록도이다. 다수의 처리 코어 클러스터(processing core cluster)(102)(리퀘스트 노드(RN)라고도 한다)가 코히어런트 인터커넥트(104)를 통하여 데이터 자원에 결합되어 있다. 데이터는 입력/출력(I/O) 리퀘스트 노드(RN-I)를 통하여 수신된다. 도시된 예에서는, RN-I(106a)가 네트워크(108)로부터 데이터를 수신하는 네트워크 인터페이스 컨트롤러(NCI)를 포함하고 RN-I(106b)가 I/O 소자(112)로부터 데이터를 수신한다. I/O 소자(112)는, 예를 들면, 주변 구성요소 인터커넥트 익스프레스(peripheral component interconnect express)(PCIe) 버스, 직접 메모리 접근(DMA) 유닛, 또는 네트워크 액셀러레이터를 통하여 결합될 수 있다. 데이터는 하나 이상의 메모리 컨트롤러(116)를 통하여 인터커넥트(104)에 결합되어 있는 하나 이상의 메모리 또는 저장 소자(114)에 저장될 수 있다. 홈 노드(HN)(118, 120)는 시스템 레벨 캐시를 포함할 수 있다. 각각의 홈 노드(HN)는 주어진 복수의 시스템 어드레스에 저장된 데이터에 대한 직렬화 포인트 및/또는 코히어런스 포인트의 역할을 한다. 홈 노드(HN-F), 예를 들면 홈 노드(118)는 로컬 자원용 홈이 될 수 있다. 그 대신에, 홈 노드(HN-I), 예를 들면 홈 노드(120)는 오프칩 자원(off-chip resourse)에 인터페이스를 제공할 수 있다. 리퀘스트 노드(102)에 의해서 요청된 데이터는 메모리(114)에 저장하기 위해 메모리 컨트롤러(116)를 통하여 메모리(114)로부터, 또는 HN의 시스템 레벨 캐시로부터 검색될 수 있다. 상기 메모리 컨트롤러를 슬레이브 노드(SN)라고 한다.
복수의 리퀘스트 노드(RNs)가 동일한 메모리 장소에 접근하려고 할 때 충돌(conflict)을 피하기 위해서, 홈 노드(118)가 직렬화 포인트로서의 역할을 하여, 읽기 요청(read request)과 다른 트랜잭션을 직렬 방식으로, 예를 들면, 선착순으로 처리한다. 노드들 사이의 데이터(DAT) 채널을 통하여 데이터를 전송하기 위해서 인터커넥트(104)가 사용된다. 게다가, 요청과 응답이 상기 인터커넥트에서 요청(REQ) 채널과 응답(RSP) 채널을 통하여 발송되는, 각각의 접근 트랜잭션(access transaction)을 제어하기 위해서 메시징 프로토콜(messaging protocol)이 사용된다. 최종적으로, 데이터 코히어런스를 보장하기 위해서 '스누프' 메세지가 인터커넥트에서 SNP 채널을 통하여 발송된다.
본 발명의 한 실시형태는 데이터 처리 네트워크의 향상된 성능 및 효율성을 제공하는, 노드들의 하드웨어로 구현된, 개선된 메시징 및 데이터 전송 메카니즘에 관한 것이다.
도 2는 데이터 처리 네트워크에서의 종래의 데이터 접근을 위한 트랜잭션 흐름도이다. 도 2에서, 수직 바(202, 204, 206)는 리퀘스트 노드(RN), 홈 노드(HN) 및 슬레이브 노드(SN) 각각에 대한 타임라인을 나타내고, 시간은 위에서 아래로 진행한다. 시간 T1에서, 리퀘스트 노드(RN)는 읽기 어드레스(read address)를 위해 읽기 요청(208)을 홈 노드로 송신한다. 요청된 데이터가 홈 노드(HN)의 캐시에 존재하지 않으면, 제1 슬레이브 읽기 요청(210)('ReadNoSnp'로 표시함)이 적절한 슬레이브 노드(SN)로 송신되고, 홈 노드(HN)가 상기 요청의 처리를 확인하기 위해서 제1 응답 메세지(Resp)(212)를 리퀘스트 노드(RN)로 송신한다. 슬레이브 노드(SN)가 수신확인 메세지(214)를 홈 노드(HN)로 송신한 다음 요청된 데이터(216)를 리퀘스트 노드(RN)로 송신한다. 모든 커뮤니케이션은 인터커넥트 패브릭(interconnect fabric)을 통하여 전송된다. 상기 데이터는 상기 인터커넥트를 가로질러서 복수의 데이터 비트로 리퀘스트 노드(RN)로 전송될 수 있다. 요청된 데이터가 리퀘스트 노드(RN)에 의해서 일단 수신되면, 완료 확인(completion acknowledgment)(CompAck) 메세지가 RN으로부터 HN으로 송신된다. 따라서, 트랜잭션의 기간이 RN에 대해서는 T1-T2이고 HN에 대해서는 T3-T4이다. T3-T4의 기간 동안, HN은 트랜잭션을 위한 자원(예를 들면, 트래커(tracker))을 할당한다. 게다가, HN은 읽기 트랜잭션에서 접근된 어드레스를 위해 스누프 메세지를 RN으로 송신하는 것을 억제한다. 그렇지 않으면, 예를 들어, SN으로부터 데이터가 도달하기 전에 스누프 요청(220)이 RN에 도달할 수 있다.
요청된 데이터가 HN의 캐시에 존재하면, 상기 데이터는 HN으로부터 RN으로 직접 송신되고 어떠한 메세지도 SN과 교환되지 않는다. 하지만, 상기 데이터와 스누프가 상기 인터커넥트를 통하여 상이한 경로를 취할 수 있고, 이로 인해 상기 데이터의 일부가 도달하기 전에 스누프가 RN에 도달하기 때문에, HN은 스누프를 송신하기 전에 CompAck 응답(218)을 여전히 기다려야 한다.
도 3 내지 도 5는, 다양한 대표적인 실시례에 따른, 데이터 처리 네트워크에서의 데이터 접근을 위한 메카니즘의 트랜잭션 흐름도이다. 도 3 및 도 4와 아래의 관련 논의는 예시적인 하나의 트랜잭션 내에 존재하는 종속성(dependencies)과 트랜잭션 구조를 설명한다. 도 3 및 도 4는 별개의 데이터와 홈 응답(Home response)을 가진 트랜잭션에 대한 종속성을 나타내고 있다.
도 3은 다양한 대표적인 실시례에 따른, 데이터 처리 네트워크에서의 데이터 접근을 위한 트랜잭션 흐름도이다. 도 2와 유사하게, 도 3에서, 수직 바(302, 304, 306)는 리퀘스트 노드(RN), 홈 노드(HN) 및 슬레이브 노드(SN) 각각에 대한 타임라인을 나타내고, 시간은 위에서 아래로 진행한다. 시간 T1에, RN은 읽기 어드레스를 위해 읽기 요청(308)을 홈 노드로 송신한다. 상기 요청은 HN이 RN으로부터 완료 확인(CompAck) 메세지를 기대해야 하는 것(expCompAck=1)을 나타낸다. 요청된 데이터가 HN의 캐시에 없으면, 제1 슬레이브 읽기 요청(310)(ReadNoSnpSep)이 적절한 SN으로 송신되고, HN이 상기 요청의 처리를 확인하기 위해 제1 응답 메세지(RespSepData)(312)를 RN으로 송신한다. SN은 제2 응답 메세지에서 수신확인 메세지(314)를 HN으로 송신한 다음 요청된 데이터(316)를 RN으로 송신한다. 그러나, 도 2에 도시된 메카니즘과 대조적으로, 상기 데이터가 SN(또는 HN)으로부터 도달되기 전에 RN이 CompAck 메세지(318)를 HN으로 송신한다. HN이 CompAck 메세지(318)를 수신하면, 읽기 트랜잭션에 할당된 자원을 할당해제한다. HN의 자원은 T5-T6의 기간 동안 사용된다. 이 기간은 도 2의 T3-T4 기간보다 상당히 짧다. 그러나, 일단 상기 트랜잭션이 HN에서 완료되면, HN은, 요청하는 경우, 시간 T4에 RN에 도달하는 스누프 메세지(320)를 자유롭게 송신한다. RN은 스누프처리된 어드레스(snooped address(es))에 대해 데이터가 요청된 것을 인식하고 요청된 데이터 전부가 RN에 의해서 수신되는 때인, 시간 T5까지 스누프 메세지에 대한 응답(322)을 지연시킨다. 이전과 같이, 요청된 데이터가 HN의 캐시에 존재하면, 상기 데이터는 HN으로부터 RN으로 직접 송신되고 어떠한 메세지도 SN과 교환되지 않는다.
도 3에 도시된 메카니즘은 HN의 자원이 읽기 트랜잭션에 할당되는 기간을 단축시키고, 이로 인해 전반적인 시스템 성능을 향상시킬 수 있다.
도 4는, 다양한 대표적인 실시례에 따른 데이터 처리 네트워크에서의 데이터 접근을 위한 다른 트랜잭션 흐름도이다. 도 4는 도 3에 대한 변형형태로서, 도 4에서는 HN이 RN으로부터 완료 확인 메세지를 기대하지 않아야 하는 것을 나타내는 ExpCompAck=0와 함께 읽기 요청(402)이 송신된다. HN이 상기 메세지를 기다릴 필요가 없기 때문에, ReadReceipt(314)가 SN으로부터 수신되는 때인, 시간 T6에 읽기 트랜잭션의 HN의 처리가 종료된다. 이러한 읽기 요청은 비-코히어런트 메모리(non-coherent memory)에 대한 것이며 프로그램 순서(program ordering)가 유지될 필요도 없다.
도 3 및 도 4는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법의 실시례를 나타내고 있다. 상기 데이터 처리 네트워크의 리퀘스트 노드는 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신한다. 상기 읽기 요청은 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드는 상기 제1 어드레스와 관련된 데이터에 대한 코히어런시 포인트를 제공한다. 상기 리퀘스트 노드는 상기 읽기 요청에 대한 응답으로 상기 홈 노드로부터 송신되는 RespSepData 메세지를 수신한다. 제1 응답 메세지(RespSepData)는 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것과 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공된다는 것을 나타낸다. 상기 리퀘스트 노드는 상기 제1 어드레스와 관련된 데이터를 포함하는 제2 응답 메세지(DataSepResp)를 수신한다. 제2 응답 메세지(DataSepResp)는 상기 데이터만 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타낸다. 제2 응답 메세지(DataSepResp)는 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 홈 노드로부터 송신되고 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 슬레이브 노드로부터 송신된다.
상기 읽기 요청은 코히어런트 인터커넥트의 요청(REQ) 채널로 송신될 수 있고, 상기 RespSepData 메세지는 응답(RSP) 채널로 송신될 수 있고 상기 DataSepResp 메세지는 데이터(DAT) 채널로 송신될 수 있다.
도 3에 도시된 실시례에서는, 리퀘스트 노드가 홈 노드로부터 상기 RespSepData 메세지를 수신하는 것에 응답하여 리퀘스트 노드가 완료 확인 메세지(CompAck)를 홈 노드로 송신한다. 홈 노드는 리퀘스트 노드로부터 제1 CompAck 메세지를 수신하는 것에 응답하여 읽기 트랜잭션을 종료하는데, 여기서 상기 읽기 트랜잭션을 종료하는 것은 상기 읽기 트랜잭션에 할당된 홈 노드의 자원을 할당해제하는 것과 제1 어드레스에 있는 데이터에 대하여 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
요청된 데이터가 홈 노드에, 예를 들면, 시스템 캐시에 존재하지 않으면, 홈 노드는 제1 슬레이브 읽기 요청(ReadNoSnpSep)을 슬레이브 노드로 송신하고, 상기 제1 슬레이브 읽기 요청(ReadNoSnpSep)은 슬레이브 노드가 데이터 응답만 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 제1 슬레이브 읽기 요청(ReadNoSnpSep)은 코히어런트 인터커넥트의 REQ 채널로 송신된다. 그 다음에 슬레이브 노드가 수신확인 메세지를 홈 노드로 송신한다.
도 4에 도시된 실시례에서는, 홈 노드가 슬레이브 노드로부터 수신확인 메세지를 수신하는 것에 응답하여 읽기 트랜잭션을 종료하는데, 여기서, 다시, 상기 읽기 트랜잭션을 종료하는 것은 상기 읽기 트랜잭션에 할당된 홈 노드의 자원을 할당해제하는 것과 제1 어드레스에 있는 데이터에 대하여 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
도 5는, 다양한 대표적인 실시례에 따른, 데이터 처리 네트워크에서 데이터 접근을 위한 다른 트랜잭션 흐름도이다. 도 4에서와 같이, HN이 RN으로부터 CompAck 메세지를 기대하지 않아야 하는 것을 나타내는 ExpCompAck=0와 함께 읽기 요청(402)이 송신된다. 다시, HN이 상기 메세지를 기다릴 필요가 없기 때문에, ReadReceipt(314)가 SN으로부터 수신되는 때인, 시간 T6에 읽기 트랜잭션의 HN의 처리가 종료된다. 그러나, 도 3 및 도 4에서는, HN이 RespSepData 메세지(312)를 RN으로 송신하였고, SN이 별개의 수신확인(314) 및 데이터(316) 응답을 송신해야 하는 것을 나타내는 - 슬레이브 읽기 요청(ReadNoSnpSep)(502) 메세지를 SN으로 송신하였다. 도 5에서는, HN이 RespSepData 메세지를 RN으로 송신하지 않는다. 대신에, 요청된 데이터를 제공하고 상기 트랜잭션의 완료를 확인하기 위해서 SN이 CompData 메세지(504)를 RN으로 송신한다.
이와 같이 도 5는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법의 한 실시례를 나타내고 있고, 이 실시례에서 리퀘스트 노드는 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신한다. 상기 읽기 요청은 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드는 상기 제1 어드레스와 관련된 데이터에 대한 코히어런시 포인트를 제공한다. 이에 응답하여, 홈 노드가 ReadNoSnp 요청을 슬레이브 노드로 송신하고, 상기 ReadNoSnp 요청은 슬레이브 노드가 데이터 응답만 리퀘스트 노드로 송신하여야 하는 것을 나타내고, 상기 ReadNoSnp 요청은, 예를 들면, 상기 코히어런트 인터커넥트의 REQ 채널로 송신된다. 슬레이브 노드가, 이에 응답하여, 수신확인 메세지를 홈 노드로 발실한다. 게다가, 슬레이브 노드가 상기 제1 어드레스와 관련된 데이터를 포함하는 CompData 메세지를 리퀘스트 노드로 송신한다. 상기 메세지는 또한 상기 읽기 트랜잭션의 완료를 나타낸다. 상기 CompData 메세지는, 예를 들면, 상기 코히어런트 인터커넥트의 데이터(DAT) 채널로 송신될 수 있다. 홈 노드는 슬레이브 노드로부터 수신확인 메세지를 수신하는 것에 응답하여 홈 노드에서 상기 읽기 트랜잭션을 종료한다.
상기 설명에, 읽기 트랜잭션을 위한 예시적인 메카니즘들이 기술되어 있다. 이들 메카니즘은 모든 읽기* 트랜잭션에 사용될 수 있다. 하지만, 상기 메카니즘이 모든 읽기 트랜잭션에 적절하지 않을 수 있고, 종래의 메카니즘이 완료 확인(CompAck) 응답이 없이 순서화된 읽기 트랜잭션, 원자성 트랜잭션(atomic transaction), 또는 배타성을 가진 읽기 트랜잭션에 사용될 수 있다.
상기한 바와 같이, 새로운 메카니즘을 지원하기 위해서 몇 가지 새로운 메세지가 기존의 프로토콜에 추가되어 있다, 즉:
o
상기 데이터만 제공되고 또한 리퀘스터(Requester)가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타낸다.
o
슬레이브 노드나 홈 노드에 의해 송신된 것이다.
o
데이터(DAT) 채널로 송신된 것이다. 데이터 연산 코드 필드(Data opcode field)가 추가적인 연산 코드(예를 들면, 0xB, 이 경우에 데이터 연산 코드 필드가 4-bit만큼 확장된다)를 허용하기 위해서 확장될 수 있다.
o
트랜잭션이 홈 노드에서 순서화되었다는 것을 나타낸다. 상기 트랜잭션을 위한 데이터가 별개의 데이터 응답으로 제공된다.
o
홈 노드로부터 송신된 것이다.
o
응답(RSP) 채널로 송신된 것이고, 연산 코드가 0xB.
o
요청은 홈 노드(HN-F 또는 HN-I)로부터 슬레이브 노드(SN-F 또는 SN-I)로 전달된다.
o
REQ 채널로 송신된 것이고, 연산 코드가 0x11.
o
상기 요청의 순서 필드(Order field)가 01로 설정되어야 한다.
홈 노드가 슬레이브 노드로부터 RetryAck 응답을 수신하면, 이것은 상기 요청을 처리하기 위해서 충분한 자원을 이용할 수 없기 때문일 수 있다. 이 경우에, 적절한 크레디트(credit)가 수신되면 홈 노드가 상기 트랜잭션을 재시도할 수 있다. 그렇지 않으면, RetryAck 응답은 슬레이브 노드가 ReadNoSnpSep 요청을 지원하지 않거나 임의의 다른 일시적인 이유로 이러한 요청을 처리할 수 없다는 것을 나타낼 수 있다. 이 경우에, 홈 노드가 슬레이브 노드로부터 적절한 크레디트를 수신한 후 요청을 재송신할 때 홈 노드가 ReadNoSnpSep 요청 대신에 ReadNoSnp 요청을 송신할 수 있다.
o
슬레이브 노드는 맵(map):
과 홈 노드에 ReadReceipt 응답을 제공해야 한다.
o
슬레이브 노드는 요청에서의 ReturnNID에 의해 확인된 노드에 DataSepResp 응답을 제공해야 하고, 상기 노드는 매핑(mapping):
에 의해서 원래의 리퀘스터(Requester) 노드나 홈 노드가 될 수 있다.
상기 메세지들은 코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크에서 사용된다. 상기 리퀘스트 노드는 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하도록 설정되어 있고, 상기 읽기 요청은 상기 코히어런트 인터커넥트를 통하여 상기 홈 노드로 송신되고, 상기 홈 노드는 상기 제1 어드레스와 관련된 데이터에 대한 코히어런시 포인트를 제공한다. 상기 리퀘스트 노드는 상기 읽기 요청에 응답하여 상기 홈 노드로부터 송신된 RespSepData 메세지를 수신하도록 설정되어 있고, 상기 RespSepData 메세지는 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션을 위한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타낸다. 상기 데이터는 DataSepResp로 상기 리퀘스트 노드에 수신되고, 상기 DataSepResp 메세지는 상기 데이터가 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타낸다. 상기 DataSepResp 메세지는 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 홈 노드로부터 송신되고, 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 슬레이브 노드로부터 송신된다.
상기 코히어런트 인터커넥트는 요청(REQ) 채널, 응답(RSP) 채널, 그리고 데이터(DAT) 채널을 포함할 수 있고, 이 경우에 상기 읽기 요청은 REQ 채널로 송신되고, 상기 RespSepData 메세지는 RSP 채널로 송신되고 상기 DataSepResp 메세지는 DAT 채널로 송신된다.
리퀘스트 노드는, 리퀘스트 노드가 홈 노드로부터 RespSepData 메세지를 수신하는 것에 응답하여 제1 CompAck 메세지를 홈 노드로 송신하고 리퀘스트 노드가 DataSepResp 메세지를 수신하는 것에 응답하여 제2 CompAck 메세지를 홈 노드로 송신할 수도 있다.
홈 노드는 리퀘스트 노드로부터 제1 CompAck 메세지를 수신하는 것에 응답하여 홈 노드에서 읽기 트랜잭션을 종료하도록 설정될 수 있고, 여기서 상기 읽기 트랜잭션을 종료하는 것은 상기 읽기 트랜잭션에 할당된 홈 노드의 자원을 할당해제하는 것과 제1 어드레스에 있는 데이터에 대하여 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
홈 노드는, 리퀘스트 노드로부터의 상기 읽기 요청에 응답하여, ReadNoSnpSep 요청을 슬레이브 노드로 송신할 수 있고, 상기 ReadNoSnpSep 요청은 슬레이브 노드가 데이터 응답만 리퀘스트 노드로 송신해야 하는 것을 나타낸다. 상기 ReadNoSnpSep 요청은 상기 코히어런트 인터커넥트의 REQ 채널로 송신될 수 있다. 그 다음에 홈 노드가 슬레이브 노드로부터 수신확인 메세지를 수신하고, 상기 수신확인 메세지는 상기 ReadNoSnpSep 요청에 응답하여 슬레이브 노드로부터 생성된 것이다.
홈 노드는 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여 홈 노드에서 상기 읽기 트랜잭션을 종료할 수 있고, 여기서 상기 읽기 트랜잭션을 종료하는 것은 상기 읽기 트랜잭션에 할당된 홈 노드의 자원을 할당해제하는 것과 제1 어드레스에 있는 데이터에 대하여 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
도 3은 별개의 Comp 응답과 데이터 응답을 가진 읽기 트랜잭션의 구조의 한 예를 나타내고 있다. CompAck 응답은, DataSepResp를 기다릴 것을 요할 때, CompAck를 가진 순서화된(ordered) ReadOnce/ReadNoSnp 요청의 경우를 제외하고, DataSepResp를 기다리는 것이 허용되지만, DataSepResp를 기다릴 것을 요하지는 않는다.
상기 요청/응답 규칙은:
DataSepResp 및 RespSepData는 관련 요청이 수신된 후에만 컴플리터(Completer)에 의해서 송신되어야 한다. RespSepData는 홈 노드로부터만 허용된다. DataSepResp는 슬레이브 노드 또는 홈 노드에 의해서 송신되는 것이 허용된다.
o
리퀘스터가 CompAck을 송신하기 전에 일부 또는 모든 데이터가 수신되기를 기다리는 것은 허용되지만, 기다릴 것을 요하는 것은 아니다.
o
순서 요건(Order requirement)을 가진 ReadOnce 요청 및 ReadNoSnp 요청에 대해서는, CompAck을 송신하기 전에 적어도 하나의 데이터 응답이 수신되기를 기다릴 것을 요한다.
슬레이브 노드는 ReadNoSnpSep를 수신하고 상기 요청에 대해 RetryAck로 응답하지 않을 것이라는 것을 보장한 후에만 홈 노드로 ReadReceipt 응답을 송신해야 한다. RetryAck은 송신자(sender)에게 자신의 요청이 받아들여지지 않았다는 것을 알리는 부정 확인(negative acknowledgement)이며, 원하는 경우, 컴플리터로부터 적절한 자원 크레디트를 수신한 후 상기 요청을 재송신해야 한다.
슬레이브 노드로부터의 ReadReceipt는 슬레이브 노드에 대한 요청이 완료되었다는 것을 홈 노드에 알리기에 충분하고; 슬레이브 노드로부터 홈 노드로의 별개의 Comp 응답은 필요하지 않으며 송신되어서는 안 된다.
별개의 Comp 및 데이터 응답을 포함하는 순서 요건을 가진 ReadOnce 및 ReadNoSnp 트랜잭션에 대해서는, 홈 노드가 ReadReceipt 응답을 송신해서는 안 된다. 홈 노드로부터의 RespSepData 응답은 암시적인 ReadReceipt를 포함한다.
모든 경우에, 별개의 데이터 응답과 홈 노드 응답이 이용될 수 있지만, 도 5에 도시된 것과 같이 결합된 CompData 응답을 이용하는 것도 허용된다.
캐시 상태. 읽기 트랜잭션에 대한 캐시 상태는 항상 DataSepResp 또는 CompData 응답과 함께 Resp 필드의 데이터와 함께 제공된다.
홈 노드로부터의 RespSepData 빠른 응답은 다음과 같이 캐시 상태 정보를 선택적으로 포함하는 것이 허용된다:
RespSepData 응답에 캐시 상태 정보가 포함되어 있으면, Resp 필드는 적절한 캐시 상태로 설정되어야 한다. DataSepResp 응답에 포함된 캐시 상태 정보는 동일해야 한다.
전체적 관찰 결과(Global Observation). 리퀘스터가 제1 DataSepResp를 수신하면, 수신된 읽기 데이터를 수정할 수 있는 조치가 없으므로, 읽기 트랜잭션이 전체적으로 관찰되는 것으로 간주할 수 있다. 홈 노드는, ReadNoSnpSep와 같은, 트랜잭션을 시작하기 전에 필요한 모든 스누프 트랜잭션이 완료되도록 해야 하고, 이로 인해 리퀘스터에게 DataSepResp 응답이 제공될 수 있다. RespSepData 응답과 관련된 전체적인 관찰가능성에 대한 보장은 없다.
리퀘스터가 홈 노드로부터 RespSepData 응답을 수신하면, 이것이 해당되는 요청은 홈 노드에서 순서화되었으며 상기 리퀘스터는 이전에 예정되어 있는 트랜잭션에 대해 어떤 스누프도 수신하지 않을 것이다. 홈 노드는 동일한 어드레스에 대한 리퀘스터에 대해 미처리 상태로 있는 스누프 트랜잭션이 없도록 해야 한다. RespSepData를 수신하면 필요한 경우 현재 요청 후 동일한 어드레스에 대한 임의의 요청이 CompAck이 발신된 후에만 스누프를 발신할 것이라는 것도 보장한다.
리퀘스터가 CompAck을 해줄 때, 이 리퀘스터는 이후에 예정되어 있는 임의의 트랜잭션에 대해 스누프 위험을 처리할 책임을 질 것이라는 것을 나타낸다. 다음과 같은 규칙이 적용된다;
바로 아래에 기술되어 있는 것을 제외하고, 모든 트랜잭션에 대해서, CompAck은 RespSepData 응답이 수신된 후에 제공되어야 한다. CompAck이 제공되기 전에는 DataSepResp 응답을 기다리는 것이 허용되지만, DataSepResp 응답을 기다릴 것을 요하지는 않는다.
ExpCompAck 필드 및 순서화 요건(순서 = 10/11)을 가정한, ReadOnce/ReadNoSnp 트랜잭션에 대해서는, DataSepResp 응답과 RespSepData 응답의 양자 모두가 수신된 후에만 CompAck이 제공될 것이 요구된다.
본 명세서는 DataSepResp만 수신되는 경우 CompAck이 제공되어서는 안 된다는 것을 요구한다. 리퀘스터는 RespSepData의 수신을 기다려야 한다.
ReadOnce 및 ReadNoSnp. 모든 완전 코히어런트 읽기 트랜잭션(fully coherent Read transaction), 다시 말해서, ReadClean, ReadNotSharedDirty, ReadShared 및 ReadUnique는 ExpCompAck를 가정하고 순서 필드(Order field)를 제로(zero)로 설정할 필요가 있다.
ReadOnce 트랜잭션 및 ReadNoSnp 트랜잭션의 거동은 ExpCompAck 거동뿐만 아니라 상기 순서 요건에 따라 달라질 것이다.
순서화된 ReadOnce 및 ReadNoSnp를 사용할 경우, 홈 노드가 상기 Read를 전체적으로 볼 수 있는 때를 결정할 수 있도록 CompAck가 필요하다.
아래의 표 1은 ReadOnce 트랜잭션 및 ReadNoSnp 트랜잭션에 대한 예상 및 허용 거동을 상세히 설명한다.
트랜잭션 | 순서 | ExpCompAck | 주의사항 |
ReadOnce ReadNoSnp |
00 | 0 | 트랜잭션을 완료하기 위한 2가지 옵션이 존재한다: · 슬레이브 노드로부터 단 하나의 CompData 응답이 제공된다. · 슬레이브 노드로부터의 DataSepResp 응답과 홈 노드로부터의 RespSepData 응답이 제공된다. 주의사항: 홈 노드는 홈 노드가 슬레이브 노드로 발신하는 트랜잭션에 따라 상기 옵션들 중 어느 것이 이용되는지 결정할 수 있다. |
ReadOnce ReadNoSnp |
00 | 1 | 순서와 ExpCompAck의 이 조합이 기능적으로 필요하지 않은 CompAck을 이용한다. 트랜잭션을 완료하기 위한 2가지 옵션이 존재한다: · 슬레이브 노드로부터 단 하나의 CompData 응답이 제공될 수 있다. · 슬레이브 노드로부터의 DataSepResp 응답과 홈 노드로부터의 RespSepData 응답이 제공된다. RespSepData가 수신된 후에 CompAck이 제공될 수 있다. |
ReadOnce ReadNoSnp |
10/11 | 0 | 순서와 ExpCompAck의 이 조합은 동적 메모리 이송(DMT)을 이용할 수 없다. 아래 사항이 적용된다: · ReadReceipt가 홈 노드로부터 리퀘스터로 제공된다. · CompData가 홈 노드로부터 리퀘스터로 제공된다. |
ReadOnce ReadNoSnp |
10/11 | 1 | 아래 사항이 적용된다: · ReadReceipt 응답이 슬레이브 노드로부터 홈 노드로 제공된다. · RespSepData 응답이 홈 노드로부터 리퀘스터로 제공된다. · DataSepResp 응답이 슬레이브 노드로부터 리퀘스터로 제공된다. CompAck는 RespSepData와 DataSepResp의 양자 모두가 수신된 후에만 리퀘스터에 의해서 제공되어야 한다. |
이 개시된 메카니즘은 읽기 트랜잭션의 식별가능성(observability)을 데이터의 수신으로부터 분리시키는 것을 가능하게 한다. 이것은 홈 노드가 위험요소를 가진 자원 및 다른 트랜잭션 자원을 조기에 자유롭게 하는 것을 가능하게 한다. 일관성없는 요청(non-coherent request)에 대해서는, 메모리 컨트롤러가 메모리 컨트롤러에서 데이터를 읽어 이를 마스터로 송신하는 것을 기다리는 대신에 "수신 확인" 메세지가 메모리 컨트롤러로부터 수신되는 즉시 자원이나 위험이 유지될 것을 요청하지 않음으로써 상기 요청이 더 진행한다.
이러한 유형의 트랜잭션 흐름 최적화(transaction flow optimization)는 홈 노드 자원을 최소 비용으로 최적으로 이용할 수 있게 한다. 또한, 이것은 인터커넥트 크기와, 이로 인한 증가된 데이터 패킷 통과 지연 시간(data packet traversal latency)이, 홈 노드 자원이 비례하여 증가될 것을 요하지 않기 때문에 시스템 크기와 더불어 확장성이 우수하다.
상기한 바와 같이, 홈 노드를 통한 요청 처리량이 상당히 최적화되어 있다.
본 발명의 다른 실시형태는 불필요한 CompAck 메세지의 처리에 관한 것이다. RN이 비-순서화된(non-ordered) ReadOnce 접근을 요청하여 ReadNoSnp를 생성하는 작업에서, 트랜잭션 흐름은 CompAck 응답을 허용한다. 그러나, 기능적 정확성에 대해서는 상기 응답이 필요하지 않다. 한 실시례에서 읽기 처리 로직(Read handling logic)을 단순화하기 위해, 모든 읽기 작업에는 CompAck의 허용 여부와 상관없이 CompAck 메시지가 포함된다. 이 경우에, 홈 자원이 조기에 할당해제되는 특정 조건에서는, 상응하는 요청에 대한 모든 정보가 홈 노드에서 삭제된 후에 CompAck 응답이 홈 노드에 도달할 수 있다. 이 상황은 다양한 방식으로 처리될 수 있다. 예를 들면, 한 실시례에서, 상기 요청의 출처와 트랜잭션 ID를 포함하는 부분적인 정보는 CompAck 소유자의 식별을 가능하게 하기 위해서 보유되는 반면에, 다른 모든 정보는 삭제된다. 하나의 대체 실시례에서는, 모든 요청 정보가 사라지고 카운터(counter)가 HN에 유지되어 얼마나 많은 '고립된(orphaned)' CompAck 응답이 수신될지를 탐지한다. 이 카운터는 ReadReceipt가 슬레이브로부터 수신될 때마다 증가하며, RN으로부터 고립된 CompAck를 수신할 때 감소한다. 다른 접근 방식들도 당업자에게는 자명한 사항일 것이다.
도 6은 데이터 처리 시스템(600)에서 식별자의 전송을 나타내는 블록도이다. 도 6은 슬레이브 노드(606)에 의해서 제공되는 홈 노드(604)에 대한 리퀘스트 노드(602)에 의한 읽기 요청을 나타내고 있다. 식별자(608)는 읽기 요청(610)에서 홈 노드(604)로 송신되고 식별자(612)로 저장되어 있는 소스 식별자(SrcID)와 트랜잭션 식별자(TxnID)를 포함하고 있다. 홈 노드(604)는 SrcID를 리턴 노드 식별자(RetNID)에 매핑하고 TxnID를 리턴 트랜잭션 식별자(RetTxnID)에 매핑함으로써 식별자(614)를 생성한다. 이들 식별자는 ReadNoSnpSep 요청(616)에서 슬레이브 노드(606)로 송신되며 상기 슬레이브 노드에 식별자(618)로 저장된다. 식별자(620)는 SrcID로부터 매핑된 목표 식별자(TgtID)와 트랜잭션 식별자(TxnID)를 포함한다. 이들 식별자는 ReadReceipt(622)에서 홈 노드로 송신되어 홈 노드가 상기 Receipt를 상기 요청과 연관시킬 수 있게 한다. 홈 노드(604)는 RspSepData 메시지(626)에서 리퀘스트 노드(602)로 송신되고 식별자(628)를 제공하는 SrcID 및 TxnID와 함께 식별자(624)를 형성하는 데이터 버퍼 식별자(DBID)를 할당한다. 이에 응답하여, 리퀘스트 노드(602)는 CompAck 메시지(632)에서 식별자(630)를 홈 노드로 송신한다. CompAck 메시지(632)를 수신하는 즉시, 홈 노드에서 트랜잭션이 완료된다. 별도로, 슬레이브 노드(606)는 DataSepResp 메시지(636)에서의 식별자 (634)(및 요청된 데이터)를 리퀘스트 노드로 송신한다. 식별자(638)에서 수신된 트랜잭션 ID(TxnID)는 상기 리퀘스트 노드로 하여 수신된 데이터를 원래의 읽기 요청과 연관시킬 수 있게 한다.
당업자는 본 발명이 예시적인 실시례에 관하여 기술되어 있다는 것을 알 수 있을 것이다. 본 발명은 기술되어 있고 청구범위에 기재된 본 발명과 등가인 특수 목적 하드웨어 및/또는 전용 프로세서와 같은 하드웨어 구성요소 등가물을 이용하여 실시될 수 있다. 마찬가지로, 전용 프로세서 및/또는 전용 배선에 의한 논리 회로(hard wired logic)가 본 발명의 등가의 대체 실시례를 구성하는데 사용될 수 있다.
개시된 메카니즘을 구현하기 위해서 사용된 전용 또는 재설정가능한 하드웨어 구성요소가 하드웨어 기술 언어의 명령에 의해 또는 구성요소들의 넷리스트(netlist)와 접속성(connectivity)에 의해 기술될 수 있다. 상기 명령 또는 넷리스트는 본 발명을 벗어나지 않고, 전기적으로 소거가능하고 프로그램가능한 읽기 전용 메모리(EEPROM)와 같은 비일시적 컴퓨터 읽기 가능 매체; 비휘발성 메모리(NVM); 하드 디스크 드라이브, 플로피 디스크 드라이브, 광 디스크 드라이브와 같은 대량 저장장치; 광 저장 요소, 자기 저장 요소, 광자기 저장 요소, 플래시 메모리, 코어 메모리 및/또는 다른 등가의 저장 장비에 저장될 수 있다. 이러한 대체 저장 소자는 등가물로 간주되어야 한다.
본 명세서에 기술된 다양한 실시례는 임의의 적절한 전자 저장 매체에 저장될 수 있거나 임의의 적절한 전자 통신 매체를 통하여 전송될 수 있는 흐름도 형태로 개괄적으로 기술되어 있는 프로그래밍 명령을 실행하는 프로그램된 프로세서, 전용 하드웨어 또는 설정가능한 하드웨어를 이용하여 실시된다. 이들 요소의 결합이 사용될 수도 있다. 당업자는 상기한 프로세스와 메카니즘이 본 발명으로부터 벗어나지 않고 다양한 변형 형태로 실시될 수 있다는 것을 알 수 있을 것이다. 예를 들면, 본 발명으로부터 벗어나지 않고서 수행된 특정 작업의 순서는 종종 변경될 수 있거나, 부가적인 작업이 추가될 수 있거나 여러 작업이 생략될 수 있다. 이러한 변형 형태는 등가물로 고려되고 간주된다.
본 명세서에 상세하게 기술되어 있는 다양한 대표적인 실시례는 하나의 예로서 제시되어 있는 것이지 제한사항으로 제시되어 있는 것은 아니다. 기술된 실시례의 형태와 세부사항에 다양한 변경이 가해질 수 있고 이것이 개시된 본 발명의 범위 내에 있는 등가의 실시례가 될 수 있다는 것을 당업자는 알 수 있을 것이다.
따라서, 개시된 실시례의 몇몇 실시형태와 특징들이 아래의 번호가 붙은 항목으로 개시되어 있다:
1. 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법으로서, 상기 방법이 상기 데이터 처리 네트워크의 리퀘스트 노드에 의해, 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계; 상기 리퀘스트 노드에 의해, 상기 읽기 요청에 응답하여 상기 홈 노드로부터 송신된 제1 응답 메세지를 수신하는 단계로서, 상기 제1 응답 메세지가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는, 상기 단계; 그리고 상기 리퀘스트 노드에 의해, 상기 제1 어드레스와 관련된 데이터를 포함하는 제2 응답 메세지를 수신하는 단계로서, 상기 제2 응답 메세지가 상기 데이터만 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타내는, 상기 단계를 포함하고 있고, 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 제2 응답 메세지가 상기 홈 노드로부터 송신되고, 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 상기 제2 응답 메세지가 슬레이브 노드로부터 송신된다.
2. 항목 1의 방법에 있어서, 상기 읽기 요청을 상기 홈 노드로 송신하는 것이 상기 읽기 요청을 상기 코히어런트 인터커넥트의 요청 채널로 송신하는 것을 포함하고, 상기 제1 응답 메세지를 수신하는 것이 상기 제1 응답 메세지를 상기 코히어런트 인터커넥트의 응답 채널로 수신하는 것을 포함하고, 그리고 상기 제2 응답 메세지를 수신하는 것이 상기 제2 응답 메세지를 상기 코히어런트 인터커넥트의 데이터 채널로 수신하는 것을 포함한다.
3. 항목 1의 방법이, 상기 리퀘스트 노드가 상기 홈 노드로부터 상기 제1 응답 메세지를 수신하는 것에 응답하여, 상기 리퀘스트 노드에 의해, 완료 확인 메세지를 상기 홈 노드로 송신하는 단계를 더 포함하고 있다.
4. 항목 3의 방법이, 상기 리퀘스트 노드로부터 상기 완료 확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계를 더 포함하고 있고, 상기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
5. 선행하는 항목 중의 어느 한 항목의 방법이, 상기 읽기 요청에 응답하여 상기 홈 노드에 의해, 제1 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하는 단계로서, 상기 제1 슬레이브 읽기 요청이 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 제1 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계; 상기 제1 슬레이브 읽기 요청에 응답하여 상기 슬레이브 노드에 의해, 수신확인 메세지를 상기 홈 노드로 송신하는 단계를 더 포함하고 있다.
6. 항목 5의 방법이, 상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계를 더 포함하고 있고, 상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
7. 항목 5 또는 항목 6의 방법에 있어서, 상기 제1 슬레이브 읽기 요청이 소스 식별자와 트랜잭션 식별자를 포함하고 있고, 상기 방법이 상기 슬레이브 노드에 의해, 상기 제1 슬레이브 읽기 요청의 소스 식별자를 상기 수신확인 메세지의 목표 식별자에 매핑하는 단계; 및 상기 슬레이브 노드에 의해, 상기 제1 슬레이브 읽기 요청의 목표 식별자를 상기 수신확인 메세지의 트랜잭션 식별자에 매핑하는 단계를 더 포함하고 있다.
8. 항목 5 내지 7 중 어느 한 항목의 방법이, 상기 제1 슬레이브 읽기 요청을 완료할 수 없으면, 상기 슬레이브 노드에 의해 상기 홈 노드로 부정 확인 메세지를 송신하는 단계를 더 포함하고 있고, 상기 슬레이브 노드가 상기 제1 슬레이브 읽기 요청을 지원하는 경우, 적절한 크레디트가 상기 슬레이브 노드로부터 수신되었을 때, 상기 홈 노드에 의해, 다른 제1 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하고, 상기 슬레이브 노드가 상기 제1 슬레이브 읽기 요청을 처리할 수 없는 경우, 상기 홈 노드에 의해, 제2 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하고, 상기 제2 슬레이브 읽기 요청은 상기 슬레이브 노드가 별개의 응답 메세지를 상기 리퀘스트 노드로 송신해서는 안 되는 것을 나타낸다.
9. 항목 5의 방법이, 상기 슬레이브 노드가 상기 슬레이브 읽기 요청의 리턴 노드 식별자를 상기 제2 응답 메세지의 목표 식별자에 매핑하는 단계; 및 상기 슬레이브 노드가 상기 슬레이브 읽기 요청의 리턴 트랜잭션 식별자를 상기 제2 응답 메세지의 트랜잭션 식별자에 매핑하는 단계를 더 포함하고 있다.
10. 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법으로서, 상기 방법이 상기 데이터 처리 네트워크의 리퀘스트 노드에 의해, 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계; 상기 읽기 요청에 응답하여 상기 홈 노드에 의해, 슬레이브 읽기 요청을 슬레이브 노드로 송신하는 단계로서, 상기 슬레이브 읽기 요청은 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계; 상기 슬레이브 읽기 요청에 응답하여, 상기 슬레이브 노드에 의해 상기 홈 노드로 수신확인 메세지를 송신하는 단계; 그리고 상기 슬레이브 노드에 의해 상기 리퀘스트 노드로, 상기 제1 어드레스와 관련된 데이터를 포함하며 상기 읽기 트랜잭션의 완료를 나타내는 데이터 완료 메세지를 송신하는 단계로서, 상기 데이터 완료 메세지가 상기 코히어런트 인터커넥트의 데이터 채널로 송신되는, 상기 단계를 포함하고 있다.
11. 항목 10의 방법이, 상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계를 더 포함하고 있고, 상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
12. 코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크로서, 상기 리퀘스트 노드가 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 상기 코히어런트 인터커넥트를 통하여 상기 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계; 상기 읽기 요청에 응답하여 상기 홈노드로부터 송신된 제1 응답 메세지를 수신하는 단계로서, 상기 제1 응답 메세지가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는, 상기 단계; 그리고 상기 제1 어드레스와 관련된 데이터를 포함하는 제2 응답 메세지를 수신하는 단계로서, 상기 제2 응답 메세지가 상기 데이터가 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타내는, 상기 단계를 포함하고 있고, 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 제2 응답 메세지가 상기 홈 노드로부터 송신되고, 상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 상기 제2 응답 메세지가 슬레이브 노드로부터 송신되는 방법을 실행하도록 설정되어 있다.
13. 항목 12의 데이터 처리 네트워크에 있어서, 상기 코히어런트 인터커넥트가 요청 채널, 응답 채널 및 데이터 채널을 포함하고 있고, 상기 읽기 요청이 상기 요청 채널로 송신되고, 상기 제1 응답 메세지가 상기 응답 채널로 송신되고 상기 제2 응답 메세지가 상기 데이터 채널로 송신된다.
14. 항목 12 또는 항목 13의 데이터 처리 네트워크에 있어서, 상기 리퀘스트 노드에 의해서 실행된 상기 방법이 상기 리퀘스트 노드가 상기 홈 노드로부터 상기 제1 응답 메세지를 수신하는 것에 응답하여 완료 확인 메세지를 상기 홈 노드로 송신하는 단계를 더 포함하고 있다.
15. 항목 14의 데이터 처리 네트워크에 있어서, 상기 홈 노드가 상기 리퀘스트 노드로부터 상기 완료 확인 메세지를 수신하는 것에 응답하여 상기 홈 노드에서 상기 읽기 트랜잭션을 종료하는 단계를 포함하고 있고, 상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는 방법을 실행하도록 설정되어 있다.
16. 항목 12 내지 15 중 어느 한 항목의 데이터 처리 네트워크에 있어서, 상기 홈 노드가 상기 리퀘스트 노드로부터의 상기 읽기 요청에 응답하여, 상기 슬레이브 노드로 슬레이브 읽기 요청을 송신하는 단계로서, 상기 슬레이브 읽기 요청은 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계; 그리고 상기 슬레이브 읽기 요청에 응답하여 상기 슬레이브 노드에 의해서 생성된 수신확인 메세지를 상기 슬레이브 노드로부터 수신하는 단계를 포함하는 방법을 실행하도록 설정되어 있다.
17. 항목 16의 데이터 처리 네트워크에 있어서, 상기 홈 노드에 의해서 실행된 상기 방법이 상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계를 더 포함하고 있고, 상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함한다.
18. 항목 12 내지 17 중 어느 한 항목의 데이터 처리 네트워크가 단일 칩에 형성되어 있다.
19. 항목 12 내지 18 중 어느 한 항목의 데이터 처리 네트워크를 기술하는, 하드웨어 기술 언어의 명령을 포함하는 비일시적 컴퓨터 읽기 가능 매체.
20. 항목 12 내지 19 중 어느 한 항목의 데이터 처리 네트워크의 접속성 및 구성요소들의 넷리스트를 저장하는 비일시적 컴퓨터 읽기 가능 매체.
Claims (20)
- 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법으로서, 상기 방법이
상기 데이터 처리 네트워크의 리퀘스트 노드에 의해, 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계;
상기 리퀘스트 노드에 의해, 상기 읽기 요청에 응답하여 상기 홈 노드로부터 송신된 제1 응답 메세지를 수신하는 단계로서, 상기 제1 응답 메세지가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는, 상기 단계; 그리고
상기 리퀘스트 노드에 의해, 상기 제1 어드레스와 관련된 데이터를 포함하는 제2 응답 메세지를 수신하는 단계로서, 상기 제2 응답 메세지가 상기 데이터만 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타내는, 상기 단계;
를 포함하고,
상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 제2 응답 메세지가 상기 홈 노드로부터 송신되고,
상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 상기 제2 응답 메세지가 슬레이브 노드로부터 송신되는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제1항에 있어서,
상기 읽기 요청을 상기 홈 노드로 송신하는 것이 상기 읽기 요청을 상기 코히어런트 인터커넥트의 요청 채널로 송신하는 것을 포함하고,
상기 제1 응답 메세지를 수신하는 것이 상기 제1 응답 메세지를 상기 코히어런트 인터커넥트의 응답 채널로 수신하는 것을 포함하고, 그리고
상기 제2 응답 메세지를 수신하는 것이 상기 제2 응답 메세지를 상기 코히어런트 인터커넥트의 데이터 채널로 수신하는 것을 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제1항 또는 제2항에 있어서,
상기 리퀘스트 노드가 상기 홈 노드로부터 상기 제1 응답 메세지를 수신하는 것에 응답하여, 상기 리퀘스트 노드에 의해, 완료 확인 메세지를 상기 홈 노드로 송신하는 단계
를 더 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제3항에 있어서,
상기 리퀘스트 노드로부터 상기 완료 확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계
를 더 포함하고,
상기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 읽기 요청에 응답하여 상기 홈 노드에 의해, 제1 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하는 단계로서, 상기 제1 슬레이브 읽기 요청이 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 제1 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계;
상기 제1 슬레이브 읽기 요청에 응답하여 상기 슬레이브 노드에 의해, 수신확인 메세지를 상기 홈 노드로 송신하는 단계;
를 더 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제5항에 있어서,
상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계
를 더 포함하고,
상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제5항 또는 제6항에 있어서, 상기 제1 슬레이브 읽기 요청이 소스 식별자와 트랜잭션 식별자를 포함하고 있고, 상기 방법이
상기 슬레이브 노드에 의해, 상기 제1 슬레이브 읽기 요청의 소스 식별자를 상기 수신확인 메세지의 목표 식별자에 매핑하는 단계; 및
상기 슬레이브 노드에 의해, 상기 제1 슬레이브 읽기 요청의 목표 식별자를 상기 수신확인 메세지의 트랜잭션 식별자에 매핑하는 단계
를 더 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제5항 내지 제7항 중 어느 한 항에 있어서,
상기 제1 슬레이브 읽기 요청을 완료할 수 없으면, 상기 슬레이브 노드에 의해 상기 홈 노드로 부정 확인 메세지를 송신하는 단계
를 더 포함하고,
상기 슬레이브 노드가 상기 제1 슬레이브 읽기 요청을 지원하는 경우, 적절한 크레디트가 상기 슬레이브 노드로부터 수신되었을 때, 상기 홈 노드에 의해, 다른 제1 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하고,
상기 슬레이브 노드가 상기 제1 슬레이브 읽기 요청을 처리할 수 없는 경우, 상기 홈 노드에 의해, 제2 슬레이브 읽기 요청을 상기 슬레이브 노드로 송신하고, 상기 제2 슬레이브 읽기 요청은 상기 슬레이브 노드가 별개의 응답 메세지를 상기 리퀘스트 노드로 송신해서는 안 되는 것을 나타내는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제5항에 있어서,
상기 슬레이브 노드가 상기 슬레이브 읽기 요청의 리턴 노드 식별자를 상기 제2 응답 메세지의 목표 식별자에 매핑하는 단계; 및
상기 슬레이브 노드가 상기 슬레이브 읽기 요청의 리턴 트랜잭션 식별자를 상기 제2 응답 메세지의 트랜잭션 식별자에 매핑하는 단계
를 더 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법으로서, 상기 방법이
상기 데이터 처리 네트워크의 리퀘스트 노드에 의해, 제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 코히어런트 인터커넥트를 통하여 상기 데이터 처리 네트워크의 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계;
상기 읽기 요청에 응답하여 상기 홈 노드에 의해, 슬레이브 읽기 요청을 슬레이브 노드로 송신하는 단계로서, 상기 슬레이브 읽기 요청은 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계;
상기 슬레이브 읽기 요청에 응답하여, 상기 슬레이브 노드에 의해 상기 홈 노드로 수신확인 메세지를 송신하는 단계; 그리고
상기 슬레이브 노드에 의해 상기 리퀘스트 노드로, 상기 제1 어드레스와 관련된 데이터를 포함하며 상기 읽기 트랜잭션의 완료를 나타내는 데이터 완료 메세지를 송신하는 단계로서, 상기 데이터 완료 메세지가 상기 코히어런트 인터커넥트의 데이터 채널로 송신되는, 상기 단계
를 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 제10항에 있어서,
상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계
를 더 포함하고,
상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는 것을 특징으로 하는 데이터 처리 네트워크에서 읽기 트랜잭션을 실행하는 방법. - 코히어런트 인터커넥트를 통하여 연결된 리퀘스트 노드, 홈 노드 및 슬레이브 노드를 포함하는 데이터 처리 네트워크로서, 상기 리퀘스트 노드가
제1 어드레스와 관련된 데이터를 읽으라는 읽기 요청을 송신하는 단계로서, 상기 읽기 요청이 상기 코히어런트 인터커넥트를 통하여 상기 홈 노드로 송신되고, 상기 홈 노드가 상기 제1 어드레스와 관련된 데이터에 코히어런시 포인트를 제공하는, 상기 단계;
상기 읽기 요청에 응답하여 상기 홈노드로부터 송신된 제1 응답 메세지를 수신하는 단계로서, 상기 제1 응답 메세지가 읽기 트랜잭션이 상기 홈 노드에서 순서화되었다는 것을 나타내고 또한 상기 읽기 트랜잭션에 대한 데이터가 별개의 데이터 응답으로 제공되는 것을 나타내는, 상기 단계; 그리고
상기 제1 어드레스와 관련된 데이터를 포함하는 제2 응답 메세지를 수신하는 단계로서, 상기 제2 응답 메세지가 상기 데이터가 제공되고 또한 상기 리퀘스트 노드가 홈 노드로부터 별개의 응답을 수신할 것이라는 것을 나타내는, 상기 단계를 포함하고,
상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하면 상기 제2 응답 메세지가 상기 홈 노드로부터 송신되고,
상기 제1 어드레스와 관련된 데이터가 상기 홈 노드의 시스템 캐시에 존재하지 않으면 상기 제2 응답 메세지가 슬레이브 노드로부터 송신되는
방법을 실행하도록 설정되어 있는 것을 특징으로 하는 데이터 처리 네트워크. - 제12항에 있어서, 상기 코히어런트 인터커넥트가 요청 채널, 응답 채널 및 데이터 채널을 포함하고, 상기 읽기 요청이 상기 요청 채널로 송신되고, 상기 제1 응답 메세지가 상기 응답 채널로 송신되고 상기 제2 응답 메세지가 상기 데이터 채널로 송신되는 것을 특징으로 하는 데이터 처리 네트워크.
- 제12항 또는 제13항에 있어서, 상기 리퀘스트 노드에 의해서 실행된 상기 방법이
상기 리퀘스트 노드가 상기 홈 노드로부터 상기 제1 응답 메세지를 수신하는 것에 응답하여 완료 확인 메세지를 상기 홈 노드로 송신하는 단계
를 더 포함하는 것을 특징으로 하는 데이터 처리 네트워크. - 제14항에 있어서, 상기 홈 노드가
상기 리퀘스트 노드로부터 상기 완료 확인 메세지를 수신하는 것에 응답하여 상기 홈 노드에서 상기 읽기 트랜잭션을 종료하는 단계를 포함하고,
상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는
방법을 실행하도록 설정되어 있는 것을 특징으로 하는 데이터 처리 네트워크. - 제12항 내지 제15항 중 어느 한 항에 있어서, 상기 홈 노드가
상기 리퀘스트 노드로부터의 상기 읽기 요청에 응답하여, 상기 슬레이브 노드로 슬레이브 읽기 요청을 송신하는 단계로서, 상기 슬레이브 읽기 요청은 상기 슬레이브 노드가 데이터 응답만 상기 리퀘스트 노드로 송신해야 하는 것을 나타내고, 상기 슬레이브 읽기 요청이 상기 코히어런트 인터커넥트의 요청 채널로 송신되는, 상기 단계; 그리고
상기 슬레이브 읽기 요청에 응답하여 상기 슬레이브 노드에 의해서 생성된 수신확인 메세지를 상기 슬레이브 노드로부터 수신하는 단계를 포함하는
방법을 실행하도록 설정되어 있는 것을 특징으로 하는 데이터 처리 네트워크. - 제16항에 있어서, 상기 홈 노드에 의해서 실행된 상기 방법이
상기 슬레이브 노드로부터 상기 수신확인 메세지를 수신하는 것에 응답하여, 상기 홈 노드에서, 상기 읽기 트랜잭션을 종료하는 단계
를 더 포함하고,
상기 읽기 트랜잭션을 종료하는 것이 상기 트랜잭션에 할당된 상기 홈 노드의 자원을 할당해제하는 것과 상기 제1 어드레스에 있는 데이터에 대하여 상기 리퀘스트 노드에 대한 스누프 메세지를 허용하는 것을 포함하는 것을 특징으로 하는 데이터 처리 네트워크. - 제12항 내지 제17항 중 어느 한 항에 있어서, 단일 칩에 형성된 것을 특징으로 하는 데이터 처리 네트워크.
- 제12항 내지 제18항 중 어느 한 항의 데이터 처리 네트워크를 기술하는, 하드웨어 기술 언어의 명령을 포함하는 비일시적 컴퓨터 읽기 가능 매체.
- 제12항 내지 제19항 중 어느 한 항의 데이터 처리 네트워크의 접속성 및 구성요소들의 넷리스트를 저장하는 비일시적 컴퓨터 읽기 가능 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862666264P | 2018-05-03 | 2018-05-03 | |
US62/666,264 | 2018-05-03 | ||
US16/027,929 | 2018-07-05 | ||
US16/027,929 US10613996B2 (en) | 2018-05-03 | 2018-07-05 | Separating completion and data responses for higher read throughput and lower link utilization in a data processing network |
PCT/GB2019/051214 WO2019211608A1 (en) | 2018-05-03 | 2019-05-02 | Separating completion and data responses for higher read throughput and lower link utilization in a data processing network |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210002668A true KR20210002668A (ko) | 2021-01-08 |
Family
ID=68385234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207034229A KR20210002668A (ko) | 2018-05-03 | 2019-05-02 | 데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10613996B2 (ko) |
EP (1) | EP3788492B1 (ko) |
KR (1) | KR20210002668A (ko) |
CN (1) | CN112074821B (ko) |
WO (1) | WO2019211608A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GR20180100189A (el) | 2018-05-03 | 2020-01-22 | Arm Limited | Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming |
US11256646B2 (en) * | 2019-11-15 | 2022-02-22 | Arm Limited | Apparatus and method for handling ordered transactions |
CN115297144B (zh) * | 2022-07-29 | 2024-03-08 | 中汽创智科技有限公司 | 节点数据交互方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5864671A (en) | 1996-07-01 | 1999-01-26 | Sun Microsystems, Inc. | Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used |
ATE275315T1 (de) * | 1997-09-24 | 2004-09-15 | Newstep Networks Inc | Verfahren und gerät zur dynamischen routing von anrufen in einem intelligenten netzwerk |
US6108764A (en) * | 1998-12-17 | 2000-08-22 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention |
US7234029B2 (en) * | 2000-12-28 | 2007-06-19 | Intel Corporation | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture |
US6654857B2 (en) * | 2001-06-21 | 2003-11-25 | International Business Machines Corporation | Non-uniform memory access (NUMA) computer system having distributed global coherency management |
GB0227871D0 (en) * | 2002-11-29 | 2003-01-08 | Ibm | DATA processing systems |
US20040260752A1 (en) * | 2003-06-19 | 2004-12-23 | Cisco Technology, Inc. | Methods and apparatus for optimizing resource management in CDMA2000 wireless IP networks |
US7856534B2 (en) * | 2004-01-15 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Transaction references for requests in a multi-processor network |
US8250311B2 (en) * | 2008-07-07 | 2012-08-21 | Intel Corporation | Satisfying memory ordering requirements between partial reads and non-snoop accesses |
US9304924B2 (en) * | 2012-08-17 | 2016-04-05 | Futurewei Technologies, Inc. | Cache coherent handshake protocol for in-order and out-of-order networks |
GB2525577A (en) * | 2014-01-31 | 2015-11-04 | Ibm | Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system |
-
2018
- 2018-07-05 US US16/027,929 patent/US10613996B2/en active Active
-
2019
- 2019-05-02 CN CN201980029895.2A patent/CN112074821B/zh active Active
- 2019-05-02 KR KR1020207034229A patent/KR20210002668A/ko unknown
- 2019-05-02 EP EP19723173.1A patent/EP3788492B1/en active Active
- 2019-05-02 WO PCT/GB2019/051214 patent/WO2019211608A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP3788492A1 (en) | 2021-03-10 |
US10613996B2 (en) | 2020-04-07 |
EP3788492B1 (en) | 2024-01-10 |
US20190340138A1 (en) | 2019-11-07 |
CN112074821A (zh) | 2020-12-11 |
WO2019211608A1 (en) | 2019-11-07 |
CN112074821B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10157134B2 (en) | Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response | |
US9830294B2 (en) | Data processing system and method for handling multiple transactions using a multi-transaction request | |
US9411644B2 (en) | Method and system for work scheduling in a multi-chip system | |
CN108205510B (zh) | 数据处理 | |
KR102212269B1 (ko) | I/o 패킷 압축을 위한 레지스터 파일 | |
KR20210002668A (ko) | 데이터 처리 네트워크에서 보다 많은 읽기 처리량과 보다 낮은 링크 사용률을 위해 완료 응답과 데이터 응답을 분리시키는 방법 및 장치 | |
US10452593B1 (en) | High-performance streaming of ordered write stashes to enable optimized data sharing between I/O masters and CPUs | |
JP7419261B2 (ja) | ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク | |
CN112136118B (zh) | 在数据处理网络中的数据传输的方法和系统 | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership | |
US11449489B2 (en) | Split transaction coherency protocol in a data processing system | |
US10642760B2 (en) | Techniques for command arbitation in symmetric multiprocessor systems | |
US10372638B2 (en) | Interconnect agent | |
KR20190116326A (ko) | 일관적 인터커넥트 시스템에서의 판독 트랜잭션 추적기 수명 |