KR20010029853A - 물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치 - Google Patents

물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치 Download PDF

Info

Publication number
KR20010029853A
KR20010029853A KR1020000036029A KR20000036029A KR20010029853A KR 20010029853 A KR20010029853 A KR 20010029853A KR 1020000036029 A KR1020000036029 A KR 1020000036029A KR 20000036029 A KR20000036029 A KR 20000036029A KR 20010029853 A KR20010029853 A KR 20010029853A
Authority
KR
South Korea
Prior art keywords
node controller
node
bus
command
transaction
Prior art date
Application number
KR1020000036029A
Other languages
English (en)
Other versions
KR100404607B1 (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 KR20010029853A publication Critical patent/KR20010029853A/ko
Application granted granted Critical
Publication of KR100404607B1 publication Critical patent/KR100404607B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

버스방식 캐시 코히런스 프로토콜(bus-based cache coherence protocol)을 이용하는, 다중 방식(large-way)의 대칭형 멀티프로세서 시스템을 위한 분산 시스템 구조가 개시되어 있다. 분산 시스템 구조는, 어드레스 스위치와, 다수의 메모리 서브시스템과, 프로세서, 입출력 에이전트 또는 코히런트 메모리 어댑터와 같은 다수의 마스터 장치를 포함하며, 다수의 마스터 장치는 노드 제어기에 의해 지원되는 노드 집합으로 편성된다. 각각의 프로세서는 다수의 캐시를 구비할 수 있다. 어드레스 스위치는 각각의 노드 제어기와 각각의 메모리 서브시스템에 접속하고, 각각의 메모리 서브시스템은 어드레스 스위치와 각각의 노드 제어기에 접속한다. 노드 제어기는 마스터 장치로부터의 명령을 수신하고 마스터 장치로부터 수신된 명령을 대기시킨다. 마스터 장치, 노드 제어기, 어드레스 스위치 및 메모리 서브시스템간의 버스는 다양한 버스 프로토콜을 이용하여 운영될 수 있다. 다수이 마스터 장치에 의해 발송된 명령들간의 기본 순서는 어드레스 스위치에 의해 다수의 노드 제어기 및 다수의 메모리 서브시스템으로의 명령 브로드캐스트 도착에 기초를 둔다. 명령 집합들내에서 스누프된 명령은 재정렬되거나 취소되거나 나중에 재발송(reissue)된다.

Description

물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스 메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법 및 장치{Method and Apparatus for Achieving Correct Order Among Bus Memory Transactions in a Physically Distributed SMP System}
본원 발명은 일반적으로 개선된 데이터 처리 시스템에 관한 것으로서, 구체적으로 데이터 처리 시스템 내에서 데이터 처리율을 개선시키기 위한 방법 및 장치에 관한 것이다.
전통적으로, 대칭형 멀티프로세서(symmetric multiprocessor: SMP)는 모든 프로세서와 메모리 및 I/O와 같은 기타 장치들이 버스 신호 운반 와이어에 단순히 물리적으로 접촉함으로써 접속되는 공통 시스템 버스를 중심으로 설계된다. 공통 버스는 장치간에 명령 및 데이터를 전달하기 위한 경로이며 또한 시스템의 캐시 및 메모리간의 코히런스(coherence)를 이루기 위한 경로이다. 단일-공통 버스 설계는 시스템 구성상의 단순성으로 인해 멀티프로세서를 연결하는데 인기있는 선택사양이다.
또한, 시스템 캐시간의 코히런스를 달성하는 임무를 단순화시킨다. 장치에 의해 발생된 명령은 모든 시스템 장치들에 동시에 그리고 명령이 버스상에 놓이는 동일한 클럭 사이클동안 브로드캐스드된다. 버스는 버스상에 놓이는 모든 명령들에 고정 순서를 부여한다. 이러한 순서는 시스템 내의 모든 장치들이 동일한 명령을 관찰하기 때문에 모든 장치에 의해 동의된 것이다. 또한, 장치들은, 특별한 노력 없이, 명령 순서의 최종 결과에 대해 동의한다. 이것이 단일버스 방식 멀티프로세서의 주요 장점이다.
그러나, 단일-공통 버스 설계는 어느 하나가 낮은 시스템 성능을 선택하지 않는다면 시스템 크기를 제한하는 문제점이 있다. 전형적으로, 이러한 기술상의 제한은, 버스의 스위칭 속도 및 이에 따른 시스템 수행 속도의 손실절충이 없다면, 단지 소수의 장치만이 버스에 접속될 수 있도록 한다. 프로세서 및I/O 장치와 같은 더 많은 마스터 장치가 버스상에 배치된다면, 버스는 더 느린 속도로 스위치하여야 하고, 이는 가용 대역폭을 떨어뜨린다. 낮은 대역폭은 대기 지연 시간(queuing delay)을 증가시키고, 이는 프로세서의 이용도를 저하시키고, 결국 시스템 성능을 저하시킨다.
단일 버스 시스템에서의 또하나의 심각한 문제점은 데이터 전송을 위한 단일 데이터 경로의 이용도이다. 이는 또한 대기 지연을 악화시키고 시스템 성능을 저하시키는 결과를 가져온다.
캐시-코히런스 프로토콜은 넓은 범위에서 두가지로 분류된다. 하나는 버스식 스누핑 프로토콜(bus-based snooping protocol)로서, 시스템 내의 모든 캐시는 공통 버스에 접속하고 다른 캐시에 의해 공통 버스상에 발송된 트랜잭션을 감시하다가 상호 코히런스를 유지하기 위해 적절한 동작을 취하는 것이다. 또다른 종류는 디렉토리식 프로토콜로서, 각각의 메모리 주소가 "홈사이트(home site)"를 갖는다. 캐시가 해당 어드레스를 액세스할 때마다, 홈사이트의 "디렉토리"는 캐시의 식별자 및 캐시 내의 데이터 상태를 저장하기 위해 갱신된다. 그 캐시 내의 데이터 상태를 갱신할 필요가 있으면, 홈 사이트는 명시적으로 캐시에 메시지를 보내어 캐시로 하여금 적절한 동작을 수행할 것을 요청한다.
구현 및 검증의 복잡성 측면에서, 버스식 스누핑 프로토콜이 디렉토리식 프로토콜보다 훨씬 단순하며, 대칭형 멀티프로세서(SMP)에서 선택되는 프로토콜이다. 그러나, 버스식 프로토콜은 보통 2개에서 4개 정도의 소수 프로세서만으로 이루어지는 시스템에서 효과적으로 이용될 수 있다.
따라서, 현재로서는 단일-시스템-버스 설계가 코히런스 프로토콜을 구현하는데 선호되는 설계 방식이기는 하지만, 이는 다수의 프로세서를 갖는 다중 방식 SMP용으로는 이용될 수 없다.
따라서, 버스식 캐시-코히런스 프로토콜을 이용하는 대규모 SMP 설계를 갖는 것이 바람직하겠다.
버스식 캐시 코히런스 프로토콜을 이용하는 다중 방식 대칭 멀티프로세서 시스템을 위한 분산 시스템 구조가 개시된다. 분산 시스템 구조는, 어드레스 스위치, 다수의 메모리 서브시스템, 및 다수의 마스터 장치를 포함하며, 프로세서, I/O 에이전트, 또는 코히런트 메모리 어댑터와 같은 마스터 장치들은 노드 제어기에 의해 지원되는 노드 집합들로 편성된다. 각각의 프로세서는 다수의 캐시를 구비할 수 있다. 어드레스 스위치는 각각의 노드 제어기 및 각각의 메모리 서브시스템에 접속하며, 각각의 메모리 서브시스템은 어드레스 스위치 및 각각의 노드 제어기에 접속한다. 노드 제어기는 마스터 장치로부터 명령을 수신하고 마스터 장치로부터 수신한 명령을 대기시킨다(대기행렬에 저장한다). 마스터 장치간의 버스, 노드 제어기, 어드레스 스위치 및 메모리 서브시스템은 다양한 버스 프로토콜을 이용하여 운영될 수 있다. 다수의 마스터 장치에 의해 발송되는 명령들간의 기본 순서는 어드레스 스위치에 의한 다수의 노드 제어기 및 다수의 메모리 서브시스템으로의 명령 브로드캐스트의 도착 순서에 기초를 둔다. 명령 집합 내에서 스누프된 명령은 재순서화되거나 최소되거나 나중에 재발송될 수 있다.
본원 발명의 신규한 특징은 첨부된 청구항에 기재되어 있다. 그러나, 발명의 바람직한 실시예 및 발명의 더 나아간 목적 및 장점 뿐만 아니라 발명 그 자체는 첨부된 도면과 연관하여 이하의 예시적인 발명 구현에 대한 상세한 설명으로부터 더욱 잘 이해될 수 있을 것이다.
도 1은 종래의 멀티프로세서 컴퓨터 시스템의 기본 구조를 도시한 블럭도이다.
도 2는 전형적인 구조를 도시한 블럭도이다.
도 3은 3개의 프로세싱 유니트를 구비한 SMP 컴퓨터 시스템을 도시한 블럭도이다.
도 4는 버스식 캐시-코히런스 프로토콜을 지원하는 대칭형 멀티프로세서 시스템의 분산 시스템 구조를 SMP 시스템내의 어드레스 경로 관점에서 도시한 블럭도.
도 5는 버스식 캐시-코히런스 프로토콜을 지원하는 대칭형 멀티프로세서 시스템의 분산 시스템 구조를 SMP 시스템내의 데이터 경로 관점에서 도시한 블록도.
도 6은 노드 제어기의 내부 어드레스 경로를 도시한 블럭도.
도 7은 노드 제어기와 메모리 서브시스템을 연결한 어드레스 스위치의 내부 어드레스 경로를 도시한 도면.
도 8은 본 발명의 분산 시스템의 어드레스 스위치에 연결된 메모리 서브시스템을 도시한 도면.
도 9a 및 9b는 노드 제어기 내부의 데이터 경로를 도시한 블럭도.
도 10a 내지 10d는 분산 시스템 구조용 버스 응답 신호를 판단하기 위한 시스템 구조를 도시한 블럭도.
도 1을 참조하면, 종래의 멀티프로세서 시스템(11)의 기본 구조가 도시되어 있다. 컴퓨터 시스템(110)은 다양한 주변 장치에 접속되어 있는 여러개의 처리 유니트(112a, 112b, 112c)를 포함한다. 주변 장치에는, 모니터 어댑터(102) 및 디스플레이 모니터(105), 키보드 어댑터(104) 및 키보드(107), 디스크 어댑터(103) 및 영구 저장 장치(106)로부터 데이터를 수신하고 이들에 데이터를 제공하는 입출력 에이전트(114)와, 프로그램 인스트럭션을 수행하기 위해 처리 유니트에 의해 이용되는 메모리 장치(116)(예를 들면, 동적 랜덤 액세스 메모리:DRAM)와, 컴퓨터가 처음 켜질 때마다 주변장치(보통은 영구 메모리 장치)중 하나로부터 운영 체제를 찾아서 로딩하는 것을 주목적으로 하는 펌웨어(118)가 있다. 처리 유니트(112a-112c)는 버스(120)를 포함하는 다양한 수단에 의해 주변 장치와 통신한다. 컴퓨터 시스템(110)은, 모뎀 또는 프린터와 같은 주변 장치로의 접속을 위한 직렬 및 병렬 포트와 같은 (미도시된) 다수의 부가적인 구성 요소를 포함할 수 있다. 본 기술분야의 당업자라면 도 1의 블럭도에 도시된 것과 결합하여 이용될 수 있는 그밖의 구성 요소들이 더 있을 수 있다는 것을 이해할 것이다. 예를 들면, 비디오 디스플레이 어댑터를 제어하기 위해 디스플레이 어댑터가 이용될 수 있으며, 메모리(116)를 액세스하기 위해 디스플레이 어댑터가 이용될 수도 있다. 또한, 컴퓨터 시스템(110)은 더 많거나 더 적은 프로세서로 구성될 수 있다.
대칭형 멀티프로세서(SMP) 컴퓨터에 있어서, 모든 처리 유니트(112a-112c)는 일반적으로 동일하다. 즉, 그들은 모두 작동되기 위해 공통의 인스트럭션 및 프로토콜 집합 또는 그 부분집합을 이용하며 일반적으로 동일한 구조를 갖는다.
이제 도 2를 참조하면, 전형적인 구성이 도시되어 있다. 처리 유니트(112)는 다수의 레지스터와, 컴퓨터를 작동시키기 위해 프로그램 명령어를 실행하는 실행 유니트를 포함한다. 또한, 프로세서는 명령어 캐시(124) 및 데이터 캐시(126)와 같은 캐시를 구비한다. 이들 캐시는 프로세서의 레지스터 및 실행 유니트와 통합적으로 패키징될 때 "장착(on-board)"형으로 불리운다. 캐시는, 도 1에 도시된 메모리(116)와 같은 메모리로부터 값을 로딩하는데 길어지는 단계를 피함으로써 처리율을 증가시키기 위해, 프로세서에 의해 반복적으로 액세스되는 값들을 일시적으로 저장하는데 흔히 이용된다.
처리 유니트(112)는 캐시(128)와 같은 부가적인 캐시를 포함할 수 있다. 캐시(128)는 장착 (레벨 1) 캐시(124 및 126)를 지원하기 때문에 레벨 2(L2) 캐시라 불리운다. 즉, 캐시(128)는 메모리(116)와 장착 캐시간의 중간 저장소로서의 역할을 하며, 액세스가 지연되는 단점을 있지만, 장착-캐시보다 훨씬 많은 양의 (명령 및 데이터) 정보를 저장할 수 있다. 예를 들어, 캐시(128)는 256 또는 512 킬로바이트의 저장용량을 갖는 칩일 수 있으며, 프로세서(112)는 전체 용량이 64킬로바이트인 장착 캐시를 갖는 IBM PowerPC 604계열 프로세서일 수 있다. 캐시(128)는 버스(120)에 접속되고, 메모리(116)로부터 프로세서(112)로의 모든 정보 로딩은 캐시(128)를 통해서만 이루어져야 한다. 도 2는 단지 두개 레벨의 캐시 계층구조를 도시하고 있지만, 다중 레벨의 캐시들이 직렬로 접속되는 다중 레벨 캐시 계층구조가 제공될 수도 있다.
SMP 컴퓨터에서, 코히런트 메모리 시스템, 즉, 모든 프로세서들에 대해 동일한 순서로 일련화된 개별적인 메모리 위치의 각각에 데이터를 기록하는 시스템을 제공하는 것이 중요하다. 예를 들어, 메모리 위치가 값 1,2, 3, 4의를 갖도록 하는 기록 시퀀스에 의해 변경된다고 가정하자. 캐시 코히런트 시스템에서, 모든 프로세서들은 주어진 순서대로 주어진 위치에 이들 기록이 발생하는지를 관찰할 것이다. 그러나, 하나의 처리 유니트가 주어진 메모리 위치에 수행되어질 임의의 기록을 놓칠 수도 있다. 그 메모리 위치를 판독하는 임의의 처리 유니트는 값 2에 대한 갱신이 빠진 상태의 시퀀스 1,3,4를 보게 될 것이다. 각각의 프로세서가 유효한 데이터 순서를 갖도록 해주는 시스템을 "코히런트"하다고 한다. 실질적으로 모든 코히런트 프로토콜이 캐시 블럭 크기의 그래뉼리티(granularity)에 대해서만 작용한다는 것을 주목할 필요가 있다. 즉, 코히런트 프로토콜은 캐시 블럭 단위의 데이터에 대한 기록 허가의 변화를 제어하는 것이지 각각의 메모리 위치에 대해 별도로 제어하는 것이 아니다.
본 기술 분야의 당업자들에게 알려진 캐시 코히런스 달성 프로토콜 및 기법에는 여러가지가 있다. 코히런스를 유지하기 위한 이들 메커니즘의 중심에, 프로토콜은 주어진 시점에 주어진 위치(캐시 블럭)에만 기록할 수 있도록 하는 "허가"를 단지 하나의 프로세서만이 갖도록 한다. 이러한 요구사항 결과로 인해, 처리 유니트는 메모리 위치에 기록을 시도할 때마다, 우선 자신이 그 위치에 기록하기를 원한다는 것을 모든 다른 처리 유니트에 알리고, 모든 다른 처리 유니트로부터 기록 명령을 수행하라는 허가를 수신하여야 한다. 여기에서 핵심사항은 시스템 내의 모든 다른 프로세서들이 기록이 발생하기 전에 기록 허가를 원하는 프로세서에 의해 그 기록을 보고받아야 한다는 것이다. 다중 계층 구조에서 캐시 코히런스가 어떻게 구현되는가에 대해 좀더 설명하기 위해 도 3을 참조한다.
이제, 도 3을 참조하면, SMP 컴퓨터 시스템은 각각이 L1 캐시(140b, 141b, 142d)와 L2 캐시(140c, 141c, 142c)와 마지막으로 L3 캐시(140d, 141d,142d)를 구비하는 프로세서(140a, 141a, 142a)로 구성된 3개의 처리 유니트(140, 141, 142)로 이루어지는 것으로 되어 있다. 이러한 계층구조에서, 각각의 하위 레벨 캐시(즉, L3 캐시가 L2 캐시보다 "하위"임)는 일반적으로 차상위 레벨의 캐시보다 크기가 큰 반면에 액세스 시간이 길다. 또한, 절대적으로 요구되는 것은 아니지만, 하위 레벨 캐시가 상위 레벨 캐시에 존재하는 모든 블럭들의 사본을 포함한다. 예를 들어, 임의의 처리 유니트의 L2 캐시에 하나의 블럭이 존재한다면, 그 처리 유니트의 L3 캐시 또한 그 블럭의 (유효하지 않을 수도 있는(potentially stale))사본을 갖고 있다는 의미이다. 더 나아가서, 주어진 처리 유니트의 L1 캐시에 존재하는 블럭이 있다면, 이는 그 처리 유니트의 L2 캐시 및 L3 캐시에도 존재한다. 이러한 속성을 포함이라고 하며, 이는 본 기술 분야의 당업자들에게는 잘 알려진 사실이다. 따라서, 포함이라는 주원칙은 본 발명에 관계된 캐시에 적용되는 것을 가정한다.
도 3에 도시된 바와 같은 시스템에 캐시 코히런스를 구현하기 위해, 프로세서들은 공통의 범용 상호연결부(143) 상에서 통신한다. 프로세서들은 자신이 메모리 위치로의 판독 또는 기록을 원한다는 것을 표시하는 메시지를 상호연결부(143) 상에 전달한다. 하나의 연산이 상호연결부 상에 놓이면, 다른 모든 프로세서들은 이들의 연산을 "스누프(snoop)"하고 그들의 캐시 상태가 요청된 연산이 진행되는 것을 허용하는지, 허용한다면 어떠한 조건하에서 허용하는지를 판단한다. 캐시를 갖는 시스템에서, 임의의 메모리 블럭에 대한 가장 최근의 유효한 사본이 시스템 메모리(144)로부터 시스템의 하나 이상의 캐시로 이동될지도 모르기 때문에 이러한 통신은 필수적이다. 프로세서(예를 들어, 140a)가 그의 캐시 계층구조(140b, 140c, 140d) 내에 존재하지 않는 메모리 위치를 액세스하려고 한다면, 해당 메모리 위치에 대한 실제 값을 포함하는 블럭의 올바른 버전이 시스템 메모리(144)에 있거나 처리 유니트(141 및 142)의 캐시중 하나에 있을 수 있다. 올바른 버전이 시스템의 다른 캐시중 하나에 있다면, 시스템 메모리 대신에 시스템 캐시로부터 올바른 값을 얻는 것이 필요하다.
예를 들어, 임의의 메모리 위치를 판독하려고 하는 프로세서(예를 들어, 140a)가 있다고 가정한다. 우선, 프로세서(140a)는 자신의 L1 캐시(140b)를 조사한다. 원하는 블럭이 L1 캐시(140b)내에 존재하지 않는다면,요청은 L2 캐시(140c)로 전달된다. 블럭이 L2 캐시 내에 존재하지 않는다면, 요청은 L3 캐시(140d)로 전달된다. 블럭이 L3 캐시(140d)에 존재하지 않는다면, 요청은 서비스받기 위해 범용 상호연결부143) 상에 존재하게 된다. 하나의 연산이 범용 상호연결부 상에 일단 놓이면, 모든 다른 처리 유니트들은 연산을 "스누핑"하고 블럭이 자신의 캐시에 존재하는지를 판단한다. 임의의 처리 유니트(예를 들어, 142)가 처리 유니트(140)에 의해 요청된 데이터 블럭을 자신의 L1 캐시(142a)에 갖고 있고 데이터가 변경된다면, 포함의 원칙에 의해, L2 캐시(142c)와 L3 캐시(142d) 또한 블럭 사본을 갖는다. 따라서, 처리 유니트(142)의 L3 캐시(142d)가 판독 연산을 스누핑하면, L3 캐시(142d)는 요청된 블럭이 존재하는지와 L3 캐시(142d) 내의 데이터가 변경된 것인지를 판단한다. 변경이 일어난 경우에, L3 캐시(142d)는 처리 유니트(140)에게, 판독 연산을 하고자 하는 메모리 위치의 가장 최근 변경값이 주메모리(144)를 벗어난 L3 캐시(142d)에 있고 처리 유니트(140)의 판독 요청의 서비스가 가능해지기 위해서는 적절한 동작이 수행되어야 하기 때문에, 나중에 다시 그 판독 연산을 재시도하여야 한다는 것을 알려주는 메시지를 범용 상호연결부 상에 위치시킨다.
L3 캐시(142d)는 변경된 데이터를 L3 캐시로부터 주메모리(144)에 푸시(push)하는 프로세스를 개시한다. 그 후에, 해당 메모리 위치에 대한 가장 최근 갱신값이 다른 프로세서들에게 이용가능해질 수 있다.
대안적으로, "중재(intervention)"라 불리우는 프로세스에서, L3 캐시(142d)는 해당 메모리 위치에 대한 가장 최근 갱신값을 그것을 요구한 처리 유니트(140)에 직접 보낼 수도 있다. 이 때, L3 캐시는 변경된 데이터를 L3 캐시에서 주메모리에 넣는(push) 프로세스를 개시할 수 있다. 처리 유니트(140), 구체적으로 그의 L3 캐시(140d)는 결국 범용 상호연결부 상에 판독 요청을 나타낸다. 그러나, 이 시점에서, 변경된 데이터는 처리 유니트(142)의 L1 캐시로부터 검색되었고 프로세서(140)로부터의 판독 요청이 만족될 것이다. 방금 설명한 시나리오는 흔히 "스누프 푸시(snoop push)"라 불리운다. 판독 요청이 범용 상호연결부 상에서 스누핑되고 이는 처리 유니트(142)가 해당 블럭을 계층 구조의 하부에 "푸시(push)"하도록 함으로써 처리 유니트(140)에 의해 이루어진 판독 요청을 만족시키게 된다.
주목하여야 할 핵심은 프로세서가 블럭을 판독하거나 기록하기를 원할 때에 캐시 코히런스를 유지하기 위해 그 프로세서는 자신의 소망을 다른 처리 유니트들에게 전달하여야 한다는 것이다. 이를 이루기 위해서, 캐시-코히런스 프로토콜은, 캐시 계층 구조의 각 레벨의 각 블럭과, 현재 블럭의 상태를 표시하는 상태 표시자를 연관시킨다. 상태 정보는 범용 상호연결부(143)와 캐시간 접속부(140x, 140y, 141x, 141y, 142x, 142y) 상의 메시지 트래픽을 줄이기 위해 코히런스 프로토콜에서 어느 정도의 최적화를 허용하기 위해 이용된다. 이러한 메커니즘의 한 예로서, 처리 유니트가 판독을 실행할 때, 처리 유니트는 판독이 이후에 재실행되어야 하는 것인지의 여부를 표시하는 메시지를 수신받게 된다. 판독 연산이 재시도되지 않는다면, 일반적으로 메시지는 처리 유니트로 하여금 그밖의 다른 처리 유니트가 또한 블럭의 유효한 사본을 갖고 있는지를 판단하도록 해주는 정보를 또한 포함한다 (이는 그밖의 하위 레벨 캐시들이 그들이 재시도하지 않는 임의의 판독에 대해 "공유(shared)" 또는 "비공유(not shared)" 표시를 부여하도록 함으로써 이루어진다).
이러한 방식으로, 처리 유니트는 시스템 내의 기타 다른 프로세서가 블럭의 사본을 갖고 있는지를 판단할 수 있다. 어떠한 처리 유니트도 블럭의 유효한 사본을 갖고 있지 않다면, 판독하려는 처리 유니트는 블럭의 상태를 "배타(exclusive)"라 표시한다. 블럭이 "배타"로 표시되면, 이는 어떠한 처리 유니트도 해당 블럭의 사본을 갖고 있지 않은 것이기 때문에 처리 유니트로 하여금 시스템 내의 다른 처리 유니트와 먼저 통신할 필요없이 해당 블럭을 이후에 기록할 수 있도록 허용한다. 따라서, 일반적으로, 프로세서가 상호연결부상에 이러한 의도를 먼저 전달하지 않고서도 해당 위치를 판독하거나 그 위치에 기록하는 것이 가능하다. 그러나, 이는 어떠한 프로세서도 그 블럭에 대해 관심이 없음을 코히런tm 프로토콜이 확인시켜준 경우에만 발생한다. 이번 논의에서는 설명을 간단히 하기 위해 다중 레벨 캐시 코히런스 프로토콜의 정확한 작업에 대한 세부 사항은 생략하였다. 그러나, 본 발명에 관련된 기본적인 특성을 설명하였다. 발명에 관련되지 않은 기본 특성은 본 기술 분야의 당업자들에게 잘 알려진 것들이다. 본 발명과 관련하여 또하나의 다중 레벨 캐시 구조의 특성은 할당해제(deallocation)라 알려진 연산이다. 캐시 블럭들은 "세트(sets)"라 불리우는 일군의 블럭들로 분할된다. 세트는 임의의 메모리 블럭이 존재하는 블럭 수집체이다. 임의의 메모리 블럭에 대해, 이들 블럭이 프리셋 매핑 함수(preset mapping functions)에 따라 매핑될 수 있는 캐시내의 유일한 세트가 있다. 세트내의 블럭 갯수는 캐시연관도라 불리운다 (예를 들면, 2-방식 세트 연관은, 임의의 메모리 블럭에 대해, 메모리 블럭이 매핑될 수 있는 블럭이 캐시 내에 두 블럭 있다라는 의미이다). 그러한, 주메모리 내의 여러 서로 다른 블럭들은 임의의 세트로 매핑될 수 있다.
임의의 캐시에 대한 세트 내의 모든 블럭들이 완전히 채워진 다음에 캐시가 그 완전히 채워진 세트로 매핑되는 메모리 위치에 대한 판독 또는 기록의 요청을 수신하면, 캐시는 세트내에 현재 있는 블럭중 하나를 "할당해제"하여야 한다. 캐시는 본 기술 분야의 당업자들에게 공지된 수많은 방법(최근에 가장 적게 사용한 블럭 축출(least recently used:LRU), 랜덤 슈도-LRU 등)중 하나에 의해 축출될 블럭을 선택한다. 선택된 블럭의 데이터가 변경되다면, 데이터는 메모리 계층구조에서 차하위 레벨로 기록되는데, 이는 (L1 또는 L2 캐시의 경우에는) 또다른 캐시가 되거나 (L3 캐시인 경우에는) 주메모리가 될 수 있다. 포함 원칙상, 계층 구조의 하위 레벨은 이미 기록된 변경 데이터를 유지하기 위해 이용가능한 블럭을 이미 갖고 있음을 주목한다. 그러나, 선택된 블럭의 데이터가 변경되지 않았다면, 블럭은 단순히 추출되고 계층 구조의 차하위 레벨에 기록될 필요가 없다. 계층 구조의 하나의 레벨로부터 블럭을 제거하는 프로세스를 "축출(eviction)"이라 한다. 이 프로세스가 끝나면, 캐시는 더 이상 축출된 블럭의 사본을 유지하지 않으며 더 이상 축출된 블럭에 대해 코히런스 프로토콜에 활동적으로 참여하지 않는데, 이는 캐시가 (범용 상호연결부(143) 또는 캐시간 연결부(140x, 41x, 12x, 140y, 141y, 142y에 대한) 연산을 스누핑할 때 그 블럭은 캐시 내에서 발견되지 않을 것이기 때문이다.
본 발명은 멀티프로세서 시스템에서 버스 프로토콜에 대한 변경을 요하지 않도록 단일 버스의 속성을 활용하면서 단일 공통 버스의 한계를 극복하기 위한 분산 하드웨어 구조를 개시한다. 이 시스템은 공지된 시스템 버스의 메커니즘에 대한 절충없이도 확장가능한 시스템 크기를 갖는다. 본 발명은 SMP 시스템의 많은 수의 장치들을 함께 연결할 수 있고 단일-버스 방식 설계의 한계를 극복할 수 있다.
이하에서는 6XX 버스 구조에 관련하여 본원 발명을 설명하고 있지만, 본원 발명은 이하에 제시되는 시스템은 다른 버스 구조에도 적용될 수 있기 때문에 특정 버스 구조에 제한되는 것은 아니다.
시스템 어드레스 경로 토폴로지(system address path topology)
도 4를 참조하면, 버스방식 캐시 코히런스 프로토콜을 지원하는 대칭형 멀티프로세서 시스템을 위한 분산 시스템 구조의 블럭도가 도시되어 있다. 도 4는 메모리 트랜잭션과 같은 명령을 개시할 수 있는 다수의 마스터 장치를 도시한다. 프로세서, 입출력 에이전트 및 코히런트 메모리 어댑터와 같은 마스터 장치들은 노드라 불리우는 다수의 N군의 클러스터에 분산되어 잇다. 각 노드는 그의 마스터 장치들이 연결되어 있는 노드 제어기에 의해 인솔된다.
도 4는 시스템 그룹을 포함하는 노드(410 및 420)를 도시한다. 노드 갯수는 시스템 구성에 따라 다양해질 수 있다. 노드0라 표시된 노드(410)는 프로세서 P0내지 Pp-1이라 표시된 프로세서(411-412)를 포함하며, 이들은 노드(410)의 마스터들이다. 각각의 노드 제어기는 마스터들이 분산 시스템으로 연결되는 다수의 표준 양방향 프로세서 어드레스-데이터 버스를 구비한다. 프로세서(411 및 412)는, 각각 P0버스 및 Pp-1버스로 표시된 버스(413 및 414)를 통해, 노드 제어기 NC0라 표시된 노드 제어기(415)에 접속된다. 노드n-1로 표시된 노드(420)는 프로세서(421) 및 입출력 에이전트(422)를 포함하며, 이들은 노드(420)의 마스터들이다. 프로세서(421) 및 입출력 에이전트(422)는, 각각 버스(423 및 424)를 통해, 노드 제어기 NCn-1이라 표시된 노드 제어기(425)에 접속된다. 노드당 마스터의 수는 시스템 구성에 따라 달라질 수 있으며, 각 노드에서의 마스터 갯수는 시스템의 모든 노드에 걸쳐 균일할 필요는 없다. 노드 제어기는 마스터와 시스템의 나머지 요소간에 물리적 인터페이스를 구성하고, 시스템 내의 각각의 노드 제어기는 각각의 프로세서 버스를 중재하고 그의 로컬 마스터와 또하나의 마스터 또는 슬레이브(즉, 마스터 명령을 받아들이고 이들을 실행하지만 마스터 명령을 생성하지는 않는 장치)로서 통신하기 위해 필요한 모든 로직을 포함한다. 프로세서는 그의 로컬 노드 제어기를 통해 시스템에 명령을 전송한다. 도 4는 하나의 포트당 하나의 마스터를 도시하였지만, 포트 버스에 대한 적절한 중재 계획이 주어진다면, 포트당 다수의 마스터도 가능하다. 예를 들어, 프로세서(411)는 버스(413)에 접속되는 다수의 프로세서중 하나일 수 있다. 그러나, 다수의 프로세서들이 하나의 포트에 접속된다면, 이들의 어드레스 버스는 버스 사이클 시간 측면에서 보다 느리게 수행할 것이다.
대안적으로, 노드(420)의 마스터들중 하나는 캐시 코히런스를 유지하는 또다른 데이터 처리 시스템과의 통신을 제공하는 코히런트 메모리 어댑터를 포함할 수 있다. 코히런트 메모리 어댑터는 근접하여 있거나 떨어져 있을 수 있으며, 입출력 에이전트와 유사한 방식으로 마스터/슬레이브 장치로서의 역할을 수행하기 위해 메모리 트랜잭션을 보내고 받기 위해 노드 제어기의 하나의 포트를 차지할 수 있다. 하나의 예로서, 또다른 데이터 처리 시스템의 또다른 노드 제어기가 또한 코히런트 메모리 어댑터에 연결되어 본 발명을 적용하는 데이터 처리 시스템이 함께 연결될 수도 있다.
노드 제어기(415 및 425)는 한 쌍의 단방향 어드레스전용 버스를 통해 어드레스 스위치(ASX)라 불리우는 장치에 연결될 수 있다. 또한, AOut0및 AIn0라 각각 표시된 버스(416 및 417)들이 노드 제어기(415)를 어드레스 스위치(430)에 연결시킨다. 또한, AOutn-1및 AInn-1이라 표시된 버스(426 및 427) 각각은 노드 제어기(425)를 어드레스 스위치(430)에 연결시킨다. 도시된 바와 같이, 버스(AOutx)는 노드 제어기로부터 어드레스 스위치로 어드레스를 운반하며, 버스(AInx)는 어드레스 스위치로부터 노드 제어기로 어드레스를 운반한다.
또한, 어드레스 스위치(430)는, 메모리 제어기 또는 MS0내지 MSs-1로 표시된 메모리 서브 시스템(442 내지 444)으로 접속되는, AInx및 AIn(n+s-1)이라 표시된, 단방향 어드레스 버스 접속(431 및 432)을 부가적으로 갖는다. 메모리 제어기는 슬레이브 장치로서 가정되며 분산 시스템으로 명령을 발송하는 능력은 없다. 메모리 서브시스템의 갯수는 시스템 구성에 따라 다양해질 수 있다.
시스템 데이터 경로 토폴로지
이제 도 5를 참조하면, SMP 시스템 내의 데이터 경로 관점에서 버스식 캐시-코히런스 프로토콜을 지원하는 SMP 시스템용 분산 시스템 구조가 도시되어 있다. 도 4와 유사하게, 도 5는 다수의 마스터 장치를 도시한다. 이러한 마스터 장치들은 노드라 불리우는 다수의 N군의 클러스터에 분산되어 있다. 각각의 노드는 그의 마스터가 접속되어 있는 노드 제어기에 의해 인솔된다. 도 5는 프로세서(511 및 512)를 포함하는 노드(510 및 520)를 도시한다. 프로세서(511 및 512)는 버스(513 및 514)를 통해 노드 제어기(515)에 접속된다. 노드N-1이라 표시된 노드(520)는 버스(523 및 524) 각각을 통해, 노드 제어기 NCN-1이라 표시된, 노드 제어기(525)에 접속되는 프로세서(521)및 입출력 장치(520)를 포함한다.
도 4 및 도5에 도시된 노드 제어기는 물리적으로 동일한 시스템 구성요소일 수 있지만 노드 제어기에 의해 수행되는 상이한 기능성을 보여주시기 위해 서로 다른 관점에서 설명된다. 도 4는 SMP 시스템 내의 어드레스 경로를 보여주지만, 도 5는 SMP 시스템 내의 데이터 경로를 보여준다. 대안적으로, 바람직한 실시예에서, 어드레스 경로와 데이터 경로는, 노드 데이터 제어기 또는 노드 어드레스 제어기와와 같이 물리적으로 별개의 구성요소, 칩, 또는 회로로서 기능을 지원하도록 구현될 수도 있다. 노드 제어기를 구현하는데 있어서 데이터 및 어드레스 기능을 분리하거나 결합하는 선택사항은 다른 시스템 구성요소들의 파라미터에 따라 달라질 수 있다. 예를 들어, 시스템 내에서 지원되는 버스 크기가 충분히 작다면, 어드레스 및 데이터 기능은 하나의 노드 제어기 구성요소 내에 배치될 수 있다. 그러나 버스가 128 데이터 비트를 지원한다면, 핀의 한계로 인해 어드레스와 데이터 기능을 별개의 노드 제어기 구성요소 내에 배치하는 것이 물리적으로 요구된다.
대안적으로, 별개의 노드 데이터 제어기는 또한 노드당 다수의 노드 데이터 제어기로 분리되어 각각의 노드 데이터 제어기가 노드의 데이터 경로의 일부분에 대한 지원을 제공할 수 있다. 이러한 방식에서, 노드의 데이터 경로는 하나 이상의 노드 데이터 제어기에 걸쳐서 나뉘어진다.
도 5에서, 각각의 노드 제어기는 메모리 서브시스템 MS0및 MSS-1과 같은 다수의 메모리 제어기에 접속되는 것으로 도시되어 있다. 각각의 노드 제어기가 독립적인 데이터 버스를 통해 각각의 메모리 제어기에 접속되는 것으로 도시되어 있지만, 적절한 중재 메커니즘이 포함된다면 다수의 노드 및/또는 다수의 메모리 제어기들은 동일한 데이터 버스 상에 접속될 수 있다. 다수의 마스터 장치들을 하나의 버스를 통해 하나의 노드 제어기에 접속시키는 데에 있어서, 스위칭 속도는 버스에 접속되는 장치 갯수와 상관 관계에 있다. 노드 제어기(515)는 N0D0라 표시된 데이터 버스(516)를 통해 메모리 서브시스템(542)에 접속되고 N0DS-1이라 표시된 버스(517)를 통해 메모리 서브시스템(544)에 접속된다.
모든 마스터에 속하는 데이터를 전송하기 위해, 단일 데이터 버스를 이용하는 대신에 다수의 데이터 버스들을 이용하면, 이들 각각은 마스터들이 단일 버스에 접속되었다면 담당하였어야 할 데이터 트래픽의 작은 부분만을 담당하게 된다. 그렇게 함으로써, 구성요소 인터페이스는 단일 버스에서 가능한 것보다 더욱 빨리 클럭킹될 수 있다. 이러한 구성은 단일 버스에서 가능한 것보다 마스터당 더 많은 데이터 버스 대역을 할당하는 것을 가능하게 하고, 따라서 큐 지연을 감소시키기게 된다.
노드 제어기 내부 어드레스 경로
도 6을 참조하면, 노드 제어기 내부의 어드레스 경로를 도시한 블럭도가 도시되어 있다. NCX라 표시된 노드 제어기(600)는 도 4에 도시된 노드 제어기(415 및 425) 또는 도 5에 도시된 노드 제어기(515 및 525)와 유사하다, 노드 제어기(600)의 개별적인 부분들은 마스터로부터의 명령이 노드 제어기에 들어올 때 명령을 일시 저장하기 위해 그 자신의 큐(queue)를 포함한다. 명령은 버퍼에서 어드레스 스위치로 진행하도록 선택되기를 기다리는 동안에 미-결정 지연이 발생할 수 있다.
노드 제어기(600)는 마스터 장치에 접속하는 단방향 버스(601 내지 604)를 구비하고 있다. 버스(601 내지 604)는 트랜시버(605 내지 608)를 통해 입력 경계 래치(609 내지 612) 및 출력 경계 래치(613 내지 616)를 포함한다. 입력 경계 래치(609 내지 612)는 마스터 장치로부터의 명령을 저장하는 버퍼(617 내지 620)에 공급된다. 마스터로부터의 명령은, 트랜잭션 태그(transaction tag), 트랜잭션 종류, 목표 및 원천 어드레스, 및 그밖에 가능한 관련 정보로 이루어진다. 버퍼(617 내지 620)는 필요하다면 명령에 관련된 모든 정보를 포함하거나, 대안적으로, 노드 제어기내의 어드레스 경로 기능에 필요한 정보만을 포함할 수 있다. 입력 버퍼에 유지되는 정보는 노드 제어기의 선택가능한 구성에 따라 달라질 수 있다. 버퍼(617 내지 620)는, 래치(622), 전송부(623) 및 AOutX라 표시된 버스(624)를 통해, 어드레스 스위치에 보내어질 명령어를 한번에 하나씩 선택하는 제어유니트/멀티플렉서(621)에 공급된다.
노드 제어기(600)는 버스(601 내지 604)를 통해 마스터로부터 명령를 수신하고 수신된 명령을 궁극적으로는 경계 래치(622) 및 전송부(623)를 거쳐 AOutX라 표시된 버스(624)를 통해 어드레스 스위치에 보내는 역할을 한다. 이에 상응하여, ,노드 제어기(600)는, 버스 AInX라 표시된 버스(625)와 FROM_ASX_BL이라 표시된 경계 래치(627)의 데이터 획득을 위한 수신기(626)를 통해 어드레스 스위치로부터 명령어를 수신한다. 이들 명령은, 버스(601 내지 604)에 도달하기 이전에, 중간 래치(628) 및 출력 경계 래치(613 내지 616)와 같은 고정 지연을 갖는 고정된 수의 래치를 거치는 어드레스 경로를 따른다. 부가적으로, 마스터 장치들에 대한 명령은, 역시 고정된 지연을 갖는 제어 유니트/멀티플렉서(629 내지 632)와 같은, 포트당 멀티플렉서를 통과한다. 이에 따라, 버스(625)를 통해 도착하는 명령은 경로를 따라 결정된 사이클 수의 고정 지연 기간을 수반하며 경로를 거쳐간다. 다시 말하면, 명령이 래치 FROM_ASX_BL에 도달하는 시점과 노드 제어기에 연결된 일단의 프로세서와 같은 각각의 마스터 장치에 도착 명령으로서 도달하는 시점간에 고정된 기간의 시간이 있다.
마스터들에 연결되는 포트들을 위한 중재기는 포트 버스를 구동하는 노드 제어기에 가장 높은 우선 순위를 부여한다. 노드 제어기가 버스를 구동시키려는 것과 동시에 마스터에 버스를 구동시키고자 하는 요청을 한다면, 노드 제어기에 높은 우선 순위가 주어진다. 바람직한 실시예에서, 이러한 중재 시나리오를 보조하기 위해, (미도시된) "스누프밸리드(SnoopValid)"라 불리우는 신호가 어드레스 스위치에 의해 보내어진 명령어에 앞서 어드레스 스위치에 의해 제공된다. 이로써, 노드 제어기와 그의 마스터간의 버스 액세스에 대한 중재는 AInX버스를 통해 어드레스 스위치로부터 도착하는 명령이 노드 제어기에 있는 동안 단 하나의 사이클도 멈추도록 하지 않을 만큼 충분히 신속하게 이루어질 수 있다. 이는 AInX에서 PX버스 경로를 따라 있는 고정된 수의 래치에 대한 시간 기간이 결정된 수의 사이클로 해결되도록 보장해준다.
또한, 제어 논리 유니트(633)에, 노드 제어기(600) 내의 다른 유니트 또는 구성요소로의 제어 신호에 대한 적절한 판단을 위해, FROM_ASX_BL로 래치되는 인입 명령이 제공된다. 예를 들어, 제어 논리 유니트(633)는 제어 신호(634)를 통해 버퍼(617 내지 620)과 통신하고 제어 신호(636)를 통해 제어 유니트/멀티플렉서(621)과 통신하고 제어 신호(635)를 통해 제어 유니트/멀티플렉서(629 내지 632)와 통신함으로써, 명령을 선택하고 충돌을 해결하고, 노드 제어기(600)내의 연속적인 명령 흐름을 보장하기 위해, 필요하면, 명령의 형태를 포함하는 명령 필드를 수정한다. 또한, 제어 논리 유니트(633)는 적절하게 그밖의 다른 신호(637)를 수신한다.
어드레스 스위치 내부 어드레스 경로
도 7을 참조하면, 노드 제어기와 메모리 서브시스템을 연결하는 어드레스 스위치의 내부 어드레스 경로가 도시되어 있다. 어드레스 스위치(700)는 4개의 노드 제어기 집합과 2개의 메모리 서브 시스템을 연결한다. 명령은, 수신기(709 내지 712)와 입력 경계 래치(713 내지 716)를 통해, AOut0내지AOut3이라 표시된 버스(701 내지 704)로부터 선입선출(FIFO) 큐(721 내지 724)에 도착한다. 이들 명령은 제어 유니트/멀티플렉서(725)에 의해 선택될 때까지 FIFO 내에 존재한다. 명령은 FIFO에 있는 도안에 유한하지만 미결정된 사이클 수만큼의 지연 기간을 겪을 수 있다. 제어 논리 유니트(726)는 인입 명령의 선택을 결정하기 위해 제어 유니트/멀티플렉서(725)와 FIFO(721 내지 724)와 통신한다. 제어 논리 유니트(76)는 또한 적절하게 그밖의 다른 제어 신호(733)를 수신한다.
제어 유니트/멀티플렉서(725)는 지연 사이클의 갯수 관점에서는 결정된 것이라 할 수 있는 경로를 따라 노드 제어기 및 메모리 서브시스템으로 브로드캐스트될 명령을 한번에 하나씩 선택한다. 도7에 도시된 예에서, 명령은, 출력 경계 래치(727 및 728)와 전송기(729 및 730)를 거쳐, 버스 AIn4및 AIn5라 표시된 단방향 버스(731 내지 732)를 통해 메모리 서브 시스템에 보내어진다. 명령은, 출력 경계 래치(717 내지 720)와 전송기(741 내지 744)를 거쳐, 버스 AIn0및 AIn3이라 표시된 단방향 버스(705 내지 708)를 통해 메모리 서브 시스템에 보내어진다. 이 예에서, 출력 경계 래치(717 내지 720, 727 및 728)에 단 하나의 지연 사이클이 존재한다.
전술한 도 4 내지 도 7에 대한 설명으로부터, 트랜잭션은 마스터 장치에 의해 자신의 버스 및 포트를 통해 자신의 노드 제어기로 발송된다는 것을 이해할 것이다. 노드 제어기는 버스를 통해 마스터 장치에 즉각적인 형태의 응답을 제공하고 시스템 나머지 부분으로의 후속 발송을 위해 트랜잭션을 대기시킬 수도 있다. 일단 트랜잭션이 시스템의 나머지 부분에 발송되면, 어드레스 스위치는 다른 장치들이 이 트랜잭션을 스누핑할 수 있도록 트랜잭션이 이미 알려진 전파 지연을 갖고 시스템의 나머지 부분에 브로드캐스팅되도록 해준다.
본 발명의 분산 시스템 구조에 따르면, 시스템 내의 각각의 장치들은 동일한 사이클 내에서 트랜잭션을 볼 수 있으며 동일한 사이클 내에 일관성 응답을 제공한다. 어드레스 스위치는, 트랜잭션을 발송한 장치를 포함하는 노드의 노드 제어기를 포함하여, 모든 노드 제어기에 트랜잭션을 브로드캐스팅할 수 있다. 적절한 로직이 각각의 노드 제어기에 내포되어 노드 제어기는 스누핑되는 인입 트랜잭션이 원래 자신의 포트중 하나에 있는 장치에 의해 발송된 것인지를 판단할 수 있다. 그렇다면, 노드 제어기는 이 트랜잭션을 발송한 포트상의 버스가 그 포트로부터 수신된 트랜잭션을 스누핑하지 않도록 해준다. 그렇지 않으면, 장치는 자신의 트랜잭션을 스누핑함으로써 "혼동"에 빠질 수 있다. 장치가 자신의 트랜잭션에 대한 스누프를 수신하게 된다면, 그 장치는 자신의 원 트랜잭션과의 충돌을 표시하는 응답을 발송할 수 있다. 그런 경우에, 원 트랜잭션이 실질적으로 스누핑된 트랜잭션이므로 "충돌"은 영원히 해결될 수 없을 것이며, 트랜잭션은 영원히 완료될 수 없을 것이다.
트랜잭션이 발송되고 완료되는 방식에 대해서는 이하에서 상세히 설명하겠다.
메모리 서브 시스템 내부 어드레스 경로
도 8을 참조하면, 본 발명의 분산 시스템의 어드레스 스위치에 접속되어 있는 메모리 서브시스템이 도시되어 있다. 도 8은, 메모리 서브 시스템 MSx 라 표시된, 메모리 서브시스템(800)을 도시한다. 메모리 서브 시스템(800) 내의 메모리 제어기(801)는, 다수의 래치 FD(803, 래치는 고정된 지연 파이프에 불과함)를 거쳐, 버스 AInx라 표시된 단방향 버스(802)를 통해 어드레스 스위치로부터 명령을 수신한다. 이러한 방식에 의해, 어드레스 스위치에 의해 전송된 명령은 명령이 메모리 제어기에 이용가능해지기 이전에 고정된 수의 지연 사이클을 겪게 된다.
이전에 보여준 바와 같이, 버스 AInx를 통해 노드 제어기에 도착하는 명령은 FROM_ASX_BL 내에서 포착되는 것으로부터 마스터 장치에 나타나기 까지 결정된 지연 경로(deterministic delay path)를 거친다. 유사한 방식으로, 명령은 어드레스 스위치 내의 제어 유니트/멀티플렉서로부터 메모리 서브시스템 내의 고정 지연 파이프에 이르기까지 결정된 지연 경로를 거친다. 메모리 서브 시스템 내의 래치 FD(803)의 지연이 적절한 값으로 조정된다면, 메모리 제어기에 명령이 제공되는 시점과 노드 제어기의 포트에 접속되어 있는 마스터들에 동일한 명령이 제공되는 시점을 동일하게 보장할 수 있다. 따라서, 어드레스 스위치 내의 제어 유니트/멀티플렉서가 트랜잭션을 브로드캐스팅하는 시점과 마스터 및 메모리 제어기가 명령을 수신하는 시점간에 결정된 수의 사이클이 존재한다.
단지 적은 수의 마스터들만이 노드 제어기의 각 포트에 접속되기 때문에, 이들 포트에 접속되는 각각의 버스가 작동되는 속도는 시스템의 전체 포트 개수와 무관하다. 예를 들어, 하나의 마스터가 각 포트에 접속되어 있다면, 버스는 포인트-대-포인트 모드에서 최상의 가능한 속도로 동작될 수 있다. 따라서, 본 발명의 분산 구조는 멀티프로세서들에 대해 이해가 잘되고 검증이 용이한 버스식 캐시 코히런스 프로토콜을 개산(槪算)할 수 있으므로 시스템의 대역폭을 높인다.
노드 제어기 내부 데이터 경로
이제, 도 9를 참조하면, 노드 제어기 내부의 데이터 경로가 도시되어 있다. NCx라 표시된 노드 제어기(900)는 도 4의 노드 제어기(415, 425) 및 도 5의 노드 제어기(515, 525)와 유사하다. 노드 제어기(900)의 개별 포트들은 데이터가 노드 제어기에 들어 올 때 마스터로부터의 데이터를 일시 저장하기 위해 그들 자신의 큐를 갖는다. 데이터는 목적지를 향하여 전진하기 이전에 이들 버퍼에서 대기하면서 미결정된 지연 손실을 입을 수 있다.
노드 제어기(900)는 마스터 장치에 접속하는 PxBus라 표시된 양방향 버스(901 내지 904)를 갖는다. 버스(901 내지 904)는 버스 트랜시버(905 내지 908)를 통해 입력 경계 래치(909 내지 912) 및 출력 경계 래치(913 내지 916)에 접속된다. 입력 경계 래치(909 내지 912)는 마스터 장치로부터의 데이터를 보관하는 데이터 버퍼(917 내지 920)에 공급한다.
노드 제어기 포트중 하나로부터 들어오는 인입 데이터는 메모리 서브 시스템 또는 또다른 캐시로 향할 수 있다. 도 6에 도시된 예에 연속하여,도 9에 도시된 예를 보면, 노드 제어기 포트중 하나로부터 입력되는 인입 데이터는 다음의 세가지 위치, 즉, 메모리 서브 시스템 MS0, 메모리 서브 시스템 MSs-1, 또는 노드 내에서 데이터를 진행시키기 위해 캐시간 선입선출버퍼(FIFO C2C)중 하나로 향한다. FIFO C2C 기법에 의하면, 각 노드는 그의 포트중 하나로부터 다른 포트로 데이터를 전송할 수 있으며, 이에 따라 하나의 마스터로부터 다른 마스터로의 데이터 전송을 가능하게 한다. 버퍼(917 내지 920)는 데이터를 진행시키기 위해 데이터 소스를 선택하는 멀티플렉서(925 내지 927)에 (데이터를) 공급한다. 제어 논리 유니트(939)는 제어 신호를 제공하여 멀티플렉서(925)가 메모리 서브 시스템 MS0에 보내어질 데이터를 선택하도록 하고 멀티플렉서(926)가 메모리 서브 시스템 MSs-1에 보내어질 데이터를 선택하도록 한다. 노드 제어기(900)는 멀티플렉서(925 및 926)로부터 경계 래치(931 및 933)와 트랜시버(935 및 936)를 거쳐 NxD0및 NxDs-1이라 표시된 양방향 버스(937 내지 938)를 통해 메모리 서브 시스템 MS0및 메모리 서브 시스템 MSs-1로 데이터를 전송한다. 제어 논리 유니트(939)는 제어 신호를 제공하여 멀티플렉서(927)가 노드 내에 진행될 데이터를 선택하도록 한다. 그 후에, 데이터는 FIFO(928)에 저장된다.
이에 상응하는 방법으로, 노드 제어기(900)는 양방향 버스(937 및 938)를 통해 메모리 서브 시스템 MS0및 메모리 서브 시스템 MSs-1로부터 트랜시버(935 및 936)과 경계 래치(932 및 934)를 거쳐 데이터를 수신한다. 그 후에 데이터는 적절한 FIFO(929 및 930)에 저장된다. FIFO(928 내지 930)으로부터의 데이터는 제어 유니트/멀티플렉서(921 내지 924)와 같은 포트마다의 멀티플렉서를 통과한다. 또한, 제어 논리 유니트(939)는, 적절한 때에, 기타 제어 신호를 수신한다. 따라서, 노드 제어기는 데이터 버스에 대한 중재 로직을 포함하며 병렬로 데이터 전송을 제어하는 면에서 자기-만족(self-sufficient)된다. 이에 의하면, 본원 발명의 분산 시스템 구조는 시스템의 데이터 처리량을 향상시킬 수 있다.
응답결합블록(Response Combination Block:RCB)
도 10a 내지 10b를 참조하면, 도 4 및 도에 도시된 구조와 유사한 분산 시스템 구조에 대한 버스 응답 신호를 판단하기 위한 시스템 구조의 블록도가 도시되어 있다. 도 10a 내지 도 10b는 각각 버스 신호 (응답) AStat 신호와 AResp를 결합하기 위한 제어 논리 블록과 본원 발명의 분산 시스템 구조의 장치들의 연결을 도시한 것이다. 명료함을 위해, AStat 신호와 AResp 신호는 별개로 도시하였다. 입출력 에이전트들은 도 10a 및 도 10b에 도시된 노드 제어기의 포트에 연결된 마스터 장치로서의 역할을 할 수도 있음을 다시 한번 주목하기 바란다.
도 10a에 도시된 바와 같이, Px라 표시된 프로세서(1001 내지 1004)는 PxNxStOut이라 표시된 단방향 AStatOut 신호(1005 내지 1008)와 PxNxStIn이라 표시된 AstatIn 신호(1009 내지 1012)를 구비함으로써, 프로세서를 응답결합블럭(RCB, 1000)에 연결시킨다. MSx라 표시된 메모리 서브 시스템(1005 및 1006)과 같은 슬래이브 장치는 Mx_AStOut라 표시된 AStatOut 신호(1013 및 1014)와 Mx_AStIn이라 표시된 AStatIn 신호(1015 및 1016)으로 RCB와 접속한다. NCx라 표시된 노드 제어기(1017 및 1018)는 유사한 집합의 NxPxAStOut라 표시된 포트당 단방향 AStatOut 신호와 NxPxAStIn이라 표시된 AStatIn 신호(1023 내지 1026)를 통해 RCB에 접속한다. ASX라 표시된 어드레스 스위치(1027)는 브로드캐스팅 신호(1028) 및 트랜잭션 소스 ID(1029)를 공급함으로써 시스템이 트랜잭션을 처리하기 위한 적절한 로직을 판단하는데 참여한다. 트랜잭션 소스 ID(1029)는 노드 식별자와 마스터 장치에 의해 발송된 트랜잭션이 시스템으로 갈 때 거치는 노드 내의 포트 식별자를 함께 인코딩한 것이다.
도 10b에 도시된 바와 같이, 프로세서(1001 내지 1004)는 PxNxAReOut이라 표시된 단방향 ARespOut 신호(1055 내지 1058)와 PxNxAReIn라 표시된 ARespIn 신호(1059 내지 1062)를 이용하여 프로세서를 RCB(1000)에 접속시킨다. 메모리 서브시스템(1005 및 1006)은 Mx_AReIn라 표시된 ARespIn 신호(1065 내지 1066)로써 RCB에 접속한다. 메모리 서브시스템(1005 및 1006)은 ARespOut 라인과 접속하지 않으며, 이는 이들 슬레이브 장치에 의해 구동되지 않는다. 또한, 노드 제어기(1017 및 1018)은 유사한 NxPxAReOut이라 표시된 포트당 ARespOut 신호 집합(1069 내지 1072)과 NxPxAReIn이라 표시된 포트당 ARespIn 신호 집합(1073 내지 1076)을 통해 RCB에 접속한다. 또한, 어드레스 스위치(1027)는 브로드캐스트 신호(1028) 및 트랜잭션 포트 ID(1029)를 공급함으로써 트랜잭션의 적절한 로직을 판단하는데 참여한다.
도 10a 및 10b로부터 명백히 알 수 있는 바와 같이, 마스터 장치로/로부터의 AStatIn/AstatOut 신호와 ARespIn/ARespOut 신호 집합은 이에 유사한 노드 제어기로/로부터의 StatIn/AstatOut 신호와 ARespIn/ARespOut 신호 집합과 한 쌍으로 되어 있다. 이러한 쌍은 포트마다 이루어져 있다. 전술한 바와 같이, 상기 예에서 각 포트는 각 포트에 하나의 마스터 장치가 접속되는 것으로 도시되어 있다. 그러나, 포트마다 하나 이상의 마스터 장치가 접속되었다면, AStatIn/AStatOut 신호 및 ARespIn/ARespOut 신호쌍은 표준 단일 버스 구성에서와 같이 그 포트에 접속되어 있는 일단의 마스터 장치에 의해 이용된다.
바람직한 실시예에서, RCB는 다양한 소스 장치들로부터 AStatOut과 AResoOut 신호를 결합하여, 6XX 버스 사양당 AStatIn 및 ARespIn 신호를 생성한다. 이는 IBM 서버 그룹 파워 PC MP 시스템 버스 설명서 (버전 5.3)에 기재되어 있으며, 이는 본 명세서의 일부로서 참조된다. RCB는 AStatOut 및 ARespOut 신호를 수신하고 각각 AStatIn 및 ARespIn 신호로 응답한다. 모든 장치들이 특정 트랜잭션에 대해 동일한 응답을 수신하는 것은 아니다. 각 장치에 의해 수신된 신호는, 이하에서 좀더 상세하게 설명하는 바와 같이, 하나의 사이클 단위로 판단된다.
로컬(LOCAL)/글로벌(GLOBAL) 사이클
임의의 주어진 사이클동안, 임의의 포트에서의 마스터 장치가 노드 제어기로부터 수신하기 위해 그의 포트 버스 사에 트랜잭션을 발송하거나, 노드 제어기가 마스터 장치에 어드레스 스위치에 의해 전송되어 온 트랜잭션을 제공함으로써 트랜잭션을 스누핑할 수 있다. 마스터 장치가 트랜잭션을 발송할 때의 사이클은 "로컬"이라 표시하고 노드제어기가 트랜잭션을 제공할 때의 사이클을 "글로벌"이라 표시한다.
전술한 바와 같이, 어드레스 스위치는 모든 노드 제어기에 한번에 하나의 트랜잭션을 브로드캐스트하고, 어드레스 스위치가 이러한 트랜잭션을 발송하는 시점과 그것이 각 노드 제어기의 포트에 나타나는 시점간에는 고정된 기간만큼의 지연이 있다. 이러한 체제하에서는, 노드 제어기가 어드레스 스위치로부터 브로드캐스트 트랜잭션을 수신한 후에, 선정된 사이클 수가 경과하고 나서 이후의 단일 사이클동안 노드 제어기의 포트의 버스 상에 장치들로의 트랜잭션이 나타나면, 모든 노드 제어기들은, 하나의 예외만 제외하면, 이에서 설명되는 바와 같이 동일한 사이클 중에 모든 포트상에 동일한 동작을 수행한다. 따라서, 포트중 하나의 버스상에서 실행되는 글로벌 사이클이 있다면, 글로벌 사이클은 시스템 내의 모든 포트 사에서 실행되는 것이다. 모든 잔여 사이클은 로컬 사이클이다.
로컬 사이클동안, 포트에서의 활동은 시스템 내의 또다른 포트에서의 활동과 연관이 없다. 장치가 트랜잭션을 발송할 필요가 있는지의 여부에 따라 로컬 사이클이 사용 상태 또는 휴지 상태로 될 것이다. 따라서, 트랜잭션이 시스템 내의 모든 장치에 의해 스누핑될 때 글로벌 사이클이 발생하고 장치가 트랜잭션을 발송하기 위해서는 단지 로컬 사이클만이 이용될 것이다.
로컬 대 글로벌 사이클 동안의 RCB 동작
전체 시스템의 사이클들이 로컬 또는 글로벌로 "채색된다(colored)"고 가정할 때, 응답 생성, 응답 결합 및 응답 수신 사이클은 트랜잭션 발송후에 후속적으로 지정된 수의 사이클 경과 후에 발생하며, 이들은 유사하게 로컬 응답 윈도우 또는 글로벌 응답 윈도우로 표시된다. 이러한 이유에 의해, RCB 응답 결합 기능은 이에 상응하여 주어진 사이클동안 로컬 모드인지 또는 글로벌 모드인지가 고려된다. 로컬 사이클동안, RCB는 하나의 포트 단위로 응답을 결합한다. 즉, RCB는 포트의 응답과 그 포트에 대응하여 노드 제어기가 생성하는 응답을 결합한다. 글로벌 사이클동안, RCB는 시스템 내의 모든 포트들과 노드 제어기들로부터의 응답을 결합한다(단, 이하에서 설명하겠지만 단 하나의 포트에 대해서는 예외이다).
로컬과 글로벌 결합 모드간의 적절한 스위칭을 달성하기 위해, RCB는, 도 10a의 브로드캐스트 신호(1028)와 트랜잭션 소스 ID 신호(1029)로서 도시된 바와 같이, 어드레스 스위치에 의해 노드 제어기에 트랜잭션의 브로드캐스트를 지시하는 신호를 제공받는다. RCb에 저장된 구성 정보는 브로드캐스트 신호가 도착한 후에 브로드캐스트 트랜잭션을 위해 응답 결합이 수행될 정확한 사이클을 나타낸다. 이러한 방식에 의하면, 각각의 글로벌 사이클에 대해, RCB는 적절한 소스로부터의 응답을 결합하기 위해 잘 결집된다.
제1 사이클 대 제2 사이클
프로세서는 로컬 사이클동안에만 트랜잭션을 발송할 수 있다. 임의의 종류의 트랜잭션의 경우에, 프로세서는 트랜잭션을 단 한번만 발송한다. 임의의 다른 종류의 트랜잭션의 경우에, 프로세서는 트랜잭션을 여러번 발송하도록 요구받을 수 있다. 프로세서는 수행할 동작에 관하여, AStatIn/Astatout 신호 및 ARespIn/ARespOut 신호를 이용함으로써, 그의 노드 제어기 및 RCB에 의해 지시받는다.
프로세서가 처음에 트랜잭션을 발송하는 로컬 사이클을 "제1 로컬 사이클(primary local cycle)"이라 표시하는 반면에 기타 모든 사이클은 "제2 사이클"이라 표시한다. 6XX 버스 구조에서, 제2 트랜잭션은 "1"로 설정되는 "R"로서 마크된다. 즉, 응답관련 사이클은 트랜잭션 발송에 대응하여 적절한 방식으로 제1 또는 제2로 표시된다.
시간 및 공간적으로 분산된 방식으로 스누핑하는 것에 의해 코히런스 달성
전술한 설명으로부터, 프로세서 및 장치들은 시스템에 발송된 사이클과는 상이한 사이클동안 다른 프로세서 및 장치들로부터의 트랜잭션을 보게 된다는 것은 명백히 이해될 것이다. 이는 시스템 내의 모든 장치들이 트랜잭션이 발송되는 시점과 동시에 이를 관찰하고 이와 동시에 트랜잭션에 대한 코히런스 응답을 생성하며 트랜잭션 발송자는 동시에 응답을 수신하는 단일 버스 환경에서의 스누핑 프로토콜과는 상황이 다르다. 따라서, 현재 시스템에서, 코히런스를 달성하는 것은 시간 및 공간적으로 분산된다. 즉, 다수의 사이클 및 다수의 노드 제어기에 접속된 다수의 버스에 걸쳐 분산된다.
분산 시스템 구조를 사용하는데 있어서, 효과적인 방식으로 글로벌 코히런스를 달성하는 것이 중요하다. 이를 위해, 모든 트랜잭션들은 다음의 개 카테고리, 즉, (1) 글로벌 코히런스 응답의 예측이 가능하고 제1 응답 윈도우 내에 응답을 전달할 수 있는 트랜잭션과 (2)궁극적인 코히런스 응답이 계산되기 이전에 글로벌하게 스누핑할 필요가 있는 트랜잭션으로 정렬된다.
첫 번째의 경우에, 노드 제어기는 트랜잭션을 수신하고 발송한 객체에게 제1 응답 윈도우 내에 글로벌 코히런스 응답을 내보낸다. 그런 후에, 노드 제어기는 나중에 시스템 내에서 트랜잭션을 완료하는 것과 글로벌 응답을 달성하는 것에 대한 모든 책임을 진다.
두 번째의 경우에, 노드 제어기는 세 단계를 취한다. 첫째, 노드 제어기는 트랜잭션을 수신하고 글로벌 응답의 완료 및 전달을 지연한다는 것을 나타내는 제1 응답을 전달한다. 6XX 버스 구조에서, 이러한 응답은 "재실행(rerun)" 응답에 해당한다. 두 번째, 그 후에 노드 제어기가 트랜잭션에 대한 글로벌 코히런스 응답을 달성한다. 세 번째, 노드 제어기는 프로세서가 제2 트랜잭션을 발송할 것을 요청하고 제2 응답 윈도우 동안에 글로벌 응답을 전달한다. 6XX 버스 구조에서, 프로세서에게 제2 트랜잭션을 발송하라는 요청은 프로세서에게 원래 트랜잭션에 대응하는 태그와 함께 재실행 명령을 발송함으로써 이루어진다. 그러면, 프로세서는 태그를 이용하여 어떠한 트랜잭션이 재실행되어야 하는지를 식별할 수 있다.
재실행 명령 및 제2 응답
전술한 바와 같이, 장치로부터 수신된 트랜잭션은 시스템의 나머지 부분에서 스누핑된다. 스누프동안, 트랜잭션을 발송한 장치는 스누핑되지 않기 때문에 장치는 자신의 트랜잭션을 스누핑함으로써 발생하는 혼동은 겪지 않는다.
사실상, 전술한 첫 번째 경우의 트랜잭션에 대해, 즉, 노드 제어기가 트랜잭션을 수신하고 제1 응답 윈도우 내에 발송 객체에게 글로벌 코히런스 응답을 내보내는 경우에, 트랜잭션을 발송한 장치에 대응하는 포트는 트랜잭션의 스누프 사이클 동안에 로컬 모드로 유지되므로 프로세서가 또다른 트랜잭션을 발송할 수 있다. 전술한 바와 같이, 트랜잭션의 스누프 사이클에 대응하는 응답 윈도우 동안, RCB는 트랜잭션을 발송한 노드 제어기의 포트 이외의 모든 소스로부터의 응답을 결합한다. 그런 후에, 노드 제어기는 프로세서가 트랜잭션을 발송할 것을 선택하면 포트에 제1 또는 제2 응답을 공급할 수 있다.
전술한 두 번째 경우의 트랜잭션, 즉, 궁극적인 코히런스 응답이 계산되기 이전에 글로벌하게 스누핑될 필요가 있는 트랜잭션에 대해서는, 노드 제어기가 로컬 모드에 특정 포트를 유지하지만 그것에 재실행 트랜잭션을 발송한다. 포트의 인출 경계 래치가 공급하는 제어 유니트/멀티플렉서는 노드 제어기가 이러한 기능을 달성할 수 있도록 해준다.
대안적으로, 노드 제어기는 공격적으로 하는 것을 선택하지 않을 수 있으며, 장치로 하여금 트랜잭션을 발송하도록 하는 대신에, 노드 제어기 자신이, 필요한 경우에, 장치의 트랜잭션이 시스템의 나머지 부분에서 스누핑되는 사이클 동안에 그 장치에 무효(null) 또는 재실행 트랜잭션을 발송할 수 있다.
도 10c 내지 10d를 참조하면, 신호가 로컬 및 글로벌 사이클에 참여하는 구성 요소들의 블록도를 도시하고 있다. 도 10c는 글로벌 사이클 동안에 RCB에 의해 고려되는 신호들을 보여준다. 도시된 예에서, 단일 마스터 장치, 프로세서(1001)에 대한 신호는 RCB가 글로벌 응답을 위해 다른 장치, 노드 제어기 및 메모리 서브시스템으로 보내어질 적합한 신호를 판단하는데 참여하지 않는다. 프로세서(1001)에 대한 신호는, 이에 대응하는 신호로서 역시 글로벌 응답에 고려되지 않는, 노드 제어기로부터의 신호들과 쌍을 이룬다. 프로세서(1001)의 관점에서 보면, 프로세서(1001)에 의해 발송된 트랜잭션이 시스템의 나머지 부분에서 스누핑되는 동안에 프로세서(1001)는 로컬 사이클로 유지된다. 전술한 바와 같이, 하나의 프로세가 도시되어 있지는 하지만, 신호는 하나의 포트 단위로 간주되며, 시스템의 나머지 부분이 글로벌 사이클 상태로 있는 동안에 특정 포트의 버스는 로컬 사이클 상태로 유지된다.
도 10d는 로컬 사이클 동안에 RCB에 의해 고려되는 신호들을 보여준다. 도시된 예에서, 단일 마스터 장치, 프로세서(1001)로부터의 신호는 RCB가 프로세서(1001) 및 그의 노드 제어기에 응답할 적절한 신호를 판단하는데 참여한다. 다른 장치, 노드 제어기 및 메모리 서브시스템으로부터의 신호는 동시에 글로벌 응답에 대한 응답에 참여할 수 있다. 프로세서(1001)에 대한 신호는 역시 글로벌 응답에는 영향을 미치지 않는, 그의 노드 제어기로부터의 대응 신호와 쌍을 이룬다. 프로세서(1001)의 관점에서 보면, 그의 다른 트랜잭션이 시스템의 나머지 부분에 의해 스누핑되는 동안에 또다른 트랜잭션을 발송할 수 있다. RCB가 어떠한 포트가 로컬 사이클로 들어가는지를 판단하기 위해 어드레스 스위치로부터의 신호들을 이용하지만, 표현의 간략상, 로컬 사이클 동안 이들 신호를 도시하지 않았다.
버스 메모리 트랜잭션간의 올바른 순서 달성
컴퓨터 시스템이 올바르게 작동하기 위해서는, 마스터 장치에 의해 발송되는 임의의 메모리 액세스 트랜잭션 및 그밖의 종류의 트랜잭션들인 올바르고 명확하게 순서화되어야 한다. 단일 시스템 버스를 갖는 시스템에서는, 트랜잭션이 버스에 나타나는 순서가 이들 트랜잭션에 부여되는 순서이기 때문에 이러한 기능은 쉽게 달성된다. 그러나, 다수의 버스를 이용하는 분산 시스템에서는, 시스템 전체를 거쳐 대기하는 트랜잭션들에 대해 일정 순서를 부여해주는 기능이 요구된다. 본 발명의 분산 시스템 구조는 일단의 트랜잭션들에 올바르고 명확한 순서가 부여될 수 있도록 해준다. 또한, 본 발명은 순서화를 달성하기 위한 효과적인 수단을 제공함으로써, 스누핑, 하드웨어 캐시-코히런스 프로토콜이 지원될 수 있도록 해준다.
SMP 시스템 내의 장치들이 메모리를 액세스할 때, 프로그램 또는 제어 시퀀스의 영향 하에, 그들은 메모리 트랜잭션을 발송한다. 또한, 장치들은 시스템 내에서, 코히런스, 순서와, 인터럽트 등을 달성하기 위해 그밖의 다른 버스 트랜잭션을 발송할 수도 있다. 이들 트랜잭션은 일반적으로 다른 트랜잭션으로부터의 간섭없이 평행하게 완료될 수 있다. 그러나, 2개의 트랜잭션이, 편의상, 동일한 더블워드(double word) 내의 어드레스를 참조할 때, 6XX 버스 용어에 의하면, 그들은 "충돌"되었다고 표현되며, 이들 2개의 트랜잭션들은 임의의 지정된 순서대로 완료되어야 한다. 어떤 경우에는 완료 순서가 받아들여질 수 있으며, 또 다른 경우에는, 순서가 고정되고 트랜잭션의 종류에 의해 암시된다. 예를 들어, 판독 트랜잭션과 기록 트랜잭션이 메모리 코히런스 불필요(Memory Coherence Not Required)라 정의된 어드레스를 액세스하려고 시도한다면, 이들 트랜잭션의 완료 순서가 그대로 받아들여질 수 있다. 그러나, 이들이 코히런트 상태가 유지되어야 하는 캐시가능 어드레스를 참조한다면, 완료 순서는 기록 후에 판독으로 나타나야 한다.
트랜잭션에 기본 순서를 부여하는 수단
도 4 내지 도10d에 설명된 분산 SMP 시스템에서, 다수의 프로세서 및 기타 다른 장치들이 시스템내의 다수의 버스 상에 동시에 트랜잭션을 발송할 수 있다. 따라서, 처음부터 트랜잭션이 발송되는 순서에 대한 모호함이 있다. 이들은 시스템 내를 흐르기 때문에, 제1 단계로서, 시스템은 트랜잭션들에 대해 공정하고 타당한 "발견적인 도착 순서(heuristic order of arrival)"를 부여한다. 반드시 이러한 예비적 순서가 트랜잭션이 시스템에서 실질적으로 완료되는 순서는 아니다. 2개의 트랜잭션이 시스템 내에서 동시에 활성 상태라면, 발견적인 도착 순서에 의해 "둘중의 빠른 것"으로 분류되는 것이, 코히런스가 다르게 요구하지 않는한, 첫 번째 완성되는 것으로 예정된다.
명령이 시스템에 입력되자마자, 이들은 노드 제어기에 의해 "등록"된다. 즉, 이들은 노드 제어기에 의해 저장되어 분석 및 충돌 검사시에 이용된다. 노드 제어기는 어드레스 스위치에 한번에 하나의 등록된 트랜잭션을보낸다. 어드레스 스위치는 자신에게 보내어진 트랜잭션들중에서 공정한 중재에 따라 한번에 하나의 트랜잭션을 선택하고 나서 선택된 트랜잭션을 노드 제어기 및 메모리 서브시스템으로 다시 브로드캐스트한다. 어드레스 스위치에 의한 트랜잭션 브로드캐스트의 어드레스 부분은 우선 노드 제어기 내에서 경계 래치 FROM_ASX_BL에 래치된다. 전술한 바와 같이, 임의의 사이클에서, 메모리 서브시스템과 모든 노드 제어기의 FROM_ASX_BL에 특정 트랜잭션이 래치되고, FROM_ASX_BL에 현재 있는 트랜잭션을 포함하여, 해당 사이클까지 들어와서 계속 활성 상태인 모든 다른 등록 트랜잭션들은 이 트랜잭션을 "관찰"한다. 이들 두가지 속성은 다음의 합리적이고 공정한 경험적 결론, 즉, 트랜잭션이 시스템에 도착하는 순서와 FROM_ASX_BL에 도착하는 순서가 동일하다는 경험적 결론을 이용하여 트랜잭션의 도착 순서를 정의하는데 이용된다.
트랜잭션이 처음으로 FROM_ASX_BL에 도착할 때, 이는 "스누핑 대상"으로 표시되어서, 현재 사이클 이후 일정한 개수의 사이클 동안 상기 트랜잭션은 시스템 내의 모든 장치들에게 처음으로 스누핑 대상으로서 제공될 것이다. 다음의 규칙은 하나의 트랜잭션에, 그가 시스템에 들어온 실제 시간에 상관없이, 완료될 트랜잭션 순서에 대한 그의 상대적 위치를 정하는데 이용된다. 이미 스누핑 대상으로 표시된 등록 트랜잭션은 FROM_ASX_BL 내의 현 트랜잭션보다 시스템에 먼저 들어온 것으로 명목상 정의된다. 스누핑 대상으로 표시되지 않은 트랜잭션들은 FROM_ASX_BL의 현 트랜잭션보다 이후에 시스템에 들어온 것으로 명목상 정의된다.
트랜잭션에 대한 올바른 완료 순서를 달성하기 위한 방법
FROM_ASX_BL에 있는 트랜잭션은 한 사이클 도안 거기에 머무른다. 그 사이틀 동안, 트랜잭션은 충돌 검출 및 순서 결정을 위해 전체 시스템에 현재 등록되어 있는 모든 다른 트랜재션들과 비교된다. 이들의 한 쌍씩 비교 각각에 대해 두가지 세트의 결과가 있을 수 있다. 첫번째는 FROM_ASX_BL에 현재 있는 트랜잭션의 완료에 영향을 미치는 것이고, 두 번째는 임의의 다른 트랜잭션의 완료 예상에 영향을 미치는 것이다.
각각의 비교는 트랜잭션이 스누핑이 완료되는 동안 FROM_ASX_BL에 현재 존재할 수 있도록 할지 또는 완료를 이후로 연기할지에 대한 결정을 내리게 한다. 연기하는 것은 적절한 때에 AStatRetry 또는 ARespRetry 신호의 계산을 통해 이루어진다. 각각의 비교로부터 발생한 이들 신호는 노드 제어기 내에서 노드 단위로 결합된다. 연기 결정은 최상의 우선순위를 얻어서, 연기를 요구하는 하나의 비교가 있더라도 노드 에서 해당 트랜잭션을 연기하는 투표에서 승리하는 결과를 가져온다. 노드 내의 모든 비교가 현재의 스누프 동작이 완료되는 것을 허용하는 것으로 투표할 때에만 노드는 해당 트랜잭션이 완료되도록 결정한다.
결합된 AStatRetry 및 ARespRetry 신호들은 노드 제어기에 의해 AStatRetry 및 ARespRetry 코드로 인코딩되고 트랜잭션이 스누핑되는 글로벌 AStat 및 AResp 윈도우에 참여하기 위해 RCB에 제출된다. 이들 윈도우동안, 트랜잭션을 발송한 장치 이외에 모든 장치와 노드 제어기들로부터의 응답은 RCB에 의해 결합되어 글로벌 응답 신호를 발생시키고 이는, 전술한 도10a 내지 도 10d를 참조하여 설명한 바와 같이, 모든 참여 요소들에게 회답된다. 다시, 이러한 글로벌 수준에서, 재시도 응답이 (오류 코드를 제외하면) 최상의 우선 순위를 갖고 입력 응답중에 하나라도 재시도였다면 최종 응답이 될 것이다. 글로벌 재시도 응답의 결과는 트랜잭션에 대한 현재 스누프의 취소이 다. 해당 트랜잭션동안 글로벌 재시도 응답을 보내면, 트래잭션이 등록되어 있는 노드 제어기는 글로벌 스누프를 위해 트랜잭션을 재발송하거나 상기 트랜잭션이 도출된 원래의 트랜재션을 철수시킨다.
이러한 글로벌 재시도는 올바른 순서가 달성될 때까지 반복될 수 있다.
어떠한 이유로, 트랜잭션인 재시도 응답을 수신한다면, 그의 스누핑 대상 표시는 리세트되고, 따라서 시스템 내의 트랜잭션 순서에서 현재의 명목상 위치를 잃게 된다. 이 트랜잭션이 다시 스누프 상태로 복귀하면, 트랜잭션은 전술한 규칙에 따라 새로운 위치를 골라잡는다. 이 메커니즘은 제발송된 트랜잭션이 반드시 자신 이후에 시스템에 들어온 또다른 트랜잭션 뒤로 순서가 정해지는 가능성을 반드시 배제하는 것은 아니다. 반면에, 현재 트랜잭션이 완료하면, 이는 다른 트랜잭션들이 철수되는 것을 야기할 수 있다.
본 발명의 장점은 전술한 설명으로부터 명백해진다. 본 발명은 일반적으로 시스템 크기가 커서 물리적 버스가 프로세서, 메모리 서브시스템 및 입출력 에이전트와 같은 시스템 구성 요소간의 통신용으로 비효율적인 다중 방식의 멀티프로세서 시스템에도, 표준이자 검증이 용이한 버스식 코히런스 프로토콜이 확대 이용되는 것을 가능하게 해준다. 본 발명에 따른 분산 시스템 구조를 이용함으로써, 더욱 복잡한 디렉토리식 프로토콜 등을 개발할 필요가 없다. 또한, 본 발명은 구성요소 인터페이스들이 단일 버스 내에서 가능한 것보다 더 빨리 클럭킹될 수 있도록 해주므로, 구성요서 인터페이스의 대역폭을 증가시키고 결국 전체 시스템의 대역폭과 성능을 높이는 결과를 가져온다. 또한, 본 발명은 다수의 데이터 버스를 지원하므로, 시스템의 데이터 대역을 증가시키고 프로세서의 효율성을 향상시키는 결과를 가져온다. 또한, 본 발명의 시스템에서의 데이터 전송 및 병렬성은 시스템 데이터 처리량을 개선시킨다.
본원 발명은 완전히 기능적인 데이터 처리 시스템과 관련하여 설명되어 있지만, 본 기술분야의 당업자라면 본 발명에 따른 프로세스들이 명령이 저장된 컴퓨터 판독 가능 매체 및 다양한 형태로서 배포될 수 있으며, 본 발명은 배포를 수행하는 데 실질적으로 이용되는 매체를 포함하는 신호의 특정 형태에 상관없이 동일하게 적용될 수 있음을 이해할 수 있을 것이다. 컴퓨터 판독 가능 매체의 예로서, 플로피 디스크, 하드 디스크 드라이브, RAM 및 CD-ROM을 포함하는 기록가능형 매체와 디지털 및 아날로그 통신 링크와 같은 전송형 매체를 포함한다.
본 발명의 상세한 설명은 예증 및 설명의 목적으로 제공되었으나, 이는 본 발명을 상기 개시한 것에 한정시키거나 제한하려는 것을 아니다. 본 기술 분야의 당업자라면 수많은 변경 및 변형이 가능하다는 것을 명백히 이해할 수 있을 것이다. 상기 실시예는 본 발명의 원칙, 실제 응용을 가장 잘 설명하기 위해, 그리고 본 기술 분야의 당업자들에게 본 발명이 숙고된 특정용도에 적합하게 다양한 변경 사항이 다양한 실시예로 구현될 수 있다는 것을 잘 이해시키기 위하여 선택되어 설명된 것이다.

Claims (10)

  1. 데이터 처리 시스템에 있어서,
    다수의 마스터 장치들과,
    다수의 노드 제어기들 - 상기 노드 제어기는 상기 다수의 마스터 장치들중 1개 이상의 장치를 포함하는 부분집합을 하나의 노드로 구성함- 과,
    다수의 메모리 서브시스템과,
    어드레스 스위치 -상기 어드레스 스위치는 상기 노드 제어기의 각각과 상기 메모리 서브시스템의 각각에 접속되며, 상기 메모리 시스템의 각각은 상기 어드레스 스위치 및 상기 노드 제어기의 각각에 접속됨- 와,
    상기 다수의 마스터 장치에 의해 발송된 명령간의 순서를 판단하기 위한 명령 순서 판단 수단
    을 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서, 상기 어드레스 스위치에 의한 상기 다수의 노드 제어기 및 상기 다수의 메모리 서브시스템으로의 명령 브로드캐스트 (broadcast)의 도착순서에 기초하여 일단의 명령들에 대한 기본 순서를 설정하기 위한 기본 순서 설정 수단을 더 포함하는 데이터 처리 시스템.
  3. 제2항에 있어서, 상기 일단의 명령 내에서 스누프(snoop)된 명령을 재정렬하기 위한 명령 재정렬 수단을 더 포함하는 데이터 처리 시스템.
  4. 제3항에 있어서, 글로벌 재시도 응답을 수신함에 따라 스누프된 명령을 취소시키기 위한 스누프 취소 수단을 더 포함하는 데이터 처리 시스템.
  5. 제4항에 있어서, 취소된 명령을 재발송하기 위한 명령 재발송 수단을 더 포함하는 데이터 처리 시스템.
  6. 제1항에 있어서, 상기 노드 제어기는 상기 어드레스 스위치에 의해 명령 브로드캐스트를 수신하기 위한 브로드캐스트 명령 수신 수단을 더 포함하는 데이터 처리 시스템.
  7. 제1항에 있어서, 상기 노드 제어기는 상기 어드레스 스위치 및 상기 노드 제어기의 마스터 장치 부분집합으로부터 수신된 명령의 순서를 판단하기 위해 명령 순서 판단 수단을 더 포함하는 데이터 처리 시스템.
  8. 제7항에 있어서, 상기 노드 제어기는 상기 어드레스 스위치에 의해 상기 노드 제어기의 마스터 장치 부분집합에 상기 명령 브로드캐스트를 전송하기 위한 고정 지연 전송 수단(fixed delay transmittal means)을 더 포함하는 데이터 처리 시스템.
  9. 제7항에 있어서, 상기 노드 제어기는 상기 노드 제어기의 마스터 장치 부분집합으로부터 수신되는 명령들을 대기시키기 위한 명령 큐(queue)를 더 포함하는 데이터 처리 시스템.
  10. 제9항에 있어서, 상기 노드 제어기는 상기 어드레스 스위치에 의한 명령 브로드캐스트로서 대기 명령을 수신하면 상기 대기 명령을 스누프된 것으로서 표시하기 위한 스누프 표시 수단을 더 포함하는 데이터 처리 시스템.
KR10-2000-0036029A 1999-07-08 2000-06-28 물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치 KR100404607B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/350,030 US6779036B1 (en) 1999-07-08 1999-07-08 Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system
US9/350,030 1999-07-08
US09/350,030 1999-07-08

Publications (2)

Publication Number Publication Date
KR20010029853A true KR20010029853A (ko) 2001-04-16
KR100404607B1 KR100404607B1 (ko) 2003-11-05

Family

ID=23374955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0036029A KR100404607B1 (ko) 1999-07-08 2000-06-28 물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치

Country Status (3)

Country Link
US (1) US6779036B1 (ko)
KR (1) KR100404607B1 (ko)
TW (1) TW472195B (ko)

Families Citing this family (40)

* 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
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
US7237071B2 (en) * 2001-12-20 2007-06-26 Texas Instruments Incorporated Embedded symmetric multiprocessor system with arbitration control of access to shared resources
US7454456B2 (en) * 2002-02-14 2008-11-18 International Business Machines Corporation Apparatus and method of improving network performance using virtual interfaces
US7117316B2 (en) 2002-08-05 2006-10-03 Micron Technology, Inc. Memory hub and access method having internal row caching
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US7330992B2 (en) * 2003-12-29 2008-02-12 Micron Technology, Inc. System and method for read synchronization of memory modules
US7188219B2 (en) 2004-01-30 2007-03-06 Micron Technology, Inc. Buffer control system and method for a memory system having outstanding read and write request buffers
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US20080098178A1 (en) * 2006-10-23 2008-04-24 Veazey Judson E Data storage on a switching system coupling multiple processors of a computer system
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8640141B2 (en) 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8386822B2 (en) 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8452947B2 (en) 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8082315B2 (en) 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8230201B2 (en) 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8145723B2 (en) 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
US8886889B2 (en) * 2012-02-21 2014-11-11 Lsi Corporation Methods and apparatus for reusing snoop responses and data phase results in a bus controller
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
TWI832612B (zh) * 2022-12-14 2024-02-11 精拓科技股份有限公司 I2c通訊系統的目標從屬裝置及其位址更新方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4152764A (en) 1977-03-16 1979-05-01 International Business Machines Corporation Floating-priority storage control for processors in a multi-processor system
US4484270A (en) 1982-07-07 1984-11-20 Sperry Corporation Centralized hardware control of multisystem access to shared and non-shared subsystems
IT1184553B (it) 1985-05-07 1987-10-28 Honeywell Inf Systems Architettura di sistema a piu' processori
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
DE68928980T2 (de) 1989-11-17 1999-08-19 Texas Instruments Inc. Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5208914A (en) 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
JP2770603B2 (ja) 1991-03-14 1998-07-02 三菱電機株式会社 並列計算機
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5327570A (en) 1991-07-22 1994-07-05 International Business Machines Corporation Multiprocessor system having local write cache within each data processor node
US5426765A (en) 1991-08-30 1995-06-20 Compaq Computer Corporation Multiprocessor cache abitration
US5335335A (en) 1991-08-30 1994-08-02 Compaq Computer Corporation Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed
US5325503A (en) 1992-02-21 1994-06-28 Compaq Computer Corporation Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line
KR100294105B1 (ko) 1992-04-29 2001-09-17 썬 마이크로시스템즈, 인코포레이티드 멀티 프로세서 컴퓨터 시스템의 일관성 카피-백 버퍼용 방법 및 장치
WO1995009399A1 (fr) 1993-09-27 1995-04-06 Ntt Mobile Communications Network Inc. Multiprocesseur
US5577204A (en) 1993-12-15 1996-11-19 Convex Computer Corporation Parallel processing computer system interconnections utilizing unidirectional communication links with separate request and response lines for direct communication or using a crossbar switching device
JP2778913B2 (ja) 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US5566342A (en) 1994-08-31 1996-10-15 International Business Machines Corporation Scalable switch wiring technique for large arrays of processors
JPH08235141A (ja) 1995-02-28 1996-09-13 Kofu Nippon Denki Kk 情報処理システム
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US6011791A (en) * 1995-11-15 2000-01-04 Hitachi, Ltd. Multi-processor system and its network
US5673413A (en) 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5850558A (en) * 1995-12-19 1998-12-15 Advanced Micro Devices System and method for referencing interrupt request information in a programmable interrupt controller
US5754877A (en) 1996-07-02 1998-05-19 Sun Microsystems, Inc. Extended symmetrical multiprocessor architecture
US5802377A (en) * 1996-10-22 1998-09-01 International Business Machines Corp. Method and apparatus for implementing multiple interrupt controllers in a multi-processor computer system
US5764998A (en) * 1996-10-28 1998-06-09 International Business Machines Corporation Method and system for implementing a distributed interrupt controller
US5784394A (en) * 1996-11-15 1998-07-21 International Business Machines Corporation Method and system for implementing parity error recovery schemes in a data processing system
US5931938A (en) 1996-12-12 1999-08-03 Sun Microsystems, Inc. Multiprocessor computer having configurable hardware system domains
US5895495A (en) 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
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
US6122714A (en) 1997-10-24 2000-09-19 Compaq Computer Corp. Order supporting mechanisms for use in a switch-based multi-processor system
US6154816A (en) 1997-10-24 2000-11-28 Compaq Computer Corp. Low occupancy protocol for managing concurrent transactions with dependencies
US6065077A (en) * 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6081874A (en) * 1998-09-29 2000-06-27 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect

Also Published As

Publication number Publication date
US6779036B1 (en) 2004-08-17
KR100404607B1 (ko) 2003-11-05
TW472195B (en) 2002-01-11

Similar Documents

Publication Publication Date Title
KR100404607B1 (ko) 물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치
KR100404608B1 (ko) 대칭형 멀티프로세서용 버스식 캐시-코히런스 프로토콜을지원하기 위해 분산 시스템 구조를 이용하는 방법 및 장치
US6606676B1 (en) Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6535941B1 (en) Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants
KR100378389B1 (ko) 글로벌 코히런스를 제공하는 데이터처리시스템
US7529799B2 (en) Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
KR100387541B1 (ko) 멀티프로세서 시스템에서 캐쉬 코히어런시 유지 방법, 멀티프로세서 시스템 및 노드 제어기
US6725307B1 (en) Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system
US5870625A (en) Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command
JP2512651B2 (ja) メモリ共有マルチプロセッサ
US7395379B2 (en) Methods and apparatus for responding to a request cluster
US6523076B1 (en) Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks
US6938094B1 (en) Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
EP1412871B1 (en) Method and apparatus for transmitting packets within a symmetric multiprocessor system
US20040117561A1 (en) Snoop filter bypass
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
JP2000227908A (ja) 共用介入サポ―トを有する不均等メモリ・アクセス(numa)デ―タ処理システム
US6529990B1 (en) Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
JPH11282820A (ja) スイッチをベースとするマルチプロセッサシステムに使用するための順序サポート機構
US20030095557A1 (en) Response virtual channel for handling all responses
US6587930B1 (en) Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
JP2005539282A (ja) 単一のコヒーレントなシステム内の分散コンピュータ・ノードにキャッシュ・コヒーレンスを提供するのにグローバル・スヌープを使用する方法および装置
US6516379B1 (en) Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system
JP2018109965A (ja) データ処理
WO2015134098A1 (en) Inter-chip interconnect protocol for a multi-chip system

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee