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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling 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
아래 실시예들은 멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들에 관한 것이다.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
또한, 멀티 프로세서 시스템(10)은 라우터(router; 500), 입출력 장치(input/output unit; 600) 및 메모리(memory; 700)를 더 포함한다.The
멀티 프로세서 시스템(10)은 복수의 프로세서들(100, 200, 300, 및 400)의 상호연결(inter-conneting)을 위해 프로세서-인터커넥트(processor-interconnect) 기술을 사용한다. 예를 들어, 멀티 프로세서 시스템(10)이 사용하는 프로세서-인터커넥트 기술은 AMD 하이퍼트랜스포트(advanced micro devices hypertransport(AMD HT))일 수 있다.The
복수의 프로세서들(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
각 프로세서(100, 200, 300, 및 400)의 라우터(500)는 사용 경쟁 히스토리에 기초하여 각 프로세서(100, 200, 300, 및 400)에 포함된 소스들, 즉 코어들 간의 통신(예를 들어, 패킷들의 송수신)을 중재할 수 있다.The
즉, 멀티 프로세서 시스템(10)은 사용 경쟁 히스토리 기반의 라우터(500)를 통해 각 프로세서(100, 200, 300, 및 400)에 포함된 코어들 간의 패킷의 송수신을 중재함으로써, 로컬 및 원격 프로세서들을 공정하게 상호 연결할 수 있다.That is, the
도 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
도 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
제1 프로세서(100)와 제2 프로세서(200)는 라우터 멀티 플렉서(router multiplexer; 550)를 포함하는 라우터(500)를 포함한다. 제1 멀티 플렉서(110)는 코어들(C0~C5) 각각으로부터 패킷을 수신할 수 있다. 또한, 제1 멀티 플렉서(110)는 패킷을 제1 프로세서(100)의 라우터(500)로 전송할 수 있다. 예를 들어, 패킷은 코어들(C0~C5) 각각으로부터 출력된 하나 이상의 독립적인 패킷일 수 있다.The
제2 프로세서(200)의 라우터(500)는 패킷을 제1 프로세서(100)의 라우터(500)로 전송할 수 있다. 예를 들어, 패킷은 코어(C6, C7, C8, C9, C10, 또는 C11)로부터 출력된 하나 이상의 독립적인패킷일 수 있다.The
제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
즉, 제1 프로세서(100) 및 제2 프로세서(200)는 라우터(500) 아키텍처(architecture)의 복잡성(complexity)를 최소화하기 위해 외부 컨센트레이션(external concentration) 기술을 사용할 수 있다.That is, the
하지만, 외부 컨센트레이션 기술을 사용하는 경우 로컬 및 원격 프로세서들(100 및 200)은 공정하게 상호연결되어 복수의 패킷들을 송수신할 수 없다.However, when using external congestion techniques, the local and
이하에서는 외부 컨센트레이션 기술을 사용하는 경우에도 로컬 및 원격 프로세서들을 공정하게 상호연결하는 프로세서-인터커넥터 기술을 위한 라우터(500) 및 이의 동작 방법에 대해서 설명한다.The following describes a
도 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
복수의 입력 포트들(510)은 제1 입력 포트(510-1) 내지 제n 입력 포트(510-n)을 포함할 수 있다. 예를 들어, n은 1이상의 자연수일 수 있다.The plurality of
복수의 입력 포트들(510) 각각은 입력 버퍼(input buffer) 또는 가상 채널(virtual channel)을 포함할 수 있다. 예를 들어, 입력 버퍼 또는 가상 채널은 복수의 입력 버퍼들 또는 복수의 가상 채널들일 수 있다.Each of the plurality of
복수의 입력 포트들(510) 각각은 패킷을 수신하여 각각의 입력 버퍼 또는 가상 채널에 패킷들 수신된 순서대로 저장할 수 있다.Each of the plurality of
이때, 복수의 입력 포트들(510) 각각은 복수의 소스들(또는 코어들) 각각에서 전송된 패킷을 수신할 수 있다. 예를 들어, 제1 입력 포트(510-1)은 제1 소스로부터 출력된 패킷을 수신하고, 제2 입력 포트(510-2)는 제2 소스로부터 출력된 패킷을 수신하고, 제n 입력 포트(510-2)는 제n 소스로부터 출력된 패킷을 수신할 수 있다. 제1 소스, 제2 소스, 및 제n 소스는 서로 상이한 코어로, 로컬 프로세서 내 코어 및/또는 원격 프로세서 내 코어일 수 있다.At this time, each of the plurality of
복수의 입력 포트들(510) 각각은 패킷을 수신한 때 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하기 위한 리퀘스트 신호(request signal)를 히스토리 기반 아비터(530)로 출력할 수 있다. 예를 들어, 복수의 입력 포트들(510) 각각으로부터 출력된 리퀘스트 신호는 각 입력 포트(510)에 저장된 패킷에 대응하는 소스의 소스 ID(source identification; 또는 코어 넘버)를 포함할 수 있다.Each of the plurality of
히스토리 기반 아비터(530)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다. 예를 들어, 히스토리 기반 아비터(530)는 라우터 멀티 플렉서(550)에 접속된 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다.일 예로, 히스토리 기반 아비터(530)는 라우터 멀티 플렉서(550)에 접속된 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들(510)에 저장된 패킷들에 대한 가중치를 결정할 수 있다. 이후에, 히스토리 기반 아비터(530)는 가중치에 기초하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재할 수 있다.The history-based
사용 경쟁 히스토리는 라우터 멀티 플렉서(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
예를 들어, 복수의 입력 포트들(510)에 패킷이 차곡차곡 쌓이면, 복수의 입력 포트들(510)은 패킷을 출력하기 위해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하기 위한 경쟁을 한다. 이때, 특정 입력 포트가 경쟁에서 승리하여 출력 포트를 우선적으로 사용하는 경우, 특정 입력 포트에 쌓인 패킷에 대응하는 소스(즉, 패킷을 출력한(또는 생성한) 소스)가 승자로 결정된다. 즉, 사용 경쟁 히스토리는 과거(또는 이전)에 라우터 멀티 플렉서(550)에 접속된 출력 포트를 통해 패킷을 출력하기 위한 경쟁에서 승리한 소스의 승자 히스토리를 의미한다.For example, when packets are piled up on a plurality of
히스토리 기반 아비터(530)는 가중치를 고려한 중재 동작에 반드시 한정되는 것은 아니며, 다양한 요소를 고려한 히스토리에 기반하여 중재 동작을 수행할 수 있다.The history-based
히스토리 기반 아비터(530)는 복수의 입력 포트들(510) 중에서 어느 하나에 대해 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재하는 중재 신호(arbitration signal)를 라우터 멀티 플렉서(550)에 전송할 수 있다.The history-based
라우터 멀티 플렉서(550)는 히스토리 기반 아비터(530)의 제어에 따라, 예를 들어 중재 신호에 응답하여 복수의 입력 포트들(510) 중에서 어느 하나에 저장된 패킷을 우선 출력할 수 있다.The
이에, 복수의 입력 포트들(510) 중에서 어느 하나는 우선적으로 라우터 멀티 플렉서(550)에 접속된 출력 포트를 사용하여 저장된 패킷을 출력할 수 있다.Accordingly, any one of the plurality of
이하에서는 설명의 편의를 위해 가중치를 고려한 중재 기능을 수행하는 히스토리 기반 아비터(530)에 대해서 설명하도록 한다.Hereinafter, for convenience of description, the history-based
도 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
히스토리 기반 아비터(530)는 히스토리 큐(history queue; 531), 카운터(counter; 533) 및 가중치 계산기(weighted calculator; 535)를 포함할 수 있다.The history-based
히스토리 큐(531)는 과거 승자 히스토리들을 저장하기 위한 저장 장치, 예를 들어 큐있다.The
히스토리 큐(531)는 가중치 계산기(535)로부터 전송된 승인 신호(grant signal)에 응답하여 라우터 멀티플렉서(550)에 접속된 출력 포트를 우선적으로 사용하도록 중재된 입력 포트에 저장된 패킷에 대응하는 소스의 소스 ID를 저장할 수 있다. 예를 들어, 히스토리 큐(531)는 각 소스 ID에 대응하는 큐를 포함할 수 있다.In response to the grant signal transmitted from the
승인 신호는 중재된 입력 포트의리퀘스트 신호에 포함된 소스 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
히스토리 큐(531)는 히스토리 큐(531)의 저장 공간에 따라 저장된 소스 ID의 삭제 여부를 결정하고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.The
일 예로, 저장 공간이 있는 경우, 히스토리 큐(531)는 저장된 소스 ID를 삭제하지 않고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.As an example, if there is a storage space, the
다른 예로, 저장 공간이 없는 경우, 히스토리 큐(531)는 히스토리 큐(531)의 헤드(head)에 저장된 소스 ID를 삭제하고, 가중치 계산기(535)로부터 전송된 소스 ID를 저장할 수 있다.As another example, if there is no storage space, the
카운터(533)는 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅한 카운트 값을 가중치 계산기(535)로 출력할 수 있다. 예를 들어, 카운터(533)는 각 소스 ID의 큐에 대응하는 카운터를 포함할 수 있다.The
일 예로, 카운터(533)는 가중치 계산기(535)의 제어에 따라 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅할 수 있다. 예를 들어, 카운터(533)는 히스토리 큐(531)에 저장된 소스 ID들 중에서 리퀘스트 신호에 포함된 소스 ID에 해당하는 소스 ID를 검색할 수 있다. 이후에, 카운터(533)는 검색된 소스 ID의 개수를 카운팅하여 소스 ID의 카운트 값을 계산할 수 있다.For example, the
다른 예로, 카운터(533)는 미리 히스토리 큐(531)에 저장된 각 소스 ID의 개수를 카운팅한 카운트 값들을 저장할 수 있다. 이에, 카운터(533)는 가중치 계산기(535)의 제어에 따라 저장된 카운트 값들 중에서 소스 ID의 카운트 값을 가중치 계산기(535)로 출력할 수 있다.As another example, the
카운터(533)는 기 저장된 각 소스 ID의 카운트 값들을 업데이트할 수 있다.The
일 예로, 카운터(533)는 가중치 계산기(535)로부터 전송된 승인 신호에 응답하여 소스 ID의 카운터 값을 증가시킬 수 있다.In one example, the
다른 예로, 카운터(533)는 히스토리 큐(531)로부터 전송된 삭제 신호(pop signal)에 응답하여 삭제 신호에 포함된 소스 ID의 카운터 값을 감소시킬 수 있다. 이때, 삭제 신호는 히스토리 큐(531)의 헤드에서 삭제된 소스 ID에 대한 정보를 포함할 수 있다.As another example, the
가중치 계산기(535)는 히스토리 기반 아비터(530)의 전반적인 동작을 제어할 수 있다. 예를 들어, 가중치 계산기(535)는 히스토리 큐(531) 및 카운터(533)의 동작을 제어할 수 있다.The
가중치 계산기(535)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 카운터(533)로부터 카운터 값들을 획득할 수 있다. 카운터 값들은 각 입력 포트(510)의 리퀘스트 신호에 포함된 소스 ID의 카운팅 값일 수 있다.The
가중치 계산기(535)는 카운터(533)로부터 출력된 카운터 값들에 기초하여 복수의 입력 포트들(510)에 저장된 복수의 패킷들에 대한 가중치를 결정할 수 있다.The
가중치 계산기(535)는 카운터 값들에 반비례 및/또는 비례하게 가중치를 결정할 수 있다. 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값의 크기와 반대로 각각의 가중치를 결정할 수 있다. 다른 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값을 역변환하여 각각의 가중치를 결정할 수 있다. 또 다른 예를 들어, 가중치 계산기(535)는 소스 ID들의 카운터 값을 스와핑(swapping)하여 가중치를 결정할 수 있다.The
가중치는 수학식 1로 나타낼 수 있다.The weight can be expressed by Equation (1).
수학식 1의 는 소스 ID가 i인 패킷에 대한 소스 ID의 개수를 나타내고, 는 히스토리 큐의 깊이를 나타내고, 는 소스 ID가 i인 패킷에 대한 가중치를 나타낸다.In Equation (1) Represents the number of source IDs for a packet whose source ID is i, Represents the depth of the history queue, Represents a weight for a packet whose source ID is i.
가중치 계산기(535)는 가중치들에 기초하여 복수의 입력 포트들(510) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다.The
예를 들어, 가중치 계산기(535)는 각 가중치를 비교하여 가중치가 가장 큰 복수의 패킷에 대응하는 입력 포트에 대해 출력 포트를 우선 사용하도록 중재할 수 있다.For example, the
가중치 계산기(535)는 각 가중치를 비교하여 복수의 입력 포트들(510)을 중재할 때 확률 중재를 수행할 수 있다. 예를 들어, 가중치 계산기(535)는 각 가중치와 룩-업 테이블(look-up table)에 저장된 랜덤 넘버(random number)를 이용하여 확률 중재를 수행함으로써 복수의 입력 포트들(510) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다. 이때, 랜덤 넘버는 라우터(500) 초기화 시에 미리 생성되어 룩-업 테이블에 저장될 수 있다.The
가중치 계산기(535)는 라우터 멀티 플렉서(550)에 접속된 출력 포트를 우선 사용하도록 중재하는 중재 신호(arbitration signal)를 생성하고, 중재 신호를 라우터 멀티 플렉서(550)로 출력할 수 있다. 또한, 가중치 계산기(535)는 출력 포트를 우선 사용하기 위한 경쟁에서 승리한 소스의 소스 ID를 포함하는 승인 신호를 생성하고, 승인 신호를 히스토리 큐(531) 및/또는 카운터(533)로 출력할 수 있다.The
도 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
도 5를 참조하면, 라우터(500)는 제1 입력 포트(510-1), 제2 입력 포트(510-2), 히스토리 큐(531), 카운터(533), 가중치 계산기(535) 및 라우터 멀티 플렉서(550)를 포함한다.5, the
도 5의 카운터(533)는 히스토리 큐(510)에 저장된 소스 ID들을 검색하는 하드웨어 작업을 단순화하여 구현된 카운터(533)이다.The
각 입력 포트(510-1 및 510-2)는 리퀘스트 신호를 가중치 계산기(535)로 출력한다.Each of the input ports 510-1 and 510-2 outputs a request signal to the
가중치 계산기(535)는 각 입력 포트(510)로부터 출력된 리퀘스트 신호에 응답하여 카운터(533)로부터 각 리퀘스트 신호에 포함된 소스 ID에 대응하는 카운터 값을 획득할 수 있다. The
가중치 계산기(535)는 각 카운터 값에 기초하여 입력 포트들(510-1, 510-2)에 저장된 패킷들에 대한 가중치를 결정할 수 있다.The
가중치 계산기(535)는 가중치에 기초하여 입력 포트들(510-1, 510-2) 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재 신호를 생성하고, 중재 신호를 라우터 멀티 플렉서(550)로 출력할 수 있다. 또한, 가중치 계산기(535)는 출력 포트를 우선 사용하기 위한 경쟁에서 승리한 어느 입력 포트에 저장된 패킷에 대응하는 소스의 소스 ID를 포함하는 승인 신호를 생성하고, 승인 신호를 히스토리 큐(531) 및 카운터(533)로 출력할 수 있다.The
이에, 라우터 멀티 플렉서(550)는 중재 신호에 응답하여 제1 입력 포트(510-1) 및 제2 입력 포트(510-2) 중에서 어느 하나에 저장된 패킷을 우선 출력하고, 히스토리 큐(531)는 승인 신호에 응답하여 저장된 승자 히스토리에 해당하는 소스 ID를 삭제 또는 삭제하지 않고, 승인 신호에 포함된 소스 ID를 저장한다. 이때, 히스토리 큐는 소스 ID를 삭제하는 경우 삭제 신호를 카운터(533)에 전송한다.The
단순화된 카운터(533)는 승인 신호 및 삭제 신호에 응답하여 승인 신호 및 삭제 신호에 대응하는 소스 ID의 카운터 값을 증가 및/또는 감소하여 업데이트를 수행한다.The
도 6a 내지 도 6c를 참조하여 가중치 계산기(535)의 가중치 연산에 대해 상세히 설명하도록 한다.The weight calculation of the
도 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
하지만, 도 6a의 가중치 계산기(535)의 역변환에 대한 연산은 하드웨어적으로 높은 비용을 요구한다. 이에, 도 6b 및 도 6c는 스와핑(swapping)을 통해 역변환에 대한 연산의 높은 비용을 최소화할 수 있다.However, the operation on the inverse transformation of the
도 6b의 가중치 계산기(535)는 제1 입력 포트(510-1) 및 제2 입력 포트(510-2)에 포함된 패킷에 대응하는 소스의 소스 ID의 카운트 값을 스와핑(swapping)하여 가중치를 결정한다. 이때, 가중치 계산기(535)는 확률 중재를 수행함으로써 각 입력 포트(510-1 및 510-2)를 중재할 수 있다.The
도 6c는 도 6a의 가중치 계산기(535)가 수행하는 확률 중재를 상세하게 도시한 도면이다. 도 6c의 가중치 계산기(535)는 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행한 중재 신호를 라우터 멀티 플렉서(550)로 전송할 수 있다.FIG. 6C is a diagram illustrating in detail the probability arbitration performed by the
도 6a 내지 도 6c에서 가중치 계산기(535)의 가중치 결정에 대한 연산을 경량화하는 방법을 도시하고, 설명하였지만, 반드시 이에 한정되는 것은 아니고, 가중치 연산 동작 및 연산을 경량화하는 방법은 다양할 수 있다.6A to 6C illustrate and illustrate a method of weighting an operation for weight determination of the
도 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
라우터(500)는 출력 포트에 대한 사용 경쟁 히스토리에 기초하여 복수의 입력 포트들에 저장된 복수의 패킷들에 대한 가중치를 결정할 수 있다(S730).The
라우터(500)는 복수의 패킷들에 대한 가중치에 기초하여 복수의 입력 포트들 중에서 어느 하나에 대해 출력 포트를 우선 사용하도록 중재할 수 있다(S750).The
라우터(500)는 중재된 입력 포트에 저장된 패킷을 출력 포트에 출력할 수 있다(S770).The
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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)
출력 포트에 대한 사용 경쟁 히스토리의 히스토리 큐에 저장된 복수의 패킷들에 대응하는 소스의 소스 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:
상기 결정하는 단계는,
상기 소스 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:
상기 계산하는 단계는,
상기 소스 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:
상기 계산하는 단계는,
상기 히스토리 큐로부터 상기 소스 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:
상기 결정하는 단계는,
상기 소스 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:
상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 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:
상기 어느 하나에 저장된 패킷에 대응하는 소스 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:
상기 중재하는 단계는,
상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 단계
를 포함하는 상호연결을 위한 중재 방법.
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:
복수의 패킷들이 저장된 복수의 입력 포트; 및
출력 포트에 대한 사용 경쟁 히스토리의 히스토리 큐에 저장된 복수의 패킷들에 대응하는 소스의 소스 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
.
상기 히스토리 기반 아비터는,
상기 소스 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.
상기 히스토리 기반 아비터는,
상기 소스 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.
상기 히스토리 기반 아비터는,
상기 히스토리 큐로부터 상기 소스 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.
상기 히스토리 기반 아비터는,
상기 소스 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.
상기 히스토리 기반 아비터는,
상기 사용 경쟁 히스토리의 히스토리 큐에 저장 공간이 있는 경우 상기 어느 하나에 저장된 패킷에 대응하는 소스의 소스 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.
상기 히스토리 기반 아비터는,
상기 가중치와 룩-업 테이블에 저장된 랜덤 넘버를 이용하여 확률 중재를 수행함으로써 상기 출력 포트를 우선 사용하도록 중재하는 가중치 계산기
를 포함하는 라우터.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-
.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102474053B1 (en) * | 2020-06-22 | 2022-12-06 | 주식회사 퓨리오사에이아이 | Neural network processor |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006146391A (en) * | 2004-11-17 | 2006-06-08 | Hitachi Ltd | Multiprocessor system |
-
2017
- 2017-06-07 KR KR1020170070808A patent/KR101934195B1/en active IP Right Grant
Patent Citations (1)
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 |