KR20160046623A - 재구성 가능 프로세서 및 그 동작 방법 - Google Patents

재구성 가능 프로세서 및 그 동작 방법 Download PDF

Info

Publication number
KR20160046623A
KR20160046623A KR1020140142780A KR20140142780A KR20160046623A KR 20160046623 A KR20160046623 A KR 20160046623A KR 1020140142780 A KR1020140142780 A KR 1020140142780A KR 20140142780 A KR20140142780 A KR 20140142780A KR 20160046623 A KR20160046623 A KR 20160046623A
Authority
KR
South Korea
Prior art keywords
reconfigurable
configuration information
processor
reconfigurable arrays
memory
Prior art date
Application number
KR1020140142780A
Other languages
English (en)
Other versions
KR102277439B1 (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 KR1020140142780A priority Critical patent/KR102277439B1/ko
Priority to PCT/KR2015/011053 priority patent/WO2016064158A1/ko
Priority to US15/520,294 priority patent/US10396797B2/en
Publication of KR20160046623A publication Critical patent/KR20160046623A/ko
Application granted granted Critical
Publication of KR102277439B1 publication Critical patent/KR102277439B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration
    • 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/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/768Gate array

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Logic Circuits (AREA)

Abstract

제어 프로세서로부터 작업 수행 명령을 수신하는 단일 구성 메모리 및 단일 구성 메모리로부터의 구성 정보를 각각 수신하는 복수의 재구성 가능 어레이를 포함하고, 구성 정보에 기초하여 복수의 재구성 가능 어레이가 작업을 동시에 수행하는 것인 재구성 가능 프로세서 및 그 동작 방법을 제공한다.

Description

재구성 가능 프로세서 및 그 동작 방법{Reconfigurable Processor and method for operating the same}
본 발명은 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법에 관한 것으로, 더욱 구체적으로는 단일 구성 메모리 및 복수의 재구성 가능 어레이를 포함하는 재구성 가능 프로세서가 다량의 데이터를 처리하는 방법에 관한 것이다.
최신의 프로세서들은 방대한 양의 데이터를 처리해야 하는 응용에서 성능을 극대화 할 수 있도록 설계되어 왔다. 프로세서의 성능을 높이는 방법에는 ILP(Instruction Level Parallelism)에 의해 동시에 처리할 수 있는 명령어의 개수를 늘리는 방법, DLP(Data Level Parallelism)에 의해 동시에 처리할 수 있는 데이터의 개수를 늘리는 방법 및 TLP(Thread Level Parallelism)에 의해 동시에 여러 개의 쓰래드(Thread)를 처리하도록 하는 방법이 있다. 이러한 방법에 적용을 위한 프로세서로써 재구성 가능 프로세서가 있을 수 있다.
재구성 가능 프로세서(reconfigurable processor)는 연산을 수행하는 컴퓨팅 장치의 하드웨어적인 구성을 소프트웨어적으로 변경하여 재구성할 수 있도록 하는 프로세서이다. 재구성 가능 프로세서는 연산의 속도가 빠른 하드웨어의 장점과 연산의 다양성이 뛰어난 소프트웨어의 장점을 모두 만족시킬 수 있다.
다량의 데이터를 처리하기 위해 단일 구성 메모리 및 복수의 재구성 가능 어레이를 포함하는 재구성 가능 프로세서 및 그 동작 방법을 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 데 있다. 본 실시 예가 이루고자 하는 기술 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
제 1 측면에 따른, 재구성 가능 프로세서(Reconfigurable Processor)는, 제어 프로세서로부터 작업 수행 명령을 수신하는 단일 구성 메모리 및 수신된 명령에 기초하여, 단일 구성 메모리(configurable memory)로부터의 구성 정보를 각각 수신하는 복수의 재구성 가능 어레이를 포함하고, 구성 정보에 기초하여, 복수의 재구성 가능 어레이 각각은 복수의 재구성 가능 어레이 각각에 포함된 복수의 기능 유닛(Function Unit)을 이용하여 작업을 동시에 수행한다.
제 2 측면에 따른, 재구성 가능 프로세서의 동작 방법은, 제어 프로세서로부터 작업 수행 명령을 재구성 가능 프로세서에 포함된 단일 구성 메모리가 수신하는 단계, 수신된 명령에 기초하여, 재구성 가능 프로세서에 포함된 복수의 재구성 가능 어레이 각각에게 단일 구성 메모리의 구성 정보를 전달하는 단계, 구성 정보에 기초하여, 복수의 재구성 가능 어레이 각각은 복수의 재구성 가능 어레이 각각에 포함된 복수의 기능 유닛(Function Unit)을 이용하여 동시에 상기 작업을 수행하는 단계를 포함한다.
제 3 측면에 따라, 재구성 가능 프로세서의 동작 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.
재구성 가능 프로세서가 단일 구성 메모리 및 복수의 재구성 가능 어레이를 포함하므로써 방대한 양의 데이터를 처리하는데 있어 면적/성능/파워의 측면에서 가장 효과적인 프로세서를 제공한다.
도 1은 일 실시예에 따라, 재구성 가능 프로세서를 포함하는 제어 시스템을 설명하기 위한 도면이다.
도 2는 도 1의 제어 시스템을 다른 실시예에 따라 설명하기 위한 도면이다.
도 3은 다른 실시예에 따라, 재구성 가능 프로세서를 설명하기 위한 도면이다.
도 4는 도 3의 재구성 가능 프로세서를 포함하는 제어 시스템을 설명하기 위한 도면이다.
도 5는 일 실시예에 따라, 시작 동기화부를 포함하는 재구성 가능 프로세서 및 재구성 가능 프로세서를 포함하는 제어 시스템을 설명하기 위한 도면이다.
도 6은 일 실시예에 따라, 어레이 동기화부를 포함하는 재구성 가능 프로세서 및 재구성 가능 프로세서를 포함하는 제어 시스템을 설명하기 위한 도면이다.
도 7은 일 실시예에 따라, 재구성 가능 프로세서가 제어 시스템에서 디스플레이 영역에 대해 영상 처리 작업을 수행하는 예시를 설명하기 위한 도면이다.
도 8은 일 실시예에 따라, 재구성 가능 프로세서의 동작 방법을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라, 도 8의 단계 810을 보다 구체적으로 설명하기 위한 도면이다.
도 10은 일 실시예에 따라, 도 8의 단계 820 및 830을 보다 구체적으로 설명하기 위한 도면이다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예에 의해 발명을 상세히 설명하기로 한다. 하기 실시예는 발명을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 발명이 속하는 기술분야의 전문가가 용이하게 유추할 수 있는 것은 발명의 권리범위에 속하는 것으로 해석된다.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용되는 복수라는 용어는, 그 개수가 2이상의 개수를 의미하는 것이며 특정 개수로 제한하는 것은 아니다. 또한, 복수라는 수식어가 없는 구성에 대해서는 단수 및 복수의 의미가 모두 적용될 수 있을 것이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은, 일 실시예에 따른 재구성 가능 프로세서(110)를 포함하는 제어 시스템(100)을 설명하기 위한 도면이다.
도 1을 참조하면, 제어 시스템(100)은 일 실시예에 따라, 재구성 가능 프로세서(110) 및 제어 프로세서(120)를 포함할 수 있다.
도 1에 도시된 제어 시스템(100)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
재구성 가능 프로세서(110)의 예로써, VLIW (Very Long Instruction Word), 슈퍼스칼라(Superscalar), CGA(Coarse Grained Array)를 들 수 있다. 이들 프로세서는 여러 개의 기능 유닛(Function Unit)을 가지고 동시에 수행 가능한 명령어를 통해 성능을 향상시킨다. 슈퍼스칼라의 경우는 동시에 수행 가능한 명령어를 찾기 위한 하드웨어가 존재하는 방식이다. 따라서, 하드웨어가 복잡하다. 반면에 VLIW와 CGA는 컴파일러(compiler) 기술을 이용하여 동시에 수행 가능한 명령어를 미리 정하여 동작시킨다. 특히 CGA의 경우는 동일한 연산이 반복적으로 수행되는 루프 부분을 연산할 때 뛰어난 성능을 나타낼 수 있다. 재구성 가능 프로세서(110)는 하나의 연산의 실행을 개시한 후에 계속해서 다음 연산을 중복하여 실행하는 파이프라인(pipeline) 기술과 결합되었을 때 더욱 뛰어난 성능을 나타낼 수 있다. 이로써 복수의 명령어(instruction)가 고속으로 실행될 수 있다.
일 실시예에 따라, 재구성 가능 프로세서(110)는 재구성 가능 어레이를 포함할 수 있다. 재구성 가능 어레이란, 여러 가지 연산이 가능한 복수의 기능 유닛(Funtion Unit)들이 어레이(Array)의 형태로 구성된 것을 의미할 수 있다. 이러한 재구성 가능 어레이를 통해 재구성 가능 프로세서(110)는 복수의 명령어를 병렬적으로 처리할 수 있다. 이러한 재구성 가능 어레이는 코어스 그레인 어레이(Coarse Grained Array, CGA)일 수 있다.
제어 프로세서(120)는 작업 수행 명령을 전달하여 재구성 가능 프로세서(110)를 동작시킬 수 있다. 구체적으로, 제어 프로세서(120)는 작업 수행 명령을 재구성 가능 프로세서(110) 내에 포함된 구성 메모리에게 전달할 수 있고, 구성 메모리는 구성 정보를 재구성 가능 어레이를 통해 작업을 수행할 수 있다. 이와 같이, 제어 프로세서(120)는 작업 수행 명령을 전달함으로써, 재구성 가능 프로세서(110)를 동작 시킬 수 있는 바, 제어 프로세서(120)와 재구성 가능 프로세서(110)는 간접적으로 결합(coupling)되어 있다고 볼 수 있다. 이러한 간접적 결합을 통한 재구성 가능 프로세서(110)의 동작은 CGA 모드에서의 동작이라고 볼 수 있다. 이에 대해서는, 도 2에서 더 자세히 살펴보겠다.
또한, 제어 프로세서(120)는 재구성 가능 프로세서(110)의 리소스들을 공유하여 작업을 수행할 수 있다. 구체적으로는, 제어 프로세서(120)가 재구성 가능 프로세서(110)의 일부 기능 유닛 및 레지스터 파일을 직접 이용하여 작업을 수행할 수 있다. 이와 같이, 제어 프로세서(120)가 재구성 가능 프로세서(110)의 리소스들을 공유하여, 재구성 가능 프로세서(110)를 동작시킬 수 있는 바, 제어 프로세서(120)와 재구성 가능 프로세서(110)는 직접적으로 결합되어 있다고 볼 수 있다. 이러한 직접적 결합을 통한 재구성 가능 프로세서(110)의 동작은 VLIW(Very Long Instruction Word) 모드에서의 동작이라고 볼 수 있다. 이에 대해서는, 도 2에서 더 자세히 살펴볼 것이다.
도 2는 도 1의 제어 시스템(100)을 다른 실시예에 따라 설명하기 위한 도면이다.
도 2를 참고하면, 제어 시스템(100)은 제 1 제어부(210), 제 2 제어부(220), 재구성 가능 프로세서(110) 및 데이터 메모리(230)를 포함할 수 있다.
재구성 가능 프로세서(110)는 일 실시예에 따라 재구성 가능 어레이(240), 구성 메모리(250)를 포함할 수 있다.
재구성 가능 어레이(240)는 복수의 기능 유닛(Fucntion Unit)(이하, FU)을 포함할 수 있다. 각각의 FU는 작업(Task) 또는 명령어(Instruction)를 독립적으로 처리할 수 있다. 일 실시예에 따라, 재구성 가능 어레이(240)는 독립적으로 동작하는 복수의 FU를 이용하여 소정의 작업을 병렬적으로 처리하는 것이 가능하다. 복수의 FU는 산술논리연산유닛(Arithmetic Logic Unit), 곱셈기(Multiplier), 로드/스토어 유닛(load/store unit) 또는 로컬 레지스터 파일(local register file)을 포함할 수 있으며, 앞에서 나열된 유닛 또는 파일들에 접근하기 위한 다수의 입출력을 가질 수 있다. 복수의 FU간에는 접근 가능한 입출력 경로들이 다수개 구비될 수 있으며, 복수의 FU간의 경로를 설정하기 위한 멀티플렉서(Multiplexer)가 구비될 수 있다. 구성 메모리(250)의 구성 정보에 따라 멀티플렉서의 출력이 선택되고, 이에 따라 전체 재구성 가능 어레이(240)의 구성이 설정될 수 있다. 또한, 일 실시예에 따라 재구성 가능 어레이(240)는 CGA(Coarse Grained Array)일 수 있다.
또한, 복수의 FU 각각은 스칼라(scalar) 타입의 연산 또는 벡터(vector) 타입의 연산을 수행할 수 있다. 따라서, 재구성 가능 프로세서(110)는 동일한 명령어로서 다수의 데이터를 처리하는 것을 가능하게 한다.
재구성 가능 어레이(240)는 레지스터 파일을 포함할 수 있다. 레지스터 파일은 복수의 FU가 명령어를 처리하는 데에 필요한 데이터를 제공할 수 있다. 또한, 레지스터 파일은 복수의 FU가 명령어를 처리한 결과를 저장할 수 있다. 레지스터 파일은 복수의 FU가 동작 중의 데이터를 임시 저장하기 위한 로컬 레지스터 파일일 수 있으며, 제 2 제어부(220)와 복수의 FU 중 일부 FU 간에 데이터를 주고 받기 위한 공유 레지스터 파일일 수 있다. 공유 레지스터 파일에 관한 구체적인 설명은 이하에서 한다. 또한, 레지스터 파일은 도면상으로는 재구성 가능 어레이(240) 내에 도시되어 있지만, 재구성 가능 어레이(240) 외부에 존재할 수도 있고, 복수의 레지스터 파일로 존재할 수도 있다.
구성 메모리(250)는 재구성 가능 어레이(240)의 구성 정보를 저장한다. 구성 정보는 재구성 가능 어레이(240)의 각 FU에 할당되는 명령어 정보 또는 복수개의 FU 간의 연결 상태에 관한 정보를 포함할 수 있다. 따라서, 각 FU에 매핑되는 명령 및 복수개의 FU간의 연결 상태는 구성 메모리(250)에 저장된 구성 정보에 따라 달라질 수 있다.
예를 들어, 제 1 구성 정보에 따라, FU0에 명령어 A가 매핑되고, FU0의 출력이 FU4의 입력과 연결될 수 있다. 또한, 제 2 구성 정보에 따라, FU0에 명령어 B가 매핑되고 FU0의 출력이 FU5의 입력과 연결될 수 있다. 즉, 재구성 가능 프로세서(110)는 구성 메모리(250)의 구성 정보에 따라 재구성 가능 어레이(240)의 구성을 특정한 작업에 최적화 되도록 제어하는 것이 가능하다.
또한, 구성 메모리(250)의 구성 정보는 복수의 FU와 레지스터 파일의 연결 상태에 관한 정보, 복수의 FU와 데이터 메모리(230)의 연결 상태에 관한 정보 및 복수의 FU와 외부 노드(미도시)와의 연결 상태에 관한 정보를 포함할 수 있다. 외부 노드는 특정 상수값을 저장할 수 있는 데, 복수의 FU가 특정 상수값을 필요로 하는 경우, 구성 정보에 의해 복수의 FU는 외부 노드에 접근하여 특정 상수값을 획득할 수 있다.
데이터 메모리(230)는 작업 또는 명령어를 수행하기 위해 필요한 데이터와 레지스터 파일에서 공유되지 못한 데이터들을 담고 있다. 데이터 메모리(230)는 로드/저장 연산(load/store operation)에 의해서 재구성 가능 프로세서(110)에 필요한 데이터들을 전달한다.
일 실시예에 따라, 제어 프로세서(120)는 제 1 제어부(210)와 제 2 제어부(220)를 포함할 수 있다.
제 1 제어부(210)는 재구성 가능 프로세서(110)의 구성 메모리(250)에게 작업 수행 명령을 전달할 수 있다. 이에 따라, 재구성 가능 어레이(240)는 구성 메모리(250)의 구성 정보에 따라 작업을 수행하게 된다. 일 실시예에 따라, 재구성 가능 프로세서(110)는 제 1 제어부(210)와 간접적으로 결합되어 CGA 모드로써 작업 수행할 수 있다.
일 실시예에 따라, CGA 모드에서 수행되는 작업은 반복 수행이 요구되는 루프(loop) 작업을 의미한다. 따라서, CGA 모드에서는 매 루프마다 그 내용에 따라 최적의 구성 정보가 필요하고, 그 구성 정보에 따라 재구성 가능 어레이(240)의 복수의 기능 유닛들은 작업을 수행하게 된다.
제 2 제어부(220)는 재구성 가능 어레이(240)의 레지스터 파일과 일부 FU들을 직접적으로 제어할 수 있다. 즉, 제 2 제어부(220)는 재구성 가능 프로세서(110)와 일부 리소스(Resource)들을 공유하며 존재할 수 있다. 일 실시예에 따라, 재구성 가능 프로세서(110)는 제 2 제어부(220)와 직접적으로 결합되어 VLIW 모드에서 작업을 수행할 수 있다.
일 실시예에 따라, VLIW 모드에서 수행되는 작업은 재구성 가능 프로세서(110)에 입력된 복수의 명령어 각각을 제 2 제어부(220)를 통해 복수의 FU 각각에 분배하여 병렬적으로 작업을 수행할 수 있다. 따라서, VLIW 모드에서 동시에 수행될 수 있는 명령어들의 개수는 VLIW 모드에 포함되는 FU의 개수에 의해 결정될 수 있다.
도 3은, 본 발명의 다른 실시예에 따른 재구성 가능 프로세서(300)를 나타내는 도면이다.
재구성 가능 프로세서(300)는 단일 구성 메모리(310)와 단일 구성 메모리(310)의 구성 정보를 각각 전달 받는 복수의 재구성 가능 어레이(320)를 포함할 수 있다.
도 3에 도시된 재구성 가능 프로세서(300)는 본 실시예와 관련된 구성 요소들만이 도시되어 있다. 따라서, 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
복수의 재구성 가능 어레이(320) 각각은 복수의 FU를 포함할 수 있고, 복수의 FU 각각은 작업 또는 명령어를 독립적으로 처리할 수 있다. 일 실시예에 따라, 복수의 재구성 가능 어레이(320) 각각은 독립적으로 동작하는 복수의 FU를 이용하여 소정의 작업을 병렬적으로 처리하는 것이 가능하다. 복수의 FU는 산술논리연산유닛(Arithmetic Logic Unit), 곱셈기(Multiplier), 로드/스토어 유닛(load/store unit) 또는 로컬 레지스터 파일(local register file)을 포함할 수 있으며, 앞에서 나열된 유닛 또는 파일들에 접근하기 위한 다수의 입출력을 가질 수 있다. 복수의 FU간에는 접근 가능한 입출력 경로들이 다수개 구비되며, 복수의 FU간의 경로를 설정하기 위한 멀티플렉서(Multiplexer)가 구비될 수 있다. 단일 구성 메모리(310)의 구성 정보에 따라 멀티플렉서의 출력이 선택되고, 이에 따라 복수의 재구성 가능 어레이(320) 각각의 구성이 설정될 수 있다. 또한, 일 실시예에 따라 복수의 재구성 가능 어레이(320) 각각은 CGA일 수 있다.
또한, 복수의 FU 각각은 스칼라(scalar) 타입의 연산 또는 벡터(vector) 타입의 연산을 수행할 수 있다. 따라서, 재구성 가능 프로세서(300)는 동일한 명령어로서 다수의 데이터를 처리하는 것을 가능하게 한다.
단일 구성 메모리(310)는 복수의 재구성 가능 어레이(320)의 구성 정보를 저장한다. 구성 정보는 각 FU에 할당되는 명령어 정보 또는 복수개의 FU 간의 연결 상태에 관한 정보를 포함할 수 있다. 따라서, 각 FU에 매핑되는 명령 및 복수개의 FU간의 연결 상태는 단일 구성 메모리(310)에 저장된 구성 정보에 따라 달라질 수 있다.
일 실시예에 따라, 재구성 가능 프로세서(300)는 단일 구성 메모리(310)를 복수의 재구성 가능 어레이(320)가 공유하여, 하나의 구성 정보를 통해 복수의 재구성 가능 어레이(320)가 동시에 병렬적으로 데이터를 처리할 수 있다. 따라서, 복수의 재구성 가능 어레이(320) 각각은 동일한 재구성 가능 어레이가 될 수 있다.
일 실시예에 따라, 단일 구성 메모리(310)의 구성 정보를 통해 복수의 재구성 가능 어레이(320)가 동시에 병렬적으로 데이터를 처리하게 되므로, 방대한 양의 데이터를 처리하는 작업에 유리할 수 있다. 예를 들어, 방대한 양의 데이터를 처리하는 작업으로는 영상 기기가 자연 이미지(Natural Image)에 가까운 화질을 제공하는 다양한 디지털 영상신호처리 기술이 있을 수 있다. 더욱 구체적인 디지털 영상신호처리의 예로는, 연속되는 프레임 중에 생기는 노이즈를 제거하는 움직임 최적화(motion optimization)를 위한 영상 처리, 명암대비와 밝기를 보다 자연스럽게 하는 명암비 향상(contrast enhancement)을 위한 영상 처리, 미세한 영상 구현(detail enhancement)을 위한 영상 처리, 자연색과 일치하는 생생한 색상(color optimization)을 위한 영상 처리를 들 수 있다.
일 실시예에 따라, 앞에서 살펴본 디지털 영상신호처리를 임의의 디스플레이 화면에 적용하는 경우, 재구성 가능 프로세서(300)를 이용할 수 있다. 구체적으로 살펴보면, 임의의 디스플레이 화면을 복수의 영역으로 분할 하여, 복수의 영역 각각에 대하여, 복수의 재구성 가능 어레이(320) 각각을 대응시킬 수 있다. 이 경우, 복수의 영역 각각에 대한 영상신호처리의 과정은 동일하므로, 복수의 재구성 가능 어레이(320) 각각은 영상신호처리를 위한 구성 정보를 단일 구성 메모리(310)로부터 수신할 수 있다. 따라서, 복수의 재구성 가능 어레이(320) 각각은 복수의 영역 각각에 대한 영상신호처리를 수행할 수 있다.
이와 같이, 재구성 가능 프로세서(300)는 단일 구성 메모리(310)의 구성 정보를 통해 복수의 재구성 가능 어레이(320)가 방대한 양의 데이터를 동시에 병렬적으로 처리하게 할 수 있는 바, 면적/성능/파워의 측면에서 가장 효과적인 프로세서가 될 수 있다.
도 4는 도 3의 재구성 가능 프로세서(300)를 포함하는 제어 시스템(400)을 설명하기 위한 도면이다.
재구성 가능 프로세서(300)는 제어 프로세서(410)를 통해 작업 수행 명령을 수신할 수 있다. 보다 구체적으로는, 제어 프로세서(410)의 작업 수행 명령을 단일 구성 메모리(310)가 수신할 수 있다. 수신된 작업 수행 명령에 기초하여, 단일 구성 메모리(310)는 해당 작업에 대한 구성 정보를 복수의 재구성 가능 어레이(320) 각각에게 전달할 수 있다. 복수의 재구성 가능 어레이(320) 각각은 전달된 구성 정보에 기초하여, 동시에 복수의 재구성 가능 어레이(320) 각각에 포함된 복수의 FU를 이용하여 작업을 수행할 수 있다.
일 실시예에 따라, 복수의 재구성 가능 어레이(320) 각각은 작업을 수행하기 위해 필요한 데이터를 복수의 로컬 데이터 메모리(420) 각각으로부터 제공받을 수 있다. 따라서, 복수의 로컬 데이터 메모리(420) 각각으로부터 데이터를 할당 받아 복수의 재구성 가능 어레이(320) 각각은 작업을 수행할 수 있다.
한편, 일 실시예에 따라, 제어 프로세서(410)는 작업 수행 명령을 단일 구성 메모리(310)에 전달하여 재구성 가능 프로세서(300)가 작업을 수행하게 할 수 있지만, 제어 프로세서(410)가 직접 복수의 재구성 가능 어레이(320) 각각과 결합되어 작업을 수행할 수 있다. 즉, 도면 상에서의 제어 프로세서(410)와 복수의 재구성 가능 어레이(320)를 잇는 점선과 같이 제어 프로세서(410)는 복수의 재구성 가능 어레이(320) 각각에 포함된 FU 또는 레지스터 파일과 같은 리소스들을 공유하여 작업을 수행하게 할 수 있다.
복수의 로컬 데이터 메모리(420) 각각은 복수의 재구성 가능 어레이(320)가 작업 또는 명령어를 수행하기 위해 필요한 데이터와 레지스터 파일에서 공유되지 못한 데이터들을 담고 있다. 복수의 로컬 데이터 메모리(420) 각각은 로드/저장 연산(load/store operation)에 의해서 재구성 가능 프로세서(300)에 필요한 데이터들을 전달한다.
도 5는 일 실시예에 따라, 시작 동기화부(530)를 포함하는 재구성 가능 프로세서(500) 및 재구성 가능 프로세서(500)를 포함하는 제어 시스템(501)을 설명하기 위한 도면이다.
재구성 가능 프로세서(500)의 단일 구성 메모리(510) 및 복수의 재구성 가능 어레이(520) 각각은 도 3에서 설명한 바와 같다. 또한, 복수의 로컬 데이터 메모리(550) 각각은 도 4에서 설명한 바와 같다.
일 실시예에 따라, 도 4의 제어 프로세서(410)의 역할을 도 5에서는 복수의 제어부(540)가 수행할 수 있고, 복수의 제어부(540) 각각은 복수의 재구성 가능 어레이(520) 각각과 대응될 수 있다. 따라서, 복수의 제어부(540) 각각으로부터 작업 수행 명령을 단일 구성 메모리(510)는 수신할 수 있다.
일 실시예에 따라, 단일 구성 메모리(510)는 복수의 제어부(540) 각각으로부터 작업 수행 명령을 모두 수신하여야, 구성 정보를 복수의 재구성 가능 어레이(520) 각각에게 전달할 수 있다. 따라서, 재구성 가능 프로세서(500)는 시작 동기화부(530)를 포함하여, 시작 동기화부(530)가 복수의 제어부(540) 각각으로부터 작업 수행 명령을 수신하게끔 할 수 있다. 일 실시예에 따라, 시작 동기화부(530)는 복수의 제어부(540) 각각으로부터 작업 수행 명령을 모두 수신하는 경우에는, 수신된 작업 수행 명령을 단일 구성 메모리(510)에게 전달할 수 있다. 이에 따라, 단일 구성 메모리(510)는 구성 정보를 복수의 재구성 가능 어레이(520) 각각에게 전달할 수 있다.
또한, 다른 실시예에 따라, 시작 동기화부(530)는 단일 구성 메모리(510)에 포함되어 있을 수 있다. 따라서, 단일 구성 메모리(510)가 모든 작업 수행 명령을 수신하는 것을 시작 동기화부(530)가 판단할 수 있다. 이 경우, 시작 동기화부(530)가 모든 작업 수행 명령을 단일 구성 메모리(510)가 수신하였다는 판단을 하였다면, 단일 구성 메모리(510)는 구성 정보를 복수의 재구성 가능 어레이(520) 각각에게 전달할 수 있다.
한편, 일 실시예에 따라, 복수의 제어부(540) 각각이 작업 수행 명령을 단일 구성 메모리(510)에 전달하여 복수의 재구성 가능 어레이(520)가 작업을 수행하게 할 수 있지만, 복수의 제어부(540) 각각이 대응되는 복수의 재구성 가능 어레이(520) 각각과 결합되어 작업을 수행할 수 있다. 즉, 예를 들어, 도면 상에서의 복수의 제어부(540) 각각과 복수의 재구성 가능 어레이(520) 각각을 잇는 점선과 같이 복수의 제어부(540) 각각은 복수의 재구성 가능 어레이(520)에 포함된 FU 또는 레지스터 파일과 같은 리소스들을 공유하여 작업을 수행하게 할 수 있다.
일 실시예에 따라, 앞에서 살펴본 디지털 영상신호처리를 임의의 디스플레이 화면에 적용하는 경우, 제어 시스템(501)을 이용할 수 있다. 구체적으로 살펴보면, 임의의 디스플레이 화면을 복수의 영역으로 분할 하여, 복수의 영역 각각에 대해 영상신호처리에 관한 작업의 권한을 복수의 제어부(540) 각각이 가질 수 있다. 이 경우, 복수의 제어부(540) 각각은 영상신호처리에 관한 작업 수행 명령을 단일 구성 메모리(510)에게 전달하게 되고, 시작 동기화부(530)가 모든 작업 수행 명령을 단일 구성 메모리(510)가 수신하는 경우, 복수의 재구성 가능 어레이(520) 각각은 영상신호처리를 위한 구성 정보를 단일 구성 메모리(510)로부터 수신할 수 있다. 따라서, 복수의 재구성 가능 어레이(520) 각각은 복수의 영역 각각에 대한 데이터를 복수의 로컬 데이터 메모리(550) 각각으로부터 획득할 수 있고, 획득된 데이터를 이용하여 복수의 영역 각각에 대해 영상신호처리에 관한 작업을 수행할 수 있다.
일 실시예에 따라, 복수의 재구성 가능 어레이(520) 각각이 작업을 모두 완료한 경우에는, 그 작업 수행의 결과물은 복수의 로컬 데이터 메모리(550) 각각에 저장되거나 외부 메모리(미도시)에 보내져 저장될 수 있다.
도 6은 일 실시예에 따라, 어레이 동기화부(630)를 포함하는 재구성 가능 프로세서(600) 및 재구성 가능 프로세서(600)를 포함하는 제어 시스템(601)을 설명하기 위한 도면이다.
재구성 가능 프로세서(600)의 단일 구성 메모리(610) 및 복수의 재구성 가능 어레이(620) 는 도 3에서 설명한 바와 같다. 또한, 복수의 제어부(640)는 도 5에서 설명한 바와 같다.
일 실시예에 따라, 단일 구성 메모리(610)의 구성 정보를 복수의 재구성 가능 어레이(620) 각각이 수신하여, 수신된 구성 정보에 따라 복수의 재구성 가능 어레이(620) 각각은 작업을 수행할 수 있다. 작업을 수행하는 도중, 복수의 재구성 가능 어레이(620) 각각이 공유 데이터 메모리(650)의 특정 데이터를 필요로 하기 때문에 공유 데이터 메모리(650)에 접근하여 특정 데이터를 획득할 수 있다.
일 실시예에 따라, 복수의 재구성 가능 어레이(620) 각각이 공유 데이터 메모리(650)에 접근하여 동시에 특정 데이터를 획득할 수 없는 경우에는, 복수의 재구성 가능 어레이(620) 각각이 순차적으로 공유 데이터 메모리(650)에 접근하여 특정 데이터를 획득하여야 한다. 이에 따라, 복수의 재구성 가능 어레이(620) 모두가 특정 데이터를 획득할 때까지, 특정 데이터를 획득한 재구성 가능 어레이는 작업 수행을 중단하고 대기하여야 한다. 따라서, 복수의 재구성 가능 어레이(620) 모두가 특정 데이터를 획득할 때까지, 단일 구성 메모리(610)는 구성 정보의 전달을 중지하여야 한다. 단일 구성 메모리로(610)로부터의 구성 정보의 전달이 중지되므로, 복수의 재구성 가능 어레이(620) 모두는 작업 수행을 중지하게 된다.
일 실시예에 따라, 재구성 가능 프로세서(600)는 어레이 동기화부(630)를 포함하여, 복수의 재구성 가능 어레이(620) 모두가 공유 데이터 메모리(650)로부터 특정 데이터를 획득할 때까지 어레이 동기화부(630)가 단일 구성 메모리(610)의 구성 정보의 전달을 중지시키게끔 할 수 있다. 즉, 어레이 동기화부(630)는 단일 구성 메모리(610)에게 구성 정보의 전달을 중지하는 신호를 전달할 수 있다. 따라서, 복수의 재구성 가능 어레이(620) 모두가 공유 데이터 메모리(650)로부터 특정 데이터를 획득하였다면, 단일 구성 메모리(610)는 더 이상 어레이 동기화부(630)의 중지 신호를 받지 않는 바, 복수의 재구성 가능 어레이(620)에게 구성 정보의 전달을 재개할 수 있다.
또한, 다른 실시 예에 따라, 어레이 동기화부(630)는 단일 구성 메모리(610)에 포함되어 있을 수 있다. 따라서, 복수의 재구성 가능 어레이(620) 모두가 공유 데이터 메모리(650)로부터 특정 데이터를 획득하였는 지 여부를 어레이 동기화부(630)가 판단할 수 있다. 이 경우, 어레이 동기화부(630)는 복수의 재구성 가능 어레이(620) 모두가 특정 데이터를 획득할 때까지, 구성 정보의 전달을 중지시킬 수 있고, 복수의 재구성 가능 어레이(620) 모두가 특정 데이터를 획득하는 경우에는 단일 구성 메모리(610)의 구성 정보 전달을 재개시킬 수 있다.
또한, 재구성 가능 프로세서(600)는 도 5의 시작 동기화부(530)를 포함하여 복수의 제어부(640)로부터의 모든 작업 수행 명령을 수신하는 경우, 구성 정보의 전달을 수행하게끔 할 수 있다.
도 7은 일 실시예에 따라, 재구성 가능 프로세서(700)가 제어 시스템(701)에서 디스플레이 영역(770)에 대해 영상 처리 작업을 수행하는 예시를 나타내는 도면이다.
본 실시예에서의 영상 처리는 앞에서 살펴본 디지털 영상신호처리로 볼 수 있고, 그 밖의 방대한 양의 데이터를 처리해야 하는 경우에 적용될 수 있을 것이다.
단일 구성 메모리(710) 및 제 1, 2, 3, 4 어레이부(721, 723, 725 및 727)는 도 3에서의 단일 구성 메모리(310) 및 복수의 재구성 어레이(320) 각각과 동일하고, 시작 동기화부(730)는 도 5의 시작 동기화부(530)와 동일하고, 어레이 동기화부(750)는 도 6의 어레이 동기화부(630)와 동일하다. 한편, 도 7에서의 어레이부, 제어부 및 데이터 메모리의 개수는 4개로 한정되지 않고, 다른 개수이어도 무방하다.
디스플레이 영역(770)은 도면과 같이 4개의 제 1 영역(771), 제 2 영역(773), 제 3 영역(775) 및 제 4 영역(777)으로 나눠질 수 있다. 따라서, 제 1 영역(771)에 대해서는 제 1 제어부(741)가, 제 2 영역(773)에 대해서는 제 2 제어부(743)가, 제 3 영역(775)에 대해서는 제 3 제어부(745)가, 제 4 영역(777)에 대해서는 제 4 제어부(747)가 영상 처리 작업 수행 권한을 가질 수 있다.
각 제어부는 각 영역에 대한 영상 처리 작업 수행 명령을 단일 구성 메모리(710)로 전달할 수 있다. 이 경우, 시작 동기화부(730)는 모든 제어부(741, 743, 745 및 747)에서 작업 수행 명령이 단일 구성 메모리(710)로 전달 되었는 지 여부를 판단할 수 있고, 시작 동기화부(730)가 모든 제어부에서 작업 수행 명령이 단일 구성 메모리(710)로 전달되었다고 판단할 경우, 단일 구성 메모리(710)는 영상 처리 작업에 대한 구성 정보를 각 어레이부에 전달할 수 있다.
각 어레이부는 단일 구성 메모리(710)의 구성 정보에 따라 영상 처리 작업을 수행하게 된다. 또한, 각 어레이부가 영상 처리 작업을 수행하는 데에 필요한 데이터는 각 데이터 메모리로부터 획득하여 작업을 수행할 수 있다. 구체적으로는, 일 실시예에 따라, 제 1 어레이부(721)는 제 1 영역(771)에 대한 영상 처리 작업을 위해 제 1 데이터 메모리(751)로부터, 제 2 어레이부(723)는 제 2 영역(773)에 대한 영상 처리 작업을 위해 제 2 데이터 메모리(753)로부터, 제 3 어레이부(725)는 제 3 영역(775)에 대한 영상 처리 작업을 위해 제 3 데이터 메모리(755)로부터, 제 4 어레이부(727)는 제 4 영역(777)에 대한 영상 처리 작업을 위해 제 4 데이터 메모리(757)로부터, 데이터를 획득하여 작업을 수행할 수 있다.
일 실시예에 따라, 각 어레이부가 각 영역에 대한 영상 처리 작업을 수행하는 중에 외부의 공유 데이터 메모리(760)의 특정 데이터가 필요한 경우가 있을 수 있다. 이 경우, 각 어레이부는 공유 데이터 메모리(760)에 접근하여 특정 데이터를 획득하게 된다. 다만, 각 어레이부 모두가 동시에 공유 데이터 메모리(760)에 접근하여 특정 데이터를 획득할 수 없는 경우에는, 어레이부 각각이 순차적으로 공유 데이터 메모리(760)에 접근하여 특정 데이터를 획득하여야 한다. 이 경우, 어레이 동기화부(750)는 모든 어레이부가 특정 데이터를 획득할 때까지, 단일 구성 메모리(710)의 구성 정보의 전달을 중지시킬 수 있다. 일 실시예에 따라, 제 1 어레이부(721)가 공유 데이터 메모리(760)에 접근하여 특정 데이터를 획득할 동안, 제 2, 3, 4 어레이부(723, 725 및 727)는 작업 수행을 중지하여야 하므로 어레이 동기화부(750)는 구성 정보의 전달을 중시시킬 수 있다. 따라서, 모든 어레이부가 특정 데이터를 획득하고 난 후에, 단일 구성 메모리(710)는 구성 정보를 각 어레이부에 전달하여 각 어레이부의 작업 수행을 이어서 하게 할 수 있다.
각 어레이부의 영상 처리 작업 수행이 모두 완료된 경우에는, 그 작업 수행의 결과물은 각 데이터 메모리에 저장하거나 외부 메모리(미도시)에 보내져 저장될 수 있다.
이상에서, 기술한 재구성 가능 프로세서 및 제어 시스템에 관한 설명은 이하 재구성 가능 프로세서의 동작 방법에 대해서도 그대로 적용된다.
도 8은, 도 4의 재구성 가능 프로세서(300)의 동작 방법을 설명하기 위한 도면이다. 한편, 일 실시예에 따라, 이하에서 설명하는 재구성 가능 프로세서(300)는 도 5의 재구성 가능 프로세서(500), 도 6의 재구성 가능 프로세서(600) 및 도 7의 재구성 가능 프로세서(700)가 될 수 있다.
단계 810에서, 재구성 가능 프로세서(300)는 제어 프로세서로부터 작업 수행 명령을 수신할 수 있다. 더 구체적으로는, 재구성 가능 프로세서(300)에 포함된 구성 메모리가 작업 수행 명령을 제어 프로세서로부터 수신할 수 있다. 일 실시예에 따라, 제어 프로세서가 복수의 제어부로 구성되는 경우에, 복수의 제어부 각각으로부터 작업 수행 명령을 재구성 가능 프로세서(300)는 수신할 수 있다.
단계 820에서, 작업 수행 명령을 재구성 가능 프로세서(300)가 수신하는 경우, 재구성 가능 프로세서(300)에 포함된 복수의 재구성 가능 어레이 각각에게 단일 구성 메모리의 구성 정보를 전달할 수 있다.
구성 정보는 할당되는 명령어 정보 또는 재구성 가능 어레이의 복수개의 FU 간의 연결 상태에 관한 정보를 포함할 수 있다. 따라서, 각 FU에 매핑되는 명령 및 복수개의 FU간의 연결 상태는 구성 메모리에 저장된 구성 정보에 따라 달라질 수 있다.
또한, 구성 정보는 복수의 FU와 레지스터 파일의 연결 상태에 관한 정보, 복수의 FU와 데이터 메모리의 연결 상태에 관한 정보 및 복수의 FU와 외부 노드(미도시)와의 연결 상태에 관한 정보를 포함할 수 있다. 외부 노드는 특정 상수값을 저장할 수 있는 데, 복수의 FU가 특정 상수값을 필요로 하는 경우, 구성 정보에 의해 복수의 FU는 외부 노드에 접근하여 특정 상수값을 획득할 수 있다.
단계 830에서, 전달된 구성 정보에 기초하여, 복수의 재구성 가능 어레이 각각은 작업을 수행할 수 있다. 구체적으로는, 전달된 구성 정보에 따라, 복수의 재구성 가능 어레이 각각은 복수의 재구성 가능 어레이 각각에 포함된 복수의 FU를 이용하여 동시에 작업을 수행할 수 있다.
일 실시예에 따라, 단일 구성 메모리의 구성 정보를 통해 복수의 재구성 가능 어레이가 동시에 병렬적으로 데이터를 처리하게 되므로, 방대한 양의 데이터를 처리하는 작업에 유리할 수 있다. 예를 들어, 방대한 양의 데이터를 처리하는 작업으로는 영상 기기가 자연 이미지(Natural Image)에 가까운 화질을 제공하는 다양한 디지털 영상신호처리 기술이 있을 수 있다. 다양한 디지털 영상신호처리 기술에 관한 내용은 앞에서 서술한 바와 같다.
한편, 일 실시예에 따라, 제어 프로세서는 작업 수행 명령을 재구성 가능 프로세서(300)에게 전달하여 재구성 가능 프로세서(300)가 작업을 수행하게끔 할 수 있지만, 제어 프로세서가 직접 재구성 가능 프로세서(300)의 일부 리소스들을 공유하여 작업을 수행할 수 있다. 일 실시예에 따라, 재구성 가능 프로세서(300)는 제어 프로세서와 직접적으로 결합되어 VLIW 모드에서 작업을 수행할 수 있다.
또한, 복수의 FU 각각은 스칼라(scalar) 타입의 연산 또는 벡터(vector) 타입의 연산을 수행할 수 있다. 따라서, 재구성 가능 프로세서(300)는 동일한 명령어로서 다수의 데이터를 처리하는 것을 가능하게 한다.
도 9는, 일 실시예에 따라, 재구성 가능 프로세서(300)가 복수의 제어부로부터 작업 수행 명령을 수신하는 경우, 도 8의 단계 810을 보다 구체적으로 설명하기 위한 도면이다.
재구성 가능 프로세서(300)는 하나의 제어 프로세서로부터 작업 수행 명령을 수신할 수 있고, 복수의 제어부로부터 작업 수행 명령을 수신할 수 있다.(910) 이 경우, 재구성 가능 프로세서(300)에 포함된 단일 구성 메모리의 구성 정보를 재구성 가능 프로세서(300)에 포함된 복수의 재구성 가능 어레이에게 전달하게 되면, 복수의 재구성 가능 어레이 모두가 동시에 작업을 수행하기 때문에, 단일 구성 메모리는 복수의 제어부 모두로부터 작업 수행 명령을 수신하여야 구성 정보를 전달할 수 있다.
따라서, 단계 920에서, 재구성 가능 프로세서(300)는 모든 제어부로부터 작업 수행 명령을 수신하였는지 판단할 수 있다. 보다 구체적으로는 재구성 가능 프로세서(300)는 재구성 가능 프로세서(300)에 포함된 구성 메모리가 모든 제어부로부터 작업 수행 명령을 수신하였는지 판단할 수 있다. 일 실시예에 따라, 이러한 판단은 재구성 가능 프로세서(300)에 포함된 시작 동기화부가 할 수 있고, 다른 실시예에 따라, 모든 제어부로부터 작업 수행 명령을 시작 동기화부가 수신하여 수신된 작업 수행 명령을 재구성 가능 프로세서(300)에 포함된 구성 메모리에게 전달할 수 있다.
일 실시예에 따라, 재구성 가능 프로세서(300)가 모든 제어부로부터 작업 수행 명령을 수신하였다고 판단하였다면, 도 8의 단계 820에서 구성 메모리는 구성 정보를 재구성 가능 어레이에게 전달할 수 있다.
일 실시예에 따라, 재구성 가능 프로세서(300)가 모든 제어부로부터 작업 수행 명령을 수신하지 않았다고 판단하였다면, 모든 제어부로부터 작업 수행 명령을 수신할 때까지 대기할 수 있다.
도 10은, 일 실시예에 따라, 재구성 가능 프로세서(300)가 외부의 공유 메모리로부터 특정 데이터를 획득하는 경우, 단계 820 및 830을 보다 구체적으로 설명하기 위한 도면이다.
단계 1010 및 1020에서, 재구성 가능 프로세서(300)는 재구성 가능 프로세서(300)에 포함된 구성 메모리의 구성 정보를 재구성 가능 프로세서(300)에 포함된 재구성 가능 어레이에게 전달하게 되고, 재구성 가능 어레이는 복수의 FU를 이용하여 작업을 수행하게 된다.
단계 1030에서, 재구성 가능 프로세서(300)는 재구성 가능 어레이가 작업을 수행하는 도중에, 재구성 가능 프로세서(300)가 공유 데이터 메모리에 접근하는 지 여부를 판단할 수 있다. 구체적으로, 재구성 가능 프로세서(300)는, 재구성 가능 어레이가 작업을 수행하는 도중에 작업에 필요한 특정 데이터를 획득하기 위해 공유 데이터 메모리에 접근하였는지 여부를 판단할 수 있다.
일 실시예에 따라, 재구성 가능 프로세서(300)에 포함된 복수의 재구성 가능 어레이 각각이 공유 데이터 메모리에 접근하여 동시에 특정 데이터를 획득할 수 없는 경우에는, 복수의 재구성 가능 어레이 각각이 순차적으로 공유 데이터 메모리에 접근하여 특정 데이터를 획득하여야 한다.
단계 1030에서, 재구성 가능 프로세서(300)가 공유 데이터 메모리에 접근하는 경우, 재구성 가능 프로세서(300)는 구성 메모리의 구성 정보의 전달을 중지시킬 수 있다.(1040) 복수의 재구성 가능 어레이 각각이 하나의 구성 정보에 따라 동시에 작동하기 때문에, 복수의 재구성 가능 어레이 모두가 공유 데이터 메모리에 접근하여 특정 데이터를 획득할 때까지 복수의 재구성 가능 어레이 모두는 작동이 중지되어야 한다. 따라서, 이러한 구성 정보의 전달을 중지시키기 위해 재구성 가능 프로세서(300)는 어레이 동기화부를 포함할 수 있다. 일 실시예에 따라, 어레이 동기화부는 중지 신호를 발생하므로써, 복수의 재구성 가능 어레이 모두가 공유 데이터 메모리에 접근하여 특정 데이터를 획득할 때까지, 구성 메모리의 구성 정보의 전달을 중지시킬 수 있다.
단계 1050에서, 재구성 가능 프로세서(300)는 복수의 재구성 가능 어레이 모두가 공유 데이터 메모리에 접근하여 특정 데이터를 획득하였는 지 여부를 판단할 수 있다. 일 실시예에 따라, 이러한 판단은 어레이 동기화부가 할 수 있다.
단계 1050에서, 복수의 재구성 가능 어레이 모두가 특정 데이터를 획득하였다면, 재구성 가능 프로세서(300)는 구성 메모리의 구성 정보의 전달을 재개시킬 수 있다.(1060) 일 실시예에 따라, 이러한 재개 신호는 어레이 동기화부의 중지 신호가 중단되는 것으로 볼 수 있다. 재구성 가능 프로세서(300)는 구성 메모리의 구성 정보 전달을 통해 다시 작업 수행을 재개할 수 있다.(1070)
단계 1030에서, 재구성 가능 프로세서(300)가 공유 데이터 메모리에 접근하지 않는 경우, 재구성 가능 프로세서(300)는 계속하여 작업을 수행하게 된다.(1070)
한편, 상술한 재구성 가능 프로세서의 동작 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 이와 같은 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 이와 같은 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 실시예들을 중심으로 살펴보았다. 개시된 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자는 개시된 실시예들이 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 실시예들에 따른 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 발명의 범위에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 제어 프로세서로부터 작업 수행 명령을 수신하는 단일 구성 메모리; 및
    상기 수신된 명령에 기초하여, 상기 단일 구성 메모리(configurable memory)로부터의 구성 정보를 각각 수신하는 복수의 재구성 가능 어레이;를 포함하고,
    상기 구성 정보에 기초하여, 상기 복수의 재구성 가능 어레이 각각은 상기 복수의 재구성 가능 어레이 각각에 포함된 복수의 기능 유닛(Function Unit)을 이용하여 상기 작업을 동시에 수행하는 것인 재구성 가능 프로세서(Reconfigurable Processor).
  2. 제 1 항에 있어서,
    상기 제어 프로세서는 복수의 제어부로 구성되어 있고,
    상기 복수의 제어부 각각으로부터의 복수의 작업 수행 명령을 상기 단일 구성 메모리가 모두 수신하였는지 여부를 판단하는 시작 동기화부;를 더 포함하는 것인 재구성 가능 프로세서.
  3. 제 2 항에 있어서,
    상기 판단 결과, 상기 복수의 작업 수행 명령을 상기 단일 구성 메모리가 모두 수신하였다면, 상기 구성 정보를 상기 복수의 재구성 가능 어레이 각각에게 전달하는 것인 재구성 가능 프로세서.
  4. 제 1 항에 있어서,
    상기 복수의 재구성 가능 어레이 각각이 외부 공유 데이터 메모리에 접근하여 특정 데이터를 획득하는 경우, 상기 복수의 재구성 가능 어레이 모두가 상기 특정 데이터를 획득할 때까지 상기 구성 정보를 상기 복수의 재구성 가능 어레이 각각에게 전달하는 것을 중지시키는 어레이 동기화부;를 더 포함하는 것인 재구성 가능 프로세서.
  5. 제 4 항에 있어서,
    상기 어레이 동기화부는,
    상기 복수의 재구성 가능 어레이 모두가 상기 특정 데이터를 획득하는 경우, 상기 구성 정보의 전달을 재개시키는 것인 재구성 가능 프로세서.
  6. 제 1 항에 있어서,
    상기 복수의 재구성 가능 어레이 각각은,
    상기 복수의 기능 유닛이 서로 연결되어 구성된 CGA(Coarse Grained Array)인 것인 재구성 가능 프로세서.
  7. 제 1 항에 있어서,
    상기 구성 정보는 상기 복수의 기능 유닛을 재구성하기 위한 정보를 갖는 것인 재구성 가능 프로세서.
  8. 제 7 항에 있어서,
    상기 복수의 재구성 가능 어레이 각각은, 레지스터 파일을 포함하고,
    상기 재구성하기 위한 정보는, 상기 복수의 기능 유닛간의 연결 구성에 관한 정보, 상기 복수의 기능 유닛 중의 어느 하나의 기능 유닛과 상기 레지스터 파일간의 연결 구성에 관한 정보, 상기 복수의 기능 유닛 중의 어느 하나의 기능 유닛과 외부 공유 자원간의 연결 구성에 관한 정보를 포함하는 것인 재구성 가능 프로세서.
  9. 제 1 항에 있어서,
    상기 복수의 기능 유닛 각각은 스칼라 연산 또는 벡터 연산을 수행하는 것인 재구성 가능 프로세서.
  10. 제 1 항에 있어서,
    상기 제어 프로세서는 상기 복수의 재구성 가능 어레이 중 어느 하나의 재구성 가능 어레이에 포함된 리소스(Resource)를 직접 제어하여 상기 작업을 수행하는 것인 재구성 가능 프로세서.
  11. 제어 프로세서로부터 작업 수행 명령을 재구성 가능 프로세서(Reconfigurable Processor)에 포함된 단일 구성 메모리(Configurable memory)가 수신하는 단계;
    상기 수신된 명령에 기초하여, 상기 재구성 가능 프로세서에 포함된 복수의 재구성 가능 어레이 각각에게 상기 단일 구성 메모리의 구성 정보를 전달하는 단계;
    상기 구성 정보에 기초하여, 상기 복수의 재구성 가능 어레이 각각은 상기 복수의 재구성 가능 어레이 각각에 포함된 복수의 기능 유닛(Function Unit)을 이용하여 동시에 상기 작업을 수행하는 단계;를 포함하는 재구성 가능 프로세서(Reconfigurable Processor) 동작 방법.
  12. 제 11 항에 있어서,
    상기 제어 프로세서는 복수의 제어부로 구성되어 있고,
    상기 단일 구성 메모리가 수신하는 단계는,
    상기 복수의 제어부 각각으로부터의 복수의 작업 수행 명령을 수신하는 단계;를 포함하는 것인 재구성 가능 프로세서 동작 방법.
  13. 제 12 항에 있어서,
    상기 구성 정보를 전달하는 단계는,
    상기 단일 구성 메모리가 상기 복수의 작업 수행 명령을 모두 수신하였을 경우, 상기 복수의 재구성 가능 어레이 각각에게 상기 구성 정보를 전달하는 단계;를 포함하는 것인 재구성 가능 프로세서 동작 방법.
  14. 제 11 항에 있어서,
    상기 작업을 동시에 수행하는 단계는,
    상기 복수의 재구성 가능 어레이 각각이 외부 공유 데이터 메모리에 접근하여 특정 데이터를 획득하는 단계;를 포함하는 것인 재구성 가능 프로세서 동작 방법.
  15. 제 14 항에 있어서,
    상기 구성 정보를 전달하는 단계는,
    상기 복수의 재구성 가능 어레이 모두가 상기 특정 데이터를 획득할 때까지 상기 구성 정보의 전달을 중지시키는 단계;
    상기 복수의 재구성 가능 어레이 모두가 상기 특정 데이터를 획득하는 경우, 상기 구성 정보의 전달을 재개시키는 단계;를 포함하는 것인 재구성 가능 프로세서 동작 방법.
  16. 제 11 항에 있어서,
    상기 구성 정보는 상기 복수의 기능 유닛을 재구성하기 위한 정보를 갖는 것인 재구성 가능 프로세서 동작 방법.
  17. 제 16 항에 있어서,
    상기 복수의 재구성 가능 어레이 각각은, 레지스터 파일을 포함하고,
    상기 재구성하기 위한 정보는, 상기 복수의 기능 유닛간의 연결 구성에 관한 정보, 상기 복수의 기능 유닛 중의 어느 하나의 기능 유닛과 상기 레지스터 파일간의 연결 구성에 관한 정보, 상기 복수의 기능 유닛 중의 어느 하나의 기능 유닛과 외부 공유 자원간의 연결 구성에 관한 정보를 포함하는 것인 재구성 가능 프로세서 동작 방법.
  18. 제 11항에 있어서,
    상기 복수의 기능 유닛 각각은 스칼라 연산 또는 벡터 연산을 수행하는 것인 재구성 가능 프로세서 동작 방법.
  19. 제 11 항에 있어서,
    상기 제어 프로세서가 상기 복수의 재구성 가능 어레이 중 어느 하나의 재구성 가능 어레이에 포함된 리소스(Resource)를 직접 제어하여 상기 작업을 수행하는 단계;를 더 포함하는 것인 재구성 가능 프로세서 동작 방법.
  20. 상기 제 11 항 내지 제 19 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020140142780A 2014-10-21 2014-10-21 재구성 가능 프로세서 및 그 동작 방법 KR102277439B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140142780A KR102277439B1 (ko) 2014-10-21 2014-10-21 재구성 가능 프로세서 및 그 동작 방법
PCT/KR2015/011053 WO2016064158A1 (ko) 2014-10-21 2015-10-19 재구성 가능 프로세서 및 그 동작 방법
US15/520,294 US10396797B2 (en) 2014-10-21 2015-10-19 Reconfigurable processor and operation method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140142780A KR102277439B1 (ko) 2014-10-21 2014-10-21 재구성 가능 프로세서 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20160046623A true KR20160046623A (ko) 2016-04-29
KR102277439B1 KR102277439B1 (ko) 2021-07-14

Family

ID=55761137

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140142780A KR102277439B1 (ko) 2014-10-21 2014-10-21 재구성 가능 프로세서 및 그 동작 방법

Country Status (3)

Country Link
US (1) US10396797B2 (ko)
KR (1) KR102277439B1 (ko)
WO (1) WO2016064158A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210123435A (ko) * 2017-05-17 2021-10-13 구글 엘엘씨 특수 목적 뉴럴 네트워크 트레이닝 칩

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6960479B2 (ja) 2017-03-14 2021-11-05 アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. 再構成可能並列処理
US11086815B1 (en) * 2019-04-15 2021-08-10 Xilinx, Inc. Supporting access to accelerators on a programmable integrated circuit by multiple host processes
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11392740B2 (en) 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050123163A (ko) * 2003-04-15 2005-12-29 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 프로세싱 시스템, 프로세싱 시스템 프로그래밍 방법 및컴파일러 프로그램 제품
KR20090045026A (ko) * 2007-10-30 2009-05-07 코어윅스, 에스.에이. 중첩 루프 및 프로그래밍 도구를 위한 재구성가능 코프로세서 아키텍처 템플릿
KR20100115578A (ko) * 2009-04-20 2010-10-28 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
KR101293701B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006287675A (ja) * 2005-04-01 2006-10-19 Renesas Technology Corp 半導体集積回路
US7568136B2 (en) * 2005-11-08 2009-07-28 M2000 Sa. Reconfigurable system and method with corruption detection and recovery
KR100730280B1 (ko) * 2005-12-06 2007-06-19 삼성전자주식회사 재구성 프로세서에서 루프 버퍼를 최적화하기 위한 장치 및방법
US20100235554A1 (en) * 2007-10-19 2010-09-16 Rambus Inc. Reconfigurable point-to-point memory interface
US8751771B2 (en) 2010-09-29 2014-06-10 Nvidia Corporation Efficient implementation of arrays of structures on SIMT and SIMD architectures
CN101980147B (zh) 2010-11-04 2013-11-27 威盛电子股份有限公司 多线程处理器及其指令执行与同步方法
US8468547B2 (en) 2010-11-23 2013-06-18 Advanced Micro Devices, Inc. Method and system for synchronizing thread wavefront data and events
JP5739779B2 (ja) 2011-09-26 2015-06-24 ルネサスエレクトロニクス株式会社 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素
KR20130089524A (ko) 2012-02-02 2013-08-12 삼성전자주식회사 재구성 가능 프로세서 및 그 프로세서에서의 멀티 쓰레딩 지원 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050123163A (ko) * 2003-04-15 2005-12-29 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 프로세싱 시스템, 프로세싱 시스템 프로그래밍 방법 및컴파일러 프로그램 제품
KR20090045026A (ko) * 2007-10-30 2009-05-07 코어윅스, 에스.에이. 중첩 루프 및 프로그래밍 도구를 위한 재구성가능 코프로세서 아키텍처 템플릿
KR20100115578A (ko) * 2009-04-20 2010-10-28 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
KR101293701B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210123435A (ko) * 2017-05-17 2021-10-13 구글 엘엘씨 특수 목적 뉴럴 네트워크 트레이닝 칩
KR20230003443A (ko) * 2017-05-17 2023-01-05 구글 엘엘씨 특수 목적 뉴럴 네트워크 트레이닝 칩

Also Published As

Publication number Publication date
KR102277439B1 (ko) 2021-07-14
US10396797B2 (en) 2019-08-27
WO2016064158A1 (ko) 2016-04-28
US20170317679A1 (en) 2017-11-02

Similar Documents

Publication Publication Date Title
KR102277439B1 (ko) 재구성 가능 프로세서 및 그 동작 방법
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
JP6047747B2 (ja) 制御タイプの実行モードとデータフロータイプの実行モードとの組み合わせによりタスクを並列に実行可能な複数の処理ユニットを有するシステム
US8675006B2 (en) Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8671418B2 (en) Environment modification in a hybrid node computing environment
KR101713009B1 (ko) 스케일가능한 컴퓨트 패브릭
US9483414B2 (en) Ordered memory pages transmission in virtual machine live migration
CN104714846A (zh) 资源处理方法、操作系统及设备
US20130268937A1 (en) Distributed processing system, scheduler node and scheduling method of distributed processing system, and program generation apparatus thereof
US20230023303A1 (en) Machine learning network implemented by statically scheduled instructions
TWI489392B (zh) 多個應用程式分享的圖形處理單元
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
JP5885481B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US20050278720A1 (en) Distribution of operating system functions for increased data processing performance in a multi-processor architecture
US20150143378A1 (en) Multi-thread processing apparatus and method for sequentially processing threads
JP2021034023A (ja) アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置
US11042502B2 (en) Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions
US9690600B2 (en) Reconfigurable processor and method of operating the same
US10353591B2 (en) Fused shader programs
CN103197917A (zh) 计算线程阵列粒度执行抢占
Grudnitsky et al. COREFAB: Concurrent reconfigurable fabric utilization in heterogeneous multi-core systems
Tarakji et al. The development of a scheduling system GPUSched for graphics processing units
US10261817B2 (en) System on a chip and method for a controller supported virtual machine monitor

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