KR101699910B1 - 재구성 가능 프로세서 및 그 제어 방법 - Google Patents

재구성 가능 프로세서 및 그 제어 방법 Download PDF

Info

Publication number
KR101699910B1
KR101699910B1 KR1020100019325A KR20100019325A KR101699910B1 KR 101699910 B1 KR101699910 B1 KR 101699910B1 KR 1020100019325 A KR1020100019325 A KR 1020100019325A KR 20100019325 A KR20100019325 A KR 20100019325A KR 101699910 B1 KR101699910 B1 KR 101699910B1
Authority
KR
South Korea
Prior art keywords
vector
lane
processing elements
unit
vector lane
Prior art date
Application number
KR1020100019325A
Other languages
English (en)
Other versions
KR20110100381A (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 KR1020100019325A priority Critical patent/KR101699910B1/ko
Priority to US12/987,391 priority patent/US9135003B2/en
Publication of KR20110100381A publication Critical patent/KR20110100381A/ko
Application granted granted Critical
Publication of KR101699910B1 publication Critical patent/KR101699910B1/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/22Microcontrol or microprogram arrangements
    • 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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, 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, 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

Abstract

벡터 연산을 효율적으로 할 수 있는 재구성 가능 프로세서 및 그 제어 방법이 개시된다. 본 발명의 일실시예에 따르면, 재구성 가능 프로세서는 벡터 레인 구성 정보에 따라 다수의 프로세싱 엘리먼트(PE) 중 적어도 하나의 프로세싱 엘리먼트를 벡터 레인으로 지정하고, 지정된 벡터 레인에 벡터 연산을 할당한다.

Description

재구성 가능 프로세서 및 그 제어 방법{Reconfigurable processor and control method using the same}
벡터 레인을 포함하는 재구성 가능 프로세서를 이용하여 벡터 데이터를 연산하는 기술과 관련된다.
재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 벡터 연산을 효율적으로 실행하기 위한 재구성 가능 아키텍처(reconfigurable architecture)에 대한 연구가 활발히 진행되고 있다.
벡터 연산을 효율적으로 할 수 있는 재구성 가능 프로세서 및 그 제어 방법이 개시된다.
본 발명의 일 실시예에 따른 재구성 가능 프로세서는 다수의 프로세싱 엘리먼트와, 벡터 레인 구성 정보에 따라 다수의 프로세싱 엘리먼트 중 적어도 하나의 프로세싱 엘리먼트를 벡터 레인(lane)으로 지정하는 지정부 및 지정된 벡터 레인에 벡터 연산을 할당하는 할당부를 포함한다.
여기서, 벡터 레인의 구성 정보는 어플리케이션의 종류에 대응되는 정보이다.
여기서, 지정부는 상기 벡터 레인에 벡터 데이터를 읽거나 쓸 수 있는 읽기/쓰기부 또는 연산 유닛을 포함하는 프로세싱 엘리먼트가 포함되도록, 벡터 레인을 지정할 수 있다.
여기서, 지정부는 동일한 구조를 갖는 여러 개의 벡터 레인을 지정할 수 있다.
본 발명의 일 실시에에 따른 재구성 가능 프로세서의 제어 방법은 벡터 레인 구성 정보에 따라 다수의 프로세싱 엘리먼트 중 적어도 하나의 프로세싱 엘리먼트를 벡터 레인(lane)으로 지정하는 단계 및 지정된 벡터 레인에 벡터 연산을 할당하는 단계를 포함한다.
여기서, 벡터 레인(lane)으로 지정하는 단계는 처리할 어플리케이션의 종류를 판단하는 단계 및 판단된 어플리케이션의 종류에 대응되는 벡터 레인 구성 정보에 따라, 벡터 레인을 지정하는 단계를 포함할 수 있다.
여기서, 벡터 레인(lane)으로 지정하는 단계는 벡터 레인 구성 메모리로부터 벡터 레인의 구성 정보를 읽어오는 단계를 포함할 수 있다.
여기서, 벡터 레인(lane)으로 지정하는 단계는 벡터 데이터를 읽거나 쓸 수 있는 읽기/쓰기부 또는 연산 유닛을 포함하는 프로세싱 엘리먼트가 포함되도록 벡터 레인을 지정할 수 있다.
개시된 내용에 따르면, 벡터 레인을 포함한 재구성 가능 프로세서를 이용하여 벡터 연산을 실행함으로써, 효율적으로 벡터 연산을 실행할 수 있다.
도 1은 본 발명의 일 실시예와 관련된 재구성 가능 프로세서(reconfigurable processor)의 블록 구성도(block diagram)이다.
도 2는 본 발명의 일 실시예에 따른 재구성 가능 프로세서를 설명하기 위한 도면이다.
도 3은 본 발명의 다른 실시예에 따른 재구성 가능 프로세서를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션별 벡터 레인 구성 정보를 설명하기 위한 테이블이다.
도 5는 본 발명의 일 실시예에 따른 재구성 가능 프로세서 제어 방법을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 발명을 실시하기 위한 구체적인 내용에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예와 관련된 재구성 가능 프로세서(reconfigurable processor)의 블록 구성도(block diagram)이다.
재구성 가능 프로세서(1000)는 재구성 가능 어레이(1100), 메모리(1200) 및 제어부(1300)를 포함한다.
재구성 가능 어레이(1100)는 다수의 프로세싱 엘리먼트(processing element; PE)(1110, 1120, 1130, 1140)를 포함한다. 각각의 프로세싱 엘리먼트(1110, 1120, 1130, 1140)는 인스트럭션(instruction) 또는 데이터를 병렬적으로 처리하는 것이 가능하다.
프로세싱 엘리먼트(1110, 1120, 1130, 1140)들의 연결 상태 및 동작 순서는 처리하고자 하는 작업에 따라 변경될 수 있다. 예를 들면, 프로세싱 엘리먼트(1110, 1120, 1130, 1140)들의 연결 상태 및 동작 순서는 벡터 연산을 효율적으로 처리할 수 있도록 제어부(1300)에 의해서 변경될 수 있다. 이에 대한 구체적인 설명은 이하의 도 2 및 도 3을 참조하여 후술한다.
여기서, 벡터 연산은 데이터 간에 의존도(dependency)가 없고, 동일한 연산을 반복적으로 수행하는 매트릭스(matrix) 연산과 같은 연산을 의미한다. 또한, 벡터 연산은 제어부(1300)가 프로세싱 엘리먼트를 제어하여 벡터 데이터를 처리하는 과정을 의미한다.
각각의 프로세싱 엘리먼트는 연산 유닛(function unit; FU)으로 구성되거나 연산 유닛 및 읽기/쓰기부(load/store unit)로 구성될 수 있다. 읽기/쓰기부는 벡터 데이터를 메모리(1200)에 저장하거나 쓸 수 있다. 예를 들면, 메모리(1200)는 메인 메모리와 벡터 레지스터 파일로 구성된 경우, 읽기/쓰기부는 메인 메모리로부터 데이터를 읽고, 읽어온 데이터를 벡터 레지스터 파일에 저장하거나 벡터 레지스터 파일에 저장된 데이터를 메인 메모리에 저장할 수 있다. 연산 유닛은 어플리케이션에 포함된 벡터 데이터를 연산할 수 있다. 연산 유닛은 덧셈, 뺄셈, AND, OR 연산 등과 같은 간단한 연산 및/또는 곱셈, 나눗셈, 부동소수점 연산과 같은 복잡한 연산을 실행할 수 있다. 예를 들면, 프로세싱 엘리먼트는 간단한 연산만을 실행할 수 있는 연산 유닛만을 포함할 수 있다. 또는, 프로세싱 엘리먼트는 간단한 연산 및 복잡한 연산을 모두 실행할 수 있는 연산 유닛을 포함할 수 있다.
각각의 프로세싱 엘리먼트는 어떤 작업을 병렬적으로 처리하는 것이 가능하다. 예를 들면, 각각의 프로세싱 엘리먼트는 데이터 레벨 병렬(data level parallelism; DLP) 처리를 실행할 수 있다.
메모리(1200)는 벡터 연산시 필요한 데이터를 저장할 수 있다. 예를 들면, 메모리(1200)는 처리할 벡터 데이터를 저장하거나 처리 결과를 임시로 저장 또는 처리된 벡터 데이터를 저장할 수 있다. 또는, 메모리(1200)에는 벡터 레인(lane)의 구성 정보, 재구성 가능 프로세서(1000)의 구동시 필요한 정보, 재구성 가능 어레이의 연결 상태 정보, 재구성 가능 어레이의 동작 방법에 대한 정보 등이 저장될 수 있다. 여기서, 벡터 레인이란 벡터 연산을 하기 위해 지정된 하나 이상의 프로세싱 엘리먼트를 의미한다. 또한, 벡터 레인의 구성 정보는 벡터 레인의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 연산 유닛이 포함된 프로세싱 엘리먼트의 개수, 프로세싱 엘리먼트 간의 연결 상태 등을 포함할 수 있다. 여기서, 연산 유닛은 곱셈, 나눗셈, 부동소수점 연산과 같은 복잡한 연산을 할 수 있다.
본 발명의 일 실시예에 따른 재구성 가능 프로세서(1000)는 CGA(coarse-grained array) 모드, VLIW(very long instruction word) 모드 및 벡터 모드를 포함할 수 있다. 예를 들면, 재구성 가능 프로세서(1000)는 CGA 모드에서 루프 연산을 처리하고, VLIW 모드에서 일반적인 연산을 처리하고, 벡터 모드에서 벡터 연산을 처리할 수 있다. 이러한 모드 전환은 제어부(1300)에 의해 수행될 수 있다.
제어부(1300)는 지정부(1310) 및 할당부(1320)를 포함한다. 벡터 연산 모드가 실행되면, 지정부(1310)는 메모리(1200)에 저장된 벡터 레인의 구성 정보를 읽는다. 그리고, 지정부(1310)는 벡터 레인의 구성 정보에 따라 재구성 가능 어레이에 포함된 다수의 프로세싱 엘리먼트 중 하나 이상의 프로세싱 엘리먼트를 벡터 레인으로 지정한다. 지정부(1310)는 벡터 레인에 포함된 프로세싱 엘리머트 간의 연결 상태 정보 및 벡터 레인과 메모리(1200) 간의 연결 상태 정보 등에 기초하여, 각 구성요소의 연결 상태를 변경할 수 있다.
지정부(1310)는 처리해야할 어플리케이션의 종류에 대응되는 벡터 레인의 구성 정보에 따라 재구성 가능 어레이에 포함된 다수의 프로세싱 엘리먼트 중 하나 이상의 프로세싱 엘리먼트를 벡터 레인으로 지정한다. 즉, 지정부(1310)는 처리할 어플리케이션의 종류를 판단하고, 판단된 어플리케이션의 종류에 대응되는 벡터 레인의 구성 정보를 이용하여 벡터 레인을 지정할 수 있다. 구체적인 설명은 이하의 도 4를 참조하여 후술하겠다.
지정부(1310)는 벡터 레인을 적어도 하나 이상 지정할 수 있다. 이때, 지정부(1310)는 다수의 벡터 레인이 동일한 구조를 갖도록 지정할 수 있다.
할당부(1320)는 지정된 벡터 레인에 벡터 연산을 할당한다. 그러면, 벡터 레인은 할당된 벡터 데이터를 연산('벡터 연산')한다. 이때, 다수의 벡터 레인이 벡터 데이터를 병렬적으로 처리할 수 있다. 연산 결과는 메모리(1200)에 저장될 수 있다.
할당부(1320)는 메모리로부터 벡터 데이터 또는 벡터 연산을 읽거나 벡터 메모리에 연산된 벡터 데이터를 쓸 수 있다.
이하의 도 2 내지 5를 참조하여, 본 발명에 따른 재구성 가능 프로세서를 구체적으로 설명한다.
재구성 가능 프로세서는 벡터 레인 구성 정보에 따라 다양한 벡터 레인을 구성함으로써, 벡터 연산을 효율적으로 할 수 있다.
또한, 재구성 가능 프로세서는 처리할 어플리케이션의 종류에 따라 벡터 레인을 구성함으로써, 다양한 어플리케이션에 포함된 벡터 데이터를 효율적으로 연산할 수 있다.
도 2는 본 발명의 일 실시예에 따른 재구성 가능 프로세서를 설명하기 위한 도면이다.
재구성 가능 프로세서(2000)는 재구성 가능 어레이(2100), 벡터 레인 구성 메모리(2200) 및 제어부(2300)를 포함한다.
재구성 가능 어레이(2100)는 다수의 프로세싱 엘리먼트(processing element)(2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108) 및 벡터 레지스터 파일(2150)을 포함할 수 있다. 여기서, 다수의 프로세싱 엘리먼트들은 연산 유닛(FU)을 포함하거나, 연산 유닛 및 읽기/쓰기부를 포함할 수 있다.
벡터 레지스터 파일(2150)은 벡터 연산에 필요한 데이터를 저장할 수 있다. 본 실시예에서는, 벡터 레지스터 파일(2150)의 위치가 재구성 가능 어레이(2100)의 내부에 존재하지만, 벡터 레지스터 파일(2150)의 위치는 이에 한정되는 것은 아니다. 또한, 벡터 레지스터 파일(2150)의 개수는 벡터 레인으로 지정된 모든 프로세싱 엘리먼트의 개수와 동일하고, 다수의 벡터 레지스터 파일(2150)은 각각의 프로세싱 엘리먼트에 연결될 수 있다.
벡터 레인 구성 메모리(2200)는 벡터 레인의 구성 정보를 포함할 수 있다. 여기서, 벡터 레인의 구성 정보는 벡터 레인의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수, 벡터 데이터를 읽거나 쓸 수 있는 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수, 프로세싱 엘리먼트 간의 연결 상태 등을 포함할 수 있다. 특정 연산 유닛이란 사용자 또는 제조업자 등에 의해서 지정된 연산 유닛 일 수 있다. 또한, 특정 연산 유닛이란 곱셈, 나눗셈 및 부동소수점 중 적어도 어느 하나의 연산을 할 수 있는 유닛을 의미할 수 있다.
이하에서는, 벡터 레인의 구성 정보가 벡터 레인의 개수는 4개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 1개인 경우를 기준으로 설명한다.
벡터 연산 모드가 실행되면, 제어부(2300)의 지정부(2310)는 벡터 레인 구성 메모리(2200)에 저장된 벡터 레인의 구성 정보를 읽는다. 지정부(2310)는 벡터 레인 구성 정보에 따라 4개의 벡터 레인(2110, 2120, 2130, 2140)을 지정한다.
여기서, 제 1 벡터 레인(2110)은 2개의 프로세싱 엘리먼트(2101, 2102)를 포함하고, 프로세싱 엘리먼트(2102)는 읽기/쓰기부를 포함한다.
여기서, 제 2 벡터 레인(2120)은 2개의 프로세싱 엘리먼트(2103, 2104)를 포함하고, 프로세싱 엘리먼트(2103)는 읽기/쓰기부를 포함한다.
여기서, 제 3 벡터 레인(2130)은 2개의 프로세싱 엘리먼트(2105, 2106)를 포함하고, 프로세싱 엘리먼트(2106)는 읽기/쓰기부를 포함한다.
여기서, 제 4 벡터 레인(2140)은 2개의 프로세싱 엘리먼트(2107, 2108)를 포함하고, 프로세싱 엘리먼트(2107)는 읽기/쓰기부를 포함한다.
이때, 벡터 레지스터 파일(2150)은 8개가 존재하고, 각각의 프로세싱 엘리먼트(2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108)에 연결될 수 있다. 지정부(2310)는 다수의 벡터 레인(2110. 2120, 2130, 2140)이 동일한 구조를 갖도록 지정할 수 있다.
지정부(2310)는 벡터 레인에 포함된 프로세싱 엘리머트 간의 연결 상태 정보 및, 벡터 레인과 벡터 레지스터 파일(2150) 간의 연결 상태 정보 등에 기초하여, 각 구성요소의 연결 상태를 변경할 수 있다.
할당부(2320)는 각각의 벡터 레인(2110, 2120, 2130, 2140)에 처리할 벡터 연산을 할당한다. 그러면, 각각의 벡터 레인(2110, 2120, 2130, 2140)들은 할당된 벡터 데이터를 병렬적으로 처리할 수 있다. 각각의 벡터 레인들은 각각의 벡터 레지스터 파일로부터 벡터 데이터를 입력받아 벡터 연산을 한다. 그리고, 각각의 벡터 레인들은 연산 결과를 각각의 벡터 레지스터 파일에 저장할 수 있다.
재구성 가능 프로세서는 벡터 레인 구성 정보에 따라 다양한 벡터 레인을 구성함으로써, 벡터 연산을 효율적으로 할 수 있다.
도 3은 본 발명의 다른 실시예에 따른 재구성 가능 프로세서를 설명하기 위한 도면이다.
재구성 가능 프로세서(3000)는 재구성 가능 어레이(3100), 벡터 레인 구성 메모리(3200) 및 제어부(3300)를 포함한다.
재구성 가능 어레이(3100)는 다수의 프로세싱 엘리먼트(processing element)(3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108) 및 벡터 레지스터 파일(3130, 3131)을 포함할 수 있다.
벡터 레지스터 파일(3130, 3131)은 벡터 연산에 필요한 데이터를 저장할 수 있다.
벡터 레인 구성 메모리(3200)는 벡터 레인의 구성 정보를 포함할 수 있다. 이하에서는, 벡터 레인의 구성 정보가 벡터 레인의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 4개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 1개인 경우를 기준으로 설명한다.
벡터 연산 모드가 실행되면, 제어부(3300)의 지정부(3310)는 벡터 레인 구성 메모리(3200)에 저장된 벡터 레인의 구성 정보를 읽는다. 지정부(3310)는 벡터 레인 구성 정보에 따라 2개의 벡터 레인(3110, 3120)을 지정한다.
여기서, 제 1 벡터 레인(3110)은 4개의 프로세싱 엘리먼트(3101, 3102, 3103, 3104)를 포함하고, 프로세싱 엘리먼트(3102)는 읽기/쓰기부를 포함한다.
여기서, 제 2 벡터 레인(3120)은 4개의 프로세싱 엘리먼트(3105, 3106, 3107, 3108)를 포함하고, 프로세싱 엘리먼트(3105)는 읽기/쓰기부를 포함한다.
제 1 벡터 레인(3110)은 제 1 벡터 레지스터 파일(3130)과 연결되고, 제 2 벡터 레인(3120)은 제 2 벡터 레지스터 파일(3131)과 연결된다. 구체적으로, 제 1 벡터 레인(3110)에 포함된 4개의 프로세싱 엘리먼트(3101, 3102, 3103, 3104)가 제 1 벡터 레지스터 파일(3130)에 연결되고, 제 2 벡터 레인(3120)에 포함된 4개의 프로세싱 엘리먼트(3105, 3106, 3107, 3108)가 제 2 벡터 레지스터 파일(3131)에 연결될 수 있다.
할당부(3320)는 각각의 벡터 레인(3110, 3120)에 처리할 벡터 연산을 할당한다. 그러면, 각각의 벡터 레인(3110, 3120)들은 할당된 벡터 데이터를 병렬적으로 처리할 수 있다.
재구성 가능 프로세서는 벡터 레인 구성 정보에 따라 다양한 벡터 레인을 구성함으로써, 벡터 연산을 효율적으로 할 수 있다.
도 4는 본 발명의 일 실시예에 따른 어플리케이션별 벡터 레인 구성 정보를 설명하기 위한 테이블이다.
도 4를 참조하면, 처리할 어플리케이션이 제 1 어플리케이션(4000) 인 경우,벡터 레인의 구성 정보는 벡터 레인의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 1개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수는 1개이다. 위와 같이 구성함으로써, 재구성 가능 프로세서가 제 1 어플리케이션을 가장 효율적으로 처리할 수 있다. 특정 연산 유닛이란 사용자 또는 제조업자 등에 의해서 지정된 연산 유닛일 수 있다. 또한, 특정 연산 유닛이란 곱셈, 나눗셈 및 부동소수점 중 적어도 어느 하나의 연산을 할 수 있는 유닛을 의미할 수 있다.
처리할 어플리케이션이 제 2 어플리케이션(4100) 인 경우, 벡터 레인의 구성 정보는 벡터 레인의 개수는 4개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 1개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수는 0 개이다.
처리할 어플리케이션이 제 3 어플리케이션(4200) 인 경우, 벡터 레인의 구성 정보는 벡터 레인의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 4개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 1개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수는 0개이다.
처리할 어플리케이션이 제 4 어플리케이션(4300) 인 경우, 벡터 레인의 구성 정보는 벡터 레인의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수는 4개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수는 2개이고, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수는 2개이다.
예를 들면, 처리할 어플리케이션이 제 2 어플리케이션(4100)인 경우, 제어부의 지정부는 제 2 어플리케이션(4100)에 대응되는 벡터 레인 정보에 따라 벡터 레인을 지정한다. 이 경우, 지정된 벡터 레인은 도 2에 도시된 벡터 레인과 동일하다.
또 다른 예를 들면, 처리할 어플리케이션이 제 3 어플리케이션(4200)인 경우, 제어부의 지정부는 제 3 어플리케이션(4200)에 대응되는 벡터 레인 정보에 따라 벡터 레인을 지정한다. 이 경우, 지정된 벡터 레인은 도 3에 도시된 벡터 레인과 동일하다.
또 다른 예를 들면, 처리할 어플리케이션이 제 4 어플리케이션(4200)인 경우, 제어부의 지정부는 제 3 어플리케이션(4200)에 대응되는 벡터 레인 정보에 따라 벡터 레인을 지정한다. 예를 들면, 1개의 벡터 레인에는 4개의 프로세싱 엘리먼트가 포함되고, 4개의 프로세싱 엘리먼트 중 2개의 프로세싱 엘리먼트에는 읽기/쓰기부를 포함되고, 4개의 프로세싱 엘리먼트 중 2개의 프로세싱 엘리먼트에는 특정 연산 유닛이 포함된다(미도시).
재구성 가능 프로세서는 처리할 어플리케이션의 종류에 따라 벡터 레인을 구성함으로써, 다양한 어플리케이션에 포함된 벡터 데이터를 효율적으로 연산할 수 있다.
도 5는 본 발명의 일 실시예에 따른 재구성 가능 프로세서 제어 방법을 설명하기 위한 흐름도이다.
도 2 및 도 5를 참조하면, 벡터 연산 모드가 실행되면(5000), 제어부(2300)의 지정부(2310)는 벡터 레인 구성 메모리(2200)에 저장된 벡터 레인의 구성 정보를 읽는다(5100). 그리고, 지정부(2310)는 읽어온 벡터 레인 구성 정보에 따라 다수의 프로세싱 엘리먼트 중 하나 이상의 프로세싱 엘리먼트를 벡터 레인으로 지정한다(5200). 지정부(2310)는 벡터 레인에 포함된 프로세싱 엘리머트 간의 연결 상태 정보 및 벡터 레인과 레지스터 파일(2150) 간의 연결 상태 정보 등에 기초하여, 각 구성요소의 연결 상태를 변경할 수 있다. 할당부(2320)는 지정된 벡터 레인에 처리할 벡터 연산을 할당한다(5300). 그러면, 각각의 벡터 레인들은 할당된 벡터 데이터를 연산한다(5400). 이때, 각각의 벡터 레인들은 벡터 데이터를 병렬적으로 처리할 수 있다.
또 다른 예를 들면, 지정부(2310)는 처리할 어플리케이션의 종류를 판단한다. 그 다음, 지정부(2310)는 판단된 어플리케이션에 대응되는 벡터 레인의 구성 정보에 따라 벡터 레인을 지정할 수 있다.
재구성 가능 프로세서를 제어하는 방법은 벡터 레인 구성 정보에 따라 다양한 벡터 레인을 구성함으로써, 벡터 연산을 효율적으로 할 수 있다.
설명된 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
또한, 실시예는 그 설명을 위한 것이며, 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 통상의 전문가라면 본 발명의 기술사상의 범위에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
또한, 본 발명의 일실시예에 의하면, 전술한 방법은, 프로그램이 기록된 매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 매체의 예로는, ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다.

Claims (14)

  1. 다수의 프로세싱 엘리먼트;
    벡터 레인 구성 정보에 따라 상기 다수의 프로세싱 엘리먼트 중 적어도 하나의 프로세싱 엘리먼트를 벡터 레인(lane)으로 지정하는 지정부; 및
    상기 지정된 벡터 레인에 벡터 연산을 할당하는 할당부를 포함하고,
    상기 벡터 레인 구성 정보는 벡터 레인의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수, 프로세싱 엘리먼트 간의 연결 상태를 포함하는 재구성 가능 프로세서.
  2. 제 1 항에 있어서,
    상기 벡터 레인 구성 정보는 어플리케이션의 종류에 대응되는 재구성 가능 프로세서.
  3. 제 1 항에 있어서,
    상기 지정부는,
    프로세싱 엘리먼트에 벡터 데이터를 읽거나 쓸 수 있는 읽기/쓰기부 또는 지정된 연산 유닛이 포함되도록 상기 벡터 레인을 지정하는 재구성 가능 프로세서.
  4. 제 3 항에 있어서,
    상기 지정된 연산 유닛은 곱셈, 나눗셈 및 부동 소수점 중 적어도 어느 하나를 연산할 수 있는 재구성 가능 프로세서.
  5. 제 1 항에 있어서,
    상기 지정부는
    동일한 구조를 갖는 여러 개의 벡터 레인을 지정하는 재구성 가능 프로세서.
  6. 삭제
  7. 제 1 항에 있어서,
    벡터 데이터 또는 벡터 연산을 저장하기 위한 벡터 레지스터 파일을 더 포함하고,
    상기 할당부는 상기 벡터 레지스터 파일로부터 상기 벡터 데이터 또는 벡터 연산을 읽거나 상기 벡터 레지스터 파일에 연산된 벡터 데이터를 쓰는 재구성 가능 프로세서.
  8. 제 7 항에 있어서,
    상기 벡터 레지스터 파일은,
    상기 벡터 레인으로 지정된 모든 프로세싱 엘리먼트의 개수만큼 존재하고, 각각의 프로세싱 엘리먼트에 연결되는 재구성 가능 프로세서.
  9. 벡터 레인 구성 정보에 따라 다수의 프로세싱 엘리먼트 중 적어도 하나의 프로세싱 엘리먼트를 재구성 가능 프로세서에 구비된 지정부가 벡터 레인(lane)으로 지정하는 단계; 및
    상기 재구성 가능 프로세서에 구비된 할당부가 상기 지정된 벡터 레인에 벡터 연산을 할당하는 단계를 포함하고,
    상기 벡터 레인 구성 정보는 벡터 레인의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 읽기/쓰기부가 포함된 프로세싱 엘리먼트의 개수, 벡터 레인에 포함된 프로세싱 엘리먼트 중 특정 연산 유닛이 포함된 프로세싱 엘리먼트의 개수, 프로세싱 엘리먼트 간의 연결 상태를 포함하는 재구성 가능 프로세서의 제어 방법.
  10. 제 9 항에 있어서,
    상기 벡터 레인(lane)으로 지정하는 단계는,
    처리할 어플리케이션의 종류를 판단하는 단계; 및
    판단된 어플리케이션의 종류에 대응되는 벡터 레인 구성 정보에 따라, 상기 벡터 레인을 지정하는 단계를 포함하는 재구성 가능 프로세서의 제어 방법.
  11. 제 9 항에 있어서,
    상기 벡터 레인(lane)으로 지정하는 단계는,
    벡터 레인 구성 메모리로부터 벡터 레인 구성 정보를 읽어오는 단계를 포함하는 재구성 가능 프로세서의 제어 방법.
  12. 제 9 항에 있어서,
    상기 벡터 레인(lane)으로 지정하는 단계는,
    프로세싱 엘리먼트에 벡터 데이터를 읽거나 쓸 수 있는 읽기/쓰기부 또는 지정된 연산 유닛이 포함되도록 벡터 레인을 지정하는 단계를 포함하는 재구성 가능 프로세서의 제어 방법.
  13. 제 12 항에 있어서,
    상기 지정된 연산 유닛은 곱셈, 나눗셈 및 부동 소수점을 연산할 수 있는 재구성 가능 프로세서의 제어 방법.
  14. 삭제
KR1020100019325A 2010-03-04 2010-03-04 재구성 가능 프로세서 및 그 제어 방법 KR101699910B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100019325A KR101699910B1 (ko) 2010-03-04 2010-03-04 재구성 가능 프로세서 및 그 제어 방법
US12/987,391 US9135003B2 (en) 2010-03-04 2011-01-10 Reconfigurable processor and reconfigurable processing method of vector operation using vector lane configuration information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100019325A KR101699910B1 (ko) 2010-03-04 2010-03-04 재구성 가능 프로세서 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20110100381A KR20110100381A (ko) 2011-09-14
KR101699910B1 true KR101699910B1 (ko) 2017-01-26

Family

ID=44532297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100019325A KR101699910B1 (ko) 2010-03-04 2010-03-04 재구성 가능 프로세서 및 그 제어 방법

Country Status (2)

Country Link
US (1) US9135003B2 (ko)
KR (1) KR101699910B1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
KR101754203B1 (ko) * 2011-01-19 2017-07-07 삼성전자주식회사 파워 게이팅 기반의 재구성가능 프로세서, 이를 위한 컴파일 장치 및 방법
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
GB2539881B (en) * 2015-06-24 2018-07-25 Advanced Risc Mach Ltd An apparatus and method for processing floating point values
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
CN107168708A (zh) * 2017-05-15 2017-09-15 东南大学 一种可重构系统配置控制器及其流水调度方法
CN112286578A (zh) * 2019-07-25 2021-01-29 北京百度网讯科技有限公司 由计算设备执行的方法、装置、设备和计算机可读存储介质
US11126588B1 (en) * 2020-07-28 2021-09-21 Shenzhen GOODIX Technology Co., Ltd. RISC processor having specialized registers
US20220036243A1 (en) * 2020-07-29 2022-02-03 Samsung Electronics Co., Ltd. Apparatus with accelerated machine learning processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US20080091924A1 (en) * 2006-10-13 2008-04-17 Jouppi Norman P Vector processor and system for vector processing
US20090150647A1 (en) * 2007-12-07 2009-06-11 Eric Oliver Mejdrich Processing Unit Incorporating Vectorizable Execution Unit
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE498158T1 (de) * 2000-11-06 2011-02-15 Broadcom Corp Umkonfigurierbares verarbeitungssystem und - verfahren
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
KR100722428B1 (ko) 2005-02-07 2007-05-29 재단법인서울대학교산학협력재단 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조
KR20070118543A (ko) 2006-06-12 2007-12-17 삼성전자주식회사 재구성 어레이를 위한 멀티태스킹 방법 및 장치
US8645955B2 (en) * 2006-06-12 2014-02-04 Samsung Electronics Co., Ltd. Multitasking method and apparatus for reconfigurable array
DE602006006990D1 (de) * 2006-06-28 2009-07-09 St Microelectronics Nv SIMD-Prozessorarchitektur mit gruppierten Verarbeitungseinheiten
DE212007000102U1 (de) 2007-09-11 2010-03-18 Core Logic, Inc. Rekonfigurierbarer Array-Prozessor für Gleitkomma-Operationen
KR101098758B1 (ko) * 2007-09-20 2011-12-26 서울대학교산학협력단 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
US8327126B2 (en) * 2008-08-25 2012-12-04 International Business Machines Corporation Multicore processor and method of use that adapts core functions based on workload execution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US20080091924A1 (en) * 2006-10-13 2008-04-17 Jouppi Norman P Vector processor and system for vector processing
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US20090150647A1 (en) * 2007-12-07 2009-06-11 Eric Oliver Mejdrich Processing Unit Incorporating Vectorizable Execution Unit

Also Published As

Publication number Publication date
US9135003B2 (en) 2015-09-15
KR20110100381A (ko) 2011-09-14
US20110219207A1 (en) 2011-09-08

Similar Documents

Publication Publication Date Title
KR101699910B1 (ko) 재구성 가능 프로세서 및 그 제어 방법
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
JP4489102B2 (ja) プロセッサ構造および応用の最適化のためのプロファイラ
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
TWI728068B (zh) 複數乘法指令
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
EP3106982B1 (en) Determination of branch convergence in a sequence of program instructions
KR20190045316A (ko) 벡터 곱셈 덧셈 명령
US20100095091A1 (en) Processor, Method and Computer Program
CN104391747A (zh) 一种并行计算方法及装置
US9354893B2 (en) Device for offloading instructions and data from primary to secondary data path
KR20190093602A (ko) 복제 파티션 명령어
KR101581414B1 (ko) 전력 소모 감소를 위한 재구성 가능 프로세서 및 그 동작 방법
JP6712052B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR100781340B1 (ko) 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
KR102174335B1 (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
US7979860B2 (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
KR20200094771A (ko) 벡터 자리올림이 있는 가산 명령
KR20190091489A (ko) 복제 요소 명령어
KR102365306B1 (ko) 데이터 처리장치 및 벡터 스캔 연산의 수행방법
KR101731929B1 (ko) 재구성 가능 프로세서 및 구동 제어 방법
Low et al. A parallel bsp algorithm for irregular dynamic programming
KR102168175B1 (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
WO2020246598A1 (ja) 演算装置、演算方法、および演算プログラム

Legal Events

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