KR100321836B1 - 메모리제어기및그조작방법 - Google Patents

메모리제어기및그조작방법 Download PDF

Info

Publication number
KR100321836B1
KR100321836B1 KR1019980021819A KR19980021819A KR100321836B1 KR 100321836 B1 KR100321836 B1 KR 100321836B1 KR 1019980021819 A KR1019980021819 A KR 1019980021819A KR 19980021819 A KR19980021819 A KR 19980021819A KR 100321836 B1 KR100321836 B1 KR 100321836B1
Authority
KR
South Korea
Prior art keywords
node
memory
cache
remote
message
Prior art date
Application number
KR1019980021819A
Other languages
English (en)
Other versions
KR19990013404A (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 KR19990013404A publication Critical patent/KR19990013404A/ko
Application granted granted Critical
Publication of KR100321836B1 publication Critical patent/KR100321836B1/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
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

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

Abstract

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

Description

메모리 제어기 및 그 조작 방법{MEMORY CONTROLLER FOR CONTROLLING MEMORY ACCESSES ACROSS NETWORKS IN DISTRIBUTED SHARED MEMORY PROCESSING SYSTEMS}
본 발명은 복수의 노드들이 상호 접속 네트워크상에서 메시지를 경유하여 서로 통신하고 시스템의 전체 메모리를 공유하는 디지털 병렬 프로세싱 시스템에 관한 것으로서, 특히 본 발명은 모든 시스템 노드들 사이에 공유 메모리를 분산시켜 각 노드가 전체 메모리의 일부를 구현하는 것에 관한 것이다. 보다 구체적으로는, 본 발명은 각 노드에 국부 캐시(local cache)를 포함하는 밀결합 시스템(tightly coupled system)에 관한 것이며, 또한 분산 디렉토리, 무효화(invalidation), 판독 요구 및 라이트쓰루 갱신을 사용하여 네트워크 전역에서 효율적으로 캐시 일관성(cache coherency)을 유지하기 위한 방법에 관한 것이다.
계산 및 서버 시스템에 대하여 점점 높은 프로세서 성능이 요구됨에 따라, 보다 좋은 성능을 제공하는 데에 공유 메모리 프로세서(shared memory processors : SMP)가 중요한 옵션이 되어 가고 있다. SMP는 공통 메모리 풀(common memory pool)을 공유하는 다수의 프로세서들로 구성되는데, 이 메모리 풀의 일부 또는 대부분은 각 프로세서로부터 원격지에 위치한다. 기본적으로 두 가지 타입의 멀티프로세싱 시스템이 존재하는데, 밀결합(tightly coupled) 시스템과 소결합(loosely coupled) 시스템이 그것이다. 밀결합 멀티프로세서에서는, 공유 메모리가 모든 프로세서들에 의해 사용되고, 전체 메모리는 단일 운영 체제에 의해 관리된다. 소결합 멀티프로세서에서는, 공유 메모리가 전혀 없고, 각 프로세서는 원할 경우 네트워크로부터 적재될 수 있는 배타적인 메모리를 구비한다.
밀결합 시스템이건 소결합 시스템이건, 원격 노드 또는 원격지로부터 메모리 액세스는 필수적이다. 국부 메모리에 비해 원격 메모리 액세스는 훨씬 더 느린 과정이며, 따라서 원격 액세스를 가능하게 하는 성능 향상 기법들이 필요하다. 첫 번째 성능 기법은 각 프로세서에서 국부 캐시(대개 몇 개 레벨의 캐시임)를 사용한다. 캐시 메모리는 본 기술분야에서 고성능 국부 메모리로서 알려져 있으며, 공유 메모리 또는 네트워크에서 트래픽 문제를 완화시키는 것으로 잘 알려져 있다. 캐시 메모리는 공유 메모리로부터 검색(retrieve)된 데이터 라인을 캐싱하기 위한 데이터 어레이로 구성되는데, 여기서 캐시 데이터 라인은 공유 메모리와 캐시사이의 전송의 기본 단위이다. 캐시 크기는 제한되어 있기 때문에, 캐시는 또한 캐시 라인을 공유 메모리로부터 캐시 데이터 어레이 내의 소정의 위치로 매핑하기 위한 디렉토리를 포함한다. 캐시는 인스트럭션 또는 데이터를 포함하고 있는데, 캐시 라인의 재충전(refill) 요구가 있기 전의 시간동안 프로세서의 요구를 충족시킨다. 데이터 라인이 캐시에서 발견되면, 캐시 "히트(hit)"가 발생하였다라고 한다. 그렇지 않으면, 캐시 "미스(miss)"가 검출되고 캐시 라인의 재충전이 필요하게 되는데, 여기서 재충전은 최근에 가장 적게 사용된 캐시 라인을 대체한다. 멀티프로세싱 시스템이 분산된 공유 메모리로 구성되는 경우, 재충전은 네트워크상에서 상이한 노드 내에 위치하는 국부 공유 메모리 또는 원격 공유 메모리로부터 발생할 수 있다. 통상적으로, 캐시들은 "라이트백(wright back)" 또는 "라이트쓰루(wright through)"중 어느 하나로서 분류되어 왔다. 라이트쓰루 캐시에 있어서는, 변경된 데이터는 즉시 공유 메모리로 저장되므로 가장 최근 데이터가 항상 공유 메모리에 상주하게 된다. 라이트백 캐시에 있어서는, 변경된 데이터는 캐시 내에 보존되고, 다른 노드가 그 데이터를 요구하거나 캐시 내에서 그 데이터가 대체되는 경우에만 공유 메모리로 기록될 뿐이다.
원격 노드에서 프로그램의 실행 및 공유 메모리로부터 변수의 인출은 많은 프로세서 사이클 시간(가장 양호한 경우에도 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 Independent Data-driven Instruction Streams"에 개시되어 있다. 멀티스레딩 기법은 프로세서가 원격 메모리로부터 데이터를 인출해야 하기 때문에 정지(stalled)되는 때의 시간을 사용하고, 다른 태스크(또는 스레드) 상에서 동작하도록 상기 프로세서를 전환시킨다.
전통적으로, 캐시 일관성은 윌슨 주니어 등(Wilson, Jr. et al.)의 미국 특허 제 4,755,930 호 "Hierarchical Cache Memory System and Method"에 개시된 바와 같이, 다수의 프로세서들과 원격 메모리를 상호접속시키는 멀티드롭 버스(multi-drop bus)를 사용하여 제어된다. 멀티드롭 버스를 사용하면, 캐시 갱신은 비교적 단순한 동작이 된다. 상기 버스는 모든 프로세서들을 동시에 구동시키기 때문에, 각 프로세서는 원격 메모리로의 저장 동작을 탐지하기 위해 버스를 스누핑(snoop)할 수 있다. 변수가 원격 메모리로 저장될 때마다, 각 프로세서는 기록이 이루어질 원격 메모리의 어드레스를 포착(capture)함으로써 저장 동작을 스누핑한다. 다음에, 각 프로세서는 상기 변수의 복사본이 존재하는지 여부를 판단하기 위해 자신의 국부 캐시를 탐색한다. 존재하면, 상기 변수는 대체되거나 무효화된다. 존재하지 않으면, 어떠한 동작도 취해지지 않는다.
캐시 일관성은 네트워크상에서는 쉽지 않다. 이는 네트워크는 스누핑될 수 없기 때문이다. 네트워크는 어느 때라도 다수의 접속을 설정한다. 하지만, 각각의 접속은 다수의 노드들 중 두개의 노드사이에 설정된다. 따라서, 데이터의 전송에 관여하는 두개의 노드를 제외하고는 다른 노드들은 데이터를 감지할 수 없으며, 이를 스누핑할 수도 없다. 브로드캐스트 모드에서만 동작하는 네트워크를 구성하면, 모든 프로세서가 시스템에서의 모든 데이터 전송을 감지할 수 있다. 제이. 샌드버그(J. Sandberg)는 이러한 접근법을 미국 특허 제 5,592,625 호 "Apparatus for Providing Shared Virtual Memory Among Interconnected Computer Nodes withMinimal 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 onlymessages)를 방송하거나 또는 하나의 중앙 디렉토리를 사용하는 스누핑 프로토콜은 보다 많은 수의 노드로 스케일링하는데 적합한 해법이 아니기 때문에, 최근 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) 공유 메모리 유닛으로 분할하는데, 각 유닛은 고유하게 어드레스(address)될 수 있고 네트워크로/로부터의 전용 포트를 구비하고 있다. 이에 의하면, 트래픽을 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를 네트워크 어댑터 내에 구현함으로써 네트워크상에서 원격 노드로부터의 캐시 라인의 판독 및 무효화를 지원하는 것이다.
본 발명의 목적은 공유 메모리 영역을 변경가능 또는 변경불가능 데이터를 포함하는 것으로 표시하고 각각의 데이터 이중 워드는 보다 효율적인 캐시 일관성 시스템을 제공하기 위하여 변경가능 또는 변경불가능 데이터인 것으로 표시하는 것이다.
본 발명의 또 다른 목적은 원격 데이터의 요구, 원격 데이터의 무효화, 원격데이터의 저장 및 원격 판독 요구에 대한 응답을 위하여 네트워크를 통하여 전송할 특수한 목적의 작고 효율적인 메시지 집합을 제공하는 것이다.
도 1a 및 도 1b는 도 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, 11c는 도 11에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 3 개의 송신 FIFO, 3 개의 수신 FIFO 및 무효화 디렉토리를 포함하는 네트워크 어댑터를 보다 상세히 도시한 다이어그램 및 이에 대한 인터페이스를 도시한 다이어그램.
도 12는 본 발명의 바람직한 실시예에 따라 이중 워드와 제어비트로 구성된 메모리 데이터 워드의 조직(구조)을 도시한 다이어그램.
도 13a 내지 13g는 본 발명의 바람직한 실시예에 따라 네트워크를 통하여 통신하는데 사용되는 7 개의 상이한 메시지 타입의 포맷을 도시한 다이어그램.
도 14a 및 14b는 도 14에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 공유 메모리로부터 데이터를 판독하는 때 프로세서 동작에 대한 흐름도.
도 15a, 15b, 15c, 15d는 도 15에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 국부 및 원격 판독 및 기록을 모두 처리하기 위한 논리를 포함하는 메모리 제어기를 보다 상세히 도시한 다이어그램 및 이에 대한 인터페이스를 도시한 다이어그램.
도 16은 본 발명의 바람직한 실시예에 따른 메모리 제어기의 일부인, 현재 진행중인 원격 판독 동작을 추적하기 위한 논리를 보다 상세히 도시한 다이어그램.
도 17은 본 발명의 바람직한 실시예에 따라 네트워크 어댑터의 네트워크 라우터 논리를 보다 상세히 도시한 다이어그램.
도 18a와 18b는 도 18에 도시한 바와 같이 배치되고 본 발명의 바람직한 실시예에 따라 메모리 제어기의 임시적인 데이터 저장 유닛을 보다 상세히 도시한 다이어그램.
도 19는 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 저장된 각 무효화 워드의 구성을 도시한 다이어그램.
도 20a 및 20b는 도 20에 도시된 바와 같이 배치되고, 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 한 엔트리를 첨가하기 위한 동작에 대한 흐름도.
도 21a 및 21b는 도 21에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 무효화 디렉토리에 한 엔트리를 첨가하기 위한 동작에 대한 블럭도.
도 22는 본 발명의 바람직한 실시예에 따르는 무효화 디렉토리의 확장 어드레스 제어에 대한 블럭도.
도 23a 및 23b는 도23에 도시된 바와 같이 배치되어 있고, 본 발명의 바람직한 실시예에 따라 공유 메모리로 데이터를 저장하기 위한 프로세서 동작에 대한 흐름도.
도 24a, 도 24b, 24c는 도 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: 임시 데이터 저장 장치
복수의 프로세싱 노드를 포함하는, 공유 메모리 병렬 프로세싱 시스템을 위한 캐시 일관성 시스템이 제공된다. 다단 통신 네트워크가 상기 프로세싱 노드들을 상호접속하기 위하여 제공된다. 각 프로세싱 노드는 다수의 캐시 라인들을 저장하기 위한 하나 이상의 캐시를 포함한다. 노드들 중 어떤 노드가 각 캐시 라인의 복사본을 가지고 있는지를 추적하기 위하여 캐시 일관성 디렉토리가 각 노드에 분배된다. 다수의 송신 FIFO 및 수신 FIFO가 각 노드 어댑터에 사용되어 캐시 일관성을 필요로 하는 무효화 함수, 원격 저장 및 판독 요구를 분리하여 다룬다.
본 발명에 따르면, 캐시 일관성 네트워크는 스케일가능한(scalable) 복수의 노드들을 상호접속하는데 고속 다단 네트워크를 사용하여 밀결합 멀티프로세서 시스템을 구현한다. 각 노드는 국부 캐시를 구현하고 캐시 일관성은 네트워크에 걸쳐 유지된다. 각 노드는 네트워크에 걸쳐 빠른 경로 모드 및 캠프 온(camp-on) 모드 연결을 구현하는 네트워크 어댑터를 통하여 네트워크를 인터페이스한다. 거부되면, 캠프 온 모드에서 대체 경로 시도가 뒤따르게 되는 연결을 설정하기 위하여 하나의 빠른 경로 시도가 이루어진다.
캐시 일관성을 요구하는 무효화 함수, 원격 저장 및 원격 판독을 분리하여 다루기 위해 각 노드 어댑터에서 세 개의 송신 FIFO 및 세 개의 수신 FIFO가 사용된다. 송신 FIFO 1 및 수신 FIFO 1은 네트워크에 걸쳐 메시지를 무효화시키기 위해 예약된다. 송신 FIFO 2 및 수신 FIFO 2는 네트워크에 걸쳐 변경가능 데이터에서만 발생할 수 있는 저장 동작을 제어하기 위해 예약된다. 송신 FIFO 3 및 수신 FIFO 3은 네트워크에 걸쳐 판독 요구 메시지 및 응답 메시지를 모두 포함하는 원격 판독 동작을 제어하는 역할을 수행한다. 각 노드의 메모리 제어기는 원격 노드가 어드레스되는 때 네트워크로 메시지들을 생성하여 특정 FIFO로 이들을 전송함으로써 네트워크로 전송되도록 한다.
본 발명의 바람직한 실시예에 따라, 고속 다단 네트워크를 사용하여 스케일가능한 복수의 노드들을 상호접속하는 밀결합 멀티프로세서 시스템이 제공된다. 이 시스템의 각 노드는 국부 캐시들을 구비하고, 캐시 일관성은 디렉토리 기반 접근법에 의해 유지된다. 이 시스템은 시스템의 모든 노드들 전역에 분산된 단일 범네트워크 어드레스 공간을 제공하는 공유 메모리 공간을 구현한다. 각 노드는 어드레스 공간의 고유 부분을 제공하고 모든 노드는 전체 메모리 공간을 액세스한다.
본 발명의 바람직한 실시예의 시스템은 네트워크 전역에서 캐시 일관성을 효율적으로 제어하면서 동시에 새로운 시스템 구성 기법들을 특수한 목적의 하드웨어에 결합하여 네트워크 전역에 원격 메모리 액세스를 제공한다. 이 시스템 구성 기법들은 원격 액세스 대 국부 액세스에 관련하여 메모리를 분할하고 제어하기 위한 체계적인 방법을 포함한다. 대부분의 특수 목적 하드웨어는 네트워크 어댑터 내에 구현되어 각 노드를 네트워크에 인터페이스하는데 사용된다. 네트워크 어댑터는 다단 네트워크상에서 캐시 일관성을 제어하기 위한 많은 고유한 하드웨어 특징들을구비한다. 게다가, 네트워크 자체는 원격 액세스에 대한 최대 효율을 제공하도록 이에 맞추어진다.
다음은 본 발명의 바람직한 실시예에 따라 구현된 시스템 구성 및 기법의 개요이다.
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 Multiprocessing ,Multiprogramming 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 성능 향상 기법들이 제공된다는 것이다.
본 발명의 또 다른 이점은 각 프로세싱 노드가 공유 메모리 공간의 일부를 포함하고 임의의 노드는 공유 메모리의 국부 영역 또는 네트워크를 통하여 다른 노드에 포함된 공유 메모리의 원격 영역을 액세스할 수 있는 밀결합 시스템은 매우 편리한 방식으로 제공된다는 것이다.
본 발명의 이점은 네트워크를 통한 일관성 기능은 네트워크 전역에서 세 개의 FIFO 쌍의 세 개의 메시지 프로토콜사이에 이러한 기능들을 분리함에 의하여 상당히 용이하게 된다.

Claims (16)

  1. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드들 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여 먼저 상기 국부 노드의 상기 노드 캐시에 액세스하는 제 1 수단과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하여 상기 캐시 라인을 상기 노드 캐시에 저장하는 제 2 수단과,
    ③ 상기 노드 프로세서의 요구에 응답하여, 상기 메모리 워드 데이터를 노드 캐시 및 노드 메모리 또는 원격 메모리에 동시에 저장함으로써 상기 국부 노드의 상기 노드 캐시에 메모리 워드를 기록하는 제 3 수단
    을 포함하는 메모리 제어기.
  2. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드들 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여 먼저 상기 국부 노드의 상기 노드 캐시에 액세스하는 제 1 수단과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하여 상기 캐시 라인을 상기 노드 캐시로 저장하는 제 2 수단과,
    ③ 상기 노드 프로세서로 하여금 제 1 명령어 스트림 스레드로부터 제 2 인스트럭션 스트림 스레드로 스위칭하게 하기 위하여, 요구된 메모리 워드가 원격 메모리 내에 위치한다고 판정하자마자 상기 노드 프로세서로 인터럽트 신호를 발송하는 원격 인출 인터럽트 수단
    을 포함하는 메모리 제어기.
  3. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드들 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여 먼저 상기 국부 노드의 상기 노드 캐시에 액세스하는 제 1 수단과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하여 상기 캐시 라인을 상기 노드 캐시로 저장하는 제 2 수단과,
    ③ 원격 요구 판독 어드레스에 의해 식별된 캐시 라인을 액세스하기 위한 원격 노드로부터의 요구에 응답하여, 상기 액세스된 캐시 라인을 상기 원격 노드로 리턴하기 위한 판독 응답 메시지를 생성하는 데이터 메시지 생성 수단을 포함하되,
    상기 판독 응답 메시지는 메시지 헤더를 포함하고, 상기 메시지 헤더는,
    ⓐ 상기 판독 요구 메시지 타입을 정의하는 메시지 구별 표지와,
    ⓑ 상기 어드레스된 메모리 워드에 대한 상기 노드 메모리의 섹터 세그먼트에 상당하는 목적지 노드 표지와,
    ⓒ 상기 국부 노드의 노드 ID 번호로 설정된 소스 노드 표지와,
    ⓓ 상기 메시지 헤더만으로 구성되어 있는 상기 판독 요구 메시지를 정의하는 메시지 길이 표지와,
    ⓔ 상기 메모리 워드의 메모리 어드레스를 지정하는 메모리 어드레스 표지
    를 포함하고,
    상기 데이터 메시지 생성 수단은 상기 네트워크 및 상기 목적지 노드 표지에 의해 선택된 원격 노드로 전송하기 위하여, 상기 네트워크 어댑터의 판독 송신 FIFO로 상기 판독 응답 메시지를 전달하는 동작을 더 수행할 수 있는
    메모리 제어기.
  4. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드들 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여 먼저 상기 국부 노드의 상기 노드 캐시에 액세스하는 제 1 수단과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하여 상기 캐시 라인을 상기 노드 캐시로 저장하는 제 2 수단과,
    ③ 무효화 디렉토리와,
    ④ 상기 캐시가 꽉 찼을 때 상기 캐시로부터 캐시 라인을 삭제함으로써 상기 캐시로 저장될 새로운 캐시 라인을 위한 공간을 제공하고, 상기 삭제된 캐시 라인의 어드레스를 상기 무효화 디렉토리로 전송하여 상기 노드가 더 이상 상기 캐시 라인의 복사본을 가지고 있지 않음을 나타내는 방출 수단
    을 포함하는 메모리 제어기.
  5. 제 4 항에 있어서,
    ⑤ 상기 방출 수단이 원격 노드로 어드레스된 캐시 라인을 삭제하는 것에 응답하여, 상기 네트워크를 통하여 상기 원격 노드로 상기 방출 어드레스 및 상기 국부 노드 ID 번호를 전송하기 위하여 방출 메시지를 상기 원격 노드로 생성하는 방출 메시지 생성 수단과,
    ⑥ 방출 메시지의 상기 메시지 헤더로부터 방출 어드레스 및 상기 소스 노드 ID 번호를 상기 무효화 디렉토리로 전달하는 방출 메시지 수신 수단
    을 더 포함하는 메모리 제어기.
  6. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드들 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여 먼저 상기 국부 노드의 상기 노드 캐시에 액세스하는 제 1 수단과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하여 상기 캐시 라인을 상기 노드 캐시로 저장하는 제 2 수단과,
    ③ 대응하는 캐시 라인들을 갱신하기 위하여 갱신 메시지를 변경된 캐시 라인의 복사본을 가지고 있는 모든 원격 노드로 전송하는 캐시 복제 갱신 수단과,
    ④ 데이터의 캐시 라인을 원격 노드로부터 수신된 데이터의 갱신된 캐시 라인으로 교체하는 캐시 갱신 메시지 수신 수단을 더 포함하는
    메모리 제어기.
  7. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기를 조작하기 위한 방법 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여, 상기 국부 노드의 상기 노드 캐시를 액세스하는 단계와,
    ② 이후에 상기 노드 캐시 내의 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 상기 노드 메모리 또는 원격 메모리 내의 캐시 라인으로부터 상기 메모리 워드를 액세스하여 상기 캐시 라인을 상기 노드 캐시에 저장하는 단계와,
    ③ 상기 노드 프로세서에 의한 요구에 응답하여, 상기 메모리 워드 데이터를 노드 캐시와 노드 메모리 또는 원격 메모리에 동시에 저장함으로써 상기 국부 노드의 상기 노드 캐시에 메모리 워드를 기록하는 단계
    를 포함하는 메모리 제어기 조작 방법.
  8. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기를 조작하기 위한 방법 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여, 상기 국부 노드의 상기 노드 캐시를 액세스하는 단계와,
    ② 이후에 상기 노드 캐시 내의 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리 내의 캐시 라인으로부터 상기 메모리 워드를 액세스하여 상기 캐시 라인을 상기 노드 캐시로 저장하는 단계와,
    ③ 요구된 메모리 워드가 원격 메모리 내에 위치한다고 판정하자마자 인터럽트 신호를 상기 노드 프로세서로 발송함으로써, 상기 노드 프로세서로 하여금 제 1 인스트럭션 스트림 스레드로부터 제 2 인스트럭션 스트림 스레드로 스위칭하게 하는 단계
    를 포함하는 메모리 제어기 조작 방법.
  9. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 노드 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하여, 상기 국부 노드의 상기 노드 캐시를 액세스하는 제 1 수단과,
    ② 이후에 상기 제 1 수단이 상기 노드 캐시 내의 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리 내의 캐시 라인으로부터 상기 메모리 워드를 액세스하는 제 2 수단과,
    ③ 상기 프로세서에 의해 액세스 요구된 상기 메모리 워드가 노드 메모리 또는 원격 메모리에 위치하는지를 판단하는 제 3 수단과,
    ④ 상기 제 3 수단이 상기 요구된 메모리 워드가 노드 메모리 내에 위치한다고 판단하면, 노드 메모리로부터 상기 메모리 워드를 액세스하고 상기 캐시 라인을 상기 노드 캐시에 저장하는 제 4 수단과,
    ⑤ 상기 제 3 수단이 상기 요구된 메모리 워드가 원격 메모리 내에 위치한다고 판단하면, 상기 다단 스위칭 네트워크를 통해 원격 메모리로부터 상기 메모리 워드를 액세스하는 판독 요구 메시지를 생성하고 상기 캐시 라인을 상기 노드 캐시에 저장하는 제 5 수단과,
    ⑥ 상기 노드 프로세서의 요구에 응답하여 상기 메모리 워드 데이터를 노드 캐시와 노드 메모리 또는 원격 메모리에 동시에 저장함으로써 상기 국부 노드의 상기 노드 캐시에 메모리 워드를 기록하는 제 6 수단
    을 포함하는 메모리 제어기.
  10. 공유 메모리 병렬 프로세싱 시스템의 국부 노드에 대한 메모리 제어기를 조작하기 위한 방법 ― 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시 및 I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드 및 다수의 원격 노드 간에 통신하기 위한 다단 스위칭 네트워크를 포함하고, 상기 노드 메모리는 변경가능한 부분과 변경불가능한 부분을 포함함 ― 에 있어서,
    ① 상기 노드 프로세서의 요구에 응답하여, 상기 메모리 워드를 노드 캐시와 노드 메모리 또는 원격 메모리에 동시에 저장함으로써 메모리 워드를 상기 국부 노드의 상기 노드 캐시에 기록하는 단계와,
    ② 상기 국부 노드의 상기 노드 캐시를 액세스함으로써 상기 프로세서에 의한 메모리 워드에 대한 액세스 요구에 응답하는 단계와,
    ③ 상기 요구가 상기 노드 캐시 내에 있는 상기 메모리 워드를 액세스할 수 없을 때, 상기 메모리 워드를 상기 노드 메모리 또는 원격 메모리 내에 있는 캐시로부터 선택적으로 액세스함으로써 응답하는 단계와,
    ④ 상기 프로세서에 의해 액세스 요구된 상기 메모리 워드가 노드 메모리 또는 원격 메모리 내에 위치하는지를 판단하는 단계와,
    ⑤ 상기 요구된 메모리 워드가 노드 메모리 내에 위치하면, 노드 메모리로부터 상기 메모리 워드를 액세스하고 상기 캐시 라인을 상기 노드 캐시에 저장하는 단계와,
    ⑥ 상기 요구된 메모리 워드가 원격 메모리 내에 위치하면, 상기 다단 스위칭 네트워크를 통해 원격 메모리로부터 상기 메모리 워드를 액세스하는 판독 요구 메시지를 생성하고 상기 캐시 라인을 상기 노드 캐시에 저장하는 단계
    를 포함하는 메모리 제어기 조작 방법.
  11. 공유 메모리 병렬 프로세싱 시스템의 국부 노드를 위한 메모리 제어기 - 상기 노드는 노드 프로세서, 노드 메모리, 노드 캐시, I/O 어댑터를 포함하고, 상기 시스템은 상기 국부 노드와 다수의 원격 노드 사이의 통신을 위한 다단 스위칭 네트워크(multi-stage switching network)를 포함하며, 상기 노드 메모리는 변경가능한 부분(a changeable portion)과 변경불가능한 부분(unchangeable portion)을 포함함 - 에 있어서,
    ① 상기 프로세서의 메모리 워드에 대한 액세스 요구(request)에 응답하여, 상기 국부 노드의 상기 노드 캐시에 먼저 액세스하는 제 1 메모리 제어 로직과,
    ② 상기 제 1 수단이 상기 노드 캐시 내에서 상기 메모리 워드를 액세스할 수 없는 것에 응답하여, 선택적으로 상기 노드 메모리 또는 원격 메모리의 캐시 라인으로부터 상기 메모리를 액세스하고 상기 캐시 라인을 상기 노드 캐시에 저장하는 제 2 메모리 제어 로직과,
    ③ 상기 노드 프로세서의 요구에 응답하여, 상기 메모리 워드 데이터를 노드 캐시 및 노드 메모리 또는 원격 메모리에 동시에 저장함으로써 상기 국부 노드의 상기 노드 캐시에 메모리 워드를 기록하는 제 3 메모리 제어 로직
    을 포함하는 메모리 제어기.
  12. 제 11 항에 있어서,
    ④ 상기 메모리 워드가 원격 메모리 내에 위치한다고 판단되면 상기 노드 프로세서로 인터럽트 신호(an interrupt signal)를 발하여 제 1 인스트럭션 스트림 스레드(a first instruction stream thread)로부터 제 2 인스트럭션 스트림 스레드로 스위칭하는 원격 인출 인터럽트 수단(remote fetch interrupt means)을 더 포함하는 메모리 제어기.
  13. 제 11 항에 있어서,
    ⑤ 원격 요구 판독 어드레스에 의해 식별된 캐시 라인을 액세스하기 위한 원격 노드로부터의 요구에 응답하여, 상기 액세스된 캐시 라인을 상기 원격 노드로 리턴하기 위한 판독 응답 메시지를 생성하는 데이터 메시지 생성 로직을 더 포함하고,
    상기 판독 응답 메시지는 메시지 헤더를 포함하고, 상기 메시지 헤더는,
    ⓐ 상기 판독 요구 메시지 타입을 정의하는 메시지 구별 표지와,
    ⓑ 상기 어드레스된 메모리 워드에 대한 상기 노드 메모리의 섹터 세그먼트에 상당하는 목적지 노드 표지와,
    ⓒ 상기 국부 노드의 노드 ID 번호로 설정된 소스 노드 표지와,
    ⓓ 상기 메시지 헤더만으로 구성되어 있는 상기 판독 요구 메시지를 정의하는 메시지 길이 표지와,
    ⓔ 상기 메모리 워드의 메모리 어드레스를 지정하는 메모리 어드레스 표지
    를 포함하고,
    상기 데이터 메시지 생성 수단은 상기 네트워크 및 상기 목적지 노드 표지에 의해 선택된 원격 노드로 전송하기 위하여, 상기 네트워크 어댑터의 판독 송신 FIFO로 상기 판독 응답 메시지를 전달하는 동작을 더 수행할 수 있는
    메모리 제어기.
  14. 제 11 항에 있어서,
    ⑥ 무효화 디렉토리와,
    ⑦ 상기 캐시가 꽉 찼을 때 상기 캐시로부터 캐시 라인을 삭제함으로써 상기 캐시로 저장될 새로운 캐시 라인을 위한 공간을 제공하고, 상기 삭제된 캐시 라인의 어드레스를 상기 무효화 디렉토리로 전송하여 상기 노드가 더 이상 상기 캐시 라인의 복사본을 가지고 있지 않음을 나타내는 방출 로직
    을 더 포함하는 메모리 제어기.
  15. 제 14 항에 있어서,
    ⑧ 상기 방출 수단이 원격 노드로 어드레스된 캐시 라인을 삭제하는 것에 응답하여, 상기 네트워크를 통하여 상기 원격 노드로 상기 방출 어드레스 및 상기 국부 노드 ID 번호를 전송하기 위하여 방출 메시지를 상기 원격 노드로 생성하는 방출 메시지 생성 로직과,
    ⑨ 방출 메시지의 상기 메시지 헤더로부터 방출 어드레스 및 상기 소스 노드 ID 번호를 상기 무효화 디렉토리로 전달하는 방출 메시지 수신 로직
    을 더 포함하는 메모리 제어기.
  16. 제 11 항에 있어서,
    ⑩ 캐시 갱신 메시지를 전송하여 변경된 캐시 라인(a changed cache line)을 갖는 원격 노드에 있는 대응하는 캐시 라인을 갱신하는 캐시 복사본 갱신 로직과,
    ⑪ 데이터의 캐시 라인을 원격 노드로부터 수신한 데이터의 갱신된 캐시 라인으로 대체하는 캐시 갱신 메시지 수신 로직
    을 더 포함하는 메모리 제어기.
KR1019980021819A 1997-07-10 1998-06-11 메모리제어기및그조작방법 KR100321836B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/890,341 1997-07-10
US08/890,341 US6044438A (en) 1997-07-10 1997-07-10 Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US08/890,341 1997-07-10

Publications (2)

Publication Number Publication Date
KR19990013404A KR19990013404A (ko) 1999-02-25
KR100321836B1 true KR100321836B1 (ko) 2002-03-08

Family

ID=25396552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980021819A KR100321836B1 (ko) 1997-07-10 1998-06-11 메모리제어기및그조작방법

Country Status (3)

Country Link
US (4) US6044438A (ko)
KR (1) KR100321836B1 (ko)
TW (1) TW360827B (ko)

Families Citing this family (187)

* 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
JPH09204403A (ja) * 1996-01-26 1997-08-05 Hitachi Ltd 並列計算機
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
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US7284070B2 (en) * 1997-10-14 2007-10-16 Alacritech, Inc. TCP offload network interface device
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6389479B1 (en) 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6697868B2 (en) * 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US7174393B2 (en) * 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US7089326B2 (en) 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US7185266B2 (en) * 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6807581B1 (en) 2000-09-29 2004-10-19 Alacritech, Inc. Intelligent network storage interface system
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
EP0918302B1 (de) * 1997-11-24 2002-07-10 Weiglhofer, Gerhard Kohärenzdetektor
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6415364B1 (en) * 1997-12-31 2002-07-02 Unisys Corporation High-speed memory storage unit for a multiprocessor system having integrated directory and data storage subsystems
US6999945B1 (en) 1998-01-29 2006-02-14 Automated Business Companies Multiple customer and multiple location PC service provider system
US20020059468A1 (en) * 1999-11-18 2002-05-16 Freeny Charles C. Split personal computer system
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6219745B1 (en) 1998-04-15 2001-04-17 Advanced Micro Devices, Inc. System and method for entering a stream read buffer mode to store non-cacheable or block data
US6321302B1 (en) * 1998-04-15 2001-11-20 Advanced Micro Devices, Inc. Stream read buffer for efficient interface with block oriented devices
US6167430A (en) 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
US6516342B1 (en) * 1998-07-17 2003-02-04 International Business Machines Corporation Method and apparatus for extending memory using a memory server
US7664883B2 (en) * 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US8225002B2 (en) * 1999-01-22 2012-07-17 Network Disk, Inc. Data storage and data sharing in a network of heterogeneous computers
US6549988B1 (en) * 1999-01-22 2003-04-15 Ilya Gertner Data storage system comprising a network of PCs and method using same
US6341338B1 (en) 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6434714B1 (en) 1999-02-04 2002-08-13 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for analyzing performance of application programs
US6378066B1 (en) 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6393533B1 (en) * 1999-03-17 2002-05-21 Silicon Graphics, Inc. Method and device for controlling access to memory
US6557076B1 (en) * 1999-07-22 2003-04-29 International Business Machines Corporation Method and apparatus for aggressively rendering data in a data processing system
US6473849B1 (en) * 1999-09-17 2002-10-29 Advanced Micro Devices, Inc. Implementing locks in a distributed processing system
US7552440B1 (en) * 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
JP5220974B2 (ja) * 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6651157B1 (en) * 1999-10-15 2003-11-18 Silicon Graphics, Inc. Multi-processor system and method of accessing data therein
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US6546359B1 (en) 2000-04-24 2003-04-08 Sun Microsystems, Inc. Method and apparatus for multiplexing hardware performance indicators
US6802057B1 (en) 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6647546B1 (en) 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US6941510B1 (en) * 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
US6766360B1 (en) * 2000-07-14 2004-07-20 Fujitsu Limited Caching mechanism for remote read-only data in a cache coherent non-uniform memory access (CCNUMA) architecture
US6910107B1 (en) 2000-08-23 2005-06-21 Sun Microsystems, Inc. Method and apparatus for invalidation of data in computer systems
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6720074B2 (en) * 2000-10-26 2004-04-13 Inframat Corporation Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
US6968447B1 (en) 2001-04-13 2005-11-22 The United States Of America As Represented By The Secretary Of The Navy System and method for data forwarding in a programmable multiple network processor environment
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US7543100B2 (en) * 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US6987775B1 (en) * 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US7269648B1 (en) * 2001-09-27 2007-09-11 Emc Corporation Resolving multiple master node conflict in a DDB
JP2003196166A (ja) * 2001-10-19 2003-07-11 Kawasaki Microelectronics Kk データ転送装置
US6957219B1 (en) * 2001-11-15 2005-10-18 Microsoft Corporation System and method of pipeline data access to remote data
US6862646B2 (en) * 2001-12-28 2005-03-01 Thomas J. Bonola Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
KR100441712B1 (ko) * 2001-12-29 2004-07-27 엘지전자 주식회사 확장 가능형 다중 처리 시스템 및 그의 메모리 복제 방법
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US6967951B2 (en) * 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US7409396B2 (en) * 2002-02-08 2008-08-05 Pitts William M Method for creating an extensible content distribution framework
US20030158941A1 (en) * 2002-02-15 2003-08-21 Exanet, Inc. Apparatus, method and computer software for real-time network configuration
US7135508B2 (en) * 2002-02-20 2006-11-14 The University Of Chicago Coatings and films derived from clay/wax nanocomposites
GB2389207B (en) * 2002-04-09 2004-05-12 Via Tech Inc Remote node accessing local memory by using distributed shared memory
CN1152330C (zh) * 2002-04-09 2004-06-02 威盛电子股份有限公司 远程节点读取本地内存维护方法及其应用装置
US7496689B2 (en) * 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7174394B1 (en) * 2002-06-14 2007-02-06 Cisco Technology, Inc. Multi processor enqueue packet circuit
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
US20040019640A1 (en) * 2002-07-25 2004-01-29 Bartram Linda Ruth System and method for distributing shared storage for collaboration across multiple devices
US7249352B2 (en) * 2002-08-22 2007-07-24 International Business Machines Corporation Apparatus and method for removing elements from a linked list
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
US6965972B2 (en) * 2002-09-25 2005-11-15 International Business Machines Corporation Real time emulation of coherence directories using global sparse directories
US7337241B2 (en) * 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7191241B2 (en) * 2002-09-27 2007-03-13 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7103752B2 (en) * 2002-09-30 2006-09-05 International Business Machines Corporation Method and apparatus for broadcasting messages with set priority to guarantee knowledge of a state within a data processing system
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US6857011B2 (en) * 2002-10-31 2005-02-15 Paragon Development Systems, Inc. Method of remote imaging
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US20040088262A1 (en) * 2002-11-06 2004-05-06 Alacritech, Inc. Enabling an enhanced function of an electronic device
US6950913B2 (en) * 2002-11-08 2005-09-27 Newisys, Inc. Methods and apparatus for multiple cluster locking
US7421545B1 (en) * 2002-12-27 2008-09-02 Unisys Corporation Method and apparatus for multiple sequence access to single entry queue
US7155572B2 (en) * 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
US7990987B2 (en) 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US7712080B2 (en) * 2003-05-21 2010-05-04 The Regents Of The University Of California Systems and methods for parallel distributed programming
US7827362B2 (en) * 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7421532B2 (en) * 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US7454552B2 (en) * 2003-11-18 2008-11-18 Topside Research, Llc Switch with transparent and non-transparent ports
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US7426602B2 (en) * 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
US7363427B2 (en) * 2004-01-12 2008-04-22 Hewlett-Packard Development Company, L.P. Memory controller connection to RAM using buffer interface
US7774461B2 (en) 2004-02-18 2010-08-10 Fortinet, Inc. Mechanism for determining a congestion metric for a path in a network
US8130644B2 (en) * 2004-02-18 2012-03-06 Fortinet, Inc. Mechanism for enabling load balancing to be achieved in a loop-free switching path, reverse path learning network
US8223634B2 (en) * 2004-02-18 2012-07-17 Fortinet, Inc. Mechanism for implementing load balancing in a network
KR100762619B1 (ko) * 2004-05-21 2007-10-01 삼성전자주식회사 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법
US20050274306A1 (en) * 2004-06-14 2005-12-15 Strong L Curtis Table with table top and layer
CA2572616A1 (en) * 2004-07-07 2006-02-09 Yottayotta, Inc. Systems and methods for providing distributed cache coherence
US20060072563A1 (en) * 2004-10-05 2006-04-06 Regnier Greg J Packet processing
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US7337280B2 (en) * 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
JP2007011522A (ja) * 2005-06-29 2007-01-18 Hitachi Ltd データの消去方法、ストレージ・デバイス及び計算機システム
US8407424B2 (en) 2005-11-07 2013-03-26 Silicon Graphics International Corp. Data coherence method and apparatus for multi-node computer system
US7396306B2 (en) * 2005-11-21 2008-07-08 General Motors Corporation Multiplexed control system and method for an electrically variable hybrid transmission
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US7587399B2 (en) * 2005-12-30 2009-09-08 Sap Ag Integrated software toolset for a web server
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US7917599B1 (en) * 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine
US7900029B2 (en) * 2007-06-26 2011-03-01 Jason Liu Method and apparatus to simplify configuration calculation and management of a processor system
TWI362044B (en) * 2007-11-09 2012-04-11 Transcend Information Inc Storage apparatus and method for accessing data and for managing memory block
US8261025B2 (en) * 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US8490110B2 (en) 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8214845B2 (en) 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US7958340B2 (en) 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US8494833B2 (en) 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US7991978B2 (en) 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US7996360B2 (en) * 2008-06-27 2011-08-09 International Business Machines Corporation Coordinating updates to replicated data
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US8341353B2 (en) * 2010-01-14 2012-12-25 Qualcomm Incorporated System and method to access a portion of a level two memory and a level one memory
KR101814602B1 (ko) * 2011-01-26 2018-01-30 삼성전자주식회사 원격 제어 장치 및 상기 원격 제어 장치에 의해 원격 제어되는 전자기기
US9514069B1 (en) 2012-05-24 2016-12-06 Schwegman, Lundberg & Woessner, P.A. Enhanced computer processor and memory management architecture
US10140219B2 (en) 2012-11-02 2018-11-27 Blackberry Limited Multi-port shared cache apparatus
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US8904117B1 (en) * 2012-12-21 2014-12-02 Symantec Corporation Non-shared write-back caches in a cluster environment
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US9378141B1 (en) * 2013-04-05 2016-06-28 Veritas Technologies Llc Local cache pre-warming
US9561469B2 (en) * 2014-03-24 2017-02-07 Johnson Matthey Public Limited Company Catalyst for treating exhaust gas
CN106104480A (zh) 2014-04-03 2016-11-09 斯特拉托斯卡莱有限公司 使用相似性保留签名的集群范围的内存管理
US10013351B2 (en) 2014-06-27 2018-07-03 International Business Machines Corporation Transactional execution processor having a co-processor accelerator, both sharing a higher level cache
US9772944B2 (en) 2014-06-27 2017-09-26 International Business Machines Corporation Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache
US9342346B2 (en) 2014-07-27 2016-05-17 Strato Scale Ltd. Live migration of virtual machines that use externalized memory pages
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
US10210107B2 (en) 2014-10-29 2019-02-19 Hewlett Packard Enterprise Development Lp Trans-fabric instruction set for a communication fabric
US9524328B2 (en) 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
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
CN113918481A (zh) 2017-07-30 2022-01-11 纽罗布拉德有限公司 一种存储器芯片
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US10795824B2 (en) 2018-11-21 2020-10-06 International Business Machines Corporation Speculative data return concurrent to an exclusive invalidate request
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11656992B2 (en) 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
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
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634110A (en) * 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors

Family Cites Families (37)

* 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
US4651318A (en) * 1984-11-30 1987-03-17 At&T Bell Laboratories Self-routing packets with stage address identifying fields
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
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
WO1990014629A2 (en) * 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
JP3009430B2 (ja) * 1990-07-09 2000-02-14 キヤノン株式会社 プロセッサおよびそのキャッシュメモリ制御方法
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
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
JP2571655B2 (ja) * 1991-11-27 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション プロトコル変換機構、交換ネットワーク及びコンピュータ・システム
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
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
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US6295585B1 (en) * 1995-06-07 2001-09-25 Compaq Computer Corporation High-performance communication method and apparatus for write-only networks
US5835024A (en) * 1995-06-07 1998-11-10 International Business Machines Corporation Multi-stage interconnection network with selectable function switching apparatus
US5887146A (en) * 1995-08-14 1999-03-23 Data General Corporation Symmetric multiprocessing computer with non-uniform memory access architecture
US5878268A (en) * 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5887138A (en) * 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US5940860A (en) * 1996-07-01 1999-08-17 Sun Microsystems, Inc. Methods and apparatus for substantially memory-less coherence transformer for connecting computer node coherence domains
US5860109A (en) * 1996-07-01 1999-01-12 Sun Microsystems, Inc. Methods and apparatus for a coherence transformer for connecting computer system coherence domains
US5900015A (en) * 1996-08-09 1999-05-04 International Business Machines Corporation System and method for maintaining cache coherency using path directories
US5933849A (en) * 1997-04-10 1999-08-03 At&T Corp Scalable distributed caching system and method
US5961606A (en) * 1997-06-30 1999-10-05 Sun Microsystems, Inc. System and method for remote buffer allocation in exported memory segments and message passing between network nodes
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
US6249520B1 (en) * 1997-10-24 2001-06-19 Compaq Computer Corporation High-performance non-blocking switch with multiple channel ordering constraints

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634110A (en) * 1995-05-05 1997-05-27 Silicon Graphics, Inc. Cache coherency using flexible directory bit vectors

Also Published As

Publication number Publication date
US6122659A (en) 2000-09-19
US6044438A (en) 2000-03-28
US6122674A (en) 2000-09-19
KR19990013404A (ko) 1999-02-25
TW360827B (en) 1999-06-11
US6823429B1 (en) 2004-11-23

Similar Documents

Publication Publication Date Title
KR100321836B1 (ko) 메모리제어기및그조작방법
KR100310567B1 (ko) 공유메모리프로세싱시스템및그동작방법과,공유메모리프로세싱노드및그에대한캐시일관성제어기
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
US6801984B2 (en) Imprecise snooping based invalidation mechanism
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(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
US6457100B1 (en) Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
US6640287B2 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
JP3924203B2 (ja) マルチノード・コンピュータ・システムにおける非集中グローバル・コヒーレンス管理
JP3900478B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム及び該コンピュータ・システムを操作する方法
US5881303A (en) Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
US7376793B2 (en) Cache coherence protocol with speculative writestream
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
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) 共有メモリマルチプロセッサ
US6813694B2 (en) Local invalidation buses for a highly scalable shared cache memory hierarchy
EP0890904A2 (en) Cache coherent network adapter for scalable shared memory processing systems
US20040030950A1 (en) Apparatus for imprecisely tracking cache line inclusivity of a higher level cache

Legal Events

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

Payment date: 20080103

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee