KR20020015691A - 플릿 캐쉬 방식의 패브릭 라우터 - Google Patents

플릿 캐쉬 방식의 패브릭 라우터 Download PDF

Info

Publication number
KR20020015691A
KR20020015691A KR1020017014851A KR20017014851A KR20020015691A KR 20020015691 A KR20020015691 A KR 20020015691A KR 1020017014851 A KR1020017014851 A KR 1020017014851A KR 20017014851 A KR20017014851 A KR 20017014851A KR 20020015691 A KR20020015691 A KR 20020015691A
Authority
KR
South Korea
Prior art keywords
buffers
router
information unit
buffer
network
Prior art date
Application number
KR1020017014851A
Other languages
English (en)
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 KR20020015691A publication Critical patent/KR20020015691A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/251Cut-through or wormhole routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3036Shared queuing

Abstract

패브릭 라우터에서, 플릿은 신속하게 액세스가능한 플릿 버퍼의 제 1 세트에서 칩상에 저장되며, 플릿 버퍼의 제 1 세트로부터의 오버플로는 상기 제 1 세트보다 더 느리게 액세스되는 오프-칩 플릿 버퍼의 제 2 세트에 저장된다. 상기 플릿 버퍼는 포인터 어레이 또는 세트 결합 캐쉬를 통해 액세스되는 버퍼 풀을 포함할 수 있다. 망 노드간의 흐름 제어는 상기 버퍼의 제 1 세트 및 상기 버퍼의 제 2 세트간에 플릿을 전송하는 동안 새로운 플릿의 도달을 중단시킨다.

Description

플릿 캐쉬 방식의 패브릭 라우터{FABRIC ROUTER WITH FLIT CACHING}
상호 접속 망은 채널에 의해 연결된 노드의 세트로 구성된다. 상기 망은 노드간에 데이터 패킷을 전송하는데 사용된다. 상기 망은 예를 들어, 멀티컴퓨터, 멀티프로세서, 망 스위치 및 라우터에 사용된다. 멀티컴퓨터에서, 상기 망은 프로세싱 노드간에 메세지를 전달한다. 멀티프로세서에서, 상기 망은 프로세싱 노드로부터 메모리 노드로 메모리 요청을 전달하고 역방향, 즉 메모리 노드로부터 프로세싱 노드로 응답한다. 망 스위치 및 라우터에서, 상기 망은 입력 라인 카드로부터 출력 라인 카드로 패킷을 전달한다. 예를 들어, 여기서 참조로 통합되는 "가상 채널 할당을 갖는 라우터"란 명칭의 윌리엄 제이. 달리, 필립 피. 카베이, 래리 알. 데니슨 및 피. 알렌 킹에 의한 국제 공개 공보 PCT/US98/16762(WO99/11033)는 인터넷 라우터용 스위칭 구조를 제공하기 위해 3D 토러스(torus) 상호접속 망을 사용하는 것을 기술한다.
상호접속 망의 설계에 있어서 중요한 논점은 노드의 버퍼 저장 관리 또는 상호접속 패브릭을 형성하는 패브릭 라우터의 관리이다. 현재 PCT 특허 출원중으로 기술된 것을 포함하여 종래의 여러 라우터는 윌리엄 제이. 달리, 병렬 및 분산 시스템상의 IEEE 거래에 있어서, "가상 채널 흐름 제어"란 명칭의 1992년 3월 출간된 Vol. 3, No. 2의 pp. 194-205에 기술된 바와 같이 가상 채널 흐름 제어를 사용하여 상기 버퍼를 관리한다. 상기 방법에 의해, 각 채널과 연관된 버퍼 공간은 분할되고 상기 분할 구획은 가상 채널과 연관된다. 상기 채널을 통과하는 각 패킷은 특정 가상 채널에 할당되고, 다른 가상 채널을 통과하는 패킷과 버퍼 공간을 다투지 않는다.
최근에 수백개의 가상 채널을 갖는 라우터는 여러 목적지로 인도되는 트래픽의 여러 등급간의 차별화를 제공하도록 형성되었다. 상기 라우터에서, 가상 채널 버퍼를 유지하는데 필요한 공간의 양이 쟁점이 되고 있다. 버퍼의 수 N은 여러 트래픽 등급간의 차별화를 제공하기 위해 큰 값을 가져야 한다. 동시에, 각 버퍼의 크기 S는 단일 가상 채널을 위한 우수한 스루풋(throughput)을 제공하기 위해 큰 값을 가져야 한다. 총 입력 버퍼 크기는 상기 두개 텀의 곱, 즉 T = N x S이다. N = 512 인 가상 채널 및 각 플릿이 576 비트인 S = 4 플릿을 갖는 라우터에 대해, 필요한 총 버퍼 공간은 2048 플릿이거나 또는 1,179,648 비트이다. 상기 특허 출원에 기술된 유형의 라우터의 7 입력 채널에 대해 필요한 버퍼는 저장 공간으로 7Mbits 이상을 차지한다.
상기와 같은 저장 공간을 필요로 하기 때문에, 라우터 ASIC 칩당 약 1 Mbit로 제한되는 현재의 VLSI 기술로는 많은 수의 큰 가상 채널 버퍼를 갖는 단일 칩 패브릭 라우터를 형성하는 것이 불가능해진다. 종래에는 더 적은 수의 가상 채널을 갖는 방법을 취하는데, 이 방법은 여러 트래픽 등급간에 버퍼 방해를 발생시킬수 있으며, 또 각 가상 채널을 소형으로 형성하는 방법은 단일 가상 채널에서의 성능을 떨어뜨릴 수 있으며, 여러 ASIC 칩을 통해 라우터를 분할하는 방법은 비용과 복잡성을 증가시킨다.
본 발명은 플릿 캐쉬 방식의 패브릭 라우터에 관한 것이다.
도 1은 본 발명이 적용될 수 있는 라우터의 인터넷 배치를 도시한다.
도 2는 도 1의 라우터를 형성하는 3D 패브릭을 도시한다.
도 3은 도 2의 실시예에서 사용되는 패브릭 라우터를 도시한다.
도 4는 도 3의 패브릭 라우터에 사전에 제공된 입력 버퍼의 세트를 도시한다.
도 5는 본 발명의 일 실시예에 따른 입력 버퍼 어레이를 도시한다.
도 6은 도 5의 포인터 어레이 및 버퍼 풀을 더 상세히 도시한다.
도 7은 도 6의 포인터 어레이의 구체적 엔트리를 도시한다.
도 8은 입력 버퍼 어레이가 단일 플릿을 포함하는 각 엔트리를 갖는 세트 결합 캐쉬로서 구성되는 본 발명의 또 다른 실시예를 도시한다.
도 9는 입력 버퍼 어레이가 플릿 버퍼 및 전체 가상 채널에 대한 상태를 포함하는 각 엔트리를 갖는 세트 결합 캐쉬로서 구성되는 본 발명의 제 3 실시예를 도시한다.
도 10은 시뮬레이션 채널 점유 히스토그램을 나타낸다.
본 발명의 목적은 캐쉬로 사용되는 온-칩 플릿 버퍼의 소형 풀(pool)을 제공하고 오프-칩 저장에 대해 상기 풀에 적합하지 않은 플릿들을 오버플로시킴으로써 종래 기술의 라우터의 저장 한계를 극복하는 것이다. 본 발명자들은 시뮬레이션 연구를 통해 버퍼의 분리는 트래픽 분리를 보장할 것이 요구되지만, 실제로는 상기 버퍼의 작은 부분만이 점유되는 것을 알게되었다. 따라서, 대부분의 시간동안 모든 활성 가상 채널은 캐쉬에 고정되고 외부 메모리는 거의 액세스되지 않는다.
따라서, 본 발명에 따르면, 라우터는 상기 라우터를 통해 전송된 플릿과 같은 정보 유니트용 버퍼를 포함한다. 상기 버퍼는 정보 유니트에 대해 신속하게 액세스할 수 있는 버퍼의 제 1 세트 및 상기 제 1 세트보다 더 느리게 액세스되는 정보 유니트에 대한 버퍼의 제 2 세트를 포함한다.
바람직한 실시예에서, 패브릭 라우터는 하나 이상의 집적 회로 칩상에 형성된다. 버퍼의 제 1 세트는 라우터 집적 회로 칩상에 놓여지고, 버퍼의 제 2 세트는 라우터 집적 회로 칩과 분리되는 메모리 칩상에 놓여진다. 버퍼의 제 2 세트는 가상 유니트의 전체 세트에 대한 정보 유니트를 수용할 수 있다.
일 실시예에서, 버퍼의 제 1 세트는 버퍼 풀 및 포인터 어레이를 포함한다. 상기 버퍼 풀은 가상 채널에 의해 공유되고, 포인터의 어레이는 상기 버퍼 풀내에서 관련된 개별 채널을 정보 유니트에 알린다.
또 다른 실시예에서, 버퍼의 제 1 세트는 세트 결합 캐쉬로서 구성된다. 구체적으로, 상기 세트 결합 캐쉬의 각 엔트리는 단일 정보 유니트를 포함할 수 있고, 또는 전체 가상 채널에 대한 상태 및 버퍼를 포함할 수 있다.
흐름 제어는 버퍼의 제 1 세트 및 버퍼의 제 2 세트간에 정보 유니트를 전송하는 동안 새로운 정보 유니트의 도달을 중지시키도록 제공될 수 있다. 상기 흐름 제어는 차단되거나 크레디트 기반화될 수 있다.
누락 상태 레지스터는 상기 버퍼의 제 2 세트에 액세스하기 위해 대기하는 정보 유니트를 수용할 수 있다. 퇴거 버퍼는 상기 버퍼의 제 1 세트로부터 상기 버퍼의 제 2 세트로의 전송을 위해 계획된 엔트리를 수용할 수 있다.
본 발명의 응용은 멀티컴퓨터 상호접속 망, 망 스위치 또는 라우터 및 인터넷 라우터내의 패브릭 라우터를 포함한다.
본 발명의 목적, 특징 및 장점은 유사 참조 부호들이 다른 조도를 통해 동일한 부분을 지칭하는 첨부한 도면에 도시된 바와 같이, 본 발명의 바람직한 실시예의 특정 기술로부터 더욱 명백해질 것이다. 상기 도면은 본 발명의 원리를 나타내도록 도시되었다.
본 발명은 멀티컴퓨터, 멀티프로세서, 망 스위치 및 라우터를 포함하는 어떤 라우터 응용에도 적용할 수 있지만, 여기에서는 인터넷 라우터내의 패브릭 라우터에 관련되어 기술될 것이다. 상기 라우터는 상기에 언급된 PCT 출원에 나타난다.
도 1에 도시된 바와 같이, 상기 인터넷은 망의 계층으로 배열된다. 일반적인 엔드-유저(end-user)는 근거리 통신망 또는 LAN(24)에 연결된 워크스테이션(22)을 갖는다. LAN상의 사용자가 인터넷의 잔여 부분에 액세스하는 것을 허용하기 위해, LAN은 지역 망 제공자 또는 RNP에 의해 유지되고 동작되는 지역 망(26)에 라우터(R)를 통해 연결된다. 상기 접속은 인터넷 서비스 제공자 또는 ISP를 통해 형성된다. 다른 영역을 액세스하기 위해, 지역 망은 망 액세스 포인트(NAP)에서 백본(backbone) 망(28)에 연결된다. 상기 NAP는 일반적으로 주요 도시에서만 놓여져있다.
상기 망은 링크 및 라우터로 형성된다. 백본 망에서, 상기 링크는 일반적으로 SONET(동기 광섬유 망) 프로토콜을 사용하여 동작하는 광섬유 통신 채널이다. SONET 링크는 OC-3(155Mb/s)에서 OC-192(9.9Gb/s)사이의 범위에 있는 다양한 데이터 속도에서 동작한다. 때때로 트렁크로 지칭되는 상기 링크들은 상당한 거리에 걸쳐 한 포인트에서 다른 포인트로 데이터를 이동시킨다.
라우터는 한 그룹의 링크를 연결하며 전송 및 라우팅의 두가지 기능을 수행한다. 라우터의 한 링크상에 도달하는 데이터 패킷은 종국의 목적지 및 출력 링크의 상태에 따라 다른 링크상에 송신함으로써 전달된다. 주어진 패킷에 대한 출력 링크를 계산하기 위해, 라우터는 인터넷상의 모든 라우터가 망의 접속에 대한 정보를 교환하고 상기 정보에 기초하여 라우팅 테이블을 계산하는 라우팅 프로토콜에 관여한다.
종래 기술의 인터넷 라우터는 공통 버스 또는 크로스바(crossbar) 스위치에 기초한다. 일반적으로, 주어진 SONET 링크(30)는 라인 인터페이스 모듈에 연결된다. 상기 모듈은 착신하는 SONET 스트림으로부터 패킷을 추출한다. 각 착신 패킷에 대해, 라인 인터페이스는 패킷 헤더를 판독하고 상기 정보를 이용하여 상기 패킷이 전달되는 출력 포트를 결정한다. 상기 패킷을 전달하기 위해, 상기 라우터내의 통신 경로가 조정되고, 상기 패킷은 출력 라인 인터페이스 모듈에 전송된다.상기 모듈은 순차적으로 라우트상의 다음 홉(hop)에 대해 나가는 SONET 링크상의 패킷을 목적지로 송신한다.
상기 언급된 특허 출원의 라우터는 특히 도 2에 도시된 3D 토러스 망에서, 라우터로서 멀티-홉 상호접속 망을 사용함으로써 종래 기술의 버스 및 크로스바 기반 라우터의 대역폭 및 스칼라양 제한을 극복한다. 상기의 장치에서, 효율적인 광대역 백본 망의 각 라우터는 소형의 인-캐비닛(in-cabinet) 망을 포함한다. 혼란을 피하기 위해, 각 라우터의 내부에 있는 소형 망을 스위칭 패브릭으로 지칭하고 상기 망내의 라우터 및 링크를 패브릭 라우터 및 패브릭 링크로 지칭한다.
도 2에 도시된 노드의 3D 토러스 스위칭 패브릭에서, 각 노드 N은 착신 및 발신 SONET 인터넷 링크에 접속하는 라인 인터페이스 모듈을 포함한다. 상기 라인 인터페이스 노드의 각각은 토러스의 6개 인접 노드에 대한 패브릭 링크를 포함하는 스위치 패브릭 라우터를 포함한다. 노드 A로 지칭되는 하나의 SONET 링크를 통해 도달하는 IP 패킷은 자신이 인터넷 라우터를 떠나야하는 노드 B상의 SONET 링크를 결정하도록 검사되고, 그후에 3D 토러스 스위치 패브릭을 통해 A로부터 B로 전달된다.
인터넷을 통해 전달되는 일반적인 패킷은 50 바이트에서 1.5 킬로바이트의 범위에 있다. 본 발명의 인터넷 라우터의 패브릭 망을 통한 전송을 위해, 상기 패킷은 각각 36 바이트의 세그먼트 또는 플릿으로 분할된다. 적어도 패킷의 제 1 플릿에 포함된 헤더는 라우터의 패브릭을 통한 데이터 전송 제어를 위해 부분적으로 변경된다. 바람직한 라우터에서, 상기 데이터는 웜홀(wormhole) 라우팅 프로토콜에 따라 패브릭을 통해 전송된다.
패킷의 플릿들은 버퍼 세트를 포함하는 가상 망의 패브릭을 통해 흘러간다. 각 가상 망에 대한 하나 이상의 버퍼는 상기 패브릭의 각 노드상에 제공된다. 각 버퍼는 적어도 하나의 흐름 제어 디지트 또는 메세지의 플릿을 수용하도록 크기가 정해진다. 상기 가상 망은 모두 실제 패브릭 망의 노드들간의 물리 채널의 단일 세트를 공유하고, 경쟁하는 가상 망을 통한 물리적 채널들의 사용을 다중화하기 위해 공정한 조정 방책이 사용된다.
입력 링크와 연관된 모듈로부터 상기 출력 링크에 연관된 모듈로 스위치 패브릭을 통해 패킷을 전달하는데 사용되는 패브릭 라우터는 도 3에 도시된다. 상기 라우터는 7개 입력 링크(58) 및 7개 출력 링크(60)를 갖는다. 상기 링크 중 6개는 도 2의 3D 토러스 망에 인접한 노드에 연결한다. 제 7 입력 링크는 전송 엔진(50)으로부터 패킷을 수용하고 제 7 출력 링크는 상기 라우터의 라인 인터페이스 모듈의 패킷 출력 버퍼(52)에 패킷을 송신한다. 각 입력 링크(58)는 입력 버퍼 어레이(62)와 연관되고 각 출력 링크(60)는 출력 레지스터(64)와 연관된다. 상기 입력 버퍼 및 출력 레지스터는 7 x 7 크로스바 스위치(66)에 의해 함께 연결된다. 가상 망은 각각 한쌍의 출력 노드를 제공받으며, 각 7개 입력 버퍼 어레이(62)는 예를 들어 기계의 각 가상 망에 대해 4개의 플릿 버퍼를 포함한다.
패킷의 헤드 플릿이 상기 가상 채널에 도달할 때 출력 노드에 정해진 패브릭 라우터의 가상 채널이 비어있으면, 상기 채널은 상기 패킷의 지속시간동안, 즉 상기 패킷의 말단 플릿이 통과할 때까지 상기 패킷에 할당된다. 그러나, 다수의 패킷들은 다수의 입력을 통해 동일한 가상 채널에 대한 라우터에 수신될 수 있다. 가상 채널이 이미 할당되어 있으면, 상기 새로운 헤드 플릿은 플릿 버퍼에서 대기해야 한다. 상기 채널이 할당되지 않았는데 상기 채널에 대한 두개의 헤드 플릿이 함께 도달하면, 공정한 조정이 이루어져야 한다. 공정한 조정 절차가 선택될 때까지, 플릿은 입력 버퍼에 남아있고, 백프레셔(backpressure)가 업스트림에 인가된다.
일단 출력 가상 채널이 할당되면, 노드에서의 입력 버퍼가 상기 가상 채널에 이용가능하고 다운스트림 노드로부터 신호가 수신될 때까지 플릿은 링크를 통한 전송에 대해 인에이블되지 않는다.
종래의 라우터는 도 4에 도시된 바와 같이 버퍼 구성을 사용하였으며, 각 플릿 버퍼는 특정 가상 채널에 할당되며 다른 가상 채널에 연관된 플릿을 수용하기 위해 사용될 수 없었다. 도 4는 도달 플릿(100) 및 라우터의 하나의 입력 포트에 대한 플릿 버퍼 어레이(200)를 도시한다. 상기 버퍼 어레이(200)는 라우터에 의해 지원되는 각각의 가상 채널에 대해 하나의 행을 포함한다. 각 행은 S = 2 플릿 버퍼(204, 205), 행(F)(201)의 제 1 플릿에 대한 포인터, 행(L)(202)의 최종 플릿에 대한 포인터 및 상기 행에 플릿이 없을 때를 나타내는 공백 비트(E)(203)를 포함한다.
플릿(100)이 입력 채널에 도달할때, 상기 플릿은 플릿(101)의 가상 채널 식별자(VCID) 필드 및 상기 플릿 버퍼의 선택된 행의 L 필드에 의해 결정된 위치에서 플릿 버퍼에 저장된다. 먼저, 상기 VCID는 상기 가상 채널과 연관된 행(210)을 선택하기 위해 버퍼 어레이(200)를 어드레싱하는데 사용된다. 상기 행에 대한 L 필드는 버퍼에 놓여진 최종 플릿을 나타낸다. 상기 L 필드는 도달 플릿이 저장되는 다음 개방 플릿 버퍼를 식별하기 위해 증가된다. 상기 입력 채널의 특정 가상 채널이 플릿을 출력하기 위해 선택될 때, 판독되는 플릿 버퍼는 가상 채널의 VCID 및 버퍼 어레이의 대응하는 행의 F 필드를 사용하는 유사한 방법으로 선택된다.
시뮬레이션은 일반적인 트래픽에 대해, 특정 입력 포트의 가상 채널의 작은 부분만이 주어진 시간에 점유되는 것을 나타내었다. 본 발명자들은 더 느리지만, 비용이 싼 오프-칩 저장에서 버퍼의 풀 어레이를 갖는 칩상에 버퍼의 소형 풀만을 제공함으로써 상기 작용을 이용할 수 있다. 상기 풀의 버퍼는 어떤 순간 시간에 상기 버퍼가 사용되는 가상 채널의 부분에 대한 플릿을 수용하도록 가상 채널에 유동적으로 할당된다. 상기 버퍼 풀은 오프-칩 저장에서 플릿 버퍼의 풀 어레이용 캐쉬이다. 비용이 싼 외부 DRAM 메모리를 갖는 단순한 라우터 ASIC은 동시에 많은 수의 가상 채널을 지원하고 각 가상 채널에 대해 많은 버퍼를 지원한다. 바람직한 실시예에서, V = 2560 가상 채널이 있으며, 각 채널은 S = 4 플릿을 가지며, 각각의 플릿은 F = 576 비트 저장 플릿을 차지한다.
본 발명의 제 1 실시예는 도 5에 도시된다. 플릿 버퍼(400)의 비교적 작은 풀은 라우터 칩(500)상의 현재 동작하는 플릿 세트를 수용하도록 사용된다. 완전한 플릿 버퍼 어레이(200)는 비용이 싼 오프-칩 메모리에 놓여지고 상기 풀의 용량을 초과하는 어떤 플릿을 수용한다. 포인터 어레이(300)는 각 가상 채널의 상태를 수용하고 상기 가상 채널과 연관된 각 플릿이 놓여지는 곳을 표시하기 위한 디렉토리로서 사용된다.
포인터 어레이(300) 및 버퍼 풀(400)의 상세도는 도 6에 도시된다. 상기 포인터 어레이(300)는 가상 채널 당 하나의 행을 포함한다. 각 행은 세개의 상태 필드 및 S 포인터 필드를 포함한다. 상기 예에서, S = 4이다. 상기 F 필드(301)는 상기 채널의 제 1 플릿에 대응하는 S = 4 포인터 필드를 표시한다. 상기 L 필드(302)는 상기 채널에 도달하도록 최종 플릿에 대응하는 포인터 필드를 표시하고, E 필드(303)는 상기 채널이 비어 있으며 플릿이 없다는 것을 표시한다.
사용중인 각 포인터 필드는 대응하는 플릿의 위치를 기술한다. B가 버퍼 풀의 버퍼수를 나타내는 범위[0,B-1]에 포인터 필드 P의 값이 있으면, 플릿은 버퍼 풀(400)의 버퍼 P에 놓여진다. 반면에, P = B이면, 포인터는 대응하는 플릿이 오프-칩 플릿 버퍼 어레이에 놓여지는 것을 표시한다. 오프-칩 플릿 버퍼의 플릿은 포인터가 아니라 VCID 및 플릿 수에 의해 위치가 정해진다.
상기 구조의 사용은 도 7의 예에 도시된다. 상기 도면은 포인터 어레이 (300)의 엔트리, 버퍼 풀(400) 및 세개의 플릿을 포함하는 단일 가상 채널(VCID = 4)에 대한 오프-칩 버퍼 어레이(200)를 도시한다. 상기 플릿 중 두개, 즉 첫번째와 마지막은 중간 플릿이 오프-칩 버퍼 어레이에 있는 동안 버퍼 풀에 있다. 특정 플릿을 위치시키기 위해, VCID는 포인터 어레이(300)내에 행(310)을 선택하도록 사용된다. 상기 선택된 행내의 상태 필드는 세개의 플릿이 포인터 1(F=1)에 의해 식별된 제 1 플릿 및 포인터 3(L=3)에 의해 식별된 최종 플릿을 갖는 수집 버퍼에 있다는 것을 기술한다. 포인터 2는 중간 플릿을 식별한다. 포인터 1은 상기 제 1플릿이 버퍼 풀(400)의 위치 5에 있는 것을 기술하는 값 5를 포함한다. 유사하게, 포인터 3은 최종 플릿이 버퍼 풀(400)의 위치 3에 있는 것을 기술한다. 그러나, 포인터 2는 중간 플릿이 4행 2열의 오프-칩 버퍼 어레이(200)에 상주하는 것을 나타내는 제로 값을 포함한다. 상기 행은 VCID에 의해 결정되며, 이 경우에는 4이고, 열은 포인터의 위치에 의해 결정되며, 이 경우에는 포인터 2이다. 바람직한 실시예에서, 버퍼 풀은 소정의 n에 대해 0에서 2n-2까지 라벨링된 2n-1개 버퍼를 포함하고, 상기 값 2n-1은 제로 포인터를 표시한다.
플릿 버퍼 캐쉬의 장점을 알아보기 위해, V = 2560 가상 채널을 갖고, 각각의 가상 채널은 F = 576 비트 플릿을 포함하는 S = 4 플릿 버퍼를 갖는 본 발명의 시스템을 고려해보자. 종래의 버퍼 구조(도 4)는 라우터의 각각의 입력 채널에 대해 V x S x F = 5,898,240 의 저장 비트를 필요로 한다. 오프-칩 버퍼 어레이(도 5)와 결합되는 P = 255 버퍼를 갖는 온-칩 버퍼 풀을 사용하면, 반면에 입력 채널당 온-칩 저장의 총 241,600 비트에 대해 P x F = 146,880 비트 버퍼 풀 및 37 x V = 94,720 비트 포인터 어레이를 필요로 한다. 5,898,240 비트 오프-칩 버퍼 어레이 또한 요구된다. 이것은 온-칩 저장 요청이 24만큼 감소되는 인자임을 나타낸다.
상기 입력 채널 제어기는 풀의 버퍼의 적당한 공급을 보장하기 위한 이중-임계값 버퍼 관리 알고리즘을 사용한다. 상기 풀의 빈 버퍼들의 수가 임계값, 예를 들어 32이하로 떨어질때마다, 상기 채널 제어기는 버퍼 풀(400)로부터 오프-칩 버퍼 어레이(200)로 플릿들을 퇴거시키고 상기 변화를 표시하기 위해 포인터 어레이(300)를 업데이팅하기 시작한다. 일단 플릿 퇴거가 시작되면, 상기 퇴거는 풀에 있는 빈 버퍼들의 수가 제 2 임계값, 예를 들어 64를 초과할 때까지 계속된다. 퇴거동안, 퇴거되는 플릿들은 소정의 알고리즘(랜덤, 우선 이용, 또는 최근 사용)을 사용하여 선택될 수 있다. LRU 알고리즘은 더 높은 성능을 갖는 반면, 간단한 가능 알고리즘을 만족시키기 위해 퇴거 사건이 거의 발생하지 않는다. 퇴거 프로세스는 플릿이 버퍼로부터 이탈할때까지 무기한으로 대기하지 않도록 유지하는 것이 필요하다. 퇴거 없이, 상기 대기는 트리 포화 또는 데드락을 발생시킬 수 있는 관계없는 가상 채널들간의 종속성을 발생시킬 것이다.
상기 언급된 특허 출원에 기술된 이전의 라우터는 업스트림 제어기가 각각의 다운스트림 가상 채널에 대해 크레디트 카운트(73)(도 3), 빈 플릿 버퍼의 수의 카운트를 유지하는 크레디트-기반 흐름 제어를 사용한다. 출력 제어기는 플릿 버퍼 이용가능 다운스트림이 있는 것을 표시하는 VC에 대해 제로가 아닌 크레디트 카운트를 가질 때의 특정 가상 채널에 대해서만 플릿을 전달한다. 업스트림 제어기가 플릿을 전달할때마다, 상기 제어기는 대응하는 VC에 대한 크레디트 카운트를 감소시킨다. 상기 다운스트림 제어기가 플릿-버퍼를 비울때, 상기 제어기는 크레디트 업스트림을 전송한다. 각 크레디트의 수신에 따라, 업스트림 제어기는 대응하는 VC 에대해 크레디트 카운트를 증가시킨다.
플릿-버퍼 캐쉬에 있어서, 업스트림 출력 채널 제어기 흐름 제어 방책은 버퍼 풀 오버플로의 일어나지 않을 사건의 상기 대역폭을 과도하게 요청하는 것을 피하도록 수정되어야 한다. 오프-칩 버퍼 어레이는 온-칩 버퍼 풀 및 상기 채널 자체보다 훨씬 적은 대역폭을 갖기 때문에 부가 흐름 제어가 요구된다. 일단 상기 풀이 가득차게 되면, 플릿은 오프-칩 버퍼 어레이로 퇴거되어야 하고 모든 VC로부터의 전송은 풀의 공간이 이용가능하게 될때까지 차단되어야 한다. 플릿 버퍼 캐쉬를 처리하기 위해, 이전의 크레디트 기반 흐름 제어 메카니즘은 다운스트림 버퍼 풀의 빈 버퍼의 수를 반영하는 버퍼 풀 크레디트 카운트(75)를 부가함으로써 강화된다. 상기 업스트림 제어기는 플릿 다운스트림을 전달할 수 있기전에 가상 채널에 대해 제로가 아닌 크레디트 카운트(73) 및 제로가 아닌 버퍼 풀 크레디트 카운트(75)를 갖고 있어야 한다. 이것은 모든 도달 플릿들에 대해 버퍼 풀의 공간이 있음을 보장한다. 초기에, 최대 카운트가 모든 가상 채널과 상기 모든 VC에 의해 공유되는 버퍼 풀에 대해 세팅된다. 업스트림 제어기가 플릿을 전달할 때, 상기 제어기는 대응하는 VC 및 공유된 버퍼 풀 크레디트 카운트에 대한 양쪽 크레디트 카운트를 감소시킨다. 다운스트림 제어기가 어떤 VC에 대해 크레디트 업스트림을 전달할 때, 상기 제어기는 크레디트되는 플릿이 상기 버퍼 풀로부터 전달될때 상기 크레디트의 풀 비트를 세팅한다. 상기 업스트림 제어기가 풀 비트 세트를 갖는 크레디트를 수신할 때, 상기 제어기는 VC 크레디트 카운트 뿐 아니라 버퍼 풀 크레디트 카운트를 증가시킨다. 상기 버퍼 풀로부터 오프-칩 버퍼 어레이로 플릿이 퇴거하면, 특정 풀 전용 크레디트는 상기 변화를 반영하도록 크레디트 카운트를 업데이트 시키도록 업스트림 제어기에 전달된다. 따라서, 새로운 플릿의 전송은 버퍼 풀과 오프-칩 버퍼 어레이간에 플릿을 전송하는 동안만 중단된다.
선택적으로, 차단 흐름 제어는 크레디트 기반 흐름 제어보다는 풀 초과를 방지하도록 사용될 수 있다. 상기의 방법에서, 모든 업스트림 크레디트의 차단 비트는 버퍼 풀의 빈 버퍼의 수가 임계값 아래로 떨어질 때 세팅된다. 상기 비트가 세팅될 때, 업스트림 출력 제어기는 소정의 플릿들을 다운스트림으로 전달하지 못하게 된다. 일단 빈 버퍼의 수가 임계값 이상으로 증가되면, 차단 비트는 제거되고 업스트림 제어기는 플릿 전달을 다시 개시할 수 있다. 차단 흐름 제어는 상기 업스트림 제어기의 풀 크레디트 카운터를 요구하지 않기 때문에, 그리고 다른 이유로는 플릿 전송을 막지 않도록 사용될 수 있기 때문에 유용하다.
선택적인 바람직한 실시예는 포인터 어레이 대신 도 8에 도시된 세트 연관 캐쉬 구성을 사용한다. 상기 구성은 상태 어레이(500), 하나 이상의 캐쉬 어레이 (600) 및 퇴거 FIFO(800)로 이루어진다. 오프-칩 버퍼 어레이(200)(도시되지 않음)는 또한 캐쉬 어레이를 백업하도록 사용된다. 특정 가상 채널 V의 특정 버퍼 B와 연관된 플릿은 종래의 세트 연관 캐쉬(예를 들어, 헨네세이 및 패터슨의 컴퓨터 구조: 분량적 방법, 제 2 판, 모간 커프만, 1996, 제 5 장을 참조)와 유사한 방법으로 캐쉬 어레이의 각각에 가능한 위치로 매핑된다. 각 위치에 저장된 플릿은 그후에 연관된 캐쉬 태그에 기록된다. 각 캐쉬 위치의 유효 비트는 상기 캐쉬가 포함하는 입력이 유효한 데이터를 나타내는지를 신호로 알려준다.
상기 캐쉬의 특정 플릿 F={V:B}에 대해 허용된 위치는 F의 하위 순서 비트에 의해 결정된다. 예를 들어, V = 2560 가상 채널을 갖고, 가상 채널당 S = 4 버퍼를 가지며, A = 2 캐쉬 어레이의 각각이 C = 128 엔트리를 갖는 경우를 고려하자. 이 경우에, 상기 플릿 식별자 F는 VCID의 14 비트, 12 비트 및 버퍼 식별자 B의 2비트이다. 상기 7 비트 캐쉬 어레이 인덱스는 V의 하위 순서 5 비트에 B를 부가함으로써, I = {V[4:0]B}로 구성된다. V의 나머지 7개 상위 순서 비트는 캐쉬 태그, T = V[11:5]에 대해 사용된다.
플릿이 상기 채널을 통해 도달할 때, 상기 플릿의 VCID는 L 필드를 판독하기 위해 상태 어레이(500)를 인덱싱하는데 사용된다. 상기 필드는 플릿이 저장되는 가상 채널내의 버퍼 위치 B를 결정하기 위해 증가된다. 상기 어레이 인덱스 I는 그후에 VCID의 하위 5 비트와 B를 연결함으로써 형성되고 상기 인덱스는 캐쉬 어레이 (600)를 액세스하는데 사용된다. 두개의 캐쉬 어레이가 도시되었지만, 여러개의 어레이들이 사용될 수 있음이 이해될 것이다. 상기 캐쉬 어레이 중 하나는 선택 알고리즘을 사용하여 상기 플릿을 수신하도록 선택된다. 상기 위치의 무효 엔트리를 포함하는 어레이, 또는 모든 엔트리가 유효하면 가장 최근에 사용된 위치를 포함하는 어레이에 우선순위가 주어질 수 있다. 선택된 캐쉬 어레이가 이미 유효 플릿을 포함하면, 상기 플릿은 자신의 신원(VCID 및 B)에 따라 퇴거 FIFO(800)로 먼저 판독된다. 상기 도달 플릿은 그후에 퇴거된 위치로 기록되고 상기 위치의 태그는 VCID의 상위 비트로 업데이트되고 상기 위치는 유효한 것으로 표시된다.
특정 가상 채널로부터 다음 플릿을 판독하라는 요청이 있을때, VCID는 상태 어레이(500)를 인덱스하도록 다시 사용되고, F 필드는 판독되는 버퍼 위치 B를 결정하기 위해 판독된다. 상기 F 필드는 그후에 증가되고 상태 어레이로 재기록된다. 상기 VCID 및 버퍼 숫자 B는 세개 위치의 플릿을 탐색하는데 사용된다. 먼저, 상기 인덱스는 상기 I = {V[4:0],B}로서 형성되고 캐쉬 어레이가 액세스된다.각 어레이로부터 액세스된 태그는 비교기(701)를 사용하여 V[11:5]에 비교된다. 이때 매치가 있으며 유효 비트가 세팅되면, 상기 플릿은 위치가 정해지고 트라이스테이트 버퍼(702)를 통해 대응하는 어레이로부터 판독된다. 상기 플릿을 포함하는 엔트리의 유효 비트는 나중의 사용을 위해 상기 엔트리를 비우기 위해 클리어된다.
요청된 플릿이 캐쉬 어레이 어디에서도 발견되지 않으면, 퇴거 FIFO는 VCID 및 B와 매칭하는 유효 엔트리를 포함하는지를 결정하기 위해 탐색된다. 매칭이 발견되면, 상기 플릿은 퇴거 FIFO로부터 판독되고 상기 엔트리의 유효 비트는 상기 위치를 비우기 위해 클리어된다. 마지막으로, 상기 플릿이 캐쉬 어레이 또는 퇴거 FIFO에서 발견되지 않으면, 오프-칩 플릿 어레이(200)는 백업 저장고로부터 플릿을 검색하기 위해 위치 {V[11:0],B}에서 판독된다.
바람직한 제 1 실시예에서, 흐름 제어가 사용되어야 하며 업스트림 제어기로부터 요청을 확인하도록 수행되는 퇴거는 퇴거 FIFO를 초과하지 않는다. 크레디트 기반 또는 차단 흐름 제어는 업스트림 제어기가 퇴거 FIFO의 빈 공간이 임계값 이하로 떨어질때 플릿을 전송하는 것을 막기 위해 상기에 기술된 바와 같이 사용될 수 있다. 퇴거 FIFO로부터의 플릿은 또한 상기 임계값이 초과될 때 오프-칩 플릿 어레이(200)로 재기록된다.
제 1 실시예에 비해, 상기 세트 연관 구성은 형성하는데 더 적은 온-칩 메모리 비트를 요구하지만 충돌 누락때문에 더 낮은 히트 비율을 가질 수 있다. 상기의 예의 숫자에 대해, 제 1 실시예의 총 241,600 비트에 비해 총 171,744 비트에 대해 상태 어레이는 2560 x 5 = 12,800 저장 비트를 요구하고, 256 플릿 크기의 엔트리를 갖는 캐쉬 어레이는 256 x (576 + 1 + 7) = 149,504 비트를 필요로 하며, 16 입력을 갖는 퇴거 FIFO는 16 x (576 +14) = 9,440 비트를 필요로 한다.
충돌 누락은 플릿이 각 어레이(버퍼의 세트)의 단일 위치에만 있는 것이 아니라 어떤 플릿 버퍼에도 상주하지 않을 수 있기 때문에 발생한다. 따라서, 활성 플릿은 여러 다른 플릿들이 동일한 위치로 매핑하기 때문에 모든 버퍼가 채워지기 전에 어레이로부터 퇴거될 수 있다. 그러나, 상기 충돌 누락의 효과는 희생 캐쉬(주피, "소형 완전 연관 캐쉬 및 프리페치 버퍼의 부가에 의한 직접 매핑 캐쉬 성능을 개선하는 방법", 컴퓨터 구조의 17번째 연차 국제 심포지움 절차, 1990년, pp 364-375를 참조)로서 동작하는 퇴거 FIFO의 연관 탐색에 의해 다소 완화된다.
플릿 캐쉬의 저장 요구는 도 9에 도시된 제 3 실시예를 사용하여 부가로 감소될 수 있다. 상기 실시예는 또한 세트 결합 캐쉬 구성을 사용한다. 그러나, 도 8의 실시예와 달리, 상기 실시예는 모든 상태 및 주어진 가상 채널과 연관된 버퍼를 어레이(900)의 단일 캐쉬 엔트리에 배치한다. 단일 캐쉬 어레이(900)가 도시되지만(직접 매핑된 구성), 당업자는 여러개의 캐쉬 어레이가 사용될 수 있는것을 이해할 것이다. 캐쉬 어레이에 모든 상태를 배치함으로써 상태 어레이(500)가 필요없게 된다. 상기 구성에 대한 퇴거 FIFO(1000)는 또한 가상 채널에 대한 모든 상태 및 버퍼(그러나 B 필드는 필요로 하지 않음)를 포함한다. 유사하게, 상기 오프-칩 플릿 어레이(200)(도시되지 않음)는 각 가상 채널에 대한 상태 필드(F,L,E)를 포함하도록 증대된다.
플릿이 버퍼에 도달할 때, 상기 플릿의 가상 채널에 대한 엔트리는 상기 엔트리가 이미 존재하지 않으면 위치가 결정되고 칩상에 놓여진다. 상기 엔트리는 그후에 새로운 플릿을 삽입하기 위해 업데이팅되고 L 필드를 업데이팅한다. 구체적으로, 도달 플릿의 VCID 필드는 세가지 위치에서 가상 채널 입력을 탐색하는데 사용된다. 먼저, 캐쉬 어레이는 인덱스로서 VCID, 예를 들어, V[6:0]의 하위 비트를 사용하고 태그로서 VCID, 예를 들어 V[11:7]의 상위 비트를 사용함으로써 탐색된다. 상기 저장된 태그가 표시된 태그와 매칭하고 유효 비트가 세팅되면, 상기 엔트리가 발견된다. 이 경우에, 상기 매칭 엔트리의 L 필드가 판독되고 도달 플릿을 저장하기 위해 엔트리내의 위치를 선택하도록 사용된다. 상기 L 엔트리는 그후에 증가되고 엔트리로 재기록된다.
캐쉬 어레이의 매치가 없는 캐쉬 누락의 경우에, 상기 캐쉬 어레이 중 하나는 상기에 기술된 바와 같이 요청된 엔트리를 수신하도록 선택된다. 상기 선택된 엔트리가 현재 유효한 수용가능한 다른 엔트리이면, 상기 엔트리는 퇴거 FIFO(1000)로 퇴거된다. 상기 퇴거 FIFO에서 그후에 요청된 엔트리를 탐색한다. 만약 발견되면, 상기 엔트리는 버퍼로부터 선택된 캐쉬 어레이로 로딩되고 상기에 기술된 바와 같이 업데이팅된다. 만약 엔트리가 퇴거 FIFO에서 발견되지 않으면, 상기 엔트리는 오프-칩 버퍼 어레이로부터 페치된다. 오프-칩으로부터 로딩되는 엔트리를 대기하는 동안 다른 도달 플릿이 처리되도록 하기 위해, 상기 진행중인 플릿은 오프-칩 참조가 완료될 때까지 누락 수용 레지스터(1002)에 일시적으로 저장된다. 상기 엔트리가 일단 오프-칩으로부터 로딩되면, 상기 업데이트는 상기에 기술된 바와 같이 진행한다.
VCID로 주어진 캐쉬로부터 플릿을 판독하기 위해, 상기 탐색은 기록과 유사한 방법으로 진행된다. 상기 가상 채널 엔트리는 이미 상기 캐쉬에 있지 않으면 퇴거 FIFO 또는 오프-칩 버퍼로부터 캐쉬로 로딩된다. 상기 엔트리의 F 필드는 판독을 위해 엔트리내의 플릿을 선택하는데 사용된다. 마지막으로, 상기 F 필드는 증가되고 상기 엔트리로 재기록된다.
다른 바람직한 실시예에 따르면, 차단 또는 크레디트 기반 흐름 제어는 퇴거 FIFO 또는 누락 수용 레지스터 중 하나에서 비어있는 위치의 수가 임계값 아래로 떨어질때 업스트림 제어기가 플릿을 전송하는 것을 중지하도록 요청된다.
제 3 바람직한 실시예의 장점은 매우 큰 수의 가상 채널이 있을 때 온-칩 저장 어레이의 크기가 소형이라는 것이다. 가상 채널당 온-칩 어레이가 없기 때문에, 그 크기는 가상 채널의 수와는 독립적이다(태그 필드의 크기는 가상 채널의 수만큼 로그급수로 증가한다). 예를 들어, 본 발명의 예시 파라미터, V = 2560, S = 4, F = 576에 대해, 64 엔트리를 갖는 온-칩 어레이(256 플릿)는 64((S)(F) + 12) = 148,224 비트를 포함한다. 퇴거 FIFO 및 16 엔트리를 갖는 누락 수용 레지스터 어레이는 각각 부가의 37,152 및 9,328 비트를 부가한다. 온-칩 저장의 총량인 194,704는 제 2 바람직한 실시예의 171,744 보다 조금 더 크지만, 가상 채널의 수가 2560을 초과하여 증가됨에 따라 일정하게 유지된다.
도 10은 제 3 바람직한 실시예의 플릿 버퍼 캐쉬 사용의 효율성을 도시한다. 상기 도면은 개별 가상 채널상에 수행되는 각 목적지에 트래픽을 갖는 512 노드 8x8x8 3D 토러스 망을 시뮬레이팅한 결과를 도시한다. 상기 시뮬레이션동안, 가상채널의 점유는 시간의 각 포인트에서 기록되었다. 상기 도면은 일반 로딩에서 최대 용량의 30%이고 극도로 가중된 로딩에서 최대 용량의 70%에서 동작하는 망에 대응하는 상기 채널 점유의 두가지 히스토그램을 도시한다. 용량의 70%에서도, 상기 확률은 38개이상의 가상 채널 버퍼가 주어진 시간 포인트에서 점유되는 10-5보다 작다. 이것은 38xS 플릿의 용량을 갖는 플릿 버퍼 캐쉬가 99.999%이상의 히트 비(또는 반대로 0.001% 이하의 누락 비)를 가져야 함을 나타낸다. 본 발명자들이 상기 결과를 추정해보면, 이것은 256 플릿 용량을 갖는 플릿 버퍼 캐쉬가 극도로 작은 누락 비를 갖게됨을 의미한다.
세가지 바람직한 실시예에 대한 플릿 캐쉬의 특정 장치를 기재하였으나, 패브릭 라우터 설계의 당업자는 여러 선택적인 장치 및 구조가 가능하다는 것을 알 것이다. 예를 들어, 본 발명은 포인터 기반 및 세트 결합 구조를 기술하였지만, 당업자는 완전 결합 구조(특히 소형 캐쉬 크기에 대해), 해시 테이블 또는 트리 구조 캐쉬를 사용할 수 있다. 본 발명은 하나의 플릿 및 하나의 가상 채널의 캐쉬 블록 크기를 기술하였지만, 다른 크기도 가능하다. 또한, 본 발명자는 F, L, E의 필드를 갖는 가상 채널 상태의 특정 엔코딩을 기술하였으나, 다른 엔코딩도 가능하다. 더욱이, 본 발명자는 플릿 및 입력 가상 채널 상태의 내용만을 캐쉬하였으나, 상기 캐쉬는 가상 채널과 관련된 출력 포트 및 출력 가상 채널 상태를 캐쉬하는데 확장될 수 있다.
본 발명이 바람직한 실시예를 참조하여 특정하게 도시되고 기술되었으나, 본발명은 형태 및 세부 항목의 다양한 변형이 다음의 청구항에 의해 한정된 본 발명의 범위 및 정신을 벗어나지 않고 형성될 수 있다. 예를 들어, 바람직한 실시예가 패브릭 라우터의 플릿 버퍼를 제공하지만, 본 발명은 다른 라우터의 패킷 및 메세지와 같은 다른 정보 유니트에 확장될 수 있다.

Claims (45)

  1. 라우터를 통해 전송되는 정보 유니트를 저장하는 버퍼를 포함하는 상기 라우터로서,
    상기 정보 유니트에 대해 신속하게 액세스가능한 버퍼의 제 1 세트; 및
    상기 제 1 세트보다 더 느리게 액세스되는 정보 유니트에 대한 버퍼의 제 2 세트를 포함하는 라우터.
  2. 제 1 항에 있어서,
    상기 라우터는 하나 이상의 집적 회로 칩상에 형성되며,
    상기 버퍼의 제 1 세트는 라우터가 집적된 회로 칩상에 위치하며,
    상기 버퍼의 제 2 세트는 라우터가 집적된 회로 칩으로부터 분리되는 메모리 칩상에 위치하는 것을 특징으로 하는 라우터.
  3. 제 1 항에 있어서, 상기 버퍼의 제 2 세트는 가상 채널의 전체 세트에 대한 정보 유니트를 수용하는 것을 특징으로 하는 라우터.
  4. 제 1 항에 있어서, 상기 버퍼의 제 1 세트는,
    버퍼 풀; 및
    포인터 어레이를 포함하는 것을 특징으로 하는 라우터.
  5. 제 1 항에 있어서, 상기 버퍼의 제 1 세트는 세트 결합 캐쉬로서 구성되는 것을 특징으로 하는 라우터.
  6. 제 5 항에 있어서, 상기 세트 결합 캐쉬의 각 엔트리는 단일 정보 유니트를 포함하는 것을 특징으로 하는 라우터.
  7. 제 5 항에 있어서, 상기 세트 결합 캐쉬의 각 엔트리는 전체 가상 채널에 대한 버퍼 및 상태를 포함하는 것을 특징으로 하는 라우터.
  8. 제 1 항에 있어서, 상기 버퍼의 제 1 세트와 상기 버퍼의 제 2 세트간에 정보 유니트를 전송하는 동안 새로운 정보의 도달을 중단시키기 위한 흐름 제어를 더 포함하는 것을 특징으로 하는 라우터.
  9. 제 8 항에 있어서, 상기 흐름 제어는 블로킹인 것을 특징으로 하는 라우터.
  10. 제 8 항에 있어서, 상기 흐름 제어는 크레디트 기반인 것을 특징으로 하는 라우터.
  11. 제 1 항에 있어서, 상기 버퍼의 제 2 세트에 액세스하기 위해 대기하는 정보 유니트를 수용하기 위한 누락 상태 레지스터를 부가로 포함하는 것을 특징으로 하는 라우터.
  12. 제 1 항에 있어서, 상기 버퍼의 제 1 세트로부터 상기 버퍼의 제 2 세트로 전송하기 위해 설비된 엔트리를 수용하기 위한 퇴거 버퍼를 더 포함하는 것을 특징으로 하는 라우터.
  13. 제 1 항에 있어서, 상기 라우터는 멀티컴퓨터 상호접속 망에 있는 것을 특징으로 하는 라우터.
  14. 제 1 항에 있어서, 상기 라우터는 망 스위치 또는 라우터내에 있는 것을 특징으로 하는 라우터.
  15. 제 1 항에 있어서, 상기 라우터는 패브릭 라우터이고 상기 정보 유니트는 플릿인 것을 특징으로 하는 라우터.
  16. 라우터에서 정보 유니트를 버퍼링하는 방법으로서,
    신속하게 액세스가능한 버퍼의 제 1 세트에 정보 유니트를 저장하는 단계; 및
    상기 제 1 세트보다 더 느리게 액세스되는 버퍼의 제 2 세트에 상기 버퍼의제 1 세트로부터의 오버플로를 저장하는 단계를 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 라우터는 하나 이상의 집적 회로 칩상에 형성되며,
    상기 버퍼의 제 1 세트는 라우터가 집적된 회로 칩상에 위치되며, 및
    상기 버퍼의 제 2 세트는 라우터가 집적된 회로 칩으로부터 분리되는 메모리 칩상에 위치하는 것을 특징으로 하는 방법.
  18. 제 16 항에 있어서, 상기 버퍼의 제 2 세트는 가상 채널의 전체 세트에 대한 정보 유니트를 수용하는 것을 특징으로 하는 방법.
  19. 제 16 항에 있어서,
    상기 버퍼의 제 1 세트에서 채널에 의해 공유된 버퍼 풀의 정보 유니트를 저장하는 단계; 및
    개별 채널과 관련된 포인터의 어레이로부터 버퍼 풀내의 정보 유니트에 포인팅하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제 16 항에 있어서, 상기 버퍼의 제 1 세트는 세트 결합 캐쉬로서 구성되는 것을 특징으로 하는 방법.
  21. 제 20 항에 있어서, 상기 세트 결합 캐쉬의 각 엔트리는 단일 정보 유니트를 포함하는 것을 특징으로 하는 방법.
  22. 제 20 항에 있어서, 상기 세트 결합 캐쉬의 각 엔트리는 전체 가상 채널에 대한 정보 유니트 버퍼 및 상태를 포함하는 것을 특징으로 하는 방법.
  23. 제 16 항에 있어서, 상기 버퍼의 제 1 세트 및 상기 버퍼의 제 2 세트간에 플릿을 전송하는 동안 새로운 정보 유니트의 도달을 중단시키기 위한 흐름을 제어하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  24. 제 23 항에 있어서, 상기 흐름 제어는 블로킹인 것을 특징으로 하는 방법.
  25. 제 23 항에 있어서, 상기 흐름 제어는 크레디트 기반인 것을 특징으로 하는 방법.
  26. 제 16 항에 있어서, 누락 상태 레지스터의 플릿 버퍼의 제 2 세트로 액세스하기 위해 대기하는 정보 유니트를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  27. 제 16 항에 있어서, 퇴거 버퍼에서 상기 버퍼의 제 1 세트로부터 상기 버퍼의 제 2 세트로 전송하도록 계획된 정보 유니트를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  28. 제 16 항에 있어서, 상기 라우터는 멀티컴퓨터 상호접속 망에 있는 것을 특징으로 하는 방법.
  29. 제 16 항에 있어서, 상기 패브릭 라우터는 망 스위치 또는 라우터에 있는 것을 특징으로 하는 방법.
  30. 제 16 항에 있어서, 상기 라우터는 패브릭 라우터이고 상기 정보 유니트는 플릿인 것을 특징으로 하는 방법.
  31. 각각이 정보 유니트 버퍼를 포함하는 다수의 상호접속된 라우터를 포함하는 망으로서,
    신속하게 액세스가능한 정보 유니트 버퍼의 제 1 세트; 및
    상기 제 1 세트보다 더 느리게 액세스되는 정보 유니트 버퍼의 제 2 세트를 포함하는 것을 특징으로 하는 망.
  32. 제 31 항에 있어서,
    상기 라우터는 하나 이상의 집적된 회로 칩상에 형성되며,
    상기 버퍼의 제 1 세트는 라우터가 집적된 회로 칩상에 위치하며, 및
    상기 버퍼의 제 2 세트는 라우터가 집적된 회로 칩으로부터 분리되는 메모리 칩상에 위치하는 것을 특징으로 하는 망.
  33. 제 31 항에 있어서, 상기 버퍼의 제 2 세트는 가상 채널의 전체 세트에 대한 정보 유니트를 수용하는 것을 특징으로 하는 망.
  34. 제 31 항에 있어서, 상기 버퍼의 제 1 세트는,
    버퍼 풀; 및
    포인터 어레이를 포함하는 것을 특징으로 하는 망.
  35. 제 31 항에 있어서, 상기 버퍼의 제 1 세트는 세트 결합 캐쉬로서 구성되는 것을 특징으로 하는 망.
  36. 제 31 항에 있어서, 상기 버퍼의 제 1 세트와 상기 버퍼의 제 2 세트간에 정보 유니트를 전송하는 동안 새로운 정보 유니트의 도달을 중단하기 위한 흐름 제어를 더 포함하는 것을 특징으로 하는 망.
  37. 제 31 항에 있어서, 상기 버퍼의 제 1 세트와 상기 버퍼의 제 2 세트간에 플릿을 전송하는 동안 새로운 정보 유니트의 도달을 중단시키기 위한 흐름 제어를 더포함하는 것을 특징으로 하는 망.
  38. 제 31 항에 있어서, 상기 망은 망 스위치 또는 라우터내에 있는 것을 특징으로 하는 망.
  39. 제 31 항에 있어서, 상기 라우터는 패브릭 라우터이고 상기 정보 유니트는 플릿인 것을 특징으로 하는 망.
  40. 신속하게 액세스가능한 버퍼의 제 1 세트에 정보 유니트를 저장하는 수단; 및
    상기 제 1 세트보다 더 느리게 액세스되는 버퍼의 제 2 세트의 정보 유니트를 저장하는 수단을 포함하는 라우터.
  41. 제 40 항에 있어서, 상기 버퍼의 제 2 세트는 가상 채널의 전체 세트에 대한 정보 유니트를 수용하는 것을 특징으로 하는 라우터.
  42. 제 40 항에 있어서, 상기 버퍼의 제 1 세트는,
    채널에 의해 공유된 버퍼 풀; 및
    개별 채널에 대해 버퍼 풀의 엔트리에 포인팅하는 수단을 포함하는 것을 특징으로 하는 라우터.
  43. 제 40 항에 있어서, 상기 버퍼의 제 1 세트는 세트 결합 캐쉬로서 구성되는 것을 특징으로 하는 라우터.
  44. 제 40 항에 있어서, 상기 버퍼의 제 1 세트와 상기 버퍼의 제 2 세트간에 정보 유니트를 전송하는 동안 새로운 정보 유니트의 도달을 중단시키기 위한 흐름 제어를 제공하는 수단을 더 포함하는 것을 특징으로 하는 라우터.
  45. 제 40 항에 있어서, 상기 라우터는 패브릭 라우터이며 상기 정보 유니트는 플릿인 것을 특징으로 하는 라우터.
KR1020017014851A 1999-05-21 2000-05-16 플릿 캐쉬 방식의 패브릭 라우터 KR20020015691A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US31669999A 1999-05-21 1999-05-21
US09/316,699 1999-05-21
PCT/US2000/013467 WO2000072530A2 (en) 1999-05-21 2000-05-16 Fabric router with flit caching

Publications (1)

Publication Number Publication Date
KR20020015691A true KR20020015691A (ko) 2002-02-28

Family

ID=23230259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017014851A KR20020015691A (ko) 1999-05-21 2000-05-16 플릿 캐쉬 방식의 패브릭 라우터

Country Status (10)

Country Link
US (1) US20050018609A1 (ko)
EP (1) EP1183828B1 (ko)
JP (1) JP2003512746A (ko)
KR (1) KR20020015691A (ko)
CN (1) CN1351791A (ko)
AT (1) ATE320129T1 (ko)
AU (1) AU5137000A (ko)
CA (1) CA2372644A1 (ko)
DE (1) DE60026518T2 (ko)
WO (1) WO2000072530A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7501973B2 (en) 2006-11-15 2009-03-10 Samsung Electronics Co., Ltd. High-resolution time-to-digital converter

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250357B2 (en) 2000-09-13 2012-08-21 Fortinet, Inc. Tunnel interface for securing traffic over a network
US7181547B1 (en) 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
US20030026267A1 (en) * 2001-07-31 2003-02-06 Oberman Stuart F. Virtual channels in a network switch
WO2003019391A2 (en) * 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture protocol and related methods to manage data integrity
US9836424B2 (en) * 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
US7519055B1 (en) * 2001-12-21 2009-04-14 Alcatel Lucent Optical edge router
US7065628B2 (en) 2002-05-29 2006-06-20 Intel Corporation Increasing memory access efficiency for packet applications
US7376125B1 (en) 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
KR100474302B1 (ko) * 2002-09-07 2005-03-10 엘지전자 주식회사 무선 링크 콘트롤(rlc) 계층의 버퍼제어 방법
US7266120B2 (en) 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7447201B2 (en) * 2003-02-07 2008-11-04 Fujitsu Limited Multicasting in a high-speed switching environment
US7720095B2 (en) 2003-08-27 2010-05-18 Fortinet, Inc. Heterogeneous media packet bridging
US7411969B2 (en) * 2003-10-28 2008-08-12 Intel Corporation Method, system, and apparatus for a credit based flow control in a computer system
US7406080B2 (en) * 2004-06-15 2008-07-29 International Business Machines Corporation Method and structure for enqueuing data packets for processing
US7719964B2 (en) * 2004-08-12 2010-05-18 Eric Morton Data credit pooling for point-to-point links
US7518996B2 (en) * 2004-09-16 2009-04-14 Jinsalas Solutions, Llc Fast credit system
WO2006101549A2 (en) 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US7602777B2 (en) * 2004-12-17 2009-10-13 Michael Ho Cascaded connection matrices in a distributed cross-connection system
JP2009505171A (ja) * 2005-06-27 2009-02-05 イコア コーポレイション ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
US8325768B2 (en) * 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
US7830905B2 (en) * 2007-04-20 2010-11-09 Cray Inc. Speculative forwarding in a high-radix router
US7783823B2 (en) * 2007-07-31 2010-08-24 Hewlett-Packard Development Company, L.P. Hardware device data buffer
US7836198B2 (en) * 2008-03-20 2010-11-16 International Business Machines Corporation Ethernet virtualization using hardware control flow override
US8539130B2 (en) * 2009-09-24 2013-09-17 Nvidia Corporation Virtual channels for effective packet transfer
US8571050B1 (en) * 2010-06-18 2013-10-29 Integrated Device Technology, Inc. Method and apparatus to optimize class of service under multiple VCs with mixed reliable transfer and continuous transfer modes
WO2012068171A1 (en) * 2010-11-15 2012-05-24 Reed Coke S Parallel information system utilizing flow control and virtual channels
KR102523418B1 (ko) * 2015-12-17 2023-04-19 삼성전자주식회사 프로세서 및 프로세서에서 데이터를 처리하는 방법
CN107689923B (zh) * 2016-08-04 2021-02-12 华为技术有限公司 报文处理方法及路由器

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933933A (en) * 1986-12-19 1990-06-12 The California Institute Of Technology Torus routing chip
US5088091A (en) * 1989-06-22 1992-02-11 Digital Equipment Corporation High-speed mesh connected local area network
US5134690A (en) * 1989-06-26 1992-07-28 Samatham Maheswara R Augumented multiprocessor networks
WO1991014326A2 (en) * 1990-03-05 1991-09-19 Massachusetts Institute Of Technology Switching networks with expansive and/or dispersive logical clusters for message routing
US5172371A (en) * 1990-08-09 1992-12-15 At&T Bell Laboratories Growable switch
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5797041A (en) * 1992-06-30 1998-08-18 Hitachi, Ltd. Communication control system utilizing a shared buffer composed of first and second descriptors which are managed by high and low level protocols
US5355372A (en) * 1992-08-19 1994-10-11 Nec Usa, Inc. Threshold-based load balancing in ATM switches with parallel switch planes related applications
US5444701A (en) * 1992-10-29 1995-08-22 International Business Machines Corporation Method of packet routing in torus networks with two buffers per edge
US5408469A (en) * 1993-07-22 1995-04-18 Synoptics Communications, Inc. Routing device utilizing an ATM switch as a multi-channel backplane in a communication network
US5901140A (en) * 1993-10-23 1999-05-04 International Business Machines Corporation Selective congestion control mechanism for information networks
US5583990A (en) * 1993-12-10 1996-12-10 Cray Research, Inc. System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5532856A (en) * 1994-06-30 1996-07-02 Nec Research Institute, Inc. Planar optical mesh-connected tree interconnect network
US5659716A (en) * 1994-11-23 1997-08-19 Virtual Machine Works, Inc. Pipe-lined static router and scheduler for configurable logic system performing simultaneous communications and computation
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
DE19612631A1 (de) * 1995-03-31 1996-10-02 Mazda Motor Multiplexdatenübermittlungssystem
US5659796A (en) * 1995-04-13 1997-08-19 Cray Research, Inc. System for randomly modifying virtual channel allocation and accepting the random modification based on the cost function
US5701416A (en) * 1995-04-13 1997-12-23 Cray Research, Inc. Adaptive routing mechanism for torus interconnection network
US5812775A (en) * 1995-07-12 1998-09-22 3Com Corporation Method and apparatus for internetworking buffer management
US5982771A (en) * 1995-07-19 1999-11-09 Fujitsu Network Communications, Inc. Controlling bandwidth allocation using a pace counter
US6055618A (en) * 1995-10-31 2000-04-25 Cray Research, Inc. Virtual maintenance network in multiprocessing system having a non-flow controlled virtual maintenance channel
US5898826A (en) * 1995-11-22 1999-04-27 Intel Corporation Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network
US5805787A (en) * 1995-12-29 1998-09-08 Emc Corporation Disk based disk cache interfacing system and method
US6373846B1 (en) * 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5802052A (en) * 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
JP2944531B2 (ja) * 1996-09-12 1999-09-06 日本電気通信システム株式会社 Lan間接続装置
WO1998036534A1 (en) * 1997-02-14 1998-08-20 Advanced Micro Devices, Inc. Split-queue architecture and method of queuing
US6233244B1 (en) * 1997-02-14 2001-05-15 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers
US6078565A (en) * 1997-06-20 2000-06-20 Digital Equipment Corporation Method and apparatus to expand an on chip FIFO into local memory
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6084856A (en) * 1997-12-18 2000-07-04 Advanced Micro Devices, Inc. Method and apparatus for adjusting overflow buffers and flow control watermark levels
US6311212B1 (en) * 1998-06-27 2001-10-30 Intel Corporation Systems and methods for on-chip storage of virtual connection descriptors
WO2000003516A1 (en) * 1998-07-08 2000-01-20 Broadcom Corporation Network switching architecture with multiple table synchronization, and forwarding of both ip and ipx packets
US6345040B1 (en) * 1998-07-30 2002-02-05 Marconi Communications, Inc. Scalable scheduled cell switch and method for switching
US6272567B1 (en) * 1998-11-24 2001-08-07 Nexabit Networks, Inc. System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7501973B2 (en) 2006-11-15 2009-03-10 Samsung Electronics Co., Ltd. High-resolution time-to-digital converter

Also Published As

Publication number Publication date
DE60026518T2 (de) 2006-11-16
CA2372644A1 (en) 2000-11-30
EP1183828B1 (en) 2006-03-08
AU5137000A (en) 2000-12-12
ATE320129T1 (de) 2006-03-15
US20050018609A1 (en) 2005-01-27
JP2003512746A (ja) 2003-04-02
WO2000072530A2 (en) 2000-11-30
CN1351791A (zh) 2002-05-29
WO2000072530A3 (en) 2001-02-08
DE60026518D1 (de) 2006-05-04
EP1183828A2 (en) 2002-03-06

Similar Documents

Publication Publication Date Title
KR20020015691A (ko) 플릿 캐쉬 방식의 패브릭 라우터
US9411776B2 (en) Separation of data and control in a switching device
US7319669B1 (en) Method and system for controlling packet flow in networks
US7324509B2 (en) Efficient optimization algorithm in memory utilization for network applications
US6487202B1 (en) Method and apparatus for maximizing memory throughput
US6947433B2 (en) System and method for implementing source based and egress based virtual networks in an interconnection network
US8397010B1 (en) Convenient, flexible, and efficient management of memory space and bandwidth
EP0473777B1 (en) High-speed packet switching apparatus and method
US7039058B2 (en) Switched interconnection network with increased bandwidth and port count
US7046633B2 (en) Router implemented with a gamma graph interconnection network
US6795886B1 (en) Interconnect switch method and apparatus
US8995445B2 (en) System and method for re-sequencing data packets on a per-flow basis
US5418781A (en) Architecture for maintaining the sequence of packet cells transmitted over a multicast, cell-switched network
KR20090110291A (ko) 병렬 컴퓨팅시스템을 위한 네트워크 인터페이스 카드
US8099515B2 (en) Context switched route look up key engine
US8706896B2 (en) Guaranteed bandwidth memory apparatus and method
US20070002861A1 (en) Multi-rate shared memory architecture for frame storage and switching
US8661223B1 (en) Buffer management architecture
JP2002510813A (ja) 電気通信交換器内のampicdramシステム
US7277990B2 (en) Method and apparatus providing efficient queue descriptor memory access
CA2152637A1 (en) Network for Transferring Consecutive Packets Between Processor and Memory with a Reduced Blocking Time
US20070104187A1 (en) Cache-based free address pool
US7353303B2 (en) Time slot memory management in a switch having back end memories stored equal-size frame portions in stripes
KR100641633B1 (ko) 다수의 공유 저장장소를 이용한 효율적인 스위칭 장치 및그 방법

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
NORF Unpaid initial registration fee