KR19990013405A - 공유 메모리 프로세싱 시스템에 대한 캐시 일관성 네트워크 어댑터 - Google Patents

공유 메모리 프로세싱 시스템에 대한 캐시 일관성 네트워크 어댑터 Download PDF

Info

Publication number
KR19990013405A
KR19990013405A KR1019980021820A KR19980021820A KR19990013405A KR 19990013405 A KR19990013405 A KR 19990013405A KR 1019980021820 A KR1019980021820 A KR 1019980021820A KR 19980021820 A KR19980021820 A KR 19980021820A KR 19990013405 A KR19990013405 A KR 19990013405A
Authority
KR
South Korea
Prior art keywords
node
memory
cache
data
invalidation
Prior art date
Application number
KR1019980021820A
Other languages
English (en)
Other versions
KR100310567B1 (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 KR19990013405A publication Critical patent/KR19990013405A/ko
Application granted granted Critical
Publication of KR100310567B1 publication Critical patent/KR100310567B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

다단 네트워크에 의해 상호 접속된 공유 메모리 병렬 프로세싱 시스템은 새로운 시스템 구성 기법들을 특정 목적 하드웨어와 결합시킴으로써, 네트워크상에서 효율적으로 캐시 일관성을 제어하면서 동시에 네트워크를 통한 원격 메모리 액세스를 제공한다. 이 시스템 구성 기법은 국부 대 원격 액세스와 변경가능한 데이타 대 변경불가능한 데이타의 관점에서, 메모리를 분할하고 제어하는 체계적인 방법을 포함한다. 대부분의 특정 목적 하드웨어는 메모리 제어기 및 네트워크 어댑터내에 구현되며, 이 어댑터는 무효화 기능, 원격 저장 및 캐시 일관성을 요구하는 원격 액세스를 효율적으로 분리하여 처리하기 위하여 각 노드에 세개의 송신 FIFO와 세개의 수신 FIFO를 구현하고 있다. 이러한 세개의 기능들을 상이한 송신 및 수신 FIFO로 분리하는 것은 네트워크를 통하여 캐시 일관성 기능을 상당히 용이하게 한다. 또한, 네트워크 자체는 원격 액세스에 최대 효율을 제공하도록 그에 맞게 조절될 수 있다.

Description

공유 메모리 프로세싱 시스템에 대한 캐시 일관성 네트워크 어댑터
본 발명은 복수의 노드들이 상호 접속 네트워크상에서 메시지를 경유하여 서로 통신하고 시스템의 전체 메모리를 공유하는 디지탈 병렬 프로세싱 시스템에 관한 것으로서, 특히 본 발명은 모든 시스템 노드들사이에 공유 메모리를 분산시켜 각 노드가 전체 메모리의 일부를 구현하는 것에 관한 것이다. 보다 구체적으로는, 본 발명은 각 노드에 국부 캐시(local cache)를 포함하는 밀결합 시스템(tightly coupled system)에 관한 것이며, 또한 분산 디렉토리, 무효화(invalidation), 판독 요구 및 라이트쓰루 갱신을 사용하여 네트워크 전역에서 효율적으로 캐시 일관성(cache coherecy)을 유지하기 위한 방법에 관한 것이다.
계산 및 서버 시스템에 대하여 점점 높은 프로세서 성능이 요구됨에 따라, 보다 좋은 성능을 제공하는 데에 공유 메모리 프로세서(shared memory processors:SMP)가 중요한 옵션이 되어 가고 있다. SMP는 공통 메모리 풀(common memory pool)을 공유하는 다수의 프로세서들로 구성되는데, 이 메모리 풀의 일부 또는 대부분은 각 프로세서로부터 원격지에 위치한다. 기본적으로 두가지 타입의 멀티프로세싱 시스템이 존재하는데, 밀결합(tightly coupled) 시스템과 소결합(loosely coupled) 시스템이 그것이다. 밀결합 멀티프로세서에서는, 공유 메모리가 모든 프로세서들에 의해 사용되고, 전체 메모리는 단일 운영 체제에 의해 관리된다. 소결합 멀티프로세서에서는, 공유 메모리가 전혀 없고, 각 프로세서는 원할 경우 네트워크로부터 적재될 수 있는 배타적인 메모리를 구비한다.
밀결합 시스템이건 소결합 시스템이건, 원격 노드 또는 원격지로부터 메모리 액세스는 필수적이다. 국부 메모리에 비해 원격 메모리 액세스는 훨씬 더 느린 과정이며, 따라서 원격 액세스를 가능하게 하는 성능 향상 기법들이 필요하다. 첫번째 성능 기법은 각 프로세서에서 국부 캐시(대개 몇개 레벨의 캐시임)를 사용한다. 캐시 메모리는 본 기술분야에서 고성능 국부 메모리로서 알려져 있으며, 공유 메모리 또는 네트워크에서 트래픽 문제를 완화시키는 것으로 잘 알려져 있다. 캐시 메모리는 공유 메모리로부터 검색(retrieve)된 데이타 라인을 캐싱하기 위한 데이타 어레이로 구성되는데, 여기서 캐시 데이타 라인은 공유 메모리와 캐시사이의 전송의 기본 단위이다. 캐시 크기는 제한되어 있기 때문에, 캐시는 또한 캐시 라인을 공유 메모리로부터 캐시 데이타 어레이내의 소정의 위치로 매핑하기 위한 디렉토리를 포함한다. 캐시는 인스트럭션 또는 데이타를 포함하고 있는데, 캐시 라인의 재충전(refill) 요구가 있기 전의 시간동안 프로세서의 요구를 충족시킨다. 데이타 라인이 캐시에서 발견되면, 캐시 히트(hit)가 발생하였다라고 한다. 그렇지 않으면, 캐시 미스(miss)가 검출되고 캐시 라인의 재충전이 필요하게 되는데, 여기서 재충전은 최근에 가장 적게 사용된 캐시 라인을 대체한다. 멀티플로세싱 시스템이 분산된 공유 메모리로 구성되는 경우, 재충전은 네트워크상에서 상이한 노드내에 위치하는 국부 공유 메모리 또는 원격 공유 메모리로부터 발생할 수 있다. 통상적으로, 캐시들은 라이트백(wright back) 또는 라이트쓰루(wright thorugh)중 어느 하나로서 분류되어 왔다. 라이트쓰루 캐시에 있어서는, 변경된 데이타는 즉시 공유 메모리로 저장되므로 가장 최근 데이타가 항상 공유 메모리에 상주하게 된다. 라이트백 캐시에 있어서는, 변경된 데이타는 캐시내에 보존되고, 다른 노드가 그 데이타를 요구하거나 캐시내에서 그 데이타가 대체되는 경우에만 공유 메모리로 기록될 뿐이다.
원격 노드에서 프로그램의 실행 및 공유 메모리로부터 변수의 인출은 많은 프로세서 사이클 시간(가장 양호한 경우에도 15 사이클이고 대개 이보다 많은 사이클)을 요한다. 시스템이 커짐에 따라, 원격 메모리에 대한 거리가 길어지며, 상호 접속 방안내에 충돌이 발생할 기회가 점점 많아지며, 원격 메모리로부터 인출할 때 더 많은 시간이 소모된다.
점점 인기를 얻고 있는 두번째 성능 향상 기법은 멀티스레딩 기법인데, 이는 니크힐 등(Nikhil et al)의 미국 특허 제 5,499,349 호 Pipelined Processor using Tokens to Indicate the Next Instruction for Each Multiple Thread of Execution 및 엔.피.홀트(N.P.Holt)의 미국 특허 제 5,530,816 호 Data Processing System for Handling Multiple Indepedent Data-driven Instruction Streams에 개시되어 있다. 멀티 스레딩 기법은 프로세서가 원격 메모리로부터 데이타를 인출해야 하기 때문에 정지(stalled)되는 때의 시간을 사용하고, 다른 태스크(또는 스레드)상에서 동작하도록 상기 프로세서를 전환시킨다.
전통적으로, 캐시 일관성은 윌슨 쥬니어 등(Wilson, Jr.et.al)의 미국 특허 제 4,755,930 호 Hierachical Cache Memory System and Method에 개시된 바와 같이, 다수의 프로세서들과 원격 메모리를 상호 접속시키는 멀티드롭 버스(muti-drop bus)를 사용하여 제어된다. 멀티드롭 버스를 사용하면, 캐시 갱신은 비교적 단순한 동작이 된다. 상기 버스는 모든 프로세서들을 동시에 구동시키기 때문에, 각 프로세서는 원격 메모리로의 저장 동작을 탐지하기 위해 버스를 스누핑(snoop)할 수 있다. 변수가 원격 메모리로 저장될 때마다, 각 프로세서는 기록이 이루어질 원격 메모리의 어드레스를 포착(capture)함으로써 저장 동작을 스누핑한다. 다음에, 각 프로세서는 상기 변수의 복사본이 존재하는지 여부를 판단하기 위해 자신의 국부 캐시를 탐색한다. 존재하면, 상기 변수는 대체되거나 무효화된다. 존재하지 않으면, 어떠한 동작도 취해지지 않는다.
캐시 일관성은 네트워크상에서는 쉽지 않다. 이는 네트워크는 스누핑될 수 없기 때문이다. 네트워크는 어느 때라도 다수의 접속을 설정한다. 하지만, 각각의 접속은 다수의 노드들중 두개의 노드사이에 설정된다. 따라서, 데이타의 전송에 관여하는 두개의 노드를 제외하고는 다른 노드들은 데이타를 감지할 수 없으며, 이를 스누핑할 수도 없다. 브로드캐스트 모드에서만 동작하는 네트워크를 구성하면, 모든 프로세서가 시스템에서의 모든 데이타 전송을 감지할 수 있다. 제이.샌드버그(J. Sandberg)는 이러한 접근법을 미국 특허 제 5,592,625 호 Apparatus for Providing Shared Virtual Memory Among Interconnected Computer Nodes with Minimal Processor Involvement에서 개시하고 있다. 샌드버그의 문헌에서는 네트워크상에서 데이타에 생긴 어떠한 변화라도 모든 노드들로 브로드캐스팅하여 모든 노드들이 변화된 변수를 새로운 값으로 갱신하게끔 하는 기록(writes)을 사용한다. 샌드버그는 네트워크상에서 데이타를 무효화하거나 판독하지 않는데, 이는 그의 해결책이 각 노드는 모든 메모리의 전체 복사본을 구비하고 있다고 가정하므로 네트워크상에서 원격 판독을 수행할 필요가 없기 때문이다. 모든 노드에서 변수들을 갱신하는 네트워크상의 샌드버그의 기록 동작은 무효화에 대한 필요성을 제거하는데, 왜냐하면, 그는 무효화 대신에 교체를 선택하고 있기 때문이다. 이는 버스에 대한 네트워크의 주요한 장점을 제거한다. 다시 말하면, 다수의 전송을 병렬로 수행할 수 있는 능력이 상실되는데, 왜냐하면 한번에 단지 하나의 브로드캐스트만이 네트워크에서 허용되기 때문이다. 따라서, 샌드버그의 접근법은 네트워크를 하나의 직렬 버스의 성능으로 축소시키고 단지 직렬 전송 ― 한번에 하나의 전송 ―만을 수행하도록 제한한다. 이는 시스템의 병렬 특성을 제거하고 무가치한 것으로 만들어 버리는 효과를 갖는다.
SMP 시스템의 또다른 문제는 많은 노드들을 가지는 시스템으로 스케일링될(scaling) 때 성능 열화를 경험한다는 것이다. 따라서, 현 기술 수준의 SMP시스템은 전형적으로 소수의 노드들만을 사용한다. 이러한 전형적인 접근법이 엘코 등(Elko et al.)의 미국 특허 제 5,537,574 호 Sysplex Shared Data Coherency Method에 개시되어 있는데, 이에 의하면 공유 메모리는 각 노드가 국부 캐시를 구비하는 다수의 노드들로 분배될 수 있다. 캐시 일관성은 중앙 집중형 전역 캐시 및 디렉토리에 의해 유지되는데, 이들은 모든 분산 공유 메모리에 대한 데이타 및 인스트력션의 판독 및 저장을 제어한다. 어떠한 네트워크도 사용되지 않고 대신에 각 노드는 중앙집중형 젼역 캐시 및 디렉토리에 대한 고유 꼬리표(tail)을 가지고 있고, 이 꼬리표는 모든 전역 데이타의 전송을 제어하고 데이타의 캐시 일관성을 추적한다. 이러한 방법은 소형 시스템에서는 잘 동작하지만 중형 또는 대형 병렬 프로세서들에서 그렇지 못한데, 왜냐하면 중앙 집중형 기능은 직렬화(serialization)을 야기하므로 SMP 시스템의 병렬 특성을 살리지 못하기 때문이다.
중앙 집중형 캐시 및 디렉토리를 구비하는 유사한 시스템이 와이.마수부치(Y.Masubuchi)의 미국 특허 제 5,537,569 호 Multiprocessor System Utilizing a Directory Memory and Including Grouped Processing Elements Each Having Cache에 개시되어 있다. 마수부치의 문헌은 중앙 집중형 캐시 및 디렉토리가 네트워크의 각 노드에 부착되어 있는 네트워크화된 시스템을 개시하고 있다. 외관상, 마수부치는 엘코의 미국 특허 제 5,537,574 호에 개시된 것보다 일반적인 해법을 가지고 있는 것처럼 보이는데, 왜냐하면 마수부치는 스케일가능성(scalability)을 위한 네트워크를 구비하고 있기 때문이다. 하지만, 중앙 집중형 디렉토리의 동일한 한계들이 적용되어 마수부치에 기반한 SMP 시스템의 병렬 특성을 살리지 못한다.
원격 또는 전역 변수에 대한 캐싱은 캐시 일관성과 함께 고성능 멀티프로세서 시스템들에 상당히 중요한 문제이다. 왜냐하면 기록 전용 메시지(write only messages)를 방송하거나 또는 하나의 중앙 디렉토리를 사용하는 스누피 프로토콜은 보다 많은 수의 노드로 스케일링하는데 적합한 해법이 아니기 때문에, 최근 SMP시스템들에서는 디렉토리 기반 프로토콜을 사용하는 경향이 있다. 디렉토리는 공유 메모리와 연관되고, 어떤 노드가 각 캐시 라인의 복사본을 구비하고 있는지에 관한 정보를 담고 있다. 전형적인 디렉토리는 엠.두보이스(M.Dubois)등의 Effects of Cache Coherency in Multiprocessors,IEEE Transactions on Computers,Vol.C-31,no.11,November,1982에 개시되어 있다. 전형적으로, 캐시내의 데이타의 라인들은 캐시 디렉토리에 의해 관리되는데, 이 디렉토리는 수정된 데이타 라인들을 무효시키고 방출한다(cast out). 현재 변경된 복사본이 무효화되지 않는다는 것을 제외하고는, 데이타 라인의 모든 복사본들이 시스템 전반에 결쳐 무효화 동작에 의해 무효화된다.
관련 기술로서, 저장될 디스크 드라이브로부터 큰 데이타 블록 또는 레코드 및 시스템의 임의의 노드에서 실행되는 인스트럭션을 전송하기 위하여 소결합 컴퓨터 시스템이 개시되었다. 더블유.엠.핏츠(W.M.Pitts)의 미국 특허 제 5,611,049 호 System for Accessing Distributed Data Cache Channel at Each Network Node to Pass Requests and Data에서는, 디스크 드라이브로부터 대형 데이타 블록을 액세스하고 캐싱하고 각 블록을 데이타 채널로서 지정하고 데이타를 요구 노드로 전송하고 둘이상의 노드가 데이타를 사용하고 있는 경우 일관성을 유지하는 것을 담당하는 네트워크상의 네트워크 분산 캐시(NDC:Network Distributed Cache) 사이트라 불리우는 특수한 기능 노드를 개시하고 있다. 이 시스템은 근거리 네트워크(local area network)에 대해 개시하고 있는데, 여기서 노드들은 대형 데이타 블록들을 공유하고 공유 메모리는 NDC에 의해 제공되는 저장 장치이다. 이는 근거리 네트워크 및 소결합 컴퓨터 네트워크에 대해서는 바람직한 접근법이지만, 밀결합 병렬 프로세싱 노드들의 분산 공유 메모리 노드들사이에 바람직하지 못한 긴 지연을 야기할 것이다.
베일러 등(Baylor et al)의 미국 특허 제 5,313,609 호 Optimum Write-back Strategy for Directory-Based Cache Coherence Protocols에는, 밀결합 프로세서 시스템이 개시되어 있다. 베일러는 모든 프로세서들이 단일 공유 메모리 유닛을 액세스할 때 충돌하게 되는, 단일 공유 중앙 집중형 메모리의 병목 문제를 해결하고 있다. 베일러는 공유 메모리를 다중 (n) 공유 메모리 유닛으로 분할하는데, 각 유닛은 고유하게 주소지정될 수 있고 네트워크로/로부터의 전용 포트를 구비하고 있다. 이에 의하면, 트래픽을 n 개의 공유 메모리 모듈들로 분산시킬 수 있어, 상당이 성능이 향상된다. 베일러는 모든 프로세싱 노드들을 네트워크의 한 쪽 편에 두고 모든 공유 메모리 유닛은 네트워크의 다른 편에 배치함으로써 시스템을 조직하는데, 이는 다중 프로세서들 및 다중 공유 메모리 유닛을 구비한 공유 메모리 시스템의 전형적인 개요이다. 하지만, 이러한 조직은 프로세서 및 메모리를 네트워크의 동일 노드에 결합시키는 현재의 컴퓨터를 대상으로 설계된 것은 아니다. 캐시 일관성을 제공하기 위하여, 베일러는 라이트백 캐시 및 복수의 분산된 전역 디렉토리 ― 하나의 디렉토리는 각각의 공유 메모리 유닛에 연관됨 ―를 사용한다. 각각의 전역 디렉토리는 이와 연관된 공유 메모리 유닛내에서 각 캐시 라인의 상태를 추적한다. 한 프로세서가 캐시 라인을 요구하면, 전역 디렉토리는 변경이 요구된 캐시 라인의 복사본을 구비하는 프로세서들을 지정(pole)한다. 프로세서들은 캐시 라인에 대한 임의의 수정을 전역 디렉토리에 라이트백하고, 다음에 전역 디렉토리는 요구 프로세서로 갱신된 캐시 라인을 리턴한다. 단지 공유 메모리 및 요구 노드만이 캐시 라인의 수정된 복사본을 제공받는다. 다른 노드들은 일관성을 유지하려고 한다면 주기적으로 복사본을 요구해야 한다. 이 방법은 캐시 일관성이 공유 메모리 데이타에 대한 요구와 직렬로 제공되기 때문에 공유 메모리에 대해 긴 액세스 타임이 필요한 단점을 가지고 있다.
굽타 등(Gupta et al)의 미국 특허 제 5,535,116 호 Flat Cache-Only Multiprocessor Architecture는 분산 디렉토리를 구비한 캐시 일관성 시스템에 기초한 상이한 디렉토리를 개시하고 있는데, 이는 본 발명과 상당히 유사한 종래 기술이다. 하지만, 굽타의 발명은 공유 메모리 대신, 각 노드에 위치한 유혹 메모리(Attraction Memory)(AM)를 대상으로 한다. 굽타는 AM을 다수의 데이타 페이지를 저장하는 대형 제 2 또는 제 3의 캐시라고 정의하는데, 이 캐시는 각 노드에서 주 메모리를 대체하고 캐시 가능 멀티프로세서(Cache-Only multiprocessor)를 제공한다. 페이지는 4K바이트까지의 순차 데이타 또는 인스트럭션으로서 정의된다. 데이타 페이지는 임의의 특정 노드로 배정되는 것이 아니라, 디스크 저장장치로부터 그 페이지를 판독했던 임의의 노드의 제 2 또는 제 3 캐시내에 위치할 수 있다. 이렇게 하면 디렉토리 및 다수의 노드로의 데이타의 복사가 복잡해진다. 각 프로세싱 노드는 분산된 디렉토리의 일부로써 추적할 물리 어드레스들의 집합으로 홈 노드로서 배정된다. 각 캐시 데이타 라인은 대개 그것을 추적하는 디렉토리를 구비하는 홈 노드에 상주하는 것은 아니기 때문에, 굽타는 요구 노드로부터의 임의의 캐시 라인을 액세스하는데 4 개의 네트워크 메시지를 필요로 한다. 먼저, 요구 노드는 판독 요구를 네트워크를 거쳐 홈 노드로 전송한다. 홈 노드는 디렉토리를 액세스하여 마스터 노드, 즉 요구된 데이타의 마스터 복사본을 구비하는 노드로 전송한다. 다음에, 홈 노드는 네트워크를 걸쳐 판독 요구를 재차 마스터 노드로 전송한다. 마스터 노드는 요구된 데이타의 복사본을 요구 노드로 네트워크를 통하여 리턴한다. 다음에, 요구 노드는 긍정 응답(acknowledgement) 메시지를 홈 노드로 전송함으로써 요구된 데이타를 수신했음을 확인하며, 홈 노드는 요구하는 노드가 데이타 라인의 복사본을 갖고 있음을 디렉토리에 기록한다. 본 발명은 각 노드에 정적으로 할당된 공유 메모리를 구비하고 임의의 캐시 라인을 액세스하는데 단지 두개의 네트워크 메시지만을 필요로 하므로 보다 효율적이라는 점에서 차이가 있다. 판독 요구는 공유 메모리 위치를 구현하는 노드로 이동하고, 디렉토리가 병렬로 갱신되는 동안 데이타가 액세스되어 리턴된다.
본 발명의 목적은 밀결합 시스템에서 캐시 일관성을 유지하는 향상된 방법 및 장치를 제공하는 것이다.
본 발명의 또다른 목적은 라이트쓰루 캐시의 사용, 안쓰이는 데이타의 무효화 및 분산 디렉토리에 의하여 완전 병렬 모드로 동작하는 네트워크상에서 캐시 일관성을 유지하는 것이다.
본 발명의 또다른 목적은, 각 프로세싱 노드가 공유 메모리 공간의 일부를 포함하고 임의의 노드는 가장 편리한 방식으로 공유 메모리의 국부 부분 또는 네트워크를 통하여 다른 노드들에 포함된 공유 메모리의 원격 부분을 액세스할 수 있는 밀결합 시스템을 제공하는 것이다.
본 발명의 또다른 목적은 라이트쓰루 캐시, 안쓰이는 데이타의 무효화 및 분산 디렉토리를 사용하는 디렉토리 기반 캐시 일관성 접근법 ― 이에 의하면, 캐시 일관성은 네트워크를 통하여 브로드캐스트 또는 멀티캐스트를 수행함이 없이 네트워크에 걸쳐 유지됨 ― 을 제공하는 것이다.
본 발명의 또다른 목적은 캐싱 및 멀티 스레딩과 같은 통상의 SMP 성능 향상 기법들이 다단 네트워크에 걸쳐 동작하는 때 SMP와 함께 사용될 수 있게 하는 것이다.
본 발명의 목적은 네트워크에 걸쳐 원격 인출, 원격 저장 및 무효화를 신속하게 하기 위한 6개의 상이한 FIFO를 네트워크 어댑터내에 구현함으로써 네트워크상에서 원격 노드로부터의 캐시 라인의 판독 및 무효화를 지원하는 것이다.
본 발명의 목적은 공유 메모리 영역을 변경가능 또는 변경불가능 데이타를 포함하는 것으로 표시하고 각각의 데이타 이중 워드는 보다 효율적인 캐시 일관성 시스템을 제공하기 위하여 변경가능 또는 변경불가능 데이타인 것으로 표시하는 것이다.
본 발명의 또다른 목적은 원격 데이타의 요구, 원격 데이타의 무효화, 원격 데이타의 저장 및 원격 판독 요구에 대한 응답을 위하여 네트워크를 통하여 전송할 특수한 목적의 작고 효율적인 메시지 집합을 제공하는 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 네트워크 노드의 네트워크로의 상호 접속 및 네트워크 노드의 구성 요소를 보여주고 있는 전형적인 디지탈 네트워크의 다이아그램.
도 2a 및 2b는 도 2에 도시된 바와 같이 배치되고, 본 발명의 바람직한 실시예에 따라, 노드 메모리, 메모리 제어기, L2 캐시, L1 캐시 및 I/O 제어기를 포함하여, 캐시 일관성을 수행하기 위한 네트워크 노드를 보다 상세하게 보여주는 다이아그램.
도 3은 병렬로 9 비트 데이타를 전송하기 위한 기본 네트워크 스위치(base network switch)인 8×8 올노드 듀얼 우선순위 스위치(Allnode dual priority switch)에 대한 인터페이스를 도시한 다이아그램.
도 4는 본 발명의 바람직한 실시예에 따른 2 단 스위치로 구성된 16 노드에 대한 전형적인 다단 네트워크를 도시한 다이아그램.
도 5는 본 발명의 바람직한 실시예에 따라 병렬로 36 비트 데이타를 전송함으로써 보다 고성능으로 확장되는 확장 8×8 올노드 듀얼 우선순위 스위치에 대한 인터페이스를 도시한 다이아그램.
도 6은 본 발명의 바람직한 실시예에 따라 네트워크를 통하여 36비트 병렬 포맷으로 메시지를 전송하기 위한 타이밍 시퀀스를 도시한 다이아그램.
도 7은 본 발명의 바람직한 실시예에 따라 네트워크를 통하여 전송되는 메시지 헤더를 도시한 다이아그램.
도 8은 본 발명의 바람직한 실시에 따라 네트워크 연결이 즉시 설정될 수 없으면, 빠른 경로(quick path)를 통하여 시도된 메시지를 거부하기 위한 타이밍 시퀀스를 도시한 다이아그램.
도 9는 본 발명의 바람직한 실시예에 따라 캠프 온 모드(camp-on mode)에서 메시지를 전송하기 위한 타이밍 시퀀스를 도시한 다이아그램.
도 10은 본 발명의 바람직한 실시예에 따른 메모리 어드레스의 배치(구성,조직)을 도시한 다이아그램.
도 11a 및 11b는 도 11에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 3 개의 송신 FIFO, 3 개의 수신 FIFO 및 무효화 디렉토리를 포함하는 네트워크 어댑터를 보다 상세히 도시한 다이아그램 및 이에 대한 인터페이스를 도시한 다이아그램.
도 12는 본 발명의 바람직한 실시예에 따라 이중 워드와 제어비트로 구성된 메모리 데이타 워드의 조직(구조)를 도시한 다이아그램.
도 13a 내지 13g는 본 발명의 바람직한 실시예에 따라 네트워크를 통하여 통신하는데 사용되는 7 개의 상이한 메시지 타입의 포맷을 도시한 다이아그램.
도 14a 및 14b는 도 14에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 공유 메모리로부터 데이타를 판독하는 때 프로세서 동작에 대한 흐름도.
도 15a, 15b 및 15c는 도 15에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 국부 및 원격 판독 및 기록을 모두 처리하기 위한 논리를 포함하는 메모리 제어기를 보다 상세히 도시한 다이아그램 및 이에 대한 인터페이스를 도시한 다이아그램.
도 16은 본 발명의 바람직한 실시예에 따른 메모리 제어기의 일부인, 현재 진행중인 원격 판독 동작을 추적하기 위한 논리를 보다 상세히 도시한 다이아그램.
도 17은 본 발명의 바람직한 실시예에 따라 네트워크 어댑터의 네트워크 라우터 논리를 보다 상세히 도시한 다이아그램.
도 18은 본 발명의 바람직한 실시예에 따라 메모리 제어기의 임시적인 데이타 저장 유닛을 보다 상세히 도시한 다이아그램.
도 19는 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 저장된 각 무효화 워드의 구성을 도시한 다이아그램.
도 20a 및 20b는 도 20에 도시된 바와 같이 배치되고, 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 한 엔트리를 첨가하기 위한 동작에 대한 흐름도.
도 21a 및 21b는 도 21에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 한 엔트리를 첨가하기 위한 동작에 대한 블럭도.
도 22는 본 발명의 바람직한 실시예에 따르는 무효화 디렉토리의 확장 어드레스 제어에 대한 블럭도.
도 23a 및 23b는 도23에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 공유 메모리로 데이터를 저장하기 위한 프로세서 동작에 대한 흐름도.
도 24a 및 도 24b는 도 24에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 송신 FIFO로부터 안쓰이는 메시지를 제거하기 위한 무효화 제어 논리에 대한 블럭도.
도면의 주요 부분에 대한 부호의 설명
10: 네트워크 어댑터 12: 수신 어댑터
14: 송신 어댑터 20: 상호 접속 스위치 네트워크
32: 무효화 디렉토리 40,41,42: 송신 FIFO
44,45,46: 수신 FIFO 52: I/O 제어기
54: 시스템 메모리 210: 메모리 제어기
222: 변경가능한 노드 메모리 224: 변경불가능한 노드 메모리
410: 무효화/갱신 수신 FIFO 470: 노드 ID 레지스터
472: 변경가능 영역 지시기 500: 우선순위 선택부
510: 수신 FIFO 선택 530: 네트워크 라우터 논리부
620: 메모리 어드레스 먹스 레지스터
630: 원격 판독/저장 메시지 생성부
690: 임시 데이타 저장 장치
본 발명에 따르면, 밀결합 공유 메모리 프로세싱 시스템이 제공되고, 다단 네트워크 및 공유 메모리를 포함한다. 다수의 프로세싱 노드는 다단 네트워크에 의해 상호접속되고, 각 프로세싱 노드는 공유 메모리의 일영역, 국부 프로세서 및 적어도 하나의 캐시를 포함한다. 제 1 노드에서 데이타를 캐시에 기록하고, 선택적으로 동일한 데이타를 제 1 노드의 공유 메모리로 기록하거나 그 동일한 데이타를 네트워크를 통하여 제 2 노드의 공유 메모리의 일영역 및 캐시로 기록하는 수단이 제공된다.
본 발명의 캐시 일관성 제어기는 분산 스케일가능한 공유 메모리 시스템을 제공한다. 이러한 시스템은 스케일러가능한 다수의 노드를 포함하고, 공유 메모리는 각 노드로 분산되고 변경가능 데이타를 위한 영역과 변경불가능한 데이타를 위한 영역으로 더 세분된다. (메모리의 각 64 비트 이중 워드와 연관되는 65 번째 비트와 같은) 상태 비트는 메모리 위치(이 경우, 이중 워드)가 변경가능 또는 불변의(변경불가능한) 데이타를 포함하는지 여부를 정의한다. 각 노드의 분산 무효화 디렉토리는 어느 노드가 메모리의 변경가능 영역내의 각 캐시 라인의 복사본을 가지고 있는지를 기록하고 추적하기 위하여, 노드의 메모리의 변경가능 영역과 연관된다. 무효화 디렉토리는 각 캐시 라인을 액세스할 수 있는 노드의 수를 제한하지 않도록 하기 위하여, 오버플로우 디렉토리를 사용함으로써, 필요할 때 확장될 수 있다.
각 노드의 메모리 제어기는 스레드(thread) Z에 의해 액세스되고 있는 어드레스가 국부 메모리 또는 원격 메모리내에 위치하는지 여부를 판정한다. 액세스가 원격이면, 메모리 제어기는 원격 판독이 스레드 Z에 대하여 요구되고 있음을 노드 프로세서에게 알리고, 노드 프로세서는 프로그램 스레드를 스위칭함으로써 응답한다. 메모리 제어기는 또한 액세스되고 있는 메모리 어드레스를 가지고 있는 노드의 네트워크 어댑터로 판독 요구 메시지를 생성한다. 이러한 판독 요구 메시지는 네트워크를 통하여 주소지정된 메모리 위치를 포함하는 노드로 전송되는데, 이 노드는 원격 메모리의 데이타를 액세스하고 이를 네트워크를 통하여 요구 노드로 리턴한다. 이러한 원격으로 액세스된 데이타는 국부 캐시로 저장되며, 국부 메모리로 저장되지는 않는다. 메모리 제어기는 요구된 데이타가 사용될 수 있음을 노드 프로세서에게 알리고, 다음에 제어기는 실행중인 스레드 Z로 리턴할 수 있다.
데이타가 메모리의 변경가능 영역내에 속하는 캐시 라인에 저장될 때, 무효화 디렉토리는 다른 노드에 저장된 이 캐시 라인의 복사본을 무효시키거나 또는 갱신하기 위하여 메시지를 네트워크를 통하여 전송한다. 제어 비트는 무효화 디렉토리가 캐시 라인 복사본을 무효시키거나 갱신할 것인지 여부를 나타낸다.
본 발명의 바람직한 실시예에 따라, 고속 다단 네트워크를 사용하여 스케일가능한 복수의 노드들을 상호 접속하는 밀결합 멀티프로세서 시스템이 제공된다. 이 시스템의 각 노드는 국부 캐시들을 구비하고, 캐시 일관성은 디렉토리 기반 접근법에 의해 유지된다. 이 시스템은 시스템의 모든 노드들 전역에 분산된 단일 범네트워크 어드레스 공간을 제공하는 공유 메모리 공간을 구현한다. 각 노드는 어드레스 공간의 고유 부분을 제공하고 모든 노드는 전체 메모리 공간을 액세스한다.
본 발명의 바람직한 실시예의 시스템은 네트워크 전역에서 캐시 일관성을 효율적으로 제어하면서 동시에 새로운 시스템 구성 기법들을 특수한 목적의 하드웨어에 결합하여 네트워크 전역에 원격 메모리 액세스를 제공한다. 이 시스템 구성 기법들은 원격 액세스 대 국부 액세스에 관련하여 메모리를 분할하고 제어하기 위한 체계적인 방법을 포함한다. 대부분의 특수 목적 하드웨어는 네트워크 어댑터내에 구현되어 각 노드를 네트워크에 인터페이스하는데 사용된다. 네트워크 어댑터는 다단 네트워크상에서 캐시 일관성을 제어하기 위한 많은 고유한 하드웨어 특징들을 구비한다. 게다가, 네트워크 자체는 원격 액세스에 대한 최대 효율을 제공하도록 이에 맞추어진다.
다음은 본 발명의 바람직한 실시예에 따라 구현된 시스템 구성 및 기법의 개요이다.
1. 공유 메모리 분포 - 공유 메모리는 하나의 섹터가 각각의 노드에 상주하는 동일한 섹터들로 분할된다. 예시적인 실시예의 시스템은 256 노드까지 지원할 수 있다. 메모리 어드레스는 섹터 식별(ID) 비트들을 포함한다. 임의의 노드에 대해, 섹터 ID 비트들은 노드 ID와 같으며, 노드 ID가 네트워크에 걸쳐 노드를 식별한다. 예컨대, 노드 0은 00h에 상당하는 노드 ID를 구비하고 노드 0에 구현된 메모리의 섹터는 00h에 또한 상당하는 섹터 ID를 구비한다.
2. 노드 메모리 세분(sub-division) - 각 노드에서 메모리의 섹터는 두 개의 별도의 영역, 즉 하나는 변경가능 데이타를 위한 영역이고 다른 하나는 변경불가능 데이타를 위한 영역으로 추가적으로 세분된다. 캐시 일관성 함수들은 단지 변경가능 영역내에 위치하는 데이타에 대해서만 제공된다. 변경가능 데이타는 또한메모리로 저장된 모든 워드와 함께 포함된 추가적인 비트에 의해 식별된다. 0으로 설정된 때, 변경가능 비트는 이와 연관된 메모리 워드를 변경불가능으로 정의하고, 1로 설정된 때에는 이와 연관된 메모리 워드는 변경가능하다.
3. 캐시불가능 데이타 - 변경가능 데이타를 노드 메모리의 변경불가능 영역으로 저장할 수 있다. 하지만, 이러한 데이타는 변경불가능한 것으로 선언되는데, 왜냐하면 이것이 캐시 일관성이 제공되지 않는 메모리 영역내에 위치하기 때문이다. 따라서, 변경가능 데이타는 캐시 일관성이 제공되는 메모리 영역에 저장되는 데이타이고, 변경불가능 데이타는 캐시 일관성이 제공되지 않는 메모리 영역에 저장되는 데이타이다.
4. I/O 레지스터 - 노드 ID 레지스터 및 변경가능 영역 지시기(locator) 레지스터는 초기화 동안 적재되고, 국부 노드의 노드 번호 및 국부 메모리내 변경가능 데이타 구획에 대한 경계(범위)를 각각 포함하고 있다.
5. 메모리 제어기 - 각 노드의 메모리 제어기는 액세스된 어드레스가 국부메모리 또는 원격 메모리내에 위치하는지 여부를 결정하는 지능을 포함한다. 이는 메모리 어드레스 워드의 메모리 섹터 정의 비트들을 노드 ID 레지스터에 비교함으로써 이루어진다. 같으면, 이 어드레스는 국부 메모리내에 위치한다. 이 경우, 메모리 제어기는 네트워크 어댑터를 사용하지 않고서 데이타를 액세스하고 리턴한다. 같지 않으면, 이 어드레스는 원격 메모리내에 위치하고 메모리 제어기는 스레드 z에 대하여 원격 판독이 요구된다는 것을 프로세서에게 알린다. 이는 프로세서로 하여금 프로그램 스레드들을 스위칭시키게 한다. 메모리 제어기는 또한 액세스되고 있는 메모리 어드레스에 대해 네트워크 어댑터로 전송될 판독 요구 메시지를 생성한다. 판독 요구 메시지는 네트워크를 통하여 주소지정된 메모리 위치를 담고 있는 노드로 전송된다. 이 데이타는 원격 메모리로부터 액세스되고, 네트워크를 통하여 요구하는 노드로 리턴된다. 원격으로 액세스된 데이타는 국부 메모리에 저장되지 않는다. 다음에, 프로세서는 실행중인 스레드 z로 리턴할 수 있다.
6. 네트워크 접속 프로세스 - 본 발명의 네트워크 어댑터의 바람직한 실시예에 따라, 추가적으로 효율적인 네트워크 접속 알고리즘이 제공된다. 네트워크 어댑터는 네트워크에 걸쳐 두 가지 타입의 접속을 제어한다.
1) 낮은 대기 시간으로 접속을 설정하기 위해 하나의 빠른 경로 시도(또한 정규 접속으로서 불림)가 먼저 행해진다. 이렇게 하면, 보통의 경우에 가능한한 가장 빠른 시간내에 네트워크에 걸쳐 데이타를 액세스할 수 있다.
2) 빠른 경로가 거부되면, 대쳬 경로들(또한 캠프 온 접속이라 불림)이 캠프 온 모드로 이어서 시도된다. 경합이 발생할 경우, 캠프 온은 메시지로 하여금 네트워크의 최종 단에서 정지하고 기다리게 한다. 제 1 및 중간 단에서 거부가 발송되면 네트워크 차단(blockage)을 우회하기 위해 또다른 대체 경로에 대해 재시도하게 된다. 즉시 1로 리턴하지 않고 0으로 향하는 것에 대한 승인은 경합이 네트워크의 최종단에서 직면하게 되었음을 의미한다. 다른 대체 경로에 대한 추가적인 재시도가 이런 경우 도움이 되지 않을 것인데, 왜냐하면 네트워크 차단이 문제가 되는 것이 아니기 때문이다. 계류중인 연결은 최종 단을 캠프온(camp-on)한다. 직후에 또는 그후에 관계없이, 1로 향하는 것에 대한 승인은 경합이 사라져서 차단된 메시지가 속행될 수 있음을 의미한다.
7. 노드 식별 - 네트워크 어댑터는 노드 번호 부여를 제어한다. 예시적인 실시예에 있어서, 네트워크는 256개의 노드들을 구비하고, 256 개의 노드들을 고유하게 정의하는데 8 개의 노드 식별(ID) 비트들이 필요하다.
8. 무효화 디렉토리 - 네트워크 어댑터는 무효화 디렉토리를 탐색 테이블(look-up table)로서 구현한다. 이 테이블내의 엔트리는 어떤 노드들이 이와 연관된 노드에 위치한 메모리 섹터로부터 변경가능 캐시 라인의 복사본을 액세스하였는지에 대한 리스트를 보유한다. 임의의 노드(국부 또는 원격 노드)에 의해 국부 메모리로부터 변경가능 데이타를 판독하라는 모든 요구는 요구 노드의 노드 번호를 이 리스트에 추가되게 한다. 메모리의 변경가능 구획내에 상주하는 캐시 라인에 대한 임의의 저장은 무효화 디렉토리로 하여금 네트워크 전역에 무효화 메시지를 무효화 디렉토리내에 열거된 모든 노드들로 전송하게 한다. 각 무효화 메시지가 전송된 때, 이 리스트내의 대응 엔트리가 제거된다.
9. 세개의 전송 FIFO 및 세개의 수신 FIFO - 각각의 노드 어댑터에서 이러한 FIFO들을 사용하여 효율적으로 무효화 함수, 원격 저장 및 캐시 일관성을 요하는 원격 판독을 분리하여 다룬다. 이것들을 사용하여 다음의 동작들을 제어한다.
송신 FIFO 1 및 수신 FIFO 1 - 네트워크에 걸쳐 메시지를 무효화하는데 예약됨.
송신 FIFO 2 및 수신 FIFO 2 - 정의에 의하면 단지 변경가능 데이타에 대해서만 발생할 수 있는 저장 동작을 네트워크 전역에서 제어하기 위해 예약됨.
송신 FIFO 3 및 수신 FIFO 3 - 판독 요구 메시지 및 응답 메시지를 모두 포함하는 원격 판독 동작들을 네트워크 전역에서 제어하기 위해 예약됨.
이러한 세개의 기능들을 상이한 송신 및 수신 FIFO로 분리하는 것은 네트워크상에서 캐시 일관성 기능을 상당히 용이하게 한다.
도 1을 보면, 본 발명의 시스템에 따른 전형적인 네트워크 노드(30)가 도시되어 있다. 병렬 시스템에 있어서, 복수의 노드들(30,34)은 상호 접속망(interconnection network)(20)을 통하여 전송된 메시지를 경유하여 서로 통신한다. 각 노드(30,34)는 대개 네트워크 어댑터(10)를 경유하여 네트워크(20)에 인터페이스한다. 노드(30)는 프로세서(50), 시스템 메모리(54), I/O 제어기(52) 및 네트워크 어댑터(10)를 포함한다. 노드(30)는 전이중(full duplex)방식으로 네트워크(20)의 하나의 포트(23A)에 부착되고 다른 노드들(34)과 통신하기 위하여 네트워크(20)로 메시지를 전송하거나 이로부터 메시지를 수신하는 네트워크 어댑터(10)를 포함한다.
네트워크 어댑터(10)는 네개의 개체(entity),즉 1)네트워크 어댑터(10)로부터 네트워크(20)에 부착된 다른 노드(34)의 네트워크 어댑터로 메시지를 전송하는 송신 어댑터(14), 2) 네트워크(20)와 인터페이스하는 노드(34)의 다른 네트워크 어댑터로부터 메시지를 수신하는 수신 어댑터(12), 3) 세개의 송신 FIFO(40,41,42)에 전용되는 메모리 영역, 세개의 수신 FIFO(44,45,46)에 전용되는 메모리 영역 및 테이블(48)에 전용되는 메모리 영역을 포함하는 어댑터 메모리(18), 4)네트워크 전역에서 캐시 일관성을 위하여 제공되는 무효화 디렉토리(때때로 캐시 일관성 디렉토리라 불림)를 포함한다. 네트워크(20)의 각각의 양방향 포트(23A,23B)에는 노드(30)의 동일한 복사본(34)이 접속된다. 양방향 포트(23A)는 네트워크로의 하나의 송신 포트(21)(네트워크 어댑터(10)에 관한 송신 포트) 및 네트워크로부터의 하나의 수신 포트(22)(네트워크 어댑터(10)에 관한 수신 포트)를 포함한다. 이 노드(30)의 송신 어댑터(14)는 네트워크를 통하여 또다른 노드(34)의 수신 어댑터로 메시지를 전송한다.
SMP 시스템에 있어서, 네트워크 어댑터(10)는 메모리 시스템(54)의 메모리 제어기(210,도 2)로부터 네트워크 제어 버스(70)를 경유하여 접속된다.
도 2a 및 2b를 참조하면, 네트워크 어댑터(10)를 경유한 트워크(20)로의 노드 접속을 포함하여, 도 1의 전형적인 프로세서(50), 시스템 메모리(54) 및 I/O 제어기 블록들이 좀더 상세히 도시되어 있다.
메모리 제어기(210)는 또한,네트워크 제어 버스(70)의 일부로서 네트워크 어댑터(10)로 인가되는 양방향 65 비트(64 데이타 비트 및 비트(850)) 데이타 버스(242) 및 어드레스 버스(240)를 통하여 변경가능 노드 메모리(222) 및 변경불가능 노드 메모리(224)를 포함한 노드 메모리(54)에 부착된다. 메모리 제어기(210) 및 네트워크 어댑터(10)와 인터페이스하는 네트워크 제어 라인 및 버스(70)는 어드레스 버스(240), 노드 ID 요구 라인(814), 판독/저장, 방출 라인(215,310), 원격으로 저장 라인(211), 원격 노드로의 판독 요구/응답 출력 라인(213) ― 어댑터(10)로의 출력 ―, 타임 스탬프 라인(816), 원격으로부터 저장 라인(216) 및 판독 요구/응답 입력 라인(218) ― 어댑터(10)로부터의 입력 ― 을 포함한다. 네트워크 어댑터(10)는 포트 버스(21 및 22)를 통하여 네트워크(20)로/로부터 각각 접속되고, 네트워크(20)를 통하여 포트 버스(21B 및 22B)를 통하여 다른 노드(34)에 접속된다. 어댑터(10)로부터의 원격 무효화 라인(410)은 L2 캐시(204)로 공급된다.
I/O 제어기(52)는 버스(9)를 통하여 다른 노드(34) 및 I/O 장치(36)로 접속된다. L1 캐시(100)로부터의 내부 I/O 버스(710)는 I/O 제어기(52), 노드 ID 레지스터(470) 및 변경가능 영역 지시기(472)로 공급된다. 노드 ID 레지스터(470) 출력(471) 및 변경가능 영역 지시기 출력 라인(473)은 메모리 제어기(210)로 공급된다.
메모리 제어기(210) 출력 인출 인터럽트 라인(230)이 프로세서(50)로 공급된다. L1 미스 라인(203)이 프로세서(50)로부터 L2 캐시(204)로 공급되고, L1,L2 미스 라인(207)은 L2 캐시(204)로부터 메모리 제어기(210)로 공급된다. 양방향 어드레스 버스(201) 및 데이타 버스(202)는 제어기(210), 프로세서(50) 및 L2 캐시(204)를 상호 접속한다. 변경불가능 데이타 버스(811)는 데이타 버스(202)를 떠나 캐시(204)로 공급된다.
도 2a 및 2b를 보면, 동작시에, 노드(30)는 정규 프로세서 기능부들, 즉 프로세서(50), L1캐시(100), L2 캐시(204), 메모리 제어기(210), 노드 메모리(54), I/O 버스(9)를 경유하여 I/O 장치(36)로 접속하기 위한 I/O 제어기(52) 및 국부 레지스터(470,472) 및 I/O 제어기(52)로 접속하기 위한 내부 I/O 버스(710)를 포함한다.
병렬 시스템에 있어서, 복수의 노드(30,34)는 다단 네트워크(20)에 의해 상호 접속된다. 네트워크 어댑터(10)는 보통 네트워크(20)로 전송할 복수의 메시지를 담고 있는 송신 FIFO 및 네트워크(20)로부터 수신한 복수의 메시지를 담고 있는 수신 FIFO를 포함하는 메시지 버퍼를 포함한다.
중앙 집중형일 경우, 원격 시스템 메모리는 모든 노드들이 동시에 액세스하려고 할 때 핫 스폿(hot spot)과 병목(bottleneck)이 된다. 메모리 병목을 제거하기 위하여, 공유 메모리는 보다 작은 구획으로 분할되고 스케일가능성에 실제로 도움이 되도록 시스템에 걸쳐 분산된다. 가장 유용한 SMP 시스템은, 시스템 메모리의 일부가 각 노드(30,34)에 위치하고 노드 메모리(54)로서 지정되는 구성으로 다중 노드들(30,34)을 포함한다. 이 경우, 시스템의 모든 노드들은 도 2에 도시된 바와 같이 동일하게 구성된다. 모든 노드(30)는 노드(30)내에 상주하는 메모리의 섹터가 되는 국부 메모리(노드 메모리(54))로의 액세스 및 네트워크(20) 전역에 위치하는 원격 메모리(다른 노드(34)의 노드 메모리(54))로의 액세스를 구비한다. 각 노드(30)는 네트워크 어댑터(10) 및 네트워크(20)를 경유하여 다른 노드(34)에 위치하는 원격 메모리에 액세스할 수 있다.
각 노드(30,34)의 메모리(54)를 결합시킨 전체 메모리가 시스템의 공유 메모리 공간을 형성하고, 한군데에 모임으로써 병목을 야기하지 않는다. 이러한 공유 메모리 공간은 시스템의 모든 노드(30,34)에 걸쳐 분산되어 있는 단일 범네트워크 어드레스 공간을 제공한다. 각 노드(30,34)는 어드레스 공간의 고유 부분을 제공하고 모든 노드는 전체 메모리 공간으로 액세스할 수 있다. 바람직한 실시예에 따라, 단순화를 위해 단지 물리적 어드레스들이 사용되고 동일한 양의 공유 메모리가 각 노드로 분배된다. 또한, 바람직한 실시예는 전혀 전역 잠금 기법(global locking technique)을 사용하지 않는다. 물리 어드레싱 시스템을 가상 어드레싱 및 다양한 크기의 분산 메모리로 확장하는 방법은 당분야에서 널리 알려져 있다. 이러한 개념은 네트워크 공유 메모리 시스템에 대하여 샌드버그(Sandberg)의 미국 특허 제 5,592,625 호 Apparatus for Providing Shared Virtual Memory Among interconnected Computer Nodes with Minimal Processor Involvement에 개시되어 있다. 마찬가지로, 두개의 노드들이 동일한 공유 메모리 위치에서 판독-수정-기록하기 위해 경합하는 경우에 사용하기 위한 전역 잠금 메카니즘(global locking mechanism)은 당기술 분야에 널리 알려져 있다. 전역 잠금 장치는 왓트 등(Watts et al)의 미국 특허 제 4,399.504 호 Methods and Means for Sharing Data Resources in a Mutiprocessing ,Mutiprogramming Environment 및 쉔즈 등(Shoens et al)의 미국 특허 제 4,965,719 호 Method for Lock Management, Page Coherency, and Asynchronous Writing of Changed Pages to External Store in a Distributed Computing System에 기술되어 있다. 본 발명은 바람직한 실시예를 보다 향상시키기 위하여 가상 어드레싱, 다양한 크기의 분산 메모리 및 전역 잠금과 같은 다른 기법들을 적용하는 것을 배제하는 것은 아니다.
네트워크(20)의 바람직한 실시예는 네트워크(20)의 각 단의 올노드(Allnode) 스위치들로 구성된 다단 상호 접속 네트워크이다. 올노드 스위치(미국 특허 제 5,444,705 호 Dual Priority Switching Apparatus for Simplex Networks)의 듀얼 우선순위 버젼은 본 발명을 위한 네트워크(20)를 형성하도록 상호 접속된 다수의 복사본을 구비한 스위치를 본 발명에 제공한다. 올노드 듀얼 우선순위 스위치는 그것이 두개의 기본적인 모드, 즉 1) 정규 또는 낮은 우선순위 모드 및 2) 캠프온 또는 높은 우선순위 모드에서 동작하기 때문에 듀얼이라 불린다. 두 모드의 차이는 네트워크(20)내에서 차단 혹은 경합을 만났을 때, 이를 처리하는 방식에서 비롯된다. 정규 모드에서, 네트워크를 통하여 경로를 설정하려고 하는 때 차단 또는 경합은 스위치내에서 접속을 거부하고 차단이전에 네트워크내에 설정된 임의의 부분적 접속 경로를 파괴하는 것을 야기한다. 캠프온 또는 높은 우선순위 모드에서, 접속 커맨드는 거부되지 않고, 차단 또는 경합이 끝날 때까지 보류상태로 유지된다. 다음에, 접속이 설정되고 메시지 전송이 계속된다. 메지지 전송은 차단 또는 경합에 의해 지연된다. 네트워크내에 설정된 어떠한 부분적 접속 경로도 파괴되지 않고, 지연 기간동안 내내 유지된다.
시스템 요소(system element)의 동작에 대한 추가적인 설명이 도 2a 및 2b내에 나타나 있고, 이 구조에 관한 보다 상세한 설명은 이후에 제공될 것이다.
도 3을 보면, 네트워크를 구축하는데 사용된 스위치가 나타나 있다. 올노드 듀얼 우선순위 스위치(60)는 8×8 버전(8개의 입력 포트 및 8개의 출력 포트)의 스위치를 제공한다. 신호 라인들(61)은 각각의 입력 포트 IP0 내지 IP7 및 출력 포트 OP0 내지 OP7에서 복제된다. 각 포트에 대한 스위치 인터페이스 라인들(61)의 집합은 13개의 고유 신호들, 즉 9개의 디지탈 데이타 라인들 및 4 개의 디지탈 제어 라인들(HI-PRI, VALID, REJECT 및 ACCEPT)을 포함하고 있다. 9개의 디지탈 데이타 신호들과 HI-PRI 및 유효(VALID) 제어 라인들은 입력 포트로부터 스위치(60)를 가로질러 출력 포트로 향하는 방향으로의 신호 흐름을 가지는 반면, 거부(REJECT) 및 승인(ACCEPT) 제어 라인들은 이와 반대 방향으로의 신호 흐름을 가진다. 올 노드 스위치는 임의의 두개의 노드사이에서 다수의 대체 경로들을 시도할 수 있는 자기 라우팅, 비동기, 비버퍼링 네트워크를 제공한다. 통상적으로 대체 경로들은 블로킹을 우회하는 사용가능한 경로가 발견될 때까지 연속적으로 시도된다. 비버퍼링이라 함은 스위치 자체가 결코 메시지의 어떠한 부분도 저장하지 않고, 단지 저장하지 않고서 직접 접속에 의해 메시지를 전달할 뿐임을 의미한다.
각각의 단방향 스위치 인터페이스 집합(61)은 네트워크(20)를 통하여 데이타를 전송 ― 데이타 전송 폭은 한번에 바이트폭 더하기 패리티(9 비트)임 ―하는데 도 3에서 도시된 바와 같이 단지 13 개의 신호들을 요구할 뿐이다. 필요한 신호들은 다음과 같다.
데이타 신호(DATA): 9개의 병렬 신호들 데이타 0 내지 데이타 8이 스위치 접속 요구 및 데이타 메시지를 전송하는 데 사용된다.
유효 신호(VALID): 활성화된 때, 데이타 메시지와 이의 라우팅 접두부(prefix)가 전송되고 있음을 지시한다. 비활성화된 때, 리셋(RESET) 커맨드를 지시하고 스위치(60)의 대응하는 스위치 입력 포트(21)로 하여금 모든 접속을 끊고 유휴(IDLE) 상태로 리셋하게 한다.
캠프온 신호(CAMPON)(또한 HI-PRI로서 불림): 활성화된 때, 처리중인 메시지가 캠프온 모드에 있음을 나타낸다. 네트워크(20)내의 차단 또는 목적지 노드(34)의 경합에 직면하게 되면, 접속 요구는 보류 상태를 유지할 것이고 네트워크의 이전 단에서 설정된 접속들은 활성화 상태를 유지한다. 캠프온 신호가 활성화되는 때, 처리중인 메시지는 정규 모드에 있음을 지시하고 차단 또는 경합에 직면하게 되면, 네트워크의 이전 단에서 설정된 접속들은 즉시 끊어지게 된다.
거부 신호(REJECT): 신호 흐름은 데이타 신호 및 유효 신호와 반대 방향이다. 거부 신호가 활성화되면, 이는 차단 또는 경합이 정규 모드에서 탐지되었음을 지시하고 최고 우선순위 모드로 사용되지 않는다.
승인 신호(ACCEPT): 신호 흐름은 거부 신호와 동일한 방향이다. 승인 신호가 데이타 메시지의 전송동안 활성화되면, 이는 메시지가 수신되어 정확한지 체크되고 있는 과정에 있음을 나타낸다. 승인 신호가 데이타 메시지의 전송 후에 비활성화되면, 이는 메시지가 정확하게 수신되었음을 나타낸다.
승인 신호가 캠프온 모드에서 접속을 설정하는 동안 활성화되면, 이는 접속이 보류중임을 나타낸다. 정규 모드에서 접속을 설정하는 동안에는, 승인 신호는 아무 의미가 없다. 승인 신호가 캠프온 접속을 보류 상태로 유지한 후에 비활성화되면, 이는 차단 또는 경합이 종료되고 요구된 접속이 설정되었음을 지시한다.
도 4를 보면, 두개의 단내의 16 개의 병렬 노드들을 상호 접속하는 네트워크(20)에 대한 바람직한 실시예가 도시되어 있다. 보다 많은 수의 병렬 노드들을 상호 접속하기 위한 네트워크는 보다 많은 스위치 단 또는 보다 적은 대체 경로들을 네트워크(20)내에 구비함으로써 가능하다. 올노드 듀얼 우선순위(DP) 스위치들은 두개의 열로 정렬되고, 여기서 각 열은 네트워크(20)의 단이다. 첫번째 단은 스위치(60A,60B)를 포함하고 인터페이스(21)를 통하여 네트워크(20)로 16 개의 입력 포트 IP0 내지 IP15를 제공한다. 두번째 단은 스위치(60C,60D)를 포함하고, 네트워크(20)로부터 인터페이스(22)를 통하여 출력 포트 OP0 내지 OP15를 제공한다. 이러한 예시적인 실시예에 따라, 네트워크(20)내에서 4 개의 대체 경로(AP)가 임의의 두 노드사이에 제공된다. 예컨대, 입력 노드 IP0와 출력 노드 OP0를 접속하는데 사용가능한 4 개의 경로들은 AP1H 내지 AP4H이고, 입력 노드 IP0와 출력 노드 OP8을 위한 경로들은 AP1L 내지 AP4L이다. 이러한 실시예에 있어서, 스위치(20)의 입력 포트(21)는 포트 IP0 내지 IP15중 하나에 대응하고, 출력 포트(22)는 OP0 내지 OP15 중 하나에 대응한다.
도 5를 보면, 네트워크(20)의 처리율은 도 3에 도시된 9 비트 데이타 인터페이스 대신에 데이타 폭을 n 비트까지 증가시킴으로써 증가될 수 있다. 바람직한 실시예의 경우, 병렬 36 비트의 데이타 폭이 선택된다. 이 경우, 수신 어댑터(12)의 올노드 단방향 인터페이스는 36개의 데이타 라인(124) 및 4 개의 제어 라인을 스캔하는데, 이 데이타 라인과 제어 라인들이 함께 포트 OP0 내지 OP7의 각각에 단방향 스위치 인터페이스(61A)를 (포트 IP0 내지 IP7의 각각의 유사한 인터페이스와 함께)형성한다. 이러한 네트워크가 지원할 수 있는 최대 처리율은 36 비트 × 100 MHZ ×16 네트워크 접속(임의의 시간에서의 네트워크 접속의 최대수) = 576 기가비트/초이다. 스위치 네트워크(20) 또는 이에 상당한 것을 구축하는데 사용되는 스위치 60X는 바람직한 실시예이다. 도 5에 도시된 스위치를 위한 칩은 칩상에서 요구되는 640 개의 I/O 신호 핀들(포트당 40 라인 × 16 포트 = 640 I/O 신호 핀)때문에, 구축하기가 비실제적일런지도 모른다. 하지만, 등가적인 설계가 도 4의 네트워크내의 각 스위치(60A,60B,60C,60D)를 병렬의 4 개의 칩들, 즉 네트워크를 통하여 총 36 개의 병렬 데이타 신호를 보내기 위하여 각각 9 개의 데이타 필드(124) 신호들을 가질 도 3에 도시된 4 개의 스위치 칩으로 대체될 것이다. 도 3의 스위치(60)는 필요한 단지 208 개의 신호 I/O 핀(포트당 13 개의 신호 × 16 개의 포트 = 208 신호 I/O)을 가진다. 결국 네트워크는 16 개의 스위치 칩을 요구할 것이지만, 도 5에 도시된 스위치 60X로부터 구축된 4 개의 스위치 칩 네트워크(60A,60B,60C,60D)에 상당하는 네트워크일 것이다.
도 6을 보면, 올노드 스위치 네트워크(20)를 통하여 전송되는 메시지의 타이밍도가 도시되어 있다. 송신 어댑터(14)는 송신 클럭율(122)(클럭율은 바람직한 실시예의 경우 100MHZ임)에 동기된 36 비트 데이타 워드를 전송한다. 메시지를 전송하지 않는 때, 송신 어댑터(14)는 모든 0인 데이타 워드(도 6에서 00에 의해 지시됨)를 전송하고 그 유효 신호를 0으로 비활성화한다. 송신 어댑터(14) 내부의 송신 클럭(122)은 항상 발진하지만, 아무런 메시지도 네트워크(20)로 전송되지 않는다. 송신 어댑터(14)는 단지 워드폭 데이타(124)와 VALID(120) 및 HI-PRI(121) 신호만을 네트워크(20)로 전송한다. 노드(30)의 송신 어댑터(14)가 클럭을 네트워크(20)로 전송하지 않을 뿐만 아니라, 어떠한 다른 노드(34)도 네트워크로 접속되지 않는다. 이 스위치는 클럭킹되지 않는다. 송신 어댑터(14)는 네트워크로 전송된 메시지의 경과(추이)를 추적하는데 도움이 되는 두개의 제어 신호(REJECT(123) 및 ACCEPT(125))를 네트워크(20)로부터 수신한다.
정규 모드에서, 송신 어댑터(14)는 널(OO) 데이타 워드를 전송하는 동안 유효 신호(120)를 1로 활성화함으로써 메시지를 네트워크(20)로 전송하기 시작한다. 몇 클럭 시간이 경과한 후에, 송신 어댑터(14)는 네트워크를 통하여 원하는 목적지로의 접속 경로를 선택하기 위하여 라우팅 바이트(126)(R1,R2)를 전송한다. 각 라우팅 바이트(126)는 네트워크의 각각의 단에서 8 개의 라우팅 옵션중 하나를 선택한다. N 개의 단을 구비하는 네트워크(20)는 N 개의 라우팅 바이트를 요구한다. 각 라우팅 바이트에 바로 이어지는 널 워드는 데드 필드(dead field)라 불리며 클럭킹되지 않는(unclocked) 스위치에 시간을 공급하여 임의의 경합 문제를 해결하게 한다. 라우팅 바이트 다음에, 송신 어댑터(14)는 하나 또는 여러개의 추가적인 널(00) 워드를 전송하고, 먼저 메시지의 시작을 알리는 하나의 싱크(SYNC) 워드(127)를 전송함으로써 메시지의 전송을 개시하고 다음에 메시지(128,130)가 이어진다. 하나의 데이타 워드는 도 6에 도시된 바와 같이 매 클럭 타임마다 전송된다.
도 7을 보면, 각 노드(30,34)에 대해서 상이한 노드 식별(ID) 번호(813A,813B)가 초기화 시간에 배정된다. 노드 ID는 시스템의 초기화를 위하여 마스터 프로세서로서 동작하는 노드(30) 프로세서들중 하나에 의해 네트워크를 통하여 전송된다. 마스터 프로세서는 시스템에서 각 노드 번호에 대하여 하나의 메시지를 전송한다. 메시지는 단지 도 7의 헤더 워드(128)만으로 구성될 뿐 어떠한 데이타 메시지 워드(130)(도 5에 도시됨)도 포함하지 않는다. 비트(810)가 1 이고 비트(811)가 0일때, 헤더 워드(128)의 비트들(810 및 811)내에 포함된 네개의 가능한 OP 코드중 하나가 이 메시지를 노드 ID 배정 메시지로 식별한다. 노드 ID 배정 메시지는 동일한 메시지 헤더 워드(128)의 목적지 필드(813B)내에 목적지 노드(34)의 노드 ID를 담고 있다. 마스터 프로세서 및 네트워크(20)의 송신 어댑터(14)는 각 메시지를 목적지 필드(813B)에 기초하여 단지 하나의 노드로만 라우팅한다. 네트워크의 배선(대개 하드웨어적으로 구성됨)은 어느 노드(34)가 각 목적지를 위한 메시지를 갖고 있는지 여부를 결정한다. 주목할 것은 네트워크로 전송되는 모든 메시지에 대하여, 실제로 목적지 필드(813B)는 메시지를 수신할 노드(34)의 노드 번호라는 것이다. 초기화동안 각 노드(34)는 마스터 프로세서로부터 1 메시지를 수신하고 헤더 워드(128)내의 목적지 필드(813B)와 노드 배정 OP 코드를 함께 사용하여 그 배정된 노드 번호를 결정한다. 각 노드(30,34)의 프로세서(50)는 초기화 메시지를 수신하고 이를 번역한 다음, 내부 I/O 버스를 통하여 노드 번호를 노드 ID 레지스터(470)로 저장한다. 노드 ID 값은 단지 네트워크상의 노드의 포트 번호이다. 바람직한 실시예를 위하여, 네트워크는 16 개의 노드를 가지고, 단지 하위 4 개의 ID 비트만이 16 개의 노드를 고유하게 정의하는데 필요할 뿐이다. 이 경우 노드 ID레지스터는 8 비트를 포함하지만, 이보다 상위의 비트들은 모두 0이 된다.
도 7과 관련하여 도 6을 다시 참조하면, 메시지 헤더 워드 H1,H2(128)가 싱크(SYNC) 워드(127) 직후에 전송되고, 두개의 워드, 즉 헤더 워드 1(H1,128A) 및 헤더 워드 2(H2,128B)를 포함한다. 헤더 워드들(128A,128B)은 OP 코드 비트(810-812), 메모리 영역 제어 비트(815), 전송 노드(소스) ID(813A), 네트워크 목적지 노드 ID(813B), 메모리 주소(818), 타임 스탬프(817) 및 워드 카운트(819) 필드들을 포함한다. 헤더(128) 직후에, 메시지 데이타 워드들(130)(D0 내지 Dn)이 이어지고, 여기서 n은 메시지가 가변 길이일 수 있음을 나타낸다. 데이타 워드 Dn이 전송되어 유효 데이타 워드들의 전송이 종료된 후에, 널(00) 워드들이 전송되고 유효 신호(120)는 메시지가 수락되었는지 아니면 거부되었는지 여부를 확인하기 위해 활성화 상태를 유지하면서 기다린다. 도 6은 승인 라인(125)상의 신호(134)가 0으로 리턴하고 거부 라인(123)이 결코 활성화 상태로 되지 않음으로써 메시지가 수락되었음을 보여준다. 승인 신호가 0으로 된 후에, 유효 신호(120)는 메시지의 종료를 나타내기 위하여 0으로 된다. 네트워크를 통한 접속 경로는 유효 신호가 0으로 됨으로써 끊어지게 된다.
올노드 네트워크는 SMP 응용에 매우 우수한데, 왜냐하면, 네트워크는 비버퍼링되기 때문이다. 이것이 의미하는 바는 네트워크 자체내에서 결코 데이타를 버퍼링하지 않는다는 것이다. 즉, 접속이 설정된 후에 데이타는 마치 송신자와 수신자 사이에 직접적인 접속이 있는 것처럼 네트워크를 통하여 이동한다는 것이다. 겪게 되는 지연은 대략 두개의 노드를 접속하는데 사용되는 케이블의 길이와 같은데, 이는 보다 낮은 지연 전송을 설계하는 것이 불가능함을 의미한다. 또한, SMP에 대한 올노드 스위치는 두개의 접속 설정 수단, 즉 1) 빠른(정규) 경로 2)캠프온(높은 우선순위) 경로를 구현할 것이다. 빠른 경로는 정말로, 스위치에서의 차단 및 수신 노드에서의 경합이 발생하지 않은 때에 네트워크를 통하여 접속을 설정할 수 있는 가장 빠른 방법이다. 빠른 경로의 접속 시간은 네트워크 어댑터(10)에 의해 정의된 송신 클럭(122)에 기초하여 스위치 단당 2 개의 클록 시간을 요구한다. 예컨대, 송신 클럭(122)이 100MHZ로 선택되면, 클럭 시간은 10ns가 될 것이다. 각 단에서 20ns로 선택될 것이 요구되면, 2개의 단은 총 40ns가 된다. 따라서,차단 또는 경합에 직면하지 않으면, 4개의 클록 시간(40ns)내에, 빠른 경로 접근법에 의해 네트워크를 통하여 설정될 수 있다.
네트워크 어댑터(10)는 네트워크상에 각각의 접속을 설정하는데 있어 두가지 상이한 시도를 한다. 첫번째 시도는 항상 무작위로 선택된 대체 경로에 대한 빠른 경로일 것인데, 이는 가능한한 가장 빠른 시간내에 네트워크상에 접속을 설정할 것이다. 빠른 경로가 차단되거나 경합에 직면하게 되면, 이는 거부될 것이다.
도 8을 참조하면, 거부된 첫번째 시도, 즉 빠른 경로에 대한 타이밍 시퀀스가 도시되어 있다. (도 6은 수락된 빠른 경로에 대한 타이밍 시퀀스를 도시하고 있음). 빠른 경로를 위하여, HI-PRI 신호(121)는 비활성화되고, 라우팅 바이트(126)가 데드 필드(널 워드)에 의해서만 분리된 상태로 차례차례로 이어진다. 경로가 차단되거나 경합되면, 거부 신호(123)는 펄스(133)로서 활성화된다. 네트워크 어댑터(10)는 펄스(133)를 보고 유효 신호(120)를 비활성화시킴으로써 이 시도를 중지시킨다. 스위치(60)는 유효 신호(120)가 0으로 된 것을 확인하고 거부 신호(123)를 0으로 하강시켜 펄스(133)를 종료시킴으로써 응답한다. 또한, 유효 신호가 0으로 되면, 이 거부된 시도에 의해 설정된 어떠한 네트워크 접속도 끊어지게 된다.
도 9를 보면, 첫번째 즉, 빠른 경로 시도의 거부에 이어지는 두번째 시도는 캠프온 경로를 사용한다. 캠프온 경로는 라우팅 바이트(126)의 전송 이전 및 그 전송동안에 활성화된 스위치 인터페이스(61)의 HI-PRI 라인(121) 신호의 활성화(131)에 의해 제어되는 것과 달리 취급된다. 캠프온은 차단 또는 경합에 직면하게 되는 때에 메시지를 전송하는 가장 빠른 방법이다. 캠프온의 경우, 네트워크 접속이 경합 또는 차단을 네트워크의 두번째 단에서 직면하게 된다면, 네트워크의 첫번째 단을 통하여 유지된다. 양쪽 어느 한 단에서 HI-PRI 신호(131)의 상승은 접속을 설정할 수 없으면 스위치(60)에게 캠프온으로 알려준다. 캠프온이 의미하는 것은 스위치는 ACCEPT 라인(125)을 1로 구동하여 단(1)의 펄스(132) 및 단(2)의 펄스(132A)를 생성한다는 것이다. REJECT(123)는 캠프온 경로에 대하여 결코 활성화되지 않는다. ACCEPT(125)는 접속이 설정될 때까지 1에 머문 다음에, 0으로 되어 펄스(132) 또는 펄스(132A)중 어느 하나를 종료시킨다. 이것은 네트워크 어댑터(10)에 접속이 설정되고 메시지(127,128,130)가 ACCEPT(125)의 하강 직후에 계속된다는 것을 알린다. 도 9에는 신호(132)와 함께, 도시된 타이밍 예에서의 첫번째 단은 신호(132A)에 의해 보여지는 바와 같이, 차단 또는 경합이 끝내는데 보다 긴 시간을 기다려야만 하는 두 번째 단보다 빨리 응답함이 도시되어 있다.
요약하면, 네트워크를 통한 접속 알고리즘은 다음과 같다.
1) 처음에 무작위로 선택된 대체 경로상에서 하나의 빠른 경로 시도가 이루어진다.
2) 빠른 경로가 거부되면, 상이한 대체 경로가 캠프온 모드에서 시도된다. ACCEPT(125) 신호가 1로 되고 즉시 0으로 복귀하지 않는 것은 차단 또는 경합에 직면하게 되었음을 의미한다. 직후든지 또는 그 이후든지 관계없이, 승인 신호(125)가 0으로 간다는 것은 항상, 이 메시지로 진행하고자 하면 차단 또는 경합이 종료하고 원하는 접속이 설정되었다는 것을 의미한다.
바람직한 실시예에 있어, 공유 메모리는 한 섹터가 16 개의 노드의 각각에 상주하는 16 개의 동일한 섹터들로 분할된다. 공유 메모리 주소(818)의 8 개의 비트들을 사용하여 메모리의 256 개까지 섹터들을 고유하게 정의한다. 단순화를 위하여 바람직한 실시예는 단지 공유 메모리 주소의 8개의 섹터 비트들중 하위 4 개의 비트들(4개의 상위 비트들은 0임)에 의해 정의되는 16 개의 메모리 섹터만을 다룬다.
도 10을 참조하면, (헤더(128)내의 메모리 어드레스(818)와 구별되는) 메모리 어드레스 워드(826)는 2 개의 부분, 즉 8 비트의 메모리 섹터 정의(820) 및 메모리 어드레스(822)로 구성되어 있다. 메모리 어드레스 워드 포맷(826)은 국부적으로 또는 원격으로 생성될 수 있다. 국부 어드레스 워드는 (826A)에 의해 지정되고 원격 어드레스 워드는 (826B)에 의해 지정된다. 메모리 섹터 정의 비트들(820)은 어느 노드가 대응하는 메모리 구획을 포함하는지를 정의하고, 이렇게 함으로써 임의의 노드(30,34)에 대하여, 섹터 비트들(820)은 노드 ID 레지스터(470)과 동일하게 된다. 예컨대, 노드 0는 OOh(16 진수)과 동일한 노드 ID 레지스터를 가지고 노드 0에서 구현된 메모리의 섹터는 또한 00h와 동일한 메모리 섹터 정의 비트들(820)을 가진다. 헤더(128)의 메모리 섹터 정의 비트(820), 노드 ID 레지스터(470) 및 목적지 필드(813B)는 모두 8 비트로서 상위 4 비트가 모두 0이다. 다른 실시예의 경우, 보다 많은 노드들을 구비한 보다 큰 네트워크가 사용된다. 8 비트 필드(820,470,813A 또는 813B)에 의해 가해지는 제약은 시스템을 256개의 노드로 제한한다. 8 비트 필드의 크기가 증가되면, 256 노드보다 많은 노드가 사용될 것이다.
도 11a를 참조하면, 네트워크 어댑터(10)는 네트워크(20)상에서 효율적으로 공유 메모리 프로세서(SMP) 캐시 일관성을 다루도록 특정하게 설계되어 있다. 이전에 기술한 바와 같이, 메모리 제어기(210)와 네트워크 어댑터(10) 사이의 네트워크 제어 버스(70)는 어드레스 버스(240), 요구 노드 라인(814), 판독 또는 저장 라인(215), 방출(castout) 라인(310), 타임 스탬프(816), 원격으로 데이타 저장(211), 원격 판독 요구/응답(213), 원격으로부터의 데이타 저장 라인(216) 및 원격으로부터의 판독 요구/응답 라인(218)을 포함한다. 원격 무효화 라인(410)은 어댑터(410)로부터 L2 캐시(204)로 공급된다.
네트워크 어댑터(10)내에서, 무효화 디렉토리(32)는 어드레스 버스(240), 요구 노드(814), 판독 또는 저장(215) 및 방출(310)을 수신하고 타임 스탬프(816)를 제공한다. 원격으로부터의 데이타 저장 라인(216)은 또한 디렉토리(32)에 대한 입력이다. 무효화 디렉토리의 출력은 송신 FIFO(42)에 대한 송신 무효화 또는 캐시 갱신 메시지 라인(333)이다. 송신 FIFO(40)의 출력은 송신 FIFO(42)와 연관된 응답 무효화 송신 블럭(338)에 대한 국부 무효화 버스(336A)이다.(어떤 의미에서는, 변경된 캐시 라인내의 안쓰이는 데이타는 정정 또는 갱신에 의해 무효화되기 때문에, 갱신 메시지의 송신은 무효화 과정임)
송신 FIFO(41)는 원격으로 데이타 저장 라인(211)을 수신하고 라인(352)상의 출력을 우선순위 선택 블럭(500)에 공급한다. 송신 FIFO(42)은 원격으로의 요구/응답 판독 라인을 수신하고, 라인(353)상에서 그 출력을 우선순위 선택 블럭(500)에 제공한다. 선택 블럭(510)의 출력은 네트워크 라우팅 논리 블럭(530)으로 공급되며, 네트워크 라우팅 논리 블럭(530)의 출력은 스위치 네트워크(20)에 대한 송신 어댑터(14) 출력 포트(21)이다.
도 11c를 참조하면, 수신 어댑터(12) 입력 포트(22)가 싱크 및 복구 논리 블럭(540)에 대한 입력이고, 싱크 및 복구 논리 블럭(540)의 출력은 수신 FIFO 선택 블럭(510)으로 공급된다. 선택 블럭(510)의 출력은 라인(451)상에서 수신 FIFO(44)으로, 라인(452)상에서 수신 FIFO(45)로, 라인(453)상에서 수신 FIFO(46)로 공급된다. 수신 FIFO(44)의 출력은 수신 FIFO(46)와 연관된 수신 응답 무효화 블럭(339)으로의 라인(336B), L2 캐시(204)로의 원격 무효화 라인(410)상으로 공급된다. 수신 FIFO(45)의 출력은 원격 라인(216)으로부터 무효화 디렉토리(32) 및 메모리 제어기(210)로의 데이타 저장 라인상에 공급된다. 수신 FIFO(46)의 출력은 원격 라인(218)으로부터 메모리 제어기(210)로의 판독 요구/응답 라인상에 공급된다.
도 12를 참조하면, 이후에 보다 충분히 기술될 것이지만, 메모리 데이타 워드(854)는 65 비트, 즉 64 비트 데이타 비트(852) 및 변경가능 비트(850)로 되어 있다.
도 6 및 7과 함께 도 13a 내지 13g을 참조하면, 네트워크 어댑터(10)는 7 개의 상이한 메시지 타입을 사용하며, 각 타입은 도 7에 도시된 기본 메시지 헤더(128) 포맷의 구현예로 되어 있다. 도 13a는 판독 요구 메시지에 대한 헤더 워드(128) 포맷이고, 도 13b는 저장 메시지의 포맷이고, 도 13c는 응답 메시지의 포맷이며, 도 13d는 노드 ID 배정 메시지의 포맷이고, 도 13e는 무효화 메시지의 포맷이고, 도 13f는 방출 메시지의 포맷이며, 도 13g는 캐시 갱신 메시지의 포맷이다. 특정 메시지 13A 내지 13G에 대한 참조는 문맥에 따라, 대응하는 헤더(128)뿐만 아니라 헤더를 수반하는 데이타 워드(130)를 참조할 것이다.
도 14a 및 14b를 참조하면, 공유 메모리로부터의 판독 동작에 대한 프로세스의 흐름도가 도시되어 있다. 이는 도 11a,11b 및 15a-15c의 동작의 설명과 관련하여 이후에 언급될 것이다.
도 15a 내지 15c를 참조하면, 메모리 제어기(210)의 구조가 기술될 것이다. 도 15a 내지 15c의 동작은 도 11a과 특히, 11b의 동작과 관련하여 이후에 기술될 것이다.
프로세서 데이타 버스(202)는 프로세서(50), L1 캐시(101) 및 L2 캐시(204)를 프로세서 데이타인 레지스터(processor data in register)(602) 및 프로세서 데이타아웃 레지스터(processor data out register)(604)와 상호 접속시킨다. 프로세서 어드레스 버스(201)는 프로세서(50), L1 캐시(101) 및 L2 캐시(204)를 프로세서 어드레스인 레지스터(606) 및 프로세서 어드레스아웃 레지스터(608)와 상호 접속시킨다. 원격 판독/저장 메시지 생성 블럭(630)으로부터의 레지스터 제어 라인(611)은 레지스터(602,604,606,608)로 공급된다. L1,L2 미스 라인(207)은 프로세서/캐시(50,101,204)로부터 판독 및 저장 제어 논리 블럭(610)으로 공급된다. 원격 인출 인터럽트 라인(230)은 판독 및 저장 제어 논리 블럭(610)으로부터 프로세서(50)로의 입력이다.
프로세서 데이타인 레지스터(602)의 출력은 원격 판독/저장 메시지 생성 블럭(630)으로의 원격 저장 데이타로서, 또한 노드 메모리(54)에 대한 국부적인 저장 데이타로서 데이타 멀티플렉서(675)로의 저장 데이타 버스(242)상에 공급된다. 프로세서 데이타아웃 레지스터(604)는 입력으로서 65 비트폭의 라인(807)상에서 데이타 멀티플렉서(675)의 64 데이타 비트 출력(807B) 및 AND 게이트(806)로부터 1 비트의 캐시 불가능 라인(807A)을 수신한다. AND 게이트(806)은 신호 라인(805A) 및 (815A)상에서 입력 바이트(850) 및 반전된 비트(815)를 수신하며, 반전된 비트(815)는 인버터(809)에서 반전된 것이다.
프로세서 어드레스인 레지스터(606)는 출력을 국부 어드레스 버스(822A)상에서 메모리 어드레스 멀티플렉서 레지스터(620)로 제공하고, 섹터 라인(820)상에서 비교기(612)로 제공한다. 비교기(612)에 대한 다른 출력은 노드 ID 레지스터(470)의 출력이고, 그 출력은 라인(613)상에서 판독 및 저장 제어 논리(610)로 공급된다.
프로세서 어드레스아웃 레지스터(608)는 원격 메모리 어드레스 및 라우팅 메시지 생성 블럭(670)으로부터 원격 어드레스 라인(826B)을 입력으로서 수신한다. 어드레스 라인(826B)은 또한 임시 데이타 저장 장치(690), 메모리 어드레스 멀티플렉서 레지스터(620), 원격 판독/저장 메시지 생성 블럭(630) 및 멀티플렉서(666)로 공급된다.
임시 데이타 저장 장치(690)는 입력으로서, 원격 메모리 어드레스 및 라우팅 메시지 생성 블럭(670)으로부터 응답 데이타 버스(680) 및 원격 어드레스 버스(826B)를 수신하고, 원격 판독/저장 메시지 생성 블럭(630)으로부터 국부 어드레스 버스(826A)를 수신한다. 응답 데이타 버스(680)는 또한 데이타 멀티플렉서(675)로 공급된다. 국부 어드레스 버스(826A)는 또한 비교기(650), 활성 원격 판독 파일 블럭(640)로 공급되고, 멀티플렉서(666)(라인(667)에 의해 선택된 때)를 통하여 비교기(672)로 공급된다. 임시 데이타 저장 장치(690)의 출력은 66 비트폭의 임시 판독 버스(804)상에서 데이타 멀티플렉서(675)로 공급되고, 임시 비교 라인(801)상에서 데이타 멀티플렉서(675)의 입력 선택부와 판독 및 저장 제어 논리부(610)로 공급된다. 비교기(672)는 다른 입력으로서 변경가능 영역 지시기 레지스터(472)의 출력을 수신하고, 그 출력은 메시지 헤더의 비트(815)를 나타내는 라인(673)상에서 원격 판독/저장 메시지 생성 블럭(630) 및 멀티플렉서(675)로 공급되고, 여기서, 이것은 데이타 버스(242)상에서 65 비트(64 비트 데이타 + 비트(850))와 합쳐져서 데이타 멀티플렉서(675)에 대한 66 비트 입력을 형성한다. 비트(850)는 이중 데이타 워드(64 비트)가 변경가능 데이타 또는 변경불가능 데이타를 포함하는지 여부를 식별한다. 비트(815)는 메모리(54)의 어느 부분(222 또는 224)에 데이타 워드가 상주하는지 여부를 식별한다.
메모리 어드레스 멀티플렉서(620)에 대한 입력은, 국부 어드레스 버스(822A)뿐만 아니라, 판독 및 저장 제어 논리부(610)로부터의 멀티플렉서 선택 라인(621)과 메시지 생성 블럭(670)으로부터의 원격 어드레스 버스(826B)이다. 메모리 어드레스 멀티플렉서 레지스터(620)의 출력은 노드 메모리(54) 및 네트워크 어댑터(10)에 공급되는 어드레스 버스(240)이다.
원격 메모리 어드레스 및 라우팅 메시지 생성 블럭(670)에 대한 입력은 원격 노드 라인(246) 및 판독 요구 라인(218)으로부터의 저장이며, 이 두 라인(246,218)은 모두 네트워크 어댑터(10)로부터 나온다. 어드레스 및 메시지 생성 블럭(670)의 출력은 판독 또는 저장 신호(215)와 요구 노드 ID 라인(814)를 포함하는데, 양자 모두 네트워크 어댑터(10)로 향하며, 후자는 또한 원격 판독/저장 메시지 생성 블럭(630)으로 공급된다.
활성 원격 판독 파일(640)은 입력 파일로서 판독 저장 제어 논리 블럭으로부터 제어 라인(617)을 수신하고, 그 출력은 비교기(650)로 공급되며, 비교기의 출력은 라인(651)상에서 판독 저장 제어 논리 블럭(610)으로 다시 공급된다. 판독 저장 제어 논리 블럭(610)의 나머지 출력은 신호(310)로서 네트워크 어댑터(10)로 방출되고 원격 개시 라인(start remote line)(614)로서 원격 판독/저장 메시지 생성 블럭(630)으로 방출된다. 또한, 원격 판독/저장 메시지 생성(630)으로의 입력은 네트워크 어댑터(10)로부터의 타임 스탬프 라인(816)을 포함한다. 원격 판독/저장 메시지 생성 블럭의 네트워크 어댑터(10)에 대한 출력은 원격 노드 신호 라인(211)으로의 저장과 원격 노드 라인(213)으로의 판독 요구 및 응답이다.
도 11a-11b 및 15a-15c를 좀더 참조하면, 동작시에, 사용된 4개의 중요한 특징들이 기술될 것이다. 이것들은 1) 각 메모리 섹터내에 변경가능 데이타에 대한 별도의 영역을 만들고, 2) 어떤 변경가능 데이타를 캐시불가능한 데이타로 할 수 있게 하고, 3) 7개의 상이한 메시지 타입을 사용하여 네트워크를 통하여 통신하며, 4) 각각의 FIFO가 원격 메모리 인출을 신속하게 하면서 전체 시스템에 걸쳐 캐시 일관성을 수행하도록 구체적으로 설계되어 있는 다수의 송신 FIFO(40,41,42) 및 수신 FIFO(RCV)(44,45,46)를 구현하고 있다는 것이다.
1) 변경가능 데이타에 대한 별도의 영역
도 2a를 보면, 캐시 일관성이 변경가능(가변) 데이타에만 적용된다. 캐시 일관성 문제는 공유 메모리내에 저장된 데이타(인스트럭션, 상수, 변경불가능 데이타 및 변경가능 데이타)를 두개의 카테고리, 즉 변경가능 및 변경불가능으로 분리함으로써 상당히 단순해진다. 바람직한 실시예의 경우, 노드 메모리(54)의 각 메모리 섹터(222 및 224)내에서 어드레스 배정에 의해 그 구별이 이루어진다. 각 섹터내에서 변경가능 데이타에 대한 연속 어드레스 군은 변경가능 변수를 포함하는데 전용된다. 노드 메모리(54)의 변경가능 영역(222)내에 저장된 데이타는 네트워크 어댑터(10)에 의해 캐시 일관성을 제공받는다. 노드 메모리(54)의 나머지 영역내에 위치하는 데이타는 변경불가능 데이타로서, 캐시 일관성을 제공받지 못한다.
도 2a 및 2b와 함께 도 12를 보면, 모든 인스트럭션 워드, 상수, 변경불가능 데이타를 변경불가능한 것으로 표시하고, 변경될 수 있는 모든 데이타를 변경가능한 것으로 표시하는 것은 프로세서(50)내에서 실행되는 컴파일러의 몫이다. 이러한 표시(marking)는 메모리(54)로 저장되는 모든 이중 워드(852)내의 추가적인 비트(850)에 의해 이루어진다. 비트(850)가 0으로 설정된 경우, 관련 데이타 워드(852)를 변경불가능한 것으로 정의하며, 1로 설정된 경우 변경가능함을 의미한다. 컴파일러는 또한 변경가능 데이타와 변경불가능 데이타를 구분해야 하며, 노드 메모리(54)의 변경가능 영역(222)에 변경가능 데이타를 배정한다. 네트워크 어댑터(10)와 메모리 제어기(210)는 모두 변경불가능 데이타와는 다르게 변경가능 데이타를 다룬다. 프로세서가 노드 메모리(54)를 프로그램해서 변경불가능 메모리량이 0이고 변경가능 메모리량이 노드 메모리의 전체 크기와 같게 하는 것은 가능하다.
도 10과 함께 도 12를 참조하면, 메모리 데이타 워드(854)는 65 비트 ― 64 데이타 비트 + 변경가능 비트(850)이다. 이는 모든 메모리(54)는 원하면 65 비트 및 에러 정정 비트들을 포함하도록 구성된다는 것을 의미한다. 바람직한 실시예에서는, 에러 정정은 바람직한 실시예의 명백한 확장이기 때문에 에러 정정 비트들은 전혀 없다라고 가정한다. 네트워크 전역에서 데이타 폭은 36 비트이기 때문에, 각 메모리 데이타 워드(사실 이중 데이타 워드임)는 두개의 연속적인 워드로서 네트워크상으로 전달된다. 노드 메모리(54)내의 메모리 어드레스(822)는 추가적으로 각 캐시 라인이 8개의 이중 워드를 포함하는 캐시 라인들의 순차열(sequential series)를 포함하도록 구성된다. 메모리 어드레스(822)는 또한, 각 캐시 라인의 첫번째 이중 워드에 하위 3 비트가 0인 메모리 어드레스를 배정하고 순차적으로 메모리 어드레스를 배정하여 이 캐시 라인의 최종 이중 워드에 하위 3 비트가 1인 메모리 어드레스를 배정하도록 각각의 캐시 라인을 조직한다.
2) 소정의 캐시불가능 데이타
도 2a를 다시 참조하면, 변경불가능 데이타를 노드 메모리(54)내의 변경가능 영역(222)에 저장하는 것은 가능하다. 이는 아무런 문제를 야기하지 않는데, 왜나하면 변경가능 및 변경불가능 데이타를 함께 섞는 것은 현재의 기술수준의 접근법이기 때문이다. 또한, 노드 메모리(54)내의 변경불가능 영역에 변경가능 데이타를 저장하는 것도 가능하다. 본 바람직한 실시예에서는 이러한 데이타를 캐시불가능한 것으로 선언함으로써 이를 처리하는데, 왜냐하면 이것이 캐시 일관성이 제공되지 않는 메모리 영역내에 위치하고 있기 때문이다. 따라서, 이러한 데이타를 사용하는 어떠한 노드라도 이를 전혀 캐시에 저장하지 않고서 사용해야 한다. 이러한 데이타를 액세스하는 경우 메모리 제어기(210)는 이것이 메모리의 변경불가능 영역(224)내에 위치하고 그 변경가능 비트(850)가 메모리(54)에서 1로 설정되어 있기 때문에 캐시불가능함을 탐지한다.
도 2a 및 2b를 좀더 참조하면, 변경가능 영역 레지스터(482)는 메모리 제어기(210)에 노드 메모리(54)내 변경가능 영역(222)의 위치를 알려주는 초기화 과정동안에 내부 I/O 버스(710)를 통하여 프로세서에 의해 적재된다.
3) 7 개의 네트워크 메시지 타입
도 13a 내지 13g와 함께 도 7를 참조하면, 네트워크 어댑터(10)는 7개의 상이한 메시지 타입을 사용하는데, 각 타입은 도 7에 도시된 기본 메시지 헤더 포맷을 포함한다. 각 메시지 타입의 기능은 아래에서 설명될 것이다.
4) 다수의 송신 및 수신 FIFO
도 11를 보면, 송신 FIFO(40-42) 및 수신 FIFO(44-46)을 사용하여 캐시 무효화 기능, 변경불가능 원격 액세스 및 캐시 일관성을 요하는 액세스를 효율적으로 분리하여 다루고 있다. 6 개의 상이한 네트워크 어댑터 동작들(아래에서, 두개의 부분 A1 및 A2를 구비하는 A 및 B 내지 E)은 이러한 6 개의 FIFO를 사용한다.
A) 노드(30)이 원격 메모리(54)로부터 데이타를 액세스한다.
도 14a 및 14b의 흐름도와 함께 도 15a-15c를 참조하면, 본 발명의 바람직한 실시예의 공유 메모리로부터의 판독 동작이 설명될 것이다. 단계(730)에서, 프로세서(50)는 액세스될 다음 메모리 위치의 국부 메모리 어드레스 워드(826A)를 L1 캐시(100)로 전송하고 버스(201)를 통하여 메모리 제어기(210) 및 L2 캐시(204)로 전송한다. 단계(732)에서, L1 캐시(100)가 이 주소지정된 데이타를 포함하고 있지 않으면, L1 미스 라인(203)은 L2 캐시(204)로 전송되며, 프로세싱은 단계(734)에서 계속 진행한다. L1 캐시(100) 또는 L2 캐시(204) 어느 쪽도 주소지정된 데이타를 포함하고 있지 않으면, 단계(735 및 737)에서 L1,L2 미스 라인(207)은 메모리 제어기(210)를 인에이블시킨다. 다음에, 공유 메모리(16 개의 메모리(54) ― 각 노드(30,34)에 하나씩 위치함)에서 어드레스를 발견하고 액세스하는 것은 메모리 제어기(210)의 작업이 된다. 비교 단계(744) 및 이 단계의 YES 출력에 따른 단계들을 포함하는 메모리 제어기(210) 기능은 양 캐시가 미스(단계(732 및 734))인 경우에만 인에이블될 뿐이다. 그렇지 않으면, 비교 단계(744)를 판독을 위하여 거치는 것은 아니고, 이 판독은 단계(738 또는 740)에서 종료된다.
메모리 제어기(210)는 액세스된 어드레스가 국부 노드 메모리(54) 또는 어떤 다른 노드에 위치한 원격 노드 메모리(54)내에 위치하는지 여부를 판단할 수 있는 지능을 담고 있다. 이는 단계(744)에서 비교기(612)를 통하여 국부 메모리 어드레스 워드(826A)의 메모리 섹터 정의 비트들(820A)와 노드 ID 레지스터(470)를 비교함으로써 달성된다. 만약 비교가 같다면, 신호 EQUAL(613)가 1로 되어 이 어드레스가 국부 노드 메모리(54)내에 위치함을 나타내게 된다. 이 경우, 단계(742)에서, 데이타는 다음과 같이 국부 메모리(220)로부터 인출된다. 판독 저장 제어 논리(610)는 국부 메모리 어드레스를 메모리 어드레스 먹스(MUX) 레지스터(620)로 전송하고 먹스 선택(621)를 활성화하여 메모리 어드레스(820)를 메모리 버스(240)를 통하여 국부 노드 메모리(54)로 전송한다. 요구된 데이타는 국부 메모리로부터 액세스되고 네트워크 어댑터(10)를 개입시키지 않고서 데이타 아웃 레지스터(604) 및 데이타 버스(202)를 통하여 프로세서(50),L1 캐시(100) 및 L2 캐시(204)로 리턴된다.
단계(742)에서 데이타는 국부 메모리로부터 인출되고 국부 프로세서, 국부 L1 캐시 및 국부 L2 캐시로 리턴된다. 단계(746)에서, 이 데이타가 인출되어 있기 때문에, 인출된 데이타가 메모리의 변경가능 영역으로부터 나온 것인지 여부를 판정하기 위하여 체크한다. 변경가능 영역으로부터 인출된 데이타의 모든 복사본은 무효화 디렉토리에 의해 추적된다. 이 데이타가 변경가능 영역으로부터 나온 것이 아니면, 데이타의 추적이 전혀 요구되지 않는다. 단계(750)에서, 어드레스가 변경가능 영역으로부터 나온 것이라면, 이 어드레스는 국부 노드 ID 번호와 함께 무효화 디렉토리로 전송된다. 무효화 디렉토리는 이러한 정보를 사용하여 이 국부 노드가 해당 어드레스의 데이타의 복사본을 액세스하였음을 기록하게 된다. 또한, 변경가능 영역 비트(815)가 세트되어 라인(673)상에서 멀티플렉서(675)로 리턴되고, 그 후에 INV(809)에서 반전(invert)되고 AND 게이트에서 비트(850)과 앤드되며, 그 결과 비트는 버스(807B)와 접속되어 버스(807)를 형성하는 라인(807A)상에서 프로세서 데이타 아웃 레지스터(604)로 리턴된다.
비교가 같지 않으면, 단계(764)에서, 요구된 메모리 어드레스(826A)는 원격 노드 메모리(54)내에 위치하게 된다. 이 경우, 메모리 제어기(210)의 판독 저장 제어 논리(610)는 먼저 단계(760)에서 진행중인 동일한 어드레스에 대한 원격 인출이 있는지 여부를 체크하여 알아낸다. 판독 저장 제어 논리(610)는 국부 메모리 어드레스(826A) 및 파일 제어(617)를 활성 원격 판독 파일(640)로 전송하고, 여기서, 진행중인 원격 인출에 대한 실시간 기록이 보관된다.
도 16을 보면, 활성 원격 판독 파일(640)에 대한 보다 상세한 부분이 도시되어 있다. 파일(640)은 8 개의 레지스터(641 내지 648)를 담고 있는데, 각각은 진행중인 원격 판독 요구의 상이한 어드레스를 저장하기 위함이다. 새로운 국부 메모리 어드레스(826A)는 비교기들(650A 내지 650H)로 전송되고 현재 진행중인 모든 원격 판독 요구들과 병렬로 비교된다(연관된 유효 비트(660A 내지 660H)로 하여금 1로 설정하게 하는 모든 레지스터(641 내지 648)와 비교됨). 보통의 경우, 어드레스(826A)에 대해서는 진행중인 판독 요구가 전혀 없고 모든 비교기들(650A 내지 650H)은 0을 OR 게이트(652)로 전송한다. 그러한 경우, 단계(760)에서, 비교 일치(651) 신호는 0으로 되어 전혀 비교가 없고 새로운 어드레스(826A)에 대해서 진행중인 판독 요구가 전혀 없음을 나타낸다. 비교 일치(651)가 단계(760)에서 1로 되면, 새로운 어드레스(826A)에 대한 진행중인 판독 요구가 존재한다. 이 경우는 아래에서 논의될 것이다.
또한, 단계(760)에서, 비교 일치(651)가 0으로 되자마자, 반독 저장 제어 논리(610)는 파일 제어(617) 커맨드중 하나를 활성 원격 판독 파일(640)로 발송하여 새로운 어드레스(826A)를 파일(640)로 저장하도록 명령한다. 새로운 어드레스는 그 유효 비트(660A 내지 660H)중 하나가 0으로 설정되어 있는 미사용 레지스터(641 내지 648)를 찾는다. V=0인 가장 낮은 번호의 레지스터(641 내지 648)는 새로운 어드레스(826A)를 저장하고, 이와 연관된 V 비트는 1로 설정된다. V 비트(660A 내지 660H)는 원격 노드로부터 응답이 리턴될 때까지 1로 유지되고, 이와 연관된 가용 레지스터가 후속 판독 요구의 또다른 어드레스(826A)를 받아들일 수 있도록 이 비트는 0으로 리셋된다.
단계(762)에서, 메모리 제어기(210)는 임시 데이타 저장 장치(690)를 체크하여 원격 요구된 데이타가 이전에 메모리 제어기(210)의 내부의 임시 저장 영역으로 저장되었는지 여부를 판정한다. 통상적으로, 요구된 데이타는 이전에 임시 저장 장치(690)로 저장되지 않으므로 메모리 제어기는 단계(764)로 진행한다. 데이타가 이전에 임시 데이타 저장 장치(690)로 저장된 경우는 아래에서 논의된다.
단계(764)에서, 메모리 제어기(210)는 프로세서(50)에게 원격 판독이 요구되고 있음을 알려 주기 위하여 프로세서(50)로 현 스레드에 대한 상태를 리턴한다. 이는 원격 인출 인터럽트 라인(230)을 통하여 프로세서(50)으로 생성된 펄스에 의해 달성되는데, 이 펄스에 따라 프로세서(50)는 현 스레드가 지연되고 있기 때문에 프로그램 스레드를 스위칭하게 된다. 원격 인출 인터럽트 라인(230)은 프로세서에 의해, 또다른 스레드로의 스위칭을 야기하는 통상의 인터럽트로서 처리되거나 또는 보다 효과적으로는 프로그램 스레드 스위칭 루틴으로 진입하기 위한 프로세서(50)의 마이크로코드내에서의 분기로서 처리될 수 있다. 정밀한 구현예는 최적의 방식으로 처리하는 프로세서의 몫이고, 본 발명과는 무관하다.
도 14b와 함께 도 7,10,11a,13a 및 15c를 참조하면, 단계(766)에서, 메모리 제어기(210)는 또한 국부 메모리 어드레스 워드(826A)에 기초한 송신 FIFO(42)로의 라인(213)에 의해 표현되고 있는 바와 같이 전송될 판독 요구 메시지를 생성한다. 메시지 생성 기능은 원격 판독/저장 메시지 생성 블럭(630)에 의해 수행된다. 이 경우, 메시지는 단지 메시지 헤더 워드(128)만을 포함한다. 도 10의 어드레스 워드(826A)로부터 도 7의 헤더 워드(128)로 변환이 이루어진다. 국부 어드레스(826A)는 메시지 헤더 워드(128)로 변환되면, 워드(826A)의 25 비트 메모리 어드레스 필드(822A)는 그대로 헤더(128)의 메모리 어드레스 필드(818)가 되고, 워드(826A)의 메모리 섹터 필드(820A)는 그대로 헤더(128)의 목적지 필드(813B)가 되며, 노드 ID 레지스터(470)의 내용은 그대로 헤더(128)의 소스 노드 필드(814)가 된다. 또한, OP코드 비트(810,811,812)는 각각 0,0,1로 설정되어 판독 요구 메시지(13A)를 지시한다. 기타 제어 비트(815,817)와 워드 카운트(819)는 모두 0으로 설정된다. 워드 카운트는 메시지(13A)가 단지 헤더 메시지일 뿐 전혀 후속 데이타 워드를 요구하지 않기 때문에 0이다. 메모리 제어기(210)는 메시지 헤더(128)를 버스(213)를 통하여 네트워크 어댑터(10)의 송신 FIFO(42)로 전달한다. 원격 노드로부터의 모든 판독 요구는 버스(213)를 통하여 송신 FIFO(42)로 전송된다.
단계(766)에서 송신 FIFO(42)로 메시지를 저장하는 행동은 즉시 단계(754)의 네트워크 동작을 개시하는데, 여기서 노드(30)은 원격 노드(34)로부터 데이타 액세스를 요구하고 있기 때문에 요구 노드가 된다.
도 11를 보면, 각각의 새로운 메시지가 송신 FIFO(42)의 꼬리에 저장된다. 이것은 네트워크(20)로 전송될 자신의 차례를 기다린다. FIFO의 머리에 있는 메시지가 먼저 네트워크로 전송된다. 송신 FIFO(42)는 헤더 메시지가 FIFO(42)에 저장될 때 비어있다면(이는 통상적인 경우임), 메시지는 즉시 FIFO(42)의 머리로 이동하여 네트워크(20)로 전송된다. FIFO(42)가 비어있지 않으면, 메시지는 전송되기 전에 이 FIFO의 머리로 이동해야 한다. 선택자(500)는 세개의 송신 FIFO(40,41,42)상에서 우선순위 기능을 수행하여 어떤 FIFO가 다음 메시지를 전송할 것인지를 결정한다. 바람직한 실시예의 경우, 사용되는 우선순위 알고리즘은 송신 FIFO(40)가 우선 순위가 가장 높고, 송신 FIFO들(41 및 42)은 모두 가장 낮은 우선순위를 갖는다고 한다. 이는 송신 FIFO(40)이 전혀 메시지를 가지고 있지 않으면, 송신 FIFO(41 및 42)가 양자 모두 전송할 메시지를 가지고 있는 경우 그 대신에 메시지를 전송할 것이라는 것을 의미한다.
단계(754)에서, 데이타가 원격 메모리(220)로부터 인출된다. 이러한 동작은 도 17과 관련하여 설명될 것이다.
도 17을 보면, 원격 판독을 요구하는 헤더(128)만으로 구성된 판독 요구 메시지(13A)네트워크 라우터 논리(530)에 의해 라우팅되면서 네트워크상에서 여기저기 이동한다. 송신 클럭(122)이 메시지 제어 블럭(504), 1 비트 카운터(511), 라우팅 제어 블럭(502)으로 공급된다. 메시지 데이타 버스(128,130)는 송신 메시지 레지스터(553)로 공급되고, 그 출력은 라인(549)에 의해 나타내진 바와 같이 메시지 제어(504)로 공급된다. 송신 메시지 레지스터 1의 출력은 또한 라인(813)상에서 라우팅 제어 블럭(502)으로 공급되고 라인(535)상의 1 비트 카운터(511)의 출력과 함께 라인(541)상에서 송신 메시지 레지스터 2(532)로 공급된다. 또한, 1 비트 카운터(511)의 출력은 워드 멀티플렉서(533)로 향하는 라인(531)를 포함하고, 이와 함께 라인(543 및 545)으로 송신 메시지 레지스터 2(533)로부터 이 멀티플렉서로 향한다. 워드 멀티플렉서(533)의 출력은 싱크(sync:동기) 바이트(127), 라인(126)상의 라우팅 제어(502)의 출력, 메시지 제어(504)로부터의 싱크,메시지 또는 라우팅 선택 라인(505,507,506)(547)과 함께 멀티플렉서(438)로 공급되는데, 후자(즉 라우팅 선택 라인(506))은 또한 라우팅 제어(502)로 공급된다. 멀티플렉서(538)의 출력은 포트(21)로 향하는 메시지 데이타 라인(124)이다. 메시지 제어(504)는 추가적인 입력으로서 포트(21)로부터 거부 라인(123) 및 승인 라인(125)를 수신하며, 추가적인 출력으로서 캠프온 제어(512)와 포트(21)로 각각 캠프온 라인(508) 및 유효 라인(120)을 제공한다. 캠프온 제어(512)의 출력은 포트(21)로 향하는 캠프온 라인(121)이다.
계속해서 도 17을 참조하면, 네트워크 라우터 논리부(530)는 송신 FIFO(40,41,42)에 저장된 메시지를 네트워크를 통하여 목적지 노드(34)로 라우팅한다. 메시지는 각각 두개의 33 비트 워드로 구성되어 있는 65 비트 이중 워드로서 송신 FIFO(40,41,42)로 저장된다. 메시지의 첫번째 이중 워드(헤더 워드(128))는 어댑터 메모리(18)내의 선택된 송신 FIFO로부터 데이타 송신 레지스터(553)로 판독된다. 데이타 송신 레지스터(553)내의 헤더 워드(128)의 목적지 부분(813B)은 네트워크 라우팅 제어(502)로 전송되는데, 여기서 대체 경로가 선택되고 라우팅 바이트 R1 및 R2가 생성된다. 메시지 제어 블럭(504)은 메시지 송신 동작을 제어한다. 먼저, 메시지 제어 블럭(504)은 유효 (120) 신호를 네트워크(20)로 활성화시키고, 다음에 라우팅 선택 신호(506)를 먹스(538) 및 라우팅 제어부(502)로 전송하고 아울러 캠프온 선택(508) 신호가 캠프온 제어부(512)로 전송된다. 캠프온 선택(508)은 빠른 경로를 통한 첫번째 메시지 전달 시도가 미스한 후에만 활성화될 뿐이고, 이는 캠프온(121) 신호가 네트워크 인터페이스(21)를 통하여 네트워크로 전송되게 한다. 라우팅 선택 신호(506)가 먹스(538) 및 라우팅 제어부(502)에 대해 활성화되면, 라우팅 제어부(502)는 널(00h) 바이트에 의해 분리되는 R1 및 R2로 구성되는 네트워크 라우팅 시퀀스(126)를 생성하게 된다. R1은 적절한 목적지(813B)에 대하여 랜덤하게 이루어진 대체(alternate) 경로 선택이다. 즉, 대체 경로는 목적지 노드가 번호 8 또는 이보다 낮으면 대체 경로들 AP1L,AP2L,AP3L 및 AP4L로부터 선택되고, 목적지 노드가 번호 9 또는 이보다 높으면 대체 경로가 대체 경로들 AP1H,AP2H,AP3H 및 AP4H로부터 선택된다. R2는 목적지 필드(813B)의 하위 3 비트에 기초한 직선적 이진 선택(straight binary selection)이다. 라우팅 바이트(126)는 접속을 위하여 네트워크의 각 스위치 단으로부터 하나의 출력을 선택함으로써 메시지를 정확한 목적지로 라우팅한다. 라우팅 바이트 R1은 네트워크의 단 1을 지날때 메시지로부터 제거되고, 라우팅 바이트 R2는 네트워크의 단 2를 지날때 메시지로부터 제거된다. 메시지 제어 블럭(504)은 라우팅 제어부(502)에 의해 생성되어 있는 네트워크 라우팅 시퀀스(126)를 추적하고 싱크 선택(505) 신호를 (송신 클럭(122)의) 1 클럭 타임동안 먹스(538)로 활성화시켜, 먹스로 하여금 (먹스(538)내로 향하는 모든 것중에서) 싱크 바이트(127)를 선택하여 네트워크로 전송하게 한다.
도 4 및 도 6과 함께 도 17을 보면, 라우팅 바이트(126) 및 싱크 바이트(127)는 모두 단지 바이트폭 개체들일 뿐이고 스위치 데이타(124) 폭은 36 비트이기 때문에, 바이트들(126 및 127) 및 패리티 비트는 필요한 완전한 36 비트를 제공하기 위하여 스위치 데이타(124) 라인를 통하여 4 번 복제된다. 네트워크(20)의 도 4의 각 스위치(60A,60B,60C,60D)는 각각이 9 비트폭으로서 병렬로 놓여진 4 개의 스위치들로 구성되어 있다면, 이 4 개의 병렬 스위치들의 각 스위치는 36 비트 스위치 데이타 필드(124)의 상이한 9 비트를 수신하고, 모든 기능들은 각 9 비트 집합내에 포함되어 있다. 다시 말해, 각 9 비트 집합은 상기 복제로 인하여 라우팅 바이트(126) 및 싱크 바이트(127)를 포함한다. 따라서, 4 개의 병렬 스위치들의 각각은 스위치 데이타(124)의 상이한 9 비트 집합상에서 독립적으로 동작하게 되고, 이 집합을 통하여 각 스위치는 라우팅, 싱크 및 데이타를 수신한다. 네트워크(20)의 각 스위치(60A,60B,60C,60D)가 각각 36 비트폭으로서 단일 스위치로 구성되어 있다면, 각 스위치는 라우팅 커맨드를 스위치 데이타(124)의 4 개의 상이한 9 비트 집합중 임의의 집합으로부터 끌어내게(유도하게) 된다.
계속해서 도 17을 참조하면, 메시지 제어 블럭(504)은, 싱크 바이트(127)에 대한 한 클럭 타임이 지난후 즉시, 메시지 선택 신호(507)를 활성화시키게 되고, 이에 따라 헤더 워드(128)는 워드 멀티플렉서(533)에 의해 선택된 바와 같이 매클럭 타임 당 하나의 워드(36 비트)씩 메시지의 전송을 개시한다. 이 메시지는 송신 FIFO들(40,41,42)중 하나로부터 판독되어 데이타 송신 레지스터(553)를 거쳐 메시지 송신 레지스터(532) 및 워드 멀티플렉서(533)로 전송된다. 워드 멀티플렉서(533)는 1 비트 카운터에 의해 제어되면서(되는 바와 같이)매 클럭 타임마다 상이한 워드를 선택한다. 매 두번째 클럭 타임마다 데이타 송신 레지스터(553)내의 워드는 메시지 송신 레지스터(532)로 이동하고, 메시지의 다음 워드는 송신 FIFO들로부터 데이타 송신 레지스터(553)로 인출된다. 송신 FIFO로부터 판독된 이중 워드는 65 비트폭이고, 이것은 각각 32 및 33 비트인 두개의 워드로서 네트워크로 전송된다. 네트워크는 32 및 33 비트 메시지 워드들을 운송하기 위하여 36 비트를 지원한다. 여분의 네트워크 비트는 에러 탐지를 지원하는데 사용될 수 있는데, 이는 본 발명과는 무관하기 때문에 본 명세서에서 기술되지 않는다.
먼저, 싱크 바이트(127)가 비동기 메시지를 수신 노드 클럭에 동기시키기 위하여 수신 노드에 도착한다. 네트워크로부터 도착하는 메시지를 동기시키고 복구(회복)시키는데 사용되는 방법은 올노위츠 등(Olnowich et al.)의 미국특허 제 5,610,953 호 Asynchronous Switch Data Recovery에 개시되어 있다. 이 방법은 본 발명과는 무관하기 때문에, 여기서는 설명되지는 않으며, 단지 도 6에 도시된 포맷으로 도착하는 데이타를 복구시키기 위한 종래 기술의 장치 및 방법이 있다는 정도만을 알려준다. 입력 메시지는 도 11의 블럭(540)에 의해 동기되고 복구된다. 송신 FIFO동작은 메시지가 요구 노드(30)의 송신 FIFO(42)로부터 네트워크(20)를 통하여 목적지 노드(34)의 수신 FIFO(46)으로 전송되어 있기 때문에 이 시점에서 종료된다. 메시지(13A)는 송신 FIFO로부터 제거되고, 이에 따라 FIFO내의 다음 메시지가 FIFO의 머리로 이동하여 네트워크로 전송될 수 있게 된다. 다음 송신 FIFO동작이 즉시 개시되고, 다음 메시지 전송이 진행할 수 있기 전에 요구된 데이타가 리턴될 때까지 기다려야만 하는 제약은 없다. 어느때라도 활성화될 수 있는 원격 인출의 수는 도 16의 활성 원격 판독 파일(640)내에 구현된 레지스터의 수에 의해 제한을 받는다. 바람직한 실시예는 8 개의 활성 원격 인출을 허용하는 8 개의 레지스터를 구현하고 있다. 하지만, 다른 실시예들은 활성 원격 판독 파일(640)내에 16, 32 또는 임의의 수의 레지스터를 구현할 수 있으므로 실질적으로 활성 원격 인출의 수는 제한이 없다 할 것이다.
도 14a,14b,15a,15b 및 15c와 함께 도 11a 및 11b를 보면, 목적지 노드(34)는 다음과 같이 단계(754)로부터 원격 인출 메시지를 수신하고 처리한다. 메시지를 수신할 수신 FIFO(44,45 또는 46)는 수신 FIFO 선택 논리부(510)에 의해 선택된다. 논리부(510)는 메시지가 메시지 헤더 워드(128)내 비트(810)=0,비트(811)=0 및 비트(812)=1에 의해 지시되는 바와 같이 판독 요구 메시지(13A)이기 때문에 수신 FIFO(46)으로 전송될 것이라고 판정한다. 수신 FIFO(46)은 단지 판독 요구 메시지(13A) 및 응답 메시지(13B)만을 수신할 뿐이다. 입력 메시지(13A)는 수신 FIFO(46)의 꼬리부에 저장된다. 수신 FIFO가 메시지(13A)가 FIFO(46)로 저장되는 때 비어 있으면(이 경우는 통상적인 경우임), 메시지는 즉시 수신 FIFO(46)의 머리로 이동하고 처리된다. 수신 FIFO(46)이 비어 있지 않으면, 메시지는 처리되기 전에 이 FIFO의 머리로 이동해야 한다. 프로세싱은 헤더(128)만으로 구성된 메시지를 원격 응답 및 원격 요구 버스(218)를 통하여 수신 노드(34)의 메모리 제어기(210)로 전달하는 것을 수반한다. 메모리 제어기(210)는 판독 요구 메시지(13A)를 블럭(670)으로 저장하고, 이 시점에서부터 메모리 제어기(210)는 원격 판독 요구를 처리한다. 수신 FIFO동작은 이 시점에서 종료하고 메시지는 수신 FIFO(46)으로부터 제거되고, 이에 따라 이 FIFO내의 다음 메시지가 처리를 위해 이 FIFO의 머리로 이동할 수 있게 된다. 노드(30)로 수신될 수 있는 판독 요구 메시지(13A)의 수는 수신 FIFO(46)의 크기에 의해 제한을 받는다. 바람직한 실시예의 경우, 수신 FIFO(46)는 각각이 65 비트인 1K 워드 및 에러 탐지 및 정정을 포함하도록 구현된다. 따라서, 수신 FIFO(46)는 왼전히 채워지기 전에 1K 판독 요구 메시지들까지 저장할 수 있다. 이에 의하면, 수신 FIFO(46)내에 유지되는 원격 판독 요구의 수가 실질적으로 제한이 없게 된다. 수신 FIFO(46)가 채워지면, 다음에 도착하는 원격 요구는 네트워크를 통하여 받아들여지지 않을 것이다. 거부될 것이고, 요구 노드(30)는 목적지 노드(34)의 수신 FIFO(46)내에 이 메시지를 위한 공간이 생겨 네트워크를 통하여 받아들여질 때까지 계속 이 메시지의 전송을 재시도할 것이다.
도 7 및 10과 함께 도 11 및 15를 보면, 단계(754)의 원격 판독 동작은 수신 노드(34)의 메모리 제어기(210)의 메시지 헤더로부터 메모리 어드레스를 생성하는 블럭(670)이 메시지 헤더(128)를 이 헤더가 송신(요구) 노드(30)에서 생성되었던 것과 동일한 메모리 어드레스 워드(826)로 도로 반환하는 때 계속된다. 이것은 단지 요구 노드(30)에서의 동작의 역순일 뿐이다. 목적지 노드(34)에서, 블럭(670)은 메시지 헤더(128)(도 7)로부터 원격 메모리 어드레스 워드(826B)(도 10)를 생성한다. 원격 어드레스(826B)는 목적지 노드(813B)의 노드 메모리(54)를 알아내고 액세스하는데 사용된다. 원격 메모리 어드레스(822B)는 메모리 어드레스 먹스 레지스터(620)로 전달되고 판독 저장 제어 논리부(610)로부터의 먹스 선택(621) 신호의 제어하에 어드레스 버스(240)로 공급(gate)된다. 따라서, 메모리 제어기(210)는 원격으로 전송된 어드레스(826B)에 의거하여 노드 메모리(54)로부터 데이타를 액세스한다. 8 개의 이중 워드의 전체 캐시 라인이 판독/저장 데이타 버스(242)로부터 액세스되고 재생성된 원격 메모리 어드레스 워드(826)과 함께, 원격 판독/저장 메시지 생성 블럭(630)으로 라우팅된다. 모든 원격 판독(요구 또는 응답)은 원격 판독/저장 메시지 생성 블럭(630)에 의해 메시지 포맷으로 변환되고 이 메시지는 네트워크 어댑터(10)의 송신 FIFO(42)로 전송된다.
도 2와 함께 도 15c를 보면, 원격 판독 요구를 위하여, 원격 판독/저장 메시지 생성 블럭(630)은 네트워크를 통하여 요구 노드(30)로 리턴될, 데이타(130)의 캐시 라인을 담고 있는 응답 메시지(13C) 및 메시지 헤더(128)를 생성한다. 응답 메시지(13C)의 헤더(128)는 기본적으로 판독 요구 메시지(13A)에 대해 기술한 것과 동일한 방식으로 생성된다. 또한, 메모리 제어기(210)는 주소지정된 위치가 메모리(54)의 변경가능 영역에 상주하는지 여부를 변경가능 영역 지시기 레지스터(472)의 내용에 기초하여 체크한다. 판독 및 저장 제어 논리(610) 라인(667)에 의해 멀티플렉서(666)에서 선택되었던 원격 어드레스 워드(826B)는 비교기(672)를 사용하여 변경가능 영역 지시기 레지스터(472)에 대해 비교된다. 원격 어드레스 워드(826B)가 변경가능 영역 지시기 레지스터(472)의 내용보다 작으면, 이것은 메모리(54)의 변경가능 영역(222)내에 위치하고 변경가능 영역 신호(673)은 1로 된다. 주소지정된 위치가 메모리(54)의 변경가능 영역(222)내에 상주하면, 원격 판독/저장 메시지 생성 블럭(630)은 변경가능 영역 신호(673)가 1임을 감지하고, 무효화 디렉토리를 변경가능 메모리로부터의 임의의 판독으로 끌어들이기 위하여 그 데이타에 대한 원격 또는 국부 판독인지 여부에 대한 판정이 이루어진다. 유의할 것은, 프로세서(50)가 변경가능 영역 지시기 레지스터(472)의 내용이 노드 메모리(54)에서 가장 높은 순위 어드레스가 되게 프로그램하면, 전체 노드 메모리(54)는 단지 변경가능 메모리(222)만으로 구성될 뿐이라는 것이다. 지시기 레지스터(472)는 변경가능 영역의 위치 또는 범위를 인식하고, 그 범위가 최소 또는 최대 어드레스 값을 나타내는지에 따라, 변경불가능 영역은 그 범위를 넘어서 최대 어드레스 이상에 있든지 아니면 최소 어드레스 이하에 있게 된다.
도 11를 보면, 무효화 디렉토리(32)는 어느 노드(30,34)가 변경가능 데이타의 각 캐시 라인의 복사본을 가지고 있는지에 관한 최신 계정을 보관하고 있다. 이는 변경가능 데이타가 갱신되는 때, 무효화 디렉토리(32)를 사용하여 캐시내의 대응하는 데이타 라인의 무효화를 필요로 하는 노드들을 알아낼 수 있게 하기 위함이다. 따라서, 두개의 상이한 동작들,즉 1) 원격으로 요구된 데이타의 리턴 및 2) 무효화 디렉토리를 통한 데이타 추적(tracking)이 데이타가 메모리(54)의 변경가능 영역(222)로부터 판독되는 때 활성화된다.
1) 원격으로 요구된 데이타의 리턴 - 응답 메시지
도 15a 내지 15c를 보면, 이 기능은 원격으로 요구된 데이타가 이 노드(30)의 메모리(54)의 변경가능 영역(222)내에 있거나 또는 원격 노드(34) 메모리(54)의 변경불가능 영역내에 있는 양 경우에 모두 적용된다. 메모리 제어기(210)의 원격 판독/저장 메시지 생성 블럭(630)은 리턴 메시지 헤더(128)에 대한 목적지 필드(813B)을 생성하는데 수신된 메시지 헤더(128)의 노드 ID 필드(814)를 사용함으로써 응답 메시지를 구성한다. 메모리 영역 비트(815)는 메모리 액세스가 메모리(54)의 변경가능 영역(222)로부터 나온 것이라면 1로 설정되고, 비트(815)는 액세스가 변경불가능 영역(224)으로부터 나온 것이라면 세트되지 않는다. 비트(810 내지 812)가 각각 011로 설정되면, 응답 메시지(13C)를 나타내게 된다. 응답 메시지(13C)의 메모리 어드레스 필드(818)는 블럭(670)에서 유지되고 있는 원격 메모리 어드레스 워드(826B)의 메모리 어드레스 필드(822B)와 같도록 설정된다. 대개, 응답 메시지(13C)의 송신 노드(30) ID 필드(813A)는 메시지를 생성하는 노드(34)에서 노드 ID 레지스터(470)으로부터 적재된다. 워드 카운트 필드(819)는 이진수(16)와 동일한 값을 부여받는다. 이는 메시지가 지금 네트워크(20)를 통한 전송을 위하여 8 개의 이중 워드(854)(도 12) 또는 16 개의 워드를 포함하고 있기 때문이다. 이는 바람직한 실시예의 캐시라인내에 존재하는 이중 워드의 수(8)에 기초한다. 타임 스탬프 필드(817)는 타임 스탬프 레지스터(889)(도 21A)의 내용과 동일하게 설정된다. 타임 스탬프(817)의 목적은 응답 메시지가 발행되었을 때의 시점을 설정하는 것이다. 응답 메시지(13C)가 전달되기 전에 액세스된 데이타(130)가 다시 변경되면, 타임 스탬프를 조사함으로써 캐시 일관성 논리부는 응답 메시지내의 이 데이타(130)가 쓸모없는 것인지 여부를 판정할 수 있을 것이다. 타임 스탬프에 대한 보다 자세한 것은 도 20a-20b 및 21a-20b와 함께 이후에 논의될 것이다.
도 11a 및 15a 내지 15c와 함께 도 2a 및 2b를 보면, 메모리 제어기(210)는 항상 각 데이타 워드당 메모리(54)로부터 변경가능 데이타 비트(850)를 송신 FIFO(42)로 전송한다. 이렇게 하는 것은 요구 노드(30)로 하여금 비트(850)과(815) 양자를 조사하는 것에 기초하여 이 데이타가 캐시될 수 있는지 아닌지를 알게 하기 위함이다. 제어기(210)는 리턴 메시지 헤더(128) 및 8 개의 이중 워드(각각은 비트(850)을 구비함)를 라인(213)을 통하여 송신 FIFO(42)로 전송한다. 상기 기술된 것과 동일한 방식으로, 메시지는 네트워크를 통하여 요구 노드(30)로 전송되며, 단지 차이가 있다면 리턴 메시지가 헤더+16 개의 데이타 워드(130)로 구성된다는 것뿐이다. 리턴되는 메시지는 응답 메시지(13C)이기 때문에 요구 노드(30)의 수신 FIFO(46)로 반환된다. 수신 FIFO(46)는 데이타를 블럭(670)으로의 버스(218)를 통하여 요구 노드(30)의 메모리 제어기(210)로 전송한다. 메시지 헤더 비트(810 내지 812)가 011임에 기초하여 제어기(210)는 메시지가 응답 메시지(13C)임을 결정한다. 이 데이타는 노드 메모리로 저장되지 않고, 원격 메모리 어드레스 생성 응답 라우팅부(670)로부터 응답 데이타 버스(680)를 거쳐 데이타 먹스(675)로부터 프로세서 데이타 아웃 레지스터(604)로 전송된다. 레지스터(604)는 단지 마치 데이타가 국부 노드 메모리(54)로부터 액세스된 것처럼 데이타 버스(202)를 통하여 데이타를 L1 캐시(100) 및 L2 캐시(204)로 전송한다. 국부 판독과의 차이라면 단지 원격 판독이 시간이 보다 많이 걸린다는 것이다. 데이타의 주소는 어드레스 버스(201)를 통하여 리턴된다.
도 2a 및 15a 내지 15c를 좀더 보면, 하나의 경우를 제외한 모든 경우에서, 원격으로 액세스된 캐시 라인은 프로세서 데이타 버스(202) 및 프로세서 어드레스 버스(201)를 통하여 즉시 리턴되어 캐시(100,204)내로 저장된다. 그 한가지 예외적인 경우는 원격으로 인출된 이중 워드(854)의 비트(850)는 1과 같고 헤더 워드(128)내의 비트(815)는 0과 같다는 것이다. 이 특수한 경우는 변경가능 데이타는 메모리(54)의 변경불가능 메모리 영역(224)으로부터 판독되었다는 것을 의미한다. 이러한 경우를 처리하기 위한 알고리즘은 데이타 워드를 캐시불가능한 것으로 취급할 것이다. 이는 데이타가 캐시(100,204)로 저장되지 않는 유일한 경우이다. 이외 모든 다른 데이타는 변경가능 또는 변경불가능 여부에 관계없이, 판독된 메모리의 영역에 관계없이 캐시(100,204)로 저장된다. 종래 기술 캐시(100,204)는 본 발명에서도 사용되고 있으며, 여기서는 그 구성을 고찰하지 않는다. 캐시 라인의 각 이중 워드마다 개별 유효 비트를 구비하는 캐시는 가장 유리한 것일 것이다. 개별 이중 워드 유효 비트는 이 특수한 경우(비트(815) = 0 및 비트(850) = 1에 해당하는 데이타 워드(854)에 대해서는 캐시(100,204)내에 결코 설정되지 않을 것이다. 그 특수한 경우(비트(815)=0 및 비트(850)=1)가 캐시 라인에서 단지 1개의 데이타 워드에만 또는 여러개의 데이타 워드에 적용된다면, 이들은 캐시(100,204)에서 무효인 것으로 표시되고 이 캐시 라인내의 나머지 이중 워드들은 캐시(100,204)내에서 유효한 것으로 표시될 것이다. 이 캐시 라인에 대하여 단지 한개의 유효 비트만을 구비하도록 구현된 캐시(100,204)는 비트(815)=0,비트(850)=1인 하나 또는 그 이상의 이중 워드들을 구비하는 어떠한 캐시 라인도 저장하지 않을 것이다. 어느 한 경우라도, 캐시가 개별 유효 비트를 구비하고 있든지 아니든지 관계없이, 종래 기술 캐시들은 비트(815)=0 ,비트(850)=1인 특수한 경우는 대부분의 시스템에서 통상적으로 일어나는 것이 아니기 때문에 효율적으로 동작할 것이다.
도 2a 및 15a 내지 15b와 함께 도 14a 및 14b를 참조하면, 통상의 경우, 원격으로 판독된 데이타는 프로세서 캐시로 리턴되고 요구된 데이타는 L1 및/또는 L2 캐시(101)에서 국부적으로 사용될 수 있게 된다. 프로세서(50)가 원격 판독을 요구했던 스레드로 재스위칭할 때,프로세서(50)는 단계(732 또는 734)에서 캐시 히트를 얻게 되고 이 스레드는 각각 단계(738 또는 740)에서 실행을 계속한다. 프로세서(50)가 원격 액세스가 종료하기 전에 스레드로 리턴하면, 단계(732 및 734)에서 다시 한번 L1 및 L2 캐시 양쪽에서 캐시 미스가 존재하게 된다. 단계(735)에서, L1/L2 미스 신호(207)는 캐시 라인의 판독을 요구하는 메모리 제어기(210)로 전송된다. 단계(744)에서, 메모리 제어기(210)는 통상적으로 진행하여 이 판독 요구가 국부 또는 원격 메모리(54)을 위한 것인지 여부를 판정한다. 원격 메모리(54)를 위한 것이라면, 단계(760)에서, 활성 원격 판독 파일(640)이 체크되고 비교 일치(651)가 1이 되는데, 왜냐하면 현 메모리 어드레스 워드(826A)에 대하여 진행중인 이전 원격 판독 요구가 존재하기 때문이다. 이 시점에서 메모리 제어기(210)는 동일한 어드레스(826A)에 대하여 또다른 원격 요구를 개시하지 않는다. 대신에, 메모리 제어기(210)는 단지 하나의 행동만을 취하고 다시 현 스레드의 상태를 프로세서(50)에 리턴하여 원격 판독이 진행중임을 알린다. 이는 상기에서 기술된 것과 동일한 방식으로 이루어진다. 다시 말해, 원격 인출 인터럽트 라인(230)을 통하여 프로세서(50)으로 생성된 펄스는 프로세서(50)로 하여금 현재의 스레드가 지연되고 있기 때문에 프로그램 스레드를 스위칭하게 한다. 프로세서(50)는 다른 스레드가 인터럽트된 후 캐시(100,204)에서의 히트 또는 단계(762)에서 임시 저장 장치로부터의 메모리 제어기 응답을 수신할 때까지 이 스레드로 계속해서 리턴하게 된다.
도 15c와 함께 도 18을 보면, 임시 저장 장치(690)가 보다 상세하게 도시되어 있다. 바람직한 실시예의 경우, 임시 저장 장치(690)는 4개의 어드레스(826B) 및 이와 연관된 이중 워드 데이타를 위한 임시 저장 공간을 제공하기 위하여 4개의 레지스터 쌍(691,695;692,696;693,697;694,698)을 포함한다. 이는 매우 드문 경우이기 때문에 이는 많은 저장 공간이다. 원격 응답 메시지에 의해 리턴된 모든 캐시 라인에 대하여, 블럭(670)은 메시지 헤더(128)의 비트(815) 및 각 이중 데이타 워드와 함께 한 비트씩 리턴된 8 개의 비트(850)를 체크한다. 비트(815)는 캐시 라인이 메모리(54)의 변경가능 구역(222)(비트(815)=1)으로부터 액세스된 것인지 또는 변경불가능 구역(224)(비트(815)=0)으로부터 액세스된 것인지 여부를 지시하고, 비트(850)는 각 데이타 워드(854)는 변경가능 또는 변경불가능한 것인지 여부를 지시한다. 액세스된 캐시 라인에 대한 8 비트(850)는 논리적으로 OR되고(도시되지 않음) 이 OR의 결과가 1이고 비트(815)가 0이면, 특수한 경우가 탐지된다. 이 경우, 블럭(150)은 단지 하나의 요구된 이중 워드 및 이와 연관된 비트(815,850)를 임시 데이타 저장부(690)으로 전송한다. 이 새로운 데이타 및 어드레스는 유효(V) 비트(699A 내지 699D)중 하나가 0으로 설정되어 있는 미사용 레지스터 쌍을 찾는다. V=0인 최저 번호 레지스터 쌍이 이 새로운 어드레스 및 비트(815 및 850)와 접속되어 66 비트폭 버스상에 놓이게 되는 연관된 이중 워드(64 비트)를 저장한다. 다음에, 연관된 V 비트(699A-D)는 1로 설정된다. 낮은 번호의 레지스터들(691 내지 694)은 어드레스 워드(826B)를 저장하는 반면, 높은 번호의 레지스터(695 내지 698)은 버스(680)로부터 이중 데이타 워드를 저장한다. 엔트리가 임시 저장 장치(690)로 만들어진 후에 활성 원격 판독 파일(640)의 연관된 V 비트(660A 내지 660H)는 0으로 설정된다 ― 따라서, 마치 데이타가 통상의 경우와 같이 캐시(100,204)로 저장된 것처럼 원격 액세스 동작을 종료하게 된다. 연관된 V 비트(699A 내지 699D)는 이 시점에서 인계받고 프로세서(50)가 임시 데이타 저장 장치(690)로부터 특수한 경우 데이타를 판독할 때까지 1을 유지한다. 데이타는 응답 데이타 버스(680)를 통하여 임시 데이타 저장 장치(690)으로 전송된다. 리턴된 8 개중 단지 하나의 요구된 이중 워드만이 원격 어드레스(826B)와 함께 메모리 제어기(510)의 임시 데이타 저장 공간으로 전송된다. 나머지 7 개의 이중 워드들은 캐시(100,204)가 각 이중 워드에 대하여 개별 유효 비트를 가지고 있지 않다면 제거된다. 하지만, 캐시(100,204)가 각 이중 워드에 대하여 개별 유효 비트를 가지고 있다면, 7 개의 워드는 제거되지 않는다. 데이타는 심지어 비트(815)=0,비트(850)=1임에도 불구하고 통상의 경우처럼 캐시들로 리턴된다. 데이타는 응답 데이타 버스(680)을 거쳐 먹스(675)를 통하여 프로세서 버스(202,201)로 리턴된다. 캐시(100,204)가 개별 유효 비트를 가지고 있다면, 비트(850)이 세트되어 있는 캐시내의 워드는 캐시에서 무효인 것으로 표시된다. 프로세서(50)는 여전히 캐시내의 무효 위치를 액세스할 때 캐시 미스를 얻게 되고, 프로세서(50)는 여전히 임시 데이타 저장 장치(690)로부터 데이타를 얻어야만 할 것이다.
도 15a-15c 및 18을 보면, 원격으로 요구된 이중 워드가 캐시불가능함을 지시하는 특수한 경우(비트(815)=0 및 비트(850)=1)가 기술될 것이다. 통상의 방식으로, 원격 판독 요구를 수행함으로써 지연되었던 스레드로 리턴할 때, 프로세서(50)는 단계(732,734)에서 원격으로 액세스된 데이타를 위하여 먼저 캐시(100,204)를 체크하고 다음에, 데이타를 위하여 메모리 제어기(210)로 이동한다. 특수한 경우, 메모리 제어기(210)는 데이타를 캐시(100,204)로 리턴할 수 없기 때문에, 메모리 제어기는 원격으로 액세스된 데이타를 임시적으로 내부에 저장하고 프로세서(50)가 이 데이타를 다시 요구하기를 기다려야만 한다.
도 14a 및 14b와 함께 도 18을 보면, 프로세서(50)에 의해 전송된 모든 어드레스는 단계(760)에서, 비교기(800A 내지 800D)를 사용하여 어드레스(826A)를 임시 데이타 저장 공간(690)내의 4 개의 임시 어드레스 레지스터들(691 내지 694)에 대하여 병렬로 비교함으로써 처리된다. 프로세서가 임시 데이타 저장 공간(690)내의 위치를 액세스할 때, 비교기들(800A 내지 800D)중 한 비교기의 출력은 1로 되고 OR 게이트를 1로 구동하여 임시 비교(801) 신호를 1로 활성화시킨다. 1로 되는 임시 비교(801)는 데이타 먹스(675)를 선택하고, 이 먹스는 이 먹스(675)를 통하여 프로세서 데아타 아웃 레지스터(604)로 다음에, 프로세서 데이타 버스(202)를 통하여 프로세서(50)로 전송될 임시 판독 버스(804)상의 데이타를 선택한다. 비트(815 및 850)는 데이타와 함께 임시 데이타 저장 장치(690)로부터 임시 판독 버스(804) 및 먹스(675)를 통하여 판독된다. 하지만, 먹스(675)를 통과한 후에, (라인(815A)상의) 비트(815) 및 (라인(850A)상의) 비트(850)는 인버터(809) 및 AND 게이트(806)에 의하여 변환되어 캐시불가(807A) 신호를 형성한다. 캐시불가(807A) 신호는 비트(815)=0,비트(850)=1인 때에만 1로 활성화될 뿐이다. 캐시불가(807A) 라인은 프로세서 데이타 버스(202)의 일부로서 전송되어 캐시(100,204)에게 이 데이타는 캐시에 저장될 수 없음을 알려준다. 이후에, 연관된 유효 비트(699A 내지 699D)는 0으로 리셋되고 임시 데이타 저장(690)으로부터 이 데이타 엔트리를 제거하며 후속 엔트리를 받아들일 수 있도록 연관된 레지스터 쌍을 사용가능한 상태로 만든다.
도 2와 함께 도 15a-15c를 보면, 캐시불가(807A) 신호는 모든 이중 워드와 함께 프로세서 데이타 버스(202)를 통하여 프로세서(50) 및 캐시(100,204)로 전송된다. 국부 메모리(54)에 대한 국부 액세스의 경우, 비트(815)는 판독/저장 데이타 버스(242)와 함께 멀티플렉서(675)로 전송되는 변경가능 영역(673) 신호 라인으로부터 생성된다. 비트(850)는 국부 메모리로부터 판독되어 이미 65 번째 비트로서 판독/저장 데이타 버스(242)상에 존재하고 있다.
바람직한 실시예는 데이타를 프로세서 데이타 버스(202)를 통하여 프로세서 및 캐시로 리턴한다. 이를 위하여, 이 실시예는 프로세서 데이타 버스(202)의 다른 사용자들을 중재하고 간섭해야만 한다. 대안적인 실시예는 2개의 포트를 가진 캐시를 구현함으로써, 제 2 포트상으로 원격 데이타 및 무효화를 수신하고, 따라서 제 1 포트상에서는 프로세서 데이타 버스(202)의 다른 사용자를 간섭하지 않게 될 것이다. 본 발명은 1 포트 또는 2 포트 캐시중 어느 경우에서나 똑같이 잘 동작한다.
2) 무효화 디렉토리(32)를 통한 데이타 추적
도 2,11,20 및 21과 함께 도 10 및 19를 보면, 무효화 디렉토리(32)는 여러가지 방식으로 구현될 수 있지만, 바람직한 실시예는 도 19의 워드(860)를 사용한다. 변경가능 메모리(222)내에 상주하는 각 캐시 라인에 대하여 하나의 워드(860)가 무효화 디렉토리(32)내에 요구된다. 임의의 캐시 라인을 위한 워드(860)는 메모리 제어기(210)에 의해 어드레스 버스(240)를 통하여 메모리(54) 및 네트워크 어댑터(10)로 전송된 어드레스(822)를 사용함으로써 무효화 디렉토리(32)로부터 액세스된다. 하지만, 어드레스(822)는 무효화 디렉토리(32)에 공급되기 전에, 8로 나누기 위하여 오른쪽으로 세번 시프트되고 무효화 어드레스 레지스터(880)로 저장됨으로써 무효화 어드레스가 생성된다. 3 비트 시프트가 필요한 것은 무효화 디렉토리(32)가 매 캐시 라인(매 8 워드)마다 1 워드(860)를 포함하여서 메모리(222)에 변경가능 데이타 워드가 있을 때 무효화 디렉토리(32)에 대하여 요구되는 어드레스 수의 1/8이 존재하기 때문이다. 바람직한 실시예의 경우, 메모리 어드레스(822)는 25 비트로서, 메모리 섹터당 8 메가워드의 변경가능 데이타 및 24 메가워드의 변경불가능 데이타를 주소지정하며, 무효화 어드레스(881)는 21 비트로서 1 메가워드의 무효화 디렉토리(32) 및 64K 워드의 오버플로우 디렉토리(334)를 주소지정한다. 워드(860)는 어느 노드(34)가 대응하는 캐시 라인의 복사본을 액세스하였는지 여부를 나타낸다. 예를 들면, 워드(860)의 필드(862)는 대응하는 캐시 라인의 복사본을 판독하였던 한 (원격 또는 국부) 노드(30,34)의 노드 ID 번호(470)를 담고 있는 하나의 8 비트 필드(862)를 포함한다. 필드(864)는 대응하는 캐시 라인의 복사본을 판독하였던 또다른 노드(34)의 노드 ID 번호(470)를 저장한다. 추가적인 노드 표지(indicia)(ID 번호)는 워드(860)의 확장 어드레스(866) 필드에 의해 지시된다. 워드(860)의 각 엔트리(862,864,866)는 유효 비트 VA(861),VB(863),VC(865)를 각각 구비하고 있는데, 이는 연관된 노드 ID(862,864) 또는 어드레스(866)가 유효(VX=1)한지 아닌지(VX=0) 여부를 정의한다.
도 21a 및 21b를 보면, 무효화 디렉토리(32)가 기술되어 있다. 파워 온 리셋(Power On Reset:POR) 라인(972)이 디렉토리 메모리(332/334) 및 레지스터(870)에 대한 입력이다. 무효화 레지스터(870)는 도 19의 관점에서 이전에 설명된 포맷으로 된 다수의 무효화 디렉토리 워드(860)를 포함하고 필드(861-866)를 포함한다. 방출 라인(cast out line)(418)은 판독 또는 저장 라인(215)과 함께, 무효화 제어 논리부로 입력되고, 이 라인(215)은 또한 타임 스탬프 레지스터(889)로 공급되며 이 레지스터(889)의 출력은 타임 스탬프 라인상에서 갱신/무효화 메시지 생성 블럭(887)으로 공급된다. 제어 라인(345)은 무효화 제어 논리 블럭(412)로부터 메시지 블럭(887)으로 공급되고, 삭제 라인(343)은 확장 어드레스 제어 블럭(340)으로 공급된다. 양방향 확장 어드레스 버스(342)는 확장 어드레스 제어(340), 무효화 어드레스 레지스터(880) 및 무효화 레지스터(870)의 무효화 어드레스 필드(886)를 상호 접속시킨다. 새로운 어드레스는 제어(340)에 의해 버스(342)로 적재되고 삭제 어드레스는 레지스터(880) 또는 레지스터(870)의 필드(886)로부터 제어(340)으로 향하게 된다. 시프트된 어드레스 버스(240)는 레지스터(870)로부터의 확장 어드레스 라인(347)과 함께 무효화 어드레스 레지스터(880)로 입력된다. 레지스터(880)의 출력은 무효화 어드레스 라인(881)상에서 무효화 디렉토리 메모리(332)로 공급된다. 무효화 디렉토리 메모리(332) 및 오버플로우 디렉토리(334) 내용은 저장 버스(860S)를 통하여 무효화 레지스터(870)으로 적재되고, 이 레지스터(870)로부터 판독 버스(860R)를 통하여 판독된다.
도 21b와 함께 도 20b를 보면, 단계(782)에서, 요구 노드 ID는 라인(814)상에서 레지스터(884)로 공급되고 주소지정된 캐시 라인의 복사본을 액세스하고 있는 노드(30,34)를 판정하는데 사용된다 레지스터(884)의 출력은 라인(885)상에서 노드 ID 필드(862 및 864)로 공급되고, 라인(871)상에서 ID 비교기(886A 및 886B)로 공급된다. 노드 ID 레지스터 출력 라인(470)은 ID 비교기들(886C 및 886D)로 공급된다. 노드 ID 필드(862)는 라인(862)상에서 ID 비교기들(886A 및 886C) 및 갱신/무효화 메시지 블럭(887)으로 공급된다. 노드 ID 필드(864)는 라인(864)상에서 ID 비교기들(886B 및 886D) 및 블럭(887)으로 공급된다. 유효화 필드(861,863 및 865)는 OR 게이트(888 및 214)의 출력들과 함께 유효화 비트 체킹 및 제어 블럭(882)으로 공급된다. OR 게이트는 각각 라인(873 및 875)상에서 비교기들(886A 및 886B)의 출력들을 수신한다. OR게이트(214)는 비교기들(886C 및 886D)의 출력들을 각각 수신한다. 유효화 비트 체킹 및 제어 블럭(882)은 제로 적재 라인(883)을 레지스터(870)의 필드(886)에 제공하고 요구 라인(341)을 확장 어드레스 제어 블럭(340)에 제공한다. 메시지 생성 블럭(887)은 입력으로서 원격 라인(216)으로부터의 저장들을 수신하고 출력으로서 무효화/갱신 송신 라인(331)을 제공한다.
도 21a 및 21b를 보면, 동작시에, 무효화 디렉토리(32)의 메모리 부분은 두개의 메모리 섹션들(332,334)로 구성된다. 섹션(332)은 통상의 무효화 디렉토리 메모리를 담고 있고 섹션(334)은 오버플로우 디렉토리를 담고 있다. 양 디렉토리는 도 19에 도시된 동일한 무효화 디렉토리 워드(860)를 포함하고, 오버플로우 디렉토리(334) 워드(860)는 확장 어드레스(866) 필드를 사용하여 다른 오버플로우 디렉토리 워드들(860)을 지시함으로써 확장될 수 있다. 무효화 디렉토리 메모리(332)가 두개의 유효 노드 ID 필드(862,864)를 가지고 있는 때, 다음 어드레스(822)의 도착은 오버플로우를 야기한다. 확장 어드레스 필드(866)는 섹션(334)내에 저장된 또다른 워드(860)를 가리키는데 사용된다. 확장 어드레스 제어 논리부(340)는 오버플로우 디렉토리(334)내의 어느 어드레스가 사용될 수 있는지를 기억하고 있다. 무효화 디렉토리(32)는 제어 논리부(340)로부터 요구 신호(341)를 통하여 확장 어드레스를 요구하고 어드레스는 버스(342)를 통하여 리턴된다. 무효화 디렉토리(32)는 워드(860)의 필드(866)로 확장 어드레스를 저장하고 VC 비트(865)를 유효(VC=1)로 설정하여 이 리스트가 확장 어드레스 필드(866)에 의해 지시되고 있는 또다른 워드(860)로 오버플로우되었음을 나타낸다. 바람직한 실시예의 경우, 오버플로우 디렉토리(334)는 64K 워드를 포함한다.
도 2a,15a,15c,21a 및 21와 함께 도 20a 및 20b를 보면, 무효화 디렉토리(334)에 한 엔트리를 부가시키는 프로세스가 기술될 것이다.
단계(770)에서, 메모리 제어기(210)는 블럭(630)에서 응답 메시지를 생성함으로써 원격으로 요구된 데이타를 리턴할 때, 오른쪽으로 3번 시프트된(블럭(881)) 메시지 헤더(128)의 필드(822B)로부터 어드레스 버스(240)를 통하여 무효화 디렉토리(32)로 메모리 어드레스(822)를 전송한다.
단계(782)에서, 메시지 헤더(128)의 송신 노드 ID(813A)는 또한 요구 노드 ID 버스(814)를 통하여 무효화 디렉토리(32)로 전송되어 레지스터(884)내에 저장된다. 송신 노드 ID(813A) 및 요구 노드 ID(814)는 동일한 값이고, 그 값은 주소지정된 캐시 라인의 복사본을 액세스하고 있는 노드(30,34)를 판정하는데 사용된다.
또한, 단계(770)에서, 무효화 디렉토리 메모리(332)는 시프트된 어드레스(822)를 무효화 어드레스 레지스터(880)로 저장하여 무효화 어드레스(881)가 되게 하고, 대응하는 캐시 라인에 대한 무효화 디렉토리 메모리 섹션(332)로부터 대응하는 첫번째 무효화 디렉토리 워드(860)를 액세스한다. 워드(860)는 무효화 레지스터(870)로 저장된다.
단계(772,774 및 776)에서, 유효화 비트 체킹 및 제어 논리부(882)는 모든 세개의 유효화 비트 VA(861),VB(863),VC(865)를 각각 체크하여 무효 노드 ID 필드(862,864)가 첫번째 워드(860)내에서 사용될 수 있는지 여부를 판정한다.
단계(784 및 786)에서, 유효화 비트 체킹 및 제어 논리부(882)는 노드 ID 필드(862,864)를 레지스터(884)에 저장되어 있는 입력 요구 노드 ID 필드(814)와 비교한다. 일치 비교가 존재하고 연관된 유효 비트(861,863)가 세트되면, 입력 어드레스(814)는 이미 이전 요구로부터 리스트내에 있게 되어 단계(798)에서 어떠한 추가적인 행동이 이 시점에서 취해지지 않는다.
단계(784 및 786)에서 비교가 일치하지 않으면 다음과 같은 경우가 발생한다.
a) 단계(792 및 794)에서, 적어도 하나의 유효 필드 VA(861),VB(863)가 무효(V=0)이면, 하나의 무효 필드(862,864)가 레지스터(884)로부터 송신 노드 ID(814)를 포함하는데 선택된다. 레지스터(884)는 이 선택된 필드(862,864)로 저장되고 이와 연관된 유효 비트(861,863)는 유효(VX=1)로 설정된다. 다음에, 단계(796)에서, 수정된 워드(860)가 무효화 디렉토리(32)의 동일한 어드레스로 재저장되는데, 이는 캐시 라인의 새로운 복사본에 대한 액세스를 무효화 디렉토리(32)에 부가하는 기능을 종료시킨다.
b) 단계(772-776)에서, 양 유효 필드(861,863)가 유효(VX=1)이나 필드(865)가 무효(VC=0)이면, 단계(778)에서, 확장 어드레스 제어부(340)는 라인(342)상에 다음 유효 확장 어드레스를 공급하도록 신호(341)를 통하여 요구된다. 유효 비트VC(865)는 1로 설정되고 확장 어드레스 라인(342)은 워드(860)의 필드(866)로 저장되고 무효화 어드레스 레지스터(880)로 저장된다. 수정된 워드(860)는 첫번째 워드(860)가 되고, 무효화 어드레스 레지스터(880)에 의해 지시되는 바와 같이 이전에 판독되었던 무효화 디렉토리 메모리(332)의 동일한 어드레스로 재저장된다. 단계(790)에서 제어 논리부(882)가 무효화 레지스터(870)를 0으로 클리어시킬 때, 0을 담고 있는 두번째 무효화 디렉토리 워드(860)가 개시된다. 레지스터(884)의 송신 노드 ID(814)는 새로운 노드 #(885) 신호를 통하여 필드(862)로 저장되고, 이와 연관된 유효 비트 VA(861)는 유효(VA=1)로 설정된다. 단계(780)에서, 두번째 워드(860)가 다음에, 지금 라인(342)로부터 확장 어드레스를 가리키고 있는 무효화 어드레스 레지스터(342)로부터의 무효화 어드레스(881)에 기초한 무효화 레지스터(870)로부터 오버플로우 디렉토리(334)로 재저장된다. 제 3,제 4 등의 워드(860)는 동일한 방식으로 생성된다.
c) 단계(788)에서, 3 개의 유효 필드(861,863,865)가 모두 유효(VA=Vb=VC=1)이면, 오버플로우 무효화 디렉토리(334)로부터 제 2 워드(860)를 액세스하는데 확장 어드레스 필드(866)가 사용된다. 오버플로우 디렉토리(334)로부터 액세스된 제 2 워드들(860)은 통상의 무효화 디렉토리 메모리(332)로부터의 워드들(860)과 정확히 동일한 방식으로 처리된다.
도 22를 보면, 확장 어드레스 제어부(340)의 구현예에 대한 블럭도가 도시되어 있다. 무효화 디렉토리(32) 요구 라인(341)은 확장 어드레스 멀터플렉서 선택 및 제어 블럭(970)으로 공급되고, 삭제 라인(343)은 제어부(970) 및 확장 어드레스 삭제 레지스터(952)로 공급된다. 파워 온 리셋 라인(972)은 RAM(960), 무효화 디렉토리(32) 및 다음 확장 어드레스 카운터(950)로 공급된다. 증분 라인(958)은 제어부(970)로부터 다음 확장 어드레스 카운터로 입력된다. 다음 확장 어드레스 카운터(950) 출력 라인(961) 및 확장 어드레스 삭제 레지스터(952) 출력 라인(967)은 멀티플렉서(954)로 공급되고, 이후에 선택 라인(963)의 제어하에 제어부(970)로부터 RAM 어드레스 라인(955)상에서 RAM(960)으로 공급된다. 선택 라인(965)은 제어부(970)로부터 그 입력이 0과 1인 멀티플렉서(965)로 공급된다. 멀티플렉서 출력은 RAM(960)으로 향하는 데이타 기록 라인(957)이다. 확장 어드레스 버스(342)는 무효화 디렉토리(32), 다음 확장 어드레스 카운터(950) 및 확장 어드레스 삭제 레지스터(952)를 카운터(950)로부터 디렉토리(32)로 향하는 새로운 확장 어드레스 및 디렉토리(32)로부터 레지스터(952)로 향하는 어드레스 삭제와 상호 접속한다. 데이타 판독 라인(959)는 RAM(960)으로부터 제어부(970)로 공급된다.
도 21a 및 21b와 함께 도 22를 좀더 보면, 동작시에, 무효화 디렉토리(32)는 요구 라인(341)을 확장 어드레스 먹스 선택 및 제어 블럭(970)쪽으로 활성화시킴으로써 확장 어드레스 버스(342)상에서 확장 어드레스를 요구한다. 확장 어드레스 제어부(340)는 통상적으로 다음 확장 어드레스 카운터(950)내에서 기다리고 있는 다음 확장 어드레스를 가지고 있다. 다음 확장 어드레스 카운터(950)는 확장 어드레스 버스(342)로 공급(gate)되고 즉시 무효화 디렉토리(32)로 전송된다. 다음에, 확장 어드레스 제어부(340)는 다음 요구에 대비하기 위하여 다음 새로운 어드레스를 탐색한다. 확장 어드레스 제어부(340)는 오버플로우 디렉토리(334)내 64 K 어드레스들의 각각과 연관되어 있는 하나의 비트로 구성되어 있는 RAM(960)을 포함한다. RAM(960)의 각 비트는 0 또는 1이며, 0은 미사용 확장 어드레스(866)임을 나타내고, 1은 이전에 사용된 확장 어드레스(866)를 나타낸다.
확장 어드레스 먹스 선택 및 제어 블럭(970)은 증분(958) 신호를 활성화하여 다음 확장 어드레스 카운터(950)는 1 만큼 증감(step)된다. 다음 확장 어드레스 카운터(950)의 값과 같은 먹스(954)로부터의 새로운 RAM 어드레스(955)는 이 RAM을 액세스하여 대응하는 어드레스에 대한 1 비트 데이타를 RAM 데이타 판독을 통하여 판독해내는데 사용된다. 확장 어드레스 먹스 선택 및 제어 블럭(970)은 RAM으로부터 판독된 비트의 값을 판정한다. 그것이 1이면, 증분(958) 신호가 다시 활성화되어 다음 확장 어드레스 카운터(950)는 1 만큼 증감되고 탐색은 다음 가용 어드레스에 대하여 계속된다. 0이 RAM(960)으로부터 판독된 때, 다음 가용 확장 어드레스는 알려져 있었다. 이 다음 어드레스는 이 시점에서 더이상 증분되지 않고 있는 다음 확장 어드레스 카운터(950)내에 저장된다. 확장 어드레스 먹스 선택 및 제어 블럭(970)은 1을 선택하도록 먹스(956)를 제어하고, 이 1을 다음 확장 어드레스 카운터(950)내에 저장된 어드레스로 기록한다. 이것이 나타내는 바는 새로이 발견된 어드레스는 다음 요구를 위해 사용될 것이고, 이 다음 확장 어드레스가 요구될 때 시간을 절약하기 위하여 이 어드레스를 사용중인 것으로 미리 표시해 둔다는 것이다.
오버플로우 디렉토리(334)내의 어드레스 위치를 사용가능하게 하기 위하여, 0이 대응하는 어드레스에 대하여 RAM(960)으로 기록된다. 이를 삭제 동작이라 하며, 여기서 확장 어드레스(866)는 그 이전 사용을 삭제함으로써 사용가능하게 된다. 이 동작은 삭제 신호(343)를 활성화시키는 무효화 디렉토리(32)에 의해 트리거되고, 이 디렉토리(32)는 삭제될 확장 어드레스(866)를 확장 어드레스 삭제 레지스터(952)로 저장한다. 삭제(343)를 활성화하고 삭제될 확장 어드레스(866)를 결정하기 위한 방법은 이후에 설명될 것이다. 확장 어드레스 먹스 선택 및 제어 블럭(970)은 먹스(956)에 대해서는 0을, 먹스(954)에 대해서는 레지스터(952)를 선택함으로써 삭제(343)에 응답한다. 레지스터(952)의 어드레스는 RAM 어드레스(955)상에서 RAM(960)으로 사용되고 삭제될(사용가능하게 될) 데이타의 비트를 선택한다. 확장 어드레스 먹스 선택 및 제어 블럭(970)은 RAM 데이타 기록(957)을 통하여 0을 RAM(960)으로 기록하는 것을 제어하고, 이 동작은 종료하게 된다. 시스템 파워 업(system power-up) 또는 초기화 동안에 파워 온 리셋(972)펄스가 발생되고, RAM(960), 무효화 디렉토리(32), 다음 확장 어드레스 카운터 및 무효화 레지스터(870)의 내용을 모두 0으로 클리어한다.
B) 노드(100)는 데이타를 국부 메모리에 저장한다.
도 2a를 보면, 프로세서(50)는 갱신될(저장될) 메모리 위치의 메모리 어드레스 워드(826)를 L1 캐시(100)으로 전송하고 버스(201)를 통하여 메모리 제어기(210) 및 L2 캐시(204)로 전송한다. 모든 저장들은 라이트쓰루 모드에서 동작한다. 새로운 데이타는 국부 캐시(100,204) 및 공유 메모리로 저장되어야만 한다.
동작시에, 도 15a 내지 15c, 23a 및 23b를 보면, 메모리 제어기(210)는 메모리 어드레스 워드(826A)를 어드레스 버스(201)를 통하여 프로세서 어드레스인 레지스터(606)로 수신하고 메모리 데이타 워드(854)를 데이타 버스(202)를 통하여 프로세서 데이타인 레지스터(602)를 수신함으로써 공유 메모리(54)로의 저장을 제어한다.
단계(846)에서, 메모리 제어기(210)는 저장 동작(830,832)의 어드레스(826A)의 섹터 필드(820A)를 노드 ID 레지스터(470)와 비교한다. 비교가 일치하면, 이 저장이 국부 메모리에 대한 것임을 판정하고, 단계(842)에서 메모리 제어기(210)는 워드(854)를 레지스터(602)로부터 버스(242)를 통하여 국부 노드 메모리(54)로 저장하고, 기록될 메모리 위치를 선택하기 위하여 메모리 어드레스 먹스 레지스터(620)를 통하여 버스(240)로 어드레스(826A)를 전송한다.
단계(844)에서, 메모리 제어기(210)는 비교기(672)내에서 저장 동작의 어드레스(826A)를 변경가능 영역 지시기 레지스터(472)와 비교한다. 이 저장이 메모리(54)의 변경가능 영역(224)에 대한 것임을 판정하면, 이 데이타가 캐시불가여서 어떠한 노드(30,34)에서도 캐시내에 저장될 수 없기 때문에, 더이상 행동이 요구되지 않는다. 이 저장이 메모리(54)의 변경가능 영역(222)에 대한 것임을 판정하면, 단계(848)에서 네트워크 어댑터(10)가 관여하게 된다. 도 11a 및 11b를 보면, 어드레스(822A)는 어드레스 버스(240)를 통하여 무효화 디렉토리(32)로 전송된다. 무효화 디렉토리(32)는 복수의 노드(30,34)간에 캐시 일관성을 유지하기 위하여 저장 동작에 관여하게 된다. 도 21의 무효화 디렉토리(32)는 메모리(54)의 변경가능 영역(222)에서 각 캐시 라인의 복사본을 액세스하였던 노드의 리스트를 포함하고 있다. 단계(848)의 저장 동작은 오래된 데이타를 새로운 데이타(854)로 중복 기록하고 캐시 라인의 모든 복사본은 캐시 일관성을 유지하기 위하여 무효화되거나 갱신된다.
무효화는 무효화 메시지를 네트워크(20)를 통하여, 새로운 데이타를 그 국부 메모리로 저장하고 있는 노드(34) 및 이 저장을 개시했던 노드(30)를 제외한, 변경된 캐시 라인의 복사본을 구비하는 모든 노드들로 전송함으로써 발생한다. 메모리 제어기(210)는 무효화 디렉토리(32)에 신호를 보내어 어드레스 버스(240)상의 어드레스(822A)에 대한 저장은 요구 노드 ID(814) 신호를 통하여 저정 동작을 요구하는 노드의 노드 ID 번호(814)를, 그리고 판독 또는 저장 신호(215)를 통하여 동작 타입의 표시를 전송함으로써 실행되었음을 알린다. 요구 노드 ID 번호(814)는 무효화 디렉토리(32)에 어느 원격 노드(34)가 무효화 메시지를 가지고 있지 않은지를 알리고, 이에 더하여 이 디렉토리(32)는 결코 무효화 메시지를 국부 노드(30)로 전송하지 않는다. 대신에, 이 두개의 노드들은 갱신된다. 이는 양 노드가 갱신된 데이타의 복사본을 수신하고 나머지 노드들은 수신하지 않기 때문이다. 저장을 개시하는 노드(30)와 저장을 수행하는 노드(30)가 동일하다면, 단지 그 하나의 노드만이 갱신된 데이타를 가지며 무효화 메시지를 갖지 않는다.
도 13e에 도시된 바와 같이, 무효화 메시지는 단지 하나의 워드 ― 도 7의 메시지 헤더 워드(128)만으로 구성되어 있다. 무효화 메시지는 OP 코드 비트(810 내지 812)가 101일때 각각 식별된다. 워드 카운트 필드(819)는 0으로 설정되어 이 메시지가 완전히 헤더(128)내에 포함되어 있음을 나타낸다. 본 발명의 일실시예에 있어서, 캐시 라인은 모든 원격 캐시에서 무효화된다. 무효화 메시지를 수신하는 노드(34)가 여전히 갱신된 캐시 라인을 요구하면, 이 노드는 캐시 라인의 갱신된 복사본을 액세스하기 위하여 판독 요구 메시지를 전송해야 한다.
도 21a 및 21b를 보면, 무효화 디렉토리(32)는 무효화 메시지를 생성하여 송신 FIFO(40)로 전송한다. 무효화 디렉토리(32)는 메모리 제어기(210)로부터의 어드레스(240)를 사용하여 무효화 디렉토리 메모리 영역(332)으로부터 제 1 무효화 디렉토리 워드를 액세스한다. 무효화 디렉토리 워드(860)를 조사하여 캐시 라인의 어떠한 복사본이라도 다른 노드(34)에 의해 액세스되었는지 여부를 판정한다. 이것은 도 19의 워드(860)의 유효 비트(861,863,865)를 체크함으로써 판정된다. 세개의 유효 비트(861,863,865)가 모두 0이고, 다른 노드에는 복사본이 전혀 없으면, 어떠한 무효화 메시지라도 전송할 필요가 없고 이 저장 동작은 종료하게 된다. 1로 설정된 각 유효 비트에 대하여, 그것이 제 1 무효화 디렉토리 워드 또는 제 2 무효화 디렉토리 워드내에 있든지 간에, 이 데이타를 저장하고 있는 노드 및 데이타 갱신을 요구하는 노드(30)를 제외하고, 무효화 메시지는 송신 FIFO(40)로 저장된다. 무효화 디렉토리(32)는 무효화 디렉토리 워드(860)의 모든 유효(862 및 864) 필드를 요구 노드 번호(814)와 노드 ID 레지스터(470)의 양쪽과 비교함으로써 데이타(854)를 저장하고 있는 노드의 노드 ID 번호에 대하여 체크한다. 도 21은 비교기(886A 내지 886D)를 사용하는 4 개의 비교를 보여주고 있다. 비교의 어느 세트가 같으면, 연관된 유효 비트는 1로 남게 되고, 어떠한 무효화 메시지도 전송되지 않으며, 무효화 디렉토리(32)는 확장 어드레스(866)가 유효(VC=1)하면 다른 유효(862,864) 필드들을 찾는다.
도 21a 및 21b를 좀더 보면, 동작시에, 요구 노드 번호(814) 또는 국부 노드 ID 레지스터(470)와 같지 않은 유효 필드(862,864)에 대하여, 무효화 메시지가 무효화 메시지 생성 블럭(887)에 의해 생성되어 송신 FIFO(40)로 전송된다. 무효화 메시지(31E)는 필드(862 또는 864)는 무효화 메시지(13E)의 목적지 필드(813B)로 적재되고 비트(815)가 1로 설정되어 저장이 메모리(222)의 변경가능 영역에 대한 것임을 나타내는 것을 제외하고, 임의의 통상의 메시지 헤더(128)와 유사하게 형성된다. 또한, 무효화 메시지(13E)의 타임 스탬프 필드(817)는 타임 스탬프 카운터 레지스터(889)로부터 적재된다. 타임 스탬프 카운터(887)는 연속적으로 증분하는 이진수를 유지하는데, 이 이진수는 무효화와 관련하여 응답 메시지(13C)의 양식으로 변경된 데이타의 판독은 연관된 데이타의 무효화 이전에 또는 이후에 발생하였는지 여부를 알려주는데 사용된다. 판독/저장 신호(215)가 새로운 저장이 무효화 제어 논리부쪽으로 발생하고 있음을 지시할 때마다, 타임 스탬프 카운터(889)가 1씩 증분한다. 타임 스탬프 카운터(889)의 증가된 값은 무효화가 발생한 시점을 정의하기 위하여 무효화 메시지(13E)로 적재된다. 메시지 헤더(128)의 타임 스탬프 필드(817)의 추가적인 사용은 이후에 설명된다.
도 19,21a 및 21b를 다시 보면, 무효화 워드(860)의 유효 비트(861 또는 862)는 이와 연관된 노드 # 필드(862,864)가 무효화 메시지(13E)의 목적지를 정의하는데 사용된 후에 0(VA=VB=0=무효)으로 설정된다. 필드(862,864)가 처리된 (무효화 메시지를 생성하거나 그대로 있게 된) 후에, 이들을 체크하여 어느 한쪽 또는 양쪽이 여전히 유효한지 여부를 확인한다. 어느 한쪽이 유효하지 않으면, 대응하는(862 및 864) 필드들은 레지스터(884)로부터 임의의 상실된 요구 노드 ID 또는 레지스터로부터 국부 노드 ID 번호로 재적재되고, 대응하는 유효 비트(861,863)은 1로 설정된다. 확장 어드레스 버스(342)로부터의 확장 어드레스는 유효 비트(865)가 1(VC=1)이면, 오버플로우 디렉토리내에 또다른 무효화 디렉토리 워드(860)를 찾는데 사용된다. 하지만, 오버플로우 디렉토리(334)를 액세스하기 전에, 레지스터(870)내의 워드(860)의 무효화 비트(865)가 0(VC=0=무효)으로 설정되고, 갱신된 캐시 라인의 복사본을 가지고 있는 노드들중 하나 또는 두개의 유효 노드 번호를 포함하고 있는 수정된 무효화 디렉토리 워드(860)는 무효화 디렉토리(32)로 복구된다. 다음에, 버스(342)로부터 수신된 확장 어드레스는 이전에 유효하였다면, 레지스터(870)의 필드(866)로부터 어드레스 무효화 레지스터(880)로 이동하고, 레지스터(870)으로 저장된 제 2 워드(860)를 주소지정하는데 사용된다. 제 2 워드(860)는 제 1 워드가 처리되는 것과 정확히 동일한 방법으로 처리된다 ― 무효화 메시지를 더 생성하거나 그대로 있게 된다. 다수의 워드들(860)는 유효 비트(865)가 0(VC=0)인 워드가 발견될 때까지 처리된다.
도 21과 함께 도 22를 보면, 모든 제 2 워드들(860)은 수정된 후에 재기록될 필요는 없다. 대신에, 무효화 과정에 관계되는 모든 제 2 워드(860)는 확장 어드레스 제어 논리부(340)를 통하여 다시 사용되도록 사용가능하게 된다. 오버플로우 디렉토리(334)로부터의 각 제 2 워드(860)의 확장 어드레스(866)는 양방향 버스(342)를 통하여 확장 어드레스 제어 블럭(340)으로 리턴되어 확장 어드레스 삭제 레지스터(952)내에 저장된다. 다음에, 무효화 제어 논리부(412)는 삭제 신호(343)를 활성화하고, 어드레스 확장 제어 논리부(340)는 레지스터(952)에 의해 지시된 RAM(960)내의 어드레스에 0을 기록한다. 이전에 설명한 바와 같이, 이는 오버플로우 디렉토리내의 어드레스가 다시 사용될 수 있게 한다.
도 11a를 보면, 라인(333)상의 각 새로운 무효화 메시지(13E)는 송신 FIFO(40)의 꼬리에 저장된다. 각각은 네트워크(20)으로 전송될 자신의 차례를 기다린다. FIFO(40)의 머리에 있는 메시지가 먼저 네트워크로 전송된다. 메시지가 저장될 때에 송신 FIFO(40)가 비어 있다면, 메시지는 즉시 FIFO(40)의 머리로 이동하여 즉시 네트워크(20)로 전송된다. FIFO(40)가 비어있지 않으면, 메시지는 전송되기 전에 FIFO(40)의 머리로 이동해야 한다. 선택자(500)는 세개의 송신 FIFO(40,41,42)사이에서 우선순위 기능을 수행하여 어느 FIFO가 다음 메시지를 전송할 것인지를 결정한다. 바람직한 실시예의 경우, 사용되는 우선순위 알고리즘에서는 송신 FIFO(40)가 그 우선순위가 가장 높고, 송신 FIFO(41 및 42)는 모두 우선순위가 가장 낮다. 이것이 의미하는 바는 송신 FIFO(40)내의 무효화 메시지(13E)는 항상 네트워크(20)로 즉시 전송된다는 것이다.
송신 FIFO(42) 또는 수신 FIFO(46)내에 유지되면서 막 무효화된 어드레스에 대한 오래된 데이타를 포함하고 있는 어떠한 응답 메시지라도 전달되고 처리되지 않도록 주의해야 한다. 송신 FIFO(42) 또는 수신 FIFO(46)내에 유지되고 있는 무효화된 어드레스에 대한 응답 메시지가 있다면, 무효화 메시지(13C)가 응답 메시지(13C)보다 먼저 수신될 수 있어 일관성이 훼손될 것이다. 이러한 문제는 송신 FIFO(42)내의 모든 출력되는 응답 메시지(13C)를 수신 FIFO(46)내의 모든 수신되는 응답 메시지(13C)로써 체크함으로써 방지된다. 이들 메시지(13C)는 요구 노드(30)의 캐시로 리턴될, 원격으로 요구된 데이타를 아직 포함하고 있다. 이러한 상태의 방지는 쓸모없는 데이타를 가지고 있는 동일한 캐시 라인을 담고 있는 응답 메시지(13C)를 전달하는 대신, 제거함으로써 구현된다.
도 24를 보면, 도 11a의 송신 응답 무효화 논리 블럭(338)이 기술될 것이다. 송신 FIFO(42)메시지 송신 레지스터 1(553) 워드폭 메시지 데이타 버스(124)는 타임 스탬프(817) 및 어드레스 필드(813 및 818)를 메시지 헤더(128)로부터 비교기들(891A 내지 891H)로 공급한다. 타임 스탬프(816) 및 어드레스 워드(826)는 레지스터 유효 필드(892A 내지 892H)와 함께, 국부 버스(336A)로부터 레지스터(890A 내지 890H)의 대응하는 필드로 공급된다. 레지스터(892A 내지 892H) 출력은 각각, 비교기들(891A 내지 891H)로 공급된다. (각각, 타임 스탬프(890A 내지 890H)보다 큰) 타임 스탬프(817) 라인들(894A 내지 894H)은 레지스터 저장 및 유효화 제어 블럭(893)으로 공급된다. 비교기(891A 내지 891H) 출력들은 또한 그 출력으로서 송신 FIFO(42)로부터의 메시지 삭제를 의미하는 신호를 생성하는 OR 게이트(895)로 공급된다. 양방향 버스는 또한 레지스터 저장 및 유효화 제어부(893)를 각각의 레지스터(890A 내지 890H)와 상호 접속한다. 레지스터 유효 비트(892A 내지 892H)는 어드레스(820,822) 및 타임 스탬프(816)가 대응하는 레지스터(890A 내지 890H)로 적재되는 때에 1로 설정되고, 타임 스탬프(817)가 타임 스탬프(816)보다 크면 0으로 설정된다.
도 11a,11b,24a 및 24b를 보면, 송신 FIFO(42)로부터 응답 메시지(13C)를 삭제하기 위한 방법 및 구조는 송신 응답 무효화 논리부(338)를 포함한다. 송신 FIFO(40)가 각 무효화 메시지를 네트워크(20)로 전송하는 때, 송신 FIFO(42)는 단지 하나의 송신 FIFO(40,41,42)만이 임의의 정해진 시간에서 전송할 수 있기 때문에 네트워크(20)로 메시지를 전송하지 않는다. 소정의 캐시 라인에 대하여 각각의 무효화 메시지를 전송하는 동안, 송신 FIFO(40)는 어드레스 필드(813,818) 및 그 캐시 라인에 대한 갱신의 타임 스탬프(817)를 버스(336A)를 통하여 송신 FIFO(42)와 연관된 송신 응답 무효화 논리부(338)로 전송한다. 논리부(338)는 8 개의 레지스터(890A 내지 890H)로 된 집합으로서, 각 레지스터는 국부 노드(30)의 노드 메모리(54)로 갱신된 데이타와 함께 저장되어 있는 모든 캐시 라인에 대한 어드레스 필드(813,818) 및 타임 스탬프(817)의 하나의 복사본을 담고 있다. 각 레지스터(890A 내지 890H)의 내용들은 각각 유효 비트(892A 내지 892H)에 의해 유효한 데이타를 담고 있는지 아닌지가 표시된다. 레지스터 저장 유효화 제어 논리부(893)는 무효화 파라미터들(813,818,817)이 버스(336A)를 통하여 도착할 때, 무효화 파라미터들의 각 새로운 집합을 저장하기 위하여 가용 레지스터(890A 내지 890H)를 찾는다. 송신 응답 무효화 논리부(338)는 각 출력 메시지 헤더(128)가 FIFO(42)의 머리로 도달하여 메시지 전송 레지스터(553)내에 놓여지는 때에, 송신 FIFO(42)로부터 네트워크(20)로 전송되어 지는 모든 출력 메시지의 헤더(메시지 전송 레지스터(553)로부터 사용가능함)를 체크한다.
논리부(338)는 비교기(891A 내지 891H)를 사용하여, 모든 레지스터(890A 내지 890H)의 어드레스 필드(820,822) 및 타임 스탬프(816)를 출력 메시지 헤더(128)의 어드레스 필드(813,818) 및 타임 스탬프(817)와 병렬로 비교한다. 어드레스 필드 필적(compare)((820,822)가 (813,818)과 동일함)이 존재하고 출력 메시지의 타임 스탬프(817)가 레지스터(890A 내지 890H)의 타임 스탬프(816)보다 작으면, 이 메시지는 (네트워크(20)를 통하여 전송되지 않고) 송신 FIFO(42)로부터 삭제되고 다음 순차 메시지가 송신 FIFO(42)의 머리로 이동하고 논리부(338)에서 동일한 집합의 비교들을 겪게 된다.
어드레스 필드(813,818)가 동일하지 않으면, 이 메시지는 네트워크(20)로 전송된다. 출력 메시지의 타임 스탬프(817)가 임의의 레지스터(890A 내지 890H)의 타임 스탬프(816)보다 크면, 이와 연관된 레지스터(890A 내지 890H)는 무효화 디렉토리(32)로부터 버스(336A)를 통하여 도착하는 보다 최근의 어드레스 필드(820,822) 및 타임 스탬프(816)를 위한 공간을 마련하기 위하여 클리어된다. 본 발명의 바람직한 실시예의 방법에 따르면, 송신 FIFO(42)내의 다음 메시지가 임의의 레지스터(890A 내지 890H)내에 있는 타임 스탬프(816)보다 시간상 늦은 타임 스탬프(817)을 가지고 있다면, 송신 FIFO(42)내의 모든 메시지가 오래된 데이타가 국부 메모리(54)에서 갱신된 후에 생성되었기 때문에, 대응하는 레지스터(890A 내지 890H)의 어드레스 필드(813,818)에 대한 오래된 데이타를 포함할 수 있는 메시지가 송신 FIFO(42)내에 전혀 없다.
도 11a 및 11b를 좀더 보면, 무효화된 데이타를 담고 있는 캐시 라인들을 가지고 있는 수신 FIFO(46)에서 응답 메시지들을 제거하기 위한 본 발명의 바람직한 실시예의 방법은 수신 응답 무효화 논리부(339)를 포함하고 있다. 수신 응답 무효화 논리부(339)는 수신 FIFO내에 있는 메시지에 적용된다는 점을 제외하고는, 도 24a 및 24b의 관점에서 이전에 설명된 바와 같이, 송신 응답 무효화 논리부(338)가 동작하는 것과 정확히 동일한 방식으로 동작한다. 목적은 원격 노드(34)로부터 네트워크를 통하여 전송되어 온 쓸모없는 데이타를 담고 있는 메시지를 제거하기 위함이다. 쓸모없는 데이타를 가지고 있는 캐시 라인의 복사본이 국부 캐시로 저장되어 있는지 또는 수신 FIFO(46)내에서 처리되기를 기다리고 있는지는 중요하지 않다. 쓸모없는 데이타는 캐시로부터 무효화되거나 수신 FIFO(46)로부터 삭제되어야 한다. 송신 응답 무효화 논리부(338)과 수신 응답 무효화 논리부(339)간의 유일한 차이점은 메모리 제어기(210)가 그 주소(814,818)에 대해서 네트워크로부터 무효화 메시지(13E)를 수신한 후에 어드레스 필드(814,818) 및 타임 스탬프(817)가 버스(336B)를 통하여 수신 응답 무효화 논리부(339)로 전송된다는 점이다.
도 11a 및 11b를 좀더 보면, 네트워크(20)를 통하여 전송된 후에, 무효화 메시지(13E)가 수신 FIFO(44)로 수신된다. 논리부(510)는 메시지 헤더 워드의 비트(810 내지 812)가 각각 101임에 기초하여 수신 FIFO(44)로 이 메시지로 하여금 전달하게 한다. 수신 FIFO(44)는 비트(810 내지 812)가 101인 모든 메시지들을 수신하는데, 왜냐하면 이는 무효화 메시지(13E)를 나타내고 있기 때문이다. 입력 메시지(13E)는 수신 FIFO(46)의 꼬리에 저장된다. 수신 FIFO가 메시지가 FIFO(44)로 저장되는 때 비어 있다면(이는 통상의 경우임), 메시지는 즉시 수신 FIFO(44)의 머리로 이동하여 즉시 처리된다. 수신 FIFO(44)가 비어 있지 않다면, 메시지는 처리되기 전에, FIFO의 머리로 이동해야 한다. 프로세싱은 무효화 어드레스(814,818)를 버스(410)를 통하여 수신 노드의 L2 캐시(204) 및 메모리 제어기(210)로 전달하는 것을 포함한다. L2 캐시가 여전히 복사본을 가지고 있다면, 캐시 라인을 무효화할 것이고, L1 캐시에 또한 여전히 복사본을 가지고 있다면 캐시 라인을 무효시키라고 알린다.
도 15를 보면, 메모리 제어기(210)는 무효화되고 있는 캐시 라인에 대한 활성 원격 판독 파일(640) 엔트리를 가진다면 이 무효화를 통보받는다. 만약 그렇다면, 메모리 제어기(210)는 원격 노드로부터 갱신된 데이타를 판독하기 위하여 동일한 캐시 라인에 대한 또다른 판독 요구 메시지(13A)를 개시한다. 쓸모없는 데이타가 무효화된 캐시 라인에 대하여 리턴될 수 있는 것은 가능하지 않는데, 왜냐하면 쓸모없는 데이타는 응답 메시지(13C)를 생성하는 노드(34)의 송신 FIFO(42)와 무효화 메시지(13E)를 수신하는 노드(30)의 수신 FIFO(46)의 양쪽으로부터 이미 삭제되었기 때문이다. 수신 FIFO 동작은 이 시점에서 종료하고 오래된 캐시 라인은 캐시(100,204)로부터 제거되고, 이에 따라 수신 FIFO(44)내의 다음 메시지가 처리를 위하여 FIFO의 머리로 이동할 수 있게 된다.
c) 노드(30)는 원격 메모리로 데이타를 저장한다.
프로세서(50)가 메모리 제어기로 저장 동작을 수행하고, 갱신되고 있는(저장되고 있는) 캐시 라인의 섹터 어드레스(820)가 노드 ID 레지스터(470)와 같지 않을 때, 저장은 네트워크(20)를 통하여 원격 메모리(54)로 이동한다(go out). 메모리 제어기(210)의 원격 판독/저장 메시지 생성 블럭(630)은 원격 저장 메시지(13B)를 생성하여 메모리 어드레스 워드(826A)에 기초하여 송신 FIFO(41)로 전송한다. 이 경우, 메시지(13B)는 저장 동작에 의해 갱신되고 있는 캐시 라인의 8 이중 워드가 뒤에 이어지게 되는 메시지 헤더 워드(128)로 구성되어 있다. 메모리 어드레스 워드(826A)는 원격 저장 메시지(13B)임을 나타내기 위해 비트(810 내지 812)가 각각 010으로 설정되는 것을 제외하고, 상기한 바와 같이 메시지 헤더 워드(128)로 변환된다. 기타 제어 비트(815,817,819)는 모두 0으로 설정된다. 워드 카운트는 이진수 1000(16)으로 설정되는데, 이는 메시지가 16 개의 데이타 워드들을 포함하고 있음을 나타낸다. 메모리 제어기(210)는 이 16 개의 데이타 워드에 이어지는 메시지 헤더(128)를 버스(211)를 통하여 네트워크 어댑터(10)의 송신 FIFO(41)로 전달한다. 원격 노드로의 모든 저장들은 버스(211)를 통하여 송신 FIFO(41)로 전송된다. 메시지를 송신 FIFO(41)로 저장하는 것은 네트워크 동작을 개시하며, 여기서 노드(30)는 저장 데이타를 원격 노드(34)로 전송하고 있기 때문에 전송 노드가 된다.
도 11a,11b, 및 15a 내지 15c를 보면, 각각의 새로운 메시지는 송신 FIFO(41)의 꼬리에 저장된다. 그것은 네트워크(20)로 전송될 자신의 차례를 기다린다. FIFO의 머리에 있는 메시지는 먼저 네트워크로 전송된다. 선택자(500)는 세개의 송신 FIFO(40,41,42)사이에서 우선순위 기능을 수행하여 어느 FIFO가 다음 메시지를 전송할 것인지를 결정한다. 네트워크(20)로의 전송이 선택된 때, 원격 저장 메시지(13B)는 목적지 필드(813B)에 기초하여 네트워크 라우터 논리부(530)에 의해 라우팅되면서 네트워크를 통하여 이동한다. 원격 수신 노드(34)에서, 입력 메시지는 블럭(540)에 의해 동기되고 복구된다. 수신 FIFO(45)는 비트(810 및 811)가 모두 0이기 때문에, 수신 FIFO 선택 논리부(510)가 저장 메시지를 수신하도록 선택된다. 수신 FIFO(45)는 모든 저장 메시지들을 수신한다. 프로세싱은 메시지 헤더(128) 및 갱신된 캐시 라인을 원격 수신 노드(34)의 버스(216)를 통하여 원격 메모리 제어기(210)로 전달하는 것을 포함한다. 수신 FIFO 동작은 이 시점에서 종료하고 메시지(13B)는 수신 FIFO(45)로부터 삭제되며, 이에 따라 FIFO내의 다음 메시지가 처리를 위하여 FIFO의 머리로 이동할 수 있게 된다.
도 15a 내지 15c를 보면, 원격 저장 동작은 메모리 제어기(210)가 블럭(670)을 사용하여 메시지 헤더(128)를 이전에 송신 노드에서 생성되어있던 동일한 메모리 어드레스 워드(826B)로 반환할 때 계속된다. 재생성된 메모리 어드레스 워드(826B)는 어드레스 워드(826)에 의해 지시된 노드 메모리(54)내의 메모리의 캐시라인을 발견하고 이에 기록하는 데 사용된다. 메모리 제어기(210)는 메모리 어드레스 워드(826)의 메모리 섹터 비트(820)를 노드 ID 레지스터(470)와 비교한다. 비교가 일치하는 것으로 알려지면 어드레스(826)는 수신 노드의 국부 노드 메모리(54)내에 위치한다고 판정한다. 메모리 제어기(210)는 기록될 메모리 위치를 선택하기 위하여 어드레스(826B)를 버스(240)를 통하여 전송한다. 메모리 제어기(210)는 어드레스(826B) 및 새로운 저장 데이타를 L2 캐시(204)로 전송하고, 그래서 캐시는 변경된 캐시 라인의 복사본을 갖게 된다. L2 캐시는 L1 캐시가 캐시 라인을 무효화할 복사본을 가지고 있다면 L1에게 통보할 것이다.
메모리 제어기(210)는 비교기(672)를 사용하여 저장 동작의 어드레스(826)를 변경가능 영역 지시기 레지스터(472)와 비교한다. 저장이 메모리(54)의 변경가능 영역(222)의 외부에 있는 것으로 판정되면, 워드(854)를 메모리(54)에 저장하는 것이외에 더이상 행동은 요구되지 않는다. 저장이 메모리(54)의 변경가능 영역(222)에 있는 것으로 판정되면, 네트워크 어댑터(10)이 관여하게 된다. 어드레스 워드(826)는 오른쪽으로 3 자리 시프트되어 버스(240)를 통하여 무효화 디렉토리(32)로 전송된다. 다음에, 무효화 디렉토리(32)는 요구되는 때 무효화 메시지(13E)를 전송하고 국부 프로세서(50)에 의해 생성된 무효화 메시지(13E)에 대해서는 상기한 방법과 동일하게 기능한다.
D) L2 캐시 캐시 라인을 방출한다.
도 2a-2b 및 15a-15c를 보면, L2 캐시(204)가 입력 캐시 라인을 공간을 마련하기 위하여 최근에 가장 적게 쓰인 캐시 라인을 방출할 때마다, 교체된 캐시 라인의 어드레스(826A)는 어드레스 버스(201)를 통하여 메모리 제어기(210)로 전송된다. 메모리 제어기(210)는 어드레스 워드(826A)를 수신하고 통상의 국부 대 원격 노드 체크를 수행한다. 어드레스(826A)가 국부 어드레스에 대한 것이면, 메모리 제어기(210)는 방출 신호(999)를 활성화하고 레지스터(470)로부터 요구 노드 ID(814) 번호로서 그 소유의 노드 #를 전송하는 동안, (오른쪽으로 세자리 시프트된) 어드레스(826A)의 영역(822A)을 어드레스 버스(240)를 통하여 무효화 디렉토리(32)로 전달한다.
도 21a 및 21를 보면, 무효화 디렉토리(32)는 무효화 어드레스 레지스터(880)로 어드레스(822A)를 수신하고, 요구 노드 ID를 레지스터(884)로 수신한다. 무효화 디렉토리(32)는 무효화 워드(860)(도 19)를 무효화 디렉토리 메모리(332)로부터 레지스터(870)로 판독하고 레지스터(884)내의 노드 ID 번호와 일치하는 (862 또는 864) 필드를 찾는다. 비교(compare)를 발견하면, 유효 비트 체킹 및 제어 블럭(882)은 어드레스 워드(826A)에 의한 캐시 라인 어드레스의 복사본을 가지고 있는 무효화 디렉토리(32)에서 노드(30,34)의 목록(리스트)으로부터 요구 노드를 제거하기 위하여 이와 연관된 유효 비트(861 또는 863)를 바꾼다. 유사한 동작에 있어서, 국부 또는 원격 저장 동작이 이전에 어느쪽 캐시(100,204)에도 존재하지 않았던 L1 또는 L2 캐시(100,204)의 캐시 라인을 교체하려고 하면, 캐시(100,204)는 갱신된 캐시 라인을 저장하지 않는다. 대신에, 캐시(100,204)는 갱신된 캐시 라인의 어드레스(826A)를 버스(201)를 통하여 방출 어드레스로서 리턴한다. 다음에, 메모리 제어기(210)는 위에서 기술된 동일한 절차(프로시져)를 수행하고 방출 캐시 라인의 노드 ID 번호를 무효화 디렉토리(32)내에 저장된 바와 같은 캐시 라인의 복사본을 가지고 있는 노드들의 목록으로부터 제거한다.
다시 도 15a-15c를 보면, 방출 캐시 라인의 어드레스(826A)가 메모리 제어기(210)에 의해 국부 메모리가 아닌 원격 메모리내에 위치하는 것으로 판정되면, 메모리 제어기는 방출 메시지(13F)를 생성한다. 원격 판독/저장 메시지 생성 블럭(630)은 비트(810 내지 812)가 각각 110로 설정되어 이 메시지가 방출 메시지(13F)임을 지시하는 것을 제외하고는, 판독 요구 메시지(13A)를 생성하는 것과 정확히 동일한 방식으로 방출 메시지(13F)를 생성한다. 메시지(13F)는 송신 FIFO(42)로부터 네트워크(20)를 통하여 수신 FIFO(46)로 전송됨으로써, 판독 요구 메시지(13A)가 처리되는 것과 동일한 방식으로 처리된다. 수신 FIFO(46)는 방출 메시지(13F)를 버스(218)를 통하여 이 메시지(13F)를 수신하는 원격 노드(34)의 메모리 제어기(210)로 전달한다. 메모리 제어기(210)는 그것이 방출 메시지임을 판정하고 어드레스(822B), 송신 노드 ID(814) 및 방출 신호(999)를 무효화 디렉토리(32)로 전달한다. 무효화 디렉토리(32)는 상기한 것과 정확히 동일한 방식으로 방출 동작을 처리하고, 대응하는 유효 비트(861 내지 863)를 0으로 설정하여 어드레스 워드(822B)에 의한 캐시 라인 어드레스의 복사본을 가지고 있는 무효화 디렉토리(32)내의 노드들(30,34)의 목록으로부터 요구 노드를 제거한다.
E) 무효화 대신 캐시 갱신
대안적인 실시예는 무효화하는 대신에, 캐시 라인의 복사본을 구비하는 모든 캐시들을 갱신하는 것이다. 이 경우, 캐시 갱신 메시지(13G)가 무효화 메시지(13E) 대신에 네트워크를 통하여 사용된다. 도 2a-2b 및 21a-21b를 보면, 무효화 디렉토리(32)는 무효화 메시지(13E)를 생성하는 것과 유시한 방식으로 블럭(887)에서 캐시 갱신 메시지(13G)를 생성한다. 메시지(13G)의 메시지 헤더(128)는 비트(810 내지 812)가 각각 111로 설정되어 이 메시지가 캐시 갱신 메시지(13G)임을 나타내는 것을 제외하고는, 무효화 메시지(13E)가 생성된 것과 동일한 방식으로 생성된다. 또한, 캐시 갱신 메시지(13G)는 변경된 캐시 라인에 대하여 갱신된 데이타를 포함하고 있는 16 개의 워드로 구성되어 있다. 무효화/갱신 메시지 생성 블럭(887)은 메모리 제어기(210)로 전송되고 있는 갱신된 캐시 라인과 함께 병렬로 수신 FIFO(45)로부터 원격 노드 버스(216)로부터 저장으로부터 갱신된 캐시 라인을 수신한다. 무효화/갱신 메시지 블럭(887)은 갱신된 캐시 라인을 버퍼링하고 다음에, 16 개의 데이타 워드를 메시지 헤더(128)에 부착하여 캐시 갱신 메시지(13G)를 형성한다. 무효화 메시지(13E)와 같이, 캐시 갱신 메시지(13G)는 무효화 디렉토리(32)의 무효화 워드내에 기록된 캐시 라인의 복사본을 가지고 있는 모든 노드로 전송된다. 캐시 갱신 메시지(13G)를 전송하는 동작에 있어 유일한 차이점은 캐시 라인의 복사본을 가지고 있는 모든 노드(30,34)가 대신에 캐시 라인의 갱신된 복사본을 부여받기 때문에 워드(860)가 캐시 갱신 메시지(13G)에 의해 변경되지 않는다는 것이다. 캐시 갱신 메시지(13G)는 무효화 메시지(13E)처럼, 송신 FIFO(42) 및 수신 FIFO(46)을 사용하여 이 노드에서 저 노드로 이동한다.
본 발명의 구체적 실시예들이 예시를 목적으로 본 명세서에 기술되었지만, 본 발명의 사상 및 범주내에서 다양한 변형이 이루어질 수 있음이 인식될 것이다.
따라서, 본 발명의 보호 범위는 첨부된 청구항 및 이에 상당하는 것에 의해서만 제한된다.
본 발명의 시스템 및 방법의 이점은 공유 메모리 및 캐시 일관성을 구비한 스케일가능한 복수의 노드를 포함하는 분산 메모리 시스템이 제공된다는 것이다.
본 발명의 또다른 이점은 다단 네트워크상에서 동작하는 때에 SMP에 사용되는 캐싱 및 멀티 스레딩과 같은 통상의 SMP 성능 향상 기법들이 제공된다는 것이다.
본 발명의 또다른 이점은 각 프로세싱 노드가 공유 메모리 공간의 일부를 포함하고 임의의 노드는 공유 메모리의 국부 영역 또는 네트워크를 통하여 다른 노드에 포함된 공유 메모리의 원격 영역을 액세스할 수 있는 밀결합 시스템은 매우 편리한 방식으로 제공된다는 것이다.

Claims (43)

  1. 스케일가능한 다수의 노드들을 포함하는 분산 스케일가능한 공유 메모리 시스템에 대한 캐시 일관성 제어기에 있어서,
    ① 다수의 저장 워드들을 다수의 캐시 라인중 각 라인내의 주소지정가능한 메모리 위치에 저장하기 위하여 각 노드의 노드 메모리로 분산된 공유 메모리 ― 상기 노드 메모리는 변경가능한 데이타를 위한 제 1 영역과 변경불가능한 데이타를 위한 제 2 영역으로 세분됨 ― 와,
    ② 대응하는 메모리 위치가 변경가능한 또는 불변의 데이타를 포함하는지 여부를 정의하기 위한 상기 저장 워드의 각각과 연관된 상태 비트와,
    ③ 어느 노드가 제 1 영역내의 각 캐시 라인의 복사본을 구비하고 있는지를 기록하고 추적하기 위한 상기 제 1 영역과 연관된 각 노드의 분산 무효화 디렉토리 ― 상기 무효화 디렉토리는 각 캐시 라인을 액세스할 수 있는 노드들의 수를 제한하지 않도록 하기 위하여 오버플로우 디렉토리를 사용함으로써 필요할 때 확장될 수 있음 ― 와,
    ④ 제 1 스레드에 의하여 액세스되고 있는 공유 메모리의 어드레스가 국부 메모리 또는 원격 메모리에 위치하는지 여부를 판정하고, 상기 액세스가 원격이면, 상기 제 1 스레드에 대해 원격 판독이 요구됨을 노드 프로세서에 알려 상기 노드 프로세서로 하여금 프로그램 스레드들을 스위칭함으로써 선택적으로 응답하게 하고, 요구된 저장 워드를 포함하고 있는 캐시 라인에 대한 판독 요구 메시지를 액세스되고 있는 메모리 어드레스를 가지고 있는 원격 노드로 생성하고, 상기 원격 노드로부터 요구된 캐시 라인을 수신하고, 요구된 캐시 라인을 국부 캐시로 저장하고, 요구된 데이타가 사용가능함을 노드 프로세서에게 알리며, 데이타가 메모리의 상기 변경가능 부분내에 상주하는 캐시 라인으로 저장되면, 원격 노드에 저장된 상기 캐시 라인의 복사본을 무효화시키는, 각 노드의 메모리 제어기를 포함하는
    캐시 일관성 제어기.
  2. 밀결합 공유 메모리 프로세싱 시스템에 있어서,
    ① 다단 네트워크와,
    ② 공유 메모리와,
    ③ 상기 다단 네트워크에 의해 상호 접속된 다수의 프로세싱 노드들 ― 각 프로세싱 노드는 상기 공유 메모리의 일영역, 국부 프로세서 및 적어도 하나의 캐시를 포함함 ― 과,
    ④ 데이타를 제 1 노드의 상기 캐시로 기록하고, 선택적으로 동일한 데이타를 상기 제 1 노드의 공유 메모리로 기록하거나 동일한 데이타를 상기 네트워크를 통하여 전송하여 제 2 노드의 공유 메모리의 일영역 및 캐시로 기록하는 수단을 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  3. 제 2 항에 있어서,
    상기 캐시는 단지 국부 프로세서에 의해서만 액세스가능한 전용 라이트쓰루 캐시인 밀결합 공유 메모리 프로세싱 시스템.
  4. 밀결합 공유 메모리 프로세싱 시스템에 있어서,
    ① 다단 네트워크에 의해 상호 접속된 다수의 프로세싱 노드들 ― 각 프로세싱 노드는 상기 시스템의 상기 공유 메모리의 일영역, 국부 프로세서 및 상기 국부 프로세서에 의해서만 액세스가능한 적어도 하나의 전용 캐시를 포함함 ― 과,
    ② 제 1 프로세싱 노드의 상기 국부 프로세서는 데이타를 상기 제 1 노드의 상기 전용 캐시로 기록하고 동시에, 선택적으로 상기 제 1 프로세싱 노드의 공유 메모리로 상기 데이타를 기록하거나 상기 데이타를 상기 네트워크를 통하여 전송하여 제 2 프로세싱 노드의 공유 메모리 및 전용 캐시로 기록하는 수단을 포함하는
    밀결합 공유 메모리 프로세싱 시스템.
  5. 제 4 항에 있어서,
    상기 캐시는 라이트쓰루 캐시인 밀결합 공유 메모리 프로세싱 시스템.
  6. 제 4 항에 있어서,
    각 상기 공유 메모리는 변경되지 않는 데이타를 저장하는 다수의 0 또는 그 이상의 캐시 라인들을 포함하는 제 1 메모리 영역과 변경되는 데이타를 저장하는 다수의 하나 또는 그이상의 캐시 라인을 포함하는 제 2 메모리 영역을 더 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  7. 제 6 항에 있어서,
    이 노드에서 상기 이 노드의 상기 제 2 메모리 영역내에 저장된 데이타를 포함하는 캐시 라인들을 액세스하였던 다른 노드들을 식별하는 무효화 디렉토리를 각 상기 노드에 더 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  8. 제 7 항에 있어서,
    상기 네트워크를 통하여 다수의 다른 프로세싱 노드들의 관점에서 메시지를 전송하고 수신하는 네트워크 어댑터를 상기 각 프로세싱 노드에 더 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  9. 제 8 항에 있어서,
    상기 각 프로세싱 노드는 상기 다수의 프로세싱 노드들중 임의의 노드에 공유 메모리를 판독하고, 저장하며 무효화시키는 수단을 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  10. 제 9 항에 있어서,
    상기 각 프로세싱 노드는 제 1,2,3 및 4 메시지 타입을 전송하고 수신함으로써 상기 다수의 프로세싱 노드들중 임의의 노드에서 공유 메모리를 액세스하는 수단 ― 상기 제 1 메시지 타입은 캐시 라인의 판독을 요구하기 위한 것이고, 상기 제 2 메시지 타입은 요구된 캐시 라인을 리턴하기 위한 것이고, 상기 제 3 메시지 타입은 캐시 라인을 저장하기 위한 것이며, 상기 제 4 메시지 타입은 캐시 라인을 무효화시키기 위함임 ― 을 포함하는 밀결합 공유 메모리 프로세싱 시스템.
  11. 제 10 항에 있어서,
    상기 네트워크 어댑터는
    ① 공유 메모리로부터 데이타를 판독하기 위하여 상기 네트워크로 상기 제 1 및 제 2 메시지 타입을 저장하고 전달하는 제 1 버퍼와,
    ② 공유 메모리로 데이타를 저장하기 위하여 상기 네트워크로 상기 제 3 메시지 타입을 저장하고 전달하는 제 2 버퍼와,
    ③ 공유 메모리의 캐시 라인을 무효화시키기 위하여 상기 네트워크로 상기 제 4 메시지 타입을 저장하고 전달하는 제 3 버퍼와,
    ④ 공유 메모리로부터 데이타를 판독하기 위하여 상기 네트워크로부터 상기 제 1 및 제 2 메시지 타입을 저장하고 전달하는 제 4 버퍼와,
    ⑤ 공유 메모리로 데이타를 저장하기 위하여 상기 네트워크로부터 상기 제 3 메시지 타입을 저장하고 전달하는 제 5 버퍼와,
    ⑥ 공유 메모리의 캐시 라인을 무효화시키기 위하여 상기 네트워크로부터 상기 제 4 메시지 타입을 저장하고 전달하는 제 6 버퍼를 더 포함하는
    밀결합 공유 메모리 프로세싱 시스템.
  12. 제 11 항에 있어서,
    상기 제 3 및 제 6 버퍼는 상기 무효화 디렉토리에 관하여 상기 제 4 메시지 타입을 저장하고 전달하는 밀결합 공유 메모리 프로세싱 시스템.
  13. ① 통신 네트워크와 인터페이싱하는 통신 포트와,
    ② 공유 메모리의 일영역을 포함하는 노드 메모리와,
    ③ 국부 프로세서 ― 데이타를 상기 전용 캐시로 기록하고 동시에 선택적으로 상기 데이타를 공유 메모리의 상기 영역으로 기록하거나 다른 프로세싱 노드의 캐시 및 공유 메모리의 영역을 갱신하기 위하여 상기 데이타를 상기 통신 포트로 적재하는 수단을 포함함 ― 와,
    ④ 단지 상기 국부 프로세서에 의해서만 액세스될 수 있는 적어도 하나의 전용 캐시를 포함하는 공유 메모리 프로세싱 노드.
  14. 밀결합 공유 메모리 프로세싱 시스템을 조작하는 방법 ― 상기 시스템은 다단 네트워크, 공유 메모리, 상기 다단 네트워크에 의해 상호 접속된 다수의 프로세싱 노드를 포함하고, 각 프로세싱 노드는 상기 공유 메모리의 일영역, 국부 프로세서 및 적어도 하나의 캐시를 포함함 ― 에 있어서,
    ① 제 1 노드에서 상기 캐시로 데이타를 기록하는 단계와,
    ② 선택적으로 상기 제 1 노드의 공유 메모리로 상기 데이타를 기록하거나 상기 네트워크를 통하여 상기 데이타를 전송하여 제 2 노드의 공유 메모리의 일영역 및 캐시로 기록하는 단계를 포함하는
    밀결합 공유 메모리 프로세싱 시스템 조작 방법.
  15. 제 14 항에 있어서,
    ① 상기 제 1 노드의 상기 캐시를 액세스하였던 다른 노드들을 식별하는 무효화 디렉토리를 상기 제 1 노드에 유지하는 단계와,
    ② 상기 제 1 노드의 캐시 라인에 대한 변경에 응답하여, 상기 캐시 라인 및 상기 다른 노드들의 복사본을 무효화시키기 위하여 상기 무효화 디렉토리내에 식별돤 다른 노드들로 메시지를 전송하는 단계를 더 포함하는
    밀결합 공유 메모리 프로세싱 시스템 조작 방법.
  16. 공유 메모리 병렬 프로세싱 시스템에 있어서,
    ① 다수의 노드들과,
    ② 상기 다수의 노드들을 상호 접속하는 다단 스위칭 네트워크 ― 상기 다수의 노드중 각각은 노드 메모리, 적어도 하나의 캐시 및 제어기를 포함함 ― 와,
    ③ 상기 다수의 노드의 노드 메모리간에 분산되어 있고 임의의 노드에 의하여 액세스가능한 시스템 메모리 ― 상기 각 노드 메모리는 다수의 주소지정가능한 워드 위치로 구성됨 ― 를 포함하고,
    제 1 노드의 상기 제어기는 시스템 메모리내의 워드 위치에 대한 액세스 요구에 응답하여, 선택적으로 상기 제 1 노드의 노드 메모리로 국부 메모리 액세스를 실행하거나 상기 스위칭 네트워크를 통하여 제 2 노드의 노드 메모리로 원격 메모리 액세스를 실행하고,
    상기 제 1 노드의 상기 제어기는 상기 제 1 노드의 상기 노드 메모리의 워드 위치내에 저장된 데이타에 대한 국부 메모리 액세스 및 원격 메모리 액세스에 응답하여, 액세스된 데이타를 상기 제 1 노드의 캐시내에 캐싱하고 상기 시스템 전역에서 캐시 일관성을 보장하기 위하여 상기 네트워크를 통하여 데이타를 통신하는
    공유 메모리 병렬 프로세싱 시스템.
  17. 제 16 항에 있어서,
    각 노드가 상기 시스템 메모리의 동일한 부분을 포함하도록 상기 시스템 메모리가 상기 다수의 노드 사이로 분산되는 공유 메모리 병렬 프로세싱 시스템.
  18. 제 16 항에 있어서,
    상기 노드 메모리는 각 이중 워드가 65 비트인 순차 이중 워드들로 조직되고, 상기 캐시는 각 캐시 라인이 8 개의 이중 워드를 포함하는 다수의 캐시 라인들로 조직되고, 상기 이중 워드를 위치시키고 액세스하기 위하여 고유한 캐시 어드레스를 배정받는 공유 메모리 병렬 프로세싱 시스템.
  19. 제 16 항에 있어서,
    상기 각 노드 메모리는 변경가능한 데이타를 저장하는 변경가능한 메모리 영역과 변경불가능한 데이타를 저장하는 변경불가능한 메모리 영역을 포함하는 공유 메모리 병렬 프로세싱 시스템.
  20. 제 19 항에 있어서,
    상기 변경가능 메모리 영역과 상기 변경불가능 메모리 영역사이에 노드 메모리를 할당하는 할당 수단을 각 노드에 더 포함하는 공유 메모리 병렬 프로세싱 시스템.
  21. 제 20 항에 있어서,
    상기 할당 수단은, 상기 변경가능 메모리 영역의 범위의 경계값을 저장하여 상기 범위의 경계값내의 모든 메모리 어드레스는 상기 변경가능 메모리 영역내에 속하고 상기 범위의 경계값을 벗어난 모든 메모리 어드레스는 상기 변경가능 메모리 영역내에 속하게 되는 지시자 레지스터를 포함하는 공유 메모리 병렬 프로세싱 시스템.
  22. 제 21 항에 있어서,
    상기 제어기는 상기 변경가능 메모리 영역에 대해서만 캐시 일관성을 제공하는 공유 메모리 병렬 프로세싱 시스템.
  23. 제 22 항에 있어서,
    각 데이타 워드 포맷에 대하여 상기 데이타 워드를 변경가능 데이타 또는 변경불가능 데이타로서 특징지우는 변경가능 표지를 더 포함하는 공유 메모리 병렬 프로세싱 시스템.
  24. 제 23 항에 있어서,
    상기 제어기는 상기 변경불가능 메모리 영역내에 저장되어 있고 상기 표지에 의하여 변경가능한 것으로 특징지워져 있는 데이타 워드가 상기 캐시내에 저장되는 것을 방지하는 동작을 수행하는 공유 메모리 병렬 프로세싱 시스템.
  25. 제 20 항에 있어서,
    한 노드의 상기 노드 메모리의 모두가 상기 변경가능 메모리 영역으로 배정되는 공유 메모리 병렬 프로세싱 시스템.
  26. 노드 식별자 세그먼트 및 메모리 어드레스 세그먼트를 포함하는 어드레스 워드 ― 고유한 노드 식별자 세그먼트가 상기 시스템내의 각 노드에 배정되고, 고유한 메모리 어드레스 세그먼트가 상기 노드 메모리내의 각 주소지정가능한 워드 위치로 배정됨 ― 에 따라 상기 노드 메모리를 주소지정하는 메모리 주소지정 수단을 더 포함하는 공유 메모리 병렬 프로세싱 시스템.
  27. 제 26 항에 있어서,
    상기 메모리 주소지정 수단은 상기 분산 메모리내에서 상기 노드 식별자 세그먼트에 의해 식별된 노드의 상기 메모리 어드레스 세그먼트에 의하여 식별된 주소지정가능한 워드 위치를 액세스하는 동작을 수행하는 공유 메모리 병렬 프로세싱 시스템.
  28. 제 27 항에 있어서,
    상기 메모리 주소지정 수단은 상기 분산 메모리를 다수의 순차 캐시 라인으로 구성하는 동작을 더 수행하는 공유 메모리 병렬 프로세싱 시스템.
  29. 제 28 항에 있어서,
    상기 각 노드의 상기 제어기는 캐시 일관성 제어기를 더 포함하고, 상기 캐시 일관성 제어기는
    ① 캐시 라인이 변경되었던 최종 시점이래로 국부 노드 메모리의 상기 각 캐시 라인의 복사본을 액세스하였던 노드에 대한 노드 식별자 세그먼트의 목록(list)을 저장하는 무효화 디렉토리와,
    ② 상기 각 캐시 라인을 복사하는 노드의 노드 식별자 세그먼트를 상기 무효화 디렉토리에 부가하는 추적 수단과,
    ③ 캐시 라인의 변경에 응답하여 상기 변경된 캐시 라인의 모든 국부 및 원격 노드 복사본을 무효화시키는 무효화 수단을 포함하는
    공유 메모리 병렬 프로세싱 시스템.
  30. 제 29 항에 있어서,
    상기 무효화 디렉토리를 확장하기 위한 오버플로우 디렉토리를 더 포함하고, 상기 추적 수단은 노드 식별자 세그먼트를 상기 무효화 디렉토리 및 상기 오버플로우 디렉토리에 부가하는 동작을 수행하고, 상기 무효화 디렉토리의 확장을 상기 오버플로우 디렉토리에 배정하는 확장 어드레스 생성 수단을 더 포함하는 공유 메모리 병렬 프로세싱 시스템.
  31. 공유 메모리 병렬 프로세싱 시스템의 프로세싱 노드에 대한 캐시 일관성 제어기 ― 상기 노드는 노드 메모리 및 캐시를 포함함 ― 에 있어서,
    ① 상기 캐시 라인이 변경되었던 최종 시점이래로 상기 캐시로부터 캐시 라인을 복사하였던 노드들에 대한 노드 식별자 세그먼트들의 목록을 저장하는 무효화 디렉토리와,
    ② 각 캐시 라인을 복사하고 있는 노드의 노드 식별자 세그먼트를 상기 무효화 디렉토리에 부가하는 추적 수단과,
    ③ 캐시 라인에 대한 변경에 응답하여 상기 변경된 캐시 라인에 대한 상기 무효화 디렉토리내에 기록된 모든 국부 및 원격 노드에서 상기 변경된 캐시 라인의 복사본을 무효화시키는 무효화 수단을 포함하는
    캐시 일관성 제어기.
  32. 제 31 항에 있어서,
    상기 무효화 수단은 상기 변경된 캐시 라인의 복사본을 갱신함으로써 변경된 캐시 라인을 무효화시키는 캐시 일관성 제어기.
  33. 제 31 항에 있어서,
    상기 무효화 디렉토리는 다수의 무효화 워드 ― 적어도 하나의 무효화 워드는 상기 노드 메모리내의 메모리의 각 캐시 라인에 전용되고, 상기 무효화 워드는 다수의 노드 ID 세그먼트 및 대응하는 유효 표지를 포함함 ― 를 더 포함하고,
    상기 추적 수단은 국부 노드 메모리에 대한 각 액세스를 감시하고, 액세스되고 있는 캐시 라인에 대한 상기 무효화 워드를 액세스하고, 상기 액세스를 요구하고 있는 노드의 노드 ID 번호를 유효 노드 ID 번호 필드로서 상기 무효화 워드내에 이전에 무효화되었던 노드 ID 번호 필드에 부가하며, 상기 수정된 무효화 워드를 상기 무효화 디렉토리로 리턴하는 동작을 수행하는
    캐시 일관성 제어기.
  34. 공유 메모리 병렬 프로세싱 시스템의 프로세싱 노드에 대한 캐시 일관성 제어기 ― 상기 노드는 노드 메모리 및 캐시를 포함함 ― 에 있어서,
    ① 상기 캐시 라인이 변경되었던 최종 시점이래로 상기 캐시로부터 캐시 라인을 복사하였던 노드들에 대한 노드 식별자 세그먼트들의 목록을 저장하는 무효화 디렉토리와,
    ② 상기 무효화 디렉토리를 확장하는 오버플로우 디렉토리와,
    ③ 각 캐시 라인을 복사하고 있는 노드의 노드 식별자 세그먼트를 상기 무효화 디렉토리 또는 상기 오버플로우 디렉토리에 부가하는 추적 수단과,
    ④ 캐시 라인에 대한 변경에 응답하여 상기 변경된 캐시 라인에 대한 상기 무효화 디렉토리 또는 오버플로우 디렉토리내에 기록된 모든 국부 및 원격 노드에서 상기 변경된 캐시 라인의 복사본을 무효화시키는 무효화 수단을 포함하는
    캐시 일관성 제어기.
  35. 제 34 항에 있어서,
    상기 추적 수단은,
    (A) 이전에 무효였던 노드 식별자 세그먼트를 포함하지 않고 상기 오버플로우 디렉토리내의 어드레스를 지시하고 있는 유효 확장 어드레스 필드를 가지고 있는 상기 전용 무효화 워드에 응답하여, (1) 국부 노드 메모리의 동일한 캐시 라인에만 단지 전용되는 상기 오버플로우 디렉토리로부터 제 2 무효화 워드를 액세스하고 (2) 액세스를 요구하는 노드의 노드 식별자 세그먼트를 유효한 노드 식별자 세그먼트로서, 이전에 상기 전용 무효화 워드내에서 무효였던 노드 식별자 세그먼트에 부가하고 (3) 수정되고 전용된 무효화 워드를 상기 확장 어드레스에 의해 정의된 어드레스에 대한 상기 오버플로우 디렉토리로 리턴하며,
    (B) 이전에 무효였던 노드 식별자 세그먼트를 전혀 포함하지 않고 무효인 확장 어드레스 필드를 가지고 있는 상기 전용 무효화 워드에 응답하여,(1) 새로운 확장 어드레스 필드를 획득하고 (2) 상기 새로운 확장 어드레스를 유효한 확장 어드레스로서 제 1 무효화 워드에 저장하고 (3) 상기 제 1 무효화 워드를 무효화 디렉토리에 저장하고 (4) 초기에는 모두 0이면서 국부 메모리의 동일한 캐시 라인에만 단지 전용되는 제 2 무효화 워드를 생성하고 (5) 액세스를 요구하는 노드의 노드 ID 번호를 유효한 노드 식별자 세그먼트로서, 이전에 상기 전용 무효화 워드내에서 무효였던 노드 식별자 세그먼트에 부가하고 (6) 상기 오버플로우 디렉토리에 대한 수정된 전용 무효화 워드를 상기 확장 어드레스에 의해 정의된 어드레스로 리턴하는
    캐시 일관성 제어기.
  36. 제 35 항에 있어서,
    상기 무효화 디렉토리는 국부 메모리의 각 캐시 라인에 대하여 하나의 무효화 워드를 포함하고, 상기 오버플로우 디렉토리는 다수의 무효화 워드를 포함하고,
    ① 상기 오버플로우 디렉토리의 각 무효화 워드에 대하여 하나의 유효 비트를 포함하고 있는 독립적(stand alone)메모리를 포함하고 있는 확장 어드레스 생성 수단과,
    ② 다음 확장 어드레스 레지스터 수단과,
    ③ 확장 어드레스 삭제 수단 ― 상기 확장 어드레스 생성 수단은
    ⓐ 상기 다음 확장 어드레스 레지스터 및 상기 모든 독립적 메모리를 모두 0으로 초기화하고,
    ⓑ 상기 다음 확장 어드레스 레지스터내에 저장된 어드레스를 사용하여 상기 다음 확장 어드레스와 연관된 유효 비트를 주소지정하고 기록하고,
    ⓒ 상기 다음 확장 어드레스 레지스터내의 어드레스를 요구되는 때 상기 추적 수단으로 전송하고,
    ⓓ 상기 다음 확장 어드레스를 증가시키고,
    ⓔ 상기 독립적 메모리로부터 상기 다음 확장 어드레스와 연관된 유효 비트를 액세스하고,
    ⓕ 상기 유효 비트를 검사하고 무효이면 이를 유효로 만들고,
    ⓖ 상기 유효 비트가 이전에 무효였다면 상기 추적 수단이 새로운 확장 어드레스를 요구하기를 기다리거나 또는, 상기 다음 확장 어드레스를 증가시켜 무효인 유효 비트를 가지고 있는 어드레스에 대한 검색을 계속하고, 상기 독립적 메모리로부터 상기 다음 확장 어드레스와 연관된 다음 유효 비트를 액세스하고, 상기 다음 유효 비트를 검사하고 무효이면 이를 유효로 만들고,
    ⓗ 상기 추적 수단이 새로운 확장 어드레스를 요구하기를 기다리는
    동작을 수행함 ― 을 더 포함하는
    캐시 일관성 제어기.
  37. ① 통신 네트워크와 인터페이싱하기 위한 네트워크 어댑터와,
    ② 공유 메모리의 일영역을 포함하는 노드 메모리와,
    ③ 국부 프로세서와,
    ④ 상기 국부 프로세서에 의해서만 액세스가능한 적어도 하나의 캐시 ― 상기 국부 프로세서는 상기 전용 캐시로 데이타를 기록하면서 동시에 선택적으로 상기 데이타를 상기 공유 메모리의 영역으로 기록하거나 다른 프로세싱 노드의 캐시 및 공유 메모리의 일영역을 갱신하기 위하여 상기 데이타를 상기 네트워크 어댑터로 적재하는 수단을 포함하고,
    상기 네트워크 어댑터는
    상기 캐시 라인이 변경되었던 최종 시점이래로 상기 캐시로부터 캐시 라인을 복사하였던 노드에 대한 노드 식별자 세그먼트의 목록을 저장하는 무효화 디렉토리와,
    캐시 라인과 같은 데이타 양을 상기 네트워크를 통하여 다수의 원격 노드중 임의의 노드의 원격 메모리로 저장하는 원격 데이타 저장 수단과,
    상기 무효화 디렉토리에 응답하여 상기 다수의 원격 노드 모두에서 상기 캐시 및 캐시들의 일관성을 유지하는 캐시 일관성 수단을 더 포함함 ― 을 포함하는 공유 메모리 프로세싱 노드.
  38. 제 37 항에 있어서,
    ① 국부 메모리 제어기 ― 상기 프로세서는 메모리 어드레스에서 요구 노드로부터의 데이타 액세스 요구에 응답하여 캐시 라인 어드레스 및 데이타의 개시 라인을 상기 국부 메모리 제어기 및 상기 국부 캐시로 (1) 상기 메모리 어드레스가 이러한 국부 노드의 공유 메모리의 그 부분내의 위치를 주소지정하면, 상기 국부 캐시 및 상기 국부 메모리내의 주소지정된 캐시를 변경하고, (2) 상기 메모리 어드레스가 원격 노드의 공유 메모리의 그 부분내의 위치를 주소지정한다면, 상기 국부 캐시, 원격 메모리 및 원격 노드의 원격 캐시내의 주소지정된 캐시 라인을 변경하는 커맨드와 함께 전송함 ― 와,
    ② 상기 캐시 라인 어드레스가 데이타를 상기 국부 메모리로 저장하기 위한 것임을 탐지하자마자 원격 노드로 저장된 상기 캐시 라인의 모든 복사본을 무효화시키기 위하여 상기 무효화 디렉토리를 액세스하는 무효화 커맨드 수단을 더 포함하는 공유 메모리 프로세싱 노드.
  39. 제 38 항에 있어서,
    ① 송신 FIFO와,
    ② 수신 FIFO와,
    ③ 저장 메시지를 생성하고 상기 송신 FIFO 및 상기 수신 FIFO을 제어하여 선택적으로 상기 저장 메시지를 전송 및 수신하는 저장 메시지 프로세싱 수단 ― 상기 저장 메시지는 상기 네트워크를 통하여 원격 노드내의 데이타의 캐시 라인을 변경하는 동작을 수행하고, 데이타 워드의 캐시 라인 및 메시지 헤더를 포함하며, 상기 메시지 헤더는 캐시 라인 어드레스의 섹터 세그먼트와 같은 목적지 노드 표지, 국부 노드의 노드 ID 번호와 같은 소스 노드 표지 및 상기 메모리 어드레스와 같은 메모리 어드레스 표지를 포함하고,
    상기 저장 메시지 프로세싱 수단은 상기 송신 FIFO의 동작을 제어하여 상기 네트워크로, 그 다음 상기 목적지 노드 표지에 의해 선택된 원격 노드로 전송하기 위하여 상기 저장 메시지를 상기 네트워크 어댑터로 저장하고 전달하고, 그후에 상기 저장 메시지를 삭제하고,
    상기 저장 메시지 프로세싱 수단은 상기 수신 FIFO로 수신된 저장 메시지의 메시지 헤더를 변경될 데이타의 캐시 라인의 국부 메모리 어드레스로 변환하고, 상기 메모리 어드레스 및 메시지 데이타를 주소지정된 캐시 라인을 갱신하기 위하여 국부 노드의 캐시 및 국부 메모리로 전달함 ―을 더 포함하는 공유 메모리 프로세싱 노드.
  40. 공유 메모리 프로세싱 노드에 있어서,
    ① 통신 네트워크와 인터페이싱하기 위한 네트워크 어댑터와,
    ② 공유 메모리의 일영역을 포함하는 노드 메모리와,
    ③ 적어도 하나의 국부 캐시와,
    ④ 상기 전용 캐시로 데이타를 기록하면서 동시에 선택적으로 상기 데이타를 상기 공유 메모리의 영역으로 기록하거나 다른 프로세싱 노드의 캐시 및 공유 메모리의 일영역을 갱신하기 위하여 상기 데이타를 상기 네트워크 어댑터로 적재하는 국부 프로세서 ― 상기 네트워크 어댑터는
    송신 FIFO와,
    수신 FIFO와,
    상기 캐시 라인이 변경되었던 최종 시점이래로 상기 캐시로부터 캐시 라인을 복사하였던 노드에 대한 노드 식별자 세그먼트의 목록을 저장하는 무효화 디렉토리와,
    저장 메시지를 생성하고 상기 송신 FIFO 및 상기 수신 FIFO의 동작을 제어하여 선택적으로 상기 저장 메시지를 전송 및 수신하며, 소정의 원격 노드로부터 선택된 캐시 라인에 대한 저장 메시지 및 상기 무효화 디렉토리에 응답하여 상기 캐시 라인을 상기 국부 캐시 및 노드 메모리로 저장하고 캐시 라인 무효화 메시지를 상기 네트워크 어댑터로 제공하여 상기 소정의 원격 노드이외의 모든 원격 노드로 통신하게 하는 저장 메시지 프로세싱 수단을 더 포함함 ― 를 포함하는
    공유 메모리 프로세싱 노드.
  41. 제 40 항에 있어서,
    타임값을 상기 캐시 라인 무효화 메시지로 제공하여 원격 노드로 통신하게 하는 타임 스탬프 레지스터 ― 상기 저장 메시지 프로세싱 수단은 원격 노드로부터 수신된 타임값을 포함하는 캐시 라인 무효화 메시지에 응답하여, 선택적으로 상기 국부 캐시내의 주소지정된 캐시 라인을 무효화시킴 ― 를 더 포함하는
    공유 메모리 프로세싱 노드.
  42. 제 40 항에 있어서,
    상기 저장 메시지 프로세싱 수단은 상기 무효화 디렉토리내의 상기 선택된 캐시 라인의 복사본을 가지고 있는 노드들의 상기 리스트로부터의 상기 선택된 캐시 라인과 관련하여 무효화 메시지를 전송받은 노드들을 삭제하는 동작을 더 수행하는 공유 메모리 프로세싱 노드.
  43. 제 42 항에 있어서,
    상기 저장 메시지 프로세싱 수단은 쓸모없게 된 데이타를 가진 캐시 라인을 포함하고 있는 상기 수신 FIFO내에 저장된 응답 메시지를 무효화시키는 동작을 더 수행하는 공유 메모리 프로세싱 노드.
KR1019980021820A 1997-07-10 1998-06-11 공유메모리프로세싱시스템및그동작방법과,공유메모리프로세싱노드및그에대한캐시일관성제어기 KR100310567B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/891,404 US6092155A (en) 1997-07-10 1997-07-10 Cache coherent network adapter for scalable shared memory processing systems
US8/891,404 1997-07-10
US08/891,404 1997-07-10

Publications (2)

Publication Number Publication Date
KR19990013405A true KR19990013405A (ko) 1999-02-25
KR100310567B1 KR100310567B1 (ko) 2001-11-15

Family

ID=25398132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980021820A KR100310567B1 (ko) 1997-07-10 1998-06-11 공유메모리프로세싱시스템및그동작방법과,공유메모리프로세싱노드및그에대한캐시일관성제어기

Country Status (3)

Country Link
US (2) US6092155A (ko)
KR (1) KR100310567B1 (ko)
TW (1) TW360835B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100817203B1 (ko) * 2006-12-22 2008-03-27 재단법인서울대학교산학협력재단 비휘발성 저장장치의 데이터 판독 방법
KR100871743B1 (ko) * 2004-09-30 2008-12-05 인텔 코오퍼레이션 직접 메모리 액세스 주소 변환을 위한 캐싱 지원
KR20160031012A (ko) * 2013-07-26 2016-03-21 론지튜드 엔터프라이즈 플래시 에스.에이.알.엘. 저장 일관성을 위한 시스템 및 방법

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5914787A (en) * 1992-11-19 1999-06-22 Olympus Optical Co., Ltd. Electronic imaging apparatus
US5862357A (en) 1996-07-02 1999-01-19 Sun Microsystems, Inc. Hierarchical SMP computer system
US6092155A (en) * 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6163801A (en) * 1998-10-30 2000-12-19 Advanced Micro Devices, Inc. Dynamic communication between computer processes
JP2000155751A (ja) * 1998-11-18 2000-06-06 Mitsubishi Electric Corp システムlsi
US6714994B1 (en) * 1998-12-23 2004-03-30 Advanced Micro Devices, Inc. Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
US7552440B1 (en) * 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
US6339812B1 (en) * 1999-09-30 2002-01-15 Silicon Graphics, Inc. Method and apparatus for handling invalidation requests to processors not present in a computer system
US6651157B1 (en) * 1999-10-15 2003-11-18 Silicon Graphics, Inc. Multi-processor system and method of accessing data therein
CN1264091C (zh) * 1999-11-22 2006-07-12 阿茨达科姆公司 分布式高速缓存同步协议
US6810259B1 (en) * 1999-12-16 2004-10-26 Utstarcom Inc. Location update protocol
US6529968B1 (en) * 1999-12-21 2003-03-04 Intel Corporation DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
JP2001256003A (ja) * 2000-03-10 2001-09-21 Hitachi Ltd ディスクアレイ制御装置、そのディスクアレイ制御ユニットおよびその増設方法
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6546465B1 (en) * 2000-08-31 2003-04-08 Hewlett-Packard Development Company, L.P. Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
US7089293B2 (en) * 2000-11-02 2006-08-08 Sun Microsystems, Inc. Switching system method for discovering and accessing SCSI devices in response to query
US7313614B2 (en) * 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US6721846B2 (en) * 2000-12-28 2004-04-13 Gateway, Inc. System and method of providing data images over a network with a local image cache
US6925634B2 (en) * 2001-01-24 2005-08-02 Texas Instruments Incorporated Method for maintaining cache coherency in software in a shared memory system
US20030158941A1 (en) * 2002-02-15 2003-08-21 Exanet, Inc. Apparatus, method and computer software for real-time network configuration
US6956861B2 (en) * 2002-04-16 2005-10-18 Interactics Holdings, Llc Controlled shared memory smart switch system
US6938139B2 (en) * 2002-06-21 2005-08-30 Jp Morgan Chase Bank Method and system for data element change across multiple instances of data base cache
US7925753B2 (en) * 2002-08-30 2011-04-12 Panasonic Corporation Stream data processing apparatus
US20040073649A1 (en) * 2002-08-30 2004-04-15 Satoshi Inami Stream data processing apparatus
US7185150B1 (en) * 2002-09-20 2007-02-27 University Of Notre Dame Du Lac Architectures for self-contained, mobile, memory programming
US6857011B2 (en) * 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
JP4352693B2 (ja) * 2002-12-10 2009-10-28 株式会社日立製作所 ディスクアレイ制御装置及びその制御方法
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US9286214B2 (en) * 2003-06-06 2016-03-15 Arris Enterprises, Inc. Content distribution and switching amongst data streams
US9456243B1 (en) 2003-06-06 2016-09-27 Arris Enterprises, Inc. Methods and apparatus for processing time-based content
US7240143B1 (en) * 2003-06-06 2007-07-03 Broadbus Technologies, Inc. Data access and address translation for retrieval of data amongst multiple interconnected access nodes
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US20050132274A1 (en) * 2003-12-11 2005-06-16 International Business Machine Corporation Creating a presentation document
US20050132273A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Amending a session document during a presentation
US20050132271A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Creating a session document from a presentation document
US9378187B2 (en) * 2003-12-11 2016-06-28 International Business Machines Corporation Creating a presentation document
US7890848B2 (en) 2004-01-13 2011-02-15 International Business Machines Corporation Differential dynamic content delivery with alternative content presentation
US7571380B2 (en) * 2004-01-13 2009-08-04 International Business Machines Corporation Differential dynamic content delivery with a presenter-alterable session copy of a user profile
US7430707B2 (en) 2004-01-13 2008-09-30 International Business Machines Corporation Differential dynamic content delivery with device controlling action
US8499232B2 (en) * 2004-01-13 2013-07-30 International Business Machines Corporation Differential dynamic content delivery with a participant alterable session copy of a user profile
US7827239B2 (en) * 2004-04-26 2010-11-02 International Business Machines Corporation Dynamic media content for collaborators with client environment information in dynamic client contexts
US7519683B2 (en) * 2004-04-26 2009-04-14 International Business Machines Corporation Dynamic media content for collaborators with client locations in dynamic client contexts
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20050262250A1 (en) * 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US20050246502A1 (en) * 2004-04-28 2005-11-03 Texas Instruments Incorporated Dynamic memory mapping
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US8185814B2 (en) * 2004-07-08 2012-05-22 International Business Machines Corporation Differential dynamic delivery of content according to user expressions of interest
US7487208B2 (en) 2004-07-08 2009-02-03 International Business Machines Corporation Differential dynamic content delivery to alternate display device locations
US7519904B2 (en) * 2004-07-08 2009-04-14 International Business Machines Corporation Differential dynamic delivery of content to users not in attendance at a presentation
US7921362B2 (en) * 2004-07-08 2011-04-05 International Business Machines Corporation Differential dynamic delivery of presentation previews
US9167087B2 (en) 2004-07-13 2015-10-20 International Business Machines Corporation Dynamic media content for collaborators including disparate location representations
US7426538B2 (en) 2004-07-13 2008-09-16 International Business Machines Corporation Dynamic media content for collaborators with VOIP support for client communications
EP1771998B1 (en) 2004-07-23 2015-04-15 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
KR20070037650A (ko) 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 종단에서 게이트웨이로 패킷을 라우팅하기 위한 방법 및시스템
US7296167B1 (en) * 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
US20060072563A1 (en) * 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US7395381B2 (en) * 2005-03-18 2008-07-01 Intel Corporation Method and an apparatus to reduce network utilization in a multiprocessor system
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
JP4829038B2 (ja) 2006-08-17 2011-11-30 富士通株式会社 マルチプロセッサシステム
US8099521B2 (en) * 2006-10-26 2012-01-17 Interactic Holdings Inc. Network interface card for use in parallel computing systems
US8291174B2 (en) * 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) * 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US8055852B2 (en) 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US8966103B2 (en) * 2007-12-21 2015-02-24 General Instrument Corporation Methods and system for processing time-based content
US8566362B2 (en) 2009-01-23 2013-10-22 Nasuni Corporation Method and system for versioned file system using structured data representations
US8438337B1 (en) 2009-09-30 2013-05-07 Netlogic Microsystems, Inc. System and method for conditionally sending a request for data to a home node
US8566533B1 (en) 2009-09-30 2013-10-22 Netlogic Microsystems, Inc. System, method, and computer program product for conditionally sending a request for data to a node based on a determination
US20110087833A1 (en) * 2009-10-08 2011-04-14 Advanced Micro Devices, Inc. Local nonvolatile write-through cache for a data server having network-based data storage, and related operating methods
US9361394B2 (en) * 2010-06-30 2016-06-07 Oracle International Corporation Response header invalidation
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
EP2641188B1 (en) 2010-11-16 2018-07-11 Tibco Software Inc. Locking and signaling for implementing messaging transports with shared memory
GB2497736A (en) * 2011-12-16 2013-06-26 St Microelectronics Ltd Hardware monitor with context selector for selecting from multiple contexts
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US9561469B2 (en) * 2014-03-24 2017-02-07 Johnson Matthey Public Limited Company Catalyst for treating exhaust gas
US9898040B2 (en) 2014-11-05 2018-02-20 Kodiak Data, Inc. Configurable dock storage
EP3224744A4 (en) 2014-11-28 2018-08-01 Nasuni Corporation Versioned file system with global lock
US9853855B2 (en) 2014-12-03 2017-12-26 Fortinet, Inc. Stand-by controller assisted failover
US9906596B2 (en) * 2015-01-23 2018-02-27 Kodiak Data Resource node interface protocol
US10375054B2 (en) * 2015-10-06 2019-08-06 Netflix, Inc. Securing user-accessed applications in a distributed computing environment
US10176096B2 (en) * 2016-02-22 2019-01-08 Qualcomm Incorporated Providing scalable dynamic random access memory (DRAM) cache management using DRAM cache indicator caches
US10642780B2 (en) 2016-03-07 2020-05-05 Mellanox Technologies, Ltd. Atomic access to object pool over RDMA transport network
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
NO344681B1 (en) 2017-09-05 2020-03-02 Numascale As Coherent Node Controller
US10452545B1 (en) 2017-10-06 2019-10-22 Veritas Technologies Llc Systems and methods for maintaining cache coherency
US10932202B2 (en) * 2018-06-15 2021-02-23 Intel Corporation Technologies for dynamic multi-core network packet processing distribution
US11656992B2 (en) 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
US11765250B2 (en) 2020-06-26 2023-09-19 Western Digital Technologies, Inc. Devices and methods for managing network traffic for a distributed cache
US11675706B2 (en) * 2020-06-30 2023-06-13 Western Digital Technologies, Inc. Devices and methods for failure detection and recovery for a distributed cache
US11736417B2 (en) 2020-08-17 2023-08-22 Western Digital Technologies, Inc. Devices and methods for network message sequencing

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399504A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
DE3376590D1 (en) * 1982-04-28 1988-06-16 Int Computers Ltd Data processing system
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4811216A (en) * 1986-12-22 1989-03-07 American Telephone And Telegraph Company Multiprocessor memory management method
JPS6481066A (en) * 1987-09-24 1989-03-27 Nec Corp Connection system for multi-processor
US4965719A (en) * 1988-02-16 1990-10-23 International Business Machines Corporation Method for lock management, page coherency, and asynchronous writing of changed pages to shared external store in a distributed computing system
US5218688A (en) * 1988-05-06 1993-06-08 Fujitsu Limited Data processing system with memory-access priority control
WO1990014629A2 (en) * 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5537574A (en) * 1990-12-14 1996-07-16 International Business Machines Corporation Sysplex shared data coherency method
JPH0778774B2 (ja) * 1991-02-22 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション 短待ち時間データ回復装置及びメッセージデータの同期化方法
US5444705A (en) * 1991-02-22 1995-08-22 International Business Machines Corp. Dual priority switching apparatus for simplex networks
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5313609A (en) * 1991-05-23 1994-05-17 International Business Machines Corporation Optimum write-back strategy for directory-based cache coherence protocols
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
CA2086691C (en) * 1992-03-30 1997-04-08 David A. Elko Communicating messages between processors and a coupling facility
US5408653A (en) * 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
US5452447A (en) * 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
US5535116A (en) * 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
US6141692A (en) * 1996-07-01 2000-10-31 Sun Microsystems, Inc. Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol
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
JP3875749B2 (ja) * 1996-08-08 2007-01-31 富士通株式会社 マルチプロセッサ装置及びそのメモリアクセス方法
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6092155A (en) * 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100871743B1 (ko) * 2004-09-30 2008-12-05 인텔 코오퍼레이션 직접 메모리 액세스 주소 변환을 위한 캐싱 지원
KR100817203B1 (ko) * 2006-12-22 2008-03-27 재단법인서울대학교산학협력재단 비휘발성 저장장치의 데이터 판독 방법
KR20160031012A (ko) * 2013-07-26 2016-03-21 론지튜드 엔터프라이즈 플래시 에스.에이.알.엘. 저장 일관성을 위한 시스템 및 방법

Also Published As

Publication number Publication date
KR100310567B1 (ko) 2001-11-15
US6092155A (en) 2000-07-18
TW360835B (en) 1999-06-11
US6343346B1 (en) 2002-01-29

Similar Documents

Publication Publication Date Title
KR100310567B1 (ko) 공유메모리프로세싱시스템및그동작방법과,공유메모리프로세싱노드및그에대한캐시일관성제어기
KR100321836B1 (ko) 메모리제어기및그조작방법
US6801984B2 (en) Imprecise snooping based invalidation mechanism
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US5875462A (en) Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US6457100B1 (en) Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
JP3900481B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システムを操作する方法、メモリ制御装置、メモリ・システム、該メモリ・システムを含むノード及びnumaコンピュータ・システム
US6738868B2 (en) System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
JP3900479B2 (ja) システム・メモリに組み込まれるリモート・メモリ・キャッシュを有する不均等メモリ・アクセス(numa)データ処理システム
US6493801B2 (en) Adaptive dirty-block purging
JP3898984B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム
US7376793B2 (en) Cache coherence protocol with speculative writestream
KR20000036144A (ko) 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JP2000112910A (ja) 非一様メモリ・アクセス・コンピュ―タ・システム及びその操作方法
EP1537485B1 (en) Reverse directory for facilitating accesses involving a lower-level cache
US10437725B2 (en) Master requesting missing segments of a cache line for which the master has coherence ownership
US7797495B1 (en) Distributed directory cache
KR100348956B1 (ko) 재실행 요구를 촉진하여 대기시간을 감소시키는 비균일 메모리액세스 데이터 프로세싱 시스템
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
JPH07152647A (ja) 共有メモリマルチプロセッサ

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
LAPS Lapse due to unpaid annual fee