KR101934195B1 - Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same - Google Patents

Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same Download PDF

Info

Publication number
KR101934195B1
KR101934195B1 KR1020170070808A KR20170070808A KR101934195B1 KR 101934195 B1 KR101934195 B1 KR 101934195B1 KR 1020170070808 A KR1020170070808 A KR 1020170070808A KR 20170070808 A KR20170070808 A KR 20170070808A KR 101934195 B1 KR101934195 B1 KR 101934195B1
Authority
KR
South Korea
Prior art keywords
history
source
weight
packets
stored
Prior art date
Application number
KR1020170070808A
Other languages
Korean (ko)
Other versions
KR20180133672A (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 KR1020170070808A priority Critical patent/KR101934195B1/en
Publication of KR20180133672A publication Critical patent/KR20180133672A/en
Application granted granted Critical
Publication of KR101934195B1 publication Critical patent/KR101934195B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들이 개시된다. 일 실시예에 따른 멀티 프로세서 시스템 내의 상호연결(inter-connecting)을 위한 중재 방법은 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정하는 단계와, 상기 가중치에 기초하여 상기 복수의 입력 포트들 중에서 어느 하나에 대해 상기 출력 포트를 우선 사용하도록 중재하는 단계를 포함한다.Disclosed are an arbitration method for interconnection in a multiprocessor system and apparatuses for performing the same. An arbitration method for inter-connecting in a multiprocessor system according to an embodiment includes determining a weight for a plurality of packets stored in a plurality of input ports based on a usage competition history for an output port, And arbitrating to use the output port for any one of the plurality of input ports based on the weight.

Description

멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들{METHOD OF ARBITRATING FOR INTER-CONNECTING WITHIN A MULTI-PROCESSOR SYSTEM AND APPARATUSES PERFORMING THE SAME}TECHNICAL FIELD [0001] The present invention relates to an arbitration method for interconnection in a multiprocessor system and an apparatus for performing the interconnection method in a multiprocessor system.

아래 실시예들은 멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들에 관한 것이다.The following embodiments relate to an arbitration method for interconnection in a multiprocessor system and devices for performing the same.

인터커넥션 네트워크들(interconnection networks)은 전체 시스템 성능 및 비용에 큰 영향을 준다. 최근에 인터커넥션 네트워크에 대한 연구는 서버 시스템 내의 소켓들을 서로 연결하는 멀티 소켓 시스템들(multi-socket systems)의 서로 다른 타입의 인터커넥션 네트워크들이었다.Interconnection networks have a significant impact on overall system performance and cost. Recently, research on interconnection networks has been of different types of interconnection networks in multi-socket systems that interconnect sockets within a server system.

멀티 소켓 서버들(multi-socket servers)은 일반적으로 고성능 컴퓨팅(high performance computing; HPC) 및 데이터 센터들에 사용된다. 멀티 소켓 서버들 각각은 프로세서-인터커넥트(processor-interconnect)를 사용하여 다른 소켓들과 통신할 수 있다.Multi-socket servers are commonly used in high performance computing (HPC) and data centers. Each of the multi-socket servers may communicate with other sockets using a processor-interconnect.

프로세서-인터커넥트(processor-interconnect)는 멀티 프로세서 시스템(multi-processor system; 또는 멀티 소켓 시스템)에서 프로세서들을 연결해주는 인터커넥트 기술을 의미한다.Processor-interconnect refers to an interconnect technology that connects processors in a multi-processor system (or multi-socket system).

프로세서-인터커넥트 기술은 대표적으로 인텔 QPI(intel quick path interconnect) 및 AMD 하이퍼트랜스포트(advanced micro devices hypertransport)가 있다.Processor-interconnect technologies are typically Intel Intel Quick Path interconnect (QPI) and advanced micro devices hypertransport.

실시예들은 사용 경쟁 히스토리에 기초하여 로컬 및/또는 원격 프로세서들 사이의 상호연결을 중재하는 기술을 제공할 수 있다.Embodiments may provide a technique for arbitrating interconnections between local and / or remote processors based on a usage competition history.

또한, 실시예들은 복수의 패킷들을 중재하여 로컬 및 원격 프로세서들을 공정하게 상호연결하는 프로세서-인터커넥트 기술을 제공할 수 있다.In addition, embodiments may provide processor-interconnect technology to interleave a plurality of packets to fairly interconnect local and remote processors.

일 실시예에 따른 멀티 프로세서 시스템 내의 상호연결(inter-connecting)을 위한 중재 방법은 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정하는 단계와, 상기 가중치에 기초하여 상기 복수의 입력 포트들 중에서 어느 하나에 대해 상기 출력 포트를 우선 사용하도록 중재하는 단계를 포함한다.An arbitration method for inter-connecting in a multiprocessor system according to an embodiment includes determining a weight for a plurality of packets stored in a plurality of input ports based on a usage competition history for an output port, And arbitrating to use the output port for any one of the plurality of input ports based on the weight.

상기 결정하는 단계는 상기 사용 경쟁 히스토리의 히스토리 큐에 저장된 상기 복수의 패킷들에 대응하는 소스의 소스 ID(identification)의 개수에 기초하여 상기 가중치를 계산하는 단계를 포함할 수 있다.The determining step may include calculating the weight based on the number of source IDs of the sources corresponding to the plurality of packets stored in the history queue of the use competition history.

상기 계산하는 단계는 상기 소스 ID의 개수에 반비례하게 상기 복수의 패킷들에 대한 가중치를 결정하는 단계를 포함할 수 있다.The calculating may comprise determining a weight for the plurality of packets in inverse proportion to the number of source IDs.

상기 계산하는 단계는 상기 히스토리 큐로부터 상기 소스 ID의 개수를 카운팅하는 단계와, 카운팅한 카운터 값들을 역변환하여 상기 복수의 패킷들에 대한 가중치를 결정하는 단계를 포함할 수 있다.The calculating may include counting the number of source IDs from the history queue and inversely transforming the counted count values to determine a weight for the plurality of packets.

상기 결정하는 단계는 상기 소스 ID의 개수를 스와핑(swapping)하여 상기 복수의 패킷들에 대한 가중치를 결정하는 단계를 포함할 수 있다.The determining may comprise swapping the number of source IDs to determine a weight for the plurality of packets.

상기 중재 방법은 상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하는 단계와, 상기 히스토리 큐에 저장 공간이 없는 경우 상기 히스토리 큐의 헤드에 저장된 소스 ID를 삭제하고 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하는 단계를 더 포함할 수 있다.Wherein the arbitration method further comprises the steps of: if there is a storage space in the history queue of the contention history, storing the source ID of the source corresponding to the packet stored in the history queue in the history queue; And deleting the source ID stored in the head of the history queue and storing the source ID of the source corresponding to the packet stored in the history queue in the history queue.

상기 중재 방법은 상기 어느 하나에 저장된 패킷에 대응하는 소스 ID의 카운터 값 및 상기 삭제된 소스 ID의 카운터 값 중에서 적어도 하나를 업데이트 하는 단계를 더 포함할 수 있다.The arbitration method may further include updating at least one of a counter value of the source ID corresponding to the packet stored in any one of the packets and a counter value of the deleted source ID.

상기 어느 하나에 저장된 패킷은 상기 가중치가 가장 큰 패킷일 수 있다.The packet stored in any one of the above may be the packet having the largest weight.

상기 중재하는 단계는 상기 복수의 입력 포트들 각각에 저장된 패킷에 대한 가중치를 비교하여 가중치가 가장 큰 패킷에 대응하는 입력 포트에 대해 상기 출력 포트를 우선 사용하도록 중재하는 단계를 포함할 수 있다.The arbitrating step may include a step of comparing the weights of the packets stored in each of the plurality of input ports and arbitrating the output port to use the output port for the input port corresponding to the packet having the largest weight.

상기 중재하는 단계는 상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 단계를 포함할 수 있다.The arbitrating step may include arbitrating for using the output port by performing probability arbitration using the weight and the random number stored in the look-up table.

일 실시예에 따른 멀티 프로세서 시스템 내의 상호연결(inter-connecting)을 중재하기 위한 라우터는 복수의 패킷들이 저장된 복수의 입력 포트와, 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 상기 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정하고, 상기 가중치에 기초하여 상기 복수의 입력 포트들 중에서 어느 하나에 대해 상기 출력 포트를 우선 사용하도록 중재하는 히스토리 기반 아비터를 포함한다.A router for arbitrating inter-connecting in a multiprocessor system according to an embodiment may include a plurality of input ports storing a plurality of packets and a plurality of input ports, And a history based arbiter for determining a weight for a plurality of stored packets and for arbitrating to use the output port for any one of the plurality of input ports based on the weight.

상기 히스토리 기반 아비터는 상기 사용 경쟁 히스토리의 히스토리 큐에 저장된 상기 복수의 패킷들에 대응하는 소스의 소스 ID(identification)의 개수에 기초하여 상기 가중치를 계산할 수 있다.The history-based arbiter can calculate the weight based on the number of source IDs of the source corresponding to the plurality of packets stored in the history queue of the usage history of the use.

상기 히스토리 기반 아비터는 상기 소스 ID의 개수에 반비례하게 상기 복수의 패킷들에 대한 가중치를 결정할 수 있다.The history-based arbiter may determine a weight for the plurality of packets in inverse proportion to the number of source IDs.

상기 히스토리 기반 아비터는 상기 히스토리 큐로부터 상기 소스 ID의 개수를 카운팅하고, 카운팅한 카운터 값들을 역변환하여 상기 복수의 패킷들에 대한 가중치를 결정할 수 있다.The history-based arbiter counts the number of source IDs from the history queue, and inversely transforms the counted count values to determine a weight for the plurality of packets.

상기 히스토리 기반 아비터는 상기 소스 ID의 개수를 스와핑(swapping)하여 상기 복수의 패킷들에 대한 가중치를 결정할 수 있다.The history-based arbiter may determine a weight for the plurality of packets by swapping the number of the source IDs.

상기 히스토리 기반 아비터는 상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하고, 상기 히스토리 큐에 저장 공간이 없는 경우 상기 히스토리 큐의 헤드에 저장된 소스 ID를 삭제하고 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장할 수 있다.Wherein the history-based arbiter stores the source ID of the source corresponding to the packet stored in any one of the history queues in the history queue of the use competition history in the history queue, and if the history queue has no storage space in the history queue, The source ID stored in the head of the queue is deleted, and the source ID of the source corresponding to the packet stored in the one is stored in the history queue.

상기 히스토리 기반 아비터는 상기 어느 하나에 저장된 패킷에 대응하는 소스 ID의 카운터 값 및 상기 삭제된 소스 ID의 카운터 값 중에서 적어도 하나를 업데이트할 수 있다.The history-based arbiter may update at least one of a counter value of the source ID corresponding to the packet stored in the one and a counter value of the deleted source ID.

상기 어느 하나에 저장된 패킷은 상기 가중치가 가장 큰 패킷일 수 있다.The packet stored in any one of the above may be the packet having the largest weight.

상기 히스토리 기반 아비터는 상기 복수의 입력 포트들 각각에 저장된 패킷에 대한 가중치를 비교하여 가중치가 가장 큰 패킷에 대응하는 입력 포트에 대해 상기 출력 포트를 우선 사용하도록 중재하는 가중치 계산기를 포함할 수 있다.The history-based arbiter may include a weight calculator that compares weights of packets stored in each of the plurality of input ports, and arbitrates the input ports corresponding to the largest weighted packet to use the output ports first.

상기 히스토리 기반 아비터는 상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 가중치 계산기를 포함할 수 있다.The history-based arbiter may include a weight calculator for arbitrating the output port to use the output port by performing probability arbitration using the weight and the random number stored in the look-up table.

도 1은 일 실시예에 따른 멀티 프로세서 시스템을 설명하기 위한 예를 나타낸다.
도 2는 도 1에 도시된 프로세서 간 상호연결 중재 방법의 예를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 라우터의 개략적인 블록도를 나타낸다.
도 4는 도 3에 도시된 히스토리 기반 아비터의 개략적인 블록도의 일 예를 나타낸다.
도 5는 도 3에 도시된 히스토리 기반 아비터의 구현 예를 나타낸다.
도 6a 내지 6c는 도 3 및 도 4에 도시된 가중치 계산기를 설명하기 위한 예들을 나타낸다.
도 7은 일 실시예에 따른 라우터의 동작을 설명하기 위한 순서도를 나타낸다.
1 shows an example for explaining a multiprocessor system according to an embodiment.
FIG. 2 is a view for explaining an example of a method for interprocessor interconnection arbitration shown in FIG. 1. FIG.
3 shows a schematic block diagram of a router according to one embodiment.
FIG. 4 shows an example of a schematic block diagram of the history-based arbiter shown in FIG.
FIG. 5 shows an implementation of the history-based arbiter shown in FIG.
Figs. 6A to 6C show examples for explaining the weight calculator shown in Figs. 3 and 4. Fig.
7 is a flowchart illustrating an operation of a router according to an embodiment of the present invention.

본 명세서에서 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에서 설명된 실시예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are presented for the purpose of describing embodiments only in accordance with the concepts of the present invention, May be embodied in various forms and are not limited to the embodiments described herein.

본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. However, it is not intended to limit the embodiments according to the concepts of the present invention to the specific disclosure forms, but includes changes, equivalents, or alternatives falling within the spirit and scope of the present invention.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first, second, or the like may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example without departing from the scope of the right according to the concept of the present invention, the first element being referred to as the second element, Similarly, the second component may also be referred to as the first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 며에서에서, "포함하다" 또는 "가지다" 등의 용어를 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. It is to be understood that in the present context, terms such as "include" or "having" are intended to designate the presence of stated features, integers, steps, operations, elements, parts, or combinations thereof, , Steps, operations, components, parts, or combinations thereof, as a matter of principle.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, the scope of the patent application is not limited or limited by these embodiments. Like reference symbols in the drawings denote like elements.

도 1은 일 실시예에 따른 멀티프로세서 시스템을 설명하기 위한 예를 나타낸다.1 shows an example for explaining a multiprocessor system according to an embodiment.

도 1을 참조하면, 멀티 프로세서 시스템(multi-processor system; 10)은 복수의 프로세서들(100, 200, 300, 및 400)을 포함한다. 도 1에서는 설명의 편의를 위해 4개의 프로세서로 구성된 멀티 프로세서 시스템(10)을 도시하고 있지만, 반드시 이에 한정되지 않는다. 실시예에 따라, 멀티 프로세서 시스템(10)은 2개 이상의 프로세서로 구현될 수 있다.Referring to FIG. 1, a multi-processor system 10 includes a plurality of processors 100, 200, 300, and 400. Although FIG. 1 shows a multiprocessor system 10 composed of four processors for convenience of explanation, the present invention is not limited thereto. In accordance with an embodiment, the multiprocessor system 10 may be implemented with two or more processors.

또한, 멀티 프로세서 시스템(10)은 라우터(router; 500), 입출력 장치(input/output unit; 600) 및 메모리(memory; 700)를 더 포함한다.The multiprocessor system 10 further includes a router 500, an input / output unit 600, and a memory 700.

멀티 프로세서 시스템(10)은 복수의 프로세서들(100, 200, 300, 및 400)의 상호연결(inter-conneting)을 위해 프로세서-인터커넥트(processor-interconnect) 기술을 사용한다. 예를 들어, 멀티 프로세서 시스템(10)이 사용하는 프로세서-인터커넥트 기술은 AMD 하이퍼트랜스포트(advanced micro devices hypertransport(AMD HT))일 수 있다.The multiprocessor system 10 uses processor-interconnect technology for inter-conneting a plurality of processors 100, 200, 300, and 400. For example, the processor-interconnect technology used by the multiprocessor system 10 may be an AMD microtransport (AMD HT).

복수의 프로세서들(100, 200, 300, 및 400) 각각은 복수의 코어(core)들 및 노스 브리지(north bridge)를 온-칩(on-chip)으로 구성될 수 있다. 예를 들어, 노스 브리지는 메모리 컨트롤러(memory controller(MCT); 미도시), 라스트 레벨 캐시(last level cache(LLC); 미도시), 하이퍼트랜스포트(hypertransport(HT); 미도시) 및 라우터(500)를 구성할 수 있다. 도 1에 도시된 바와 같이, 멀티 프로세서 시스템(10) 내의 복수의 프로세서들(또는 복수의 노드들) 각각은 라우터(500)를 포함할 수 있다.Each of the plurality of processors 100, 200, 300, and 400 may be configured as an on-chip with a plurality of cores and a north bridge. For example, the north bridge may include a memory controller (MCT) (not shown), a last level cache (LLC) (not shown), a hypertransport (HT) 500). As shown in FIG. 1, each of a plurality of processors (or a plurality of nodes) in the multiprocessor system 10 may include a router 500.

각 프로세서(100, 200, 300, 및 400)의 라우터(500)는 사용 경쟁 히스토리에 기초하여 각 프로세서(100, 200, 300, 및 400)에 포함된 소스들, 즉 코어들 간의 통신(예를 들어, 패킷들의 송수신)을 중재할 수 있다.The router 500 of each of the processors 100, 200, 300, and 400 determines the communication between the cores included in each of the processors 100, 200, 300, and 400, For example, sending and receiving packets).

즉, 멀티 프로세서 시스템(10)은 사용 경쟁 히스토리 기반의 라우터(500)를 통해 각 프로세서(100, 200, 300, 및 400)에 포함된 코어들 간의 패킷의 송수신을 중재함으로써, 로컬 및 원격 프로세서들을 공정하게 상호 연결할 수 있다.That is, the multiprocessor system 10 arbitrates the transmission and reception of packets between the cores included in each processor 100, 200, 300, and 400 via the router 500 based on the use competition history, They can be interconnected fairly.

도 2는 도 1에 도시된 프로세서 간 상호연결 중재 방법의 예를 설명하기 위한 도면이다.FIG. 2 is a view for explaining an example of a method for interprocessor interconnection arbitration shown in FIG. 1. FIG.

도 2에서는 설명의 편의를 위해 제1 프로세서(100)와 제2 프로세서(200) 간의 상호연결을 가정하고, 각 프로세서(100 및 200)는 6개의 코어(또는 소스)로 구현된 것으로 가정한다. 또한, 프로세서-인터커넥트 기술은 인텔 QPI(intel quick path interconnect) 프로세서-인터커넥트 기술을 사용하는 것으로 가정한다.2, it is assumed that the interconnections between the first processor 100 and the second processor 200 are assumed to be interconnected, and that the processors 100 and 200 are implemented with six cores (or sources). It is also assumed that the processor-interconnect technology uses the Intel intel quick path interconnect (QPI) processor-interconnect technology.

도 2를 참조하면, 제1 프로세서(100)는 제0 코어(core 0; C0), 제1 코어(core 1; C1), 제2 코어(core 2; C2), 제3 코어(core 3; C3), 제4 코어(core 4; C4), 제5 코어(core 5; C5), 및 제1 멀티 플렉서(first multiplexer; 110)를 포함한다. 제2 프로세서(200)는 제6 코어(core 6; C6), 제7 코어(core 7; C7), 제8 코어(core 8; C8), 제9 코어(core 9; C9), 제10 코어(core 10; C10), 제11 코어(core 11; C11), 및 제2 멀티 플렉서(second multiplexer; 210)를 포함한다.Referring to FIG. 2, the first processor 100 includes a core 0 (C0), a first core (C1), a second core (C2), a third core (C3) C3, a fourth core (C4), a fifth core (C5), and a first multiplexer (110). The second processor 200 includes a sixth core C6, a seventh core C7, an eighth core C8, a ninth core C9, a core 10 (C10), a core 11 (C11), and a second multiplexer (210).

제1 프로세서(100)와 제2 프로세서(200)는 라우터 멀티 플렉서(router multiplexer; 550)를 포함하는 라우터(500)를 포함한다. 제1 멀티 플렉서(110)는 코어들(C0~C5) 각각으로부터 패킷을 수신할 수 있다. 또한, 제1 멀티 플렉서(110)는 패킷을 제1 프로세서(100)의 라우터(500)로 전송할 수 있다. 예를 들어, 패킷은 코어들(C0~C5) 각각으로부터 출력된 하나 이상의 독립적인 패킷일 수 있다.The first processor 100 and the second processor 200 include a router 500 including a router multiplexer 550. The first multiplexer 110 can receive packets from each of the cores C0 to C5. In addition, the first multiplexer 110 may transmit the packet to the router 500 of the first processor 100. [ For example, the packet may be one or more independent packets output from each of the cores C0 through C5.

제2 프로세서(200)의 라우터(500)는 패킷을 제1 프로세서(100)의 라우터(500)로 전송할 수 있다. 예를 들어, 패킷은 코어(C6, C7, C8, C9, C10, 또는 C11)로부터 출력된 하나 이상의 독립적인패킷일 수 있다.The router 500 of the second processor 200 may transmit the packet to the router 500 of the first processor 100. [ For example, the packet may be one or more independent packets output from the core (C6, C7, C8, C9, C10, or C11).

제1 프로세서(100)의 라우터(500)는 어느 하나의 로컬 코어(C0, C1, C2, C3, C3, C4, 또는 C5)와 어느 하나의 원격 코어(C6, C7, C8, C9, C10, 또는 C11)로부터 출력된 패킷을 수신할 수 있다. 도 2에 도시된 바와 같이, 제6 코어(C6)로부터 출력된 패킷이 제2 프로세서(200)의 라우터(500)를 통해 제1 프로세서(100)의 라우터(500)로 전송된다.The router 500 of the first processor 100 is connected to any one of the local cores C0, C1, C2, C3, C3, C4 or C5 and any one of the remote cores C6, C7, C8, C9, C10, Or C11). The packet output from the sixth core C6 is transmitted to the router 500 of the first processor 100 through the router 500 of the second processor 200 as shown in FIG.

즉, 제1 프로세서(100) 및 제2 프로세서(200)는 라우터(500) 아키텍처(architecture)의 복잡성(complexity)를 최소화하기 위해 외부 컨센트레이션(external concentration) 기술을 사용할 수 있다.That is, the first processor 100 and the second processor 200 may use an external concentration technique to minimize the complexity of the router 500 architecture.

하지만, 외부 컨센트레이션 기술을 사용하는 경우 로컬 및 원격 프로세서들(100 및 200)은 공정하게 상호연결되어 복수의 패킷들을 송수신할 수 없다.However, when using external congestion techniques, the local and remote processors 100 and 200 can not be fairly interconnected to transmit and receive a plurality of packets.

이하에서는 외부 컨센트레이션 기술을 사용하는 경우에도 로컬 및 원격 프로세서들을 공정하게 상호연결하는 프로세서-인터커넥터 기술을 위한 라우터(500) 및 이의 동작 방법에 대해서 설명한다.The following describes a router 500 and a method of operation thereof for a processor-interconnect technology that fairly interconnects local and remote processors even when using external congestion techniques.

도 3은 일 실시예에 따른 라우터의 개략적인 블록도를 나타낸다.3 shows a schematic block diagram of a router according to one embodiment.

도 3을 참조하면, 라우터(500)는 복수의 입력 포트들(a plural of input port; 510), 히스토리 기반 아비터(arbiter based on history; 530) 및 라우터 멀티 플렉서(router multiplexer; 550)를 포함한다.3, the router 500 includes a plurality of input ports 510, an arbiter based on history 530, and a router multiplexer 550. The router 500 includes a plurality of input ports 510, do.

복수의 입력 포트들(510)은 제1 입력 포트(510-1) 내지 제n 입력 포트(510-n)을 포함할 수 있다. 예를 들어, n은 1이상의 자연수일 수 있다.The plurality of input ports 510 may include a first input port 510-1 to an nth input port 510-n. For example, n may be a natural number greater than or equal to one.

복수의 입력 포트들(510) 각각은 입력 버퍼(input buffer) 또는 가상 채널(virtual channel)을 포함할 수 있다. 예를 들어, 입력 버퍼 또는 가상 채널은 복수의 입력 버퍼들 또는 복수의 가상 채널들일 수 있다.Each of the plurality of input ports 510 may include an input buffer or a virtual channel. For example, the input buffer or virtual channel may be a plurality of input buffers or a plurality of virtual channels.

복수의 입력 포트들(510) 각각은 패킷을 수신하여 각각의 입력 버퍼 또는 가상 채널에 패킷들 수신된 순서대로 저장할 수 있다.Each of the plurality of input ports 510 may receive a packet and store the packets in their respective input buffers or virtual channels in the order received.

이때, 복수의 입력 포트들(510) 각각은 복수의 소스들(또는 코어들) 각각에서 전송된 패킷을 수신할 수 있다. 예를 들어, 제1 입력 포트(510-1)은 제1 소스로부터 출력된 패킷을 수신하고, 제2 입력 포트(510-2)는 제2 소스로부터 출력된 패킷을 수신하고, 제n 입력 포트(510-2)는 제n 소스로부터 출력된 패킷을 수신할 수 있다. 제1 소스, 제2 소스, 및 제n 소스는 서로 상이한 코어로, 로컬 프로세서 내 코어 및/또는 원격 프로세서 내 코어일 수 있다.At this time, each of the plurality of input ports 510 may receive a packet transmitted from each of a plurality of sources (or cores). For example, the first input port 510-1 receives the packet output from the first source, the second input port 510-2 receives the packet output from the second source, (510-2) can receive the packet output from the nth source. The first source, the second source, and the nth source may be different cores, a core in a local processor and / or a core in a remote processor.

복수의 입력 포트들(510) 각각은 패킷을 수신한 때 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하기 위한 리퀘스트 신호(request signal)를 히스토리 기반 아비터(530)로 출력할 수 있다. 예를 들어, 복수의 입력 포트들(510) 각각으로부터 출력된 리퀘스트 신호는 각 입력 포트(510)에 저장된 패킷에 대응하는 소스의 소스 ID(source identification; 또는 코어 넘버)를 포함할 수 있다.Each of the plurality of input ports 510 may output a request signal to the history-based arbiter 530 to use an output port connected to the router multiplexer 550 when the packet is received. For example, a request signal output from each of the plurality of input ports 510 may include a source identification (or a core number) of a source corresponding to a packet stored in each of the input ports 510.

히스토리 기반 아비터(530)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다. 예를 들어, 히스토리 기반 아비터(530)는 라우터 멀티 플렉서(550)에 접속된 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다.일 예로, 히스토리 기반 아비터(530)는 라우터 멀티 플렉서(550)에 접속된 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들(510)에 저장된 패킷들에 대한 가중치를 결정할 수 있다. 이후에, 히스토리 기반 아비터(530)는 가중치에 기초하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다.The history-based arbiter 530 is configured to preferentially use the output port connected to the router multiplexer 550 for any one of the plurality of input ports 510 in response to the request signal output from each input port 510 You can arbitrate. For example, the history-based arbiter 530 may arbitrate to preferentially use the output port connected to the router multiplexer 550 based on the usage competition history for the output port connected to the router multiplexer 550 History-based arbiter 530 can determine weights for the packets stored in the plurality of input ports 510 based on the usage competition history for the output ports connected to the router multiplexer 550 have. Thereafter, the history-based arbiter 530 may arbitrate to preferentially use the output port connected to the router multiplexer 550 for any one of the plurality of input ports 510 based on the weights.

사용 경쟁 히스토리는 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하기 위한 경쟁에서 승리한 소스(또는 코어)의 과거(또는 이전) 승자 히스토리를 의미할 수 있다.The usage competition history may refer to the past (or previous) winner history of the source (or core) that won the competition to use the output port connected to the router multiplexer 550.

예를 들어, 복수의 입력 포트들(510)에 패킷이 차곡차곡 쌓이면, 복수의 입력 포트들(510)은 패킷을 출력하기 위해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하기 위한 경쟁을 한다. 이때, 특정 입력 포트가 경쟁에서 승리하여 출력 포트를 우선적으로 사용하는 경우, 특정 입력 포트에 쌓인 패킷에 대응하는 소스(즉, 패킷을 출력한(또는 생성한) 소스)가 승자로 결정된다. 즉, 사용 경쟁 히스토리는 과거(또는 이전)에 라우터 멀티 플렉서(550)에 접속된 출력 포트를 통해 패킷을 출력하기 위한 경쟁에서 승리한 소스의 승자 히스토리를 의미한다.For example, when packets are piled up on a plurality of input ports 510, a plurality of input ports 510 are used to compete for output ports connected to the router multiplexer 550 to output packets, . At this time, when the specific input port wins the competition and preferentially uses the output port, the source corresponding to the packet accumulated in the specific input port (i.e., the source that outputs (or generates) the packet) is determined as the winner. That is, the usage competition history means a winner history of a victorious source for outputting a packet through an output port connected to the router multiplexer 550 in the past (or before).

히스토리 기반 아비터(530)는 가중치를 고려한 중재 동작에 반드시 한정되는 것은 아니며, 다양한 요소를 고려한 히스토리에 기반하여 중재 동작을 수행할 수 있다.The history-based arbiter 530 is not necessarily limited to an arbitration operation considering a weight, and can perform an arbitration operation based on a history in consideration of various factors.

히스토리 기반 아비터(530)는 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재하는 중재 신호(arbitration signal)를 라우터 멀티 플렉서(550)에 전송할 수 있다.The history-based arbiter 530 transmits an arbitration signal for arbitrating the output port connected to the router multiplexer 550 to any one of the plurality of input ports 510 to the router multiplexer 550).

라우터 멀티 플렉서(550)는 히스토리 기반 아비터(530)의 제어에 따라, 예를 들어 중재 신호에 응답하여 복수의 입력 포트들(510) 중에서 어느 하나에 저장된 패킷을 우선 출력할 수 있다.The router multiplexer 550 can output packets stored in any one of the plurality of input ports 510 in response to the arbitration signal, for example, under the control of the history-based arbiter 530.

이에, 복수의 입력 포트들(510) 중에서 어느 하나는 우선적으로 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하여 저장된 패킷을 출력할 수 있다.Accordingly, any one of the plurality of input ports 510 may output the stored packet using the output port connected to the router multiplexer 550 first.

이하에서는 설명의 편의를 위해 가중치를 고려한 중재 기능을 수행하는 히스토리 기반 아비터(530)에 대해서 설명하도록 한다.Hereinafter, for convenience of description, the history-based arbiter 530 that performs the arbitration function considering the weight values will be described.

도 4는 도 3에 도시된 히스토리 기반 아비터의 개략적인 블록도의 일 예를 나타낸다.FIG. 4 shows an example of a schematic block diagram of the history-based arbiter shown in FIG.

도 4를 참조하면, 히스토리 기반 아비터(530)는 가중치에 기초하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다.4, the history-based arbiter 530 may arbitrate to preferentially use the output port connected to the router multiplexer 550 for any one of the plurality of input ports 510 based on the weights .

히스토리 기반 아비터(530)는 히스토리 큐(history queue; 531), 카운터(counter; 533) 및 가중치 계산기(weighted calculator; 535)를 포함할 수 있다.The history-based arbiter 530 may include a history queue 531, a counter 533 and a weighted calculator 535.

히스토리 큐(531)는 과거 승자 히스토리들을 저장하기 위한 저장 장치, 예를 들어 큐있다.The history queue 531 is a storage device, e.g., a queue, for storing past winner histories.

히스토리 큐(531)는 가중치 계산기(535)로부터 전송된 승인 신호(grant signal)에 응답하여 라우터 멀티플렉서(550)에 접속된 출력 포트를 우선적으로 사용하도록 중재된 입력 포트에 저장된 패킷에 대응하는 소스의 소스 ID를 저장할 수 있다. 예를 들어, 히스토리 큐(531)는 각 소스 ID에 대응하는 큐를 포함할 수 있다.In response to the grant signal transmitted from the weight calculator 535, the history queue 531 is configured to use the output port connected to the router multiplexer 550, You can store the source ID. For example, the history queue 531 may include a queue corresponding to each source ID.

승인 신호는 중재된 입력 포트의리퀘스트 신호에 포함된 소스 ID를 포함할 수 있다. 또한, 승인 신호는 소스 ID를 히스토리 큐(531)에 푸시(push)할 수 있다.The acknowledgment signal may include the source ID contained in the request signal of the arbitrated input port. In addition, the acknowledge signal may push the source ID to the history queue 531.

히스토리 큐(531)는 히스토리 큐(531)의 저장 공간에 따라 저장된 소스 ID의 삭제 여부를 결정하고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.The history queue 531 may determine whether to delete the stored source ID according to the storage space of the history queue 531 and store the source ID transmitted from the weight calculator 535. [

일 예로, 저장 공간이 있는 경우, 히스토리 큐(531)는 저장된 소스 ID를 삭제하지 않고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.As an example, if there is a storage space, the history queue 531 may store the source ID sent from the weight calculator 535 without deleting the stored source ID.

다른 예로, 저장 공간이 없는 경우, 히스토리 큐(531)는 히스토리 큐(531)의 헤드(head)에 저장된 소스 ID를 삭제하고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.As another example, if there is no storage space, the history queue 531 may delete the source ID stored in the head of the history queue 531 and store the source ID sent from the weight calculator 535. [

카운터(533)는 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅한 카운트 값을 가중치 계산기(535)로 출력할 수 있다. 예를 들어, 카운터(533)는 각 소스 ID의 큐에 대응하는 카운터를 포함할 수 있다.The counter 533 can output a count value obtained by counting the number of each source ID stored in the history queue 531 to the weight calculator 535. [ For example, the counter 533 may include a counter corresponding to a queue of each source ID.

일 예로, 카운터(533)는 가중치 계산기(535)의 제어에 따라 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅할 수 있다. 예를 들어, 카운터(533)는 히스토리 큐(531)에 저장된 소스 ID들 중에서 리퀘스트 신호에 포함된 소스 ID에 해당하는 소스 ID를 검색할 수 있다. 이후에, 카운터(533)는 검색된 소스 ID의 개수를 카운팅하여 소스 ID의 카운트 값을 계산할 수 있다.For example, the counter 533 may count the number of each source ID stored in the history queue 531 under the control of the weight calculator 535. For example, the counter 533 may search for a source ID corresponding to the source ID included in the request signal among the source IDs stored in the history queue 531. [ Thereafter, the counter 533 may calculate the count value of the source ID by counting the number of the retrieved source IDs.

다른 예로, 카운터(533)는 미리 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅한 카운트 값들을 저장할 수 있다. 이에, 카운터(533)는 가중치 계산기(535)의 제어에 따라 저장된 카운트 값들 중에서 소스 ID의 카운트 값을 가중치 계산기(535)로 출력할 수 있다.As another example, the counter 533 may store count values that count the number of each source ID stored in the history queue 531 in advance. The counter 533 may output the count value of the source ID among the count values stored in the counter 533 to the weight calculator 535 under the control of the weight calculator 535. [

카운터(533)는 기 저장된 각 소스 ID의 카운트 값들을 업데이트할 수 있다.The counter 533 may update the count values of each source ID stored beforehand.

일 예로, 카운터(533)는 가중치 계산기(535)로부터 전송된 승인 신호에 응답하여 소스 ID의 카운터 값을 증가시킬 수 있다.In one example, the counter 533 may increase the counter value of the source ID in response to the grant signal sent from the weight calculator 535. [

다른 예로, 카운터(533)는 히스토리 큐(531)로부터 전송된 삭제 신호(pop signal)에 응답하여 삭제 신호에 포함된 소스 ID의 카운터 값을 감소시킬 수 있다. 이때, 삭제 신호는 히스토리 큐(531)의 헤드에서 삭제된 소스 ID에 대한 정보를 포함할 수 있다.As another example, the counter 533 may decrease the counter value of the source ID included in the erasure signal in response to the pop signal sent from the history queue 531. At this time, the delete signal may include information on the deleted source ID at the head of the history queue 531. [

가중치 계산기(535)는 히스토리 기반 아비터(530)의 전반적인 동작을 제어할 수 있다. 예를 들어, 가중치 계산기(535)는 히스토리 큐(531) 및 카운터(533)의 동작을 제어할 수 있다.The weight calculator 535 may control the overall operation of the history based arbiter 530. For example, the weight calculator 535 may control the operation of the history queue 531 and the counter 533.

가중치 계산기(535)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 카운터(533)로부터 카운터 값들을 획득할 수 있다. 카운터 값들은 각 입력 포트(510)의 리퀘스트 신호에 포함된 소스 ID의 카운팅 값일 수 있다.The weight calculator 535 may obtain the counter values from the counter 533 in response to the request signal output from each input port 510. [ The counter values may be the count value of the source ID included in the request signal of each input port 510.

가중치 계산기(535)는 카운터(533)로부터 출력된 카운터 값들에 기초하여 복수의 입력 포트들(510)에 저장된 복수의 패킷들에 대한 가중치를 결정할 수 있다.The weight calculator 535 may determine a weight for a plurality of packets stored in the plurality of input ports 510 based on the counter values output from the counter 533. [

가중치 계산기(535)는 카운터 값들에 반비례 및/또는 비례하게 가중치를 결정할 수 있다. 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값의 크기와 반대로 각각의 가중치를 결정할 수 있다. 다른 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값을 역변환하여 각각의 가중치를 결정할 수 있다. 또 다른 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값을 스와핑(swapping)하여 가중치를 결정할 수 있다.The weight calculator 535 may determine the weight inversely and / or proportionally to the counter values. For example, the weight calculator 535 may determine the respective weights as opposed to the magnitude of the counter value of the source IDs. As another example, the weight calculator 535 may invert the counter value of the source IDs to determine the respective weights. As another example, the weight calculator 535 may swap the counter value of the source IDs to determine the weight.

가중치는 수학식 1로 나타낼 수 있다.The weight can be expressed by Equation (1).

Figure 112017054142761-pat00001
Figure 112017054142761-pat00001

수학식 1의

Figure 112017054142761-pat00002
는 소스 ID가 i인 패킷에 대한 소스 ID의 개수를 나타내고,
Figure 112017054142761-pat00003
는 히스토리 큐의 깊이를 나타내고,
Figure 112017054142761-pat00004
는 소스 ID가 i인 패킷에 대한 가중치를 나타낸다.In Equation (1)
Figure 112017054142761-pat00002
Represents the number of source IDs for a packet whose source ID is i,
Figure 112017054142761-pat00003
Represents the depth of the history queue,
Figure 112017054142761-pat00004
Represents a weight for a packet whose source ID is i.

가중치 계산기(535)는 가중치들에 기초하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다.The weight calculator 535 may arbitrate to use the output port preferentially for any one of the plurality of input ports 510 based on the weights.

예를 들어, 가중치 계산기(535)는 각 가중치를 비교하여 가중치가 가장 큰 복수의 패킷에 대응하는 입력 포트에 대해 출력 포트를 우선 사용하도록 중재할 수 있다.For example, the weight calculator 535 may compare the weights to arbitrate the output ports for the input ports corresponding to the plurality of packets having the largest weight.

가중치 계산기(535)는 각 가중치를 비교하여 복수의 입력 포트들(510)을 중재할 때 확률 중재를 수행할 수 있다. 예를 들어, 가중치 계산기(535)는 각 가중치와 룩-업 테이블(look-up table)에 저장된 랜덤 넘버(random number)를 이용하여 확률 중재를 수행함으로써 복수의 입력 포트들(510) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다. 이때, 랜덤 넘버는 라우터(500) 초기화 시에 미리 생성되어 룩-업 테이블에 저장될 수 있다.The weight calculator 535 may perform probability arbitration when comparing a plurality of input ports 510 by comparing the weights. For example, the weight calculator 535 may use one of a plurality of input ports 510 by performing probability arbitration using a random number stored in each of the weights and a look-up table Can arbitrate to use the output port first. At this time, the random number may be generated in advance at the time of initialization of the router 500 and stored in the look-up table.

가중치 계산기(535)는 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재하는 중재 신호(arbitration signal)를 생성하고, 중재 신호를 라우터 멀티 플렉서(550)로 출력할 수 있다. 또한, 가중치 계산기(535)는 출력 포트를 우선 사용하기 위한 경쟁에서 승리한 소스의 소스 ID를 포함하는 승인 신호를 생성하고, 승인 신호를 히스토리 큐(531) 및/또는 카운터(533)로 출력할 수 있다.The weight calculator 535 may generate an arbitration signal to arbitrate the output port connected to the router multiplexer 550 to preferentially use the output port and output the arbitration signal to the router multiplexer 550. [ In addition, the weight calculator 535 generates an acknowledgment signal including the source ID of the victorious victor to use the output port first, and outputs an acknowledgment signal to the history queue 531 and / or the counter 533 .

도 5는 도 3에 도시된 히스토리 기반 아비터의 구현 예를 나타낸다.FIG. 5 shows an implementation of the history-based arbiter shown in FIG.

도 5에서는 설명의 편의를 위해 복수의 입력 포트들(510)가 두 개의 입력 포트(510-1, 510-2)로 구성된 것으로 가정한다.In FIG. 5, it is assumed that a plurality of input ports 510 are composed of two input ports 510-1 and 510-2 for convenience of explanation.

도 5를 참조하면, 라우터(500)는 제1 입력 포트(510-1), 제2 입력 포트(510-2), 히스토리 큐(531), 카운터(533), 가중치 계산기(535) 및 라우터 멀티 플렉서(550)를 포함한다.5, the router 500 includes a first input port 510-1, a second input port 510-2, a history queue 531, a counter 533, a weight calculator 535, And a plexer 550.

도 5의 카운터(533)는 히스토리 큐(510)에 저장된 소스 ID들을 검색하는 하드웨어 작업을 단순화하여 구현된 카운터(533)이다.The counter 533 of FIG. 5 is a counter 533 implemented by simplifying the hardware task of retrieving the source IDs stored in the history queue 510.

각 입력 포트(510-1 및 510-2)는 리퀘스트 신호를 가중치 계산기(535)로 출력한다.Each of the input ports 510-1 and 510-2 outputs a request signal to the weight calculator 535. [

가중치 계산기(535)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 카운터(533)로부터 각 리퀘스트 신호에 포함된 소스 ID에 대응하는 카운터 값을 획득할 수 있다. The weight calculator 535 can obtain the counter value corresponding to the source ID included in each request signal from the counter 533 in response to the request signal output from each input port 510. [

가중치 계산기(535)는 각 카운터 값에 기초하여 입력 포트들(510-1, 510-2)에 저장된 패킷들에 대한 가중치를 결정할 수 있다.The weight calculator 535 may determine weights for the packets stored in the input ports 510-1 and 510-2 based on the respective counter values.

가중치 계산기(535)는 가중치에 기초하여 입력 포트들(510-1, 510-2) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재 신호를 생성하고, 중재 신호를 라우터 멀티 플렉서(550)로 출력할 수 있다. 또한, 가중치 계산기(535)는 출력 포트를 우선 사용하기 위한 경쟁에서 승리한 어느 입력 포트에 저장된 패킷에 대응하는 소스의 소스 ID를 포함하는 승인 신호를 생성하고, 승인 신호를 히스토리 큐(531) 및 카운터(533)로 출력할 수 있다.The weight calculator 535 generates an arbitration signal to preferentially use the output port for any one of the input ports 510-1 and 510-2 based on the weight and sends the arbitration signal to the router multiplexer 550 Can be output. In addition, the weight calculator 535 generates an acknowledgment signal including the source ID of the source corresponding to the packet stored in any input port winning the competition for preferentially using the output port, and outputs an acknowledgment signal to the history queue 531 and / And outputs it to the counter 533.

이에, 라우터 멀티 플렉서(550)는 중재 신호에 응답하여 제1 입력 포트(510-1) 및 제2 입력 포트(510-2) 중에서 어느 하나에 저장된 패킷을 우선 출력하고, 히스토리 큐(531)는 승인 신호에 응답하여 저장된 승자 히스토리에 해당하는 소스 ID를 삭제 또는 삭제하지 않고, 승인 신호에 포함된 소스 ID를 저장한다. 이때, 히스토리 큐는 소스 ID를 삭제하는 경우 삭제 신호를 카운터(533)에 전송한다.The router multiplexer 550 first outputs packets stored in either the first input port 510-1 or the second input port 510-2 in response to the arbitration signal, Does not delete or delete the source ID corresponding to the winner history stored in response to the approval signal, and stores the source ID included in the approval signal. At this time, the history queue transmits a delete signal to the counter 533 when the source ID is deleted.

단순화된 카운터(533)는 승인 신호 및 삭제 신호에 응답하여 승인 신호 및 삭제 신호에 대응하는 소스 ID의 카운터 값을 증가 및/또는 감소하여 업데이트를 수행한다.The simplified counter 533 increases and / or decreases the counter value of the source ID corresponding to the acknowledgment signal and the erase signal in response to the acknowledgment signal and the erase signal, thereby performing the update.

도 6a 내지 도 6c를 참조하여 가중치 계산기(535)의 가중치 연산에 대해 상세히 설명하도록 한다.The weight calculation of the weight calculator 535 will be described in detail with reference to Figs. 6A to 6C.

도 6a 내지 6c는 도 3 및 도 4에 도시된 가중치 계산기를 설명하기 위한 예들을 나타낸다.Figs. 6A to 6C show examples for explaining the weight calculator shown in Figs. 3 and 4. Fig.

도 6a의 가중치 계산기(535)는 제1 입력 포트(510-1) 및 제2 입력 포트(510-2)에 포함된 패킷에 대응하는 소스의 소스 ID의 카운트 값을 역변환하여 가중치를 결정한다. 이후에, 가중치 계산기(535)는 가중치에 기초하여 중재 신호를 라우터 멀티 플렉서(550)로 전송한다.The weight calculator 535 of FIG. 6A determines a weight by inversely transforming the count value of the source ID of the source corresponding to the packet included in the first input port 510-1 and the second input port 510-2. Thereafter, the weight calculator 535 transmits the arbitration signal to the router multiplexer 550 based on the weight.

하지만, 도 6a의 가중치 계산기(535)의 역변환에 대한 연산은 하드웨어적으로 높은 비용을 요구한다. 이에, 도 6b 및 도 6c는 스와핑(swapping)을 통해 역변환에 대한 연산의 높은 비용을 최소화할 수 있다.However, the operation on the inverse transformation of the weight calculator 535 of FIG. 6A requires a high hardware cost. Thus, Figures 6b and 6c can minimize the high cost of operations for inverse transformation through swapping.

도 6b의 가중치 계산기(535)는 제1 입력 포트(510-1) 및 제2 입력 포트(510-2)에 포함된 패킷에 대응하는 소스의 소스 ID의 카운트 값을 스와핑(swapping)하여 가중치를 결정한다. 이때, 가중치 계산기(535)는 확률 중재를 수행함으로써 각 입력 포트(510-1 및 510-2)를 중재할 수 있다.The weight calculator 535 of FIG. 6B swaps the count value of the source ID of the source corresponding to the packet included in the first input port 510-1 and the second input port 510-2, . At this time, the weight calculator 535 can arbitrate the input ports 510-1 and 510-2 by performing probability arbitration.

도 6c는 도 6a의 가중치 계산기(535)가 수행하는 확률 중재를 상세하게 도시한 도면이다. 도 6c의 가중치 계산기(535)는 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행한 중재 신호를 라우터 멀티 플렉서(550)로 전송할 수 있다.FIG. 6C is a diagram illustrating in detail the probability arbitration performed by the weight calculator 535 of FIG. 6A. The weight calculator 535 of FIG. 6C may transmit the arbitration signal that has performed the probability arbitration to the router multiplexer 550 using the random number stored in the look-up table.

도 6a 내지 도 6c에서 가중치 계산기(535)의 가중치 결정에 대한 연산을 경량화하는 방법을 도시하고, 설명하였지만, 반드시 이에 한정되는 것은 아니고, 가중치 연산 동작 및 연산을 경량화하는 방법은 다양할 수 있다.6A to 6C illustrate and illustrate a method of weighting an operation for weight determination of the weight calculator 535. However, the present invention is not necessarily limited to this, and the weight calculation operation and the method of weighting the operation may be various.

도 7은 일 실시예에 따른 라우터의 동작을 설명하기 위한 순서도를 나타낸다.7 is a flowchart illustrating an operation of a router according to an embodiment of the present invention.

도 7을 참조하면, 라우터(500)는 로컬 및 원격 프로세스들에 포함된 복수의 소스들에서 전송된 복수의 패킷들을 수신하여 수신된 순서대로 복수의 입력 포트들 각각에 저장할 수 있다(S710).Referring to FIG. 7, the router 500 may receive a plurality of packets transmitted from a plurality of sources included in local and remote processes and store the packets in each of a plurality of input ports in a received order (S710).

라우터(500)는 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정할 수 있다(S730).The router 500 may determine a weight for a plurality of packets stored in the plurality of input ports based on a usage competition history for the output port (S730).

라우터(500)는 복수의 패킷들에 대한 가중치에 기초하여 복수의 입력 포트들 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다(S750).The router 500 may arbitrate to use the output port for any one of the plurality of input ports based on the weight for the plurality of packets (S750).

라우터(500)는 중재된 입력 포트에 저장된 패킷을 출력 포트에 출력할 수 있다(S770).The router 500 may output the packet stored in the arbitrated input port to the output port (S770).

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (15)

멀티 프로세서 시스템 내의 상호연결(inter-connecting)을 위한 중재 방법에 있어서,
출력 포트에 대한 사용 경쟁 히스토리의 히스토리 큐에 저장된 복수의 패킷들에 대응하는 소스의 소스 ID(identification)에 기초하여 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정하는 단계; 및
상기 가중치에 기초하여 상기 복수의 입력 포트들 중에서 어느 하나에 대해 상기 출력 포트를 우선 사용하도록 중재하는 단계
를 포함하는 상호연결을 위한 중재 방법.
1. A method for inter-connecting in a multiprocessor system, the method comprising:
Determining a weight for a plurality of packets stored in a plurality of input ports based on a source ID of a source corresponding to a plurality of packets stored in a history history queue of use competition for an output port; And
And arbitrating to use the output port for any one of the plurality of input ports based on the weight
The interconnection method comprising:
제1항에 있어서,
상기 결정하는 단계는,
상기 소스 ID의 개수에 기초하여 상기 가중치를 계산하는 단계
를 포함하는 상호연결을 위한 중재 방법.
The method according to claim 1,
Wherein the determining comprises:
Calculating the weight based on the number of source IDs
The interconnection method comprising:
제2항에 있어서,
상기 계산하는 단계는,
상기 소스 ID의 개수에 반비례하게 상기 복수의 패킷들에 대한 가중치를 결정하는 단계
를 포함하는 상호연결을 위한 중재 방법.
3. The method of claim 2,
Wherein the calculating step comprises:
Determining a weight for the plurality of packets in inverse proportion to the number of source IDs
The interconnection method comprising:
제2항에 있어서,
상기 계산하는 단계는,
상기 히스토리 큐로부터 상기 소스 ID의 개수를 카운팅하는 단계; 및
카운팅한 카운터 값들을 역변환하여 상기 복수의 패킷들에 대한 가중치를 결정하는 단계
를 포함하는 상호연결을 위한 중재 방법.
3. The method of claim 2,
Wherein the calculating step comprises:
Counting the number of source IDs from the history queue; And
Determining a weight for the plurality of packets by inversely transforming the counted counter values
The interconnection method comprising:
제2항에 있어서,
상기 결정하는 단계는,
상기 소스 ID의 개수를 스와핑(swapping)하여 상기 복수의 패킷들에 대한 가중치를 결정하는 단계
를 포함하는 상호연결을 위한 중재 방법.
3. The method of claim 2,
Wherein the determining comprises:
Determining a weight for the plurality of packets by swapping the number of source IDs
The interconnection method comprising:
제1항에 있어서,
상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하는 단계; 및
상기 히스토리 큐에 저장 공간이 없는 경우 상기 히스토리 큐의 헤드에 저장된 소스 ID를 삭제하고 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하는 단계
를 더 포함하는 상호연결을 위한 중재 방법.
The method according to claim 1,
Storing a source ID of a source corresponding to a packet stored in the history queue of the use competition history in the history queue if there is a storage space in the history queue; And
Deleting the source ID stored in the head of the history queue if the history queue does not have a storage space and storing the source ID of the source corresponding to the packet stored in the history queue in the history queue
The interconnection method further comprising:
제6항에 있어서,
상기 어느 하나에 저장된 패킷에 대응하는 소스 ID의 카운터 값 및 상기 삭제된 소스 ID의 카운터 값 중에서 적어도 하나를 업데이트 하는 단계
를 더 포함하는 상호연결을 위한 중재 방법.
The method according to claim 6,
Updating at least one of a counter value of the source ID corresponding to the packet stored in any one of the packets and a counter value of the deleted source ID
The interconnection method further comprising:
제1항에 있어서,
상기 중재하는 단계는,
상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 단계
를 포함하는 상호연결을 위한 중재 방법.
The method according to claim 1,
Wherein the step of arbitrating comprises:
Arbitrating to use the output port first by performing probability arbitration using the weight and the random number stored in the look-up table
The interconnection method comprising:
멀티 프로세서 시스템 내의 상호연결(inter-connecting)을 중재하기 위한 라우터에 있어서,
복수의 패킷들이 저장된 복수의 입력 포트; 및
출력 포트에 대한 사용 경쟁 히스토리의 히스토리 큐에 저장된 복수의 패킷들에 대응하는 소스의 소스 ID(identification)에 기초하여 상기 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정하고, 상기 가중치에 기초하여 상기 복수의 입력 포트들 중에서 어느 하나에 대해 상기 출력 포트를 우선 사용하도록 중재하는 히스토리 기반 아비터
를 포함하는 라우터.
1. A router for arbitrating inter-connecting in a multiprocessor system,
A plurality of input ports storing a plurality of packets; And
Determining a weight for a plurality of packets stored in the plurality of input ports based on a source ID of a source corresponding to a plurality of packets stored in a history history queue of use competition for an output port, Based arbiter for arbitrarily using the output port for any one of the plurality of input ports based on a history-based arbiter
.
제9항에 있어서,
상기 히스토리 기반 아비터는,
상기 소스 ID(identification)의 개수에 기초하여 상기 가중치를 계산하는 라우터.
10. The method of claim 9,
The history-based arbiter includes:
And calculates the weight based on the number of the source IDs.
제10항에 있어서,
상기 히스토리 기반 아비터는,
상기 소스 ID의 개수에 반비례하게 상기 복수의 패킷들에 대한 가중치를 결정하는 라우터.
11. The method of claim 10,
The history-based arbiter includes:
And determines a weight for the plurality of packets in inverse proportion to the number of the source IDs.
제10항에 있어서,
상기 히스토리 기반 아비터는,
상기 히스토리 큐로부터 상기 소스 ID의 개수를 카운팅하고, 카운팅한 카운터 값들을 역변환하여 상기 복수의 패킷들에 대한 가중치를 결정하는 라우터.
11. The method of claim 10,
The history-based arbiter includes:
And counting the number of source IDs from the history queue and inversely transforming the counted count values to determine a weight for the plurality of packets.
제10항에 있어서,
상기 히스토리 기반 아비터는,
상기 소스 ID의 개수를 스와핑(swapping)하여 상기 복수의 패킷들에 대한 가중치를 결정하는 라우터.
11. The method of claim 10,
The history-based arbiter includes:
And swapping the number of source IDs to determine a weight for the plurality of packets.
제9항에 있어서,
상기 히스토리 기반 아비터는,
상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하고, 상기 히스토리 큐에 저장 공간이 없는 경우 상기 히스토리 큐의 헤드에 저장된 소스 ID를 삭제하고 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 ID를 상기 히스토리 큐에 저장하는 라우터.
10. The method of claim 9,
The history-based arbiter includes:
If there is a storage space in the history queue of the usage competition history, store the source ID of the source corresponding to the packet stored in any one of the history queues in the history queue, and if there is no storage space in the history queue, And stores the source ID of the source corresponding to the packet stored in the one in the history queue.
제9항에 있어서,
상기 히스토리 기반 아비터는,
상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 가중치 계산기
를 포함하는 라우터.
10. The method of claim 9,
The history-based arbiter includes:
And a weight calculator for arbitrating the output port to use the output port by performing probability arbitration using the weight and the random number stored in the look-
.
KR1020170070808A 2017-06-07 2017-06-07 Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same KR101934195B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170070808A KR101934195B1 (en) 2017-06-07 2017-06-07 Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170070808A KR101934195B1 (en) 2017-06-07 2017-06-07 Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same

Publications (2)

Publication Number Publication Date
KR20180133672A KR20180133672A (en) 2018-12-17
KR101934195B1 true KR101934195B1 (en) 2018-12-31

Family

ID=64959434

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170070808A KR101934195B1 (en) 2017-06-07 2017-06-07 Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same

Country Status (1)

Country Link
KR (1) KR101934195B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102474053B1 (en) * 2020-06-22 2022-12-06 주식회사 퓨리오사에이아이 Neural network processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146391A (en) * 2004-11-17 2006-06-08 Hitachi Ltd Multiprocessor system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146391A (en) * 2004-11-17 2006-06-08 Hitachi Ltd Multiprocessor system

Also Published As

Publication number Publication date
KR20180133672A (en) 2018-12-17

Similar Documents

Publication Publication Date Title
CN107078959B (en) System and method for mitigating traffic steering inefficiencies in a distributed uncore fabric
US9734077B2 (en) Sending packets using optimized PIO write sequences without sfences
Adiga et al. Blue Gene/L torus interconnection network
EP3161648B1 (en) Optimized credit return mechanism for packet sends
US9164935B2 (en) Determining when to throttle interrupts to limit interrupt processing to an interrupt processing time period
US11294599B1 (en) Registers for restricted memory
US20180203824A1 (en) Lock-free processing of stateless protocols over rdma
US20170075857A1 (en) Hybrid remote direct memory access
KR20140078756A (en) Processor with efficient work queuing
US11409685B1 (en) Data synchronization operation at distributed computing system
CN113435682A (en) Gradient compression for distributed training
US20150063120A1 (en) Controller area network (can) worst-case message latency with priority inversion
CN113449861A (en) Speculative training using partial gradient update
US11275661B1 (en) Test generation of a distributed system
EP3983950A1 (en) Neural network training in a distributed system
KR101934195B1 (en) Method of arbitrating for inter-connecting within a multi-processor system and apparatuses performing the same
CN108768778B (en) Network delay calculation method, device, equipment and storage medium
US10169260B2 (en) Multiprocessor cache buffer management
US9069919B1 (en) Method and system for arbitration verification
US10997277B1 (en) Multinomial distribution on an integrated circuit
US11119787B1 (en) Non-intrusive hardware profiling
US8769175B2 (en) Adjustment of post and non-post packet transmissions in a communication interconnect
US20150095523A1 (en) Information processing apparatus, data transfer apparatus, and data transfer method
US10990408B1 (en) Place and route aware data pipelining
US12001352B1 (en) Transaction ordering based on target address

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant