KR102209875B1 - 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 - Google Patents
최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 Download PDFInfo
- Publication number
- KR102209875B1 KR102209875B1 KR1020197022805A KR20197022805A KR102209875B1 KR 102209875 B1 KR102209875 B1 KR 102209875B1 KR 1020197022805 A KR1020197022805 A KR 1020197022805A KR 20197022805 A KR20197022805 A KR 20197022805A KR 102209875 B1 KR102209875 B1 KR 102209875B1
- Authority
- KR
- South Korea
- Prior art keywords
- input
- flits
- router
- credit
- output
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/39—Credit based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/253—Routing or path finding in a switch fabric using establishment or release of connections between ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
방법은 업스트림 라우터로부터 입력 포트와 연관된 제1 입력 가상 채널(VC)로 포워드된 플릿들을 수신하는 단계를 포함한다. 플릿들은 제1 지적 재산(IP) 코어로부터 발생되어 제2 IP 코어로 포워드된 패킷들과 연관된다. 플릿들은 제1 입력 VC와 연관된 VC 스토리지에 저장된다. 방법은 출력 포트의 폭과 다른 플릿들의 폭에 기초하여 링크 폭 변환을 수행하는 단계를 더 포함한다. 링크 폭 변환은 출력 포트의 폭이 보다 넓을 때 플릿들의 축적과 출력 포트의 폭이 보다 좁을 때 플릿들의 언팩킹을 포함한다. 크레딧들은 제1 입력 VC로부터 출력 포트로 포워드되는 플릿들에 기초하여 발생된다. 크레딧들은 업스트림 라우터로부터 보다 많은 플릿들을 수신하게 하도록 업스트림 라우터로 전송된다.
Description
저작권 안내
본 특허 문서의 개시의 일부는 저작권 보호를 준수해야 하는 자료를 포함한다. 저작권 소유자는 자료가 특허 및 등록상표청 출원 또는 기록들에 나타날 때 상호관련된 누구든지에 의한 복사에 반대하지 않지만, 무엇이던지 모든 저작권을 보유한다.
본 발명의 실시예들은 일반적으로 데이터 라우팅(data routing)의 분야에 관한 것이며, 그리고 몇몇 실시예들에서, 특히 플렉시블 네트워크(flexible network)에서 라우터들(routers)을 이용해 데이터를 라우트하기 위해 플렉시블 링크 폭들(flexible link widths)을 이용하는 것에 관한 것이다.
전형적인 네트워크는 많은 라우터들을 포함할 수 있다. 라우터는 소스 위치(source location)로부터 의도된 목적지 위치(intended destination location)로 데이터를 라우트하기 위해 다양한 라우팅과 흐름 제어 기능들(flow control functions)을 구현할 수 있다.
발명의 몇몇 실시예들은 라우팅 패브릭(routing fabric)내 하나 또는 하나를 초과하는 라우터들을 포함할 수 있다. 라우팅 패브릭은 컴퓨터 시스템들을 위한 상호연결 네트워크들의 일부 일 수 있거나, 또는 네트워크 온 칩(Network on a Chip : NoC)의 일부일 수 있다. NoC는 집적 회로를 포함하는 시스템들을 달성할 수 있다. 라우터들은 NoC의 라우팅 패브릭의 인터-라우터 물리적 링크들(inter-router physical links)을 따라 소스 위치들로부터 목적지 위치들로 플릿들(flits)을 전파하도록 구성된다. 라우터들의 각각은 하나 또는 하나를 초과하는 입력 포트들과 하나 또는 하나를 초과하는 출력 포트들을 갖는다. 라우터들의 각각은 (i) 하나 또는 하나를 초과하는 마스터 지적 재산(IP) 코어들(master Intellectual Property(IP) cores)과 (ii) 하나 또는 하나를 초과하는 슬래이브 IP 코어들(slave IP cores) 둘 다로부터 임의의 인입 플릿들(incoming flits)을 버퍼하기 위해 요구된 라우팅과 흐름 제어 기능들을 구현하도록 구성된다. 둘 또는 둘을 초과하는 라우터들의 각각은, 출력 포트에 연결된 신호 와이어들(signal wires)의 폭이 입력 포트에 연결된 신호 와이어들의 폭과 다를 때 링크 폭 변환(link width conversion)을 수행하도록 또한 구성된다. 게다가, 둘 또는 둘을 초과하는 라우터들의 각각은 각각의 입력 포트를 갖는 다중 입력 가상 채널들(multiple virtual channels : VC's)을 이용하도록 구성되며, 여기서 입력 VC들의 각각은 그러한 입력 VC와 연관된 인입 플릿들만을 위해 예비된 제1 스토리지 유닛(a first storage unit) 및 입력 포트와 연관된 입력 VC들 모두의 인입 플릿들 사이에서 공유된 제2 스토리지 유닛과 연관된다. 게다가, 라우터들의 각각은 각각의 출력 포트를 갖는 다중 출력 VC들을 이용하도록 구성되며, 여기서 출력 VC들의 각각은 인출 플릿들(outgoing flits)을 다운스트림 라우터(downstream router)로 포워드하기 위해 사용되며, 그리고 여기서 출력 VC의 각각은 크레딧 카운트(credit count)와 연관된다. 라우터들을 통한 플릿들의 흐름은 크레딧 발생과 크레딧 추적(credit tracking)을 이용하는 것에 근간이 된다.
다수의 도면들은 발명의 실시예들에 관련된다.
도 1a는 시스템-온-칩(System-on-a-Chip)(SoC)의 실시예의 블록도를 예시한다.
도 1b는 패브릭의 실시예 및 패브릭에 포함된 라우터들의 블록도를 예시한다.
도 1c는 네트워크의 컴포넌트들에 의해 사용된 인터페이스들의 실시예 및 프로토콜 계층들 그리고 패킷화된 프로토콜 계층들의 실시예의 블록도를 예시한다.
도 2는 라우터의 실시예의 몇몇 컴포넌트들을 예시한다.
도 3은 라우터의 실시예의 보다 상세한 내부 구조를 예시한다.
도 4a는 라우터의 입력 및 출력 포트들의 예를 예시한다.
도 4b는 링크 폭 변환의 예를 예시한다.
도 5는 인트라-패브릭 통신(intra-fabric communication)을 예시하는 블록도이다.
도 6은 크레딧-기반 흐름 제어 메커니즘(credit-based flow control mechanism)의 실시예를 예시하는 블록도이다.
도 7은 흐름 제어를 위해 사용된 크레딧 추적 메커니즘과, 관련된 로직의 실시예를 예시한다.
도 8은 상이한 라우터 파이프라인 구성 실시예들의 예들을 예시한다.
도 9는 2개의 통신 라우터들 사이의 크레딧 루프(credit loop)의 예를 예시한다.
도 10은 라우터에 의해 수행될 수 있는 프로세스의 예의 실시예의 흐름도를 예시한다.
도 11은, 시스템 온 칩과 같은, 디바이스를 발생하기 위한 프로세스의 예의 실시예의 흐름도를 예시한다.
도 1a는 시스템-온-칩(System-on-a-Chip)(SoC)의 실시예의 블록도를 예시한다.
도 1b는 패브릭의 실시예 및 패브릭에 포함된 라우터들의 블록도를 예시한다.
도 1c는 네트워크의 컴포넌트들에 의해 사용된 인터페이스들의 실시예 및 프로토콜 계층들 그리고 패킷화된 프로토콜 계층들의 실시예의 블록도를 예시한다.
도 2는 라우터의 실시예의 몇몇 컴포넌트들을 예시한다.
도 3은 라우터의 실시예의 보다 상세한 내부 구조를 예시한다.
도 4a는 라우터의 입력 및 출력 포트들의 예를 예시한다.
도 4b는 링크 폭 변환의 예를 예시한다.
도 5는 인트라-패브릭 통신(intra-fabric communication)을 예시하는 블록도이다.
도 6은 크레딧-기반 흐름 제어 메커니즘(credit-based flow control mechanism)의 실시예를 예시하는 블록도이다.
도 7은 흐름 제어를 위해 사용된 크레딧 추적 메커니즘과, 관련된 로직의 실시예를 예시한다.
도 8은 상이한 라우터 파이프라인 구성 실시예들의 예들을 예시한다.
도 9는 2개의 통신 라우터들 사이의 크레딧 루프(credit loop)의 예를 예시한다.
도 10은 라우터에 의해 수행될 수 있는 프로세스의 예의 실시예의 흐름도를 예시한다.
도 11은, 시스템 온 칩과 같은, 디바이스를 발생하기 위한 프로세스의 예의 실시예의 흐름도를 예시한다.
비록 발명이 다양한 변경들과 대안적인 형태들을 따른다고 하더라도, 이들의 특정한 실시예들은 도면들에 예로서 도시되었으며 본 명세서에서 상세히 기술될 것이다. 발명은 개시된 특별한 형태들로 제한되는 것이 아니라, 반대로, 의도는 발명의 사상 및 범주 내에 속하는 모든 변경들, 등가물들, 그리고 대안들을 커버하는 것으로 이해되어야 한다.
다음 설명에서, 본 발명의 완전한 이해를 제공하기 위해, 명명된 컴포넌트들, 연결들, 회로들의 타입들, 등의 예들과 같은, 다수의 특정한 세부 사항이 설명된다. 그러나, 본 발명이 이들 특정한 세부 사항들 없이 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 예들에서, 잘 알려진 컴포넌트들 또는 방법들은 본 발명을 불필요하게 모호하게 함을 회피하기 위해 상세히 기술되기 보다는 오히려 블록도로 기술되었다. 게다가 특정한 숫자 참조들(예를 들어, 제1 라우터, 제2 라우터, 등)이 이루어질 수 있다. 그러나, 특정한 숫자 참조는 문자 그대로의 순차적인 순서로서 해석되기보다는 제1 어레이가 제2 어레이와 상이하다는 것으로 해석되어야 한다. 따라서, 설명된 특정한 세부 사항들은 단지 예시적이다. 특정한 세부 사항들은 본 발명의 사상 및 범주로부터 가변할 수 있으며 그리고 여전히 본 발명의 사상 및 범주 내에 존재하는 것으로 생각될 수 있다.
일반적으로, 크레딧-기반 흐름 제어 메커니즘을 이용해 하나 또는 하나를 초과하는 라우터들을 통과하는 라우팅 정보와 연관된 다양한 방법들과 장치가 논의된다. 방법은 플렉시블 크레딧 흐름 제어를 갖는 파이프라인형 가상 채널(VC) 라우터들을 이용해 링크 폭 변환을 다루는 것을 가능하게 한다. 크레딧 발생 및 크레딧 추적은 링크 폭 변환을 지원하기 위해 다운스트림 라우터내 스토리지의 이용성에 기초하여 2개의 인접한 라우터들 사이의 활동들(activities))을 동기화시키기 위해 수행된다.
링크 폭 변환은 크레딧 발생과 리턴이 협-투-광(narrow-to-wide)) 그리고 광-투-협(wide-to-narrow)에 대해 상이하게 다루어지는 요구들(demands)을 지원한다. 예를 들어, 협-투-광 변환이 필요한 경우, 하나의 플릿이 라우터를 떠날 때 하나를 초과하는 크레딧이 축적될 수 있다. 축적된 크레딧들은 기억되며 특정한 조건들이 충족될 때 크레딧 채널을 통해 사이클당 하나가 업스트림 라우터로 리턴된다.
몇몇 실시예들에 대해, 네트워크 온 칩(NoC)의 패브릭을 이용해 플릿들을 전파하기 위한 방법이 개시된다. 방법은 업스트림 라우터로부터 입력 포트와 연관된 복수의 입력 VC들의 의도된 입력 가상 채널(VC)내로 포워드된 플릿들을 수신하는 단계를 포함한다. 플릿들은 제1 지적 재산(IP) 코어로부터 발생되며 제2 IP 코어로 포워드될 패킷들과 연관된다. 플릿들은 의도된 입력 VC와 연관된 VC 스토리지내에 저장된다. 링크 폭 변환은 출력 포트의 폭과 상이한 입력 플릿들의 폭에 기초하여 수행될 수 있다. 링크 폭 변환은 출력 포트의 폭이 보다 넓을 때 플릿들의 축적을 포함할 수 있다. 링크 폭 변환은 출력 포트의 폭이 보다 좁을 때 플릿들의 언팩킹(unpacking)을 포함할 수 있다. 크레딧들은 입력 VC로부터 출력 포트로 포워드되는 플릿들에 기초하여 발생된다. 크레딧들은 업스트림 라우터로부터 보다 많은 플릿들을 수신할 수 있도록 하기 위해 업스트림 라우터로 전송될 수 있다. 업스트림 라우터가 크레딧을 갖지 않을 때, 업스트림 라우터는 보다 많은 크레딧들이 수신될 때까지 임의의 플릿들을 전송하지 않는다.
개관(Overview)
발명의 실시예들은 업스트림 라우터로부터 수신된 인입 플릿들을 저장하기 위해 각각의 입력 VC에 대한 공유 스토리지(shared storage)와 예비 스토리지(reserved storage)를 이용한다. 인입 플릿들은 주어진 링크 효율을 위해 VC 스토리지의 활용을 개선하는 크레딧 발생과 크레딧 리턴 방식에 기초하여 구성가능한 파이프라인형 라우터에 의해 처리된다. 라우터내 크레딧 추적 모듈은 각각의 출력 포트와 연관되며 출력 포트의 출력 VC들의 각각의 크레딧 용법(credit usage)의 추적을 유지하도록 구성된다. 0이 아닌 크레딧 카운트(non-zero credit count)를 갖는 출력 VC들만이 다운스트림 라우터에서 발생하는 링크 폭 변환과 함께 또는 링크 폭 변환없이 다운스트림 라우터로 인출 플릿들(outgoing flits)을 포워드하도록 허용된다. 라우터내 크레딧 발생 모듈은 각각의 입력 VC와 연관되며 VC 스토리지의 점유 상태(occupancy status)를 모니터하며 인입 플릿들이 VC 스토리지에서 떠날 때 크레딧들을 발생하도록 구성된다. 라우터는 협-투-광 링크 폭 변환이 존재할 때 인입 플릿들을 축적하기 위한 로직 및 광-투-협 링크 폭 변환이 존재할 때 인입 플릿들을 언팩킹하기 위한 로직을 포함한다. 라우터는 이종 라우터들(heterogeneous routers)의 세트의 일부일 수 있다.
IP 코어들과 패브릭
도 1a는 시스템-온-칩의 실시예의 블록도를 예시한다. 다이어그램(100)은 패브릭(118)을 통해 판독 및 기록 요청들을 통신할 뿐만 아니라, 그들 요청들에 응답하는 다중 개시 IP 코어들(multiple initiator IP cores : IC)과 다중 목표 IP 코어들(TC)을 포함한다. 패브릭내에 전달된 데이터가 패킷들의 형태로 존재하기 때문에 패브릭(118)은 패킷-기반 스위치 네트워크(packet-based switch network)로서 또한 지칭될 수 있다. IC의 몇몇 예들은 CPU IP 코어(102), 온-칩 보안 IP 코어(104), 디지털 신호 프로세서(DSP) IP 코어(106), 멀티미디어 IP 코어(108), 그래픽 IP 코어(110), 스트리밍 입력-출력(I/O) IP 코어(112), 통신 IP 코어(114)(예를 들어, 칩 외부의 디바이스들 또는 컴포넌트들을 갖는 무선 전송 및 수신 IP 코어, 등), 등을 포함할 수 있다.
각각의 IC는 패브릭(118)과 인터페이스하기 위해 자신 소유의 개시 에이전트(IA)(예를 들어, IA 142, IA 144, 등)를 가질 수 있다. TC의 몇몇 예들은 DRAM IP 코어(120) 내지 DRAM IP 코어(126)와 플래시(FLASH) 메모리 IP 코어(128)를 포함할 수 있다. 각각의 TC는 패브릭(118)과 인터페이스하기 위해 자신 소유의 목표 에이전트(TA)(예를 들어, TA 160, TA 162)를 가질 수 있다. DRAM IP 코어들(120-126)의 각각은 연관된 메모리 제어기를 가질 수 있다. 유사하게, 플래시 메모리(128)는 플래시 제어기(flash controller)와 연관된다. IC들(102-114)과 TC들(120-128)의 모두는 상이한 성능 레이트들(perfomance rates)(즉, (데이터 폭으로서 또한 알려진) 클럭 주파수 곱하기 데이터 비트 라인들의 수로서 계산될 수 있는 피크 대역폭 그리고 요구되거나 의도된 성능 레벨을 표시하는 일관된 대역폭)에서 동작할 수 있다. 패브릭(118)은, 시스템-온-칩(SoC)과 같은, 집적 회로의 일부일 수 있다.
라우터들
도 1b는 패브릭내에 포함된 패브릭과 라우터들의 실시예의 블록도를 예시한다. 다이어그램(155)은 패브릭(118)내 라우터들의 추가를 제외하고 다이어그램(100)과 유사하다. 다이어그램(155)은 정보가 IC들과 IA들로부터 TC들을 TA들로 흐르는 요청 네트워크를 예시한다. 비록 예시되지 않지만, TC들 및 TA들과 IA들 및 IC들에 연결하는 대응하는 응답 네트워크가 존재한다. 라우터들은 소스 위치(예를 들어, IC들(102-114))로부터 집적 회로내 목적지 위치(예를 들어, TC들(120-128))로 패브릭(118) 내에서 패킷들을 라우트하기 위해 사용될 수 있다. 패브릭(118) 내에 다중 라우터들이 존재할 수 있다. 라우터들의 수는 특정한 구현(예를 들어, 사용된 토폴로지, 영역 요건, 대기 시간 요건, 등)일 수 있다. IC(102)로부터 TC(122)로 전송된 데이터는 패브릭(118)으로 전송되기 전에 IA(142)와 연관된 로직을 패킷화함으로써 패킷화될 수 있다. 패킷들은 라우터들(150 및 152)을 통과할 수 있다. 그 다음 패킷들은 패킷들이 패브릭(118)을 떠날 때 TA(160)와 연관된 로직을 디패킷화함으로써 디패킷화될 수 있다. 유사하게, IC(108)로부터 TC(126)로 전송된 데이터는 패브릭(118)내로 전송되기 전에 IA(146)와 연관된 로직을 패킷화함으로서 패킷화될 수 있다. 패킷들은 라우터(154)를 통과할 수 있다. 그 다음 패킷들은 패킷들이 패브릭(118)을 떠날 때 TA(162)와 연관된 로직을 디패킷화함으로써 디패킷화될 수 있다. 라우터(152)로부터 TC(124)의 TA(161)로 흐르는 데이터, 그리고 IC(112)로부터 IA(142)와 라우터(154)로 흐르는 데이터가 도 1b에 또한 예시된다.
패킷들은 패킷들이 2개의 라우터들 사이에 전송될 때 플릿들(또는 흐름 제어 유닛들)로 불리우는 작은 조각들로 쪼개질 수 있다. 플릿은 전달을 위해 여러 사이클들이 걸릴 수 있다. 한 사이클에서 하나의 물리적 링크에 걸쳐서 전달되는 물리적 계층에서 정보의 최소 물리적 단위는 핏(phit)으로 불리운다. 플릿은 하나 또는 하나를 초과하는 핏들(phits)로 이루어질 수 있다. 라우터는 인입 플릿들을 버퍼하고 인입 플릿들을 그들의 의도된 목적지들로 포워드하기 위해 요구된 라우팅과 흐름 제어 기능들을 구현한다. 라우터는 플릿 레벨로 파이프라인(pipeline)되며 라우터의 아키텍쳐는 가상 채널(VC) 라우터를 따르며 네트워크-온-칩(NoC) 애플리케이션들을 위해 구성된다. 라우터는 가상 채널들로서 공유 방식으로 사용되는 다중 링크들을 포함할 수 있다. 물리적 입력 또는 출력 연결 또는 VC의 각각을 위한 포트들이 존재하지 않는다. 각각의 VC는 VC 식별(VC ID) 번호와 연관되며 채널을 통해 패킷의 플릿들의 핸들링을 조정하기 위해 필요한 상태를 유지할 수 있다. 이러한 상태는 라우트의 다음 홉(hop)과 가상 채널의 상태(아이들(idle), 자원들 대기(waiting for resources), 또는 활성(active))을 위해 현재 라우터의 출력 채널을 식별할 수 있다. VC는 또한 현재의 라우터에 버퍼되는 패킷의 플릿들 및 다음의 라우터에 대해 활용가능한 플릿 버퍼들의 수에 대한 포인터들(pointers)을 포함할 수 있다.
패킷의 제1 플릿은 헤더 플릿(header flit)으로 불리운다. 헤더 플릿은 패킷의 라우트에 관한 정보(예를 들어, 목적지 어드레스)를 유지하고 패킷과 연관된 모든 후속적인 플릿들을 위한 라우팅 행위(routing behavior)를 셋업한다. 헤더 플릿은 또한 연관되는 VC 번호를 포함할 수 있다. 헤더 플릿 다음에는 0 또는 그보다 많은 바디 플릿들이 뒤따를 수 있다. 바디 플릿들(body flits)은 데이터의 실제 페이로드(actual payload)를 포함한다. 최종 플릿은 테일 플릿(tail flit)으로 불리운다. 테일 플릿은 2개의 라우터들 사이의 연결을 폐쇄하기 위해 몇몇 부기(bookeeping)를 수행할 수 있다.
도 1c는 네트워크의 컴포넌트들에 의해 사용된 인터페이스들 및 프로토콜 계층들 그리고 패킷화된 프로토콜 계층들의 실시예의 블록도를 예시한다. 다이어그램(175)은 마스터 코어들(170, 180)과 슬래이브 코어(190)를 포함한다. 마스터 코어들(170, 180)의 각각과 슬래이브 코어(190)는 도 1a 및 도 1b에 예시된 IC 또는 TC에 대응할 수 있다. 다이어그램(175)은 패브릭 인터페이스 로직(186 및 196)을 또한 포함하며, 패브릭 인터페이스 로직(186 및 196)의 각각은 패킷화 및 디패킷화 로직을 포함할 수 있다. 메모리로부터 데이터를 얻기 위한 커맨드와 같은, 마스터 코어(180)로부터의 요청들은 OCP 또는 어드밴스드 마이크로컨트롤러 버스 아키텍처(Advanced Microcontroller Bus Architecture : AMBA) 프로토콜과 같은 또는 소유자 인터페이스 프로토콜(proprietary interface protocol)을 이용한 표준 인터페이스 프로토콜(standard interface protocol)로 표현된다. 그 다음 요청들은 IA(182)에 의해 수신된다.
OCP 소켓(OCP socket)이 거의 모든 애플리케이션을 위해 사용될 수 있는 반면에, AMBA 버스 인터페이스는 단일의 고유 애플리케이션(single unique application)에 의해 사용될 수 있으며, 여기서 중재 로직과 인터페이스 회로 모두는 그러한 특별한 애플리케이션을 위해 정의된다. 그 다음 요청은 패브릭 인터페이스 로직(fabric interface logic)(186)에 의해 패킷화될 수 있으며, 그리고 패킷들은 패브릭(118)내로 전송된다. 패킷들은 패브릭 인터페이스(196)에 도착하기에 앞서 플릿들로서 라우터들(198 및 199)에 의해 라우트될 수 있다. 그 다음 패브릭 인터페이스(196)는 패킷들을 메시지들로 디패킷화하며 그 다음 TA(192)로 메시지들을 전송한다. 그 다음 TA(192)는 OCP 또는 AMBA 또는 임의의 소켓 프로토콜(191)을 이용하여 슬래이브 코어(190)로 메시지들을 전송한다. 라우터들 모두에 의해 축적된 링크 폭 변환이, 패브릭 인터페이스(196)에 도착하는 패킷들이 패브릭 인터페이스(196)에 의해 예상된 바와 같이 존재할 것이라는 것을 보장하도록 라우터들(198 및 199)의 각각은 몇몇 링크 폭 변환을 수행하도록 구성될 수 있다. 슬래이브 코어(190)에 의한 응답 메시지가 존재할 때, 응답 메시지는 TA(192)로 전송된 다음에 패브릭 인터페이스(196)에 의해 패킷화된다. 라우터들(198 및 199)은, 응답 메시지와 연관된 패킷들이 스위치 인터페이스(186)에 도착할 때, 패킷들이 패브릭 인터페이스(186)에 의해 예상되는 것과 정합하도록 링크 폭 변환을 다시 수행할 수 있다.
도 1c의 이중-화살표 실선들은 플렉시블 네트워크(flexible network)의 컴포넌트들을 연결하는 물리적 링크들을 표시한다. 컴포넌트들 사이에 그려진 수평 이중-화살표 점선들은 특별한 타입의 계층 프로토콜이 임의의 물리적 링크를 통해 서로 연결되거나 연결되지 않을 수 있는 그들 컴포넌트들 사이에 사용된다는 것을 표시한다. 예를 들어, 패킷화 계층(188)에서, 패킷화 계층 프로토콜(177)이 통신을 위해 사용된다. 패킷화 계층(188)은 패킷화/디패킷화 하는 것, 데이터를 공통 데이터 포맷(common data format : CDF)으로 재포맷화 하는 것, 그 반대의 경우를 수행하는 것을 담당한다. 패킷화 계층(188)의 기능성(functionality)은 패브릭 인터페이스 패킷화기(fabric interface packetizer : FIP), 패브릭 인터페이스 디패킷화기(fabric interface depacketizer : FID)에 존재할 수 있다. FIP 및 FID는 버스트들(bursts)을 기록하기 위한 요청 네트워크에 대해 그리고 버스트들을 판독하기 위한 응답 네트워크에 대해 팩킹이 가능하지 않은 외부 소켓(non-packable external socket)을 용이하게 팩킹 및/또는 언팩킹하는 것을 담당한다.
라우팅 계층(197)에서, 라우팅 계층 프로토콜(179)은 라우터들 사이의 통신을 위해 사용된다. 라우팅 계층(197)은 라우팅과 폭 변환 관련 기능성을 다루는 것을 담당한다. 도 1c에 도시된 바와 같이, 라우팅 계층(197)의 기능성은 라우터들 및 FIP 그리고 FID내에 존재할 수 있다. RS(174)는 흐름 제어 및 가상 채널 관리를 위해 인접한 라우터들 사이에서 플릿들의 데이터 전달을 담당한다. 계층 프로토콜(183)은 또한 IA 요청 측과 TA 요청 측, 그리고 TA 응답 측과 IA 응답 측 사이의 통신들을 위해 사용된다. 도 1c의 바닥에 예시된 컴포넌트들 사이의 통신은 메시지 링크들(ML)(173B), 패킷 링크들(PL)(173A), 등에 기초한다. 예를 들어, ML(173B)은 IA(182)를 패브릭 인터페이스(186)와 연결하기 위해 사용되고; PL(173A)은 패브릭 인터페이스(186)를 라우터(198)와, 그리고 라우터(198)를 199와 연결하기 위해 사용된다.
메시지 링크(ML)는 개시 에이전트들(IA)과 패브릭 인터페이스 패킷화기(FIP) 또는 패브릭 인터페이스 디패킷화기(FID) 사이, 그리고 목표 에이전트(TA)와 목표 에이전트(TA)의 연관된 FID 또는 FIP 사이의 인터페이스이다. ML 프로토콜은 마스터와 슬래이브를 갖는 동기 점-대-점 단방향 프로토콜(synchronous point-to-point unidirectional protocol)이다. ML 프로토콜은 에이전트들 내부의 인터페이스 번들들(interface bundles)을 정의한다. ML은 OCP 또는 AMBA AXI와 같은 소켓 인터페이스 프로토콜들(socket interface protocols)로부터 소켓 정보를 캡처하기 위해 사용된다. ML은 에이전트들(IA 또는 TA)과 패킷화기들 또는 디패킷화기들 사이의 인터페이스에서 에이전트 내부 인터페이스 프로토콜로서 사용된다.
도 2는 라우터의 실시예의 몇몇 컴포넌트들을 예시한다. 라우터(200)는 의사 결정 모듈들(decision-making modules)로 구성될 수 있으며, 의사 결정 모듈들은 공유 자원들(shared resources)을 관리한다. 의사 결정 모듈들은 입력-버퍼링 모듈(205), 라우트-컴퓨팅 모듈(210), 가상 채널 할당 모듈(215), 스위치 할당 모듈(220), 그리고 (도 5에 도시된) 흐름 제어 모듈을 포함할 수 있다. 공유-자원들은 (도 3에 도시된) 입력 VC 버퍼 스토리지(325), 크로스바 스위치(crossbar switch)(225), 그리고 출력 포트들(250)을 포함할 수 있다. 공유 버퍼 스토리지(325)는 각각의 입력 포트에 기초하며 콘텐츠 어드레스가능 메모리(content addressable memory : CAM)로서 구현될 수 있다. 활성일 때, 의사 결정 모듈들은 입력 VC들의 상태들을 통해 서로 조정할 수 있다. 진행을 위해, 플릿은 여러 동작들을 겪을 수 있다. 인입 헤더 플릿(incoming header flit)은 인입 헤더 플릿이 다음 홉(hop)에 도달하기 전에 버퍼 기록(BW), 라우트 계산(RC), 가상 채널 할당(VA), 스위치 할당(SA), 스위치 횡단(ST), 그리고 링크 횡단(LT)의 동작들을 거칠 필요가 있다. 동일한 패킷의 바디 및 테일 플릿들은 헤더 플릿으로부터 인출 VC를 상속하며 오직 BW, SA, ST, 그리고 LT의 동작들을 통해서만 진행할 수 있다. 그들 동작들 중에서, RC 및 VA는 패킷 레벨 절차들로서 생각될 수 있으며 동작들의 나머지는 플릿-레벨 절차들(flit-level procedures)로서 생각될 수 있다.
BW는 정확한 입력 포트 IVC 스토리지내로 새로이 도착된 플릿들을 로딩하는 활동을 지칭한다. RC는 각각의 패브릭 네트워크 홉에서 패킷의 헤더 플릿으로부터 라우트 정보를 추출하는 프로세스를 지칭한다. 매 홉 라운트 정보(per hop route information)는 출력 포트 ID 및 출력 VC ID를 포함할 수 있다. VA는 동일한 출력 VC를 요청하며 요청된 출력 VC를 중재 승자(arbitration winner)에 할당하는 다양한 패킷들 사이에서의 중재 프로세스를 지칭한다. 단지 하나의 출력 VC만이 언제라도 오직 하나의 패킷에만 할당될 수 있다. SA는 동일한 출력에 속하며 출력 VC들 중 어느 출력 VC가 출력 포트로의 액세스를 승인받을지를 결정하는 출력 VC들 사이에서의 중재 프로세스를 지칭한다. 출력 포트는 오직 언제라도 하나의 출력 VC에만 할당될 수 있다. ST는 플릿이 입력 포트의 입력 VC와 연관된 VC 스토리지를 떠나고 출력 포트를 횡단하는 프로세스를 지칭한다. LT는 플릿이 현재의 홉을 떠나며 패브릭 네트워크 엔티티들(FID, FIP, 그리고 라우터)을 연결하는 물리적 링크를 따라 전파되는 프로세스를 지칭한다.
의사 결정 모듈들은 패킷-레벨 절차들과 플릿-레벨 절차들 둘 다를 관리한다. 입력 포트 모듈(205)은 인입 플릿들을 의도된 VC 버퍼 스토리지(325)내로 로드하도록 구성된다. 라우트 컴퓨팅 모듈(210)은 패킷의 헤더 플릿내 라우팅 필드를 검사하고 패킷이 라우트되어야 하는 출력 포트와 출력 VC를 계산하도록 구성된다.
패킷들은 적절한 데드락-프리 라우팅 방식(deadlock-free routing scheme)을 이용하여 소스로부터 목적지로 라우트된다. 라우트들은 소스 또는 각각의 홉에서 계산될 수 있다. 예시 목적들을 위해, 소스 기반 라우팅 방식이 가정된다; 그러나, 발명의 실시예들은 또한 다른 라우팅 방식들과 함께 사용될 수 있다는 것이 주목되어야 한다. 설계자는 적절한 데이터 폭 요건을 포함하는 각각의 코어에 대해 사람들이 원하는 것이 무엇인지를 정확히 안다. 설계자는 또한 하나의 IP 코어로부터 다른 IP 코어로 패킷들을 획득하는데 있어서, 경로들, 대기 시간, 홉들(hops)의 수, 등을 포함하는 상이한 요건들을 갖는다. 설계자의 요건들이 충족되도록 요건들 모두는 패브릭의 최종 구조에서 유래하는 것으로 고려된다. 최종 구조는 다수의 라우터들일 수 있으며, 그리고 라우터들은 그들의 입력과 출력 포트들에 대해 유사하거나 상이한 채널 폭을 가질 수 있다.
가상 채널 할당(VA) 모듈(215)은 동일한 출력 VC를 요청하는 패킷들 사이에서 중재하며 출력 VC가 그 시간에 임의의 다른 입력 VC들에게 승인되지 않았다는 필요충분조건이면 출력 VC를 중재 위너(arbitration winner)에 할당하도록 구성된다. 스위치 할당(SA) 모듈(220)은 동일한 출력 포트에 속하는 출력 VC들 사이에서 중재하며 어느 출력 VC가 크로스바 스위치(225)의 출력 포트(250)에 액세스하도록 승인받는지를 결정하도록 구성된다. 블록(230)은 출력 포트를 위해 경쟁하는 다중 플릿들을 예시한다. 언급된 바와 같이, 소스 라우팅은 사람들이 패킷을 통과시키기 원하는 출력 포트를 설계자가 특정하도록 허용한다. 그와 같이, 다중 플릿들이 동일한 출력 포트 또는 자원들에 대한 요청을 시도하는 것이 가능할 수 있다. 이것은 중재에 의해 해결된다. 2개의 중재 레벨들이 존재한다는 것이 주목될 수 있다. 제1 중재는 출력 VC를 위해 경쟁하는 다중 입력 VC들을 위해 존재하며 VA 모듈(215)에 의해 수행된다. 제2 중재는 출력 포트를 위해 경쟁하는 다중 출력 VC들을 위해 존재하며 SA 모듈(220)에 의해 수행된다. 연결(206)은 VC 버퍼 스토리지(325)로부터 크로스바 스위치(225)와 연관된 출력 포트로 예시적인 연결을 예시한다.
스위치 할당 동작들의 완료시, VC 스토리지(325)에서 대기하는 플릿이 크로스바 스위치(225)의 출력 포트(250)에 액세스하도록 승인받는다. 그러한 플릿은 다음 홉에 도착하도록 크로스바 스위치(225)와 출력 포트(250)를 통해 전파될 수 있다. 크로스바 스위치(225)를 통해 전파되는 플릿의 프로세스는 스위치 횡단으로서 지칭된다. 인터-라우터 물리적 링크(inter-router physical link)를 따라 전파되는 플릿의 프로세스는 링크 횡단으로서 지칭된다.
도 3은 라우터의 실시예의 보다 상세한 내부 구조를 예시한다. 라우터(300)는 입력 포트 모듈들(205), 크레딧 추적 모듈들(305) 그리고 관련된 통신 링크들의 추가를 제외하고 도 2에 예시된 라우터(200)와 유사하다. 다중 입력 포트 모듈들(205)이 존재할 수 있으며, 각각의 입력 포트를 위해 하나의 입력 포트 모듈이 존재할 수 있다. 입력 포트 모듈들(205)의 각각은 VC 스토리지(325), 자원 제어 모듈(330), 그리고 VC 상태/상황 모듈(335)을 포함할 수 있다. VC 스토리지(325)는 공유 VC 스토리지 및 예비 또는 전용 VC 스토리지를 포함할 수 있다. 공유 VC 스토리지는 동일한 입력 포트내 입력 VC들의 모두 사이에서 공유된다. 예비 VC 스토리지는 각각의 입력 VC에 할당되며 결핍(staration)을 방지하기 위해 그러한 입력 VC에 의해서만 액세스될 수 있다. 예를 들어, 플릿이 도착할 때, 플릿은 예비 VC 스토리지내에 놓여질 수 있다. 예비 VC 스토리지가 가득찬다면, 플릿은 공유 VC 스토리지에 저장될 수 있다.
몇몇 실시예들을 위해, 각각의 입력 포트 모듈들(205)은 라우트 계산을 다루며 인입 플릿들을 위해 버퍼 기록을 관리하도록 구성될 수 있다. 입력 포트 모듈들(205)은 또한 업스트림 라우터를 위한 크레딧들을 발생시키고 자신의 입력 VC들을 위해 갱신된 상태들을 유지하도록 구성될 수 있다. 입력 포트 모듈들(205)은 VA 요청들(321)을 VA 모듈(215)에 발행하고 VA 모듈(215)로부터 VA 승인들을 수신하며, SA 요청들(324)을 SA 모듈(220)에 발행하고 SA 모듈(220)로부터 SA 승인들(325)을 수신하며, 그리고 예비 VC 스토리지 리필 프로세스를 제어하도록 더 구성될 수 있다. 입력 포트 모듈들(205) 내부의 컴포넌트들 파티션(components partition)은 논리적 파티션이며 물리적 파티션이 아니라는 것이 주목될 수 있다. 여기에 사용된 논리적 파티션은 라우터 동작들을 예시하기 위한 것이며 레지스터 전달 레벨(register transfer level : RTL) 컴포넌트들 경계들을 설정하기 위한 것이 아니다.
링크 폭 변환
도 4a는 라우터의 입력 포트와 출력 포트의 예를 예시한다. 라우터(400)는 다중 입력 포트들(425, 426)과 다중 출력 포트들(430, 435)을 포함할 수 있다. 입력 포트(425)는 다중 입력 VC들(410, 415, 420)과 연관될 수 있다. 패킷들 또는 이들의 연관된 플릿들은 입력 VC(410)를 통해 라우터(400)에 의해 수신된 다음에 출력 포트(430)를 통해 라우터(400)에 의해 다음 홉으로 포워드될 수 있다. 동작시, 하나의 입력 VC가 라우트 계산마다 출력 VC에만 맵핑될 수 있다. 도 3에 기술된 바와 같이, VA 모듈(215)은 출력 VC를 할당하며, 그리고 SA 모듈(220)은 출력 포트를 할당한다.
패킷들은 패브릭(118)이 패킷들을 그들의 의도된 목적지로 포워드하기 위해 사용되도록 요구받는 경로를 표시하기 위해 제어 또는 라우팅 정보를 포함한다. 예를 들어, 인입 패킷을 위해 다음 홉은 제1 두 개의 최상위 비트들(most significant bits : MSBs)이 출력 포트를 결정하기 위해 사용될 수 있으며, 그리고 다음의 2개의 MSB들이 출력 VC를 결정하기 위해 사용될 수 있는 헤더 플릿의 라우팅 필드의 제1 4개의 최상위 비트들을 살펴봄으로써 결정될 수 있다. 입력 포트들(425, 426)의 각각의 폭과 라우터(400)의 출력 포트들(430, 435)의 폭은 독립적으로 구성될 수 있다. 입력 포트와 출력 포트 쌍의 폭이 동일하지 않을 때, 링크 폭 변환이 수행될 필요가 있을 수 있다. 수행될 특정한 타입의 링크 폭 변환은 라우터 연결성과 포트들의 연관된 폭들에 종속한다. 입력 포트 대 출력 포트 폭 비에 기초하여, (a) 보다 좁은 인입 플릿들이 보다 넓은 인출 플릿을 형성하기 위해 축적될 때 협-투-광(N2W) 변환, (b) 보다 넓은 인입 플릿들이 좁은 인출 플릿들과 정합할 때까지 쪼개질 때 광-투-협(W2N) 링크 폭 변환, 그리고 (c) 인입 플릿들이 출력 포트로 수정되지 않고 통과할 때 폭 변환이 없는 것을 포함하는 3개의 상이한 타입들의 링크 폭 변환이 존재할 수 있다.
몇몇 실시예들을 위해, 동일한 패킷과 연관된 인입 플릿들과 대응하는 인출 플릿들 사이의 링크 폭 변환비는 인입 링크의 폭 파라미터와 인출 링크의 폭 파라미터(예를 들어, 도 1c에 예시된 PL 링크(173a))의 비율을 이용하는 것에 기초하여 결정될 수 있다. 입력 포트의 입력 VC가 (출력 VC(440 및 445)에 의해 예시된 바와 같이) 다중 출력 포트들에 연결들을 가질 때, 입력 포트의 입력 VC는 하나를 초과하는 폭 변환비와 연관될 수 있다. 라우터의 입력 VC가 동시에 동일한 출력 포트에 대해 라우터에서 W2N 링크 폭 변환과 N2W 링크 폭 변환과 연관되지 않을 수 있다는 것이 주목될 수 있다. 그러나, 입력 VC는 동일(예를 들어, 1 대 4: 4개의 입력 플릿들을 1개의 출력 플릿으로 팩킹함) 또는 상이한 변환 비율들(예를 들어, 1 대 4 및 1 대 6)에 기초하여 N2W 링크 폭 변환하에 다중의 보다 넓은 출력 포트들과 연관될 수 있다. 유사하게, 입력 VC는 동일 또는 상이한 변환 비율에 기초하여 W2N 링크 폭 변환(예를 들어, 4 대 1 : 1개의 보다 넓은 입력 플릿을 4개의 보다 좁은 출력 플릿들로 쪼갬)하에 다중의 보다 좁은 출력 포트들과 연관될 수 있다. 예를 들어, 출력 VC(440)는 출력 VC(440)에 맵핑된 보다 많은 입력 VC들(410 및 415)을 가질 수 있으며 VA 모듈(215)은 동시에 다중 요청들을 수신할 수 있다.
도 4b는 링크 폭 변환의 예를 예시한다. 본 예에서, 2개의 업스트림 라우터들(475 및 476), 그리고 1개의 다운스트림 라우터(485)가 존재한다. 업스트림 라우터들(475, 476)과 다운스트림 라우터(485)는 상이한 출력 포트 폭과 입력 포트 폭을 갖도록 구성될 수 있다. 예를 들어, 업스트림 라우터(475)의 출력 포트의 폭은 64비트들일 수 있는 반면에 다운스트림 라우터(485)의 입력 포트의 폭은 256비트들일 수 있다. 그와 같이, 다운스트림 라우터(485)는 축적된 플릿들이 다운스트림 라우터(485)에서 중재를 위해 준비될 수 있기 전에 업스트림 라우터(475)로부터 4개의 플릿들(450, 455, 460 및 465)을 축적할 필요가 있을 수 있다. 유사하게, 업스트림 라우터(476)의 폭은 128비트들일 수 있으며, 그리고 다운스트림 라우터(485)는 축적된 플릿들이 다운스트림 라우터(485)에서 중재를 위해 준비될 수 있기 전에 업스트림 라우터(476)로부터 2개의 플릿들(470 및 472)을 축적할 필요가 있을 수 있다. 이것은 협-투-광 링크 변환으로서 지칭된다. (도 5에 도시된) 링크 변환 모듈(519)은 업스트림 라우터들(475 및 476)로부터 인입하는 플릿들을 위해 링크 변환들을 수행할 수 있다. 업스트림 라우터(475)는 한번에 하나의 플릿을 포워딩할 수 있다. 그와 같이, 중재가 다운스트림 라우터(485)내 VA 모듈과 SA 모듈에 의해 수행되기 전에 다운스트림 라우터(485)는 모두 4개의 플릿들(450, 455, 460 그리고 465)이 수신될 때까지 대기할 수 있다. 다운스트림 라우터(485)의 출력 포트에 대한 액세스가 승인될 때, 4개의 플릿들(450, 455, 460 및 465)이 다음 홉(495)으로 청크(chunk)로서 함께 포워드될 수 있다. 다운스트림 라우터(485)의 입력 포트의 폭이 256비트들 대신에 16비트들이면, 광-투-협 링크 변환이 수행될 수 있다. 이러한 상황에서, 플릿(450)은 보다 작은 플릿들로 쪼개질 수 있다.
패킷은 제어 정보(또는 헤더) 부분과 데이터(또는 페이로드) 부분을 포함할 수 있다. 패킷이 플릿들로 변환될 때, 헤더 부분과 페이로드 부분 각각은 다중 플릿들을 포함할 수 있다. 몇몇 실시예들을 위해, 다운스트림 라우터의 링크 폭 변환 모듈(519)은 업스트림 라우터로부터 수신된 플릿들을 팩킹 또는 언팩킹할 수 있으며, 인입 플릿들의 플릿 타입이 인출 플릿들의 플릿 타입, 그리고 기타 기능들과 정합하도록 파일된 플릿 제어를 갱신할 수 있다. 링크 폭 변환 모듈(519)은 페이로드 부분에 포함된 데이터를 수정하지 않을 수 있다.
몇몇 실시예들을 위해, VC 스토리지에 할당될 스토리지의 최소량은 특별한 입력 VC와 연관된 폭 변환 비에 기초하여 구성된다. 언급된 바와 같이, 각각의 입력 VC는 자신 소유의 예비 VC 스토리지와 공유 VC 스토리지와 연관된다. N2W 링크 폭 변환이 존재할 때, 특별한 VC를 위한 최대 N2W 링크 폭 변환을 지원하기 위해 충분한 스토리지가 존재해야 한다. 따라서, 각각의 입력 VC를 위한 예비 VC 스토리지는 N2W 폭 변환을 지원하기 위해 충분한 엔트리들을 가질 필요가 있을 수 있다. 예를 들어, 1:4의 링크 폭 변환비가 존재할 때, VC 스토리지는 1:4 변환비를 지원하기 위해 적어도 4개의 엔트리들을 포함할 필요가 있다. 심지어 플릿들이 공유 VC 스토리지내에 놓여질 때 조차도, 플릿들은 그들의 대응하는 입력 VC들과 연관되는 것으로서 여전히 식별가능하다. 패킷과 연관된 헤더 플릿이 예비 VC 스토리지에 저장되도록 하는 것이 가능할 수 있는 반면에 동일한 패킷과 연관된 바디 플릿들과 테일 플릿은 공유 VC 스토리지에 저장될 수 있다.
크레딧-기반 흐름 제어
도 5는 인트라-패브릭 통신(intra-fabric communication)을 예시하는 블록도이다. 다이어그램(500)은 패브릭 인터페이스들(505, 530, 및 540), 그리고 라우터들(510 및 520)을 포함한다. 패브릭 인터페이스(505)는 마스터 코어 또는 IC와 연관될 수 있다. 패브릭 인터페이스들(530 또는 540)은 슬래이브 코어 또는 TC와 연관될 수 있다. 몇몇 실시예들을 위해, 전송기-적응 크레딧-기반 흐름 제어(sender-adaptive credit-based flow control)가 라우터들(510, 520) 그리고 패브릭 인터페이스들(505, 530 및 540) 사이에서 통신들을 관리하기 위해 사용된다. 다운스트림-투-업스트림 방향으로 (크레딧 신호들로서 지칭된) 신호들의 작은 세트가 크레딧 흐름 제어를 구현하기 위해 사용될 수 있다. 크레딧-기반 흐름 제어로 인해, 업스트림 라우터는 다운스트림 라우터의 각각의 입력 VC내 프리 버퍼들(free buffers)의 카운트를 유지할 수 있다.
업스트림 라우터내 포지티브 크레딧 카운트는 다운스트림 라우터가, 예를 들어, 채널 대역폭, 버퍼 용량, 그리고 채널 제어 상태들과 같은 충분한 자원들을 갖는다는 것을 표시할 수 있다. 예를 들어, 플릿(512)이 업스트림 라우터(510)로부터 다운스트림 라우터(520)로 포워드 될 때마다, 업스트림 라우터(510)는 1만큼씩 자신의 크레딧 카운트를 감소시킬 수 있다. 플릿(522)이 다운스트림 라우터(520)를 떠날 때, 보다 많은 자원들(예를 들어, 프리 스토리지)이 다운스트림 라우터(520)에서 이용가능해 진다. 다운스트림 라우터(520)는 크레딧(514)을 업스트림 라우터(510)로 전송한다. 크레딧(514)을 수신시, 업스트림 라우터(510)는 1만큼씩 (도 6에 도시된) 자신의 크레딧 카운트(625)를 증가시킬 수 있다. 크레딧 카운트(625)는 다운스트림 라우터(520)가 업스트림 라우터(510)로부터 기꺼이 수용할 수 있는 플릿들의 수를 나타낼 수 있다. 크레딧 카운트(625)는 또한 다운스트림 라우터(520)가 현재 이용가능한 프리 버퍼 공간의 수를 나타낼 수 있다. 크레딧 카운트(625)가 특정한 시간에 0의 값에 도달할 수 있다는 것이 가능하다. 이것은 다운스트림 라우터(520)내 입력 VC와 연관된 VC 스토리지가 완전히 점유될 수 있으며, 그리고 다운스트림 라우터(520)가 특별한 입력 VC를 위해 업스트림 라우터(510)로부터 임의의 추가 플릿들을 수신할 준비가 되지 않았다는 것을 표시한다. 플릿들의 포워딩과 크레딧들의 전송을 포함하는 유사한 통신이 패브릭 인터페이스(505)와 라우터(510) 사이, 라우터(510)와 패브릭 인터페이스(540) 사이, 그리고 라우터(520)와 패브릭 인터페이스(530) 사이에서 발생할 수 있다. 라우터들(510 및 520)의 각각은 링크 변환 모듈(519)과 같은 링크 변환 로직 또는 모듈을 포함할 수 있다.
도 6은 크레딧-기반 흐름 제어 메커니즘의 실시예를 예시하는 블록도이다. 다이어그램(600)은 업스트림 라우터(또는 전송자(sender))(605)와 업스트림 라우터의 VC 스토리지(620), 그리고 다운스트림 라우터(650)(또는 수신기)와 다운스트림 라우터의 VC 스토리지(655)를 포함한다. 또한 크레딧 카운트(625)가 업스트림 라우터(605)내에 예시된다. 예에서, 현재의 크레딧 카운트는 5이다. 이러한 값은 특별한 입력 VC를 위해 다운스트림 라우터(650)의 입력 VC 스토리지(655)내에 5개의 빈 슬롯들(five empty slots)이 존재한다는 것을 표시한다. 몇몇 실시예들을 위해, 하나의 크레딧은 버퍼 공간의 특정한 양과 연관된다. 예를 들어, 하나의 크레딧은 하나의 플릿을 수용할 수 있는 버퍼 공간과 연관된다. 크레딧-기반 흐름 제어 메커니즘은 입력 VC 버퍼 활용을 개선하기 위해 적응 버퍼 할당을 채택한다. 이것은 필요하면 다중 입력 VC들이 다운스트림 라우터(650)내 동일한 버퍼 스토리지를 공유하도록 허용한다.
업스트림 라우터(605)는 입력 VC들(610 및 615)을 포함하는 다중 입력 VC들을 포함할 수 있다. 입력 VC 스토리지(예비 또는 공유)(620)로부터 데이터(예를 들어, 플릿)의 단위가 데이터 채널(630)을 통해 업스트림 라우터(605)로부터 다운스트림 라우터(650)로 포워드될 때, 크레딧 카운트(625)가 1만큼 감소된다. 크레딧 카운트(625)가 0보다 크기만 하면, 업스트림 라우터(605)는 다운스트림 라우터(650)로 다른 플릿을 포워드하는 것을 계속할 수 있다. 크레딧 카운트(625)가 0이면 업스트림 라우터(605)는 다운스트림 라우터(650)로 임의의 플릿들을 포워드하지 않을 것이다. 플릿이 다운스트림 라우터(650)의 입력 VC 스토리지(655)로부터 포워드될 때, 크레딧은 다운스트림 라우터(650)에 의해 크레딧 채널(635)을 통해 업스트림 라우터(610)로 전송될 수 있다. 그 다음 크레딧 카운트(625)는 1만큼 증가된다. 크레딧 카운트(625)는 도 7의 크레딧 추적 모듈(705)을 이용하여 보다 상세히 기술된다.
각각의 라우터는 다운스트림 라우터(650)의 데이터 채널들(660 및 665) 그리고 업스트림 라우터(605)의 데이터 채널(630)과 같은 다중 출력 포트들 또는 데이터 채널들을 가질 수 있다. VC 스토리지/버퍼(655)와 연관된 플릿이 VC 스토리지/버퍼(620)와 연관된 플릿보다 큰 폭을 갖거나 또는 보다 좁은 폭을 가질 수 있다는 것이 주목될 수 있다. 예를 들어, 플릿의 크기가 64비트들이고 VC 스토리지(620)의 각각의 단위의 크기가 256비트들 일 때, 비는 1 대 4이다. 몇몇 실시예들에서, 현재의 예를 이용하여, 플릿이 다운스트림 라우터(650)로부터 포워드될 때, 4개의 분리된 크레딧들이, 각각의 클럭 사이클 내에서 한번에 하나씩, 업스트림 라우터(605)로 전송될 수 있다. 몇몇 실시예들에서, 데이터 채널(630)내 플릿의 포워딩과 크레딧 채널(635)내 크레딧의 전송은 충분한 크레딧들이 존재할 때 거의 동시에 발생할 수 있다. 즉, 업스트림 라우터(605)는 다른 플릿을 다운스트림 라우터(650)로 포워드하기 전에 다운스트림 라우터(650)로부터 모두 4개의 크레딧들을 수신하기 위해 대기할 필요가 없을 수 있다. 그러나, 0 크레딧이 존재할 때, 업스트림 라우터는 다운스트림 라우터가 플릿들의 전체 청크를 포워드하기를 대기할 필요가 있을 수 있다. 예를 들어, 1:4 N2W 변환비가 존재할 때, 업스트림 라우터는 제1 크레딧이 수신되기 전에 다운스트림 라우터가 제1, 제2, 제3 그리고 제4 플릿을 포워드하기를 대기할 필요가 있을 수 있다. 언급된 바와 같이, 각각의 크레딧은 클럭 사이클마다 매 VC가 수신된다. 이러한 예에서, 업스트림 라우터는 다운스트림 라우터로 다음 플릿을 포워드하는 것을 시작하기 위해 제4 크레딧을 수신하기 위해 대기할 필요가 없을 수 있다. 대신에, 업스트림 라우터는 제1 크레딧이 수신되자 마자 포워딩을 시작할 수 있다.
도 7은 흐름 제어를 위해 사용된 크레딧 추적 메커니즘 및 관련된 로직의 실시예를 예시한다. 다이어그램(700)은 크레딧 추적 모듈(705), 스위치 할당 모듈(730), 자원 제어 모듈(750), 그리고 VC 스토리지(780)를 포함한다. 이들 모듈들은 도 2 내지 도 5에 기술되는 것들과 같이 라우터내에 포함될 수 있다. 크레딧 추적 모듈(705)은 매 출력 포트에 기초하며 크레딧 카운터 갱신 로직(710), 출력 VC들의 각각을 위한 예비-버퍼 카운터(reserved-buffer counter)(715), 그리고 각각의 출력 VC들을 위해 차용된 공유 버퍼 카운터(borrowed-from-shared buffer counter)(720)를 포함할 수 있다. VC 스토리지(780)는 입력 포트 당 VC 스토리지이며 공유 VC 스토리지(780)와 예비 VC 스토리지(790)를 포함한다. 자원 제어 모듈(750)은 입력 포트 당 자원 제어 모듈이며 크레딧 발생 모듈(755)을 포함한다. 크레딧 발생 모듈(755)은 입력 VC들의 각각에 대한 크레딧 축적기(credit accumulator)(760)와 크레딧 리턴 모듈(765)을 포함할 수 있다. 자원 제어 모듈(750)과 자원 제어 모듈(750)의 크레딧 발생 모듈(755)은 라우터의 프론트 엔드(frontend)에 위치되는 것으로 논리적으로 보일 수 있는 반면에, 크레딧 추적 모듈(705)은 라우터의 백엔드(backend)에 위치되는 것으로 논리적으로 보일 수 있다.
자원 제어 모듈(750)은 VC 스토리지(780)에 판독/기록 제어들을 발행한다. 플릿이 입력 포트에 도착할 때, 자원 제어 모듈(750)은 인입 플릿이 연관되는 VC 스토리지의 조건과 입력 VC의 상태에 기초하여 플릿을 올바른 VC 스토리지 공간 내로 로드한다. VC 스토리지(780)는 라우터의 입력 포트에 위치될 수 있으며 공유 VC 스토리지(785)와 예비 VC 스토리지(790)로 분할될 수 있다. 공유 VC 스토리지(785)는 동일한 입력 포트내에 입력 VC들의 모두 사이에서 공유되며 그리고 업스트림 라우터의 출력 포트의 액세스 권리가 승인되는 임의의 입력 VC에 의해 액세스될 수 있다. 예비 VC 스토리지(790)는 전용되며 자산의 할당된 입력 VC에 의해서만 사용될 수 있다.
각각의 입력 포트내에 위치된 공유 VC 스토리지(785)는 입력 포트의 모든 입력 VC들 사이에서 공유된다. 동일한 입력 VC에 속하는 플릿들이 순서대로 저장되며 선입선출(first-in-first-out : FIFO) 기초로 검색된다. 몇몇 실시예들을 위해, 공유 입력 VC 스토리지는 멀티-포트형 콘텐츠-어드레서블 메모리(multi-ported content-addressable memory : CAM) 구조를 이용해 구현되며, 이러한 구조는 하나의 기록 포트와 다중 판독 포트들을 갖는다. CAM 판독 포트들의 수는 입력 포트가 호스트하는 입력 VC들의 수와 동일할 수 있다.
각각의 입력 포트에서 인입 플릿은 인입 플릿이 적절한 VC 스토리지내로 로드되기 전에 검사될 수 있다. 각각의 플릿은 제어 필드와 페이로드 필드(payload field)를 가질 수 있다. 각각의 플릿은 본래의 플릿 필드들로부터 추출된 패킷-레벨과 플릿-레벨 상태 정보를 포함할 수 있으며, 본래의 플릿 필드들은 디코드된 라우팅 필드와 플릿 타입을 포함할 수 있다. 인입 플릿이 패킷의 제1 헤더일 때, 현재의 홉 라우트 정보(current hop route information)는 인입 플릿으로부터 추출될 수 있으며 인출 플릿의 헤더내로 삽입될 수 있다.
크레딧 발생 모듈(755)은 입력 VC 스토리지(780)의 점유 상태를 모니터하고 플릿이 VC 스토리지(780)를 떠날때에는 언제나 새로운 크레딧을 발생하도록 구성된다. 크레딧 추적 모듈(705)은 각각의 출력 VC를 위해 현재의 크레딧 카운트를 유지하며 각각의 출력 VC의 크레딧 용법의 정확한 상태를 SA 모듈(730)에 제공하도록 구성된다. 몇몇 실시예들을 위해, 0이 아닌 크레딧을 갖는 그들 출력 VC들만이 플릿들을 다운스트림으로 전송하도록 허용된다.
크레딧 채널(751)은 크레딧 정보를 통신하기 위해 사용될 수 있다. 크레딧 채널(751)은 다운스트림 라우터의 입력 포트를 업스트림 라우터의 출력 포트와 연결할 수 있다. 크레딧 채널(751)의 채널 폭은 다운스트림 라우터의 입력 포트에 포함된 다수의 입력 VC들과 동일한 값을 갖는 폭 파라미터(width parameter)에 의해 정의될 수 있다. 비트-벡터 스타일 인코딩 방식(bit-vector style encoding scheme)은 크레딧 정보를 인코드하기 위해 사용될 수 있다. 크레딧 채널(751)은 채널의 (또한 크레딧 라인(credit line)으로서 지칭된) 각각의 라인이 벡터내 엘리먼트인 비트 벡터로서 보여질 수 있다. 예를 들어, 폭 "n"의 크레딧 채널은 다운스트림 라우터의 입력 포트에서 "n" 입력 VC들을 위한 크레딧 정보를 인코드하기 위해 사용될 수 있고, 각각의 입력 VC를 위해서는 "n" 폭 크레딧 채널 내에 하나의 크레딧 라인을 갖는다.
몇몇 실시예들을 위해, 입력 VC 당 오직 하나의 크레딧만이 하나의 클럭 사이클 동안 크레딧 채널(751)을 통해 업스트림 라우터로 전송될 수 있다. VC 스토리지내 버퍼 공간이 프리일 때 크레딧이 주어질 수 있다는 것이 주목될 수 있다. 프리 버퍼 공간이 예비 VC 스토리지(790)의 일부일 수 있거나, 또는 프리 버퍼 공간이 공유 VC 스토리지(785)의 일부일 수 있다는 것이 가능하다. 이러한 구분은 크레딧 채널(751)에서 통하지 않는다. 몇몇 실시예들을 위해, 업스트림 라우터에서 크레딧 추적 모듈(705)은 크레딧과 연관된 프리 공간이 예비 VC 스토리지(790)로부터 존재하는지 또는 공유 VC 스토리지(785)로부터 존재하는지의 추적을 계속할 수 있다. 몇몇 실시예를 위해, 입력 포트내 입력 VC 공유 스토리지에 저장된 플릿으로 입력 VC 예비 스토리지를 리필하기 위해 리필 프로세스(refill process)가 수행될 수 있다.
몇몇 실시예들을 위해, 시스템 관점에서, 리셋(reset) 동안을 제외하고, 크레딧 채널(751)에 의해 반송된 정보는 항상 유효한 것으로서 간주될 수 있다. 리셋 신호가 주장되지 않을 때, 다운스트림 라우터의 크레딧 추적 모듈(705)은 매 클럭 사이클마다 인입 크레딧 정보를 평가하거나 또는 디코드한다. 다운스트림 라우터의 크레딧 발생 모듈(755)은 크레딧이 발생되지 않을 때 클럭 사이클동안 조차 리턴된 크레딧 정보의 유효성을 보장할 필요가 있을 수 있다.
크레딧 추적
크레딧 추적 모듈(705)은 업스트림 라우터에서 각각의 출력 포트를 위해 예시된다. 크레딧 추적 모듈(705)은 다운스트림 라우터의 입력 포트내 입력 VC 스토리지(780)의 용법을 모니터한다. 각각의 출력 포트가 단지 하나의 인입 크레딧 채널만을 가질 수 있기 때문에, 출력 포트 당 하나의 크레딧 추적 모듈(705)이 존재한다. 크레딧 추적 모듈(705)은 현재의 크레딧 밸런스를 SA 모듈(730)에 제공하고 SA 모듈(730)로부터 현재의 크레딧 소모 상태를 획득하기 위해 SA 모듈(730)과 상호작용하도록 구성된다. 크레딧 추적 모듈(705)은 또한 인입 크레딧 정보를 평가하고, 매 입력 포트 VC 크레딧의 타입을 결정하며, 그리고 공유 크레딧과 매 출력 포트 VC 예비 크레딧 둘 다를 위해 크레딧 밸런스를 갱신하도록 구성된다.
크레딧 추적 모듈(705)은 다운스트림 라우터로부터 크레딧 채널 신호들 그리고 SA 모듈(730)로부터 승인 신호(707)를 수신하도록 구성된다. 이러한 승인 신호는 소모된 크레딧(consumed credit)으로서 해석될 수 있다. 크레딧 추적 모듈(705)은 2개의 VC 스토리지 상태 신호들을 발생할 수 있다. 제1 VC 스토리지 상태 신호는 공유 VC 스토리지(785)가 가득 찼는지를 표시하기 위해 사용된다. 제2 VC 스토리지 상태 신호는 예비 VC 스토리지가 가득 찼는지를 표시하기 위해 사용된다. 제1 VC 스토리지 상태 신호가 주장될 때, 공유 VC 스토리지(785)가 완전히 점유되며, 따라서 이러한 출력 포트내 모든 출력 VC들을 위해 이용가능한 공유 크레딧이 존재하지 않는 것으로 해석될 수 있다. 제2 VC 스토리지 상태 신호가 주장될 때, 특별한 입력 VC를 위한 예비 VC 스토리지(790)가 소모되며, 따라서 특별한 출력 VC를 이용할 수 있는 예비 크레딧이 존재하지 않는 것으로 해석될 수 있다.
출력 포트의 SA 모듈(730)은 SA 요청 신호(706)를 통해 SA 모듈(730)로 전송된 중재 요청들을 필터링하기 위해 (공유 스토리지를 위한) 제1 VC 스토리지 상태 신호와 (예비 스토리지를 위한) 제2 VC 스토리지 상태 신호를 이용한다. 제1 VC 스토리지 상태 신호가 주장되지 않을 때, SA 요청 신호(706)를 통해 수신된 중재 요청들의 모두는 SA 모듈(730)에 의해 평가될 수 있다. 제1 VC 스토리지 상태 신호가 주장될 때, 그들의 예비 VC 스토리지를 다 소모(즉, 제2 VC 스토리지 상태 신호가 주장됨)한 출력 VC들로부터의 중재 요청들을 SA 모듈(730)에 의해 평가되지 않을 수 있다.
크레딧 추적 모듈(705)에 의해 수행된 크레딧 추적 동작들은 인입 크레딧들의 타입(공유 또는 예비)을 결정하며, 그리고 적절한 크레딧 카운터들의 값을 갱신하는 단계를 포함할 수 있다. 몇몇 실시예들을 위해, 크레딧 라인 신호의 주장과 SA 승인 신호(707)가 클럭 사이클 내에서 동일한 출력 VC에 발생할 때, 카운터들의 값들은 양쪽의 조건들을 고려하여 갱신될 수 있다. 카운터들의 갱신된 값은 그러한 사이클내 전체적인 값을 반영할 수 있다. 동일한 클럭 사이클내 공유 카운터로 크레딧을 리턴하는 하나를 초과하는 입력 VC들이 존재할 수 있다는 것이 주목될 수 있다. VC 스토리지의 할당은 공유 VC 스토리지를 위한 요청 전에 예비 VC 스토리지에 의해 처음 시작되는 것이 필요할 수 있다. 이러한 할당은 적절한 크레딧 밸런스 갱신을 통해 업스트림 라우터에서 크레딧 추적 모듈(705)에 의해 관리될 수 있다. 차용된 공유 크레딧 카운터(720)를 유지하는 것은 각각의 출력 VC가 오직 공유 VC 스토리지로부터 소모된 크레딧들의 양만을 리턴하는 것을 보장한다.
크레딧 카운터들
공유 크레딧과 매 출력 VC 예비 크레딧 둘 다를 위한 크레딧 밸런스를 추적하기 위해, 카운터들의 세트가 크레딧 추적 모듈(705)에서 활용된다. 이들은 공유-크레딧 카운터(725), 예비 크레딧 카운터(715), 그리고 차용된 공유 카운터(720)를 포함한다. 공유-크레딧 카운터(725)는 크레딧 추적 모듈(705)마다 하나가 예시되며 시스템 리셋시 (최대-공유-깊이(701)로서 예시된) 사전결정된 최대값으로 초기화된다. 공유-크레딧 카운터(725)의 값은 출력 포트내 모든 출력 VC들 사이에서 공유된 크레딧(들)의 현재 밸런스를 나타낸다. 공유-크레딧 카운터(735)의 값이 0일 때, 공유 VC 스토리지(785)가 완전히 점유된다는 것을 표시하기 위해 공유-풀 신호(shared-credit signal)(705)와 같은 적절한 VC 스토리지 상태 신호가 주장된다.
예비 크레딧 카운터(715)는 출력 VC마다 하나가 예시되며 시스템 리셋시(최대-예비-깊이(702)로서 예시된) 사전결정된 최대값으로 초기화된다. 예비 크레딧 카운터(715)의 값은 특별한 출력 VC를 위해 예비된 크레딧(들)의 현재 밸런스를 나타낸다. 예비 크레딧 카운터(715)의 값이 0일 때, 예비 VC 스토리지(790)가 완전히 점유된다는 것을 표시하기 위해 예비-풀 신호(704)와 같은 적절한 VC 스토리지 상태 신호가 주장된다.
차용된 공유 카운터(720)는 출력 VC 마다 하나가 예시되며 시스템 리셋시 0으로 초기화된다. 차용된 공유 카운터(720)의 값은 특별한 출력 VC가 차용된 공유 크레딧(들)의 수를 나타낸다. 특별한 출력 VC가 소모되도록 허용되는 공유 크레딧들의 최대 수는 카운터 크기를 결정하기 위해 사용될 수 있다. 0 카운트 값은 특별한 출력 VC가 임의의 공유 크레딧들을 사용하지 않았다는 것을 표시한다.
크레딧 발생
크레딧 발생 모듈(755)은 다운스트림 입력 포트에서 인출 크레딧 채널마다 예시된다. 크레딧 발생 모듈(755)은 크레딧 리턴 모듈(765)과 다중 크레딧 축적 모듈들(760)을 포함한다. 각각의 입력 포트가 단지 하나의 인출 크레딧 채널만을 갖기 때문에, 입력 포트마다 하나의 크레딧 발생 모듈(755)이 존재한다. 크레딧 발생 모듈(755)은 각각의 입력 VC를 위한 크레딧(들)을 발생하고 축적하도록 구성된다. 크레딧 발생 모듈(755)은 또한 크레딧 리턴 조건이 충족될 때 발생된 크레딧을 전송하도록 구성된다. 특별한 입력 VC를 위해 하나의 버퍼 슬롯(예를 들어, N2W 변환시)을 채우기 위해 다운스트림 라우터가 충분한 플릿들을 축적한 후에 조차도 크레딧이 업스트림 라우터로 전송되지 않을 수 있다는 것이 주목될 수 있다. 이것은 중재가 특별한 입력 VC에 대해 (SA 승인 신호(707)를 통해) 승인되지 않을 수 있거나; 그렇지 않으면, 오버플로 조건(overflow condition)이 발생할 수 있기 때문이다. 동일한 라인을 따라서, VC 스토리지내 버퍼 공간이 이용 가능 해지자 마자 크레딧을 전송할 필요가 있을 수 있다. 크레딧을 너무 늦게 전송하는 것은 버퍼 공간의 충분하지 못한 이용을 초래할 수 있다.
크레딧 발생 모듈(755)은 크레딧 타입(공유 또는 예비)을 감지하지 못할 수 있다. 크레딧 리턴 조건이 특별한 입력 VC를 위해 충족되지 않을 때, 그러한 입력 VC에 대해 발생된 크레딧은 크레딧 축적 카운터(760)에 의해 기억될 필요가 있다. 크레딧 축적 카운터(760)는 전송될 크레딧들의 수를 추적하기 위해 각각의 입력 VC에 대해 예시될 수 있다.
몇몇 실시예들을 위해, 특별한 입력 VC를 위한 N2W 폭 변환(예를 들어, 1 대 4)이 존재할 때, 다운스트림 라우터로부터 포워드된 플릿들의 수는 업스트림 라우터로부터 수신된 보다 좁은 플릿들의 수와 동일하다. 예를 들어, 4개의 보다 좁은 플릿들이 업스트림 라우터로부터 하나 씩 수신된 후, 그들 4개가 팩킹되고 하나의 보다 넓은 플릿으로서 다운스트림 라우터로부터 포워드된다. 크레딧은 승인 신호(707)를 통해 SA가 특별한 입력 VC에 대한 팩킹된 4개의 플릿들에 대해 승인될 때 특별한 입력 VC를 위해 준비된다. 특별한 입력 VC를 위한 W2N 폭 변환(예를 들어, 2 대 1)이 존재할 때, 인입하는 보다 넓은 플릿들(예를 들어, 1개의 플릿)은 인출하는 좁은 플릿들(예를 들어, 2개의 보다 작은 플릿들 또는 2개의 청크들)과 정합할 때까지 쪼개진다. 크레딧은 SA가 보다 넓은 플릿내 최종 청크에 대해 승인될 때 특별한 입력 VC를 위해 준비가 된다. 즉, 크레딧은 (업스트림 라우터로부터 수신된) 보다 넓은 플릿이 완전히 언팩킹(예를 들어, 하나의 보다 넓은 플릿이 4개의 좁은 플릿들로 언팩킹)될 때 그리고 언팩킹된 플릿들의 그룹이 라우터로부터 포워드될 때 업스트림 라우터로 전송된다. 인입 플릿의 크기가 인출 플릿의 크기와 동일할 때 링크 폭 변환이 필요하지 않을 수 있다. 크레딧은 SA 중재가 승인 신호(707)를 통해 특별한 입력 VC에 대해 승인될 때에는 언제나 준비된다.
도 8은 상이한 라우터 파이프라인 구성 실시예들의 예들을 예시한다. 수평 화살표(850)는 시간 라인(time line)과 그러한 시간 라인동안 클럭 사이클들을 나타낸다. 이것은 클럭 사이클 0 내지 3을 포함한다. 수직 화살표(805)는 바닥에서의 최고 속도/최고 홉 대기시간으로부터 상부에서 최저 속도/최저 홉 대기시간까지의 범위인 바람직한 설계에 종속하는 다른 가능한 라우터 구성들을 나타낸다. 플릿들은 좌에서 우로 패브릭(118)을 통해 이동하며 그리고 라우터 경계들(810 및 825)을 가로지른다. 라우터들에 의해 수행된 상이한 동작들은 라우트 컴퓨팅(route computing : RC), 버퍼 기록(BW), 가상 채널 할당(VA), 스위치 할당(SA), 스위치 횡단(ST), 그리고 링크 횡단(LT)을 포함한다. 라인들(835 및 840)은 구성가능하지 않은 파이프라인 포인트(non-configurable pipeline point)를 나타낸다. 라인들(815 및 820)은 구성 가능한 파이프라인 포인트들을 나타낸다. 각각의 수평선은, 예를 들어, 1-사이클 라우터 클럭, 2-사이클 라우터 클럭, 등을 포함하는 상이한 구성들을 나타낸다. 구성들과 함께 도시된 백_레지스터_인에이블 파라미터(back_reg_enable parameter)는 라우터의 파이프라인 배열을 설정하기 위해 사용된다. 이러한 파라미터가 인에이블될 때, 폴-스루 대기시간(fall-through latency)의 하나의 추가적인 사이클이 라우터에 추가된다. 구성들과 함께 도시된 SA_레지스터_인에이블 파라미터(SA_reg_enable parameter)는 크레딧이 (도 3에 도시된) SA_승인 신호(325)를 이용해 발생된다는 것을 표시하기 위해 사용된다. 현재의 구성 예에서, 인에이블된 백_레지스터_인에이블 파라미터와 SA_레지스터_인에이블 파라미터 둘 다와 함께 3-사이클 라우터 클럭 구성(three-cycle router clock configuration)은 가장 빠른 속도와 최고 홉 대기시간(highest hop latency)을 제공한다.
도9는 크레딧 흐름의 예를 예시한다. 몇몇 실시예들을 위해, 채널의 최대 스루풋(throughput)이 요구될 때, VC 스토리지는 채널의 스루풋이 제한된 다운스트림 버퍼 공간에 의해 제한되지 않는다는 것을 보장하기 위해 적절한 크기로 될 필요가 있을 수 있다. 동시에, VC 스토리지가 너무 클 때, 버퍼 공간의 충분하지 못한 활용과 불필요한 영역 비용을 초래할 수 있다. 크레딧 왕복 지연(credit round-trip delay)은 최대 스루풋이 흐름 제어 메커니즘에 의해 지지될 수 있다는 것을 결정하기 위해 사용될 수 있는 파라미터이다. 수직 화살표 라인(950)은 타임라인을 나타낸다. Tcrt로서 표기된 우측 상 수직 이중 화살표 라인은 동일한 버퍼 공간을 위해 연속적인 크레딧들 사이의 최소 시간을 나타낸다. Tcrt는 버퍼 공간과 연관된 제1 크레딧이 전송되는 제1 시간(955)과 제2 크레딧이 동일한 버퍼 공간을 위해 전송되는 제2 시간(960) 사이의 지속기간을 지칭한다.
이러한 예에서 Tcrt 지속시간(905-925)은 왕복 와이어 지연(round-trip wire delay)과 다운스트림 라우터에서 프로세싱 시간 그리고 업스트림 라우터에서 프로세싱 시간을 포함한다. 델타 시간(t1)(905에서 910으로)은 크레딧이 다운스트림 라우터에서 업스트림 라우터로 전송될 시간을 나타낸다. 델타 시간(t2)(910에서 915로)은 업스트림 라우터가 다운스트림 라우터로부터 수신된 크레딧을 처리하는 시간을 나타낸다. 델타 시간(t3)(915로부터 920으로)은 플릿이 업스트림 라우터로부터 다운스트림 라우터로 이동하는 시간을 나타낸다. 델타 시간(t4)(920으로부터 925로)은 플릿이 다운스트림 라우터의 파이프라인 프로세싱을 통과하는 시간을 나타낸다. 시간(925) 후, 플릿은 다운스트림 라우터에 의해 다음 홉으로 포워드된다. 시간 기간(905-920)은 크레딧 루프(credit loop)로서 지칭될 수 있다. 그러한 시간 기간은 프리 또는 빈 버퍼 공간과 연관된 크레딧이 업스트림 라우터로 전송되는 시간과 다음으로 동일한 프리 또는 빈 버퍼 공간이 플릿에 의해 점유되는 시간을 커버한다. 이러한 크레딧 루프는 몇몇 실시예들에 기술된 크레딧-기반 흐름 제어 메커니즘과 연관된 대기시간을 나타낸다.
파라미터로서 Tcrt를 이용하여, VC마다 요구된 버퍼 공간의 양은 다음 공식을 이용하여 결정될 수 있다:
플릿 버퍼들의 총 수 ≥ (Tcrt*채널 대역폭)/비트들내 플릿 길이.
공유 VC 스토리지가 사용될 때, 이용가능한 VC 스토리지(공유 VC 스토리지 + 예비 VC 스토리지)의 전체 양이 상기 방정식을 만족하는 한, 최대 채널 대역폭은 버퍼 크기에 의해 제한되지 않을 수 있다. (도 8에 예시된 바와 같이) 상이한 라우터 파이프라인 구성들은 상이한 VC 스토리지 크기를 초래할 수 있다는 것이 주목될 수 있다.
몇몇 실시예들을 위해, 플릿이 입력 포트에 도착할 때, 플릿이 디코드된다. 언급된 바와 같이, 패킷 내 3가지 타입들의 플릿들이 존재한다: 헤더 플릿, 바디 플릿, 그리고 테일 플릿. (도 7에 예시된) 자원 제어 모듈(750)은 인입 플릿의 타입을 결정하기 위해 인입 플릿의 플릿 제어 필드를 검사할 수 있다. 디코드된 플릿 타입 정보는 입력 VC 상태 FIFO로 로드된다. 상이한 행동들이 상이한 타입의 플릿들을 위해 수행될 필요가 있을 수 있다. 예를 들어, 헤더 플릿이 검출되면, 도착 패킷의 출력 포트와 출력 VC가 계산되고 입력 VC의 상태 정보의 일부로서 저장된다. 인입 플릿이 테일 플릿일 때, 입력 VC의 상태 정보는 나중 패킷들이 사용되도록 입력 VC를 해제하기 위해 스위치 횡단 단계 이후 소거될 필요가 있을 수 있다. 플릿 제어 필드를 검사하는 것 이외에도, 자원 제어 모듈(750)은 또한 인입 플릿을 로드하기 위해 올바른 스토리지 위치를 결정할 필요가 있을 수 있다.
몇몇 실시예들을 위해, 패킷을 위한 라우팅 결정들이 사전-계산된 라우트에 기초하여 업스트림 라우터에서 이루어질 수 있는 결정적 소스 라우팅 메커니즘(deterministic source routing mechanism)이 있다. 라우팅 알고리즘은 패킷마다 단 하나의 사전-계산된 라우팅 경로만이 존재하기 때문에 결정론적이다. 각각의 홉에서, 라우팅 결정들이 이루어지지 않으며 전체 패킷들은 헤더 플릿의 라우팅 필드에 의해 결정된 동일한 인출 VC에 대해 동일한 인출 포트를 통과한다. 결정론적 소스 라우팅에 의해, 라우트 계산은 패킷의 제1 헤더 플릿의 라우팅 필드를 디코드하며 다음 홉을 위한 라우팅 계자 전류(routing field current)를 만들기 위해 검사된 라우팅 비트들을 전가한다.
플릿은 플릿이 스위치 횡단(ST) 상태로 진입하기 전에 VC 스토리지로부터 (프론트 레지스터로서 지칭된) 레지스터내로 로드될 수 있다. 프론트 레지스터는 공유 VC 스토리지내에 저장된 플릿으로 예비 VC 스토리지를 리필하기 위해 사용된다. 플릿이 스위치 횡단(ST) 스테이지로 진입할 때, 자신의 연관된 입력 VC가 여전히 공유 VC 스토리지에 저장된 하나 또는 하나를 초과하는 플릿을 갖는다면, 빈 프론트 레지스터는 다음의 후속하는 플릿이 진출하도록 허용하기 위해 리필될 필요가 있을 수 있다. 프론트 레지스터의 리필링은 (도 2에 예시된) 입력 포트 모듈(205)내 공유 VC 스토리지에 저장된 플릿으로 입력 VC의 예비 VC 스토리지를 리필하는 프로세스이다. 라우터의 정상적인 파이프라인 동작동안, VC 스토리지내로 새로운 플릿의 로딩과 공유 VC 스토리지로부터 프론트 레지스터의 리필링이 동시에 일어날 수 있다.
흐름도
도 10은 라우터에 의해 수행될 수 있는 프로세스의 예의 실시예의 흐름도를 예시한다. 프로세스는 다운스트림 라우터에 의해 수행될 수 있으며 플릿이 업스트림 라우터로부터 수신되는 블럭(1005)에서 시작될 수 있다. 블럭(1010)에서, 플릿은 플릿이 생겨나는 입력 VC와 연관된 공유 VC 스토리지나 예비 VC 스토리지에 기록된다. 플릿의 폭과 다운스트림 라우터의 출력 포트의 폭에 따라, 링크 폭 변환이 일어나거나 일어나지 않을 수 있다. N2W 링크 폭 변환이 존재할 때, 변환은 블록(1015)에서 수행된다. W2N 링크 폭 변환이 존재할 때, 변환은 블럭(1020)에서 수행된다. 링크 폭 변환이 존재하지 않을 때, 변환 동작이 수행되지 않는다.
블럭(1025)에서, 임의의 변환 동작이 완료되는지를 결정하기 위해 테스트가 수행된다. 보다 많은 변환이 필요하면(예를 들어, 보다 많은 플릿들이 축적될 필요가 있다면), 프로세스는 블럭(1010) 이후의 포인트로 다시 리턴될 수 있다. 변환이 필요하지 않거나(예를 들어, 변환이 존재하지 않을 때) 또는 변환 동작이 완료되면, VC 할당 동작이 수행되는 블럭(1030)에서 프로세스가 계속될 수 있다. 이것은 출력 VC를 할당한다. 블럭(1035)에서, 스위치 할당 동작이 수행된다. 이것은 플릿을 다음 홉으로 포워드할 출력 포트를 할당한다. SA 모듈(730)이 승인 신호를 인에이블 또는 주장한 후 스위치 할당 동작이 수행될 수 있다. 블럭(1040)에서, 크레딧 발생 동작이 수행된다. 블럭(1045)에서, 크레딧 리턴 동작이 수행된다. 이러한 동작은 업스트림 라우터로 크레딧을 전송한다. 블럭(1045)으로부터, 프로세스는 업스트림 라우터로부터 보다 많은 플릿들을 수신하기 위해 블럭(1005)에서 반복될 수 있다.
컴퓨터-판독가능 매체
실시예에서, 비-일시적인 컴퓨터 판독가능 스토리지 매체는 명령들을 포함하며, 기계에 의해 실행될 때, 명령들은 기계로 하여금 집적 회로(IC)를 포함하는 시스템들을 망라하는 네트워크 온 칩(Network on a Chip : NoC)의 패브릭에 하나 또는 하나를 초과하는 라우터들을 포함하는 장치의 소프트웨어 표시를 발생하게 하도록 구성된다. 하나 또는 하나를 초과하는 라우터들은 NoC의 패브릭의 인터-라우터 물리적 링크들(inter-router physical links)을 따라 소스 위치들로부터 목적지 위치들로 플릿들을 전파하도록 구성된다. 플릿들은 인입 플릿들과 인출 플릿들을 포함한다. 라우터들의 각각은 하나 또는 하나를 초과하는 입력 포트들과 하나 또는 하나를 초과하는 출력 포트들을 갖는다. 라우터들의 각각은 (a) (i) 하나 또는 하나를 초과하는 마스터 지적 재산(IP) 코어들과 (ii) 하나 또는 하나를 초과하는 슬래이브 IP 코어들 둘 다로부터 임의의 인입 플릿들을 버퍼하기 위해 요구된 라우팅과 흐름 제어 기능들을 구현하고, (b) 출력 포트에 연결된 신호 와이어들의 폭이 입력 포트에 연결된 신호 와이어들의 폭과 상이할 때 링크 폭 변환을 수행하며, (c) 각각의 입력 포트를 갖는 다중 입력 가상 채널들(VC's) ― 여기서 입력 VC들의 각각은 그러한 입력 VC와 연관된 인입 플릿들만을 위해 예비된 제1 VC 스토리지 및 입력 포트와 연관된 입력 VC들 모두의 인입 플릿들 사이에서 공유된 제2 VC 스토리지와 연관됨 ― 을 이용하고, (d) 각각의 출력 포트를 갖는 다중 출력 VC들 ― 여기서 출력 VC들의 각각은 인출 플릿들을 다운스트림 라우터로 포워드하기 위해 사용되며, 여기서 출력 VC의 각각은 크레딧 카운트와 연관됨 ― 을 이용하며, 그리고 (e) 크레딧 발생과 크레딧 추적을 이용하는 플릿 흐름 제어를 수행하도록 구성된다.
시물레이션 및 모델링
도 11은, 본 명세서에 기술된 시스템들과 방법들에 따라서, 시스템 온 칩(System on a Chip)과 같은, 디바이스를 만들기 위한 프로세스의 예의 실시예의 흐름도를 예시한다. 상호연결 및 메모리 스케줄러의 설계들로 디바이스를 만들기 위한 예시적인 프로세스는 전자 설계 자동화(Electronic Design Automation : EDA) 툴세트(toolset)의 일부를 형성하기 위해, 시스템 온 칩 컴파일러와 같은, 전자 회로 설계 생성기(electronic circuit design generator)를 활용할 수 있다. 하드웨어 로직, 부호화된 소프트웨어(coded software), 그리고 둘의 조합은 EDA 툴세트의 실시예를 이용한 이후 설계 프로세스 단계들을 구현하기 위해 사용될 수 있다. 이와 같은 EDA 툴세트는 단일 툴 또는 둘 또는 둘을 초과하는 이산 툴들의 컴필레이션(compilation)일 수 있다. 상호연결, 메모리 스케줄러, 등내 회로를 위한 장치들 및/또는 방법들을 나타내는 정보는 셀 라이브러리(cell library)내와 같은 인스턴스(instance), 전자 회로 설계 발생기내 소프트 명령들, 또는 이러한 정보를 저장하는 유사한 기계-판독가능 스토리지 매체 내에 포함될 수 있다. 기계-판독가능 스토리지 매체에 저장된 장치들 및/또는 방법들을 나타내는 정보는 장치들, 또는 본 명세서에 기술된 시물레이션들과 리소그래픽 마스크들, 및/또는 방법들과 같은 장치들의 모델 표시들을 생성하는 프로세스에서 사용될 수 있다.
상기 설계의 양상들은 스케줄러 및 상호연결 그리고 연관된 부분들을 구성하는 컴포넌트들을 위해 설계들의 세트를 포함하는 소프트웨어 라이브러리(software library)의 일부일 수 있다. 라이브러리 셀들은 산업 표준들에 따라서 개발된다. 설계 엘리먼트들을 포함하는 파일들의 라이브러리는 EDA 툴세트의 일부일뿐만이 아니라 자체가 자립형 프로그램(stand-alone program)일 수 있다.
EDA 툴세트는, 다른 기능들뿐만 아니라, 입력과 출력 데이터, 제어, 디버그 그리고 테스트 흐름들을 통합적으로 관리하는 고도로 구성가능하고, 스케일러블한 시스템-온-칩(SOC) 인터 블럭 통신 시스템을 만들기 위해 사용될 수 있다. 실시예에서, 예시적인 EDA 툴세트는 다음을 포함할 수 있다: 그래픽 사용자 인터페이스; 프로세싱 엘리먼트들의 공통 세트; 그리고 회로들, 제어 로직, 그리고 EDA 툴 세트를 정의하는 셀 어레이들(cell arrays)과 같은 설계 엘리먼트들을 포함하는 파일들의 라이브러리. EDA 툴세트는 회로 설계를 만들고, 설계를 테스트하고, 및/또는 목표 칩상의 이용가능한 공간내 설계의 레이아웃을 배치하기 위해 다중 알고리즘들과 설계들로 이루어진 하나 또는 하나를 초과하는 소프트웨어 프로그램들일 수 있다. EDA 툴세트는 실행가능한 소프트웨어 프로그램들의 세트내에 객체 코드(object code)를 포함할 수 있다. 애플리케이션-특정 알고리즘들의 세트와 EDA 툴세트의 인터페이스들은 개별적인 IP 코어 또는 특정한 애플리케이션을 위한 IP 코어들의 전체 시스템을 신속하게 생성하기 위해 시스템 집적 회로(IC) 통합기들(integrators)에 의해 사용될 수 있다. EDA 툴세트는 각각의 컴포넌트의 타이밍도들, 전력 및 영역 양상들을 제공하며 실제 동작과 구성 시물레이션들을 실행하기 위해 컴포넌트들을 표시하도록 부호화된 모델들로 시물레이트한다. EDA 툴세트는 네트리스트(Netlist)와 목표 칩 상의 이용가능한 공간내에 꼭 맞게 목표된 레이아웃을 발생할 수 있다. EDA 툴세트는 또한 기계-판독가능 스토리지 매체상의 상호연결 및 로직 회로를 나타내는 데이터를 저장할 수 있다.
일반적으로, EDA 툴세트는 SOC 설계의 2개의 주요 스테이지들에서 사용된다: 프론트-엔드 프로세싱과 백-엔드 프로그래밍. EDA 툴세트는 RTL 발생기, 로직 합성 스크립트들(logic synthesis scripts), 완전 검증 테스트벤치(full verification testbench), 그리고 시스템C 모델들(SystemC models) 중 하나 또는 하나의 초과를 포함할 수 있다.
프론트-엔드 프로세싱은 설계와 아키텍처 스테이지들을 포함하며, 이는 SOC 개략도의 설계를 포함한다. 프론트-엔드 프로세싱은 연결 모델들, 설계의 구성, 시물레이팅, 테스팅, 그리고 아키텍처 탐구 동안 설계의 튜닝을 포함할 수 있다. 설계는 전형적으로 시물레이트되고 테스트된다. 프론트-엔드 프로세싱은 전통적으로 SOC내 회로들의 시물레이션과 회로들이 올바르게 작동해야 하는 것의 검증을 포함한다. 그 다음 테스트되고 검증된 컴포넌트들은 자립형 라이브러리의 일부 또는 칩상의 IP 블럭들의 일부로서 저장될 수 있다. 프론트-엔드 뷰들(front-end views)은 문서화, 시물레이션, 디버깅, 그리고 테스팅을 지원한다.
블럭(1105)에서, EDA 툴세트는 구성 파라미터들을 기술하는 데이터를 갖는 사용자-공급형 텍스트 파일과 스레드(thread)내 그리고 다중 스레드들에 걸쳐서 매-스레드와 매-태그 메모리 액세스 스케줄링을 동시에 수행하도록 구성된 태그 로직(tag logic)의 적어도 일부를 위한 설계를 수신할 수 있다. 데이터는 그러한 IP 블럭을 위해 하나 또는 하나를 초과하는 구성 파라미터들을 포함할 수 있다. IP 블럭 설명은 상호연결, 메모리 스케줄러, 등과 같은 그러한 IP 블럭의 전체 기능일 수 있다. 상호연결 IP 블럭 및 스케줄러를 위한 구성 파라미터들은 앞서 기술된 바와 같은 파라미터들을 포함할 수 있다.
EDA 툴 세트는 그러한 IP 블럭의 컴포넌트 레벨 제조(component level fabrication), 그러한 기술에서 셀에 의해 점유된 크기의 추정, 그러한 기술에서 구현된 컴포넌트 레벨 로직의 동작 전압, 그러한 기술에서 표준 셀들을 위한 평균 게이트 지연, 등을 구현하기 위해 제조 프로세스와 같은 사용자-공급형 구현 기술 파라미터들을 수신한다. 기술 파라미터들은 의도된 구현 기술의 개요를 기술한다. 사용자-공급형 기술 파라미터들은 원문 상세한 설명 또는 단지 알려진 가능성들의 범위에 응답하여 제출된 값일 수 있다.
EDA 툴 세트는 IP 블럭 설계를 구성하는 각각의 IP 서브 컴포넌트를 위해 개략적인 실행가능 표시를 생성함으로써 IP 블럭 설계를 분할할 수 있다. 개략적인 실행가능 표시는 각각의 IP 서브 컴포넌트를 위한 TAP 특성들을 모델링 하며 실제 IP 블럭 설계의 특성들과 유사한 특성들을 모방한다. 모델은 그러한 IP 블럭의 하나 또는 하나를 초과하는 행위 특성들에 초점을 맞출 수 있다. EDA 툴 세트는 IP 블럭 설계의 일부들 또는 전부의 모델들을 실행한다. EDA 툴 세트는 그러한 IP 블럭의 모델링된 행위 특성들의 결과들을 요약하고 보고한다. EDA 툴 세트는 또한 애플리케이션의 성능을 분석하고 새로운 기술 파라미터들을 이용하여 사용자가 IP 블럭 설계의 새로운 구성 또는 기능적 설명을 제공하게 할 수 있다. 사용자가 실행된 IP 설계 파라미터들과 기술 파라미터들이 공급된 구성의 반복들 중 하나의 성능 결과들에 의해 만족된 후, 사용자는 자신의 연관된 기술 파라미터들과 함께 궁극적인 IP 코어 설계를 정할 수 있다.
EDA 툴 세트는 IP 블럭을 위한 합성 스크립트들을 발생하기 위해 개략적인 실행가능 표시들로부터의 결과들에게 잠재적으로 추가적인 정보를 통합한다. EDA 툴 세트는 전체적인 성능과 영역 추정들의 결과가 사용자에게 제공된 후 IP 블럭을 위한 다양한 성능과 영역 목적들을 설정하기 위해 합성 스크립트들을 공급할 수 있다.
EDA 툴 세트는 또한 사용자 공급형 구성 파라미터들과 구현 기술 파라미터들에 기초하여 로직 합성을 위해 그러한 IP 블럭 설계의 RTL 파일을 발생할 수 있다. 논의된 바와 같이, RTL 파일은 레지스터들, 불 방정식들(Boolean equations), "조건문(if-then-else)" 표현들과 같은 제어 로직, 그리고 복합 이벤트 시퀀스들(complex event sequences)과 같은 제어 로직의 모음을 갖는 전자 회로들을 기술하는 고-레벨 하드웨어 설명일 수 있다.
블럭(1110)에서, ASIC 또는 SOC 칩 설계에서 분리된 설계 경로는 통합 스테이지(integration stage)로 불리운다. IP 블럭들의 시스템의 통합은 IP 블럭의 RTL 파일의 발생 및 그러한 IP 블럭을 위한 합성 스크립트들과 병행하여 발생할 수 있다.
EDA 툴세트는 정확히 설계 작업들의 동작을 시물레이트하고 검증하기 위해 회로들과 로직 게이트들의 설계들을 제공할 수 있다. 시스템 설계자는 함께 작업하기 위해 IP 블럭들의 시스템을 부호화한다. EDA 툴 세트는 기능적으로 테스트되고, 타이밍 테스트되며, 디버그되고 유효화될 수 있는 상기 기술된 회로들의 표시들의 시물레이션들을 발생한다. EDA 툴 세트는 IP 블럭들의 행위의 시스템을 시물레이트한다. 시스템 설계자는 IP 블럭의 행위의 시스템을 검증하고 디버그한다. EDA 툴 세트는 IP 코어를 툴 패키지한다. 기계-판독가능 스토리지 매체는 또한 외부 테스트기(tester)를 위한 명령들과 본 명세서에 기술된 테스트들을 위한 테스트 시퀀스들을 실행하기 위한 상호 연결을 발생하기 위해 테스트 발생 프로그램을 위한 명령들을 저장할 수 있다. 전자 설계 자동화의 당업자는 설계 엔지니어가 유형의 유용한 정보 및/또는 결과들을 발생하는 것을 돕기 위해, 소프트웨어 부호화된 모델들과 같은, 상이한 표시들을 생성하고 사용하는 것을 안다. 이들 표시들 중 많은 표시들이 (개략적이고 적은 세부내용들을 갖는) 고-레벨이거나 평면도들일 수 있으며 그리고 시스템 레벨로부터 시작하는 전자 설계를 최적화하는 것을 돕기 위해 사용될 수 있다. 게다가, 설계 프로세스는 통상적으로 단계들로 나누어질 수 있으며 그리고 각각의 단계의 끝에서, 단계에 대한 테일러-메이드 표시(tailor-made representation)가 출력으로서 통상적으로 발생되며 그리고 다음 단계에 의해 입력으로서 사용된다. 숙력된 엔지니어들은 이들 표시들을 이용하고 최종 단계로부터 생기는 최종 결과들의 품질을 개선하기 위해 경험적 알고리즘들(heuristic algorithms)을 적용할 수 있다. 이들 표시들은 전기 설계 자동화 세계가 회로들을 설계하고, 회로들을 테스트하고 검증하며, 회로의 네트리스트들(Netlists)로부터 리소그래픽 마스크와 다른 유사한 유용한 결과들을 유도하도록 허용한다.
다음으로, 블럭(1115)에서, 시스템 통합은 집적 회로 설계 프로세스에서 발생할 수 있다. 벡-엔드 프로그래밍은 일반적으로, 컴포넌트들 사이의 모든 금속 선들의 라우팅뿐만 아니라, 칩 레이아웃상의 회로 엘리먼트들의 배치와 라우팅, 또는 평면도 작성(floor planning)과 같은 SOC의 물리적인 레이아웃의 프로그래밍을 포함한다. 레이아웃, 물리적인 라이브러리 교환 포맷(physical Library Exchange Format : LEF), 등과 같은 백-엔드 파일들은 레이아웃과 제조를 위해 발생된다.
생성된 디바이스 레이아웃은 칩을 위한 레이아웃의 나머지와 통합될 수 있다. 로직 합성 툴은 IP 코어를 위한 합성 스크립트들과 IP 코어들의 RTL 설계 파일을 수신한다. 로직 합성 툴은 또한 셀 라이브러리로부터 설계에 사용된 로직 게이트들의 특성들을 수신한다. RTL 코드는 IP 블럭들의 시스템을 포함하는 SOC를 예시하기 위해 발생될 수 있다. 고정 RTL 및 합성 스크립트들과 함께 IP 블럭들의 시스템이 시물레이트되고 검증될 수 있다. 레지스터 전달 레벨(Register Transfer Level : RTL)과 함께 설계의 합성이 일어날 수 있다. 로직 합성 툴은 게이트 레벨 네트리스트 회로 설계를 생성하기 위해 RTL 설계를 합성한다(즉, IP 서브 컴포넌트 블럭들의 전부를 구성하는 개별적인 트랜지스터들과 로직 게이트들의 상세한 설명). 설계는 베리로그(Verilog), VHDL((Very-High-Speed integrated Circuit Hardware Description Language) 또는 SPICE(Simulation Program for Integrated Circuit Emphasis)와 같은 하나 또는 하나를 초과하는 하드웨어 설계 언어들(HDL)의 네트리스트내로 출력될 수 있다. 네트리스트는 또한 설계에 포함된 컴포넌트들, 각각의 컴포넌트의 속성들 그리고 컴포넌트들 사이에서 상호연결성과 같은 전자 설계의 연결성을 기술할 수 있다. EDA 툴 세트는 칩 상의 XY 좌표들과 같은 칩 상에 이용가능한 공간내 컴포넌트 배치를 위한 제약들의 추가를 포함하는 컴포넌트들의 평면도 작성을 용이하게 하며, 그들 컴포넌트들을 위한 금속 연결들을 라우트한다. EDA 툴 세트는 리소그래픽 마스크들이 제조동안 칩, 또는 상기 기술된 회로들 중 기타 유사한 유용한 도출물들 상에 회로 설계를 전사하기 위해 IP 코어의 이러한 표시로부터 발생되도록 정보를 제공한다. 따라서, 백-엔드 프로그래밍은 백-엔드 프로그래밍이 물리적으로 제조가능하며 결과적인 SOC가 어떠한 기능을 방해하는 물리적 결함들을 갖지 않을 것이라는 것을 검증하기 위해 레이아웃의 물리적 검증을 더 포함할 수 있다.
블럭(1120)에서, 제조 설비는 EDA 툴 세트의 회로 설계 및 레이아웃으로부터 발생된 리소그래픽 마스크들을 이용한 신호 발생 회로를 갖는 하나 또는 하나를 초과하는 칩들을 제조할 수 있다. 제조 설비들은 칩들을 제조하기 위해 1.0㎛, 0.50㎛, 0.35㎛, 0.25㎛, 0.18㎛, 0.13㎛, 0.10㎛, 90nm, 65nm 또는 더 적은 최소 선 폭들(minimum line widths)을 갖는 표준 CMOS 로직 프로세스를 이용할 수 있다. 활용된 CMOS 로직 프로세스의 크기는 전형적으로 리소그래픽 마스크들을 이용하여 칩상에 제조될 수 있는 최소 리소그래픽 치수를 정의하며, 이는 차례로, 최소 컴포넌트 크기를 결정한다. 일 실시예에 따르면, X-레이들과 극자외선(extreme ultraviolet radiation)을 포함하는 광(light)은 칩 자체 위에 테스트 회로를 위한 회로 설계와 레이아웃을 전사하기 위해 칩 상에 이들 리소그래픽 마스크들이 통과할 수 있다.
EDA 툴세트는 그래픽 사용자 인터페이스(graphical user interface)를 위해 구성 다이얼로그 플러그-인들(configuration dialog plug-ins)을 가질 수 있다. EDA 툴세트는 SocComp를 위해 RTL 발생기 플러그-인(RTL generator plug-in)을 가질 수 있다. EDA 툴세트는 SocComp를 위해 시스템C 발생기 플러그-인을 가질 수 있다. EDA 툴세트는 RTL 시물레이션에 포함될 수 있는 컴포넌트들에 대해 단위-레벨 검증을 수행할 수 있다. EDA 툴세트는 테스트 확인 테스트벤치 발생기(test validation testbench generator)를 가질 수 있다. EDA 툴세트는 가상 및 하드웨어 디버그 포트 트레이스 파일들(virtual and hardware debug port trace files)을 위한 디스-어셈블러(dis-assembler)를 가질 수 있다. EDA 툴세트는 오픈 코어 프로토콜 표준들을 따를 수 있다. EDA 툴세트는, 기타 유사한 프로그램들 뿐만 아니라, 트랜잭터 모델들(Transactor models), 번들 프로토콜 체커들(Bundle protocol checkers), 소켓 활동을 디스플레이하기 위한 OCPDis2, 번들의 성능을 분석하기 위한 OCPPerf2를 가질 수 있다.
논의된 바와 같이, EDA 툴 세트는, 기계-판독가능 매체상에 저장된, 기타 프로그램들 또는 하나의 프로그램내 소프트웨어 셀 라이브러리와 함께 실행가능한 프로그램으로 이루어진 EDA 툴 세트로 불릴 수 있는 소프트웨어 라이브러리내 인스턴스와 같은, 데이터와 명령들의 세트로서 소프트웨어로 구현될 수 있다. 기계-판독가능 스토리지 매체는 기계(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함할 수 있다. 예를 들어, 기계-판독가능 매체는 판독 전용 메모리(read only memory : ROM); 랜덤 액세스 메모리(random access memory : RAM), 자기 디스크 스토리지 매체; 광학 스토리지 매체; 플래시 메모리 디바이스들; DVD들; EPROM들; EEPROM들; 플래시(FLASH), 자기 또는 광 카드들; 또는 전자 명령들을 저장하기에 적합한 임의의 다른 타입의 매체를 포함할 수 있지만, 이에 제한되지 않는다. 명령들과 동작들은 또한 기계-판독가능한 매체가 저장되고/되거나 하나를 초과하는 컴퓨터 시스템에 의해 실행되는 분산 컴퓨팅 환경들에서 실행될 수 있다. 게다가, 컴퓨터 시스템들 사이에 전달된 정보는 컴퓨터 시스템들을 연결하는 통신 매체에 걸쳐서 당겨지거나 밀려질 수 있다.
상기 상세한 설명들의 몇몇 일부들은 컴퓨터 메모리내 데이터 비트들에 대한 동작들의 알고리즘들과 부호 표시들에 관하여 제공된다. 이들 알고리즘적인 설명들과 표시들은 다른 당업자들에게 그들의 작업의 요지를 가장 효과적으로 전달하기 위해 데이터 프로세싱 기술의 당업자에 의해 사용된 수단이다. 알고리즘은 여기서, 그리고 일반적으로, 원하는 결과를 가져오는 동작들의 일관된 시퀀스인 것으로 간주된다. 동작들은 물리적 양들의 물리적 조작들을 요구하는 동작들이다. 통상적으로, 반드시 필요하지는 않다고 하더라도, 이들 양들은 저장되고, 전달되며, 조합되고, 비교되며, 그리고 기타 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 이것은, 주로 공통 용법의 이유들 때문에, 비트들, 값들, 엘리먼트들, 부호들, 문자들, 용어들, 숫자들, 등으로서 이들 신호들을 지칭하는 것이 때때로 편리하다는 것이 입증되었다.
실시예에서, 로직은 불 로직(Boolean Logic)의 규칙들을 따르는 전자 회로들, 명령들의 패턴들을 포함하는 소프트웨어, 또는 둘의 임의의 조합으로 이루어진다. 상기 기술된 다양한 컴포넌트들은 하드웨어 로직, 소프트웨어, 또는 둘의 임의의 조합으로 구현될 수 있다.
비록 발명의 몇몇 특정한 실시예들이 도시되었지만 발명은 이들 실시예들로 제한되지 않는다. 예를 들어, 전자 하드웨어 컴포넌트들에 의해 수행된 대부분의 기능들은 소프트웨어 에뮬레이션(software emulation)에 의해 복제될 수 있다. 따라서, 그들과 동일한 기능들을 달성하기 위해 기록된 소프트웨어 프로그램은 입-출력 회로내 하드웨어 컴포넌트들의 기능을 에물레이트할 수 있다. 발명은 본 명세서에 기술된 특정한 실시예들에 의해 제한되지 않고, 첨부된 청구항들의 범주에 의해서만 제한되는 것으로서 이해될 것이다.
Claims (18)
- 집적 회로를 위한 네트워크 온 칩(Network on a Chip : NoC)의 패브릭(fabric) 내의 둘 또는 둘을 초과하는 라우터들로서,
상기 NoC의 상기 패브릭의 인터-라우터 물리적 링크들을 따라 소스 위치들로부터 목적지 위치들로 플릿(flit)들을 전파하도록 구성되며,
적어도 업스트림 라우터와 다운스트림 라우터를 포함하고,
상기 플릿들은 인입 플릿들과 인출 플릿들을 포함하고;
상기 라우터들의 각각은 하나 또는 하나를 초과하는 입력 포트들과 하나 또는 하나를 초과하는 출력 포트들을 가지며,
상기 다운스트림 라우터는 각각의 입력 포트에 대해 둘 또는 둘을 초과하는 입력 가상 채널들(VCs)을 갖고,
제1 입력 포트에 대한 제1 입력 VC는 상기 제1 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제1 전용 스토리지 메커니즘과 연관되고,
상기 제1 입력 포트에 대한 제2 입력 VC는 상기 제2 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제2 전용 스토리지 메커니즘과 연관되고,
상기 제1 입력 VC와 상기 제2 입력 VC는 상기 제1 입력 포트에 대해 연관된 상기 입력 VC들 모두의 상기 인입 플릿들 사이에서 공유된 제3 공유 스토리지 메커니즘과 연관되고,
상기 업스트림 라우터로부터 상기 제1 입력 VC 내로 수신된 상기 인입 플릿들은 상기 제1 전용 스토리지 메커니즘 내에 충분한 공간이 없을 때 상기 제3 공유 스토리지 메커니즘에 저장되고,
상기 업스트림 라우터는 각각의 출력 포트와 연관된 하나 또는 하나를 초과하는 출력 VC들을 갖고,
상기 출력 VC들의 각각은 상기 다운스트림 라우터로 상기 인출 플릿들을 포워드하도록 구성되고,
상기 출력 VC들의 각각은 각각의 출력 VC의 자신의 크레딧 카운트(credit count)와 연관되는, 상기 둘 또는 둘을 초과하는 라우터들; 및
각각의 출력 VC의 연관된 크레딧 카운트에 기초하여 크레딧 발생과 크레딧 추적을 이용하여 상기 다운스트림 라우터로 제1 인출 플릿을 포워드하기 위해 플릿 흐름 제어를 수행하도록 구성된 크레딧 로직을 포함하는, 장치. - 제1항에 있어서,
상기 크레딧 로직은 상기 다운스트림 라우터가, 다른 플릿을 수신하기 위해 상기 제1 입력 VC에 대해 상기 인입 플릿들만을 위해 예비된 상기 제1 전용 스토리지 메커니즘과 상기 입력 VC들 모두의 상기 인입 플릿들 사이에 공유된 상기 제3 공유 스토리지 메커니즘 사이에 충분한 스토리지 용량을 가질 때, 상기 제1 입력 VC에 대해 상기 업스트림 라우터에 포지티브 크레딧 카운트를 표시하도록 구성되고,
상기 제1 입력 포트의 상기 제1 입력 VC 내의 제1 인입 플릿이 상기 업스트림 라우터의 제1 출력 VC로부터 상기 다운스트림 라우터로 포워드될 때, 상기 크레딧 로직은 상기 업스트림 라우터의 상기 제1 출력 VC의 1만큼씩 크레딧 카운트를 감소시키도록 구성되고,
제2 플릿이 상기 다운스트림 라우터를 떠날 때, 상기 크레딧 카운트는 상기 업스트림 라우터의 상기 제1 출력 VC에 1만큼씩 축적되고,
상기 제1 인출 플릿은 제1 지적 재산(IP) 코어로부터 발생되고 상기 둘 또는 둘을 초과하는 라우터들에 의해 상기 패브릭을 통해 제2 IP 코어로 포워드될 패킷을 형성하는 복수의 피스(piece)들 중 하나인, 장치. - 제1항에 있어서,
상기 크레딧 로직은:
상기 다운스트림 라우터에 연결된 각각의 출력 포트와 연관된 크레딧 추적 모듈로서,
0이 아닌 크레딧 카운트를 갖는 상기 출력 VC들만이 상기 다운스트림 라우터로 상기 인출 플릿들을 포워드하게 허용되도록 상기 출력 포트에 연결된 상기 출력 VC들의 각각의 크레딧 용법의 추적을 계속하도록 구성되는, 상기 크레딧 추적 모듈, 및
상기 제1 입력 포트와 연관된 크레딧 발생 모듈로서, 상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘의 점유 상태를 모니터하도록 구성되고 상기 인입 플릿들이 상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘에서 벗어날 때 크레딧들을 발생하도록 구성되는, 상기 크레딧 발생 모듈로 구성되는, 장치. - 제1항에 있어서,
상기 크레딧 로직은 0인 크레딧들이 상기 제1 입력 VC에 대해 상기 업스트림 라우터에 존재할 때, 상기 다운스트림 라우터의 상기 제1 입력 VC와 연관된 상기 스토리지 메커니즘들이 상기 제1 입력 VC에 대한 상기 제1 전용 스토리지 메커니즘과 상기 둘 또는 둘을 초과하는 입력 VC들 모두 사이에 공유된 상기 제3 공유 스토리지 메커니즘 둘 모두에 완전히 점유되도록 구성되고, 상기 다운스트림 라우터는 포지티브 크레딧들이 상기 제2 입력 VC에 대해 여전히 존재할 때, 상기 제1 입력 VC에 대해 상기 업스트림 라우터로부터 임의의 다른 플릿들을 수신하도록 준비되지 않지만 상기 제2 입력 VC에 대해 하나 또는 하나를 초과하는 플릿들을 수신할 수 있는, 장치. - 제1항에 있어서,
상기 크레딧 로직은 상기 업스트림 라우터의 출력 포트와 연관된 제1 출력 VC로부터 상기 인입 플릿들을 포워드하기 위해 상기 제1 입력 VC로부터 요청을 수신하도록 구성되고,
상기 출력 포트는 복수의 출력 VC들과 연관되고;
중재기는 어떤 플릿이 입력 VC 중재의 승자(winner) 플릿으로서 선택되는지를 결정하기 위해 상기 플릿들을 포워드하도록 다른 입력 VC들로부터 다른 요청들과 함께 상기 플릿들을 포워드하기 위한 상기 요청을 상기 제1 입력 VC로부터 중재하도록 구성되고;
상기 업스트림 라우터는 또한, 상기 제1 입력 VC로 상기 입력 VC 중재의 상기 승자 플릿을 포워드하도록 구성되는, 장치. - 제1항에 있어서,
상기 둘 또는 둘을 초과하는 라우터들의 각각은 또한,:
상기 제1 입력 포트와 연관된 상기 입력 VC들 모두를 관리하며 상기 제1 전용 스토리지 메커니즘, 상기 제2 전용 스토리지 메커니즘 및 상기 제3 공유 스토리지 메커니즘을 포함하는 다양한 스토리지 메커니즘 내에 상기 인입 플릿들을 저장하도록 구성된 입력 포트 모듈; 및
상기 입력 포트 모듈과 결합되며 상기 인입 플릿들의 헤더 플릿 내의 라우팅 필드를 검사하고 상기 인입 플릿들이 제1 라우터 내에 라우트될 상기 다운스트림 라우터의 제1 출력 VC와 제1 출력 포트를 결정하도록 구성된 라우트 컴퓨팅 모듈을 포함하도록 구성되는, 장치. - 제1항에 있어서,
상기 둘 또는 둘을 초과하는 라우터들의 각각은 상기 플릿들이 하나의 라우터로부터 다른 라우터로 전파하는 것과 같은 파이프라인 방식으로 그리고 상기 패브릭을 통해 상기 인입 플릿들을 처리하도록 구성되며,
제1 라우터와 제2 라우터는 또한, (i) 하나 또는 하나를 초과하는 마스터 지적 재산(IP) 코어들과 (ii) 하나 또는 하나를 초과하는 슬래이브 IP 코어들로부터 임의의 상기 인입 플릿들을 버퍼링(buffer)하도록 요구된 라우팅과 흐름 제어 기능들을 구현하도록 구성되며,
상기 제1 라우터는 마스터 IP 코어 발생 플릿들을 다루도록 구성되며 상기 제2 라우터는 슬래이브 IP 코어 발생 플릿들을 다루도록 구성되는, 장치. - 제1항에 있어서,
상기 제1 전용 스토리지 메커니즘에 대한 스토리지의 최소량은 상기 제1 입력 VC와 연관된 폭 변환 비에 기초하도록 구성되고,
상기 제1 입력 VC는 상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘과 연관되고,
상기 다운스트림 라우터의 상기 제1 입력 VC와 상기 업스트림 라우터의 제1 출력 VC 사이에 협 투 광 링크 폭 변환(narrow to wide link width conversion)이 존재할 때, 상기 제1 입력 VC에 대해 최대 협 투 광 링크 폭 변환을 지원하기 위해 스토리지의 적어도 상기 최소량이 존재되어야 하는, 장치. - 명령들을 포함하는 비-일시적인 컴퓨터 판독가능 저장 매체에 있어서,
기계에 의해 실행될 때, 상기 명령들은 상기 기계로 하여금:
집적 회로를 위한 네트워크 온 칩(NoC)의 패브릭 내의 둘 또는 둘을 초과하는 라우터들에 의해, 상기 NoC의 상기 패브릭의 인터-라우터 물리적 링크들을 따라 소스 위치들로부터 목적지 위치들로 플릿들을 전파하는 것으로서, 상기 둘 또는 둘을 초과하는 라우터들에 적어도 업스트림 라우터와 다운스트림 라우터를 포함시키고,
상기 플릿들은 인입 플릿들과 인출 플릿들을 포함하고;
상기 라우터들의 각각은 하나 또는 하나를 초과하는 입력 포트들과 하나 또는 하나를 초과하는 출력 포트들을 가지며,
상기 다운스트림 라우터는 각각의 입력 포트에 대해 둘 또는 둘을 초과하는 입력 가상 채널들(VCs)을 갖는, 상기 목적지 위치들로 플릿들을 전파하고,
제1 입력 포트에 대한 제1 입력 VC를 상기 제1 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제1 전용 스토리지 메커니즘과 연관시키고,
상기 제1 입력 포트에 대한 제2 입력 VC를 상기 제2 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제2 전용 스토리지 메커니즘과 연관시키고,
상기 제1 입력 VC와 상기 제2 입력 VC를 상기 제1 입력 포트에 대해 연관된 상기 입력 VC들 모두의 상기 인입 플릿들 사이에서 공유된 제3 공유 스토리지 메커니즘과 연관시키는 상기 명령들을 발생하게 하도록 하고,
상기 업스트림 라우터로부터 상기 제1 입력 VC 내로 수신된 상기 인입 플릿들은 상기 제1 전용 스토리지 메커니즘 내에 충분한 공간이 없을 때 상기 제3 공유 스토리지 메커니즘에 저장되고,
상기 업스트림 라우터는 각각의 출력 포트와 연관된 하나 또는 하나를 초과하는 출력 VC들을 갖고,
상기 출력 VC들의 각각은 상기 다운스트림 라우터로 상기 인출 플릿들을 포워드하도록 구성되고,
상기 출력 VC들의 각각은 각각의 출력 VC의 자신의 크레딧 카운트와 연관되고;
크레딧 로직은 각각의 출력 VC의 연관된 크레딧 카운트에 기초하여 크레딧 발생과 크레딧 추적을 이용하여 상기 다운스트림 라우터로 제1 인출 플릿을 포워드하기 위해 플릿 흐름 제어를 수행하도록 구성되는, 비-일시적인 컴퓨터 판독가능 저장 매체. - 네트워트 온 칩을 통해 통신하기 위한 방법에 있어서:
지적 재산 코어들 사이에서 통신하기 위해 집적 회로를 위한 상기 네트워크 온 칩의 패브릭 내의 둘 또는 둘을 초과하는 라우터들을 이용하는 단계로서,
상기 둘 또는 둘을 초과하는 라우터들은 상기 네트워트 온 칩의 상기 패브릭의 인터-라우터 물리적 링크들을 따라 소스 위치들로부터 목적지 위치들로 플릿들을 전파하도록 구성되고,
상기 둘 또는 둘을 초과하는 라우터들은 적어도 업스트림 라우터와 다운스트림 라우터를 포함하고,
상기 플릿들은 인입 플릿들과 인출 플릿들을 포함하고, 상기 둘 또는 둘을 초과하는 라우터들의 각각은 하나 또는 하나를 초과하는 입력 포트들과 하나 또는 하나를 초과하는 출력 포트들을 가지며,
상기 다운스트림 라우터는 각각의 입력 포트에 대해 둘 또는 둘을 초과하는 입력 가상 채널들(VCs)을 갖는, 상기 둘 또는 둘을 초과하는 라우터들을 이용하는 단계;
제1 입력 VC와 연관된 상기 인입 플릿들을 저장하는 단계로서,
제1 입력 포트에 대한 상기 제1 입력 VC는 상기 제1 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제1 전용 스토리지 메커니즘과 연관되는, 상기 제1 입력 VC와 연관된 상기 인입 플릿들을 저장하는 단계;
상기 제1 입력 VC와 연관된 상기 인입 플릿들을 저장하는 단계로서,
상기 제1 입력 포트에 대한 제2 입력 VC는 상기 제2 입력 VC와 연관된 상기 인입 플릿들만을 위해 예비된 제2 전용 스토리지 메커니즘과 연관되고,
상기 제1 입력 VC와 상기 제2 입력 VC는 상기 제1 입력 포트와 연관된 상기 입력 VC들 모두의 상기 인입 플릿들 사이에서 공유된 제3 공유 스토리지 메커니즘과 연관되고,
상기 업스트림 라우터로부터 상기 제1 입력 VC 내로 수신된 상기 인입 플릿들은, 상기 제1 전용 스토리지 메커니즘 내에 충분한 공간이 없을 때 상기 제3 공유 스토리지 메커니즘에 저장되는, 상기 제1 입력 VC와 연관된 상기 인입 플릿들을 저장하는 단계;
상기 업스트림 라우터의 하나 또는 하나를 초과하는 출력 VC들을 통해 상기 다운스트림 라우터로 상기 인출 플릿들을 포워드하는 단계로서,
상기 하나 또는 하나를 초과하는 출력 VC들의 각각은 각각의 출력 VC의 자신의 크레딧 카운트와 연관되는, 상기 인출 플릿들을 포워드하는 단계; 및
각각의 출력 VC의 연관된 크레딧 카운트에 기초하여 크레딧 발생과 크레딧 추적을 이용하여 상기 다운스트림 라우터로 제1 인출 플릿을 포워드하기 위해 플릿 흐름 제어를 수행하는 단계를 포함하는, 방법. - 제10항에 있어서,
상기 다운스트림 라우터가, 다른 플릿을 수신하기 위해 상기 제1 입력 VC에 대해 상기 인입 플릿들만을 위해 예비된 상기 제1 전용 스토리지 메커니즘과 상기 입력 VC들 모두의 상기 인입 플릿들 사이에 공유된 상기 제3 공유 스토리지 메커니즘 사이에 충분한 스토리지 용량을 가질 때, 상기 제1 입력 VC에 대해 상기 업스트림 라우터에 포지티브 크레딧 카운트를 표시하는 단계, 및
상기 제1 입력 포트의 상기 제1 입력 VC 내의 제1 인입 플릿이 상기 업스트림 라우터의 제1 출력 VC로부터 상기 다운스트림 라우터로 포워드될 때, 상기 업스트림 라우터의 상기 제1 출력 VC의 1만큼씩 상기 포지티브 크레딧 카운트를 감소시키는 단계를 더 포함하고,
제2 플릿이 상기 다운스트림 라우터를 떠날 때, 상기 포지티브 크레딧 카운트는 상기 업스트림 라우터의 상기 제1 출력 VC에 대해 1만큼씩 증가되는, 방법. - 제10항에 있어서,
0이 아닌 크레딧 카운트를 갖는 상기 출력 VC들만이 상기 다운스트림 라우터로 상기 인출 플릿들을 포워드하게 허용되도록 상기 제1 입력 포트에 연결된 각각의 출력 VC의 크레딧 용법의 추적을 계속하는 단계, 및
상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘의 점유 상태를 모니터하고 상기 인입 플릿들이 상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘에서 벗어날 때 크레딧들을 발생하는 단계를 더 포함하는, 방법. - 제10항에 있어서,
0인 크레딧들이 상기 제1 입력 VC에 대해 존재할 때, 상기 다운스트림 라우터의 상기 제1 입력 VC이 상기 제1 입력 VC에 대한 상기 제1 전용 스토리지 메커니즘과 상기 둘 또는 둘을 초과하는 입력 VC들 모두 사이에 공유된 상기 제3 공유 스토리지 메커니즘 둘 모두에 완전히 점유됨을 표시하는 단계를 더 포함하고, 상기 다운스트림 라우터는 포지티브 크레딧들이 상기 제2 입력 VC에 대해 여전히 존재할 때, 상기 제1 입력 VC에 대해 상기 업스트림 라우터로부터 임의의 다른 플릿들을 수신하도록 준비되지 않지만 상기 제2 입력 VC에 대해 하나 또는 하나를 초과하는 플릿들을 수신할 수 있는, 방법. - 제10항에 있어서,
상기 업스트림 라우터의 상기 하나 또는 하나를 초과하는 출력 포트와 연관된 제1 출력 VC로부터 상기 인입 플릿들을 포워드하기 위한 요청을 상기 제1 입력 VC로부터 수신하는 단계로서,
상기 하나 또는 하나를 초과하는 출력 포트는 복수의 출력 VC들과 연관되는, 상기 인입 플릿들을 포워드하기 위한 요청을 상기 제1 입력 VC로부터 수신하는 단계;
어떤 플릿이 입력 VC 중재의 승자 플릿으로서 선택되는지를 결정하기 위해 상기 플릿들을 포워드하도록 다른 입력 VC들로부터 다른 요청들과 함께 상기 플릿들을 포워드하기 위한 상기 요청을 상기 제1 입력 VC로부터 중재하는 단계; 및
상기 제1 입력 VC로 상기 입력 VC 중재의 상기 승자 플릿을 포워드하는 단계를 더 포함하는, 방법. - 제10항에 있어서,
상기 제1 입력 포트와 연관된 상기 입력 VC들 모두를 관리하며 상기 제1 전용 스토리지 메커니즘, 상기 제2 전용 스토리지 메커니즘 및 상기 제3 공유 스토리지 메커니즘을 포함하는 다양한 스토리지 메커니즘 내에 상기 인입 플릿들을 저장하는 단계; 및
상기 인입 플릿들의 헤더 플릿 내의 라우팅 필드를 검사하고 상기 인입 플릿들이 제1 라우터 내에 라우트될 상기 다운스트림 라우터의 제1 출력 VC와 제1 출력 포트를 결정하는 단계를 더 포함하는, 방법. - 제10항에 있어서,
상기 플릿들이 하나의 라우터로부터 다른 라우터로 전파하는 것과 같은 파이프라인 방식으로 그리고 상기 패브릭을 통해 상기 인입 플릿들을 처리하는 단계, 및
(i) 하나 또는 하나를 초과하는 마스터 지적 재산(IP) 코어들과 (ii) 하나 또는 하나를 초과하는 슬래이브 IP 코어들로부터 임의의 상기 인입 플릿들을 버퍼링하도록 요구된 라우팅과 흐름 제어 기능들을 구현하는 단계를 더 포함하고,
제1 라우터는 마스터 IP 코어 발생 플릿들을 다루도록 구성되며 제2 라우터는 슬래이브 IP 코어 발생 플릿들을 다루도록 구성되는, 방법. - 제10항에 있어서,
상기 제1 전용 스토리지 메커니즘에 대한 스토리지의 최소량은 상기 제1 입력 VC와 연관된 폭 변환 비에 기초하도록 구성되고,
상기 제1 입력 VC는 상기 제1 전용 스토리지 메커니즘과 상기 제3 공유 스토리지 메커니즘과 연관되고,
상기 다운스트림 라우터의 상기 제1 입력 VC와 상기 업스트림 라우터의 제1 출력 VC 사이에 협 투 광 링크 폭 변환이 존재할 때, 상기 제1 입력 VC에 대해 최대 협 투 광 링크 폭 변환을 지원하기 위해 스토리지의 적어도 상기 최소량이 존재되어야 하는, 방법. - 명령들을 포함하는 비-일시적인 컴퓨터 판독가능 저장 매체로서,
기계에 의해 실행될 때, 상기 명령들은 상기 기계로 하여금 제10항의 상기 NoC를 통해 통신하기 위한 상기 방법의 동작을 발생하게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/219,339 | 2011-08-26 | ||
US13/219,339 US8711867B2 (en) | 2011-08-26 | 2011-08-26 | Credit flow control scheme in a router with flexible link widths utilizing minimal storage |
PCT/US2012/052288 WO2013032910A1 (en) | 2011-08-26 | 2012-08-24 | Credit flow control scheme in a router with flexible link widths utilizing minimal storage |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008012A Division KR102008741B1 (ko) | 2011-08-26 | 2012-08-24 | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200091339A KR20200091339A (ko) | 2020-07-30 |
KR102209875B1 true KR102209875B1 (ko) | 2021-02-01 |
Family
ID=47743688
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197022805A KR102209875B1 (ko) | 2011-08-26 | 2012-08-24 | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 |
KR1020147008012A KR102008741B1 (ko) | 2011-08-26 | 2012-08-24 | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008012A KR102008741B1 (ko) | 2011-08-26 | 2012-08-24 | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8711867B2 (ko) |
EP (1) | EP2748708A4 (ko) |
KR (2) | KR102209875B1 (ko) |
WO (1) | WO2013032910A1 (ko) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8798038B2 (en) | 2011-08-26 | 2014-08-05 | Sonics, Inc. | Efficient header generation in packetized protocols for flexible system on chip architectures |
US8711867B2 (en) | 2011-08-26 | 2014-04-29 | Sonics, Inc. | Credit flow control scheme in a router with flexible link widths utilizing minimal storage |
WO2013085501A1 (en) | 2011-12-07 | 2013-06-13 | Intel Corporation | Multiple transaction data flow control unit for high-speed interconnect |
FR2990535A1 (fr) * | 2012-05-14 | 2013-11-15 | St Microelectronics Grenoble 2 | Procede de transmission de donnees dans un systeme sur puce |
KR101380452B1 (ko) * | 2012-08-14 | 2014-04-14 | 한국과학기술원 | 버퍼리스 온칩 네트워크의 전력 소모 감소를 위한 목적지 기반 크레딧 흐름 제어 방법 및 장치 |
US9244880B2 (en) | 2012-08-30 | 2016-01-26 | Netspeed Systems | Automatic construction of deadlock free interconnects |
US8885510B2 (en) | 2012-10-09 | 2014-11-11 | Netspeed Systems | Heterogeneous channel capacities in an interconnect |
US9507746B2 (en) * | 2012-10-22 | 2016-11-29 | Intel Corporation | Control messaging in multislot link layer flit |
US8601423B1 (en) | 2012-10-23 | 2013-12-03 | Netspeed Systems | Asymmetric mesh NoC topologies |
US9253085B2 (en) | 2012-12-21 | 2016-02-02 | Netspeed Systems | Hierarchical asymmetric mesh with virtual routers |
US9185026B2 (en) | 2012-12-21 | 2015-11-10 | Netspeed Systems | Tagging and synchronization for fairness in NOC interconnects |
US9774498B2 (en) | 2012-12-21 | 2017-09-26 | Netspeed Systems | Hierarchical asymmetric mesh with virtual routers |
US9007920B2 (en) * | 2013-01-18 | 2015-04-14 | Netspeed Systems | QoS in heterogeneous NoC by assigning weights to NoC node channels and using weighted arbitration at NoC nodes |
US9009648B2 (en) | 2013-01-18 | 2015-04-14 | Netspeed Systems | Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of IP cores using high level specification |
US9130856B2 (en) * | 2013-01-28 | 2015-09-08 | Netspeed Systems | Creating multiple NoC layers for isolation or avoiding NoC traffic congestion |
US8934377B2 (en) | 2013-03-11 | 2015-01-13 | Netspeed Systems | Reconfigurable NoC for customizing traffic and optimizing performance after NoC synthesis |
US9237093B2 (en) * | 2013-03-14 | 2016-01-12 | Silicon Graphics International Corp. | Bandwidth on-demand adaptive routing |
US9160627B2 (en) | 2013-04-04 | 2015-10-13 | Netspeed Systems | Multiple heterogeneous NoC layers |
US9571402B2 (en) | 2013-05-03 | 2017-02-14 | Netspeed Systems | Congestion control and QoS in NoC by regulating the injection traffic |
US9185023B2 (en) | 2013-05-03 | 2015-11-10 | Netspeed Systems | Heterogeneous SoC IP core placement in an interconnect to optimize latency and interconnect performance |
US10027433B2 (en) | 2013-06-19 | 2018-07-17 | Netspeed Systems | Multiple clock domains in NoC |
US9781043B2 (en) | 2013-07-15 | 2017-10-03 | Netspeed Systems | Identification of internal dependencies within system components for evaluating potential protocol level deadlocks |
US9471726B2 (en) | 2013-07-25 | 2016-10-18 | Netspeed Systems | System level simulation in network on chip architecture |
US9054977B2 (en) | 2013-08-05 | 2015-06-09 | Netspeed Systems | Automatic NoC topology generation |
US9473388B2 (en) | 2013-08-07 | 2016-10-18 | Netspeed Systems | Supporting multicast in NOC interconnect |
US9223711B2 (en) | 2013-08-13 | 2015-12-29 | Netspeed Systems | Combining associativity and cuckoo hashing |
US9378168B2 (en) * | 2013-09-18 | 2016-06-28 | International Business Machines Corporation | Shared receive queue allocation for network on a chip communication |
US20150103822A1 (en) * | 2013-10-15 | 2015-04-16 | Netspeed Systems | Noc interface protocol adaptive to varied host interface protocols |
US9294354B2 (en) | 2013-10-24 | 2016-03-22 | Netspeed Systems | Using multiple traffic profiles to design a network on chip |
US9830265B2 (en) | 2013-11-20 | 2017-11-28 | Netspeed Systems, Inc. | Reuse of directory entries for holding state information through use of multiple formats |
US9158882B2 (en) * | 2013-12-19 | 2015-10-13 | Netspeed Systems | Automatic pipelining of NoC channels to meet timing and/or performance |
US9699079B2 (en) * | 2013-12-30 | 2017-07-04 | Netspeed Systems | Streaming bridge design with host interfaces and network on chip (NoC) layers |
US9473415B2 (en) * | 2014-02-20 | 2016-10-18 | Netspeed Systems | QoS in a system with end-to-end flow control and QoS aware buffer allocation |
US9319232B2 (en) | 2014-04-04 | 2016-04-19 | Netspeed Systems | Integrated NoC for performing data communication and NoC functions |
US9762474B2 (en) | 2014-04-07 | 2017-09-12 | Netspeed Systems | Systems and methods for selecting a router to connect a bridge in the network on chip (NoC) |
US9244845B2 (en) | 2014-05-12 | 2016-01-26 | Netspeed Systems | System and method for improving snoop performance |
US9473359B2 (en) | 2014-06-06 | 2016-10-18 | Netspeed Systems | Transactional traffic specification for network-on-chip design |
US9535848B2 (en) | 2014-06-18 | 2017-01-03 | Netspeed Systems | Using cuckoo movement for improved cache coherency |
US10528682B2 (en) | 2014-09-04 | 2020-01-07 | Netspeed Systems | Automatic performance characterization of a network-on-chip (NOC) interconnect |
US9608935B2 (en) * | 2014-09-08 | 2017-03-28 | Qualcomm Technologies, Inc. | Tunneling within a network-on-chip topology |
US9742630B2 (en) | 2014-09-22 | 2017-08-22 | Netspeed Systems | Configurable router for a network on chip (NoC) |
US9477280B1 (en) | 2014-09-24 | 2016-10-25 | Netspeed Systems | Specification for automatic power management of network-on-chip and system-on-chip |
US10042404B2 (en) | 2014-09-26 | 2018-08-07 | Netspeed Systems | Automatic generation of power management sequence in a SoC or NoC |
US9571341B1 (en) | 2014-10-01 | 2017-02-14 | Netspeed Systems | Clock gating for system-on-chip elements |
US9755983B1 (en) * | 2014-10-22 | 2017-09-05 | Netronome Systems, Inc. | Minipacket flow control |
US9529400B1 (en) | 2014-10-29 | 2016-12-27 | Netspeed Systems | Automatic power domain and voltage domain assignment to system-on-chip agents and network-on-chip elements |
TWI531187B (zh) * | 2014-11-24 | 2016-04-21 | 財團法人工業技術研究院 | 晶片上網路之時序功率估算裝置與方法 |
US9954792B2 (en) * | 2014-12-20 | 2018-04-24 | Intel Corporation | Shared flow control credits |
US9660942B2 (en) * | 2015-02-03 | 2017-05-23 | Netspeed Systems | Automatic buffer sizing for optimal network-on-chip design |
US9444702B1 (en) | 2015-02-06 | 2016-09-13 | Netspeed Systems | System and method for visualization of NoC performance based on simulation output |
US9928204B2 (en) | 2015-02-12 | 2018-03-27 | Netspeed Systems, Inc. | Transaction expansion for NoC simulation and NoC design |
US9568970B1 (en) | 2015-02-12 | 2017-02-14 | Netspeed Systems, Inc. | Hardware and software enabled implementation of power profile management instructions in system on chip |
US10050843B2 (en) | 2015-02-18 | 2018-08-14 | Netspeed Systems | Generation of network-on-chip layout based on user specified topological constraints |
US10348563B2 (en) | 2015-02-18 | 2019-07-09 | Netspeed Systems, Inc. | System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology |
US9864728B2 (en) | 2015-05-29 | 2018-01-09 | Netspeed Systems, Inc. | Automatic generation of physically aware aggregation/distribution networks |
US9825809B2 (en) | 2015-05-29 | 2017-11-21 | Netspeed Systems | Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip |
US10152112B2 (en) | 2015-06-10 | 2018-12-11 | Sonics, Inc. | Power manager with a power switch arbitrator |
US10218580B2 (en) | 2015-06-18 | 2019-02-26 | Netspeed Systems | Generating physically aware network-on-chip design from a physical system-on-chip specification |
WO2017052664A1 (en) * | 2015-09-26 | 2017-03-30 | Intel Corporation | Coordinating width changes for an active network link |
US20170187579A1 (en) * | 2015-12-24 | 2017-06-29 | Eric R. Borch | Maximizing network fabric performance via fine-grained router link power management |
SG10201600224SA (en) * | 2016-01-12 | 2017-08-30 | Huawei Int Pte Ltd | Dedicated ssr pipeline stage of router for express traversal (extra) noc |
US10075383B2 (en) * | 2016-03-30 | 2018-09-11 | Advanced Micro Devices, Inc. | Self-timed router with virtual channel control |
US10452124B2 (en) | 2016-09-12 | 2019-10-22 | Netspeed Systems, Inc. | Systems and methods for facilitating low power on a network-on-chip |
US20180159786A1 (en) * | 2016-12-02 | 2018-06-07 | Netspeed Systems, Inc. | Interface virtualization and fast path for network on chip |
US10721185B2 (en) | 2016-12-06 | 2020-07-21 | Hewlett Packard Enterprise Development Lp | Age-based arbitration circuit |
US10237198B2 (en) | 2016-12-06 | 2019-03-19 | Hewlett Packard Enterprise Development Lp | Shared-credit arbitration circuit |
US10944694B2 (en) | 2016-12-06 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Predictive arbitration circuit |
US10452573B2 (en) | 2016-12-06 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Scripted arbitration circuit |
US10313269B2 (en) | 2016-12-26 | 2019-06-04 | Netspeed Systems, Inc. | System and method for network on chip construction through machine learning |
US10063496B2 (en) | 2017-01-10 | 2018-08-28 | Netspeed Systems Inc. | Buffer sizing of a NoC through machine learning |
US10084725B2 (en) | 2017-01-11 | 2018-09-25 | Netspeed Systems, Inc. | Extracting features from a NoC for machine learning construction |
US10469337B2 (en) | 2017-02-01 | 2019-11-05 | Netspeed Systems, Inc. | Cost management against requirements for the generation of a NoC |
US10298485B2 (en) | 2017-02-06 | 2019-05-21 | Netspeed Systems, Inc. | Systems and methods for NoC construction |
US11231769B2 (en) | 2017-03-06 | 2022-01-25 | Facebook Technologies, Llc | Sequencer-based protocol adapter |
US10921874B2 (en) | 2017-03-06 | 2021-02-16 | Facebook Technologies, Llc | Hardware-based operating point controller for circuit regions in an integrated circuit |
US10896476B2 (en) | 2018-02-22 | 2021-01-19 | Netspeed Systems, Inc. | Repository of integration description of hardware intellectual property for NoC construction and SoC integration |
US10547514B2 (en) | 2018-02-22 | 2020-01-28 | Netspeed Systems, Inc. | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation |
US11144457B2 (en) | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
US10983910B2 (en) | 2018-02-22 | 2021-04-20 | Netspeed Systems, Inc. | Bandwidth weighting mechanism based network-on-chip (NoC) configuration |
US11176302B2 (en) | 2018-02-23 | 2021-11-16 | Netspeed Systems, Inc. | System on chip (SoC) builder |
US11023377B2 (en) | 2018-02-23 | 2021-06-01 | Netspeed Systems, Inc. | Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA) |
IL315283A (en) | 2018-03-30 | 2024-10-01 | Google Llc | Mediation parts of transactions in ritualistic channels attributed to connection |
US20190302861A1 (en) | 2018-03-30 | 2019-10-03 | Provino Technologies, Inc. | Protocol level control for system on a chip (soc) agent reset and power management |
FR3081581B1 (fr) * | 2018-05-22 | 2020-09-04 | Bull Sas | Procede d'envoi de donnees, programme d'ordinateur et systeme associes |
US10693811B2 (en) | 2018-09-28 | 2020-06-23 | Hewlett Packard Enterprise Development Lp | Age class based arbitration |
US10944693B2 (en) * | 2018-11-13 | 2021-03-09 | Advanced Micro Devices, Inc. | Routing flits in a network-on-chip based on operating states of routers |
WO2020236272A1 (en) * | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating fine-grain flow control in a network interface controller (nic) |
US10860762B2 (en) | 2019-07-11 | 2020-12-08 | Intel Corpration | Subsystem-based SoC integration |
CN112003800B (zh) * | 2020-08-10 | 2022-05-27 | 牛芯半导体(深圳)有限公司 | 不同带宽端口报文交换传输方法和装置 |
US11362939B2 (en) * | 2020-08-31 | 2022-06-14 | Micron Technology, Inc. | Flow control for a multiple flow control unit interface |
US11580044B2 (en) | 2020-08-31 | 2023-02-14 | Micron Technology, Inc. | Network credit return mechanisms |
US11588745B2 (en) | 2020-08-31 | 2023-02-21 | Micron Technology, Inc. | Early credit return for credit-based flow control |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030118048A1 (en) | 1997-08-22 | 2003-06-26 | Avici Systems | Internet switch router |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5841775A (en) * | 1996-07-16 | 1998-11-24 | Huang; Alan | Scalable switching network |
US5948089A (en) | 1997-09-05 | 1999-09-07 | Sonics, Inc. | Fully-pipelined fixed-latency communications system with a real time dynamic bandwidth allocation |
US6359861B1 (en) * | 1997-10-08 | 2002-03-19 | Massachusetts Institute Of Technology | Method for scheduling transmissions in a buffered switch |
US6876653B2 (en) * | 1998-07-08 | 2005-04-05 | Broadcom Corporation | Fast flexible filter processor based architecture for a network device |
US6182183B1 (en) | 1998-11-13 | 2001-01-30 | Sonics, Inc. | Communications system and method with multilevel connection identification |
US7251256B1 (en) * | 2000-05-18 | 2007-07-31 | Luminous Networks, Inc. | Synchronization of asynchronous networks using media access control (MAC) layer synchronization symbols |
US6330225B1 (en) | 2000-05-26 | 2001-12-11 | Sonics, Inc. | Communication system and method for different quality of service guarantees for different data flows |
US7325221B1 (en) | 2000-08-08 | 2008-01-29 | Sonics, Incorporated | Logic system with configurable interface |
US7039058B2 (en) * | 2000-09-21 | 2006-05-02 | Avici Systems, Inc. | Switched interconnection network with increased bandwidth and port count |
US7165094B2 (en) | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US20030004699A1 (en) | 2001-06-04 | 2003-01-02 | Choi Charles Y. | Method and apparatus for evaluating an integrated circuit model |
US7093024B2 (en) * | 2001-09-27 | 2006-08-15 | International Business Machines Corporation | End node partitioning using virtualization |
US6578117B2 (en) | 2001-10-12 | 2003-06-10 | Sonics, Inc. | Method and apparatus for scheduling requests using ordered stages of scheduling criteria |
US6617877B1 (en) * | 2002-03-01 | 2003-09-09 | Xilinx, Inc. | Variable data width operation in multi-gigabit transceivers on a programmable logic device |
US8223778B2 (en) * | 2003-11-19 | 2012-07-17 | Intel Corporation | Routing table architecture |
JP2008522526A (ja) * | 2004-12-01 | 2008-06-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ・トラフィックを同期化するデータ処理システム及び方法 |
US7136954B2 (en) * | 2005-01-31 | 2006-11-14 | International Business Machines Corporation | Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism |
US8638665B2 (en) | 2008-04-30 | 2014-01-28 | Nec Corporation | Router, information processing device having said router, and packet routing method |
EP2390792B1 (en) * | 2010-05-27 | 2014-04-16 | STMicroelectronics (Grenoble 2) SAS | Communication system and method |
US8711867B2 (en) | 2011-08-26 | 2014-04-29 | Sonics, Inc. | Credit flow control scheme in a router with flexible link widths utilizing minimal storage |
-
2011
- 2011-08-26 US US13/219,339 patent/US8711867B2/en active Active
-
2012
- 2012-08-24 EP EP12826809.1A patent/EP2748708A4/en not_active Withdrawn
- 2012-08-24 KR KR1020197022805A patent/KR102209875B1/ko active IP Right Grant
- 2012-08-24 KR KR1020147008012A patent/KR102008741B1/ko active IP Right Grant
- 2012-08-24 WO PCT/US2012/052288 patent/WO2013032910A1/en active Application Filing
-
2014
- 2014-04-29 US US14/265,037 patent/US9515961B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030118048A1 (en) | 1997-08-22 | 2003-06-26 | Avici Systems | Internet switch router |
Also Published As
Publication number | Publication date |
---|---|
US20140314076A1 (en) | 2014-10-23 |
EP2748708A1 (en) | 2014-07-02 |
US9515961B2 (en) | 2016-12-06 |
KR20200091339A (ko) | 2020-07-30 |
KR20140063736A (ko) | 2014-05-27 |
US8711867B2 (en) | 2014-04-29 |
US20130051397A1 (en) | 2013-02-28 |
WO2013032910A1 (en) | 2013-03-07 |
EP2748708A4 (en) | 2015-04-29 |
KR102008741B1 (ko) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102209875B1 (ko) | 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식 | |
US8798038B2 (en) | Efficient header generation in packetized protocols for flexible system on chip architectures | |
US8514889B2 (en) | Use of common data format to facilitate link width conversion in a router with flexible link widths | |
US10664421B1 (en) | Reordering responses in a high performance on-chip network | |
KR101467932B1 (ko) | 상호접속부에서 멀티-쓰레드 오더링된 큐들에 대한 공유 저장기 | |
US9495290B2 (en) | Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering | |
US20150026494A1 (en) | Intelligent mesochronous synchronizer | |
JP6353084B2 (ja) | ネットワーク・オン・チップ設計向けのトランザクショナル・トラフィック仕様 | |
KR101579897B1 (ko) | 각각의 스레드 및 태그에 대한 메모리 액세스를 동시에 수행하기 위한 장치 및 방법 | |
US8484397B1 (en) | Various methods and apparatus for a memory scheduler with an arbiter | |
US20110213949A1 (en) | Methods and apparatus for optimizing concurrency in multiple core systems | |
US20100211935A1 (en) | Method and apparatus for establishing a quality of service model | |
US9910454B2 (en) | Synchronizer with a timing closure enhancement | |
Indrusiak et al. | Applying UML interactions and actor-oriented simulation to the design space exploration of network-on-chip interconnects | |
Adiga | NoC characterization framework for design space exploration | |
Gudla | Design and implementation of clocked Open Core Protocol interfaces for Intellectual Property cores and on-chip network fabric | |
Schuermans et al. | Network on Chip Experiments | |
Sullerey | Design Guidelines for Formal Verification | |
Jerger et al. | Modeling and Evaluation | |
Mirza | Extended Junction Based Source Routing Technique for Large Mesh Topology Network on Chip Platforms | |
Dennen | Control Plane for Embedded Digital Signal Processing | |
Mori et al. | NoC emulation framework based on Arteris NoC solution for multiprocessor system-on-chip | |
Li et al. | Round-trip latency prediction for memory access fairness in mesh-based many-core architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |