KR101260192B1 - 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법 - Google Patents

온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법 Download PDF

Info

Publication number
KR101260192B1
KR101260192B1 KR1020110128821A KR20110128821A KR101260192B1 KR 101260192 B1 KR101260192 B1 KR 101260192B1 KR 1020110128821 A KR1020110128821 A KR 1020110128821A KR 20110128821 A KR20110128821 A KR 20110128821A KR 101260192 B1 KR101260192 B1 KR 101260192B1
Authority
KR
South Korea
Prior art keywords
buffer
mode
state
fleet data
stored
Prior art date
Application number
KR1020110128821A
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 KR1020110128821A priority Critical patent/KR101260192B1/ko
Application granted granted Critical
Publication of KR101260192B1 publication Critical patent/KR101260192B1/ko

Links

Images

Classifications

    • 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

Abstract

온-칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법이 개시된다. 온-칩 네트워크(on-chip network)에서의 라우팅 시스템은, 버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온(ON) 상태 및 오프(OFF) 상태 중 하나의 상태로 관리하는 버퍼 엔트리 상태 관리부, 업스트림 라우터로부터 수신된 플릿 데이터를 상기 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 상기 저장된 플릿 데이터를 다운스트림 라우터로 전송하는 플릿 데이터 관리부 및 상기 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧(early credit) 및 상기 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧(normal credit)을 상기 업스트림 라우터로 전송하는 크레딧 전송부를 포함한다.

Description

