KR102338863B1 - 연산을 제어하기 위한 장치 및 방법 - Google Patents

연산을 제어하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR102338863B1
KR102338863B1 KR1020150127778A KR20150127778A KR102338863B1 KR 102338863 B1 KR102338863 B1 KR 102338863B1 KR 1020150127778 A KR1020150127778 A KR 1020150127778A KR 20150127778 A KR20150127778 A KR 20150127778A KR 102338863 B1 KR102338863 B1 KR 102338863B1
Authority
KR
South Korea
Prior art keywords
data
multiplication
partial
generating
divided
Prior art date
Application number
KR1020150127778A
Other languages
English (en)
Other versions
KR20170030327A (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 KR1020150127778A priority Critical patent/KR102338863B1/ko
Priority to US15/134,842 priority patent/US10061559B2/en
Publication of KR20170030327A publication Critical patent/KR20170030327A/ko
Application granted granted Critical
Publication of KR102338863B1 publication Critical patent/KR102338863B1/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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • 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
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/503Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
    • 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/52Multiplying; Dividing
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers

Abstract

다양한 실시 예에 따른 연산 장치의 동작 방법은, 2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하는 동작과, 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하는 동작과, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하는 동작과, 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하는 동작을 포함할 수 있다.

Description

연산을 제어하기 위한 장치 및 방법{APPARATUS AND METHOD FOR CONTROLLING OPERATION}
아래의 실시 예들은 연산을 제어하는 장치 및 방법에 관한 것이다.
기술의 발달로 다양한 서비스가 요구되고 있다. 이러한 다양한 서비스의 요구에 따라 다양한 연산이 전자 장치에서 요구될 수 있다. 나아가, 다양한 연산을 수행하면서 하드웨어의 복잡도를 감소시키는 연산기가 전자 장치에서 요구될 수 있다.
따라서 다양한 실시 예들은 하드웨어의 복잡도를 낮추면서 다양한 연산을 수행할 수 있는 장치 및 방법을 제공할 수 있다.
다양한 실시 예에 따른 연산 장치의 동작 방법은, 2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하는 동작과, 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하는 동작과, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하는 동작과, 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하는 동작을 포함할 수 있고, 상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작은 동시에, 또는 순서에 관계없이 수행되고, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작은, 동시에 또는 순서에 관계없이 수행되며, 상기 제1 출력 내지 제2 출력을 생성하는 동작은 동시에, 또는 순서에 관계없이 수행될 수 있다.
다양한 실시 예에 따른 연산 장치는, 덧셈부와 결합된 연산 제어부와, 2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하도록 구성된 입력부와, 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하도록 구성된 분할부와, 상기 연산 제어부와 결합되고, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하도록 구성된 자리 올림 보류 덧셈기(CSA, carry save adder)를 포함할 수 있고, 상기 연산 제어부는, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하도록 구성되고, 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하도록 구성되고, 상기 분할부는 상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성되고, 상기 CSA는, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작을, 동시에 또는 순서에 관계없이 수행되도록 구성되며, 상기 연산 제어부는, 상기 제1 출력 내지 제2 출력을 생성하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성될 수 있다.
다양한 실시 예들에 따른 장치 및 동작 방법은 하나의 장치로 다양한 연산을 빠르게 수행할 수 있고, 하드웨어의 면적을 감소시킬 수 있다.
본 개시에 대한 보다 완전한 이해를 위해 첨부된 도면을 참조하여 다음의 상세한 설명이 이뤄진다. 도면에서 동일한 참조번호는 동일한 구성요소를 나타낸다.
도 1은 자리 올림 보류 가산기(CSA, carry save adder)를 도시한다.
도 2는 다양한 실시 예에 따른 연산 장치의 기능적 블록 구성을 도시한다.
도 3은 다양한 실시 예에 따른 연산 장치의 회로 구성을 도시한다.
도 4는 다양한 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 5a는 제1 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 5b는 제1 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 6a는 제2 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 6b는 제2 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 7a는 제3 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 7b는 제3 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 8a는 제4 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 8b는 제4 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 9a는 제5 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다.
도 9b는 제5 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
이하, 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
이하에서 설명되는 본 개시의 다양한 실시 예들에서는 하드웨어적인 접근 방법을 예시로서 설명한다. 하지만, 본 개시의 다양한 실시 예들에서는 하드웨어와 소프트웨어를 모두 사용하는 기술을 포함하고 있으므로, 본 개시의 다양한 실시 예들이 소프트웨어 기반의 접근 방법을 제외하는 것은 아니다.
프로세서(processor), 변조기(modulator), 복조기(de-modulator) 등은 정수 곱셈 연산, 덧셈 연산, 복소 곱셈 연산 등과 같은 다양한 연산을 수행할 수 있는 연산기를 포함할 수 있다. 통상적으로, 상기 연산기는 곱셈기, 덧셈기, 전용 복소 곱셈기 등으로 기능적으로 분화되어 전자 장치 등에 포함될 수 있다. 기능적으로 분화된 다양한 연산기들은 추가적인 사이클 소모를 발생시킬 수 있고, 비트 수의 차이에 따른 잉여자원의 낭비를 발생시킬 수 있다. 또한, 기능적으로 분화된 다양한 연산기들은 병렬적인 배치로 인하여 사용률이 떨어질 수 있고, 많은 면적과 파워를 소모할 수 있다.
다양한 실시 예에 따른 연산 장치는 정수 곱셈 연산, 덧셈 연산, 복소수 곱셈 연산, 복소수와 계수 간의 곱셈 연산 등을 한 사이클에 처리할 수 있다. 이러한 다양한 연산의 처리를 위해 상기 연산 장치는 빠른 덧셈 연산의 수행하거나 다양한 연산을 수행하기 위해 자리 올림 보류 덧셈기(이하, CSA, carry save adder)를 포함할 수 있다. 다양한 실시 예에 따른 상기 연산 장치는 하드웨어 복잡도를 감소시킬 수 있으며, 사용률 및 실행 속도를 향상시킬 수 있다.
다양한 실시 예에 따른 연산 장치는 N 비트 곱셈기, CSA, 덧셈기, 5중 곱셈을 위한 MUX 회로, 및 캐리 전달을 위한 회로 등으로 구성될 수 있다. 상기 N 비트 곱셈기는 선택된 N 비트 데이터들을 곱하여 결과를 전달하는 기능을 수행할 수 있다. 상기 CSA는 입력된 3개의 데이터를 합산하여 캐리 비트 열(또는, 캐리 데이터)와 덧셈 비트 열(또는, 덧셈 데이터)을 출력할 수 있다. 상기 덧셈기는 상기 캐리 비트 열과 상기 덧셈 비트 열을 더해 최종 결과 값을 산출할 수 있다.
도 1은 자리 올림 보류 가산기(CSA, carry save adder)를 도시한다.
도 1을 참조하면, CSA 100은 제1 입력부 x, 제2 입력 y, 제3 입력 z를 입력 받아, 캐리(carry) 데이터 출력 c, 덧셈(sum) 데이터 출력 s를 출력할 수 있다.
상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z는 비트열로 구성될 수 있다. 예를 들면, 상기 제1 입력 x는 10011일 수 있고, 상기 제2 입력 y는 11001일 수 있으며, 상기 제3 입력 z는 01011일 수 있다.
상기 캐리 데이터 출력 c는 상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z의 합산에 따른 캐리(carry) 비트 열일 수 있다.
상기 덧셈 데이터 출력 s는 상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z의 합산에 따른 덧셈(sum) 비트 열일 수 있다.
예를 들면, 상기 CSA 100은 하기의 수학식과 같이 상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z를 합산하여 상기 덧셈 데이터 출력 s(sum), 상기 캐리 데이터 출력 c(carry)를 출력할 수 있다.
Figure 112015087796951-pat00001
상기 덧셈 데이터 출력 s는 캐리를 전파하지 않은 상기 제1 입력 x, 상기 제2 입력 y 및 상기 제3 입력 z의 합일 수 있다. 상기 캐리 데이터 출력 c는 상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z의 합산 과정에서 발생하는 캐리일 수 있다. 상기 캐리 데이터 출력 c는 캐리를 반영하기 위해 1 비트만큼 쉬프트될 수 있다.
상기 CSA 100은 상기 캐리 데이터 출력 c 및 상기 뎃셈 데이터 출력 s를 합산하여 상기 제1 입력 x, 상기 제2 입력 y, 및 상기 제3 입력 z의 합을 산출할 수 있다.
도 2는 다양한 실시 예에 따른 연산 장치의 기능적 블록 구성을 도시한다.
도 2를 참조하면, 연산 장치 200은 입력부 210, 제1 분할부 220, 곱셈부 230, 제2 분할부 240, CSA 250, CSA 260, 연산 데이터 생성부 270, 덧셈부 280을 포함할 수 있다.
상기 입력부 210은 비트 데이터를 수신할 수 있다. 상기 비트 데이터는 정수 또는 복소수일 수 있다. 또한, 상기 비트 데이터는 계수일 수 있다. 예를 들면, 상기 비트 데이터는 2N 비트의 정수, N 비트의 실수 부와 N 비트의 허수 부를 포함하는 복소수, N 비트의 계수 등일 수 있다. 상기 입력부 210은 2개 이상의 비트 데이터를 수신할 수 있다. 상기 입력부 210은 2개의 수(예를 들면, 정수 또는 복소수)의 곱셈을 수행하기 위해, 2개의 비트 데이터를 수신할 수 있다. 또한, 입력부 210은 2개의 수(예를 들면, 정수 또는 복소수)와 2개의 계수의 조합하여 곱셈을 수행하기 위해, 2개의 계수를 포함하는 4개의 비트 데이터를 수신할 수 있다.
상기 입력부 210은 입력받은 상기 비트 데이터들을 상기 제1 분할부 220에 제공할 수 있다. 예를 들면, 상기 입력부 210은 2N 비트의 데이터 A 및 2N 비트의 데이터 B를 수신하여 상기 제1 분할부 220에 제공할 수 있다.
상기 제1 분할부 220은 연산 명령에 따라 상기 비트 데이터들을 각각 분할할 수 있다. 상기 제1 분할부 220은 상기 비트 데이터들을 비트 자릿수를 기준으로 분할할 수 있다. 예를 들면, 상기 제1 분할부 220은 상기 2N 비트의 데이터 A를 N 비트의 제1 부분 데이터
Figure 112015087796951-pat00002
와 N 비트의 제2 부분 데이터
Figure 112015087796951-pat00003
로 분할할 수 있다. 상기 제1 분할부 220은 상기 2N 비트의 데이터 B를 N 비트의 제3 부분 데이터
Figure 112015087796951-pat00004
와, 제4 부분 데이터
Figure 112015087796951-pat00005
로 분할할 수 있다.
상기 연산 장치 200이 정수 데이터 간의 곱셈 연산을 수행하는 경우, 상기 제1 부분 데이터
Figure 112015087796951-pat00006
는 상기 데이터 A의 상위 N 비트 자리에 대응하는 데이터일 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00007
는 상기 데이터 A의 하위 N 비트 자리에 대응하는 데이터일 수 있다. 상기 제3 부분 데이터
Figure 112015087796951-pat00008
는 상기 데이터 B의 상위 N 비트 자리에 대응하는 데이터일 수 있고, 상기 제4 부분 데이터
Figure 112015087796951-pat00009
는 상기 데이터 B의 하위 N 비트 자리에 대응하는 데이터일 수 있다.
상기 연산 장치 200이 복소수 데이터 간의 곱셈 연산을 수행하는 경우, 상기 제1 부분 데이터
Figure 112015087796951-pat00010
는 복소수 데이터 A의 실수부에 대응하는 데이터일 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00011
는 상기 복소수 데이터 A의 허수부에 대응하는 데이터일 수 있다. 상기 제3 부분 데이터
Figure 112015087796951-pat00012
는 복소수 데이터 B의 실수부에 대응하는 데이터일 수 있고, 상기 제4 부분 데이터
Figure 112015087796951-pat00013
는 상기 복소수 데이터 B의 허수부에 대응하는 데이터일 수 있다.
상기 제1 분할부 220은 수신된 상기 비트 데이터가 계수인 경우, 또는 수신된 상기 비트 데이터가 N 비트의 데이터인 경우, 상기 비트 데이터를 분할하지 않을 수 있다.
상기 제1 분할부 220은 분할된 상기 부분 데이터들 또는 분할되지 않은 상기 비트 데이터들을 상기 곱셈부 230에 제공할 수 있다.
상기 곱셈부 230은 연산 명령에 따라 부분 데이터들을 조합하여 곱셈 연산을 수행할 수 있다. 예를 들어, 상기 연산 장치 200이 정수 데이터 간의 곱셈을 수행하거나 복소수 데이터 간의 곱셈을 수행하는 경우, 상기 곱셈부 230은 상기 제1 부분 데이터
Figure 112015087796951-pat00014
와 상기 제3 부분 데이터
Figure 112015087796951-pat00015
를 곱하여 제1 곱셈 데이터
Figure 112015087796951-pat00016
를 생성할 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00017
와 상기 제3 부분 데이터
Figure 112015087796951-pat00018
를 곱하여 제2 곱셈 데이터
Figure 112015087796951-pat00019
를 생성할 수 있고, 상기 제1 부분 데이터
Figure 112015087796951-pat00020
와 상기 제4 부분 데이터
Figure 112015087796951-pat00021
를 곱하여 제3 곱셈 데이터
Figure 112015087796951-pat00022
를 생성할 수 있으며, 상기 제2 부분 데이터
Figure 112015087796951-pat00023
와 상기 제4 부분 데이터
Figure 112015087796951-pat00024
를 곱하여 제4 곱셈 데이터
Figure 112015087796951-pat00025
를 생성할 수 있다. 또 다른 예를 들어, 상기 연산 장치 200이 2개의 복소수와 계수 간의 곱셈을 수행하는 경우, 상기 곱셈부 230은 상기 제1 부분 데이터
Figure 112015087796951-pat00026
와 제1 가중치 C를 곱하여 제1 곱셈 데이터
Figure 112015087796951-pat00027
를 생성할 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00028
와 상기 제1 가중치 C를 곱하여 제2 곱셈 데이터
Figure 112015087796951-pat00029
를 생성할 수 있고, 상기 제3 부분 데이터
Figure 112015087796951-pat00030
와 상기 제2 가중치 D를 곱하여 제3 곱셈 데이터
Figure 112015087796951-pat00031
를 생성할 수 있으며, 상기 제4 부분 데이터
Figure 112015087796951-pat00032
와 상기 제2 가중치 D를 곱하여 제4 곱셈 데이터
Figure 112015087796951-pat00033
를 생성할 수 있다. 상기 제1 곱셈 데이터, 상기 제2 곱셈 데이터, 상기 제3 곱셈 데이터, 및 상기 제4 곱셈 데이터는 2N 비트의 데이터일 수 있다.
상기 곱셈부 230은 상기 제1 곱셈 데이터 및 상기 제4 곱셈 데이터를 상기 덧셈부 280에 제공할 수 있다.
상기 곱셈부 230은 상기 제1 곱셈 데이터 및 상기 제4 곱셈 데이터를 상기 CSA 250 및 상기 CSA 260에 각각 제공할 수 있다. 상기 곱셈부 230은 상기 제2 곱셈 데이터 및 상기 제3 곱셈 데이터를 상기 제2 분할부 240에 제공할 수 있다. 도 2에 도시된 실시 예에서는 상기 곱셈부 230은 상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 상기 제2 분할부 240에 제공하는 것으로 설명하였지만, 이는 설명을 위한 예시일 뿐이다. 본 개시에 따른 다양한 구현(예를 들면, 상기 제1 곱셈 데이터 및 상기 제4 곱셈 데이터를 상기 제2 분할부 240에 제공하는 등의 구현)이 상기 연산 장치에서 이뤄질 수 있다.
상기 제2 분할부 240은 상기 제2 곱셈 데이터 및 상기 제3 곱셈 데이터를 분할할 수 있다. 상기 제2 분할부 240은 비트 자릿수에 대응하여 상기 곱셈 데이터들을 분할할 수 있다. 상기 제2 분할부 240은 2N 비트의 곱셈 데이터를 N 비트의 곱셈 데이터 2개로 분할할 수 있다. 예를 들면, 상기 제2 분할부 240은 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터
Figure 112015087796951-pat00034
과 N 비트의 분할 제2 데이터
Figure 112015087796951-pat00035
로 분할할 수 있고, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터
Figure 112015087796951-pat00036
과 N 비트의 분할 제4 데이터
Figure 112015087796951-pat00037
로 분할할 수 있다.
상기 제2 분할부 240은 상기 분할 제1 데이터 및 상기 분할 제2 데이터를 상기 CSA 250에 제공할 수 있고, 상기 분할 제3 데이터 및 상기 분할 제4 데이터를 상기 CSA 260에 제공할 수 있다.
상기 CSA 250은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 제1 캐리 데이터는 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터의 합산 과정에서 발생하는 캐리일 수 있다. 상기 제1 캐리 데이터는 캐리를 반영하기 위해 1 비트만큼 쉬프트될 수 있다. 상기 제1 덧셈 데이터 는 캐리를 전파하지 않은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터의 합일 수 있다. 예를 들면, 상기 CSA 250은 상기 제1 곱셈 데이터
Figure 112015087796951-pat00038
, 상기 분할 제1 데이터
Figure 112015087796951-pat00039
, 상기 분할 제3 데이터
Figure 112015087796951-pat00040
를 합산하여 제1 캐리 데이터
Figure 112015087796951-pat00041
과 제1 덧셈 데이터
Figure 112015087796951-pat00042
을 생성할 수 있다.
상기 CSA 250은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 상기 덧셈부 280에 제공할 수 있다.
상기 CSA 260은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 제2 캐리 데이터는 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터의 합산 과정에서 발생하는 캐리일 수 있다. 상기 제2 캐리 데이터는 캐리를 반영하기 위해 1 비트만큼 쉬프트될 수 있다. 상기 제2 덧셈 데이터는 캐리를 전파하지 않은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터의 합일 수 있다. 예를 들면, 상기 CSA 260은 상기 제4 곱셈 데이터
Figure 112015087796951-pat00043
, 상기 분할 제2 데이터
Figure 112015087796951-pat00044
, 상기 분할 제4 데이터
Figure 112015087796951-pat00045
를 합산하여 제2 캐리 데이터
Figure 112015087796951-pat00046
와 제2 덧셈 데이터
Figure 112015087796951-pat00047
를 생성할 수 있다.
상기 CSA 260은 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 상기 덧셈부 280에 제공할 수 있다.
상기 연산 데이터 생성부 270은 연산 명령의 종류에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성할 수 있다. 상기 연산 데이터 생성부 270은 NOT 연산의 수행 여부를 상기 연산 명령의 종류에 기반하여 결정할 수 있다. 상기 연산 데이터 생성부 270이 연산 명령에 따라 NOT 연산을 수행하는 경우, 상기 제1 연산 데이터는 상기 제4 곱셈 데이터를 NOT 연산하여 생성된 데이터일 수 있다. 상기 연산 데이터 생성부 270이 연산 명령에 따라 NOT 연산을 수행하지 않는 경우, 상기 제1 연산 데이터는 상기 제4 곱셈 데이터일 수 있다. 상기 연산 데이터 생성부 270이 연산 명령에 따라 NOT 연산을 수행하는 경우, 상기 제2 연산 데이터는 상기 제3 곱셈 데이터를 NOT 연산하여 생성된 데이터일 수 있다. 상기 연산 데이터 생성부 270이 연산 명령에 따라 NOT 연산을 수행하지 않는 경우, 상기 제2 연산 데이터는 상기 제3 곱셈 데이터일 수 있다. 예를 들어, 상기 연산 장치 200이 2N 비트의 정수 간의 곱셈 연산을 수행하는 경우(즉, 연산 명령이 2N 비트의 정수 간의 곱셈 명령인 경우), 상기 연산 데이터 생성부 270은 상기 제4 곱셈 데이터
Figure 112015087796951-pat00048
및 상기 제3 곱셈 데이터
Figure 112015087796951-pat00049
에 상기 NOT 연산이 수행하지 않고 상기 제4 곱셈 데이터
Figure 112015087796951-pat00050
를 상기 제1 연산 데이터
Figure 112015087796951-pat00051
로, 상기 제3 곱셈 데이터
Figure 112015087796951-pat00052
를 상기 제2 연산 데이터
Figure 112015087796951-pat00053
로 생성할 수 있다. 또 다른 예를 들면, 상기 연산 장치 200이 2N 비트의 복소수 간의 곱셈 연산을 수행하는 경우(즉, 연산 명령이 2N 비트의 복소수 간의 곱셈 명령인 경우), 상기 연산 데이터 생성부 270은 상기 제4 곱셈 데이터
Figure 112015087796951-pat00054
에 NOT 연산을 수행하여 상기 제1 연산 데이터
Figure 112015087796951-pat00055
을 생성하고, 상기 제3 곱셈 데이터
Figure 112015087796951-pat00056
에 NOT 연산이 수행하지 않고 상기 제3 곱셈 데이터
Figure 112015087796951-pat00057
를 상기 제2 연산 데이터
Figure 112015087796951-pat00058
로 생성할 수 있다.
상기 연산 데이터 생성부 270은 상기 제1 연산 데이터와 상기 제2 연산 데이터를 상기 덧셈부 280에 제공할 수 있다.
상기 덧셈부 280은 연산 명령에 따라 입력된 데이터들을 선택하여 합산할 수 있다.
상기 덧셈부 280은 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 연산 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터 중 2개를 합산하여 제1 출력을 생성할 수 있다. 상기 덧셈부 280은 상기 4개의 데이터 중 2개의 데이터를 연산 명령에 기반하여 선택할 수 있다. 예를 들어, 상기 연산 장치 200이 2N 비트 정수의 곱셈을 수행하는 경우, 상기 덧셈부 280은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성할 수 있다. 상기 연산 장치 200이 2N 비트 복소수의 곱셈을 수행하는 경우, 상기 덧셈부 280은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성할 수 있다.
상기 덧셈부 280은 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 연산 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터 중 2개를 합산하여 제2 출력을 생성할 수 있다. 상기 덧셈부 280은 상기 4개의 데이터 중 2개의 데이터를 연산 명령에 기반하여 선택할 수 있다. 예를 들어, 상기 연산 장치 200이 2N 비트 정수의 곱셈을 수행하는 경우, 상기 덧셈부 280은 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성할 수 있다. 상기 연산 장치 200이 2N 비트 복소수의 곱셈을 수행하는 경우, 상기 덧셈부 280은 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
상기 제1 출력과 상기 제2 출력은 연산 명령에 따라 조합되어 하나의 출력으로 변경되어 상기 연산 장치 200을 포함하는 장치에서 이용될 수 있다. 예를 들어, 상기 연산 장치 200이 2N 비트의 정수 간의 곱셈 연산을 수행하는 경우, 상기 제1 출력은 2N 비트의 정수 간의 곱셈 연산의 결과 값(4N 비트)의 상위 2N 비트 부분일 수 있고, 상기 제2 출력은 2N 비트의 정수 간의 곱셈 연산의 결과 값(4N 비트)의 하위 2N 비트 부분일 수 있다.
상기 제1 출력과 상기 제2 출력은 연산 명령에 따라 별개의 출력으로 이용될 수도 있다. 예를 들어, 상기 연산 장치 200이 N 비트 정수 간의 곱셈 연산 2개를 동시에 수행하는 경우(즉, 병렬적으로 수행하는 경우), 상기 제1 출력은 N 비트 정수 간의 곱셈 연산의 결과 값일 수 있고, 상기 제2 출력은 다른 N 비트 정수 간의 곱셈 연산의 결과 값일 수 있다.
상기한 바와 같이, 본 개시는 다중 연산(예를 들면, 2N 곱셈, 2중(dual) 2N 곱셈, 복소 및 계수 곱셈)이 가능한 하나의 연산 장치(Quinplet arithmetic operation apparatus)를 제안한다. 즉, 다양한 실시 예에 따른 상기 연산 장치 200은 하나의 연산 장치로 정수 및 복소수, 계수 곱을 수행할 수 있다. N=32 비트라고 가정할 때, 각각의 독립된 연산 장치를 사용하는 경우, 상기 각각의 독립된 연산 장치는 하기의 표 1과 같은 연산 동작을 수행하여야 한다.
Figure 112015087796951-pat00059
각각의 독립된 연산 장치를 구현하는 경우, 상기 표 1에 나타난 바와 같은 구현되어 추가적인 사이클 소모가 발생될 수 있다. 또한, 32비트 곱셈기를 사용할 때 16 비트 곱셈 연산을 하는 경우, 상위 16 비트 곱셈에 대한 회로는 잉여자원으로 낭비될 수 있고, 전용 복소 곱셈기를 병렬로 두는 경우에는 곱셈기의 사용률이 떨어질 수도 있다. 또한, 전용 복소 곱셈기를 병렬로 두는 경우에는 면적과 전력을 더 많이 소비할 수 있다.
다양한 실시 예에 따른 연산 장치는 상기 <표 1>의 4가지 시나리오를 하나의 cycle로 처리할 수 있다. 상기 연산 장치는 중간 덧셈을 빠르게 수행하고, 여러 시나리오로 분화가 가능하도록 하기 위해 일반적인 덧셈기 대신 CSA(carry save adder)를 포함할 수 있다. 또한, 상기 연산 장치는 복소수와 계수 간의 곱셈을 수행할 수 있다. 즉, 다양한 실시 예에 따른 연산 장치는 하나의 연산 장치를 이용하여 다양한 연산을 수행할 수 있다. 또한, 다양한 실시 예에 따른 연산 장치는 하드웨어 복잡도 감소시킬 수 있고 사용률 및 실행 속도를 향상시킬 수 있다. 또한, 전체 성능의 향상을 위해 상기 연산 장치는 여러 단의 파이프 라인으로 구현될 수도 있다.
다양한 실시 예에 따른 상기 연산 장치는 크게 4개의 N 비트 곱셈기들과, 2개의 2N 비트 CSA들 및 덧셈기들을 포함할 수 있으며, 5중 곱셈을 위한 MUX 회로들과, 캐리 전달을 위한 회로들을 포함할 수 있다. 상기 N 비트 곱셈기는 입력 MUX 회로에서 선택된 N 비트 데이터들을 단순히 곱하여 결과를 전달하는 역할을 할 수 있다. 상기 CSA들은 입력된 3개의 데이터를 합산하여 캐리 비트 열과 덧셈 비트 열을 출력할 수 있다. 상기 덧셈기는 캐리 비트 열과 덧셈 비트 열을 더해 최종 결과 값을 산출할 수 있다.
도 3은 다양한 실시 예에 따른 연산 장치의 회로 구성을 도시한다. 이러한 회로 구성은 도 2에 도시된 연산 장치 200에 포함될 수 있다.
도 3을 참조하면, 상기 연산 장치 200은 MUX 310, MUX 311, MUX 312, MUX 313, MUX 314, N 비트 곱셈기 320, N 비트 곱셈기 321, N 비트 곱셈기 322, N비트 곱셈기 323, CSA 330, CSA 332, NOT 게이트 340, NOT 게이트 342, MUX 350, MUX 352, MUX 354, MUX 356, MUX 360, 2N 비트 덧셈기 370, 2N 비트 덧셈기 372, AND 게이트 374, 및 보상기 376를 포함할 수 있다.
상기 연산 장치 200에 입력될 데이터는 상기 제1 부분 데이터 내지 상기 제4 부분 데이터를 포함할 수 있다. 상기 제1 부분 데이터 및 상기 제2 부분 데이터는 상기 제1 데이터가 분할된 데이터일 수 있다. 상기 제3 부분 데이터 및 상기 제4 부분 데이터는 상기 제2 데이터가 분할된 데이터일 수 있다. 예를 들어, 상기 연산 장치 200이 2N 비트의 정수 간 곱셈 연산을 수행하는 경우, 상기 제1 부분 데이터
Figure 112015087796951-pat00060
는 2N 비트의 정수 A의 상위 N 비트 부분일 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00061
는 2N 비트의 정수 A의 하위 N 비트 부분일 수 있고, 상기 제3 부분 데이터
Figure 112015087796951-pat00062
는 2N 비트의 정수 B의 상위 N 비트 부분일 수 있고, 상기 제4 부분 데이터
Figure 112015087796951-pat00063
는 2N 비트의 정수 B의 하위 N 비트 부분일 수 있다. 상기 연산 장치 200이 2N 비트의 복소수 간 곱셈 연산을 수행하는 경우, 상기 제1 부분 데이터
Figure 112015087796951-pat00064
는 2N 비트의 복소수 A의 실수 부분일 수 있고, 상기 제2 부분 데이터
Figure 112015087796951-pat00065
는 2N 비트의 복소수 A의 허수 부분일 수 있고, 상기 제3 부분 데이터
Figure 112015087796951-pat00066
는 2N 비트의 복소수 B의 실수 부분일 수 있고, 상기 제4 부분 데이터
Figure 112015087796951-pat00067
는 2N 비트의 복소수 B의 허수 부분일 수 있다.
상기 연산 장치 200에 입력될 데이터는 계수를 포함할 수 있다. 상기 계수는 상기 연산 장치 200의 복소수와 계수 간의 곱셈에 이용되는 계수일 수 있다. 상기 계수는 N 비트의 데이터일 수 있다. 예를 들면, 상기 계수는 C 또는 D로 지시될 수 있다.
상기 MUX 310-314 각각은 연산 명령에 따라 상기 곱셈기 320-323에 입력될 데이터를 제어할 수 있다. 상기 MUX 310-314 각각은 연산 명령에 기반하여 변경되는 coef 값 또는 dual 값에 따라 2개의 입력 중 하나의 입력을 선택하여 상기 곱셈기 320-323에 제공할 수 있다. 상기 coef 값은 복소수와 계수 간의 곱셈을 수행하는 경우, 1의 값을 가질 수 있다. 상기 dual 값은 동시에 2개의 N 비트 정수 곱셈을 수행하는 경우 또는 복소수와 계수 간의 곱셈을 수행하는 경우, 1의 값을 가질 수 있다. 예를 들어, 상기 coef 값이 1인 경우(즉, 복소수와 계수 간의 곱셈을 수행하는 경우), 상기 MUX 310은 상기 제2 부분 데이터
Figure 112015087796951-pat00068
와 상기 계수 C 중 coef 값과 정합되는 상기 계수 C를 상기 곱셈기 320에 제공할 수 있다. 상기 dual 값이 0인 경우(즉, 동시에 2개의 N 비트 정수 곱셈을 수행하지 않는 경우), 상기 MUX 311은 상기 제3 부분 데이터
Figure 112015087796951-pat00069
와 상기 계수 C 중 dual 값과 정합되는 상기 제3 부분 데이터
Figure 112015087796951-pat00070
를 상기 곱셈기 321에 제공할 수 있다.
상기 곱셈기 320-323 각각은 수신된 입력(예를 들면, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터 또는 상기 계수들)을 곱하여 제1 곱셈 데이터 내지 제4 곱셈 데이터를 생성할 수 있다. 예를 들어, coef 값이 0인 경우, 상기 곱셈기 320은 상기 제1 부분 데이터
Figure 112015087796951-pat00071
와 상기 제3 부분 데이터
Figure 112015087796951-pat00072
를 곱하여 상기 제1 곱셈 데이터 M1(즉, M1=
Figure 112015087796951-pat00073
)을 생성할 수 있다. coef 값이 1인 경우, 상기 곱셈기 320은 상기 제1 부분 데이터
Figure 112015087796951-pat00074
와 상기 계수 C를 곱하여 상기 제1 곱셈 데이터 M1(즉, M1=
Figure 112015087796951-pat00075
)을 생성할 수 있다.
상기 곱셈기 320-323 각각은 상기 제1 곱셈 데이터 M1, 상기 제2 곱셈 데이터 M2, 상기 제3 곱셈 데이터 M3, 및 상기 제4 곱셈 데이터 M4를 상기 MUX 350, 상기 MUX 354, 상기 CSA 330, 상기 CSA 332, 상기 NOT 게이트 340, 상기 NOT 게이트 342에 제공할 수 있다.
2N 비트의 상기 제2 곱셈 데이터 M2는 상위 N 비트 부분의 분할 제1 데이터, 하위 N 비트 부분의 분할 제2 데이터로 분할될 수 있다. 2N 비트의 상기 제3 곱셈 데이터 M3는 상위 N 비트 부분의 분할 제3 데이터, 하위 N 비트 부분의 분할 제4 데이터로 분할될 수 있다.
상기 CSA 330 및 상기 CSA 332는 3개의 데이터를 합산하여 2개의 데이터를 생성할 수 있다. 상기 생성된 2개의 데이터는 캐리 데이터 및 덧셈 데이터일 수 있다. 예를 들면, 상기 CSA 330은 2N 비트의 상기 제1 곱셈 데이터, N 비트의 상기 분할 제1 데이터, N 비트의 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 CSA 332는 2N 비트의 상기 제4 곱셈 데이터, N 비트의 상기 분할 제2 데이터, N 비트의 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다.
상기 NOT 게이트 340 및 상기 NOT 게이트 342는 연산 명령에 따라 각각 상기 제4 곱셈 데이터 및 상기 제3 곱셈 데이터에 대하여 NOT 연산을 수행할 수 있다.
상기 NOT 게이트 340에서, Complex는 복소수 연산의 수행 여부를 지시할 수 있다. 예를 들어, 상기 연산 장치 200이 복소수 곱셈을 수행하는 경우, 상기 Complex 값은 1일 수 있다. 상기 NOT 게이트 340에서, conj는 복소수와 켤레 복소수의 곱셈을 수행하는지 여부를 지시할 수 있다. 예를 들어, 상기 연산 장치 200이 복소수와 켤레 복소수 간의 곱셈을 수행하는 경우, 상기 conj 값은 1일 수 있다. 상기 NOT 게이트에서, '~'는 NOT 연산을 의미할 수 있다. 예를 들어, 상기 conj 값이 1 인 경우, ~conj 값은 0일 수 있다. 상기 NOT 게이트 340에서, '&'는 AND 연산을 의미할 수 있다. 예를 들어, 상기 Complex 값이 1이고, 상기 conj 값이 1인 경우(즉, 연산 명령이 복소수와 켤레 복소수 간의 곱셈인 경우), 상기 NOT 게이트 340은 활성화되지 않을 수 있다. Complex & (~conj) 값은 1 & (~1)로서 0이기 때문이다.
상기 NOT 게이트 342에서, Conj는 복소수와 켤레 복소수의 곱셈을 수행하는지 여부를 지시할 수 있다. 예를 들어, 상기 연산 장치 200이 복소수와 켤레 복소수 간의 곱셈을 수행하는 경우, 상기 Conj 값은 1일 수 있다. 예를 들어, 상기 Conj 값이 0인 경우(즉, 연산 명령이 복소수와 켤레 복소수 간의 곱셈이 아닌 경우), 상기 NOT 게이트 342는 활성화되지 않을 수 있다.
상기 MUX 350 내지 356 각각은 연산 명령에 따라 입력된 2개의 데이터 중 하나의 데이터를 출력할 수 있다. 상기 MUX 350 내지 356에서, select는 1 또는 0의 값을 가질 수 있다.
상기 MUX 350 내지 356에서, complex mul은 복소수 곱셈, comp_conj_mul은 복소수와 켤레 복소수 간의 곱셈, coef_mul은 복소수와 계수 간의 곱셈일 수 잇다. 상기 select 값이 1인 경우, 상기 연산 장치 200은 복소수 곱셈, 복소수와 켤레 복소수 간의 곱셈, 또는 복소수와 계수 간의 곱셈 중 하나의 연산을 수행할 수 있다. 상기 select 값이 1인 경우, 상기 MUX 350 내지 356 각각은 1을 지시하는 입력에 대응하는 데이터를 출력할 수 있다.
상기 MUX 350 내지 356에서, 2N X 2N은 2N 비트의 정수 간 곱셈, dual N X N mul은 2개의 N 비트의 정수 간 곱셈일 수 있다. 상기 select 값이 0인 경우, 상기 연산 장치 200은 2N 비트의 정수 간 곱셈 또는 2개의 N 비트의 정수 간 곱셈 중 하나의 연산을 수행할 수 있다. 상기 select 값이 0인 경우, 상기 MUX 350 내지 356 각각은 0을 지시하는 입력에 대응하는 데이터를 출력할 수 있다.
상기 MUX 360은 상기 select의 값에 따라 입력된 상기 select와 상기 MUX 354의 출력 CO(carry out) 중 하나를 출력할 수 있다. 상기 MUX 360의 출력 값은 Cin(carry in)으로 상기 뎃셈기 370에 입력될 수 있다. 예를 들면, select 값이 0인 경우(즉, 상기 연산 장치 200이 2N 비트의 정수 간 곱셈 또는 2개의 N 비트의 정수 간 곱셈을 수행하는 경우), 상기 MUX 360은 Cin을 출력하여 상기 덧셈기 370에 제공할 수 있다.
상기 덧셈기 370은 상기 MUX 350의 출력과 상기 MUX 352의 출력을 합산할 수 있다. 상기 연산 장치 200이 2N 비트의 정수 간 곱셈 또는 2개의 N 비트의 정수 간 곱셈을 수행하는 경우, 상기 덧셈기 370은 Cin을 고려하여 상기 MUX 350의 출력과 상기 MUX 352의 출력을 합산할 수 있다.
상기 덧셈기 372는 상기 MUX 354의 출력과 상기 MUX 356의 출력을 합산하여 제2 출력(Out0[2N-1:0])을 생성할 수 있다.
상기 AND 게이트 374는 상기 덧셈기 372의 CO와 2N X 2N 곱셈 연산 여부에 따라 출력을 결정할 수 있다. 예를 들어, 상기 덧셈기 372에서 CO 값이 존재하고, 상기 연산 장치 200이 2N 비트의 정수 간 곱셈을 수행하는 경우, 상기 AND 게이트 374는 1의 값을 출력할 수 있다.
상기 보상기 376은 상기 AND 게이트 374의 출력에 따라 2의 보수의 적용 여부를 결정할 수 있다. 예를 들어, 상기 AND 게이트 374의 출력이 1인 경우, 상기 보상기 376은 상기 덧셈기 370의 출력에 2의 보수를 적용하여 제1 출력(Out1[4N-1:2N])을 생성할 수 있다.
도 3에 도시된 바와 같이, 다양한 실시 예에 따른 상기 연산 장치 200은 다양한 연산을 수행할 수 있다. 또한, 상기 연산 장치 200은 하나의 사이클을 통해 상기 다양한 연산을 수행할 수 있다. 또한, 성능 향상을 위해 상기 연산 장치 200은 여러 사이클에 걸쳐 다양한 연산을 수행할 수도 있다.
도 4는 다양한 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 4를 참조하면, 410 단계에서, 상기 연산 장치 200은 4개의 2N 비트의 입력을 수신할 수 있다. 상기 4개의 2N 비트의 입력은 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 제4 곱셈 데이터일 수 있다.
420 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터 및 분할 제2 데이터로 분할하고, 상기 제3 곱셈 데이터를 분할 제3 데이터 및 분할 제4 데이터로 분할할 수 있다. 상기 분할 동작들은 도 3에 도시된 CSA 330 또는 CSA 332에 분할된 데이터를 입력하기 위한 동작일 수 있다.
430 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성할 수 있다. 예를 들면, 상기 연산 명령은 2N 비트의 정수 간 곱셈, 2개의 N 비트의 정수 간 곱셈, 복소수 곱셈, 복소수와 켤레 복소수의 곱셈, 복소수와 계수 간의 곱셈 중 하나일 수 있다. 상기 제1 연산 데이터를 생성하는 동작은 상기 제4 곱셈 데이터를 제1 연산 데이터로 생성하는 동작과, 상기 제4 곱셈 데이터를 NOT 연산하여 제1 연산 데이터를 생성하는 동작을 포함할 수 있다. 상기 연산 장치 200은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 연산 명령에 따라 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성할 수 있다. 상기 제2 연산 데이터를 생성하는 동작은 상기 제3 곱셈 데이터를 제2 연산 데이터로 생성하는 동작과, 상기 제3 곱셈 데이터를 NOT 연산하여 제2 연산 데이터를 생성하는 동작을 포함할 수 있다.
440 단계에서, 상기 연산 장치 200은 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 상기 제1 연산 데이터 중 2개의 데이터를 합산하여 제1 출력을 생성할 수 있다. 상기 연산 장치 200은 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 상기 제2 연산 데이터 중 2개의 데이터를 합산하여 제2 출력을 생성할 수 있다.
도 5a는 제1 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 도 5a에 도시된 상기 연산 장치의 동작은 2N 비트의 정수 간 곱셈을 수행하는 동작일 수 있다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 5a를 참조하면, 상기 연산 장치 200은 510 단계 내지 560 단계의 동작을 통해 하기의 수학식 2와 같은 연산을 수행할 수 있다.
Figure 112015087796951-pat00076
상기 A는 2N 비트의 크기를 가지는 제1 데이터일 수 있고, 상기 B는 2N 비트의 크기를 가지는 제2 데이터일 수 있다. 상기
Figure 112015087796951-pat00077
는 상기 제1 데이터가 분할된 제1 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00078
는 상기 제1 데이터가 분할된 제2 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00079
는 상기 A의 상위 N 비트에 대응될 수 있고, 상기
Figure 112015087796951-pat00080
는 상기 A의 하위 N 비트에 대응될 수 있다. 상기
Figure 112015087796951-pat00081
는 상기 제2 데이터가 분할된 제3 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00082
는 상기 제2 데이터가 분할된 제4 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00083
는 상기 B의 상위 N 비트에 대응될 수 있고, 상기
Figure 112015087796951-pat00084
는 상기 B의 하위 N 비트에 대응될 수 있다. 상기
Figure 112015087796951-pat00085
는 제1 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00086
는 제2 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00087
는 제3 곱셈 데이터일 수 있으며, 상기
Figure 112015087796951-pat00088
는 제4 곱셈 데이터일 수 있다.
510 단계에서, 상기 연산 장치 200은 상기 제1 데이터 및 상기 제2 데이터를 수신할 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 2N 비트의 정수일 수 있다.
520 단계에서, 상기 연산 장치 200은 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할할 수 있다. 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 N 비트의 크기를 가질 수 있다.
530 단계에서, 상기 연산 장치 200은 상기 제1 부분 데이터 및 상기 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성할 수 있고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성할 수 있고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성할 수 있으며, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성할 수 있다.
540 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터와 분할 제2 데이터로 분할할 수 있고, 상기 제3 곱셈 데이터를 분할 제3 데이터와 분할 제4 데이터로 분할할 수 있다. 상기 분할 제1 데이터는 상기
Figure 112015087796951-pat00089
의 상위 N 비트 부분일 수 있고, 상기 분할 제2 데이터는 상기
Figure 112015087796951-pat00090
의 하위 N 비트 부분일 수 있다. 상기 분할 제3 데이터는 상기
Figure 112015087796951-pat00091
의 상위 N 비트 부분일 수 있고, 상기 분할 제4 데이터는 상기
Figure 112015087796951-pat00092
의 하위 N 비트 부분일 수 있다.
550 단계에서, 상기 연산 장치 200는 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다.
560 단계에서, 상기 연산 장치 200은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 제1 출력을 생성할 수 있고, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 제2 출력을 생성할 수 있다.
도 5a에 도시하지 않았지만, 상기 연산 장치 200은 상기 제1 출력을 2N 비트만큼 자리 올림하여 상기 제2 출력과 합산할 수 있다. 상기 자리 올림된 제1 출력과 상기 제2 출력의 합은 상기 2N 비트의 정수 간 곱셈의 결과 값일 수 있다.
도 5b는 제1 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 5b를 참조하면, 상기 연산 장치 200은 2N 비트의 정수 간 곱셈을 수행할 수 있다. 이 경우, coef 값은 0일 수 있고, dual 값은 0일 수 있고, conj 값은 0일 수 있고, complex 값은 0일 수 있으며, select 값은 0일 수 있다. 상기 연산 장치 200은 제1 데이터 A(미도시)를 제1 부분 데이터
Figure 112015087796951-pat00093
와, 제2 부분 데이터
Figure 112015087796951-pat00094
로 분할할 수 있고, 제2 데이터 B(미도시)를 제3 부분 데이터
Figure 112015087796951-pat00095
와, 제4 부분 데이터
Figure 112015087796951-pat00096
로 분할할 수 있다.
상기 곱셈기 320-323은 상기 제1 부분 데이터와 상기 제2 부분 데이터를 곱하여 제1 곱셈 데이터 M1, 상기 제2 부분 데이터와 상기 제3 부분 데이터를 곱하여 제2 곱셈 데이터 M2, 상기 제1 부분 데이터와 상기 제4 부분 데이터를 곱하여 제3 곱셈 데이터 M3, 상기 제2 부분 데이터와 상기 제4 부분 데이터를 곱하여 제4 곱셈 데이터 M4를 생성할 수 있다.
상기 제2 곱셈 데이터는 분할 제1 데이터 M2[2N-1:N]와 분할 제2 데이터 M2[N-1:0]로 분할될 수 있고, 상기 제3 곱셈 데이터는 분할 제3 데이터 M3[2N-1:N]와 분할 제4 데이터 M3[N-1:0]로 분할될 수 있다.
상기 CSA 330은 상기 제1 곱셈 데이터 M1, 상기 분할 제1 데이터 M2[2N-1:N], 및 상기 분할 제3 데이터 M3[2N-1:N]를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 CSA 332는 상기 제4 곱셈 데이터 M4, 상기 분할 제2 데이터 M2[N-1:0], 및 상기 분할 제4 데이터 M3[N-1:0]을 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다.
상기 덧셈기 370은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산할 수 있다. CSA 332의 합산에 의하여 캐리가 발생되는 경우, 상기 덧셈기 370은 Cin을 반영하여 상기 제1 캐리 데이터 및 상기 제1 덧셈 데이터를 합산할 수 있다. 상기 보상기 376은 상기 합산된 값에 대하여 보상을 수행하여 제1 출력을 생성할 수 있다.
상기 덧셈기 372는 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 제2 출력을 생성할 수 있다.
상기 제1 출력은 2N 비트의 정수 간 곱셈의 연산 값의 상위 2N 비트 부분일 수 있고, 상기 제2 출력은 2N 비트의 정수 간 곱셈의 연산 값의 하위 2N 비트 부분일 수 있다.
도 6a는 제2 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 도 6a에 도시된 상기 연산 장치의 동작은 2개의 N 비트의 정수 간 곱셈을 동시에 수행하는 동작일 수 있다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 6a를 참조하면, 상기 연산 장치 200은 610 단계 내지 670 단계의 동작을 통해 하기의 수학식 3와 같은 연산을 수행할 수 있다.
Figure 112015087796951-pat00097
상기 A는 2N 비트의 크기를 가지는 제1 데이터일 수 있고, 상기 B는 2N 비트의 크기를 가지는 제2 데이터일 수 있다. 상기
Figure 112015087796951-pat00098
는 상기 제1 데이터가 분할된 제1 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00099
는 상기 제1 데이터가 분할된 제2 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00100
는 N 비트의 정수일 수 있고, 상기
Figure 112015087796951-pat00101
는 상기
Figure 112015087796951-pat00102
와 다른 N 비트의 정수일 수 있다. 상기
Figure 112015087796951-pat00103
는 N 비트의 정수일 수 있고, 상기
Figure 112015087796951-pat00104
는 상기
Figure 112015087796951-pat00105
와 다른 N 비트의 정수일 수 있다. 상기
Figure 112015087796951-pat00106
는 제1 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00107
는 제2 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00108
는 제3 곱셈 데이터일 수 있으며, 상기
Figure 112015087796951-pat00109
는 제4 곱셈 데이터일 수 있다.
610 단계에서, 상기 연산 장치 200은 상기 제1 데이터 및 상기 제2 데이터를 수신할 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 2N 비트의 정수일 수 있다. 상기 제1 데이터 및 상기 제2 데이터 각각은 상기 연산 장치 200에 입력되기 위해 서로 다른 2개의 N 비트 정수가 결합된 데이터일 수 있다.
620 단계에서, 상기 연산 장치 200은 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할할 수 있다. 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 N 비트의 크기를 가질 수 있다.
630 단계에서, 상기 연산 장치 200은 상기 제1 부분 데이터 및 상기 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성할 수 있고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성할 수 있고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성할 수 있으며, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성할 수 있다.
640 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 0으로 설정할 수 있다. 상기 설정 동작은 MUX의 제어와, 상기 연산 장치 200에 입력되는 계수 값의 제어를 통해 이뤄질 수 있다.
650 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터와 분할 제2 데이터로 분할할 수 있고, 상기 제3 곱셈 데이터를 분할 제3 데이터와 분할 제4 데이터로 분할할 수 있다. 상기 제2 곱셈 데이터는 0으로 설정되었기 때문에, 상기 분할 제1 데이터는 0일 수 있고, 상기 분할 제2 데이터는 0일 수 있다. 상기 제3 곱셈 데이터는 0으로 설정되었기 때문에, 상기 분할 제3 데이터는 0일 수 있고, 상기 분할 제4 데이터는 0일 수 있다.
660 단계에서, 상기 연산 장치 200는 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다.
670 단계에서, 상기 연산 장치 200은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 제1 출력을 생성할 수 있고, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 제2 출력을 생성할 수 있다. 상기 제2 실시 예에서, 상기 제1 출력은 상기 제1 곱셈 데이터일 수 있다. 상기 제2 곱셈 데이터 및 상기 제3 곱셈 데이터가 0으로 설정되었기 때문에, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터의 합은 상기 제1 곱셈 데이터와 같기 때문이다. 상기 제2 실시 예에서, 상기 제2 출력은 상기 제4 곱셈 데이터일 수 있다. 상기 제2 곱셈 데이터 및 상기 제3 곱셈 데이터가 0으로 설정되었기 때문에, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터의 합은 상기 제4 곱셈 데이터와 같기 때문이다.
도 6b는 제2 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 6b를 참조하면, 상기 연산 장치 200은 2개의 N 비트의 정수 간 곱셈을 수행할 수 있다. 이 경우, coef 값은 0일 수 있고, dual 값은 1일 수 있고, conj 값은 0일 수 있고, complex 값은 0일 수 있으며, select 값은 0일 수 있다. 상기 연산 장치 200은 제1 데이터 A(미도시)를 제1 부분 데이터
Figure 112015087796951-pat00110
와, 제2 부분 데이터
Figure 112015087796951-pat00111
로 분할할 수 있고, 제2 데이터 B(미도시)를 제3 부분 데이터
Figure 112015087796951-pat00112
와, 제4 부분 데이터
Figure 112015087796951-pat00113
로 분할할 수 있다.
상기 곱셈기 320-323은 상기 제1 부분 데이터와 상기 제2 부분 데이터를 곱하여 제1 곱셈 데이터 M1, 상기 제2 부분 데이터와 상기 제3 부분 데이터를 곱하여 제2 곱셈 데이터 M2, 상기 제1 부분 데이터와 상기 제4 부분 데이터를 곱하여 제3 곱셈 데이터 M3, 상기 제2 부분 데이터와 상기 제4 부분 데이터를 곱하여 제4 곱셈 데이터 M4를 생성할 수 있다. 상기 제2 곱셈 데이터 M2 및 상기 제3 곱셈 데이터 M3는 0일 수 있다. 상기 dual 값이 1이고, 0의 값을 가지는 각각의 상기 계수 C와 D가 상기 MUX 311 및 상기 MUX 312에서 출력되기 때문이다.
상기 제2 곱셈 데이터는 분할 제1 데이터 M2[2N-1:N]와 분할 제2 데이터 M2[N-1:0]로 분할될 수 있고, 상기 제3 곱셈 데이터는 분할 제3 데이터 M3[2N-1:N]와 분할 제4 데이터 M3[N-1:0]로 분할될 수 있다. 상기 제2 곱셈 데이터 및 상기 제3 곱셈 데이터는 0의 값을 가지기 때문에, 상기 분할 제1 데이터 내지 상기 분할 제4 데이터는 0의 값을 가질 수 있다.
상기 CSA 330은 상기 제1 곱셈 데이터 M1, 상기 분할 제1 데이터 M2[2N-1:N], 및 상기 분할 제3 데이터 M3[2N-1:N]를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 CSA 332는 상기 제4 곱셈 데이터 M4, 상기 분할 제2 데이터 M2[N-1:0], 및 상기 분할 제4 데이터 M3[N-1:0]을 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다.
상기 덧셈기 370은 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 제1 출력을 생성할 수 있다.
상기 덧셈기 372는 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 제2 출력을 생성할 수 있다.
상기 제1 출력은 하나의 N 비트의 정수 간 곱셈의 연산 값일 수 있고, 상기 제2 출력은 다른 N 비트의 정수 간 곱셈의 연산 값일 수 있다.
도 7a는 제3 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 도 7a에 도시된 상기 연산 장치의 동작은 복소수 간 곱셈을 수행하는 동작일 수 있다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 7a를 참조하면, 상기 연산 장치 200은 710 단계 내지 760 단계의 동작을 통해 하기의 수학식 4와 같은 연산을 수행할 수 있다.
Figure 112015087796951-pat00114
상기 A는 2N 비트의 크기를 가지는 제1 데이터일 수 있고, 상기 B는 2N 비트의 크기를 가지는 제2 데이터일 수 있다. 상기
Figure 112015087796951-pat00115
는 상기 제1 데이터가 분할된 제1 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00116
는 상기 제1 데이터가 분할된 제2 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00117
는 상기 A의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00118
는 상기 A의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00119
는 상기 제2 데이터가 분할된 제3 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00120
는 상기 제2 데이터가 분할된 제4 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00121
는 상기 B의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00122
는 상기 B의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00123
는 제1 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00124
는 제2 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00125
는 제3 곱셈 데이터일 수 있으며, 상기
Figure 112015087796951-pat00126
는 제4 곱셈 데이터일 수 있다.
710 단계에서, 상기 연산 장치 200은 상기 제1 데이터 및 상기 제2 데이터를 수신할 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 2N 비트의 복소수일 수 있다.
720 단계에서, 상기 연산 장치 200은 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할할 수 있다. 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 N 비트의 크기를 가질 수 있다.
730 단계에서, 상기 연산 장치 200은 상기 제1 부분 데이터 및 상기 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성할 수 있고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성할 수 있고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성할 수 있으며, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성할 수 있다.
740 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터와 분할 제2 데이터로 분할할 수 있고, 상기 제3 곱셈 데이터를 분할 제3 데이터와 분할 제4 데이터로 분할할 수 있다.
750 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제4 곱셈 데이터를 NOT 연산하여 제1 연산 데이터를 생성할 수 있다. 상기 연산 장치 200의 NOT 연산 동작은 상기 복소수 간의 연산의 결과 값에서
Figure 112015087796951-pat00127
가 음의 값을 가지기 때문에 수행되는 동작일 수 있다.
상기 연산 장치 200은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제3 곱셈 데이터를 제2 연산 데이터로 생성할 수 있다. 상기 제3 곱셈 데이터는 양수 값을 가지기 때문이다.
760 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있고, 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다. 상기 제1 출력은 상기 복소수 간의 곱셈 결과 값의 실수 부분일 수 있고, 상기 제2 출력은 상기 복소수 간의 곱셈 결과 값의 허수 부분일 수 있다.
도 7b는 제3 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 7b를 참조하면, 상기 연산 장치 200은 2N 비트의 복소수 간 곱셈을 수행할 수 있다. 이 경우, coef 값은 0일 수 있고, dual 값은 0일 수 있고, conj 값은 0일 수 있고, complex 값은 1일 수 있으며, select 값은 1일 수 있다. 상기 연산 장치 200은 제1 데이터 A(미도시)를 제1 부분 데이터
Figure 112015087796951-pat00128
와, 제2 부분 데이터
Figure 112015087796951-pat00129
로 분할할 수 있고, 제2 데이터 B(미도시)를 제3 부분 데이터
Figure 112015087796951-pat00130
와, 제4 부분 데이터
Figure 112015087796951-pat00131
로 분할할 수 있다.
상기 곱셈기 320-323은 상기 제1 부분 데이터와 상기 제2 부분 데이터를 곱하여 제1 곱셈 데이터 M1, 상기 제2 부분 데이터와 상기 제3 부분 데이터를 곱하여 제2 곱셈 데이터 M2, 상기 제1 부분 데이터와 상기 제4 부분 데이터를 곱하여 제3 곱셈 데이터 M3, 상기 제2 부분 데이터와 상기 제4 부분 데이터를 곱하여 제4 곱셈 데이터 M4를 생성할 수 있다.
상기 제2 곱셈 데이터는 분할 제1 데이터 M2[2N-1:N]와 분할 제2 데이터 M2[N-1:0]로 분할될 수 있고, 상기 제3 곱셈 데이터는 분할 제3 데이터 M3[2N-1:N]와 분할 제4 데이터 M3[N-1:0]로 분할될 수 있다.
상기 CSA 330은 상기 제1 곱셈 데이터 M1, 상기 분할 제1 데이터 M2[2N-1:N], 및 상기 분할 제3 데이터 M3[2N-1:N]를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 340은 상기 제4 곱셈 데이터 M4를 NOT 연산하여 제1 연산 데이터를 생성할 수 있다. 상기 NOT 연산 동작은 상기 복소수 간 곱셈의 결과 값에서
Figure 112015087796951-pat00132
가 음의 값을 가지기 때문에 수행되는 동작일 수 있다.
상기 CSA 332는 상기 제4 곱셈 데이터 M4, 상기 분할 제2 데이터 M2[N-1:0], 및 상기 분할 제4 데이터 M3[N-1:0]을 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 342는 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성할 수 있다. 상기 복소수 간 연산의 허수부는 음의 값을 포함하지 않기 때문이다.
상기 덧셈기 370은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있다.
상기 덧셈기 372는 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다.
상기 제1 출력은 2N 비트의 복소수 간 곱셈의 연산 값의 실수 부분일 수 있고, 상기 제2 출력은 2N 비트의 복소수 간 곱셈의 연산 값의 허수 부분일 수 있다.
도 8a는 제4 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 도 8a에 도시된 상기 연산 장치의 동작은 복소수와 켤레 복소수 간 곱셈을 수행하는 동작일 수 있다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 8a를 참조하면, 상기 연산 장치 200은 810 단계 내지 860 단계의 동작을 통해 하기의 수학식 5와 같은 연산을 수행할 수 있다.
Figure 112015087796951-pat00133
상기 A는 2N 비트의 크기를 가지는 제1 데이터일 수 있고, 상기 B는 2N 비트의 크기를 가지는 제2 데이터일 수 있다. 상기
Figure 112015087796951-pat00134
는 상기 B의 켤레 복소수일 수 있다. 상기
Figure 112015087796951-pat00135
는 상기 제1 데이터가 분할된 제1 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00136
는 상기 제1 데이터가 분할된 제2 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00137
는 상기 A의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00138
는 상기 A의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00139
는 상기 제2 데이터가 분할된 제3 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00140
는 상기 제2 데이터가 분할된 제4 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00141
는 상기 B의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00142
는 상기 B의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00143
는 제1 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00144
는 제2 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00145
는 제3 곱셈 데이터일 수 있으며, 상기
Figure 112015087796951-pat00146
는 제4 곱셈 데이터일 수 있다.
810 단계에서, 상기 연산 장치 200은 상기 제1 데이터 및 상기 제2 데이터를 수신할 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 2N 비트의 복소수일 수 있다.
820 단계에서, 상기 연산 장치 200은 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할할 수 있다. 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 N 비트의 크기를 가질 수 있다.
830 단계에서, 상기 연산 장치 200은 상기 제1 부분 데이터 및 상기 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성할 수 있고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성할 수 있고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성할 수 있으며, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성할 수 있다.
840 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터와 분할 제2 데이터로 분할할 수 있고, 상기 제3 곱셈 데이터를 분할 제3 데이터와 분할 제4 데이터로 분할할 수 있다.
850 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제4 곱셈 데이터를 제1 연산 데이터로 생성할 수 있다. 상기 제 4 곱셈 데이터는 양수 값을 가지기 때문이다.
상기 연산 장치 200은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제3 곱셈 데이터를 NOT 연산하여 제2 연산 데이터를 생성할 수 있다. 상기 연산 장치 200의 NOT 연산 동작은 상기 복소수 간의 연산의 결과 값에서
Figure 112015087796951-pat00147
가 음의 값을 가지기 때문에 수행되는 동작일 수 있다.
860 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있고, 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다. 상기 제1 출력은 상기 복소수 간의 곱셈 결과 값의 실수 부분일 수 있고, 상기 제2 출력은 상기 복소수 간의 곱셈 결과 값의 허수 부분일 수 있다.
도 8b는 제4 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 8b를 참조하면, 상기 연산 장치 200은 2N 비트의 복소수와 켤레 복소수 간의 곱셈을 수행할 수 있다. 이 경우, coef 값은 0일 수 있고, dual 값은 0일 수 있고, conj 값은 1일 수 있고, complex 값은 1일 수 있으며, select 값은 1일 수 있다. 상기 연산 장치 200은 제1 데이터 A(미도시)를 제1 부분 데이터
Figure 112015087796951-pat00148
와, 제2 부분 데이터
Figure 112015087796951-pat00149
로 분할할 수 있고, 제2 데이터 B(미도시)를 제3 부분 데이터
Figure 112015087796951-pat00150
와, 제4 부분 데이터
Figure 112015087796951-pat00151
로 분할할 수 있다.
상기 곱셈기 320-323은 상기 제1 부분 데이터와 상기 제2 부분 데이터를 곱하여 제1 곱셈 데이터 M1, 상기 제2 부분 데이터와 상기 제3 부분 데이터를 곱하여 제2 곱셈 데이터 M2, 상기 제1 부분 데이터와 상기 제4 부분 데이터를 곱하여 제3 곱셈 데이터 M3, 상기 제2 부분 데이터와 상기 제4 부분 데이터를 곱하여 제4 곱셈 데이터 M4를 생성할 수 있다.
상기 제2 곱셈 데이터는 분할 제1 데이터 M2[2N-1:N]와 분할 제2 데이터 M2[N-1:0]로 분할될 수 있고, 상기 제3 곱셈 데이터는 분할 제3 데이터 M3[2N-1:N]와 분할 제4 데이터 M3[N-1:0]로 분할될 수 있다.
상기 CSA 330은 상기 제1 곱셈 데이터 M1, 상기 분할 제1 데이터 M2[2N-1:N], 및 상기 분할 제3 데이터 M3[2N-1:N]를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 340은 상기 제4 곱셈 데이터 M4를 NOT 연산하지 않고, 제1 연산 데이터로 생성할 수 있다. 상기 복소수와 켤레 복소수 간의 곱셈의 실수부는 음의 값을 포함하지 않기 때문이다.
상기 CSA 332는 상기 제4 곱셈 데이터 M4, 상기 분할 제2 데이터 M2[N-1:0], 및 상기 분할 제4 데이터 M3[N-1:0]을 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 342는 상기 제3 곱셈 데이터를 NOT 연산하여 상기 제2 연산 데이터로 생성할 수 있다. 상기 NOT 연산 동작은 상기 복소수 간 곱셈의 결과 값에서
Figure 112015087796951-pat00152
가 음의 값을 가지기 때문에 수행되는 동작일 수 있다.
상기 덧셈기 370은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있다.
상기 덧셈기 372는 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다. 필요한 경우, 상기 덧셈기 372는 2의 보수 처리를 위한 캐리 입력을 변경해야 될 수도 있다.
상기 제1 출력은 2N 비트의 복소수와 켤레 복소수 간 곱셈의 연산 값의 실수 부분일 수 있고, 상기 제2 출력은 2N 비트의 복소수와 켤레 복소수 간 곱셈의 연산 값의 허수 부분일 수 있다.
도 9a는 제5 실시 예에 따른 연산 장치의 동작을 도시한 흐름도이다. 도 9a에 도시된 상기 연산 장치의 동작은 복소수와 계수 간 곱셈을 수행하는 동작일 수 있다. 이러한 동작 흐름은 도 2에 도시된 연산 장치 200에 의해 수행될 수 있다.
도 9a를 참조하면, 상기 연산 장치 200은 910 단계 내지 960 단계의 동작을 통해 하기의 수학식 6와 같은 연산을 수행할 수 있다.
Figure 112015087796951-pat00153
상기 A는 2N 비트의 크기를 가지는 제1 데이터일 수 있고, 상기 B는 2N 비트의 크기를 가지는 제2 데이터일 수 있다. 상기 C는 N 비트의 크기를 가지는 제1 계수일 수 있다. 상기 D는 N 비트의 크기를 가지는 제2 계수일 수 있다. 상기 C와 D는 상기 A, B와 같이 하나의 2N 비트의 데이터로 입력될 수도 있다. 상기
Figure 112015087796951-pat00154
는 상기 제1 데이터가 분할된 제1 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00155
는 상기 제1 데이터가 분할된 제2 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00156
는 상기 A의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00157
는 상기 A의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00158
는 상기 제2 데이터가 분할된 제3 부분 데이터일 수 있고, 상기
Figure 112015087796951-pat00159
는 상기 제2 데이터가 분할된 제4 부분 데이터일 수 있다. 상기
Figure 112015087796951-pat00160
는 상기 B의 실수 부분에 대응될 수 있고, 상기
Figure 112015087796951-pat00161
는 상기 B의 허수 부분에 대응될 수 있다. 상기
Figure 112015087796951-pat00162
는 제1 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00163
는 제2 곱셈 데이터일 수 있고, 상기
Figure 112015087796951-pat00164
는 제3 곱셈 데이터일 수 있으며, 상기
Figure 112015087796951-pat00165
는 제4 곱셈 데이터일 수 있다.
910 단계에서, 상기 연산 장치 200은 상기 제1 데이터 및 상기 제2 데이터를 수신할 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 2N 비트의 복소수일 수 있다.
920 단계에서, 상기 연산 장치 200은 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할할 수 있다. 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 N 비트의 크기를 가질 수 있다.
930 단계에서, 상기 연산 장치 200은 상기 제1 부분 데이터 및 상기 제1 계수를 곱하여 상기 제1 곱셈 데이터를 생성할 수 있고, 상기 제2 부분 데이터 및 상기 제1 계수를 곱하여 상기 제2 곱셈 데이터를 생성할 수 있고, 상기 제3 부분 데이터 및 상기 제2 계수를 곱하여 상기 제3 곱셈 데이터를 생성할 수 있으며, 상기 제4 부분 데이터 및 상기 제2 계수를 곱하여 상기 제4 곱셈 데이터를 생성할 수 있다.
940 단계에서, 상기 연산 장치 200은 상기 제2 곱셈 데이터를 분할 제1 데이터와 분할 제2 데이터로 분할할 수 있고, 상기 제3 곱셈 데이터를 분할 제3 데이터와 분할 제4 데이터로 분할할 수 있다.
950 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 상기 분할 제3 데이터를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제4 곱셈 데이터를 제1 연산 데이터로 생성할 수 있다.
상기 연산 장치 200은 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 상기 분할 제4 데이터를 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 연산 장치 200은 상기 제3 곱셈 데이터를 제2 연산 데이터로 생성할 수 있다.
960 단계에서, 상기 연산 장치 200은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있고, 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다. 상기 제1 출력은 상기 복소수 간의 곱셈 결과 값의 실수 부분일 수 있고, 상기 제2 출력은 상기 복소수 간의 곱셈 결과 값의 허수 부분일 수 있다.
도 9b는 제5 실시 예에 따른 연산 장치에서의 데이터 흐름을 도시한다.
도 9b를 참조하면, 상기 연산 장치 200은 복소수와 계수 간의 곱셈을 수행할 수 있다. 이 경우, coef 값은 1일 수 있고, dual 값은 1일 수 있고, conj 값은 0일 수 있고, complex 값은 0일 수 있으며, select 값은 1일 수 있다. 상기 연산 장치 200은 제1 데이터 A(미도시)를 제1 부분 데이터
Figure 112015087796951-pat00166
와, 제2 부분 데이터
Figure 112015087796951-pat00167
로 분할할 수 있고, 제2 데이터 B(미도시)를 제3 부분 데이터
Figure 112015087796951-pat00168
와, 제4 부분 데이터
Figure 112015087796951-pat00169
로 분할할 수 있다.
상기 곱셈기 320-323은 상기 제1 부분 데이터와 상기 제1 계수를 곱하여 제1 곱셈 데이터 M1, 상기 제2 부분 데이터와 상기 제1 계수를 곱하여 제2 곱셈 데이터 M2, 상기 제3 부분 데이터와 상기 제2 계수를 곱하여 제3 곱셈 데이터 M3, 상기 제4 부분 데이터와 상기 제2 계수를 곱하여 제4 곱셈 데이터 M4를 생성할 수 있다.
상기 제2 곱셈 데이터는 분할 제1 데이터 M2[2N-1:N]와 분할 제2 데이터 M2[N-1:0]로 분할될 수 있고, 상기 제3 곱셈 데이터는 분할 제3 데이터 M3[2N-1:N]와 분할 제4 데이터 M3[N-1:0]로 분할될 수 있다.
상기 CSA 330은 상기 제1 곱셈 데이터 M1, 상기 분할 제1 데이터 M2[2N-1:N], 및 상기 분할 제3 데이터 M3[2N-1:N]를 합산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 340은 상기 제4 곱셈 데이터 M4를 제1 연산 데이터로 생성할 수 있다. 상기 복소수와 계수 간의 곱셈의 실수부는 음의 값을 포함하지 않기 때문이다.
상기 CSA 332는 상기 제4 곱셈 데이터 M4, 상기 분할 제2 데이터 M2[N-1:0], 및 상기 분할 제4 데이터 M3[N-1:0]을 합산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성할 수 있다. 상기 NOT 게이트 342는 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성할 수 있다. 상기 복소수와 계수 간의 곱셈의 허수부는 음의 값을 포함하지 않기 때문이다.
상기 덧셈기 370은 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 제1 출력을 생성할 수 있다.
상기 덧셈기 372는 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 제2 출력을 생성할 수 있다.
상기 제1 출력은 2N 비트의 복소수와 계수 간 곱셈의 연산 값의 실수 부분일 수 있고, 상기 제2 출력은 2N 비트의 복소수와 계수 간 곱셈의 연산 값의 허수 부분일 수 있다.
상기와 같은 다양한 실시 예에 따른 연산 장치의 동작 방법은, 2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하는 동작과, 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하는 동작과, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하는 동작과, 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하는 동작을 포함할 수 있고, 상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작은 동시에, 또는 순서에 관계없이 수행되고, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작은, 동시에 또는 순서에 관계없이 수행되며, 상기 제1 출력 내지 제2 출력을 생성하는 동작은 동시에, 또는 순서에 관계없이 수행될 수 있다. 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 과정은, 상기 연산 장치에 포함된 자리 올림 보류 가산기(CSA, carry save adder)을 이용하여 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 합산하여 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 과정을 포함할 수 있고, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 과정은, 상기 CSA를 이용하여 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 합산하여 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 과정을 포함할 수 있다. 상기 연산 장치의 동작 방법은, N 비트의 제1 부분 데이터, 제2 부분 데이터, 제3 부분 데이터, 및 제4 부분 데이터를 수신하는 동작과, 상기 제1 부분 데이터 및 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 부분 제3 데이터를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성하는 동작을 더 포함할 수 있고, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터를 생성하는 동작은 동시에, 또는 순서에 관계없이 수행될 수 있다. 상기 연산 장치의 동작 방법은, 2N 비트의 제1 데이터와 제2 데이터를 수신하는 동작과, 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하는 동작과, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할하는 동작을 포함할 수 있고, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터로 분할하는 동작은 동시에, 또는 순서에 관계없이 수행될 수 있다.
또한, 상기 제1 데이터 및 상기 제2 데이터는 각각 2N 비트의 정수이고,
상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함할 수 있으며, 상기 제1 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 제2 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
또한, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 상기 N비트의 정수이고, 상기 연산 명령은 상기 제1 부분 데이터와 상기 제3 부분 데이터의 곱셈 명령과 상기 제2 부분 데이터와 상기 부분 제4 데이터의 곱셈 명령을 포함할 수 있으며, 상기 연산 장치의 동작 방법은, 상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 0으로 설정하는 동작을 더 포함할 수 있으며, 상기 제1 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 제2 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함할 수 있으며, 상기 제1 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 NOT 연산하여 상기 제1 연산 데이터를 생성하고, 상기 제2 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고, 상기 제1 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 제2 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 켤레 복소수의 곱셈 명령을 포함할 수 있으며, 상기 제1 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고, 상기 제2 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 NOT 연산하여 상기 제2 연산 데이터를 생성하고, 상기 제1 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 제2 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 연산 장치의 동작 방법은 제1 계수와 제2 계수를 수신하는 동작을 더 포함할 수 있으며, 상기 연산 명령은, 상기 제1 데이터에 상기 제1 계수를 곱한 복소수와 상기 제2 데이터에 상기 제2 계수를 곱한 복소수의 덧셈 명령을 포함할 수 있으며, 상기 제1 곱셈 데이터 내지 상기 제4 곱셈 데이터를 생성하는 동작은, 상기 제1 부분 데이터에 상기 제1 계수를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터에 상기 제1 계수를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제3 부분 데이터에 상기 제2 계수를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제4 부분 데이터에 상기 제2 계수를 곱하여 상기 제4 곱셈 데이터를 생성하는 동작을 포함할 수 있고, 상기 제1 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고, 상기 제2 연산 데이터를 생성하는 동작은, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하며, 상기 제1 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 제2 출력을 생성하는 동작은, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성할 수 있다.
또한, 상기 연산 명령은 2N 비트의 정수 간의 곱셈 명령, N 비트의 정수 간의 곱셈 명령, 2N 비트의 복소수 간의 곱셈 명령, 2N 비트의 복소수와 2N 비트의 복소수의 켤레 복소수 간의 곱셈 명령, 또는 제1 계수를 곱한 2N 비트의 복소수와 제2 계수를 곱한 2N 비트의 복소수 간의 덧셈 명령 중 하나 또는 그 이상을 포함할 수 있다.
상기와 같은 다양한 실시 예에 따른 연산 장치는 덧셈부와 결합된 연산 제어부와, 2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하도록 구성된 입력부와, 상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하도록 구성된 분할부와, 상기 연산 제어부와 결합되고, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하도록 구성된 자리 올림 보류 덧셈기(CSA, carry save adder)를 포함할 수 있고, 상기 연산 제어부는, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하도록 구성되고, 상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하도록 구성되고, 상기 분할부는 상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성되고, 상기 CSA는, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작을, 동시에 또는 순서에 관계없이 수행되도록 구성되며, 상기 연산 제어부는, 상기 제1 출력 내지 제2 출력을 생성하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성될 수 있다. 상기 CSA는 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 합산하여 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하도록 구성되고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 합산하여 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하도록 구성될 수 있다. 상기 연산 장치는 상기 연산 제어부와 결합된 곱셈부를 더 포함할 수 있고, 상기 입력부는, N 비트의 제1 부분 데이터, 제2 부분 데이터, 제3 부분 데이터, 및 제4 부분 데이터를 수신하도록 더 구성되고, 상기 연산 제어부는, 상기 제1 부분 데이터 및 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 부분 제3 데이터를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성하도록 더 구성되고, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터를 생성하는 동작은 동시에, 또는 순서에 관계없이 수행되도록 구성될 수 있다. 상기 입력부는, 2N 비트의 제1 데이터와 제2 데이터를 수신하도록 더 구성되고, 상기 분할부는, 상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할하도록 더 구성되고, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터로 분할하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성될 수 있다. 상기 제1 데이터 및 상기 제2 데이터는 각각 2N 비트의 정수이고, 상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며, 상기 연산 제어부는, 상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하도록 구성될 수 있다.
또한, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 상기 N비트의 정수이고, 상기 연산 명령은 상기 제1 부분 데이터와 상기 제3 부분 데이터의 곱셈 명령과 상기 제2 부분 데이터와 상기 부분 제4 데이터의 곱셈 명령을 포함하며, 상기 연산 제어부는, 상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 0으로 설정하도록 더 구성되고, 상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하도록 구성될 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며, 상기 연산 제어부는, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 NOT 연산하여 상기 제1 연산 데이터를 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성될 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 연산 명령은, 상기 제1 데이터와 상기 제2 데이터의 켤레 복소수의 곱셈 명령을 포함할수 있으며, 상기 연산 제어부는, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 NOT 연산하여 상기 제2 연산 데이터를 생성하고, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성될 수 있다.
또한, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고, 상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며, 상기 입력부는 제1 계수와 제2 계수를 수신하도록 더 구성될 수 있으며, 상기 연산 명령은, 상기 제1 데이터에 상기 제1 계수를 곱한 복소수와 상기 제2 데이터에 상기 제2 계수를 곱한 복소수의 덧셈 명령을 포함할 수 있고, 상기 연산 제어부는, 상기 제1 부분 데이터에 상기 제1 계수를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터에 상기 제1 계수를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제3 부분 데이터에 상기 제2 계수를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제4 부분 데이터에 상기 제2 계수를 곱하여 상기 제4 곱셈 데이터를 생성하고, 상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고, 상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성될 수 있다.
또한, 상기 연산 명령은 2N 비트의 정수 간의 곱셈 명령, N 비트의 정수 간의 곱셈 명령, 2N 비트의 복소수 간의 곱셈 명령, 2N 비트의 복소수와 2N 비트의 복소수의 켤레 복소수 간의 곱셈 명령, 또는 제1 계수를 곱한 2N 비트의 복소수와 제2 계수를 곱한 2N 비트의 복소수 간의 덧셈 명령 중 하나 또는 그 이상을 포함할 수 있다.
본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될(implemented) 수 있다.
소프트웨어로 구현하는 경우, 하나 이상의 프로그램(소프트웨어 모듈)을 저장하는 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체에 저장되는 하나 이상의 프로그램은, 전자 장치(device) 내의 하나 이상의 프로세서에 의해 실행 가능하도록 구성된다(configured for execution). 하나 이상의 프로그램은, 전자 장치로 하여금 본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들을 실행하게 하는 명령어(instructions)를 포함한다.
이러한 프로그램(소프트웨어 모듈, 소프트웨어)은 랜덤 액세스 메모리 (random access memory), 플래시(flash) 메모리를 포함하는 불휘발성(non-volatile) 메모리, 롬(ROM: Read Only Memory), 전기적 삭제가능 프로그램가능 롬(EEPROM: Electrically Erasable Programmable Read Only Memory), 자기 디스크 저장 장치(magnetic disc storage device), 컴팩트 디스크 롬(CD-ROM: Compact Disc-ROM), 디지털 다목적 디스크(DVDs: Digital Versatile Discs) 또는 다른 형태의 광학 저장 장치, 마그네틱 카세트(magnetic cassette)에 저장될 수 있다. 또는, 이들의 일부 또는 전부의 조합으로 구성된 메모리에 저장될 수 있다. 또한, 각각의 구성 메모리는 다수 개 포함될 수도 있다.
또한, 상기 프로그램은 인터넷(Internet), 인트라넷(Intranet), LAN(Local Area Network), WLAN(Wide LAN), 또는 SAN(Storage Area Network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다. 이러한 저장 장치는 외부 포트를 통하여 본 개시의 실시 예를 수행하는 장치에 접속할 수 있다. 또한, 통신 네트워크상의 별도의 저장장치가 본 개시의 실시 예를 수행하는 장치에 접속할 수도 있다.
상술한 본 개시의 구체적인 실시 예들에서, 개시에 포함되는 구성 요소는 제시된 구체적인 실시 예에 따라 단수 또는 복수로 표현되었다. 그러나, 단수 또는 복수의 표현은 설명의 편의를 위해 제시한 상황에 적합하게 선택된 것으로서, 본 개시가 단수 또는 복수의 구성 요소에 제한되는 것은 아니며, 복수로 표현된 구성 요소라 하더라도 단수로 구성되거나, 단수로 표현된 구성 요소라 하더라도 복수로 구성될 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 연산 장치의 동작 방법에 있어서,
    2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하는 동작과,
    상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하는 동작과,
    상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하고, 상기 연산 명령에 따라 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하는 동작과,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하는 동작을 포함하고,
    상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작은 동시에, 또는 순서에 관계없이 수행되고,
    상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작은, 동시에 또는 순서에 관계없이 수행되며,
    상기 제1 출력 내지 제2 출력을 생성하는 동작은 동시에, 또는 순서에 관계없이 수행되는 방법.
  2. 청구항 1에 있어서, 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 과정은,
    상기 연산 장치에 포함된 자리 올림 보류 가산기(CSA, carry save adder)을 이용하여 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 합산하여 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 과정을 포함하고,
    상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 과정은,
    상기 CSA를 이용하여 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 합산하여 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 과정을 포함하는 방법.
  3. 청구항 2에 있어서,
    N 비트의 제1 부분 데이터, 제2 부분 데이터, 제3 부분 데이터, 및 제4 부분 데이터를 수신하는 동작과,
    상기 제1 부분 데이터 및 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성하는 동작을 더 포함하고,
    상기 제1 부분 데이터 내지 상기 제4 부분 데이터를 생성하는 동작은 동시에, 또는 순서에 관계없이 수행되는 방법.
  4. 청구항 3에 있어서,
    2N 비트의 제1 데이터와 제2 데이터를 수신하는 동작과,
    상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하는 동작과, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할하는 동작을 포함하고,
    상기 제1 부분 데이터 내지 상기 제4 부분 데이터로 분할하는 동작은 동시에, 또는 순서에 관계없이 수행되는 방법.
  5. 청구항 4에 있어서, 상기 제1 데이터 및 상기 제2 데이터는
    각각 2N 비트의 정수이고,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며,
    상기 제1 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 제2 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하는 방법.
  6. 청구항 4에 있어서, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 상기 N비트의 정수이고,
    상기 연산 명령은 상기 제1 부분 데이터와 상기 제3 부분 데이터의 곱셈 명령과 상기 제2 부분 데이터와 상기 제4 부분 데이터의 곱셈 명령을 포함하며,
    상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 0으로 설정하는 동작을 더 포함하며,
    상기 제1 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 제2 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하는 방법.
  7. 청구항 4에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며,
    상기 제1 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 NOT 연산하여 상기 제1 연산 데이터를 생성하고,
    상기 제2 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고,
    상기 제1 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 제2 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하는 방법.
  8. 청구항 4에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 켤레 복소수의 곱셈 명령을 포함하며,
    상기 제1 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고,
    상기 제2 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 NOT 연산하여 상기 제2 연산 데이터를 생성하고,
    상기 제1 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 제2 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하는 방법.
  9. 청구항 4에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    제1 계수와 제2 계수를 수신하는 동작을 더 포함하며,
    상기 연산 명령은,
    상기 제1 데이터에 상기 제1 계수를 곱한 복소수와 상기 제2 데이터에 상기 제2 계수를 곱한 복소수의 덧셈 명령을 포함하며,
    상기 제1 곱셈 데이터 내지 상기 제4 곱셈 데이터를 생성하는 동작은,
    상기 제1 부분 데이터에 상기 제1 계수를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터에 상기 제1 계수를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제3 부분 데이터에 상기 제2 계수를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제4 부분 데이터에 상기 제2 계수를 곱하여 상기 제4 곱셈 데이터를 생성하는 동작을 포함하고,
    상기 제1 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고,
    상기 제2 연산 데이터를 생성하는 동작은,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하며,
    상기 제1 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 제2 출력을 생성하는 동작은,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하는 방법.
  10. 청구항 1에 있어서,
    상기 연산 명령은 2N 비트의 정수 간의 곱셈 명령, N 비트의 정수 간의 곱셈 명령, 2N 비트의 복소수 간의 곱셈 명령, 2N 비트의 복소수와 2N 비트의 복소수의 켤레 복소수 간의 곱셈 명령, 또는 제1 계수를 곱한 2N 비트의 복소수와 제2 계수를 곱한 2N 비트의 복소수 간의 덧셈 명령 중 하나 또는 그 이상을 포함하는 방법.
  11. 연산 장치에 있어서,
    덧셈부와 결합된 연산 제어부와,
    2N 비트의 제1 곱셈 데이터, 제2 곱셈 데이터, 제3 곱셈 데이터, 및 제4 곱셈 데이터를 수신하도록 구성된 입력부와,
    상기 제2 곱셈 데이터를 N 비트의 분할 제1 데이터와 분할 제2 데이터로, 상기 제3 곱셈 데이터를 N 비트의 분할 제3 데이터와 분할 제4 데이터로 분할하도록 구성된 분할부와,
    상기 연산 제어부와 결합되고, 상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 연산하여 제1 캐리 데이터와 제1 덧셈 데이터를 생성하고, 상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 연산하여 제2 캐리 데이터와 제2 덧셈 데이터를 생성하도록 구성된 자리 올림 보류 덧셈기(CSA, carry save adder)를 포함하고,
    상기 연산 제어부는,
    연산 명령에 따라 상기 제4 곱셈 데이터에 기반하여 제1 연산 데이터를 생성하고, 상기 제3 곱셈 데이터에 기반하여 제2 연산 데이터를 생성하도록 구성되고,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터, 상기 제1 캐리 데이터, 상기 제1 덧셈 데이터, 및 상기 제1 연산 데이터 중 적어도 하나의 입력에 기반하여 제1 출력을 생성하고, 상기 연산 명령에 따라 상기 제2 곱셈 데이터, 상기 제2 캐리 데이터, 상기 제2 덧셈 데이터, 및 상기 제2 연산 데이터 중 적어도 하나의 입력에 기반하여 제2 출력을 생성하도록 구성되고,
    상기 분할부는 상기 분할 제1 데이터와 상기 분할 제2 데이터로 분할하는 동작과, 상기 분할 제3 데이터와 상기 분할 제4 데이터로 분할하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성되고,
    상기 CSA는,
    상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하는 동작과, 상기 제1 연산 데이터를 생성하는 동작과, 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하는 동작과, 상기 제2 연산 데이터를 생성하는 동작을, 동시에 또는 순서에 관계없이 수행되도록 구성되며,
    상기 연산 제어부는,
    상기 제1 출력 내지 제2 출력을 생성하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성되는 연산 장치.
  12. 청구항 11에 있어서, 상기 CSA는
    상기 제1 곱셈 데이터, 상기 분할 제1 데이터, 및 상기 분할 제3 데이터를 합산하여 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 생성하도록 구성되고,
    상기 제4 곱셈 데이터, 상기 분할 제2 데이터, 및 상기 분할 제4 데이터를 합산하여 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 생성하도록 구성되는 연산 장치.
  13. 청구항 12에 있어서, 상기 연산 제어부와 결합된 곱셈부를 더 포함하고,
    상기 입력부는,
    N 비트의 제1 부분 데이터, 제2 부분 데이터, 제3 부분 데이터, 및 제4 부분 데이터를 수신하도록 더 구성되고,
    상기 연산 제어부는,
    상기 제1 부분 데이터 및 제2 부분 데이터를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제3 부분 데이터를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제1 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제2 부분 데이터 및 상기 제4 부분 데이터를 곱하여 상기 제4 곱셈 데이터를 생성하도록 더 구성되고,
    상기 제1 부분 데이터 내지 상기 제4 부분 데이터를 생성하는 동작은 동시에, 또는 순서에 관계없이 수행되도록 구성되는 연산 장치.
  14. 청구항 13에 있어서, 상기 입력부는,
    2N 비트의 제1 데이터와 제2 데이터를 수신하도록 더 구성되고,
    상기 분할부는,
    상기 제1 데이터를 상기 제1 부분 데이터 및 상기 제2 부분 데이터로 분할하고, 상기 제2 데이터를 상기 제3 부분 데이터 및 상기 제4 부분 데이터로 분할하도록 더 구성되고,
    상기 제1 부분 데이터 내지 상기 제4 부분 데이터로 분할하는 동작을 동시에, 또는 순서에 관계없이 수행되도록 구성되는 연산 장치.
  15. 청구항 14에 있어서, 상기 제1 데이터 및 상기 제2 데이터는
    각각 2N 비트의 정수이고,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며,
    상기 연산 제어부는,
    상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하도록 구성되는 연산 장치.
  16. 청구항 14에 있어서, 상기 제1 부분 데이터 내지 상기 제4 부분 데이터는 상기 N비트의 정수이고,
    상기 연산 명령은 상기 제1 부분 데이터와 상기 제3 부분 데이터의 곱셈 명령과 상기 제2 부분 데이터와 상기 제4 부분 데이터의 곱셈 명령을 포함하며,
    상기 연산 제어부는,
    상기 제2 곱셈 데이터와 상기 제3 곱셈 데이터를 0으로 설정하도록 더 구성되고,
    상기 연산 명령에 따라 상기 제1 캐리 데이터와 상기 제1 덧셈 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 연산 명령에 따라 상기 제2 캐리 데이터와 상기 제2 덧셈 데이터를 합산하여 상기 제2 출력을 생성하도록 구성되는 연산 장치.
  17. 청구항 14에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 곱셈 명령을 포함하며,
    상기 연산 제어부는,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 NOT 연산하여 상기 제1 연산 데이터를 생성하고,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성되는 연산 장치.
  18. 청구항 14에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    상기 연산 명령은,
    상기 제1 데이터와 상기 제2 데이터의 켤레 복소수의 곱셈 명령을 포함하며,
    상기 연산 제어부는,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 NOT 연산하여 상기 제2 연산 데이터를 생성하고,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성되는 연산 장치.
  19. 청구항 14에 있어서, 상기 제1 데이터는 상기 제1 부분 데이터를 실수 부, 상기 제2 부분 데이터를 허수 부로 포함하는 복소수이고,
    상기 제2 데이터는 상기 제3 부분 데이터를 실수 부, 상기 제4 부분 데이터를 허수 부로 포함하는 복소수이며,
    상기 입력부는,
    제1 계수와 제2 계수를 수신하도록 더 구성되며,
    상기 연산 명령은,
    상기 제1 데이터에 상기 제1 계수를 곱한 복소수와 상기 제2 데이터에 상기 제2 계수를 곱한 복소수의 덧셈 명령을 포함하며,
    상기 연산 제어부는,
    상기 제1 부분 데이터에 상기 제1 계수를 곱하여 상기 제1 곱셈 데이터를 생성하고, 상기 제2 부분 데이터에 상기 제1 계수를 곱하여 상기 제2 곱셈 데이터를 생성하고, 상기 제3 부분 데이터에 상기 제2 계수를 곱하여 상기 제3 곱셈 데이터를 생성하고, 상기 제4 부분 데이터에 상기 제2 계수를 곱하여 상기 제4 곱셈 데이터를 생성하고,
    상기 연산 명령에 따라 상기 제4 곱셈 데이터를 상기 제1 연산 데이터로 생성하고,
    상기 연산 명령에 따라 상기 제3 곱셈 데이터를 상기 제2 연산 데이터로 생성하고,
    상기 연산 명령에 따라 상기 제1 곱셈 데이터와 상기 제1 연산 데이터를 합산하여 상기 제1 출력을 생성하고,
    상기 연산 명령에 따라 상기 제2 곱셈 데이터와 상기 제2 연산 데이터를 합산하여 상기 제2 출력을 생성하도록 구성되는 연산 장치.
  20. 청구항 11에 있어서,
    상기 연산 명령은 2N 비트의 정수 간의 곱셈 명령, N 비트의 정수 간의 곱셈 명령, 2N 비트의 복소수 간의 곱셈 명령, 2N 비트의 복소수와 2N 비트의 복소수의 켤레 복소수 간의 곱셈 명령, 또는 제1 계수를 곱한 2N 비트의 복소수와 제2 계수를 곱한 2N 비트의 복소수 간의 덧셈 명령 중 하나 또는 그 이상을 포함하는 연산 장치.
KR1020150127778A 2015-09-09 2015-09-09 연산을 제어하기 위한 장치 및 방법 KR102338863B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150127778A KR102338863B1 (ko) 2015-09-09 2015-09-09 연산을 제어하기 위한 장치 및 방법
US15/134,842 US10061559B2 (en) 2015-09-09 2016-04-21 Apparatus and method for controlling operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150127778A KR102338863B1 (ko) 2015-09-09 2015-09-09 연산을 제어하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170030327A KR20170030327A (ko) 2017-03-17
KR102338863B1 true KR102338863B1 (ko) 2021-12-13

Family

ID=58190103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150127778A KR102338863B1 (ko) 2015-09-09 2015-09-09 연산을 제어하기 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US10061559B2 (ko)
KR (1) KR102338863B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101958988B1 (ko) 2017-08-09 2019-03-19 주식회사 티맥스데이터 데이터베이스 관리 서버에서 연산을 효율적으로 수행하는 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286024B1 (en) 1997-09-18 2001-09-04 Kabushiki Kaisha Toshiba High-efficiency multiplier and multiplying method
US6460064B1 (en) 1998-11-02 2002-10-01 Hyundai Electronics Industries Co. Ltd. Multiplier for operating n bits and n/2 bits and method therefor
US20130138711A1 (en) 2011-11-29 2013-05-30 Junji Sugisawa Shared integer, floating point, polynomial, and vector multiplier

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
DE4317074C1 (de) * 1993-05-21 1994-06-23 Itt Ind Gmbh Deutsche Multiplizierer für reelle und komplexe Zahlen
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
JP3139466B2 (ja) 1998-08-28 2001-02-26 日本電気株式会社 乗算器及び積和演算器
JP3982965B2 (ja) 1999-11-09 2007-09-26 沖電気工業株式会社 繰り返し型乗算器とアレイ型乗算器
US7433912B1 (en) 2004-02-19 2008-10-07 Sun Microsystems, Inc. Multiplier structure supporting different precision multiplication operations
KR20050088506A (ko) 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
KR101100753B1 (ko) 2004-07-30 2011-12-30 매그나칩 반도체 유한회사 부스 곱셈기
US7428566B2 (en) 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
KR100649111B1 (ko) 2005-09-21 2006-11-27 한국과학기술원 3차원 그래픽 시스템의 연산장치 및 그 방법
US20090228686A1 (en) 2007-05-22 2009-09-10 Koenck Steven E Energy efficient processing device
KR20090071823A (ko) 2007-12-28 2009-07-02 한국과학기술원 다기능 연산장치 및 방법
CN101847986B (zh) 2009-03-27 2012-06-06 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法
KR20120077164A (ko) * 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
US9274750B2 (en) 2012-04-20 2016-03-01 Futurewei Technologies, Inc. System and method for signal processing in digital signal processors
KR102057648B1 (ko) 2013-01-04 2019-12-20 삼성전자주식회사 중복 형태 리코딩을 이용한 곱셈 방법 및 모듈러 곱셈기
US10628156B2 (en) 2013-07-09 2020-04-21 Texas Instruments Incorporated Vector SIMD VLIW data path architecture
GB2519801A (en) 2013-10-31 2015-05-06 Ibm Computing architecture and method for processing data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286024B1 (en) 1997-09-18 2001-09-04 Kabushiki Kaisha Toshiba High-efficiency multiplier and multiplying method
US6460064B1 (en) 1998-11-02 2002-10-01 Hyundai Electronics Industries Co. Ltd. Multiplier for operating n bits and n/2 bits and method therefor
US20130138711A1 (en) 2011-11-29 2013-05-30 Junji Sugisawa Shared integer, floating point, polynomial, and vector multiplier

Also Published As

Publication number Publication date
US10061559B2 (en) 2018-08-28
US20170068518A1 (en) 2017-03-09
KR20170030327A (ko) 2017-03-17

Similar Documents

Publication Publication Date Title
KR101173405B1 (ko) 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
US9813224B2 (en) Digital processor having instruction set with complex angle function
US11256476B2 (en) Multiple mode arithmetic circuit
Lang et al. A radix-10 combinational multiplier
JP5666649B2 (ja) 級数展開を使用する超越的及び非直線的コンポーネント
US20140067889A1 (en) Datapath circuit for digital signal processors
CN109634558B (zh) 可编程的混合精度运算单元
CN107305484B (zh) 一种非线性函数运算装置及方法
CN105335127A (zh) Gpdsp中支持浮点除法的标量运算单元结构
Kanhe et al. Design and implementation of floating point multiplier based on vedic multiplication technique
KR102591638B1 (ko) 3-경로 단일 곱셈-누산기 설계를 위한 고속 근경로 솔루션
Al-Khaleel et al. Fast and compact binary-to-BCD conversion circuits for decimal multiplication
JP2012528391A (ja) 飽和を伴う整数乗算および乗算加算演算
JP4273071B2 (ja) 除算・開平演算器
KR102338863B1 (ko) 연산을 제어하기 위한 장치 및 방법
Liddicoat et al. High-performance floating point divide
JP4482052B2 (ja) 演算装置および演算方法
KR101073343B1 (ko) 개선된 감소 트리 회로를 갖는 부스 곱셈기
US8924447B2 (en) Double precision approximation of a single precision operation
TW202219839A (zh) 神經網絡處理單元及系統
CN110506255B (zh) 节能型可变功率加法器及其使用方法
JP6604393B2 (ja) ベクトルプロセッサ、演算実行方法、プログラム
CN114385112A (zh) 处理模数乘法的装置及方法
Gonzalez-Navarro et al. A binary integer decimal-based multiplier for decimal floating-point arithmetic
Chang et al. Fixed-point computing element design for transcendental functions and primary operations in speech processing

Legal Events

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