KR101515568B1 - 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 - Google Patents

재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 Download PDF

Info

Publication number
KR101515568B1
KR101515568B1 KR1020090008559A KR20090008559A KR101515568B1 KR 101515568 B1 KR101515568 B1 KR 101515568B1 KR 1020090008559 A KR1020090008559 A KR 1020090008559A KR 20090008559 A KR20090008559 A KR 20090008559A KR 101515568 B1 KR101515568 B1 KR 101515568B1
Authority
KR
South Korea
Prior art keywords
node
processing element
processing
flow graph
data flow
Prior art date
Application number
KR1020090008559A
Other languages
English (en)
Other versions
KR20100089350A (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 KR1020090008559A priority Critical patent/KR101515568B1/ko
Priority to US12/697,602 priority patent/US8745608B2/en
Publication of KR20100089350A publication Critical patent/KR20100089350A/ko
Application granted granted Critical
Publication of KR101515568B1 publication Critical patent/KR101515568B1/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Logic Circuits (AREA)

Abstract

재구성 가능 어레이의 스케줄링 기술이 개시된다. 본 발명의 일 양상에 따르면, 재구성 가능 어레이에서 루프 연산을 실행하고자 하는 경우, 루프 연산 속도를 높이기 위해 루프 연산에 관한 데이터 플로우 그래프 상에서 리커런스 노드, 프로듀서 노드, 및 전임 노드를 검출하여 이러한 노드들에 우선적으로 자원이 할당되도록 하고, 할당되는 자원에 정해진 딜레이를 갖고 있는 전용 경로를 추가하는 것이 가능하다.
재구성 가능 어레이(reconfigurable array), 코어스 그레인 어레이(coarse-grained array), 루프 가속화(loop acceleration), 소프트웨어 파이프라이닝(software pipelining), 데이터 플로우 그래프(data flow graph), 리커런스(recurrence)

Description

재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치{Apparatus and method for scheduling instruction processed in reconfigurable array, and computing device using these}
소프트웨어 파이프라이닝을 이용한 루프 가속화 기술과 관련된다. 특히, 재구성 가능 어레이를 이용하여 루프 연산을 수행하는 경우, 루프 연산 속도를 높이기 위한 기술과 관련된다.
통상적으로, 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에 서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
한편, 디지털 신호 처리 과정은 그 신호 처리 특성 상 동일한 작업이 반복되는 루프 연산 과정을 다수 포함하는 것이 일반적이다. 일반적으로, 루프 연산 속도를 높이기 위해서 루프 레벨 병렬화(loop level parallelism, LLP)가 많이 이용된다. 이러한 LLP로는 소프트웨어 파이프라이닝(software pipelining)이 대표적이다.
소프트웨어 파이프라이닝은 서로 다른 루프 바디(loop body)에 속해있는 오퍼레이션이라도 그 루프 바디(loop body)간의 의존성이 없으면 각각의 오퍼레이션을 동시에 처리할 수 있는 원리를 이용한 것이다. 이러한 소프트웨어 파이프라이닝은 재구성 가능 어레이와 결합하면서 더 좋은 성능을 낼 수 있다. 예를 들어, 병렬 처리가 가능한 오퍼레이션들이 재구성 가능 어레이를 구성하는 각각의 프로세싱 유닛에서 동시에 처리되는 것이 가능하다.
그런데, 재구성 가능 어레이의 구조적인 특징(resource 제약) 및 루프의 각 반복(iteration) 간의 의존성(recurrence 제약)으로 인해 루프 가속화를 위한 소프트웨어 파이프라이닝을 적절하게 적용하기에는 어려움이 따른다. 즉, 루프 연산 속도를 높이기 위해 재구성 가능 어레이의 자원을 어떻게 할당하고 스케줄링 하여야 할지 문제된다.
본 명세서에서는, 재구성 가능 어레이에서 루프 연산을 실행하는 경우, 루프 연산 속도를 극대화하기 위한 스케줄링 기법 및 재구성 가능 어레이의 하드웨어적 구성이 개시된다.
보다 구체적으로, 본 발명의 일 양상에 따른 스케줄러는 다수의 프로세싱 엘리먼트를 구비하는 재구성 가능 어레이의 스케줄러에 있어서, 재구성 가능 어레이에서 실행될 명령에 관한 데이터 플로우 그래프에 기초하여, 명령의 실행 순서 또는 의존 관계를 분석하는 분석부; 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드를 검출하는 제 1 처리부; 데이터 플로우 그래프에서 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 검출하고, 프로듀서 노드를 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일과 연결된 제 1 프로세싱 엘리먼트로 매핑하는 제 2 처리부; 및 데이터 플로우 그래프에서 프로듀서 노드의 전임 노드를 검출하고, 전임 노드를 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트로 매핑하는 제 3 처리부; 를 포함할 수 있다.
또한, 본 발명의 일 양상에 따른 스케줄링 방법은 다수의 프로세싱 엘리먼트를 구비하는 재구성 가능 어레이에서 실행될 명령을 스케줄링하는 방법에 있어서, 명령에 관한 데이터 플로우 그래프에 기초하여, 명령의 실행 순서 또는 의존 관계를 분석하는 단계; 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드를 검출하는 단계; 데이터 플로우 그래프에서 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 검출하고, 프로듀서 노드를 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일과 연결된 제 1 프로세싱 엘리먼트로 매핑하는 단계; 및 데이터 플로우 그래프에서 프로듀서 노드의 전임 노드를 검출하고, 전임 노드를 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트로 매핑하는 단계; 를 포함할 수 있다.
또한, 본 발명의 일 양상에 따른 컴퓨팅 장치는 다수의 프로세싱 엘리먼트; 및 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일;을 포함하며, 프로세싱 엘리먼트는 중앙 레지스터 파일과 연결되는 제 1 프로세싱 엘리먼트와 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트를 포함하고, 실행될 명령에 관한 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드가 존재하는 경우, 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 제 1 프로세싱 엘리먼트에 매핑하고, 프로듀서 노드의 전임 노드를 제 2 프로세싱 엘리먼트로 매핑하는 것이 가능하다.
그리고 본 발명의 일 양상에 따라, 제 1 프로세싱 엘리먼트와 제 2 프로세싱 엘리먼트는 정해진 딜레이를 갖는 전용 경로로 연결되는 것이 가능하다. 이러한 전용 경로는 제 1 프로세싱 엘리먼트 및 제 2 프로세싱 엘리먼트 사이에 형성된 싱글 레지스터가 될 수 있다.
그리고 본 발명의 일 양상에 따라, 제 1 프로세싱 엘리먼트는 중앙 레지스터 파일에 직접 접근할 수 있는 인접한 프로세싱 엘리먼트들을 포함할 수 있다.
그리고 본 발명의 일 양상에 따라, 제 1 처리부는 리커런스 노드를 중앙 레지스터 파일에 매핑하는 것이 가능하다. 이때, 리커런스 노드의 초기 단계 및 후기 단계 사이의 시간 간격을 계산된 최소 반복 간격(minimum iteration interval)만큼 고정한 후 매핑하는 것이 가능하다.
그리고 본 발명의 일 양상에 따라, 제 2 처리부 및 제 3 처리부는 위에서 계산된 최소 반복 간격 이내의 딜레이를 부여하여 각 노드를 매핑하는 것이 가능하다.
개시된 내용에 따르면,
루프 가속화에 장애가 되는 리커런스 노드를 검출하고, 리커런스 노드 및 리커런스 노드와 연관된 프로듀서 노드/전임 노드를 우선적으로 매핑하기 때문에 그 이외의 다른 노드들의 스케줄링 자유도를 높이고 루프 연산 속도를 높이는 것이 가능하다.
또한, 프로듀서 노드와 전임 노드를 매핑할 때, 정해진 딜레이를 갖는 전용 경로에 관한 요소가 추가적으로 고려되기 때문에 소프트웨어 파이프라이닝의 제약을 극복하는 것이 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다. 후술되는 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 장치를 도시한다.
도 1을 참조하면, 컴퓨팅 장치(100)는 재구성 가능 어레이(101), 스케줄러(102), 메모리(103)를 포함한다.
도 1에서, 컴퓨팅 장치(100)는 디지털 데이터를 원하는 응용 프로그램에 따라 가공하고 처리하는 기능을 수행한다. 예컨대, 컴퓨팅 장치(100)는 오디오, 비디오, 이미지 등의 디지털 데이터를 처리하는 DSP(digital signal processor)가 될 수 있다.
컴퓨팅 장치(100)에서 실행되는 연산은 여러 가지가 있다. 예컨대, 컴퓨팅 장치(100)를 DSP로 사용하는 경우, 루프(loop) 연산이 자주 실행될 수가 있다. 이러한 루프 연산이 컴퓨팅 장치(100)에서 실행되는 경우, 컴퓨팅 장치(100)는 소프트웨어 파이프라이닝(software pipelining)을 이용하여 루프 연산 속도를 높이는 것이 가능하다.
재구성 가능 어레이(reconfigurable array)(101)는 다수의 프로세싱 엘리먼트를 포함한다. 루프 가속화와 관련하여, 다수의 프로세싱 엘리먼트는 루프 연산을 병렬 처리하는 것이 가능하다.
예컨대, 루프는 그 특성 상 루프 바디(loop body) 또는 이터레이션(iteration)이 여러 번 반복되는 것으로 볼 수 있는데, 각 루프 바디 또는 이터레이션에 속하는 명령들이 서로 다른 프로세싱 엘리먼트에 매핑되고, 각 프로세싱 엘리먼트가 동시에 동작함으로써 루프 연산의 속도를 높이는 것이 가능하다.
그리고, 재구성 가능 어레이(101)는 특정 루프 연산에 최적화되도록 자신의 하드웨어적 구성을 변경하는 것이 가능하다. 예를 들어, 재구성 가능 어레이(101)는 다수의 프로세싱 엘리먼트들 간의 연결 상태를 변경하여 특정 작업에 최적화될 수 있다. 이러한 재구성 가능 어레이(101)로는 코어스 그레인 어레이(Coarse-Grained Array)가 사용될 수 있다.
스케줄러(102)는 재구성 가능 어레이(101)에서 실행될 명령을 분석하여 적절한 프로세싱 엘리먼트들을 명령에 할당해준다.
본 명세서에서, 명령이란 프로세싱 엘리먼트에서 실행되는 오퍼레이션(operation) 또는 인스트럭션(instruction)을 의미할 수 있다. 예를 들어, 명령이란 루프 바디 또는 이터레이션을 구성하는 다수의 오퍼레이션 또는 인스트럭션이 될 수 있다.
또한, 스케줄러(102)는 프로세싱 엘리먼트들을 명령에 할당해 줄 때, 소프트웨어 파이프라이닝을 위하여 반복되는 루프 바디 또는 이터레이션들이 MII(minimum iteration distance)만큼의 start offset을 가지도록 스케줄링을 하는 것이 가능하다.
또한, 스케줄러(102)는 데이터 플로우 그래프(data flow graph)를 통해 명령의 실행 순서 또는 의존 관계를 파악하고, 루프 연산 속도를 극대화시킬 수 있는 방향으로 적절하게 프로세싱 엘리먼트를 할당하는 것이 가능하다.
도 2는 본 발명의 일 실시 예에 따른 재구성 가능 어레이를 도시한다.
도 2를 참조하면, 재구성 가능 어레이(101)는 다수의 프로세싱 엘리먼트(201), 구성 메모리(202), 중앙 레지스터 파일(203)을 포함한다.
각각의 프로세싱 엘리먼트(예컨대, 204)는 특정한 명령을 실행하는 것이 가능하며, 계산 유닛(function unit), 또는 레지스터 파일(register file)을 포함할 수 있다.
구성 메모리(202)는 프로세싱 엘리먼트들(201) 간의 연결 상태(205)에 관한 정보를 저장한다. 예컨대, 구성 메모리(202)에 저장된 정보에 따라 프로세싱 엘리먼트들(201) 간의 연결 상태(205)가 변경되는 것이 가능하다.
본 실시예에서, 연결 상태(205)는 점선으로 표시되었다. 이것은 프로세싱 엘리먼트들(201)이 모두 연결되지 않고 부분적으로만 연결되는 것을 의미한다. 물론, 모든 프로세싱 엘리먼트들(201)이 서로 연결되어 있다면 스케줄링의 제약은 줄일 수 있을 것이다. 그러나 이렇게 되면 그 성능이 매우 떨어지기 때문에 프로세싱 엘리먼트들(201) 간의 연결 상태(205)는 부분적인 것으로 가정한다.
중앙 레지스터 파일(203)은 프로세싱 엘리먼트들(201) 간의 데이터 전달을 위한 것으로, 명령 실행 시 필요한 각종 데이터를 저장한다. 예를 들어, 각각의 프로세싱 엘리먼트(예컨대, 204)는 중앙 레지스터 파일(203)에 접속하여 명령 실행 시 사용되는 데이터를 읽거나 쓰는 것이 가능하다. 다만, 앞서 설명하였듯이, 모든 프로세싱 엘리먼트들(201)이 서로 연결되는 것이 아니기 때문에 특정 프로세싱 엘리먼트의 경우에는 중앙 레지스터 파일(203)에 접속하기 위해 다른 프로세싱 엘리먼트를 경유할 수도 있다.
본 실시예에서, 프로세싱 엘리먼트들(201)은 제 1 프로세싱 엘리먼트(206)와 제 2 프로세싱 엘리먼트(207)로 구분되는 것이 가능하다.
제 1 프로세싱 엘리먼트(206)는 중앙 레지스터 파일(203)에 직접 엑세스할 수 있는 프로세싱 엘리먼트들을 말하며, 제 2 프로세싱 엘리먼트(207)는 제 1 프로세싱 엘리먼트(206)를 제외한 나머지 프로세싱 엘리먼트가 될 수 있다. 예를 들어, 제 1 프로세싱 엘리먼트(206)는 중앙 레지스터 파일(203)에 인접한 첫 번째 열(row)의 프로세싱 엘리먼트들이 될 수 있다.
그리고, 제 1 프로세싱 엘리먼트(206)들 중 적어도 어느 하나의 프로세싱 엘리먼트는 제 2 프로세싱 엘리먼트(207)들 중 적어도 어느 하나의 프로세싱 엘리먼트와 전용 경로(예컨대, 208)로 연결된다.
도 2에서, 208은 이러한 전용 경로들을 나타낸다. 전용 경로(208)는 프로세싱 엘리먼트들이 중앙 레지스터 파일(203)에 의하지 않고도 직접 데이터를 교환할 수 있도록 하는 연결 통로를 제공한다. 이때, 각각의 전용 경로(208)는 고유한 딜레이(delay)를 갖는 것이 가능하다.
따라서, 본 실시 예에 따른 스케줄러(102)가 각각의 명령을 각각의 프로세싱 엘리먼트들에 매핑할 때 전용 경로(208)가 가지고 있는 딜레이를 고려하여 타임 스케줄링을 하는 것이 가능하다. 또한, 명령의 실행 순서 또는 의존 관계를 고려하여 각각의 명령에 프로세싱 엘리먼트를 할당 할 때, 중앙 레지스터 파일(203)에 직접 접근할 수 있는 제 1 프로세싱 엘리먼트(206)까지 항상 접근 가능한 경로를 미리 확보하여 스케줄링을 하는 것이 가능하다.
도 3은 본 발명의 일 실시예에 따른 스케줄러를 도시한다.
도 3을 참조하면, 스케줄러(102)는 분석부(300), 제 1 처리부(301), 제 2 처 리부(302), 제 3 처리부(303)를 포함한다.
분석부(300)는 재구성 가능 어레이(101)에서 실행될 명령에 관한 데이터 플로우 그래프(data flow graph)에 기초하여, 명령의 실행 순서 또는 의존 관계를 분석한다.
스케줄러(102)는 분석된 명령의 실행 순서 또는 의존 관계를 고려하여 데이터 플로우 그래프 상의 각 노드를 중앙 레지스터 파일(203) 또는 프로세싱 엘리먼트(201)들에 매핑하므로, 이해를 돕기 위해, 데이터 플로우 그래프에 대해 먼저 살펴보기로 한다.
도 4는 본 발명의 일 실시예에 따른 데이터 플로우 그래프를 도시한다.
도 4를 참조하면, 데이터 플로우 그래프(400)는 명령의 흐름과 각 명령 간의 관계를 노드(node)와 에지(edge)를 이용하여 표현함을 알 수 있다. 이때, 각각의 노드는 명령 또는 명령 실행 시 필요한 특정 값을 나타내며, 에지는 노드 간의 의존 관계를 나타낸다.
노드는 오퍼레이션 노드(operation node)와 레지스터 노드(register node)로 구분할 수 있다. 오퍼레이션 노드는 어떠한 동작이 실제로 수행되는 부분을 말하며, 레지스터 노드는 오퍼레이션 노드에 제공되는 초기 값을 의미한다. 또한, 레지스터 노드는 노멀 노드(normal node)와 리커런스 노드(recurrence node)로 구분할 수 있다. 이 중 리커런스 노드는 입력 및 출력으로 동시에 사용되는 노드를 의미한다.
도 4에서, A 노드(401), B 노드(402) 및 E 노드(405)는 레지스터 노드에 해 당하고, C 노드(403) 및 D 노드(404)는 오퍼레이션 노드에 해당한다. 예를 들어, C 노드(403)는 A 노드(401)에 주어진 값과 B 노드(402)에 주어진 값을 더하는 노드가 될 수 있다. 또한, D 노드(404)는 C 노드(403)의 결과 값과 E 노드(405)에 주어진 값을 더하는 노드가 될 수 있다.
이 중 A 노드(401)를 살펴보면, A 노드(401)는 C 노드(403)의 입력으로 사용됨과 동시에 D 노드(404)의 출력으로 사용되는 것을 알 수 있다. 이와 같이, 데이터 플로우 그래프(400)에서 입력 및 출력으로 동시에 사용되는 노드를 리커런스 노드라 정의한다. 이러한 리커런스 노드는, 예컨대, a=a+3과 같은 명령이 수행될 때 발생될 수 있다.
또한, 본 실시예에서, 프로듀서(producer) 노드는 이러한 리커런스 노드에 값을 기록하는 노드, 즉 D 노드(404)로 정의 될 수 있으며, 전임(predecessor) 노드는 프로듀서 노드의 이전 노드 중 리커런스 노드 쪽의 오퍼레이션 노드, 즉 C 노드(403)로 정의 될 수 있다.
본 실시예에 따라, 스케줄러(102)는 각각의 노드를 중앙 레지스터 파일(203) 또는 프로세싱 엘리먼트들(201)에 매핑하는 것이 가능하다. 예를 들어, 오퍼레이션 노드는 프로세싱 엘리먼트들(201)에, 레지스터 노드는 중앙 레지스터 파일(203)에 매핑될 수 있다.
그런데, 루프 연산의 특성 상 리커런스 노드는 이전 이터레이션의 출력이 다음 이터레이션의 입력으로 동시에 사용되기 때문에, 노드의 순위에 따라 각 노드 간의 딜레이만 체크하여 자원(예컨대, 중앙 레지스터 파일(203) 및 프로세싱 엘리 먼트들(201))을 할당하기에는 여러 가지 제약이 따른다.
스케줄링 매핑 측면에서, 리커런스 노드는 이터레이션 간의 값을 전달하기 위한 일종의 communication channel로서의 역할을 담당한다. 따라서, 리커런스 노드는 중앙 레지스터 파일(203)에 매핑되는 것이 가능하다. 그런데, 앞서 살펴보았듯이, 재구성 가능 어레이(201)의 연결 상태(205)가 부분적이기 때문에 리커런스 노드에 데이터를 기록하는 프로듀서 노드는 임의의 프로세싱 엘리먼트가 될 수 없고 특별한 조건을 만족하는 프로세싱 엘리먼트가 되어야만 하는 제약이 따른다.
또한, 스케줄링 타이밍 측면에서, 리커런스 노드는 이전 이터레이션의 출력이 다음 이터레이션의 입력으로 사용되기 때문에 다음 이터레이션이 시작되는 시점에 이미 이전 이터레이션의 결과가 반영되어야 한다. 이것은 프로듀서 노드와 전임 노드 간의 스케줄 마진(Margie)이 상당이 작은 것을 의미한다. 따라서 프로듀서 노드를 매핑하는 시점에 고정된 딜레이를 미리 알 수 있는 경로를 따로 확보하여야 하는 제약이 따른다.
본 실시예에서, 이러한 제약은 스케줄러(102)의 스케줄링 및 재구성 가능 어레이(101)의 지정 경로(208)에 의해 극복되는 것이 가능하다.
다시 도 3으로 돌아가서 이를 구체적으로 설명한다.
도 3에서, 제 1 처리부(301)는 데이터 플로우 그래프(400)에서 리커런스 노드(예컨대, 403)를 검출한다. 그리고 검출된 리커런스 노드(403)를 중앙 레지스터 파일(203)에 매핑한다. 이때, 제 1 처리부(301)는 리커런스 노드의 초기 단계 및 후기 단계 사이의 시간 간격을 MII 만큼 확보하여 매핑하는 것이 가능하다. 리커런 스 노드의 값은 계속 변하므로, 초기 단계란 이터레이션의 입력으로 사용될 당시의 노드를 의미하고, 후기 단계란 이터레이션의 출력으로 사용될 당시의 노드를 의미할 수 있다.
제 2 처리부(302)는 프로듀서 노드(예컨대, 404)를 검출한다. 그리고 검출된 프로듀서 노드(404)를 제 1 프로세싱 엘리먼트(206) 중 임의의 프로세싱 엘리먼트에 매핑한다. 예컨대, 제 2 처리부(302)는 프로듀서 노드를 중앙 레지스터 파일(203)과 직접 연결된 프로세싱 엘리먼트에 할당하는 것이 가능하다.
제 3 처리부(303)는 전임 노드(예컨대, 403)를 검출한다. 그리고 검출된 전임 노드(403)를 제 2 프로세싱 엘리먼트(207) 중 제 1 프로세싱 엘리먼트(206)와 전용 경로(208)로 연결된 프로세싱 엘리먼트에 매핑한다.
도 5는 본 발명의 일 실시예에 따른 스케줄러에 의한 자원 매핑 및 스케줄링 타임을 도시한다.
도 5를 참조하면, 501은 각각의 노드를, 502는 각각의 노드에 매핑된 자원을, 503은 각각의 노드의 스케줄링 타임을 나타낸다.
도 5에서, 리커런스 노드는 중앙 레지스터 파일(CRF)에 매핑되는 것을 알 수 있다. 이때, 리커런스 노드는 초기 상태와 후기 상태를 가지므로, 도 5에서는 두 개의 리커런스 노드를 표현하였다. 그리고, 프로듀서 노드는 첫 번째 열의 프로세싱 엘리먼트로, 전임 노드는 첫 번째 열의 프로세싱 엘리먼트에 접근 가능한 프로세싱 엘리먼트로 매핑되는 것을 알 수 있다.
예컨대, 프로듀서 노드는 중앙 레지스터 파일(203)에 직접 접근할 수 있는 제 1 프로세싱 엘리먼트(206)로 매핑될 수 있고, 전임 노드는 제 1 프로세싱 엘리먼트(206)와 전용 경로(208)로 연결된 제 2 프로세싱 엘리먼트(207)로 매핑되는 것이 가능하다.
스케줄링 타임을 살펴보면, 리커런스 노드의 초기 단계의 스케줄 타임(Tin)과 후기 단계의 스케줄 타임(Tout)은 반복 간격(iteration interval)만큼의 딜레이를 갖도록 미리 고정되는 것을 알 수 있다. 여기서 반복 간격만큼의 딜레이는 소프트웨어 파이프라이닝 기법 중 하나인 modulo scheduling을 이용하여 계산된 MII가 될 수 있다.
그리고, 프로듀서 노드에 매핑되는 프로세싱 엘리먼트와 전임 노드에 할당되는 프로세싱 엘리먼트는 정해진 딜레이를 갖는 전용 경로를 통해 연결되기 때문에, 각 노드의 딜레이(예컨대, Td2, Td1)는 주어진 MII 내에서 적절하게 타임 스케줄링이 가능한 것을 알 수 있다.
이와 같이, 재구성 가능 어레이(101)는 전용 경로(208)를 통해 각 노드가 매핑되는 시점에 static하게 딜레이를 알 수 있는 자원을 확보하고, 스케줄러(102)는 이러한 자원을 이용하여 루프 연산 속도를 최대한으로 높일 수 있는 방향으로 각각의 자원을 명령에 할당함으로써 소프트웨어 파이프라이닝의 제약을 극복하는 것이 가능하다.
도 6은 본 발명의 일 실시예에 따른 전용 경로를 도시한다.
전용 경로를 만드는 방법은 다양한 방법이 이용될 수 있다. 예를 들어, 도 6에서 도시된 것처럼, 프로세싱 엘리먼트 1(601)의 출력단과 프로세싱 엘리먼트 2(602)의 입력단 사이에 싱글 레지스터(603)(예컨대, additional flipflop)를 형성하여 전용 경로를 구현하는 것이 가능하다. 이 밖에도 프로세싱 엘리먼트(601, 602)의 입력을 결정짓는 멀티플렉서의 입력 중 하나를 선택하여 전용 경로로 사용하는 것도 가능하다.
도 7은 본 발명의 일 실시예에 따른 스케줄링 방법을 도시한다. 이것은 전용 경로(208)가 구비된 재구성 가능 어레이(101)에서 실행될 명령에 대하여 적절한 자원을 할당하거나 매핑해주는 스케줄러(102)의 스케줄링 동작에 관한 일 예가 될 수 있다.
도 7을 참조하면, 먼저, 재사용 가능 어레이(101)에서 실행될 명령에 대한 데이터 플로우 그래프에 기초하여 명령의 실행 순서 및 의존 관계를 분석한다(701).
이어서, 데이터 플로우 그래프에서 리커런스 노드가 있는지 여부를 판단한다(702). 여기서 리커런스 노드는 데이터 플로우 그래프 상에서 입력 및 출력으로 동시에 사용되는 노드가 될 수 있으며, 루프에 있어서 이전 이터레이션의 결과가 다음 이터레이션의 입력으로 사용되는 경우 발생될 수 있다.
판단 결과, 리커런스 노드가 없는 경우, 각 노드의 순위에 따라 순서대로 스케줄링을 한다(708). 예컨대, Height based order scheduling 기법에 따라 스케줄링이 이루어지는 것이 가능하다.
만약, 리커런스 노드가 있는 경우, 리커런스 노드를 중앙 레지스터 파일(203)에 우선적으로 매핑한다(703). 이때, 리커런스 노드는 이터레이션의 초기 및 후기에 따라 각각 두 가지 상태를 가지므로, 각 상태 사이의 타임 스케줄링 마진을 최소 반복 간격(MII)만큼 고정하여 중앙 레지스터 파일(203)에 매핑하는 것이 가능하다.
이어서, 데이터 플로우 그래프에서 프로듀서 노드를 검출하고 이를 매핑한다(704). 여기서 프로듀서 노드는 리커런스 노드를 발생시키는 노드, 즉 리커런스 노드에 값을 기록하는 노드가 될 수 있다. 또한, 프로듀서 노드는 중앙 레지스터 파일(203)에 직접 접근 할 수 있는 제 1 프로세싱 엘리먼트(206)에 우선적으로 매핑하는 것이 가능하다.
이어서, 데이터 플로우 그래프에서 전임 노드를 검출한다(705). 여기서 전임 노드는 프로듀서 노드의 이전 오퍼레이션 노드가 될 수 있다.
이어서, 전임 노드가 리커런스 노드에 해당하는지 여부를 판단한다(706).
만약, 전임 노드가 리커런스 노드에 해당하는 경우, 리커런스 노드는 703 과정에서 이미 매핑이 이루어졌으므로 나머지 노드를 각 노드의 순위에 따라 Height based order scheduling하는 것이 가능하다(708).
만약, 전임 노드가 리커런스 노드에 해당하지 아니하면, 전임 노드를 프로듀서 노드가 매핑된 제 1 프로세싱 엘리먼트(206)와 전용 경로로 연결된 제 2 프로세싱 엘리먼트(207)에 우선적으로 매핑한다(707).
이와 같이, 실행될 명령을 분석하여 리커런스 노드를 검출하고, 리커런스 노드, 프로듀서 노드, 전임 노드 등을 우선적으로 매핑한 후, 나머지 노드에 대해서는 각 노드의 순위에 따라 Height based order scheduling하면, 루프 연산 속도를 높일 수가 있다. 나아가, 하드웨어적으로 특정한 프로세싱 엘리먼트들이 정해진 딜레이를 갖는 전용 경로를 통해 연결되고, 이러한 프로세싱 엘리먼트들에 리커런스와 관련된 노드를 우선적으로 매핑하기 때문에 소프트웨어 파이프라이닝을 통한 루프 가속화를 극대화시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치를 도시한다.
도 2는 본 발명의 일 실시예에 따른 재구성 가능 어레이를 도시한다.
도 3은 본 발명의 일 실시예에 따른 스케줄러를 도시한다.
도 4는 본 발명의 일 실시예에 따른 데이터 플로우 그래프를 도시한다.
도 5는 본 발명의 일 실시예에 따른 자원 매핑 및 스케줄링 타임을 도시한다.
도 6은 본 발명의 일 실시예에 따른 전용 경로를 도시한다.
도 7은 본 발명의 일 실시예에 따른 스케줄링 방법을 도시한다.

Claims (15)

  1. 다수의 프로세싱 엘리먼트를 구비하는 재구성 가능 어레이의 스케줄러에 있어서,
    상기 재구성 가능 어레이에서 실행될 명령에 관한 데이터 플로우 그래프에 기초하여, 상기 명령의 실행 순서 또는 의존 관계를 분석하는 분석부;
    상기 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드를 검출하는 제 1 처리부;
    상기 데이터 플로우 그래프에서 상기 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 검출하고, 상기 프로듀서 노드를 상기 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일과 연결된 제 1 프로세싱 엘리먼트로 매핑하는 제 2 처리부; 및
    상기 데이터 플로우 그래프에서 상기 프로듀서 노드의 전임 노드를 검출하고, 상기 전임 노드를 상기 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트로 매핑하는 제 3 처리부; 를 포함하는 스케줄러.
  2. 제 1 항에 있어서,
    상기 제 1 프로세싱 엘리먼트와 상기 제 2 프로세싱 엘리먼트는 정해된 딜레이를 갖는 전용 경로로 연결되는 스케줄러.
  3. 제 2 항에 있어서,
    상기 전용 경로는 상기 제 1 프로세싱 엘리먼트 및 상기 제 2 프로세싱 엘리먼트 사이에 형성된 싱글 레지스터를 포함하는 스케줄러.
  4. 제 1 항에 있어서,
    상기 제 1 프로세싱 엘리먼트는 상기 중앙 레지스터 파일에 직접 접근할 수 있는 인접한 프로세싱 엘리먼트들을 포함하는 스케줄러.
  5. 제 1 항에 있어서,
    상기 제 1 처리부는 상기 리커런스 노드를 상기 중앙 레지스터 파일에 매핑하는 스케줄러.
  6. 제 1 항에 있어서,
    상기 제 3 처리부는 상기 리커런스 노드에 해당하지 않는 전임 노드만 검출하는 스케줄러.
  7. 다수의 프로세싱 엘리먼트를 구비하는 재구성 가능 어레이에서 실행될 명령을 스케줄링하는 방법에 있어서,
    상기 명령에 관한 데이터 플로우 그래프에 기초하여, 상기 명령의 실행 순서 또는 의존 관계를 분석하는 단계;
    상기 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드를 검출하는 단계;
    상기 데이터 플로우 그래프에서 상기 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 검출하고, 상기 프로듀서 노드를 상기 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일과 연결된 제 1 프로세싱 엘리먼트로 매핑하는 단계; 및
    상기 데이터 플로우 그래프에서 상기 프로듀서 노드의 전임 노드를 검출하고, 상기 전임 노드를 상기 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트로 매핑하는 단계; 를 포함하는 스케줄링 방법.
  8. 제 7 항에 있어서,
    상기 제 1 프로세싱 엘리먼트와 상기 제 2 프로세싱 엘리먼트는 정해진 딜레이를 갖는 전용 경로로 연결되는 스케줄링 방법.
  9. 제 8 항에 있어서,
    상기 프로듀서 노드 및 상기 전임 노드는 상기 전용 경로의 정해진 딜레이를 이용하여 반복 간격(iteration interval)의 최대 마진(margin) 내에서 각 프로세싱 엘리먼트로 매핑되는 스케줄링 방법.
  10. 제 7 항에 있어서,
    상기 리커런스 노드를 검출하는 단계는 상기 리커런스 노드의 초기 단계 및 후기 단계 사이의 시간 간격을 계산된 최소 반복 간격(minimum iteration interval)만큼 고정한 후, 상기 리커런스 노드를 상기 중앙 레지스터 파일에 매핑하는 과정을 포함하는 스케줄링 방법.
  11. 제 7 항에 있어서,
    상기 전임 노드를 매핑하는 단계는 상기 검출된 전임 노드가 상기 리커런스 노드에 해당하지 아니한 경우에만 상기 전임 노드를 매핑하는 스케줄링 방법.
  12. 다수의 프로세싱 엘리먼트; 및
    상기 프로세싱 엘리먼트들 간의 데이터 전달을 위한 중앙 레지스터 파일; 을 포함하며,
    상기 프로세싱 엘리먼트는 상기 중앙 레지스터 파일과 연결되는 제 1 프로세싱 엘리먼트와 상기 제 1 프로세싱 엘리먼트와 연결된 제 2 프로세싱 엘리먼트를 포함하고,
    실행될 명령에 관한 데이터 플로우 그래프에서 입력 및 출력으로 동시에 사용되는 리커런스 노드가 존재하는 경우, 상기 리커런스 노드에 데이터를 기록하는 프로듀서 노드를 상기 제 1 프로세싱 엘리먼트에 매핑하고, 상기 프로듀서 노드의 전임 노드를 상기 제 2 프로세싱 엘리먼트로 매핑하는 컴퓨팅 장치.
  13. 제 12 항에 있어서,
    상기 제 1 프로세싱 엘리먼트와 상기 제 2 프로세싱 엘리먼트는 정해진 딜레이를 갖는 전용 경로로 연결되는 컴퓨팅 장치.
  14. 제 13 항에 있어서,
    상기 전용 경로는 상기 제 1 프로세싱 엘리먼트 및 상기 제 2 프로세싱 엘리먼트 사이에 형성된 싱글 레지스터를 포함하는 컴퓨팅 장치.
  15. 제 12 항에 있어서,
    상기 제 1 프로세싱 엘리먼트는 상기 중앙 레지스터 파일에 직접 접근할 수 있는 인접한 프로세싱 엘리먼트들을 포함하는 컴퓨팅 장치.
KR1020090008559A 2009-02-03 2009-02-03 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 KR101515568B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090008559A KR101515568B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치
US12/697,602 US8745608B2 (en) 2009-02-03 2010-02-01 Scheduler of reconfigurable array, method of scheduling commands, and computing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090008559A KR101515568B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20100089350A KR20100089350A (ko) 2010-08-12
KR101515568B1 true KR101515568B1 (ko) 2015-04-28

Family

ID=42398658

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090008559A KR101515568B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US8745608B2 (ko)
KR (1) KR101515568B1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4911022B2 (ja) * 2007-12-27 2012-04-04 富士通セミコンダクター株式会社 カウンタ制御回路、動的再構成回路およびループ処理制御方法
KR101553655B1 (ko) * 2009-01-19 2015-09-17 삼성전자 주식회사 재구성가능 프로세서에 대한 명령어 스케줄링 장치 및 방법
KR101101992B1 (ko) * 2010-04-30 2012-01-13 광운대학교 산학협력단 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치
KR20120036208A (ko) * 2010-10-07 2012-04-17 삼성전자주식회사 재구성 기반 컴퓨팅 장치 및 이의 메모리 의존성 보정방법
KR101731929B1 (ko) 2011-02-08 2017-05-02 삼성전자주식회사 재구성 가능 프로세서 및 구동 제어 방법
KR101270763B1 (ko) * 2011-02-21 2013-06-03 서울대학교산학협력단 재구성형 프로세싱 어레이 구조 생성 방법
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
KR101962250B1 (ko) * 2013-03-05 2019-03-26 삼성전자주식회사 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
KR20140131472A (ko) * 2013-05-03 2014-11-13 삼성전자주식회사 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
US9727460B2 (en) 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
KR102204282B1 (ko) * 2013-11-25 2021-01-18 삼성전자주식회사 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
US10169433B2 (en) 2014-07-29 2019-01-01 Microsoft Technology Licensing, Llc Systems and methods for an SQL-driven distributed operating system
US10437843B2 (en) 2014-07-29 2019-10-08 Microsoft Technology Licensing, Llc Optimization of database queries via transformations of computation graph
US10176236B2 (en) * 2014-07-29 2019-01-08 Microsoft Technology Licensing, Llc Systems and methods for a distributed query execution engine
KR102244135B1 (ko) 2014-09-05 2021-04-23 삼성전자주식회사 모듈로 스케줄링 방법 및 장치
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
CN107402745B (zh) * 2017-07-04 2020-05-22 清华大学 数据流图的映射方法及装置
CN107679010B (zh) * 2017-09-20 2020-10-23 东南大学 一种面向可重构计算阵列的算子映射系统及方法
US10846260B2 (en) * 2018-07-05 2020-11-24 Qualcomm Incorporated Providing reconfigurable fusion of processing elements (PEs) in vector-processor-based devices
CN113536699B (zh) * 2021-09-16 2021-12-03 中国人民解放军国防科技大学 基于图论算法的作战环推荐方法、系统、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040049672A1 (en) 2002-05-31 2004-03-11 Vincent Nollet System and method for hardware-software multitasking on a reconfigurable computing platform
WO2006114642A1 (en) 2005-04-28 2006-11-02 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
EP1808774A1 (en) 2005-12-22 2007-07-18 St Microelectronics S.A. A hierarchical reconfigurable computer architecture
KR100781340B1 (ko) 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134281A (ja) 1987-11-19 1989-05-26 Nec Corp ゲートアレイ
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
GB9419246D0 (en) 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
JP3432385B2 (ja) 1996-02-16 2003-08-04 ルーセント テクノロジーズ インコーポレーテッド 仮想の区画化によってネットワーク資源を共有するための方法
US5781624A (en) 1996-02-16 1998-07-14 Lucent Technologies Inc. Method for sharing network resources by virtual partitioning
US5894565A (en) 1996-05-20 1999-04-13 Atmel Corporation Field programmable gate array with distributed RAM and increased cell utilization
US7571303B2 (en) * 2002-10-16 2009-08-04 Akya (Holdings) Limited Reconfigurable integrated circuit
WO2004072796A2 (en) * 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
US7904848B2 (en) * 2006-03-14 2011-03-08 Imec System and method for runtime placement and routing of a processing array
US7886255B2 (en) * 2007-01-22 2011-02-08 Texas Instruments Incorporated Method for design of programmable data processors
US20080263323A1 (en) * 2007-04-13 2008-10-23 Mould Nick A Reconfigurable Computing Architectures: Dynamic and Steering Vector Methods
WO2009022310A2 (en) * 2007-08-14 2009-02-19 Nokia Corporation Resource scheduling enabling partially-constrained retransmission
KR101335001B1 (ko) * 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040049672A1 (en) 2002-05-31 2004-03-11 Vincent Nollet System and method for hardware-software multitasking on a reconfigurable computing platform
WO2006114642A1 (en) 2005-04-28 2006-11-02 The University Court Of The University Of Edinburgh Reconfigurable instruction cell array
EP1808774A1 (en) 2005-12-22 2007-07-18 St Microelectronics S.A. A hierarchical reconfigurable computer architecture
KR100781340B1 (ko) 2006-09-18 2007-11-30 삼성전자주식회사 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법

Also Published As

Publication number Publication date
US8745608B2 (en) 2014-06-03
US20100199069A1 (en) 2010-08-05
KR20100089350A (ko) 2010-08-12

Similar Documents

Publication Publication Date Title
KR101515568B1 (ko) 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치
US9043770B2 (en) Program module applicability analyzer for software development and testing for multi-processor environments
US9164769B2 (en) Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
US20070038987A1 (en) Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors
US8365111B2 (en) Data driven logic simulation
Rosvall et al. A constraint-based design space exploration framework for real-time applications on MPSoCs
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
WO2009085118A2 (en) System and method for architecture-adaptable automatic parallelization of computing code
US8725486B2 (en) Apparatus and method for simulating a reconfigurable processor
US8869129B2 (en) Apparatus and method for scheduling instruction
TW202029064A (zh) 多路徑神經網路、資源配置的方法及多路徑神經網路分析器
KR20090047326A (ko) 프로세서 및 인스트럭션 스케줄링 방법
US9354850B2 (en) Method and apparatus for instruction scheduling using software pipelining
US8972923B2 (en) Method and apparatus and software code for generating a hardware stream processor design
US20060095894A1 (en) Method and apparatus to provide graphical architecture design for a network processor having multiple processing elements
Rosvall et al. Throughput propagation in constraint-based design space exploration for mixed-criticality systems
Kumar et al. Analyzing composability of applications on MPSoC platforms
US9740529B1 (en) High throughput synchronous resource-constrained scheduling for model-based design
GB2366414A (en) A method of identifying false paths in circuit synthesis
CN107832255B (zh) 一种运行时动态请求可重构核的优化方法
Singh et al. RAPIDITAS: RAPId design-space-exploration incorporating trace-based analysis and simulation
Althaus et al. A column generation approach to scheduling of periodic tasks
US7093255B1 (en) Method for estimating cost when placing operations within a modulo scheduler when scheduling for processors with a large number of function units or reconfigurable data paths
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
Carpenter et al. Buffer sizing for self-timed stream programs on heterogeneous distributed memory multiprocessors

Legal Events

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

Payment date: 20180329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5