KR20160102445A - 플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트 - Google Patents

플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트 Download PDF

Info

Publication number
KR20160102445A
KR20160102445A KR1020167017440A KR20167017440A KR20160102445A KR 20160102445 A KR20160102445 A KR 20160102445A KR 1020167017440 A KR1020167017440 A KR 1020167017440A KR 20167017440 A KR20167017440 A KR 20167017440A KR 20160102445 A KR20160102445 A KR 20160102445A
Authority
KR
South Korea
Prior art keywords
noc
directory
cache
cache coherency
agent
Prior art date
Application number
KR1020167017440A
Other languages
English (en)
Inventor
조 로우랜즈
사일레쉬 쿠말
Original Assignee
넷스피드 시스템즈
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 넷스피드 시스템즈 filed Critical 넷스피드 시스템즈
Publication of KR20160102445A publication Critical patent/KR20160102445A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

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

Abstract

본 출원은 NoC 인터컨넥트 구조를, 여기에 한정되는 것은 아니며 NoC 에이전트 인터페이스의 개수 및 캐시 코히어런시 제어장치의 개수를 포함하는 NoC의 구현 파라미터들을 나타낼 수 있는 사양서에 의해 디자인하는 것에 관한 것이다. NoC 에이전트의 인터페이스 및 캐시 코히어런시 제어장치의 플렉시블한 식별은 사양서로부터 NoC를 구성할 때 임의의 개수의 에이전트가 NoC와 연관되도록 한다.

Description

플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트{CACHE COHERENT NOT WITH FLEXIBLE NUMBER OF CORES, I/O DEVICES, DIRECTORY STRUCTURE AND COHERENCY POINTS}
본 명세서에 기재된 방법 및 실시 예들은 캐시 코히어런트 인터컨넥트 (cache coherent interconnect)에 관한 것이며, 더 구체적으로, 캐시 코히어런트 NoC (Network on Chip)의 생성에 관한 것이다.
집적화 레벨 및 시스템 복잡도의 증가와 트랜지스터의 기하학 구조 수축에 기인하여 하나의 칩에 대한 구성요소의 수는 급속히 증가하고 있다. 복잡한 SoC(System on Chip)들은 다양한 구성요소들, 예를 들어 프로세서 코어, DSP, 하드웨어 가속기, 메모리, 및 I/O 서브시스템들을 포함할 수 있는 반면에, CMP(Chip Multi-Processor)들은 다수의 동종의 프로세서 코어들, 메모리, 및 I/O 서브시스템들을 포함할 수 있다. SoC 및 CMP 시스템 모두, 온칩(on-chip) 인터커넥트(interconnect)가 다양한 구성요소 사이의 고성능 통신을 제공하는 역할을 한다. 종래의 버스와 크로스바 기반의 인터커넥트의 확장성(scalability) 한계 때문에, NoC는 칩 상의 다수의 구성요소들을 상호연결(interconnect)하는 패러다임으로서 등장했다. NoC는 전역 공용의 통신 인프라로, 점대점(point-to-point) 물리 링크(physical link)를 사용하여 서로 상호연결된 다수의 라우팅 노드들로 구성된다.
메세지들은 소스에 의해 주입되고 소스 노드 (source node)로부터 다수의 중간 노드들과 무리 링크들을 거쳐 목적지까지 전송된다. 그리고 나서 목적지 노드는 메세지를 내보내고 메세지를 목적지로 공급한다. 본 명세서의 나머지 부분에서, '구성요소', '블럭', '호스트', 또는 '코어' 용어들은 NoC를 이용하여 상호연결되는 다양한 시스템 구성요소들을 나타내도록 호환성 있게 사용될 것이다. '라우터' 및 '노드'라는 용어들 또한 호환성 있게 사용될 것이다. 일반성을 잃지 않고, 다수의 상호연결된 구성요소들을 포함하는 시스템은 '멀티-코어 시스템'으로 지칭될 것이다.
시스템 네트워크를 만들기 위해 라우터들이 서로 연결될 수 있는 몇몇의 토폴로지들이 있다. 양방향 고리(도 1a 참조), 2-D(이차원) 망(도 1b 참조), 및 2-D토로스(도 1c 참조)는 관련 기술의 토폴로지에 대한 예시들이다. 망 및 토로스는 2.5-D(2.5 차원) 또는 3-D(3차원) 조직으로 또한 확장될 수 있다. 도 1d는 3D 망 NoC을 도시하며, 서로 적층된 3 층의 3x3 2D 망을 도시한다. NoC 라우터는 포트를 두 개까지 가질 수 있으며, 하나는 위쪽 층의 라우터에 연결되고, 다른 하나는 아래쪽 층의 라우터에 연결된다. 예시에서 중간층의 라우터(111)는 두 포트를 모두 가지며, 하나는 상부층의 라우터에 연결되고, 다른 하나는 하부층의 라우터에 연결된다. 라우터들(110,112)은 하부 망 층 및 상부 망 층에 각각 있어서, 오직 상향 포트(113)와 하양 포트(113)만을 갖는다.
패킷들은 다양한 구성들 사이의 상호 통신을 위한 메세지 전달 유닛이다. 라우팅(routing)은 라우터 및 물리 링크로 구성된 네트워크의 경로를 식별(identify)하는 과정을 포함하며 네트워크 상에서 패킷들이 소스에서부터 목적지까지 전달된다. 구성요소들은 하나 또는 다수의 라우터의 하나 또는 다수의 포트에 연결되며, 각각의 포터들은 고유의 ID를 갖는다. 패킷들은 패킷을 목적지 구성요소로 전송하기 위해 중간 라우터들이 사용하는 목적지의 라우터와 포트 ID를 운반한다.
라우팅 기술의 예시들은 모든 패킷에 대하여 A에서 B까지 똑같은 경로를 수반하는 결정론적 라우팅(deterministic routing)을 포함한다. 이러한 라우팅은 네트워크의 상태로부터 독립적이고, 기저 네트워크에 존재할 수 있는 다양한 경로들 간 부하 균형을 맞추지 않는다. 그러나, 이러한 결정론적 라우팅은 하드웨어 구현될 수 있으며, 패킷 순서를 유지하고, 네트워크의 레벨 교착 상태(deadlock)가 없을 수 있다.
최단 거리 라우팅은 대기 시간 (latency)를 최소화하며, 그러한 라우팅은 소스에서 목적지까지의 홉 수를 감소시킨다. 이러한 이유로, 최단 거리는 두 구성요소 사이의 통신에 대한 최소 전력의 경로일 수도 있다. 차원-순서(dimension-order) 라우팅은 2D, 2.5-D, 및 3-D 망 네트워크에서 결정론적 최단 거리(deterministic shortest path) 라우팅의 한 형태이다. 이 라우팅 스키마(scheme)에서, 메세지들은 최종 목적지에 도달할 때까지 각 좌표들을 따라 특정한 순서로 전송된다. 예를 들어 3-D 망 네트워크에서, 한 메세지는 그것이 목적지 라우터의 X-좌표와 동일한 X-좌표를 갖는 라우터에 도달할 때까지 우선 X 차원(X dimension)을 따라 먼저 전송될 수 있다. 그 다음, 메세지는 회전하여 Y 차원(Y dimension)을 따라 전송되고, 최종적으로 회전하여 Z 차원을(Z dimension) 따라 메세지가 최종 목적지 라우터에 도달할 때까지 이동한다. 차원 순서 라우팅은 최소 회전과 최단 경로를 갖는 라우팅일 수 있다.
도 2a는 그림으로 설명된 2차원 망에서의 XY 라우팅의 예시이다. 더 구체적으로, 도 2a는 XY 라우팅이 노드 '34'에서 노드 '00'까지의 라우팅을 나타낸다. 도 2a 예시에서, 각 구성요소는 오직 하나의 라우터의 하나의 포트에만 연결되어 있다. 패킷은 먼저 목적지 노드와 동일한 x-좌표를 갖는 노드 '04'에 도달할 때까지 x축(x-axis)을 따라 전송된다. 그 다음, 패킷은 목적지 노드에 도달할 때까지 y축을 따라 전송된다.
하나 이상의 라우터 또는 하나 이상의 링크가 존재하지 않는 이종 망 토폴로지에서는, 특정한 소스 및 특정 노드 사이에서는 차원 순서 라우팅이 실현 가능하지 않을 수 있고, 대안이 되는 경로들이 선택될 수 있다. 대안이 되는 경로들은 가장 최단이거나 가장 최소한의 회전을 갖는 것은 아닐 수 있다.
소스 라우팅 및 테이블 기반 라우팅은 NoC에서 사용되는 다른 라우팅 옵션들이다. 적응 라우팅은 네트워크의 상태를 기반으로 동적으로 두 지점 간의 경로를 바꿀 수 있다. 이러한 형태의 라우팅은 분석하고 시행하기 복잡할 수 있다.
NoC 인터커넥트는 다수의 물리적 네트워크를 포함할 수 있다. 각각의 물리적 네트워크상에서 다수의 가상 네트워크가 존재할 수 있으며, 서로 다른 가상의 네트워크에서는 서로 다른 종류의 메세지가 전송될 수 있다. 이 경우, 각각의 물리 링크 또는 채널에서 다수의 가상 채널이 존재하며, 가상 채널 각각은 양 끝 포인트 모두에서 전용 버퍼를 가질 수 있다. 주어지는 어떠한 클록 싸이클에서, 물리적 채널에서 단지 하나의 가상 채널만이 데이터를 전송할 수 있다.
NoC 인터커넥트는 웜홀(wormhole) 라우팅을 사용할 수 있으며, 이 웜홀 라우팅에서는 큰 메세지 또는 패킷은 플릿(flits)(또한 흐름 제어 디지트 (digit)로 언급된다)으로 알려진 작은 조각으로 쪼개진다. 제1 플릿은 헤더 플릿으로(header flit) 페이로드 데이터와 함께 중요 메세지 레벨 정보(key message level info)와 패킷의 라우트(route)에 대한 정보를 보유하며, 이 메세지와 연관된 모든 후속 플릿에 대한 라우팅 양식을 마련한다. 선택 사항으로, 하나 또는 더 많은 본체 플릿은 헤드 플릿을 뒤따르며, 본체 플릿은 나머지 데이터 페이로드를 보유한다. 최후 플릿은 꼬리 플릿으로서 마지막 데이터 페이로드를 보유할 뿐만 아니라, 메세지에 대한 연결을 폐쇄하기 위해 몇몇 부기(bookkepping)를 수행한다. 웜홀 흐름 제어에서, 가상 채널이 종종 구현된다.
물리적 채널은 가상 채널(VS)라고 불리는 복수 개의 독립적인 논리 채널로 시간 구획된다. VC는 패킷을 라우팅하기 위해 다수의 독립 경로를 제공하지만, 물리적인 채널 상에서 시간-다중화된다. 가상 채널은 채널에 대해 패킷의 플릿들의 처리를 조정하는데 필요한 상태를 간직한다. 최소한으로, 라우트의 다음 홉을 위한 현재 노드의 출력 채널과 가상 채널의 상태(유휴 상태, 소스를 기다리는 상태, 활성화 상태)를 식별한다. 가상 채널은 또한, 현재 노드에 버퍼되는(buffered on) 패킷의 플릿들에 대한 포인터와 다음 노드에서 가용한 많은 플릿 버퍼들을 포함한다.
용어 "웜홀"은 채널상에서 메세지가 전달되는 방식에 관련한다; 다음 라우터의 출력 포트가 아주 짧아 전체 메세지가 도달하기 전에 수신된 데이터가 헤드 플릿에서 번역될 수 있다. 이는, 라우터가 헤드 플릿이 도착하자마자 빠르게 라우트를 설정하도록 하고 이어서 대화의 나머지로부터 옵트 아웃(opt out) 하도록 한다. 메세지가 플릿 단위로 전달되기 때문에, 메세지는 다른 라우터들에서 그 경로를 따라서 여러 개의 플릿 버퍼를 점유할 수 있고, 이는 벌레 (worm) 모양 이미지를 생성한다.
다양한 말단 포인트들 사이의 통신량에 기초하여 그리고 다양한 메세지들을 위해 사용되는 물리적 네트워크 및 라우트에 기초하여, NoC 인터커넥트의 다양한 물리적 채널들은 다양한 레벨의 부하(load)와 정체를 경험할 수 있다. NoC 인터커넥트의 다양한 물리적 채널의 용량(capacity)은 채널 폭(물리적 배선의 개수) 및 동작하는 클록 주파수(clock frequency)에 의해 결정된다. NoC의 다양한 채널들은 다른 클록 주파수들에서 작동할 수 있고, 다양한 채널들은 당해 채널의 대역폭 조건에 따라 다른 폭을 가질 수 있다. 채널의 대역폭 조건은 채널을 이동하는(traverse) 흐름 및 그 대역폭 값에 의해 결정된다. 다양한 NoC 채널을 이동하는 흐름은 다양한 흐름에 의해 점유되는 라우트에 의해 영향을 받는다. 망이나 토로스 NoC에서는, 소스 및 목적지 노드 사이의 홉의 길이 또는 개수가 동일한 라우팅 경로가 여러 개 존재할 수 있다. 예를 들어 도 2b 에서, 노드 34 및 00 사이의 표준 XY 라우트에 더해서, 추가로 가용한 라우트 예를 들어 XY 라우트 203 또는 소스에서 목적지까지 1회보다 많은 횟수의 방향 전환을 하는 여러 번 방향 전환 라우트 202가 존재할 수 있다.
다양한 트래픽 서행(traffic slow)에 대한 정적으로 할당된 라우트를 갖는 NoC에서, 다양한 채널에서의 부하는 다양한 흐름에 대해 지능적으로 라우트를 선택함으로써 제어될 수 있다. 트랙픽 량이 엄청나고 상당한 다양한 경로(path diversity)가 존재할 때, 모든 NoC의 채널들의 부하가 거의 균일하게 균형이 되도록 라우트가 선택될 수 있고 이로써 단일 포인트의 교착상태를 피할 수 있다. 일단 라우트가 선택되면, NoC 채널 폭은 채널상의 흐름의 대역폭 수요에 기반하여 결정될 수 있다. 불행히도, 채널폭은 타이밍 또는 배선 적체 (wiring congestion)같은 물리적인 하드웨어 디자인 제한으로 인해 임의적으로 커질 수 없다. 최대 채널 폭이 제한될 수 있고 이에 따라 임의의 한 NoC 채널의 최대 대역폭에 제한을 하가게 된다.
덧붙여, 메세지가 짧다면, 물리적으로 더 넓은 채널은 더 높은 대역폭을 달성하는데 도움이 되지 않을 수 있다. 예를 들어, 패킷이 64-비트의 폭의 단일 플릿 패킷이라면, 아무리 채널이 넓더라도, 그 채널은 모든 패킷이 비슷하다면 싸이클당 64-비트만을 전달할 것이다. 따라서, NoC에서 채널폭은 또한 메세지 크기에 의해서도 제한된다. 최대 NoC 채널폭에 대한 이와 같은 제한으로, 채널이 라우트의 균형에도 충분한 대역폭을 가지지 않을 수 있다.
전술한 대역폭의 문제를 해결하려면, 여러 개의 병렬의 물리적 NoC가 사용될 수 있다. 각 NoC는 층으로 불릴 수 있고 이로써 여러 층의 NoC 구조를 형성한다. 호스트는 NoC 층에 메세지를 주입한다; 메세지는 이어서 NoC 층 상의 목적지로 라우팅 되는데, 메세지는 NoC 층에서 호스트로 전달된다. 따라서 각 층은 서로에 대해서 어느 정도 독릭적으로 동작하고, 층들 사이의 상호작용은 단지 메세지의 주입 및 추출 시에만 일어난다. 도 3a는 두 층의 NoC를 도시한다. 여기서 NoC 두 층은 좌측 및 우측에 서로 인접하게 도시되었으며, 좌측 및 우측 도면 모두에 복제된 NoC에 호스트들이 연결된다. 이 예에서 호스트는 두 개의 라우터- R1으로 표시된 제1 층의 라우터와 R2로 표시된 제2 층의 라우터- 에 연결된다. 이 예에서, 다층 NoC는 3D NoC와 다르다. 즉, 다층이 하나의 실리콘 다이에 존재하고 높은 동일한 실리콘 다이 상의 호스트들 사이의 대역폭 수요를 충족하는데 사용된다. 메세지는 한 층에서 다른 층으로 가지 않는다. 명확성을 위해서, 본 출원은, NoC 들이 서로에 대해서 수직으로 도시되는 3D NoC와 구별하기 위해, 다층 NoC에 대해 수평으로 좌측 및 우측에 도시하는 것을 사용할 것이다.
도 3b에서는, 도시된 바와 같이 호스트는 각 층의 라우터 R1 및 R2에 각각 연결된다. 각 라우터는 방향 포트(directional port)(301)를 사용하여 자신이 속한 층에서 다른 라우터에 연결되고, 주입 및 추출 포트(302)를 사용하여 호스트에 연결된다. 브릿지-로직(303)은 나가는 메세지를 위한 NoC 층을 결정하기 위해 호스트와 두 NoC 층 사이에 위치하고, 호스트로부터 NoC 층으로 메세지를 보내고, 또한 두 NoC 층들로부터 오는 메세지들 사이의 중재 및 다중화(multiplexing)를 수행하고 호스트로 전달한다.
다층 NoC에서, 필요한 층의 개수는 여러 요인 예를 들어 시스템의 모든 트랙픽 양의 전체 대역폭 조건, 다양한 흐름에 사용되는 라우트, 메세지 크기 분포, 최대 채널 폭 등에 의존할 수 있다. NoC 인터커넥트에서 NoC 층의 개수가 디자인으로 정해지면, 다른 메세지들 및 트래픽 흐름들이 다른 NoC 층들에서 라우팅 될 수 있다. 덧붙여, 다른 층들이 라우터, 채널 및 연결의 개수에서 다른 토폴로지를 갖도록 NoC 인터커넥트를 디자인할 수 있다. 다른 층의 채널들은 채널을 이동하는 흐름 및 대역폭 조건에 기하여 다른 폭을 가질 수 있다.
NoC 인터컨넥트에서, 트래픽 프로파일이 균일하지 않고 어느 정도의 이종성 (예를 들어, 어떤 호스트는 다른 호스트들에 비해 더 자주 통신함)이 있다면, 인터커넥트의 성능은 NoC 토폴로지에 많이 의존할 것이고 서로에 대해서 다양한 호스트가 토폴로지에서 어디에 놓이는지 그리고 어떤 라우터에 연결되는지에 상당히 의존할 것이다. 예를 들어, 두 호스트가 빈번히 통신하고 더 높은 대역폭을 필요로 할 경우, 이들은 서로 인접하게 배치되어야 한다. 이는 통신의 대기시간을 줄일 것이고, 그래서 전체 평균 지연을 줄일 뿐만 아니라 이 통신의 높은 대역폭이 제공되어야만 하는 라우터 노드 및 링크 수를 줄인다. 서로 중첩하지 않고 모든 호스트가 2D 평면의 NoC 토폴로지에 꼭 들어맞아야만 하기 때문에, 서로 인접한 두 호스트를 이동한다면, 다른 호스트들이 멀리 떨어지게 된다. 따라서, 바른 이해상충이 이루어져야 하고, 비용 및 성능 메트릭스 (performance metrics)가 최적화되도록 쌍 단위 대역폭과 모든 호스트 사이의 지연 조건을 검사한 후에 호스트들이 배치되어야 한다. 비용 및 성능 메트릭스는 모든 통신하는 호스트 사이의 라우터 홉의 개수로 표시되는 평균 구조 지연, 또는 모든 쌍의 호스트 사이의 대역폭의 합 및 홉의 개수로 표시되는 거리, 또는 이들의 조합을 포함할 수 있다. 이 최적화 문제는 비-결정론적 다항식-시간 난해(NP-hard)가 될 것으로 알려져 있고, 경험 기반 접근법들이 종종 사용된다. 시스템에서 호스트들은 형태 및 크기가 다양하고 이는 호스트들을 2D 평면의 NoC 토폴로지에 배치하고, 호스트들을 여백이 거의 없이 최적으로 패키지하고 호스트들의 중첩을 피하는데 추가의 어려움을 부가한다.
NoC를 만들 때, 예를 들어, 전부가 본 명세서에서 모든 목적을 위해 참조로 포함되는 미국 특허출원 No.13/965,668 (변호사 사건번호: 120126-NET021)에 설명된 바와 같이, NoC에서 에이전트(agent)들 간의 캐시 코히어런시(cache coherency)를 유지할 필요가 있다. 캐시 코히어런시를 유지하기 위한 관련 기술은 캐시 코히어런트 데이터를 유지하기 위한 몇몇의 기술을 포함한다. 하나의 관련 기술 예시에서, 테이터의 하나의 범용(universal) 복사본은 유지되고 에이전트들은 오직 그 범용 복사본에만 참조한다. 또 다른 관련 기술 예시에서는, 에이전트들은 자신의 캐시를 포함할 수 있으며, 따라서 자신만의 테이터 복사본을 유지할 수 있다. 자기만의 캐시를 가질 수 있거나 없는 이종 시스템에서는, 위에 언급된 두 관련 기술이 다양한 캐시 코히어런시 프로토콜, 예를 들어 MESI (Modified Esclusive Shared Invalid), MSI, MOESI (Modified Owned Exclusive Shared Invalid)등을 이용하여 채용되고 관리될 수 있다.
캐시 코히어런시 프로토콜을 위한 상태들 간의 변환을 관리하기 위해서는, 관련 기술은 캐시 요구에 코히어런트 상태의 색인(lookup)으로 수행한다. 코히어런트 상태의 색인에 기반하여, 변환 요구는 기존의 캐시가 자신의 상태를 바꾸도록 기존의 캐시에 발행될 수 있다. 코히어런트 상태의 색인은 NoC와 관련된 모든 에이전트에게 방송하는 것 또는 현재의 상태를 추적할 수 있는 디렉토리 구조를 필요로 하고, 캐시들의 상태를 관리하기 위해 사용될 수 있다.
캐시 코히어런시를 유지하기 위한 하드웨어에 기반한 해결책은 관련 기술 시스템에서 사용되어왔다. 그러나, 이러한 하드웨서를 기반한 해결책들은 대게 고정된 구조로 제한이 되고, 고정 시스템을 위해 만들어졌다. 예를 들어, 알려진 개수 및 종류의 에이전트와 알려진 입출력 제어장치를 갖는 고정 시스템에서는, 고정 시스템을 관리하기 위해 특별히 제작된 캐시 코히어런시 인터페이스 (interface) NoC를 가질 수 있다. 그러나 만약 다른 종류의 에이전트들을 필요로 하면 (예를 들어, 내부 캐시를 사용할 수 있거나 없는 더 많거나 더 적은 다른 에이전트를 채용하는 것), 특별히 제작된 캐시 코히어런시 인터페이스 NoC는 다른 에이전트들을 충분히 인식하지 못할 수 있다. 그러므로 새로운 시스템의 사용자는 다른 하드웨어 해결책 (예를 들어, 다음 버전의 캐시 코히어런시 인터페이스 NoC)가 나올때 까지 기다려야 한다. 그래서, 캐시 코히어런시를 임의적인 하드웨어 시스템에서 관리할 수 있는 일반적인 하드웨어 해결책이 필요하다.
본 발명은 여기에 한정되는 것은 아니며 NoC 에이전트 인터페이스의 개수 및 캐시 코히어런시 제어장치의 개수를 포함하는 NoC의 구현 파라미터를 나타낼 수 있는 사양서에 의하여 NoC 인터커네트 구조를 디자인하는 것에 관련된다. 캐시 코히어런시 제어장치 및 NoC 에이전트 인터페이스의 플렉시블 식별(identification)은 사양서에서 NoC를 설정할 때 에이전트의 임의의 개수가 NoC와 연관되도록 허용한다.
본 발명의 측면들은 방법을 포함하며, 이 방법은 NoC 사양서에 기반하여 하나 이상의 NoC 에이전트 인터페이스를 구성하고; 그리고 NoC 에이전트의 사양서에 기반하여 하나 이상의 캐시 코히어런시 제어장치를 구성함을 포함한다. 또 다른 측면에서는, 캐시 코히어런스는 디렉토리에 의해 관리될 수 있는데, 하나 이상의 캐시 코히어런시 제어장치가 디렉토리의 일 부분과 연관될 수 있다.
본 발명의 측면은 프로세스를 실행하기 위한 명령들을 저장하는 컴퓨터 판독가능한 저장매체를 포함할 수 있다. 명령들은 매개 파라미터들 중에서 하나 이상의 에이전트, 하드웨어 요소, 대역폭 조건, 그리고 지연시간 조건과 관련된 정보를 위해 NoC 사양서를 처리하고, 그리고 NoC의 하나 이상의 하드웨어 요소를 캐시 코히어런시 제어장치 또는 NoC 에이전트 인터페이스로 결정하기 위해 이러한 처리된 정보를 사용함을 포함할 수 있다. 명령들은 사양서에 기반하여 필요에 따라 프로토콜, 버스 폭 및 다른 파라미터로 NoC 에이전트 인터페이스 그리고/또는 캐시 코히어런스 제어장치의 구성을 더 포함할 수 있다.
본 발명의 측면들은 NoC(network on chip) 구성을 위한 방법을 포함할 수 있고 이 방법은 다수의 코어를 이종 또는 이종 망, 링, 또는 토루스 배열에서 다수의 라우터로 상호 연결하고; 매개 파라미터들 중에서 하나 이상의 에이전트, 하드웨어 요소, 대역폭 조건, 지연시간과 관련된 정보를 위한 NoC 사양서를 처리하고; 그리고 NoC의 하나 이상의 하드웨어 요소를 캐시 코히어런시 제어장치 또는 NoC 에이전트 인터페이스로 결정하기 위해 이러한 처리된 정보를 사용함을 포함할 수 있다. 이 방법은 사양서에 기반하여 필요에 따라 프로토콜, 버스 폭 및 다른 파라미터로 NoC 에이전트 인터페이스 그리고/또는 캐시 코히어런스 제어장치의 구성함을 더 포함할 수 있다.
본 발명의 측면들은 시스템을 포함할 수 있고, 이 시스템은 NOC 사양서 처리 모듈, NOC 에이전트 인터페이스 구성 모듈, 및 캐시 코히어런시 제어장치 구성 모듈을 포함할 수 있다. NOC 사양서 처리 모듈은 NoC 에이전트, 하드웨어 요소, 대역폭 조건, 지연시간 조건 중 하나 또는 그 조합에 관련된 정보를 회수하고 처리하기 위해 NoC 사양서를 처리하도록 구성될 수 있다. NOC 에이전트 인터페이스 구성 모듈은, 하드웨어 요소 기반 NoC 에이전트들의 리스로부터 하나 이상의 NoC 에이전트 인터페이스를 결정하도록 구성될 수 있고, 그리고 다른 매개 변수들 중에서 프로토콜, 버스 폭 중 하나 또는 그 조합에 기반하여 NoC 에이전트 인터페이스를 구성하도록 구성될 수 있다. 반면에, 캐시 코히어런시 제어장치 구성 모듈은 하드웨어 요소들 리스트에서 캐시 코히어런시 제어장치들을결정하고 그리고 나서 사양서에 기반하여 필요에 따라 여기에 한정되는 것은 아니며 프로토콜, 버스 폭, 및 다른 파라미터를 포함하는 하나 또는 그 이상의 파라미터에 기반하여 결정된 캐시 코히어런시 제어장치를 구성하도록 구성될 수 있다.
도 1a 내지 도 1d는 각각 양방향 링, 2차원 그물망, 2차원 토루스 및 3차원 그물망 NoC 토폴로지를 도시한다.
도 2a는 종래의 2차원 그물망에서 XY 라우팅의 예를 도시한다.
도 2b는 소스 노드 및 목적지 노드 사이의 서로 다른 세 개의 라우트를 도시한다.
도 3a는 종래의 두 층 NoC 인터커넥트의 예를 도시한다.
도 3b는 종래의 호스트 및 여러 NoC 층 사이의 브릿지 로직을 도시한다.
도 4는 본 발명의 구현의 예시에 따른 구성 가능한 NoC를 도시한다.
도 5는 본 발명의 구현의 예시에 따른 상응하는 캐시 코히어런시 제어장치에 기반하여 부분들로 나누어진 예시적인 디렉토리를 도시한다.
도 6a는 여러 개의 인코딩을 갖는 디렉토리의 예를 도시한다.
도 6b는 본 발명의 구현의 예시에 따른, 디렉토리 내의 연관된 엔트리 세트의 예를 도시한다.
도 7은 본 발명의 구현의 예시에 다른, NoC를 생성하고 구성하는 흐름도이다.
도 8은 본 명세서에 설명된 본 발명의 예시적인 구현들이 구현될 수 있는 컴퓨터/서버 블록 다이어그램을 도시한다.
이하의 상세한 설명은 본 출원의 도면들 및 예시적인 구현들에 대해 상세한 명을 제공한다. 도면들 사이의 중복 구성들에 대해 설명 및 참조번호는 명확성을 위해 생략된다. 본 발명에 대한 설명에서 사용된 용어들은 예로서 제공된 것으로서 제한적으로 사용된 것은 아니다. 예를 들어, "자동적"이라는 용어의 사용은, 완전 자동적인 구현이거나 본 출원의 구현들을 실행하는데 통상의 지식을 가진 자의 원하는 구현에 따라서, 구현의 어떤 양상들에 대한 사용자 또는 관리자 제어를 수반하는 반-자동적인 구현을 포함한다.
본 명세서에서 설명된 예시적 구현들은 예를 들어 도 1 내지 3의 토폴로지에서 도시된 바와 같이, 구성(구현) 가능한(configurable) 하드웨어 요소 (예를 들어, 호스트)의 배열(arranement)을 포함하는 구성 가능한 NoC에 관련된다. 제안된 NoC 인터커넥트 구조는 NoC 에이전트 인터페이스(agent interface) 및 캐시 코히어런시 제어장치(cache coherency controller) 개수를 포함하나 이에 제한되지 않는 NoC의 구현 파라미터들을 나타낼 수 있는 사양서(specification)에 의하여 구성될 수 있다. 이는, 사양서로부터 NoC를 구성할 때, 플렉시블한(flexible) 또는 임의의 개수의 에이전트가 NoC와 연관되도록(associated) 허용한다. 일 측면에서, 본 명세서에 개시된 NoC는, 각 IP 블록이 메모리 통신 제어장치와 네트워크 인터페이스 제어장치를 통해 라우터에 적응되도록(adapted), IP(integrated processor) 블록, 라우터, 메모리 통신 제어장치(memory communications controller), 그리고 네트워크 인터페이스 제어장치를 포함하도록 구현할 수 있다. 다른 측면에서, 메모리 통신 제어장치는 각 메모리 통신 제어장치가 IP 블록과 메모리 간의 통신을 제어하도록 구t성될 수 있는 하나 이상의 캐시 코히어런시 제어장치를 포함할 수 있고, 그리고 각각의 네트워크 인터페이스 제어장치는 라우터를 통해 IP 블록들 간 통신을 제어할 수 있으며 여기서, 메모리 통신 제어장치는 메모리 액세스 명령을 실행하고 이 메모리 액세스 명령에 의해 결정된(addressed) 캐시 라인의 상태를 결정하도록 구성될 수 있다. 그뿐만 아니라, 캐시 라인의 상태는 공유되거나 전용이거나(exclusive) 또는 인식 불가능할 수 있다.
대역폭 조건과 지연시간 조건(latency requirement)을 충족하기 위해서는, 하드웨어 요소(hardware element)는 확장성(scalability)을 위해 배열(array)로 마련될 수 있다. 하나 이상의 하드웨어 요소는 캐시 사양서의 에이전트 개수와 대역폭 조건에 기반하여 캐시 코히어런시 제어장치로써 구성될 수 있다. NoC에 채용된 캐시 코히어런시 제어장치의 개수는 사양서에 기반하여 플렉시블하게 결정될 수 있다.
도 4는 예시적 구현에 따른 구성 가능한 NoC(400)를 도시한다. 이 예시적인 구현에서, 몇몇의 하드웨어 요소는, 사양서에 기반하여, NoC 에이전트 인터페이스들 (402-1, 402-2, 402-3,...402-n)로 캐시 코히어런시 제어장치들(404-1, 404-2, 404-3,...404-n)로 구성될 수 있으며, 이후부터 각각 집합적으로는 에이전트 인터페이스(402)로, 캐시 코히어런시 제어장치(404)로 지칭될 수 있고, NoC에서의 입력/출력 채널은 상응하는 하드웨어 요소와 연관될 수 있다. NoC 에이전트 인터페이스(402) 그리고/또는 캐시 코히어런시 제어장치(404)로 하드웨어의 구성은 NoC를 생성하기 위해 사용된 사양서에 기반을 둘 수 있다. 하드웨어 요소가 NoC 에이전트 인터페이스(402) 및 캐시 코히어런시 제어장치(404) 중 하나로 구성될 수 있으므로, NoC는 하드웨어 시스템에 사용되는 임의의 종류의 그리고 임의의 개수의 에이전트와 연관될 수 있다. NoC 에이전트 인터페이스(402)는 시스템에서 하나 이상의 하드웨어 에이전트와 연관되도록 구성될 수 있고, 하드웨어 에이전트와의 통신이 가능하도록 자유롭게 플렉시블하게 구성될 수 있다. 반면에 캐시 코히어런시 제어장치(404)는, 하드웨어 에이전트들 간에 캐시 코히어런시를 유지하도록 구성될 수 있고, 각 NoC 에이전트 인터페이스와 연관된 임의의 종류나 임의의 개수의 에이전트를 위한 캐시 코히어런시를 유지하도록 플렉시블하게 구성될 수 있다.
NoC 에이전트 인터페이스(402)로 구성된 하드웨어 요소들을 위해, 인터페이스 요소(402)는 어떠한 에이전트와도 통신을 가능하게 할 수 있어야 한다. 예시적인 구현에서, 하나 이상의 NoC 에이전트 인터페이스는 여러 프로토콜 예를 들어, MESI, MSI, MOESI, 등을 지원하도록 구성될 수 있다. 이러한 지원은 통상의 지식을 가진 자에게 잘 알려진 프로토콜의 모든 기능을 포함하는 범용 프로토콜(universal protocol)에 기반할 수 있다. 범용 프로토콜의 기능들의 서브세트 또는 범용 프로토콜의 기능들의 변경이 사양서에 설명된 각 에이전트를 위해 사용될 수 있다. 예를 들어, MOESI 기반 범용 프로토콜로 구성된 NoC 에이전트 인터페이스(402)는 MESI 및 MSI의 기능들을 처리하도록 구성될 수 있고, 그리고 NoC 에이전트 인터페이스(402)는 또한 이 기능들을 처리하기 위해 MOSEI 프로토콜의 서브세트를 활용하도록 구성될 수 있다. 구성 가능한 NoC 에이전트 인터페이스(402)는 사양서에서 상응하는 에이전트의 조건 (예를 들어, 대역폭, 지연시간 등)의 실행을 위해 다른 버스 폭을 지원하도록 구현될 수 있다.
한 측면에서 NoC의 하드웨어 요소들은, 더 나아가 활용된 에이전트의 개수와 종류에 따라, 필요하다면 원하는 구현에 따라 캐시 코히어런스 제어장치(404)로 구성될 수 있다. 그리하여 NoC는 디렉토리를 관리하고 연관된 에이전트 로직을 제어하기 위해 하나 이상의 캐시 코히어런시 제어장치(404)를 포함할 수 있다. 사용된 몇몇의 캐시 코히어런시 제어장치(404) 및 그의 구성은 사양서의 에이전트 개수에 기반할 수 있고, 또한 코히어런트 대역폭, 지연시간, 그리고 처리량 조건에 기반할 수 있다.
현존하는 공통의 디렉토리들은, 공통 디렉토리에 대한 룩업(lookup)의 개수가 증가함에 따라 지연시간 문제를 초래할 수 있는 캐시를 관리하기 위해 활용된다. 따라서, 본 출원의 예시적 구현들에서, 캐시 코히어런시 제어장치(404)로 이용되는 각각의 하드웨어 요소는 주소 슬라이싱(address slicing)을 통해 디렉토리의 일 부분을 관리하도록 구현될 수 있다. 디렉토리는 NoC 에이전트들의 캐시 코히어런스를 관리하도록 구현될 수 있는바, 여기서 각 캐시 코히어런시 제어장치가 디렉토리의 일 부분에 연관될 수 있다. 이러한 디렉토리들은 방송기반 디렉토리들일 수 있고 일 측면에서 해머 프로토콜 (Hammer protocol)같은 프로토콜을 따를 수 있다. 도 5는 예시적인 구현에 따른 상응하는 캐시 코히어런시 제어장치를 기반으로 부분들로 나뉜 예시적인 디렉토리(500)를 도시한다. 디렉토리(500)는 데이터를 함유하는 캐시 내의 주소를 나타내는 주소 태그(address tag), 테이터를 포함한 캐시를 갖는 에이전트를 나타내는 비트 벡터(bit vector), 그리고 상태(예를 들어, 읽기 전용, 읽기/쓰기 등)에 대한 엔트리들을 포함할 수 있다. 일 측면에서는, 비트 벡터는 사양서에 따라 플렉시블하게 구성될 수 있다. 예를 들어, NoC가 64개의 에이전트와 연관된다면, 비트 벡터는, 각 비트가 데이터가 상응하는 에이전트에 유지되는지 유무를 나타내는 64 비트 길이의 벡터를 가질 수 있다. 주소 슬라이싱을 포함하는 예시에서, NoC 의 하나의 캐시 코히어런시 제어장치는 주소 블록 '000'을 관리하도록 구성될 수 있고, 다른 하나는 주소 블록 '001', '010', 그리고 '011'을 관리하도록 구성될 수 있고, 또 다른 하나는 주소 블록 '100' 및 '101' 등을 관리하도록 구성될 수 있다. 캐시 코히어런시 제어장치에 대한 디렉토리의 주소 슬라이싱은 따라서 임의의 개수의 에이전트들을 충족하기 위해 NoC의 확장성에서 유연성을 제공한다. 일 측면에서는, 캐시 코히어런시 제어장치는 디렉토리에서 캐시 라인의 상태를 회수(retrieve)하고 당해 캐시 라인의 상태를 요청하는 메모리 통신 제어장치에 반환하도록 구성될 수 있다. 또 다른 측면에서는, 디렉토리(500)는 각각의 캐시 라인에서 각 캐시 라인 색인 및 캐시 라인을 식별하는 캐시 라인 태그를 포함할 수 있다.
또 다른 예시적인 구현에서, 디렉토리(500)는 두 개 이상의 차원으로 확장될 수 있고, 구현 중에 여러 개의 인코딩은 디렉토리에 사용될 수 있다. 예를 들어, 디렉토리(500)는 비트 벡터를 포함한 제1 포맷 또는 상응하는 엔트리를 가리키는 포인터를 포함하는 제2 포맷을 위한 엔트리들을 포함할 수 있다. 도 6a는 여러 개의 인코딩을 포함하는 디렉토리의 예시를 도시한다. 비트 벡터들이 결합될 수 있을 경우, 포인터가 예를 들어 비트 벡터가 복제되었을 때 비트 벡터 대신에 사용될 수 있다. 디렉토리에 여러 개의 인코딩을 구현할 때 디렉토리의 면적은 감소 시킬수 있고, 이에 따라, NoC와 연관된 에이전트의 수가 증가함에 따라 더 나은 확장성을 허용한다. 포인터는, 주소와 비트 벡터들을 세트 연관(set association) 방식으로 연관시키는 도 6b의 테이블(650)에 도시된 바와 같이 결합된 비트 벡터 엔트리들을 가리킬 수 있다. 포인터에 의해 참조 되는 인덱스는 따라서 연관된 주소를 찾기 위해 디렉토리 내에서 상응하는 주소를 참조한다. 주소를 찾으면, 비트 벡터에 도달할 때까지, 인접한 엔트리들을 따라서 디렉토리가 탐색(traverse) 될 수 있다. 따라서 이 구현은, 인코딩과 차원이 섞인 임의의 2D 디렉토리를 가능하게 한다. 그러므로, 디렉토리의 크기와 모양은 세트 연관성을 수용하기 위해 임의로 조정될 수 있다.
디렉토리의 세트 연관을 수반하는 예시적인 구현들에서, 쿠크 해시 (cuckoo hash)에 의하여 더 많은 조직이 생길 수 있다. 예를 들어, 도 6b에 도시된 엔트리는, 다른 인덱스 메커니즘을 갖는 다른 해시 테이블로 나뉠 수 있고 여기서 도 6a에 도시된 포인터가 해시 인덱스를 가리킬 수 있다. 쿠크 해싱은 해시 테이블에 엔트리를 포핑(popping) 및 다시 대기(re-queuing) 함으로써 충돌을 해결할 수 있다.
도 7은 예시적인 구현에 따른 NoC를 생성하고 구성하는 흐름도(700)이다. 에이전트, 대역폭 조건 및 지연시간 조건 등에 관한 정보를 위해 사양서가 처리되었을 때, 흐름은 701에서 시작한다. 702에서는, NoC 토폴로지가 결정되고 하나 이상의 NoC 하드웨어 요소가 캐시 코히어런시 제어장치 또는 NoC 에이전트 인터페이스로 구성된다. 703에서는, NoC 에이전트 인터페이스 그리고/또는 캐시 코히어런시 제어장치가 프로토콜, 버스폭, 그리고 때에 따라 사양서에 기반하여 다른 파라미터로 구성된다. 단계 703은 NoC 에이전트의 사양서에 기반하여 캐시 코히어런시 제어장치의 구성을 더 포함할 수 있다.
도 8은 예시적인 구현들이 구현될 수 있는 예시적인 시스템(800)을 도시한다. 컴퓨터 시스템(800)은 I/O 유닛(835), 저장 매체(860), 그리고 통상의 지식을 가진 자에게 잘 알려진 하나 이상의 유닛을 실행 가능한 프로세서(810)를 포함할 수 있는 서버(805)를 포함한다. 용어 "컴퓨터 판독가능한 매체"는 실행을 위해 프로세서(810)에 명령들(instructions)을 제공하는데 참여하는 임의의 매체를 가리키며, 이것은 여기에 한정되는 것은 아니며 광 디스크, 자기 디스크, 읽기전용메모리, 랜덤액세스 메모리, 고체 상태 장치 및 드라이브, 또는 다른 형태의 전자적 정보를 저장하기에 적절한 유형 매체, 또는 반송파를 포함할 수 있는 컴퓨터 판독가능한 신호 매체 같은 컴퓨터 판독가능한 저장 매체 형태일 수 있다. I/O 유닛은 키보드, 마우스, 터치 장치 또는 음성 명령 같은 입력 장치를 사용할 수 있는 사용자 인터페이스(840) 및 조작자 인터페이스(845)로부터의 입력을 처리한다.
서버(805)는 또한 외부 저장수단(850)에 연결되어 있고, 외부 저장수단(850)은 제거가능한 저장수단, 예를 들어, 휴대용 하드 드라이브, 광 매체(CD 또는 DVD), 디스크 매체 또는 컴퓨터가 실행 코드를 판독할 수 있는 임의 다른 매체를 포함할 수 있다. 서버는 또한 사용자로부터의 추가 정보를 요청할 뿐만 아니라 사용자에게 출력 데이터 및 다른 정보를 표시하는 디스플레이 같은 출력 장치(855)에 연결될 수 있다. 서버(805)로부터 사용자 인터페이스(840), 조작자 인터페이스(845), 외부 저장수단(850), 그리고 출력 장치(855)로의 연결은 무선 프로토콜을 통해서, 예를 들어, 802.11 표준, Bluetooth®, 또는 셀룰러 프로토콜을 통해서 또는 물리직인 전송 매체를 통해서, 예를 들어, 케이블 또는 광섬유를 통해서 이루어질 수 있다. 출력 장치(855)는 따라서 사용자와 상호작용하기 위한 입력 장치로서도 작용할 수 있다.
프로세서(810)는 하나 이상의 모듈을 실행할 수 있다. 시스템(800)은 NoC 사양서 처리 모듈(811), NoC 에이전트 인터페이스 구성 모듈(812), 그리고 캐시 코히어런시 제어장치 구성 모듈(813)을 포함할 수 있다. NoC 사양서 처리 모듈(811)은, 다른 속성들 중에서, NoC 에이전트, 하드웨어 요소, 대역폭 조건, 지연시간 조건의 하나 또는 그 조합에 관련된 정보를 회수하고 처리하기 위해 NoC 사양서를 실행하도록 구성될 수 있다. NoC 에이전트 인터페이스 구성 모듈(812)은 NoC 에이전트에 기반한 하드웨어 요소들의 리스트로부터 하나 이상의 NoC 에이전트 인터페이스를 결정하도록 구성될 수 있고, 매개 파라미터 예를 들어 다른 매개 변수들 중에서, 프로토콜 및 버스 폭 중 하나 또는 그 조합에 기반한 NoC 에이전트 인터페이스를 구성하도록 구성될 수 있다.
캐시 코히어런시 제어장치 구성 모듈(813)은 하드웨어 요소들의 리스트로부터 캐시 코히어런시 제어장치를 결정하고, 이어서 여기에 한정되는 것은 아니며 프로토콜, 버스 폭을 포함하는 파라미터 하나 또는 그 이상에 기반하여 그리고 필요에 따라 사양서에 기반한 다른 파라미터들에 기반하여 결정된 캐시 코히어런시 제어장치를 구성하도록 구성될 수 있다. 일 측면에서, 캐시 코히어런시 제어장치 및 NoC 에이전트 인터페이스가 따를 수 있는 프로토콜은 MESI(Modified Exclusive Shared Invalid), MSI 및 MOESI(Modified Owned Exclusive Shared Invalid)를 포함한다. 모듈(813)은 NoC 에이전트의 캐시 코히어런스를 관리하는 디렉토리를 포함하고 실행하도록 더 구성될 있고 각 캐시 코히어런시 제어장치는 디렉토리의 일 부분과 연관된다.
몇몇 예시적인 구현에서, 컴퓨터 시스템(800)은 컴퓨팅 환경, 예를 들어, 클라우드에 구현될 수 있다. 이러한 컴퓨팅 환경은 하나 이상의 다른 장치로 구현되거나 네트워크에 의해 하나 이상의 다른 장치에 연결되고 또한 하나 이상의 저장 매체에 연결되는 컴퓨터 시스템(800)을 포함할 수 있다. 이러한 장치들은 이동 가능한 사용자 기기(UE) (예를 들어, 스마트폰, 자동차나 다른 기계에 있는 장치, 사람 및 동물이 휴대하는 장치, 및 비슷한 것들), 모바일 장치들 (예를 들어, 테블릿, 노트북, 랩탑, 개인 컴퓨터, 휴대 가능한 텔레비전, 라디오, 및 비슷한 것들), 그리고 고정된 사용을 위해 만들어진 장치들 (예를 들어, 데스크탑, 다른 컴퓨터들, 안내소, 하나 이상의 프로세서가 내장된 그리고/또는 하나 이상의 프로세서에 연결된 텔레비전, 라디오 등)을 포함할 수 있다.
이들 알고리즘에 의한 설명 및 심볼에 의한 표현들은 데이터 처리 기술 분야에서 통상의 기술자가 다른 통상의 기술자에게 그들의 혁신의 정수를 가장 효과적으로 전달하기 위해 사용되는 수단들이다. 알고리즘은 원하는 최종 상태 또는 결과로 이어지는 일련의 정의된 단계들이다. 예시적인 구현들에서, 수행된 동작들은 유형의 결과를 달성하기 위해 유형의 양(tangible quantity)의 물리적인 조작을 필요로 한다.
더욱이, 본 출원의 다른 구현들은 여기에 개시된 예시적인 구현들의 실행과 명세서에 대한 고찰로부터 통상의 기술자에게 자명할 것이다. 설명된 예시적인 구현들의 다양한 구성들 그리고/또는 측면들은 단독으로 또는 임의의 조합으로 사용될 수 있다. 명세서 및 예시들은 예시적인 것으로 간주 되어야 하고 본 출원의 진정한 범위 및 정신은 다음의 특허청구범위 청구항들에 의해 표현된 것이다.

Claims (14)

  1. 사양서에 기반하여 구성된 하나 이상의 시스템 에이전트 인터페이스;
    시스템 에이전트의 상기 사양서에 기반하여 구성된 하나 이상의 캐시 코히어런시 제어장치를 포함하는 구성 가능한 NoC.
  2. 청구항 1에 있어서,
    상기 시스템 에이전트의 캐시 코히어런스를 관리하도록 구성된 디렉토리를 더 포함하고,
    상기 하나 이상의 캐시 코히어런시 제어장치 각각은 상기 디렉토리의 일 부분과 연관되는 구성 가능한 NoC.
  3. 청구항 2에 있어서,
    상기 디렉토리는 다수의 주소를 포함하고, 각 주소는 캐시를 갖는 시스템 에이전트의 하나 이상의 캐시의 주소와 상응하고,
    상기 디렉토리는 상기 시스템 에이전트의 캐시들 각각에서 주소의 유효성을 나타내는 비트 벡터들을 더 포함하는 구성 가능한 NoC.
  4. 청구항 3에 있어서,
    쿠크 해싱(cuckoo hashing)에 의해 상기 디렉토리를 관리하도록 구성된 해시 테이블(hash table)를 더 포함하는 구성 가능한 NoC.
  5. 청구항 1에 있어서,
    상기 하나 이상의 시스템 에이전트 인터페이스는 여러 개의 프로토콜을 지원하도록 구성되고,
    상기 하나 이상의 시스템 에이전트 인터페이스 각각은 상기 사양서에 기반하여 상기 여러 개의 프로토콜 중 적어도 하나를 지원하도록 구성된 구성 가능한 NoC.
  6. 청구항 1에 있어서,
    상기 하나 이상의 캐시 코히어런시 제어장치는 플렉시블한 프로토콜을 사용하도록 구성되고,
    상기 하나 이상의 캐시 코히어런시 제어장치 각각은, 상기 하나 이상의 시스템 에이전트 인터페이스 중 대응하는 시스템 에이전트 인터페이스와 연관된 적어도 하나의 프로토콜과의 통신을 가능하게 하기 위해 플렉시블한 프로토콜의 서브세트를 사용하도록 구성되는 구성 가능한 NoC.
  7. 청구항 1에 있어서,
    상기 하나 이상의 시스템 에이전트 인터페이스는 다른 버스 폭을 지원하도록 구성되고,
    상기 하나 이상의 시스템 에이전트 인터페이스의 각 버스의 폭은 상기 사양서에 기반하여 구성되는 구성 가능한 NoC.
  8. 사양서를 기반으로 하나 이상의 NoC 에이전트 인터페이스를 구성하고;
    상기 NoC 에이전트의 상기 사양서에 기반하여 하나 이상의 캐시 코히어런시 제어장치를 구성함을 포함하는 구성 가능한 NoC를 위한 방법.
  9. 청구항 8에 있어서,
    디렉토리로 상기 NoC의 캐시 코히어런스를 관리함을 더 포함하고,
    상기 하나 이상의 캐시 코히어런시 제어장치 각각은 상기 디렉토리의 일 부분과 연관되는 방법.
  10. 청구항 9에 있어서,
    상기 디렉토리는 다수의 주소를 포함하고, 각 주소는 캐시를 갖는 NoC 에이전트의 하나 이상의 캐시의 엔트리와 상응하고,
    상기 디렉토리는 상기 하나 이상의 캐시 각각에서 캐시의 유효성을 나타내는 비트 벡터들을 더 포함하는 방법.
  11. 청구항 10에 있어서,
    해시 테이블로 쿠크 해싱(cuckoo hasing)에 의해 상기 디렉토리를 관리함을 더 포함하는 방법.
  12. 청구항 8에 있어서,
    상기 하나 이상의 NoC 에이전트가 여러 개의 프로토콜을 지원하도록 구성하고;
    상기 하나 이상의 NoC 에이전트 인터페이스가 상기 사양서에 기반하여 상기 여러 개의 프로토콜 중 적어도 하나를 지원하도록 구성함을 더 포함하는 방법.
  13. 청구항 8에 있어서,
    상기 하나 이상의 캐시 코히어런시 제어장치가 플렉시블한 프로토콜을 사용하도록 구성하고;
    상기 하나 이상의 캐시 코히어런시 제어장치 각각이 상기 하나 이상의 NoC 에이전트 인터페이스 중 대응하는 NoC 에이전트 인터페이스와 연관된 적어도 하나의 프로토콜과의 통신을 가능하게 하기 위해 플렉시블한 프로토콜의 서브세트를 사용하도록 구성함을 더 포함하는 방법.
  14. 청구항 8에 있어서,
    상기 하나 이상의 NoC 에이전트 인터페이스가 다른 버스 폭을 지원하도록 구성함을 더 포함하고,
    상기 하나 이상의 NoC 에이전트 인터페이스의 각 버스의 폭은 상기 사양서에 기반하여 구성되는 방법.

KR1020167017440A 2013-12-30 2014-10-16 플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트 KR20160102445A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/144,321 2013-12-30
US14/144,321 US20150186277A1 (en) 2013-12-30 2013-12-30 Cache coherent noc with flexible number of cores, i/o devices, directory structure and coherency points
PCT/US2014/060886 WO2015102725A1 (en) 2013-12-30 2014-10-16 Cache coherent noc with flexible number of cores, i/o devices, directory structure and coherency points

Publications (1)

Publication Number Publication Date
KR20160102445A true KR20160102445A (ko) 2016-08-30

Family

ID=53481911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167017440A KR20160102445A (ko) 2013-12-30 2014-10-16 플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트

Country Status (4)

Country Link
US (1) US20150186277A1 (ko)
JP (1) JP6383793B2 (ko)
KR (1) KR20160102445A (ko)
WO (1) WO2015102725A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US9886382B2 (en) * 2014-11-20 2018-02-06 International Business Machines Corporation Configuration based cache coherency protocol selection
EP3171418A1 (en) * 2015-11-23 2017-05-24 Novaled GmbH Organic semiconductive layer comprising phosphine oxide compounds
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
NO344681B1 (en) 2017-09-05 2020-03-02 Numascale As Coherent Node Controller
CN108694156B (zh) * 2018-04-16 2021-12-21 东南大学 一种基于缓存一致性行为的片上网络流量合成方法
JP7003021B2 (ja) * 2018-09-18 2022-01-20 株式会社東芝 ニューラルネットワーク装置
CN110086709B (zh) * 2019-03-22 2021-09-03 同济大学 针对超大规模片上网络容忍众故障的确定性路径路由方法
CN116578523B (zh) * 2023-07-12 2023-09-29 上海芯高峰微电子有限公司 片上网络系统及其控制方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US7546422B2 (en) * 2002-08-28 2009-06-09 Intel Corporation Method and apparatus for the synchronization of distributed caches
US7382154B2 (en) * 2005-10-03 2008-06-03 Honeywell International Inc. Reconfigurable network on a chip
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8131944B2 (en) * 2008-05-30 2012-03-06 Intel Corporation Using criticality information to route cache coherency communications
GB2491588A (en) * 2011-06-06 2012-12-12 St Microelectronics Res & Dev Multiprocessor with different cache coherency protocols between different parts
US20130073811A1 (en) * 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Region privatization in directory-based cache coherence
WO2013063484A1 (en) * 2011-10-28 2013-05-02 The Regents Of The University Of California Multiple-core computer processor
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
US20130318308A1 (en) * 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip
US9229803B2 (en) * 2012-12-19 2016-01-05 Advanced Micro Devices, Inc. Dirty cacheline duplication

Also Published As

Publication number Publication date
WO2015102725A1 (en) 2015-07-09
JP2017502418A (ja) 2017-01-19
US20150186277A1 (en) 2015-07-02
JP6383793B2 (ja) 2018-08-29

Similar Documents

Publication Publication Date Title
KR101707655B1 (ko) 타이밍 그리고/또는 성능을 만족시키는 NoC 채널의 자동 파이프라인 형성
KR20160102445A (ko) 플랙시블한 코어 개수를 갖는 캐시 코히어런트 NoC, I/0 소자, 디렉토리 구조 및 코히어런트 포인트
US8667439B1 (en) Automatically connecting SoCs IP cores to interconnect nodes to minimize global latency and reduce interconnect cost
US10110499B2 (en) QoS in a system with end-to-end flow control and QoS aware buffer allocation
US9244845B2 (en) System and method for improving snoop performance
US9294354B2 (en) Using multiple traffic profiles to design a network on chip
JP6060316B2 (ja) NoCを構成するための方法及びシステム並びにコンピュータ可読記憶媒体
US9477280B1 (en) Specification for automatic power management of network-on-chip and system-on-chip
US9253085B2 (en) Hierarchical asymmetric mesh with virtual routers
US9473388B2 (en) Supporting multicast in NOC interconnect
US10554496B2 (en) Heterogeneous SoC IP core placement in an interconnect to optimize latency and interconnect performance
US9160627B2 (en) Multiple heterogeneous NoC layers
US10218580B2 (en) Generating physically aware network-on-chip design from a physical system-on-chip specification
US10313269B2 (en) System and method for network on chip construction through machine learning
US20180183672A1 (en) System and method for grouping of network on chip (noc) elements
US9762474B2 (en) Systems and methods for selecting a router to connect a bridge in the network on chip (NoC)
US9774498B2 (en) Hierarchical asymmetric mesh with virtual routers
US20180198682A1 (en) Strategies for NoC Construction Using Machine Learning

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application