KR20130131789A - 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법 - Google Patents

미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법 Download PDF

Info

Publication number
KR20130131789A
KR20130131789A KR1020120055621A KR20120055621A KR20130131789A KR 20130131789 A KR20130131789 A KR 20130131789A KR 1020120055621 A KR1020120055621 A KR 1020120055621A KR 20120055621 A KR20120055621 A KR 20120055621A KR 20130131789 A KR20130131789 A KR 20130131789A
Authority
KR
South Korea
Prior art keywords
minicores
simd
processor
reconfigurable processor
mini
Prior art date
Application number
KR1020120055621A
Other languages
English (en)
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 KR1020120055621A priority Critical patent/KR20130131789A/ko
Priority to US13/766,173 priority patent/US20130318324A1/en
Priority to CN2013101298259A priority patent/CN103425625A/zh
Priority to JP2013098266A priority patent/JP2013246816A/ja
Publication of KR20130131789A publication Critical patent/KR20130131789A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

추가적인 데이터폭(datawidth)의 확장이나 컴퓨팅 파워를 소비할 필요없이 주어진 자원을 그대로 이용하여 유연한 SIMD(Single Instruction Multiple Data) 구성이 가능한 미니 코어(mini core) 기반의 재구성 가능 프로세서 기술이 제공된다. 일 양상에 따른 재구성 가능 프로세서는 서로 다른 연산을 수행하는 적어도 둘 이상의 펑션 유닛(function unit)을 포함하는 적어도 둘 이상의 미니코어 및 미니코어들 중 SIMD(Single Instruction Multiple Data) 명령어의 연산을 수행하는 적어도 둘 이상의 미니코어들 간의 펑션 유닛을 활성화하여 상기 SIMD 명령어를 수행하도록 하는 처리부를 포함하여 유연하게 SIMD를 지원할 수 있다.

Description

미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법{RECONFIGURABLE PROCESOR BASED ON MINI-CORE AND METHOD FOR PROCESSING FLEXIBLE MULTIPLE DATA USING THE RECONFIGURABLE PROCESSOR}
미니코어 기반의 재구성가능 프로세서(Reconfigurable processor) 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법과 관련된다.
통상적으로 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다. 재구성 가능 아키텍처의 종류는 여러 가지가 있는데 그 중 코어스 그레인 어레이(Coarse-Grained Array, CGA)가 대표적이다. CGA는 여러 개의 동일한 컴퓨팅 파워를 갖는 펑션 유닛(function unit)으로 이루어진다. 그리고, 펑션 유닛들 간의 연결 상태를 조절함으로써 어떤 작업에 최적화하는 것이 가능하다.
재구성 가능 프로세서는 여러 개의 애플리케이션 도메인을 처리하며 루프(loop) 또는 데이터를 가속하기 위해 여러 개의 연산(Operation)을 동시에 가동할 수 있도록 어레이(array) 구조를 갖는 CGA 모드를 가지고 있다. 여러 가지 애플리케이션 도메인을 지원하기 위해서는 재구성 가능 프로세서에 많은 인트린직들(intrinsics)이 추가되며 전체적인 연산의 수가 늘어난다. 따라서, 하나의 펑션 유닛이 모든 연산을 처리하도록 하는 설계하는 것은 추가적인 파이프라인을 필요로 하고 성능에 악영향을 미친다.
유연한 SIMD(Single Instruction Multiple Data)를 지원할 수 있는 미니코어 기반의 재구성 가능 프로세서 기술이 제공된다.
일 양상에 따르면 재구성 가능 프로세서는 서로 다른 연산을 수행하는 적어도 둘 이상의 펑션 유닛(function unit)을 포함하는 적어도 둘 이상의 미니코어 및 미니코어들 중 SIMD(Single Instruction Multiple Data) 명령어의 연산을 수행하는 적어도 둘 이상의 미니코어들 간의 펑션 유닛을 활성화하여 그 SIMD 명령어를 수행하도록 하는 처리부를 포함할 수 있다.
이때, 각 미니코어들 중 적어도 둘 이상의 미니코어에 포함된 적어도 하나의 펑션 유닛은 서로 동일한 연산을 수행할 수 있다.
또한, 처리부는 SIMD의 데이터 타입에 기초하여 SIMD 명령어를 수행할 미니코어의 수를 결정할 수 있다.
추가적인 양상에 따르면, 각 미니코어는 각 펑션 유닛에 대응되며 SIMD 명령어의 수행 결과가 임시로 저장되는 로컬 레지스터 파일을 더 포함할 수 있다.
추가적인 양상에 따르면, 재구성 가능 프로세서는 각각의 미니 코어들을 연결하기 위한 외부 네트워크를 더 포함할 수 있다.
또한, 각 미니 코어는 각 펑션 유닛들을 연결하기 위한 내부 네트워크를 더 포함할 수 있다.
다른 양상에 따르면, 재구성 가능 프로세서는 미니 코어에 기반한 CGA(Coarse grained array) 또는 VLIW(very long intruction word) 프로세서일 수 있다.
또한, 각각의 미니 코어는 CGA 프로세서 또는 VLIW 프로세서에서 설계 기본 단위 또는 확장 기본 단위로 정의될 수 있다.
일 양상에 따른 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법은 재구성 가능 프로세서의 미니코어들 중 SIMD 명령어의 연산을 수행할 적어도 둘 이상의 미니코어들을 결정하는 단계 및 결정된 미니코어들 간의 펑션 유닛을 활성화하는 단계를 포함할 수 있다.
이때, 각 미니코어들 중 적어도 둘 이상의 미니코어에 포함된 적어도 하나의 펑션 유닛은 서로 동일한 연산을 수행할 수 있다.
또한, 미니코어들을 결정하는 단계는 SIMD의 데이터 타입에 기초하여 SIMD 명령어를 수행할 미니코어의 수를 결정할 수 있다.
추가적인 양상에 따르면, 활성화된 펑션 유닛을 통해 SIMD 명령어를 수행시키고, 그 SIMD 명령어의 수행 결과를 로컬 레지스터 파일에 저장하는 단계를 더 포함할 수 있다.
한편, 재구성 가능 프로세서는 미니 코어에 기반한 CGA(Coarse grained array) 또는 VLIW(very long intruction word) 프로세서일 수 있다.
미니코어 기반의 재구성 가능 프로세서를 통해 추가적인 데이터의 대역폭(bandwidth)의 확장이나 자원을 소비할 필요없이 주어진 레지스터 파일 또는 자원들을 그대로 이용하여 유연하게 SIMD를 지원할 수 있다.
도 1은 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다.
도 2는 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다.
도 3은 일 실시예에 따른 재구성 가능 프로세서의 미니 코어를 도시한 것이다.
도 4는 일 실시예에 따라 CGA 모드에서 SIMD를 구성한 예이다.
도 5는 일 실시예에 따른 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 유연한 다중 데이터 처리를 위한 재구성 가능 프로세서를 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다.
도 1을 참조하면, 본 실시예의 재구성 가능 프로세서(100)는 처리부(101) 및 적어도 둘 이상의 미니코어(MC#0~#19)를 포함할 수 있다.
재구성 가능 프로세서(100)는 동일한 명령어로서 다수의 데이터를 처리하는 SIMD(Single Instruction Multiple Data)를 지원할 수 있으며, 처리부(101)와 미니코어들은 유연하게 SIMD를 구성할 수 있도록 설계될 수 있다.
각각의 미니 코어(MC#0~#19)는 재구성 가능 프로세서(100)의 설계 기본 단위 또는 확장 기본 단위가 될 수 있다.
한편, 각각의 미니 코어는 소정의 전체 컴퓨팅 파워(full computing power)를 가질 수 있다. 여기서, 컴퓨팅 파워(computing power)란 연산(operation) 처리 능력, 즉 어떤 시스템이 얼마나 많은 종류의 연산을 처리할 수 있는지를 나타낸다. 따라서 어떤 시스템의 컴퓨팅 파워는 그 시스템이 제공할 수 있는 연산의 종류에 기초하여 정의될 수 있다. 예를 들어, 연산 A와 연산 B를 제공하는 시스템과 연산 C와 연산 D를 제공하는 시스템은 서로 컴퓨팅 파워가 다르다고 말할 수 있다. 또한 연산 A, B, C를 제공하는 시스템과 연산 A, B, C, D를 제공하는 시스템은 서로 컴퓨팅 파워가 다르고, 특히 후자 시스템의 컴퓨팅 파워가 높다 또는 많다라고 말할 수 있다. 참고로, 여기서 예시한 각각의 연산 A, B, C, 및 D는 '더하기', '곱하기', '논리합', '논리곱' 등의 연산이 될 수 있다. 다만 이것은 이해를 돕기 위한 단순한 예에 불과한 것으로 본 실시예의 범위가 예시된 연산에 한정되지 않고, 그 밖에 산술, 논리, 스칼라, 벡터 연산 등과 같이 다양한 연산에도 적용될 수 있음은 자명하다.
각각의 미니코어는 적어도 둘 이상의 펑션 유닛을 포함할 수 있으며, 각 미니코어에 포함된 펑션 유닛들은 서로 다른 연산을 수행하도록 구성될 수 있다. 즉, 재구성 가능 프로세서(100)는 모든 연산들을 각 펑션 유닛에 분할하고 그 펑션 유닛들의 집합 즉, 미니코어 단위로 거의 모든 연산을 수행하도록 미니코어를 구성함으로써 각 미니코어는 전체의 컴퓨팅 파워를 가질 수 있다. 만약, 하나의 펑션 유닛에서 모든 연산을 처리한다면 데이터 처리 시간이 지연될 수 있고 이를 해결하기 위해 추가적인 파이프라인이 필요할 수 있다. 그러나, 본 실시예와 같이 각 펑션 유닛에 연산들을 분할하여 미니코어 기반의 재구성 가능 프로세서(100)를 설계함으로써 추가적인 대역폭이나 자원의 필요 없이 유연하게 SIMD를 지원할 수 있다.
처리부(101)는 다양하게 미니코어들을 조합함으로써 어떠한 SIMD 명령어에 대하여도 지원할 수 있다. 즉, SIMD의 데이터의 타입에 따라 미니코어들의 수를 결정하고 그 미니코어들에 포함된 펑션 유닛들을 활성화하여 그 SIMD 명령어를 수행하도록 할 수 있다. 이때, 각 미니코어의 펑션 유닛은 그 SIMD 명령어와 동일한 연산을 수행하는 펑션 유닛이다.
예를 들어, 미니코어의 각 펑션 유닛이 32bit 데이터를 처리할 수 있다면, 해독된 SIMD의 데이터 타입이 64bit인 ADD 연산이라면 2개의 미니코어에 포함된 ADD 연산을 수행하는 펑션 유닛을 조합하여 SIMD명령어를 수행할 수 있다. 또한, SIMD의 데이터 타입이 128bit라면 4개의 미니코어를 조합하여 SIMD 명령어를 수행할 수 있다. 이와 같이 본 실시예의 재구성 가능 프로세서는 다양한 SIMD의 데이터 타입에 따라 유연하게 SIMD를 지원할 수 있다.
한편, 처리부(101)는 두 가지의 실행 모드를 가질 수 있다. 예컨대, 처리부(101)는 루프 연산을 처리하기 위한 CGA(coarse-grained array) 모드와 루프 연산 이외의 다른 연산을 처리하기 위한 VLIW(very long instruction word) 모드를 가질 수 있다.
CGA 모드에서, 처리부(101)는 CGA 모듈(111)로서 동작한다. CGA 모듈(111)은 MC#4 내지 MC#19의 16개 미니 코어와 구성 메모리(113)를 포함할 수 있다. 각각의 MC#4 내지 MC#19는 어떤 루프를 병렬처리하는 것이 가능하다. MC#4 내지 MC#19들의 연결(connection) 또는 네트워크(network) 구조는 CGA 모듈(111)이 처리하고자 하는 루프의 종류에 따라 최적화될 수 있다. MC#4 내지 MC#19들의 연결 구조 또는 네트워크 구조를 나타내는 구성 정보는 구성 메모리(113)에 저장된다. 다시 말해, CGA 모드에서, 처리부(101)는 구성 메모리(113)에 저장된 구성 정보에 따라 CGA 모듈(111)에 기초하여 어떤 루프를 처리할 수 있다.
VLIW 모드에서, 처리부(101)는 VLIW 모듈(112)로서 동작한다. VLIW 모듈(112)은 MC#0 내지 MC#3의 4개의 미니 코어와 VLIW 메모리(114)를 포함할 수 있다. 각각의 MC#0 내지 MC#3는 VLIW 메모리(114)에 저장된 아주 긴 인스트럭션을 VLIW 아키텍처에 따라 처리한다. 다시 말해, VLIW 모드에서, 처리부(101)는 VLIW 메모리(114)에 저장된 인스트럭션에 따라 VLIW 모듈(112)에 기초하여 어떤 연산을 처리할 수 있다.
추가적 양상에 따라, 몇 개의 미니 코어는 VLIW 모드 및 CGA 모드가 공유할 수 있다. 예컨대, 도 1에서, MC#0 내지 MC#4를 빼고, MC#5 내지 MC#8이 VLIW 모드에서 VLIW machine으로 동작할 수도 있다.
추가적인 양상에 따르면, 재구성 가능 프로세서(100)는 모드제어부(102)를 더 포함할 수 있다. 모드제어부(102)는 CGA 모드에서 VLIW 모드로의 전환 또는 VLIW 모드에서 CGA 모드로의 전환을 제어한다. 모드제어부(102)는 소정의 모드 전환 신호 또는 모드 전환 명령어를 생성할 수 있다. 예를 들어, 처리부(101)는 CGA 모드에서 루프 연산을 처리하다가 모드제어부(102)의 모드 전환 신호에 따라 VLIW 모드로 전환되고 루프 연산이 아닌 다른 연산을 처리할 수 있다. 이때, 루프 실행 결과는 Global Register File(115)에 임시로 저장된다. 또한 VLIW 모드에서 동작 중이던 처리부(101)는 모드제어부(102)의 제어 신호에 따라 CGA 모드로 전환되고 Global Register File(115)에서 컨텍스트 정보를 가져와서 이전에 처리하던 루프 연산을 계속 처리할 수 있다.
이러한 모드 전환을 위하여, 재구성가능 프로세서(100)는 모드 전환 시의 Live-In/Live-Out 데이터를 임시로 저장하기 위한 글로벌 레지스터 파일(Global register file, GRF)(115)을 더 포함할 수도 있다.
이상에서 살펴본 것과 같이, 개시된 실시예에 의하면, 전체 컴퓨팅 파워 즉, 전체 연산을 수행할 수 있는 능력을 분할해서 펑션 유닛에 분배하고 그 펑션 유닛의 조합으로 기본 처리 단위인 미니 코어를 설계하기 때문에, High Frequency 환경에서 불필요한 자원 소모를 최소화함과 동시에 성능을 높이는 것이 가능하다. 또한 다양한 SIMD 명령어를 수행하기 위해 미니 코어들을 유연하게 조합함으로써 별도의 자원이나 대역폭의 추가 없이 SIMD를 지원할 수 있다.
도 2는 일 실시예에 따른 재구성 가능 프로세서를 도시한 것이다. 도 2를 참조하여 본 실시예의 재구성 가능 프로세서(200)를 자세히 설명한다.
재구성가능 프로세서(200)는 적어도 둘 이상의 미니코어(201)와, 각각의 미니코어(201)를 연결하는 외부 네트워크(202)를 포함할 수 있다.
각각의 미니코어(201)는 상호 독립적으로 명령어, 작업, 또는 태스크 등을 처리할 수 있다. 예컨대, 미니코어 MC#0와 MC#1은 서로 의존관계가 없는 두 개의 명령어를 동시에 처리하는 것이 가능하다. 또한, 서로 다른 둘 이상의 미니코어는 동일한 하나의 명령어를 처리할 수 있다. 이때, 그 둘 이상의 미니코어는 동일한 하나의 명령어에 대해 다수의 데이터(SIMD)를 처리할 수 있다.
각각의 미니코어(201)는 재구성가능 프로세서(200)의 설계 기본 단위 또는 확장 기본 단위가 될 수 있다. 도 2에 도시된 바와 같이 미니코어(201)는 필요에 따라 추가적으로 확장될 수 있다.
외부 네트워크(202)는 각각의 미니 코어(201)를 통신 가능하게 연결한다. 예컨대, MC#0에서 생성된 데이터가 외부 네트워크(202)를 통해 MC#3로 전달될 수가 있다.
외부 네트워크(202)의 구성은 구성 정보(configuration information)에 의해 가변될 수가 있다. 예컨대, 별도의 메모리 즉, 도 1에 도시된 구성메모리(113)에 저장된 구성 정보에 따라 외부 네트워크(202)의 구성, 즉 미니코어들(101) 간의 연결 상태가 변경될 수 있다.
미니코어들(201) 간의 컴퓨팅 파워는 동일할 수도 있고 상이할 수도 있다. 예컨대, 미니코어(201) MC#0는 A, B, C, D의 연산을 수행할 수 있고, 미니코어(201) MC#2는 A, C, E의 연산을 수행할 수 있다. 각 미니코어(201)들은 적어도 하나의 동일한 연산을 수행하도록 구성될 수 있다.
각 미니코어(201)들은 SIMD 명령어의 데이터 타입(16bit, 32bit, 64bit, 128bit 등)에 따라 둘 이상의 미니코어(예컨대 MC#0와 MC#1)를 이용하여 동일한 연산을 수행하도록 할 수 있다.
다른 추가적 양상에 따라, 각각의 미니 코어(201)는 전용의 로컬 레지스터 파일(local register file, LRF)(미도시)을 가질 수도 있다. 각 미니코어(201)는 로컬 레지스터 파일을 이용하여 데이터를 임시로 저장할 수 있다.
또 다른 추가적 양상에 따라, 재구성가능 프로세서(100)는 CGA(coarse graind array) 프로세서 또는 VLIW(very long instruction word) 프로세서로 동작할 수 있다. 예컨대, CGA 모드에서, 4개의 미니 코어(예컨대, MC#3 ~ MC#6)가 CGA 아키텍처를 기반으로 루프(loop) 연산을 처리하고, VLIW 모드에서, 일부의 미니 코어(예컨대, MC#0 및 MC#2)가 루프 외의 일반 연산을 처리하는 것이 가능하다.
도 3은 일 실시예에 따른 재구성 가능 프로세서의 미니 코어를 도시한 것이다. 도 3에 도시된 바와 같이 각각의 미니 코어(300)는 적어도 둘 이상의 펑션 유닛(301)과 각각의 펑션 유닛(301)을 연결하는 내부 네트워크(303)를 포함할 수 있다. 각 펑션 유닛(301)은 스칼라 연산 또는 벡터 연산을 수행할 수 있다.
본 실시예의 각 미니 코어(300)는 여러 개의 펑션 유닛(301)들의 집합으로서 각 미니코어(300)에 포함된 펑션 유닛(301)들은 서로 다른 연산을 수행할 수 있다. 즉, 하나의 펑션 유닛(201)이 애플리케이션의 모든 연산을 처리하는 것이 아니라 애플리케이션의 각 연산들을 여러 개의 펑션 유닛이 나누어 수행하도록 각 펑션 유닛에 분배하고 애플리케이션의 거의 모든 연산을 수행할 수 있는 펑션 유닛들의 집합을 하나의 미니코어(300)로 구성할 수 있다.
일 예로써, 4개의 펑션 유닛(301)(VFU#0~VFU#3)은 각각 연산 A, B, C, D를 처리하도록 분배될 수 있고, 이 4개의 펑션 유닛(VFU#0~VFU#3)을 하나의 미니코어(300)로 구성하여 애플리케이션의 모든 연산을 처리할 수 있다.
한편, 서로 다른 연산을 수행하는 다수의 펑션 유닛(301)을 갖는 미니코어(300)는 다수개로 확장될 수 있다. 이때, 각 미니 코어(300)의 어느 하나의 펑션 유닛(301)은 다른 미니코어(300)의 펑션 유닛(301)들과 서로 동일한 연산을 수행하도록 구성될 수 있다.
예를 들어, 각 미니코어(300)들이 4개의 펑션 유닛(301) VFU#0 내지 VFU#3을 포함한다고 가정할 때, 각 미니코어(300)들의 펑션 유닛(301) VFU#0 내지 VFU#3은 모두 동일하게 각각 A, B, C, D의 연산을 처리하도록 설계될 수 있다. 다만, 이는 하나의 예시일 뿐이며, 각 미니코어(300)들의 펑션 유닛(301)들은 다양한 연산을 수행하도록 설계될 수 있다.
내부 네트워크(303)는 각각의 펑션 유닛(301)을 통신 가능하게 연결한다. 예컨대, VFU#0(301)에서 생성된 데이터가 내부 네트워크(303)를 통해 VFU#1(302)로 전달될 수가 있다.
내부 네트워크(303)의 구성은 구성 정보(configuration information)에 의해 가변될 수가 있다. 예컨대, 별도의 메모리(미도시)에 저장된 구성 정보에 따라 내부 네트워크(303)의 구성, 즉 펑션 유닛(301) 간의 연결 상태가 변경될 수 있다.
추가적 양상에 따라, 각각의 미니코어(300)는 각 펑션 유닛(301)에 대응되며 각종 처리 결과를 임시 저장하는 전용의 로컬 레지스터 파일(local register file, LRF)(미도시)을 가질 수도 있다. 본 실시예의 재구성 가능 프로세서(200)는 전용의 로컬 레지스터 파일을 이용하여 SIMD 명령어의 처리 결과를 임시 저장하고 이용함으로써 별도의 벡터 레지스터 파일을 추가할 필요없이 SIMD를 지원할 수 있다.
도 4는 일 실시예에 따른 CGA 모드에서 유연한 SIMD 구성의 예이다. 도 4의 (a)와 (b)는 CGA 모드에서 일정한 단위 사이즈로 SIMD를 구성한 것을 예시한 것이며, (c)는 CGA 모드에서 유연한 사이즈로 SIMD를 구성한 것을 예시한 것이다.
CGA 모드에서 각각의 펑션 유닛(0~15)은 SIMD 자원 또는 스칼라 자원으로 활용될 수 있다. 일 예로서, SIMD의 데이터 타입에 따라 도 4와 같이 다양하게 SIMD를 구성할 수 있다. 도 4의 (a)는 데이터 타입이 128 bit인 SIMD를 구성한 것으로서 4개의 미니 코어(400a)(MC0 ~ MC3)가 동일한 컴퓨팅 파워 즉 동일한 연산 처리 능력을 가진다. 예컨대, 미니코어 MC0의 펑션 유닛(0,1,2,3), MC1의 펑션 유닛(4,5,6,7), MC2의 펑션 유닛(8,9,10,11) 및 MC3의 펑션 유닛(12,13,14,15)는 각각 동일한 연산(A,B,C,D)을 수행할 수 있다. 만약, 각 펑션 유닛이 32bit 데이터를 처리할 수 있고, 해독된 명령어의 데이터 타입이 128bit인 SIMD 명령어(A)인 경우 4개의 미니코어(MC0~MC3)들의 펑션 유닛(0,4,8,12)을 이용하여 처리할 수 있다.
도 4의 (b)는 데이터 타입이 64 bit인 SIMD를 구성한 것을 예시한 것으로서, 두 개의 미니 코어(400b)(MC0과 MC1, MC2와 MC3)의 동일한 연산을 수행하는 펑션 유닛들을 이용하여 64bit 데이터 처리를 위한 SIMD를 구성할 수 있다.
한편, 다른 양상에 의하면, 도 4의 (c)와 같이 다양한 SIMD 명령어에 따라 서로 다른 수의 미니코어(400c)들의 펑션 유닛을 서로 활용함으로써 유연한 SIMD를 구성할 수 있다. 도 4 (C)의 미니코어 MC0 내지 MC3의 펑션 유닛 0, 4, 8, 12는 서로 다른 연산을 수행하며, MC0 내지 MC3의 펑션 유닛 1, 5, 9, 13은 서로 동일한 연산을 수행하고, MC0와 MC1의 펑션 유닛 2와 6 및, MC2와 MC3의 펑션 유닛 10, 14서로는 동일한 연산을 수행한다.
다른 양상에 따르면, VLIW 모드에서 유연한 SIMD 구성이 가능하다. VLIW 모드에서 유연한 SIMD 구성의 동작 원리는 발행된 명령을 해독하여 주어진 연산이 32 bit SIMD인 경우에는 대응되는 펑션 유닛에서 연산을 수행한다. 이 경우 각 펑션 유닛은 32bit를 처리할 수 있다고 가정한다. 만약, 주어진 연산이 64 bit 이상의 SIMD인 경우 필요한 수 즉, 미니코어 두 개의 펑션 유닛을 활용하여 동작을 수행한다. 예를 들어, 64 bit SIMD인 경우 미니코어 두 개의 펑션 유닛 2개를 이용하여 SIMD를 처리하고, 128 bit SIMD인 경우 미니코어 4개의 펑션 유닛을 이용하여 수행한다.
일반적으로 동일한 연산을 수행하는 그룹을 한 번에 모아서 벡터 단위로 처리함으로써 데이터의 병렬성을 높여 데이터 처리 성능을 높이기 위해서는 데이터 경로의 대역폭(bandwidth)을 늘려 주어야 하나, 본 실시예에 따르면, 데이터 타입에 따라 유연하게 각 미니 코어의 펑션 유닛을 서로 연결하여 SIMD를 구성함으로써 별도의 데이터 경로의 폭을 늘릴 필요없이 처리할 수 있다.
본 실시예에 따른 유연한 SIMD 구성을 위한 재구성 가능 프로세서는 전술한 바와 같이 펑션 유닛들의 처리 결과를 로컬 레지스터 파일(미도시)에 저장할 수 있다. 따라서, 벡터 타입을 지원하기 위해 별도의 벡터 레지스터 파일 및 병렬 처리를 위한 추가적인 자원이 필요하지 않고 주어진 로컬 레지스터 파일 및 자원을 이용하여 유연한 SIMD를 지원할 수 있다.
도 5는 일 실시예에 따른 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법의 흐름도이다. 도 5를 참조하여 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법을 설명한다.
본 실시예에 따른 유연한 다중 데이터 처리 방법은 먼저, 재구성 가능 프로세서의 처리부(101)는 발행된 SIMD 명령어를 해독(decode)하여 데이터 타입을 확인한다(단계 510). 그 다음, 그 데이터 타입에 기초하여 SIMD 명령어를 수행할 미니코어들을 결정할 수 있다(단계 520). 각 미니코어에 포함된 펑션 유닛에서 처리할 수 있는 데이터 사이즈에 따라 SIMD 명령어를 처리할 미니코어의 수를 유연하게 구성함으로써 다양한 데이터 타입의 SIMD 명령어의 처리가 가능하다.
예컨대, 각 펑션 유닛은 32 bit 크기의 데이터 처리가 가능하다고 가정하면, 해독된 SIMD 명령어의 데이터 타입이 64 bit인 경우 2개의 미니코어가 필요하고, 만약, 데이터 타입이 128 bit 라면 4개의 미니코어가 필요하게 된다. 전술한 바와 같이, 데이터 타입이 128 bit인 SIMD의 경우 도 4의 (a)와 같이 구성할 수 있으며, 데이터 타입이 64 bit라면 도 4의 (b)와 같이 구성할 수 있다. 한편, 도 4의 (c)와 같이 어느 한 재구성 가능 프로세서에서 다양한 SIMD 명령어를 처리하기 위해 서로 다른 수의 미니코어(400c)들을 연결하여 유연한 SIMD를 구성할 수 있다.
그 다음, 결정된 미니코어들 간의 펑션 유닛을 활성화할 수 있다(단계 530). 이때, 각 미니코어의 활성화된 펑션 유닛들은 서로 동일한 연산을 수행할 수 있다. 예를 들어, 도 4의 (a)를 참조하면, 4개의 미니 코어(400a)(MC0 ~ MC3)가 동일한 컴퓨팅 파워 즉 동일한 연산 처리 능력을 가진다. 즉, 미니코어 MC0의 펑션 유닛(0,1,2,3), MC1의 펑션 유닛(4,5,6,7), MC2의 펑션 유닛(8,9,10,11) 및 MC3의 펑션 유닛(12,13,14,15)는 각각 동일한 연산(A,B,C,D)을 수행할 수 있다. 도 4 (C)를 참조하면, 미니코어 MC0 내지 MC3의 펑션 유닛 0, 4, 8, 12는 서로 다른 연산을 수행하며, MC0 내지 MC3의 펑션 유닛 1, 5, 9, 13은 서로 동일한 연산을 수행하고, MC0와 MC1의 펑션 유닛 2와 6 및, MC2와 MC3의 펑션 유닛 10, 14서로는 동일한 연산을 수행할 수 있다.
그 다음, 활성화된 펑션 유닛들을 통해 SIMD 명령어를 수행하고 그 연산 결과를 로컬 레지스터 파일에 기록할 수 있다(단계 540).
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 프로세서 101: 처리부
102: 모드제어부 111: CGA 모듈
112: VLIW 모듈 113: 구성 메모리
200: 재구성 가능 프로세서 201: 미니 코어
202: 외부 네트워크 300: 미니 코어
301: 펑션 유닛 303: 내부 네트워크
400a, 400b, 400c: 미니코어

Claims (13)

  1. 서로 다른 연산을 수행하는 적어도 둘 이상의 펑션 유닛(function unit)을 포함하는 적어도 둘 이상의 미니코어; 및
    상기 미니코어들 중 SIMD(Single Instruction Multiple Data) 명령어의 연산을 수행하는 적어도 둘 이상의 미니코어들 간의 펑션 유닛을 활성화하여 상기 SIMD 명령어를 수행하도록 하는 처리부;를 포함하는 재구성 가능 프로세서.
  2. 제1항에 있어서,
    상기 각 미니코어들 중 적어도 둘 이상의 미니코어에 포함된 적어도 하나의 펑션 유닛은 서로 동일한 연산을 수행하는 재구성 가능 프로세서.
  3. 제1항에 있어서, 상기 처리부는
    상기 SIMD의 데이터 타입에 기초하여 상기 SIMD 명령어를 수행할 미니코어의 수를 결정하는 재구성 가능 프로세서.
  4. 제1항에 있어서, 상기 각 미니코어는
    각 펑션 유닛에 대응되며 상기 SIMD 명령어의 수행 결과가 임시로 저장되는 로컬 레지스터 파일;을 더 포함하는 재구성 가능 프로세서.
  5. 제1항에 있어서,
    상기 각각의 미니 코어들을 연결하기 위한 외부 네트워크;를 더 포함하는 재구성 가능 프로세서.
  6. 제1항에 있어서, 상기 각 미니 코어는
    상기 각 펑션 유닛들을 연결하기 위한 내부 네트워크;를 더 포함하는 재구성 가능 프로세서.
  7. 제1항에 있어서, 상기 재구성 가능 프로세서는
    상기 미니 코어에 기반한 CGA(Coarse grained array) 또는 VLIW(very long intruction word) 프로세서인 재구성 가능 프로세서.
  8. 제7항에 있어서, 상기 각각의 미니 코어는
    상기 CGA 프로세서 또는 상기 VLIW 프로세서에서 설계 기본 단위 또는 확장 기본 단위로 정의되는 재구성 가능 프로세서.
  9. 재구성 가능 프로세서의 미니코어들 중 SIMD 명령어의 연산을 수행할 적어도 둘 이상의 미니코어들을 결정하는 단계; 및
    상기 결정된 미니코어들 간의 펑션 유닛을 활성화하는 단계;를 포함하는 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법.
  10. 제9항에 있어서,
    상기 각 미니코어들 중 적어도 둘 이상의 미니코어에 포함된 적어도 하나의 펑션 유닛은 서로 동일한 연산을 수행하는 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법.
  11. 제9항에 있어서, 상기 미니코어들을 결정하는 단계는
    상기 SIMD의 데이터 타입에 기초하여 상기 SIMD 명령어를 수행할 미니코어의 수를 결정하는 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법.
  12. 제9항에 있어서,
    상기 활성화된 펑션 유닛을 통해 SIMD 명령어를 수행시키고, 그 SIMD 명령어의 수행 결과를 로컬 레지스터 파일에 저장하는 단계;를 더 포함하는 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법.
  13. 제9항에 있어서, 상기 재구성 가능 프로세서는
    상기 미니 코어에 기반한 CGA(Coarse grained array) 또는 VLIW(very long intruction word) 프로세서인 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법.
KR1020120055621A 2012-05-24 2012-05-24 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법 KR20130131789A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120055621A KR20130131789A (ko) 2012-05-24 2012-05-24 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법
US13/766,173 US20130318324A1 (en) 2012-05-24 2013-02-13 Minicore-based reconfigurable processor and method of flexibly processing multiple data using the same
CN2013101298259A CN103425625A (zh) 2012-05-24 2013-04-15 基于微核的可重构处理器以及使用其处理多数据的方法
JP2013098266A JP2013246816A (ja) 2012-05-24 2013-05-08 ミニコア基盤の再構成可能プロセッサ及びその再構成可能プロセッサを利用した柔軟な多重データ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120055621A KR20130131789A (ko) 2012-05-24 2012-05-24 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법

Publications (1)

Publication Number Publication Date
KR20130131789A true KR20130131789A (ko) 2013-12-04

Family

ID=49622509

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120055621A KR20130131789A (ko) 2012-05-24 2012-05-24 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법

Country Status (4)

Country Link
US (1) US20130318324A1 (ko)
JP (1) JP2013246816A (ko)
KR (1) KR20130131789A (ko)
CN (1) CN103425625A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970720B (zh) * 2014-05-30 2018-02-02 东南大学 基于大规模粗粒度嵌入式可重构系统及其处理方法
KR102593320B1 (ko) 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
CN113867788A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102005041672A1 (de) * 2005-09-01 2007-03-15 Micronas Gmbh SIMD-Prozessorarchitektur bzw. Verfahren zum Verarbeiten von Daten verschiedenen Datentyps in einer SIMD-Prozessorarchitektur
US7584327B2 (en) * 2005-12-30 2009-09-01 Intel Corporation Method and system for proximity caching in a multiple-core system
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array

Also Published As

Publication number Publication date
CN103425625A (zh) 2013-12-04
JP2013246816A (ja) 2013-12-09
US20130318324A1 (en) 2013-11-28

Similar Documents

Publication Publication Date Title
US6851041B2 (en) Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
JP6143872B2 (ja) 装置、方法、およびシステム
US9275002B2 (en) Tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms
US6948158B2 (en) Retargetable compiling system and method
KR101978409B1 (ko) 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
EP3547120B1 (en) Systems and methods for implementing chained tile operations
GB2493607A (en) Eliminating redundant instruction processing in an SIMT processor
US20140317626A1 (en) Processor for batch thread processing, batch thread processing method using the same, and code generation apparatus for batch thread processing
KR101622266B1 (ko) 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
KR20150005062A (ko) 미니-코어를 사용하는 프로세서
US20140331031A1 (en) Reconfigurable processor having constant storage register
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
US7313671B2 (en) Processing apparatus, processing method and compiler
KR20200138439A (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
KR101912427B1 (ko) 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
US9424042B2 (en) System, apparatus and method for translating vector instructions
KR20130131789A (ko) 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법
US11900156B2 (en) Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays
EP1623318B1 (en) Processing system with instruction- and thread-level parallelism
WO2014202825A1 (en) Microprocessor apparatus
JP2013161484A (ja) 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法
US8677099B2 (en) Reconfigurable processor with predicate signal activated operation configuration memory and separate routing configuration memory
KR20150002319A (ko) 비대칭형 클러스터 구조의 프로세서
US20210042111A1 (en) Efficient encoding of high fanout communications
US20150277905A1 (en) Arithmetic processing unit and control method for arithmetic processing unit

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid