KR101869749B1 - 정적 라우터 기반의 코어스 그레인 재구성가능 어레이 - Google Patents

정적 라우터 기반의 코어스 그레인 재구성가능 어레이 Download PDF

Info

Publication number
KR101869749B1
KR101869749B1 KR1020110101459A KR20110101459A KR101869749B1 KR 101869749 B1 KR101869749 B1 KR 101869749B1 KR 1020110101459 A KR1020110101459 A KR 1020110101459A KR 20110101459 A KR20110101459 A KR 20110101459A KR 101869749 B1 KR101869749 B1 KR 101869749B1
Authority
KR
South Korea
Prior art keywords
data
router
routers
processing elements
processing element
Prior art date
Application number
KR1020110101459A
Other languages
English (en)
Other versions
KR20130037101A (ko
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 KR1020110101459A priority Critical patent/KR101869749B1/ko
Priority to US13/645,800 priority patent/US9042392B2/en
Publication of KR20130037101A publication Critical patent/KR20130037101A/ko
Priority to US14/694,420 priority patent/US9507753B2/en
Application granted granted Critical
Publication of KR101869749B1 publication Critical patent/KR101869749B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/06Deflection routing, e.g. hot-potato routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Landscapes

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

Abstract

성능 및 효율면에서 우수한 데이터 전달 구조를 갖는 코어스 그레인 재구성가능 아키텍처가 제공된다. 본 발명의 일 양상에 따른 코어스 그레인 재구성가능 어레이는, 다수의 프로세싱 엘리먼트, 각각의 프로세싱 엘리먼트와 연결되는 라우터, 및 각각의 라우터들 사이에 형성되는 연결 링크를 포함할 수 있다.

Description

정적 라우터 기반의 코어스 그레인 재구성가능 어레이{Coarse-grained reconfigurable array based on a static router}
재구성가능 프로세서 및 재구성가능 프로세서의 피연산자 전달 구조와 관련된다.
통상적으로, 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
재구성 가능 아키텍처의 종류는 여러 가지가 있는데 그 중 코어스 그레인 어레이(Coarse-Grained Array)가 대표적이다. 코어스 그레인 어레이는 여러 개의 프로세싱 유닛으로 이루어진다. 또한 코어스 그레인 어레이 내의 각 프로세싱 유닛은 데이터 전달을 위해 서로 연결된다.
통상적으로 각 프로세싱 유닛은 물리적 와이어(wire)를 통해 직접(directly) 연결된다. 그러나 이러한 직접 연결 구조에 의하면 프로세싱 유닛의 개수가 증가할수록 그 연결 구조 역시 기하급수적으로 증가하는 문제가 있다. 이러한 연결 구조의 증가는 시스템의 크기 증가 및 에너지 소모 증가로 이어진다.
직접 연결 구조의 대안으로, 연결의 수를 줄이고 연결되지 않은 프로세싱 유닛 간에는 중간 프로세싱 유닛을 이용하여 데이터를 전달하는 방식이 등장하게 되었다. 그러나 직접 연결되지 아니한 프로세싱 유닛을 통해 데이터를 전달하면, 그 프로세싱 유닛은 실제 연산에 참여할 수가 없어 전체 성능이 떨어진다.
성능 및 효율면에서 우수한 데이터 전달 구조를 갖는 코어스 그레인 재구성가능 아키텍처가 제공된다.
본 발명의 일 양상에 따른 코어스 그레인 재구성가능 어레이는, 다수의 프로세싱 엘리먼트, 각각의 프로세싱 엘리먼트와 연결되는 라우터, 및 각각의 라우터들 사이에 형성되는 연결 링크를 포함할 수 있다.
본 발명의 다른 양상에 따른 코어스 그레인 재구성가능 어레이는, 다수의 프로세싱 엘리먼트, 각각의 프로세싱 엘리먼트와 연결되는 제 1 라우터와 각각의 제 1 라우터들 사이에 형성되는 제 1 연결 링크를 포함하는 제 1 네트워크, 및 제 1 네트워크와 독립적으로 형성되고, 각각의 프로세싱 엘리먼트와 연결되는 제 2 라우터와 각각의 제 2 라우터들 사이에 형성되는 제 2 연결 링크를 포함하는 제 2 네트워크를 포함할 수 있다.
한편 본 발명의 일 양상에 따라, 각각의 프로세싱 엘리먼트는, 산술 연산 또는 논리 연산을 수행하는 펑션 유니트와 산술 연산 또는 논리 연산과 관련된 데이터를 저장하는 레지스터 파일을 포함할 수 있다.
또한 각각의 라우터는, 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 데이터를 수신하고, 수신된 데이터를 미리 정해진 컴파일 정보에 따라 연결된 프로세싱 엘리먼트 또는 다른 인접한 라우터로 전송하는 것이 가능하다.
개시된 내용에 의하면, CGRA를 구성하는 프로세싱 엘리먼트 간의 데이터를 전달하기 위해 정적 라우터를 사용하기 때문에, 각 프로세싱 엘리먼트는 순수하게 실제 연산에만 사용되고 데이터 전달에는 참여를 하지 않게된다. 따라서 프로세싱 엘리먼트에서의 데이터 전달에 따른 오버헤드를 줄이고 전체 성능을 높일 수가 있다.
또한 실제로 데이터의 전달에 필요한 채널에만 전력이 사용되므로, 에너지 효율성을 높일 수 있다.
나아가 프로세싱 엘리먼트와 라우터의 연결 구조, 각 라우터의 구조가 매우 간단하기 때문에 설계가 간편하고 좋은 확장성(scalability)을 얻을 수가 있다.
더욱이 라우팅을 위한 헤더 또는 라우팅 테이블 등이 없이 간단한 컴파일 정보와 스위칭 구조를 통해 네트워크를 형성하기 때문에 네트워크의 스루풋(throughput)을 높일 수가 있다.
도 1은 본 발명의 일 실시예에 따른 코어스 그레인 재구성가능 어레이의 구성을 도시한다.
도 2는 본 발명의 일 실시예에 따른 프로세싱 엘리먼트와 라우터의 연결 구조를 도시한다.
도 3은 본 발명의 일 실시예에 따른 라우터의 구성을 도시한다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따른 버퍼 배치 구조를 도시한다.
도 5는 본 발명의 다른 실시예에 따른 코어스 그레인 재구성가능 어레이를 도시한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 코어스 그레인 재구성가능 어레이(Coarse-Grained Reconfigurable Array, 이하 CGRA라 함)의 구성을 도시한다.
본 발명의 일 실시예에 따른 CGRA(100)는 다수의 프로세싱 엘리먼트(101a~101p), 각각의 프로세싱 엘리먼트에 연결되는 다수의 라우터(102a~102p), 및 각각의 라우터들을 연결하는 다수의 링크(103a~103x)를 포함할 수 있다.
각각의 프로세싱 엘리먼트(processing element)(101a~101p)는 어떤 작업 또는 태스크를 독립적으로 처리할 수 있다. 예컨대, 프로세싱 엘리먼트 #0(101a)와 프로세싱 엘리먼트 #1(101b)는 서로 의존관계가 없는 두 개의 태스크를 병렬적으로 동시에 처리하는 것이 가능하다.
각각의 프로세싱 엘리먼트(101a~101p)는 펑션 유니트(function unit) 및 레지스터 파일(register file)을 포함할 수 있다. 펑션 유니트는 각종 산술 연산 또는 논리 연산을 수행할 수 있다. 예컨대, 펑션 유니트는 ALU(Arithmetic Logic Unit)가 될 수 있다. 레지스터 파일은 펑션 유니트의 연산과 관련된 각종 데이터를 저장할 수 있다. 예컨대, 레지스터 파일은 펑션 유니트로 입력되는 오퍼랜드(operand) 및/또는 펑션 유니트의 연산 결과 등을 저장할 수 있다.
본 발명의 일 양상에 따라, 각각의 프로세싱 엘리먼트(101a~101p)는 펑션 유니트로만 이루어질 수도 있고, 펑션 유니트와 레지스터 파일로 이루어질 수도 있다.
각각의 라우터(102a~102p)는 각각의 프로세싱 엘리먼트(101a~101p)에 연결된다. 예를 들어, 라우터 #0(102a)은 프로세싱 엘리먼트 #0(101a)에 연결되고, 라우터 #1(102b)은 프로세싱 엘리먼트 #1(101b)에 연결될 수 있다.
각각의 링크(103a~103x)는 각각의 라우터(102a~102p)를 연결한다. 예를 들어, 라우터 #0(102a)과 라우터 #1(102b)은 링크(103a)에 의해 연결될 수가 있다. 각각의 링크(103a~103x)는 물리적인 와이어(wire)에 기초하여 형성될 수 있다.
본 발명의 일 양상에 따라, 각각의 라우터(예컨대, 102a)는 직접 연결된 프로세싱 엘리먼트(또는 자신의 프로세싱 엘리먼트)(예컨대, 101a)로부터 데이터를 수신할 수 있다. 예를 들어, 라우터 #0(102a)의 입력 포트 중 어느 하나와 프로세싱 엘리먼트 #0(101a)의 출력 포트는 서로 연결될 수 있다. 이때, 프로세싱 엘리먼트 #0(101a)은 연산 결과에 대응되는 데이터를 그대로 라우터 #0(102a)로 출력한다. 다시 말해, 프로세싱 엘리먼트(101a)는 라우팅을 위한 헤더 정보와 같은 별도의 정보를 데이터에 부가하지 않고 데이터 자체를 라우터 #0(102a)로 보낸다.
본 발명의 다른 양상에 따라, 각각의 라우터(예컨대, 102a)는 다른 라우터(또는 인접한 라우터, 이웃 라우터)(예컨대, 102e)로부터 데이터를 수신할 수 있다. 예를 들어, 라우터 #0(102a)의 입력 포트 중 어느 하나와 라우터 #4(102e)의 출력 포트 중 어느 하나가 서로 연결될 수 있다. 이때, 라우터 #0(102a) 및 라우터 #4(102e)는 수신된 데이터를 그대로 전달한다. 다시 말해, 라우터 #0(102a) 및 라우터 #4(102e)는 라우팅을 위한 헤더 정보와 같은 별도의 정보를 데이터에 부가하지 않고 데이터 자체를 전송한다.
프로세싱 엘리먼트(예컨대, 101a) 또는 인접한 라우터(예컨대, 102e)로부터 데이터를 수신한 라우터(예컨대, 102a)는 미리 정해진 컴파일 정보에 따라 수신된 데이터를 자신의 프로세싱 엘리먼트(101a) 또는 다른 인접한 라우터(예컨대, 102b)로 전송한다. 다시 말해, 본 실시예에 따라 전달되는 데이터는 일반적인 패킷과 다르게 헤더 정보를 가지고 있지 아니하므로, 각각의 라우터(102a~102p)는 컴파일 과정에서 정해진 소정의 컴파일 정보에 따라 라우팅 경로를 결정한다.
이해를 돕기 위해, 프로세싱 엘리먼트 #0(101a)에서 생성된 데이터가 프로세싱 엘리먼트 #5(이하, PE #5)(101f)로 전송되는 경우를 살펴본다.
프로세싱 엘리먼트 #0(101a)에서 어떤 연산 A가 실행되면,, 그 연산 A에 대응되는 데이터가 생성된다. 프로세싱 엘리먼트 #0(101a)은 생성된 데이터에 별다른 정보(예컨대, 라우팅을 위한 헤더 정보)를 부가하지 않고 그대로 그 데이터를 자신의 라우터, 즉 라우터 #0(102a)으로 보낸다.
한편 이와 별개로, 라우터 #0(102a)은 소정의 컴파일 정보도 수신한다. 여기의 컴파일 정보란 연산 A를 포함하는 코드를 컴파일 할 때 생성되는 구성 정보(configuration information)로서, 그 구성 정보에는 연산 결과가 어디로 전달되어야 하는지가 포함될 수가 있다. 일반적인 라우터의 경우, 수신된 패킷의 헤더 정보와 미리 저장되어 있는 라우팅 테이블을 참조해서 라우팅 경로를 결정함에 반해, 본 실시예에 따른 라우터는 헤더 정보 및/또는 라우팅 테이블 없이 컴파일 단계에서 정해진 구성 정보에 따라 라우팅 경로가 정적(static)으로 정해진다. 다시 말해, 데이터를 수신한 라우터 #0(102a)은 미리 정해진 컴파일 정보에 따라 그 데이터를 라우터 #1(102b)로 전달할 수가 있다. 마찬가지로 라우터 #1(102b) 역시 별도로 수신된 컴파일 정보에 따라 데이터를 라우터 #5(102f)로 전달하고, 라우터 #5(102f) 또한 위 컴파일 정보에 따라 데이터를 자신의 프로세싱 엘리먼트 #5(101f)로 전송할 수가 있다.
도 2는 본 발명의 일 실시예에 따른 프로세싱 엘리먼트와 라우터의 연결 구조를 도시한다.
도 2에서, 프로세싱 엘리먼트(101)는 펑션 유니트(210) 및 레지스터 파일(220)을 포함할 수 있다. 펑션 유니트(210)의 출력 및 레지스터 파일(220)의 출력은 라우터(102)로 입력된다.
라우터(102)의 입력 포트는 프로세싱 엘리먼트(101)의 출력과 연결되는 제 1 입력 포트 세트(201)와 인접한 다른 라우터의 출력과 연결되는 제 2 입력 포트 세트(202)를 포함할 수 있다. 본 실시예에서, 제 2 입력 포트 세트(202)의 N, E, W, S는 네 방향의 입력을 나타낼 수 있다.
라우터(102)의 출력 포트는 프로세싱 엘리먼트(101)의 입력과 연결되는 제 1 출력 포트 세트(203)와 인접한 다른 라우터의 입력과 연결되는 제 2 출력 포트 세트(204)를 포함할 수 있다. 본 실시예에서, 제 2 출력 포트 세트(204)의 N, E, W, S는 네 방향의 출력을 나타낼 수 있다.
본 발명의 일 양상에 따라, 라우터(102)는 6개의 입력 포트 RF, DST, N, E, W, S 중 어느 하나로부터 데이터를 수신할 수 있다. 예컨대, 펑션 유니트(210)의 출력과 연결되는 입력 포트 DST로 데이터가 입력된 경우를 살펴본다. 데이터를 수신한 라우터(102)는 출력 포트 RF, SRC0, SRC1, N, E, W, S 중 어느 하나를 선택하고, 선택된 출력 포트를 통해 수신된 데이터를 전송한다. 이때, 라우터(102)는 수신된 컴파일 정보(205)에 기초하여 출력 포트를 결정할 수가 있다. 컴파일 정보(205)는 컴파일 과정에서 생성된 구성 정보로 별도의 메모리 등에 미리 정의될 수가 있다.
도 3은 본 발명의 일 실시예에 따른 라우터의 구체적인 구성을 도시한다.
도 3에서, 본 실시예에 따른 라우터(300)는 입력부(301), 결정부(302), 및 출력부(303)를 포함할 수 있다.
입력부(301)는 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 데이터를 수신한다. 결정부(302)는 미리 정해진 컴파일 정보(304)에 따라 데이터의 출력 방향을 결정한다. 출력부(303)는 결정된 출력 방향에 따라 데이터를 프로세싱 엘리먼트 또는 다른 인접한 라우터로 출력한다.
본 발명의 일 양상에 따라, 결정부(302)는 다수의 멀티플렉서(MUX)를 포함할 수 있다. 각각의 멀티플렉서는 출력부(303)의 각 출력 포트에 대응될 수 있다. 예컨대, 라우터(300)의 출력 방향 또는 출력 포트가 6개인 경우, 멀티플렉서도 6개가 형성될 수 있다. 각각의 멀티플렉서의 입력은 라우터(300)의 입력 포트에 대응된다. 예컨대, 라우터(300)가 5개의 입력 포트를 갖는 경우, 각 멀티플렉서 역시 5개의 입력을 가질 수가 있다. 각각의 멀티플렉서는 컴파일 정보(304)에 따라 출력을 결정한다.
예컨대, 입력 포트 N으로 데이터가 수신되고, 출력 포트 S로 데이터가 출력되는 경우를 살펴본다. 입력 포트 N으로 수신된 데이터는 각각의 멀티플렉서로 전달된다. 이러한 경우, 컴파일 정보(304)에 따라 출력 포트 S쪽에 연결된 멀티플렉서를 제외하고 나머지는 비활성화된다. 따라서 별도의 헤더 정보 및/또는 라우팅 테이블 없이도 입력 포트 N으로 수신된 데이터가 출력 포트 S로 나갈 수가 있다.
도 3에서는 이해를 돕기 위해 멀티플렉서를 예시하였으나, 결정부(302)의 구성이 반드시 여기에 한정되는 것은 아니다. 예컨대, 결정부(302)는 소정의 컴파일 정보에 따라 어느 하나의 경로를 선택하는 네트워크 스위치 등으로 구성될 수도 있다.
또한 도 3에서는 입력부(301) 및 출력부(303) 모두에 버퍼(buffer)가 형성되는 것을 예시하였으나, 이것은 이해를 돕기 위한 예에 불과한 것으로, 응용예 및 타이밍 제약(timing constraint)에 따라 다양한 버퍼 배치가 가능함은 물론이다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따른 버퍼 배치 구조를 도시한다.
도 4a에서, 버퍼는 라우터의 입력단에만 형성되는 것이 가능하다. 예컨대, 데이터 전송시에 라우터의 입력단에서 1사이클이 소모되도록 설계를 하는 것이 가능하다.
또한 도 4b와 같이, 버퍼가 라우터의 출력단에만 형성되는 것도 가능하다. 이러한 경우, 데이터 전송시에 라우터의 출력단에서 1사이클이 소모되도록 설계를 할 수 있다.
나아가 도 4c와 같이, 입력단에는 프로세싱 엘리먼트와 연결되는 부분에만 버퍼를 두고 나머지는 출력단에 버퍼를 배치하는 것도 가능하다.
이와 같이 라우터 내의 버퍼 또는 레지스터의 배치 구조는 도 4a 내지 도 4c에서 예시된 것 외에도 성능, 시스템의 크기, 및 타이밍 제약에 따라 다양한 배치 구조가 사용될 수 있음은 물론이다.
도 5는 본 발명의 다른 실시예에 따른 코어스 그레인 재구성가능 어레이를 도시한다.
본 실시예에 따른 CGRA(500)는 다수의 프로세싱 엘리먼트(PE), 제 1 네트워크(501), 및 제 2 네트워크(502)를 포함한다.
제 1 네트워크(501)는 각각의 프로세싱 엘리먼트(PE)에 연결되는 다수의 라우터(R)와 라우터간의 링크를 포함할 수 있다. 예컨대, 제 1 네트워크(501)의 구성은 도 1 내지 도 4에서 설명한 라우터 및 링크의 구성과 실질적으로 동일할 수가 있다.
제 2 네트워크(502) 역시 각각의 프로세싱 엘리먼트(PE)에 연결되는 다수의 라우터(R)와 라우터간의 링크를 포함할 수 있다. 예컨대, 제 2 네트워크(502)의 물리적 구성은 제 1 네트워크(501)와 동일할 수가 있다.
제 2 네트워크(502)는 제 1 네트워크(501)와 독립적으로 형성된다. 즉, 임의의 프로세싱 엘리먼트(PE)는 제 1 네트워크(501)를 통해 데이터를 전송할 수도 있고 제 2 네트워크(502)를 통해 데이터를 전송할 수도 있다.
다시 말해, 본 발명의 실시예에 따른 CGRA(예컨대, 도 1의 100)는 라우터에 의해 연결되는 공유된 채널을 통해 각 프로세싱 엘리먼트가 통신을 수행하는데, 어떤 채널이 사용되고 있는 경우 다른 데이터를 그 채널을 통해 전달할 수 없는 경우가 생길 수 있다. 이러한 충돌을 줄이기 위해 도 5와 같이 네트워크(501)(502)를 병렬로 여러 개를 구성함으로써 동일한 방향으로 동시에 여러 개의 데이터가 전달되도록 하는 것이 가능하다.
이상에서 살펴본 것과 같이, 개시된 실시예에 의하면, CGRA를 구성하는 프로세싱 엘리먼트 간의 데이터를 전달하기 위해 정적 라우터를 사용하기 때문에, 각 프로세싱 엘리먼트는 순수하게 실제 연산에만 사용되고 데이터 전달에는 참여를 하지 않게된다. 따라서 프로세싱 엘리먼트에서의 데이터 전달에 따른 오버헤드를 줄이고 전체 성능을 높일 수가 있다.
또한 실제로 데이터의 전달에 필요한 채널에만 전력이 사용되므로, 에너지 효율성을 높일 수 있다.
나아가 프로세싱 엘리먼트와 라우터의 연결 구조, 각 라우터의 구조가 매우 간단하기 때문에 설계가 간편하고 좋은 확장성(scalability)을 얻을 수가 있다.
더욱이 라우팅을 위한 헤더 또는 라우팅 테이블 등이 없이 간단한 컴파일 정보와 스위칭 구조를 통해 네트워크를 형성하기 때문에 네트워크의 스루풋(throughput)을 높일 수가 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
101: 프로세싱 엘리먼트
102: 라우터
103: 연결 링크
301: 입력부
302: 결정부
303: 출력부
501: 제 1 네트워크
502: 제 2 네트워크

Claims (12)

  1. 복수의 프로세싱 엘리먼트;
    상기 복수의 프로세싱 엘리먼트 각각에 각각이 연결되는 복수의 라우터; 및
    상기 복수의 라우터 사이에 형성되는 연결 링크를 포함하고,
    상기 복수의 프로세싱 엘리먼트 각각은,
    연산을 실행하여 생성된 제1 데이터 및 상기 연산을 포함하는 코드를 컴파일할 때 생성되는 제1 컴파일 정보를 자신과 연결된 라우터에 전송하고,
    상기 복수의 라우터는,
    상기 제1 컴파일 정보에 기초하여 상기 제1 데이터의 출력 방향을 결정하는 코어스 그레인 재구성가능 어레이.
  2. 제 1 항에 있어서,
    상기 복수의 프로세싱 엘리먼트 각각은,
    산술 연산 또는 논리 연산을 수행하는 펑션 유니트; 및
    상기 산술 연산 또는 상기 논리 연산과 관련된 데이터를 저장하는 레지스터 파일; 을 포함하는 코어스 그레인 재구성가능 어레이.
  3. 제 1 항에 있어서,
    상기 복수의 라우터는
    자신과 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 제2 데이터를 수신하고,
    상기 수신된 제2 데이터를 상기 제2 데이터와 관련된 미리 정해진 컴파일 정보에 따라 상기 자신과 연결된 프로세싱 엘리먼트 또는 상기 인접한 라우터와 다른 인접한 라우터로 전송하는 코어스 그레인 재구성가능 어레이.
  4. 제 1 항에 있어서,
    상기 복수의 라우터는
    자신과 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 제2 데이터를 수신하는 수신부;
    상기 수신부를 통해 수신된 상기 제2 데이터와 관련된 미리 정해진 컴파일 정보에 따라 상기 데이터의 출력 방향을 결정하는 결정부; 및
    상기 결정된 출력 방향에 따라 상기 제2 데이터를 상기 자신과 연결된 프로세싱 엘리먼트 또는 상기 인접한 라우터와 다른 인접한 라우터로 출력하는 출력부; 를 포함하는 코어스 그레인 재구성가능 어레이.
  5. 제 4 항에 있어서,
    상기 결정부는
    상기 미리 정해진 컴파일 정보에 따라 스케줄되는 복수의 멀티플렉서를 포함하는 코어스 그레인 재구성가능 어레이.
  6. [청구항 6은(는) 설정등록료 납부시 포기되었습니다.]
    제 5 항에 있어서,
    상기 복수의 멀티플렉서의 개수는
    상기 출력 방향의 개수와 동일한 것을 특징으로 하는 코어스 그레인 재구성가능 어레이.
  7. 복수의 프로세싱 엘리먼트;
    상기 복수의 프로세싱 엘리먼트 각각과 연결되는 제 1 라우터들과 각각의 상기 제 1 라우터들 사이에 형성되는 제 1 연결 링크를 포함하는 제 1 네트워크; 및
    상기 제 1 네트워크와 독립적으로 형성되고, 상기 복수의 프로세싱 엘리먼트 각각과 연결되는 제 2 라우터들과 각각의 상기 제 2 라우터들 사이에 형성되는 제 2 연결 링크를 포함하는 제 2 네트워크를 포함하고,
    상기 복수의 프로세싱 엘리먼트 각각은,
    연산을 실행하여 생성된 제1 데이터 및 상기 연산을 포함하는 코드를 컴파일할 때 생성되는 제1 컴파일 정보를 상기 제 1 네트워크에 포함된 제1 라우터들 중 자신과 연결된 제1 라우터 또는 상기 제 2 네트워크에 포함된 제2 라우터들 중 자신과 연결된 제2 라우터에 전송하고,
    상기 제1 라우터 또는 상기 제2 라우터는,
    상기 제1 데이터 및 상기 제1 컴파일 정보를 수신한 때, 상기 제1 컴파일 정보에 기초하여 상기 제1 데이터의 출력 방향을 결정하는 코어스 그레인 재구성가능 어레이.
  8. 제 7 항에 있어서,
    상기 복수의 프로세싱 엘리먼트 각각은,
    산술 연산 또는 논리 연산을 수행하는 펑션 유니트; 및
    상기 산술 연산 또는 상기 논리 연산과 관련된 데이터를 저장하는 레지스터 파일; 을 포함하는 코어스 그레인 재구성가능 어레이.
  9. 제 7 항에 있어서,
    상기 제 1 라우터들 또는 상기 제 2 라우터들은,
    자신과 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 제2 데이터를 수신하고,
    상기 수신된 제2 데이터를 상기 제2 데이터와 관련된 미리 정해진 컴파일 정보에 따라 상기 자신과 연결된 프로세싱 엘리먼트 또는 상기 인접한 라우터와 다른 인접한 라우터로 전송하는 코어스 그레인 재구성가능 어레이.
  10. 제 7 항에 있어서,
    상기 제 1 라우터들 또는 제 2 라우터들은,
    자신과 연결된 프로세싱 엘리먼트 또는 인접한 라우터로부터 제2 데이터를 수신하는 수신부;
    상기 수신부를 통해 수신된 상기 제2 데이터와 관련된 미리 정해진 컴파일 정보에 따라 상기 데이터의 출력 방향을 결정하는 결정부; 및
    상기 결정된 출력 방향에 따라 상기 제2 데이터를 상기 자신과 연결된 프로세싱 엘리먼트 또는 상기 인접한 라우터와 다른 인접한 라우터로 출력하는 출력부; 를 포함하는 코어스 그레인 재구성가능 어레이.
  11. 제 10 항에 있어서,
    상기 결정부는
    상기 미리 정해진 컴파일 정보에 따라 스케줄되는 복수의 멀티플렉서를 포함하는 코어스 그레인 재구성가능 어레이.
  12. [청구항 12은(는) 설정등록료 납부시 포기되었습니다.]
    제 11 항에 있어서,
    상기 복수의 멀티플렉서의 개수는
    상기 출력 방향의 개수와 동일한 것을 특징으로 하는 코어스 그레인 재구성가능 어레이.
KR1020110101459A 2011-10-05 2011-10-05 정적 라우터 기반의 코어스 그레인 재구성가능 어레이 KR101869749B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110101459A KR101869749B1 (ko) 2011-10-05 2011-10-05 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
US13/645,800 US9042392B2 (en) 2011-10-05 2012-10-05 Coarse-grained reconfigurable array based on a static router
US14/694,420 US9507753B2 (en) 2011-10-05 2015-04-23 Coarse-grained reconfigurable array based on a static router

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110101459A KR101869749B1 (ko) 2011-10-05 2011-10-05 정적 라우터 기반의 코어스 그레인 재구성가능 어레이

Publications (2)

Publication Number Publication Date
KR20130037101A KR20130037101A (ko) 2013-04-15
KR101869749B1 true KR101869749B1 (ko) 2018-06-22

Family

ID=48042050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110101459A KR101869749B1 (ko) 2011-10-05 2011-10-05 정적 라우터 기반의 코어스 그레인 재구성가능 어레이

Country Status (2)

Country Link
US (2) US9042392B2 (ko)
KR (1) KR101869749B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101869749B1 (ko) * 2011-10-05 2018-06-22 삼성전자 주식회사 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
CN104750659B (zh) * 2013-12-26 2018-07-20 中国科学院电子学研究所 一种基于自动布线互连网络的粗粒度可重构阵列电路
CN105426274B (zh) * 2015-11-13 2018-12-25 上海交通大学 一种容软错误的粗粒度可重构阵列
CN106326084A (zh) * 2016-08-17 2017-01-11 上海交通大学 一种用于粗粒度可重构阵列的系统级功耗建模方法
US10075392B1 (en) 2017-03-02 2018-09-11 Micron Technology, Inc. Methods and apparatuses for processing multiple communications signals with a single integrated circuit chip
US11055657B2 (en) * 2017-03-02 2021-07-06 Micron Technology, Inc. Methods and apparatuses for determining real-time location information of RFID devices
US11921668B2 (en) * 2020-09-30 2024-03-05 Beijing Tsingmicro Intelligent Technology Co., Ltd. Processor array and multiple-core processor
CN113055060B (zh) * 2021-03-08 2022-04-05 上海交通大学 面向大规模mimo信号检测的粗粒度可重构架构系统
CN113407483B (zh) * 2021-06-24 2023-12-12 重庆大学 一种面向数据密集型应用的动态可重构处理器
WO2023154411A1 (en) * 2022-02-10 2023-08-17 SambaNova Systems, Inc. Aribitration for a network in a reconfigurable data processor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100601881B1 (ko) * 2004-01-28 2006-07-19 삼성전자주식회사 원칩 시스템에서 라우터들간의 라우팅 경로 설정 장치 및방법
US20070124565A1 (en) * 2003-06-18 2007-05-31 Ambric, Inc. Reconfigurable processing array having hierarchical communication network

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7239606B2 (en) * 2001-08-08 2007-07-03 Compunetix, Inc. Scalable configurable network of sparsely interconnected hyper-rings
US7831819B2 (en) 2004-03-31 2010-11-09 Intel Corporation Filter micro-coded accelerator
KR100922965B1 (ko) * 2006-10-10 2009-10-22 삼성전자주식회사 네트워크온칩 장치와 이를 위한 동작 주파수 제어 방법
KR100863080B1 (ko) 2007-03-12 2008-10-13 재단법인서울대학교산학협력재단 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템
DE212007000102U1 (de) * 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
US8270316B1 (en) * 2009-01-30 2012-09-18 The Regents Of The University Of California On-chip radio frequency (RF) interconnects for network-on-chip designs
KR101553652B1 (ko) 2009-02-18 2015-09-16 삼성전자 주식회사 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법
KR101869749B1 (ko) * 2011-10-05 2018-06-22 삼성전자 주식회사 정적 라우터 기반의 코어스 그레인 재구성가능 어레이

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070124565A1 (en) * 2003-06-18 2007-05-31 Ambric, Inc. Reconfigurable processing array having hierarchical communication network
KR100601881B1 (ko) * 2004-01-28 2006-07-19 삼성전자주식회사 원칩 시스템에서 라우터들간의 라우팅 경로 설정 장치 및방법

Also Published As

Publication number Publication date
KR20130037101A (ko) 2013-04-15
US20130089102A1 (en) 2013-04-11
US20150227490A1 (en) 2015-08-13
US9042392B2 (en) 2015-05-26
US9507753B2 (en) 2016-11-29

Similar Documents

Publication Publication Date Title
KR101869749B1 (ko) 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
US9323716B2 (en) Hierarchical reconfigurable computer architecture
US8364844B2 (en) Deadlock-free class routes for collective communications embedded in a multi-dimensional torus network
US20160316001A1 (en) Embedding global barrier and collective in a torus network
US8050256B1 (en) Configuring routing in mesh networks
US8151088B1 (en) Configuring routing in mesh networks
US7856246B2 (en) Multi-cell data processor
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
US8504731B2 (en) Network for interconnecting computers
Effiong et al. Scalable and power-efficient implementation of an asynchronous router with buffer sharing
JP3799041B2 (ja) Vliwプロセッサ
KR100722428B1 (ko) 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조
WO2017111780A1 (en) Apparatus and method for distribution of congestion information in a switch
US20080065859A1 (en) Processor Architecture
Yamada et al. Folded fat H-tree: An interconnection topology for dynamically reconfigurable processor array
EP2962394B1 (en) Switching fabric for embedded reconfigurable computing
Rettkowski et al. Data stream processing in networks-on-chip
Salcic et al. A time predictable heterogeneous multicore processor for hard real-time GALS programs
Frieb Hardware extensions for a timing-predictable many-core processor
Deng et al. Towards Efficient Control Flow Handling in Spatial Architecture via Architecting the Control Flow Plane
Amaresh et al. Performance Analysis of Data Communication Using Hybrid NoC for Low Latency and High Throughput on FPGA
Touzene All-to-all broadcast in hexagonal torus networks on-chip
US20240104049A1 (en) Operation result broadcasting solutions for programmable processing array architectures
Krishnamoorthy et al. Dataflow graph partitioning for optimal spatio-temporal computation on a coarse grain reconfigurable architecture
KR20150002319A (ko) 비대칭형 클러스터 구조의 프로세서

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