KR20230090254A - 부동 소수점 연산 방법 및 장치 - Google Patents

부동 소수점 연산 방법 및 장치 Download PDF

Info

Publication number
KR20230090254A
KR20230090254A KR1020220171706A KR20220171706A KR20230090254A KR 20230090254 A KR20230090254 A KR 20230090254A KR 1020220171706 A KR1020220171706 A KR 1020220171706A KR 20220171706 A KR20220171706 A KR 20220171706A KR 20230090254 A KR20230090254 A KR 20230090254A
Authority
KR
South Korea
Prior art keywords
bit
operand
operands
point arithmetic
floating point
Prior art date
Application number
KR1020220171706A
Other languages
English (en)
Other versions
KR102706124B1 (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 PCT/KR2022/020283 priority Critical patent/WO2023113445A1/ko
Publication of KR20230090254A publication Critical patent/KR20230090254A/ko
Application granted granted Critical
Publication of KR102706124B1 publication Critical patent/KR102706124B1/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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 부동 소수점 연산 기술에 관한 것으로, 입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 저장하고, 상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하며, 상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 것을 특징으로 한다. 이를 통해, 본 발명은 부동 소수점 덧셈 연산의 오류를 구하는 하드웨어를 부동 소수점 연산기에 추가하여 높은 정밀도의 연산을 가속할 수 있으며, 이를 지원하는 명령어를 통해 효율적인 프로세서를 구성할 수 있다.

Description

부동 소수점 연산 방법 및 장치 {METHOD AND APPARATUS FOR PROVIDING FLOATING POINT ARITHMETIC}
본 발명은 부동 소수점 연산과 관련이 있고, 근사 이중 길이 부동 소수점 연산(approximate double-length floating point arithmetic)을 지원하는 연산기와 이를 포함하는 프로세서와 관련이 있다.
부동 소수점은 표현지는 비트(bit) 수에 따라 분류될 수 있으며, 보통 32비트를 사용하는 단정밀도 연산, 또는 64비트를 표현하는 배정밀도 연산 방식이 사용되고 있다. 부동 소수점 표현이 필요한 현대의 프로세서들은 대부분 부동 소수점 연산을 가속하기 위해 부동 소수점 연산기를 포함하고 있으며, 각 부동 소수점 연산기들은 특정 비트 수의 부동 소수점 연산만을 일반적으로 지원한다.
여러 정밀도의 부동 소수점 연산을 지원하기 위해서는 각 정밀도 별 부동소수점 연산기를 하드웨어로 구현하거나, 가장 정밀한 정밀도의 부동 소수점 연산기를 구현한 뒤 낮은 정밀도를 높은 정밀도로 변환하여 계산하게 된다. 문제는 지원해야 하는 정밀도의 제곱에 비례하여 하드웨어 크기가 커지며, 이는 하드웨어 개발에 있어서 큰 부담으로 작용하게 된다. 특히, 높은 정밀도의 연산이 매우 가끔 필요할 경우, 이를 위해 하드웨어를 추가하는 것은 칩 면적의 큰 낭비를 초래한다.
구체적으로, 배정밀도 부동 소수점(double 혹은 double-precision)은 숫자를 64비트로 표현하며, 단정밀도 부동 소수점(float 혹은 single precision)은 32비트로 숫자를 표현한다. 비트 수는 2배가 되었지만, 이를 지원하는 FPU(floating-point unit)의 하드웨어 크기는 비트 수의 제곱에 비례(4배 크기로 비례)하여 변하게 된다. 이 때문에 높은 정밀도의 부동 소수점 연산을 지원하는 것은 하드웨어적으로 많은 부담이 될 수 있다.
등록특허공보 제10-1473906호 (2014년12월17일 등록공고)
본 발명의 실시예에서는, 하드웨어 가속을 위해 하나의 고정밀도 부동 소수점 표현을 두 개의 저정밀도 부동 소수점 표현으로 나타낼 수 있는 저정밀도 부동 소수점 연산 기법을 제안하고자 한다.
본 발명의 실시예에서는, 이와 같이 설계된 저정밀도 부동 소수점 연산 장치를 포함하고 있는 프로세서와 이 연산 장치를 구동하는 방법을 제안하고자 한다. 본 발명은 프로세서 설계 분야에 적용될 수 있으며, 특히 인공지능 반도체 설계에 적용될 수 있다.
본 발명이 해결하고자 하는 과제는 상기에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재들로부터 본 발명이 속하는 통상의 지식을 가진 자에 의해 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따르면, 부동 소수점 연산 장치의 부동 소수점 연산 방법에 있어서, 입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부(mantissa)의 비트 정보를 저장하는 단계; 상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및 상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함하는 부동 소수점 연산 방법을 제공할 수 있다.
여기서, 상기 가수부의 비트 정보를 저장하는 단계는, 상기 적어도 두 개의 피연산자의 지수부(exponent)가 동일한 값을 갖도록 시프트(shift) 연산을 수행하는 단계; 및 상기 시프트 연산시 상기 적어도 두 개의 피연산자 중 작은 값의 지수부를 갖는 피연산자의 가수부의 비트 정보를 저장하는 단계;를 포함할 수 있다.
또한, 상기 시프트 연산은 오른쪽 시프트 연산일 수 있다.
본 발명의 실시예에 따르면, 부동 소수점 연산 장치의 부동 소수점 연산 방법에 있어서, 입력되는 제1 피연산자 및 제2 피연산자의 지수부가 동일한 값을 갖도록 오른쪽 시프트 연산을 수행하는 단계; 상기 오른쪽 시프트 연산시 상기 제2 피연산자의 버려지는 비트를 저장하는 단계; 상기 제1 피연산자와 상기 제2 피연산자를 연산하여 상위 N비트의 연산 결과를 출력하는 단계; 및 상기 제1 피연산자와 상기 제2 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 버려지는 비트에 추가하여 하위 N비트의 연산 결과를 출력하는 단계;를 포함하는 부동 소수점 연산 방법을 제공할 수 있다.
여기서, 상기 버려지는 비트는 상기 부동 소수점 연산 장치의 플립플롭의 가수부에 저장될 수 있다.
또한, 상기 추가하는 단계는, 상기 상위 N비트의 연산 결과의 가수부를 왼쪽 시프트 연산 또는 오른쪽 시프트 연산을 수행하는 단계를 포함할 수 있다.
또한, 상기 방법은 상기 왼쪽 시프트 연산시 상기 버려지는 비트의 가수부를 왼쪽 시프트 연산할 수 있다.
또한, 상기 방법은 상기 오른쪽 시프트 연산시 상기 소실되는 비트를 상기 버려지는 비트의 최상위 비트에 첨부할 수 있다.
또한, 상기 방법은 상기 왼쪽 시프트 연산 또는 상기 오른쪽 시프트 연산에 대응하여 상기 버려지는 비트의 지수부를 조정하는 단계를 더 포함할 수 있다.
또한, 상기 방법은 상기 제1 피연산자 및 상기 제2 피연산자의 지수부의 크기를 비교하여 상기 버려지는 비트의 부호(sign)부를 입력하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따르면, 입력되는 적어도 두 개의 피연산자의 지수부를 비교하는 비교기; 상기 비교기의 비교 결과를 기초로 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 플립플롭에 저장하도록 제어하는 제어기; 상기 제어기의 제어를 기초로 상기 적어도 두 개의 피연산자를 가산 연산 또는 감산 연산하여 상위 비트의 연산 결과를 출력하는 제1 가감산기; 및 상기 제1 가감산기의 가산 연산 또는 감산 연산 후 정규화 과정 및 반올림 과정에 의한 연산 결과를 출력하는 제2 가감산기;를 포함하되, 상기 제어기는, 상기 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 어느 하나의 피연산자의 가수부의 비트 정보에 추가하여 상기 제2 가감산기가 하위 비트의 연산 결과를 출력하도록 제어하는 부동 소수점 연산 장치를 제공할 수 있다.
여기서, 상기 장치는 상기 적어도 두 개의 피연산자의 지수부가 동일한 값을 갖도록 시프트 연산을 수행하는 시프터;를 더 포함할 수 있다.
또한, 상기 제어기는, 상기 시프트 연산시 상기 적어도 두 개의 피연산자 중 작은 값의 지수부를 갖는 피연산자의 가수부의 비트 정보를 상기 플립플롭에 저장할 수 있다.
또한, 상기 시프트 연산은 오른쪽 시프트 연산일 수 있다.
본 발명의 실시예에 따르면, 입력되는 제1 피연산자 및 제2 피연산자의 지수부가 동일한 값을 갖도록 오른쪽 시프트 연산을 수행하고, 상기 제1 피연산자와 상기 제2 피연산자를 연산하여 상위 N비트의 연산 결과를 출력하며, 상기 제1 피연산자와 상기 제2 피연산자의 연산시 정규화 과정 및 반올림 과정에 의한 하위 N비트의 연산 결과를 출력하는 연산자; 및 상기 오른쪽 시프트 연산시 상기 제2 피연산자의 버려지는 비트를 플립플롭에 저장하도록 제어하고, 상기 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 버려지는 비트에 추가하여 하위 N비트의 연산 결과를 출력하도록 상기 연산자를 제어하는 제어기;를 포함하는 부동 소수점 연산 장치를 제공할 수 있다.
본 발명의 실시예에 따르면, 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서, 상기 컴퓨터 프로그램은, 부동 소수점 연산 장치의 부동 소수점 연산 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하고, 상기 방법은, 입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 저장하는 단계; 상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및 상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함할 수 있다.
본 발명의 실시예에 따르면, 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은, 부동 소수점 연산 장치의 부동 소수점 연산 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하고, 상기 방법은, 입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 저장하는 단계; 상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및 상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함할 수 있다.
본 발명의 실시예에 의하면, 추가적인 하드웨어를 일반적인 부동 소수점 가산기 혹은 감산기에 첨부함으로써 불필요한 연산을 줄이고 기존의 연산을 간소화할 수 있다. 또한 본 발명의 실시예에서는, 부동 소수점의 가산 연산과 감산 연산에서 두 입력값의 지수부를 동일하게 맞추는 가수부 절단(truncation) 과정에서 시프트되어 버려지는 비트들을 버리지 않고 보존하여 연산의 정확도를 높일 수 있다.
도 1은 본 발명의 실시예에 따른 부동 소수점 연산 장치의 개념도이다.
도 2는 본 발명의 실시예에 따른 부동 소수점 연산 장치의 세부 블록도이다.
도 3은 본 발명의 실시예에 따른 부동 소수점 연산 장치의 부동 소수점 연산 방법을 예시적으로 설명하는 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
기존의 부동 소수점 연산 방식의 제약들을 해결하기 위해 여러 가지 소프트웨어적인 기법이 도입된 바 있다. 이는 보통 높은 정밀도로 표현된 숫자를 낮은 정밀도 혹은 고정 소수점으로 변환하여 계산하게 된다.
낮은 정밀도 연산기를 이용하는 부동 소수점 연산 기법의 일 예로서, 높은 정밀도로 표현된 숫자를 두 개의 낮은 정밀도 표현의 합으로 표현하고, 높은 정밀도 간의 연산을 낮은 정밀도 연산으로 쪼개어 표현하는 기법이 있다.
하지만 이 기법에서 높은 정밀도 덧셈은 8번의 낮은 정밀도 덧셈으로 표현되며, 각 연산에는 데이터 의존성이 존재해 최신 프로세서에서 사용할 수 있는 명령어-수준-병렬성(instruction level parallelism)을 이용하기 힘들다. 하지만, 부동 소수점 덧셈 연산의 오류를 바로 구할 수 있다면, 데이터 의존도가 떨어지게 되어 명령어 수준 병렬성을 이용하는데 용이해 질 수 있다.
한편, 인공지능 반도체의 주 목표는 딥 뉴럴 네트워크(deep neural network, DNN)에서 주로 쓰이는 행렬 연산을 가속하는 것이다. 행렬 연산 알고리즘은 높은 병렬성이 내재되어 있기 때문에, 인공지능 반도체에서는 최대한 많은 하드웨어 연산기를 배치하려고 한다. 많은 연산기를 배치하는 방법은 연산기의 정밀도를 낮추는 것으로, 최신 연구에서는 4비트로 부동 소수점을 표현해 4비트 연산기를 두려는 노력이 있다. 저정밀도 연산기를 배치하는 것은 하드웨어적으로는 문제가 되지 않지만, 소프트웨어 적으로 문제가 되는데, 너무 낮은 정밀도의 부동 소수점으로 연산하는 경우에는 딥 뉴럴 네트워크의 성능이 매우 감소하는 것이 잘 알려져 있다. 특히, 컨볼루션(convolution) 연산 등은 정밀도에 큰 영향을 안 받는다고 알려진 데에 비해 배치 정규화(batch normalization) 등의 연산은 정밀도에 민감하게 반응한다고 알려져 있다. 결론적으로 인공지능 반도체의 정밀도를 무한정 낮출 수는 없다.
이전 과학계산 등 고성능 컴퓨팅(high performance computing, HPC)에서는 인공지능 반도체에서와 다르게 고정밀도 연산을 필요로 했으며, 이를 위해 프로세서가 지원하는 부동 소수점 연산기로 높은 정밀도 연산을 소프트웨어로 에뮬레이션하는 방법을 종종 선택하고 있다.
이러한 에뮬레이션 기법의 토대는 상술한 낮은 정밀도 연산기를 이용하는 부동 소수점 연산 기법과 유사한 기법으로, 두 개의 저정밀도 부동 소수점의 합으로 고정밀도 부동 소수점 하나를 표현할 수 있다. 단정밀도 부동 소수점 두 개로 배정밀도 부동 소수점을 표현하는 방식으로 배정밀도 부동 소수점의 연산을 에뮬레이션하는 경우에는, 단순히 단정밀도 부동 소수점에서의 연산을 동일하게 시행하는 것으로는 충분치 않으며, 추가적인 연산이 필요할 수 있다. 예를 들어, 덧셈 연산의 경우 8번의 부동 소수점 덧셈 연산의 실행이 필요하다. 이러한 덧셈 연산들은 또한 데이터-의존적이기 때문에 여러 연산 유닛이 있다고 병렬 처리할 수는 없다.
흔히 등장하는 덧셈 패턴은 부동 소수점 덧셈 연산의 오차를 구하는 방식이다. 예를 들어, 변수 x와 변수 y의 덧셈 오차는, (x-(x+y))+y 로 계산될 수 있는데, 이 식은 언뜻보면 0처럼 보일 수 있으나 부동 소수점 연산의 특성상 0이 아니라 x+y의 오류를 결과 값으로 출력하게 된다. 이 연산 식은 괄호 순서대로 연산을 진행해야 하며, 이는 이전 출력을 다음 입력으로 사용하기 때문에 데이터 의존성이 매우 높다고 볼 수 있다.
이러한 이유로 기존의 부동 소수점 연산 기법은 초고정밀도가 필요한 응용에서만 소프트웨어 적으로 구현되어 사용되었으며, 초고속이 필요한 인공지능과 같은 응용에서는 빛을 보지 못하고 있다.
한편, 딥러닝 프로세서 설계의 주안점은 많은 연산기를 정해진 면적에 넣는 것이며, 이를 위해 높은 정밀도의 부동 소수점 연산기들의 사용이 꺼려지고 있다. 하지만, 딥러닝의 알고리즘적인 성능을 위해서 높은 정밀도의 부동 소수점 연산들이 가끔씩 필요한 것도 사실이다.
본 발명의 실시예에서는, 부동 소수점 덧셈 연산의 오류를 구하는 하드웨어를 부동 소수점 연산기에 추가하여 높은 정밀도의 연산을 가속하며, 이를 지원하는 명령어를 통해 효율적인 프로세서를 구현하고자 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)의 개념도이다.
도 1에 도시한 바와 같이, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는 적어도 두 개의 피연산자, 예컨대 제1 피연산자(x)와 제2 피연산자(y)를 입력으로 할 수 있으며, 입력되는 제1 피연산자(x)와 제2 피연산자(y)를 연산하여 상위 N비트의 연산결과(r)와 하위 N비트의 연산결과(s)를 각각 출력할 수 있다.
기존의 부동 소수점 연산 기법은, 예를 들어 2개의 8비트 입력을 2개의 8비트 출력으로 구현하였으나, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)에 의하면, 2개의 8비트 입력을 하나의 16비트 출력과 하나의 8비트 출력으로 구현할 수 있다.
이때, 본 발명의 실시예에서는 부동 소수점의 가산 연산 또는 감산 연산 과정에서 두 피연산자(x, y)의 지수부를 동일하게 맞추는 과정 중에 가수부를 절단(truncation)하게 되는데, 이때 시프트되어 버려지는 비트들(yy)을 버리지 않고 보존하여 연산의 정확도를 높이는데 특징이 있다.
이에 따라, 본 발명의 실시예에서는 N비트의 부동 소수점 연산 체계를 가진 하드웨어에서 더 높은 정확도를 요구하는 연산 과정을 지원하기 위해 2N비트의 가산 연산 및 감산 연산을 우회적으로 구현하고자 한다.
또한, 본 발명의 실시예에서는 추가적인 하드웨어를 일반적인 부동 소수점 가산기 혹은 감산기에 첨부함으로써 불필요한 연산을 줄이고 기존의 연산을 간소화할 수 있는 부동 소수점 연산 기술을 제안하고자 한다.
또한, 본 발명의 실시예에서는 N비트의 부동 소수점 연산 과정, 예를 들어 N비트의 부동 소수점 가산 과정(x+y=z) 과정을 2N비트의 배정밀도 부동 소수점 연산으로 확장하여 각각 두 개의 N비트의 단정밀도 짝(r, s)을 구현할 수 있는 부동 소수점 연산 기술을 제안하고자 한다. 2N비트의 배정밀도 부동 소수점 연산은 아래 [수학식 1]로 표현될 수 있다.
Figure pat00001
도 2는 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)의 세부 블록도이다.
도 2에 도시한 바와 같이, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는 제1 다중화기(102), 비교기(104), 제어기(106), 제1 시프터(108), 제2 다중화기(110), 제1 가감산기(112), 제2 시프터(114), 반올림기(116) 및 제2 가감산기(118)를 포함할 수 있다.
도 2에서 x, y, r 및 yy는 부동 소수점을 표현하기 위한 플립플롭 데이터 셋을 개념적으로 나타낸 것이고, x 및 y는 입력되는 피연산자가 저장되는 플립플롭 데이터 셋, r은 최초 연산결과가 저장되는 플립플롭 데이터 셋을 나타낸다. 특히, 본 발명의 실시예에서는 피연산자(x, y) 중 작은 값의 지수부를 갖는 피연산자, 예를 들어 y의 버려지는 비트 정보의 플립플롭 데이터 셋을 yy로 표현할 수 있다.
각각의 데이터 셋은 부호부, 지수부 및 가수부를 포함하고, 부동 소수점 연산 장치(100)의 정밀도는 가수부를 표현하기 위해 사용되는 비트들의 개수에 의해 한정된다. 부동 소수점 연산 장치(100)의 정밀도는 특정 애플리케이션에 따라 결정되는데, 예를 들어 특정 애플리케이션의 1비트 부호부, 8비트 지수부 및 23비트 가수부를 갖는 32비트 단일 포맷을 규정할 수 있다.
본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는, 예컨대 두 개의 N비트 부동 소수점 짝을 요구한다. 임의의 부동 소수점 짝을 (r, s)라고 가정하면, N비트 단정밀도 부동 소수점를 지원하는 하드웨어 상에서는 (r, s)를 곧바로 구성할 수는 없다. 따라서, 최초의 연산에서는 (r, s)대신에 (r, 0)이 사용될 수 있다.
제1 피연산자(x) 및 제2 피연산자(y)에 대해 x > y이라고 가정할 때, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는 아래 [수학식 2]와 같은 연산에 대해 (y, yy)를 구성함으로써 s값을 도출할 수 있다.
Figure pat00002
구체적으로, 부동 소수점 연산 장치(100)의 제1 가감산기(112)는 r = x + y의 연산 과정을 수행하고, 이 과정에서 부동 소수점 연산 장치(100)의 제어기(106)는 소실된 정보를 아래 [수학식 3]을 통해 복구할 수 있다.
Figure pat00003
이때, xx = 0 이므로 마지막 덧셈은 생략할 수 있으며, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는 y의 가수부 절단 과정에서 버려지는 비트를 이용하여 yy 값을 보존할 수 있다.
또한, 부동 소수점 연산 장치(100)의 반올림기(116)는 r = x + y 연산 시에 정규화(Normalization) 및 반올림(Rounding) 과정을 거칠 수 있으며, 부동 소수점 연산 장치(100)의 제어기(106)는 이 과정에서 소실되는 비트를 보존할 수 있다.
즉, 부동 소수점 연산 장치(100)는 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 y의 가수부의 비트 정보에 추가함으로써, 곧바로 s를 구성할 수 있다. 즉, 부동 소수점 연산 장치(100)는 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 y의 가수부 절단 과정에서 버려지는 비트에 추가함으로써 yy를 구성할 수 있고, 이후 [수학식 3]에 따라 추가적인 세 번(xx = 0인 경우) 혹은 네 번의 덧셈/뺄셈을 통해 s를 구성할 수 있다.
새롭게 구성된 yy는 별도의 플립플롭 데이터 셋으로 저장이 되고, 이 결과를 계산된 y값과 함께 기존의 레지스터 파일에 다시 쓰는 방법(write-back)이나 별도의 레지스터로 남겨두는 방법 등이 가능하다.
절단 과정에서 yy를 구성하는 방법을 상세히 설명하면 다음과 같다.
입력되는 제1 피연산자(x) 및 제2 피연산자(y)의 지수부는 제1 다중화기(102) 및 비교기(104)를 거치면서 대소 관계 비교 연산 결과로 출력되고, 제1 시프터(108)는 제1 피연산자(x) 및 제2 피연산자(y)의 지수부가 동일한 값을 갖도록 시프트 연산을 수행할 수 있다.
여기서, 제1 시프터(108)는 제어기(106)의 제어하에 오른쪽 시프트 연산을 수행할 수 있으며, 제어기(106)는 비교기(104)의 비교 연산 결과를 기초로 제1 피연산자(x)와 제2 피연산자(y) 중 작은 값의 지수부를 갖는 피연산자, 예컨대 제2 피연산자(y)의 가수부의 비트 정보를 플립플롭 데이터 셋(yy)에 저장할 수 있다.
제1 시프터(108)의 오른쪽 시프트 연산시 제2 피연산자(y)의 가수부의 일부는 절단될 수 있으며, 절단되어 버려지는 비트 정보는 제어기(106)에 의해 별도의 플립플롭 데이터 셋(yy)에 저장될 수 있다.
즉, 가수부 절단시 제어기(106)에서 제1 시프터(108)로 입력되는 제어 신호에는 제2 피연산자(y)의 가수부를 몇 비트만큼 이동시킬지에 대한 정보를 가지고 있다. 이 값은 제1 피연산자(x)의 지수부
Figure pat00004
와 제2 피연산자(y)의 지수부
Figure pat00005
의 차이
Figure pat00006
에 해당하는 값으로, 버려지는 비트 정보를 저장하는 플립플롭 데이터 셋(yy)의 가수부에는 절단된
Figure pat00007
비트가 그대로 시프트 되어 최상위 비트(MSB)부터 순서대로 입력될 수 있다.
버려지는 비트 정보를 저장하는 플립플롭 데이터 셋(yy)의 지수부에는 아래 [수학식 4]의 값이 입력될 수 있다.
Figure pat00008
여기서, m은 가수부의 비트 길이이고, 버려지는 비트 정보를 저장하는 플립플롭 데이터 셋(yy)의 부호부는 제2 피연산자(y)의 부호부와 동일하다. 플립플롭 데이터 셋(yy)의 지수부의 비트 정보는 잠정적인 값으로 별도의 정규화 과정을 거칠 필요 없이 r = x + y의 결과가 산출될 때까지 그대로 대기한다.
제어기(106)의 제어를 기초로 한 제1 가감산기(112)의 연산 과정에 의해 최초 연산결과가 저장되는 플립플롭 데이터 셋(r)이 일차적으로 계산되면, 정규화를 하기 위해 r의 가수부가 제2 시프터(114)에 의해 왼쪽 또는 오른쪽으로 시프트 연산될 수 있다. 만일, 왼쪽으로 시프트 연산될 경우 버려지는 비트가 저장된 플립플롭 데이터 셋(yy)의 가수부를 활용할 수도 있지만, 시스템의 일반성(generality)을 깨지 않기 위해 기존의 방식대로 0을 채워넣을 수 있다. 대신, 버려지는 비트가 저장된 플립플롭 데이터 셋(yy)의 가수부 역시 왼쪽으로 시프트 연산을 수행해야 하며, 이에 맞게 지수부도 조정해 줄 필요는 있다.
이를 위해, 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)는 버려지는 비트가 저장된 플립플롭 데이터 셋(yy)의 지수부에 연결되는 제2 가감산기(118)를 더 포함할 수 있다.
최초 연산결과가 저장된 플립플롭 데이터 셋(r)의 정규화 결과로 가수부를 오른쪽 시프트 연산해야 하는 경우, 최초 연산결과가 저장된 플립플롭 데이터 셋(r)의 가수부가 추가로 비트가 소실되는데, 이 비트는 앞서 보존된 버려지는 비트가 저장된 플립플롭 데이터 셋(yy)의 최상위 비트(MSB)에 그대로 첨부될 수 있다. 마찬가지로, 버려지는 비트가 저장된 플립플롭 데이터 셋(yy)의 지수부도 이에 맞게 조정해 줄 필요가 있다.
이와 같은 과정을 통해 생성된 플립플롭 데이터 셋(yy)은 정규화 과정과 반올림 과정을 거칠 수 있으며, 최종적으로 하위 N비트의 s가 출력될 수 있다. 이때, 정규화 과정은 기존의 하드웨어 모듈과 같은 모듈을 추가하여 사용할 수 있고, 또는 하나의 모듈을 재사용하는 방식도 가능하다.
플립플롭 데이터 셋(yy)의 부호부를 입력하기 위해서는, 실제 구현에서는 제1 피연산자(x)와 제2 피연산자(y) 두 개의 입력 중에 어떤 부동 소수점이 더 큰가를 판단해야 하므로, 두 입력의 지수부는 제1 다중화기(102) 및 비교기(104)를 거쳐야 한다. 비교기(104)의 연산 결과에 따라 작은 지수부를 갖는 입력의 부호부가 플립플롭 데이터 셋(yy)의 부호부로 입력될 수 있다.
따라서, 플립플롭 데이터 셋(yy)의 부호부는 제1 피연산자(x) 및 제2 피연산자(y)의 부호부와 2:1 MUX로 연결될 수 있다. 다만, 제1 피연산자(x) 및 제2 피연산자(y)의 부호부가 서로 다르면서 지수부
Figure pat00009
Figure pat00010
가 같을 경우, 플립플롭 데이터 셋(yy)의 부호부는 일단 0으로 채워둔 채 제1 피연산자(x) 및 제2 피연산자(y)를 더한 r값이 산출되면 r의 부호부와 반대되는 비트를 플립플롭 데이터 셋(yy)의 부호부에 대입함으로써, 동일한 효과를 얻을 수 있다.
한편, 아래 [수학식 5]와 같은 뺄셈 연산인 경우에는 기본적인 구성은 덧셈 연산과 동일하나, 입력되는 제2 피연산자(y) 및 제2 피연산자의 버려지는 비트(yy)의 부호가 음수라는 차이점만 존재한다.
Figure pat00011
부동 소수점 연산에서 지수부의 비교 연산은 입력값의 부호와 무관하며, 가수부의 연산 역시 기존의 하드웨어에서 뺄셈 연산을 마찬가지로 지원하므로 본 발명의 실시예에서도 동일하게 적용이 가능하다.
도 3은 본 발명의 실시예에 따른 부동 소수점 연산 장치(100)의 부동 소수점 연산 방법을 예시적으로 설명하는 흐름도이다.
도 3에 도시한 바와 같이, 제1 피연산자(x)와 제2 피연산자(y)가 부동 소수점 연산 장치(100)로 입력되면, 제1 피연산자(x) 및 제2 피연산자(y)의 지수부가 제1 다중화기(102)와 비교기(104)의 연산 과정을 거칠 수 있다(S100).
이후, 부동 소수점 연산 장치(100)는 비교기(104)의 연산 과정을 통해 제1 피연산자(x) 및 제2 피연산자(y)의 지수부의 크기를 비교할 수 있다(S102).
비교기(104)의 연산 결과, 제2 피연산자(y)의 지수부가 제1 피연산자(x)의 지수부보다 작은 값으로 판단되면(S104), 제어기(106)는 시프트 연산시 제2 피연산자(y)의 가수부의 버려지는 비트 정보를 플립플롭 데이터 셋(yy)에 저장할 수 있다(S106). 즉, 부동 소수점 연산 과정에서는 제1 피연산자(x)와 제2 피연산자(y)의 지수부가 서로 동일한 값을 갖도록 시프트 연산, 예컨대 오른쪽 시프트 연산을 수행하는데, 본 발명의 실시예에서는 이러한 오른쪽 시프트 연산시 작은 값의 지수부룰 갖는 제2 피연산자(y)의 가수부의 버려지는 비트 정보를 플립플롭에 임시 저장하는 것을 특징으로 한다.
이후, 부동 소수점 연산 장치(100)의 제1 가감산기(112)는 제1 피연산자(x) 및 제2 피연산자(y)의 1차 연산 결과를 출력할 수 있다(S108). 1차 연산 결과는 도 2의 플립플롭 데이터 셋(r)으로 예시될 수 있다.
이때, 부동 소수점 연산 장치(100)의 제어기(106)는, 제2 시프터(114)의 정규화 과정시 소실되는 비트를, 플립플롭 데이터 셋(yy)의 버려지는 비트에 추가하도록 제2 가감산기(118)를 제어함으로써, 최종 연산 결과(s)를 출력할 수 있다(S110).
도 3의 실시예는 제2 피연산자(y)의 지수부가 제1 피연산자(x)의 지수부보다 작은 경우를 예시한 것으로, 그 반대인 경우(제2 피연산자(y)의 지수부가 제1 피연산자(x)의 지수부보다 큰 경우)에도 동일하게 적용될 수 있다.
도 2를 참조하면, 부동 소수점 연산 장치(100)는 제1 다중화기(102)와 비교기(104)를 통해 제1 피연산자(x)와 제2 피연산자(y)의 대소 관계를 비교한 연산 결과를 출력하게 되고, 그 연산 결과를 기초로 제어기(106)가 제1 피연산자(x)와 제2 피연산자(y)의 연산 순서를 결정할 수 있다. 예컨대, 두 개의 MUX(1:2)에서 알 수 있듯이, 피연산자들 중 더 작은 값의 지수부를 갖는 피연산자의 지수부가 제일 좌측의 MUX를 통해 입력될 수 있다.
따라서, x>y의 상황 또는 x≤y의 상황 모두, 입력되는 피연산자들의 지수부의 대소 관계를 비교하는 연산 과정을 거치기 때문에, 오른쪽 시프트 연산 이후에는 동일한 연산 과정이 적용될 수 있다.
이상 설명한 바와 같은 본 발명의 실시예에 의하면, 높은 정밀도의 연산으로 인해 HPC 시장 및 딥러닝 프로세서 시장에서의 적용이 용이하며, 최소한의 하드웨어 변경으로 인해 기존 생산 제품에 적용이 용이할 것으로 기대된다.
아울러, 본 발명의 실시예에 의하면, 단정밀도의 부동 소수점(z, zz) 짝을 도출하기 위해서 한 번의 비교 연산과 네 번 또는 여섯 번의 덧셈/뺄셈 연산으로 연산 과정을 줄일 수 있다. 최초 연산의 경우 (x, xx) 짝을 구성할 수 없어 (x, 0)짝을 사용하기 때문에 네 번의 연산이면 충분하다. 이어지는 연산에서는 앞서 도출된 결과를 다시 (x, xx)와 (y, yy)로 활용하기 때문에 두 번의 연산이 추가되어 총 여섯 번의 연산이 요구된다.
높은 정확도를 요구하는 연산의 예로는 딥러닝 연산 중 배치 정규화(batch normalization) 역방향 연산(backward pass)을 들 수 있다. 이때, 서로 다른 지수부 값을 갖는 부동 소수점들을 여러 차례 누적하면서 값의 정확도가 조금씩 소실되는 것을 최소화할 수 있다.
N개의 값을 누적하는 경우, 본 발명의 실시예에서는 최초 연산의 경우 (x, 0) 짝을 사용하기 때문에 네 번의 연산만으로 충분한데, 이 점을 활용하기 위해 트리형 덧셈 방식(adder tree)을 도입할 수 있다. 이 방법으로는 (5N-6)번의 연산으로 부동 소수점 연산 기법을 구현할 수 있다. N이 충분히 클 경우, 기존 대비 37.5%의 속도 향상이 기대된다.
한편, 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록에서 설명된 기능들을 수행하는 수단을 생성하게 된다.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체(또는 메모리) 등에 저장되는 것도 가능하므로, 그 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체(또는 메모리)에 저장된 인스트럭션들은 블록도의 각 블록에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.
그리고, 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 적어도 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
100: 부동 소수점 연산 장치
102: 제1 다중화기
104: 비교기
106: 제어기
108: 제1 시프터
110: 제2 다중화기
112: 제1 가감산기
114: 제2 시프터
116: 반올림기
118: 제2 가감산기
x, y: 피연산자가 저장되는 플립플롭 데이터 셋
yy: 피연산자(y)의 버려지는 비트를 저장하기 위한 플립플롭 데이터 셋
r: 최초 연산결과가 저장되는 플립플롭 데이터 셋

Claims (16)

  1. 부동 소수점 연산 장치의 부동 소수점 연산 방법에 있어서,
    입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부(mantissa)의 비트 정보를 저장하는 단계;
    상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및
    상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함하는
    부동 소수점 연산 방법.
  2. 제 1 항에 있어서,
    상기 가수부의 비트 정보를 저장하는 단계는,
    상기 적어도 두 개의 피연산자의 지수부(exponent)가 동일한 값을 갖도록 시프트(shift) 연산을 수행하는 단계; 및
    상기 시프트 연산시 상기 적어도 두 개의 피연산자 중 작은 값의 지수부를 갖는 피연산자의 가수부의 비트 정보를 저장하는 단계;를 포함하는
    부동 소수점 연산 방법.
  3. 제 2 항에 있어서,
    상기 시프트 연산은 오른쪽 시프트 연산인
    부동 소수점 연산 방법.
  4. 부동 소수점 연산 장치의 부동 소수점 연산 방법에 있어서,
    입력되는 제1 피연산자 및 제2 피연산자의 지수부가 동일한 값을 갖도록 오른쪽 시프트 연산을 수행하는 단계;
    상기 오른쪽 시프트 연산시 상기 제2 피연산자의 버려지는 비트를 저장하는 단계;
    상기 제1 피연산자와 상기 제2 피연산자를 연산하여 상위 N비트의 연산 결과를 출력하는 단계; 및
    상기 제1 피연산자와 상기 제2 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 버려지는 비트에 추가하여 하위 N비트의 연산 결과를 출력하는 단계;를 포함하는
    부동 소수점 연산 방법.
  5. 제 4 항에 있어서,
    상기 버려지는 비트는 상기 부동 소수점 연산 장치의 플립플롭의 가수부에 저장되는
    부동 소수점 연산 방법.
  6. 제 4 항에 있어서,
    상기 추가하는 단계는,
    상기 상위 N비트의 연산 결과의 가수부를 왼쪽 시프트 연산 또는 오른쪽 시프트 연산을 수행하는 단계를 포함하는
    부동 소수점 연산 방법.
  7. 제 6 항에 있어서,
    상기 왼쪽 시프트 연산시 상기 버려지는 비트의 가수부를 왼쪽 시프트 연산하는
    부동 소수점 연산 방법.
  8. 제 4 항에 있어서,
    상기 오른쪽 시프트 연산시 상기 소실되는 비트를 상기 버려지는 비트의 최상위 비트에 첨부하는
    부동 소수점 연산 방법.
  9. 제 7 항 또는 제 8 항에 있어서,
    상기 왼쪽 시프트 연산 또는 상기 오른쪽 시프트 연산에 대응하여 상기 버려지는 비트의 지수부를 조정하는 단계를 더 포함하는
    부동 소수점 연산 방법.
  10. 제 4 항에 있어서,
    상기 제1 피연산자 및 상기 제2 피연산자의 지수부의 크기를 비교하여 상기 버려지는 비트의 부호(sign)부를 입력하는 단계를 더 포함하는
    부동 소수점 연산 방법.
  11. 입력되는 적어도 두 개의 피연산자의 지수부를 비교하는 비교기;
    상기 비교기의 비교 결과를 기초로 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 플립플롭에 저장하도록 제어하는 제어기;
    상기 제어기의 제어를 기초로 상기 적어도 두 개의 피연산자를 가산 연산 또는 감산 연산하여 상위 비트의 연산 결과를 출력하는 제1 가감산기; 및
    상기 제1 가감산기의 가산 연산 또는 감산 연산 후 정규화 과정 및 반올림 과정에 의한 연산 결과를 출력하는 제2 가감산기;를 포함하되,
    상기 제어기는,
    상기 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 어느 하나의 피연산자의 가수부의 비트 정보에 추가하여 상기 제2 가감산기가 하위 비트의 연산 결과를 출력하도록 제어하는
    부동 소수점 연산 장치.
  12. 제 11 항에 있어서,
    상기 적어도 두 개의 피연산자의 지수부가 동일한 값을 갖도록 시프트 연산을 수행하는 시프터;를 더 포함하고,
    상기 제어기는,
    상기 시프트 연산시 상기 적어도 두 개의 피연산자 중 작은 값의 지수부를 갖는 피연산자의 가수부의 비트 정보를 상기 플립플롭에 저장하는
    부동 소수점 연산 장치.
  13. 제 12 항에 있어서,
    상기 시프트 연산은 오른쪽 시프트 연산인
    부동 소수점 연산 장치.
  14. 입력되는 제1 피연산자 및 제2 피연산자의 지수부가 동일한 값을 갖도록 오른쪽 시프트 연산을 수행하고, 상기 제1 피연산자와 상기 제2 피연산자를 연산하여 상위 N비트의 연산 결과를 출력하며, 상기 제1 피연산자와 상기 제2 피연산자의 연산시 정규화 과정 및 반올림 과정에 의한 하위 N비트의 연산 결과를 출력하는 연산자; 및
    상기 오른쪽 시프트 연산시 상기 제2 피연산자의 버려지는 비트를 플립플롭에 저장하도록 제어하고, 상기 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 버려지는 비트에 추가하여 하위 N비트의 연산 결과를 출력하도록 상기 연산자를 제어하는 제어기;를 포함하는
    부동 소수점 연산 장치.
  15. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은,
    부동 소수점 연산 장치의 부동 소수점 연산 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하고,
    상기 방법은,
    입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 저장하는 단계;
    상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및
    상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함하는
    컴퓨터 판독 가능한 기록매체.
  16. 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은,
    부동 소수점 연산 장치의 부동 소수점 연산 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하고,
    상기 방법은,
    입력되는 적어도 두 개의 피연산자의 지수부를 비교한 결과에 기초하여 상기 적어도 두 개의 피연산자 중 어느 하나의 피연산자의 가수부의 비트 정보를 저장하는 단계;
    상기 적어도 두 개의 피연산자를 연산하여 상위 비트의 연산 결과를 출력하는 단계; 및
    상기 적어도 두 개의 피연산자의 연산시 정규화 과정 및 반올림 과정을 거치면서 소실되는 비트를 상기 가수부의 비트 정보에 추가하여 하위 비트의 연산 결과를 출력하는 단계;를 포함하는
    기록매체에 저장된 컴퓨터 프로그램.
KR1020220171706A 2021-12-14 2022-12-09 부동 소수점 연산 방법 및 장치 KR102706124B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/KR2022/020283 WO2023113445A1 (ko) 2021-12-14 2022-12-13 부동 소수점 연산 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210178593 2021-12-14
KR20210178593 2021-12-14

Publications (2)

Publication Number Publication Date
KR20230090254A true KR20230090254A (ko) 2023-06-21
KR102706124B1 KR102706124B1 (ko) 2024-09-12

Family

ID=86989945

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220171706A KR102706124B1 (ko) 2021-12-14 2022-12-09 부동 소수점 연산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102706124B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120003878A (ko) * 2009-03-16 2012-01-11 어드밴스드 마이크로 디바이시즈, 인코포레이티드 부동 소수점 유닛에서 오버시프트의 빠른 검출을 위한 메카니즘
JP2012221189A (ja) * 2011-04-08 2012-11-12 Fujitsu Ltd 演算回路、演算処理装置、及び演算回路の制御方法
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器
KR101473906B1 (ko) 2007-02-28 2014-12-17 어드밴스드 마이크로 디바이시즈, 인코포레이티드 재구성 가능한 부동 소수점 유닛을 구비한 프로세서
KR20180050204A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 부동 소수점 가산기의 원경로에서의 고속 스티키 생성

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101473906B1 (ko) 2007-02-28 2014-12-17 어드밴스드 마이크로 디바이시즈, 인코포레이티드 재구성 가능한 부동 소수점 유닛을 구비한 프로세서
KR20120003878A (ko) * 2009-03-16 2012-01-11 어드밴스드 마이크로 디바이시즈, 인코포레이티드 부동 소수점 유닛에서 오버시프트의 빠른 검출을 위한 메카니즘
JP2012221189A (ja) * 2011-04-08 2012-11-12 Fujitsu Ltd 演算回路、演算処理装置、及び演算回路の制御方法
JP2013012203A (ja) * 2011-06-29 2013-01-17 Arm Ltd 浮動小数点加算器
KR20180050204A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 부동 소수점 가산기의 원경로에서의 고속 스티키 생성

Also Published As

Publication number Publication date
KR102706124B1 (ko) 2024-09-12

Similar Documents

Publication Publication Date Title
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US8990282B2 (en) Apparatus and method for performing fused multiply add floating point operation
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
US9606770B2 (en) Multiply add functional unit capable of executing SCALE, ROUND, GETEXP, ROUND, GETMANT, REDUCE, RANGE and CLASS instructions
JP6744913B2 (ja) 浮動小数点数の丸め処理
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US20180052660A1 (en) Apparatus and method for fixed point to floating point conversion and negative power of two detector
GB2294565A (en) Floating point arithmetic unit
US11106431B2 (en) Apparatus and method of fast floating-point adder tree for neural networks
JP3845009B2 (ja) 積和演算装置、及び積和演算方法
JP2020507844A (ja) 入力オペランド値を処理するための装置及び方法
US20230092574A1 (en) Single-cycle kulisch accumulator
US20220107805A1 (en) Floating Point Number Format
JPH07168697A (ja) 倍精度除算回路および方法
US20160253235A1 (en) Recycling Error Bits in Floating Point Units
WO2023113445A1 (ko) 부동 소수점 연산 방법 및 장치
JP7541524B2 (ja) アンカーデータ要素における特殊値の符号化
KR20230090254A (ko) 부동 소수점 연산 방법 및 장치
US10963245B2 (en) Anchored data element conversion
Tan et al. Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications
US20240211211A1 (en) Mac apparatus using floating point unit and control method thereof
US20220129245A1 (en) High-precision anchored-implicit processing
JP2023000142A (ja) 演算装置
LaMeres Floating-Point Systems

Legal Events

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