KR102214874B1 - 분산 제어 동기화된 링 네트워크 아키텍처 - Google Patents

분산 제어 동기화된 링 네트워크 아키텍처 Download PDF

Info

Publication number
KR102214874B1
KR102214874B1 KR1020197017774A KR20197017774A KR102214874B1 KR 102214874 B1 KR102214874 B1 KR 102214874B1 KR 1020197017774 A KR1020197017774 A KR 1020197017774A KR 20197017774 A KR20197017774 A KR 20197017774A KR 102214874 B1 KR102214874 B1 KR 102214874B1
Authority
KR
South Korea
Prior art keywords
node
message
nodes
clock signal
point
Prior art date
Application number
KR1020197017774A
Other languages
English (en)
Other versions
KR20190085992A (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 KR20190085992A publication Critical patent/KR20190085992A/ko
Application granted granted Critical
Publication of KR102214874B1 publication Critical patent/KR102214874B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/422Synchronisation for ring networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/437Ring fault isolation or reconfiguration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0008Synchronisation information channels, e.g. clock distribution lines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • H04L7/0033Correction by delay
    • H04L7/0037Delay of clock signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/04Speed or phase control by synchronisation signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Abstract

링 네트워크 아키텍처는 링으로 구성된 다수의 통신 노드들을 포함한다. 웨이브 파이프라이닝이 고 대역폭 및 저 레이턴시 온-칩 통신들을 제공하기 위해 사용된다. 각각의 노드는, 넓은 다이 영역에 걸쳐서 광범위한 저 스큐 클록-트리를 구축할 필요가 없도록 소스-동기화된 클록킹 스킴을 구현한다. 단일 레퍼런스 클록 신호가 루트 노드 내에서 생성되고, 단방향 방식으로 링 네트워크의 노드들의 각각을 통하여 라우팅된다. 각각의 노드는, 노드가, 노드들이 독립적으로 동작하고 있더라도, 정확한 순서로 다른 노드들에 의해 이슈된 정렬된 트랜잭션 메시지들을 리졸브하게 하고 다양한 트랜잭션 메시지들을 완전히 상이한 타이밍 순서들로 수신하게 하는 값들을 저장하는, 타임스탬프 카운터 및 컬러 비트 레지스터를 포함한다. 제어 로직은 노드들 간에 분산되기 때문에, 어떤 중앙집중된 제어기도 필요하지 않다.

Description

분산 제어 동기화된 링 네트워크 아키텍처
관련 출원들
본 출원은, 본 명세서에 참조로 통합되고, 2016년 11월 23일자로 출원된 발명의 명칭이 "Distributed Control Synchronized Ring Network Architecture" 인 미국 가특허출원 제62/425,792호에 대해 우선권을 주장하는, 2017년 11월 17일자로 출원된 발명의 명칭이 "Distributed Control Synchronized Ring Network Architecture" 인 미국 특허출원 제15/816,235호에 대해 우선권을 주장한다.
발명의 분야
본 발명은 고 대역폭 및 저 레이턴시 온-칩 통신들을 달성하기 위한 개선된 링 네트워크 아키텍처에 관한 것이다.
종래의 반도체 칩은 칩 상에 제작된 복수의 회로 블록들의 각각에 글로벌 클록 신호를 분배하는 광범위한 저-스큐 (low-skew) 클록 트리를 포함할 수도 있다. 클록 트리는, 복수의 회로 블록들의 각각이 다른 회로 블록들의 각각과 동일한 입력 클록 신호를 수신하는 것을 보장하도록 설계된다. 이러한 글로벌 클록 트리를 구현하는 것은 (포인트-투-포인트 통신, 브로드캐스트 통신, 중재 및 동기화를 가능하게 하기 위해) 광범위한 레이아웃 (다이) 영역 및 비교적 복잡한 상호연결 구조를 요구한다. 파이프라인 스테이지들이 최소 지연을 유지하기 위해 상호연결 구조를 따라 포함된다. 추가로, 글로벌 클록 트리를 확립 및 제어하기 위해 중앙집중된 제어기가 요구된다. 이들 구조들의 결과로서, 글로벌 클록 트리는 상당한 양의 전력을 소비한다.
상기 설명된 제어들에도 불구하고, 클록 스큐는 결국 글로벌 클록 트리의 성능을 저하시킬 수도 있다. 모든 통신 에이전트들 간의 물리적 거리의 분산 (variance) 은 이 클록 스큐를 제거하는 것을 어렵게 만든다.
따라서, 반도체 칩 상에서 클록 동기화를 구현하기 위한 개선된 방법 및 구조를 갖는 것이 바람직할 것이다. 중앙집중된 제어기를 요구하지 않고, 이 개선된 방법 및 구조가 반도체 칩 상에서 고 주파수, 저 레이턴시 동작을 제공 가능한 것이 바람직할 것이다. 이 개선된 방법 및 구조는, 반도체 칩의 넓은 영역에 걸쳐 저-스큐, 고 소비 전력 클록 트리의 사용을 요구하지 않는, 단순한 물리적 구현을 갖는 것이 더 바람직할 것이다.
이에 따라, 본 발명은, 다수의 통신 노드들이 링으로 구성되는 링 네트워크 아키텍처를 제공한다. 링 네트워크 아키텍처는 고 대역폭 및 저 레이턴시 온-칩 통신들을 제공하기 위해 웨이브 파이프라이닝을 사용한다. 매우 높은 동작 주파수가 본 발명의 링 네트워크 아키텍처를 사용하여 달성될 수 있다. 예를 들어, 통신 노드들의 각각이 링 네트워크 상에서 메시지들을 포워딩하기 위한 노드 로직을 포함하는 것으로 가정하며, 여기서 노드 로직은 팬 아웃 4 (F04) 를 가진 12 미만의 레벨들의 로직을 포함하고, 각각의 로직 게이트는 100 피코초 (ps) 게이트 지연을 갖는다. 이 경우에, 본 발명의 링 네트워크 아키텍처는, 심지어 노드들 사이의 와이어 지연들을 고려하여, 5 GHz 이상의 데이터 전송 주파수들을 제공 가능하다.
하나의 실시형태에 따르면, 링 네트워크의 노드들의 각각은, 넓은 다이 영역에 걸쳐서 광범위한 저 스큐 클록-트리를 구축할 필요가 없도록, 소스-동기화된 클록킹 스킴을 구현한다. 요구된 제어 로직은, 어떤 중앙집중된 제어기도 필요하지 않도록, 노드들 간에 분산된다. 본 발명의 링 네트워크 아키텍처에 의해 구현된 클록킹 및 제어 스킴들은 매우 고속 동작을 허용하면서, 네트워크의 물리적 구현을 상당히 단순화한다.
하나의 실시형태에 따르면, 레퍼런스 클록 신호가 링 네트워크의 루트 노드 내에서 생성된다. 이 레퍼런스 클록 신호는 단방향 방식으로 링 네트워크의 노드들의 각각을 통하여 라우팅된다. 메시지들이 레퍼런스 클록 신호와 함께 노드들 사이에서 송신되며, 여기서 노드에 의해 수신된 각각의 메시지는 대응하는 수신된 레퍼런스 클록 신호를 사용하여 노드에 클록킹된다. 링 네트워크의 각각의 노드는 타임스탬프 카운터 및 컬러 비트 레지스터를 포함한다. 각각의 노드의 타임스탬프 카운터는, 노드가 원래의 정렬된 메시지를 생성 및 수신할 때마다, 그리고 노드가 원래 생성하지 않았던 정렬된 메시지를 수신할 때마다 수신된 레퍼런스 클록 신호를 사용하여 업데이트된다. 펄스 메시지는 링 네트워크의 노드들을 통하여 연속적으로 순환하고, 여기서 펄스 메시지는 펄스 메시지가 노드에 의해 수신될 때마다 노드의 컬러 비트 레지스터를 토글링한다. 타임스탬프 카운터들 및 컬러 비트 레지스터들의 각각은, 각각의 타임스탬프 카운터가 동일한 타임스탬프 값을 저장하고 각각의 컬러 비트 레지스터가 동일한 컬러 비트 값을 저장하도록, 정상 동작 이전에 초기화된다. 타임스탬프 값들 및 컬러 비트 값들은, 각각의 노드가, 노드들이 독립적으로 동작하고 있더라도, 정확한 순서로 다른 노드들에 의해 이슈된 트랜잭션 메시지들을 리졸브 (resolve) 하게 하고, 다양한 트랜잭션 메시지들을 완전히 상이한 타이밍 순서들로 수신하게 한다. 이 능력은 중재 및 동기화를 위해 강력한 인스트루먼트를 제공한다.
하나의 실시형태에서, 각각의 노드는 그의 타임스탬프 카운터로부터의 타임스탬프 값을 생성된 각각의 정렬된 메시지에 첨부한다. 각각의 노드는 링 네트워크 상에서 수신된 정렬된 메시지들을 저장하는 메시지 스누퍼 (snooper) 를 더 포함한다. 컬러 비트가 노드 내에서 토글링될 때, 노드는 그의 메시지 스누퍼에 저장된 정렬된 메시지들을 분석하고, 가장 오래된 타임스탬프 값을 갖는 정렬된 메시지에 우선순위를 부여한다.
본 발명의 링 네트워크 아키텍처는, 예를 들어, 대규모 병렬 프로세서 상에서 MOSEI (Modified Owned Shared Exclusive Invalid) 캐시 코히어런스 프로토콜 메모리 버스 또는 통신 네트워크를 구현하는데 사용될 수 있다.
본 발명은 다음의 설명 및 도면들을 고려하여 더 완전히 이해될 것이다.
도 1 은 본 발명의 하나의 실시형태에 따른 분산 제어 동기화된 링 네트워크의 블록 다이어그램이다.
도 2 는 본 발명의 하나의 실시형태에 따른 도 1 의 분산 제어 동기화된 링 네트워크의 루트 노드의 블록 다이어그램이다.
도 3 은 본 발명의 하나의 실시형태에 따른 도 1 의 분산 제어 동기화된 링 네트워크의 브랜치 노드의 블록 다이어그램이다.
도 4 는 본 발명의 하나의 실시형태에 따른 클록 신호와 함께 메시지들의 소스 동기 송신을 위해 사용되는 도 2 의 루트 노드 및 도 3 의 브랜치 노드의 부분들을 예시하는 블록 다이어그램이다.
도 5 는 본 발명의 하나의 실시형태에 따른 도 4 의 다양한 신호들의 소스 동기 타이밍을 예시하는 파형 다이어그램이다.
도 6 은 본 발명의 하나의 실시형태에 따른 도 1 의 링 네트워크를 초기화하는 방법을 예시하는 플로우 다이어그램이다.
도 7 은 본 발명의 하나의 실시형태에 따른 도 6 의 방법의 노드 초기화 프로세스를 구현하는 방법을 예시하는 플로우 다이어그램이다.
도 8a, 도 8b, 도 8c, 도 8d, 도 8e, 도 8f, 도 8g, 도 8h 및 도 8i 는 본 발명의 하나의 실시형태에 따른 포인트-투-포인트 정렬된 메시지의 송신 동안의 링 네트워크의 상태를 예시하는 테이블들이다.
도 1 은 본 발명의 하나의 실시형태에 따른 분산 제어 동기화된 링 네트워크 (100) 의 블록 다이어그램이다. 링 네트워크 (100) 는, 링으로 연결되는, 루트 노드 (N0) 및 브랜치 노드들 (N1-N5) 을 포함한다. 6 개의 통신 노드들 (N0-N5) 이 설명된 예들에 포함되지만, 다른 수들의 노드들이 다른 실시형태들에 포함될 수 있는 것으로 이해된다. 그러나, 각각의 링 네트워크는 하나의 루트 노드 및 하나 이상의 브랜치 노드들을 포함할 것이다. 노드들 (N0-N5) 의 각각은 대응하는 클록 입력 신호 및 대응하는 메시지 입력 신호들을 수신하고, 대응하는 클록 출력 신호 및 대응하는 메시지 출력 신호들을 송신한다. 링 네트워크 (100) 의 신호들은 단방향성이다. 예시된 실시형태들에서, 링 네트워크 (100) 의 신호들은 시계방향으로 라우팅된다 (그러나, 이것이 필수적인 것은 아니다). 노드들 (N0-N5) 의 각각은 송신 이웃 (transmitting neighbor) 및 수신 이웃 (receiving neighbor) 을 갖는다. 예를 들어, 브랜치 노드 (N3) 는 송신 이웃 (N2) 및 수신 이웃 (N4) 을 포함한다. 노드들 (N0, N1, N2, N3, N4 및 N5) 은, 각각 클록 신호들 (CLK_01, CLK_12, CLK_23, CLK_34, CLK_45 및 CLK_50), 및 각각 대응하는 출력 메시지들 (MSG_01, MSG_12, MSG_23, MSG_34, MSG_45, 및 MSG_50) 을, 각각 수신 이웃들 (N1, N2, N3, N4, N5 및 N0) 에 송신한다. 클록 신호들 (CLK_01, CLK_12, CLK_23, CLK_34, CLK_45 및 CLK_50) 은 링 네트워크 (100) 의 클록 경로 (101) 상에서 송신되고, 메시지들 (MSG_01, MSG_12, MSG_23, MSG_34, MSG_45, 및 MSG_50) 은 링 네트워크 (100) 의 메시지 버스 (102) 상에서 송신된다.
도 2 는 본 발명의 하나의 실시형태에 따른 루트 노드 (N0) 를 더 상세히 예시하는 블록 다이어그램이다. 루트 노드 (N0) 는 마스터 클록 생성기 (201), 지연 라인 (202), 재동기화기 (205), 노드 로직 (210), 동기화기 (220), 메시지 스누퍼 (230), 수신 FIFO (first in first out) 메모리 (231), 송신 FIFO 메모리 (232), 클라이언트 로직 (240), 노드 식별자 (ID) 메모리 (250), 컬러 비트 레지스터 (251), 타임 스탬프 (TS) 카운터 (255), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 포함한다.
일반적으로, 루트 노드 (N0) 는 링 네트워크 클록 도메인 (레퍼런스 클록 (CK_REF) 에 의해 특정됨) 및 클라이언트 로직 클록 도메인 (로컬 클록 신호 (CK0) 에 의해 특정됨) 을 포함하는 2 개의 클록 도메인들에서 동작하는 회로부를 포함한다. 이들 클록 도메인들 사이의 분할은 도 2 에서 파선 (270) 으로 예시된다. 따라서, 클라이언트 로직 (240) 및 클라이언트 로직 (240) 과 컬러 비트 레지스터 (251), 노드 ID 레지스터 (250), 타임스탬프 카운터 (255), 메시지 스누퍼 (230), 수신 FIFO (231) 및 송신 FIFO (232) 간의 전송들은 클라이언트 로직 클록 도메인에서 수행된다. 클록 생성기 (201), 지연 라인 (202), 재동기화기 (205), 노드 로직 (210), 노드 식별자 (ID) 메모리 (250), 컬러 비트 레지스터 (251), 타임 스탬프 (TS) 카운터 (255), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 는 링 네트워크 클록 도메인에서 동작한다. 추가로, 메시지 스누퍼 (230) 및 수신 FIFO (231) 에 대한 기록 동작들 및 송신 FIFO (232) 로부터의 판독 동작들은 링 네트워크 클록 도메인에서 수행된다. 하나의 실시형태에 따르면, 동기화 회로 (220) (이는 레퍼런스 클록 신호 (CK_REF) 및 로컬 클록 신호 (CK0) 를 수신한다) 는 당업계에 공지된 재동기화 방법들을 사용하여 링 네트워크 클록 도메인과 클라이언트 로직 클록 도메인 사이의 동기화를 수행한다. 링 네트워크 클록 도메인 및 클라이언트 로직 클록 도메인의 요건들은 이하에 더 상세히 설명된다.
루트 노드 (N0) 의 마스터 클록 생성기 (201) 는 링 네트워크 (100) 의 레퍼런스 클록 신호 (CK_REF) 를 생성한다. 종래의 클록 생성 회로부 (예를 들어, 위상 고정 루프 회로) 는 레퍼런스 클록 신호 (CK_REF) 를 생성하는데 사용될 수 있다. 설명된 실시형태들에서, 레퍼런스 클록 신호 (CK_REF) 는 약 5 GHz 이상의 주파수를 갖는다. 그러나, 레퍼런스 클록 신호 (CK_REF) 는 다른 실시형태들에서 다른 주파수들을 가질 수 있는 것으로 이해된다. 레퍼런스 클록 신호 (CK_REF) 의 주파수 및 전압은 링 네트워크 아키텍처의 대역폭 요구들 및 전력 최적화에 기초하여 스케일링될 수 있다. 셋업 프로세스 (이하에 설명됨) 는, 노드들 (N0-N5) 사이의 와이어 지연이 셋업 프로세스에 어떤 영향도 미치지 않도록, 정상 동작보다 더 낮은 레퍼런스 클록 주파수에서 수행될 수 있다는 것에 주목한다. 루트 노드 (N0) 는 마스터 클록 생성기 (201) 를 포함하는 유일한 노드라는 것에 주목한다. 이하에 더 상세히 설명된 바와 같이, 브랜치 노드들 (N1, N2, N3, N4 및 N5) 의 각각은 그들의 송신 이웃들 (N0, N1, N2, N3 및 N4) 에 의해 전송된 대응하는 클록 신호들 (CLK_01, CLK_12, CLK_23, CLK_34 및 CLK_45) 에 응답하여 동작한다. 즉, 레퍼런스 클록 신호 (CK_REF) 는 브랜치 노드들 (N0-N5) 을 통하여 직렬로 효과적으로 송신된다.
루트 노드 (N0) 는 (인커밍 클록 신호 (CLK_50) 와 함께 송신 이웃 (N5) 에 의해 전송된) 인커밍 메시지 (MSG_50) 를 동기화하기 위해 레퍼런스 클록 신호 (CK_REF) 를 사용한다. 보다 구체적으로, 인커밍 메시지 (MSG_50) 는 초기에 송신 이웃 (N5) 의 네트워크 클록 도메인에 동기화되었다. 그 결과, 클록 도메인 크로싱 동기화가 루트 노드 (N0) 내에서 필요하다 (즉, 송신 이웃 (N5) 으로부터 수신된 메시지 (MSG_50) 는 루트 노드 (N0) 내에서 레퍼런스 클록 신호 (CK_REF) 와 재동기화되어야 한다). 하나의 실시형태에서, 재동기화 회로 (205) 는 인커밍 클록 신호 (CLK_50) 에 응답하여 인커밍 메시지 (MSG_50) 를 제 1 플립 플롭에 래치함으로써 이 재동기화 동작을 수행한다. 제 1 플립 플롭의 출력에서 제공된 메시지 (MSG_50) 는 그 후 레퍼런스 클록 신호 (CK_REF) 에 응답하여 제 2 플립 플롭에 래치된다. 제 2 플립 플롭은 노드 로직 (210) 에 제공되는 동기화된 메시지 (MSG_0) 를 제공한다. 이 동기화된 메시지 (MSG_0) 는 레퍼런스 클록 신호 (CK_REF) 에 응답하여 노드 로직 (210) 에 저장된다.
도 3 은 브랜치 노드 (N1) 를 더 상세히 예시하는 블록 다이어그램이다. 설명된 실시형태들에서, 브랜치 노드들 (N2-N5) 은 브랜치 노드 (N1) 와 실질적으로 동일하다 (그러나 이들 노드들은 상이한 클라이언트 로직을 구현할 수도 있다). 브랜치 노드 (N1) 는 클록 지연 라인 (302), 노드 로직 (310), 동기화 회로 (320), 메시지 스누퍼 (330), 수신 FIFO 메모리 (331), 송신 FIFO 메모리 (332), 클라이언트 로직 (340), 노드 식별자 (ID) 메모리 (350), 컬러 비트 레지스터 (351), 타임 스탬프 (TS) 카운터 (355), 메시지 어셈블러 (360) 및 멀티플렉서 (365) 를 포함한다. 브랜치 노드 (N1) 의 상기 열거된 엘리먼트들은 루트 노드 (N0) 의 유사하게 명명된 엘리먼트들과 유사하다는 것에 주목한다. 노드 (N1) 의 클라이언트 로직 (340) 은 로컬 노드 클록 도메인 신호 (CK1) 에 응답하여 동작한다. 파선 (370) 은 로컬 클록 도메인 (CK1) 및 링 네트워크 클록 도메인 (CK_REF) 의 경계를 지정하고, 여기서 동기화 회로 (320) 는 이들 클록 도메인들에 걸쳐서 통신들을 제공한다. 브랜치 노드 (N1) 는 루트 노드 (N0) 의 마스터 클록 생성기 (201) 또는 재동기화기 (205) 와 대등한 회로들을 포함하지 않는다는 것에 주목한다. 즉, 루트 노드 (N0) 는 링 네트워크 (100) 의 유일한 마스터 클록 생성기 (201) 를 포함한다.
루트 노드 (N0) 로부터 브랜치 노드 (N1) 로의 메시지들 및 클록 신호들의 소스 동기 송신의 타이밍이 이제 설명될 것이다. 다른 노드들 사이의 송신은 노드 (N0) 로부터 노드 (N1) 로의 송신과 동일한 방식으로 수행된다는 것에 주목한다.
도 4 는, 노드 로직 (210), 지연 라인 (202), 메시지 어셈블러 (260), 멀티플렉서 (265), 링 네트워크 클록 신호 경로 (101), 링 네트워크 메시지 버스 (102) 및 노드 로직 (310) 을 포함하는, 노드 (N0) 로부터 N1 로의 메시지들 및 클록 신호들의 송신을 위한 노드들 (N0 및 N1) 의 관련 부분들을 예시하는 블록 다이어그램이다. 도 5 는 본 발명의 하나의 실시형태에 따른 도 4 의 다양한 신호들의 소스 동기 타이밍을 예시하는 파형 다이어그램이다.
일반적으로, 노드 (N0) 는 2 개의 경로들 상에서 출력 메시지들을 송신할 수 있다. 제 1 경로에서, 노드 로직 (210) 에 의해 수신된 메시지 (MSG_0) 는 노드 로직 (N1) 으로 포워딩된다. 이 경우에, 노드 로직 (210) 은, 수신된 메시지 (MSG_0) 가 포워딩되어야 한다고 결정 (예를 들어, 수신된 메시지 (MSG_0) 가 노드 (N0) 를 어드레싱하지 않는다고 결정) 하고, 메시지를 멀티플렉서 (265) 로 포워딩한다. 멀티플렉서 (265) 는 이 메시지를 출력 메시지 (MSG_01) (도 4 및 도 5 에서 MSG_01IN 으로서 지정됨) 로서 라우팅하도록 제어된다. 노드 로직 (210) 및 멀티플렉서 (265) 는 레퍼런스 클록 신호 (CK_REF) 에 대하여 노드 지연 (DN0) 을 도입한다.
제 2 경로에서, 클라이언트 로직 (240) 에 의해 제공된 메시지 (MSG_0CL) 는 (레퍼런스 클록 신호 (CK_REF) 에 응답하여) 송신 FIFO (232) 를 통하여 라우팅되어 메시지 어셈블리 (260) 에 제공된다. 메시지 어셈블러 (260) 는 요구된 정보 (예를 들어, 타임스탬프 카운터 (250) 로부터의 타임스탬프 값 및 노드 ID 메모리 (350) 로부터의 노드 ID 값) 를 메시지 (MSG_0CL) 에 제공하고 결과의 메시지를 멀티플렉서 (265) 에 제공한다. 멀티플렉서 (265) 는 이 메시지를 출력 메시지 (MSG_01) (도 4 및 도 5 에서 MSG_01IN 으로서 지정됨) 로서 라우팅하도록 제어된다. 메시지 어셈블러 (260) 및 멀티플렉서 (265) 는 레퍼런스 클록 신호 (CK_REF) 에 대하여 메시지 (MSG_0CL) 에 노드 지연 (DN0) 을 도입한다. 하나의 실시형태에서, 메시지 어셈블러 (260) 및 노드 로직 (210) 은 이들 회로들이 레퍼런스 클록 신호 (CK_REF) 에 대하여 수신된 메시지들 (MSG_0CL 및 MSG_0) 에 각각 동일한 (또는 유사한) 지연을 도입하도록 설계된다. 도 5 는 메시지 (MSG_0) 또는 메시지 (MSG_0CL) 중 어느 하나에 대해 레퍼런스 클록 신호와 송신된 메시지 (MSG_01IN) 사이에 존재하는 노드 지연 (DN0) 을 예시한다.
메시지들 (MSG_0 및 MSG_0CL) 은 도 4 및 도 5 의 예에서 일반적으로 설명되지만, 이들 메시지들의 상세들 (및 브로드캐스트 메시지들, 판독-수정-기록 (read-modify-write) 메시지들, 포인트-투-포인트 비정렬된 메시지들 및 포인트-투-포인트 정렬된 메시지들을 포함하는, 연관된 메시지 '타입들') 이 이하에 더 상세히 설명된다.
송신된 메시지 (MSG_01IN) 가 레퍼런스 클록 신호 (CK_REF) 에 대하여 지연되기 때문에, 지연 라인 (202) 은 레퍼런스 클록 신호 (CK_REF) 에 지연 (D202) 을 추가하는데 사용되며, 이로써 (도 4 및 도 5 에서 클록 신호 (CLK_01IN) 로서 도시된) 루트 노드 (N0) 의 출력 클록 신호 (CLK_01) 를 생성한다. 지연 라인 (202) 에 의해 도입된 지연 (D202) 은, 클록 신호 (CLK_01IN) 가 노드 (N0) 로부터 송신된 메시지 (MSG_01IN) 에 대하여 적절한 셋업 및 홀드 시간을 갖는 것을 보장하도록 선택된다. 하나의 실시형태에서, 지연 라인 (202) 의 지연 (D202) 은 상기 설명된 노드 지연 (DN0) 과 균등화된다. 즉, 송신된 메시지 (MSG_01IN) 는 노드 (N0) 의 공지된 내부 지연들을 사용하여 출력 클록 신호 (CLK_01IN) 에 동기화된다. 하나의 실시형태에 따르면, 지연 (D202) 은 조정가능하다 (예를 들어, 노드 로직 (210) 및/또는 클라이언트 로직 (240) 의 제어 하에서 원하는 대로 연장 또는 단축될 수 있다).
노드들 (N0 및 N1) 사이에 클록 신호 경로 (101) 및 메시지 버스 (102) 를 구현하는데 사용되는 구조들 (101D 및 102D) 은 상당한 지연들 (예를 들어, 버퍼 지연들) 을 보일 수도 있다는 것에 주목한다. 클록 신호 라인 구조 (101D) 및 메시지 버스 구조 (102D) 에 의해 도입된 지연들은 각각 지연들 (D101 및 D102) 로서 지정된다. 따라서, 노드 (N1) 에 의해 수신된 클록 신호 (CLK_01OUT) 는 노드 (N0) 에 의해 송신된 클록 신호 (CLK_01IN) 에 대하여 D101 만큼 지연된다. 유사하게, 노드 (N1) 에 의해 수신된 메시지 (MSG_01OUT) 는 노드 (N0) 에 의해 송신된 메시지 (MSG_01IN) 에 대하여 D102 만큼 지연된다. 이 관계는 도 5 에 도시된다. (CLK_01IN 및 MSG_01IN 을 생성할 때) 노드 (N0) 에 의해 확립된 원하는 셋업 및 홀드 시간들을 유지하기 위하여, 지연들 (D101 및 D102) 은 동일해야 한다. 따라서, 클록 신호 라인 구조 (101D) 및 메시지 버스 구조 (102D) 를 구현하는데 사용되는 와이어들 및 버퍼들이 셋업 및 홀드 시간 손실을 최소화하기 위하여 고도로 균등화 및 밸런싱되는 것이 매우 중요하다. 즉, 클록 경로 구조 (101D) 및 메시지 버스 구조 (102D) 는, 송신된 클록 신호 (CLK_01IN) 및 송신된 메시지 (MSG_01IN) 의 상대적 위상들이 수신된 클록 신호 (CLK_01OUT) 및 수신된 메시지 (MSG_01OUT) 에 의해 수신 노드 (N1) 에서 유지되도록 노드들 (N0 및 N1) 사이에 실질적으로 동일한 송신 특성들을 제공해야 한다.
상기 설명된 예에 따르면, 클록 경로 (101) 및 메시지 버스 (102) 는 웨이브 파이프라인 시스템으로서 동작하며, 여기서 메시지 버스 (102) 상에서 송신된 메시지들은 클록 경로 (101) 상에서 송신된 클록 신호를 사용하여 소스-동기 방식으로 수신 노드에 래치된다. 이 방식으로, 메시지들은 레퍼런스 클록 신호 (CK_REF) 의 주파수에서 노드 (N0) 로부터 노드 (N1) 로 송신되어, 노드 (N0) 로부터 노드 (N1) 로의 빠른 데이터 전송을 허용한다. 정상 동작 동안, 노드들 (N0-N5) 의 각각 내의 노드 로직은 수신된 클록 신호에 응답하여 인커밍 메시지들을 래치한다 (예를 들어, 노드 로직 (210 및 310) 은 수신된 클록 신호들 (CK_REF 및 CLK_01) 에 각각 응답하여 인커밍 메시지들 (MSG_0 및 MSG_01) 을 각각 래치한다).
웨이브 파이프라이닝이 구현되기 때문에, 클록 신호 라인 구조 (101D) 및 메시지 버스 구조 (102D) 의 와이어 및 버퍼 지연들 (D101 및 D102) 은 링 네트워크 (100) 의 동작 주파수를 저하시키지 않을 것이다. 웨이브 파이프라이닝은 송신 노드가 제 1 메시지를 수신 노드로 전송하게 하고, 그 후 수신 노드가 제 1 메시지를 수신하기 전에, 수신 노드로 제 2 메시지를 전송하게 할 수도 있다는 것에 주목한다. 즉, 메시지 버스 구조 (102D) 상에서 노드 (N0) 로부터 노드 (N1) 로 동시에 전파되는 복수의 메시지들이 존재할 수도 있다. 이것은 레퍼런스 클록 신호 (CK_REF) 의 주기 (예를 들어, 5 GHz 클록에 대해 200 ps) 가 인접한 노드들 (N0 및 N1) 사이의 와이어/버퍼 지연 (D101/D102) 보다 더 작으면 발생할 수도 있다는 것에 주목한다. 하나의 실시형태에 따르면, 인접한 노드들의 각각의 쌍 사이의 와이어/버퍼 지연 (D101/D102) 은 제 1 노드 (예를 들어, 노드 (N0)) 로부터 인접한 제 2 노드 (예를 들어, 노드 (N1)) 로 송신되는 제 1 복수의 메시지들이 제 2 노드 (예를 들어, 노드 (N1)) 로부터 인접한 제 3 노드 (예를 들어, 노드 (N2)) 로 송신되는 제 2 복수의 메시지들을 추월하지 않는 것을 보장할 만큼 길어야 한다 (즉, 최소 지연을 보인다).
하나의 실시형태에서, 노드 로직 (210) 및 멀티플렉서 (265) 의 게이트 지연은 레퍼런스 클록 신호 (CK_REF) 의 최대 주파수를 결정할 수도 있다. 최대 효율을 위해, 생성된 레퍼런스 클록 신호 (CK_REF) 의 주기는 노드 지연 (DN0) 에 균등화되어야 한다. 하나의 실시형태에서, 노드 로직 (210) 은 순차적 로직 (예를 들어, 10 레벨들의 팬 아웃 4 (F04) 로직) 을 포함하며, 이는 레퍼런스 클록 신호 (CK_REF) 가 5 GHz 이상의 주파수를 갖게 한다.
노드 로직 (210) 은 비교적 단순한 설계를 갖기 때문에, 링 네트워크의 노드들 (N0-N5) 사이의 통신들은 비교적 높은 주파수에서 수행될 수 있다. 클라이언트 로직 (240) 은 통상적으로 더 복잡한 설계를 포함하고, 레퍼런스 클록 신호 (CK_REF) 의 주파수보다 더 느린 주파수에서 동작할 수도 있다. 즉, 클라이언트 로직 (240) 은 레퍼런스 클록 신호 (CK_REF) 의 주파수에서 링 네트워크로부터 메시지들을 수신할 수도 있지만, 클라이언트 로직 (240) 은 레퍼런스 클록 신호 (CK_REF) 의 주파수에서 응답하도록 요구되지 않는다.
대체 실시형태에서, 링 네트워크 (100) 는 또한 비교적 낮은 주파수를 갖는 레퍼런스 클록 신호 (CK_REF) 에 응답하여 동작될 수 있으며, 여기서 레퍼런스 클록 신호 (CK_REF) 의 주기는 인접한 노드들 사이의 와이어/버퍼 지연 (D101/D102) 보다 더 크다. 이 경우에, 노드에 의해 송신된 각각의 메시지는 송신 노드가 다음 메시지를 전송하기 전에 인접한 노드에 의해 수신 (및 래치) 된다. 이 실시형태에서, 인접한 노드들 사이의 와이어/버퍼 지연 (D101/D102) 은 신호 파이프라인에 어떤 영향도 미치지 않는다. 하나의 실시형태에서, 레퍼런스 클록 신호 (CK_REF) 는 셋업 페이즈 (이하에 설명됨) 동안 이러한 저 주파수로 감소되지만, 정상 동작 동안 고 주파수 (예를 들어, 5 GHz 이상) 로 증가된다.
링 네트워크 (100) 의 노드들 (N0-N5) 의 셋업이 이제 설명될 것이다.
도 6 은 본 발명의 하나의 실시형태에 따른 링 네트워크 (100) 를 초기화하는 방법을 예시하는 플로우 다이어그램 (600) 이다. 도 6 의 단계 (601) 에 의해 예시된 바와 같이, (예를 들어, 루트 노드 (N0) 의 클라이언트 로직 (240) 에 제공된 RESET 신호를 활성화시킴으로써) 셋업 프로세스가 시작된다. 응답으로, 클라이언트 로직 (240) 은 노드 초기화 프로세스를 시작하고 (단계 (602)), 여기서 노드들 (N0-N5) 의 노드 ID 레지스터들에 저장된 노드 ID 값들이 초기화되고, 노드들 (N0-N5) 의 컬러 비트 레지스터들에 저장된 컬러 비트들은 미리결정된 값 (예를 들어, '0') 으로 리셋되고, 노드들 (N0-N5) 의 각각 내의 타임 스탬프 카운터들에 의해 저장된 타임 스탬프 값들은 미리결정된 값 (예를 들어, '0') 으로 리셋된다. 도 6 의 단계 (603) 에 의해 예시된 바와 같이, (예를 들어, 루트 노드 (N0) 의 클라이언트 로직 (240) 에 제공된 PULSE 신호를 활성화시킴으로써) 노드들 (N0-N5) 의 각각을 통하여 순환하는 펄스 메시지가 개시된다. 링 네트워크 (100) 의 정상 동작이 그 후 시작된다 (단계 (604)).
도 7 은 본 발명의 하나의 실시형태에 따른 단계 (602) 의 노드 초기화 프로세스를 구현하는 방법을 예시하는 플로우 다이어그램 (700) 이다. 루트 노드 (N0) 는 노드 ID 레지스터 (250) 가 '0' 과 같은 노드 ID 값을 저장하도록 하드와이어링된다. 활성화된 RESET 신호를 수신하는 것에 응답하여, 클라이언트 로직 (240) 은 판독-수정-기록 메시지인 ID_setup 메시지를 생성한다 (단계 (701)). 이 ID_setup 메시지는, 초기에 (노드 (N0) 의 노드 ID 레지스터 (250) 에 의해 저장된 노드 ID 값에 기초하여) '0' 의 값을 갖도록 설정되는 노드 ID 필드를 포함한다. 클라이언트 로직 (240) 은 또한 '0' 의 타임스탬프 값을 저장하기 위해 그의 타임스탬프 카운터 (255) 를 리셋하고, 또한 '0' 의 컬러 비트 값을 저장하기 위해 그의 컬러 비트 레지스터 (251) 를 리셋한다 (단계 (702)). 클라이언트 로직 (240) 은 (송신 FIFO (232), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 통해) 인접한 수신 노드 (N1) 에 ID_setup 메시지를 송신한다. 이 ID_setup 메시지는 도 4 및 도 5 와 관련하여 상기 설명된 방식으로 레퍼런스 클록 신호 (CK_REF) 와 동기화된다.
노드 로직 (310) 은 노드 (N1) 내에서 (대응하는 클록 신호 (CLK_01) 를 사용하여) ID_setup 메시지를 수신한다. 노드 로직 (310) 은 (수신 FIFO (331) 를 통해) 노드 (N1) 내에서 클라이언트 로직 (340) 으로 ID_setup 메시지를 전송한다. 응답으로, 클라이언트 로직 (340) 은 ID_setup 메시지의 ID 필드에서의 ID 값을 1 씩 증분시킨다 (단계 (703)). 클라이언트 로직 (340) 은 그 후 업데이트된 ID 값 (예를 들어, '1') 을 그의 노드 ID 레지스터 (350) 에 기록한다 (단계 (704)). 클라이언트 로직 (340) 은 또한 '0' 의 타임스탬프 값을 저장하기 위해 그의 타임스탬프 카운터 (355) 를 리셋하고, 또한 '0' 의 컬러 비트 값을 저장하기 위해 그의 컬러 비트 레지스터 (351) 를 리셋한다 (단계 (705)). 따라서, 브랜치 노드 (N1) 에는, '1' 과 같은 노드 ID 값, '0' 과 같은 타임스탬프 값, 그리고 '0' 과 같은 컬러 비트 값이 할당된다.
클라이언트 로직 (340) 은 업데이트된 노드 ID 값을 포함하는 수정된 ID_setup 메시지를, (송신 FIFO (332), 메시지 어셈블러 (360) 및 멀티플렉서 (365) 를 통해) 인접한 수신 노드 (N2) 에 송신한다 (단계 (706)).
다운스트림 수신 노드가 루트 노드 (N0) 이면 (단계 (707), 예 브랜치), ID_setup 동작이 완료된다 (단계 (708)). 다운스트림 수신 노드가 루트 노드 (N0) 가 아니면 (단계 (707), 아니오 브랜치), 프로세싱은 단계 (703) 로 리턴하고, 그것에 의하여 수신 브랜치 노드에서의 클라이언트 로직은 ID_setup 메시지에서의 노드 ID 값을 1 씩 증분시키고 (단계 (703)), 증분된 노드 ID 값을 그의 노드 ID 레지스터에 저장하고 (단계 (704)), 그리고 그의 타임스탬프 카운터 및 컬러 비트를 리셋한다 (단계 (705)). 이 프로세스는 노드들 (N0 내지 N5) 에 0 내지 5 의 고유 노드 ID 값들이 각각 할당되도록 계속된다. ID_setup 동작의 종료 시, 노드들 (N0-N5) 의 타임스탬프 카운터들은 모두 동일한 타임스탬프 값 (예를 들어, '0') 및 동일한 컬러 비트 값 (예를 들어, '0') 을 저장한다.
노드 초기화 프로세스가 완료된 후, 노드 (N0) 에서의 클라이언트 로직 (240) 은 링 네트워크 (100) 상에서 펄스 메시지를 송신한다. 하나의 실시형태에서, 펄스 메시지는 클라이언트 로직 (240) 에 제공된 활성화된 PULSE 신호에 의해 개시된다. 대체 실시형태에서, 클라이언트 로직 (240) 은 송신 노드 (N5) 로부터 수정된 ID_setup 메시지를 수신하는 것에 응답하여 펄스 메시지를 개시한다. 펄스 메시지는 링 네트워크 (100) 를 연속적으로 횡단한다. 펄스 메시지는 노드들 (N0-N5) 내의 노드 로직에 순차적으로 제공된다. 노드 내의 노드 로직이 펄스 메시지를 수신할 때마다, 노드 로직은 그의 대응하는 컬러 비트 레지스터에 저장된 컬러 비트 값을 토글링한다. 예를 들어, 처음에 노드 (N1) 에서의 노드 로직 (310) 이 노드 (N0) 로부터 펄스 메시지를 수신하면, 노드 로직 (310) 은 컬러 비트 레지스터 (351) 에 저장된 컬러 비트의 값을 '0' 에서 '1' 로 변경한다. 이하에 더 상세히 설명된 바와 같이, 컬러 비트들은 노드들 (N0-N5) 에 의해 수신된 정렬된 메시지들의 중재에 사용된다.
상기 설명된 셋업 프로세스를 완료한 후, 노드들 (N0-N5) 은 정상 동작할 준비가 된다. 본 발명의 하나의 실시형태에 따른 링 네트워크 (100) 의 정상 동작이 이제 설명될 것이다.
노드들 (N0-N5) 의 클라이언트 로직 (예를 들어, 클라이언트 로직 (240)) 은 메시지 버스 (102) 를 통하여 메시지들을 교환함으로써 통신한다. 메시지 버스 (102) 의 폭 및 포맷은 다음의 요건들을 충족해야 한다. 메시지 버스 (102) 는 이하에 더 상세히 설명된 메시지 타입들 모두를 캡슐화 가능해야 한다. 메시지 버스 (102) 는 또한, 와이어들/버퍼들의 요구된 레이아웃 영역을 최소화하면서, 요구된 대역폭 및 타이밍을 제공하도록 설계된다.
하나의 실시형태에서, 다음을 포함하는 4 개의 메시지 타입들이 메시지 버스 (102) 상에서 구현된다: 1) 브로드캐스트 메시지들, 2) 판독-수정-기록 메시지들, 3) 포인트-투-포인트 비정렬된 메시지들 및 4) 포인트-투-포인트 정렬된 메시지들. 이들 메시지들의 대부분은, 예를 들어, 중앙 프로세싱 유닛 (CPU) 또는 메모리 제어기를 포함할 수도 있는 노드들 (N0-N5) 내의 클라이언트 로직에 의해 생성된다.
브로드캐스트 메시지에서, 송신 노드의 클라이언트 로직 (예를 들어, 노드 (N0) 의 클라이언트 로직 (240)) 은 그의 수신 이웃 (예를 들어, 송신 FIFO (232), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 통해, 노드 (N1)) 으로 브로드캐스트 메시지를 전송한다. 수신 이웃 내의 노드 로직 (예를 들어, 노드 로직 (310)) 은 브로드캐스트 메시지를 수신한다. 응답으로, 이 노드 로직은 브로드캐스트 메시지를 그의 대응하는 클라이언트 로직 (예를 들어, 그의 대응하는 수신 FIFO (331) 를 통해, 클라이언트 로직 (340)) 으로 라우팅한다. 이 노드 로직은 또한 브로드캐스트 메시지를 그의 수신 이웃 (예를 들어, 멀티플렉서 (365) 를 통해, 노드 (N2)) 으로 포워딩한다. 포워딩은 원래의 송신 노드 (예를 들어, 노드 (N0)) 가 그의 송신 이웃 (예를 들어, 노드 (N5)) 으로부터 브로드캐스트 메시지를 수신할 때 중단된다. 예를 들어, 캐시 라인 무효화 요청은 브로드캐스트 메시지로서 송신될 수도 있다.
판독-수정-기록 메시지에서, 송신 노드의 클라이언트 로직 (예를 들어, 노드 (N0) 의 클라이언트 로직 (240)) 은 그의 수신 이웃 (예를 들어, 송신 FIFO (232), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 통해, 노드 (N1)) 으로 메시지를 전송한다. 수신 이웃 내의 노드 로직 (예를 들어, 노드 로직 (310)) 은 판독-수정-기록 메시지를 수신하고, 이 메시지를 그의 대응하는 클라이언트 로직 (예를 들어, 그의 대응하는 수신 FIFO (331) 를 통해, 클라이언트 로직 (340)) 으로 포워딩한다. 이 클라이언트 로직은 필요하다면 메시지를 수정할 수도 있다. 클라이언트 로직은 판독-수정-기록 메시지를 그의 수신 이웃 (예를 들어, 송신 FIFO (332), 메시지 어셈블러 (360) 및 멀티플렉서 (365) 를 통해, 노드 (N2)) 으로 후속하여 포워딩한다. 클라이언트 로직은 판독-수정-기록 메시지를 그 자신의 재량에 따라 (예를 들어, 대응하는 플로우 제어 및 대역폭 할당 로직을 사용하여) 포워딩할 것이며, 이는 판독-수정-기록 메시지를 수신한 후 (로컬 클록 신호의) 몇몇 수의 사이클들일 수도 있다는 것에 주목한다. 이 포워딩 프로세스는 판독-수정-기록 메시지가 그의 송신 이웃 (예를 들어, 노드 (N5)) 에 의해 원래의 송신 노드 (예를 들어, 노드 (N0)) 로 리턴될 때까지 노드들의 각각에 의해 반복된다. 원래의 송신 노드는 수신된 판독-수정-기록을 프로세싱하고, 판독-수정-기록 메시지의 전파를 중단한다. 셋업 프로세서와 관련하여 상기 설명된 ID_setup 메시지는 판독-수정-기록 메시지의 예이다. 다른 예에 따르면, CPU 로부터의 캐시-라인 스누프 응답은 판독-수정-기록 메시지로서 송신될 수도 있다.
포인트-투-포인트 비정렬된 메시지에서, 송신 노드의 클라이언트 로직 (예를 들어, 노드 (N0) 의 클라이언트 로직 (240)) 은 그의 수신 이웃 (예를 들어, 송신 FIFO (232), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 통해, 노드 (N1)) 으로 메시지를 전송한다. 포인트-투-포인트 비정렬된 메시지는 다른 노드들 중 특정한 노드 (예를 들어, 노드 (N2)) 를 어드레싱하며, 여기서 어드레싱된 노드의 노드 ID 값은 메시지에 포함된다. 송신 노드와 어드레싱된 노드 사이의 각각의 중간 노드 내의 노드 로직은, 메시지가 어드레싱된 노드에 도달할 때까지, 메시지를 그의 수신 이웃으로 포워딩한다. 예를 들어, 노드 (N1) 에서의 노드 로직 (310) 은 노드 (N0) 로부터 포인트-투-포인트 비정렬된 메시지를 수신하고, 그의 노드 ID 값 (예를 들어, '1') 과 메시지에 포함된 노드 ID 값 (예를 들어, '2') 을 비교하고, 응답으로, 메시지가 노드 (N1) 를 어드레싱하지 않는다고 결정할 수도 있다. 응답으로, 노드 로직 (310) 은 포인트-투-포인트 비정렬된 메시지를 수신 노드 (N2) 로 (멀티플렉서 (365) 를 통해) 포워딩한다. 노드 로직 (310) 은 메시지를 어드레싱되지 않은 노드 (N1) 내의 클라이언트 로직 (340) 으로 포워딩하지 않는다는 것에 주목한다. 포인트-투-포인트 비정렬된 메시지를 수신 시, 노드 (N2) 내의 노드 로직은 그 후, 포인트-투-포인트 비정렬된 메시지에 포함된 노드 ID 값 (예를 들어, '2') 이 그 자신의 노드 ID 값 (예를 들어, '2') 과 같다고 결정하고, 응답으로, 포인트-투-포인트 비정렬된 메시지를 그의 대응하는 클라이언트 로직에 (그의 대응하는 수신 FIFO 를 통해) 제공할 것이다. 포인트-투-포인트 비정렬된 메시지는 링 네트워크 (100) 상에서 어드레싱된 노드 외에는 송신되지 않는다 (예를 들어, 노드 (N2) 는 포인트-투-포인트 비정렬된 메시지를 노드 (N3) 로 포워드하지 않는다). 하나의 실시형태에서, 판독 요청에 대한 데이터 응답은 포인트-투-포인트 비정렬된 메시지로서 송신될 수도 있다.
포인트-투-포인트 정렬된 메시지에서, 송신 노드의 클라이언트 로직 (예를 들어, 노드 (N0) 의 클라이언트 로직 (240)) 은 그의 수신 이웃 (예를 들어, 송신 FIFO (232), 메시지 어셈블러 (260) 및 멀티플렉서 (265) 를 통해, 노드 (N1)) 으로 메시지를 전송한다. 포인트-투-포인트 정렬된 메시지는 다른 노드들 중 특정한 노드 (예를 들어, 노드 (N2)) 를 어드레싱하며, 여기서 어드레싱된 노드의 노드 ID 값은 메시지에 포함된다. 송신 노드는 또한, 그 자신의 노드 ID 레지스터로부터의 그 자신의 고유 노드 ID 값 (예를 들어, 노드 ID 레지스터 (250) 로부터의 노드 ID 값 '0') 및 그 자신의 타임 스탬프 카운터 (예를 들어, 타임 스탬프 카운터 (255)) 로부터의 현재의 타임 스탬프 값 (TS) 을 메시지에 어태치한다. 송신 노드 (예를 들어, 노드 (N0)) 내에서, 메시지 어셈블러 (260) 는 포인트-투-포인트 정렬된 메시지를 송신 시 타임 스탬프 카운터 (255) 를 증분시킨다.
송신 노드와 어드레싱된 노드 사이의 각각의 중간 노드 (예를 들어, 노드 (N1)) 내의 노드 로직은 그의 노드 ID 값 (예를 들어, '1') 과 포인트-투-포인트 정렬된 메시지에 포함된 어드레싱된 노드 ID 값 (예를 들어, '2') 을 비교하고, 응답으로, 메시지가 이 중간 노드를 어드레싱하지 않는다고 결정한다. 응답으로, 이 중간 노드 (N1) 의 노드 로직 (310) 은 포인트-투-포인트 정렬된 메시지를 그의 대응하는 수신 노드 (N2) 로 (멀티플렉서 (365) 를 통해) 포워딩한다. 포인트-투-포인트 정렬된 메시지를 수신 시, 각각의 노드에서의 노드 로직은 그의 대응하는 타임스탬프 카운터를 증분시키고, 정렬된 메시지를 그의 메시지 스누퍼에 저장한다 (예를 들어, 노드 (N1) 내에서, 노드 로직 (310) 은 그의 타임스탬프 카운터 (355) 를 증분시키고 정렬된 메시지를 그의 메시지 스누퍼 (330) 에 저장한다).
포인트-투-포인트 정렬된 메시지를 수신 시, 어드레싱된 노드 (예를 들어, 노드 (N2)) 내의 노드 로직은 그의 타임스탬프 카운터를 증분시키고, 포인트-투-포인트 정렬된 메시지에 포함된 어드레싱된 노드 ID 값이 그 자신의 노드 ID 값 (예를 들어, '2') 과 같다고 결정한다. 응답으로, 어드레싱된 노드 (N2) 내의 노드 로직은, 포인트-투-포인트 정렬된 메시지와 함께, 그의 컬러 비트 레지스터에 저장된 컬러 비트 값이 그의 메시지 스누퍼에 저장되게 한다. 어드레싱된 노드 (N2) 내의 노드 로직은 그 후 정렬된 메시지를 그의 대응하는 수신 노드 (예를 들어, 노드 (N3)) 로 포워딩한다. 이 포워딩은 정렬된 메시지가 원래의 송신 노드 (예를 들어, 노드 (N0)) 에 도달할 때까지 계속되며, 여기서 각각의 중간 노드는 그의 타임스탬프 카운터를 증분시키고 정렬된 메시지를 그의 메시지 스누퍼에 캡처한다. 정렬된 메시지를 수신 시, 원래의 송신 노드 (예를 들어, 노드 (N0)) 는 그의 타임스탬프 카운터를 증분시키지 않는다. 이 때, 원래의 송신 노드는 그 자신의 메시지 스누퍼의 콘텐츠들을 검사함으로써 그의 정렬된 메시지가 어드레싱된 노드에 의해 우선순위를 부여받을지 여부를 결정할 수 있다. 어드레싱된 노드는 포인트-투-포인트 정렬된 메시지의 우선순위를 리졸브하기 위해 펄스 메시지가 그의 대응하는 컬러 비트 레지스터에 저장된 컬러 비트의 상태를 변경할 때까지 대기한다. 이 방식으로, 각각의 노드 내의 메시지 스누퍼에서의 정보는, 메시지들이 상이한 순서들로 각각의 노드에 의해 수신되더라도, 메시지들이 이슈되는 순서의 일관된 뷰 (consistent view) 를 제공한다. 메시지 스누퍼들에서의 정보는 이하에 더 상세히 설명된 방식으로 중재 및 충돌 레졸루션을 위해 사용될 것이다.
상기 설명된 바와 같이, 노드들 (N0-N5) 의 각각은 수신된 포인트-투-포인트 정렬된 메시지들의 각각을 그의 메시지 스누퍼에 일시적으로 저장한다 (예를 들어, 노드들 (N0 및 N1) 의 메시지 스누퍼들 (230 및 330) 은 노드 로직 (210 및 310) 에 의해 각각 수신된 정렬된 메시지들을 저장한다). 설명된 실시형태들에서, 메시지 스누퍼들의 각각은 FIFO 이며, 여기서 메시지 스누퍼 FIFO 의 심도 (depth) 는 링 네트워크 (100) 의 설계 파라미터이다. 하나의 실시형태에서, 각각의 메시지 스누퍼의 심도는 레이아웃 영역, 동작 속도, 소비 전력 및 요구된 대역폭에 있어서 적절한 트레이드오프를 제공하도록 선택된다. 이하에 설명된 바와 같이, 메시지 스누퍼의 심도는 임의의 주어진 시간에 링 네트워크 (100) 상에서 아웃스탠딩 (outstanding) 일 수 있는 포인트-투-포인트 정렬된 메시지 요청들의 수를 한정한다.
하나의 실시형태에 따르면, 링 네트워크 (100) 의 각각의 노드는 포인트-투-포인트 정렬된 메시지 요청들의 할당량 (quota) 을 할당받고, 이 할당량은 0 에서 메시지 스누퍼의 심도 마이너스 1 과 같은 값까지의 범위이다. 각각의 노드는 그의 할당량을 초과하는 아웃스탠딩 포인트-투-포인트 정렬된 메시지들의 수를 가질 수 없고, 여기서 포인트-투-포인트 정렬된 메시지는 그의 발신 노드로 루프 백할 때까지 아웃스탠딩인 것으로 간주된다. 각각의 노드에 할당된 할당량은 동일할 필요는 없다. 예를 들어, 포인트-투-포인트 정렬된 메시지들을 발송 가능하지 않은 노드의 할당량은 0 으로 설정할 수 있는 한편, 성능 중요 노드 (예를 들어, CPU) 는 더 큰 할당량의 포인트-투-포인트 정렬된 메시지들을 할당받을 수 있다. 그러나, 가능한 아웃스탠딩 포인트-투-포인트 정렬된 메시지 요청들의 총 수 (예를 들어, 노드들 (N0-N5) 의 각각에 할당된 할당량들의 합) 는 메시지 스누퍼의 심도보다 더 작아야 한다.
각각의 메시지 스누퍼는 대응하는 노드를 통과하는 포인트-투-포인트 정렬된 메시지들을 캡처한다. 이하에 더 상세히 설명된 바와 같이, 이들 캡처된 정렬된 메시지들은 메시지들이 링 네트워크 (100) 상에서 이슈된 순서를 식별하는데 사용된다.
상기 설명된 바와 같이, 노드들 (N0-N5) 에서의 타임스탬프 카운터들의 각각은 '0' 의 값으로 초기화되고, 각각은 대응하는 노드가 원래의 포인트-투-포인트 정렬된 메시지를 송신하거나, 또는 다른 노드에서 발신한 포인트-투-포인트 정렬된 메시지를 수신할 때 증분된다. 타임스탬프 카운터들의 각각은 MAX_COUNT 값까지 카운트한다. MAX_COUNT 값에 도달한 후, 타임스탬프 카운터들은 '0' 의 값으로 랩어라운드한다. 하나의 실시형태에서, MAX_COUNT 값은 카운터 에일리어싱을 회피하기 위해 각각의 메시지 스누퍼의 엔트리들의 수의 적어도 2 배가 되도록 선택된다.
하나의 실시형태에서, 타임스탬프 카운터를 초기화 (또는 랩어라운드) 하는 것은 또한 타임스탬프 카운터 값의 부호 비트를 반전시킨다. 이하에 더 상세히 설명된 바와 같이, 노드들 (N0-N5) 은 메시지 버스 (102) 상에서 수신된 포인트-투-포인트 정렬된 메시지들의 순서를 결정하기 위해 타임스탬프 값 (및 부호 비트) 을 사용한다.
일반적으로, 2 개의 포인트-투-포인트 정렬된 메시지들과 연관된 타임스탬프 값들의 부호 비트들이 같으면, 더 낮은 타임스탬프 값을 가진 포인트-투-포인트 정렬된 메시지가 더 오래된 것이다 (그리고 따라서 우선순위를 갖는다). 2 개의 포인트-투-포인트 정렬된 메시지들과 연관된 타임스탬프 값들의 부호 비트들이 상이하면, 더 높은 타임스탬프 값을 가진 포인트-투-포인트 정렬된 메시지가 더 오래된 것이다 (그리고 따라서 우선순위를 갖는다). 2 개의 포인트-투-포인트 정렬된 메시지들과 연관된 부호 비트들 및 타임스탬프 값들이 같으면, 2 개의 포인트-투-포인트 정렬된 메시지들은 동시에 전송되었다. 이들 조건들 하에서, '타이-브레이커 (tie-breaker)' 는 레졸루션을 제공하기 위해 필요하다. 예를 들어, 랜덤 값을 생성하기 위해 어드레스 해싱 함수가 각각의 포인트-투-포인트 정렬된 메시지에 적용될 수도 있다. 더 큰 값과 연관된 포인트-투-포인트 정렬된 메시지는 더 오래된 메시지로서 지정되고 우선순위를 부여받을 수도 있다. 다른 방법들이 또한 이들 조건들 하에서 우선순위 레졸루션을 제공하는데 사용될 수 있다.
포인트-투-포인트 정렬된 메시지들의 우선순위가 본 발명의 하나의 실시형태에 따라 결정되는 방식이 이제 특정 예를 사용하여 더 상세히 설명될 것이다. 이 예에서, 루트 노드 (N0) 의 클라이언트 로직 (240) 은 제 1 CPU (예를 들어, CPU_0) 를 포함하고, 브랜치 노드 (N3) 의 클라이언트 로직은 제 2 CPU (예를 들어, CPU_1) 를 포함하고, 브랜치 노드 (N5) 의 클라이언트 로직은 시스템 메모리를 포함한다. CPU_0 (노드 (N0)) 및 CPU_1 (노드 (N3)) 양자 모두는 노드 (N5) 의 시스템 메모리에서 동일한 캐시 라인 'A' 에 대한 배타적 액세스 (exclusive access) 를 시도한다. 설명된 예에서, 노드들 (N0-N5) 의 각각의 타임스탬프 카운터는 초기에 '0' 의 값을 갖는 것으로 가정된다.
도 8a 는 시간 (T0) 에서의 링 네트워크 (100) 의 상태를 예시하는 테이블 (800) 이며, 이는: 노드들 (N0-N5) 에 의해 수행된 액션들, 노드들 (N0-N5) 에 의해 메시지 버스 (102) 상에서 제공된 출력 메시지들, 및 노드들 (N0-N5) 의 메시지 스누퍼들의 콘텐츠들, 노드들 (N0-N5) 의 타임스탬프 카운터들의 값들, 노드들 (N0-N5) 의 컬러 비트들의 값들, 및 링 네트워크 (100) 주위를 연속적으로 이동하는 펄스 메시지의 위치를 포함한다. 시간 (T0) 에서, 루트 노드 (N0) 의 CPU_0 은 메시지 버스 (102) 상에서 (예를 들어, MSG_01 로서) 메시지 M*0_5(0) 을 송신한다. 본 명세서에서 설명된 예들에서, M*X_Y(Z) 의 메시지 버스 표기법이 사용되며, 여기서 M* 는 포인트-투-포인트 정렬된 메시지를 특정하고, X 는 소스 노드 ID (즉, 메시지를 발신하는 노드 (N0) 의 노드 ID 레지스터 (250) 의 콘텐츠들) 를 특정하고, Y 는 목적지 노드 ID (즉, 포인트-투-포인트 정렬된 메시지를 수신하기 위한 노드 (N5) 의 노드 ID 레지스터의 콘텐츠들) 와 대응하고, 그리고 Z 는 발신 노드 (N0) 의 타임스탬프 값과 대응한다 (그 때 메시지가 처음 전송된다). 따라서, 메시지 M*0_5(0) 은, 노드 (N0) 의 타임스탬프 카운터가 0 의 값을 가질 때 개시되는, 노드 (N0) 로부터 노드 (N5) 로 송신된 포인트-투-포인트 정렬된 메시지를 특정한다. 설명된 예에서, 메시지 M*0_5(0) 은 트랜잭션이 노드 (N5) 의 시스템 메모리에서 캐시 라인 'A' 에 대한 액세스인 것을 표시하는 추가적인 정보 (미도시) 를 포함한다. 메시지 버스 (102) 상에서 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 송신 시, 노드 (N0) 의 CPU_0 은 그의 타임스탬프 카운터 (255) 를 0 의 값에서 1 의 값으로 증분시킨다. 노드 (N0) 의 메시지 스누퍼 (230) 는 메시지 M*0_5(0) 을 저장한다.
또한 시간 (T0) 에서, 노드 (N2) 는 메시지 버스 (102) 상에서 (예를 들어, MSG_23 으로서) 정렬된 포인트-투-포인트 메시지 M*2_4(0) 을 송신한다. 상기 정의된 명명법에 따르면, 메시지 M*2_4(0) 은, 노드 (N2) 의 타임스탬프 카운터가 0 의 값을 가질 때 개시되는, 노드 (N2) 로부터 노드 (N4) 로 송신된 포인트-투-포인트 정렬된 메시지를 특정한다. 메시지 버스 (102) 상에서 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 송신 시, 노드 (N2) 는 그의 타임스탬프 카운터를 0 의 값에서 1 의 값으로 증분시킨다. 노드 (N2) 의 메시지 스누퍼는 메시지 M*2_4(0) 을 저장한다.
시간 (T0) 에서, 노드들 (N1 및 N3-N5) 은 어떤 액션들도 개시 (또는 메시지 버스 (102) 상에서 어떤 메시지들도 제공) 하지 않고 노드들 (N1 및 N3-N5) 의 메시지 스누퍼들은 비어 있는 것에 주목한다. 이들 노드들 (N1 및 N3-N5) 중 어떤 것도 포인트-투-포인트 정렬된 메시지를 수신 또는 송신하지 않았기 때문에, 이들 노드들의 타임스탬프 카운터들은 변경되지 않은 채로 있다.
예시된 예에서, 펄스 메시지는 시간 (T0) 에서 노드 (N4) 에 도달하고, 이로써 노드 (N4) 의 컬러 비트가 '0' 값으로부터 '1' 값으로 트랜지션하게 한다. 컬러 비트 값들 및 펄스 위치는 본 예에 대해 임의적으로 선택된다는 것에 주목한다.
도 8b 는 다음 사이클 (T1) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (801) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 메시지 M*0_5(0) 은 노드 (N1) 에 의해 수신되고, 이 노드 (N1) 는 그의 메시지 스누퍼에 메시지 M*0_5(0) 을 저장한다. 노드 (N1) 는 포인트-투-포인트 정렬된 메시지를 수신했기 때문에, 노드 (N1) 는 그의 타임스탬프 카운터를 0 에서 1 로 증분시킨다. 노드 (N1) 내의 노드 로직 (310) 은 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 노드 (N2) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 노드 (N3) 에 의해 수신되고, 이 노드 (N3) 는 그의 메시지 스누퍼에 메시지 M*2_4(0) 을 저장한다. 노드 (N3) 는 포인트-투-포인트 정렬된 메시지를 수신했기 때문에, 노드 (N3) 는 그의 타임스탬프 카운터를 0 에서 1 로 증분시킨다. 노드 (N3) 내의 노드 로직은 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 노드 (N4) 에 송신한다.
펄스 메시지는 사이클 (T1) 동안 노드 (N5) 에 도달하고, 이로써 노드 (N5) 의 컬러 비트가 '0' 값으로부터 '1' 값으로 토글링하게 한다.
도 8c 는 다음 사이클 (T2) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (802) 이다. 이 사이클 (T2) 동안, 노드 (N3) 의 CPU_1 은 메시지 버스 (102) 상에서 (예를 들어, MSG_34 로서) 메시지 M*3_5(1) 을 송신하고 이 메시지 M*3_5(1) 을 그의 메시지 스누퍼에 저장한다. 상기 설명된 바와 같이, 메시지 M*3_5(1) 은 노드 (N3) 로부터 노드 (N5) 로의 포인트-투-포인트 정렬된 메시지를 특정한다. 노드 (N3) 의 타임스탬프 값은 메시지 M*3_5(1) 이 생성될 때 '1' 인 것에 주목한다. 설명된 예에서, 메시지 M*3_5(1) 은 트랜잭션이 노드 (N5) 의 시스템 메모리에서 캐시 라인 'A' 에 대한 액세스인 것을 표시하는 추가적인 정보 (미도시) 를 포함한다. 노드 (N3) 는 정렬된 메시지 M*3_5(1) 을 송신했기 때문에, 노드 (N3) 의 타임스탬프 카운터는 1 에서 2 로 증분된다. 노드들 (N0-N2 및 N4-N5) 은 사이클 (T2) 동안 어떤 새로운 액션들도 개시하지 않는다는 것에 주목한다.
또한 사이클 (T2) 동안, 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 노드 (N2) 에 의해 수신되고, 이 노드 (N2) 는 그의 메시지 스누퍼에 메시지 M*0_5(0) 을 저장한다. 노드 (N2) 는 정렬된 메시지를 수신했기 때문에, 노드 (N2) 는 그의 타임스탬프 카운터를 1 에서 2 로 증분시킨다. 노드 (N2) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 노드 (N3) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 노드 (N4) 에 의해 수신되고, 이 노드 (N4) 는 그의 메시지 스누퍼에 메시지 M*2_4(0) 을 저장한다. 노드 (N4) 는 정렬된 메시지를 수신했기 때문에, 노드 (N4) 는 그의 타임스탬프 카운터를 0 에서 1 로 증분시킨다. 노드 (N4) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 노드 (N5) 에 송신한다.
펄스 메시지는 사이클 (T2) 동안 노드 (N0) 에 도달하고, 이로써 노드 (N0) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다.
도 8d 는 다음 사이클 (T3) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (803) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 노드 (N3) 에 의해 수신되고, 이 노드 (N3) 는 그의 메시지 스누퍼에 메시지 M*0_5(0) 을 저장한다. 노드 (N3) 는 정렬된 메시지를 수신했기 때문에, 노드 (N3) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 노드 (N3) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 노드 (N4) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 노드 (N5) 에 의해 수신되고, 이 노드 (N5) 는 그의 메시지 스누퍼에 메시지 M*2_4(0) 을 저장한다. 노드 (N5) 는 정렬된 메시지를 수신했기 때문에, 노드 (N5) 는 그의 타임스탬프 카운터를 0 에서 1 로 증분시킨다. 노드 (N5) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 노드 (N0) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N4) 에 의해 수신되고, 이 노드 (N4) 는 그의 메시지 스누퍼에 메시지 M*3_5(1) 을 저장한다. 노드 (N4) 는 정렬된 메시지를 수신했기 때문에, 노드 (N4) 는 그의 타임스탬프 카운터를 1 에서 2 로 증분시킨다. 노드 (N4) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 노드 (N5) 에 송신한다.
펄스 메시지는 사이클 (T3) 동안 노드 (N1) 에 도달하고, 이로써 노드 (N1) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다.
도 8e 는 다음 사이클 (T4) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (804) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 노드 (N4) 에 의해 수신되고, 이 노드 (N4) 는 그의 메시지 스누퍼에 메시지 M*0_5(0) 을 저장한다. 노드 (N4) 는 정렬된 메시지를 수신했기 때문에, 노드 (N4) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 노드 (N4) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 노드 (N5) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 노드 (N0) 에 의해 수신되고, 이 노드 (N0) 는 그의 메시지 스누퍼에 메시지 M*2_4(0) 을 저장한다. 노드 (N0) 는 정렬된 메시지를 수신했기 때문에, 노드 (N0) 는 그의 타임스탬프 카운터를 1 에서 2 로 증분시킨다. 노드 (N0) 내의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 노드 (N1) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N5) 에 의해 수신되고, 이 노드 (N5) 는 그의 메시지 스누퍼에 메시지 M*3_5(1) 을 저장한다. 노드 (N5) 는 정렬된 메시지를 수신했기 때문에, 노드 (N5) 는 그의 타임스탬프 카운터를 1 에서 2 로 증분시킨다. 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N5) 를 어드레싱하기 때문에, 노드 (N5) 는 메시지 M*3_5(1) 이 수신될 때 컬러 비트의 상태 (예를 들어, 컬러 비트 = 1) 를 결정 및 저장한다. 하나의 실시형태에서, 이 컬러 비트는 노드 (N5) 의 메시지 스누퍼에 포인트-투-포인트 정렬된 메시지 M*3_5(1) 과 함께 저장된다. 노드 (N5) 가 적절한 순서로 포인트-투-포인트 정렬된 메시지들을 리졸브하는 것을 보장하기 위해, 노드 (N5) 는 컬러 비트의 값이 토글링될 (예를 들어, 컬러 비트가 노드 (N5) 내에서 0 의 값으로 트랜지션할) 때까지 수신된 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 리졸브할 것을 대기해야 한다. 노드 (N5) 의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 노드 (N0) 에 송신한다.
펄스 메시지는 사이클 (T4) 동안 노드 (N2) 에 도달하고, 이로써 노드 (N2) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다.
도 8f 는 다음 사이클 (T5) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (805) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 노드 (N5) 에 의해 수신되고, 이 노드 (N5) 는 그의 메시지 스누퍼에 메시지 M*0_5(0) 을 저장한다. 노드 (N5) 는 정렬된 메시지를 수신했기 때문에, 노드 (N5) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 노드 (N5) 를 어드레싱하기 때문에, 노드 (N5) 는 메시지 M*0_5(0) 이 수신될 때 컬러 비트의 상태 (예를 들어, 컬러 비트 = 1) 를 결정 및 저장한다. 노드 (N5) 가 적절한 순서로 정렬된 메시지들을 리졸브하는 것을 보장하기 위해, 노드 (N5) 는 컬러 비트의 값이 토글링될 (예를 들어, 컬러 비트가 노드 (N5) 내에서 0 의 값으로 트랜지션할) 때까지 수신된 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 리졸브할 것을 대기해야 한다. 노드 (N5) 의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*0_5(0) 을 노드 (N0) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 노드 (N1) 에 의해 수신되고, 이 노드 (N1) 는 그의 메시지 스누퍼에 메시지 M*2_4(0) 을 저장한다. 노드 (N1) 는 정렬된 메시지를 수신했기 때문에, 노드 (N1) 는 그의 타임스탬프 카운터를 1 에서 2 로 증분시킨다. 노드 (N1) 의 노드 로직은 그 후 메시지 M*2_4(0) 을 노드 (N2) 에 송신한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N0) 에 의해 수신되고, 이 노드 (N0) 는 그의 메시지 스누퍼에 메시지 M*3_5(1) 을 저장한다. 노드 (N0) 는 정렬된 메시지를 수신했기 때문에, 노드 (N0) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 노드 (N0) 의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 노드 (N1) 에 송신한다.
펄스 메시지는 사이클 (T5) 동안 노드 (N3) 에 도달하고, 이로써 노드 (N3) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다.
도 8g 는 다음 사이클 (T6) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (806) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 포인트-투-포인트 정렬된 메시지 M*0_5(0) 은 발신 노드 (N0) 로 루프 백한다. 응답으로, 노드 (N0) 는 링 네트워크 (200) 상에서 이 메시지 M*0_5(0) 의 전파를 중단한다. 노드 (N0) 는, 원래 송신한 정렬된 메시지를 수신하는 것에 응답하여 그의 타임스탬프 카운터를 증분시키지 않는다는 것에 주목한다. 메시지 M*0_5(0) 을 수신 시, 노드 (N0) 는 그의 메시지 스누퍼에 액세스하고, 저장된 정렬된 메시지들을 비교하여, 그의 포인트-투-포인트 정렬된 메시지 M*0_5(0) 이 동일한 노드 (N5) 를 어드레싱한 다른 포인트-투-포인트 정렬된 메시지 M*3_5(1) 에 우선한다고 결정한다 (메시지 M*0_5(0) 은 다른 정렬된 메시지 M*3_5(1) 보다 더 낮은 타임스탬프를 갖기 때문임). 그 결과, 노드 (N0) 는 그의 포인트-투-포인트 정렬된 메시지 M*0_5(0) 이 노드 (N5) 에 의해 우선순위를 부여받을 것이고, 노드 (N5) 에 의해 프로세싱될 것이라는 통지를 받는다.
추가로, 포인트-투-포인트 정렬된 메시지 M*2_4(0) 은 발신 노드 (N2) 로 루프 백한다. 응답으로, 노드 (N2) 는 링 네트워크 (200) 상에서 이 메시지 M*2_4(0) 의 전파를 중단한다. 노드 (N2) 는, 원래 송신한 정렬된 메시지를 수신하는 것에 응답하여 그의 타임스탬프 카운터를 증분시키지 않는다. 메시지 M*2_4(0) 을 수신 시, 노드 (N2) 는 그의 메시지 스누퍼에 액세스하고, 저장된 정렬된 메시지들을 비교하여, 그의 메시지 M*2_4(0) 이 그의 메시지 스누퍼에 저장된 다른 정렬된 메시지들에 우선한다고 결정한다 (이들 다른 메시지들 중 어떤 것도 노드 (N4) 를 어드레싱하지 않기 때문임). 그 결과, 노드 (N2) 는 그의 메시지 M*2_4(0) 이 노드 (N4) 에 의해 우선순위를 부여받을 것이고, 노드 (N4) 에 의해 프로세싱될 것이라는 통지를 받는다.
추가로, 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N1) 에 의해 수신되고, 이 노드 (N1) 는 그의 메시지 스누퍼에 메시지 M*3_5(1) 을 저장한다. 노드 (N1) 는 정렬된 메시지를 수신했기 때문에, 노드 (N1) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 노드 (N1) 의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 노드 (N2) 에 송신한다.
펄스 메시지는 사이클 (T6) 동안 노드 (N4) 에 도달하고, 이로써 노드 (N4) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다. 노드 (N4) 는 그의 컬러 비트의 토글링에 응답하여 그의 메시지 스누퍼에 저장된 정렬된 메시지들의 우선순위를 리졸브한다는 것에 주목한다. 상기 설명된 바와 같이, 노드 (N4) 는 노드 (N4) 를 어드레싱한 그의 메시지 버퍼에서 유일한 정렬된 메시지 M*2_4(0) 에 우선순위를 부여한다.
도 8h 는 다음 사이클 (T7) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (807) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 펄스 메시지는 사이클 (T7) 동안 노드 (N5) 에 도달하고, 이로써 노드 (N5) 의 컬러 비트가 '1' 값으로부터 '0' 값으로 토글링하게 한다. 이 컬러 비트의 토글링에 응답하여, 노드 (N5) 는, 컬러 비트가 '1' 의 이전의 값을 갖는 동안 그의 메시지 스누퍼에 저장된 정렬된 메시지들의 중재를 수행한다. 따라서, 노드 (N5) 는 포인트-투-포인트 정렬된 메시지 M*0_5(0) 이 다른 포인트-투-포인트 정렬된 메시지 M*3_5(1) 에 우선한다고 결정하는데, 메시지 M*0_5(0) 이 다른 메시지 M*3_5(1) 보다 더 낮은 타임스탬프 값을 갖기 때문이다. 응답으로, 노드 (N5) 는 시스템 메모리의 캐시 라인 'A' 에서 메시지 M*0_5(0) 에 의해 요청된 데이터에 액세스할 것이다. 노드 (N5) 는 이 요청된 데이터를 노드 (N0) 에 송신하는 별도의 메시지 (미도시) 를 생성할 것이라는 것에 주목한다. 노드 (N5) 는 그의 메시지 스누퍼에 저장된 포인트-투-포인트 정렬된 메시지 M*2_4(0) 을 무시하는데, 이 메시지가 노드 (N5) 를 어드레싱하지 않기 때문이라는 것에 더 주목한다.
추가로, 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 노드 (N2) 에 의해 수신되고, 이 노드 (N2) 는 그의 메시지 스누퍼에 메시지 M*3_5(1) 을 저장한다. 노드 (N2) 는 정렬된 메시지를 수신했기 때문에, 노드 (N2) 는 그의 타임스탬프 카운터를 2 에서 3 으로 증분시킨다. 노드 (N2) 의 노드 로직은 그 후 포인트-투-포인트 정렬된 메시지 M*3_5(1) 을 노드 (N3) 에 송신한다.
도 8i 는 다음 사이클 (T8) 동안의 링 네트워크 (100) 의 상태를 예시하는 테이블 (808) 이다. 이 때, 노드들 (N0-N5) 중 어떤 것도 어떤 새로운 메시지들을 송신하지 않는다. 포인트-투-포인트 정렬된 메시지 M*3_5(1) 은 발신 노드 (N3) 로 루프 백한다. 응답으로, 노드 (N3) 는 링 네트워크 (200) 상에서 이 메시지 M*3_5(1) 의 전파를 중단한다. 노드 (N3) 는, 원래 송신한 포인트-투-포인트 정렬된 메시지를 수신하는 것에 응답하여 그의 타임스탬프 카운터를 증분시키지 않는다. 메시지 M*3_5(1) 을 수신 시, 노드 (N3) 는 그의 메시지 스누퍼에 액세스하고, 저장된 정렬된 메시지들을 비교하여, 노드 (N0) 에 의해 송신된 포인트-투-포인트 정렬된 메시지 M*0_5(0) 이 그 자신의 포인트-투-포인트 정렬된 메시지 M*3_5(1) 에 우선한다고 결정한다 (메시지 M*0_5(0) 은 메시지 M*3_5(1) 보다 더 낮은 타임스탬프 값을 갖기 때문임). 그 결과, 노드 (N3) 는 그의 메시지 M*3_5(1) 이 노드 (N5) 에 의해 우선순위를 부여받지 않을 것이고, 노드 (N5) 에 의해 프로세싱되지 않을 것이라는 통지를 받는다. 응답으로, 노드 (N3) 는 메시지 M*3_5(1) 이 재송신되어야 한다고 결정할 수도 있다.
전술한 방식으로, 포인트-투-포인트 정렬된 메시지들은 복잡한 중앙집중된 제어 회로를 요구하지 않고 링 네트워크 (100) 에 의해 프로세싱될 수 있다. 요구된 제어 로직은, 어떤 중앙집중된 제어기도 필요하지 않도록, 노드들 간에 분산되는 것이 유리하다. 더욱이, 넓은 다이 영역에 걸쳐서 광범위한 저 스큐 클록 트리를 설계/제작할 필요가 없으며, 이로써 네트워크의 물리적 구현을 유리하게 단순화한다. 추가로, 링 네트워크 (100) 는 최소 레이턴시로 고 주파수에서 동작될 수 있다.
상기 설명된 바와 같이, 노드들 (N0-N5) 내의 클라이언트 로직은 메시지 버스 (102) 상에서의 메시지들의 흐름을 제어한다. 링 네트워크의 평균 대역폭이 2 (양분한 (bisectional) 대역폭) 이기 때문에, 대역폭 할당 정책들 및 흐름 제어 로직은 반드시 각각의 노드의 클라이언트 로직 내에 포함된다. 라운드 로빈 (round robin) 또는 크레딧-기반 스킴들과 같은 여러 널리 공지된 기법들은, 각각의 노드 내의 대역폭 할당 및 흐름 제어 회로에 의해 사용될 수 있다. 상기 제공된 설명에 따르면, 각각의 노드의 대역폭 할당 및 흐름 제어 로직은 클라이언트 로직 클록 도메인에서 동작할 것이며, 따라서 링 네트워크 클록 도메인의 레퍼런스 클록 신호 (CK_REF) 와는 상이한 주파수에서 동작할 수 있다.
본 발명은 여러 실시형태들과 관련하여 설명되었지만, 본 발명은 개시된 실시형태들에 한정되지 않고, 당업자에게 명백할 여러 수정들이 가능한 것으로 이해된다. 이에 따라, 본 발명은 단지 다음의 청구항들에 의해서만 한정된다.

Claims (19)

  1. 링 네트워크로서,
    루트 노드 및 하나 이상의 브랜치 노드들을 포함하는 복수의 노드들로서, 상기 루트 노드는 레퍼런스 클록 신호를 수신하기 위해 커플링되는, 상기 복수의 노드들;
    상기 루트 노드로부터의 상기 레퍼런스 클록 신호를, 상기 하나 이상의 브랜치 노드들의 각각을 통하여, 다시 상기 루트 노드로 라우팅하는 순환 클록 신호 경로; 및
    상기 순환 클록 신호 경로와 병렬로 연장되는 순환 메시지 경로로서, 상기 루트 노드 및 상기 하나 이상의 브랜치 노드들은 상기 메시지 경로 상에서 메시지들을 송신하는, 상기 순환 메시지 경로를 포함하고,
    상기 복수의 노드들의 각각의 노드는, 상기 클록 신호 경로 상에서 수신된 상기 레퍼런스 클록 신호에 응답하여 상기 메시지 경로 상에서 수신된 메시지들을 래치하는 대응하는 노드 로직을 포함하고,
    상기 복수의 노드들의 각각의 노드는, 메시지들을 송신할 때 상기 레퍼런스 클록 신호에 대하여 대응하는 노드 지연을 도입하고,
    상기 클록 신호 경로는, 상기 복수의 노드들의 각각의 노드 내에서의 지연 라인을 포함하고,
    각 지연 라인은, 상기 레퍼런스 클록 신호에 응답하여 상기 대응하는 노드 로직이 상기 메시지 경로 상에서 수신된 상기 메시지들을 래치한 후에 상기 클록 신호 경로 상의 상기 레퍼런스 클록 신호에 지연을 도입하고,
    상기 복수의 노드들의 각각의 노드 내의 대응하는 지연 라인에 의해 도입된 상기 지연은 상기 대응하는 노드 지연에 기초하여 선택되는, 링 네트워크.
  2. 제 1 항에 있어서,
    메시지들은 단방향 방식으로 상기 메시지 경로 상에서 송신되는, 링 네트워크.
  3. 제 1 항에 있어서,
    상기 레퍼런스 클록 신호는 상기 메시지 경로 상의 송신된 상기 메시지들의 동기화를 위해 사용되는 유일한 클록 신호인, 링 네트워크.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는: 대응하는 로컬 클록 신호에 의해 정의된 로컬 클록 도메인에서 동작하는 클라이언트 로직을 포함하는, 링 네트워크.
  7. 제 6 항에 있어서,
    상기 레퍼런스 클록 신호는 각각의 로컬 클록 신호보다 더 높은 주파수를 갖는, 링 네트워크.
  8. 제 6 항에 있어서,
    상기 복수의 노드들의 각각의 노드 내에서 상기 제 1 클록 도메인 및 상기 로컬 클록 도메인에 걸쳐서 통신들을 가능하게 하는 동기화 회로부를 더 포함하는, 링 네트워크.
  9. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는, 대응하는 타임스탬프 카운터를 더 포함하는, 링 네트워크.
  10. 제 9 항에 있어서,
    상기 복수의 노드들의 각각의 노드에서 상기 타임스탬프 카운터를 초기화하기 위한 수단을 더 포함하는, 링 네트워크.
  11. 제 10 항에 있어서,
    상기 복수의 노드들의 각각의 노드가 정렬된 메시지를 발신하는 것에 응답하여 그리고 다른 노드로부터 정렬된 메시지를 수신하는 것에 응답하여 상기 대응하는 타임스탬프 카운터를 증분시키기 위한 수단을 더 포함하고,
    각각의 정렬된 메시지는 상기 복수의 노드들 중 특정 하나를 어드레싱하는, 링 네트워크.
  12. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 순환 메시지 경로를 연속적으로 횡단하는 펄스 메시지에 의해 토글링되는 컬러 비트 값을 저장하는 컬러 비트 레지스터를 포함하는, 링 네트워크.
  13. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는 고유 노드 식별자 어드레스를 저장하는 노드 식별 레지스터를 포함하는, 링 네트워크.
  14. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 메시지 경로 상에서 수신된 정렬된 메시지들을 저장하는 대응하는 메시지 스누퍼를 포함하는, 링 네트워크.
  15. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 메시지 경로 상에서 수신된 복수의 정렬된 메시지들의 우선순위를 중재하기 위한 수단을 포함하는, 링 네트워크.
  16. 삭제
  17. 제 1 항에 있어서,
    각각의 지연 라인의 상기 지연은 조정가능한, 링 네트워크.
  18. 제 1 항에 있어서,
    상기 루트 노드는, 상기 메시지 경로 상에서 메시지들을 수신하고 상기 레퍼런스 클록 신호와 상기 수신된 메시지들을 재동기화하는 재동기화 회로를 포함하는, 링 네트워크.
  19. 제 1 항에 있어서,
    상기 복수의 노드들의 각각의 노드는,
    대응하는 타임스탬프 값을 저장하는 대응하는 타임스탬프 카운터;
    정렬된 메시지를 발신하는 것에 응답하여 그리고 다른 노드로부터 정렬된 메시지를 수신하는 것에 응답하여 상기 대응하는 타임스탬프 카운터를 증분시키기 위한 수단으로서, 각각의 정렬된 메시지는 상기 복수의 노드들 중 특정 하나를 어드레싱하는, 상기 대응하는 타임스탬프 카운터를 증분시키기 위한 수단;
    상기 대응하는 타임스탬프 값을 상기 노드에 의해 생성되는 각각의 정렬된 메시지에 첨부하기 위한 수단;
    상기 메시지 경로 상에서 수신된 정렬된 메시지들을 저장하는 대응하는 메시지 스누퍼;
    상기 순환 메시지 경로를 연속적으로 횡단하는 펄스 메시지에 의해 토글링되는 대응하는 컬러 비트 값을 저장하는 대응하는 컬러 비트 레지스터; 및
    토글링되는 상기 대응하는 컬러 비트 값에 응답하여 상기 대응하는 메시지 스누퍼 내에 저장된 복수의 정렬된 메시지들의 우선순위를 중재하기 위한 수단으로서, 우선순위는 상기 복수의 정렬된 메시지들에 첨부된 타임스탬프 값들에 기초하여 부여되는, 상기 우선순위를 중재하기 위한 수단을 더 포함하는, 링 네트워크.
KR1020197017774A 2016-11-23 2017-11-20 분산 제어 동기화된 링 네트워크 아키텍처 KR102214874B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662425792P 2016-11-23 2016-11-23
US62/425,792 2016-11-23
US15/816,235 US10411910B2 (en) 2016-11-23 2017-11-17 Distributed control synchronized ring network architecture
US15/816,235 2017-11-17
PCT/US2017/062627 WO2018098084A2 (en) 2016-11-23 2017-11-20 Distributed control synchronized ring network architecture

Publications (2)

Publication Number Publication Date
KR20190085992A KR20190085992A (ko) 2019-07-19
KR102214874B1 true KR102214874B1 (ko) 2021-02-09

Family

ID=62144074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017774A KR102214874B1 (ko) 2016-11-23 2017-11-20 분산 제어 동기화된 링 네트워크 아키텍처

Country Status (9)

Country Link
US (1) US10411910B2 (ko)
EP (1) EP3545653B1 (ko)
JP (1) JP7014812B2 (ko)
KR (1) KR102214874B1 (ko)
CN (1) CN110546922B (ko)
CA (1) CA3044672C (ko)
ES (1) ES2903557T3 (ko)
TW (1) TWI730197B (ko)
WO (1) WO2018098084A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017011458A1 (de) * 2017-12-12 2019-06-13 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Teilnehmer eines Bussystems, Verfahren zum Betrieb und ein Bussystem
US11829196B2 (en) * 2019-10-22 2023-11-28 Advanced Micro Devices, Inc. Ring transport employing clock wake suppression
JP7231909B2 (ja) 2019-11-12 2023-03-02 株式会社アーリーワークス 情報処理装置及びプログラム
CN111884901B (zh) * 2020-07-01 2021-10-22 浙江杰芯科技有限公司 一种基于环形网络的时钟同步路径查询方法及系统
JP2023547465A (ja) * 2020-10-29 2023-11-10 華為技術有限公司 コントロールシステム、クロック同期方法、コントローラ、ノードデバイス、及び車両
WO2023211320A1 (en) * 2022-04-25 2023-11-02 Saab Ab Method for generating a non-jittering trigger signal in a node of a serial data ring-bus

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7280550B1 (en) * 2002-12-18 2007-10-09 Cirrus Logic, Inc. Bandwidth optimization of ring topology through propagation delay compensation
US20090100189A1 (en) * 2007-10-04 2009-04-16 Frank Bahren Data network with a time synchronization system
US20140266369A1 (en) * 2013-03-15 2014-09-18 Qualcomm Incorporated Low power architectures
US20160116935A1 (en) * 2014-10-28 2016-04-28 Napatech A/S System and a method of deriving information
US20160241480A1 (en) * 2015-02-18 2016-08-18 Accedian Networks Inc. Single queue link aggregation

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58127246A (ja) * 1982-01-26 1983-07-29 Nec Corp リングバスインタフエイス回路
US4716575A (en) * 1982-03-25 1987-12-29 Apollo Computer, Inc. Adaptively synchronized ring network for data communication
US5539727A (en) * 1992-04-14 1996-07-23 Kramarczyk; Marian Method and apparatus for configuring and maintaining token ring networks
JPH06332852A (ja) * 1993-05-20 1994-12-02 Hitachi Ltd データ転送システム
US5815016A (en) 1994-09-02 1998-09-29 Xilinx, Inc. Phase-locked delay loop for clock correction
US6574219B1 (en) * 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
US6523155B1 (en) * 1998-11-17 2003-02-18 Jeffrey Joseph Ruedinger Method for partitioning a netlist into multiple clock domains
JP2002141922A (ja) * 2000-11-01 2002-05-17 Ricoh Co Ltd ループ型バスシステム
US7012927B2 (en) 2001-02-06 2006-03-14 Honeywell International Inc. High level message priority assignment by a plurality of message-sending nodes sharing a signal bus
US6570813B2 (en) * 2001-05-25 2003-05-27 Micron Technology, Inc. Synchronous mirror delay with reduced delay line taps
US6990316B2 (en) 2001-06-26 2006-01-24 Nokia Corporation Short range RF network configuration
US20030172190A1 (en) * 2001-07-02 2003-09-11 Globespanvirata Incorporated Communications system using rings architecture
US6961861B2 (en) * 2002-02-27 2005-11-01 Sun Microsystems, Inc. Globally clocked interfaces having reduced data path length
US7292585B1 (en) 2002-12-20 2007-11-06 Symantec Operating Corporation System and method for storing and utilizing routing information in a computer network
US7769956B2 (en) * 2005-09-07 2010-08-03 Intel Corporation Pre-coherence channel
US7885296B2 (en) 2006-07-27 2011-02-08 Cisco Technology, Inc. Maintaining consistency among multiple timestamp counters distributed among multiple devices
US7809871B2 (en) 2006-12-07 2010-10-05 Integrated Device Technology Inc. Common access ring system
JP5327832B2 (ja) * 2007-05-16 2013-10-30 独立行政法人情報通信研究機構 ノード識別子と位置指示子とを用いたパケットの通信方法
US7864747B2 (en) 2008-03-28 2011-01-04 Embarq Holdings Company, Llc System and method for communicating timing to a remote node
US8261218B1 (en) * 2008-08-01 2012-09-04 Altera Corporation Systems and methods for determining beneficial clock-path connection delays
KR101299443B1 (ko) * 2009-05-15 2013-08-22 한국전자통신연구원 보호 절체 방법
CN102064927B (zh) * 2010-09-21 2013-11-13 四川和芯微电子股份有限公司 时序纠错系统及方法
US9247157B2 (en) * 2011-05-13 2016-01-26 Lattice Semiconductor Corporation Audio and video data multiplexing for multimedia stream switch
US8995473B2 (en) 2012-04-20 2015-03-31 Telefonaktiebolaget L M Ericsson (Publ) Ring based precise time data network clock phase adjustments
US9294301B2 (en) * 2012-09-20 2016-03-22 Arm Limited Selecting between contending data packets to limit latency differences between sources
US9053257B2 (en) * 2012-11-05 2015-06-09 Advanced Micro Devices, Inc. Voltage-aware signal path synchronization
US9652804B2 (en) * 2013-12-19 2017-05-16 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
US9355054B2 (en) * 2014-01-07 2016-05-31 Omnivision Technologies, Inc. Digital calibration-based skew cancellation for long-reach MIPI D-PHY serial links
CN104796212B (zh) * 2014-01-22 2019-07-05 中兴通讯股份有限公司 一种光突发传送网、节点和传输方法
US9209961B1 (en) * 2014-09-29 2015-12-08 Apple Inc. Method and apparatus for delay compensation in data transmission
TW201735581A (zh) * 2016-03-16 2017-10-01 瑞昱半導體股份有限公司 網路通訊裝置與電子裝置
US10496581B2 (en) * 2016-03-30 2019-12-03 Intel Corporation Un-sampled decision feedback equalizer including configurable loop delay

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7280550B1 (en) * 2002-12-18 2007-10-09 Cirrus Logic, Inc. Bandwidth optimization of ring topology through propagation delay compensation
US20090100189A1 (en) * 2007-10-04 2009-04-16 Frank Bahren Data network with a time synchronization system
US20140266369A1 (en) * 2013-03-15 2014-09-18 Qualcomm Incorporated Low power architectures
US20160116935A1 (en) * 2014-10-28 2016-04-28 Napatech A/S System and a method of deriving information
US20160241480A1 (en) * 2015-02-18 2016-08-18 Accedian Networks Inc. Single queue link aggregation

Also Published As

Publication number Publication date
CN110546922B (zh) 2022-05-10
ES2903557T3 (es) 2022-04-04
JP2020508625A (ja) 2020-03-19
WO2018098084A3 (en) 2019-12-05
CA3044672C (en) 2023-08-29
KR20190085992A (ko) 2019-07-19
CA3044672A1 (en) 2018-05-31
US10411910B2 (en) 2019-09-10
WO2018098084A2 (en) 2018-05-31
EP3545653B1 (en) 2022-01-05
US20180145849A1 (en) 2018-05-24
JP7014812B2 (ja) 2022-02-01
EP3545653A4 (en) 2021-01-27
CN110546922A (zh) 2019-12-06
TW201832470A (zh) 2018-09-01
TWI730197B (zh) 2021-06-11
EP3545653A2 (en) 2019-10-02

Similar Documents

Publication Publication Date Title
KR102214874B1 (ko) 분산 제어 동기화된 링 네트워크 아키텍처
US11196587B2 (en) Permutated ring network
US10027433B2 (en) Multiple clock domains in NoC
US10355851B2 (en) Methods and systems for synchronization between multiple clock domains
TWI759585B (zh) 異步多時鐘域資料流接合及再同步系統及方法
KR20110095248A (ko) 신호 송신 방법 및 전송 유닛
Kapre Marathon: Statically-scheduled conflict-free routing on fpga overlay nocs
JP2022183237A (ja) 非同期asic
Nambinina et al. Extension of the lisnoc (network-on-chip) with an axi-based network interface
JP7373579B2 (ja) 並べ替えリングネットワーク相互接続型コンピューティングアーキテクチャ
Weber et al. Exploring asynchronous end-to-end communication through a synchronous NoC
JP7337021B2 (ja) 産業用ネットワークに接続されるスレーブ装置を制御するマスタ装置及び当該マスタ装置に備えられる通信モジュール
TWI834374B (zh) 排列環狀網路
US11023405B2 (en) Daisy chain control network with data generators and token-forwarding connections
Veena et al. Design and Implementation of Five Port Label Switched NoC Router Using FPGA
JP2024071432A (ja) 非同期asic
GB2249243A (en) Message routing in a multiprocessor computer system

Legal Events

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