온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법{ROUTING SYSTEM, FLOW CONTROL METHOD, BUFFER MANAGEMENT SYSTEM AND BUFFER MANAGEMENT METHOD FOR REDUCING LEAKAGE POWER IN ON-CHIP NETWORK}
본 발명의 실시예들은 온-칩 네트워크에서 전력 누수를 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법에 관한 것이다.
서로 다른 구성요소들을 함께 연결한 온-칩 네트워크(on-chip network)는 온-칩 네트워크 크기, 즉 단일 칩에서 통합된 구성요소들(integrated components)의 수가 증가하면서 더 중요해지고 있다. 온-칩 네트워크 라우터의 주요 구성요소의 하나는 넓은 면적을 차지하고 많은 양의 전력을 소모하는 버퍼이다. 이러한 버퍼는 온-칩 네트워크에서 높은 성능을 제공하기 위해 필요하다. 버퍼는 온-칩 네트워크에서 채널 자원의 할당을 분리시키기 위해 공통적으로 이용된다. 버퍼의 크기가 증가하면, 네트워크 처리량이 증가하여 보다 높은 성능이 제공될 수 있다.
온-칩 네트워크에서 버퍼의 부정적인 영향을 줄이기 위한 종래기술로 버퍼를 사용하지 않는 온-칩 네트워크가 존재한다. 즉, 네트워크상에 패킷을 저장하기 위한 버퍼가 존재하지 않기 때문에, 버퍼를 사용하지 않는 온-칩 네트워크에서는 우회 라우팅(deflection routing)이나 패킷의 드랍 및 재전송을 필요로 한다. 비록, 버퍼를 사용하지 않는 온-칩 네트워크는 버퍼를 사용할 필요가 없으나, 추가적인 오버헤드가 발생한다. 예를 들어, 종래기술에서는 패킷의 목적지에서 재정렬(reorder) 버퍼를 사용하거나 패킷의 재전송을 위해 패킷의 소스에서 추가적인 버퍼링이 필요한 문제점이 있다.
이러한 문제점을 해결하기 위해 버퍼를 사용하지 않음과 버퍼형 흐름 제어(buffered flow control) 모두의 장점을 제공하기 위한 종래기술로 적응 흐름 제어(adaptive flow control, AFC)가 존재한다. 이러한 종래기술은 파워 게이팅을 사용하여, 버퍼를 사용하지 않는 모드일 때, 입력 포트에서 모든 버퍼 엔트리를 비활성화할 수 있다. 이러한 버퍼를 사용하지 않는 모드는 재정렬 버퍼(reorder buffers)을 요구하는 우회 라우팅을 사용하기 때문에 AFC는 현존하는 MSHR(Miss information/Status Handling Register) 버퍼들에 영향을 준다. 결과적으로, AFC와 같은 종래기술의 흐름 제어는 모든 네트워크 요청에 대해 MSHR에서 엔트리들을 미리 할당하는 캐쉬 일관성 프로토콜을 사용해야 하는 한계가 있다.
네트워크 부하가 증가함에 따라, 더 많은 패킷들이 공유된 채널 자원을 위해 조정(arbitration)되어야 하며, 패킷들은 선택될 때까지 버퍼에 저장되어야 한다. 따라서, 네트워크의 부하가 더 높아지거나 트래픽의 유입율(injection rate)이 더 높아지는 경우, 버퍼의 더 많은 사용량(utilization)을 유발하게 된다. 유입율이 낮아지면, 버퍼의 사용량도 낮아진다. 네트워크의 부하가 포화상태가 되면, 버퍼 사용량과 버퍼별 사용량의 분산 모두 증가한다. 그러나, 네트워크가 포화상태가 되더라도, 모든 버퍼가 완전하게 사용되거나 점유되지 않는다. 즉, 네트워크가 포화상태가 된다 하더라도 모든 채널들이 포화상태가 되는 것이 아니기 때문에 버퍼들의 중요한 부분들이 활용되지 않는 결과가 발생한다. 그러나, 활용되지 않는 실제 버퍼는 트래픽 패턴의 형태와 네트워크 부하에 따라 달라지고, 따라서 활용되지 않는 버퍼를 제거하는 것은 버퍼 공간의 부족으로 인해 성능 저하를 야기할 수 있기 때문에 적합하지 않다.
본 명세서에서는 보다 효율적으로 온-칩 네트워크에서의 버퍼를 관리할 수 있는 시스템 및 방법이 제안된다.
온-칩 네트워크에서 라우터의 버퍼가 포함하는 버퍼 엔트리들 각각을 비 활성화 할 수 있는 기회를 제공함으로써, 성능 하락을 최소화하면서 누수 전력을 감소시킬 수 있는 라우팅 시스템, 흐름 제어 방법, 버퍼 관리 시스템 및 버퍼 관리 방법을 제공한다.
온-칩 네트워크(on-chip network)에서의 라우팅 시스템에 있어서, 버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온(ON) 상태 및 오프(OFF) 상태 중 하나의 상태로 관리하는 버퍼 엔트리 상태 관리부, 업스트림 라우터로부터 수신된 플릿 데이터를 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 저장된 플릿 데이터를 다운스트림 라우터로 전송하는 플릿 데이터 관리부 및 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧(early credit) 및 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧(normal credit)을 업스트림 라우터로 전송하는 크레딧 전송부를 포함하는 라우팅 시스템이 제공된다.
일측에 따르면, 크레딧 전송부는, 혼잡(congestion)이 탐지되고, 오프 상태의 버퍼 엔트리가 존재하는 경우, 업스트림 라우터로부터 수신된 플릿 데이터에 대응하여 초기 크레딧을 업스트림 라우터로 전송할 수 있고, 버퍼 엔트리 상태 관리부는, 초기 크레딧이 업스트림 라우터로 전송되는 경우, 오프 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리를 온 상태로 변경할 수 있다.
다른 측면에 따르면, 라우팅 시스템은 버퍼의 첫 번째 버퍼 엔트리에 플릿 데이터가 저장되어 있는 경우, 혼잡 신호를 생성하는 혼잡 신호 생성부, 생성된 혼잡 신호를 다운스트림 라우터로 전송하는 혼잡 신호 전송부 및 생성된 혼잡 신호 및 업스트림 라우터로부터 수신되는 혼잡 신호에 기초하여 혼잡을 탐지하는 혼잡 탐지부를 더 포함할 수 있다.
또 다른 측면에 따르면, 크레딧 전송부는, 다운스트림 라우터로 전송되는 플릿 데이터에 대응하여 일반 크레딧을 업스트림 라우터로 전송할 수 있다.
또 다른 측면에 따르면, 라우팅 시스템은 다운스트림 라우터에 포함된 버퍼의 버퍼 엔트리들 중 온 상태의 버퍼 엔트리들의 수를 나타내는 크레딧 수를 관리하는 크레딧 수 관리부를 더 포함할 수 있다. 이때, 크레딧 수 관리부는 다운스트림 라우터로 저장된 플릿 데이터가 전송되는 경우, 크레딧 수를 감소시킬 수 있고, 다운스트림 라우터로부터 초기 크레딧 또는 일반 크레딧을 수신하는 경우, 크레딧 수를 증가시킬 수 있다.
또 다른 측면에 따르면, 버퍼는, 온 상태의 버퍼 엔트리들을 포함하는 주 영역(primary region) 및 오프 상태의 버퍼 엔트리들을 포함하는 부 영역(secondary region)으로 나뉘어 관리될 수 있다.
또 다른 측면에 따르면, 버퍼는, 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장 가능한 통합 모드(unified mode) 및 주 영역과 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장 가능한 분리 모드(split mode)에 따라 관리될 수 있다.
또 다른 측면에 따르면, 버퍼는, 통합 모드에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 분리 모드로 변경될 수 있다.
또 다른 측면에 따르면, 버퍼는, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 통합 모드로 변경될 수 있다.
또 다른 측면에 따르면, 버퍼는, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)되어 다운스트림 라우터로 전송될 수 있다.
온-칩 네트워크에서의 버퍼 관리 시스템에 있어서, 온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리되는 버퍼 및 버퍼의 모드를 통합 모드에서 분리 모드로 변경하거나 또는 분리 모드에서 통합 모드로 변경하는 모드 변경부를 포함하고, 모드 변경부는, 통합 모드인 버퍼에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 버퍼의 모드를 통합 모드에서 분리 모드로 변경하고, 분리 모드인 버퍼에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 버퍼의 모드를 분리 모드에서 통합 모드를 변경하는 것을 특징으로 하는 버퍼 관리 시스템이 제공된다.
온-칩 네트워크(on-chip network)에서의 라우팅 시스템이 수행하는 흐름 제어 방법에 있어서, 버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온 상태 및 오프 상태 중 하나의 상태로 관리하는 단계, 업스트림 라우터로부터 수신된 플릿 데이터를 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 저장된 플릿 데이터를 다운스트림 라우터로 전송하는 단계 및 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧 및 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧을 업스트림 라우터로 전송하는 단계를 포함하는 흐름 제어 방법이 제공된다.
온-칩 네트워크에서의 버퍼 관리 시스템이 수행하는 버퍼 관리 방법에 있어서, 온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리되는 버퍼의 모드를 통합 모드에서 분리 모드로 변경하는 단계 및 분리 모드로 변경된 버퍼의 모드를 통합 모드로 변경하는 단계를 포함하고, 분리 모드로 변경하는 단계는, 통합 모드인 버퍼에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 버퍼의 모드를 통합 모드에서 분리 모드로 변경하고, 통합 모드로 변경하는 단계는, 분리 모드인 버퍼에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 버퍼의 모드를 분리 모드에서 통합 모드를 변경하는 것을 특징으로 하는 버퍼 관리 방법이 제공된다.
온-칩 네트워크에서 라우터의 버퍼가 포함하는 버퍼 엔트리들 각각을 비 활성화 할 수 있는 기회를 제공함으로써, 성능을 향상시키고 누수 전력을 최소화할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 일반 크레딧을 이용한 크레딧-기반 흐름 제어의 타임라인(timeline)을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 있어서, 초기 크레딧을 이용한 크레딧-기반 흐름 제어의 타임라인을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 있어서, 혼잡 탐지를 위한 블록도를 나타내고 있다.
도 4는 본 발명의 일실시예에 있어서, 플렉시버퍼가 어떻게 동작하는 가를 설명하기 위한 일례이다.
도 5은 종래기술에 따른 원형 버퍼 관리 방법을 설명하기 위한 도면이다.
도 6은 이상적인 원형 버퍼 관리 방법을 설명하기 위한 도면이다.
도 7은 본 발명의 일실시예에 있어서, 수정된 링크드-리스트 기반의 버퍼 관리 방법을 설명하기 위한 일례이다.
도 8 내지 도 11은 본 발명의 일실시예에 있어서, 스플릿 큐를 이용한 버퍼 관리 방법을 설명하기 위한 일례이다.
도 12는 본 발명의 일실시예에 있어서, 라우팅 시스템의 내부 구성을 설명하기 위한 블록도이다.
도 13은 본 발명의 일실시예에 있어서, 흐름 제어 방법을 도시한 흐름도이다.
도 14는 본 발명의 일실시예에 있어서, 버퍼 관리 시스템의 내부 구성을 설명하기 위한 블록도이다.
도 15는 본 발명의 일실시예에 있어서, 버퍼 관리 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 온-칩 네트워크 버퍼에서의 세립 파워 게이팅(fine-grained power gating)을 이용하여 버퍼 누수 전력을(leakage power) 줄이고, 버퍼의 활용성을 향상시켜 온-칩 네트워크의 성능을 향상시킬 수 있는 시스템 및 방법에 관한 것이다.
1. 플렉시버퍼(FlexiBuffer)
이후에서 설명하고자 하는 버퍼인 플렉시버퍼는 버퍼 엔트리의 세립 파워 게이팅에 영향을 주어 전력 누수를 줄임으로써, 활성화된 버퍼의 크기가 유연하게 관리되도록 할 수 있다. 파워 게이팅을 이용하면, 각각의 버퍼 엔트리는 다음 두 가지 상태 중 하나의 상태가 될 수 있다. 첫 번째 상태는 활성화(active) 또는 온(ON) 상태이고, 두 번째 상태는 슬립(sleep) 또는 오프(OFF) 상태이다. 또한, 라우터의 입력 버퍼 각각에서 활성화 또는 온 상태의 버퍼 엔트리의 수를 활성 윈도우 크기(active window size)로서 이용할 수 있다.
1.1 수정된 크레딧-기반 흐름 제어(Modified Credit-based Flow Control)
온-칩 네트워크에서 역압(backpressure)은 크레딧-기반 흐름 제어를 통해 관리될 수 있다. 종래기술에 따른 크레딧-기반 흐름 제어에서, 크레딧 수(credit counts)는 다운스트림(downstream) 라우터의 버퍼들을 위해 유지될 수 있다. 다운스트림 라우터로 전송된 각각의 플릿(flit)을 위해, 크레딧 수는 감소될 수 있다. 플릿이 다운스트림 라우터로 전송될 때, 크레딧은 버퍼가 이용 가능함을 알리기 위해 업스트림(upstream) 라우터로 전송될 수 있다.
본 발명의 실시예들에서는 플릿이 오프 상태의 버퍼 엔트리에 쓰여지는 것을 막고, 오프 상태의 버퍼 엔트리를 비활성화하며, 온 상태의 버퍼 엔트리의 수를 증가시키기 위해 크레딧-기반 흐름 제어를 수정할 수 있다.
즉, 플렉시버퍼를 지원하기 위해, 종래기술에 따른 크레딧-기반 흐름 제어에서 크레딧 수의 초기화(initialization)가 수정될 수 있다. 종래기술에서는 만약, 다운스트림 라우터의 버퍼가 'b' 버퍼 엔트리를 포함한다면, 업스트림 라우터는 'b'의 값을 크레딧 수로 갖도록 초기화될 수 있다. 그러나, 본 발명의 실시예들에서 크레딧 수는 이용 가능한 버퍼 엔트리의 부족으로 인해 스톨(stalls)이 발생하는 것을 막으면서 누수 전력을 최소화하기 위해, 활성화 또는 온 상태의 버퍼 엔트리의 최소 수를 나타내는 'bmin'으로 초기화될 수 있다. 버퍼 엔트리의 나머지(b-bmin)는 슬립 또는 오프 상태가 될 수 있다. 'bmin'의 값은 아래 수학식 1과 같이 계산될 수 있다.
Figure 112011096307742-pat00001
여기서, 'tcrt'는 크레딧 라운드-트립 반응시간(credit round-trip latency)을, 'twakeup'은 버퍼 엔트리의 웨이크업(wakeup)을 위해 필요한 사이클의 수를 각각 의미할 수 있다.
게다가, 크레딧은 흐름 제어를 위해 아래의 서로 다른 두 가지 타입으로 정의될 수 있다.
- 일반 크레딧(normal credit): 다운스트림 라우터로 전송되는 플릿에 대응하여 업스트림 라우터로 전송되는 크레딧.
- 초기 크레딧(early credit): 혼잡(congestion)이 탐지되었을 때, 플릿을 수령하는 즉시 업스트림 라우터로 전송되는 크레딧. 초기 크레딧이 업스트림 라우터로 전송되고 대응하는 플릿이 다운스트림 라우터로 전송되는 동안 로컬 라우터는 또 다른 버퍼 엔트리를 활성화(또는 턴 온(turn on))할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 일반 크레딧을 이용한 크레딧-기반 흐름 제어의 타임라인(timeline)을 나타낸 도면이다. 도 1에서는 각각 라우터를 나타내는 'R0', 'R1', 'R2'간의 크레딧-기반 흐름 제어를 나타내고 있다. 도 1에서 실선 화살표는 플릿의 흐름을, 점선 화살표는 일반 크레딧의 흐름을 나타내고 있다. 즉, 일반 크레딧은 라우터 'R1'에서 다운스트림 라우터 'R2'로 플릿이 전송될 때, 업스트림 라우터 'R0'로 전송될 수 있다.
도 2는 본 발명의 일실시예에 있어서, 초기 크레딧을 이용한 크레딧-기반 흐름 제어의 타임라인을 나타낸 도면이다. 도 1에서는 각각 라우터를 나타내는 'R0', 'R1', 'R2'간의 크레딧-기반 흐름 제어를 나타내고 있다. 도 1에서 실선 화살표는 플릿의 흐름을, 일점쇄선 화살표는 초기 크레딧의 흐름을 나타내고 있다. 즉, 초기 크레딧은 라우터 'R1'에서 업스트림 라우터 'R0'로부터 플릿을 수신하는 즉시 업스트림 라우터 'R0'로 전송될 수 있다.
즉, 종래기술에 따른 크레딧-기반 흐름 제어는 일반 크레딧만을 사용하는 반면, 본 발명의 일실시예에 따른 크레딧-기반 흐름 제어는 일반 크레딧과 초기 크레딧을 모두 사용한다.
수신되는 플릿을 위해, 다음 두 가지 조건이 만족되는 경우, 초기 크레딧이 즉시 업스트림 라우터로 전송될 수 있다.
(조건 1) 슬립 또는 오프 상태의 버퍼 엔트리가 존재한다(예를 들어, 버퍼 엔트리가 활성화 또는 턴 온 될 수 있다.
(조건 2) 현재 라우터의 버퍼와 업스트림 라우터 모두에 혼잡이 존재한다.
전송되는 플릿를 위해, 일반 크레딧은 이용 가능한 버퍼(활성화 또는 온 상태이고 비어있는 버퍼)의 수가 수학식 1에서 설명한 'twakeup'보다 큰 경우를 제외하고는 항상 업스트림 라우터로 전송될 수 있다.
아래 표 1은 온-칩 네트워크의 혼잡에 의존적으로 서로 다른 타입 및 수의 크레딧이 업스트림 라우터로 전송될 수 있음을 나타내고 있다.
Figure 112011096307742-pat00002
혼잡이 발생하지 않고, 현재 활성 윈도우 크기가 'bmin'보다 큰 특정 조건의 경우, 플릿의 전송에 대응하는 크레딧이 전송되지 않을 수 있다. 이러한 특정 조건은 혼잡이 존재하나 감소하고 있음을 나타낼 수 있다. 따라서, 활성 윈도우 크기는 감소될 수 있고, 활성화 또는 온 상태의 버퍼 엔트리는 턴 오프(turn off)되어 슬립 상태 또는 오프 상태로 변경될 수 있다.
1.2 혼잡 탐지
이후에서는 업스트림 라우터에서의 혼잡 탐지와 초기 크레딧 신호의 생성 방법을 설명한다.
도 3은 본 발명의 일실시예에 있어서, 혼잡 탐지를 위한 블록도를 나타내고 있다. 본 실시예에 따른 활성 윈도우 크기가 어떻게 변경되어야 하는가를 결정하기 위해, 업스트림 라우터 'R0'와 로컬 혼잡 모두를 탐지하기 위한 입력 포트 제어(input port control)가 필요하다. 업스트림 라우터 'R0'는 특정 출력을 위한 집중 정도(contention degree)가 기설정된 스레스홀드 값(threshold value) 이상인 경우, 혼잡 신호 'congestion'를 생성할 수 있다. 스레스홀드 값은, 일례로, 2의 값을 가질 수 있다. 이러한 혼잡 신호 'congestion'는 현재 라우터 'R1'으로 플릿 데이터 'flit_data'와 함께 전송될 수 있다. 여기서, 플릿 데이터 'flit_data'는 상술한 "플릿"에 대응할 수 있다. 로컬 라우터인 라우터 'R1'는 'R1'이 포함하는 큐의 앞부분(front of queue)이 삭제되었는지 여부에 따라 혼잡 신호 'congestion'를 생성할 수 있다. 여기서, 'R1'이 포함하는 큐는 'R1'의 입력 버퍼를 의미할 수 있고, 큐의 앞 부분은 'R1'의 입력 버퍼에 포함된 첫 번째 버퍼 엔트리를 나타낼 수 있다. 이때, 큐의 앞부분이 삭제되지 않았다면, 현재 라우터 'R1'에 혼잡이 발생하였음을 나타낼 수 있다. 즉, 입력 포트가 다른 입력 포트에 대한 조정(arbitration)에서 졌음을 나타낸다. 초기 크레딧은 현재 라우터 'R1'에서, 수신되는 플릿 데이터 'flit_data'가 존재할 때만 전송될 수 있기 때문에, 업스트림 라우터 'R0'로부터 현재 라우터 'R1'으로 전송되는 플릿 데이터 'flit_data'의 인디케이션(indication) 'flit_valid_in'는, 초기 크레딧의 전송이 필요한지 결정하기 위해 혼잡 신호들과 함께 AND 연산 회로(310)의 입력이 될 수 있다. 여기서, AND 연산 회로로 입력되는 혼잡 신호들은 업스트림 라우터의 혼잡 신호 'congestion'와 현재 라우터의 로컬 혼잡 신호 'local congestion'를 모두 포함할 수 있다. 업스트림 라우터로 전송되는 초기 크레딧 각각을 위해, 추가적인 버퍼 엔트리가 활성화(턴 온)될 수 있다. 도 3에서 'more buffer needed'는 버퍼가 더 필요한지 여부를 나타내는 신호를, 'credit count'는 크레딧 수를 각각 나타낼 수 있다. 회로(320)는 OR 연산 회로를 나타낼 수 있으며, 도 3에 도시된 바와 같이, 초기 크레딧 'early credit'과 일반 크레딧 'normal credit'을 입력으로 할 수 있다.
1.3 버퍼 윈도우 예시
도 4는 본 발명의 일실시예에 있어서, 플렉시버퍼가 어떻게 동작하는 가를 설명하기 위한 일례이다. 도 4는 업스트림 라우터 'R0'에서 현재 라우터 'R1'까지의 플릿들 'F1' 내지 'F4'과 크레딧들(일점쇄선 화살표로 표시됨)의 전송, 그리고 'R1'을 위한 입력 버퍼의 사용을 나타내고 있다. 도 4의 입력 버퍼에서 각각의 엔트리는 활성화 또는 온 상태를 나타내는 'ON state', 슬립 또는 오프 상태를 나타내는 'OFF state' 그리고 슬립 또는 오프 상태에서 활성화 또는 온 상태로 상태가 이행됨을 나타내는 'OFF-to-ON transition state'를 각각 나타내고 있다. 도 4의 예에서는 'R0'가 네 개의 플릿들 'F1' 내지 'F4'를 가질 수 있고, 세 개의 크레딧을 가질 수 있다. 여기서, 'R0'가 세 개의 크레딧을 갖는 다는 것은 현재, 'R0'의 크레딧 수가 3임을 의미할 수 있다. 또한, 'R0'는 파라미터로서, 'bmin = 3'과 'twakeup = 2'를 가질 수 있다. 먼저, 두 개의 플릿들인 'F1'과 'F2'가 업스트림 라우터 'R0'에서 'R1'까지 전송되는 동안, 혼잡이 탐지되지 않고, 초기 크레딧도 전송되지 않는다. 플릿을 전송할 때마다 크레딧 수가 감소하기 때문에, 결과적으로, 'T3' 시점에서 'R0'는 크레딧 수가 '0'이 되어 플릿 'F4'를 보낼 수 없다. 동시에 초기 크레딧은 'T3' 시점에 'R1'에서 'R0'로 전송되며 따라서, 'R0'는 'T4'시점에 'F4'를 보낼 수 있게 된다. 또한, 'T3' 시점과 'T5' 시점 사이에 'OFF state'의 버퍼 엔트리 하나가 'ON state'로 변경될 수 있다. 즉, 'R0'는 'T3' 시점과 'T5' 시점 사이에 하나의 'OFF state'의 버퍼 엔트리를 'On state' 상태로 변경하기 위해 해당 버퍼 엔트리를 활성화할 수 있다. 'T5' 시점 이후에 입력 버퍼에 플릿 'F4'가 저장될 수 있다.
2. 버퍼 관리
2.1 원형 버퍼(circular buffer)의 문제점
버퍼는 헤드 포인터(head pointer)와 테일 포인터(tail pointer)를 갖는 원형 버퍼로서 공통적으로 관리될 수 있다. 버퍼에 대한 모든 쓰기 이후, 테일 포인터는 증가할 수 있고, 모든 읽기 이후, 테일 포인터는 감소할 수 있다. 헤드 포인터와 테일 포인터가 마지막 버퍼 엔트리에 도달했을 때, 헤드 포인터와 테일 포인터는 다시 처음 버퍼 엔트리를 가리킬 수 있다. 그러나, 세립 파워 게이팅을 이용할 때, 상술한 버퍼 관리 방법을 이용하는 것은 연속적으로 버퍼 엔트리를 활성화 그리고 비활성화하기 때문에 더 많은 전력 소모를 야기할 수 있다. 예를 들어, 활성 윈도우 크기가 '1'이고 혼잡이 없다고 가정할 때, 오직 하나의 버퍼가 주어진 사이클마다 활성화될 수 있다. 그러나, 실제 사용될 물리적인 버퍼 엔트리들은 연속적으로 변경될 수 있다. 결과적으로, 비록 비활성화된 버퍼 엔트리들은 오프 상태로 연속적일 수 있으나, 논리적으로 오직 하나의 버퍼 엔트리가 실질적으로 활용될 때, 버퍼 엔트리들을 활성화 및 비활성화 시키기 위해 추가적인 파워 오버헤드가 요구된다.
도 5는 종래기술에 따른 원형 버퍼 관리 방법을 설명하기 위한 도면이다. (a)는 현재의 사이클을 나타내는 i-번째 사이클인 'cycle i'에서의 버퍼 사용을, (b)는 (a)에서 x 사이클이 지난 후의 사이클인 'cycle i+x'에서의 버퍼 사용을 각각 나타내고 있다. 이때, (a)의 버퍼는 활성화 또는 온 상태의 세 개의 버퍼 엔트리들을 갖고 있으며, 나머지 버퍼 엔트리들은 오프 상태를 나타내고 있다. 트래픽 부하(traffic load)가 끊임없고 추가적인 혼잡이 네트워크에서 발생하지 않았다고 가정하면, x 사이클 후, (b)의 버퍼는 헤드 포인터와 테일 포인터가 증가하였으며, 세 개의 다른 버퍼 엔트리들이 활성화되고, (a)의 버퍼에서 온 상태였던 세 개의 버퍼 엔트리들은 오프 상태로 변경되었음을 알 수 있다. 비록 오프 상태인 버퍼 엔트리들의 최대 수는 여전히 유지되지만, 종래기술의 원형 버퍼 관리 방법에 따르면 다수의 버퍼 엔트리들의 상태가 온 상태와 오프 상태로 변경되었음을 알 수 있다. 도 5에서 'head'는 헤드 포인터를, 'tail'은 테일 포인터를 각각 나타내고, 'ON entry'는 온 상태의 버퍼 엔트리를, 'OFF entry'는 오프 상태의 버퍼 엔트리를 각각 나타낼 수 있다. 또한, 'Data'는 플릿에 대응할 수 있다.
도 6은 이상적인 원형 버퍼 관리 방법을 설명하기 위한 도면이다. 도 6에 나타난 (a)의 버퍼는 도 5의 (a)의 버퍼와 동일한 상태이고, (c)는 (a)에서 x 사이클이 지난 후의 사이클인 'cycle i+x'에서의 버퍼 사용을 나타내고 있다. 이때, (c)의 버퍼는 물리적으로 동일한 버퍼 엔트리들을 재사용함으로써, 버퍼 엔트리들의 상태를 변경할 필요가 없기 때문에 추가적인 파워 오버헤드가 요구되지 않는다. 도 6에서 'head'는 헤드 포인터를, 'tail'은 테일 포인터를 각각 나타내고, 'ON entry'는 온 상태의 버퍼 엔트리를, 'OFF entry'는 오프 상태의 버퍼 엔트리를 각각 나타낼 수 있다. 또한, 'Data'는 플릿에 대응할 수 있다.
이러한 종래기술에 따른 원형 버퍼 관리 방법의 문제를 극복하기 위해, 본 실시예들에서는 아래와 같이 두 가지의 새로운 버퍼 관리 방법이 이용될 수 있다. 하나는 수정된 링크드 리스트(Modified Linked-List, 이하 MLL) 기반의 버퍼 관리이고, 다른 하나는 스플릿 큐(Split Queue, 이하 SQ)이다.
2.2 MLL 기반의 버퍼 관리
종래기술에 따른 링크드-리스트 기반의 버퍼 관리 방법에서는 논리적인 FIFO(First In First Out) 큐의 앞부분과 뒷부분을 각각 가리키는 헤드 포인터와 테일 포인터, 그리고 다음 버퍼 엔트리로의 포인터를 갖는 각각의 버퍼 엔트리들이 존재한다. 또한, 프리 버퍼 엔트리들의 트랙을 지키기 위해 이용되는 프리 포인터 또한 존재한다.
본 발명의 실시예들에 따른 링크드-리스트 기반 버퍼 관리 방법에서는 버퍼가 원형 큐(circular queue)로서 관리될 수 있다. 즉, 버퍼 엔트리들에 대한 지나친 상태 변경 문제를 극복하기 위해, 추가적인 헤드 포인트와 테일 포인트가 이용될 수 있다. 여기서, 추가적인 헤드 포인트들과 테일 포인트들이 활성 프리 리스트(Active Free List, 이하 AFL)과 슬립 프리 리스트(Sleep Free List, 이하 SFL)간의 구별을 위해 이용될 수 있다.
먼저, 'bmin' 개의 버퍼 엔트리들이 활성화 상태이고, AFL에 나타난다. 플릿들이 버퍼로 들어오고 나가는 동안, AFL의 버퍼 엔트리들은 링크된 리스트인 AFL에 들어오고 나가게 된다. 플릿들이 버퍼에서 떠날 때, 버퍼 엔트리가 오프 상태라면 해당 버퍼 엔트리는 SFL 에 추가될 수 있다. 그렇지 않고, 버퍼 엔트리가 온 상태라면 해당 버퍼 엔트리는 AFL에 추가될 수 있다. 활성 윈도우 크기가 증가할 필요가 있을 때에는 SFL의 버퍼 엔트리가 AFL로 옮겨질 수 있다. 하나의 버퍼 엔트리가 활성화되어 슬립 상태에서 활성화 상태로 변경되는 동안, 수정된 크레딧-기반 흐름 제어는 어떠한 플릿들도 상기 버퍼 엔트리에 쓰여지지 못하도록 막을 수 있다. AFL과 SFL의 관리를 위해, 링크드-리스트의 헤드 포인트와 테일 포인트와는 별도의 헤드 포인트들과 테일 포인트들이 각각의 리스트들을 위해 필요하다.
도 7은 본 발명의 일실시예에 있어서, 수정된 링크드-리스트 기반의 버퍼 관리 방법을 설명하기 위한 일례이다. 도 7에서는 일반적인 링크드-리스트가 포함하는 헤드 포인트 'head'(710)와 테일 포인트 'tail'(720) 외에도 AFL을 위한 헤드 포인트 'AFL head'(730)와 테일 포인트 'AFL tail'(740) 그리고 SFL을 위한 헤드 포인트 'SFL head'(750)와 테일 포인트 'SFL tail'(760)이 각각 나타나 있다. 도 7에서 'ON entry'는 온 상태의 버퍼 엔트리를, 'OFF entry'는 오프 상태의 버퍼 엔트리를 각각 나타낼 수 있다. 또한, 'Data'는 플릿에 대응할 수 있다.
2.3 SQ(Split Queue)
SQ에서 버퍼는 주 영역(primary region)과 부 영역(secondary region)의 두 개의 영역으로 분리될 수 있고, 분리된 두 영역 중 주 영역의 마지막 엔트리를 가리키는 경계 포인터(boundary pointer)가 이용될 수 있다. 주 영역은 주 영역의 헤드 포인터와 테일 포인터를 가질 수 있으며, 부 영역도 부 영역의 헤드 포인터와 테일 포인터를 가질 수 있다. 또한, 헤드 포인트들과 테일 포인터들은 각각 현재 사용중인 버퍼의 해당 영역에서 각 영역의 시작과 끝을 가리킬 수 있다. 이러한 두 영역을 이용하여 SQ는 통합 모드(unified mode)와 분리 모드(split mode) 중 하나의 모드로 동작될 수 있다. 통합 모드에서 주 영역이 이용될 수 있고, 분리 모드에서는 통합 모드와 분리 모드가 모두 이용될 수 있다.
먼저, 통합모드에서 버퍼는 활성화 상태의 'bmin' 개의 버퍼 엔트리들을 주 영역에 갖는다. 이때, 활성화 상태인 버퍼 엔트리들 각각은 '0'부터 'bmin-1'로 불릴 수 있다.
도 8 내지 도 11은 본 발명의 일실시예에 있어서, 스플릿 큐를 이용한 버퍼 관리 방법을 설명하기 위한 일례이다. 도 8 내지 도 11 각각은 주 영역을 위한 헤드 포인터 'p_head'(810)와 테일 포인터 'p_tail'(820), 경계 포인터 'boundary'(830), 부 영역을 위한 헤드 포인터 's_head'(840)와 테일 포인터 's_tail'(850)를 각각 나타내고 있다. 또한, 도 8 내지 도 11에서 'ON entry'는 온 상태의 버퍼 엔트리를, 'OFF entry'는 오프 상태의 버퍼 엔트리를 각각 나타낼 수 있다. 또한, 'Data'는 플릿에 대응할 수 있고, 'Entry ID'는 각 버퍼 엔트리들을 식별하기 위한 식별자를 나타낼 수 있다.
이때, 헤드 포인터 's_head'(840)와 테일 포인터 's_tail'(850)는 통합 모드에서는 사용되지 않을 수 있다. 만약, 혼잡이 없다면, 주 영역에서 활성화 상태의 'bmin' 개의 버퍼 엔트리들은 원형 큐로서 동작할 수 있고, 플릿들은 도 8에 도시된 바와 같이 주 영역에 쓰여지거나 주 영역으로부터 읽혀질 수 있다. 그러나, 활성 윈도우 크기가 증가하는 동안(또는 추가 버퍼 엔트리들이 활성화될 필요가 있는 동안), 버퍼는 헤드 포인터 'p_head'(810)와 테일 포인터 'p_tail'(820)의 위치에 기초하여 통합 모드를 유지하거나 또는 분리 모드로 스위칭되어야 한다.
만약, 헤드 포인터 'p_head'(810)의 값이 테일 포인터 'p_tail'(820)의 값보다 작다면, 버퍼는 통합 모드를 유지하고, 더 많은 버퍼 엔트리가 필요하기 때문에 주 영역의 크기를 아래쪽으로 증가시킬 수 있다. 여기서, 포인터의 값은 해당 포인터가 가리키는 버퍼 엔트리의 식별자에 대응할 수 있다. 예를 들어, 도 9에서는 헤드 포인터 'p_head'(810)의 값인 '1'이 테일 포인터 'p_tail'(820)의 값보다 작다. 따라서, 도 9에 도시된 버퍼는 이후 주 영역의 크기를 증가시킬 수 있다. 버퍼가 통합 모드를 유지가 지속되는 동안, 경계 포인터 'boundary'(830)는 증가할 수 있다. 그러나, 혼잡의 감소와 활성 윈도우 크기의 감소가 필요한 경우, 경계 포인터 'boundary'(830) 는 주 영역의 크기를 줄기기 위해 감소할 수 있다. 여기서, 경계 포인터 'boundary'(830)가 증가함은 경계 포인터 'boundary'(830)가 더 큰 수를 식별자로 갖는 버퍼 엔트리를 가리키도록 변경됨을, 경계 포인터 'boundary'(830)가 감소함은 경계 포인터 'boundary'(830)가 더 작은 수를 식별자를 갖는 버퍼 엔트리를 가리키도록 변경됨을 각각 의미할 수 있다. 만약, 경계 포인터 'boundary'(830)가 가리키는 버퍼 엔트리가 사용중이라면, 활성 윈도우의 크기가 즉시 줄어들어야 하는 것은 아니나, 플릿이 버퍼에서 삭제될 때까지 기다릴 필요는 있다.
그러나, 만약, 도 10에서와 같이 헤드 포인터 'p_head'(810)의 값이 테일 포인터 'p_tail'(820)의 값보다 크거나 같다면, 주 영역을 아래로 확장하는 것은 포인터의 관리를 복잡하게 만들 수 있다. 버퍼는 패킷을 쓰여진 순차대로 읽는 논리적인 FIFO이기 때문에, 헤드 포인터 'p_head'(810)의 값이 테일 포인터 'p_tail'(820)의 값보다 크거나 같을 때, 주 영역을 계속 증가시키는 것은 플릿들의 순서를 관리하기 위해 복수의 헤더 포인터들과 복수의 테일 포인터들을 요구한다. 또는, 링크드 리스트에서와 비슷하게 부 영역의 마지막 버퍼 엔트리가 부 영역의 첫 번째 버퍼 엔트리를 가리키게 할 필요가 있다. 이러한 복잡한 포인터 관리를 피하기 위해 버퍼는 통합 모드에서 분리 모드로 변경될 수 있고, 부 영역의 버퍼 엔트리들이 하나씩 필요에 따라 활성화될 수 있다. 분리 모드에서 두 영역의 크기는 포인터 관리를 복잡하게 만드는 것을 피하기 위해 고정될 수 있고, 부 영역의 포인터들 즉, 헤드 포인터 's_head'(840)와 테일 포인터 's_tail'(850)는 경계 포인터 'boundary'(830)의 값 + 1의 값을 갖도록 초기화 될 수 있다. 즉, 부 영역의 포인터들은 아래 수학식 2와 같이 초기화될 수 있다.
Figure 112011096307742-pat00003
주 영역이 가득 찰 때, 도 10에서와 같이 추가 플릿(Data 5, Data 6)은 부 영역에 쓰여질 수 있고, 플릿들(Data 0 내지 Data 4)은 주 영역에서부터 먼저 읽혀질 수 있다. 도 11에서와 같이 주 영역에 포함된 버퍼 엔트리들이 모두 비워지면, 플릿들(Data 5, Data 6)은 부 영역으로부터 읽혀질 수 있다.
추가로, 주 영역이 비워질 때, 버퍼는 분리 모드에서 통합 모드로 다시 스위칭될 수 있다. 또한, 부 영역에서 온 상태의 버퍼 엔트리들은 주 영역에 추가되어 부 영역은 줄어들 수 있다. 이때, 경계 포인터 'boundary'(830)는 다시 두 영역 사이인 주 영역의 마지막 버퍼 엔트리를 가리키도록 변경될 수 있다. SQ에서는 주 영역이 비어지는 동안에는 주 영역에 추가의 플릿이 기록될 수 없다. 따라서, 버퍼가 통합 모드로 돌아올 때까지는 활성 윈도우 크기가 효율적으로 감소해야 한다.
도 12는 본 발명의 일실시예에 있어서, 라우팅 시스템의 내부 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 라우팅 시스템(1200)은 온-칩 네트워크에서 동작하는 하나의 라우터에 대응할 수 있다. 이러한 라우팅 시스템(1200)은 버퍼 엔트리 상태 관리부(1210), 플릿 데이터 관리부(1220) 및 크레딧 전송부(1230)를 포함한다.
버퍼 엔트리 상태 관리부(1210)는 버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온(ON) 상태 및 오프(OFF) 상태 중 하나의 상태로 관리한다. 온 상태는 활성화 상태에 오프 상태는 슬립 상태에 각각 대응될 수도 있다. 버퍼 엔트리들 각각을 활성화 또는 온 상태 그리고 슬립 또는 오프 상태로 관리하는 방법에 대해서는 이미 자세히 설명한 바 있다.
플릿 데이터 관리부(1220)는 업스트림 라우터로부터 수신된 플릿 데이터를 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 저장된 플릿 데이터를 다운스트림 라우터로 전송한다. 여기서, 플릿 데이터는 이미 설명한 플릿들에 대응할 수 있으며, 플릿 데이터 관리부(1220)는 플릿 데이터를 업스트림 라우터로부터 수신하여 다운스트림 라우터로 전달할 수 있다.
크레딧 전송부(1230)는 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧(early credit) 및 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧(normal credit)을 업스트림 라우터로 전송한다.
여기서, 크레딧 전송부(1230)는 혼잡(congestion)이 탐지되고, 오프 상태의 버퍼 엔트리가 존재하는 경우, 업스트림 라우터로부터 수신된 플릿 데이터에 대응하여 초기 크레딧을 업스트림 라우터로 전송할 수 있다. 이때, 버퍼 엔트리 상태 관리부(1210)는, 초기 크레딧이 업스트림 라우터로 전송되는 경우, 오프 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리를 온 상태로 변경할 수 있다. 예를 들어, 크레딧 전송부(1230)는 혼잡이 탐지되고 오프 상태의 버퍼 엔트리가 존재할 때, 업스트림 라우터로부터 플릿 데이터가 수신되면 즉시 초기 크레딧을 업스트림 라우터로 전송할 수 있다.
또한, 크레딧 전송부(1230)는 다운스트림 라우터로 전송되는 플릿 데이터에 대응하여 일반 크레딧을 업스트림 라우터로 전송한다. 초기 크레딧과 일반 크레딧에 대해서는 이미 자세히 설명한 바 있다. 예를 들어, 플릿 데이터 관리부(1220)가 버퍼에 저장된 플릿 데이터를 다운스트림 라우터로 전송할 때, 크레딧 전송부(1230)는 일반 크레딧을 업스트림 라우터로 전송할 수 있다.
또한, 라우팅 시스템(1200)은 필요에 따라 크레딧 수 관리부(1240)를 선택적으로 더 포함할 수 있다. 크레딧 수 관리부(1240)는 다운스트림 라우터에 포함된 버퍼의 버퍼 엔트리들 중 온 상태의 버퍼 엔트리들의 수를 나타내는 크레딧 수를 관리할 수 있다. 이때, 크레딧 수 관리부(1240)는 다운스트림 라우터로 저장된 플릿 데이터가 전송되는 경우, 크레딧 수를 감소시킬 수 있고, 다운스트림 라우터로부터 초기 크레딧 또는 일반 크레딧을 수신하는 경우, 크레딧 수를 증가시킬 수 있다. 이러한 크레딧 수에 대해서도 이미 자세히 설명한 바 있다.
또한, 라우팅 시스템(1200)은 버퍼의 첫 번째 버퍼 엔트리에 플릿 데이터가 빠져나가지 않는 경우 혼잡 신호를 생성하는 혼잡 신호 생성부(1250), 생성된 혼잡 신호를 다운스트림 라우터로 전송하는 혼잡 신호 전송부(1260) 및 생성된 혼잡 신호 및 업스트림 라우터로부터 수신되는 혼잡 신호에 기초하여 혼잡을 탐지하는 혼잡 탐지부(1270)를 선택적으로 더 포함할 수 있다. 즉, 크레딧 전송부(1230)는 혼잡 탐지부(1270)에서 혼잡이 탐지되고 동시에 버퍼에 오프 상태의 버퍼 엔트리가 존재하는 경우, 업스트림 라우터로부터 수신된 플릿 데이터에 대응하여 초기 크레딧을 업스트림 라우터로 전송할 수 있다.
라우팅 시스템(1200)에 포함된 버퍼는 기본적으로 상술한 SQ(split queue)와 같이 구성될 수 있다. 이미 자세히 설명한 바와 같이, 버퍼는, 온 상태의 버퍼 엔트리들을 포함하는 주 영역(primary region) 및 오프 상태의 버퍼 엔트리들을 포함하는 부 영역(secondary region)으로 나뉘어 관리될 수 있으며, 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장 가능한 통합 모드(unified mode) 및 주 영역과 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장 가능한 분리 모드(split mode)에 따라 관리될 수 있다. 또한, 버퍼는 통합 모드에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 분리 모드로 변경될 수 있으며, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 통합 모드로 변경될 수 있다. 이때, 버퍼는 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)되어 다운스트림 라우터로 전송될 수 있다. SQ(split queue)와 같이 구성된 버퍼에 대해서는 이미 자세히 설명하였기에 반복적인 설명은 생략한다.
도 13은 본 발명의 일실시예에 있어서, 흐름 제어 방법을 도시한 흐름도이다. 본 실시예에 다른 흐름 제어 방법은 도 12를 통해 설명한 라우팅 시스템(1200)에 의해 수행될 수 있다.
단계(1310)에서 라우팅 시스템(1200)은 버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온 상태 및 오프 상태 중 하나의 상태로 관리한다. 온 상태는 활성화 상태에 오프 상태는 슬립 상태에 각각 대응될 수도 있다. 버퍼 엔트리들 각각을 활성화 또는 온 상태 그리고 슬립 또는 오프 상태로 관리하는 방법에 대해서는 이미 자세히 설명한 바 있다.
단계(1320)에서 라우팅 시스템(1200)은 업스트림 라우터로부터 수신된 플릿 데이터를 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 저장된 플릿 데이터를 다운스트림 라우터로 전송한다. 여기서, 플릿 데이터는 이미 설명한 플릿들에 대응할 수 있으며, 플릿 데이터 관리부(1220)는 플릿 데이터를 업스트림 라우터로부터 수신하여 다운스트림 라우터로 전달할 수 있다.
또한, 라우팅 시스템(1200)은 버퍼의 첫 번째 버퍼 엔트리에 플릿 데이터가 저장되어 있는 경우, 혼잡 신호를 생성하는 단계(1330), 생성된 혼잡 신호를 다운스트림 라우터로 전송하는 단계(1340) 및 생성된 혼잡 신호 및 업스트림 라우터로부터 수신되는 혼잡 신호에 기초하여 혼잡을 탐지하는 단계(1350)를 선택적으로 더 포함할 수 있다.
단계(1360)에서 라우팅 시스템(1200)은 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧 및 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧을 업스트림 라우터로 전송한다.
여기서, 라우팅 시스템(1200)은 단계(1360)에서 혼잡이 탐지되고, 오프 상태의 버퍼 엔트리가 존재하는 경우, 업스트림 라우터로부터 수신된 플릿 데이터에 대응하여 초기 크레딧을 업스트림 라우터로 전송할 수 있다. 이때, 라우팅 시스템(1200)은 초기 크레딧이 업스트림 라우터로 전송되는 경우, 오프 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리를 온 상태로 변경할 수 있다. 예를 들어, 라우팅 시스템(1200)은 단계(1320)에서 업스트림 라우터로부터 플릿 데이터가 수신되면 단계(1350)을 통해 혼잡이 탐지되었는지 확인하고, 오프 상태의 버퍼 엔트리가 존재하는가를 확인하여 혼잡이 탐지되고 오프 상태의 버퍼 엔트리가 존재할 때, 즉시 단계(1360)에서 초기 크레딧을 업스트림 라우터로 전송할 수 있다.
또한, 라우팅 시스템(1200)은 단계(1360)에서 다운스트림 라우터로 전송되는 플릿 데이터에 대응하여 일반 크레딧을 업스트림 라우터로 전송한다. 초기 크레딧과 일반 크레딧에 대해서는 이미 자세히 설명한 바 있다. 예를 들어, 라우팅 시스템(1200)은 단계(1320)에서 버퍼에 저장된 플릿 데이터를 다운스트림 라우터로 전송할 때, 단계(1360)에서 일반 크레딧을 업스트림 라우터로 전송할 수 있다.
또한, 라우팅 시스템(1200)은 다운스트림 라우터에 포함된 버퍼의 버퍼 엔트리들 중 온 상태의 버퍼 엔트리들의 수를 나타내는 크레딧 수를 관리할 수 있다. 이때, 라우팅 시스템(1200)은 다운스트림 라우터로 저장된 플릿 데이터가 전송되는 경우, 크레딧 수를 감소시킬 수 있고, 다운스트림 라우터로부터 초기 크레딧 또는 일반 크레딧을 수신하는 경우, 크레딧 수를 증가시킬 수 있다. 이러한 크레딧 수에 대해서도 이미 자세히 설명한 바 있다.
라우팅 시스템(1200)에 포함된 버퍼는 기본적으로 상술한 SQ와 같이 구성될 수 있다. 이미 자세히 설명한 바와 같이, 버퍼는, 온 상태의 버퍼 엔트리들을 포함하는 주 영역 및 오프 상태의 버퍼 엔트리들을 포함하는 부 영역으로 나뉘어 관리될 수 있으며, 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장 가능한 통합 모드 및 주 영역과 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장 가능한 분리 모드에 따라 관리될 수 있다. 또한, 버퍼는 통합 모드에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 분리 모드로 변경될 수 있으며, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 통합 모드로 변경될 수 있다. 이때, 버퍼는 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)되어 다운스트림 라우터로 전송될 수 있다. SQ와 같이 구성된 버퍼에 대해서는 이미 자세히 설명하였기에 반복적인 설명은 생략한다.
도 14는 본 발명의 일실시예에 있어서, 버퍼 관리 시스템의 내부 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 버퍼 관리 시스템(1400)은 도 12를 통해 설명한 라우팅 시스템(1200)에 포함된 시스템일 수 있다. 버퍼 관리 시스템(1400)은 버퍼(1410)와 모드 변경부(1420)를 포함할 수 있다.
버퍼(1410)는 온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리된다. 주 영역과 부 영역으로 분리되는 버퍼에 대해서는 이미 자세히 설명한 바 있다.
모드 변경부(1420)는 버퍼(1410)의 모드를 통합 모드에서 분리 모드로 변경하거나 또는 분리 모드에서 통합 모드로 변경한다. 모드 변경부(1420)는 통합 모드인 버퍼(1410)에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 버퍼(1410)의 모드를 통합 모드에서 분리 모드로 변경한다. 또한, 모드 변경부(1420)는 분리 모드인 버퍼(1410)에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 버퍼(1410)의 모드를 분리 모드에서 통합 모드를 변경한다.
이때, 통합 모드의 버퍼(1410)에는, 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장될 수 있고, 분리 모드의 버퍼(1410)에는 주 영역과 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장될 수 있다. 또한, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)될 수 있다. 이러한 버퍼(1410)는 이미 설명한 스플릿 큐에 대응할 수 있다.
도 15는 본 발명의 일실시예에 있어서, 버퍼 관리 방법을 도시한 흐름도이다. 본 실시예에 따른 버퍼 관리 방법은 도 14를 통해 설명한 버퍼 관리 시스템(1400)에 의해 수행될 수 있다.
단계(1510)에서 버퍼 관리 시스템(1400)은 온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리되는 버퍼의 모드를 통합 모드에서 분리 모드로 변경한다. 이때, 버퍼 관리 시스템(1400)은 통합 모드인 버퍼에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 버퍼의 모드를 통합 모드에서 분리 모드로 변경한다.
단계(1520)에서 버퍼 관리 시스템(1400)은 분리 모드로 변경된 버퍼의 모드를 통합 모드로 변경한다. 이때, 버퍼 관리 시스템(1400)은 분리 모드인 버퍼에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 버퍼의 모드를 분리 모드에서 통합 모드를 변경할 수 있다.
이때, 통합 모드의 버퍼에는, 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장될 수 있고, 분리 모드의 버퍼에는 주 영역과 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장될 수 있다. 또한, 분리 모드에서 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드될 수 있다. 이러한 버퍼는 이미 설명한 스플릿 큐에 대응할 수 있다.
도 12 내지 도 15에서 생략된 내용은 도 1 내지 도 11의 내용을 참조할 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 온-칩 네트워크에서 라우터의 버퍼가 포함하는 버퍼 엔트리들 각각을 비 활성화 할 수 있는 기회를 제공함으로써, 성능하락을 최소화하고 누수 전력을 최소화할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1200: 라우팅 시스템
1210: 버퍼 엔트리 상태 관리부
1220: 플릿 데이터 관리부
1230: 크레딧 전송부

Claims (15)

  1. 온-칩 네트워크(on-chip network)에서의 라우팅 시스템에 있어서,
    버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온(ON) 상태 및 오프(OFF) 상태 중 하나의 상태로 관리하는 버퍼 엔트리 상태 관리부;
    업스트림 라우터로부터 수신된 플릿 데이터를 상기 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 상기 저장된 플릿 데이터를 다운스트림 라우터로 전송하는 플릿 데이터 관리부; 및
    상기 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧(early credit) 및 상기 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧(normal credit)을 상기 업스트림 라우터로 전송하는 크레딧 전송부
    를 포함하는 라우팅 시스템.
  2. 제1항에 있어서,
    상기 크레딧 전송부는,
    혼잡(congestion)이 탐지되고, 상기 오프 상태의 버퍼 엔트리가 존재하는 경우, 상기 업스트림 라우터로부터 수신된 플릿 데이터에 대응하여 상기 초기 크레딧을 상기 업스트림 라우터로 전송하고,
    상기 버퍼 엔트리 상태 관리부는,
    상기 초기 크레딧이 상기 업스트림 라우터로 전송되는 경우, 오프 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리를 온 상태로 변경하는 것을 특징으로 하는 라우팅 시스템.
  3. 제2항에 있어서,
    상기 버퍼의 첫 번째 버퍼 엔트리에 플릿 데이터가 저장되어 있는 경우, 혼잡 신호를 생성하는 혼잡 신호 생성부;
    상기 생성된 혼잡 신호를 상기 다운스트림 라우터로 전송하는 혼잡 신호 전송부; 및
    상기 생성된 혼잡 신호 및 상기 업스트림 라우터로부터 수신되는 혼잡 신호에 기초하여 상기 혼잡을 탐지하는 혼잡 탐지부
    를 더 포함하는 라우팅 시스템.
  4. 제1항에 있어서,
    상기 크레딧 전송부는,
    상기 다운스트림 라우터로 전송되는 플릿 데이터에 대응하여 상기 일반 크레딧을 상기 업스트림 라우터로 전송하는 것을 특징으로 하는 라우팅 시스템.
  5. 제1항에 있어서,
    다운스트림 라우터에 포함된 버퍼의 버퍼 엔트리들 중 온 상태의 버퍼 엔트리들의 수를 나타내는 크레딧 수를 관리하는 크레딧 수 관리부
    를 더 포함하고,
    상기 크레딧 수 관리부는,
    상기 다운스트림 라우터로 상기 저장된 플릿 데이터가 전송되는 경우, 상기 크레딧 수를 감소시키고, 상기 다운스트림 라우터로부터 초기 크레딧 또는 일반 크레딧을 수신하는 경우, 상기 크레딧 수를 증가시키는 것을 특징으로 하는 라우팅 시스템.
  6. 제1항에 있어서,
    상기 버퍼는, 온 상태의 버퍼 엔트리들을 포함하는 주 영역(primary region) 및 오프 상태의 버퍼 엔트리들을 포함하는 부 영역(secondary region)으로 나뉘어 관리되는 것을 특징으로 하는 라우팅 시스템.
  7. 제6항에 있어서,
    상기 버퍼는, 상기 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장 가능한 통합 모드(unified mode) 및 상기 주 영역과 상기 부 영역의 버퍼 엔트리들 모두에 플릿 데이터가 저장 가능한 분리 모드(split mode)에 따라 관리되는 것을 특징으로 하는 라우팅 시스템.
  8. 제7항에 있어서,
    상기 버퍼는, 상기 통합 모드에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 상기 분리 모드로 변경되는 것을 특징으로 하는 라우팅 시스템.
  9. 제7항에 있어서,
    상기 버퍼는, 상기 분리 모드에서 상기 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 상기 통합 모드로 변경되는 것을 특징으로 하는 라우팅 시스템.
  10. 제7항에 있어서,
    상기 버퍼는, 상기 분리 모드에서 상기 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 상기 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)되어 상기 다운스트림 라우터로 전송되는 것을 특징으로 하는 라우팅 시스템.
  11. 온-칩 네트워크에서의 버퍼 관리 시스템에 있어서,
    온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리되는 버퍼; 및
    상기 버퍼의 모드를 통합 모드에서 분리 모드로 변경하거나 또는 분리 모드에서 통합 모드로 변경하는 모드 변경부
    를 포함하고,
    상기 모드 변경부는,
    상기 통합 모드인 버퍼에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 상기 버퍼의 모드를 상기 통합 모드에서 상기 분리 모드로 변경하고, 상기 분리 모드인 버퍼에서 상기 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 상기 버퍼의 모드를 상기 분리 모드에서 상기 통합 모드를 변경하는 것을 특징으로 하는 버퍼 관리 시스템.
  12. 제11항에 있어서,
    상기 통합 모드의 버퍼에는, 상기 주 영역의 버퍼 엔트리들에 플릿 데이터가 저장되고,
    상기 분리 모드의 버퍼에는 상기 주 영역과 상기 부 영역의 버퍼 엔트리들 모두에 상기 플릿 데이터가 저장되는 것을 특징으로 하는 버퍼 관리 시스템.
  13. 제11항에 있어서,
    상기 분리 모드에서 상기 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 상기 부 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터보다 먼저 리드(read out)되는 것을 특징으로 하는 버퍼 관리 시스템.
  14. 온-칩 네트워크(on-chip network)에서의 라우팅 시스템이 수행하는 흐름 제어 방법에 있어서,
    버퍼가 포함하는 복수의 버퍼 엔트리들 각각의 상태를 온 상태 및 오프 상태 중 하나의 상태로 관리하는 단계;
    업스트림 라우터로부터 수신된 플릿 데이터를 상기 온 상태의 버퍼 엔트리들 중 하나의 버퍼 엔트리에 저장하고, 상기 저장된 플릿 데이터를 다운스트림 라우터로 전송하는 단계; 및
    상기 업스트림 라우터로부터 수신된 플릿 데이터에 대응하는 초기 크레딧 및 상기 다운스트림 라우터로 전송된 플릿 데이터에 대응하는 일반 크레딧을 상기 업스트림 라우터로 전송하는 단계
    를 포함하는 흐름 제어 방법.
  15. 온-칩 네트워크에서의 버퍼 관리 시스템이 수행하는 버퍼 관리 방법에 있어서,
    온 상태의 버퍼 엔트리들이 포함된 주 영역과 오프 상태의 버퍼 엔트리들이 포함된 부 영역으로 나뉘어 관리되는 버퍼의 모드를 통합 모드에서 분리 모드로 변경하는 단계; 및
    상기 분리 모드로 변경된 버퍼의 모드를 통합 모드로 변경하는 단계
    를 포함하고,
    상기 분리 모드로 변경하는 단계는, 상기 통합 모드인 버퍼에서 다음 플릿 데이터가 저장될 버퍼 엔트리에 다른 플릿 데이터가 저장된 경우, 상기 버퍼의 모드를 상기 통합 모드에서 상기 분리 모드로 변경하고,
    상기 통합 모드로 변경하는 단계는, 상기 분리 모드인 버퍼에서 상기 주 영역에 포함된 버퍼 엔트리들에 저장된 플릿 데이터가 존재하지 않는 경우, 상기 버퍼의 모드를 상기 분리 모드에서 상기 통합 모드를 변경하는 것을 특징으로 하는 버퍼 관리 방법.
KR1020110128821A 2011-12-05 2011-12-05 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법 KR101260192B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110128821A KR101260192B1 (ko) 2011-12-05 2011-12-05 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110128821A KR101260192B1 (ko) 2011-12-05 2011-12-05 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법

Publications (1)

Publication Number Publication Date
KR101260192B1 true KR101260192B1 (ko) 2013-05-06

Family

ID=48665352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110128821A KR101260192B1 (ko) 2011-12-05 2011-12-05 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법

Country Status (1)

Country Link
KR (1) KR101260192B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102126185B1 (ko) 2020-03-30 2020-06-24 주식회사 코닉글로리 트래픽 누수시 탐지 성능 저하를 일으키는 탐지 정책 추출 시스템 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100202449A1 (en) 2009-02-12 2010-08-12 Microsoft Corporation Bufferless Routing in On-Chip Interconnection Networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100202449A1 (en) 2009-02-12 2010-08-12 Microsoft Corporation Bufferless Routing in On-Chip Interconnection Networks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102126185B1 (ko) 2020-03-30 2020-06-24 주식회사 코닉글로리 트래픽 누수시 탐지 성능 저하를 일으키는 탐지 정책 추출 시스템 및 그 방법

Similar Documents

Publication Publication Date Title
US7042891B2 (en) Dynamic selection of lowest latency path in a network switch
US7227841B2 (en) Packet input thresholding for resource distribution in a network switch
US10044646B1 (en) Systems and methods for efficiently storing packet data in network switches
US8819265B2 (en) Managing flow control buffer
US7839797B2 (en) Event-driven flow control for a very high-speed switching node
US7406041B2 (en) System and method for late-dropping packets in a network switch
CN109088829B (zh) 一种数据调度方法、装置、存储介质及设备
EP1489796B1 (en) Fabric access node integrated circuit configured to bound cell reorder buffer depth
US20020118692A1 (en) Ensuring proper packet ordering in a cut-through and early-forwarding network switch
US20110069615A1 (en) Systems and methods for limiting low priority traffic from blocking high priority traffic
US11799799B2 (en) Use of stashing buffers to improve the efficiency of crossbar switches
CN108667898B (zh) 网元和用于提供网元中的缓冲器内容的快照的方法
US7859999B1 (en) Memory load balancing for single stream multicast
CN102047619B (zh) 用于对异常分组的慢路径处理进行动态速率限制的方法、系统和计算机可读介质
JP2002512459A (ja) デジタルデータネットワークにおいてメッセージ伝送をスケジューリングし、処理を行うシステムおよび方法
US10050896B2 (en) Management of an over-subscribed shared buffer
US7729258B2 (en) Switching device
JPWO2004066570A1 (ja) ネットワークスイッチ装置およびネットワークスイッチ方法
US9154441B2 (en) Adaptive buffer allocation management
WO2020119202A1 (zh) 拥塞控制方法及装置、网络设备及存储介质
CN116114233A (zh) 自动流管理
US20230283578A1 (en) Method for forwarding data packet, electronic device, and storage medium for the same
US7688721B2 (en) Distributed communication traffic control systems and methods
KR101260192B1 (ko) 온­칩 네트워크에서 누수 전력을 줄이기 위한 라우팅 시스템 및 흐름 제어 방법 그리고 버퍼 관리 시스템 및 버퍼 관리 방법
US8131854B2 (en) Interfacing with streams of differing speeds

Legal Events

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

Payment date: 20160328

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee