KR20170138143A - 단일 곱셈-누산 방법 및 장치 - Google Patents

단일 곱셈-누산 방법 및 장치 Download PDF

Info

Publication number
KR20170138143A
KR20170138143A KR1020160070144A KR20160070144A KR20170138143A KR 20170138143 A KR20170138143 A KR 20170138143A KR 1020160070144 A KR1020160070144 A KR 1020160070144A KR 20160070144 A KR20160070144 A KR 20160070144A KR 20170138143 A KR20170138143 A KR 20170138143A
Authority
KR
South Korea
Prior art keywords
floating point
bits
mode
exponent
basic
Prior art date
Application number
KR1020160070144A
Other languages
English (en)
Other versions
KR102481418B1 (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 KR1020160070144A priority Critical patent/KR102481418B1/ko
Publication of KR20170138143A publication Critical patent/KR20170138143A/ko
Application granted granted Critical
Publication of KR102481418B1 publication Critical patent/KR102481418B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying

Abstract

단일 곱셈-누산 방법 및 장치가 제공된다. 단일 곱셈-누산 방법 및 장치는 가중된 두 단계 부스 알고리즘 및 프록시 비트를 이용하여 부동 소수점 연산을 수행한다. 단일 곱셈-누산 방법 및 장치는 제1 부동 소수점 및 제2 부동 소수점을 곱함으로써 곱셈 결과를 생성하고, 곱셈 결과에 제3 부동 소수점을 더함으로써 덧셈 결과를 생성한다. 덧셈 결과에 기반하여 최종 결과가 생성된다.

Description

단일 곱셈-누산 방법 및 장치{METHOD AND APPARATUS FOR FUSED MULTIPLY-ADD}
기술 분야는 단일 곱셈-누산 방법 및 장치에 관한 것으로, 보다 상세하게는 부동 소수점 연산에 관한 것이다.
복잡하고 정밀한 부동 소수점 연산을 위해 부동 소수점 유닛(floating-point unit; FPU)이 개발되고 있다. FPU는 산술 정수 유닛 보다 더 커지고, 더 복잡해지고, 더 파워를 소모한다. FPU는 통신, 멀티미디어, 및 그래픽과 같은 다양한 분야에서 이용된다. 최근 FPU는 고 성능이 요구되는 서버 프로세서뿐만 아니라, 저-비용 및 저-전력 소모가 요구되는 모바일 단말에도 이용되고 있다. 고-성능과 함께 저-전력을 소비하는 FPU가 개발되고 있다.
한국공개특허 제10-2014-0056080(공개일 2014년 05월 09일)에는 입력 데이터 값에 따른 결합형 곱셈-덧셈(fused multiply-add; FMA) 유닛의 전력 소모 절감 방법이 개시되어 있다. 공개 발명의 FMA 회로는 다수의 입력 데이터 값들을 수신하여 그 입력 데이터 값들에 대해 FMA 명령어를 수행하도록 구성된다. 이 회로는 곱셈기 유닛 및 곱셈기 유닛의 출력에 결합된 가산기 유닛과, 입력 데이터 값들을 수신하고 스위칭 동작을 줄여 주어 입력 데이터 값들 중 하나 이상의 값들에 따라서 회로의 하나 이상의 컴포넌트들의 전력 소비를 줄여주는 제어 로직을 포함한다.
일 실시예는 단일 곱셈-누산 방법 및 장치를 제공할 수 있다.
일 실시예는 부동 소수점 연산을 수행하는 단일 곱셈-누산 방법 및 장치를 제공할 수 있다.
일 측면에 따른, 단일 곱셈-누산 방법은, 가중된 두 단계 부스 알고리즘(weighted two-level booth algorithm)을 이용하여 제1 부동 소수점의 지수 및 제2 부동 소수점의 지수가 서로 대응하도록, 상기 제1 부동 소수점 및 상기 제2 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계, 상기 제1 부동 소수점의 기본 지수, 상기 제2 부동 소수점의 기본 지수 및 제3 부동 소수점의 기본 지수에 기반하여, 미리 설정된 복수의 모드들 중 상기 제1 부동 소수점의 가수 및 상기 제2 부동 소수점의 가수를 곱한 곱셈 결과에 상기 제3 부동 소수점의 가수를 더하는 모드를 결정하는 단계, 상기 곱셈 결과를 생성하는 단계, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 덧셈 결과를 생성하는 단계, 상기 결정된 모드에 기반하여 상기 덧셈 결과 내에 두 개의 프록시(proxy) 비트들을 정의하는 단계, 상기 두 개의 프록시 비트들에 기반하여 두 개의 스티키(sticky) 비트들을 각각 계산하는 단계, 및 상기 스티키 비트들에 기반하여 상기 덧셈 결과를 반올림함으로써 최종 결과를 생성하는 단계를 포함한다.
상기 미리 설정된 복수의 모드들 중 상기 모드를 결정하는 단계는, 상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계를 포함할 수 있다.
상기 미리 설정된 복수의 모드들은 4개의 모드들일 수 있다.
상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 56이상인 경우 제1 모드로 결정하는 단계를 포함할 수 있다.
상기 덧셈 결과를 생성하는 단계는, 상기 모드가 제1 모드로 결정된 경우, 상기 제3 부동 소수점의 가수의 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는 단계를 포함할 수 있다.
상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 0 이상이고, 56미만인 경우 제2 모드로 결정하는 단계를 포함할 수 있다.
상기 덧셈 결과를 생성하는 단계는, 상기 모드가 제2 모드로 결정된 경우, 상기 곱셈 결과 및 제3 부동 소수점의 가수를 더한 결과 중 상위 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는 단계를 포함할 수 있다.
상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57을 초과하고, 0 이하인 경우 제3 모드로 결정하는 단계를 포함할 수 있다.
상기 덧셈 결과를 생성하는 단계는, 상기 모드가 제3 모드로 결정된 경우, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 상기 덧셈 결과를 생성하는 단계를 포함할 수 있다.
상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57이하인 경우 제4 모드로 결정하는 단계를 포함할 수 있다.
상기 덧셈 결과를 생성하는 단계는, 상기 모드가 제4 모드로 결정된 경우, 상기 곱셈 결과의 상위 54 비트들을 상기 덧셈 결과의 상위 54 비트들로 생성하는 단계를 포함할 수 있다.
상기 두 개의 프록시 비트들을 정의하는 단계는, 상기 덧셈 결과의 라운드 비트의 오른쪽 첫 번째 비트 및 오른쪽 두 번째 비트를 상기 두 개의 프록시 비트들로 정의하는 단계를 포함할 수 있다.
상기 두 개의 스티키 비트들을 각각 계산하는 단계는, 상기 두 개의 프록시 비트들을 논리 오어 연산(logical OR operation)함으로써 제1 스티키 비트를 계산하는 단계, 및 상기 곱셈 결과와 상기 제3 부동 소수점의 가수를 더한 결과 중 상기 덧셈 결과에 영향을 미치지 않는 비트들에 기반하여 제2 스티키 비트를 계산하는 단계를 포함할 수 있다.
상기 가중된 두 단계 부스 알고리즘을 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계는, 기본 지수에 적용된 제1 부스 인코딩 단위보다 더 낮은 제2 부스 인코딩 단위를 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계를 포함할 수 있다.
다른 일 측면에 따른, 단일 곱셈-누산 장치는, 가중된 두 단계 부스 알고리즘(weighted two-level booth algorithm)을 이용하여 제1 부동 소수점의 지수 및 제2 부동 소수점의 지수가 서로 대응하도록 상기 제1 부동 소수점 및 상기 제2 부동 소수점 중 적어도 하나의 기본 지수를 조정하고, 상기 제1 부동 소수점의 기본 지수, 상기 제2 부동 소수점의 기본 지수 및 제3 부동 소수점의 기본 지수에 기반하여 미리 설정된 복수의 모드들 중 상기 제1 부동 소수점의 가수 및 상기 제2 부동 소수점의 가수를 곱한 곱셈 결과에 상기 제3 부동 소수점의 가수를 더하는 모드를 결정하고, 상기 곱셈 결과를 생성하고, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 덧셈 결과를 생성하고, 상기 결정된 모드에 기반하여 상기 덧셈 결과 내에 두 개의 프록시(proxy) 비트들을 정의하고, 상기 두 개의 프록시 비트들에 기반하여 두 개의 스티키(sticky) 비트들을 각각 계산하고, 상기 스티키 비트들에 기반하여 상기 덧셈 결과를 반올림함으로써 최종 결과를 생성하는, 처리부; 및 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점을 저장하는 메모리를 포함한다.
상기 처리부는, 상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정할 수 있다.
상기 미리 설정된 복수의 모드들은 4개의 모드들일 수 있다.
상기 처리부는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 56이상인 경우 제1 모드로 결정하고, 상기 모드가 제1 모드로 결정된 경우 상기 제3 부동 소수점의 가수의 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성할 수 있다.
상기 처리부는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 0 이상이고, 56미만인 경우 제2 모드로 결정하고, 상기 모드가 제2 모드로 결정된 경우, 상기 곱셈 결과 및 제3 부동 소수점의 가수를 더한 결과 중 상위 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성할 수 있다.
상기 처리부는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57을 초과하고, 0 이하인 경우 제3 모드로 결정하고, 상기 모드가 제3 모드로 결정된 경우, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 상기 덧셈 결과를 생성할 수 있다.
상기 처리부는, 상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57이하인 경우 제4 모드로 결정하고, 상기 모드가 제4 모드로 결정된 경우, 상기 곱셈 결과의 상위 54 비트들을 상기 덧셈 결과의 상위 54 비트들로 생성할 수 있다.
상기 처리부는, 상기 덧셈 결과의 라운드 비트의 오른쪽 첫 번째 비트 및 오른쪽 두 번째 비트를 상기 두 개의 프록시 비트들로 정의할 수 있다.
상기 처리부는, 상기 두 개의 프록시 비트들을 논리 오어 연산(logical OR operation)함으로써 제1 스티키 비트를 계산하고, 상기 곱셈 결과와 상기 제3 부동 소수점의 가수를 더한 결과 중 상기 덧셈 결과에 영향을 미치지 않는 비트들에 기반하여 제2 스티키 비트를 계산할 수 있다.
상기 처리부는, 기본 지수에 적용된 제1 부스 인코딩 단위보다 더 낮은 제2 부스 인코딩 단위를 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정할 수 있다.
단일 곱셈-누산 방법 및 장치가 제공된다.
부동 소수점 연산을 수행하는 단일 곱셈-누산 방법 및 장치가 제공된다.
도 1은 일 실시예에 따른 단일 곱셈-누산 장치의 구성도이다.
도 2는 일 실시예에 따른 단일 곱셈-누산 방법의 흐름도이다.
도 3은 일 예에 따른 부동 소수점을 나타내는 형식을 도시한다.
도 4는 일 예에 따른 두 단계 부스 알고리즘의 동작을 개략적으로 보여주는 구성도이다
도 5는 일 예에 따른 모드를 결정하는 방법의 흐름도이다.
도 6은 일 예에 따른 제1 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
도 7은 일 예에 따른 제2 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
도 8은 일 예에 따른 제3 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
도 9는 일 예에 따른 제4 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
도 10은 일 예에 따른 처리부의 아키텍쳐이다.
도 11은 일 예에 따른 단일 곱셈-누산 장치를 이용한 실험 결과를 도시한다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
부동 소수점 유닛(floating-point unit; FPU)은 단일 곱셈-누산(Fused Multiply-Add; FMA) 장치일 수 있다. FMA 장치는 부동 소수점(floating-point) 연산(operation)을 수행하기 위해 곱셈(multiplication) 연산 이후에 덧셈(addition) 연산을 연속적으로 수행한다. 예를 들어, FMA 장치는 아래의 [수학식 1] 연산을 하나의 명령(instruction)으로 수행한다. A, B 및 C는 각각 제1 부동 소수점, 제2 부동 소수점 및 제3 부동 소수점이고, F는 연산의 결과이다.
Figure pat00001
A와 B의 곱셈 연산이 수행된 뒤, 곱셈 결과와 C의 덧셈 연산이 연속적으로 수행된다. 곱셈 연산 및 덧셈 연산을 하나의 명령으로 수행하는 경우, 1) 한번의 반올림(rounding) 및 정규화(normalization)만이 요구되므로 성능(performance) 및 정확성(accuracy)이 향상되고, 2) 복수의 연산자에 따른 복수의 연산들이 수행되고, 3) 기능 모듈들을 공유함으로써 장치의 크기가 감소하는 장점이 있다.
모바일 단말들의 사용이 증가하면서, 데이터 처리를 위해 이용되는 리소스를 감소시키는 것이 요구된다. 특히, 저-비용(low-cost) 및 효율적인 파워의 관리가 요구된다.
부동 소수점 연산은 반올림에 의해 작은 에러들(tiny errors)이 항상 발생한다. 이러한 에러들은 실제 결과를 변화시키기 않는다. 예를 들어, 계산되는 두 수의 지수의 크기 차이가 큰 경우 정확도의 손실과는 상관 없이 계산 결과 중 일부에 대규모 삭제(massive cacellation)가 발생한다. 대규모 삭제가 발생한 부분은 일반적으로 제로(zero)들로 채워진다. 대규모 삭제를 수행하기 위해 FMA 장치는 추가의 리소스를 사용해야 한다. 이러한 불필요한 연산을 감소시키기 위해 프록시 비트(proxy bit)가 이용될 수 있다. 프록시 비트를 이용하는 경우, 불필요한 비트들에 대한 프로세스를 감소시킬 수 있다.
아래의 도 1 내지 도 10을 참조하여, 프록시 비트를 이용하는 FMA 장치(100)에 대해 상세히 설명된다.
도 1은 일 실시예에 따른 단일 곱셈-누산 장치의 구성도이다.
FMA 장치(100)는 통신부(110), 처리부(120) 및 메모리(130)를 포함한다.
통신부(110)는 FMA 장치(100)와 연결된 다른 장치들과 데이터를 교환한다. 예를 들어, FMA 장치(100)는 단말의 중앙 처리 장치(Central Processing Unit; CPU)와 데이터를 교환할 수 있다.
처리부(120)는 통신부(110)가 수신한 데이터 및 메모리(130)에 저장된 데이터를 처리할 수 있다.
메모리(130)는 통신부(110)가 수신한 데이터 및 처리부(120)가 처리한 데이터를 저장할 수 있다. 예를 들어, 메모리(130)는 휘발성 메모리 일 수 있다. 다른 예로, 메모리(130)는 비-휘발성 메모리일 수 있다.
도 2 내지 도 10을 참조하여 통신부(110), 처리부(120) 및 메모리(130)에 대해 상세히 설명된다.
도 2는 일 실시예에 따른 단일 곱셈-누산 방법의 흐름도이다.
단계(210)가 수행되기 전에 처리부(120)는 메모리(130)로부터 처리될 데이터를 수신할 수 있다. 예를 들어, 처리부(120)는 제1 부동 소수점, 제2 부동 소수점 및 제3 부동 소수점을 수신할 수 있다. 예를 들어, 제1 부동 소수점은 전술된 A에 대응하고, 제2 부동 소수점은 전술된 B에 대응하고, 제3 부동 소수점은 전술된 C에 대응할 수 있다.
단계(210)에서, 처리부(120)는 제1 부동 소수점의 지수(exponent) 및 제2 부동 소수점의 지수가 서로 대응하도록, 제1 부동 소수점 및 제2 부동 소수점 중 적어도 하나의 기본 지수(original exponent)를 조정할 수 있다. 여기서, 기본 지수는 지수를 조정하기 전의 지수를 의미한다.
제1 부동 소수점의 기본 지수 및 제2 부동 소수점의 기본 지수는 서로 상이할 수 있다. 부동 소수점의 기본 지수를 조정함으로써 기본 가수(original significand)도 조정될 수 있다.
예를 들어, 처리부(120)는 가중된 두 단계 부스 알고리즘(weighted two-level booth algorithm)을 이용하여 제1 부동 소수점의 지수 및 제2 부동 소수점의 지수가 서로 대응하도록, 제1 부동 소수점 및 제2 부동 소수점 중 적어도 하나의 기본 지수를 조정할 수 있다. 가중된 두 단계 부스 알고리즘에 대해, 아래에서 도 4를 참조하여 상세히 설명된다.
단계(220)에서, 처리부(120)는 제1 부동 소수점의 기본 지수, 제2 부동 소수점의 기본 지수 및 제3 부동 소수점의 기본 지수에 기반하여, 미리 설정된 복수의 모드들 중 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱한 곱셈 결과에 제3 부동 소수점의 가수를 더하는 모드를 결정할 수 있다. 예를 들어, 미리 설정된 복수의 모드들은 4개일 수 있다. 모드를 결정하는 방법은 아래에서 도 5를 참조하여 상세히 설명된다.
단계(210)가 수행된 후, 단계(220)가 수행되는 것으로 도 2에서 도시되었으나, 단계(220)는 전술된 단계(210)과 병렬적으로 수행될 수 있다.
단계(230)에서, 처리부(120)는 중 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱함으로써 곱셈 결과를 생성할 수 있다. 제1 부동 소수점의 조정된 가수 및 제2 부동 소수점의 조정된 가수가 이용될 수 있다. 곱셈 결과에 대해, 아래에서 도 6 내지 도 9를 참조하여 상세히 설명된다.
단계(240)에서, 처리부(120)는 곱셈 결과에 제3 부동 소수점의 가수를 더함으로써 덧셈 결과를 생성할 수 있다. 처리부(120)는 곱셈 결과와 제3 부동 소수점의 가수를 더하기 위해, 제3 부동 소수점의 가수를 비트 정렬 쉬프터(bit align shifter)를 이용하여 곱셈 결과와 정렬할 수 있다. 결정된 모드에 따라 제3 부동 소수점의 정렬된 가수가 아래에서 도 7 내지 도 9를 참조하여 상세히 설명된다.
단계(250)에서, 처리부(120)는 덧셈 결과 내에 두 개의 프록시(proxy) 비트들을 정의할 수 있다. 두 개의 프록시 비트들은 두 개의 스티키 비트(sticky bit)들을 계산하기 위해 이용될 수 있다. 예를 들어, 두 개의 프록시 비트들은 덧셈 결과의 라운드 비트(round bit)의 오른쪽 첫 번째 비트 및 오른쪽 두 번째 비트일 수 있다. 라운드 비트의 위치는 전술된 단계(220)에서 결정된 모드에 따라 각각 다르게 결정될 수 있다.
단계(260)에서, 처리부(120)는 두 개의 프록시 비트들에 기반하여 두 개의 스티키 비트들을 각각 계산할 수 있다. 예를 들어, 처리부(120)는 제1 스티키 비트 (S')및 제2 스티키 비트(S'')들 각각 계산할 수 있다. 제1 스티키 비트(S')는 두 개의 프록시 비트들을 이용하여 계산될 수 있다. 제2 스티키 비트(S'')는 곱셈 결과와 제3 부동 소수점의 가수를 더한 결과 중 덧셈 결과에 영향을 미치지 않는 비트들에 기반하여 계산될 수 있다. 덧셈 결과에 영향을 미치지 않는 비트들은 프록시 비트들의 오른쪽 비트들일 수 있다. 처리부(120)는 일반적인 처리와 병렬적으로 스티키 비트들을 계산할 수 있다. 즉, 덧셈 결과를 처리하는 파이프 라인(pipe line)과 스티키 비트들을 계산하는 파이프 라인이 각각 처리부(120) 내에 존재할 수 있다.
단계(270)에서, 처리부(120)는 스티키 비트들에 기반하여 덧셈 결과를 반올림 함으로써 최종 결과를 생성할 수 있다. 처리부(120)는 스티키 비트들에 기반하여 반올림 모드를 결정할 수 있다.
도 3은 일 예에 따른 부동 소수점을 나타내는 형식을 도시한다.
부동 소수점은 계산 장치에서 실수를 표시하는 방법으로, 소수점의 위치를 고정시키지 않으며 가수와 지수를 사용하여 실수를 표현한다. 가수는 유효숫자를 나타내며 지수는 소수점의 위치를 나타낸다.
부동 소수점에 대한 표준인 IEEE(Institute of Electrical and Electronics Engineers) 754에 따르면, 부동 소수점을 나타내는 형식은 크게 단정도(single-precision)와 배정도(double-precision)로 나뉜다. 비트들로 표현되는 부동 소수점(300)은 부호를 나타내는 부호 비트(301), 지수를 나타내는 지수 비트들(302) 및 가수를 나타내는 가수 비트들(303)을 포함한다. 기수(radix)는 2 또는 10일 수 있는데, IEEE 754의 배정도는 기수로 2를 이용한다.
단정도는 총 32 비트들을 이용하여 부동 소수점을 나타내며, 최상위 비트는 부호를 나타내고, 8 비트들은 지수를 나타내고, 나머지 하위 23 비트들은 가수를 나타낸다. 배정도는 총 64 비트들을 이용하여 부동 소수점을 나타내며, 최상위 비트는 부호를 나타내고, 11 비트들은 지수를 나타내고, 나머지 하위 52 비트들은 가수를 나타낸다.
도 4는 일 예에 따른 두 단계 부스 알고리즘의 동작을 개략적으로 보여주는 구성도이다
처리부(120)는 아래에서 설명되는 곱셈기(400)를 포함할 수 있다.
곱셈기(400)는 제1 선택부(410), 제2 선택부(420), 가산부(430) 및 부분곱 덧셈부(440)를 포함한다. 제1 선택부(410), 제2 선택부(420), 및 가산부(430)는 승수(multiplier)의 제1 부스 인코딩(Booth encoding) 단위를 이루는 비트들과 피승수(multiplicant)의 부분 곱(partial product)을 산출한다. 부분곱 덧셈부(440)는 제1 부스 인코딩 단위마다 산출된 부분 곱들을 가산하여 승수와 피승수의 최종적인 승산 값을 출력한다.
도 4의 실시 예에서, 승수의 제1 부스 인코딩 단위는 radix-16 부스 인코딩 단위이고, 제1 선택부(410)는 radix-16 부스 인코딩 단위를 이루는 다섯 개의 연속하는 비트들(xi+3, xi+2, xi+1, xi, xi-1) 중 하위의 세 개의 비트들(xi+1, xi, xi-1)에 기초하여, 제1 부스 인코딩 단위(radix-16 부스 인코딩 단위)보다 낮은 제2 부스 인코딩 단위(radix-4 부스 인코딩 단위)에 대응하는 피승수(X)의 5개의 제1 기본 부분 곱들(0, 1X, 2X, -1X, -2X) 중의 어느 하나를 선택한다.
제2 선택부(420)는 radix-16 부스 인코딩 단위를 이루는 다섯 개의 비트들(xi+3, xi+2, xi+1, xi, xi-1) 중 상위의 세 개의 비트들(xi+3, xi+2, xi+1)에 기초하여, 제1 부스 인코딩 단위(radix-16 부스 인코딩 단위)보다 낮은 제3 부스 인코딩 단위(radix-4 부스 인코딩 단위)에 대응하는 피승수(X)의 5개의 제2 기본 부분 곱들(0, 1X, 2X, -1X, -2X)에 대해 제2 부스 인코딩 단위(radix-4 부스 인코딩 단위)에 상응하는 가중치(×4)를 부여한 5개의 가중 부분 곱들(0X, 4X, 8X, -4X, -8X) 중의 어느 하나를 선택한다.
가산부(430)는 제1 선택부(410)에서 선택한 제1 기본 부분 곱(0, 1X, 2X, -1X 또는 -2X)과, 제2 선택부(420)에서 선택한 가중 부분 곱(0X, 4X, 8X, -4X 또는 -8X)을 가산하여, 제1 부스 인코딩 단위(radix-16 부스 인코딩 단위)별로 부분 곱을 산출한다. 부분곱 덧셈부(440)는 제1 부스 인코딩 단위(radix-16 부스 인코딩 단위)별로 산출된 부분 곱들을 모두 가산하여, 승수와 피승수의 승산 값을 출력한다.
예를 들어, 승수가 64비트(x63, x62,.., x0)로 이루어진 경우, 제1 선택부(410), 제2 선택부(420), 및 가산부(430)는 radix-16 부스 인코딩 단위에 상응하는 5개의 비트(x4k +3, x4k +2, x4k +1, x4k, x4k - 1)(k = 0, 1, 2,.., 15)(x-1= 0)마다 부분 곱을 산출할 수 있다. 부분곱 덧셈부(440)는 16개의 부분 곱들을 모두 더하여 최종적으로 승수와 피승수의 승산 값을 산출할 수 있다.
radix-16 부스 인코딩 단위보다 낮은 radix-4 부스 인코딩 단위의 부스 알고리즘을 이용한 피승수의 인코드 값(기본 부분곱)과, radix-16 부스 인코딩 단위보다 낮은 radix-4 부스 인코딩 단위의 부스 알고리즘을 이용한 피승수의 인코드 값에 가중치를 적용한 가중 인코드 값(가중 부분곱)을 가산하여 얻은 인코드 값(2단 부분곱)은 radix-16 부스 인코딩 단위의 부스 알고리즘을 이용하여 얻은 피승수의 인코드 값(부분곱)과 동일하다.
승수의 임의의 비트들에 대한 오퍼레이션 정의(operation definition)과, Radix-4, Radix-8, Radix-16 각각에 대한 정의는 아래의 [수학식 2] 내지 [수학식 5]와 같이 나타낼 수 있다. n은 2n+1 기본 기수를 나타내고, k는 인코딩 비트들의 개수를 나타낸다.
Figure pat00002
Figure pat00003
Figure pat00004
Figure pat00005
위의 [수학식 1] 내지 [수학식 5]와 아래의 [수학식 6]을 이용하면, 아래의 [수학식 7]의 관계가 성립한다.
Figure pat00006
Figure pat00007
[수학식 7]를 이용하면, 낮은 기수 단위의 가중된 두 단계 부스 알고리즘을 적용하여 높은 기수 단위로 피승수의 인코드 값을 얻을 수 있다.
예를 들어, 처리부(120)는 기본 지수에 적용된 제1 부스 인코딩 단위보다 더 낮은 제2 부스 인코딩 단위를 이용하여 제1 부동 소수점, 제2 부동 소수점 및 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정할 수 있다.
도 5는 일 예에 따른 모드를 결정하는 방법의 흐름도이다.
전술된 단계(220)는 아래의 단계들(510 내지 560)을 포함할 수 있다.
단계(510)에서, 처리부(120)는 제3 부동 소수점의 기본 지수에서 제1 부동 소수점의 기본 지수 및 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값을 아래의 [수학식 8]을 이용하여 계산할 수 있다. Aexp는 제1 부동 소수점의 기본 지수이고, Bexp는 제2 부동 소수점의 기본 지수이고, Cexp는 제3 부동 소수점의 기본 지수이다.
Figure pat00008
단계(520)에서, 처리부(120)는 단계(510)에서 계산된 차이 값에 기반하여 미리 설정된 복수의 모드들 중 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱한 곱셈 결과에 제3 부동 소수점의 가수를 더하는 모드를 결정할 수 있다. 예를 들어, 배정도에서 미리 설정된 복수의 모드들은 4개의 모드들일 수 있다. 다른 예로, 단정도에서 미리 설정된 복수의 모드들은 4개의 모드들일 수 있다. 이하의 설명은 배정도에 적용되는 실시 예들에 관한 것이나, 개시되는 실시 예는 단정도에도 적용될 수 있다.
일 측면에 따르면, 계산된 차이 값이 56 이상인 경우 모드가 제1 모드(530)로 결정될 수 있다. 계산된 차이 값이 0 이상 및 56 미만인 경우 모드가 제2 모드(540)로 결정될 수 있다. 계산된 차이 값이 -57 초과 및 0 이하인 경우 모드가 제3 모드(550)로 결정될 수 있다. 계산된 차이 값이 -57 이하인 경우 모드가 제4 모드(560)로 결정될 수 있다.
도 6은 일 예에 따른 제1 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
전술된 단계(230)에서, 처리부(120)는 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱할 수 있다. 예를 들어, 배정도인 경우, 처리부(120)는 제1 부동 소수점의 1 개의 부호 비트 및 53 개의 가수 비트들과 제2 부동 소수점의 1 개의 부호 비트 및 53 개의 가수 비트들에 기반하여 곱셈 결과(600)를 생성할 수 있다.
전술된 단계(240)에서, 처리부(120)는 제3 부동 소수점의 가수(610)와 곱셈 결과(600)를 더할 수 있다. 모드가 제1 모드로 결정된 경우, 곱셈 결과(600)는 제3 부동 소수점의 가수(610)에 비하면 무시할 만한 크기일 수 있다. 제3 부동 소수점의 가수(610)의 53 비트들을 덧셈 결과의 상위 53 비트들로 생성될 수 있다. 곱셈 결과(600)의 최상위 비트는 덧셈 결과의 라운드 비트로 설정되고, 라운드 비트의 오른쪽 첫 번째 비트 및 두 번째 비트는 프록시 비트로 정의(전술된 단계(250))될 수 있다. 나머지 105개의 비트들은 불필요한(redundant) 비트들로 정의될 수 있다.
최종적으로 생성되는 덧셈 결과는 기존의 제3 부동 소수점의 가수(610)의 53 비트들에 라운드 비트 및 프록시 비트들이 추가된 총 56 비트들일 수 있다. 즉, 불필요한 비트들은 덧셈 결과에 반영되지 않을 수 있다. 불필요한 비트들이 무시되므로 불필요한 비트들을 연산하기 위한 리소스 및 처리 시간이 감소할 수 있다.
전술된 단계(260)에서, 처리부(120)는 두 개의 프록시 비트들을 논리 오어 연산(logical OR operation)함으로써 제1 스티키 비트(S')를 계산할 수 있다. 처리부(120)는 곱셈 결과(600)의 하위 105 비트들을 이용하여 제2 스티키 비트(S'')를 계산할 수 있다.
도 7은 일 예에 따른 제2 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
전술된 단계(230)에서, 처리부(120)는 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱함으로써 곱셈 결과(700)를 생성할 수 있다.
전술된 단계(240)에서, 처리부(120)는 제3 부동 소수점의 가수(710)와 곱셈 결과(700)를 더할 수 있다. 모드가 제2 모드로 결정된 경우, 제3 부동 소수점의 가수(710)는 곱셈 결과(700)와의 덧셈 연산을 위해 위치가 조정(aligned)될 수 있다. 처리부(120)는 비트 조정 쉬프터를 이용하여 제3 부동 소수점의 가수(710)의 위치를 조정할 수 있다. 예를 들어, 비트 조정 쉬프터는 161 비트 조정 쉬프터일 수 있다.
상기 모드가 제2 모드로 결정된 경우, 곱셈 결과(700) 및 제3 부동 소수점의 가수(710)를 더한 결과 중 상위 53 비트들을 덧셈 결과의 상위 53 비트로 생성할 수 있다. 곱셈 결과(700)의 일부 하위 비트들은 제3 부동 소수점의 가수(710)에 비하면 무시할 만한 크기일 수 있다. 곱셈 결과(700)의 일부 하위 비트들 중 덧셈 결과에 영향을 미치지 않는 최상위 비트가 라운드 비트로 설정되고, 라운드 비트의 오른쪽 두 비트들이 프록시 비트들로 정의(전술된 단계(250))될 수 있다. 프록시 비트들의 오른쪽 비트들은 불필요한 비트들로 정의될 수 있다.
최종적으로 생성되는 덧셈 결과는 기존의 제3 부동 소수점의 가수(710)와 곱셈 결과(700)에서 덧셈 결과에 영향을 주는 비트들을 더한 53 비트들과 1 개의 라운드 비트 및 2 개의 프록시 비트들을 포함하는 총 56 비트들일 수 있다. 곱셈 결과(700)의 불필요한 비트들이 연산되지 않으므로 리소스 및 처리 시간이 감소될 수 있다.
전술된 단계(260)에서, 처리부(120)는 두 개의 프록시 비트들을 논리 오어 연산함으로써 제1 스티키 비트(S')를 계산할 수 있다. 처리부(120)는 곱셈 결과(700)의 불필요한 비트들을 이용하여 제2 스티키 비트(S'')를 계산할 수 있다.
도 8은 일 예에 따른 제3 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
전술된 단계(230)에서, 처리부(120)는 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱함으로써 곱셈 결과(800)를 생성할 수 있다.
전술된 단계(240)에서, 처리부(120)는 제3 부동 소수점의 가수(810)와 곱셈 결과(800)를 더할 수 있다. 모드가 제3 모드로 결정된 경우, 제3 부동 소수점의 가수(810)는 곱셈 결과(800)와의 덧셈 연산을 위해 위치가 조정될 수 있다. 기존의 53 비트들에 추가로 부호 확장 비트들(812)이 제3 부동 소수점의 가수(810)에 추가될 수 있다.
모드가 제3 모드로 결정된 경우, 제3 부동 소수점의 가수(810)의 모든 비트들과 곱셈 결과(800)의 모든 비트들은 덧셈 결과에 영향을 미칠 수 있다. 덧셈 결과를 생성하기 위해, 제3 부동 소수점의 가수(810)와 곱셈 결과(800)를 더한 결과 중 상위 54 비트들을 선택하고, 55 번째 비트는 라운드 비트로 설정하고, 라운드 비트의 오른쪽 두 비트들은 프록시 비트들로 정의될 수 있다. 생성되는 덧셈 결과는 총 57 비트들일 수 있다.
단정도의 계산인 경우, 덧셈 결과를 생성하기 위해, 제3 부동 소수점의 가수와 곱셈 결과를 더한 결과 중 상위 24 비트들을 선택하고, 25 번째 비트는 라운드 비트로 설정하고, 라운드 비트의 오른쪽 두 비트들은 프록시 비트들로 정의될 수 있다. 생성되는 덧셈 결과는 총 27 비트들일 수 있다.
전술된 단계(260)에서, 처리부(120)는 두 개의 프록시 비트들을 논리 오어 연산함으로써 제1 스티키 비트(S')를 계산할 수 있다. 처리부(120)는 제3 부동 소수점의 가수(810)와 곱셈 결과(800)를 더한 결과의 58 번째 비트 내지 최하위 비트를 이용하여 제2 스티키 비트(S'')를 계산할 수 있다. 캐리 전파(carry propagation)가 선행 제로 예측기(leading zero anticipator; LZA)에 의해 검출될 수 있다.
도 9는 일 예에 따른 제4 모드에 기반하여 덧셈 결과를 생성하는 방법을 도시한다.
전술된 단계(230)에서, 처리부(120)는 제1 부동 소수점의 가수 및 제2 부동 소수점의 가수를 곱함으로써 곱셈 결과(900)를 생성할 수 있다.
전술된 단계(240)에서, 처리부(120)는 제3 부동 소수점의 가수(910)와 곱셈 결과(900)를 더할 수 있다. 모드가 제4 모드로 결정된 경우, 제3 부동 소수점의 가수(910)는 곱셈 결과(900)와의 덧셈 연산을 위해 위치가 조정될 수 있다.
모드가 제4 모드로 결정된 경우, 제3 부동 소수점의 가수(910)는 덧셈 결과에 영향을 미치지 않을 수 있다. 곱셈 결과(900)의 상위 54 비트들이 덧셈 결과의 상위 54 비트들로 생성될 수 있다. 덧셈 결과는 곱셈 결과(900)의 상위 54 비트들, 55 번째의 라운드 비트 및 라운드 비트의 오른쪽 두 개의 비트들을 포함할 수 있다. 생성되는 덧셈 결과는 총 57 비트들일 수 있다.
단정도의 계산인 경우, 곱셈 결과의 상위 24 비트들이 덧셈 결과의 상위 24 비트들로 생성될 수 있다. 덧셈 결과는 곱셈 결과의 상위 24 비트들, 25 번째의 라운드 비트 및 라운드 비트의 오른쪽 두 개의 비트들을 포함할 수 있다. 생성되는 덧셈 결과는 총 27 비트들일 수 있다.
전술된 단계(260)에서, 처리부(120)는 두 개의 프록시 비트들을 논리 오어 연산함으로써 제1 스티키 비트(S')를 계산할 수 있다. 처리부(120)는 제3 부동 소수점의 가수(910)와 곱셈 결과(900)를 더한 결과의 58 번째 비트 내지 최하위 비트를 이용하여 제2 스티키 비트(S'')를 계산할 수 있다. 캐리 전파가 LZA에 의해 검출될 수 있다.
도 10은 일 예에 따른 처리부의 아키텍쳐이다.
처리부(120)는 메모리(130)로부터 제1 부동 소수점(A), 제2 부동 소수점(B) 및 제3 부동 소수점(C)를 수신할 수 있다. 처리부(120)는 부스 인코더를 이용하여 부스 인코딩을 수행하고, 자리 올림 보류 가산기(carry-save adder; CSA)를 이용하여 제1 부동 소수점(A) 및 제2 부동 소수점(B)의 곱셈 결과를 생성할 수 있다.
처리부(120)는 곱셈 결과를 생성하는 것과 병렬적으로, 161-비트 정렬 쉬프터를 이용하여 제3 부동 소수점(C)의 가수의 위치를 정렬할 수 있다.
처리부(120)는 제1 부동 소수점(A), 제2 부동 소수점(B) 및 제3 부동 소수점(C)의 지수들에 기반하여 모드를 결정하고, 결정된 모드에 따라 곱셈 결과에 제3 부동 소수점(C)의 가수를 더할 수 있다.
처리부(120)는 덧셈 결과에 대해 정규화를 수행할 수 있고, 라운드 비트를 설정하고, 프록시 비트들을 정의할 수 있다. 처리부(120)는 정규화된 덧셈 결과를 스티키 비트들에 기반하여 반올림함으로써 최종 결과를 생성할 수 있다.
case (a), case (b), case (c) 및 case (d)는 전술된 제1 모드, 제2 모드, 제3 모드 및 제4 모드에 각각 대응할 수 있다.
도 11은 일 예에 따른 단일 곱셈-누산 장치를 이용한 실험 결과를 도시한다.
실험을 위해 제안된 FMA 장치와 랭(Lang)의 FMA 장치가 비교된다. 양쪽 모두 RTL(register-transfer level)에서 Verilog HDL을 이용하고, NC-Verilog로 시뮬레이션되었다. 제안된 FMA 장치는 i) 가중된 두 단계 부스 알고리즘(W2LB)을 이용한 버전, ii) 프록시 비트를 이용한 버전, 및 iii) W2LB 및 프록시 비트를 이용한 버전이 각각 이용되었다. 랭의 FMA 장치는 비교를 위한 참고(Ref)로 이용되었다.
도 11의 세로 축은 영역-딜레이(area-delay; AD) 생산을 나타낸다. AD 생산은 논리 블록의 효율성과 관련이 있고, 전력-딜레이(power-delay; PD) 생산과 비례한다. 일반적으로 논리 블록 내의 영역 증가는 래이턴시 감소(latency reduction)를 유발하고, 전력 소비를 증가시킨다. 낮은 AD 생산은 더 효율적인 영역 및 전력 소비를 나타낸다.
도 11에 따르면, 제안된 FMA 장치의 세가지 버전이 각각 랭의 FMA 장치에 비해 낮은 AD 생산을 나타내는 것을 알 수 있다. 즉, 제안된 FMA 장치는 기존의 FMA 장치에 비해 효율적이고, 낮은 전력 소비한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
100: 단일 곱셈-누산 장치
110: 통신부
120: 처리부
130: 메모리

Claims (20)

  1. 가중된 두 단계 부스 알고리즘(weighted two-level booth algorithm)을 이용하여 제1 부동 소수점의 지수 및 제2 부동 소수점의 지수가 서로 대응하도록, 상기 제1 부동 소수점 및 상기 제2 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계;
    상기 제1 부동 소수점의 기본 지수, 상기 제2 부동 소수점의 기본 지수 및 제3 부동 소수점의 기본 지수에 기반하여, 미리 설정된 복수의 모드들 중 상기 제1 부동 소수점의 가수 및 상기 제2 부동 소수점의 가수를 곱한 곱셈 결과에 상기 제3 부동 소수점의 가수를 더하는 모드를 결정하는 단계;
    상기 곱셈 결과를 생성하는 단계;
    상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 덧셈 결과를 생성하는 단계;
    상기 결정된 모드에 기반하여 상기 덧셈 결과 내에 두 개의 프록시(proxy) 비트들을 정의하는 단계;
    상기 두 개의 프록시 비트들에 기반하여 두 개의 스티키(sticky) 비트들을 각각 계산하는 단계; 및
    상기 스티키 비트들에 기반하여 상기 덧셈 결과를 반올림함으로써 최종 결과를 생성하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  2. 제1항에 있어서,
    상기 미리 설정된 복수의 모드들 중 상기 모드를 결정하는 단계는,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  3. 제2항에 있어서,
    상기 미리 설정된 복수의 모드들은 4개의 모드들인,
    단일 곱셈-누산 방법.
  4. 제2항에 있어서,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 56이상인 경우 제1 모드로 결정하는 단계
    를 포함하고,
    상기 덧셈 결과를 생성하는 단계는,
    상기 모드가 제1 모드로 결정된 경우, 상기 제3 부동 소수점의 가수의 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  5. 제2항에 있어서,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 0 이상이고, 56미만인 경우 제2 모드로 결정하는 단계
    를 포함하고,
    상기 덧셈 결과를 생성하는 단계는,
    상기 모드가 제2 모드로 결정된 경우, 상기 곱셈 결과 및 제3 부동 소수점의 가수를 더한 결과 중 상위 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  6. 제2항에 있어서,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57을 초과하고, 0 이하인 경우 제3 모드로 결정하는 단계
    를 포함하고,
    상기 덧셈 결과를 생성하는 단계는,
    상기 모드가 제3 모드로 결정된 경우, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 상기 덧셈 결과를 생성하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  7. 제2항에 있어서,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는 단계는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57이하인 경우 제4 모드로 결정하는 단계
    를 포함하고,
    상기 덧셈 결과를 생성하는 단계는,
    상기 모드가 제4 모드로 결정된 경우, 상기 곱셈 결과의 상위 54 비트들을 상기 덧셈 결과의 상위 54 비트들로 생성하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  8. 제1항에 있어서,
    상기 두 개의 프록시 비트들을 정의하는 단계는,
    상기 덧셈 결과의 라운드 비트의 오른쪽 첫 번째 비트 및 오른쪽 두 번째 비트를 상기 두 개의 프록시 비트들로 정의하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  9. 제1항에 있어서,
    상기 두 개의 스티키 비트들을 각각 계산하는 단계는,
    상기 두 개의 프록시 비트들을 논리 오어 연산(logical OR operation)함으로써 제1 스티키 비트를 계산하는 단계; 및
    상기 곱셈 결과와 상기 제3 부동 소수점의 가수를 더한 결과 중 상기 덧셈 결과에 영향을 미치지 않는 비트들에 기반하여 제2 스티키 비트를 계산하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  10. 제1항에 있어서,
    상기 가중된 두 단계 부스 알고리즘을 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계는,
    기본 지수에 적용된 제1 부스 인코딩 단위보다 더 낮은 제2 부스 인코딩 단위를 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정하는 단계
    를 포함하는,
    단일 곱셈-누산 방법.
  11. 가중된 두 단계 부스 알고리즘(weighted two-level booth algorithm)을 이용하여 제1 부동 소수점의 지수 및 제2 부동 소수점의 지수가 서로 대응하도록, 상기 제1 부동 소수점 및 상기 제2 부동 소수점 중 적어도 하나의 기본 지수를 조정하고,
    상기 제1 부동 소수점의 기본 지수, 상기 제2 부동 소수점의 기본 지수 및 제3 부동 소수점의 기본 지수에 기반하여, 미리 설정된 복수의 모드들 중 상기 제1 부동 소수점의 가수 및 상기 제2 부동 소수점의 가수를 곱한 곱셈 결과에 상기 제3 부동 소수점의 가수를 더하는 모드를 결정하고,
    상기 곱셈 결과를 생성하고,
    상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 덧셈 결과를 생성하고,
    상기 결정된 모드에 기반하여 상기 덧셈 결과 내에 두 개의 프록시(proxy) 비트들을 정의하고,
    상기 두 개의 프록시 비트들에 기반하여 두 개의 스티키(sticky) 비트들을 각각 계산하고,
    상기 스티키 비트들에 기반하여 상기 덧셈 결과를 반올림함으로써 최종 결과를 생성하는, 처리부; 및
    상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점을 저장하는 메모리
    를 포함하는,
    단일 곱셈-누산 장치.
  12. 제11항에 있어서,
    상기 처리부는,
    상기 제3 부동 소수점의 기본 지수에서 상기 제1 부동 소수점의 기본 지수 및 상기 제2 부동 소수점의 기본 지수를 곱한 값을 뺀 값에 기반하여 상기 모드를 결정하는,
    단일 곱셈-누산 장치.
  13. 제12항에 있어서,
    상기 미리 설정된 복수의 모드들은 4개의 모드들인,
    단일 곱셈-누산 장치.
  14. 제12항에 있어서,
    상기 처리부는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 56이상인 경우 제1 모드로 결정하고,
    상기 모드가 제1 모드로 결정된 경우, 상기 제3 부동 소수점의 가수의 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는,
    단일 곱셈-누산 장치.
  15. 제12항에 있어서,
    상기 처리부는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 0 이상이고, 56미만인 경우 제2 모드로 결정하고,
    상기 모드가 제2 모드로 결정된 경우, 상기 곱셈 결과 및 제3 부동 소수점의 가수를 더한 결과 중 상위 53 비트들을 상기 덧셈 결과의 상위 53 비트들로 생성하는,
    단일 곱셈-누산 장치.
  16. 제12항에 있어서,
    상기 처리부는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57을 초과하고, 0 이하인 경우 제3 모드로 결정하고,
    상기 모드가 제3 모드로 결정된 경우, 상기 곱셈 결과에 상기 제3 부동 소수점의 가수를 더함으로써 상기 덧셈 결과를 생성하는,
    단일 곱셈-누산 장치.
  17. 제12항에 있어서,
    상기 처리부는,
    상기 부동 소수점들이 64 비트들로 각각 표현되고, 상기 뺀 값이 -57이하인 경우 제4 모드로 결정하고,
    상기 모드가 제4 모드로 결정된 경우, 상기 곱셈 결과의 상위 54 비트들을 상기 덧셈 결과의 상위 54 비트들로 생성하는,
    단일 곱셈-누산 장치.
  18. 제11항에 있어서,
    상기 처리부는,
    상기 덧셈 결과의 라운드 비트의 오른쪽 첫 번째 비트 및 오른쪽 두 번째 비트를 상기 두 개의 프록시 비트들로 정의하는,
    단일 곱셈-누산 장치.
  19. 제11항에 있어서,
    상기 처리부는,
    상기 두 개의 프록시 비트들을 논리 오어 연산(logical OR operation)함으로써 제1 스티키 비트를 계산하고, 상기 곱셈 결과와 상기 제3 부동 소수점의 가수를 더한 결과 중 상기 덧셈 결과에 영향을 미치지 않는 비트들에 기반하여 제2 스티키 비트를 계산하는,
    단일 곱셈-누산 장치.
  20. 제11항에 있어서,
    상기 처리부는,
    기본 지수에 적용된 제1 부스 인코딩 단위보다 더 낮은 제2 부스 인코딩 단위를 이용하여 상기 제1 부동 소수점, 상기 제2 부동 소수점 및 상기 제3 부동 소수점 중 적어도 하나의 기본 지수를 조정하는,
    단일 곱셈-누산 장치.
KR1020160070144A 2016-06-07 2016-06-07 단일 곱셈-누산 방법 및 장치 KR102481418B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160070144A KR102481418B1 (ko) 2016-06-07 2016-06-07 단일 곱셈-누산 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160070144A KR102481418B1 (ko) 2016-06-07 2016-06-07 단일 곱셈-누산 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170138143A true KR20170138143A (ko) 2017-12-15
KR102481418B1 KR102481418B1 (ko) 2022-12-26

Family

ID=60954440

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160070144A KR102481418B1 (ko) 2016-06-07 2016-06-07 단일 곱셈-누산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102481418B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021046568A1 (en) * 2019-09-05 2021-03-11 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems
US11693657B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US11829729B2 (en) 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0139733B1 (ko) * 1994-04-29 1998-07-01 구자홍 부동 소수점 덧셈/뺄셈 연산기의 반올림 방법 및 장치
KR19980041776A (ko) * 1996-11-18 1998-08-17 윤종용 자리올림수 교정을 갖는 휴즈된 부동 소수점 곱셈 및 누산 장치
KR19990074385A (ko) * 1998-03-10 1999-10-05 한탁돈 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치및 방법
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0139733B1 (ko) * 1994-04-29 1998-07-01 구자홍 부동 소수점 덧셈/뺄셈 연산기의 반올림 방법 및 장치
KR19980041776A (ko) * 1996-11-18 1998-08-17 윤종용 자리올림수 교정을 갖는 휴즈된 부동 소수점 곱셈 및 누산 장치
KR19990074385A (ko) * 1998-03-10 1999-10-05 한탁돈 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치및 방법
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021046568A1 (en) * 2019-09-05 2021-03-11 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
US11693657B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US11829729B2 (en) 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems

Also Published As

Publication number Publication date
KR102481418B1 (ko) 2022-12-26

Similar Documents

Publication Publication Date Title
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
EP1857925B1 (en) Method and apparatus for decimal number multiplication using hardware for binary number operations
US20120079251A1 (en) Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions
Huang et al. Low-cost binary128 floating-point FMA unit design with SIMD support
JPH02196328A (ja) 浮動小数点演算装置
KR102481418B1 (ko) 단일 곱셈-누산 방법 및 장치
Wang et al. A survey of hardware designs for decimal arithmetic
WO2022170809A1 (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
CN112241291A (zh) 用于指数函数实施的浮点单元
Wahba et al. Area efficient and fast combined binary/decimal floating point fused multiply add unit
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
US11294627B2 (en) Floating point dot-product operator with correct rounding
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
US7814138B2 (en) Method and apparatus for decimal number addition using hardware for binary number operations
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
Tsen et al. Hardware design of a binary integer decimal-based floating-point adder
CN112130804A (zh) 具有正确舍入的混合精度浮点数的融合乘加运算器
Tsen et al. A combined decimal and binary floating-point multiplier
Shirke et al. Implementation of IEEE 754 compliant single precision floating-point adder unit supporting denormal inputs on Xilinx FPGA
WO2021136259A1 (zh) 浮点数乘法计算的方法、装置和算术逻辑单元
CN111124361A (zh) 算术处理装置及其控制方法
Prasanna et al. An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics
JP2002023997A (ja) 浮動小数点演算のための選択ベースの丸め方法

Legal Events

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