KR20090030498A - Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로 - Google Patents

Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로 Download PDF

Info

Publication number
KR20090030498A
KR20090030498A KR1020070095852A KR20070095852A KR20090030498A KR 20090030498 A KR20090030498 A KR 20090030498A KR 1020070095852 A KR1020070095852 A KR 1020070095852A KR 20070095852 A KR20070095852 A KR 20070095852A KR 20090030498 A KR20090030498 A KR 20090030498A
Authority
KR
South Korea
Prior art keywords
cycle
circuit
shift
floating point
input
Prior art date
Application number
KR1020070095852A
Other languages
English (en)
Other versions
KR101098758B1 (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 KR1020070095852A priority Critical patent/KR101098758B1/ko
Priority to EP08831958A priority patent/EP2191364A4/en
Priority to US12/234,507 priority patent/US8046564B2/en
Priority to PCT/KR2008/005575 priority patent/WO2009038397A2/en
Publication of KR20090030498A publication Critical patent/KR20090030498A/ko
Application granted granted Critical
Publication of KR101098758B1 publication Critical patent/KR101098758B1/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
    • 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
    • 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
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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/386Special constructional features
    • G06F2207/3896Bit slicing

Landscapes

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

Abstract

본 발명은 부동 소수점을 지원할 수 있는 FP-RA 구조에서, 부동 소수점 연산을 위하여 FP-RA를 구성하는 PE의 구체적인 구조 및 그 FP-RA를 제어하는 제어 회로를 제공한다. 그 PE 구조는 부동 소수점(Floating Point: FP) 연산을 지원하는 FP-재구성 어레이(Reconfigurable Array:RA)를 구성하고, 쌍으로 결합하여 부동 소수점 유닛(Floating-Point Unit: FPU)-PE를 구성하는 정수 연산 프로세싱 요소(Processing Element: PE)에 있어서, 2개의 오퍼랜드(operand)를 입력받아 연산을 수행하는 연산 장치(Arithmetic Logic Unit: ALU); 상기 연산 장치(ALU)에 각각 하나의 입력 값을 입력하는 2개의 멀티플렉서(MUX); 상기 연산 장치의 결과들에 쉬프트 연산을 수행하는 쉬프터(Shifter); 및 상기 연산 장치의 중간 결과와 상기 쉬프터의 중간 결과를 저장하는 임시 레지스터(Resistor) 및 상기 연산 장치의 최종 결과와 상기 쉬프터의 최종 결과를 저장하는 출력 레지스터;를 포함하고, 상기 구성 요소간 부동 소수점 연산을 위한 데이터 패스가 형성되어 있다.

Description

FP-RA를 구성하는 PE 구조 및 그 FP-RA 제어하는 FP-RA 제어 회로{Processing Element(PE) structure forming Floating Point-Reconfigurable Array(FP-RA) and FP-RA control circuit for controlling the same FP-RA}
본 발명은 멀티미디어 장치에 관한 것으로서, 특히 부동 소수점 연산을 지원하는 재구성 어레이 내에 포함되어 FP-RA를 구성하는 PE 구조 및 그 FP-RA 제어하는 FP-RA 제어 회로에 관한 것이다.
현재 높은 품질의 멀티미디어 서비스에 대한 요청이 증가함에 따라, 특히 휴대용 시스템에 있어서, 오디오 및/또는 비디오 데이터 처리에 관한 효율적인 응용 프로그램에 대한 기술이 발전하고 있다. 이러한 응용 프로그램 등은 일반적으로 복잡한 데이터 집중적인 계산(data intensive computation)을 수행하는 특징을 가지는데, 이러한 응용 프로그램은 크게 2개의 방식으로 구현될 수 있다.
하나는 일반적인 목적의 프로세서 상에서 운영되는 소프트웨어 구현방식(SI: Software 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 동작이 가능하므로 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로는 ADRES(Architecture for Dynamically Reconfigurable Embedded System), PACT-XPP(extreme processing platform) 등이 있다.
그러나 기존의 RA는 정수 연산만을 지원함으로써 응용 범위가 주로 오디오/비디오 코덱(CODEC)에 국한되어 있다. 반면 최근 부각되고 있는 멀티미디어 응용분야인 3D 그래픽스/2D 벡터 그래픽스/GPS 등은 부동 소수점 벡터 연산을 기반으로 하기 때문에 기존의 정수 기반 CGRA로 처리하기엔 부적합하다. 그래픽을 지원하기 위해서는 PE 자체를 부동소수점 연산에 기반하여 설계할 수 있으나 PE의 하드웨어 사이즈가 과다하게 커지는 문제가 있으며, 현재 멀티미디어의 주요한 분야인 CODEC은 정수 연산만으로 구성되고, 이러한 정수 연산만을 수행하는 경우 PE를 구성하는 하드웨어 중 부동 소수점과 관련된 블록은 사용되지 않게 하드웨어 사용(hardware usage) 면에서 매우 비효율적이다.
본 발명이 해결하고자 하는 과제는 부동 소수점을 지원할 수 있는 FP-RA 구조에서, 부동 소수점 연산을 위하여 FP-RA를 구성하는 PE의 구체적인 구조 및 그 FP-RA를 제어하는 제어 회로를 제공하는 데에 있다.
상기 과제를 달성하기 위하여, 본 발명은 부동 소수점(Floating Point: FP) 연산을 지원하는 FP-재구성 어레이(Reconfigurable Array:RA)를 구성하고, 쌍으로 결합하여 부동 소수점 유닛(Floating-Point Unit: FPU)-PE를 구성하는 정수 연산 프로세싱 요소(Processing Element: PE)에 있어서, 2개의 오퍼랜드(operand)를 입력 받아 연산을 수행하는 연산 장치(Arithmetic Logic Unit: ALU); 상기 연산 장치(ALU)에 각각 하나의 입력 값을 입력하는 2개의 멀티플렉서(MUX); 상기 연산 장치의 결과들에 쉬프트 연산을 수행하는 쉬프터(Shifter); 및 상기 연산 장치의 중간 결과와 상기 쉬프터의 중간 결과를 저장하는 임시 레지스터(Resistor) 및 상기 연산 장치의 최종 결과와 상기 쉬프터의 최종 결과를 저장하는 출력 레지스터;를 포함하고, 상기 구성 요소간 부동 소수점 연산을 위한 데이터 패스가 형성되어 있는 것을 특징으로 하는 PE 구조를 제공한다.
본 발명에 있어서, 상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE는 2개의 오퍼랜드(operand)의 부호 및 가수부가 입력되는 가수부 PE이고 다른 하나의 PE는 상기 2개의 오퍼랜드의 지수부가 입력되는 지수부 PE이다. 한편, 부동 소수점 을 연산을 위한 데이터 패스는 상기 ALU와 출력 레지스터 간의 부동 소수점 부호(sing) 처리를 위한 부호 처리용 패스, 상기 ALU와 출력 레지스터 간의 쉬프트 연산이 수행되지 않는 데이터 이동을 위한 비쉬프트 연산용 패스, 및 상기 쉬프터와 출력 레지스터 및 상기 ALU와 출력 레지스터 간의 라운드(round) 연산을 위한 라운드 연산용 패스를 포함할 수 있다.
본 발명에 있어서, 상기 연산 장치는 부동 소수점 연산을 위하여 기존 정수 연산용 ALU에, 2개의 오퍼랜드를 교환하는 스왑 회로; 2개의 값의 차에 대한 절대값을 구하는 절대값 계산기(ABS-VAL) 회로; 다른 PE로 전달하기 위한 플래그(flag)를 생성하는 플래그 생성기(flag-genertator) 회로; 지수부를 표준화(normalize)하기 위해 1의 값을 갖는 가장 큰 자리수의 비트의 위치를 구하는 리딩-원 검출기(leading-one-detector) 회로; 스왑한 값 또는 프래그 값을 출력으로 내보내는 먹스 언쉬프트(Mux Unshift) 회로; 및 컨텍스트(context) 워드 및 표준화를 위해 자체 생성된 쉬프트 값에 의해 쉬프트 연산을 수행하는 쉬프트 제어(Shift Ctrl) 회로;를 더 포함할 수 있다.
이러한 상기 연산 장치는, 상기 2개의 멀티플렉서를 통해 입력되거나, 피드백(feedback)을 통해 입력, 또는 직접 입력되는 2개의 오퍼랜드가, 덧셈기 또는 뺄셈기(ADD/SUB), 논리(LOGICAL), 상기 스왑(SWAP), 버스 스위치(BUS SWITCH), 상기 플래그 생성기(FLAG GENERATOR), 리딩-원 검출기(L.O.D), 및 비교기(CMP) 회로로 입력되고, 상기 덧셈기 또는 뺄셈기(ADD/SUB), 논리(LOGICAL) 및 스왑(SWAP) 회로의 출력 값은 먹스 쉬프트(MUX SHIFT) 회로로 입력되고, 상기 스왑(SWAP), 버스 스 위치(BUS SWITCH), 플래그 생성기(FLAG GENERATOR), 리딩-원 검출기(L.O.D), 및 비교기(CMP) 회로의 출력값은 상기 먹스 언쉬프트 회로로 입력되며, 상기 먹스 쉬프트 회로의 출력은 쉬프터 회로로 입력되는 구조를 가질 수 있다. 한편, 상기 덧셈기 또는 뺄셈기의 출력은 상기 절대값 계산기 회로에 입력되고, 상기 절대값 계산기 회로의 출력은 상기 먹스 쉬프트 회로로 입력되며, 상기 쉬프터는 상기 버스 스위치 및 리딩-원 검출기에 연결된 상기 쉬프터 제어기의 제어를 받아 쉬프트 연산을 수행할 수 있다.
본 발명은 또한 상기 과제를 달성하기 위하여, 상기 PE 구조를 제어하는 제어 회로로서, 상기 PE의 연산을 위한 컨텍스트(context) 워드(word)를 저장하는 구성 캐쉬(Configuration Cashe) 내에 포함되어 상기 PE가 부동 소수점 연산을 수행할 수 있도록 제어하는 FP-RA 제어 회로를 제공한다.
본 발명에 있어서, 상기 FP-RA 제어 회로는 FSM(Finite State Machine) 기반 제어 회로를 포함할 수 있고, 상기 FSM 기반 제어 회로는 상기 구성 캐쉬의 레지스터에 연결되어 상기 PE의 멀티 사이클 연산을 위한 컨텍스트 워드를 생성하여 상기 구성 캐쉬의 레지스터로 전달할 수 있다. 한편, 부동 소수점 연산은 하나의 연산 명령어로서 상기 구성 캐쉬로 매핑되어 디코딩되고, 상기 연산 명령어가 멀티 사이클 연산을 위한 명령어인 경우, 상기 FSM 기반 제어 회로가 구동되어 멀티 사이클용 컨텍스트 워드를 생성하여 상기 PE가 멀티 사이클 연산을 수행하도록 제어할 수 있다.
본 발명에 있어서, 상기 PE는 사칙 연산 및 초월 함수에 대한 부동 소수점 연산을 수행하기 위하여 상기 FSM 기반 제어회로를 이용할 수 있는데, 상기 PE는 덧셈 또는 뺄셈에 대한 부동 소수점 연산을 수행하는 경우, 총 6 사이클의 멀티 사이클 연산을 통해 수행될 수 있으며, 곱셈 또는 나눗셈에 대한 부동 소수점 연산을 수행하는 경우, 총 4 사이클 또는 6사이클의 멀티 사이클 연산을 통해 수행될 수 있다.
본 발명에 따른 PE 구조는 정수 연산용 PE에 새로이 확장된 데이터 패스 및 회로를 포함하여, 쌍으로 FP-RA를 구성함으로써, 종래의 RA 구조를 그대로 이용하여 부동 소수점 연산을 지원할 있다. 또한, 본 발명의 PE 구조를 부동 소수점 연산에 사용함으로써 메모리 이용 측면에서 획기적인 감소를 달성할 수 있다.
또한, 본 발명에 따른 FP-RA 제어 회로는 개개의 연산 명령어를 통해 부동 소수점 연산시 개개의 사이클의 연산 각각을 명령어로 매핑하여 수행하는 것이 아니라, 덧셈, 또는 곱셈 등의 연산 자체를 하나의 명령어로 매핑한 후, FSM와 같은 멀티 사이클 제어회로를 통해 멀티 사이클용 명령어를 생성하여 행당 멀티 사이클의 연산을 수행함으로써, 구성 캐쉬의 메모리를 절약할 수 있을 뿐 아니라, 연산 측면에서도 효율적인 계산을 가능하게 한다.
한편, 본 발명에 따른 PE 구조 및 FP-PA 제어회로를 통해 부동 소수점을 지원할 수 있은 재구성 어레이 프로세서는 구현함으로써, 하드웨어 및 프로세서 효율 면에서 고성능의 연산 프로세서를 구현시킬 수 있다. 또한, 이러한 재구성 어레이 프로세서가 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)에서 수행한 연산의 중간 데이터를 임시로 저장하는 캐쉬 메모리의 일종이다.
한편, RA 컨트롤러(400)는 재구성 어레이 프로세서의 각 구성요소들을 전반적으로 제어한다. 예컨대, 구성 캐쉬(200)의 컨텍스트의 입출력을 제어하거나 프레임 버퍼(300)의 데이터 입출력 제어 또는 PE 어레이(100)로의 데이터 이동 등을 제어하게 된다.
본 실시예에서 재구성 어레이 프로세서(100)는 하드웨어 변경 없이 컨텍스트 만 수정함으로써 다양한 연산 수행이 가능하다. 또한, 재구성 어레이 프로세서(100)는 파이프 라인 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가 쌍으로 결합하여 부동 소수점을 지원할 수 있는 FPU(Floating Point Unit)-PE 구조에 대해서 좀더 상세히 설명한다.
도 2는 도 1의 재구성 어레이가 부동 소수점 연산을 위해 2개씩 쌍을 이루어 FPU-PE를 형성한 구조를 보여주는 블럭 구조도이다.
도 2를 참조하면, PE 어레이(100)는 프로그램 가능한 다수의 PE(120)가 행 및 열을 이루는 어레이 구조를 갖는다. 이러한 PE 어레이(100)는 곱셈 및 나눗셈을 연산하기 위해 데이터 버스를 통해 곱셈기 및 나눗셈기에 연결될 수 있다. 예컨대, 정수 연산의 경우, 하나의 PE(120) 자체가 곱셈 또는 나눗셈을 연산하므로 모든 PE(120)가 곱셈기나 나눗셈기에 연결될 수 있지만, 부동 소수점 연산 시의 어레이 구조에서는 일부의 PE(120)만 곱셈 또는 나눗셈을 연산하므로 일부의 PE(120)만 곱셈기(140)나 나눗셈기(160)에 연결되어도 된다.
각각의 PE(120)은 2개의 입력을 받아 처리하는 16 비트 가산기를 포함하여, 16 비트 정수 연산을 수행할 수 있다. 정수 연산시 구성 캐쉬(200)의 컨텍스트 레이어는 정수 연산을 위한 명령어가 저장되게 되는데, 이러한 정수 연산을 위한 컨텍스트에 따라 PE(120)에서의 연산 및 데이터 흐름이 제어된다.
한편, PE 어레이(100)는 PE들이 서로 간의 데이터 교환을 위한 메쉬(mesh) 구조로 서로 연결될 수 있고, 그러한 PE 간의 연결이나 PE 간의 데이터 교환은 구성 캐쉬의 컨텍스트에 따라 이루어진다. 즉, 각각의 PE는 구성 캐쉬를 통해 입력받은 컨텍스트에 의해 행 또는 열 단위로 설정되어 파이프(pipe) 라인을 형성하며, 또한, 설정된 파이프 라인 동작 시 처리한 결과를 컨텍스트가 지시하는 방향으로 포워딩하게 된다.
본 실시예의 PE 어레이(100)는 PE(120) 각각의 측면에서 8 × 5 배열 구조를 갖는데, 이러한 PE 어레이(100)는 부동 소수점 연산을 위해 2개의 PE(120)가 쌍으로 결합하여 FPU(Floating Point Unit)-PE(150)를 형성한다. 이러한 FPU-PE(150)은 한 행 또는 한 열 내의 2개의 PE(120)가 결합하여 형성되는데, 이러한 결합 관계는 컨텍스트 명령어에 따라 이루어진다. 한편, PE(120)들은 FPU-PE(150) 형성을 위해 간단한 하드웨어적 작업, 즉 서로 간의 물리적인 연결관계가 형성되어 있어야 하며, 또한 부동 소수점 연산시 FPU-PE(150)가 부동 소수점 연산을 하기 위한 간단한 소프트웨어적 제어 구조가 필요할 수 있다.
본 실시예는 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(120)가 결합하여 FPU-PE(150)를 형성하 였지만, 초월함수, 제곱근 등의 좀더 복잡한 부동 소수점을 지원하기 위하여 3개 이상의 PE가 결합하여 FPU-PE를 형성할 수 있음은 물론이다.
한편, PE 어레이(100) 내의 FPU-PE(150)는 시간적 매핑(temporal mapping)을 통해 연산을 수행하게 되고 최종적인 값을 구하기 전까지는 다음의 FPU-PE로 포워딩하지 않는다. 즉, 부동 소수점 연산의 경우, 멀티 사이클 연산이 수행되게 되는데, 이러한 멀티 사이클 연산을 통해 하나의 FPU-PE(150)에서 최종 값이 구해진 뒤에 그 값을 필요 로 하는 다음의 FPU-PE에 전달되게 된다. 멀티 사이클 연산에 대해서는 도 6 이하의 설명 부분에서 설명한다.
도 3은 도 2의 FPU-PE에서 부동 소수점 연산을 위한 오퍼랜드 입력 구조를 보여주는 블럭 구조도이다.
도 3을 참조하면, 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의 지수부를 나타낸다. 한편, EC 및 MC는 각 PE의 계산 결과로, EC는 결과값의 부호와 가수부를, 그리고 MC는 결과값의 지수부를 나타낸다.
가수부 PE(120a) 및 지수부 PE(120b)는 라운딩(rounding), 정규화(normalize) 등 부동 소수점 처리에 필요한 연산 회로 및 쌍방 간 데이터를 주고 받기 위한 패스가 필요하며, 이러한 부가적인 하드웨어는 적은 비용만으로 기존 PE 어레이에 손쉽게 추가할 수 있다.
이와 같은 FPU-PE(150)는 부동 소수점 기반의 초월 함수 연산, 로직 연산 및 사칙 연산 등의 다양한 연산을 수행할 수 있다. 물론, 초월함수 등의 복잡한 부동 소수점 연산의 경우, 3 이상의 PE가 결합하여 FPU-PE를 형성할 수도 있다.
본 실시예에 따른 부동 소수점 기반 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에 입력되게 되거나 최종적인 값일 때에는 프레임 버퍼에 저장된다.
도 4는 도 2의 PE의 구조를 좀더 상세히 보여주는 블럭 구조도로서, 본 실시예의 PE 구조에는 기존 정수 연산을 위한 PE 구조에 부동 소수점 연산을 위한 회로 및 데이터 송수신을 위한 패스가 포함된다.
도 4를 참조하면, 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)로 출력된다.
구체적으로, ②의 데이터 패스는 2개의 오퍼랜드를 교환하는 스왑(swap) 명령에 대한 각각의 값을 출력하도록 지원한다. 또는 표준화(normalize) 과정에서 지수부가 왼쪽 또는 오른쪽으로 n 비트 쉬프트 되면 지수부는 기존 값에 n을 더하거나 빼야 하는데, 가수부 PE가 쉬프터를 통해 쉬프트를 수행하고 ②의 데이터 패스를 통해 쉬프트 값 n을 w지수부 PE로 전달할 수 있도록 한다.
③은 라운드 신호(Round signal)를 위한 데이터 패스이다. 부동 소수점 연산 수행 시, 지수부를 시프트한 후 라운드 연산을 수행해야 하는데, 이를 위하여 쉬프 터(126)에 하위 2비트가 추가되고 확장된 데이터를 처리하기 위하여 데이터 패스(③)가 새로 확장된다.
도 5는 도 4의 PE에서의 연산 장치(ALU)를 상세하게 보여주는 블럭 구조도이다.
도 5를 참조하면, 본 실시예에 따른 연산 장치(122)는 크게 오퍼랜드를 선택적으로 출력하는 오퍼랜드 입력부(122a), 오퍼랜드의 구체적인 연산을 수행하는 오퍼랜드 연산부(122b), 및 오퍼랜드 연산부(122b)로부터의 결과값들을 쉬프터(126)로 구별하여 출력하는 쉬프트 계산 선택부(122c)를 포함한다.
오퍼랜드 입력부(122a)는 2개의 멀티플렉서(MUX A, MUX B)를 통해 입력, 피드백(feedback)을 통해 입력, 또는 구성 캐쉬(Configuartion Cache)의 컨텍스트 레이어에 저장된 상수 값(immeaiate value)을 입력받아 선택적으로 각각 하나의 값을 출력하는 2개의 오퍼랜드 먹스 회로(122a1, 122a2)를 포함한다. 또한, 오퍼랜드 연산부(122b)는 덧셈기 또는 뺄셈기(ADD/SUB) 회로(122b1), 절대값 계산기(ABS-VAL) 회로(122b2), 논리(LOGICAL) 회로(122b3), 스왑(SWAP) 회로(122b4), 버스 스위치(BUS SWITCH) 회로(122b5), 플래그 생성기(FLAG GENERATOR) 회로(122b6), 리딩-원 검출기(leading-one-detector: L.O.D) 회로(122b7), 및 비교기(CMP) 회로(122b8) 회로를 포함한다. 한편, 쉬프트 계산 선택부(122c)는, 오퍼랜드 연산부(122b)의 각 구성요소들의 결과값들 중 쉬프트 연산이 필요한 결과값들을 입력받아 선택적으로 출력하는 먹스 쉬프트(MUX SHIFT) 회로(122c1) 및 쉬프트 연산이 불필요한 결과값들을 입력받아 선택적으로 출력하는 먹스 언쉬프트(MUX UNSHIFT) 회로(122c2) 회로를 포함한다.
본 실시예에 따른 부동 소수점을 지원하기 위하여 PE는 기존 정수용 PE에 새로운 회로들이 추가된다. 즉, New1 ~ New6로 표시된 회로들이 종래 정수 연산용 PE의 연산 장치에 새로 추가된다.
구체적으로, 입력된 2개의 값의 차를 구하는 절대값 계산기 회로(122b2), 2개의 오퍼랜드를 서로 교환하는 스왑 회로(122b4), 다른 PE로 전달할 플래그(flag)를 생성하는 플래그 생성기 회로(122b6), 지수부를 표준화(normalization)시키기 위해 1의 값을 갖는 가장 큰 자리수의 비트의 위치를 구하는 리딩 원 검색기 회로(122b7), 스왑한 결과 및 플래그 등을 출력으로 내보내기 위한 언쉬프트 먹스 회로(122c2), 및 컨텍스트 명령어뿐만 아니라 표준화를 위해 자체적으로 생성된 쉬프트 값을 수행하기 위해 쉬프터(126)를 제어하는 쉬프트-제어기 회로(128)이다. 여기서, 쉬프트-제어기 회로(128)는 쉬프터(126)를 제어하기 위한 회로로서 연상 장치(122)에 포함되지 않는다고 볼 수도 있다.
여기서, 절대값 계산기 회로(122b2)는 2개의 값 사이의 차를 구하는 연산이 추가됨으로써, 함께 추가되었고, 스왑 회로(122b4)는 기존에는 먹스(MUX) 회로였으 나 아웃풋을 2개 출력해야 하는 스왑 명령 등을 지원하기 위하여 교체되었다. 한편, 플래그 생성기 회로(122b6)는 리딩 원 검색기 회로(122b7)나 검색기(112b8)에서 발생한 오버플로우 등에 대한 플래그를 생성한다.
간단하게, 연산 장치(122)의 기능을 설명하면, 도 5의 먹스 A(124a) 및 먹스 B(124b)나 피드백(feedback)을 통해 또는 컨텍스트 레이어에서 들어온 오퍼랜드 A 및 오퍼랜드 B는 각각의 구성 요소 즉, 덧셈/뺄셈기 회로(122b1), 논리 회로(122b3), 스왑 회로(122b4), 버스 스위치 회로(122b5), 플래그 생성기 회로(122b6), 및 비교기 회로(122b8)로 각각 입력되며, 한편, 논리 회로(122b3) 및 리딩 원 검색기 회로(122b7)로는 하나의 오퍼랜드, 예컨대 오퍼랜드 A만이 입력된다. 한편, 절대값 계산기 회로(122b2)에는 덧셈/뺄셈기 회로(122b1)의 결과값이 입력된다. 여기서, 논리 회로(122b3)는 논리 연산이 필요한 경우에 이용되며, 버스 스위치(122b5)는 곱셈 또는 나눗셈을 수행할 때, 오퍼랜드를 곱셈기 또는 나눗셈기에 입력시켜 그 결과값을 받는다.
각 구성 요소들의 결과값들 중 쉬프트 계산이 요구되는 것들은 먹스 쉬프트(122c1, MUX SHIFT)로 입력되고, 쉬프트 계산이 불필요한 것들은 먹스 언쉬프트 회로(122c2)로 입력된다. 한편, 쉬프터 제어기 회로(128)는 컨텍스트 레이어에 저장된 쉬프트 값, 버스 스위치(122b5)를 통해 입력된 쉬프트 값 및 리딩 원 검색기 회 로(122b7)에서 자체 생성된 쉬프트 값을 입력받아 쉬프터(126)를 제어하여 쉬프트 연산을 수행시킨다.
한편, 각 구성 요소들의 연산 등은 각 구성요소들을 제어하는 제어 신호들의 제어를 통해 이루어지는데, 아래의 표 1이 각 구성요소를 제어하는 제어신호들이다. 이하 표에서, num이 표시되지 않은 구성요소들은 도 5에 도시되지 않은 구성요소들로, MUA X 및 MUX B는 도 4의 두 개의 멀티플렉서를 의미하며, SEL_OUT나 SEL_REG 등은 쉬프터(126)와 출력 레지스터(127) 사이에 존재하는 일종의 먹스 회로이며, EXCEPTION은 출력 레지스터(127) 전단으로 제외 체크를 위한 회로이며, SIGN_Ctrl은 출력 레지스터(127) 내부에 존재하는 부호를 제어하는 회로이다. 이러한 구성요소들는 일반적인 정수 연산용 PE에도 포함되므로 그에 대한 제어 신호에 대한 설명은 생략한다.
표 1. PE ALU 제어 신호
num name sel1 sel2 sel3 sel4 sel5
. MUX A
. MUX B
1 OPRND A Out<=feeback Out<=MUX A Out<=MUX B Out<=immed
2 OPRND B Out<=feeback Out<=MUX A Out<=MUX B Out<=immed
3 ADD/SUB Out<=opA+opB (add) Out<=opA-opB (sub) if(c=true)add else sub Out<=round
4 LOGICAL Out<= AND Out<= OR Out<= XOR
5 SWAP Out<=swap OUT<=mux out
6 BUS SWITCH Bus_out<= mult_out Bus_in<= mult_in Bus_out<= div_out Bus_in<= dive_in
7 FLAG GENERATOR Out<=flag 1 Out<=flag 2 Out<=flag 3 Out<=flag 4
8 CMP Out<=Eq Out<=Neq Out<=Ge Out<=Gt
9 MUX SHIFT Out<= abs_out Out<=mux_out Out<= add_out Out<= logic_out Out<= shared logic
10 MUX UNSHIFT Out<=mux_out Out<=flag
11 SHIFT Ctrl Out<=context Out<=shared logic Out<=align Out<=lod
. SEL_OUT Out<= mux_shift Out<= mux_unshift
. SEL_REG Out<= mux_shift Out<= mux_unshift
. EXCEPTION enable disable
. SIGN Ctrl store(+) store(-) select xor append
여기서, name은 도 4의 각 구성요소 회로를 지칭하며, sel1 ~ sel5 각 구성 요소 회로들로 입력되는 제어 신호들이다. 이하에서는 각 제어신호에 따른 구성요소 회로들의 작용을 도 5를 참조하여 간단히 설명한다.
OPRND A 회로(122a1)의 경우, sel1의 신호가 OPRND A 회로(122a1)로 입력되면 OPRND A 회로(122a1)는 피드백에 의해 입력된 신호를 출력하며, sel2의 신호가 입력되면 MUX A에서 입력된 신호를 출력한다. sel3, sel4의 신호의 경우도 마찬가지이다. 여기서, immed는 컨텍스트 레이어에서 입력된 신호를 의미한다. 즉, sel4 의 신호가 입력되면, OPRND A 회로(122a1)는 컨텍스트 레이어의 상수 값(Immediate Value)을 출력한다.
ADD/SUB 회로(122b1)의 경우, 제어 신호에 따라 덧셈, 뺄셈 또는 라운딩을 수행한다. 한편, sel3의 제어신호는 라딕스 포인트(radix point)에 따라 선택적으로 덧셈이나 뺄셈을 수행하게 된다.
SWAP 회로(122b4)의 경우, sel1의 신호가 입력되면 스왑이 수행되며, sel2의 신호가 입력되면 스왑을 수행하지 않고 그대로 먹스 회로로 출력하게 된다. BUS_SWITCH 회로(1225)의 경우, 앞서 잠시 설명한 바와 같이 곱셈이나 나눗셈을 실행하는 경우에 이용되며, sel1 신호가 입력되면 곱셈기로 오퍼랜드를 입력시키며, sel2 신호가 입력되면 곱셈기로부터 계산 결과를 입력받는다. sel3나 sel4는 나눗셈기에 대한 제어신호로 곱셈기에 대한 제어신호와 마찬가지이다.
CMP 회로(122b8)의 경우, 두 오퍼랜드를 비교하여 그 결과를 출력하게 되는데, 여기서 Eq는 동일한 경우, Neq는 동일하지 않은 경우, Ge는 크거나 같은 경우, 그리고 Gt는 한쪽이 더 큰 경우를 의미한다.
MUX SHIFT 회로(122c1)와 MUX UNSHIFT 회로(122c2)는 OPRND A 회로(122a1)와 비슷하게 제어 신호에 따라 입력된 신호를 선택적으로 출력한다. 여기서, shared logic는 BUS_SWITCH 회로(122b5)로부터 입력된 신호를 의미한다.
SHIFT Ctrl 회로(128)는 컨텍스트 레이어, BUS SWITCH 회로(122b5), 또는 L.O.D 회로(122b7)로부터 입력된 쉬프트 값을 제어 신호에 따라 쉬프터(126)로 출력한다. 여기서, sel3의 제어 신호의 경우는 라운드 연산시에 지수부 차이만큼 쉬프트 값을 쉬프터(126)로 출력하라는 의미로, OPRND A 또는 OPRND B회로(122a1, 122a1)로부터 입력된다.
부동 소수점 사칙 연산은 기존 연산에서 확장된 정수 PE의 연산의 조합으로 수행된다. 한편, 기존 PE의 정수 연산이 단일 사이클인 반면 부동 소수점 연산은 멀티 사이클이다. 그에 따라, 부동 소수점 연산 시, 매 사이클마다 원하는 연산을 수행하기 위하여 PE에 대한 제어 명령어(control word) 신호를 생성해야 하는 것이 원칙이다.
RA의 구조상 N 사이클이 소요되는 연산의 경우, 매 사이클마다 필요한 제어 명령어를 생성하기 위해 총 N개의 명령어가 필요하다. 그에 따라, 만약 부동 소수점 연산이 자주 사용되게 될 경우, 구성 캐쉬의 사이즈가 매우 커지게 되는 문제가 발생한다.
이러한 문제를 해결하기 위하여, 따라서 본 발명은 효율적인 구조의 FSM(Finite State Machine) 기반 제어 구조를 제안한다.
도 6은 본 발명의 일 실시예에 따른 FSM이 추가된 재구성 캐쉬에 대한 기능도이다.
도 6을 참조하여, 부동 소수점 연산 과정을 간단히 설명하면, 개개의 부동 소수점 연산이 수행될 때, 먼저 구성 캐쉬(200)에 해당 부동 소수점 연산을 하나의 명령어로 매핑하고, 매 사이클마다 필요한 제어 명령어의 생성은 해당 연산 명령어 입력(entry) 시점부터 FSM(500) 천이를 통해 생성함으로써 제어한다. 이와 같은 FSM 기반 제어 구조는 구성 캐쉬(200)의 컨텍스트 레이어 수를 줄일 수 있기 때문에 구성 캐쉬의 메모리 사이즈 측면에서 매우 효율적이다. 그에 따라, 이러한 구성 캐쉬를 멀티미디어 플랫폼에 적용함으로써, 매우 효율적인 멀티미디어 플랫폼을 구현시킬 수 있다.
한편, FSM에 의한 생성된 제어 명령어들의 구성 캐쉬의 컨텍스트 레이어 또는 레지스트에 저장되었다가 각각의 PE(120)의 멀티 사이클 연산에 적용되기 때문에, 이해의 편의를 위해 FSM(500)을 컨텍스트 레지스트와 함께 도시하였다.
본 실시예의 FPU-PE(120)가 지원하는 기본적인 연산은 SIMD 사칙 연산이며, 테일러 급수 근사(Taylor series approximation) 등을 이용하여 삼각함수, 로그 함수 등의 초월 함수로 확장 가능함은 물론이다. 이때, 필요한 경우, FPU-PE는 3개 내지 4개의 PE들이 결합하는 구조가 될 수 있다.
한편, 멀티 사이클을 통해 수행되는 각 부동 소수점 연산은 각각의 사이클마다 사이클을 제어하는 제어 신호를 통해 선택 및/또는 구동됨으로써 수행된다. 이러한 멀티 사이클 연산에 대한 구체적인 예는 도 8 및 9에서 설명한다.
도 7은 도 6의 FSM에 의해 멀티 사이클 연산을 위한 컨텍스트 워드를 생성하는 과정을 보여주는 흐름도이다.
도 7을 참조하면, 먼저, 연산 명령이 입력되면, 구성 캐쉬는 그 명령이 멀티 사이클 연산인지를 판단한다(S100). 멀티 사이클 연산이 아닌 경우, 바로 해당 컨 텍스트 레이어에서 제어 명령어를 로딩하여(S250) 각 PE에서 연산을 수행하게 한다. 예컨대, 정수 연산의 경우에 해당한다고 볼 수 있다.
한편, 멀티 사이클 연산, 즉 부동 소수점 연산인 경우에는 FSM을 구동하여 해당하는 사이클 수만큼의 제어 명령어를 생성한다(S200). 이와 같이 생성된 제어 명령어들은 해당 PE의 각 사이클로 전달되어 각 사이클에서 연산을 제어한다(S300).
즉, 본 실시예에 따른 FSM 기반 제어구조를 추가한 구성 캐쉬는 부동 소수점 연산과 같은 다중 사이클 명령어의 경우, 개개 사이클의 소연산(micro-operation)을 각각의 명령어로 매핑하는 것이 아니라 연산 자체를 하나의 명령어로 매핑한다. 그 후, 명령어를 디코딩하여 그 명령어가 다중 사이클 명령어인 경우, FSM을 구동시킨다. 따라서 다중 사이클 명령어는 FSM의 구동 입력점(entry point)이 된다. FSM은 각 사이클의 연산에 필요한 제어 신호를 구동하기 위한 제어 명령어를 생성한다. 따라서 구성 캐쉬는 저장된 모든 부동 소수점 명령어에 대하여 매 사이클 수행하는 소연산에 대한 모든 제어 명령어를 저장하는 대신 FSM에 대한 입력점만 저장하기 때문에 공간이 훨씬 절약된다.
이하에서는 FSM을 이용한 사칙 연산에 대한 부동 소수점 연산을 과정을 설명한다.
도 8은 본 발명의 일 실시예에 따른 부동 소수점 기반의 덧셈 또는 뺄셈을 보여주는 흐름도로서, 부동 소수점 기반 덧셈 또는 뺄셈은 총 6 사이클 동안 연산이 수행되도록 만들어진다.
도 8을 참조하면, 첫 번째 사이클에는 입력된 두 값 크기를 비교한다. 값 비교는 지수와 소수에 대해 각각 수행된다(A11, A12). 여기서, MAX는 두 값 중 큰 값을 구하며, DIFF는 두 값의 차의 절대값을 구한다는 의미이다.
두 번째 사이클에는 값이 작은 소수에 대해 이전 지수 차만큼 쉬프트하여 정렬한다(A22, ALIGN). 이때, 지수부 PE는 연산을 수행하지 않고 기다린다(A21).
세 번째 사이클에는 가수부에 대해 차를 구하고 오버 플로우 등을 고려하여 1비트 정렬한다(A32). 역시, 지수부 PE는 연산을 수행하지 않고 기다린다(A31).
네 번째 사이클에는 이전 사이클에서 계산된 결과를 최상위비트가 1이 되도록 표준화한다(A41). 가수부의 표준화로 인해 변한 라딕스 포인트(radix point)를 지수부에서 반영할 수 있도록 값을 전달한다(A42).
다섯 번째 사이클에는 가수부로부터 전달받은 값을 지수부에서 빼 라딕스 포인트를 갱신하고(A51) 가수부에서는 라운딩(rounding)을 수행한다(A52).
여섯 번째 사이클에는 제외 체크(exception check)를 수행한다(A61, A62). 한편, 지수부 PE에서의 제외 체크는 다섯 번째 사이클에서 함께 수행될 수도 있다. 다섯 번째 사이클에서, 지수부의 결과가 가수부에 반영되어 제외 체크가 수행되므로 다섯 번째 사이클에서 지수부의 제외 체크가 수행되는 것이 더 바람직할 수도 있다.
뺄셈의 경우 빼는 숫자의 부호를 반대로 바꾼 후 그 뒤는 덧셈과 동일하게 진행시키면 된다. 한편, 여기서 화살표는 가수부 PE와 지수부 PE 간의 데이터 이동 경로를 나타낸다.
도 9는 본 발명의 일 실시예에 따른 부동 소수점 기반의 곱셈을 보여주는 흐름도로서, 부동 소수점 기반의 곱셈은 총 4 사이클 동안 연산이 수행되도록 만들어진다.
기존 CGRA에서는 정수 곱셈기와 나눗셈기는 PE 내부에 내장하기에는 너무 큰 로직이기 때문에 행 또는 열 단위로 하나의 곱셈기와 나눗셈기를 여러 개의 PE가 공유하는 구조를 채택하는 경우가 많으며 본 발명의 CGRA도 그러한 구조를 채택한다. 부동 소수점의 곱셈 또는 나눗셈은 지수부와 가수부로 구분되며 지수부는 덧셈 또는 뺄셈, 가수부는 곱셈 또는 나눗셈에 의해 처리된다. FPU-PE를 구성하는 PE 중 하나가 공유된 곱셈기 또는 나눗셈기를 이용하여 가수부를 계산하고 이와 병렬적으로 또 다른 PE가 지수부를 계산한다.
여기서, 곱셈기 또는 나눗셈기에서의 계산은 여러 방식의 멀티 사이클을 통해 계산될 수 있는데, 계산의 정밀도 및 사이클 수를 고려하여 적절한 멀티 사이클 방식을 채용한 곱셈기 또는 나눗셈기를 이용하는 것이 바람직하다. 본 실시예에서는 2 사이클의 멀티 사이클을 수행하는 곱셈기를 이용하는 경우를 예시하여 설명한다.
도 9를 참조하면, 먼저, 제1 사이클에서 지수부 PE는 덧셈을 수행하고(M11), 가수부 PE는 곱셈기(integer multiplier)로 두 오퍼랜드를 보낸다(M12).
제2 사이클에서, 곱셈기로부터 곱셈 또는 나눗셈 결과값에 따라 1-b비트 정렬을 수행한다(M22). 한편, 지수부 PE에서는 바이어스(bias) 뺄셈을 수행하는데((M21), 일반적으로 오퍼랜드 지수부에는 바이어스 포함되어 있으므로, 덧셈에 의해 두 개의 바이어스가 포함되므로 하나의 바이어스를 빼주어야 정상적인 지수부 표현이 되기 때문이다.
제3 사이클에서, 지수부는 이전 사이클에 수행되었던 가수부의 정렬 결과를 지수 값에 반영하고(M31), 가수부는 라운딩을 수행한다(M32). 또한, 지수부는 지수 값이 범위를 벗어나면 그 다음 사이클에 가수부에서 반영할 수 있도록 신호를 전달한다. 즉, 제어 체크를 수행한다.
제4 사이클에서, 가수부에서 제외 체크를 한다(M42). 물론, 덧셈에서와 마찬가지로 제4 사이클에서 지수부의 제외 체크를 수행할 수 있음은 물론이다.
여기서 화살표는 앞서, 덧셈 또는 뺄셈에서와 같이 두 PE 간의 데이터 이동 경로를 표시한다.
도 10은 본 발명의 일 실시예에 따른 부동 소수점 기반의 나눗셈을 보여주는 흐름도로서, 본 실시예의 나눗셈은 4 사이클의 멀티 사이클을 수행하는 나눗셈기(integer divider)를 이용한다. 따라서, 본 실시예의 부동 소수점 기반의 나눗셈은 총 6 사이클 동안 연산이 수행되도록 만들어진다.
도 10에 도시된 바와 같이, 나눗셈의 경우, 나눗셈기가 4 사이클의 멀티 사이클 연산을 수행하므로, 나눗셈기에서의 연산이 수행될 동안 지수부 및 가수부 PE 가 나눗셈기에서 연산 결과를 기다리는 것(M22, M31, M32)을 제외하고는 곱셈에서와 동일한 과정을 통해 나눗셈을 수행하는 것을 알 수 있다.
앞서 전술한 바와 같이 곱셈기 및 나눗셈기는 여러 가지 방식의 멀티 사이클 방식을 이용할 수 있는데, 만약 곱셈기 및 나눗셈기에서 사이클 수가 적어지면, 그만큼의 계산의 정밀도가 떨어질 수 있다. 따라서, 이러한 곱셈기 및 나눗셈기는 계산의 정밀도 및 계산 속도를 위한 사이클 수를 고려하여 적절한 방식을 채용한 곱셈기 및 나눗셈기를 이용하는 것이 바람직하다.
지금까지, 사칙연산의 예를 들어 부동 소수점 기반의 멀티 사이클 연산과정을 설명하였지만, 사칙 연산뿐만 초월함수에 대해서도 적절한 제어 신호 시퀀스(sequence)를 조합하여 멀티 사이클 연산을 수행할 수 있다. 물론 초월함수의 연산의 경우, 2개의 PE가 아니라 3개 또는 4개의 PE를 결합하여 FPU-PE를 구성함으로써, 좀더 효율적인 연산이 수행되도록 하는 것이 바람직하다.
전술한 바와 같이 본 발명에 따른 FP-RA를 구성하는 PE 구조는 기존 정수 연산용 PE에 새로운 데이터 패스 및 회로를 포함하여, 쌍으로 FP-RA를 구성함으로써, 종래의 RA 구조를 그대로 이용하여 부동 소수점 연산을 지원할 있다. 또한, 본 발명의 PE 구조를 부동 소수점 연산에 사용함으로써 메모리 이용 측면에서 획기적인 감소를 달성할 수 있다.
또한, 본 발명에 따른 FP-RA 제어 회로는 개개의 연산 명령어를 통해 부동 소수점 연산 시 개개의 사이클의 연산 각각을 명령어로 매핑하여 수행하는 것이 아 니라, 덧셈, 또는 곱셈 등의 연산 자체를 하나의 명령어로 매핑한 후, FSM와 같은 멀티 사이클 제어회로를 통해 멀티 사이클용 명령어를 생성하여 행당 멀티 사이클의 연산을 수행함으로써, 구성 캐쉬의 메모리를 절약할 수 있을 뿐 아니라, 연산 측면에서도 효율적인 계산을 가능하게 한다.
한편, 본 발명에 따른 PE 구조 및 FP-PA 제어회로를 통해 부동 소수점을 지원할 수 있은 재구성 어레이 프로세서는 구현함으로써, 하드웨어 및 프로세서 효율 면에서 고성능의 연산 프로세서를 구현시킬 수 있다. 또한, 이러한 재구성 어레이 프로세서가 SoC 구조를 통해 멀티 미디어 플랫폼으로 구현됨으로써, 현재의 저전력 및 가격대비 고성능비를 요구하는 모바일 멀티미디어에 효과적으로 이용될 수 있다.
구체적으로 본 발명에 따른 PE 구조 및 FP-PA 제어회로는 그래픽 분야 중 기하 연산 (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의 재구성 어레이가 부동 소수점 연산을 위해 2개씩 쌍을 이루어 FPU-PE를 형성한 구조를 보여주는 블럭 구조도이다.
도 3은 도 2의 FPU-PE에서 부동 소수점 연산을 위한 오퍼랜드 입력 구조를 보여주는 블럭 구조도이다.
도 4는 본 발명의 일 실시예에 따른 도 2의 PE의 구조를 좀더 상세히 보여주는 블럭 구조도이다.
도 5는 도 4의 PE에서의 연산 장치(ALU)를 상세하게 보여주는 블럭 구조도이다.
도 6은 본 발명의 일 실시예에 따른 FSM이 추가된 재구성 캐쉬에 대한 기능도이다.
도 7은 도 6의 FSM에 의해 멀티 사이클 연산을 위한 컨텍스트 워드를 생성하는 과정을 보여주는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 부동 소수점 기반의 덧셈 또는 뺄셈을 보여주는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 부동 소수점 기반의 곱셈을 보여주는 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 부동 소수점 기반의 나눗셈을 보여주는 흐름도이다.

Claims (25)

  1. 부동 소수점(Floating Point: FP) 연산을 지원하는 FP-재구성 어레이(Reconfigurable Array:RA)를 구성하고, 쌍으로 결합하여 부동 소수점 유닛(Floating-Point Unit: FPU)-PE를 구성하는 정수 연산 프로세싱 요소(Processing Element: PE)에 있어서,
    2개의 오퍼랜드(operand)를 입력 받아 연산을 수행하는 연산 장치(Arithmetic Logic Unit: ALU);
    상기 연산 장치(ALU)에 각각 하나의 입력 값을 입력하는 2개의 멀티플렉서(MUX);
    상기 연산 장치의 결과들에 쉬프트 연산을 수행하는 쉬프터(Shifter); 및
    상기 연산 장치의 중간 결과와 상기 쉬프터의 중간 결과를 저장하는 임시 레지스터(Resistor) 및 상기 연산 장치의 최종 결과와 상기 쉬프터의 최종 결과를 저장하는 출력 레지스터;를 포함하고,
    상기 구성 요소간 부동 소수점 연산을 위한 데이터 패스가 형성되어 있는 것을 특징으로 하는 PE 구조.
  2. 제1 항에 있어서,
    상기 FPU-PE를 이루는 2개의 PE 중 어느 하나의 PE는 2개의 오퍼랜드(operand)의 부호 및 가수부가 입력되는 가수부 PE이고 다른 하나의 PE는 상기 2 개의 오퍼랜드의 지수부가 입력되는 지수부 PE인 것을 특징으로 하는 PE 구조.
  3. 제2 항에 있어서,
    상기 데이터 패스는 상기 ALU와 출력 레지스터 간의 부동 소수점 부호(sing) 처리를 위한 부호 처리용 패스, 상기 ALU와 출력 레지스터 간의 쉬프트 연산이 수행되지 않는 데이터 이동을 위한 비쉬프트 연산용 패스, 및 상기 쉬프터와 출력 레지스터 및 상기 ALU와 출력 레지스터 간의 라운드(round) 연산을 위한 라운드 연산용 패스를 포함하는 것을 특징으로 하는 PE 구조.
  4. 제3 항에 있어서,
    상기 PE는 가수부 PE이고
    상기 출력 레지스터는 상기 부호 처리를 위한 부호용 레지스터를 포함하며,
    상기 부호용 레지스터는 상기 오퍼랜드의 부호값을 XOR 연산한 값을 저장하는 것을 특징으로 하는 PE 구조.
  5. 제3 항에 있어서,
    상기 비쉬프트 연산용 패스는, 2개의 오퍼랜드를 교환하는 스왑(swap) 명령에 대한 각각의 출력 값의 이동 및 n 비트 쉬프트 연산시 상기 n 값을 지수부 PE로 전달하는 것을 특징으로 하는 PE 구조.
  6. 제3 항에 있어서,
    상기 쉬프터에는 상기 라운드 연산을 위한 하위 2비트가 추가된 것을 특징으로 하는 PE 구조.
  7. 제1 항에 있어서,
    상기 ALU는 오퍼랜드를 선택적으로 출력하는 오퍼랜드 입력부, 오퍼랜드의 연산을 수행하는 오퍼랜드 연산부, 및 상기 오퍼랜드 연산부로부터의 결과값들을 상기 쉬프터로 구별하여 출력하는 쉬프트 계산 선택부를 포함하는 것을 특징으로 하는 PE 구조.
  8. 제7 항에 있어서,
    상기 오퍼랜드 입력부는,
    상기 2개의 멀티플렉서를 통해 입력, 피드백(feedback)을 통해 입력, 또는 구성 캐쉬(Configuartion Cache)의 컨텍스트 레이어에 저장된 상수 값(immeaiate value)을 입력받아 선택적으로 각각 하나의 값을 출력하는 2개의 오퍼랜드 먹스를 포함하고,
    상기 오퍼랜드 연산부는,
    덧셈기 또는 뺄셈기(ADD/SUB), 절대값 계산기(ABS-VAL), 논리(LOGICAL), 스왑(SWAP), 버스 스위치(BUS SWITCH), 플래그 생성기(FLAG GENERATOR), 리딩-원 검출기(leading-one-detector: L.O.D), 및 비교기(CMP) 회로를 포함하며,
    상기 쉬프트 계산 선택부는,
    상기 오퍼랜드 연산부의 각 구성요소들의 결과값들 중 쉬프트 연산이 필요한 결과값들을 입력받아 선택적으로 출력하는 먹스 쉬프트(MUX SHIFT) 및 쉬프트 연산이 불필요한 결과값들을 입력받아 선택적으로 출력하는 먹스 언쉬프트(MUX UNSHIFT) 회로를 포함하는 것을 특징으로 하는 PE 구조.
  9. 제8 항에 있어서,
    상기 PE 구조는 부동 소수점 연산을 지원하기 위해 상기 스왑, 절대값 계산기, 플래그 생성기, 리딩-원 검출기, 먹스-언쉬프트 회로 및 상기 쉬프터를 제어하는 쉬프트 제어 회로가 추가되고,
    상기 스왑 회로는 2개의 오퍼랜드를 교환하고, 절대값 계산기는 2개의 값의 차에 대한 절대값을 구하며, 상기 플래그 생성기는 다른 PE로 전달하기 위한 플래그(flag)를 생성하며, 상기 리딩-원 검출기 회로는 지수부를 표준화(normalize)하기 위해 1의 값을 갖는 가장 큰 자리수의 비트의 위치를 구하며, 상기 먹스 언쉬프트 회로는 스왑한 값 또는 프래그 값을 선택적 출력하며, 상기 쉬프트 제어 회로는 컨텍스트(context) 워드 및 상기 리딩-원 검출기에서 생성된 쉬프트 값을 입력받아 상기 쉬프터에서의 쉬프트 연산을 제어하는 수행하는 것을 특징으로 하는 PE 구조.
  10. 제8 항에 있어서,
    상기 연산 장치는,
    상기 2개의 오퍼랜드 먹스를 통해 입력되는 2개의 오퍼랜드는,
    상기 덧셈기 또는 뺄셈기, 논리, 스왑, 버스 스위치, 플래그 생성기, 리딩-원 검출기, 및 비교기 회로로 입력되고,
    상기 덧셈기 또는 뺄셈기, 논리, 및 스왑 회로의 출력 값은 먹스 쉬프트 회로로 입력되며,
    상기 스왑, 버스 스위치, 플래그 생성기, 리딩-원 검출기, 및 비교기 회로의 출력값은 상기 먹스 언쉬프트 회로로 입력되며,
    상기 먹스 쉬프트 회로의 출력은 쉬프터 회로로 입력되는 것을 특징으로 하는 PE 구조.
  11. 제10 항에 있어서,
    상기 덧셈기 또는 뺄셈기의 출력은 상기 절대값 계산기 회로에 입력되고, 상기 절대값 계산기 회로의 출력은 상기 먹스 쉬프트 회로로 입력되며,
    상기 쉬프터는 상기 버스 스위치, 리딩-원 검출기 및 상기 구성 캐쉬로 연결된 상기 쉬프터 제어기의 제어를 받아 쉬프트 연산을 수행하는 것을 특징으로 하는 PE 구조.
  12. 제10 항에 있어서,
    상기 각 회로는 ALU 제어 신호들을 통해 제어되는 것을 특징으로 하는 PE 구조.
  13. 제1 항 PE 구조를 제어하는 제어 회로에 있어서,
    상기 PE의 연산을 위한 컨텍스트(context) 워드(word)를 저장하는 구성 캐쉬(Configuration Cashe) 내에 포함되어 상기 PE가 부동 소수점 연산을 수행할 수 있도록 제어하는 FP-RA 제어 회로.
  14. 제13 항에 있어서,
    상기 FP-RA 제어 회로는 FSM(Finite State Machine) 기반 제어 회로를 포함하는 것을 특징으로 하는 FP-RA 제어 회로.
  15. 제14 항에 있어서,
    상기 FSM 기반 제어 회로는 상기 구성 캐쉬의 레지스터에 연결되어 상기 PE의 멀티 사이클 연산을 위한 컨텍스트 워드를 생성하여 상기 구성 캐쉬의 레지스터로 전달하는 것을 특징으로 하는 FP-RA 제어 회로.
  16. 제15 항에 있어서,
    부동 소수점 연산은 하나의 연산 명령어로서 상기 구성 캐쉬로 매핑되어 디코딩되고, 상기 연산 명령어가 멀티 사이클 연산을 위한 명령어인 경우, 상기 FSM 기반 제어 회로가 구동되는 것을 특징으로 하는 FP-RA 제어 회로.
  17. 제16 항에 있어서,
    상기 구성 캐쉬는 상기 연산 명령어가 멀티 사이클 연산을 위한 명령어인지 판단하고,
    멀티 사이클 연산을 위한 명령어인 경우, 상기 FSM 기반 제어회로를 구동하여 멀티 사이클용 컨텍스트 워드를 생성하여 상기 PE가 멀티 사이클 연산을 수행하도록 제어하며,
    멀티 사이클 연산을 위한 명령어가 아닌 경우, 상기 FSM 기반 제어회로의 구동 없이 상기 PE가 연산을 수행하도록 제어하는 특징으로 하는 FP-RA 제어 회로.
  18. 제14 항에 있어서,
    상기 PE는 사칙 연산 및 초월 함수에 대한 부동 소수점 연산을 수행하기 위하여 상기 FSM 기반 제어회로를 이용하는 것을 특징으로 하는 FP-RA 제어 회로.
  19. 제18 항에 있어서,
    상기 PE는 덧셈 또는 뺄셈에 대한 부동 소수점 연산을 수행하고,
    상기 덧셈 또는 뺄셈은 총 6 사이클의 멀티 사이클 연산을 통해 수행되는 것을 특징으로 하는 FP-RA 제어 회로.
  20. 제19 항에 있어서,
    상기 덧셈은 제1 사이클에서 입력된 2개 오퍼랜드 값을 지수 및 소수별로 각 각 비교하고, 제2 사이클에서는 값이 작은 소수에 대해 지수의 차만큼 쉬프트하여 정렬하며, 제3 사이클에서는 소수의 차를 구하고, 오버 플로우를 고려하여 1 비트 얼라인(align)하며, 제4 사이클에서는 상기 제3 사이클에서 계산된 결과를 최상위 비트가 1이 되도록 표준화하며, 제5 사이클에서는 지수부 PE에서 라딕스 포인트(radix point)를 갱신하고 가수부 PE에서 라운딩을 수행하며, 제6 사이클에서는 제외 체크(exception check)를 수행하는 것을 특징으로 하는 FP-RA 제어 회로.
  21. 제20 항에 있어서,
    상기 제4 사이클에서 상기 표준화에 의해 변한 라딕스 포인트를 상기 지수부 PE로 전달하고, 상기 제5 사이클에서 상기 전달받은 라딕스 포인트를 이용하여 상기 지수부 PE에서 라딕스 포인트를 갱신하는 것을 특징으로 하는 FP-RA 제어 회로.
  22. 제20 항에 있어서,
    상기 뺄셈은 빼는 숫자의 부호를 반대로 바꾼 후, 상기 덧셈과 동일한 방법으로 수행되는 것을 특징으로 하는 FP-RA 제어 회로.
  23. 제18 항에 있어서,
    상기 PE는 곱셈 또는 나눗셈에 대한 부동 소수점 연산을 수행하고,
    상기 곱셈은 총 4 사이클의 멀티 사이클 연산을 통해 수행될 수 있고,
    상기 나눗셈은 총 6 사이클의 멀티 사이클 연산을 통해 수행될 수 있는 것을 특징으로 하는 FP-RA 제어 회로.
  24. 제23 항에 있어서,
    상기 곱셈 또는 나눗셈은 지수부와 가수부로 나누어 계산되며,
    상기 지수부는 덧셈 또는 뺄셈을 통해 처리되며, 상기 가수부는 곱셈 또는 나눗셈을 통해 처리되며,
    상기 PLU-PE중 상기 가수부 계산을 수행하는 가수부 PE는 곱셈기 또는 나눗셈기에 연결되어 있는 것을 특징으로 하는 FP-RA 제어 회로.
  25. 제23 항에 있어서,
    상기 곱셈은 제1 사이클에서 지수부에서는 덧셈 또는 뺄셈이 수행되고 상기 가수부에서는 곱셈이 수행되며, 제2 사이클에서 상기 곱셈기에서 곱셈의 결과를 받아 그 결과값에 따라 1 비트 얼라인을 수행하고, 제3 사이클에서 상기 가수부가 라운딩을 하고 지수부가 제2 사이클에서 수행된 가수부의 얼라인 결과를 반영하고 만약 지수값이 소정 범위를 벗어나면 가수부에 반영할 있는 신호를 전달하며, 제4 사이클에서 상기 가수부가 제외 체크를 하는 것을 특징으로 하는 FP-RA 제어 회로.
KR1020070095852A 2007-09-20 2007-09-20 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로 KR101098758B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070095852A KR101098758B1 (ko) 2007-09-20 2007-09-20 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
EP08831958A EP2191364A4 (en) 2007-09-20 2008-09-19 TREATMENT ELEMENT STRUCTURE (PE) FORMING A RECONFIGURABLE FLOATING VIRGIN NETWORK (FP-RA) AND CONTROL CIRCUIT OF THIS FP-RA
US12/234,507 US8046564B2 (en) 2007-09-20 2008-09-19 Reconfigurable paired processing element array configured with context generated each cycle by FSM controller for multi-cycle floating point operation
PCT/KR2008/005575 WO2009038397A2 (en) 2007-09-20 2008-09-19 Processing element (pe) structure forming floating point-reconfigurable array (fp-ra) and fp-ra control circuit for controlling the fp-ra

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070095852A KR101098758B1 (ko) 2007-09-20 2007-09-20 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로

Publications (2)

Publication Number Publication Date
KR20090030498A true KR20090030498A (ko) 2009-03-25
KR101098758B1 KR101098758B1 (ko) 2011-12-26

Family

ID=40468622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070095852A KR101098758B1 (ko) 2007-09-20 2007-09-20 Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로

Country Status (4)

Country Link
US (1) US8046564B2 (ko)
EP (1) EP2191364A4 (ko)
KR (1) KR101098758B1 (ko)
WO (1) WO2009038397A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120052751A (ko) * 2010-11-16 2012-05-24 삼성전자주식회사 명령어 오퍼랜드 변경 장치 및 방법
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
CN111723922A (zh) * 2019-03-20 2020-09-29 爱思开海力士有限公司 神经网络加速装置及其控制方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4232838B2 (ja) * 2007-03-29 2009-03-04 日本電気株式会社 再構成可能なsimd型プロセッサ
JP5375331B2 (ja) * 2009-05-21 2013-12-25 富士通株式会社 演算回路および省電力方法
JP5533330B2 (ja) * 2010-06-23 2014-06-25 富士ゼロックス株式会社 データ処理装置
US9460012B2 (en) * 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
JP6308095B2 (ja) * 2014-10-08 2018-04-11 富士通株式会社 演算回路及び演算回路の制御方法
US10659396B2 (en) * 2015-08-02 2020-05-19 Wave Computing, Inc. Joining data within a reconfigurable fabric
CN114003547B (zh) 2017-03-14 2023-12-19 珠海市芯动力科技有限公司 可重构并行处理
JP7038608B2 (ja) * 2018-06-15 2022-03-18 ルネサスエレクトロニクス株式会社 半導体装置
US10536156B1 (en) * 2018-10-16 2020-01-14 Microchip Technology Incorporated Analog-to-digital converter controllers including configurable contexts
US11372621B2 (en) * 2020-06-04 2022-06-28 Apple Inc. Circuitry for floating-point power function
CN112463719A (zh) * 2020-12-04 2021-03-09 上海交通大学 一种基于粗粒度可重构阵列实现的存内计算方法
US20220129320A1 (en) * 2021-11-05 2022-04-28 Debabrata Mohapatra Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901267A (en) * 1988-03-14 1990-02-13 Weitek Corporation Floating point circuit with configurable number of multiplier cycles and variable divide cycle ratio
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
JP4232838B2 (ja) * 2007-03-29 2009-03-04 日本電気株式会社 再構成可能なsimd型プロセッサ
KR100834412B1 (ko) 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서

Cited By (3)

* 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
KR20120052751A (ko) * 2010-11-16 2012-05-24 삼성전자주식회사 명령어 오퍼랜드 변경 장치 및 방법
CN111723922A (zh) * 2019-03-20 2020-09-29 爱思开海力士有限公司 神经网络加速装置及其控制方法

Also Published As

Publication number Publication date
WO2009038397A3 (en) 2009-05-22
US20090083519A1 (en) 2009-03-26
US8046564B2 (en) 2011-10-25
EP2191364A4 (en) 2011-06-29
WO2009038397A2 (en) 2009-03-26
KR101098758B1 (ko) 2011-12-26
EP2191364A2 (en) 2010-06-02

Similar Documents

Publication Publication Date Title
KR101098758B1 (ko) Fp-ra를 구성하는 pe 구조 및 그 fp-ra제어하는 fp-ra 제어 회로
KR100948512B1 (ko) 부동 소수점 연산을 지원하는 부동 소수점 유닛-프로세싱 요소(fpu-pe) 구조 및 그 fpu-pe 구조를 포함한 재구성 어레이 프로세서(rap) 및 그 rap를 포함한 멀티미디어 플랫폼
US10817587B2 (en) Reconfigurable matrix multiplier system and method
US8918445B2 (en) Circuit which performs split precision, signed/unsigned, fixed and floating point, real and complex multiplication
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
TWI634437B (zh) 運算控制指標快取
US8341204B2 (en) Vector SIMD processor
KR101566257B1 (ko) 입력 데이터 값에 따른 결합형 곱셈-덧셈 (fma) 유닛의 전력 소모 절감
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US6243732B1 (en) Data processor and data processing system
US6711602B1 (en) Data processor with flexible multiply unit
US20090300336A1 (en) Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US6341300B1 (en) Parallel fixed point square root and reciprocal square root computation unit in a processor
WO2000045253A1 (en) Division unit in a processor using a piece-wise quadratic approximation technique
US5559730A (en) Shift operation unit and shift operation method
KR100834412B1 (ko) 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
Kuang et al. Energy-efficient multiple-precision floating-point multiplier for embedded applications
US8140608B1 (en) Pipelined integer division using floating-point reciprocal
EP1122688A1 (en) Data processing apparatus and method
EP1102161A2 (en) Data processor with flexible multiply unit
US7587582B1 (en) Method and apparatus for parallel arithmetic operations
Moon et al. An area-efficient standard-cell floating-point unit design for a processing-in-memory system
WO2002015000A2 (en) General purpose processor with graphics/media support
Corsonello et al. Variable precision multipliers for FPGA-based reconfigurable computing systems
Samanth et al. Design and Implementation of 32-bit Functional Unit for RISC architecture applications

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee