KR20090027184A - 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼 - Google Patents

부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼 Download PDF

Info

Publication number
KR20090027184A
KR20090027184A KR1020080090012A KR20080090012A KR20090027184A KR 20090027184 A KR20090027184 A KR 20090027184A KR 1020080090012 A KR1020080090012 A KR 1020080090012A KR 20080090012 A KR20080090012 A KR 20080090012A KR 20090027184 A KR20090027184 A KR 20090027184A
Authority
KR
South Korea
Prior art keywords
fpu
pes
array
floating point
bit
Prior art date
Application number
KR1020080090012A
Other languages
English (en)
Other versions
KR100948512B1 (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 서울대학교산학협력단
Publication of KR20090027184A publication Critical patent/KR20090027184A/ko
Application granted granted Critical
Publication of KR100948512B1 publication Critical patent/KR100948512B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 종래의 재구성 어레이 구조와 거의 비슷한 하드웨어 크기를 가지면서도 부동 소수점 연산을 비교적 빠르게 수행할 수 있고, 저전력 및 가격대비 고성능비 특성을 갖는 재구성 어레이 프로세서(Reconfigurable Array Processor) 및 그 프로세서를 포함한 멀티미디어 플랫폼을 제공한다. 그 재구성 어레이 프로세서는 2개 이상의 정수 연산 프로세싱 요소(processing element: PE)가 결합하여 이루어진 부동 소수점 유닛(Floating-Point Unit: FPU)-PE가 다수 개 배열된 PE 어레이(array); 상기 PE 어레이의 행 또는 열 별로 PE 연산 및 PE 간의 데이터 통신을 제어하는 컨텍스트(context)가 저장되는 구성 캐쉬(Configurable Cache); 및 상기 PE 어레이가 수행한 중간 결과를 저장하는 캐시 메모리인 프레임 버퍼(Frame buffer);를 포함하고, 상기 FPU-PE를 이용하여 부동-소수점(floating point) 연산을 수행할 수 있다.

Description

부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(FPU-PE) 구조 및 그 FPU-PE 구조를 포함한 재구성 어레이 프로세서(RAP) 및 그 RAP를 포함한 멀티미디어 플랫폼{Floating point unit-processing element(FPU-PE) structure, reconfigurable array processor(RAP) comprising the same FPU-PE structure, and multi-media platform comprising the same RAP}
본 발명은 멀티미디어 장치에 관한 것으로서, 특히 부동 소수점 연산을 지원하는 재구성 어레이 프로세서 및 그 프로세서를 포함한 멀티미디어 플랫폼에 관한 것이다.
현재 높은 품질의 멀티미디어 서비스에 대한 요청이 증가함에 따라, 특히 휴대용 시스템에 있어서, 오디오 및/또는 비디오 데이터 처리에 관한 효율적인 응용 프로그램에 대한 기술이 발전하고 있다. 이러한 응용 프로그램 등은 일반적으로 복잡한 데이터 집중 계산(data intensive computation)을 수행하는 특징을 가지는데, 이러한 응용 프로그램은 크게 2개의 방식으로 구현될 수 있다.
하나는 일반적인 목적의 프로세서 상에서 운영되는 소프트웨어 구현방식(SI: Soft Implementation)이고, 다른 하나는 ASIC(Application Specific Integrated Circuit) 형태의 하드웨어 구현 방식(HI: Hardware Implementation)이다.
소프트웨어 구현 방식의 경우, 다양한 응용 프로그램을 충분히 지원할 수 있을 정도로 유연하지만 응용 프로그램의 복잡성에 충분히 대처하는 능력이 부족하다. 예컨대, 소프트웨어 구현 방식은 DSP(Digital Signal Processor) 전용 코어 등을 이용하여 빠르면서도 유연성 있는 코덱(CODEC) 구현이 가능하나 소프트웨어의 순차적인 수행 특성 상, 고속의 클록(clock)이 요구된다.
반면, 하드웨어 구현방식의 경우, 전력 및 수행효율 양쪽 면에서 최적화될 수 있으나 특정 응용 프로그램에 국한된다는 단점이 있다. 좀더 자세히 설명하면, 기존의 하드 와이어(hard-wired) 회로로 구현된 ASIC IP는 빠른 속도는 보장하기는 하나 하드웨어 재사용 가능성(reusability)이 크게 떨어지므로 칩 크기 및 전력 소모가 크며 새로운 기능을 추가하려고 할 때마다 다시 회로를 설계해야 하므로 개발 소요 기간이 길다. 더구나 현 칩 제조 기술은 SoC(System on Chip)의 발달과 디지털 컨버전스(digital convergence)의 영향으로 더 복잡하고 다양한 기능이 하나의 칩으로 집적화되어 가는 추세이므로 이러한 문제점이 더욱 부각되고 있는 실정이다.
한편, 재구성 어레이(Reconfigurable Array: RA) 프로세서라는 새로운 방식의 프로세서가 도입되고 있다. 이러한 재구성 어레이 프로세서는 높은 하드웨어 재사용가능성을 유지하면서도 SIMD(Single Instruction stream Multiple Data stream) 동작이 가능하므로 hard-wired 로직에 비해 작은 하드웨어, 소프트웨어에 비해 저속의 클록으로도 비교적 빠른 성능을 보인다. 이러한 특성은 칩 단가를 낮 추고 전력 소모를 줄이기 때문에 하드웨어 자원의 제약이 심한 모바일 멀티미디어 플랫폼에 특히 유리하다.
재구성 어레이 프로세서는 크게 파인-그레인드(Fine-Grained) RA, 즉 FGRA와 콜스-그레인드(Coarse-Grained) RA, 즉 CGRA로 구분된다.
FGRA는 프로세싱 요소(Processing Element: PE)가 기본적으로 불린(Boolean) 연산을 수행하는 진리표(truth table) 논리 회로의 형태를 지니며 비트 단위의 연산이 가능하다. 한편, CGRA는 PE가 기본적으로 ALU의 형태로 워드 단위의 산술/논리 연산을 수행한다.
FGRA는 임의의 연산이 구현 가능하므로 가장 유연한 구조를 가지나 제어 및 데이터 패스(data path)가 복잡하므로 높은 속도를 요구하지 않는 작은 회로 구현이나 속도 보다는 기능 검증이 중요한 회로 구조 등에 사용된다. CGRA는 FGRA보다 유연성이 떨어지나 RTL(Resistor Transistor Logic) 레벨이 아닌 알고리즘 레벨에서는 충분히 유연하며 병렬화가 용이하기 때문에 멀티미디어 분야의 플랫폼을 구현하는데 많이 응용된다. 즉, CGRA는 앞서 소프트웨어 구현방식보다는 높은 성능을 제공하고 하드웨어 구현 방식보다는 폭넓은 유연성을 갖는 장점이 있다.
좀더 자세히 설명하면, CGRA는 프로그램 가능한(Programmable) PE로 구성되며, PE의 연결(connectivity) 및 동작을 지정하는 컨텍스트(context)의 내용에 따라 프로그램화, 즉 재구성함으로써, 새로운 하드웨어의 추가 없이 컨텍스트의 내용을 변경하는 것만으로도 다양한 기능을 수행할 수 있다. 대표적인 CGRA로는 Morphosys, ADRES(Architecture for Dynamically Reconfigurable Embedded System), PACT-XPP(extreme processing platform) 등이 있다.
그러나 기존의 RA는 정수 연산만을 지원함으로써 응용 범위가 주로 오디오/비디오 코덱(CODEC)에 국한되어 있다. 반면 최근 부각되고 있는 멀티미디어 응용분야인 3D 그래픽스/2D 벡터 그래픽스/GPS 등은 부동 소수점 벡터 연산을 기반으로 하기 때문에 기존의 정수 기반 CGRA로 처리하기엔 부적합하다. 그래픽을 지원하기 위해서는 PE 자체를 부동소수점 연산에 기반하여 설계할 수 있으나 PE의 하드웨어 사이즈가 과다하게 커지는 문제가 있으며, 현재 멀티미디어의 주요한 분야인 CODEC은 정수 연산만으로 구성되고, 이러한 정수 연산만을 수행하는 경우 PE를 구성하는 하드웨어 중 부동 소수점과 관련된 블록은 사용되지 않게 하드웨어 사용(hardware usage) 면에서 매우 비효율적이다.
따라서, 본 발명이 해결하고자 하는 과제는 기존의 정수 연산용 PE를 이용하여 종래의 재구성 어레이 프로세서와 거의 비슷한 하드웨어 크기를 가지면서도 부동 소수점 연산을 비교적 빠르게 수행할 수 있고, 저전력 및 가격대비 고성능비 특성을 갖는 재구성 어레이 프로세서 및 그 프로세서를 포함한 멀티미디어 플랫폼을 제공하는 데에 있다.
상기 과제를 달성하기 위하여, 본 발명은 2개 이상의 정수 연산 프로세싱 요소(processing element: PE)가 결합하여 이루어진 부동 소수점 유닛(Floating-Point Unit: FPU)-PE가 다수 개 배열된 PE 어레이(array); 상기 PE 어레이의 행 또는 열 별로 PE 연산 및 PE 간의 데이터 통신을 제어하는 컨텍스트(context)가 저장되는 구성 캐쉬(Configurable Cache); 및 상기 PE 어레이가 수행한 중간 결과를 저장하는 캐시 메모리인 프레임 버퍼(Frame buffer);를 포함하고, 상기 FPU-PE를 이용하여 부동-소수점(floating point) 연산을 수행할 수 있는 재구성 어레이 프로세서(Reconfigurable Array Processor)를 제공한다.
본 발명에 있어서, 상기 PE는 2개의 입력을 받아 처리하는 16비트 연산 장치(Arithmetic and Logic Unit: ALU)를 포함하고, 상기 PE 어레이는 상기 PE들이 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결되어 있으며, 상기 PE 어레이는 정수 연산시에는 각각의 PE가 정수 연산을 수행하고, 부동 소수점 연산시 에는 상기 PE가 2개 이상 결합되어 상기 FPU-PE를 형성함으로써 부동 소수점 연산을 수행할 수 있다.
상기 PE들은 부동 소수점 연산을 위해 한 행 또는 한 열 내의 2개 이상의 PE가 결합하여 상기 FPU-PE를 형성하며, 이러한 상기 FPU-PE는 시간적 매핑(temporal mapping)이 되며, 상기 FPU-PE는 최종적인 값을 구하기 전까지는 다음 연산을 위한 컨텍스트 제어신호를 입력 받지 않으며, 매 사이클마다 최종적인 값이 얻어진 뒤에 상기 컨텍스트의 제어신호를 받아 멀티 사이클 연산을 수행한다.
본 발명의 재구성 어레이 프로세서는 부동 소수점에 대한 사칙연산 및 초월함수 계산을 수행할 수 있다. 예컨대, 상기 사칙연산 계산시, 상기 FPU-PE는 2개의 PE가 결합하여 이루어지고, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE로는 2개의 오퍼랜드(operand)의 부호 및 소수부가 입력되고 다른 하나의 PE로는 상기 2개의 오퍼랜드의 지수부가 입력되어 계산됨으로써, 결국 32비트 기반 부동 소수점 연산과 유사한 방식으로 연산이 수행된다.
본 발명은 또한 상기 과제를 달성하기 위하여, 재구성 어레이 프로세서; 상기 재구성 어레이 프로세서의 각 구성 요소들과 연결되는 시스템 버스(System Bus); 및 상기 시스템 버스 통해 상기 구성요소들과 연결되어 상기 재구성 어레이 프로세서를 제어하고 데이터를 저장하는 제어 및 메모리부;를 포함하는 멀티미디어 플랫폼(Multi-media Platform)을 제공한다.
본 발명에 있어서, 상기 제어 및 메모리부는 데이터 처리 및 제어를 위한 임베디드 코어(Embedded Core), 데이터 저장을 위한 외부 메모리, 및 데이터 이동을 위한 디엠에이(DMA: Direct Memory Access) 컨트롤러를 포함할 수 있다. 상기 임베디드 코어는 리스크(Reduced Instruction Set Computer: RISC) 프로세서 또는 리스크 프로세서 및 시스크(Complex Instruction Set Computer: CISC) 프로세서의 특징이 혼합된 형태의 프로세서일 수 있다.
본 발명에 있어서, 상기 멀티미디어 플랫폼은 SoC(System on Chip) 구조로 구현됨으로써, 상기 재구성 어레이 프로세서의 각 구성 요소들이 하나의 상기 시스템 버스를 통해 상기 제어 및 메모리부의 각 구성 요소들에 연결되는 특징을 갖는다.
더 나아가 본 발명은 상기 과제를 달성하기 위하여, PE 어레이의 적어도 2개의 PE를 결합하는 것에 의해 적어도 하나의 부동 소수점 유닛(Floating-Point Unit:FPU)-PE를 형성하는 단계; 재구성 캐쉬의 레지스터에 저장된 컨텍스트를 상기 FPU-PE로 시간적 매핑하여 파이프 라인을 형성하는 단계; 및 PE 어레이로 연결 구조를 적용하여 메쉬 구조를 생성하는 단계;를 포함하는 재구성 어레이 형성방법을 제공한다.
또한, 상기 과제를 달성하기 위하여, 부호, 지수 및 소수를 각각 포함하는 2개의 오퍼랜드를 입력 받는 단계; 상기 오퍼랜드를 연산하는 단계; 및 연산된 결과값이 최종값인지 임시값인지 판단하는 단계;를 포함하고, 상기 오퍼랜드를 연산하는 단계는 연산이 곱셈 또는 나눗셈을 포함하는 경우에, 지수는 덧셈 또는 뺄셈을 통해서 계산하고, 지수는 곱셈 또는 나눗셈을 통해 생성하는 것을 특징으로 하는 재구성 어레이를 이용한 부동 소수점 연산 방법을 제공한다.
이상에서 상세히 설명한 바와 같이 본 발명에 따른 재구성 어레이 프로세서는 기존의 정수 연산을 위한 16 비트 PE로 이루어진 CGRA를 그대로 이용하되, 간단한 하드웨어를 추가하여 2개 이상의 PE 결합으로 이루어진 FPU-PE를 형성함으로써, 부동 소수점을 신속히 연산할 수 있다. 그에 따라, 하드웨어 및 프로세서 효율 면에서 고성능의 연산 프로세서를 구현시킬 수 있다.
또한, 본 발명에 따른 상기의 재구성 어레이 프로세서를 포함한 멀티 미디어 플랫폼은 전술한 고성능의 연산 프로세서를 포함하여 SoC 구조로서 구현됨으로써, 현재의 저전력 및 가격대비 고성능비를 요구하는 모바일 멀티미디어에 효과적으로 적용될 수 있다.
이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 이하의 설명에서 어떤 구성 요소가 다른 구성 요소에 연결된다고 기술될 때, 이는 다른 구성 요소와 바로 연결될 수도 있지만, 그 사이에 제3의 구성 요소가 개재될 수도 있다. 또한, 도면에서 각 구성 요소의 구조나 크기는 설명의 편의 및 명확성을 위하여 과장되었고, 설명과 관계없는 부분은 생략되었다. 도면상에서 동일 부호는 동일한 요소를 지칭한다. 한편, 사용되는 용어들은 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
도 1의 본 발명의 일 실시예에 따른 재구성 어레이 프로세서를 포함한 전체 멀티미디어 플랫폼에 대한 블럭 구조도이다.
도 1을 참조하면, 본 발명의 멀티미디어 플랫폼은 부동 소수점(floating-point) 연산이 가능한 재구성 어레이 프로세서(1000, Reconfigurable Array Processor), 재구성 어레이 프로세서(1000)의 각 구성 요소들과 연결되는 시스템 버스(2000, System Bus) 및 상기 시스템 버스(2000)를 통해 상기 재구성 어레이 프로세서(1000)의 각 구성 요소들과 연결되어 상기 재구성 어레이 프로세서(1000)를 제어하고 데이터를 저장하는 제어 및 메모리부(3000)를 포함한다.
재구성 어레이 프로세서(1000)는 프로세싱 요소(PE) 어레이(100) 또는 재구성 어레이, 구성 캐쉬(200, Configuration Cache), 프레임 버퍼(300, Frame Buffer), 및 재구성 어레이(RA) 컨트롤부(400)를 포함하여 구성된다.
PE 어레이(100)는 PE(process element)라는 명칭의 ALU(Arithmetic Logic Unit) 셀로 구성된 장방형 어레이(rectangular array)로서, 행 및/또는 열 별로 파이프 라인(pipelined) SIMD(Single Instruction stream Multiple Datastream) 연산을 수행한다. 본 실시예의 PE 어레이(100)는 부동 소수점 연산을 지원할 수 있는 특징을 갖는다. PE 어레이(100)에 대한 좀더 자세한 설명은 도 2 이하에서 설명한다.
구성 캐쉬(200)는 PE 어레이(100) 내의 데이터 연산 및 데이터 이동을 프로그램하는 컨텍스트(context)를 저장한다. 여기서 컨텍스트는 PE 어레이(100) 내의 PE 간의 연결 관계, 각 PE의 연산 및 연산을 위한 데이터 이동 등을 지시하는 명령어 또는 프로그램을 지칭하는 것으로서, 정확하게는 구성 캐쉬(200)의 컨텍스트 레 이어(layer)라는 부분에 저장되게 된다.
프레임 버퍼(300)는 PE 어레이(100)에서 수행한 연산의 중간 데이터를 임시로 저장하는 캐쉬 메모리의 일종이다. 본 발명과 관련된 프레임 버퍼(300)에 대한 내용은 도 9a 및 9b 부분에서 좀더 상세히 설명한다.
한편, RA 컨트롤러(400)는 재구성 어레이 프로세서의 각 구성요소들을 전반적으로 제어한다. 예컨대, 구성 캐쉬(200)의 컨텍스트의 입출력을 제어하거나 프레임 버퍼(300)의 데이터 입출력 제어 또는 PE 어레이(100)로의 데이터 이동 등을 제어하게 된다.
본 실시예에서 재구성 어레이 프로세서(1000)는 하드웨어 변경 없이 컨텍스트만 수정함으로써 다양한 연산 수행이 가능하다. 또한, 재구성 어레이 프로세서(1000)는 파이프 라인 SIMD 구조의 어레이를 통해 병렬로 연산을 수행하기 때문에 연산이 순차적으로 수행되는 일반적인 프로세서에 비해 속도가 훨씬 빠르다. 따라서, 본 실시예에서의 재구성 어레이 프로세서는 소프트웨어의 강점인 재사용성(reusability)과 하드웨어의 강점인 고성능(high performance)의 특성을 동시에 충족시키는 구조를 갖는다.
재구성 어레이 프로세서(1000) 각 구성요소들은 시스템 버스(2000)를 통해 제어 및 메모리부(3000)의 각 구성요소들과 연결되는데, 이와 같이 본 발명의 멀티미디어 플랫폼은 하나의 시스템 버스(2000)를 통해 전체 시스템의 모든 구성요소들이 하나로 연결되는 SoC(System on Chip) 구조를 갖는다.
여기서, 제어 및 메모리부(3000)는 데이터 처리 및 제어를 위한 임베디드 코 어(3200, Embedded Core), 데이터 저장을 위한 외부 메모리(3400), 및 데이터 이동을 위한 디엠에이(3600, DMA: Direct Memory Access) 컨트롤러를 포함한다. 임베디드 코어(3200)는 리스크(Reduced Instruction Set Computer: RISC) 프로세서, 또는 리스크 프로세서 및 시스크(Complex Instruction Set Computer: CISC) 프로세서의 특징이 혼합된 형태의 프로세서일 수 있다.
본 발명에 따른 멀티미디어 플랫폼은 정수 연산용 PE 어레이 구조, 즉 종래의 CGRA 구조를 이용하여, 부동 소수점 연산을 수행할 수 있다. 그에 따라, 하드웨어 크기를 종래와 비슷한 수준으로 유지할 수 있고, 프로세서 관점에서도 효율적인 프로세서의 구현이 가능하다. 또한, 본 발명에 따른 멀티미디어 플랫폼은 SoC 구조를 가짐으로써, 즉, 재구성 어레이 프로세서(1000)의 각 구성 요소들이 하나의 시스템 버스(2000)를 통해 제어 및 메모리부(3000)의 각 구성 요소들에 연결되는 구조를 가짐으로써, 현재의 소형의 저전력 및 고성능비를 요구하는 모바일 멀티미디어에 효과적으로 이용될 수 있다. 이하에서, 부동 소수점 연산을 수행할 수 있는 재구성 어레이 프로세서, 특히 PE 구조에 대해서 좀더 상세히 설명한다.
도 2는 도 1의 PE 어레이 구조를 좀더 상세히 보여주는 블럭 구조도이다.
도 2를 참조하면, PE 어레이(100)는 프로그램 가능한 다수의 PE(120)가 행 및 열을 이루는 어레이 구조를 갖는다. 이러한 PE 어레이(100)는 곱셈 및 나눗셈을 연산하기 위해 데이터 버스를 통해 곱셈기(140) 및 나눗셈기(160)에 연결되어 있다. 정수 연산의 경우, 하나의 PE(120)가 곱셈 또는 나눗셈을 연산하므로 모든 PE(120)가 곱셈기(140)나 나눗셈기(160)에 연결되지만, 부동 소수점 연산 시의 어 레이 구조에서는 일부의 PE(120)만 곱셈기(140)나 나눗셈기(160)에 연결되어도 된다.
각각의 PE(120)은 2개의 입력을 받아 처리하는 16 비트 가산기를 포함하여, 16 비트 정수 연산을 수행할 수 있다. 정수 연산시 구성 캐쉬(200)의 컨텍스트 레이어는 정수 연산을 위한 명령어가 저장되게 되는데, 이러한 정수 연산을 위한 컨텍스트에 따라 PE(120)에서의 연산 및 데이터 흐름이 제어된다.
한편, PE 어레이(100)는 PE들이 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결될 수 있고, 그러한 PE 간의 연결이나 PE 간의 데이터 교환은 구성 캐쉬의 컨텍스트에 따라 이루어진다. 즉, 각각의 PE는 구성 캐쉬를 통해 입력받은 컨텍스트에 의해 행 또는 열 단위로 설정되어 파이프(pipe) 라인을 형성하며, 또한, 설정된 파이프 라인 동작 시 처리한 결과를 컨텍스트가 지시하는 방향으로 포워딩하게 된다.
본 실시예의 PE 어레이(100)는 8 × 5 배열 구조를 갖는데, 이는 부동 소수점 계산시 4 × 5 배열로 전환됨으로써, 3D 그래픽 등에서 매우 유용한 4 × 1 벡터 연산 수행을 용이하게 지원할 수 있도록 하기 위함이다. 이러한 8 × 5 배열 구조는 PE 어레이(100)의 한 예시적인 구조에 불과하다. 따라서, PE 어레이(100)는 8 × 5 배열 구조에 한정되지 않고 다양한 구조의 배열 구조를 가질 수 있음은 물론이다. PE의 구체적인 구조에 대해서는 도 8에 대한 설명 부분에서 좀더 상세히 설명한다.
도 3은 도 2의 PE 어레이가 부동 소수점 연산을 위해 2개씩 쌍을 이루어 FPU-PE를 형성한 PE 어레이 구조를 보여주는 블럭 구조도이다.
도 3을 참조하면, 본 발명의 따른 PE 어레이(100)의 PE(120)들은 부동 소수점 연산을 위해 2개의 PE(120)가 쌍으로 결합하여 FPU(Floating Point Unit)-PE(150)를 형성한다. 이러한 FPU-PE(150)은 한 행 또는 한 열 내의 2개의 PE(120)가 결합하여 형성되는데, 이러한 결합 관계는 컨텍스트 명령어에 따라 이루어진다. 한편, PE(120)들은 FPU-PE(150) 형성을 위해 간단한 하드웨어적 작업, 즉 서로 간의 물리적인 연결관계가 형성되어 있어야 하며, 또한 부동 소수점 연산시 FPU-PE(150)가 부동 소수점 연산을 하기 위한 간단한 소프트웨어적 제어 구조가 필요할 수 있다.
본 도면은 도 2에서 8 × 5 배열 구조의 PE 어레이(100)가 FPU-PE(150)을 형성함으로써, 결국 4 × 5 배열 구조의 부동 소수점 연산을 위한 배열 구조로 전환할 수 있음을 예시적으로 보여준다. 이러한 4 × 5 배열 구조는 3D 그래픽 등에서 매우 유용한 4 × 1 벡터 연산 수행을 지원할 수 있다. 도면상 (X, Y, Z, W)는 4 × 1 벡터의 각각의 컴포넌트를 나타내게 된다. PE 어레이(100) 내에 FPU-PE(150)을 형성하는 방법은 본 실시예에 한정되지 않고 여러 가지 방법으로 수행될 수 있음은 물론이다. 또한, 본 실시예에서는 2개의 PE가 결합하여 FPU-PE를 형성하였지만, 초월함수, 제곱근 등의 좀더 복잡한 부동 소수점을 지원하기 위하여 3개 이상의 PE가 결합하여 FPU-PE를 형성할 수 있음은 물론이다.
한편, PE 어레이(100) 내의 FPU-PE(150)는 시간적 매핑(temporal mapping)을 통해 연산을 수행하게 되고 최종적인 값을 구하기 전까지는 다음 계산을 위한 컨텍 스트를 입력받지 않는다. 그러한 시간적 매핑 방식을 통한 연산 과정은 도 5에 대한 설명 부분에서 설명한다.
도 4는 도 3의 FPU-PE에서 부동 소수점 연산을 위한 오퍼랜드 입력 구조를 보여주는 블럭 구조도이다.
도 4를 참조하면, FPU-PE(150)을 형성하는 PE(120)들은 기본적으로 16비트 정수 연산용 PE이므로, 기존 정수 연산의 PE와 같이 2개의 입력을 받아 계산한 후 하나의 출력값을 출력하는 구조를 갖는다.
부동 소수점 연산을 위한 포맷은 소수부(mantissa)와 지수부(exponent)로 구분된다. 그에 따라 본 실시예의 부동 소수점 연산을 위한 FPU-PE(150)는 2개의 PE가 쌍으로 결합된 구조를 갖는데, 2개의 PE 중 하나는 2개의 오퍼랜드(operand)의 부호(sign) 및 소수부(mantissa)가 입력되는 소수부 PE(120a)이고, 다른 하나는 2개의 오퍼랜드의 지수부(exponent)가 입력되는 지수부 PE(120b)이다. 여기서, 2개의 오퍼랜드가 A, B인 경우, EA는 오퍼랜드 A의 부호와 소수부를, EB는 오퍼랜드 B의 부호와 소수부를 나타낸다. 한편 MA는 오퍼랜드 A의 지수부를, 그리고 MB는 오퍼랜드 B의 지수부를 나타낸다.
소수부 PE(120a) 및 지수부 PE(120b)는 라운딩(rounding), 정규화(normalize) 등 부동 소수점 처리에 필요한 연산 회로 및 쌍방 간 데이터를 주고 받기 위한 패스가 필요하며, 이러한 부가적인 하드웨어는 적은 비용만으로 기존 PE 어레이에 손쉽게 추가할 수 있다.
이와 같은 FPU-PE(150)는 부동 소수점 기반의 초월 함수 연산, 로직 연산 및 사칙 연산 등의 다양한 연산을 수행할 수 있다. 부동 소수점 기반의 PE의 경우, 부동 소수점이나 정수 연산이나 둘 다 동시 수행 가능한 연산의 수가 동일하나, 본 발명의 FPU-PE(150)는 정수 연산을 수행할 경우, 1개의 FPU-PE가 2개의 정수형 PE로 분리되어 수행되므로 동시 수행 가능한 정수 연산의 수가 부동 소수점 기반의 PE에 비해 2배가 되며 따라서 하드웨어 사용이 훨씬 효율적이다.
본 실시예의 FPU-PE(150)를 이용한 곱셈 또는 나눗셈 계산의 경우, 지수부가 입력된 지수부 PE(120b)에서는 덧셈 또는 뺄셈을 통해 지수부를 계산하고, 부호 및 소수부가 입력된 소수부 PE(120a)에서는 곱셈 또는 나눗셈을 통해 소수부를 계산하게 된다. 따라서, 소수부가 계산되는 소수부 PE(120a)의 경우는 곱셈기 및 나눗셈기에 연결되어 있어야 함은 물론이다. 한편, 발생한 캐리 등의 교환을 위해 두 PE(120)는 서로 연결되어 있어야 함은 물론이다.
이와 같은 계산 후, 각각의 결과값 즉 부호 및 소수부가 계산된 결과(EC) 및 지수부가 계산된 결과(MC)는 다음 과정의 계산을 위해 다음 단계의 FPU-PE에 입력되게 되거나 최종적인 값일 때에는 프레임 버퍼에 저장된다.
도 5는 도 3의 FPU-PE에서 시간적(temporal) 매핑을 통한 데이터 연산 과정을 보여주는 블럭 구조도이다.
재구성 어레이 프로세서에서의 매핑(mapping)은 공간적(spatial) 매핑과 시간적(temporal) 매핑으로 구분된다. 본 실시예에서의 FPU-PE는 부동 소수점 연산을 위해 시간적 매핑만을 사용한다. 기존 시간적 매핑 과정을 간단하게 설명하면 다음과 같다.
먼저, 구성 캐쉬의 어느 하나의 컨텍스트 레이어에 대응하여 PE 어레이 중 어느 하나의 열이 선택되고, 동일한 컨텍스트 레이어에 저장된 연산 컨텍스트가 선택된 PE 열에 공급되면 PE 열은 여러 사이클 동안 순차적으로 하나의 연산을 수행한다. 한편, 선택된 PE 열의 연산이 완료되지 않아도 다음 컨텍스트 레이어에 대응하여 다른 PE 열이 선택될 수 있고 그 다른 PE 열에서 연산이 수행될 수 있다. 따라서, 전체적으로 열 단위로 파이프 라인 동작이 이루어지게 된다.
도 5를 참조하여 본 실시예의 시간적 매핑을 통한 연산 과정을 간단히 설명하면, 구성 캐쉬(200) 내의 각 레이어, 즉 레지스터들에 저장된 컨텍스트는 PE 어레이(100)의 각 FPU-PE 열에 순차적으로 시간적 매핑되어 파이프 라인 연산을 수행한다. 레지스터들을 통한 시간적 패핑은 각 레지스터 대한 한 사이클만큼 딜레이된다. 한편, 본 실시예에서의 FPU-PE 열들은 컨텍스트 레이어에서 발생하는 제어 신호열을 받아 멀티 사이클 연산을 수행하는데, 이러한 FPU-PE는 최종적인 결과값을 구하기 전까지는 다음 계산을 위한 컨텍스트를 입력받지 않는다.
멀티 사이클 연산 과정에서 하나의 FPU-PE를 이루는 2개의 PE는 필요에 따라 중간 결과값을 서로 송수신한다. 예컨대, 곱셈 또는 나눗셈의 경우, FPU-PE를 이루는 2개의 PE 중 하나는 덧셈 또는 뺄셈을 통해 지수부를 계산하고, 다른 하나는 곱셈 또는 나눗셈을 통해 소수부를 계산하므로, 소수부 계산에서 발생한 캐리가 지수부 계산에 이용되기 위해 전달될 수 있다.
도 6은 도 3의 FPU-PE에서 PE 간의 기존 연결을 이용한 데이터 이동 방식을 보여주는 블럭 구조도로서, 여기서, 'f'로 표시된 PE(120a)는 부호와 소수부가 입 력되는 소수부 PE(120a)이고, 'e'로 표시된 PE(120b)는 지수부가 입력되는 지수부 PE(120b)이다. 한편, 부동 소수점 데이터의 이동이 원활하게 되도록 소수부 PE(120a) 및 지수부 PE(120b)의 위치가 조정되었다.
도 6을 참조하면, 본 실시예의 FPU-PE 구조에서는 1, 4, 5, 8번째 PE(120a)가 소수부 연산을 하고, 2, 3, 6, 7번째 PE(120b)가 지수부 연산을 수행하게 함으로써, 하나의 열 안에서 4개의 PE 쌍 간 메쉬(mesh) 연결 구조를 용이하게 구현할 수 있다. 만약 지수부와 소수부가 도 6과 같이 배치되지 않고 1, 3, 5, 7번째 PE가 소수부 연산을 하고 2, 4, 6, 8번째에 지수부 연산을 하도록 구성된다면, 4개의 부동소수점 연산 PE 쌍 간 메쉬 연결 구조를 만들기 위해서는 8개의 연결 관계, 즉 1번째와 7번째 PE, 2번째와 8번째 PE, 3번째와 5번째 PE, 4번째와 6번째 PE 간의 양방향 연결 관계가 추가되어야 한다.
이와 같이 본 발명의 재구성 어레이 프로세서 내의 PE 어레이는 기존의 연결 관계를 바꾸지 않고도 부동 소수점 계산 및 데이터의 이동을 원활하게 할 수 있다. 또한, PE 어레이가 8 × 5 배열 구조를 갖는 경우, 정수 연산 시에는 8 × 5 배열 구조를 그대로 이용하고, 부동 소수점 연산시에는 FPU-PE를 형성하여 4 × 5 배열 구조로 전환함으로써, 4 × 1의 부동 소수점 벡터 연산을 원활하게 수행할 수 있다.
도 7a ~ 7c는 도 6의 FPU-PE에서 PE 위치 조정의 장점을 좀더 상세하기 설명하기 위한 블럭 구조도들로서, 도 7a는 기존 PE 열 상에 형성된 PE 간 연결관계를 보여주는 블럭도 구조도이고, 도 7b는 PE의 기능적 위치가 부동 소수점 연산을 위 해 조정된 도 6의 PE 간 연결관계를 보여주는 블럭 구조도이고, 도 7c는 PE의 기능적 위치가 교대로 배치되는 PE 간 연결관계를 블럭 구조도이다.
도 7a ~ 7c를 참조하면, 도 7a는 기존 정수 연산을 위한 PE 열 상의 PE 간 연결관계를 보여주고 있다. PE 간 연결은 여러 가지 변종이 있지만, 도 7a와 같은 연결 구조가 가장 대표적이다. 참고로, 도 7a의 경우, 정수 연산을 위한 PE들의 연결관계이므로, 소수부 PE(120a)과 지수부 PE(120b)의 구별은 무의미하다.
도 6에서 설명한 바와 같이 PE 들의 기능적 위치를 도 7b와 같이 배치하게 되면, 기존에 형성되어 있는 PE 간 연결관계, 즉 도 7a의 연결관계를 선택적으로 이용하여 메쉬 구조를 구현할 수 있다. 그러나 도 7c와 같이 PE 들의 기능적 위치를 교대로 배치하는 구조의 경우에는 기존에 형성되어 있는 연결관계만으로는 메쉬 구조를 달성할 수 없다. 그에 따라, 메쉬 구조를 달성하기 위해서는 도 7c에서 점선으로 표시된 부분의 연결관계가 새롭게 형성되어야 한다.
도 8은 도 2의 PE의 구조를 좀더 상세히 보여주는 블럭 구조도로서, 본 실시예의 PE 구조에는 기존 정수 연산을 위한 PE 구조에 부동 소수점 연산을 위한 회로 및 데이터 송수신을 위한 패스가 포함된다..
도 8을 참조하면, PE(120)는 일반적으로 16 비트 가산기(122, ALU), 가산기(122)로 2개의 데이터를 입력하는 멀티플렉서(124a, 124b, Multiplexer), 가산기(122)의 계산 결과들을 저장하는 레지스터(125, 127), 및 쉬프트 연산을 위한 쉬프터(126, shifter) 등으로 구성된다.
간단하게 PE(120)의 기능을 설명하면, 멀티플렉서(124a, 124b)는 다른 PE, 데이터 버스(Data A, B), 프레임 버퍼(FB) 및 임시 레지스터(125) 등으로부터 받은 데이터들 중 선택된 데이터를 가산기(122)로 입력한다. 가산기(122)는 그러한 2개의 입력 값들을 연산한다. 가산기(122)에서 계산된 결과값들은 임시 레지스터(125)나 출력 레지스터(127)에 저장된다. 임시 레지스터(125)에 저장된 값들은 가산기(122)에서의 계산에 다시 활용된다. 한편, 쉬프터(126)는 곱셈 또는 나눗셈 등의 연산을 위해 쉬프트 연산을 수행하고, 출력 레지스터(127)에 저장된 최종 결과값은 데이터 버스를 통해 다른 PE(120)로 입력되거나 데이터 버스를 통해 프레임 버퍼에 저장되거나 출력 장치로 출력된다.
한편, 본 실시예의 PE 구조에서 부동 소수점 연산을 위해 추가된 회로 또는 패스가 ①, ② 및 ③로 표시되어 있다.
먼저 ①은 부동 소수점 연산시 부호 신호(sign signal) 처리를 위한 레지스터 및 데이터 패스를 의미한다. 즉, 2개의 오퍼랜드의 부호를 입력 받아 저장한 후, 두 부호 값을 XOR한 값을 저장한다. 소수부 PE에서만 유효하며 곱셈/뺄셈 시 결과 값의 부호를 결정하게 된다.
②는 쉬프트 연산이 필요 없는 출력 신호(No-shift output signal) 처리를 위한 레지스터 및 데이터 패스를 의미한다. 기존 PE의 ALU는 하나의 결과 만을 출력하였으나 본 발명의 ALU는 부동 소수점 연산 처리를 위해 동시에 2개의 출력 값을 내보내야 하기 때문에 데이터 패스가 하나 더 추가된다. 각 패스가 동시에 쉬프트 연산을 취하는 경우는 없기 때문에 쉬프터(126)는 하나의 패스에만 연결된다. 따라서 플래그 벡터(flag vector) 등의 쉬프터(126)를 통과하지 않아도 되는 값들 은 새로 추가된 데이터 패스(②)를 통해 바로 출력 레지스터(127)로 출력된다.
③은 라운드 신호(Round signal)를 위한 데이터 패스이다. 부동 소수점 연산 수행 시, 지수부를 시프트한 후 라운드 연산을 수행해야 하는데, 이를 위하여 쉬프터(126)에 하위 2비트가 추가되고 확장된 데이터를 처리하기 위한 데이터 패스(③)가 새로 추가된다.
도 9a 및 9b는 도 1의 프레임 버퍼 내의 부동 소수점 저장 형식 및 FPU-PE의 데이터가 프레임 버퍼 내로 변환되는 모습을 보여주는 구조도이다.
도 9a는 본 발명의 부동 소수점 형식에서 사용하는 프레임 버퍼의 부동 소수점 포맷을 보여주고 있다. 일반적으로 IEEE(Institute of Electrical and Electronics Engineers)에서 표준으로 정한 부동 소수점은 1-비트 부호, 8-비트 지수부, 23-비트 소수부로 이루어진 32 비트 포맷을 갖는다. 그러나 이러한 부동 소수점 포맷은 휴대용 기기의 3D 그래픽에 적용하기에는 과도한 정밀도를 가지기 때문에 메모리에 낭비를 초래한다. 따라서, 본 발명의 재구성 어레이 프로세서에서 채용한 프레임 버퍼는 도시한 바와 같이 1-비트 부호, 8-비트 지수부 및 15-비트 소수부를 갖는 24-비트 부동 소수점 포맷을 가지고 부동 소수점 연산을 지원함으로써 과도한 메모리 낭비를 감소시킬 수 있다.
도 9b는 FPU-PE의 부동 소수점 데이터가 프레임 버퍼로 변환되는 모습을 보여주고 있다. 일반적으로 정수 연산 구조에서의 프레임 버퍼는 정수 입력만 받을 수 있도록 설계된다. 그러나 본 발명의 재구성 어레이 프로세서에서는 간단한 회로를 추가하여 멀티플렉서로 정수 데이터 형식과 부동 소수점 데이터 형식 중 어느 하나를 선택하여 입력할 수 있도록 구성된다. 그에 따라 프레임 버퍼에 저장되는 데이터는 형식적으로는 IEEE-754 형식의 32-비트 부동 소수점을 포맷을 갖지만 내부적으로는 도 9a에서 도시한 바와 같이 24-비트 부동 소수점 포맷을 사용한다. 즉, 본 발명의 재구성 어레이 프로세서에서 사용되는 프레임 버퍼는 종래 24-비트 프레임 버퍼의 소수부의 하위 8비트는 사용하지 않는다.
도 10은 부동 소수점 연산을 지원하는 재구성 어레이를 형성하는 방법을 보여주는 흐름도이다.
도 10을 참조하면, PE 어레이 내의 복수의 PE가 다양한 FPU-PE를 형성하기 위하여 결합한다(1002). 예컨대, 동일 열의 두 PE가 FPU-PE를 형성하기 위하여 쌍으로 결합되거나 동일 행의 두 PE가 FPU-PE를 형성하기 위하여 쌍으로 결합될 수 있다. 한편, 초월함수 등을 계산하기 위하여 3개 이상의 PE가 열 또는 행으로 결합될 수도 있다.
구성 캐쉬의 레시스터에 저장된 컨택스트는 파이프 라인을 형성하기 위하여 형성된 FPU-PE로 시간적 매핑된다(1004). 또한, 메쉬 구조 달성하기 위하여 FPU-PE가 열 또는 행으로 연결되거나 열 및 행으로 연결되다(1006).
도 11은 재구성 어레이를 이용한 부동 소수점 연산 방법을 보여주는 흐름도이다.
도 11을 참조하면, 부동 소수점 연산을 위한 2 오퍼랜드를 입력 받는다(1102). 연산이 FPU-PE를 구성하는 2개의 PE, 즉 지수부 PE와 소수부 PE를 이용하여 멀티 사이클 연산을 통해 적절히 수행된다(1104). 예컨대, 곱셈 또는 나눗셈 의 경우, 입력 받은 오퍼랜드의 지수들이 지수부 PE로 입력되어 덧셈 또는 뺄셈을 통해 계산되고, 입력 받은 오퍼랜드의 소수들과 부호는 소수부 PE로 입력되어 곱셈 또는 나눗셈을 통해 계산된다.
한편, 덧셈 또는 뺄셈의 경우, 먼저, 입력 받은 오퍼랜드의 지수들이 지수부 PE로 입력되어 두 지수의 차를 통해 계산되고, 그 다음 입력 받은 오퍼랜드의 소수들과 부호가 소수부 PE로 입력된 후, 두 소수 중 어느 하나가 두 지수의 차만큼 소수점이 이동되어 자리수가 얼라인되고, 그 후 덧셈 또는 뺄셈을 통해 연산된다.
연산된 결과 값이 최종적인 값인지를 판단하고(1106), 임시 값인 경우에는 되는 레지스터로 저장되거나 다음의 부동 소수점 계산을 위해 다음의 FPU-PE로 전달되고(1108), 최종 적인 값일 때에는 프레임 버퍼로 저장된다(1110).
본 발명에 따른 재구성 어레이 프로세서는 전술한 바와 같이 기존의 정수 연산을 위한 16 비트 PE로 이루어진 CGRA를 그대로 이용하되, 간단한 하드웨어를 추가하여 2개의 PE 쌍으로 이루어진 FPU-PE를 형성함으로써, 부동 소수점을 비교적 빠르게 연산할 수 있다. 그에 따라, 본 발명의 재구성 어레이 프로세서는 종래와 거의 같은 크기의 하드웨어를 가지기 때문에 하드웨어 면에서 효율적이며, 또한 정수 연산 시는 기존의 정수 연산 로직을 그대로 이용하면 빠르게 수행되므로, 프로세서 동작 측면에서도 매우 효율적이다.
한편, 이러한 재구성 어레이 프로세서를 포함한 멀티미디어 플랫폼은 SoC 구조로서 구현될 수 있고, 그에 따라 저전력 및 가격대비 고성능비를 요구하는 모바일 멀티미디어 프로세서에 효과적으로 적용될 수 있다.
구체적으로 본 발명은 그래픽 분야 중 기하 연산 (geometry operation)에 적용 가능한데, 예상 응용 분야는 1) 게임 엔진 중 물리 엔진 (physical engine) 하드웨어 가속, 2) Bezier 곡선 등 곡면/곡선 처리를 위한 evaluator, tessellation, interpolation 등의 그래픽 geometry 전처리 부 하드웨어 가속, 3) 3D 그래픽 pipeline 중 geometry unit (matrix transformation & lighting effects), 4) 3D vertex shader 등을 들 수 있다.
지금까지, 본 발명을 도면에 도시된 실시예를 참고로 설명하였으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1의 본 발명의 일 실시예에 따른 재구성 어레이 프로세서를 포함한 전체 멀티미디어 플랫폼에 대한 블럭 구조도이다.
도 2는 도 1의 PE 어레이 구조를 좀더 상세히 보여주는 블럭 구조도이다.
도 3는 도 2의 PE 어레이 구조가 부동 소수점 연산을 위해 2개씩 쌍을 이루어 FPU-PE를 형성한 PE 어레이 구조를 보여주는 블럭 구조도이다.
도 4는 도 3의 FPU-PE에서 부동 소수점 연산을 위한 오퍼랜드 입력 구조를 보여주는 블럭 구조도이다.
도 5는 도 3의 FPU-PE에서 시간적(temporal) 매핑을 통한 데이터 연산 과정을 보여주는 블럭 구조도이다.
도 6은 도 3의 FPU-PE에서 PE 간의 기존 연결을 이용한 데이터 이동 방식을 보여주는 블럭 구조도이다.
도 7a ~ 7c는 도 6의 FPU-PE에서 PE 위치 조정의 장점을 좀더 상세하기 설명하기 위한 블럭 구조도들이다.
도 8은 도 2의 PE의 구조를 좀더 상세히 보여주는 블럭 구조도이다.
도 9a 및 9b는 도 1의 프레임 버퍼 내의 부동 소수점 저장 형식 및 FPU-PE의 데이터가 프레임 버퍼 내로 변환되는 모습을 보여주는 구조도이다.
도 10은 부동 소수점 연산을 지원하는 재구성 어레이를 형성하는 방법을 보여주는 흐름도이다.
도 11은 재구성 어레이를 이용한 부동 소수점 연산 방법을 보여주는 흐름도 이다.

Claims (39)

  1. 2개의 입력값을 받아 정수 연산을 수행하는 연산 장치(Aritmetic and Logic Unit: ALU)를 구비한 프로세싱 요소(processing element: PE)가 다수 개 배열된 PE 어레이를 포함하고,
    부동 소수점(floating point) 연산을 지원할 수 있도록 상기 PE가 2개 이상 결합하여 부동 소수점 유닛(Floating-Point Unit:FPU)-PE를 형성한 부동 소수점 연산을 지원하는 FPU-PE 구조.
  2. 제1 항에 있어서,
    상기 PE 어레이는 상기 PE들이 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결되어 있으며,
    상기 PE 어레이는 정수 연산시에는 각각의 PE가 정수 연산을 수행하고, 부동 소수점 연산시에는 상기 PE가 2개 이상 결합되어 상기 FPU-PE를 형성함으로써 부동 소수점 연산을 수행할 수 있는 것을 특징으로 하는 FPU-PE 구조.
  3. 제2 항에 있어서,
    상기 PE들은 부동 소수점 연산을 위해 상기 PE 어레이의 한 행 또는 한 열 내의 2개 이상의 PE가 결합하여 상기 FPU-PE를 형성하는 것을 특징으로 하는 FPU-PE 구조.
  4. 제3 항에 있어서,
    상기 PE 어레이는 정수 연산시에는 8×5 배열 구조를 가지며, 부동 소수점 연산시에는 각 행 내의 2개의 PE가 결합되어 4×5 배열 구조를 갖는 것을 특징으로 하는 FPU-PE 구조.
  5. 제2 항에 있어서,
    상기 PE 어레이의 행 또는 열들의 PE 연산 및 PE 간의 데이터 통신은 구성 캐쉬(Configurable Cache)에 저장된 컨텍스트(context)에 의해 제어되며,
    상기 PE들은 상기 구성 캐쉬(Configurable Cache)를 통해 입력받은 상기 컨텍스트에 의해 행 또는 열 단위로 설정되어 파이프(pipe) 라인을 형성하며,
    상기 파이프 라인 동작 시 처리한 결과를 상기 컨텍스트가 지시하는 방향으로 포워딩하는 것을 특징으로 하는 FPU-PE 구조.
  6. 제5 항에 있어서,
    상기 FPU-PE는 시간적 매핑(temporal mapping)이 되며, 상기 FPU-PE는 최종적인 값을 구하기 전까지는 다음 연산을 위한 컨텍스트 제어신호를 입력 받지 않으며, 매 사이클마다 최종적인 값이 얻어진 뒤에 상기 컨텍스트의 제어신호를 받아 멀티 사이클 연산을 수행하는 것을 특징으로 하는 FPU-PE 구조.
  7. 제2 항에 있어서,
    상기 FPU-PE 구조는 부동 소수점에 대한 사칙연산 및 초월함수 계산을 수행할 수 있는 것을 특징으로 하는 FPU-PE 구조.
  8. 제7 항에 있어서,
    상기 사칙연산 계산시, 상기 FPU-PE는 2개의 PE가 결합하여 이루어지고, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE로는 2개의 오퍼랜드(operand)의 부호 및 소수부가 입력되고 다른 하나의 PE로는 상기 2개의 오퍼랜드의 지수부가 입력되는 것을 특징으로 하는 FPU-PE 구조.
  9. 제8 항에 있어서,
    상기 사칙연산 곱셈 또는 나눗셈을 계산하는 경우,
    상기 2개의 오퍼랜드는 지수부와 소수부로 나누어져 상기 지수부는 덧셈 또는 뺄셈을 통해 계산되고 상기 소수부는 곱셈 또는 나눗셈을 통해 계산되며,
    상기 소수부의 곱셈 또는 나눗셈은 상기 2개의 PE 중 곱셈기 및 나눗셈기를 공유하는 PE에 의해 계산되는 것을 특징으로 하는 FPU-PE 구조.
  10. 2개 이상의 정수 연산 프로세싱 요소(processing element: PE)가 결합하여 이루어진 부동 소수점 유닛(Floating-Point Unit: FPU)-PE가 다수 개 배열된 PE 어레이(array);
    상기 PE 어레이의 행 또는 열 별로 PE 연산 및 PE 간의 데이터 통신을 제어하는 컨텍스트(context)가 저장되는 구성 캐쉬(Configurable Cache); 및
    상기 PE 어레이가 수행한 중간 결과를 저장하는 캐시 메모리인 프레임 버퍼(Frame buffer);를 포함하고,
    상기 FPU-PE를 이용하여 부동-소수점(floating point) 연산을 수행할 수 있는 재구성 어레이 프로세서(Reconfigurable Array Processor).
  11. 제10 항에 있어서,
    상기 PE는 2개의 입력을 받아 정수 연산 처리하는 연산 장치(Arithmetic and Logic Unit: ALU)를 포함하고,
    상기 PE 어레이는 상기 PE들이 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결되어 있으며,
    상기 PE 어레이는 정수 연산시에는 각각의 PE가 정수 연산을 수행하고, 부동 소수점 연산시에는 상기 PE가 2개 이상 결합되어 상기 FPU-PE를 형성함으로써 부동 소수점 연산을 수행할 수 있는 것을 특징으로 하는 재구성 어레이 프로세서.
  12. 제11 항에 있어서,
    상기 PE들은 부동 소수점 연산을 위해 한 행 또는 한 열 내의 2개 이상의 PE가 결합하여 상기 FPU-PE를 형성하는 것을 특징으로 하는 재구성 어레이 프로세서.
  13. 제12 항에 있어서,
    상기 PE 어레이는 정수 연산시에는 8×5 배열 구조를 가지며, 부동 소수점 연산시에는 각 행 내의 2개의 PE가 결합되어 4×5 배열 구조를 갖는 것을 특징으로 하는 재구성 어레이 프로세서.
  14. 제11 항에 있어서,
    상기 각각의 PE들은 상기 구성 캐쉬를 통해 입력 받은 상기 컨텍스트에 의해 행 또는 열 단위로 설정되어 파이프(pipe) 라인을 형성하며,
    상기 파이프 라인 동작 시 처리한 결과를 상기 컨텍스트가 지시하는 방향으로 포워딩하는 것을 특징으로 하는 재구성 어레이 프로세서.
  15. 제14 항에 있어서,
    상기 FPU-PE는 시간적 매핑(temporal mapping)이 되며, 상기 FPU-PE는 최종적인 값을 구하기 전까지는 다음 연산을 위한 컨텍스트 제어신호를 입력 받지 않으며, 매 사이클마다 최종적인 값이 얻어진 뒤에 상기 컨텍스트의 제어신호를 받아 멀티 사이클 연산을 수행하는 것을 특징으로 하는 재구성 어레이 프로세서.
  16. 제11 항에 있어서,
    상기 재구성 어레이 프로세서는 부동 소수점에 대한 사칙연산 및 초월함수 계산을 수행할 수 있는 것을 특징으로 하는 재구성 어레이 프로세서.
  17. 제11 항에 있어서,
    상기 사칙연산 계산시, 상기 FPU-PE는 2개의 PE가 결합하여 이루어지고, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE로는 2개의 오퍼랜드(operand)의 부호 및 소수부가 입력되고 다른 하나의 PE로는 상기 2개의 오퍼랜드의 지수부가 입력되는 것을 특징으로 하는 재구성 어레이 프로세서.
  18. 제17 항에 있어서,
    상기 사칙연산 곱셈 또는 나눗셈을 계산하는 경우,
    상기 2개의 오퍼랜드는 지수부와 소수부로 나누어져 상기 지수부는 덧셈 또는 뺄셈을 통해 계산되고 상기 소수부는 곱셈 또는 나눗셈을 통해 계산되며,
    상기 소수부의 곱셈 또는 나눗셈은 상기 2개의 PE 중 곱셈기 및 나눗셈기를 공유하는 PE에 의해 계산되는 것을 특징으로 하는 재구성 어레이 프로세서.
  19. 제10 항에 있어서,
    상기 프레임 버퍼는 24-비트(bit) 부동 소수점 포맷을 가질 수 있는 것을 특징으로 하는 재구성 어레이 프로세서.
  20. 제19 항에 있어서,
    상기 24-비트(bit) 부동 소수점 포맷은 1-비트의 부호 비트, 8-비트의 지수 비트 및 15-비트의 소수 비트로 이루어지는 것을 특징으로 하는 재구성 어레이 프로세서.
  21. 제20 항에 있어서,
    상기 재구성 어레이 프로세서는 부동 소수점에 대한 사칙연산 및 초월함수 계산을 수행할 수 있으며,
    상기 사칙연산 계산시, 상기 FPU-PE는 2개의 PE가 결합하여 이루어지고, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE로는 2개의 오퍼랜드(operand)의 부호 및 소수부가 입력되고 다른 하나의 PE로는 상기 2개의 오퍼랜드의 지수부가 입력되며,
    상기 FPU-PE의 2개의 PE 중 부호 및 소수부가 입력되는 PE의 계산 데이터는 상기 프레임 버퍼의 1-비트 부호 비트 및 15-비트 소수 비트 부분으로 변환되어 저장되고, 소수부가 입력되는 PE의 계산 데이터는 상기 프레임 버퍼의 8-비트 지수 비트 부분으로 변환되어 저장되는 것을 특징으로 하는 재구성 어레이 프로세서.
  22. 제10 항에 있어서,
    상기 재구성 어레이는 콜스-그레인드 재구성 어레이(Coarse-Grained Reconfigurable Array: CGRA) 구조를 갖는 것을 특징으로 하는 재구성 어레이 프로세서.
  23. 제22 항에 있어서,
    상기 재구성 어레이 프로세서는 상기 구성 요소들을 제어하는 재구성 어레이(Reconfigurable Array: RA) 제어부(control unit)를 포함하는 것을 특징으로 하는 재구성 어레이 프로세서.
  24. 제10 항의 재구성 어레이 프로세서;
    상기 재구성 어레이 프로세서의 각 구성 요소들과 연결되는 시스템 버스(System Bus); 및
    상기 시스템 버스 통해 상기 구성요소들과 연결되어 상기 재구성 어레이 프로세서를 제어하고 데이터를 저장하는 제어 및 메모리부;를 포함하는 멀티미디어 플랫폼(Multi-media Platform).
  25. 제24 항에 있어서,
    상기 제어 및 메모리부는
    데이터 처리 및 제어를 위한 임베디드 코어(Embedded Core), 데이터 저장을 위한 외부 메모리, 및 데이터 이동을 위한 디엠에이(DMA: Direct Memory Access) 컨트롤러를 포함하는 것을 특징으로 하는 멀티미디어 플랫폼.
  26. 제25 항에 있어서,
    상기 임베디드 코어는 리스크(Reduced Instruction Set Computer: RISC) 프 로세서 또는 리스크 프로세서 및 시스크(Complex Instruction Set Computer: CISC) 프로세서의 특징이 혼합된 형태의 프로세서인 것을 특징으로 하는 멀티미디어 플랫폼.
  27. 제24 항에 있어서,
    상기 멀티미디어 플랫폼은
    SoC(System on Chip) 구조로 구현됨으로써, 상기 재구성 어레이 프로세서의 각 구성 요소들이 하나의 상기 시스템 버스를 통해 상기 제어 및 메모리부의 각 구성 요소들에 연결되는 것을 특징으로 하는 멀티미디어 플랫폼.
  28. 제24 항에 있어서,
    상기 PE는 2개의 입력을 받아 정수 연산 처리하는 연산 장치(Arithmetic and Logic Unit: ALU)을 포함하고,
    상기 PE들은 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결되어 있으며,
    상기 PE 어레이는 정수 연산시에는 각각의 PE가 정수 연산을 수행하고, 부동 소수점 연산시에는 상기 PE가 2개 이상 결합되어 상기 FPU-PE를 형성함으로써 부동 소수점 연산을 수행하는 것을 특징으로 하는 멀티미디어 플랫폼.
  29. 제28 항에 있어서,
    상기 각각의 PE들은 상기 구성 캐쉬에 의해 입력 받은 상기 컨텍스트에 의해 행 또는 열 단위로 설정되어 파이프(pipe) 라인을 형성하며,
    상기 파이프 라인 동작 시 처리한 결과를 상기 컨텍스트가 지시하는 방향으로 포워딩하며,
    상기 FPU-PE는 시간적 매핑(temporal mapping)이 되며, 상기 FPU-PE는 최종적인 값을 구하기 전까지는 다음 연산을 위한 컨텍스트 제어신호를 입력 받지 않으며, 매 사이클마다 최종적인 값이 얻어진 뒤에 상기 컨텍스트의 제어신호를 받아 멀티 사이클 연산을 수행하는 것을 특징으로 하는 멀티미디어 플랫폼.
  30. 제28 항에 있어서,
    상기 재구성 어레이 프로세서는 부동 소수점에 대한 사칙연산 및 초월함수 계산을 수행할 수 있는 것을 특징으로 하는 멀티미디어 플랫폼.
  31. 제30 항에 있어서,
    상기 사칙연산 계산시, 상기 FPU-PE는 2개의 PE가 결합하여 이루어지고, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE로는 2개의 오퍼랜드(operand)의 부호 및 소수부가 입력되고 다른 하나의 PE로는 상기 2개의 오퍼랜드의 지수부가 입력되는 것을 특징으로 하는 멀티미디어 플랫폼.
  32. 제31 항에 있어서,
    상기 사칙연산 곱셈 또는 나눗셈을 계산하는 경우,
    상기 2개의 오퍼랜드는 지수부와 소수부로 나누어져 상기 지수부는 덧셈 또는 뺄셈을 통해 계산되고 상기 소수부는 곱셈 또는 나눗셈을 통해 계산되며,
    상기 소수부의 곱셈 또는 나눗셈은 상기 2개의 PE 중 곱셈기 및 나눗셈기를 공유하는 PE에 의해 계산되는 것을 특징으로 하는 멀티미디어 플랫폼.
  33. 제24 항에 있어서,
    상기 프레임 버퍼는 1-비트의 부호 비트, 8-비트의 지수 비트 및 15-비트의 소수 비트로 이루어지는 24-비트(bit) 부동 소수점 형식을 가질 수 있는 것을 특징으로 하는 멀티미디어 플랫폼.
  34. 제24 항에 있어서,
    상기 재구성 어레이 프로세서는 콜스 재구성 어레이 구조를 가지며,
    상기 재구성 어레이 프로세서는 상기 구성 요소들을 제어하는 재구성 어레이(Reconfigurable Array: RA) 제어부(control unit)를 포함하는 것을 특징으로 하는 멀티미디어 플랫폼.
  35. PE 어레이의 적어도 2개의 PE를 결합하는 것에 의해 적어도 하나의 부동 소수점 유닛(Floating-Point Unit:FPU)-PE를 형성하는 단계;
    재구성 캐쉬의 레지스터에 저장된 컨텍스트를 상기 FPU-PE로 시간적 매핑하 여 파이프 라인을 형성하는 단계; 및
    PE 어레이로 연결 구조를 적용하여 메쉬 구조를 생성하는 단계;를 포함하는 재구성 어레이 형성방법.
  36. 제35 항에 있어서,
    상기 적어도 2개의 PE 결합은 PE 어레이의 열 또는 행으로 적어도 2개의 PE를 결합하는 것을 포함하는 것을 특징으로 하는 재구성 어레이 형성방법.
  37. 제35 항에 있어서,
    상기 메쉬 구조의 생성은 생성된 FPU-PE를 열 및 행으로 연결하는 것을 포함하는 것을 특징으로 하는 재구성 어레이 형성방법.
  38. 부호, 지수 및 소수를 각각 포함하는 2개의 오퍼랜드를 입력 받는 단계;
    상기 오퍼랜드를 연산하는 단계; 및
    연산된 결과값이 최종값인지 임시값인지 판단하는 단계;를 포함하고,
    상기 오퍼랜드를 연산하는 단계는 연산이 곱셈 또는 나눗셈을 포함하는 경우에, 지수는 덧셈 또는 뺄셈을 통해서 계산하고, 지수는 곱셈 또는 나눗셈을 통해 생성하는 것을 특징으로 하는 재구성 어레이를 이용한 부동 소수점 연산 방법.
  39. 제38 항에 있어서,
    상기 결과값이 최종값인 경우 프레임 버퍼에 저장하고, 임시값인 경우에는 다은 계산을 위해 레지스터에 저장하거나 다른 FPU-PE로 전달되는 것을 특징으로 하는 부동 소수점 연산 방법.
KR1020080090012A 2007-09-11 2008-09-11 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼 KR100948512B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20070092139 2007-09-11
KR1020070092139 2007-09-11

Publications (2)

Publication Number Publication Date
KR20090027184A true KR20090027184A (ko) 2009-03-16
KR100948512B1 KR100948512B1 (ko) 2010-03-25

Family

ID=40452170

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080090012A KR100948512B1 (ko) 2007-09-11 2008-09-11 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼

Country Status (5)

Country Link
US (1) US8078835B2 (ko)
JP (1) JP5089776B2 (ko)
KR (1) KR100948512B1 (ko)
DE (1) DE212007000102U1 (ko)
WO (1) WO2009035185A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130037101A (ko) * 2011-10-05 2013-04-15 삼성전자주식회사 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
US8862825B2 (en) 2010-09-27 2014-10-14 Samsung Electronics Co., Ltd. Processor supporting coarse-grained array and VLIW modes
US9135003B2 (en) 2010-03-04 2015-09-15 Samsung Electronics Co., Ltd. Reconfigurable processor and reconfigurable processing method of vector operation using vector lane configuration information
WO2021049828A1 (ko) * 2019-09-10 2021-03-18 주식회사 모빌린트 복수 개의 코어를 갖는 연산 장치
KR20220077076A (ko) * 2020-12-01 2022-06-08 한국전자통신연구원 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법
US11893392B2 (en) 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7474488B2 (en) * 2005-08-30 2009-01-06 International Business Machines Corporation Magnetic head, tape drive system, and method
JP4232838B2 (ja) * 2007-03-29 2009-03-04 日本電気株式会社 再構成可能なsimd型プロセッサ
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
CN101782893B (zh) * 2009-01-21 2014-12-24 上海芯豪微电子有限公司 可重构数据处理平台
US20120271968A1 (en) * 2011-04-21 2012-10-25 Microchip Technology Incorporated Logic device for combining various interrupt sources into a single interrupt source and various signal sources to control drive strength
US9450585B2 (en) 2011-04-20 2016-09-20 Microchip Technology Incorporated Selecting four signals from sixteen inputs
US9721319B2 (en) 2011-10-14 2017-08-01 Mastercard International Incorporated Tap and wireless payment methods and devices
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
JP2014016894A (ja) 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
EP3014456A4 (en) * 2013-06-24 2017-01-18 Intel Corporation Page management approach to fully utilize hardware caches for tiled rendering
DE102013212840B4 (de) 2013-07-02 2022-07-07 Robert Bosch Gmbh Modellberechnungseinheit und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells mit Daten in verschiedenen Zahlenformaten
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
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
CN103761075B (zh) * 2014-02-10 2017-01-25 东南大学 一种粗粒度动态可重构数据规整控制单元结构
JP6786955B2 (ja) * 2016-08-25 2020-11-18 富士ゼロックス株式会社 再構成可能論理回路
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10885985B2 (en) 2016-12-30 2021-01-05 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10114795B2 (en) 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US20190303297A1 (en) * 2018-04-02 2019-10-03 Intel Corporation Apparatus, methods, and systems for remote memory access in a configurable spatial accelerator
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) * 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
CN109523019B (zh) * 2018-12-29 2024-05-21 百度在线网络技术(北京)有限公司 加速器、基于fpga的加速系统及控制方法、cnn网络系统
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10698853B1 (en) * 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11269635B1 (en) * 2019-10-21 2022-03-08 Accenture Global Solutions Limited Hardware efficient statistical moment computation
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
CN112286864B (zh) * 2020-12-24 2021-06-04 北京清微智能科技有限公司 加速可重构处理器运行的稀疏化数据处理方法及系统
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
CN113504893B (zh) * 2021-07-23 2022-08-26 河南亿秒电子科技有限公司 一种智能芯片架构和高效处理数据的方法
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6912626B1 (en) * 2000-08-31 2005-06-28 Micron Technology, Inc. Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner
US20070067380A2 (en) * 2001-12-06 2007-03-22 The University Of Georgia Research Foundation Floating Point Intensive Reconfigurable Computing System for Iterative Applications
JP3719509B2 (ja) * 2002-04-01 2005-11-24 株式会社ソニー・コンピュータエンタテインメント シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
US7082451B2 (en) * 2002-09-09 2006-07-25 Freescale Semiconductor, Inc. Reconfigurable vector-FFT/IFFT, vector-multiplier/divider
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US6971083B1 (en) * 2002-11-13 2005-11-29 Altera Corporation Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions
US7242216B1 (en) * 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
KR100834412B1 (ko) 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135003B2 (en) 2010-03-04 2015-09-15 Samsung Electronics Co., Ltd. Reconfigurable processor and reconfigurable processing method of vector operation using vector lane configuration information
US8862825B2 (en) 2010-09-27 2014-10-14 Samsung Electronics Co., Ltd. Processor supporting coarse-grained array and VLIW modes
KR20130037101A (ko) * 2011-10-05 2013-04-15 삼성전자주식회사 정적 라우터 기반의 코어스 그레인 재구성가능 어레이
WO2021049828A1 (ko) * 2019-09-10 2021-03-18 주식회사 모빌린트 복수 개의 코어를 갖는 연산 장치
KR20220077076A (ko) * 2020-12-01 2022-06-08 한국전자통신연구원 멀티 프로세서 시스템 및 그의 부동 소수점 연산 처리 방법
US11893392B2 (en) 2020-12-01 2024-02-06 Electronics And Telecommunications Research Institute Multi-processor system and method for processing floating point operation thereof

Also Published As

Publication number Publication date
US20090113169A1 (en) 2009-04-30
KR100948512B1 (ko) 2010-03-25
DE212007000102U1 (de) 2010-03-18
WO2009035185A1 (en) 2009-03-19
JP2010539582A (ja) 2010-12-16
US8078835B2 (en) 2011-12-13
JP5089776B2 (ja) 2012-12-05

Similar Documents

Publication Publication Date Title
KR100948512B1 (ko) 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼
KR101098758B1 (ko) Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
US10884734B2 (en) Generalized acceleration of matrix multiply accumulate operations
US8468335B2 (en) Reconfigurable system having plurality of basic function units with each unit having a plurality of multiplexers and other logics for performing at least one of a logic operation or arithmetic operation
US8341204B2 (en) Vector SIMD processor
US8078833B2 (en) Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
CN116522058A (zh) 可重新配置的矩阵乘法器系统和方法
US11816481B2 (en) Generalized acceleration of matrix multiply accumulate operations
JP2001256038A (ja) 柔軟な乗算ユニットを有するデータ・プロセッサ
JP3667635B2 (ja) 演算装置
Jo et al. Implementation of floating-point operations for 3D graphics on a coarse-grained reconfigurable architecture
EP2304594B1 (en) Improvements relating to data processing architecture
US20080059764A1 (en) Integral parallel machine
US6351760B1 (en) Division unit in a processor using a piece-wise quadratic approximation technique
US7769981B2 (en) Row of floating point accumulators coupled to respective PEs in uppermost row of PE array for performing addition operation
US8190669B1 (en) Multipurpose arithmetic functional unit
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
JP2008507039A (ja) プログラム可能なプロセッサのアーキテクチャ
EP1102161A2 (en) Data processor with flexible multiply unit
US20020040427A1 (en) Single instruction multiple data processing
US7587582B1 (en) Method and apparatus for parallel arithmetic operations
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
Sunitha et al. Design and Comparison of Risc Processors Using Different Alu Architectures

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130111

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee