KR100516286B1 - 프로세싱 노드들 간의 패킷 전송 방법 및 장치 - Google Patents

프로세싱 노드들 간의 패킷 전송 방법 및 장치 Download PDF

Info

Publication number
KR100516286B1
KR100516286B1 KR10-2003-7016731A KR20037016731A KR100516286B1 KR 100516286 B1 KR100516286 B1 KR 100516286B1 KR 20037016731 A KR20037016731 A KR 20037016731A KR 100516286 B1 KR100516286 B1 KR 100516286B1
Authority
KR
South Korea
Prior art keywords
node
data
nodes
receiving
request transaction
Prior art date
Application number
KR10-2003-7016731A
Other languages
English (en)
Other versions
KR20040012961A (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 KR20040012961A publication Critical patent/KR20040012961A/ko
Application granted granted Critical
Publication of KR100516286B1 publication Critical patent/KR100516286B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

대칭형 다중 프로세서 시스템 내에서 패킷을 전송하기 위한 장치가 개시되어 있다. 대칭형 다중 프로세서 시스템은, 각 노드에 다중 에이전트를 갖고, 상호 접속부를 거쳐 서로 접속되는 다중 프로세싱 노드를 포함한다. 리퀘스트 트랜잭션은 마스터 노드 내의 마스터 에이전트에 의해서 모든 수신 노드에 대해 개시된다. 리퀘스트 트랜잭션과 연관시키기 위해서 기록 카운터 번호를 생성한다. 다음에, 마스터 에이전트는 수신 노드로부터의 결합된 응답을 대기한다. 결합된 응답의 수신 후에, 결합된 응답에 따라서 마스터 에이전트로부터 수신 노드 중 의도된 하나에 데이터 패킷을 전송한다. 데이터 패킷이 전송된 후에, 수신 노드로부터의 확인을 수신하기 전에, 마스터 노드 내의 마스터 에이전트는 새로운 기록 카운터 번호와 함께 다른 리퀘스트 트랜잭션을 전송할 준비가 되어 있다.

Description

프로세싱 노드들 간의 패킷 전송 방법 및 장치{METHOD AND APPARATUS FOR TRANSMITTING PACKETS WITHIN A SYMMETRIC MULTIPROCESSOR SYSTEM}
본 발명은 일반적으로 데이터 처리 시스템(data processing system)에 관한 것으로, 특히 대칭형 다중 프로세서 시스템(symmetric multiprocessor systems)에 관한 것이다. 보다 더 세부적으로, 본 발명은 대칭형 다중 프로세서 시스템 내의 프로세싱 노드(processing nodes)들 간에 패킷(packets)을 전송하는 방법 및 장치에 관한 것이다.
컴퓨터 분야에 있어서, 복수의 직렬로 배열된 개별 프로세서의 프로세싱 능력을 활용하는 것에 의해서 보다 더 큰 처리 성능을 달성할 수 있다는 것은 잘 알려져 있다. 다중 프로세서 컴퓨터 시스템은 다수의 상이한 아키텍쳐(architecture)로 설계될 수 있으며, 그 중 어느 하나는 의도된 설계, 시스템 성능 조건 및 소프트웨어 환경에 따라서, 다른 것들보다 특정 애플리케이션에 더 적합할 수 있다. 알려진 다중 프로세서 아키텍쳐는, 예를 들면, 대칭형 다중 프로세서(symmetric multiprocessor : SMP) 시스템 아키텍쳐 및 비균일 메모리 액세스(non-uniform memory access : NUMA) 시스템 아키텍쳐를 포함한다.
SMP 데이터 처리 시스템에서, 모든 프로세싱 유닛은 일반적으로 동일하다. 즉, 그들 모두는 동일한 아키텍쳐를 가지고, 인스트럭션 및 프로토콜의 공통 세트 또는 서브셋(subset)을 활용하여 동작된다. 전형적으로, 각각의 프로세싱 유닛은, 프로그램 인스트럭션을 수행하기 위한 적어도 하나의 실행 유닛(execution unit)을 갖는 프로세서 코어(processor core)를 포함한다. 추가적으로, 각 프로세싱 유닛은 통상적으로 제 1 레벨(L1) 캐시로 지칭되는 적어도 하나의 캐시 레벨을 포함할 수 있으며, 이는 전형적으로 고속 메모리로 구현된다. 이와 유사하게, 통상적으로 2레벨(L2) 캐시로 지칭되는 제 2 레벨의 캐시는, 또한 L1 캐시를 지지하기 위해 각 프로세싱 유닛 내에 포함될 수 있다. 때때로, 통상적으로 3레벨(L3) 캐시로 지칭되는 제 3 레벨의 캐시는, 또한 L2 캐시를 지지하기 위해 각 프로세싱 유닛 내에 포함될 수 있다. 각 레벨의 캐시는, 여러 프로세서 코어에 의한 저-지연 액세스(low-latency accesses)를 위해서 시스템 메모리 내에 포함된 데이터 및/또는 인스트럭션의 서브셋을 저장한다.
본 개시 내용은, SMP 시스템 내의 여러 프로세싱 노드들 간에 패킷을 송신하기 위한 방법 및 장치에 대해서 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 다중 노드(multi-node) 데이터 처리 시스템의 블록도,
도 2는 본 발명의 바람직한 실시예에 따라 도 1에서의 데이터 처리 시스템 내의 임의의 에이전트를 구현하기 위해서 활용될 수 있는 프로세서의 블록도,
도 3은 본 발명의 바람직한 실시예에 따라 도 2에서의 프로세서 내의 통신 로직 블록(communication logic block)에 대한 블록도,
도 4는 종래 기술에 따른 도 1에서의 데이터 프로세싱 시스템 내에서의 리퀘스트 트랜잭션에 대한 상태도,
도 5(a)는 도 1에서의 데이터 처리 시스템의 어드레스 채널을 거쳐서 송신되는 리퀘스트 트랜잭션의 예시적인 포맷을 도시하는 도면,
도 5(b)는 도 1의 데이터 처리 시스템의 데이터 채널을 거쳐 송신되는 데이터 트랜잭션의 예시적인 포맷을 도시하는 도면,
도 5(c)는 도 1에서의 데이터 처리 시스템의 데이터 채널을 거쳐 송신되는 부분 결합된 응답 또는 결합된 응답의 예시적인 포맷을 도시하는 도면,
도 6은 본 발명의 바람직한 실시예에 따른 도 1의 데이터 처리 시스템 내의 리퀘스트 트랜잭션에 대한 상태도.
본 발명의 바람직한 실시예에 따르면, 상호 접속부(interconnect)를 거쳐 서로 접속되는 복수의 프로세싱 노드를 포함하는 데이터 처리 시스템 내의 여러 프로세싱 노드들 간에 패킷을 송신하기 위한 방법에 관한 것으로, 이 방법은, 마스터 노드(master node)로부터 복수의 수신 노드로 리퀘스트 트랜잭션(request transaction)을 개시하는 단계와, 리퀘스트 트랜잭션과 연관되는 기록 카운터 번호(write counter number)를 생성하는 단계와, 마스터 노드에 의해서 수신 노드로부터 결합된 응답을 수신하는 단계와, 결합된 응답에 따라서 마스터 에이전트(master agent)로부터 수신 노드 중 의도된 하나에 데이터 패킷을 전송하는 단계와, 데이터 패킷이 전송된 직후, 및 의도된 수신 노드로부터 확인(acknowledgement)이 수신되기 전에, 새로운 기록 카운터 번호와 함께 새로운 리퀘스트 트랜잭션을 개시하는 단계를 포함한다.
본 발명의 모든 목적, 특징 및 이점은 이하의 세부적으로 기록된 설명에 의해 명백해질 것이다.
본 발명 그 자체와, 바람직한 사용 방식뿐만 아니라 추가적인 목적 및 그 이점은, 예시적 실시예에 대한 이하의 세부적인 설명을 참조하여 첨부된 도면과 함께 판독할 때, 가장 잘 이해할 수 있을 것이다.
다음으로 도면, 특히 도 1을 참조하면, 본 발명의 바람직한 실시예에 따른 다중 노드 데이터 처리 시스템의 블록도가 도시되어 있다. 도시된 바와 같이, 데이터 처리 시스템(10)은, 노드(11a∼11n)의 각각에 대해 하나의 세그먼트(segment)를 갖는 세그먼트화된 상호 접속부(segmented interconnect)(20)에 의해서 링(ring) 형상으로 서로 결합되는 다수의 노드(11a∼11n)를 포함한다. 데이터 처리 시스템(10)의 노드(11a∼11n)는 각각 상호 접속부(20)에 결합되고, 노드(11a)에 대해 A0∼An으로, 노드(11b)에 대해 B0∼Bn으로 지정되는 하나 이상의 에이전트를 포함한다. 또한 각각의 노드(11a∼11n)는, 제각기의 응답과, 상호 접속부(20)에서 그에 이웃한 노드로의 트랜잭션의 흐름을 제어하기 위한 흐름 제어 로직(flow control logic)(12)을 포함한다.
상호 접속부(20)는, 바람직하게는 500㎒ 단위이거나 그 이상의 주파수로 작동되는 고속의, 고-대역폭 버스(high-bandwidth bus)로서 작동되도록 구성된다. 상호 접속부(20)는 적어도 하나의 데이터 채널(13)과, 노드(11a∼11n) 중에서 대응되는 노드 내에 있는 에이전트만이 어드레스 채널(14a∼14n) 중의 하나에 리퀘스트를 발행할 수 있도록 노드(11a∼11n)의 각각에 대해 제각기 연관되는 수 개의 비차단형(non-blocking) 어드레스 채널(14a∼14n)을 포함한다. 각각의 어드레스 채널(14a∼14n) 및 데이터 채널(13)은 위에서 언급된 바와 같이 세그먼트화되어 있어, 각각의 노드(11a∼11n)가 각각의 어드레스 및 데이터 채널의 세그먼트를 포함하고, 각각의 어드레스 및 데이터 채널 세그먼트가 동일 채널의 적어도 2개의 이웃한 세그먼트에 결합된다. 또한, 화살표로 나타낸 바와 같이, 각 채널은 상호 접속부(20)에서의 어드레스 및 데이터 트랜잭션은 지정된 방향에 있는 이웃한 노드들 간에만 전파된다는 의미에서 단일 방향성(uni-directional)이다. 설명된 실시예에서, 각 어드레스 채널(14a∼14n)의 각 세그먼트는 병렬로 32 어드레스 비트(address bits)를 전달하는 어드레스 버스(address bus)로서 구현되고, 데이터 채널(13)의 각 세그먼트는 병렬로 16 데이터 바이트(data bytes)를 전달하는 데이터 버스로서 구현되지만, 이와 다르게 상호 접속부(20)의 개별 세그먼트는 스위치 기반형(switch-based) 상호 접속부 또는 하이브리드(hybrid) 상호 접속부로 구현될 수 있다는 것을 인식할 수 있을 것이다.
상호 접속부(20)와 함께, 데이터 처리 시스템(10)은 3개의 측대역 채널(sideband channels), 즉, 부분 결합형 응답(partial combined response : PCR) 채널(15), 결합형 응답(combined response : CR) 채널(16), 및 취소 채널(cancel channel)(17)을 가지고, 제각기 부분 결합형 응답, 결합형 응답 및 취소(또는 스톰프(stomp)) 신호를 통신한다. 본 명세서에서 활용된 바와 같이, PCR은 전체 노드보다는 더 적은 개수의 노드 내의 모든 에이전트에서의 리퀘스트에 대한 누적형 응답(cumulative response)으로서 정의되고, CR은 전체 노드 내의 모든 에이전트에 의한 리퀘스트에 대한 누적형 응답으로서 정의된다. 보다 아래에서 논의된 바와 같이, 에이전트는 어드레스 신호(14a∼14n) 중의 임의의 하나에서 스누프된(snooped) 리퀘스트와 연관되는 PCR, CR 및 취소 신호를 참조하는 것에 의해, 리퀘스트를 서비스하는지 여부를 판정할 수 있다.
다음으로 도 2를 참조하면, 본 발명의 바람직한 실시예에 따라 도 1의 데이터 처리 시스템(10) 내의 임의의 에이전트를 구현하기 위해서 활용될 수 있는 프로세서의 블록도가 도시되어 있다. 데이터 처리 시스템(10) 내의 각 에이전트는 프로세서로 구현될 수 있지만, 에이전트는, 본 명세서에서 설명된 통신 프로토콜(communication protocol)을 지원할 수 있는 임의의 장치일 수 있다는 것을 이해해야 한다. 도시된 바와 같이, 프로세서(21)는, 인스트럭션 및 데이터를 프로세싱하기 위한 프로세싱 로직 블록(processing logic block)(22), 상호 접속부(20)(도 1 참조)에서의 통신을 조절하는 통신 프로토콜을 구현하기 위한 통신 로직 블록(23), 및 인스트럭션 및 데이터에 대한 국부적, 저 지연 저장 장치를 제공하기 위한 캐시 계층(cache hierarchy)(24)을 포함한다. 예를 들면, 제 1 레벨(L1) 캐시 및 제 2 레벨(L2) 캐시를 포함할 수 있는 캐시 계층(24)에 추가하여, 프로세서(21)의 로컬 저장 장치는, 도 1에 도시된 바와 같이 L3 캐시(19) 및 로컬 메모리(18) 등과 같이, 연관된 오프-칩(off-chip) 제 3 레벨(L3) 캐시를 포함할 수 있다. 모든 로컬 메모리(18)의 컨텐츠의 집합체(aggregate)가 데이터 처리 시스템(10) 내의 임의의 에이전트에 액세스할 수 있는 공유된 "주 기억 장치(main memory)"를 형성하도록, 로컬 메모리(local memories)(18) 사이에서 인스트럭션 및 데이터를 분산시키는 것이 바람직하다. 이하에서, 특정 어드레스와 연관된 저장 위치를 포함하는 로컬 메모리(18)는 해당 어드레스에 대한 홈 로컬 메모리(home local memory)로 지칭하고, 홈 로컬 메모리 및 상호 접속부(20) 사이에 개재된 에이전트는 해당 어드레스에 대한 홈 에이전트로 지칭한다. 도 2에 도시된 바와 같이, 각 홈 에이전트는 통신 로직(23) 및 오직 연관된 로컬 메모리(18) 내에 어떤 메모리 어드레스가 포함되어 있는지만을 나타내는 캐시 계층(24)에 액세스할 수 있는 메모리 맵(memory map)(25)을 갖는다.
다음으로, 도 3을 참조하면, 도 2의 통신 로직(23)의 세부적인 블록도가 도시되어 있다. 도시된 바와 같이, 통신 로직(23)은 마스터 제어 로직 블록(31), 어드레스 채널(14a∼14n)(도 1 참조) 중의 하나에 대해 리퀘스트 (어드레스) 트랜잭션을 공급하기 위한 마스터 어드레스 순차기(master address sequencer)(32), 및 데이터 채널(13)에 데이터 트랜잭션을 공급하기 위한 마스터 데이터 순차기(master data sequencer)(33)를 포함한다. 각 어드레스 채널(14a∼14n)이 비차단형이라는 것을 확인하기 위해서, 주어진 노드(11) 내의 각 에이전트의 마스터 어드레스 순차기(32)는 오직 자신의 노드(11)와 연관된 어드레스 채널(14)에만 접속된다. 그러므로, 예를 들면, 각 에이전트(A0∼An)의 마스터 어드레스 순차기(32)는 오직 어드레스 채널(14a)에만 접속되고, 각 에이전트(BO∼Bn)의 마스터 어드레스 순차기(32)는 오직 어드레스 채널(14b)에만 접속되며, 각 에이전트(N0∼Nn)의 마스터 어드레스 순차기(32)는 오직 어드레스 채널(14n)에만 접속된다. 어드레스 채널(14a∼14n)의 활용을 공평하게 할당하고, 로컬 에이전트가 충돌되는 어드레스 트랜잭션을 발행하지 않는다는 것을 확인하기 위해서, 몇몇 중재 메커니즘(arbitration mechanism)(예를 들면, 라운드 로빈(round robin) 또는 시간 구획(time slice) 등)을 활용하여 동일 노드(11) 내의 에이전트 사이에서 중재해야 한다.
비교하면, 데이터 처리 시스템(10) 내의 모든 에이전트의 마스터 데이터 순차기(33)는 데이터 채널(13)에 접속된다. 데이터 채널(13)에 의해서 전달될 수 있는 데이터 트랜잭션의 타입, 즉, (1) 홈 에이전트 이외의 에이전트로부터 공급되는 수정된 데이터, (2) 홈 에이전트로부터 공급된 데이터, 및 (3) 홈 로컬 메모리(18)에 재기록되는 수정된 데이터를 우선적으로 포함하는 데이터 트랜잭션의 타입은, 로컬 메모리(18) 사이에서 메모리의 분배 및 에이전트 사이에서 프로세스의 분산이 최적화되는 애플리케이션에 있어서 통계적으로 빈번하지 않기 때문에, 데이터 채널(13)은 비차단형이다. 물론, 오직 단일 데이터 채널(13)만을 포함하는 구현에 있어서, 동일 노드(11) 내의 에이전트 사이에서 중재하기 위해서 몇몇 중재 매커니즘(예를 들면, 라운드 로빈 또는 시간 구획 등)을 활용하여 로컬 에이전트가 충돌되는 데이터 트랜잭션을 발행하지 않는다는 것을 확인해야 한다.
또한, 마스터 제어 로직(31)은 기록 카운터(write counter)(39)를 포함한다. 기록 카운터(39)의 목적은, 리퀘스트 트랜잭션이 전송되기 전에 리퀘스트 트랜잭션 내에서 기록 카운터 필드를 증가시키기 위한 것이다. 기록 카운터 필드의 세부 사항은 아래에서 더 설명될 것이다.
또한, 통신 로직(23)은 각 어드레스 채널(14a∼14n)과 측대역 응답 채널(15, 16)에 결합된 스누퍼 어드레스 및 응답 순차기(snooper address and respons sequencer)(35), 데이터 채널(13)에 결합된 스누퍼 데이터 순차기(36), 및 스누퍼 어드레스 및 응답 순차기(35)와, 스누퍼 데이터 순차기(36)에 접속된 스누퍼 제어 로직(34)을 포함한다. 스누퍼 어드레스 및 응답 순차기(35)에 의한 리퀘스트 트랜잭션의 수신이나, 스누퍼 데이터 순차기(36)에 의한 데이터 트랜잭션의 수신에 응답하여, 트랜잭션은 스누퍼 제어 로직(34)으로 통한다. 스누퍼 제어 로직(34)은 구현된 통신 프로토콜에 따라서 트랜잭션을 처리하고, 리퀘스트 트랜잭션이라면, 스누프 응답을 제공하고, 자체 노드의 응답 및 흐름 제어 로직(12)에 취소 신호를 제공할 가능성이 있다. 수신된 트랜잭션의 타입에 따라서, 스누퍼 제어 로직(34)은 캐시 계층(24)의 디렉토리 또는 데이터 어레이에 대한 업데이트, 로컬 메모리(18)에의 기록 또는 그 외의 작업을 개시할 수 있다. 스누퍼 제어 로직(34)은, 제각기 리퀘스트 큐(request queues)(37) 및 데이터 큐(data queues)(38)의 세트로부터 리퀘스트 및 데이터 트랜잭션의 이와 같은 프로세싱을 수행한다.
다음으로, 도 4를 참조하면, 종래 기술에 따른 데이터 처리 시스템(10)(도 1 참조) 내의 리퀘스트 트랜잭션에 대한 상태도가 도시되어 있다. 단계(41)에서 나타낸 바와 같이, 리퀘스트 트랜잭션은, 어드레스 채널(14a) 등과 같은 연관된 어드레스 채널 내에 리퀘스트 트랜잭션을 기록하거나 판독하는 것을 통제하는 마스터 에이전트(예를 들면, 노드(11a)의 에이전트(A0) 등)에 의해서 개시된다. 리퀘스트 트랜잭션은 노드(11a)로부터 노드(11b)로 순차적으로 전파되고, 최종적으로는 어드레스 채널(14a)을 거쳐서 노드(11n)로 전파된다. 각 에이전트의 스누퍼 어드레스 및 응답 순차기(35)가 어드레스 채널(14a)에서의 리퀘스트 트랜잭션을 스누프한 후, 단계(42)에 나타낸 바와 같이, 스누퍼 제어 로직(34) 등과 같이 대응되는 스누퍼 제어 로직에 리퀘스트 트랜잭션을 전송하고, 스누퍼 제어 로직은 응답 및 흐름 제어 로직(12) 등과 같은 연관된 응답 및 흐름 제어 로직에 대해 단계(43)에 도시된 바와 같이 에이전트가 리퀘스트를 서비스(또는 서비스에 참여)할 수 있는지 여부를 나타내는 적절한 스누프 응답을 제공한다. 가능한 스누프 응답은 도 1에 우선 순위의 내림차순으로 나열되어 있다.
표 1
다음으로 에이전트(A0-An)의 스누프 응답은 응답 및 흐름 제어 로직(12a)에 의해서 PCR 채널(15)에서의 PCR 출력에 결합된다. 적절한 스누프 응답의 판정 도중에, 노드(11a) 내의 에이전트의 스누퍼 제어 로직(34)은, 예를 들면, 판독 리퀘스트를 위한 수정된 중재, 또는 기록 리퀘스트를 위한 홈(home) 등과 같이 데이터 처리 시스템(10) 내의 모든 에이전트의 최고 우선 순위의 스누프 응답을 가질 가능성을 판정한다면, 노드(10a) 내의 에이전트는, 취소 채널(17)에서 취소 신호를 출력하는 로컬 취소 로직(local cancellation logic)(도시하지 않음)에 자체의 취소 신호를 어서트(assert)한다. 취소 신호는 취소 채널(17)에 어서트되는 것이 바람직하다.
이후에, 노드(11a)는 단계(44)에 도시된 바와 같이, 리퀘스트를 서비스할 수 있는 수신 노드에 리퀘스트와 연관된 데이터의 패킷을 전송하고, 그 다음 노드(11a)는 단계(45)에 나타낸 바와 같이 데이터의 다른 패킷을 전송하기 전에 수신 노드로부터 확인(acknowledgement : ACK) 신호를 대기한다. 데이터의 각 패킷은 태그(tag)와 연관된다. 노드(11a)가 즉시 데이터의 새로운 패킷을 전송하면, 데이터를 수신할 준비가 된 모든 노드는 동일 태그의 다중 용도를 확인할 수 있고, 데이터의 한 패킷과 다른 패킷을 구분할 수 없을 것이므로, 노드(11a)는 수신 노드로부터의 ACK 신호를 대기해야 한다. 그러나, ACK 신호를 위한 대기 시간은 상호 접속부(20) 등과 같은 상호 접속부에 따른 차단/고정(stalling)에 기인하여 매우 길어질 수 있다.
예를 들면, L2 캐시에서는 노드(A0) 내의 버퍼(buffer)로부터 노드(M0)로 데이터를 캐스트-아웃(cast-out)하기 위해서 태그 Y를 이용한다. 노드(A0)에서 데이터를 언로드(unload)하면, 노드(A0) 및 노드(M0) 사이에 접속된 상호 접속부 내에서의 트래픽(traffic)에 기인하여, 데이터는 노드(M0)로 향하는 자신의 통로에서 하류(downstream)로 고정될 수 있다. 한편, 노드(A0) 내의 동일 캐스트아웃 버퍼(castout buffer)가 동일 태그 Y로 다른 어드레스 보유(address tenure)를 생성할 수 있다는 것을 예측할 수 있지만, 이때 데이터는 노드(N0)로 향한다. 따라서, 제 1 캐스트아웃으로부터의 데이터가 제 2 캐스트아웃 이전에 노드(M0)에 의해서 수신되지 않으면, 노드(M0, N0)에서의 데이터 수신자는 어떤 노드에서 캐스트 아웃 데이터 패킷이 의도되었는지 식별할 수 없을 것이다. 그러므로, 종래 기술에서는, 노드(A0) 내의 캐스트아웃 버퍼는 리셋(reset)이 허용되지 않고, 노드(A0)에서 캐스트아웃 데이터의 의도된 목적지가 실제적으로 캐스트아웃 데이터 패킷을 수신했다는 것을 나타내는 ACK 신호(어드레스 전용 보유(address-only tenure))를 수신할 때까지 재시작된다. 그러나, ACK 신호에 대한 대기 시간은 상호 접속부에 따른 차단/고정에 기인하여 매우 길어질 수 있다. 이러한 문제점은 여러 노드를 갖는 매우 큰 프로세싱 시스템에서 악화될 수 있는데, 이는 데이터 버스 고정(data bus stalling)의 가능성이 증가되고, 프로세싱 시스템에 걸쳐 데이터를 전송하는데 걸리는 시간이 증가되기 때문이다.
대기 시간을 피하기 위해서, 본 발명에 따른 새로운 리퀘스트 트랜잭션을 이용한다. 도 5(a)를 참조하면, 본 발명의 바람직한 실시예에 따른 리퀘스트 트랜잭션의 데이터 구조가 도시되어 있다. 도시된 바와 같이, 리퀘스트 트랜잭션(50)은 마스터 에이전트의 노드 ID를 나타내기 위한 마스터 노드 ID 필드(master node ID field)(51), 기록 카운터 필드(write counter field)(52), 리퀘스트 트랜잭션이 판독(예를 들면 판독 전용(read-only) 또는 수정이 의도된 판독(read-with-intent-to-modify) 등) 리퀘스트인지 기록 리퀘스트인지 여부를 나타내기 위한 트랜잭션 타입 필드(transaction type field)(53) 및 리퀘스트 어드레스를 명시하기 위한 리퀘스트 어드레스 필드(request address field)(54)를 포함한다. 도 5(b)는 데이터 트랜잭션(55)의 유사한 데이터 구조물을 도시하는 것으로, 데이터 트랜잭션(55)은 목적지 노드의 노드 ID를 나타내기 위한 목적지 노드 ID 필드(destination node ID field)(56), 기록 카운터 필드(57) 및 데이터를 포함하기 위한 데이터 필드(58)를 포함한다.
본 발명의 바람직한 실시예에 따르면, 기록 카운터 필드(52, 57)의 번호는 트랜잭션 리퀘스트가 전송되는 매 회수마다 증가된다. 예를 들면, 제 1 리퀘스트 트랜잭션에 대한 기록 카운터 필드(52) 내의 번호는 "00"이고, 제 2 리퀘스트 트랜잭션에 대한 기록 카운터 필드(52) 내의 번호는 "01"이고, 제 3 리퀘스트 트랜잭션에 대한 기록 카운터 필드(52) 내의 번호는 "10"이고, 제 4 리퀘스트 트랜잭션에 대한 기록 카운터 필드(52) 내의 번호는 "11"이다. 다음에, 제 5 리퀘스트 트랜잭션에 대한 기록 카운터 필드(52) 내의 번호는 "00"으로 되돌아간다.
기록 카운터 필드(52) 내의 비트의 개수는 데이터 처리 시스템 내의 모든 노드를 접속하는 상호 접속부 내의 노드 및 지연(delays)의 개수에 의존하는 것이 바람직하다. 예를 들면, 데이터 프로세싱 시스템 내의 노드의 개수는 2n이고, 여기에서 n은 기록 카운터 필드(52) 내의 비트의 개수이다. 그러므로, n=log10(데이터 처리 시스템 내의 노드의 개수)/log102이다. 이와 같이, 기록 카운터 필드(52) 내의 비트의 개수는 조정되어 도 1의 상호 접속부(20) 등과 같은 상호 접속부의 길이에 따라 최적 성능을 제공할 수 있다. 기록 카운터 필드(52) 내의 비트의 개수는 도 3에서의 기록 카운터(39) 등과 같은 기록 카운터에 의해서 업데이트되는 것이 바람직하다.
도 5(c)에 도시된 바와 같이, 응답(60)의 데이터 구조물은 현재까지 수신된 가장 높은 우선 순위의 스누프 응답을 제공하는 에이전트의 노드 ID를 나타내기 위한 스누퍼 노드 ID 필드(61) 및 지금까지 수신된 가장 높은 우선 순위의 스누프 응답을 나타내기 위한 응답 필드(62)를 포함한다.
도 6을 참조하면, 본 발명의 바람직한 실시예에 따른 데이터 처리 시스템(10)(도 1 참조) 내의 리퀘스트 트랜잭션에 대한 상태도를 도시한다. 판독 또는 기록 등과 같은 리퀘스트 트랜잭션은, 단계(71)에 나타낸 바와 같이 제 1 노드 내의 마스터 에이전트에 의해서 개시된다. 리퀘스트 트랜잭션의 어드레스는, 단계(72)에 설명된 바와 같이 하나의 노드로부터 다른 노드로 순차적으로 전파된다. 그 다음 마스터 에이전트는, 단계(73)에 나타낸 바와 같이 수신 노드 중의 하나로부터의 응답을 대기한다. 응답을 수신한 후에, 단계(74)에 도시된 바와 같이 마스터 에이전트로부터, 응답을 전송했던 의도된 수신 노드로 데이터를 전달한다. 데이터 보유가 완료되면, 다음 리퀘스트 트랜잭션이 이전의 리퀘스트 트랜잭션에 비해서 더 높은 기록 카운트를 가질 수 있도록, 다음 리퀘스트 트랜잭션의 기록 카운터 필드(도 5(a)에서의 기록 카운터 필드(52) 등과 같은)를 하나씩 증가시킨다. 다음에, 프로세스는 다음 리퀘스트 상태로 진행되어, 종래 기술의 설계에서 가능했던 것과 같이 의도된 수신 노드로부터의 ACK 신호를 대기하지 않고 도 6의 시퀀스를 반복한다.
설명된 바와 같이, 본 발명은 대칭형 다중 프로세서 시스템 내에서 패킷을 전송하기 위한 방법 및 장치를 제공한다. 본 발명은 주어진 버퍼가 이용되는 매 회수마다 태그를 상이하게 하는 것에 의해서 태그화(tagging)의 문제점을 제거한다. 그러므로, 버퍼에서의 데이터 패킷을 언로드한 직후에 버퍼를 재사용할 수 있다. 본 발명의 기록 카운터를 이용하는 것에 의해서 동일 태그의 재사용에 의한 긴 대기 시간을 피할 수 있고, 전송될 준비가 된 데이터를 저장하기 위한 노드 내의 큐(캐스트 아웃 버퍼 등과 같은)의 개수를 잠재적으로 감소시킬 수 있다.
본 발명은 바람직한 실시예를 참조하여 특별히 나타내고 설명하였으나, 당업자라면 본 발명의 정신 및 범주를 벗어나지 않는 한도 내에서 형태 및 세부 사항에 대한 여러 변동이 이루어질 수 있다는 것을 이해할 것이다.

Claims (8)

  1. 상호 접속부(interconnect)를 거쳐서 서로 접속되는 복수의 프로세싱 노드(processing nodes)를 포함하는 데이터 처리 시스템(data processing system) 내의 프로세싱 노드들 간에 패킷(packets)을 송신하는 방법에 있어서,
    마스터 노드(master node)로부터 복수의 수신 노드(receiving nodes)로 리퀘스트 트랜잭션(request transaction)을 개시하는 단계와,
    상기 리퀘스트 트랜잭션과 연관되는 기록 카운터 번호(write counter number)를 생성하는 단계와,
    상기 마스터 노드에 의해서 상기 수신 노드로부터 결합된 응답을 수신하는 단계와,
    상기 결합된 응답에 따라서 상기 마스터 노드로부터 상기 수신 노드들 중 의도된 하나에 데이터 패킷을 송신하는 단계와,
    상기 데이터 패킷이 전송된 직후 및 상기 의도된 수신 노드로부터 확인(acknowledgement)을 수신하기 전에, 새로운 기록 카운터 번호(write counter number)와 함께 새로운 리퀘스트 트랜잭션을 개시하는 단계
    를 포함하는 프로세싱 노드들 간의 패킷 전송 방법.
  2. 제 1 항에 있어서,
    상기 생성 단계는 각각의 리퀘스트 트랜잭션에 대한 새로운 기록 카운터 번호를 생성하는 단계를 더 포함하는 프로세싱 노드들 간의 패킷 전송 방법.
  3. 제 1 항에 있어서,
    상기 기록 카운터 번호 내의 비트의 개수는 log10(상기 데이터 처리 시스템 내의 노드의 개수)/log102인 프로세싱 노드들 간의 패킷 전송 방법.
  4. 제 1 항에 있어서,
    상기 데이터 처리 시스템은 대칭형 다중 프로세서 시스템(symmetric multiprocessor system)인 프로세싱 노드들 간의 패킷 전송 방법.
  5. 상호 접속부를 거쳐서 서로 접속되는 복수의 프로세싱 노드를 포함하는 데이터 처리 시스템 내의 프로세싱 노드들 간에 패킷을 전송하는 장치에 있어서,
    마스터 노드로부터 복수의 수신 노드로 리퀘스트 트랜잭션을 개시하는 수단과,
    상기 리퀘스트 트랜잭션과 연관되는 기록 카운터 번호를 생성하는 수단과,
    상기 마스터 노드에 의해서 상기 수신 노드로부터 결합된 응답을 수신하는 수단과,
    상기 결합된 응답에 따라서 상기 마스터 노드로부터 상기 수신 노드들 중 의도된 하나에 데이터 패킷을 송신하는 수단과,
    상기 데이터 패킷이 전송된 직후 및 상기 의도된 수신 노드로부터 확인을 수신하기 전에, 새로운 기록 카운터 번호와 함께 새로운 리퀘스트 트랜잭션을 개시하는 수단
    을 포함하는 프로세싱 노드들 간의 패킷 전송 장치.
  6. 제 5 항에 있어서,
    상기 생성 수단은 각각의 리퀘스트 트랜잭션에 대해 새로운 기록 카운터 번호를 생성하는 기록 카운터를 더 포함하는 프로세싱 노드들 간의 패킷 전송 장치.
  7. 제 5 항에 있어서,
    상기 기록 카운터 번호 내의 비트의 개수는 log10(상기 데이터 처리 시스템 내의 노드의 개수)/log102인 프로세싱 노드들 간의 패킷 전송 장치.
  8. 제 5 항에 있어서,
    상기 데이터 처리 시스템은 대칭형 다중 프로세서 시스템인 프로세싱 노드들 간의 패킷 전송 장치.
KR10-2003-7016731A 2001-07-31 2002-07-25 프로세싱 노드들 간의 패킷 전송 방법 및 장치 KR100516286B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/918,812 US6910062B2 (en) 2001-07-31 2001-07-31 Method and apparatus for transmitting packets within a symmetric multiprocessor system
US09/918,812 2001-07-31
PCT/GB2002/003486 WO2003012674A2 (en) 2001-07-31 2002-07-25 Method and apparatus for transmitting packets within a symmetric multiprocessor system

Publications (2)

Publication Number Publication Date
KR20040012961A KR20040012961A (ko) 2004-02-11
KR100516286B1 true KR100516286B1 (ko) 2005-09-21

Family

ID=25441004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7016731A KR100516286B1 (ko) 2001-07-31 2002-07-25 프로세싱 노드들 간의 패킷 전송 방법 및 장치

Country Status (8)

Country Link
US (1) US6910062B2 (ko)
EP (1) EP1412871B1 (ko)
KR (1) KR100516286B1 (ko)
CN (1) CN1271540C (ko)
AT (1) ATE329316T1 (ko)
AU (1) AU2002319498A1 (ko)
DE (1) DE60212142T2 (ko)
WO (1) WO2003012674A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996843B2 (en) 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7073004B2 (en) * 2002-12-12 2006-07-04 International Business Machines Corporation Method and data processing system for microprocessor communication in a cluster-based multi-processor network
US7765269B2 (en) * 2003-11-05 2010-07-27 Renesas Technology Corporation Communications system, and information processing device and control device incorporating said communications system
US7007128B2 (en) * 2004-01-07 2006-02-28 International Business Machines Corporation Multiprocessor data processing system having a data routing mechanism regulated through control communication
US20060161647A1 (en) * 2004-12-22 2006-07-20 Waldemar Wojtkiewicz Method and apparatus providing measurement of packet latency in a processor
US8205024B2 (en) * 2006-11-16 2012-06-19 International Business Machines Corporation Protecting ownership transfer with non-uniform protection windows
US7734876B2 (en) * 2006-11-16 2010-06-08 International Business Machines Corporation Protecting ownership transfer with non-uniform protection windows
US7818508B2 (en) * 2007-04-27 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for achieving enhanced memory access capabilities
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US20080270708A1 (en) * 2007-04-30 2008-10-30 Craig Warner System and Method for Achieving Cache Coherency Within Multiprocessor Computer System
US20090303888A1 (en) * 2007-05-03 2009-12-10 Honeywell International Inc. Method and system for optimizing wireless networks through feedback and adaptation
US8200270B2 (en) * 2007-08-20 2012-06-12 Honeywell International Inc. Method for adusting power at a node
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
US8782779B2 (en) * 2007-09-26 2014-07-15 Hewlett-Packard Development Company, L.P. System and method for achieving protected region within computer system
US9207990B2 (en) * 2007-09-28 2015-12-08 Hewlett-Packard Development Company, L.P. Method and system for migrating critical resources within computer systems
US7899483B2 (en) * 2007-10-08 2011-03-01 Honeywell International Inc. Method and system for performing distributed outer loop power control in wireless communication networks
US8107387B2 (en) * 2008-03-25 2012-01-31 Honeywell International Inc. Method to operate a wireless network having a predictable and stable performance
US8635411B2 (en) 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
US9613120B1 (en) * 2014-11-11 2017-04-04 Amazon Technologies, Inc. Replicated database startup for common database storage
CN108333558B (zh) * 2018-02-07 2021-11-16 南京邮电大学 一种室内定位系统中快速测量Tof和Tdoa的方法
CN110533503B (zh) * 2019-08-12 2022-02-18 厦门网宿有限公司 一种数据处理方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949272A (en) * 1988-12-16 1990-08-14 Pitney Bowes Inc. Flexible billing rate for mail communication systems
US4965793A (en) * 1989-02-03 1990-10-23 Digital Equipment Corporation Method and apparatus for interfacing a system control unit for a multi-processor
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US6263374B1 (en) * 1992-09-17 2001-07-17 International Business Machines Corporation Apparatus for coupling a bus-based architecture to a switch network
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5887146A (en) * 1995-08-14 1999-03-23 Data General Corporation Symmetric multiprocessing computer with non-uniform memory access architecture
US5680571A (en) * 1995-12-28 1997-10-21 Unisys Corporation Multi-processor data processing system with multiple, separate instruction and operand second level caches
US5900020A (en) * 1996-06-27 1999-05-04 Sequent Computer Systems, Inc. Method and apparatus for maintaining an order of write operations by processors in a multiprocessor computer to maintain memory consistency
US6038645A (en) * 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US6253292B1 (en) * 1997-08-22 2001-06-26 Seong Tae Jhang Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme
US6484224B1 (en) * 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US6606702B1 (en) * 2000-06-06 2003-08-12 International Business Machines Corporation Multiprocessor speculation mechanism with imprecise recycling of storage operations
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations

Also Published As

Publication number Publication date
CN1527975A (zh) 2004-09-08
EP1412871B1 (en) 2006-06-07
EP1412871A2 (en) 2004-04-28
ATE329316T1 (de) 2006-06-15
AU2002319498A1 (en) 2003-02-17
US20030033350A1 (en) 2003-02-13
WO2003012674A3 (en) 2003-12-18
DE60212142D1 (de) 2006-07-20
DE60212142T2 (de) 2007-04-19
WO2003012674A2 (en) 2003-02-13
US6910062B2 (en) 2005-06-21
CN1271540C (zh) 2006-08-23
KR20040012961A (ko) 2004-02-11

Similar Documents

Publication Publication Date Title
KR100516286B1 (ko) 프로세싱 노드들 간의 패킷 전송 방법 및 장치
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US7818388B2 (en) Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US6848003B1 (en) Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US7627738B2 (en) Request and combined response broadcasting to processors coupled to other processors within node and coupled to respective processors in another node
US7761631B2 (en) Data processing system, method and interconnect fabric supporting destination data tagging
US8139592B2 (en) Ticket-based operation tracking
IL142265A (en) Data processing system with uneven access to memory (NUMA) that precedes a call request for a remote processing industry on an approximate basis
US8102855B2 (en) Data processing system, method and interconnect fabric supporting concurrent operations of varying broadcast scope
JP2003510686A (ja) デッドロックのないコンピュータシステム動作のためのバーチャルチャネルおよび対応するバッファ割当て
KR20180071967A (ko) 데이터 처리
EP1701267B1 (en) Address snoop method and multi-processor system
US8103791B2 (en) Synchronized communication in a data processing system
US20190042428A1 (en) Techniques for requesting data associated with a cache line in symmetric multiprocessor systems
US7809004B2 (en) Data processing system and processing unit having an address-based launch governor
US7483428B2 (en) Data processing system, method and interconnect fabric supporting a node-only broadcast
US6519649B1 (en) Multi-node data processing system and communication protocol having a partial combined response
US20060187958A1 (en) Data processing system, method and interconnect fabric having a flow governor
US20190042486A1 (en) Techniques for command arbitation in symmetric multiprocessor systems
US6671712B1 (en) Multi-node data processing system having a non-hierarchical interconnect architecture
US6735654B2 (en) Method and apparatus for efficiently broadcasting transactions between an address repeater and a client
US20020133657A1 (en) Method and apparatus for efficiently broadcasting transactions between a first address repeater and a second address repeater

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20080901

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee