KR20230002947A - 온칩 라우터 - Google Patents

온칩 라우터 Download PDF

Info

Publication number
KR20230002947A
KR20230002947A KR1020227040733A KR20227040733A KR20230002947A KR 20230002947 A KR20230002947 A KR 20230002947A KR 1020227040733 A KR1020227040733 A KR 1020227040733A KR 20227040733 A KR20227040733 A KR 20227040733A KR 20230002947 A KR20230002947 A KR 20230002947A
Authority
KR
South Korea
Prior art keywords
packet
dropped
data
buffer
router
Prior art date
Application number
KR1020227040733A
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 KR20230002947A publication Critical patent/KR20230002947A/ko

Links

Images

Classifications

    • 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/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/129Avoiding congestion; Recovering from congestion at the destination endpoint, e.g. reservation of terminal resources or buffer space
    • 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/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • 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/3063Pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 처리 요소를 포함하는 컴퓨팅 칩 상의 데이터를 라우팅하기 위한 라우터가 개시되며, 라우터는: 패킷 처리 파이프라인; 드롭된 패킷 버퍼; 및 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 한다고 결정하고; 드롭될 데이터 패킷을 패킷 처리 파이프라인에서 드롭된 패킷 버퍼로 이동하고; 및 드롭된 데이터 패킷을 드롭된 패킷 버퍼로부터 재처리를 위해 패킷 처리 파이프라인으로 재삽입하도록 구성된 하나 이상의 회로를 포함한다.

Description

온칩 라우터
본 명세서는 복수의 처리 요소(processing element)를 포함하는 컴퓨팅 칩(computing chip) 상의 데이터를 라우팅하기 위한 라우터(router) 및 라우터에 의해 데이터 패킷(data packet)을 처리하기 위한 대응하는 방법에 관한 것이다.
일기 예보, 약물 발견, 신경 시뮬레이션 및 자율 주행 차량과 같은 까다로운 과학적 응용 프로그램에 사용되는 고성능 컴퓨터를 포함하여 오늘날의 더 강력한 컴퓨터 중 다수는 일종의 인터 프로세서 네트워크(inter-processor network)를 통해 연결된 많은 수의 프로세서를 사용한다. 이러한 기계의 경우 네트워크를 통해 이동하는 정보 패킷 간의 순환 종속성(circular dependency)으로 인해 통신 네트워크가 교착상태(deadlock)에 빠지지 않는 것이 중요하다. 교착상태는 패킷 A의 경로가 패킷 B에 의해 차단되어 진행되지 않고 패킷 B가 패킷 A에 의해 경로가 차단되어 진행할 수 없는 상황이다. 이러한 순환 종속성에는 두 개 이상의 패킷이 포함될 수 있지만 원칙은 동일하게 유지된다.
교착상태를 초래하는 순환 종속성의 위험을 피하기 위해 순환 종속성이 절대 발생하지 않도록 이러한 네트워크를 설계하는 것이 일반적이다. 이것은 다중 네트워크 계층을 사용하거나 가상 채널(virtual channel)을 사용하거나 기타 알려진 기술을 통해 달성할 수 있다. 이러한 기술은 순환 종속 가능성을 제거하는 데 효과적이지만 추가 통신 기능을 지원하는 데 필요한 하드웨어 측면에서 상당한 추가 비용이 발생한다. 이와 같이, 프로세서 간 네트워크에서 교착상태를 방지하는 개선된 수단을 제공하는 것이 바람직하다.
제1 측면에 따르면, 복수의 처리 요소(processing element)를 포함하는 컴퓨팅 칩(computing chip) 상의 데이터를 라우팅하기 위한 라우터(router)가 제공되며, 라우터는: 패킷 처리 파이프라인(packet processing pipeline); 드롭된 패킷 버퍼(dropped packet buffer); 및 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 한다고 결정하고; 드롭될 데이터 패킷을 패킷 처리 파이프라인에서 드롭된 패킷 버퍼로 이동하고; 및 드롭된 패킷 버퍼에서 드롭된 데이터 패킷을 재처리를 위해 패킷 처리 파이프라인에 다시 삽입하도록 구성된 하나 이상의 회로(circuit)를 포함한다.
위에서 논의한 바와 같이, 이전 방법은 교착상태를 초래할 수 있는 순환 종속성이 절대 발생하지 않도록 프로세서 간 네트워크를 설계하려고 시도했다. 그러나, 이러한 기술은 필요한 추가 통신 기능을 지원하는 데 필요한 하드웨어 측면에서 상당한 추가 비용이 발생한다. 본 발명은 차단될 수 있는 패킷이 네트워크 패브릭에서 일시적으로 제거("드롭된")되고 버퍼에 유지되도록 함으로써 훨씬 더 간단한 네트워크가 교착상태가 없도록 하여 임의의 순환 종속성을 제거한다. 패킷은 이후에 네트워크에 다시 삽입되어 정상적으로 전달될 수 있다. 패킷 드롭(packet dropping) 및 재삽입(re-insertion)을 위한 하드웨어 메커니즘을 사용하면 네트워크가 혼잡한 경우에도 우수한 처리량을 유지할 수 있으므로 저렴한 네트워크 패브릭에서 빠르고 안정적인 패킷 전달을 보장할 수 있다.
일부 다른 선행 기술 방법에서, 데이터 패킷을 드롭하는 프로세스는 소프트웨어에서 수행된다. 예를 들어, 하나의 선행 기술 방법에서 칩 상의 처리 요소는 모니터 프로세서(monitor processor)로 지정된다. 패킷이 드롭되어야 한다고 결정되면 인터럽트 신호(interrupt signal)가 모니터 프로세서로 전송된다. 그러면 모니터 프로세서는 드롭된 패킷을 복사하고 복사된 패킷을 재전송할 수 있다. 그러나, 이 프로세스는 모니터 프로세서가 인터럽트를 처리하는 데 필요한 시간을 감안할 때 느리다. 네트워크를 통해 패킷을 복사하고 재전송하는 데 발생하는 레이턴시(latency)는 드롭된 패킷을 처리하는 데 필요한 시간을 더욱 증가시킨다. 본 발명은 라우터의 일부로서 하드웨어 기반 패킷 드롭(hardware-based packet dropping) 및 재삽입 메커니즘(reinsertion mechanism)을 제공한다. 따라서, 드롭된 패킷을 처리하는 데 필요한 시간이 크게 줄어들고 혼잡 상황에서 라우터의 처리량이 증가할 수 있다. 패킷 드롭 및 재삽입이 모니터 프로세서로의 전송 및 라우터 재전송을 요구하는 대신 라우터 내에서 완전히 발생하므로 프로세스도 더 전력 효율적이다. 또한, 모니터 프로세서가 필요하지 않기 때문에 칩의 처리 요소를 각각의 동작을 수행하는 데 완전히 전용할 수 있다.
라우터는 동일한 칩의 처리 요소들 사이에서 데이터 패킷을 라우팅할 수 있고 데이터 패킷이 상이한 칩의 처리 요소 사이에서 라우팅될 수 있도록 칩이 연결될 수 있다는 것을 이해할 것이다. 또한 라우터는 드롭된 패킷 버퍼(dropped packet buffer) 및 하나 이상의 회로를 포함하는 하드웨어 기반 패킷 드롭 및 재삽입 메커니즘(re-insertion mechanism)을 포함한다는 것을 이해할 것이다.
하나 이상의 회로는 드롭된 패킷 버퍼를 포함하고 드롭된 패킷 버퍼로부터 드롭된 데이터 패킷을 재처리를 위해 패킷 처리 파이프라인으로 재삽입하도록 구성된 패킷 재삽입 모듈(packet re-insertion module)을 포함할 수 있다.
하나 이상의 회로는 데이터 패킷의 목적지가 데이터 패킷을 수신할 수 없음을 나타내는 신호에 기초하여 패킷 처리 파이프라인(packet processing pipeline)의 데이터 패킷이 드롭되어야 한다고 결정하도록 구성될 수 있다. 목적지는 반드시 데이터 패킷의 최종 목적지일 필요는 없고, 오히려 목적지는 온칩 데이터 네트워크의 중간 노드를 포함할 수 있거나 라우터의 출력 포트일 수 있다는 것을 이해할 것이다. 패킷 처리 파이프라인을 차단하는 것을 방지하기 위해, 데이터 패킷이 드롭될 수 있다.
패킷 처리 파이프라인은 비순차 패킷 버퍼(out-of-order packet buffer)를 더 포함할 수 있고, 하나 이상의 회로는 비순차 패킷 버퍼로부터 드롭된 패킷 버퍼로 드롭될 데이터 패킷을 이동시키도록 구성될 수 있다. 하나 이상의 회로는 패킷 처리 파이프라인에 의한 처리를 위해 데이터 패킷을 선택하고; 데이터 패킷의 하나 이상의 목적지를 결정하고; 데이터 패킷의 하나 이상의 목적지의 목적지가 데이터 패킷을 수신할 수 없다고 결정하고; 데이터 패킷을 비순차 패킷 버퍼로 이동하도록 추가로 구성될 수 있다.
비순차 패킷 버퍼는 중단된 데이터 패킷(stalled data packet), 즉 아직 전송될 수 없는 데이터 패킷을 대기열에 넣어 패킷 처리 파이프라인이 계속하기 전에 중단된 데이터 패킷이 드롭될 때까지 기다릴 필요 없이 추가 패킷을 계속 처리할 수 있다. 데이터 패킷이 전송될 수 없는 경우, 데이터 패킷이 목적지로 전송될 수 있거나 드롭될 비순차 버퍼에서 제거되어야 할 때까지 비순차 패킷 버퍼에 저장될 수 있다.
비순차 패킷 버퍼는 파이프라인 대기열(pipeline queue)일 수 있다. 새로운 데이터 패킷이 정지될 때, 비순차 패킷 버퍼에 있는 기존의 중단된 데이터 패킷은 새로운 지연된 패킷을 수용하기 위해 대기열에서 더 이동될 수 있다. 드롭될 데이터 패킷은 비순차 패킷 버퍼에서 가장 오래된 데이터 패킷일 수 있다.
하나 이상의 회로는 패킷 처리 파이프라인의 데이터 패킷이 타이머의 만료(expiration)에 기초하여 드롭되어야 한다고 결정하도록 구성될 수 있다. 예를 들어, 비순차 패킷 버퍼가 사용되는 경우, 데이터 패킷이 버퍼의 끝 슬롯에 도달할 때 타이머가 시작될 수 있다. 이는 버퍼가 가득 차서 패킷 처리 파이프라인이 과도하게 지연되지 않도록 데이터 패킷이 드롭될 것임을 나타낼 수 있다. 비순차 패킷 버퍼를 사용하지 않는 경우, 데이터 패킷을 전송할 수 없다고 판단되면 타이머가 시작될 수 있다. 타이머는 패킷이 불필요하게 드롭되지 않도록 최소 대기 시간(waiting time)을 제공한다.
하나 이상의 회로는 드롭된 패킷 버퍼로부터 드롭된 데이터 패킷을 타이머에 기초한 재처리를 위해 패킷 처리 파이프라인으로 재삽입하도록 구성될 수 있다. 예를 들어, 타이머는 패킷이 드롭된 패킷 버퍼로 이동되고 드롭된 패킷 버퍼가 더 이상 비어 있지 않을 때 시작될 수 있다. 타이머는 드롭된 패킷이 드롭된 패킷 버퍼에서 제거되고 패킷 처리 파이프라인에 다시 삽입될 때 재설정될 수 있다. 드롭된 패킷 버퍼가 비어 있지 않으면 타이머가 다시 시작될 수 있다. 따라서 타이머는 드롭된 패킷 재삽입 사이의 최소 시간 간격을 적용한다. 최소 시간 간격은 드롭된 패킷 버퍼의 현재 부하(current load) 및/또는 라우터의 현재 상태 및/또는 온칩 네트워크(on-chip network)의 현재 상태(current status)에 따라 동적으로 구성될 수 있다.
하나 이상의 회로는 드롭된 데이터 패킷을 드롭된 패킷 버퍼로부터 패킷 처리 파이프라인의 로드에 기초하여 재처리을 위해 패킷 처리 파이프라인으로 재삽입하도록 구성될 수 있다. 예를 들어, 재삽입 요청(re-insertion request)이 패킷 처리 파이프라인으로 전송될 수 있으며 요청이 승인되면 재삽입이 수행된다. 요청 승인(Granting)은 패킷 처리 파이프라인의 로드 및/또는 파이프라인 시작에 여유 슬롯이 있을 때 및/또는 처리를 위해 도착하는 새 데이터 패킷이 없을 때 및/또는 새로 도착한 데이터 패킷 및/또는 당업자에 의해 적절하다고 간주되는 기타 조건과의 주기적 또는 인터리브 기반에 기반될 수 있다. 하나 이상의 회로는 재삽입 요청을 처리하기 위한 패킷 재삽입 모듈의 일부로서 재삽입 요청기(re-insertion requester)를 포함할 수 있고, 재삽입 요청기는 재삽입 요청을 생성할 때 신호를 보내는 재삽입 타이머(re-insertion timer)에 연결될 수 있다.
라우터는 라우터 외부의 데이터 패킷의 재처리를 위해 드롭된 패킷 버퍼에 저장된 데이터 패킷을 제거하기 위한 소프트웨어 기반 패킷 오프로드 동작(software-based packet offload operation)을 제공하도록 구성될 수 있다. 예를 들어, 드롭된 패킷 버퍼가 가득 찼거나 거의 가득 차면, 소프트웨어 기반 메커니즘을은 처리 요소와 관련된 로컬 메모리와 같은 칩의 다른 곳에 저장하기 위해 드롭된 패킷 버퍼에서 패킷을 제거하는 데 사용될 수 있다. 제거된 패킷(removed packet)은 온칩 네트워크(on-chip network)에서 재전송될 수 있다. 라우터는 판독할 때 소프트웨어 기반 패킷 오프로드 동작을 시작하는 일반 레지스터 파일에 레지스터를 포함할 수 있다. 일반 레지스터 파일은 라우터에서 온칩 다른 곳으로 패킷을 복사하기 전에 드롭된 패킷을 저장하기 위한 중간 저장 위치(intermediate storage location)로 구성될 수 있다.
패킷 처리 파이프라인은 멀티캐스트 데이터 패킷(multi-cast data packet)을 처리하도록 구성될 수 있다. 라우터는 복수의 패킷 처리 파이프라인을 포함할 수 있다. 각각의 패킷 처리 파이프라인은 특정 유형의 데이터 패킷, 예를 들어 멀티캐스트 패킷(multi-cast packet) 또는 시스템 유형 패킷(system type packet)을 처리하도록 구성될 수 있다. 드롭된 패킷 버퍼는 모든 패킷 처리 파이프라인을 제공하도록 구성될 수 있다. 하나 이상의 회로는 상이한 패킷 처리 파이프라인의 드롭된 패킷 요청 사이에서 선택하기 위한 아비터(arbiter)를 포함할 수 있다. 대안적으로, 복수의 패킷 처리 파이프라인 중 하나 이상을 각각 서비스하는 복수의 드롭된 패킷 버퍼가 있을 수 있다.
드롭된 패킷 버퍼는 복수의 드롭된 데이터 패킷을 저장하도록 구성될 수 있다. 드롭된 패킷 버퍼는 하나 이상의 스테틱 램(Static RAM)(SRAM) 모듈을 포함할 수 있다. 드롭된 패킷 버퍼는 드롭된 패킷을 드롭된 패킷 버퍼로 복사하기 위한 패킷 디스어셈블리 버퍼(packet disassembly buffer) 및 드롭된 패킷 버퍼로부터 드롭된 패킷을 제거하기 위한 패킷 리어셈블리 버퍼(packet re-assembly buffer)를 더 포함할 수 있다.
컴퓨팅 칩(computing chip)은 뉴로모픽 칩(neuromorphic chip)일 수 있다. 뉴로모픽 칩은 생물학적 신경 시뮬레이션(biological neural simulation)을 수행하기 위한 특수 칩이다. 생물학적 신경망에서 처리는 생물학적 신경망의 뉴런 사이에서 전기화학적 임펄스의 발사를 통해 이루어진다. 정보는 이러한 임펄스의 발사 속도(firing rate)와 타이밍에 포함되어 있다. 이것은 하나 이상의 뉴로모픽 칩을 사용하여 시뮬레이션될 수 있으며, 이에 의해 뉴로모픽 칩의 처리 요소는 개별 뉴런의 활동을 시뮬레이션하도록 구성된다. 임펄스를 나타내는 데이터 패킷은 적절한 시간과 속도로 뉴런(처리 요소) 간에 전송된다. 따라서, 시뮬레이션의 잠재적인 대규모 특성과 생물학적 실시간 시뮬레이션에 대한 요구를 고려할 때 칩과 칩 간의 데이터 트래픽을 효과적으로 관리하는 것이 중요한다.
또한, 신경 통신을 나타내는 데이터 패킷은 신경 연결의 일대다 특성이 주어진 멀티캐스트 패킷으로 전송될 수 있다. 멀티캐스트 패킷의 전달을 단순화하기 위해 패킷이 모든 목적지에 전달 가능해야 하거나 전혀 전송되지 않도록 하는 모두 아니면 전무(all-or-nothing) 정책이 사용될 수 있다. 이러한 정책으로 인해 데이터 패킷이 전송되기 전에 추가 대기 시간이 발생할 수 있다. 또한, 멀티캐스팅 패킷은 동일한 패킷의 여러 복사본을 생성해야 할 수 있으며, 이는 라우터 내에서 지연을 생성하고 라우터 처리량에도 영향을 미칠 수 있다.
또한, 뉴로모픽 칩의 구성 요소는 서로 다른 속도로 작동할 수 있으며 라우터에서 다양한 구성 요소로의 전송 속도를 제한하여 이러한 구성 요소를 압도하는 것을 방지해야 할 수 있다. 예를 들어, 처리 요소는 라우터가 패킷을 전송할 수 있는 만큼 빠르게 패킷을 처리하지 못할 수 있다. 따라서 데이터 패킷이 라우터에서 동일한 처리 요소로 얼마나 빨리 전송될 수 있는지에 대한 제한이 있을 수 있다. 다른 예에서, 뉴로모픽 칩은 이용 가능한 처리 능력을 증가시키기 위해 함께 연결될 수 있다. 패킷은 칩 간 링크(inter-chip link)를 통해 서로 다른 칩의 처리 요소로 전송될 수 있다. 칩 간 링크는 라우터보다 느리게 실행될 수 있으므로 라우터 처리량에 추가로 영향을 미치는 칩 간 링크를 통해 라우터 외부로 패킷을 전송하는 데 제한이 있을 수 있다.
네트워크 정체 및 충분한 라우터 처리량을 유지할 수 없는 경우에도 온칩 네트워크의 성능이 크게 저하될 수 있다. 예를 들어, 특정 노드의 정체는 패킷이 라우터 외부로 전송되는 것을 방지할 수 있으며 패킷 처리 파이프라인이 중지되도록 할 수 있다. 이는 차단된 노드가 라우팅을 위해 다른 차단된 노드에 종속될 수 있고 교착상태 상황이 발생할 수 있다는 점을 감안할 때 더 이상 패킷을 전송할 수 없는 지점까지 패킷이 네트워크의 노드에서 대기열에 대기됨에 따라 추가 혼잡을 유발할 수 있다. 노드가 수신되는 패킷을 빠르게 처리할 수 없거나 노드가 충돌한 경우 노드에서 정체가 발생할 수 있다. 다른 예에서, 네트워크 혼잡은 시스템/구성 유형 패킷의 적시 전송을 지연시킬 수 있고 시스템을 느리게 하거나 심지어 충돌을 일으킬 수 있다.
본 발명은 패킷 드롭 및 재삽입을 위한 하드웨어 메커니즘의 제공을 고려할 때 뉴로모픽 칩과 함께 사용하기에 특히 적합하며, 이는 위에서 언급한 바와 같이 네트워크 혼잡이 존재하는 경우에도 우수한 처리량을 유지할 수 있다. 위의 논의는 고성능 컴퓨팅 애플리케이션(HPC)에서 사용되는 것과 같은 컴퓨팅 칩에 더 일반적으로 적용될 수도 있다는 것이 이해될 것이다.
다른 측면에 따르면, 복수의 처리 요소를 포함하는 컴퓨팅 칩(computing chip) 상의 데이터를 라우팅하는 방법이 제공되며, 라우터(router)는 패킷 처리 파이프라인(packet processing pipeline), 드롭된 패킷 버퍼(dropped packet buffer), 및 하나 이상의 회로(one or more circuit)을 포함하고, 방법은: 하나 또는 회로에 의해, 패킷 처리 파이프라인 내의 데이터 패킷이 드롭되어야 함을 결정하는 단계; 하나 이상의 회로에 의해, 드롭될 데이터 패킷을 패킷 처리 파이프라인으로부터 드롭된 패킷 버퍼로 이동시키는 단계; 및 하나 이상의 회로에 의해, 드롭된 패킷 버퍼로부터 드롭된 데이터 패킷을 재처리를 위해 패킷 처리 파이프라인으로 재삽입하는 단계를 포함한다.
방법은 제1 측면의 하나 이상의 회로의 동작에 대응할 수 있다. 예를 들어, 패킷 처리 파이프라인 내의 데이터 패킷이 드롭되어야 한다고 결정하는 단계는 데이터 패킷의 목적지가 데이터 패킷을 수신할 수 없다는 것을 나타내는 신호에 기초할 수 있다.
방법은 드롭될 데이터 패킷을 비순차 패킷 버퍼로부터 드롭된 패킷 버퍼로 이동시키는 단계를 더 포함할 수 있다.
방법은: 패킷 처리 파이프라인에 의해 처리할 데이터 패킷을 선택하는 단계; 데이터 패킷의 하나 이상의 목적지를 결정하는 단계; 데이터 패킷의 하나 이상의 목적지의 목적지가 데이터 패킷을 수신할 수 없다고 결정하는 단계; 및 데이터 패킷을 비순차 패킷 버퍼로 이동하는 단계를 더 포함한다.
드롭될 데이터 패킷은 비순차 패킷 버퍼에서 가장 오래된 데이터 패킷일 수 있다.
패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 하는지를 결정하는 것은 타이머의 만료에 기초할 수 있다.
드롭된 패킷 버퍼로부터 드롭된 데이터 패킷을 재처리를 위해 패킷 처리 파이프라인으로 재삽입하는 단계는 패킷 처리 파이프라인의 부하에 기초할 수 있다.
방법은 소프트웨어 기반 패킷 오프로드 동작에 응답하여 드롭된 패킷 버퍼에 저장된 데이터 패킷을 제거하는 단계를 더 포함할 수 있다.
패킷 처리 파이프라인은 멀티캐스트 데이터 패킷(multi-cast data packet)을 처리하도록 구성될 수 있다.
드롭된 패킷 버퍼는 복수의 드롭된 데이터 패킷을 저장하도록 구성될 수 있다.
드롭된 패킷 버퍼는 하나 이상의 SRAM 모듈을 포함할 수 있다.
컴퓨팅 칩(computing chip)은 뉴로모픽 칩(neuromorphic chip)일 수 있다.
측면들이 조합될 수 있고, 한 측면의 맥락에서 설명된 특징들이 다른 측면들과 조합될 수 있다는 것이 쉽게 이해될 것이다.
도 1은 뉴로모픽 칩의 개략도이다.
도 2는 뉴로모픽 칩의 네트워크 지형의 개략도이다.
도 3은 뉴로모픽 칩에 있는 라우터의 패킷 처리 파이프라인의 개략도이다.
도 3a는 패킷 재삽입 모듈의 개략도이다.
도 3b는 드롭된 패킷 버퍼의 개략도이다.
도 4는 라우터에 의해 수행되는 처리를 나타내는 흐름도이다.
도 5는 라우터에 의해 수행되는 처리를 보다 상세하게 나타내는 흐름도이다.
도 6은 데이터 패킷을 드롭할지 여부를 결정하기 위한 예시적인 처리를 나타내는 흐름도이다.
도 7은 데이터 패킷을 드롭할지 여부를 결정하기 위한 대안적인 예시적인 처리를 나타내는 흐름도이다.
도 8은 드롭된 데이터 패킷을 처리하기 위한 처리를 나타내는 흐름도이다.
이제 도 1을 참조하면, 뉴로모픽 칩(neuromorphic chi)(100)의 개략도가 도시되어 있다. 뉴로모픽 칩(chip)(100)은 복수의 처리 요소(processing element)(101)를 포함한다. 도 1은 8개의 처리 요소를 갖는 칩을 도시하지만, 칩(100) 상에 더 많은(또는 더 적은) 수의 처리 요소가 있을 수 있다는 것을 이해할 것이다. 예를 들어, 하나의 예시적인 뉴로모픽 칩에는 152개의 처리 요소가 있다.
각 처리 요소는 프로세서 코어, 로컬 메모리 및 데이터를 전송 및 수신하기 위한 모듈을 포함할 수 있다. 데이터는 칩(100)의 처리 요소(101) 사이 및/또는 상이한 칩의 처리 요소 사이에서 통신될 수 있다. 칩(100)은 이와 관련하여 복수의 칩 간 링크(inter-chip link)(102)를 포함할 수 있다. 외부 장치는 또한 외부 I/O 인터페이스(103)를 통해 칩(100)에 연결될 수 있다.
칩(100)은 주 라우터(primary router)(105)를 추가로 포함한다. 주 라우터(105)는 멀티캐스트 데이터 패킷과 같은 특정 유형의 온칩 데이터 트래픽 및 모든 칩간 데이터 트래픽을 지시하도록 구성된다. 데이터는 칩(100)의 서로 다른 구성요소를 연결하고 네트워크 온 칩(Network-on-Chip)(NoC)을 형성하는 칩(100) 상의 통신 링크를 통해 통신된다. 데이터가 다른 칩 상의 구성요소와 통신되어야 하는 경우, 주 라우터(105)는 칩간 링크(102)를 통해 다른 칩의 주 라우터와 통신할 수 있다.
주 라우터(105)는 패킷 처리 파이프라인을 포함한다. 패킷 처리 파이프라인은 처리를 위해 주 라우터(105)로 전송된 데이터 패킷을 수신하고, 데이터 패킷의 목적지를 결정하고, 데이터 패킷에 대한 적절한 라우팅 경로를 결정하고, 결정된 라우팅 경로를 통해 데이터 패킷을 결정된 목적지로 전송하도록 구성된다.
데이터 패킷이 파이프라인에서 대상으로 전송될 준비가 되면 네트워크 혼잡과 같은 요인으로 인해 해당 시점에 데이터 패킷을 전송하지 못할 수 있다. 예를 들어, 뉴로모픽 칩(100)은 신경 시뮬레이션을 실행하는데 사용될 수 있다. 칩(100)의 각 처리 요소는 많은 수의 뉴런을 시뮬레이션하는 데 사용될 수 있으며, 예를 들어 하나의 처리 요소가 1000개의 뉴런을 시뮬레이션할 수 있다. 따라서, 통신이 동일한 처리 요소 상의 많은 수의 뉴런으로 향하거나 많은 양의 통신이 처리 요소 상의 적은 수의 뉴런으로 향하는 경우 라우터(105)에서 혼잡이 있을 수 있다. 또한 하나의 뉴런은 일반적으로 다른 많은 뉴런에 연결된다. 이것은 뉴런 간의 통신을 위한 멀티캐스팅의 사용에 반영되며, 즉, 처리 요소에서 라우터(105)로 전송되는 하나의 데이터 패킷은 라우터(105) 외부로 전송되는 많은 데이터 패킷의 생성을 초래할 수 있으므로 네트워크 트래픽을 증폭한다. 또한, 멀티캐스트 패킷의 전달 메커니즘을 단순화하기 위해 라우터는 모두 아니면 전무(all-or-nothing) 정책을 운영할 수 있으며, 이에 따라 멀티캐스트 패킷은 모든 목적지가 멀티캐스트 패킷을 수신할 수 있는 경우에만 라우터(105) 외부로 전송된다. 이 정책은 멀티캐스트 패킷 전달을 기록하고 잠재적으로 복잡한 재전송 정책을 공식화하여 칩의 저장 및 전력 요구 사항을 줄이는 메커니즘의 필요성을 방지한다. 그러나, 모두 아니면 전무(all-or-nothing) 정책은 패킷을 전송할 수 없어 패킷 처리 파이프라인의 끝에서 지연될 가능성을 높이다. 이로 인해 지연된 패킷이 전송될 때까지 패킷 처리 파이프라인이 차단될 수 있다.
라우터(105)는 지연된 패킷을 처리하고 라우터(105)의 처리량을 유지하기 위한 하드웨어 기반 메커니즘을 제공한다. 이와 관련하여, 라우터(105)는 드롭된 패킷 버퍼, 및 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 한다고 결정하도록 구성된 라우터(105) 내의 하나 이상의 회로를 더 포함한다. 하나 이상의 회로는 드롭될 데이터 패킷을 패킷 처리 파이프라인으로부터 드롭된 패킷 버퍼로 이동시키도록 더 구성된다. 하나 이상의 회로는 드롭된 패킷 버퍼로부터 드롭된 데이터 패킷을 재처리를 위해 패킷 처리 파이프라인으로 재삽입하도록 추가로 구성된다. 이들 동작 각각은 드롭된 패킷 버퍼(306)를 포함하는 예시적인 패킷 처리 파이프라인을 도시하는 도 3을 참조하여 아래에서 더 상세히 설명된다.
일부 선행 기술 방법에서, 정지된 패킷을 처리하는 프로세스는 소프트웨어에서 수행된다. 예를 들어, 하나의 종래 기술의 방법에서, 칩(100) 상의 처리 요소는 모니터 프로세서로 지정된다. 패킷이 드롭될 때 인터럽트 신호(interrupt signal)가 모니터 프로세서로 전송된다. 그러면 모니터 프로세서는 드롭된 패킷을 복사하고 복사된 패킷을 재전송할 수 있다. 그러나, 이 프로세스는 모니터 프로세서가 인터럽트를 처리하는 데 필요한 시간을 감안할 때 느리다. 네트워크를 통해 패킷을 복사하고 재전송하는 데 발생하는 레이턴시(latency)는 드롭된 패킷을 처리하는 데 필요한 시간을 더욱 증가시킨다. 라우터(105)의 일부로서 하드웨어 기반 패킷 드롭 및 재삽입 메커니즘을 제공함으로써, 드롭된 패킷을 처리하는 데 필요한 시간이 상당히 감소되고 혼잡 상태에서 라우터(105)의 처리량이 증가될 수 있다. 패킷 드롭 및 재삽입이 모니터 프로세서로의 드롭된 패킷 전송 및 라우터로의 재전송을 요구하는 대신 라우터(105) 내에서 완전히 일어나기 때문에, 프로세스는 또한 더 전력 효율적이다. 또한, 모니터 프로세서가 필요하지 않기 때문에 칩의 처리 요소를 각각의 동작을 수행하는 데 완전히 전용할 수 있다. 라우터(105)의 처리량의 분석은 아래에서 더 상세히 제공된다.
이제 도 2를 참조하면, NoC에 대한 예시적인 네트워크 토폴로지의 개략도가 도시되어 있다. 도 2에서 NoC는 2D 메시 네트워크(mesh network)로 배치된다. 이러한 유형의 토폴로지는 스타 토폴로지와 같은 다른 네트워크 토폴로지에 비해 칩의 처리 요소 수가 증가함에 따라 더 확장 가능한 솔루션을 제공한다.
칩의 처리 요소는 쿼드 처리 요소(Quad Processing Element)(QPE)(201)로 4개의 그룹으로 배치된다. 각각의 QPE는 QPE(201)의 대응하는 처리 요소(101)에 대한 트래픽을 지시하고 메시 네트워크의 적절한 이웃 NoC 라우터(202)로 데이터 패킷을 전달하도록 구성된 네트워크 온 칩(Network-on-Chip)(NoC) 라우터(202)와 연관된다. 그러나, 데이터 패킷의 라우팅은 주 라우터(105)에 의해 제어된다. 따라서, 처리 요소로부터 전송된 모든 데이터 패킷은 가능하게는 여러 NoC 라우터(202)를 통해 주 라우터(105)로 전송되고, 그 다음 주 라우터(105)는 데이터 패킷의 하나 이상의 목적지 및 하나 이상의 목적지에 대한 가장 적절한 경로를 결정한다.
처리 요소 및 네트워크 토폴로지의 다른 배치이 당업자에 의해 적절하다고 간주되는 대로 사용될 수 있음을 이해할 것이다. 또한, 도 2는 명료성을 위해 생략된 구성요소를 갖는 NoC의 부분도를 도시한다는 것을 이해할 것이다.
라우터(105)의 동작은 이제 더 상세히 설명될 것이다. 도 3은 라우터(105)를 통한 데이터 패킷 흐름의 개략도이다. 도 3은 하나의 패킷 처리 파이프라인을 도시하지만, 라우터(105)는 복수의 패킷 처리 파이프라인을 포함할 수 있다는 것을 이해할 것이다. 특히, 각 패킷 처리 파이프라인은 특정 유형의 데이터 패킷, 예를 들어 멀티캐스트 패킷 또는 시스템 유형 패킷을 처리하는 역할을 할 수 있다.
다시 도 3을 참조하면, 라우터(105)에 의한 처리를 위한 데이터 패킷은 병렬 데이터 스트림(301)을 통해 수신될 수 있다. 라우터(105)가 모든 처리 요소(101)에 대한 데이터 패킷을 처리하도록 구성될 때, 라우터(105)는 복수의 입력 포트를 포함할 수 있고, 각각의 입력 포트는 칩(100)의 특정 영역 또는 하나 이상의 칩간 링크(102)를 서비스하도록 구성된다. 따라서 각각의 입력 포트는 라우터(105)에 입력 데이터 패킷 스트림을 제공하도록 구성될 수 있다.
아비터(302)는 처리할 입력 데이터 스트림(301)으로부터 데이터 패킷을 선택하도록 구성된다. 예를 들어, 아비터(302)는 라운드 로빈 기반으로 선택을 수행하도록 구성될 수 있고, 차례로 각각의 입력 데이터 스트림(301)으로부터 데이터 패킷을 선택한다. 그러나, 당업자에 의해 적절하다고 간주되는 바와 같이 대안적인 선택이 사용될 수 있음을 이해할 것이다.
라우팅 엔진(303)은 데이터 패킷의 하나 이상의 목적지 및 NoC를 통한 하나 이상의 목적지로의 적절한 라우팅 경로를 결정하기 위해 선택된 데이터 패킷을 처리하도록 구성된다. 하나 이상의 목적지는 데이터 패킷에 포함된 정보에 기초하여 결정될 수 있다. 예를 들어, 멀티캐스트 데이터 패킷은 소스 라우팅될 수 있다. 즉, 데이터 패킷은 뉴런 식별자(neuron identifier)와 같은 데이터 패킷의 발신자의 식별자를 포함할 수 있다. 라우터(105)는 실행 중인 신경 시뮬레이션에서 뉴런의 연결성에 따라 뉴런 식별자를 매핑하도록 구성된 연관 메모리(associative memory)(308)를 더 포함할 수 있다. 라우팅 엔진(routing engine)(303)은 대응하는 뉴런의 발신 연결(outgoing connection)과 어떤 처리 요소(101) 및 데이터 패킷이 의도된 뉴런을 결정하기 위해 뉴런 식별자에 기초하여 연관 메모리(308)에 액세스할 수 있다. 대안적으로, 데이터 패킷은 데이터 패킷의 목적지를 나타내는 정보를 포함할 수 있다. 예를 들어, 시스템/구성 유형 데이터 패킷은 대상 라우팅을 사용할 수 있는 반면 애플리케이션(신경 시뮬레이션(neural simulation)) 유형 데이터 패킷은 소스 라우팅을 사용할 수 있다. 도 3은 라우팅 엔진(routing engine)(303)과 별개인 것으로서 연관 메모리(308)를 도시하지만, 연관 메모리(308)는 라우팅 엔진(303)의 일부일 수 있다는 것을 이해할 것이다.
라우팅 엔진(303)에 의한 데이터 패킷의 처리가 완료되면, 데이터 패킷은 결정된 하나 이상의 목적지로 전송될 수 있다. 라우터(105)는 데이터 패킷을 전송하기 위한 복수의 출력 포트(output port)(304)를 더 포함할 수 있다. 복수의 입력 포트와 유사하게, 각각의 출력 포트는 칩(100) 또는 하나 이상의 칩 간 링크(102)의 특정 영역을 서비스하도록 구성될 수 있다. 그러나, 위에서 논의한 바와 같이, 데이터 패킷이 현재 시간에 전송되지 않을 수 있다. 예를 들어, 데이터 패킷의 목적지가 현재 데이터 패킷을 수신할 수 없는 경우이다. 목적지는 반드시 데이터 패킷의 최종 목적지일 필요는 없으며, 오히려 목적지는 패킷 처리 파이프라인의 끝에서 시작하는 데이터 패킷의 전송 경로를 따라 임의의 지점을 포함할 수 있다는 것을 이해할 것이다. 예를 들어, 라우터(105) 외부의 데이터 패킷의 전송은 특정 출력 포트(304)를 통해 이루어질 수 있다. 특정 출력 포트(304)를 사용할 수 없어 현재 시간에 데이터 패킷을 전송할 수 없을 수 있다. 다른 예에서, NoC 라우터(202)와 같은 네트워크의 중간 노드는 이용 불가능할 수 있고 그에 의해 데이터 패킷이 전송되는 것을 방지할 수 있다. 패킷 처리 파이프라인을 차단하지 않기 위해 전송할 수 없는 데이터 패킷이 드롭될 수 있다.
데이터 패킷은 데이터 패킷의 목적지가 데이터 패킷을 수신할 수 없다는 신호에 기초하여 드롭될 수 있다. 예를 들어, 라우터(105)의 출력 포트(304)는 그것이 현재 데이터 패킷을 처리하는데 이용가능하지 않다는 것을 나타내는 신호를 제공할 수 있다. 마찬가지로 NoC의 다른 노드는 가용성을 나타내는 신호를 제공할 수 있다.
데이터 패킷을 즉시 드롭하는 대신, 라우팅 엔진(303)과 같은 라우터(105)의 하나 이상의 회로는 데이터 패킷이 드롭되어야 한다고 결정하기 전에 지정된 시간 기간을 기다리도록 구성될 수 있다. 이 대기 기간(waiting period) 동안 차단된 대상을 사용할 수 있게 되면 데이터 패킷이 드롭되지 않고 정상적으로 전송될 수 있다. 그렇지 않고 차단된 대상이 사용 가능하지 않은 상태에서 대기 기간이 만료되면 데이터 패킷이 드롭될 수 있다.
대기 기간은 타이머(timer)(309)를 이용하여 구현될 수 있다. 대기 기간은 데이터 패킷의 유형에 따라 설정될 수 있으며, 서로 다른 유형의 데이터 패킷은 서로 다른 대기 시간을 갖는다. 대기 기간은 라우터(105) 및 NoC의 현재 상태에 기초하여 동적으로 구성될 수도 있다.
라우터(105)는 또한 패킷 처리 파이프라인이 계속하기 전에 중단된 데이터 패킷이 드롭될 때까지 기다릴 필요 없이 추가 패킷을 계속 처리할 수 있도록 중단된 데이터 패킷이 대기열에 들어갈 수 있도록 하는 비순차 패킷 버퍼(out-of-order packet buffer)(305)를 포함할 수 있다. 이 경우, 데이터 패킷을 전송할 수 없는 경우, 그것은 데이터 패킷이 그 목적지로 전송될 수 있거나 드롭될 비순차 버퍼(305)로부터 제거되어야 하는 때까지 비순차 패킷 버퍼(305)로 이동될 수 있다.
예를 들어, 비순차 패킷 버퍼(305)는 파이프라인 대기열로 구현될 수 있다. 즉, 새로운 중단된 데이터 패킷이 대기열의 시작에 삽입될 수 있고, 비순차 패킷 버퍼(305)의 기존 중단된 데이터 패킷을 대기열의 끝을 향해 대기열의 다음 슬롯을 따라 푸시할 수 있다. 특정 패킷이 전송되는 것을 방지하는 목적지가 어느 시점에서나 사용 가능해지면 패킷은 비순차 패킷 버퍼(305)에서 제거되고 관련 출력 포트(304)를 통해 목적지로 전송될 수 있다. 따라서, 이러한 점에서 데이터 패킷은 패킷 처리 파이프라인에 의한 처리 순서에 비해 비순차적으로 전송될 수 있다. 다중 패킷에 대한 목적지가 동시에 전송을 위해 이용 가능하게 되면, 가장 오래된 데이터 패킷, 즉 대기열의 끝을 향해 가장 먼 데이터 패킷이 비순차 패킷 버퍼(305)로부터의 전송 및 제거를 위해 선택될 수 있다.
중단된 데이터 패킷이 비순차 패킷 버퍼(305)의 끝 슬롯에 도달하면, 타이머(310)가 트리거될 수 있다. 만약 타이머(310)의 만료시 중단된 데이터 패킷이 비순차 패킷 버퍼(305)의 끝 슬롯에 남아 있다면, 즉, 중단된 데이터 패킷이 여전히 송신될 수 없는 경우, 종료 슬롯의 중단된 데이터 패킷이 드롭되어야 한다고 결정될 수 있다.
비순차 패킷 버퍼(305)는 비순차 패킷 버퍼(305)로의 진입 슬롯이 이용가능한 경우에만 새로운 중단된 데이터 패킷이 비순차 패킷 버퍼(305)에 삽입될 수 있도록 구성될 수 있다. 새로운 중단된 데이터 패킷은 새로운 중단된 데이터 패킷을 위한 공간을 생성하기 위해 비순차 패킷 버퍼(305)의 기존 패킷을 앞으로 푸시하도록 구성된 신호를 야기할 수 있다. 비순차 패킷 버퍼(305)가 가득 차면 이것이 불가능할 수 있고 새로운 중단된 데이터 패킷은 패킷 처리 파이프라인을 일시적으로 정지시킬 수 있는 라우팅 엔진(303)의 출력에서 기다려야만 한다.
대안적인 예에서, 비순차 패킷 버퍼(305)는 복수의 비순차 슬롯을 포함할 수 있다. 새로운 지연 패킷은 특정 슬롯과 관련된 타이머를 트리거하는 사용 가능한 슬롯에 저장될 수 있다. 타이머가 만료되어 중단된 패킷을 전송할 수 없는 경우 중단된 패킷을 드롭하는 것으로 결정할 수 있다. 따라서, 이 예에서, 비순차 패킷 버퍼(305)의 슬롯은 링크되지 않는다. 그러나, 이전 예에서 지연된 패킷은 지연된 패킷이 타임아웃을 시작하는 비순차 패킷 버퍼(305)의 끝 슬롯으로 푸시될 때만 드롭되기 때문에 중지된 패킷이 드롭되기 전에 전송될 수 있는 더 긴 기간이 주어질 수 있다. 정지된 패킷이 얼마나 빨리 드롭되는지는 처리된 데이터 패킷이 정지되는 속도에 따라 달라질 수 있다.
데이터 패킷이 드롭되어야 한다고 결정될 때, 라우터(105)의 하나 이상의 회로는 데이터 패킷을 패킷 처리 파이프라인으로부터(예를 들어, 라우팅 엔진(303)의 출력으로부터 또는 사용 중인 경우 비순차 패킷 버퍼(305)로부터) 드롭된 패킷 버퍼(dropped packet buffer)(306)로 이동시키도록 구성된다. 드롭된 패킷 버퍼(306)는 라우터(105)의 패킷 재삽입 모듈(packet re-insertion module)(307)의 일부일 수 있다. 그 다음, 드롭된 패킷은 드롭된 패킷 버퍼(306)로부터 패킷 처리 파이프라인으로 재삽입될 수 있다.
복수의 패킷 처리 파이프라인이 존재하는 경우, 드롭된 패킷 버퍼(306)는 모든 패킷 처리 파이프라인에 서비스를 제공할 수 있다는 것이 이해될 것이다. 예를 들어, 아비터는 하나 이상의 드롭된 패킷 요청이 계류 중인 경우 패킷 재삽입 모듈(packet re-insertion module)(307)에 의해 처리하기 위해 복수의 패킷 처리 파이프라인으로부터 하나의 드롭된 패킷 요청을 선택하도록 구성될 수 있다. 처리할 드롭된 패킷 요청의 선택은 당업자에 의해 적절하다고 간주되는 임의의 중재 방식(arbitration scheme)을 따를 수 있다. 예를 들어, 라운드 로빈 방식을 사용하거나, 드롭된 패킷 요청이 도착한 순서대로 우선 순위를 지정하거나 개별 패킷 처리 파이프라인의 상태에 따라 우선 순위를 지정할 수 있다. 단일 드롭된 패킷 버퍼(single dropped packet buffer)(306)에 대한 대안으로서, 각각이 복수의 패킷 처리 파이프라인 중 하나 이상을 서비스하는 복수의 드롭된 패킷 버퍼(306)가 있을 수 있다.
위에서 간략하게 언급한 바와 같이, 패킷 처리 파이프라인 각각은 다른 유형의 데이터 패킷을 처리하도록 구성될 수 있고 각 패킷 처리 파이프라인은 특정 패킷 유형을 특정 방식으로 처리하도록 구성된 자체 라우팅 엔진을 가질 수 있다. 예를 들어, 위에서 논의된 바와 같이, 신경 시뮬레이션에서 신경 통신을 나타내는 패킷은 멀티캐스트되고 소스 라우팅될 수 있다. 패킷 처리 파이프라인 및 라우팅 엔진은 멀티캐스트 패킷 처리에 전념할 수 있다.
다른 패킷 처리 파이프라인 및 라우팅 엔진은 "코어 대 코어" 유형 패킷을 처리하도록 구성될 수 있다. 이 유형의 패킷은 주로 시스템 관리 및 제어 목적으로 처리 요소 간의 통신을 제공하며 라우팅된 목적지일 수 있다. 추가 패킷 처리 파이프라인 및 라우팅 엔진은 "최근접 이웃" 유형 패킷을 처리하도록 구성될 수 있다. 이 유형의 패킷은 시스템 초기화 및 디버깅 목적으로 사용되며 인접 칩의 모니터 프로세서 간에 통신을 제공한다.
이제 도 3a를 참조하면, 예시적인 패킷 재삽입 모듈(307)이 더 상세히 도시되어 있다. 패킷 재삽입 모듈(307)은 사용 중인 경우 라우팅 엔진(303) 또는 비순차 패킷 버퍼(305)로부터의 드롭된 패킷 저장 요청, 드롭된 패킷 재삽입 요청 또는 소프트웨어 기반 패킷 오프로드 요청을 처리하도록 구성될 수 있다. 라우터(105)는 라우터 외부의 데이터 패킷의 재처리를 위해 드롭된 패킷 버퍼에 저장된 데이터 패킷을 제거하기 위한 소프트웨어 기반 패킷 오프로드 동작을 제공하도록 구성될 수 있다. 예를 들어, 드롭된 패킷 버퍼가 가득 찼거나 거의 가득 차면 소프트웨어 기반 메커니즘을 사용하여 칩의 다른 곳에 저장하기 위해 드롭된 패킷 버퍼에서 패킷을 제거할 수 있다. 이에 대해서는 아래에서 더 자세히 설명한다. 도 3a를 다시 참조하면, 패킷 재삽입 모듈(307)이 위에 나열되지 않은 다른 유형의 요청도 처리할 수 있음을 이해할 수 있을 것이다.
아비터(arbiter)(311)는 다수의 계류 중인 요청이 있는 경우 처리할 요청 중 하나를 선택하도록 구성될 수 있다. 일 예에서, 선택은 드롭된 패킷 저장 요청, 소프트웨어 기반 오프로드 요청 및 마지막으로 드롭된 패킷 재삽입 요청의 순서로 우선순위가 매겨진다. 대안적으로, 당업자에 의해 적절하다고 간주되는 다른 중재 방식이 사용될 수 있다.
드롭된 패킷 저장 요청이 처리를 위해 선택될 때, 드롭될 패킷은 전술한 바와 같이 드롭된 패킷 버퍼(306)에 복사될 수 있다. 또한, 패킷 재삽입 모듈(307)은 대기 레지스터 버퍼(standby register buffer)(312)를 포함할 수 있다. 패킷 재삽입 모듈(307)은 드롭된 패킷 버퍼(306) 내에서 장애가 발생하는 경우 드롭된 패킷을 대기 레지스터 버퍼(312)에 저장하도록 구성될 수 있다. 대기 레지스터 버퍼(312)는 단일 드롭 패킷을 저장하도록 구성될 수 있다. 패킷 재삽입 모듈(307)은 드롭된 패킷이 처리되기 전에 대기 레지스터 버퍼(312)에 저장된 드롭된 패킷을 덮어쓰는 것을 방지하도록 구성될 수 있다. 대기 레지스터 버퍼(312)에서 드롭된 패킷은 소프트웨어 기반 메커니즘을 사용하여 처리될 수 있다. 예를 들어, 인터럽트는 모니터 프로세서로 전송될 수 있으며, 모니터 프로세서는 드롭된 패킷을 재전송을 위해 대기 레지스터 버퍼(312)에서 다른 메모리 위치로 전송할 수 있다. 이 프로세스는 아래에서 더 자세히 설명되는 소프트웨어 기반 패킷 오프로딩과 유사한다.
드롭된 패킷 버퍼(306)에 저장된 드롭된 패킷을 패킷 처리 파이프라인으로 재삽입하는 것은 타이머에 기초할 수 있다. 예를 들어, 패킷이 드롭된 패킷 버퍼(306)에 저장되어 드롭된 패킷 버퍼(306)가 비어 있지 않게 되는 경우, 재삽입 타이머(re-insertion timer)(313)가 시작될 수 있다. 재삽입 타이머(313)의 만료 시, 재삽입 요청기(re-insertion requester)(314)로부터의 요청 신호는 패킷 재삽입의 허용을 요청하기 위해 패킷 처리 파이프라인으로 전송될 수 있다. 파이프라인이 패킷 재삽입을 처리할 수 있을 때 요청이 승인될 수 있다. 예를 들어, 재삽입 요청이 파이프라인 시작 부분에 여유 슬롯이 있는 경우 및/또한 입력 데이터 스트림(301)에서 도착하는 새로운 데이터 패킷이 없을 때 및/또는 새로 도착한 데이터 패킷 및/또는 당업자에 의해 적절하다고 간주되는 기타 조건으로 주기적 또는 인터리브 기반으로 승인될 수 있다.
재삽입 요청이 승인될 때, 드롭된 패킷 버퍼(306) 내의 드롭된 패킷은 패킷 처리 파이프라인으로 재삽입되고 드롭된 패킷 버퍼(306)로부터 제거될 수 있다. 일 예에서, 재삽입 요청기(314)는 재삽입 요청의 허용을 나타내는 신호를 수신하고 차례로 패킷 재삽입 모듈(307)이 패킷 재삽입을 수행하도록 아비터(311)에 요청을 전송하도록 구성될 수 있다. 처리를 위해 아비터(311)에 의해 요청이 선택되면, 드롭된 패킷은 드롭된 패킷 버퍼에서 제거되고 패킷 처리 파이프라인에 다시 삽입될 수 있다. 재삽입된 패킷은 이전과 같이 패킷 처리 파이프라인에 의해 재처리될 수 있다. 재처리 시 재결정될 필요가 없도록 재삽입된 패킷에 대한 원래의 목적지 정보를 제공하는 것이 가능하다. 그러나, 그렇게 하면 단순히 패킷의 목적지를 다시 결정하는 것만큼 바람직하지 않을 수 있는 바람직하지 않은 큰 오버헤드가 발생할 수 있다.
드롭된 패킷이 드롭된 패킷 버퍼(306)에서 제거되면, 재삽입 타이머(313)가 재설정될 수 있다. 드롭된 패킷 버퍼(306)가 추가로 드롭된 패킷을 포함하는 경우, 재삽입 타이머가 재시작될 수 있고 드롭된 패킷 버퍼(306)가 소거될 때까지 재삽입 프로세스가 반복될 수 있다. 따라서 재삽입 타이머(313)는 드롭된 패킷 재삽입 사이의 최소 시간 간격을 시행한다. 재삽입 사이의 실제 기간은 해당 재삽입 요청이 승인될 때까지 패킷이 재삽입되지 않을 수 있으므로 가변적일 수 있다. 최소 시간 간격은 드롭된 패킷 버퍼(306)의 현재 부하에 기초하여 동적으로 구성될 수 있다.
이제 도 3b를 참조하여, 드롭된 패킷 버퍼(306)의 예시적인 구현이 이제 설명될 것이다. 드롭된 패킷 버퍼(306)는 하나 이상의 SRAM 모듈을 포함할 수 있고, 복수의 드롭된 데이터 패킷을 저장하도록 구성될 수 있다. 보다 구체적으로, 드롭된 패킷은 SRAM 버퍼(318)에 저장될 수 있다. 예를 들어, SRAM 버퍼(318)는 64비트 내지 192비트 크기 범위의 데이터 패킷을 갖는 단일 포트 SRAM 매크로를 사용하여 구현될 수 있다.
SRAM 버퍼(318)에 저장될 패킷(317)은 먼저 패킷 디스어셈블리 버퍼(319)에 기록될 수 있다. 패킷 디스어셈블리 버퍼(319)는 예를 들어 6개의 병렬 32비트 레지스터로 구현되어 한 사이클에서 가장 큰 패킷 크기가 패킷 디스어셈블리 버퍼(319)에 기록될 수 있도록 할 수 있다. 그 다음 패킷은 SRAM 버퍼(318)로 전송될 수 있다. 이것은 SRAM 버퍼(318)에 대한 입력의 폭에 따라 여러 사이클이 걸릴 수 있다. 패킷 처리 파이프라인에서 패킷이 드롭될 때를 제어하기 위한 타이머(309, 310)는 패킷이 패킷 디스어셈블리 버퍼(319)에 복사될 때 재설정될 수 있다. 따라서, SRAM 버퍼(318)로의 패킷의 전송은 패킷 드롭 타임아웃 기간 동안 발생할 수 있다. SRAM 버퍼(318)로의 패킷 전송이 완료되기 전에 타임아웃 기간이 만료되면, SRAM 버퍼(318)로의 현재 패킷의 전송이 완료될 때까지 다른 패킷은 드롭될 수 없다. 다른 패킷의 목적지가 이 추가 대기 기간 동안 이용 가능하게 되면, 패킷은 드롭된 패킷이 되기보다는 라우터(105) 외부로 그 목적지로 전송될 수 있다.
SRAM 버퍼(318)로부터 패킷의 제거를 용이하게 하기 위해, 드롭된 패킷 버퍼(306)는 패킷 디스어셈블리 버퍼(319)와 유사한 패킷 리어셈블리 버퍼(320)를 더 포함할 수 있다. 그러나, 패킷 리어셈블리 버퍼(320)는 패킷의 최종 부분이 제거된 패킷(321)을 리어셈블하기 위해 패킷 리어셈블리 버퍼(320)로 이미 전송된 나머지 패킷 데이터와 병렬로 SRAM 버퍼(318) 외부로 직접 전송될 수 있기 때문에 하나의 더 적은 레지스터를 포함할 수 있다. 패킷 디스어셈블리 및 리어셈블리 버퍼(319, 320) 및 SRAM 버퍼(318)로/로부터의 기록은 유한 상태 기계(Finite State Machine)(FSM)(322)에 따라 제어될 수 있다.
드롭된 패킷 버퍼(306)의 오버플로 가능성이 있는 경우, 백업 소프트웨어 메커니즘은 드롭된 패킷 버퍼(306)의 패킷을 재전송을 위해 칩 상의 다른 메모리로 전송하는 데 사용될 수 있다. 이것은 드롭된 패킷 버퍼(306)가 가득 차고 및/또는 넘칠 때 모니터 프로세서에 인터럽트 신호를 보내는 단계를 포함할 수 있다. 예를 들어, 도 3a를 다시 참조하면, 패킷 재삽입 모듈(307)은 패킷 재삽입 모듈(307)과 관련된 모니터링 또는 진단 데이터를 제공하는 상태 레지스터(status register)(315)의 세트를 더 포함할 수 있다. 이것은 SRAM 버퍼(318)에 저장된 워드의 현재 수를 나타내는 SRAM 워드 카운터(word counter)를 포함할 수 있다. "풀 포인트(full-point)" 값은 라우터(105)의 일반 레지스터 파일(general register file)(316)에 저장될 수 있다. 일반 레지스터 파일(316)은 일반 레지스터 파일(316)의 레지스터에 저장된 라우터(105)에 대한 다양한 제어 및 구성 설정을 포함한다.
칩의 처리 요소는 모니터 프로세서로 지정될 수 있다. 모니터 프로세서는 상태 레지스터(315)를 주기적으로 폴링할 수 있거나 SRAM 워드 카운터가 "풀 포인트(full-point)" 값을 초과할 때 모니터 프로세서에 경고하기 위해 "풀 접근(approaching full)" 인터럽트가 생성될 수 있다. 그 다음, 모니터 프로세서는 일반 레지스터 파일(316)을 사용하여 구성될 수 있는 타이머 설정을 조정하거나 드롭된 패킷 버퍼(306) 밖으로 패킷을 전송하는 것과 같은 적절한 조치를 취할 수 있다. 드롭된 패킷 버퍼(306)에 새로운 드롭된 패킷을 저장하기 위한 사용 가능한 저장 공간이 충분하지 않은 경우, 오버플로 인터럽트가 모니터 프로세서로 전송될 수 있고 모니터 프로세서는 소프트웨어 기반 명령을 통해 드롭된 패킷 버퍼(306)로부터 패킷의 제거를 시작할 수 있다.
일 예에서, 드롭된 패킷 버퍼(306) 밖으로 패킷을 전송하기 위해, 모니터 프로세서는 일반 레지스터 파일(316)의 "오프로드 헤더(offload header)" 레지스터로부터 판독을 개시할 수 있다. "오프로드 헤더" 레지스터의 판독은 소프트웨어 패킷 오프로드 요청이 생성되어 패킷 재삽입 모듈(307)로 전송되도록 트리거할 수 있다. 요청에 응답하여, 패킷 재삽입 모듈(307)은 패킷의 헤더 정보가 "오프로드 헤더" 레지스터 판독 동작에 대한 응답으로 모니터 프로세서에 반환되는 일반 레지스터 파일(316)에서 드롭된 패킷 버퍼(306)에서 레지스터로 패킷을 전송하도록 구성될 수 있다. 그 다음, 모니터 프로세서는 헤더 정보를 해석하고 패킷의 재전송을 위해 라우터(105) 외부의 다른 메모리 위치로 일반 레지스터 파일(316)에 보유된 나머지 패킷 데이터의 판독 및 전송을 개시할 수 있다. 예를 들어, 패킷은 모니터 프로세서의 로컬 메모리로 전송될 수 있다.
SRAM 버퍼(318)의 현재 용량 사용량을 기록하기 위한 SRAM 워드 카운터에 더하여, 상태 레지스터(315)는 또한 (정상 하드웨어 기반 메커니즘을 통해) 재삽입된 패킷의 총 수의 카운트를 기록하기 위한 레지스터(register), 지정된 시간 동안 관찰된 SRAM 버퍼(318)에 저장된 최대 워드 수를 기록하는 워드 레벨 카운터(word water-level counter), 단어가 아닌 최대 패킷 수에 대한 동등한 패킷 레벨 카운터(equivalent packet water-level counter) 및 두 번 이상 드롭된 패킷 수를 기록하는 반복 드롭된 패킷 카운트(recurrent dropped packet count)를 포함할 수 있다. 반복적으로 드롭된 패킷 카운트는 패킷이 드롭되었음을 나타내는 패킷 헤더에 비트를 설정하여 모니터링될 수 있다. 이러한 모니터링 데이터는 진단 및 구성 목적에 유용할 수 있다.
이제 도 4를 참조하면, 뉴로모픽 칩에서 데이터를 라우팅하기 위한 처리, 특히 전송될 수 없는 데이터 패킷을 처리하기 위한 처리가 도시되어 있다. 처리는 도 1, 2 및 3의 라우터(105)에 의해 구현될 수 있다는 것이 이해될 것이다. 도 4는 높은 레벨의 처리를 설명하고 도 5 내지 8은 더 자세한 예를 제공한다.
도 4의 단계 S401에서, 라우터(105)의 하나 이상의 회로는 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 한다고 결정한다. 단계 S402에서, 드롭될 데이터 패킷은 하나 이상의 회로를 사용하여 패킷 처리 파이프라인에서 드롭된 패킷 버퍼(306)로 이동된다. 단계 S403에서, 드롭된 데이터 패킷은 하나 이상의 회로에 의해 드롭된 패킷 버퍼(306)로부터 재처리를 위해 패킷 처리 파이프라인으로 재삽입된다.
이제 도 5를 참조하여, 패킷 처리 파이프라인에서 데이터 패킷의 예시적인 처리가 이제 더 상세히 설명될 것이다. 단계 S501에서, 처리를 위해 데이터 패킷이 선택된다. 데이터 패킷은 전술한 바와 같이 복수의 입력 데이터 스트림(301)으로부터 선택될 수 있다. 단일 데이터 스트림만 있는 경우 데이터 패킷은 입력 대기열의 다음 데이터 패킷일 수 있다.
단계 S502에서, 데이터 패킷의 하나 이상의 목적지가 결정된다. 이것은 라우팅 엔진(303)에 의해 수행될 수 있고, 위에서 설명된 바와 같이, 하나 이상의 목적지는 소스 식별자 또는 목적지 식별자와 같은 데이터 패킷 내에 포함된 정보에 기초하여 결정될 수 있다. 식별자는 하나 이상의 목적지를 결정하고 적절한 라우팅 경로를 결정하기 위해 연관 메모리(308)를 검색하는데 사용될 수 있다.
단계 S503에서, 데이터 패킷이 하나 이상의 목적지로 전송될 수 있는지 여부가 결정된다. 위에서 논의된 바와 같이, 결정은 데이터 패킷의 목적지가 데이터 패킷을 수신할 수 없다는 것을 나타내는 신호에 기초할 수 있다.
데이터 패킷이 전송될 수 있는 경우, 데이터 패킷이 하나 이상의 목적지로 전송되는 단계 S504에서 처리가 계속된다. 위에서 언급한 바와 같이, 데이터 패킷은 하나 이상의 출력 포트(304)를 통해 전송될 수 있다. 데이터 패킷이 전송될 수 없는 경우, 데이터 패킷이 드롭되어야 하는지 여부가 결정되는 단계 S505에서 처리가 계속된다.
데이터 패킷을 드롭할지 여부를 결정하는 두 가지 예시적인 방법이 각각 도 6 및 7에 도시되어 있다. 먼저 도 6을 참조하면, 단계 S601에서, 타이머(309)는 0부터 시작된다. 이는 도 5의 단계 S505에서 데이터 패킷이 전송될 수 없다는 결정에 응답하여 발생할 수 있다. 단계 S602 및 S603은 데이터 패킷이 전송될 수 있거나 타이머(309)가 만료될 때까지 처리가 대기하는 루프를 형성한다. 데이터 패킷이 전송될 수 있으면, 처리는 데이터 패킷이 전송되는 단계 S504로 되돌아간다. 타이머(309)가 만료되면, 처리는 먼저 드롭된 패킷 버퍼(306)가 이용가능한지 여부가 결정되는 단계 S604에서 계속되고, 만약 그렇다면, 데이터 패킷은 단계 S605에서 드롭된 패킷 버퍼(306)로 이동된다. 그렇지 않고, 드롭된 패킷 버퍼(306)가 이용가능하지 않다면, 처리는 데이터 패킷이 전송될 수 있는지가 결정되는 단계 S602로 되돌아간다. 드롭된 패킷의 예시적인 처리는 도 8을 참조하여 아래에서 더 자세히 설명된다.
이제 도 7을 참조하여, 데이터 패킷을 드롭할지 여부를 결정하는 제2 예시적인 방법이 이제 설명될 것이다. 단계 S701에서, 데이터 패킷은 비순차 패킷 버퍼(305)로 이동된다. 이는 단계 S505에서 데이터 패킷이 전송될 수 없다는 결정에 대한 응답일 수 있다. 위에서 논의된 바와 같이, 비순차 패킷 버퍼(305)의 기존 데이터 패킷은 새로운 데이터 패킷을 수용하기 위해 비순차 패킷 버퍼(305)의 끝을 향해 푸시될 수 있다.
단계 S702에서, 비순차 패킷 버퍼(305)의 끝 슬롯이 점유되었는지 여부가 결정된다. 끝 슬롯이 점유되지 않은 경우, 비순차 패킷 버퍼(305)의 데이터 패킷은 데이터 패킷이 전송될 수 있을 때까지(단계 S703 및 S704) 또는 데이터 패킷이 비순차 패킷 버퍼(305)의 끝 슬롯에 도달할 때까지 대기 상태를 유지한다.
비순차 패킷 버퍼(305)의 끝 슬롯이 점유되면, 타이머(310)는 단계 S706 및 S707에서 루프에 의해 도시된 바와 같이 데이터 패킷이 드롭되어야 한다고 결정되기 전에 패킷이 전송될 수 있는 최종 시간 간격을 제공하는 단계 S705에서 0부터 시작된다. 데이터 패킷이 이 기간 동안 전송 가능하게 되면, 데이터 패킷이 전송되는 단계 S704에서 처리가 계속된다. 대신에 타이머(310)가 만료되면, 드롭된 패킷 버퍼(306)가 이용가능한지 여부가 먼저 단계 S708에서 결정된다. 그렇다면, 비순차 패킷 버퍼(305)의 끝 슬롯에 있는 데이터 패킷을 드롭해야 하는 것으로 판단하고, 데이터 패킷은 드롭된 패킷 버퍼(306)로 이동된다(S709). 드롭된 패킷의 예시적인 처리는 도 8을 참조하여 아래에서 더 자세히 설명된다. 드롭된 패킷 버퍼(306)가 이용 가능하지 않으면, 처리는 비순차 패킷 버퍼(305)의 끝 슬롯에 있는 데이터 패킷이 전송될 수 있는지 여부가 결정되는 단계 S706으로 되돌아간다. 비순차 패킷 버퍼(305) 내의 임의의 패킷이 도 7의 처리 동안 전송가능하게 되면, 그 데이터 패킷은 언제든지 전송될 수 있다는 것을 이해할 것이다. 비순차 패킷 버퍼(305)의 기존 패킷은 전송된 패킷에 의해 남겨진 슬롯을 채우기 위해 앞으로 이동될 수 있다. 그러나, 전력 소모를 줄이기 위해, 비순차 패킷 버퍼(305)에 삽입할 새로운 패킷이 있는 경우에만 빈 슬롯을 채우도록 패킷을 이동하는 것이 가능하다.
이제 도 8을 참조하여, 드롭된 패킷을 처리하기 위한 예시적인 처리가 이제 설명될 것이다. 처리는 라우터(105)의 패킷 재삽입 모듈(307)에 의해 구현될 수 있다는 것이 이해될 것이다. 처리는 드롭된 패킷 버퍼(306)가 비어 있지 않게 될 때 단계 S801에서 시작된다. 이에 응답하여, 단계 S802에서 재삽입 타이머(313)가 시작되고 처리는 단계 S803에서 계속되기 전에 지정된 시간 간격 동안 대기한다. 단계 S803에서, 예를 들어 재삽입 요청기(314)로부터 패킷 재삽입 요청이 전송된다. 단계 S804에서, 패킷 재삽입 요청이 승인되었음을 나타내는 신호를 수신한다. 위에서 논의된 바와 같이, 패킷 재삽입 요청은 패킷 처리 파이프라인으로 전송될 수 있고 패킷 처리 파이프라인이 재삽입된 데이터 패킷을 처리할 수 있을 때 승인될 수 있다.
그 다음, 처리는 단계 S805에서 계속되고, 여기서 드롭된 패킷 버퍼(306)로부터의 데이터 패킷은 패킷 처리 파이프라인으로 재삽입된다. 위에서 논의된 바와 같이, 재삽입된 데이터 패킷은 드롭된 패킷 버퍼(306)에서 가장 오래된 데이터 패킷일 수 있다. 단계 S806에서, 재삽입 타이머(313)가 재설정된다. 드롭된 패킷 버퍼가 계속해서 비어 있지 않으면 처리가 단계 S801에서 다시 시작될 수 있다.
라우터의 예시적인 실시예의 처리량의 비교 분석이 이제 논의될 것이다. 도 1 내지 3b에 따른 참조 부호는 명확성을 위해 괄호 안에 제공된다. 예시적인 라우터(105)는 400MHz의 클록 속도를 가지며 2K x 32비트 SRAM 매크로(SRAM 버퍼(318))로 구현된 드롭된 패킷 버퍼(306)를 포함한다. 이것은 페이로드 없이 1K 데이터 패킷을 저장할 수 있는 용량과 최대 128비트 페이로드로 최대 333개의 패킷을 저장할 수 있다. 예시적인 라우터(105)는 152개의 처리 요소(101) 및 7개의 칩 간 링크(102)를 제공하는 6개의 출력 포트(304)를 더 포함한다. 152개의 처리 요소(101)는 38개의 쿼드 코어 처리 요소(201)로 배치된 암 코덱스(ARM Cortex) M4F 프로세서를 사용하여 구현된다. 프로세서의 클럭 속도는 300MHz이다. 온칩 네트워크는 2D 메시 토폴로지를 사용하여 구현된다.
스파이네커(SpiNNaker) 1 뉴로모픽 칩(영국 맨체스터 대학교)에 대해 비교가 수행되었다. 스파이네커(SpiNNaker) 1 칩의 라우터는 133MHz의 클럭 속도를 가지며 위에서 설명한 것처럼 소프트웨어 기반 패킷 재삽입을 사용한다. 스파이네커(SpiNNaker) 1 칩에는 18개의 ARM968 프로세서 코어가 있다. 더 적은 수의 처리 요소를 감안할 때 온칩 네트워크는 스타 토폴로지로 구현될 수 있다. 또한, 6개의 칩 간 링크가 있다.
이제 비교 분석으로 넘어가면, 스파이네커(SpiNNaker) 1 라우터와 패킷 재삽입이 없는 예시적인 라우터(105)의 처리량이 비교된다. 처리 요소(101)가 네트워크로부터의 패킷을 처리하기 위해 30 사이클 정도를 취하는 것으로 가정한다. 그러나, 이것은 프로세서 부하에 따라 훨씬 더 나쁠 수 있다. 예시적인 실시예의 처리 요소(101)는 패킷 DMA를 구현하고 따라서 스파이네커(SpiNNaker) 1 칩의 처리 요소보다 더 높은 수신 속도를 갖는다는 점에 유의한다. 최악의 경우 처리량은 가능한 모든 통신 경로에서 가장 느린 구성 요소를 기반으로 결정된다.
모든 패킷이 드롭되는 조건에서, 스파이네커(SpiNNaker)-1 라우터 처리량은 패킷이 드롭되는 속도를 유지하기 위한 소프트웨어 패킷 재삽입 메커니즘의 능력에 의해 제한될 수 있다(즉, 소프트웨어가 드롭된 각 패킷을 복사하고 처리하는 데 필요한 시간). 이것은 240 라우터 클록 주기마다 1 패킷의 비율로 결정되었으며, 133MHz의 라우터 클록 주파수에서 0.56M 패킷/초의 처리량이 발생한다.
예시적인 라우터는, 하드웨어 메커니즘으로 인해, 4 클록 주기마다 1개의 속도로 패킷을 드롭할 수 있으며, 400MHz 클록에서는 스파이네커(SpiNNaker)-1 라우터보다 180배 빠른 100M 패킷/s의 패킷 처리량이 발생한다. 등가 클록 주파수의 경우 60의 개선 계수(improvement factor)가 관찰된다.
물론, 여기에는 칩 간 링크 대역폭 및 해당 스트림을 따라잡기 위해 패킷 스트림을 수신하는 프로세서의 기능을 포함하는 라우터 처리량을 제한할 수 있는 몇 가지 다른 요소가 있으며, 그러나, 스파이네커(SpiNNaker)-1에서는 소프트웨어 패킷 재삽입 메커니즘이 일반적으로 정체로 인해 패킷이 드롭되는 상황에서 처리량 제한 요소가 되는 반면에, 위의 추정치는 예시적인 라우터에서 하드웨어 메커니즘은 이런 경우가 거의 없음을 보장함을 보여준다.
상기 실시예는 뉴로모픽 칩과 관련하여 본 발명을 설명한다. 본 발명은 뉴로모픽 칩으로 제한되지 않고 임의의 유형의 컴퓨팅 칩, 특히 고성능 컴퓨팅(HPC)에 사용되는 유형의 "다수-코어" 칩에 적용될 수 있음을 이해할 것이다.
본 발명의 특정 실시예가 위에서 설명되었지만, 본 발명의 사상 및 범위를 벗어남이 없이 설명된 실시예에 다양한 수정이 이루어질 수 있음을 이해할 것이다. 즉, 설명된 실시예들은 모든 면에서 예시적이며 비제한적인 것으로 간주되어야 한다. 특히, 특정 처리에 대해 특정 형태가 설명된 경우, 그러한 처리는 적절한 출력 데이터를 제공하도록 배치된 임의의 적절한 형태로 수행될 수 있음을 이해할 것이다.

Claims (25)

  1. 복수의 처리 요소를 포함하는 컴퓨팅 칩 상의 데이터를 라우팅하기 위한 라우터에 있어서,
    상기 라우터는:
    패킷 처리 파이프라인; 및
    하드웨어 기반 패킷 드롭 및 재삽입 메커니즘을 포함하고,
    상기 하드웨어 기반 패킷 드롭 및 재삽입 메커니즘은:
    드롭된 패킷 버퍼; 및
    상기 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 한다고 결정하고; 드롭될 데이터 패킷을 상기 패킷 처리 파이프라인에서 상기 드롭된 패킷 버퍼로 이동하고; 및 상기 드롭된 패킷 버퍼에서 상기 드롭된 데이터 패킷을 재처리를 위해 상기 패킷 처리 파이프라인에 다시 삽입하도록 구성된 하나 이상의 회로를 포함하는
    라우터.

  2. 제1항에 있어서,
    상기 하나 이상의 회로는 데이터 패킷의 목적지가 상기 데이터 패킷을 수신할 수 없다는 것을 나타내는 신호에 기초하여 상기 패킷 처리 파이프라인의 상기 데이터 패킷이 드롭되어야 한다고 결정하도록 구성되는
    라우터.
  3. 제1항 또는 제2항에 있어서,
    상기 패킷 처리 파이프라인은 비순차 패킷 버퍼를 더 포함하고,
    상기 하나 이상의 회로는 드롭될 데이터 패킷을 상기 비순차 패킷 버퍼로부터 상기 드롭된 패킷 버퍼로 이동하도록 구성되는
    라우터.
  4. 제3항에 있어서,
    상기 하나 이상의 회로는:
    상기 패킷 처리 파이프라인에 의한 처리를 위한 데이터 패킷을 선택하고;
    상기 데이터 패킷의 하나 이상의 목적지를 결정하고;
    상기 데이터 패킷의 하나 이상의 목적지의 목적지가 상기 데이터 패킷을 수신할 수 없다고 결정하고; 및
    상기 데이터 패킷을 상기 비순차 패킷 버퍼로 이동하도록 더 구성되는
    라우터.
  5. 제3항 또는 제4항에 있어서,
    드롭될 데이터 패킷은 상기 비순차 패킷 버퍼에서 가장 오래된 데이터 패킷인
    라우터.
  6. 제1항에 있어서,
    상기 하나 이상의 회로는 상기 패킷 처리 파이프라인의 데이터 패킷이 타이머의 만료에 기초하여 드롭될 것인지를 결정하도록 구성되는
    라우터.
  7. 제1항에 있어서,
    상기 하나 이상의 회로는 타이머에 기초한 재처리를 위해 상기 드롭된 패킷 버퍼로부터 상기 드롭된 데이터 패킷을 상기 패킷 처리 파이프라인으로 재삽입하도록 구성되는
    라우터.
  8. 제1항에 있어서,
    상기 하나 이상의 회로는 상기 패킷 처리 파이프라인의 부하에 기초하여 재처리하기 위해 상기 드롭된 패킷 버퍼로부터 상기 드롭된 데이터 패킷을 상기 패킷 처리 파이프라인에 재삽입하도록 구성되는
    라우터.
  9. 제1항에 있어서,
    상기 라우터는, 상기 라우터 외부의 데이터 패킷을 재처리하기 위해 상기 드롭된 패킷 버퍼에 저장된 데이터 패킷을 제거하기 위해 소프트웨어 기반 패킷 오프로드 동작을 제공하도록 구성되는
    라우터.
  10. 제1항에 있어서,
    상기 패킷 처리 파이프라인은 멀티캐스트 데이터 패킷을 처리하도록 구성되는
    라우터.
  11. 제1항에 있어서,
    상기 드롭된 패킷 버퍼는 복수의 드롭된 데이터 패킷을 저장하도록 구성되는
    라우터.
  12. 제1항에 있어서,
    상기 드롭된 패킷 버퍼는 하나 이상의 SRAM 모듈을 포함하는
    라우터.
  13. 제1항에 있어서,
    상기 컴퓨팅 칩은 뉴로모픽 칩인
    라우터.
  14. 복수의 처리 요소를 포함하는 컴퓨팅 칩 상의 데이터 라우팅 방법에 있어서,
    라우터는 패킷 처리 파이프라인, 드롭된 패킷 버퍼, 및 하나 이상의 회로를 포함하고, 상기 방법은:
    상기 하나 이상의 회로에 의해, 상기 패킷 처리 파이프라인 내의 데이터 패킷이 드롭되어야 함을 결정하는 단계;
    상기 하나 이상의 회로에 의해, 드롭될 데이터 패킷을 상기 패킷 처리 파이프라인으로부터 상기 드롭된 패킷 버퍼로 이동시키는 단계; 및
    상기 하나 이상의 회로에 의해, 상기 드롭된 패킷 버퍼로부터 상기 드롭된 데이터 패킷을 재처리를 위해 상기 패킷 처리 파이프라인으로 재삽입하는 단계를 포함하는
    방법.
  15. 제14항에 있어서,
    상기 패킷 처리 파이프라인의 데이터 패킷이 드롭될 것인지를 결정하는 단계는 상기 데이터 패킷의 목적지가 상기 데이터 패킷을 수신할 수 없다는 것을 나타내는 신호에 기초하는
    방법.
  16. 제14항 또는 제15항에 있어서,
    드롭될 데이터 패킷을 비순차 패킷 버퍼에서 상기 드롭된 패킷 버퍼로 이동시키는 단계를 더 포함하는
    방법.
  17. 제16항에 있어서,
    상기 패킷 처리 파이프라인에 의해 처리할 데이터 패킷을 선택하는 단계;
    상기 데이터 패킷의 하나 이상의 목적지를 결정하는 단계;
    상기 데이터 패킷의 하나 이상의 목적지의 목적지가 상기 데이터 패킷을 수신할 수 없다고 결정하는 단계; 및
    상기 데이터 패킷을 비순차 패킷 버퍼로 이동하는 단계를 더 포함하는
    방법.
  18. 제16항 또는 제17항에 있어서,
    상기 드롭될 데이터 패킷은 상기 비순차 패킷 버퍼에서 가장 오래된 데이터 패킷인
    방법.
  19. 제14항 내지 제18항 중 어느 한 항에 있어서,
    상기 패킷 처리 파이프라인의 데이터 패킷이 드롭되어야 하는지를 결정하는 단계는 타이머의 만료에 기초하는
    방법.
  20. 제14항 내지 제19항 중 어느 한 항에 있어서,
    상기 드롭된 데이터 패킷을 상기 드롭된 패킷 버퍼로부터 상기 재처리를 위한 상기 패킷 처리 파이프라인으로 재삽입하는 단계는 상기 패킷 처리 파이프라인의 로드에 기초하는
    방법.
  21. 제14항 내지 제20항 중 어느 한 항에 있어서,
    소프트웨어 기반 패킷 오프로드 동작에 응답하여 상기 드롭된 패킷 버퍼에 저장된 데이터 패킷을 제거하는 단계를 더 포함하는
    방법.
  22. 제14항 내지 제21항 중 어느 한 항에 있어서,
    상기 패킷 처리 파이프라인은 멀티캐스트 데이터 패킷을 처리하도록 구성되는
    방법.
  23. 제14항 내지 제22항 중 어느 한 항에 있어서,
    상기 드롭된 패킷 버퍼는 복수의 드롭된 데이터 패킷을 저장하도록 구성되는
    방법.
  24. 제14항 내지 제23항 중 어느 한 항에 있어서,
    상기 드롭된 패킷 버퍼는 하나 이상의 SRAM 모듈을 포함하는
    방법.
  25. 제14항 내지 제24항 중 어느 한 항에 있어서,
    상기 컴퓨팅 칩은 뉴로모픽 칩인
    방법.
KR1020227040733A 2020-04-28 2021-04-26 온칩 라우터 KR20230002947A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2006229.5A GB2594478A (en) 2020-04-28 2020-04-28 On chip router
GB2006229.5 2020-04-28
PCT/GB2021/051009 WO2021219985A1 (en) 2020-04-28 2021-04-26 On chip router

Publications (1)

Publication Number Publication Date
KR20230002947A true KR20230002947A (ko) 2023-01-05

Family

ID=71080110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227040733A KR20230002947A (ko) 2020-04-28 2021-04-26 온칩 라우터

Country Status (7)

Country Link
US (1) US12010033B2 (ko)
EP (1) EP4144049A1 (ko)
JP (1) JP2023531137A (ko)
KR (1) KR20230002947A (ko)
CN (1) CN116057907A (ko)
GB (1) GB2594478A (ko)
WO (1) WO2021219985A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117156006B (zh) * 2023-11-01 2024-02-13 中电科申泰信息科技有限公司 一种片上网络的数据路由控制架构

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224100A (en) * 1991-05-09 1993-06-29 David Sarnoff Research Center, Inc. Routing technique for a hierarchical interprocessor-communication network between massively-parallel processors
CA2233555A1 (en) * 1995-10-02 1997-04-10 Advanced Telecommunications Modules Ltd. Asynchronous transfer mode switch
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US6915480B2 (en) * 2001-12-21 2005-07-05 Agere Systems Inc. Processor with packet data flushing feature
US6938091B2 (en) * 2002-03-08 2005-08-30 Hewlett-Packard Development Company, L.P. Static end to end retransmit apparatus and method
WO2007034407A1 (en) * 2005-09-26 2007-03-29 Koninklijke Philips Electronics N.V. Packet dropping at the input queues of a switch-on-chip
JP5836733B2 (ja) * 2011-09-27 2015-12-24 沖電気工業株式会社 バッファ制御装置、バッファ制御プログラム及び通信装置
US20150089382A1 (en) * 2013-09-26 2015-03-26 Wu-chi Feng Application context migration framework and protocol
US9374303B1 (en) * 2013-10-15 2016-06-21 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for processing multicast packets
EP2884707B1 (en) * 2013-12-16 2016-04-27 Alcatel Lucent Method for controlling buffering of packets in a communication network
JP6540296B2 (ja) * 2015-07-09 2019-07-10 富士通株式会社 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
US10587534B2 (en) * 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks

Also Published As

Publication number Publication date
CN116057907A (zh) 2023-05-02
US20230208776A1 (en) 2023-06-29
JP2023531137A (ja) 2023-07-21
GB202006229D0 (en) 2020-06-10
GB2594478A (en) 2021-11-03
EP4144049A1 (en) 2023-03-08
WO2021219985A1 (en) 2021-11-04
US12010033B2 (en) 2024-06-11

Similar Documents

Publication Publication Date Title
US9648148B2 (en) Method, apparatus, and system for QoS within high performance fabrics
US9385962B2 (en) Method and system for flexible credit exchange within high performance fabrics
US6563831B1 (en) Router with virtual channel allocation
JP5895202B2 (ja) 中継器、中継器の制御方法、およびコンピュータプログラム
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
JP5335892B2 (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
US7899927B1 (en) Multiple concurrent arbiters
US11228488B2 (en) Software implementation of network switch/router
EP0744851A1 (en) Distributed data processing system
US9531647B1 (en) Multi-host processing
WO2001067237A2 (en) High-speed data processing using internal processor memory space
US7564860B2 (en) Apparatus and method for workflow-based routing in a distributed architecture router
US8094677B2 (en) Multi-bus structure for optimizing system performance of a serial buffer
US20100332676A1 (en) Software Aware Throttle Based Flow Control
Gaughan et al. Distributed, deadlock-free routing in faulty, pipelined, direct interconnection networks
KR20230002947A (ko) 온칩 라우터
JP4128447B2 (ja) 並列演算及び並列メモリーアクセスのためのスケーラブルなインターコネクト構造
Song et al. A new mechanism for congestion and deadlock resolution
Khan et al. Congestion aware routing for on-chip communication in noc systems
Theiss Modularity, routing and fault tolerance in interconnection networks
US11947483B2 (en) Data flow management
Shermi et al. A novel architecture of bidirectional NoC router using flexible buffer
CN118101557A (zh) 片上网络结构及片上网络的流量均衡方法
Dimitrakopoulos et al. Virtual-Channel Flow Control and Buffering
Dimitrakopoulos et al. Baseline Switching Modules and Routers

Legal Events

Date Code Title Description
A201 Request for examination