KR20220102160A - 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법 - Google Patents

패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20220102160A
KR20220102160A KR1020210003097A KR20210003097A KR20220102160A KR 20220102160 A KR20220102160 A KR 20220102160A KR 1020210003097 A KR1020210003097 A KR 1020210003097A KR 20210003097 A KR20210003097 A KR 20210003097A KR 20220102160 A KR20220102160 A KR 20220102160A
Authority
KR
South Korea
Prior art keywords
buffer
packets
output terminal
packet
output
Prior art date
Application number
KR1020210003097A
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 삼성전자주식회사
Priority to KR1020210003097A priority Critical patent/KR20220102160A/ko
Priority to US17/644,720 priority patent/US11652761B2/en
Publication of KR20220102160A publication Critical patent/KR20220102160A/ko
Priority to US18/311,181 priority patent/US20230269205A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • H04L49/309Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5672Multiplexing, e.g. coding, scrambling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명에 따른 네트워크 온 칩의 동작 방법은, 입력단으로부터 수신된 패킷들을 버퍼에 저장하는 단계, 패킷들의 각각을 출력하는 출력단의 오더링 큐에 상기 패킷들의 각각이 상기 버퍼에 저장된 버퍼 위치를 저장하는 단계, 및 상기 출력단에서 상기 버퍼 위치에 따라 순차적으로 패킷들을 출력하는 단계를 포함할 수 있다.

Description

패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법{SWITCH FOR TRANSMITTING PACKET, NETWORK ON CHIP HAVING THE SAME, AND OPERATING METHOD THEREOF}
본 발명은 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 그것의 동작 방법에 관한 것이다.
일반적으로, NoC(Network on Chip)는 SoC(System on Chip) 칩 내부의 여러 가지 기능 모듈들 사이를 연결하는 장치이다. 기존의 경우 버스를 이용한 연결방식이 대부분이지만, 칩 집적기술이 발달하면서 동일한 크기의 칩 내에 더 많은 수의 모듈들이 들어갈 수 있다. 따라서 기존의 버스 기반 방식은 많은 병목현상을 초래한다. 컴퓨터들이 네트워크를 통해서 인터넷에 연결되어 있듯이, 이 칩 내의 모듈간 연결에 네트워크의 개념을 도입한 것이 NoC이다.
본 발명의 목적은 전송 대역폭을 확장하는 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 스위치는, 제 1 입력단으로부터 수신된 제 1 패킷들을 저장하는 제 1 버퍼; 제 2 입력단으로부터 수신된 제 2 패킷들을 저장하는 제 2 버퍼; 상기 제 1 패킷들 중에서 제 1 출력단으로 향하는 제 1 내부 패킷들의 제 1 버퍼 위치들을 저장하는 제 1 오더링 큐; 상기 제 1 패킷들 중에서 제 2 출력단으로 향하는 제 2 내부 패킷들의 제 2 버퍼 위치들을 저장하는 제 2 오더링 큐; 상기 제 2 패킷들 중에서 상기 제 1 출력단으로 향하는 제 3 내부 패킷들의 제 3 버퍼 위치들을 저장하는 제 3 오더링 큐; 상기 제 2 패킷들 중에서 상기 제 2 출력단으로 향하는 제 4 내부 패킷들의 제 4 버퍼 위치들을 저장하는 제 4 오더링 큐; 상기 제 1 패킷들의 각각에 대한 상기 제 1 버퍼 위치들 및 상기 제 2 버퍼위치들을 할당하는 제 1 버퍼 할당기; 및 상기 제 2 패킷들의 각각에 대한 상기 제 3 버퍼 위치들 및 상기 제 4 버퍼 위치들을 할당하는 제 2 버퍼 할당기를 포함할 수 있다.
본 발명의 실시 예에 따른 네트워크 온 칩의 동작 방법은, 입력단으로부터 수신된 패킷들을 버퍼에 저장하는 단계; 패킷들의 각각을 출력하는 출력단의 오더링 큐에 상기 패킷들의 각각이 상기 버퍼에 저장된 버퍼 위치를 저장하는 단계; 및 상기 출력단에서 상기 버퍼 위치에 따라 순차적으로 패킷들을 출력하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 네트워크 온 칩은, 제 1 및 제 2 마스터들로부터 패킷들을 수신하는 제 1 스위치; 제 3 및 제 4 마스터들로부터 패킷들을 수신하는 제 2 스위치; 상기 제 1 스위치의 패킷과 상기 제 2 스위치의 패킷을 수신하고, 상기 수신된 제 1 패킷을 제 1 슬레이브로 출력하는 제 3 스위치; 및 상기 제 1 스위치의 패킷과 상기 제 2 스위치의 패킷을 수신하고, 상기 수신된 제 2 패킷을 제 2 슬레이브로 출력하는 제 4 스위치를 포함하고, 상기 제 1 내지 상기 제 4 스위치들의 각각은, 입력단으로부터 제 1 패킷들을 수신하고, 상기 제 1 패킷들의 각각의 버퍼 위치 및 출력단 정보를 결정하고, 상기 버퍼 위치에 상기 패킷을 저장하고, 상기 출력단 정보를 이용하여 대응하는 출력단의 오더링 큐에 상기 버퍼 위치를 순차적으로 저장하고, 상기 출력단에서 상기 버퍼 위치에 따라 순차적으로 상기 버퍼에 저장된 패킷들을 출력하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 그것의 동작 방법은, 입력단 구조 변경을 통하여 각 출력단으로 패킷을 동시에 전달 가능하게 함으로써, Head-of-Line Blocking 현상으로 인한 패킷 충돌을 해결하고, 스위치의 패킷 처리 능력을 개선할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다.
도 1은 일반적인 SoC를 예시적으로 보여주는 도면이다.
도 2는 일반적인 LLC(Last-Level Cache, SLC(System-Level Cache)를 갖는 SoC를 예시적으로 보여주는 도면이다.
도 3은 일반적인 스위치(30)를 보여주는 도면이다.
도 4는 도 3에 도시된 스위치(30)의 동작 타이밍을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 NoC(Network on Chip)의 스위치를 예시적으로 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 스위치의 동작 타이밍을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 NoC의 동작 방법을 예시적으로 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 SoC(1000)를 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템(5000)을 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시 할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명의 실시 예에 따른 NoC(Network on Chip, 네트워크-온-칩) 및 그것의 동작 방법은 멀티-채널 인터리빙 메모리(multi-channel interleaving memory) 연결할 때 Head-of-Line(HoL) blocking으로 인해 발생하는 대역폭(Bandwidth) 저하를 개선할 수 있다. 본 발명의 실시 예에 따른 NoC는 공용 버퍼, 각 출력단 별로 순차적으로 전달할 패킷을 저장하는 버퍼의 위치를 저장하는 오더링 큐(Ordering Queue), 및 입력으로 들어오는 패킷을 어느 버퍼의 위치에 저장할지 결정하는 버퍼 할당기를 포함할 수 있다. 본 발명의 실시 예에 따른 NoC 및 그것의 동작 방법은 SoC 백본 대역폭(backbone bandwidth)를 개선함으로써 전반적인 시스템 성능을 증가시킬 수 있다.
도 1은 일반적인 SoC를 예시적으로 보여주는 도면이다. 도 1을 참조하면, SoC(10)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), NPU(Neural Processing Unit), DPU(Data Processing Unit), IPU(Intelligence Processing Unit) 등 다양한 프로세싱 유닛들, 및 데이터 저장을 제공하는 메모리 장치(예를 들어, DRAM(Dynamic Random Access Memory), 메모리 장치를 제어하는 메모리 제어기를 포함할 수 있다. 상술된 프로세싱 유닛들은 외부 장치와 연결을 지원하는 외부 입출력의 마스터이고, 메모리 제어기는 슬레이브이다. 이러한 마스터와 슬레이브 사이에 다양한 형태로 구성이 가능한 시스템 인터커넥트(System Interconnect)가 존재한다.
최근에 메모리 대역폭이 증가하고, 단일 메모리의 최대 대역폭이 정점에 이르게 됨에 따라, SoC는 멀티 채널 메모리를 구성함으로써 요구하는 대역폭을 지원하고 있다.
일반적으로 SoC(System on Chip)는 시스템 전체를 제어하는 프로세서와 그 프로세서에 의해서 제어되는 다양한 IP로 구성된다. IP는 프로세서의 제어를 받기만 하는 슬레이브(slave) IP과 스스로 다른 슬레이브 IP에 데이터 통신을 요구할 수 있는 마스터(master) IP로 구분된다. SoC내의 IP들의 연결 및 관리를 위한 표준 버스 규격으로서 ARM사의 AMBA(Advanced Microcontroller Bus Architecture), SONIC사의 OCP(Open Core Protocol)가 있다. AMBA의 버스 타입으로는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface)를 들 수 있다.
일반적으로 멀티 채널 메모리를 구성하는 SoC의 경우, 복수의 메모리 채널들을 동시에 사용하기 위하여 인터리빙(interleaving) 방식이 사용되고 있다. 하나의 마스터가 복수의 채널들을 동시에 사용하기 위하여 인터리빙 단위가 64B ~ 4KB까지 다양하게 설정될 수 있다. 각 SoC 마다 최대 대역폭을 위하여 최적의 인터리빙 단위를 지정하여 사용하고 있다.
도 2는 일반적인 LLC(Last-Level Cache, SLC(System-Level Cache))를 갖는 SoC를 예시적으로 보여주는 도면이다. 도 2를 참조하면, SoC(20)는 도 1에 도시된 그것과 비교하여 복수의 채널들의 각각에 LLC를 포함하고 있다.
LLC는 DRAM 채널에서 필요로 하는 대역폭을 줄이는 대신 온-칩(On-Chip)에서 높은 대역폭을 제공하기 위한 장치이다. 데이터를 읽고, 쓰기 위한 커맨드 이외에도 리프레쉬(Refresh), 액티베이션(Activation), 프리차지(Precharge) 등의 커맨드로 인하여 DRAM은 이론적 최대 대역폭을 사용할 수 없다. 하지만, LLC는 SRAM(Synchronous Random Access Memory)으로 구성됨으로써, 단일 사이클에 접근이 가능하기 때문에 이론적 최대 대역폭을 사용할 수 있다.
LLC를 통해 각 채널당 이론적 최대 대역폭을 사용하는 환경에서, 시스템 인터커넥트도 마찬가지로 최대 대역폭을 지원할 수 있는 구조를 통해 각 마스터가 요로 하는 최대 대역폭을 지원해야 한다. 하지만, 시스템 인터커넥트 내에서 다양한 형태로 대역폭을 제약하는 요소가 존재한다. 그 중에서 스위치에서 발생하는 Head-of-Line(HoL) 문제가 대역폭을 제약하는 가장 큰 요소이다.
도 3은 일반적인 스위치(30)를 보여주는 도면이다. 도 3을 참조하면, 스위치(30)는 입력단(MI0/MI1(MI: Master Interface))에서 패킷을 수신하고, 수신된 패킷을 출력단(SI0/SI1(SI: Slave Interface))으로 출력하고 있다. 여기서 입력단(MI0/MI1)은 패킷을 순차적으로 받아 순차적으로 출력하는 FIFO(First In First Out) 메모리를 갖고 있다.
도 3에 도시된 바와 같이, 제 1 및 제 2 입력단들(MI0, MI1)이 모두 제 1 출력단(SI0)으로 출력하는 패킷을 수신하고, 이후에 제 2 출력단(SI1)으로 출력하는 패킷을 수신한다고 가정하겠다. 제 1 및 제 2 입력단들(MI0, MI1)에 있는 큐(Queue)에서 헤드(Head) 패킷은 모두 같은 제 1 출력단(SI0)으로 출력한다. 이 때문에 그 중 하나의 패킷, 여기서 제 1 입력단(MI0)에서 출력하는 패킷이 전송되고, 제 2 입력단(MI1)에서 출력하는 패킷은 다음을 위해 대기하고 있다. 이때, 제 1 및 제 2 입력단들(MI0/MI1)의 큐(Queue)에 제 2 출력단(SI1)으로 향하는 패킷이 있음에도 불구하고, 앞선 패킷으로 인해 패킷의 출력이 진행되지 못한다. 이때 출력단들(SI0/SI1) 중 하나의 채널만 사용하기 때문에 50%만 사용 가능하게 된다.
설명의 편의를 위하여 확률적으로 출력단들(SI0/SI1)과 입력단들(MI0/MI1) 사이에 만들어질 수 있는 조합이 evenly distributed되어 나타날 수 있다고 가정하겠다. 이때 스위치(30)에서 얻을 수 있는 기대 대역폭은 75%이다. 기대 대역폭이 100%가 되지 못하는 이유는, 상술된 바와 같이 HoL로 인하여 채널을 사용하지 못하기 때문이다.
도 4는 도 3에 도시된 스위치(30)의 동작 타이밍을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 기존 스위치(30)에서 발생할 수 있는 문제점이 파형(Waveform)으로 표현되고 있다. 제 1 입력단(MI0)에서 수신하는 데이터가 각각 A, C, E, G이고, 제 2 입력단(MI1)에서 수신하는 데이터가 각각 B, D, F, H이고, 데이터가 출력으로 나가는 방향 관점에서 제 1 출력단(SI0)으로 출력하는 데이터는 A, B, C, H이고, 제 2 출력단(SI1)으로 출력하는 데이터는 D, E, F, G이다.
스위치(30)의 출력단에 있는 중재기(Arbiter)는 우선권(Priority) 기반 중재(arbitration)을 할 수 있다. 도 4에서는, 설명의 편의를 위하여 제 1 출력단(SI0)에 있는 중재기는 제 1 입력단(MI0)쪽을 우선적으로 서비스하고, 제 2 출력단(SI1)에 있는 중재기는 제 2 입력단(MI1)쪽을 우선적으로 서비스한다고 가정하겠다. 그리고, 입력으로 들어온 데이터는 큐(Queue) 혹은 버퍼(Buffer)에 저장되었다가 출력하기 때문에 1-cycle의 지연시간이 있다고 가정하겠다. 이때, 동작 타이밍은 다음과 같다.
제 1 사이클(Cycle 1) 동안에, 제 1 및 제 2 입력단들(MI0/MI1)에 있는 Queue Head에 있는 데이터가 모두 제 1 출력단(SI0)으로 향하고 있다. 그리고, 제 1 출력단(SI0)은 제 1 입력단(MI0)를 우선적으로 서비스하려고 하기 때문에 데이터(A)가 출력단으로 전달된다. 제 2 출력단(SI1)으로 출력하는 데이터는 없다.
제 2 사이클(Cycle 2) 동안에, 제 1 및 제 2 입력단들(MI0/MI1)에 있는 Queue Head에 있는 데이터가 모두 제 1 출력단(SI0)으로 향하고 있다. 그리고 제 출력단(SI0)은 제 1 입력단(MI0)를 우선적으로 서비스하려고 하기 때문에 데이터(C)가 출력단으로 전달된다. 제 2 출력단(SI1)으로 출력하는 데이터는 없다.
제 3 사이클(Cycle 3) 동안에, 제 1 입력단(MI0)의 Queue Head에 있는 데이터는 제 2 출력단(SI1)으로 향하고, 제 2 입력단(MI1)의 Queue Head에 있는 데이터는 제 1 입력단(SI0)으로 향하기 때문에, 제 1 출력단(SI0)으로 데이터(B)가 출력되고, 제 2 출력단(SI1)으로 데이터(E) 출력된다.
제 4 사이클(Cycle 4) 동안에, 제 1 및 제 2 입력단들(MI0/MI1)에 있는 Queue Head에 있는 데이터가 모두 제 2 출력단(SI1)으로 향하고 있다. 그리고, 제 2 출력단(SI1)은 제 2 입력단(MI1)를 우선적으로 서비스하려고 하기 때문에 데이터(D)가 출력단으로 전달된다. 제 1 출력단(SI0)으로 출력하는 데이터는 없다.
제 5 사이클(Cycle 5) 동안에, 제 1 및 제 2 입력단들(MI0/MI1)에 있는 Queue Head에 있는 데이터가 모두 제 2 출력단(SI1)으로 향하고 있다. 그리고, 제 2출력단(SI1)은 제 2 입력단(MI1)을 우선적으로 서비스하려고 하기 때문에 데이터(F)가 출력단으로 전달된다. 제 1 출력단(SI0)으로 출력하는 데이터는 없다.
제 6 사이클(Cycle 6) 동안에, 제 1 입력단(MI0)의 Queue Head에 있는 데이터는 제 2 출력단(SI1)으로 향하고, 제 2 입력단(MI1)의 Queue Head에 있는 데이터는 제 1 출력단(SI0)으로 향하기 때문에, 제 1 출력단(SI0)으로 데이터(H)가 출력되고, 제 2 출력단(SI1)으로 데이터(G)가 출력된다.
한편, 본 발명의 실시 예에 따른 스위치는 상술된 HoL 문제를 회피하여 100%에 가까운 대역폭을 얻기 위하여 Queue에 저장된 패킷이 서로 다른 방향으로 향할 때, 동시에 출력단으로 출력하도록 구현될 수 있다.
도 5는 본 발명의 실시 예에 따른 NoC(Network on Chip)의 스위치를 예시적으로 보여주는 도면이다. 도 5를 참조하면, 스위치(100)는 제 1 및 제 2 버퍼들(111, 112), 오더링 큐들(121, 122, 123, 124), 제 1 및 제 2 버퍼 할당기들(131, 132), 및 멀티플렉서들(MUX1 ~ MUX6)을 포함할 수 있다.
제 1 및 제 2 버퍼들(111, 112)의 각각은 대응하는 디-멀티플렉서들(De-MUX1, De-MUX2)로부터 패킷을 저장하도록 구현될 수 있다. 제 1 버퍼(111)는 제 1 입력단(MI0)으로부터 수신된 제 1 패킷들을 저장할 수 있다. 제 2 버퍼(112)는 제 2 입력단(MI1)으로부터 수신된 제 2 패킷들을 저장할 수 있다.
제 1 내지 제 4 오더링 큐들(121, 122, 123, 124)의 각각은 출력 단별로 패킷의 순서를 순차적으로 저장하도록 구현될 수 있다. 예를 들어, 제 1 및 제 2 오더링 큐들(121, 122)은 제 1 출력단(SI0)의 패킷의 순서를 순차적으로 저장할 수 있다. 또한, 제 3 및 제 4 오더링 큐들(123, 124)은 제 2 출력단(SI1)의 패킷의 순서를 순차적으로 저장할 수 있다.
제 1 오더링 큐(121)는 제 1 패킷들 중에서 제 1 출력단(SI0)으로 향하는 제 1 내부 패킷들의 제 1 버퍼 위치들(버퍼 번호들)을 저장할 수 있다. 제 2 오더링 큐(122)는 제 1 패킷들 중에서 제 2 출력단(SI1)으로 향하는 제 2 내부 패킷들의 제 2 버퍼 위치들을 저장할 수 있다. 제 3 오더링 큐(123)는 제 2 패킷들 중에서 제 1 출력단(SI0)으로 향하는 제 3 내부 패킷들의 제 3 버퍼 위치들을 저장할 수 있다. 제 4 오더링 큐(124)는 제 2 패킷들 중에서 제 2 출력단(SI1)으로 향하는 제 4 내부 패킷들의 제 4 버퍼 위치들을 저장할 수 있다.
실시 예에 있어서, 버퍼 위치와 출력단 정보가 결정이 되면, 버퍼 위치에 패킷이 저장이 되고, 대응하는 출력단의 오더링 큐에 그 위치가 저장될 수 있다. 오더링 큐들(121, 122, 123, 124)의 각각은 각 출력단 방향으로 패킷이 저장된 위치를 순차적으로 저장할 수 있다. 이는 패킷이 출력단 방향에 따라 Re-Ordering이 되지 않고 순차적으로 나갈 수 있도록 제어하기 위함이다.
제 1 및 제 2 버퍼 할당기들(131, 132)의 각각은 대응하는 입력단(MI0, MI1)로부터 수신된 패킷을 버퍼에 전달하고, 출력단에 대응하는 순서를 결정하여 오더링 큐들에 저장시키도록 구현될 수 있다. 제 1 버퍼 할당기(131)는 제 1 패킷들의 각각에 대한 제 1 버퍼 위치들 및 제 2 버퍼위치들을 할당할 수 있다. 제 2 버퍼 할당기(132)는 제 2 패킷들의 각각에 대한 제 3 버퍼 위치들 및 제 4 버퍼 위치들을 할당할 수 있다.
버퍼 할당기들(131, 132)의 각각은 입력된 패킷이 어느 버퍼 위치에 들어갈지를 결정할 수 있다. 버퍼 위치를 결정하는 알고리즘은 다양한 방법으로 구성할 수 있다. 예를 들어, 버퍼 위치 결정 알고리즘은 비어 있는 곳 중 하나를 선택하도록 구성될 수 있다.
한편, 수신된 패킷은 라우팅 정보에 따라서 어느 출력단으로 나갈지 결정될 수 있다. 출력단을 결정하는 방법은 여러 가지로 구현될 수 있다. 실시 예에 있어서, 패킷 자체에 어느 출력으로 나갈 수 있을지 미리 갖고 있다.
멀티플렉서들(MUX1 ~ MUX6)은 출력 회로를 구성하고, 각 입력단에서 출력하는 패킷을 중재(Arbitration)하여 출력 채널로 전달하도록 구현될 수 있다.
실시 예에 있어서, 각 출력단 방향으로 오더링 큐의 Head에 있는 버퍼 위치를 이용하여 패킷이 출력단으로 전송될 수 있다. 특히, 버퍼에서 서로 다른 방향으로 향하는 패킷이 저장되어 있을 때, 대응하는 출력단으로 동시에 패킷을 전송할 수 있다.
본 발명의 실시 예에 따른 스위치(100)의 동작을 다음과 같이 진행될 수 있다. 패킷이 제 1 입력단(MI0)으로 수신되면, 버퍼 할당기(131)에 의해 버퍼(111)에 할당될 수 있다. 그리고 대응하는 패킷에 포함된 정보를 이용하여 출력단(SI0 혹은 SI1)이 선정될 수 있다. 여기서는 설명의 편의를 위하여 제 1 출력단(SI0)가 선정되었다고 가정하겠다. 이때 대응하는 출력단(SI0)의 오더링 큐(121)에 할당된 버퍼 번호를 기록될 수 있다. 버퍼(111)에 저장된 패킷은 각 출력단별로 동시에 읽기가 가능하다. 따라서 각 출력단 별로 오더링 큐에 순차적으로 저장된 버퍼 번호를 이용해서 패킷을 읽어 낼 수 있다. 출력단은 일반적인 스위치(30, 도 3 참조) 구조와 동일하게 각 입력단에서 들어오는 패킷을 중재하여 출력 채널로 전달할 수 있다.
본 발명의 실시 예에 따른 스위치(100)는 기존의 스위치(30)에서 입력단 구조 변경함으로써 각 출력단으로 패킷을 동시에 전달 가능하게 할 수 있다. 이로써 Head-of-Line Blocking 현상으로 인한 충돌(Conflict)를 해소함으로써 스위치의 패킷 처리 능력이 개선될 수 있다. 예를 들어, 본 발명의 NoC 기반으로 2x4 스위치를 구성하였을 때, 최대 10.3%의 대역폭 개선이 달성될 수 있다. 이러한 대역폭 개선은 Bandwidth-Driven한 Application인 NPU, GPU 등의 성능을 개선할 수 있다. 뿐만 아니라, 마스터 개수가 증가하고, DRAM 메모리 채널이 증가함에 따라 스위치 규모가 커질수록 기존 스위치에서 발생하는 충돌이 증가하기 때문에, 대역폭 개선 효과는 더욱 기대되고 있다.
한편, 도 5에 도시된 스위치(100)는 2x4 스위치이지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다.
도 6은 본 발명의 실시 예에 따른 스위치(100)의 동작 타이밍을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 스위치(100)의 대역폭이 개선되는지 파형으로 표현되고 있다. 입력으로 들어온 데이터는 버퍼에 저장되었다가 출력되기 때문에 1-사이클의 지연시간이 있다고 가정하겠다. 이때, 동작 타이밍은 다음과 같다.
제 1 사이클(Cycle 1) 동안에, 제 1 및 제 2 입력단(MI0/MI1)에 있는 버퍼들(111, 112)에 있는 데이터가 모두 제 1 출력단(SI0)으로 향하고 있다. 제 1 입력단(SI0)는 제 1 입력단(MI0)를 우선적으로 서비스하려고 하기 때문에 데이터(A)가 출력단(SI0)으로 전달될 수 있다. 제 2 출력단(SI1)으로 출력하는 데이터는 없다.
제 2 사이클(Cycle 2) 동안에, 제 1 입력단(MI0)의 제 1 버퍼(111)에 있는 데이터는 제 1 출력단(SI0)으로 향하고 있다. 제 2 입력단(MI1)의 제 2 버퍼(112)에 있는 데이터는 제 1 출력단(SI0)과 제 2 출력단(SI1)으로 향하고 있다. 제 1 출력단(SI0)는 제 1 입력단(MI0)을 우선적으로 서비스하려고 하기 때문에 데이터(C)가 출력단(SI0)으로 출력될 수 있다. 제 2 입력단(MI1)의 제 2 버퍼(112)에 있는 제 2 출력단(SI1)으로 향하는 데이터도 출력단(SI1)으로 전송 가능하기 때문에 제 2 출력단(SI1)은 데이터(D)를 출력할 수 있다.
제 3 사이클(Cycle 3) 동안에, 제 1 입력단(MI0)의 제 1 버퍼(111)에 있는 데이터는 제 2 출력단(SI1)으로 향하고 있다. 제 2 입력단(MI1)의 제 2 버퍼(112)에 있는 데이터는 제 1 출력단(SI0)과 제 2 출력단(SI1)으로 향하고 있다. 제 1 출력단(SI0)으로 향하는 데이터는 제 2 입력단(MI1)의 제 2 버퍼(112)에만 있기 때문에, 대응하는 데이터(B)가 출력단(SI0)으로 전달될 수 있다. 제 2 출력단(SI1)으로 향하는 데이터는 제 1 및 제 2 입력단들(MI0/MI1) 모두 존재하나, 제 2 출력단(SI1)의 중재기는 제 2 입력단(MI1)에게 우선 순위를 주기 때문에, 데이터(F)가 출력단(SI1)로 출력될 수 있다.
제 4 사이클(Cycle 4) 동안에, 제 1 입력단(MI0)의 제 1 버퍼(111)에 있는 데이터는 제 2 출력단(SI1)으로 향하고, 제 2 입력단(MI1)의 제 2 버퍼(112)에 있는 데이터는 제 1 출력단(SI0)으로 향하고 있다. 따라서, 제 1 및 제 2 출력단들(SI0, SI1)의 각각은 데이터(H)와 데이터(E)을 출력할 수 있다.
제 5 사이클(Cycle 5) 동안에, 제 1 입력단(MI0)의 제 1 버퍼(111)에만 제 2 출력단(SI1)으로 향하는 데이터가 있기 때문에, 제 2 출력단(SI1)으로 데이터(G)가 출력될 수 있다.
본 발명의 실시 예에 따른 스위치(100)는, 도 4에 도시된 타이밍과 비교하여, 8개 데이터를 전송하는 시간은 총 5-사이클이 소요되고 있다. 중간에 IDLE 구간이 없기 최대 대역폭의 효과가 달성될 수 있다.
도 7은 본 발명의 실시 예에 따른 NoC의 동작 방법을 예시적으로 보여주는 흐름도이다. 도 5 내지 도 7를 참조하면, 본 발명의 실시 예에 따른 NoC의 동작은 다음과 같이 진행될 수 있다.
버퍼 할당기는 입력단으로 수신된 패킷들의 각각의 버퍼 위치 및 출력단을 파악할 수 있다. 버퍼 할당기는 수신된 패킷들의 각각에 대응하는 버퍼 위치에 저장할 수 있다(S110). 또한, 버퍼 할당기는 패킷을 출력하기 위한 출력단에 대응하는 오더링 큐에 버퍼 위치를 저장할 수 있다(S120). 출력단은 오더링 큐에 저장된 버퍼 위치에 따라 버퍼로부터 수신된 패킷들을 순차적으로 출력할 수 있다(S130).
실시 예에 있어서, 입력단으로부터 패킷들이 수신되고, 수신된 패킷들의 각각의 라우팅 정보를 이용하여 출력단이 결정될 수 있다. 실시 예에 있어서, 패킷들의 각각이 저장될 상기 버퍼 위치가 할당될 수 있다. 실시 예에 있어서, 버퍼에 패킷들이 저장되고, 출력단 저장된 패킷들 중 어느 하나를 출력할 때까지 1-사이클이 지연될 수 있다. 실시 예에 있어서, 출력단은 입력단에 대응하는 버퍼로부터 패킷을 수신하면서, 동시에 입력단과 다른 입력단에 대응하는 버퍼로부터 다른 패킷을 수신할 수 있다.
도 8은 본 발명의 실시 예에 따른 SoC(1000)를 예시적으로 보여주는 도면이다. 도 8를 참조하면, SoC(1000)는 복수의 마스터들(1011, 1012, 1013, 1014), 복수의 슬레이브들(1021, 1022), 및 Network on Chip (NoC; 1100))을 포함할 수 있다.
복수의 마스터들(1011, 1012, 1013, 1014)의 각각은 CPU, GPU, DMA 등 Slave에 접근함으로써, 읽고, 쓰는 동작을 시작 시키는 하드웨어일 수 있다.
복수의 슬레이브들(1021, 1022)의 각각은 마스터에 전달한 읽기/쓰기 동작을 받아 실제로 수행하고, 그 결과를 다시 마스터로 전달하는 하드웨어일 수 있다. 복수의 슬레이브들(1021, 1022)의 각각은 DRAM Memory Controller, Configuration Register 등을 포함할 수 있다.
한편, 마스터와 슬레이브는 NoC(1100)에 연결되어 서로 통신을 수행할 수 있다.
NoC(1100)는 마스터들(1011, 1012, 1013, 1013)와 슬레이브들(1021, 1022)가 전달한 메시지를 스위치를 통해 전달하도록 구현될 수 있다. NoC(1100)는 4개의 스위치들(1110, 1120, 1130, 1140)을 포함할 수 있다. 여기서 스위치들(1110, 1120, 1130, 1140)의 각각은 도 5 내지 도 7에서 설명된 스위치(100)와 동일하게 구현될 수 있다.
한편, 도 8에 도시된 NoC(1100)는 4x2 크로스 구조로 구현되지만, 본 발명의 NoC가 여기에 제한되지 않는다고 이해되어야 할 것이다. 각 스위치의 입력/출력 포트는 도 8에 도시된 마스터 개수, 슬레이브 개수는 제한되지 않는다고 이해되어야 할 것이다.
또한, 본 발명의 실시 예에 따른 NoC는 메모리 인터리빙(memory interleaving) 장치로 구현될 수 있다. 여기서 메모리 인터리빙 장치는 마스터들에 연결된 복수의 슬레이브단들, 슬레이브들에 연결된 복수의 마스터단들, 슬레이브단들과 마스터단들 사이에 연결된 크로스바 스위치를 포함할 수 있다. 여기서 크로스바 스위치는 도 5 내지 도 6에서 설명된 스위치 및 그것의 패킷 전송 방식으로 구현될 수 있다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템(5000)을 예시적으로 보여주는 도면이다. 도 9을 참조하면, 컴퓨팅 시스템(5000)은, CPU(Central Processing Unit; 5110), 가속기(5120), 메모리들(5114, 5124, 5126), 메모리 장치(5210) 혹은 저장 장치(5220), 확장 버스(5002)에 연결된 입출력 장치(5310), 모뎀(5320), 네트워크 장치(5330), 및 저장 장치(5340)를 포함할 수 있다. 여기서 가속기(5120)는GPU(Graphic Processing Unit), NPU(Neural Processing Unit), 혹은 특수 목적 프로세싱 유닛(Application-specific Processing Unit)을 포함할 수 있다. 여기서 확장 버스(5002)는 확장 버스 인터페이스(5003)를 통하여 NoC(5001)에 연결될 수 있다.
실시 예에 있어서, CPU(5110) 및 가속기(5120)의 각각은 온-칩(on-chip) 캐시(5111, 5121)를 포함할 수 있다. 실시 예에 있어서, CPU(5110)은 오프-칩(off-chip) 캐시(5112)를 포함할 수 있다. 도 9에 도시되지 않았지만 가속기(5120)도 오프-칩 캐시를 포함할 수 있다. 실시 예에 있어서, 오프 칩 캐시(5112)는 서로 다른 버스를 통하여 CPU(5110), 가속기(5120)에 내부 연결될 수 있다.
실시 예에 있어서, 온-칩/오프 칩 캐시는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리 혹은 NAND 플래시 메모리, PRAM(Phase Random Access Memory), RRAM(Resistive Random Access Memory) 등과 같은 비휘발성 메모리를 포함할 수 있다.
실시 예에 있어서, 메모리들(5114, 5124)은 대응하는 메모리 제어기들(5113, 5123)을 통하여 CPU(5110), 및 가속기(5120)에 연결될 수 있다. 실시 예에 있어서, 메모리(5126)은 NoC(5001)을 통하여 CPU(5110), 및 가속기(5120)에 연결될 수 있다. 여기서 NoC(5001)은 대응하는 메모리(5126)를 제어하는 메모리 제어기들을 포함할 수 있다. 실시 예에 있어서, NoC(5001)의 각각은 네트워크 장치, 무선 네트워크 장치, 스위치, 버스, 클라우드, 혹은 광채널로 구현될 수 있다. 실시 예에 있어서, NoC(5001)의 각각은 도 5 내지 도 8에 설명된 네트워크 온 칩을 포함할 수 있다.
실시 예에 있어서, 메모리(5126)는 GPU 메모리를 포함할 수 있다. GPU 메모리는 GPU와 상호 작용할 수 있는 명령과 데이터를 유지할 수 있다. 명령과 데이터는 메인 메모리나 스토리지에서 복사될 수 있다. GPU 메모리는 이미지 데이터를 저장할 수 있고, 메모리보다 큰 대역폭을 가질 수 있다. GPU 메모리는 CPU에서 클록을 분리할 수 있다. GPU는 GPU 메모리에서 이미지 데이터를 읽고 처리한 다음에 GPU 메모리에 쓸 수 있다. GPU 메모리는 그래픽 처리를 가속화하도록 구성될 수 있다. 실시 예에 있어서, 메모리(5126)은 NPU 메모리를 포함할 수 있다. NPU 메모리는 NPU와 상호 작용할 수 있는 명령 및 데이터를 유지할 수 있다. 명령 및 데이터는 메인 메모리나 스토리지에서 복사될 수 있다. NPU 메모리는 신경망에 대한 가중치 데이터를 유지할 수 있다. NPU 메모리는 메모리보다 더 큰 대역폭을 가질 수 있다. NPU 메모리는 CPU에서 클록을 분리할 수 있다. NPU는 NPU 메모리에서 가중치 데이터를 읽고 업데이트 한 다음, 훈련 중에 NPU 메모리에 쓸 수 있다. NPU 메모리는 신경망 훈련 및 추론과 같은 기계 학습을 가속화하도록 구성될 수 있다. 실시 예에 있어서, 메인 메모리는 DRAM, SRAM 등과 같은 휘발성 메모리 혹은 NAND 플래시 메모리, PRAM, RRAM 등과 같은 비휘발성 메모리를 포함할 수 있다. 메인 메모리는 세컨더리 스토리지(secondary storage; 5210, 5220)의 그것들보다 낮은 레이턴시 및 낮은 용량을 갖는다.
CPU(5110), 및 가속기(5120)은 NoC(5001)를 통하여 세컨더리 스토리지들(5210, 5220)에 접근할 수 있다. 메모리 장치(5210)는 메모리 제어기(5211)에 의해 제어될 수 있다. 여기서 메모리 제어기(5211)는 NoC(5001)에 연결될 수 있다. 저장 장치(5220)는 저장 제어기(5221)에 의해 제어될 수 있다. 여기서 저장 제어기(5221)는 NoC(5001)에 연결될 수 있다.
저장 장치(5220)는 데이터를 저장하도록 구현될 수 있다. 저장 제어기(5221)는 저장 장치(5220)로부터 데이터를 읽고, 읽혀진 데이터를 호스트로 전송하도록 구현될 수 있다. 저장 제어기(5221)는 호스트의 요청에 응답하여 전송된 데이터를 저장 장치(5220)에 저장하도록 구현될 수 있다. 저장 장치(5220) 및 저장 제어기(5221)의 각각은 메타데이터(metadata) 저장하거나, 자주 접근하는 데이터를 저장하도록 캐시를 읽거나, 혹은 쓰기 효율을 높이기 위한 캐시를 저장하는 버퍼를 포함할 수 있다. 예를 들어, 쓰기 캐시는 특정 개수의 쓰기 요청을 수신하여 처리할 수 있다.
본 발명의 Switch 구조는 크게 입력 단과 출력 단으로 구성된다. 입력 단은 입력 패킷을 저장하는 버퍼, 출력단별로 패킷의 순서를 순차적으로 기록하는 Ordering Queue, 버퍼 할당기로 구성된다. 출력단은 각 입력단에서 나오는 패킷을 Arbitration하여 Output Channel로 전달하는 장치로 구성된다. 패킷이 입력 단으로 들어오면 버퍼 할당기에 의해 버퍼에 할당된다. 그리고 해당 패킷에 포함된 정보를 이용하여 출력 단을 선정하고 해당 출력단의 Ordering Queue에 할당된 버퍼 번호를 기록한다. 버퍼에 저장된 패킷은 각 출력 단별로 동시에 읽기가 가능하다. 따라가 각 출력단 별로 Ordering Queue에 순차적으로 저장된 버퍼 번호를 이용해서 패킷을 읽어 낼 수 있다. 출력단은 일반적인 스위치 구조와 동일하게 각 입력단에서 들어오는 패킷을 Arbitration하여 Output Channel로 전달한다.
본 발명은 입력단 구조 변경을 통하여 각 출력단으로 패킷을 동시에 전달 가능하게 함으로써 Head-of-Line Blocking 현상으로 인한 Conflict를 해소하여 스위치의 패킷 처리 능력을 개선할 수 있다.
앞으로 시스템은 점점 더 커지고 높은 메모리 Bandwidth를 요구할 것이다. 이는 현재 4-channel 메모리 인터페이스에서 점점 더 켜져 8-channel 혹은 16-channel로 증가할 수도 있다. 이러한 채널 수 증가는 NoC 내에서 HoL 확률이 더욱 증가하고, 이에 따라 채널 수에 비례해 Bandwidth가 증가하지 않는 현상이 발생할 수 있다. 이를 해결하기 위해서 NoC 내에서 본 발명과 같이 HoL 확률을 줄이고 이에 따라 Bandwidth를 채널에 비례해 증가할 수 있는 기술이 적용될 것이다.
본 발명은 IP 디자인 내부에서 sub-component를 연결하는 on-chip network에 적용이 가능하다. 예를 들어, Deep learning neural network를 구성하는 하드웨어를 연결하는 on-chip network에도 본 발명을 적용할 수 있다. 특히 높은 on-chip communication bandwidth가 요구되는 IP에서 본 기술을 통한 bandwidth 증가로 성능을 개선 시킬 수 있다.
본 발명은 Cache Coherent Interconnect에 적용이 가능하다. Cache Coherent Interconnect에서 Coherent Master 간에는 Snoop 등 다양한 message 들이 통신하게 되는데, 성능과 Scalability를 위해서 높은 성능의 on-chip communication이 필요할 수 있다. 본 발명은 이러한 성능 요구사항을 만족시키기 위하여 적용이 가능하다.
한편, 상술된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용 할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함 할 것이다.
10, 20, 1000: SoC
30, 100: 스위치
111, 112: 버퍼
121, 122, 123, 124: 오더링 큐
131, 132: 버퍼 할당기
1100: NoC

Claims (10)

  1. 제 1 입력단으로부터 수신된 제 1 패킷들을 저장하는 제 1 버퍼;
    제 2 입력단으로부터 수신된 제 2 패킷들을 저장하는 제 2 버퍼;
    상기 제 1 패킷들 중에서 제 1 출력단으로 향하는 제 1 내부 패킷들의 제 1 버퍼 위치들을 저장하는 제 1 오더링 큐;
    상기 제 1 패킷들 중에서 제 2 출력단으로 향하는 제 2 내부 패킷들의 제 2 버퍼 위치들을 저장하는 제 2 오더링 큐;
    상기 제 2 패킷들 중에서 상기 제 1 출력단으로 향하는 제 3 내부 패킷들의 제 3 버퍼 위치들을 저장하는 제 3 오더링 큐;
    상기 제 2 패킷들 중에서 상기 제 2 출력단으로 향하는 제 4 내부 패킷들의 제 4 버퍼 위치들을 저장하는 제 4 오더링 큐;
    상기 제 1 패킷들의 각각에 대한 상기 제 1 버퍼 위치들 및 상기 제 2 버퍼위치들을 할당하는 제 1 버퍼 할당기; 및
    상기 제 2 패킷들의 각각에 대한 상기 제 3 버퍼 위치들 및 상기 제 4 버퍼 위치들을 할당하는 제 2 버퍼 할당기를 포함하는 스위치.
  2. 제 1 항에 있어서,
    상기 제 1 출력단은 상기 제 1 입력단으로부터 전송된 패킷을 우선적으로 출력하는 것을 특징으로 하는 스위치.
  3. 제 1 항에 있어서,
    상기 제 2 출력단은 상기 제 2 입력단으로부터 전송된 패킷을 우선적으로 출력하는 것을 특징으로 하는 스위치.
  4. 제 1 항에 있어서,
    상기 제 1 패킷들 중에서 상기 제 1 출력단으로 향하는 상기 1 내부 패킷들을 수신하고, 상기 제 1 내부 패킷들 중에서 상기 제 1 버퍼 위치들에 따라 순차적으로 출력하는 제 1 멀티플렉서;
    상기 제 2 패킷들 중에서 상기 제 2 출력단으로 향하는 상기 제 2 내부 패킷들을 수신하고, 상기 제 2 내부 패킷들 중에서 상기 제 2 버퍼 위치들에 따라 순차적으로 출력하는 제 2 멀티플렉서;
    상기 제 2 패킷들 중에서 상기 제 1 출력단으로 향하는 상기 3 내부 패킷들을 수신하고, 상기 제 3 내부 패킷들 중에서 상기 제 3 버퍼 위치들에 따라 순차적으로 출력하는 제 3 멀티플렉서;
    상기 제 2 패킷들 중에서 상기 제 2 출력단으로 향하는 상기 제 4 내부 패킷들을 수신하고, 상기 제 4 내부 패킷들 중에서 상기 제 4 버퍼 위치들에 따라 순차적으로 출력하는 제 4 멀티플렉서를 더 포함하는 것을 특징으로 하는 스위치.
  5. 제 4 항에 있어서,
    상기 제 1 멀티플렉서로부터 출력하는 패킷과 상기 제 3 멀티플렉서로부터 출력하는 패킷을 수신하고, 상기 제 1 출력단으로 패킷을 출력하는 제 5 멀티플렉서; 및
    상기 제 2 멀티플렉서로부터 출력하는 패킷과 상기 제 4 멀티플렉서로부터 출력하는 패킷을 수신하고, 상기 제 2 출력단으로 패킷을 출력하는 제 6 멀티플렉서를 더 포함하는 것을 특징으로 하는 스위치.
  6. 제 1 항에 있어서,
    상기 제 1 출력단 및 상기 제 2 출력단은 동시에 대응하는 버퍼로부터 패킷을 수신하는 것을 특징으로 하는 스위치.
  7. 제 1 항에 있어서,
    상기 제 1 버퍼 할당기 및 상기 제 2 버퍼 할당기의 각각은 대응하는 입력단으로부터 수신된 패킷을 대응하는 버퍼에 할당하는 것을 특징으로 하는 스위치.
  8. 제 7 항에 있어서,
    상기 제 1 버퍼 할당기 및 상기 제 2 버퍼 할당기의 각각은 상기 입력단으로부터 수신된 패킷에 포함된 라우팅 정보를 이용하여 출력단을 선택하고, 상기 선택된 출력단의 오더링 큐에 할당된 버퍼 번호를 저장하는 것을 특징으로 하는 스위치.
  9. 제 1 항에 있어서,
    상기 제 1 버퍼 할당기 및 상기 제 2 버퍼 할당기의 각각은 대응하는 버퍼에 비어 있는 곳을 선택하도록 상기 버퍼 위치를 결정하는 것을 특징으로 하는 스위치.
  10. 네트워크 온 칩의 동작 방법에 있어서,
    입력단으로부터 수신된 패킷들을 버퍼에 저장하는 단계;
    패킷들의 각각을 출력하는 출력단의 오더링 큐에 상기 패킷들의 각각이 상기 버퍼에 저장된 버퍼 위치를 저장하는 단계; 및
    상기 출력단에서 상기 버퍼 위치에 따라 순차적으로 패킷들을 출력하는 단계를 포함하는 방법.
KR1020210003097A 2021-01-11 2021-01-11 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법 KR20220102160A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210003097A KR20220102160A (ko) 2021-01-11 2021-01-11 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법
US17/644,720 US11652761B2 (en) 2021-01-11 2021-12-16 Switch for transmitting packet, network on chip having the same, and operating method thereof
US18/311,181 US20230269205A1 (en) 2021-01-11 2023-05-02 Switch for transmitting packet, network on chip having the same, and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210003097A KR20220102160A (ko) 2021-01-11 2021-01-11 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220102160A true KR20220102160A (ko) 2022-07-20

Family

ID=82322297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210003097A KR20220102160A (ko) 2021-01-11 2021-01-11 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법

Country Status (2)

Country Link
US (2) US11652761B2 (ko)
KR (1) KR20220102160A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230376437A1 (en) * 2022-05-17 2023-11-23 Xilinx, Inc. Data processing array interface having interface tiles with multiple direct memory access circuits

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4328862A1 (de) * 1993-08-27 1995-03-02 Sel Alcatel Ag Verfahren und Vorrichtung zum Zwischenspeichern von Datenpaketen sowie Vermittlungsstelle mit einer solchen Vorrichtung
JP4489308B2 (ja) * 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
JP4320980B2 (ja) * 2001-06-19 2009-08-26 株式会社日立製作所 パケット通信装置
US20030163618A1 (en) * 2002-02-27 2003-08-28 Vishal Anand Shared queue for multiple input-streams
US7142555B2 (en) * 2002-03-22 2006-11-28 Mindspeed Technologies, Inc. Method and apparatus for switching data using parallel switching elements
US7158527B2 (en) * 2002-04-02 2007-01-02 Telefonaktiebolaget Lmeericsson (Publ) Protocol multiplexing
US8395414B2 (en) * 2006-06-21 2013-03-12 Element Cxi, Llc Hierarchically-scalable reconfigurable integrated circuit architecture with unit delay modules
US20090097495A1 (en) 2007-10-11 2009-04-16 Brocade Communications Systems, Inc. Flexible virtual queues
WO2012029215A1 (ja) 2010-09-03 2012-03-08 パナソニック株式会社 中継装置
JP5543894B2 (ja) 2010-10-21 2014-07-09 ルネサスエレクトロニクス株式会社 NoCシステム及び入力切替装置
KR101841173B1 (ko) 2010-12-17 2018-03-23 삼성전자주식회사 리오더 버퍼를 이용한 메모리 인터리빙 장치 및 그 메모리 인터리빙 방법
JP5320512B2 (ja) * 2011-03-28 2013-10-23 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム
CN103460654B (zh) 2011-11-17 2016-12-14 松下知识产权经营株式会社 中继装置、中继装置的控制方法
CN105247817B (zh) 2013-06-28 2019-05-07 英特尔公司 用于源同步电路交换片上网络(NoC)的方法、装置和系统
SG10201600224SA (en) 2016-01-12 2017-08-30 Huawei Int Pte Ltd Dedicated ssr pipeline stage of router for express traversal (extra) noc
US20200067637A1 (en) 2018-08-21 2020-02-27 The George Washington University Learning-based high-performance, energy-efficient, fault-tolerant on-chip communication design framework

Also Published As

Publication number Publication date
US20230269205A1 (en) 2023-08-24
US11652761B2 (en) 2023-05-16
US20220224658A1 (en) 2022-07-14

Similar Documents

Publication Publication Date Title
JP4737438B2 (ja) 複数の処理ユニットでリソースを共有する情報処理装置
US7185126B2 (en) Universal serial bus hub with shared transaction translator memory
KR101841173B1 (ko) 리오더 버퍼를 이용한 메모리 인터리빙 장치 및 그 메모리 인터리빙 방법
EP1820309B1 (en) Streaming memory controller
KR100814904B1 (ko) 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템
US20030217244A1 (en) Memory controller configurable to allow bandwidth/latency tradeoff
CN112416851B (zh) 一种可扩展的多核片上共享存储器
US7836221B2 (en) Direct memory access system and method
US20230269205A1 (en) Switch for transmitting packet, network on chip having the same, and operating method thereof
US20230342307A1 (en) Transmission of address translation type packets
JP2008541276A (ja) 同時読み出し応答確認拡張ダイレクト・メモリ・アクセス・ユニット
EP1894108A2 (en) Memory controller
US7774513B2 (en) DMA circuit and computer system
CN109271333B (zh) 一种sram控制方法及控制器、控制系统
KR100973419B1 (ko) 버스 중재 방법 및 장치
US10146434B1 (en) FIFO systems and methods for providing access to a memory shared by multiple devices
KR102496994B1 (ko) PCIe 인터페이스 장치 및 그 동작 방법
KR100335371B1 (ko) 로컬 메모리 중재 및 인터페이스 장치
US20230111351A1 (en) Topology of accelerators
TWI764139B (zh) 訪問資料匯流排的裝置、方法及系統
JP4737702B2 (ja) ディスクアレイ制御装置
CN116578501A (zh) 用于保留高速缓存中的数据的存储器地址分配和高速缓存映射
JP4496923B2 (ja) 共有メモリシステム
JP2021534684A (ja) リンク層データパッキング及びパケットフロー制御スキーム
JP2012178637A (ja) 記憶装置

Legal Events

Date Code Title Description
A201 Request for examination