KR101690568B1 - 네트워크 온 칩 소켓 프로토콜 - Google Patents

네트워크 온 칩 소켓 프로토콜 Download PDF

Info

Publication number
KR101690568B1
KR101690568B1 KR1020157009635A KR20157009635A KR101690568B1 KR 101690568 B1 KR101690568 B1 KR 101690568B1 KR 1020157009635 A KR1020157009635 A KR 1020157009635A KR 20157009635 A KR20157009635 A KR 20157009635A KR 101690568 B1 KR101690568 B1 KR 101690568B1
Authority
KR
South Korea
Prior art keywords
transaction
delete delete
initiator
interface unit
context array
Prior art date
Application number
KR1020157009635A
Other languages
English (en)
Other versions
KR20150063433A (ko
Inventor
필리프 보우차드
장-자크 르클레어
보리스 보우틸리에르
Original Assignee
퀄컴 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/626,758 external-priority patent/US9471538B2/en
Priority claimed from US13/626,766 external-priority patent/US9225665B2/en
Application filed by 퀄컴 테크놀로지스, 인크. filed Critical 퀄컴 테크놀로지스, 인크.
Publication of KR20150063433A publication Critical patent/KR20150063433A/ko
Application granted granted Critical
Publication of KR101690568B1 publication Critical patent/KR101690568B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/403Bus networks with centralised control, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/1735Network adapters, e.g. SCI, Myrinet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • H04L29/10

Abstract

본 발명은, 인터페이스 프로토콜이 요청 및 응답 채널들 각각에서 트랜잭션 식별자 신호를 갖는 트랜잭션 인터페이스 프로토콜이다. 트랜잭션 인터페이스 프로토콜은, 트랜잭션 인터페이스를 통해 직접 접속되는 타겟 네트워크 인터페이스 유닛(NIU) 마스터와 개시자 NIU 슬레이브 사이에 사용된다. 타겟 NIU 응답 채널은, 트랜잭션 ID 신호를 사용하여, 대응하는 요청과 연관된 컨텍스트 어레이에서의 엔트리를 식별한다. 타겟 NIU와 개시자 NIU의 커플링은, 다수의 네트워크-온-칩(NoC들)을 포함하는 온-칩 상호접속부의 형성을 가능하게 하며, 여기서, 상호접속부의 토폴로지는 더 간단하고, 더 작고, 더 고속이며, 더 낮은 지연 시간을 갖는다.

Description

네트워크 온 칩 소켓 프로토콜{NETWORK ON A CHIP SOCKET PROTOCOL}
[0001] 본 발명은 일반적으로 반도체 기술 분야에 관한 것으로, 더 상세하게는 시스템 온 칩을 위한 네트워크-온-칩(network-on-chip) 상호접속부들에 관한 것이다.
[0002] 네트워크-온-칩(NoC)은, 소켓 인터페이스들 사이에서 판독 및 기입 트랜잭션들을 전달하기 위한 패킷 기반 상호접속이다. NOC는, 적어도 하나의 개시자(initiator) 네트워크 인터페이스 유닛(NIU) 및 적어도 하나의 타겟(target) NIU를 포함한다. 개시자 NIU들은, 개시자 소켓 인터페이스에서의 트랜잭션 요청들을 요청 패킷들로 변환하고, 응답 패킷들을 개시자 소켓 인터페이스에서의 트랜잭션 응답들로 변환한다. 타겟 NIU들은, 요청 패킷들을 타겟 소켓 인터페이스에서의 트랜잭션 요청들로 변환하고, 타겟 소켓 인터페이스에서의 트랜잭션 응답들을 응답 패킷들로 변환한다. 개시자 NIU들 및 타겟 NIU들은, 스위치들의 토폴로지(topology)를 통해 접속된다. 패킷들은, 개시자 ID, 타겟 ID, 트랜잭션 시퀀스 ID, 및 트랜잭션 태그 중 몇몇 또는 전부를 인코딩하는 시퀀스 ID로 알려진 필드를 포함할 수도 있다.
[0003] 트랜잭션 응답들을 수신할 시, 종래의 타겟 NIU들은, 응답 패킷 시퀀스 ID에 매칭하는 체인 내의 가장 오래된 엔트리를 추론하는 로직 및 모든 컨텍스트 어레이 엔트리들의 탐색을 요구하는 컨텍스트 어레이 검색을 수행한다. 이것은, 간단한 인덱스보다 훨씬 더 많은 로직 실리콘 영역을 요구한다. 더 중요하게, 체인형 리스트 검색을 위한 로직은, 로직 레벨들에서 더 깊으며, 그에 따라, 더 길고, 더 느린 타이밍 경로들을 갖는다. 따라서, 요구되는 것은, 2개의 NoC들을 접속시키기 위한 더 고속의 타이밍 및 더 적은 로직을 갖는 시스템 및 방법이다.
[0004] 본 발명의 다양한 양상들 및 교시들에 따르면, 트랜잭션 인터페이스 프로토콜을 사용하여 더 적은 로직 및 더 고속의 타이밍 경로들로 2개의 NoC들을 접속시키는 시스템 및 방법이 제공된다. 본 발명의 다양한 양상들에 따르면, 인터페이스 프로토콜이 요청 채널 및 응답 채널 각각에서 트랜잭션 ID 신호를 갖는 트랜잭션 인터페이스 프로토콜이 기재된다. 프로토콜은, 트랜잭션 인터페이스를 통해 직접 접속된 타겟 NIU 마스터와 개시자 NIU 슬레이브 사이에서 사용된다. 타겟 NIU 응답 채널은, 트랜잭션 ID 신호를 사용하여 대응하는 요청과 연관된 컨텍스트 어레이 내의 엔트리를 식별한다. 타겟 NIU와 개시자 NIU의 커플링은, 상호접속부의 토폴로지가 더 간단하고, 더 작고, 더 고속이며, 더 낮은 지연 시간(latency)을 갖는 다수의 NoC들을 포함하는 온-칩(on-chip) 상호접속부의 형성을 가능하게 한다.
[0005] 도 1은 풀 칩(full chip) 상호접속부를 도시한다.
[0006] 도 2는 트랜잭션 인터페이스 프로토콜을 도시한다.
[0007] 도 3은 개시자 NIU를 도시한다.
[0008] 도 4는, 에코 필드(echo field)들을 저장하는 타겟 NIU를 도시한다.
[0009] 도 5는 본 발명의 교시들에 따른, 트랜잭션 ID 신호를 갖는 트랜잭션 인터페이스 프로토콜을 도시한다.
[0010] 도 6은 본 발명의 교시들에 따른, 트랜잭션 ID를 저장하는 개시자 NIU를 도시한다.
[0011] 도 7은, 어떠한 컨텍스트 할당 유닛, 분할 유닛, 컨텍스트 어레이, 또는 재연관(reassociation) 유닛도 갖지 않는 본 발명의 교시들에 따른 개시자 NIU를 도시한다.
[0012] 도 8은 본 발명의 교시들에 따른 타겟 NIU를 도시한다.
[0013] 도 9는 본 발명의 교시들에 따른 NoC를 도시한다.
[0014] 도 10은, 타겟 NIU의 일 실시예의 동작의 방법에 대한 흐름도를 도시한다.
[0015] 도 1은, 제 1 NoC(120) 및 제 2 NoC(140)를 포함하는 풀 칩 상호접속부를 도시한다. NoC(120)는, 소켓 인터페이스(112)를 통해 개시자(110)에 커플링되는 개시자 NIU(122)를 포함한다. 제 1 NoC(120)는 개시자(110)에 커플링된다. NoC(120)는, 소켓 인터페이스(132)를 통해 타겟(130)에 커플링되는 타겟 NIU(124)를 또한 포함한다. NoC(120) 내의 타겟 NIU(126)는, 소켓 인터페이스(160)를 통해 NoC(140) 내의 개시자 NIU(142)에 커플링된다. NoC(140)는, 타겟(150)에 커플링되는 제 1 타겟 NIU(144), 및 타겟(152)에 커플링되는 타겟 NIU(146)를 포함한다.
[0016] NoC는 계층화된 통신을 사용한다. 소켓들은, AMBA(Advanced Microcontroller Bus Architecture) AXI(Advanced eXtensible Interface) 및 OCP(Open Core Protocol)와 같은 트랜잭션 계층 프로토콜을 제시한다. 하나의 트랜잭션 계층 프로토콜이 도 2에 도시된다. 트랜잭션 계층 프로토콜은, 연산코드(opcode), 어드레스, 기입 데이터, 버스트 길이(burst length), 및 시퀀스 ID에 대한 신호들을 갖는 요청 채널(200)을 갖는다. 프로토콜은, 데이터 및 시퀀스 ID에 대한 신호들을 갖는 응답 채널(210)을 또한 갖는다. 전달 계층 프로토콜은, 트랜잭션 정보를, 스위치들의 토폴로지를 통해 전송되는 하나 또는 그 초과의 패킷들로 캡슐화(encapsulate)한다. 패킷들은, 어드레스 비트(bit)들, 라우트 id(route id), 연산코드, 및 시퀀스 id와 같은 필드들을 가질 수 있는 헤더와 함께 데이터를 전달한다. 물리 계층은, 흐름 제어, 및 패킷 헤더들과 데이터를 전송하는 배선들의 간단한 접속을 구현한다. 물리 계층 프로토콜은, 준비(ready), 유효(valid), 및 데이터와 같은 신호들을 가질 수 있다.
[0017] NIU들은 다음의 기능들을 수행할 수 있다.
[0018] 어드레스 디코딩;
[0019] 컨텍스트 할당;
[0020] 트랜잭션 분할; 및
[0021] 컨텍스트 재연관.
[0022] 본 발명의 일 양상에 따른, 개시자 NIU(300)의 일 실시예가 도 3에 도시된다. 요청들은 소켓 인터페이스 요청 채널(302)을 통해 개시자 NIU(300) 내로 수용된다. 응답들은 소켓 인터페이스 응답 채널(304)을 통해 개시자 NIU(300)에 의해 제시된다. 요청 패킷들은 요청 전달 인터페이스(306) 상에서 전송되고, 응답 패킷들은 응답 전달 인터페이스(308) 상에서 수신된다. 트랜잭션 어드레스들은 디코딩 유닛(310)에서 디코딩되어 패킷 헤더들 내의 라우트 id 필드를 생성한다. 패킷들은 컨텍스트 할당 유닛(312)에서 컨텍스트들과 연관된다. 필요하다면, 트랜잭션들은 패킷 분할 유닛(314)에서 다수의 패킷들로 분할된다. 패킷들은 요청 전달 인터페이스(306) 상에서 전송된다.
[0023] 개시자 NIU(300)는 분할 유닛(314)을 포함한다. 분할 유닛(314)은, 트랜잭션 요청들에 대해, 트랜잭션을 전달하기 위한 다수의 패킷들의 생성을 야기한다. 개시자 유닛(300)은, 원하는 바이트 정렬, 버스트 정렬, 타겟 어드레스 범위 경계들, 어드레스 인터리빙(interleaving), 또는 4KB 정렬 어드레스 경계들에 교차(cross)하지 않기 위한 버스트들의 AXI 요건과 같은 프로토콜 경계 요건들을 보장하기 위해 트랜잭션들을 다수의 패킷들로 분할할 수 있다.
[0024] 컨텍스트 어레이(320)는, 계류(pending) 트랜잭션들에 할당되는 엔트리들을 포함한다. 컨텍스트 어레이(320)가 가득차 있다면, 개시자 NIU(300)는 소켓 인터페이스 요청 채널(302) 상에서 백프레셔(backpressure)를 어서팅(assert)한다. 물리 계층 준비 신호는 디어서팅(deassert)된다. 컨텍스트 어레이(320)는, 다른 정보 중에서도, 각각의 계류 트랜잭션의 시퀀스 id 및 연산코드를 저장한다. 컨텍스트 어레이(320)는 4개의 엔트리들을 가지며, 그에 따라, 최대 4개의 계류 트랜잭션들을 지원한다. 응답 패킷들이 응답 전달 인터페이스(308) 상에서 수신된 경우, 컨텍스트 재연관 유닛(330)은 패킷을 계류 트랜잭션의 컨텍스트와 재연관시킨다. 재연관 유닛(330)에 의한 재연관은, 개시자 소켓 인터페이스의 응답 채널(304) 상의 응답의 시퀀스 ID가, 대응하는 요청의 시퀀스 ID와 매칭되는 것을 보장한다.
[0025] 도 4에서, 개시자 NIU(300)에 대응될 수 있는 타겟 NIU(400)가 도시된다. 요청 패킷들은 요청 전달 인터페이스(402) 상에서 수용되고, 응답 패킷들은 응답 전달 인터페이스(404) 상에서 전송된다. 트랜잭션 요청들은 소켓 인터페이스 요청 채널(406)을 통해 제시되고, 트랜잭션 응답들은 소켓 인터페이스 응답 채널(408)을 통해 NIU에 의해 수용된다. 타겟 NIU(400)는, 컨텍스트 할당 유닛(412), 컨텍스트 어레이(420), 및 컨텍스트 재연관 유닛(430)을 포함한다.
[0026] 이러한 실시예에서, 패킷들의, 그들의 계류 트랜잭션들의 컨텍스트로의 재연관은 간단하다. 패킷 헤더는, 개시자 NIU(300) 내의 할당 유닛(312)에 의해 생성되고, 변경되지 않은 채 타겟 NIU(400)로부터 에코 백(echo back)되는 에코 필드를 포함한다. 에코 필드는 컨텍스트 어레이(320) 내에 인덱스를 저장한다. 컨텍스트 어레이는 테이블 검색으로서 액세스된다. 타겟 NIU(400)로부터의 각각의 트랜잭션이 계류 중인 동안, 에코 필드 E는 타겟 NIU 컨텍스트 어레이(420)에 저장된다. 전달 계층 프로토콜의 일부인 에코 필드는, 트랜잭션에 대한 응답 패킷들의 헤더에 포함된다.
[0027] 타겟 NIU(400) 재연관 유닛(430)은 에코 필드를 인덱싱(index)할 여유(luxury)를 갖지 못한다. 타겟 NIU(400)가 타겟 소켓 인터페이스에서 사용하는 것과 같은 최신 기술 산업 표준 트랜잭션 레벨 프로토콜들은 에코 정보를 포함하지 않는다. 소켓 인터페이스 응답 채널(408) 상의 응답들은, 요청 패킷으로부터 저장된, 즉, 응답 패킷을 형성하기 위해 컨텍스트 어레이(420)에 저장된 헤더 정보와 재연관되어야 한다.
[0028] 타겟 NIU 재연관 유닛(430)은, 응답 패킷의 시퀀스 ID를 갖는 가장 오래된 트랜잭션에 기초하여 적절한 컨텍스트 어레이 엔트리의 검색을 수행해야 한다. 컨텍스트 어레이(420)는, 각각의 시퀀스 ID에 대한 체인을 갖는 체인형 리스트의 계류 트랜잭션들로서 구조화(organize)된다.
[0029] 본 발명의 일 양상이 도 5에 도시된다. 연산코드, 어드레스, 기입 데이터, 버스트 길이, 및 시퀀스 id에 대한 신호들을 포함하는 종래의 트랜잭션 인터페이스는, 부가적인 신호들인 요청 TrID를 갖는 요청 채널(500), 및 응답 TrID를 갖는 응답 채널(510)로 개선된다. TrID 신호들은 트랜잭션 ID를 나타낸다. 이러한 개선된 신호 인터페이스가 개선된 NoC 소켓 프로토콜에 의해 사용된다. 본 발명의 일 실시예에서, 트랜잭션 요청이 제시된 경우, 소켓 인터페이스의 마스터는 TrID 상의 값을 어서팅하고, 트랜잭션 응답을 제시하는 경우, 인터페이스의 슬레이브는 응답 TrID 신호 상에 정확히 동일한 값을 제공한다. 본 발명의 다른 양상에 따르면, 인터페이스의 슬레이브는, 대응하는 값인 요청 TrID 값으로부터 변환된 값을 응답 TrID 신호 상에 제공한다. 변환은, 비트들의 순서 또는 센스(sense)의 변경일 수 있다. 핵심은, 고유 마스터 컨텍스트 어레이 엔트리에 대한 연관성이다.
[0030] 일 실시예에서, 다수의 계류 트랜잭션들 각각은 고유 TrID 값을 갖는다. 다른 실시예에서, TrID 값들은, 다운스트림 버퍼링에도 불구하고 순서대로 실행되어야 하는 트랜잭션들에 대해 재사용된다. 다른 실시예에서, TrID 값들은, 연속적인 트랜잭션들에 대해 비-순차적인 순서로 제공된다.
[0031] 본 발명의 일 실시예에서, 어서팅된 TrID 값은, 업스트림 NoC 내의 패킷 헤더의 필드로부터 맵핑(map)된다. 일 실시예에서, TrID 값은, 다운스트림 NoC 내의 패킷 헤더의 필드로 맵핑된다.
[0032] 최적의 프로토콜 구성은, NoC 마다 그리고 칩 마다 다르다. 본 발명의 일 실시예에서, NoC 소켓 프로토콜은 칩 설계 시에 구성가능하다. 구성 선택사항들은, 다른 것들 중에서도, 요청 및 응답 TrID 신호들의 폭(width)을 포함한다. 레지스터 전송 레벨(register transfer level)(RTL) 언어 로직은 구성 툴에 의해 생성된다. 툴은, 칩 설계자들에 의해, 커스터마이징된 구성들을 생성하고 칩 병합(synthesis)을 위한 RTL 언어 코드를 생성하는데 사용된다.
[0033] 본 발명의 일 양상이 도 6에 도시된다. 요청들은, 소켓 인터페이스 요청 채널(602)을 통해 개시자 NIU(600)내로 수용된다. 응답들은, 소켓 인터페이스 응답 채널(604)을 통해 NIU(600)에 의해 제시된다. 요청 패킷들은 요청 전달 인터페이스(606) 상에서 전송되고, 응답 패킷들은 응답 전달 인터페이스(608) 상에서 수신된다. 트랜잭션 어드레스들은, 디코딩 유닛(D)(610)에서 디코딩되어 패킷 헤더들 내의 라우트 id 필드를 생성한다. 패킷들은, 컨텍스트 할당 유닛(A)(612)에서 컨텍스트들과 연관된다. 필요하다면, 트랜잭션들은, 패킷 분할 유닛(S)(614)에서 다수의 패킷들로 분할된다. 패킷들은 요청 전달 인터페이스(606) 상에서 전송된다.
[0034] 컨텍스트 어레이(620)는, 계류 트랜잭션들에 할당되는 엔트리들을 포함한다. 어레이가 가득차 있다면, 개시자 NIU(600)는 소켓 인터페이스 요청 채널(602) 상에서 백프레셔를 어서팅한다. 그 상태에서, 물리 계층 준비 신호는 디어서팅된다. 컨텍스트 어레이(620)는, 다른 정보 중에서도, 각각의 계류 트랜잭션의 시퀀스 id를 저장한다. 컨텍스트 어레이(620)는 4개의 엔트리들을 가지며, 그에 따라, 최대 4개의 계류 트랜잭션들을 지원한다. 응답 패킷들이 응답 전달 인터페이스(608) 상에서 수신된 경우, 컨텍스트 재연관 유닛(R)(630)은 패킷을 계류 트랜잭션의 컨텍스트와 재연관시킨다.
[0035] 본 발명의 이러한 양상은, 컨텍스트 어레이(620)가 TrID 정보를 전달한다는 점에서 종래의 NIU들의 양상과 달라진다. 일 실시예에서, 컨텍스트 어레이는, 각각의 어레이 엔트리를 갖는 TrID 필드(T)를 저장한다. 필드에 저장된 값은, 트랜잭션 요청이 승인된 시간에서의 소켓 인터페이스 요청 채널(602) 상의 신호의 값이다. 연관된 응답이 소켓 인터페이스 응답 채널 상에서 제시된 경우, 인터페이스 상의 신호는, 응답이 제시된 트랜잭션과 연관된 컨텍스트 어레이 엔트리에서의 TrID 필드로부터 드라이빙된다.
[0036] 일 실시예에서, 컨텍스트 어레이의 TrID 필드는, 연관된 트랜잭션을 전송하기 위해 생성된 패킷들의 헤더에 포함된다. TrID 필드는 패킷 헤더에서 에코 필드를 형성한다.
[0037] 다른 실시예에서, 소켓 인터페이스의 마스터 및 슬레이브 측은 동일한 개수의 컨텍스트들을 가지며, TrID 값들은 컨텍스트마다 고유하다. 마스터로부터의 TrID는, 개시자 NIU 내의 컨텍스트 어레이 내로의 직접 인덱스를 형성한다. 개시자 NIU에 의해 생성된 요청 패킷 헤더 및 개시자 NIU에 의해 수신된 응답 패킷 헤더는, 컨텍스트 어레이 내로의 직접 인덱스인 에코 필드를 갖는다. 이러한 방식에서, TrID 값에 대한 어떠한 저장부도 컨텍스트 어레이 내에 요구되지 않으며, Trid 신호들과 패킷 헤더 에코 필드들 사이에 어떠한 리맵핑(remapping)도 요구되지 않는다.
[0038] 이제 도 7을 참조하면, 개시자 NIU(700)는, 디코딩 유닛(D)(710)에 접속되는 요청 채널(702) 및 응답 채널(704)을 갖는 NoC 투 NoC(NoC to NoC) 소켓을 통해 업스트림 타겟 NIU에 접속된다. 업스트림 타겟 NIU(도시되지 않음)는, 개시자 NIU(700)와 동일한 개수의 컨텍스트들을 지원한다. 이러한 경우에서, 컨텍스트 어레이는 개시자 NIU 내에 필요하지 않다. 컨텍스트들은, 타겟 NIU에서만 관리된다. NoC 소켓 프로토콜의 TrID 값은, NoC 전달 요청 채널(706) 상에서 전송되고 NoC 전달 응답 채널(708) 상에서 수신되는 패킷들의 에코 필드로서 직접 사용된다. 응답 패킷들의 에코 필드는, 소켓 응답 채널(704) 상에서 응답 TrID 신호를 직접 드라이빙한다. 이러한 어레인지먼트(arrangement)는, 그들의 대응하는 요청들에 대해 특정한 어떠한 응답 워드 리어셈블리(reassembly) 또는 다른 응답 속성들도 요구하지 않는 NIU의 구성에 의존한다.
[0039] 개시자 NIU의 최적의 구성은, NoC 마다 그리고 칩 마다 다르다. 본 발명의 일 실시예에서, 개시자 NIU는 칩 설계 시에 구성가능하다. 구성 선탱사항들은, 다른 것들 중에서도, 요청 및 응답 TrID 신호들의 폭, NIU의 컨텍스트 어레이의 TrID 필드의 폭, 컨텍스트 어레이 엔트리들의 개수, 계류 트랜잭션들의 개수, 및 TrID 신호들의 패킷 헤더 에코 필드로의 맵핑을 포함한다. 계류 트랜잭션들의 개수는, 개시자 NIU와 개시자 NIU의 접속 IP 사이와 매칭되어야 한다. 개시자 NIU가 IP보다 더 많은 계류 트랜잭션들을 지원한다면, 개시자 NIU는, 결코 자신의 컨텍스트 어레이 엔트리들 전부를 사용하지는 않을 것이다. 개시자 NIU가 IP보다 더 적은 계류 트랜잭션들을 지원하다면, 개시자 NIU는, NoC에서 네트워크 가용도(abilability)가 존재하더라도 IP 상에 백프레셔를 어서팅할 것이다. 계류 트랜잭션들의 개수가 2의 거듭제곱이 아니라면, 업스트림 타겟 NIU 및 다운스트림 개시자 NIU는 유효 TrID들의 인코딩에 동의해야 한다. TrID들이 트랜잭션들에 고유하고, 고유 TrID 인코딩들의 개수가 계류 트랜잭션들의 최대 개수보다 적다면, 다운스트림 개시자 NIU는, 응답들을 그들의 대응하는 요청들의 TrID에 정확히 재연관시켜야 한다.
[0040] RTL 언어에서 설명된 개시자 NIU 로직은, 구성 툴에 의해 생성된다. 툴은, 칩 설계자들에 의해, 커스터마이징된 구성들을 생성하고 칩 병합을 위한 RTL 언어 코드를 생성하는데 사용된다.
[0041] 병합 및 레이아웃에 대해 유익한 칩 설계 전략은, 하나 또는 그 초과의 클라이언트 NoC들, 및 DDR(double data rate) DRAM(dynamic random access memory)과 같은 하나 또는 그 초과의 메모리들로의 인터리빙된 액세스를 지원하는 하나의 메모리 NoC를 생성하는 것이다. 그러한 설계에서, 메모리 NoC는, 클라이언트 NoC들로부터의 요청들을 수신하고 제공하기 위한 하나 또는 그 초과의 NoC 투 NoC 개시자 NIU들을 갖는다. 그러한 구성에 대한 개시자 NIU의 실시예는 리오더(reorder) 버퍼를 포함한다. 리오더 버퍼는, 부분적인 트랜잭션 응답들을 저장할 능력을 갖는 연장된 컨텍스트 어레이와 유사하다. 그러한 실시예에서, TrID는 리오더 버퍼 내의 컨텍스트 어레이에 저장될 수도 있다.
[0042] 인터페이스를 공유하는 업스트림 NoC 및 다운스트림 NoC를 포함하는 온-칩 상호접속부에서, 업스트림 NoC 내의 타겟 NIU에 커플링된 다운스트림 NoC 내의 개시자 NIU의 일 실시예는 어떠한 분할 유닛으로도 구성되지 않는다. 분할은, 다운스트림 NoC 내의 개시자 NIU의 분할 요건들의 정보를 이용하여 업스트림 NoC 내의 하나 또는 그 초과의 개시자 NIU들에서 수행된다. 이러한 방식에서, 다운스트림 NoC에서의 개시자 NIU의 실시예는, 더 작고, 더 고속이며, 더 적은 트랜잭션 지연 시간을 갖는다. 업스트림 NoC의 개시자 NIU에 의해 고려되는 다운스트림 NoC의 몇몇 파라미터들은, 다운스트림 NoC의 타겟 NIU에 의해 관측되는 어드레스 맵, 다운스트림 NoC 내의 타겟들의 최대 버스트 길이, 다운스트림 NoC 내의 타겟 소켓 인터페이스들의 데이터 폭, 및 경계들을 교차하는 버스트들 상의, 4k 바이트 정렬 어드레스를 교차하지 않게 버스팅하는 AXI 프로토콜 제한과 같은 다운스트림 NoC 타겟 소켓 프로토콜 제한들이다. 다운스트림 NoC의 개시자 NIU의 분할 로직을 제거하는 것은, 로직 영역, 타이밍 경로 길이, 및 트랜잭션 지연 시간을 최소화한다.
[0043] 본 발명의 일 양상은, NoC 소켓 인터페이스에서 개시자 NIU와 트랜잭팅(transact)하는 타겟 NIU의 실시예에 관한 것이다. 일 실시예에서, NoC 소켓 프로토콜을 사용하는 타겟 NIU는, 패킷 헤더 내의 에코 필드의 기능으로서 TrID 신호를 맵핑한다. 가장 간단한 경우에서 맵핑 기능은 직접 카피(copy)이다.
[0044] 타겟 NIU의 일 실시예의 동작 방법이 도 10에 도시된다. 타겟 NIU는 컨텍스트 어레이를 포함한다. 어레이 엔트리들은 트랜잭션에 관한 정보를 저장하며, 이는, 트랜잭션의 생성을 야기한 요청 패킷으로부터의 정보를 포함할 수 있다. 각각의 트랜잭션 요청에 대해 어레이에서의 엔트리가 할당된다. 소켓 인터페이스에서의 응답 TrID 신호의 값은 어레이 인덱스를 형성한다. 그것은, 대응하는 트랜잭션에 관련된 정보를 유지하는 어레이 엔트리를 나타낸다. 컨텍스트 어레이에서의 엔트리들의 개수는, 타겟 NIU에 의해 지원될 수 있는 동시의 계류 트랜잭션들의 최대 개수를 정의한다. 어레이 내에 무부호(unsigned) 2진 인덱스를 형성하는 TrID 신호의 비트들의 수는, 정수로 반올림(round up)된 계류 트랜잭션들의 개수의 밑(base)이 2인 로그이다. 모든 각각의 계류 트랜잭션은 고유 TrID 값을 갖는다.
[0045] 타겟 NIU의 최적의 구성은, NoC 마다 그리고 칩 마다 다르다. 본 발명의 일 실시예에서, 타겟 NIU는 칩 설계 시에 구성가능하다. 구성 선택사항들은, 다른 것들 중에서도, 요청 및 응답 TrID 신호들의 폭, 컨텍스트 어레이 엔트리들의 개수, 계류 트랜잭션들의 개수, 및 TrID 신호들의 패킷 헤더 에코 필드로의 맵핑을 포함한다. 계류 트랜잭션들의 개수는, 타겟 NIU와 타겟 NIU의 접속 IP 사이에 매칭되어야 한다. 타겟 NIU가 IP보다 더 많은 계류 트랜잭션들을 지원한다면, 타겟 NIU는 필요한 것보다 많은 컨텍스트 어레이 엔트리들을 가질 것이다. 타겟 NIU가 IP보다 더 적은 계류 트랜잭션들을 지원한다면, 타겟 NIU는 결코 자신의 컨텍스트 어레이 엔트리들 전부를 사용하지는 않을 것이다. 2개의 NoC들 사이의 소켓 인터페이스에 대해, 계류 트랜잭션들의 개수, 및 그에 따른 컨텍스트 어레이 엔트리들의 개수가 업스트림 타겟 NIU 및 다운스트림 개시자 NIU에 대해 동일하다는 것을 보장하는 것이 바람직하다.
[0046] RTL 언어에서 설명된 타겟 NIU 로직은 구성 툴에 의해 생성된다. 툴은, 칩 설계자들에 의해, 커스터마이징된 구성들을 생성하고 칩 병합을 위한 RTL 언어 코드를 생성하는데 사용된다.
[0047] 개선된 NoC 소켓 프로토콜을 사용하는 개시자 NIU와 타겟 NIU의 결합은, 온-칩 상호접속부 내의 업스트림 NoC 및 다운스트림 NoC의 우수한 멀티-NoC 조합(composition)의 구현을 가능하게 한다. 단일의 종래 NoC에서, 패킷 헤더는, 개시자에 의해 응답들을 컨텍스트 어레이 엔트리들에 효과적으로 맵핑하는데 사용되는 에코 필드를 포함한다. NoC 조합은, 업스트림 NoC의 타겟 NIU와 다운스트림 NoC의 접속된 개시자 NIU 사이의 소켓 인터페이스에 대해 상기 개선된 NoC 소켓 프로토콜을 사용한다. 본 발명의 일 실시예에서, 트랜잭션 인터페이스의 TrID 신호의 값은, 업스트림 NoC의 요청 패킷의 에코 필드를 다운스트림 NoC의 개시자 NIU에 전달한다. 차례로, 다운스트림 NoC의 개시자 NIU는, 다운스트림 NoC의 개시자 NIU가 프로토콜 인터페이스 트랜잭션을 수행하기 위해 생성하는 하나 또는 그 초과의 패킷들 내의 에코 필드로서 TrID 신호의 값을 사용한다.
[0048] 본 발명의 일 양상에 따른 NoC 조합의 실시예가 도 9에 도시되고, 이는 다운스트림 NoC(950)에 커플링된 업스트림 NoC(910)를 포함하며, 둘 모두는 함께, 트랜잭션 요청을 좌측으로부터 우측으로 그리고 응답을 우측으로부터 좌측으로 송신한다. 개시자 NIU(920)는, 개시자 IP(도시되지 않음)로부터 트랜잭션 요청을 수신하고, 컨텍스트 어레이(922) 내의 컨텍스트 엔트리를 할당하며, 요청 패킷을 타켓 NIU(930)에 전송한다. 타겟 NIU(930)는, 요청 패킷을 수신하고, 요청 패킷 헤더로부터의 에코 값을 포함하는 컨텍스트 어레이(932) 내의 컨텍스트 엔트리를 할당한다. 타겟 NIU(930)는, TrID 신호를 포함하는 트랜잭션 요청(982)을 개시자 NIU(960)에 송출한다. 개시자 NIU(960)는 컨텍스트 어레이(962) 내의 컨텍스트 엔트리를 할당하며, 여기서, 본 발명에 따른 TrID를 저장한다. 개시자 NIU(960)는 요청 패킷(984)을 타겟 NIU(970)에 전송한다. 타겟 NIU(970)는, 요청 패킷을 수신하고, 요청 패킷 헤더로부터의 에코 값을 포함하는 컨텍스트 어레이(972) 내의 컨텍스트 엔트리를 할당한다. 타겟 NIU(970)는 트랜잭션 요청을 타겟 IP(도시되지 않음)에 송출한다. 타겟 IP는 트랜잭션 응답을 타겟 NIU(970)에 송출하며, 여기서, 재연관 로직(974)은 컨텍스트 어레이(972)로부터의 트랜잭션에 대응하는 컨텍스트 엔트리를 리트리브한다. 타겟 NIU(970)는 응답 패킷(986)을 개시자 NIU(960)에 전송하며, 여기서, 테이블 검색 모듈(964)은 에코 패킷 헤더 필드를 사용하여 컨텍스트 어레이(962)로부터의 트랜잭션에 대응하는 컨텍스트 엔트리를 간단히 리트리브한다. 본 발명의 다양한 양상들에 따르면, 개시자 NIU(960)는 트랜잭션 응답(988)을 타겟 NIU(930)에 전송하며, 여기서, 테이블 검색 모듈(934)은 TrID 신호를 사용하여 컨텍스트 어레이(932)로부터의 트랜잭션에 대응하는 컨텍스트 엔트리를 간단히 리트리브한다. 타겟 NIU(930)는 응답 패킷(990)을 개시자 NIU(920)에 전송하며, 여기서, 테이블 검색 모듈(924)은 에코 패킷 헤더 필드를 사용하여 컨텍스트 어레이(922)로부터의 트랜잭션에 대응하는 컨텍스트 엔트리를 간단히 리트리브한다. 개시자 NIU(920)는 트랜잭션 응답을 개시자 IP에 전송한다.
[0049] 일 실시예에서, TrID 신호의 값은, 다운스트림 NoC의 개시자 NIU의 컨텍스트 어레이에 저장된다. 저장된 TrID 값은, 응답과 함께 트랜잭션 인터페이스에서 제시된다. 다른 실시예에서, TrID는, 저장되진 않지만 에코 필드에 내포(implicit)된다.
[0050] 일 실시예에서, 다운스트림 NoC에서의 타겟들의 트랜잭션 프로토콜 지원과 어드레스 맵의 인지(awareness)를 이용하여 구성되는 업스트림 NoC의 개시자 NIU는, 개시자 IP 요청들의 다수의 패킷들로의 모든 요구된 분할을 수행한다. 따라서, 다운스트림 NoC의 개시자 NIU는 어떠한 패킷 분할 로직도 요구하지 않는다. 이것은, 업스트림 NoC 패킷 헤더의 에코 필드의, 다운스트림 NoC 패킷 헤더의 에코 필드로의 간단한 맵핑의 추가적인 이점을 갖는다. 결과로서, 업스트림 NoC의 타겟 NIU 내의 컨텍스트 관리는 테이블 액세스로 간략화된다. 그것은, 종래의 NoC 조합의 체인형 리스트 검색보다 훨씬 더 고속의 구조이다. 그러한 구성에서, 어드레스 디코딩, 분할, 및 컨텐스트 연관의 복잡도는, 개시자 IP에 인접한 업스트림 개시자 NIU에서 제시되며, 일반적으로, 칩의 밀집(congested) 부분들로부터 떨어져 분포된다. 따라서, 업스트림 개시자 NIU는, 다른 것들 중에서도, 어드레스 교차 경계 제한들 및 최대 버스트 길이들과 같은 다운스트림 NoC의 타겟들의 특정한 속성들을 알아야 한다.
[0051] 다른 실시예에서, 업스트림 NoC의 개시자 NIU는, 다운스트림 NoC의 개시자 NIU에서 구현된 어드레스 맵을 알지 못한다. 다운스트림 NoC는, 자명하지 않은(non-trivial) 어드레스 디코딩 모듈, 및 필요한 경우 분할 및 연관 로직을 갖는다. 통상적인 구현들에서, 소켓 인터페이스에 대한 교차 경계 파라미터가 업스트림 NoC와 다운스트림 NoC 사이에 일치되어, 업스트림 개시 NIU는 다운스트림 개시 NIU가 분할할 필요가 없는 방식으로 트랜잭션들을 분할할 것이다. 그러한 구성에서, 어드레스 디코딩, 분할, 및 컨텍스트 연관의 복잡도는 다운스트림 NoC에 제시된다. 많은 칩들에서, 다운스트림 NoC들은, 성능 핵심 메모리들에 더 근접하게 있으며 필연적으로 칩에 대해 더 중심에 있다. 그러한 구성은 밀집도(congestion)를 생성하지만, 메모리 서브시스템의 설계에 대해 자신의 특정한 세부사항들을 업스트림 클라이언트 NoC들로부터 분리시키는 유연성을 허용한다.
[0052] 기재된 발명의 일 양상은, 업스트림 NoC의 타겟 NIU와 다운스트림 NoC의 개시자 NIU 사이의 소켓 인터페이스의 타겟 NIU 내의 컨텍스트들을 관리하는 방법에 관한 것이다. 일 실시예는, 풀링(pooling) 또는 스택-기반(stack-based) 알고리즘을 사용하여 각각의 새로운 착신(incoming) 요청들에 대해 자유(free) 컨텍스트를 할당하는 단계를 포함한다. 컨텍스트는, 패킷 헤더 내의 에코 및/또는 시퀀스 ID 필드에 의해 식별된다. 각각의 컨텍스트 어레이 엔트리는 응답 헤더를 구성하기 위한 필수적인 다음의 정보를 포함한다.
[0053] 라우트 ID;
[0054] 연산코드; 및
[0055] 에코.
[0056] 타겟 NIU는, 할당된 컨텍스트 어레이 엔트리와 연관된 트랜잭션에 대한 요청을 송출한다. 요청은 요청 TrID 신호를 포함한다. 타겟 NIU는, 할당된 컨텍스트 어레이 엔트리의 인덱스에 따라 신호를 배정(assign)한다. 결과적으로 타겟 NIU가 응답을 수신한다. 응답은 응답 TrID 신호를 포함한다. 그 후, 타겟 NIU는, 응답 TrID 신호의 값을 인덱스 값으로서 사용하여, 컨텍스트 어레이의 연관된 엔트리를 검색한다. 기입 응답 전달 패킷의 헤더가 전송되거나 판독 응답 전달 패킷의 마지막 데이터가 전송되는 어느 하나의 경우, 컨텍스트는 자유가 된다.
[0057] 다른 실시예에서, 응답은 TrID는 동일한 트랜잭션에 대한 요청 TrID 신호의 변환된 카피이다. 하나의 그러한 변환은 비트들의 리오더링(reordering)이다. 이것은, 컨텍스트 어레이에서의 뱅크(bank) 기반 저장의 사용을 가능하게 한다. 다른 변환은, 응답 인터리빙에 의해 분리된 버스트에서의 다수의 데이터 워드들 중 어느 데이터 워드인지를 표시하는 정보의 부가이며. 부분적 응답 워드가 전달된다.
[0058] 본 발명의 일 양상은, NoC들 사이의 소켓 인터페이스의 타겟 NIU에서, 트랜잭션들의 컨텐스트 어레이 엔트리들로의 재연관을 수행할 필요성들의 제거이다. 또한, 이러한 이점은, 메모리 제어기와 같은 NoC들 외에 타겟 IP들의 타입들에 대해 유용하다. 다운스트림 NoC 개시자 NIU들 같은 메모리 제어기는, 복잡한 재연관 로직을 요구하지 않는 간단히 맵핑된 TrID 신호들로 응답하도록 또한 설계될 수 있다. 일반적으로, 타겟 NIU들은, 체인형 리스트의 시퀀스 ID에 기초하여 트랜잭션 응답들을 컨텍스트 어레이 엔트리들에 재연관시킨다. 이것은 값비싼 체인형 리스트 검색을 요구한다. NoC 투 NoC 소켓에 대해, 트랜잭션 인터페이스 상에서 TrID 신호를 사용하는 것은, 응답들을 컨텐스트 어레이 엔트리들과 재연관시키기 위한 간단한 테이블 인덱스 검색을 허용한다. 임의의 개수의 NoC 투 NoC 소켓들을 통과하여 개시자 IP에 의해 요청되는 트랜잭션에 대해, 하나의 재연관 체인형 리스트 검색만이 요구된다. 그것은 타겟 IP에 접속된 타겟 NIU에서이다. NoC 투 NoC 소켓들의 모든 개재(intermediate) 타겟 NIU들 및 개시자 NIU들은, 패킷 헤더 필드들로부터의 에코 비트들 및 NoC 소켓 프로토콜 인터페이스들의 TrID 비트들의 간단한 인덱싱을 사용할 수 있다.
[0059] 타겟 NIU의 일 실시예가 도 8에 도시된다. 개시자 NIU(600 또는 700)와 같은 개시자 NIU와 대응할 수 있는 타겟 NIU(800)가 도시된다. 요청 패킷들은 요청 전달 인터페이스(802) 상에서 수용되고, 응답 패킷들은 응답 전달 인터페이스(804) 상에서 전송된다. 트랜잭션 요청들은 소켓 인터페이스 요청 채널(806)을 통해 제시되고, 트랜잭션 응답들은 소켓 인터페이스 응답 채널(808)을 통해 NIU에 의해 수용된다. 타겟 NIU(800)는, 컨텍스트 할당 유닛(812), 컨텍스트 어레이(820), 및 컨텍스트 재연관 유닛(830)을 포함한다. 컨텍스트 할당 유닛(812)에 의해 선택된 테이블 엔트리에 대한 고유 어드레스는 요청 TrID 신호(840)로서 전송된다. 응답 TrID 신호(842)는, 컨텍스트 할당 유닛(812)에 의해 선택된 엔트리의 에코 필드(E)를 선택하기 위한 멀티플렉서(mux)(850)에서의 선택기(selector)로서 사용된다. 이것은, 종래의 복잡한 재연관 로직에 대한 필요성을 제거할 뿐만 아니라 전체 시스템을 간략화하고 시스템 성능을 개선하는 검색 메커니즘이다.
[0060] 칩들은 점점 더 복잡해지고 있다. 칩들은 더 이상 단일 엔지니어나 심지어 단일 팀의 엔지니어들에 의해서도 설계될 수 없다. 칩들은 반드시 모듈식으로(modularly) 설계된다. 따라서, 별개의 NoC들을 사용하여 모듈들을 설계하는 것이 필요하다. 풀 칩 내의 상단 레벨 통합은 NoC들 사이의 인터페이스들을 요구한다. NoC 소켓 프로토콜을 사용하는 것은, NoC 인터페이스들이 더 고속으로 구동하고 그리고/또는 정밀한(close) 타이밍을 위해 더 적은 파이프 스테이지들로 구동하는 것을 허용한다. 또한, NoC 소켓 프로토콜을 사용하는 것은, 팀들이, 팀들 사이에서 가장 양호한 인터페이스를 협의하는 과정에 소비하는 시간을 필요로 하지 않으면서 독립적으로 설계하는 것을 허용한다. 일 실시예에서, NoC RTL을 구성하고 생성하는데 툴이 사용된다. 툴은, 특히 NoC들 사이의 각각의 소켓 인터페이스에 대한 최적화된 프로토콜을 자동적으로 생성한다. 다른 파라미터들 중에서도, 구성은, TrID 신호의 사이즈 및 지원되는 계류 트랜잭션들의 개수를 결정한다.
[0061] 또한, 툴은, 각각의 NoC에 대한 개시자들의 어드레스 공간 내의 타켓들의 어드레스 맵을 수용한다. 다운스트림 NoC의 어드레스 맵을 사용하여, 툴은, 트랜잭션을 완료하기 위해 요구되는 다운스트림 NoC에서의 하나 또는 그 초과의 패킷들을 생성하는데 요구되는 분할의 타입을 결정한다. 툴은, 개시자 NIU RTL을 구성하여 그러한 패킷 분할을 구현한다. 이것의 효과는, 개시자 NIU들의 어드레스 디코딩에서, 단일화된 어드레스 맵을 생성하는 것이다. 이것은, 별개의 설계 팀들이 서로의 NoC의 어드레스 맵을 아는 것을 요구하지 않으면서 행해진다.
[0062] 또한, 툴은, 상호접속부를 갖는 개시자들과 타겟들 사이의 모든 라우트들 상에서 모든 트랜잭션 타입들을 연습하기 위한 검증 테스트벤치 및 테스트들을 생성한다. NoC 조합의 인지를 이용하여, 툴은, 심지어 NoC 투 NoC 소켓들을 통해, 그리고 결과적인 체계(hierarchy)들의 어드레스 맵핑들을 이용하여, 각각의 개시자로부터 모든 액세스가능한 타겟들로의 액세스들을 연습하기 위한 단일화된 테스트벤치 및 테스트들을 생성한다.
[0063] 또한, 툴은, 성능 조사 시뮬레이션 환경을 생성한다. NoC 조합의 인지를 이용하여, 툴은, NoC들 사이의 트랜잭션들의 통로 및 그들의 연관된 패킷들을 모델링하는 시뮬레이션 환경을 생성한다.
[0064] 이들 이점들 모두는, 팀들 사이의 통신을 요구하지 않으면서 달성된다. 통신하지 않는 별개의 팀들에 의한 설계들의 위험성은, 모듈들 사이의 순환적(circular) 종속성들에 대한 것이다. 툴은, NoC 조합 및 각각의 컴포넌트 NoC의 구성의 인지를 갖기 때문에, NoC 투 NoC 소켓들을 통한 순환적 개시자 투 타겟(initiator to target) 접속부와 같은 순환적 종속성 체크들을 자동적으로 수행한다. 그러한 종속성들은, 교착(deadlock)을 야기할 수 있지만, 종종, 심지어 철저한 검증 환경들에서도 검출되기가 어렵다. 툴은, NoC 접속부 및 구성의 고도의 정보에 기초하여 체킹을 자동화한다.
[0065] 다수의 NoC들의 용이한 통합의 추가적인 이점은, NoC에서의 전달 패킷 헤더 포맷이 NoC의 구성에 기초하여 최적화된다는 것이다. 예를 들어, 많은 개시자들 및 타겟들을 갖는 NoC는 더 큰 라우트ID 필드를 요구하고, 또는 많은 측대역 신호들을 갖는 NoC는 더 큰 사용자 비트 필드를 요구할 것이다. 더 큰 헤더는, NoC 전체에 걸쳐, 데이터 경로들의 사이즈 및 로직의 복잡도를 증가시킨다. NoC들 사이에 트랜잭션 인터페이스를 이용하는 다수의 NoC들을 사용함으로써, 별개의 NoC들의 헤더 포맷들은 개별적으로 최적화되고, 일반적으로, 더 작게 제조될 수 있다.
[0066] 본 발명은 설명된 특정한 실시예들 또는 양상들에 제한되지 않으며, 이와 같이 변할 수도 있음이 이해되어야 한다. 또한, 본 발명의 범위가 첨부된 청구항들에 의해서만 제한될 것이기 때문에, 본 명세서에 사용된 용어는 단지 특정한 실시예들을 설명하는 목적을 위한 것이며, 제한적인 것으로 의도되지 않음이 이해되어야 한다.
[0067] 달리 정의되지 않으면, 본 명세서에 사용된 모든 기술적 및 과학적 용어들은 본 발명이 속하는 기술분야의 당업자에 의해 통상적으로 이해되는 것과 동일한 의미를 갖는다. 본 명세서에 설명된 방법들 및 재료들과 유사하거나 등가인 임의의 방법들 및 재료들이 또한 본 발명의 실시 또는 테스팅에서 사용될 수 있다.
[0068] 본 명세서에 인용된 모든 공보들 및 특허들은, 각각의 별개의 공보 또는 특허가 인용에 의해 포함되는 것으로 특별히 그리고 별개로 표시되는 것처럼 인용에 의해 본원에 포함되고, 공보들이 인용된 것과 관련하여 방법들 및/또는 재료들을 기재 및 설명하기 위해 인용에 의해 본 명세서에 포함된다. 임의의 공보의 인용은 출원 날짜 이전의 공보의 개시물에 대한 것이고, 본 발명이 종래 발명에 의해서 그러한 공보보다 선행할 자격이 없다는 것을 인정하는 것으로 해석되지 않아야 한다. 또한, 제공된 공개의 날짜들은 독립적으로 확인될 필요가 있을 수 있는 실제의 공개 날짜들과 상이할 수 있다.
[0069] 본 명세서 및 첨부된 청구항들에서 사용된 바와 같이, 단수 형태들은 문맥이 달리 명확히 지시하지 않는다면 복수의 지시 대상들을 포함한다는 것이 유의된다. 청구항들이 임의의 선택적인 엘리먼트를 배제하도록 작성될 수도 있다는 것이 또한 유의된다. 이로써, 이러한 진술은 청구항 엘리먼트들의 인용 또는 "부정적인" 제한의 사용과 관련하여 "단독으로", "단지" 등과 같은 그러한 배타적인 전문 용어의 사용을 위한 선행사(antecedent basis)로서 기능하도록 의도된다.
[0070] 본 발명을 읽을 때 당업자들에게 명백해질 바와 같이, 본 명세서에서 설명 및 예시된 개별적인 실시예들 각각은, 본 발명의 범위 또는 사상으로부터 벗어나지 않으면서 다른 몇몇의 실시예들 중 임의의 실시예의 특징들로부터 용이하게 분리 또는 그 특징들과 결합될 수도 있는 이산 컴포넌트들 및 특징들을 갖는다. 임의의 인용된 방법은 인용된 이벤트들의 순서로 또는 논리적으로 가능한 임의의 다른 순서로 수행될 수 있다.
[0071] 전술한 발명이 이해의 명확성의 목적을 위해 예시 및 예로서 다소 상세히 설명되었지만, 본 발명의 교시들의 관점에서, 특정한 변경들 및 변형들이 첨부된 청구항들의 사상 또는 범위로부터 벗어나지 않으면서 이루어질 수도 있다는 것이 당업자들에게 용이하게 명백하다.
[0072] 따라서, 앞선 내용은 단지 본 발명의 다양한 양상들 및 원리들을 예시한다. 당업자들은, 본 명세서에서 명시적으로 설명되거나 도시되지 않지만, 본 발명의 원리들을 구현하고 본 발명의 사상 및 범위 내에 포함되는 다양한 어레인지먼트들을 고안할 수 있을 것이라는 것이 인식될 것이다. 또한, 본 명세서에 인용된 모든 예들 및 조건부 언어는, 발명자들에 의해 기술을 발전시키는 것에 기여된 개념들 및 본 발명의 원리들을 이해하는데 있어서 주로 독자를 돕도록 의도되고, 그러한 특별히 인용된 예들 및 조건들로 제한되지 않는 것으로 해석되어야 한다. 더욱이, 본 발명의 원리들, 양상들 및 실시예들 뿐만 아니라 그 특정한 예들을 인용하는 본 명세서에서의 모든 진술들은, 그 구조적 및 기능적 등가물들 둘 모두를 포함하도록 의도된다. 부가적으로, 그러한 등가물들이 현재 알려진 등가물들 및 장래에 개발되는 등가물들 둘 모두, 즉, 구조와 상관없이 동일한 기능을 수행하는 개발된 임의의 엘리먼트들을 포함한다는 것이 의도된다. 따라서, 본 발명의 범위는 본 명세서에 도시되고 설명된 예시적인 실시예들로 제한되도록 의도되지 않는다. 오히려, 본 발명의 범위 및 사상은 첨부된 청구항들에 의해 구현된다.

Claims (42)

  1. 개시자(initiator) 네트워크 인터페이스 유닛으로서,
    요청과 함께 트랜잭션(transaction) 식별자 신호 및 시퀀스 식별자 신호를 수용(accept)하는 제 1 채널 ― 상기 트랜잭션 식별자 신호는 고유(unique) 트랜잭션 식별자를 표시하도록 구성되고 그리고 상기 시퀀스 식별자 신호는 상기 고유 트랜잭션 식별자와 상이한 고유 시퀀스 식별자를 표시하도록 구성됨 ―;
    응답과 함께 상기 트랜잭션 식별자 신호를 제공하는 제 2 채널; 및
    복수의 계류(pending) 트랜잭션들에 대응하는 복수의 엔트리들을 저장하기 위한 용량(capacity)을 갖는 컨텍스트 어레이(context array)를 포함하고,
    상기 컨텍스트 어레이의 용량이 가득차 있음을 검출할 시에, 백프레셔(backpressure)가 상기 제 1 채널 상에서 어서팅(assert)되고 그리고 물리 계층 준비 신호가 디어서팅(deassert)되는, 개시자 네트워크 인터페이스 유닛.
  2. 제 1 항에 있어서,
    상기 요청과 함께 수용되는 상기 트랜잭션 식별자 신호를 요청 패킷 헤더의 필드에 맵핑(map)하는, 개시자 네트워크 인터페이스 유닛.
  3. 제 1 항에 있어서,
    응답 패킷 헤더의 필드를, 상기 응답과 함께 제공되는 상기 트랜잭션 식별자 신호에 맵핑하는, 개시자 네트워크 인터페이스 유닛.
  4. 제 3 항에 있어서,
    맵핑 기능은 직접 카피(direct copy)인, 개시자 네트워크 인터페이스 유닛.
  5. 제 1 항에 있어서,
    상기 트랜잭션 식별자 신호의 값이 패킷 헤더 필드에 맵핑되는, 개시자 네트워크 인터페이스 유닛.
  6. 제 1 항에 있어서,
    상기 트랜잭션 식별자 신호의 값은, 적어도 계류(pending) 트랜잭션들의 최대 개수의 log2 만큼의 비트들을 갖는, 개시자 네트워크 인터페이스 유닛.
  7. 제 1 항에 있어서,
    다수의 계류 트랜잭션들은 상기 트랜잭션 식별자 신호의 고유 값들을 갖는, 개시자 네트워크 인터페이스 유닛.
  8. 제 1 항에 있어서,
    상기 네트워크 인터페이스 유닛은 구성가능한, 개시자 네트워크 인터페이스 유닛.
  9. 제 1 항에 있어서,
    상기 네트워크 인터페이스 유닛은 툴(tool)에 의해 생성되는, 개시자 네트워크 인터페이스 유닛.
  10. 제 1 항에 있어서,
    상기 제 2 채널에 동작가능하게 접속되는 리오더(reorder) 버퍼를 포함하는, 개시자 네트워크 인터페이스 유닛.
  11. 제 1 항에 있어서,
    어떠한 분할 유닛으로도 구성되지 않는, 개시자 네트워크 인터페이스 유닛.
  12. 시스템으로서,
    개시자 네트워크 인터페이스 유닛을 포함하는 제 1 네트워크 온 칩(network on chip); 및
    상기 제 1 네트워크 온 칩에 동작가능하게 접속되는 제 2 네트워크 온 칩을 포함하고,
    상기 개시자 네트워크 인터페이스 유닛은:
    패킷 분할 유닛;
    트랜잭션 식별자 신호 및 시퀀스 식별자 신호를 포함하는 트랜잭션 요청을 수용하는 소켓 인터페이스 요청 채널 ― 상기 트랜잭션 식별자 신호는 고유 트랜잭션 식별자를 표시하도록 구성되고 그리고 상기 시퀀스 식별자 신호는 상기 고유 트랜잭션 식별자와 상이한 고유 시퀀스 식별자를 표시하도록 구성됨 ―; 및
    복수의 계류 트랜잭션들에 대응하는 복수의 엔트리들을 저장하기 위한 용량을 갖는 컨텍스트 어레이 ― 상기 컨텍스트 어레이의 용량이 가득차 있음을 검출할 시에, 백프레셔가 상기 소켓 인터페이스 요청 채널 상에서 어서팅되고 그리고 물리 계층 준비 신호가 디어서팅됨 ― 를 포함하고,
    상기 패킷 분할 유닛에 의해 수행되는 분할은, 상기 제 2 네트워크 온 칩의 하나 또는 그 초과의 파라미터들에 적어도 부분적으로 기초하는, 시스템.
  13. 제 12 항에 있어서,
    상기 하나 또는 그 초과의 파라미터들 중 적어도 하나의 파라미터는 어드레스 맵(address map)인, 시스템.
  14. 제 12 항에 있어서,
    상기 하나 또는 그 초과의 파라미터들 중 적어도 하나의 파라미터는 최대 버스트 길이(burst length)인, 시스템.
  15. 온-칩 상호접속부로서,
    업스트림 네트워크 온 칩;
    상기 업스트림 네트워크 온 칩 내의 제 1 개시자 네트워크 인터페이스 유닛;
    상기 업스트림 네트워크 온 칩 내의 제 1 타겟(target) 네트워크 인터페이스 유닛;
    상기 제 1 개시자 네트워크 인터페이스 유닛의 어드레스 공간 내의 상기 제 1 타겟 네트워크 인터페이스 유닛의 제 1 어드레스 맵핑;
    다운스트림 네트워크 온 칩;
    상기 제 1 타겟 네트워크 인터페이스 유닛에 동작가능하게 커플링되는 상기 다운스트림 네트워크 온 칩 내의 제 2 개시자 네트워크 인터페이스 유닛;
    상기 다운스트림 네트워크 온 칩 내의 제 2 타겟 네트워크 인터페이스 유닛;
    상기 제 2 개시자 네트워크 인터페이스 유닛의 어드레스 공간 내의 상기 제 2 타겟 네트워크 인터페이스 유닛의 제 2 어드레스 맵핑; 및
    상기 제 1 개시자 네트워크 인터페이스 유닛 내의 패킷 분할 유닛 ― 상기 패킷 분할 유닛은 상기 제 2 어드레스 맵핑에 따라 패킷들을 분할함 ― 을 포함하고,
    상기 제 1 개시자 네트워크 인터페이스 유닛은:
    트랜잭션 식별자 신호 및 시퀀스 식별자 신호를 포함하는 트랜잭션 요청을 수용하는 소켓 인터페이스 요청 채널 ― 상기 트랜잭션 식별자 신호는 고유 트랜잭션 식별자를 표시하도록 구성되고 그리고 상기 시퀀스 식별자 신호는 상기 고유 트랜잭션 식별자와 상이한 고유 시퀀스 식별자를 표시하도록 구성됨 ―; 및
    복수의 계류 트랜잭션들에 대응하는 복수의 엔트리들을 저장하기 위한 용량을 갖는 컨텍스트 어레이 ― 상기 컨텍스트 어레이의 용량이 가득차 있음을 검출할 시에, 백프레셔가 상기 소켓 인터페이스 요청 채널 상에서 어서팅되고 그리고 물리 계층 준비 신호가 디어서팅됨 ― 를 포함하는, 온-칩 상호접속부.
  16. 네트워크-온-칩의 타겟 네트워크 인터페이스 유닛 내의 컨텍스트들을 관리하는 방법으로서,
    복수의 계류 트랜잭션들에 대응하는 복수의 엔트리들을 저장하기 위한 용량을 갖는 컨텍스트 어레이에 컨텍스트 어레이 엔트리를 할당하는 단계;
    상기 컨텍스트 어레이의 용량이 가득차 있는지 여부를 검출하는 단계;
    소켓 인터페이스 요청 채널 상에서 트랜잭션 요청과 함께 요청 트랜잭션 컨텍스트 어레이 엔트리 식별자를 포함하는 상기 트랜잭션 요청을 송출(issue)하는 단계;
    상기 컨텍스트 어레이의 용량이 가득차 있음을 검출할 시에, 상기 소켓 인터페이스 요청 채널 상에서 백프레셔를 어서팅하고 그리고 물리 계층 준비 신호를 디어서팅하는 단계;
    고유 값을 표시하도록 구성되는 트랜잭션 응답 식별자를 갖는 트랜잭션 응답을 수용하는 단계; 및
    상기 컨텍스트 어레이 엔트리를 검색(look up)하기 위해 상기 트랜잭션 응답 식별자를 사용하는 단계를 포함하는, 네트워크-온-칩의 타겟 네트워크 인터페이스 유닛 내의 컨텍스트들을 관리하는 방법.
  17. 제 16 항에 있어서,
    상기 요청 트랜잭션 컨텍스트 어레이 엔트리 식별자가 상기 트랜잭션 응답 식별자로 변환되는, 네트워크-온-칩의 타겟 네트워크 인터페이스 유닛 내의 컨텍스트들을 관리하는 방법.
  18. 네트워크-온-칩들의 조합(composition)을 통해 트랜잭션들을 전달하는 방법으로서,
    트랜잭션 응답을, 제 1 네트워크 온 칩 내의 제 1 타겟 네트워크 인터페이스 유닛 내의 제 1 컨텍스트 어레이의 제 1 엔트리에 재연관(reassociate)시키는 단계 ― 상기 제 1 컨텍스트 어레이는 고유 트랜잭션 식별자 및 상기 고유 트랜잭션 식별자와 상이한 고유 시퀀스 식별자를 저장하도록 구성됨 ―;
    상기 제 1 엔트리로부터 패킷 헤더의 에코 필드(echo field)를 맵핑하는 단계;
    상기 패킷 헤더의 상기 에코 필드로부터 트랜잭션 식별자 신호를 맵핑하는 단계 ― 상기 트랜잭션 식별자 신호는 상기 고유 트랜잭션 식별자를 표시하도록 구성됨 ―;
    복수의 계류 트랜잭션들에 대응하는 복수의 엔트리들을 저장하기 위한 용량을 갖는, 제 2 네트워크 온 칩의 제 2 타겟 네트워크 인터페이스 유닛 내의 제 2 컨텍스트 어레이에서, 상기 제 2 컨텍스트 어레이의 용량이 가득차 있는지 여부를 검출하는 단계 ― 상기 제 2 컨텍스트 어레이는 상기 고유 트랜잭션 식별자 및 상기 고유 시퀀스 식별자를 저장하도록 구성됨 ―;
    상기 제 2 컨텍스트 어레이의 용량이 가득차 있음을 검출할 시에, 소켓 인터페이스 요청 채널 상에서 백프레셔를 어서팅하고 그리고 물리 계층 준비 신호를 디어서팅하는 단계; 및
    상기 제 2 컨텍스트 어레이의 용량이 가득차 있지 않음을 검출할 시에, 상기 제 2 컨텍스트 어레이의 제 2 엔트리 내로 인덱싱하기 위해 상기 트랜잭션 식별자 신호의 값을 사용하는 단계를 포함하는, 네트워크-온-칩들의 조합을 통해 트랜잭션들을 전달하는 방법.
  19. 제 18 항에 있어서,
    상기 제 2 엔트리로부터 제 2 패킷 헤더의 제 2 에코 필드를 맵핑하는 단계; 및
    상기 제 2 에코 필드를 사용하여 제 3 컨텍스트 어레이 내로 인덱싱하는 단계를 더 포함하는, 네트워크-온-칩들의 조합을 통해 트랜잭션들을 전달하는 방법.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
KR1020157009635A 2012-09-25 2013-09-24 네트워크 온 칩 소켓 프로토콜 KR101690568B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/626,758 2012-09-25
US13/626,758 US9471538B2 (en) 2012-09-25 2012-09-25 Network on a chip socket protocol
US13/626,766 US9225665B2 (en) 2012-09-25 2012-09-25 Network on a chip socket protocol
US13/626,766 2012-09-25
PCT/US2013/061295 WO2014052261A1 (en) 2012-09-25 2013-09-24 Network on a chip socket protocol

Publications (2)

Publication Number Publication Date
KR20150063433A KR20150063433A (ko) 2015-06-09
KR101690568B1 true KR101690568B1 (ko) 2016-12-28

Family

ID=50388890

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157009635A KR101690568B1 (ko) 2012-09-25 2013-09-24 네트워크 온 칩 소켓 프로토콜

Country Status (6)

Country Link
EP (2) EP4123468A1 (ko)
JP (1) JP6144348B2 (ko)
KR (1) KR101690568B1 (ko)
CN (1) CN104685480B (ko)
IN (1) IN2015MN00441A (ko)
WO (1) WO2014052261A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2529217A (en) 2014-08-14 2016-02-17 Advanced Risc Mach Ltd Transmission control checking for interconnect circuitry
US11436185B2 (en) * 2019-11-15 2022-09-06 Arteris, Inc. System and method for transaction broadcast in a network on chip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671275B1 (en) 2002-08-02 2003-12-30 Foundry Networks, Inc. Cross-point switch with deadlock prevention
US20110302345A1 (en) 2010-06-03 2011-12-08 Philippe Boucard Network on chip (noc) with qos features

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477646B1 (en) * 1999-07-08 2002-11-05 Broadcom Corporation Security chip architecture and implementations for cryptography acceleration
US6826191B1 (en) * 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US8087064B1 (en) * 2000-08-31 2011-12-27 Verizon Communications Inc. Security extensions using at least a portion of layer 2 information or bits in the place of layer 2 information
WO2002069575A1 (en) * 2001-02-28 2002-09-06 Gotham Networks, Inc. Methods and apparatus for network routing device
US7277449B2 (en) * 2002-07-29 2007-10-02 Freescale Semiconductor, Inc. On chip network
US6996651B2 (en) * 2002-07-29 2006-02-07 Freescale Semiconductor, Inc. On chip network with memory device address decoding
CN1689312B (zh) * 2002-10-08 2010-04-14 皇家飞利浦电子股份有限公司 用于建立事务的集成电路和方法
US7181556B2 (en) * 2003-12-23 2007-02-20 Arm Limited Transaction request servicing mechanism
WO2005093591A1 (en) * 2004-03-26 2005-10-06 Koninklijke Philips Electronics N.V. Integrated circuit and method for transaction abortion
US7716409B2 (en) * 2004-04-27 2010-05-11 Intel Corporation Globally unique transaction identifiers
CN101379841A (zh) * 2005-09-13 2009-03-04 Ist国际公司 为提供异种网络之间的小包连通性和组分和小包之系统和方法
KR20080058382A (ko) * 2005-09-13 2008-06-25 아이에스티 인터내셔널 인코포레이티드 이기종 네트워크들 간의 패킷 연결을 제공하는 시스템 및방법, mtm 헤더 및 ip 헤더를 포함하는 패킷 처리네트워크 노드, 패킷 기반 통신 방법, 이러한 방법을수행하는 컴퓨터-실행가능 명령어들을 저장하는컴퓨터-판독가능 매체, 프로토콜 계층 아키텍처, mtm프로토콜 패킷, 및 mtm 프로토콜 패킷을 표현하는컴퓨터 데이터 신호
US20070245033A1 (en) * 2006-04-14 2007-10-18 Microsoft Corporation Link layer discovery and diagnostics
EP2054807A2 (en) * 2006-08-08 2009-05-06 Koninklijke Philips Electronics N.V. Electronic device and method of controlling a communication
US8285912B2 (en) * 2009-08-07 2012-10-09 Arm Limited Communication infrastructure for a data processing apparatus and a method of operation of such a communication infrastructure
FR2951342B1 (fr) * 2009-10-13 2017-01-27 Arteris Inc Reseau sur puce a latence nulle
EP2333830B1 (en) * 2009-12-07 2014-09-03 STMicroelectronics (Research & Development) Limited a package comprising a first and a second die coupled by a multiplexed bus
EP2388707B1 (en) * 2010-05-20 2014-03-26 STMicroelectronics (Grenoble 2) SAS Interconnection method and device, for example for systems-on-chip
WO2011148925A1 (ja) * 2010-05-24 2011-12-01 日本電気株式会社 半導体装置とネットワークルーティング方法とシステム
EP2444903A1 (en) * 2010-09-29 2012-04-25 STMicroelectronics (Grenoble 2) SAS A transaction reordering arrangement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671275B1 (en) 2002-08-02 2003-12-30 Foundry Networks, Inc. Cross-point switch with deadlock prevention
US20110302345A1 (en) 2010-06-03 2011-12-08 Philippe Boucard Network on chip (noc) with qos features

Also Published As

Publication number Publication date
JP6144348B2 (ja) 2017-06-07
KR20150063433A (ko) 2015-06-09
WO2014052261A1 (en) 2014-04-03
CN104685480B (zh) 2017-07-14
CN104685480A (zh) 2015-06-03
EP4123468A1 (en) 2023-01-25
JP2015535991A (ja) 2015-12-17
IN2015MN00441A (ko) 2015-09-11
EP2901294A4 (en) 2016-08-10
EP2901294A1 (en) 2015-08-05

Similar Documents

Publication Publication Date Title
CN106462524B (zh) 使用混合存储器立方体链路的互连系统及方法
TWI588654B (zh) 用於可重組態之記憶體系統之虛擬化實體位址
US7308523B1 (en) Flow-splitting and buffering PCI express switch to reduce head-of-line blocking
US11693805B1 (en) Routing network using global address map with adaptive main memory expansion for a plurality of home agents
US20230342307A1 (en) Transmission of address translation type packets
US9225665B2 (en) Network on a chip socket protocol
KR20120038282A (ko) 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법
US9471538B2 (en) Network on a chip socket protocol
KR101690568B1 (ko) 네트워크 온 칩 소켓 프로토콜
TWI760715B (zh) 藉助於交易辨識碼之屬性來控制資料回應的方法以及系統
CN117280331A (zh) 用于处理来自通信网络中的外围设备的请求传输的技术

Legal Events

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

Payment date: 20190924

Year of fee payment: 4