KR102848552B1 - 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법 - Google Patents

부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법

Info

Publication number
KR102848552B1
KR102848552B1 KR1020230044376A KR20230044376A KR102848552B1 KR 102848552 B1 KR102848552 B1 KR 102848552B1 KR 1020230044376 A KR1020230044376 A KR 1020230044376A KR 20230044376 A KR20230044376 A KR 20230044376A KR 102848552 B1 KR102848552 B1 KR 102848552B1
Authority
KR
South Korea
Prior art keywords
floating
point data
point
multiplier
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020230044376A
Other languages
English (en)
Other versions
KR20240103926A (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 US18/488,124 priority Critical patent/US20240211211A1/en
Publication of KR20240103926A publication Critical patent/KR20240103926A/ko
Application granted granted Critical
Publication of KR102848552B1 publication Critical patent/KR102848552B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 부동소수점 연산기를 이용한 엠에이씨 장치에 관한 것으로, 부동소수점 데이터를 곱셈 연산하는 곱셈기; 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기; 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터; 및 상기 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하여 상기 곱셈기에 입력시키는 입력 분할 제어기를 포함하는 것을 특징으로 한다.

Description

부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법{MAC APPARATUS USING FLOATING POINT UNIT AND CONTROL METHOD THEREOF}
본 발명은 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법에 관한 것으로, 보다 상세하게는 부동소수점 연산기에서 하드웨어적으로 처리할 수 있도록 구현된 데이터 타입보다 더 큰 데이터 타입의 엠에이씨(MAC : Multiply Accumulate) 연산을 처리할 수 있도록 하는, 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법에 관한 것이다.
일반적으로 인공신경망(artificial neural network) 또는 심층학습(deep learning) 모델 기반 어플리케이션은, 그림, 음성, 및 패턴데이터 등, 벡터 또는 행렬 형태로 저장된 데이터에 대한 연산을 수행한다.
특히, 각 데이터는 부동소수점 기반 소수의 형태로 이루어짐으로써, 결과적으로 부동소수점 행렬곱(matrix multiplication)에 대한 연산성능이 인공신경망 어플리케이션의 성능에 큰 영향을 주게 된다.
부동소수점 행렬곱 연산의 경우, 각 행렬 요소(element) 간의 곱연산을 수행한 후, 계속 더하여 쌓아 나가는 MAC(multiply-accumulate, 즉, 기저학습 등의 인공지능 추론과 학습과정에서 필요한 고속의 곱셈 누적 연산을 수행하는 계산기) 연산을 통해 이루어진다.
최근의 인공신경망 모델에서의 MAC 연산의 경우, MAC 연산 동작(예 : 곱셈 연산, 누적 덧셈 연산) 중, 곱셈 연산에 사용되는 부동소수점 데이터에 기존에는 32-bit 부동소수점이 사용되었으나, 최근에는 32-bit 부동소수점 보다 작은 16-bit, 또는 8-bit와 같은 데이터 타입을 활용한 연산이 널리 사용되고 있다.
MAC 연산 동작(예 : 곱셈 연산, 누적 덧셈 연산) 중, 곱셈 연산과 달리, 누적 덧셈 연산의 경우, 수 백~수 천 개의 곱셈 연산 결과를 누적해 나가는 동작의 특성 상, 곱셈 연산에서 처리하는 부동소수점 데이터 타입(즉, 16-bit, 또는 8-bit 부동소수점 데이터 타입)보다 큰 데이터 타입(예 : 32-bit 부동소수점 데이터 타입)이 사용된다.
최근 GPT-3(Generation Pre-trained Transformer 3)와 같은 트랜스포머 기반의 거대 인공신경망의 경우, 기존 비전 처리 인공신경망과 달리 매우 큰 연산량을 필요로 하며, 이에 대응하기 위해 최근 공개되고 있는 초거대 인공신경망 가속기는 32-bit 보다 작은 부동소수점 데이터 타입(예 : TF32(19-bit), FP16, BF16, FP8)에 대한 고성능 연산 성능을 지니도록 개발되고 있다. 특히, 하나의 공유된 부동소수점 연산기(FPU) 내에서 다양한 크기의 데이터 타입 연산을 수행할 수 있는 TP-FPU(transprecision FPU)가 사용되기도 하며, 이를 통해 32-bit 보다 작은 데이터 타입에 대한 병렬 연산을 수행할 수 있다.
참고로 부동소수점 연산기(FPU)는 컴퓨터 시스템에서 2진법으로 실수를 표현하기 위해 사용되는 부동소수점 데이터에 대한 사칙연산 등, 다양한 연산 처리를 수행한다. 다양한 부동소수점 데이터 타입(예 : FP64, FP32, TF32, FP16, BF16, FP8)에 대한 효율적인 병렬 연산을 지원하기 위해(도 1 참조), 하나의 대형 데이터 타입(예 : FP64)을 위한 FPU를 활용하여 다수의 작은 데이터를 병렬로 처리할 수 있는 구조가 공개되어 있다(도 2 참조).
도 1에서 S는 Sign bit, E는 Exponent bits, M은 Mantissa bits를 의미한다.
도 2는 1개의 FP64 FPU 곱셈기를 활용하여, 동시에 2개의 FP32(P0, P1), 4개의 FP16(P0 ~ P3), 또는 8개의 FP8(P0 ~ P7)데이터를 병렬로 연산할 수 있는 FPU의 구조를 나타낸다.
도 2에 도시된 바와 같은 기존 FPU는 하나의 대형 데이터 타입(예 : FP64)을 연산하기 위한 FPU를 활용하여 그 보다 작은 다수의 데이터 타입(예 : FP32, TF32, FP16, BF16, FP8)에 대한 연산을 수행하기에 매우 효율적인 구조를 지니고 있다.
그러나 부동소수점 연산기의 하드웨어적인 특성상, 부동소수점 연산기에서 하드웨어적으로 처리할 수 있도록 구현된 데이터 타입보다 더 큰 데이터 타입에 대한 연산이 불가능한 문제점이 있다(즉, 부동소수점 연산기에서 처리할 수 있도록 구현된 데이터 타입보다 작은 데이터 타입에 대한 연산만 가능한 특징이 있다).
즉, 도 2에 도시된 바와 같은 FP64 FPU는 하드웨어의 특성상 FP64를 최대 연산 지원 크기로 구현되어 있기 때문에, 그 하드웨어적으로 구현된 부동소수점 연산기의 크기보다 큰 데이터 타입(즉, FP128 등)에 대한 연산을 수행할 수 없는 문제점이 있다.
예컨대 도 3에 도시된 인공신경망 가속기 중 Tesla D1, Google TPUv4와 같이 FP16, FP8 등, 인공신경망 전용의 16-bit 부동소수점 데이터 타입(예 : FP16/BF16, FP8/INT8)만을 지원하는 부동소수점 연산기에서 연산을 수행할 수 있도록 하드웨어적으로 구현된 데이터 타입보다 큰 데이터 타입(예 : FP32, FP64)에 대한 연산을 처리할 수 없는 문제점이 있다.
이에 따라 인공신경망 가속을 위해 개발된 프로세서(또는 가속기)에서 부동소수점 연산기의 하드웨어적인 자원을 추가하지 않고, 수행할 수 있는 MAC 연산의 범용성과 지원 데이터 타입을 확장하기 위하여, 부동소수점 연산기에서 하드웨어적으로 연산할 수 있도록 구현된 부동소수점 데이터 타입(예 : FP16 또는 FP8)보다 더 큰 부동소수점 데이터 타입(예 : FP32)에 대한 연산을 수행할 수 있도록 하는 기술이 필요한 상황이다.
본 발명의 배경기술은 대한민국 공개특허 10-2022-0077076호(2022.06.08.)에 개시되어 있다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 부동소수점 연산기에서 하드웨어적으로 처리할 수 있도록 구현된 데이터 타입보다 더 큰 데이터 타입의 엠에이씨(MAC) 연산을 처리할 수 있도록 하는, 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법을 제공하는 데 그 목적이 있다.
본 발명의 일 측면에 따른 부동소수점 연산기를 이용한 엠에이씨 장치는, 부동소수점 데이터를 곱셈 연산하는 곱셈기; 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기; 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터; 및 상기 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하여 상기 곱셈기에 입력시키는 입력 분할 제어기를 포함하는 것을 특징으로 한다.
본 발명에 있어서, 상기 덧셈기는, 상기 곱셈기에서 처리하는 부동소수점 데이터 타입보다 적어도 2배 큰 데이터를 덧셈 연산하도록 구현된 것을 특징으로 한다.
본 발명에 있어서, 상기 누적 레지스터는, 상기 덧셈기에서 처리하는 부동소수점 데이터 타입과 같은 크기의 부동소수점 데이터를 누적할 수 있도록 구현된 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 상기 분할한 복수의 부동소수점 데이터를 곱셈기에 입력시킬 때, 지정된 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여, 해당하는 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 아래의 수학식 1과 같은 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여 순차적으로 곱셈기에 입력시키되, Aa와 Bc 쌍, Aa와 Bd 쌍, Ab와 Bc 쌍, 및 Ab와 Bd 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 한다.
(수학식 1)
본 발명에 있어서, 상기 입력 분할 제어기는, 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, M(mantissa)의 크기를 2로 나눈 값이 동일하도록 분할하며, 분할되는 부동소수점 데이터의 M(mantissa)의 크기가 동일하도록 맞추기 위하여, 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit를 추가하는 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit가 추가되는 경우, 해당 부동소수점 데이터의 M(mantissa)의 최종 bit 값에 0(zero)을 입력하는 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 피연산자 A가 분할된 제1 부동소수점 데이터(Aa)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제2 부동소수점 데이터(Ab)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력하고, 피연산자 B가 분할된 제3 부동소수점 데이터(Bc)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제4 부동소수점 데이터(Bd)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력함으로써, 부동소수점 데이터를 분할하는 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 부동소수점 데이터의 M(mantissa) 앞에, 지정된 임플리싯 비트(implicit bit)를 부가함으로써, 곱셈기가 분할된 부동소수점 데이터 중 분할되기 전 피연산자의 M(mantissa) 값 중, 하위 bit의 M(mantissa) 값이 포함된 부동소수점 데이터임을 인식할 수 있도록 하는 것을 특징으로 한다.
본 발명에 있어서, 상기 입력 분할 제어기는, 분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 제2,4 부동소수점 데이터(Ab, Bd)의 E(exponent) 값을, 분할 시 변경된 M(mantissa)의 상위 bit 크기를 반영하여, 분할되는 부동소수점 데이터의 E'(exponent) 값을 조정하는 것을 특징으로 한다.
본 발명의 다른 측면에 따른 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법은, 부동소수점 데이터를 곱셈 연산하는 곱셈기, 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기, 및 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터를 포함하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법에 있어서, 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 입력 분할 제어기가 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하는 단계; 및 상기 입력 분할 제어기가 상기 분할된 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)를 상기 곱셈기에 입력시키는 단계를 포함하는 것을 특징으로 한다.
본 발명에 있어서, 상기 덧셈기는, 상기 곱셈기에서 처리하는 부동소수점 데이터 타입보다 적어도 2배 큰 데이터를 덧셈 연산하도록 구현된 것을 특징으로 한다.
본 발명에 있어서, 상기 누적 레지스터는, 상기 덧셈기에서 처리하는 부동소수점 데이터 타입과 같은 크기의 부동소수점 데이터를 누적할 수 있도록 구현된 것을 특징으로 한다.
본 발명에 있어서, 상기 분할한 복수의 부동소수점 데이터를 곱셈기에 입력시킬 때, 상기 입력 분할 제어기는, 지정된 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여, 해당하는 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 한다.
본 발명에 있어서, 상기 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시킬 때, 상기 입력 분할 제어기는, 아래의 수학식 1과 같은 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여 순차적으로 곱셈기에 입력시키되, Aa와 Bc 쌍, Aa와 Bd 쌍, Ab와 Bc 쌍, 및 Ab와 Bd 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 한다.
(수학식 1)
본 발명에 있어서, 상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, 상기 입력 분할 제어기는, M(mantissa)의 크기를 2로 나눈 값이 동일하도록 분할하며, 분할되는 부동소수점 데이터의 M(mantissa)의 크기가 동일하도록 맞추기 위하여, 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit를 추가하는 것을 특징으로 한다.
본 발명에 있어서, 상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, 상기 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit가 추가되는 경우, 상기 입력 분할 제어기는, 해당 부동소수점 데이터의 M(mantissa)의 최종 bit 값에 0(zero)을 입력하는 것을 특징으로 한다.
본 발명에 있어서, 상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, 상기 입력 분할 제어기는, 피연산자 A가 분할된 제1 부동소수점 데이터(Aa)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제2 부동소수점 데이터(Ab)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력하고, 피연산자 B가 분할된 제3 부동소수점 데이터(Bc)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제4 부동소수점 데이터(Bd)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력함으로써, 부동소수점 데이터를 분할하는 것을 특징으로 한다.
본 발명에 있어서, 상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, 상기 입력 분할 제어기는, 분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 부동소수점 데이터의 M(mantissa) 앞에, 지정된 임플리싯 비트(implicit bit)를 부가함으로써, 곱셈기가 분할된 부동소수점 데이터 중 분할되기 전 피연산자의 M(mantissa) 값 중, 하위 bit의 M(mantissa) 값이 포함된 부동소수점 데이터임을 인식할 수 있도록 하는 것을 특징으로 한다.
본 발명에 있어서, 상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때, 상기 입력 분할 제어기는, 분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 제2,4 부동소수점 데이터(Ab, Bd)의 E(exponent) 값을, 분할 시 변경된 M(mantissa)의 상위 bit 크기를 반영하여, 분할되는 부동소수점 데이터의 E'(exponent) 값을 조정하는 것을 특징으로 한다.
본 발명은 인공신경망 어플리케이션과 같이, 다양한 크기의 데이터 타입에 대한 엠에이씨(MAC) 연산을 필요로 하는 연산 환경에서, 부동소수점 연산기에서 하드웨어적으로 처리할 수 있도록 구현된 데이터 타입보다 더 큰 데이터 타입의 엠에이씨(MAC) 연산을 처리할 수 있도록 한다.
도 1은 다양한 부동소수점 데이터 타입을 보인 예시도이다.
도 2는 1개의 FP64 FPU 곱셈기를 활용하여, 동시에 2개의 FP32(P0, P1), 4개의 FP16(P0 ~ P3), 또는 8개의 FP8(P0 ~ P7)데이터를 병렬로 연산할 수 있는 기본적인 FPU의 구조를 보인 예시도이다.
도 3은 거대 인공신경망 가속기에서 지원되는 연산 데이터 타입 및 타입별 연산 성능을 테이블 형태로 보인 예시도이다.
도 4는 본 발명의 일 실시예에 따른 부동소수점 연산기를 이용한 엠에이씨(MAC) 장치의 개략적인 구성을 보인 예시도이다.
도 5는 도 4에 있어서, 입력 분할 제어기의 동작을 설명하기 위하여 보인 예시도이다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법의 일 실시예를 설명한다.
이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
상술한 바와 같이, 기본적인 부동소수점 연산기(FPU)의 경우, 서로 다른 데이터 타입(즉, 크기가 크거나 작은 데이터 타입)의 부동소수점 데이터를 연산하기 위해서는, 각 데이터 타입을 위한 별도의 부동소수점 연산기(FPU)가 존재해야 하는 문제점이 있었다. 하지만 종래에는 이러한 문제점을 개선하여, 큰 데이터 타입(예 : FP64)을 연산할 수 있는 하나의 부동소수점 연산기를 통해 그 보다 작은 다양한 데이터 타입(예 : FP32, FP16, FP8)의 부동소수점 데이터를 연산할 수 있을 뿐 아니라, 작은 크기의 데이터 타입에 대한 병렬 연산을 지원할 수 있도록 하였다.
하지만, 종래기술에서는 부동소수점 연산기에서 하드웨어적으로 연산할 수 있는 데이터 타입의 최대 크기가 제한되는 문제점이 있었다. 즉, 하드웨어적으로 구현된 부동소수점 연산기에서 처리할 수 있는 데이터 타입(예 : FP16, BF16, FP8 등)의 크기보다 더 큰 데이터 타입(즉, FP32)에 대한 연산을 수행할 수 없는 문제점이 있었다.
이에 따라 본 발명은 MAC 연산 시 부동소수점 연산기에서 하드웨어적으로 연산할 수 있도록 구현된 부동소수점 데이터 타입(예 : FP16 또는 FP8)보다 더 큰 부동소수점 데이터 타입(예 : FP32)에 대한 연산을 수행할 수 있도록 하는 장치와 방법을 제공하기 위한 것이다.
도 4는 본 발명의 일 실시예에 따른 부동소수점 연산기를 이용한 엠에이씨(MAC) 장치의 개략적인 구성을 보인 예시도이고, 도 5는 도 4에 있어서, 입력 분할 제어기(140)의 동작을 설명하기 위하여 보인 예시도이다.
도 4에 도시된 바와 같이, 부동소수점 연산기를 이용한 엠에이씨 장치는, 곱셈기(110), 덧셈기(120), 누적 레지스터(130), 및 입력 분할 제어기(140)를 포함한다.
곱셈기(110)는 32-bit 미만의 부동소수점 데이터를 곱셈 연산한다.
예컨대 곱셈기(110)는 1개의 TF32(19-bit), FP16(16-bit), 또는 BF16(16-bit) 데이터를 곱셈 연산하거나, 2개의 FP8(8-bit) 데이터를 곱셈 연산하거나, 1/4개의 FP32(32-bit) 데이터를 곱셈 연산한다.
이 때 1/4개의 FP32(32-bit) 데이터는, 입력 분할 제어기(140)에 의해 TF32(19-bit)로 분할되어 곱셈기(110)에 입력된다(도 5 참조).
이에 따라 하드웨어적으로 32-bit 미만의 부동소수점 데이터를 곱셈 연산하도록 구현된 곱셈기(110)는, 단지 입력 분할 제어기(140)에 의해 TF32(19-bit)로 분할되어 입력되는 데이터를 순차적으로 4번 곱셈 연산함으로써, 결과적으로 FP32(32-bit) 데이터를 곱셈 연산하게 된다.
이 때 1/4개의 FP32(32-bit) 데이터는, 입력 분할 제어기(140)에 의해 TF32(19-bit)로 분할되어 곱셈기(110)에 입력된다(도 5 참조).
이에 따라 하드웨어적으로 32-bit 미만의 부동소수점 데이터를 곱셈 연산하도록 구현된 곱셈기(110)는, 단지 입력 분할 제어기(140)에 의해 TF32(19-bit)로 분할되어 입력되는 데이터를 순차적으로 4번 곱셈 연산함으로써, 결과적으로 FP32(32-bit) 데이터를 곱셈 연산하게 된다.
덧셈기(120)는 곱셈기(110)에서 곱셈 연산된 부동소수점 데이터와 누적 레지스터(130)에 누적된 부동소수점 데이터를 덧셈 연산하는 것으로서, 본 실시예에서 최대 32-bit 이하의 부동소수점 데이터(즉, 곱셈기에서 처리하는 부동소수점 데이터 타입보다 적어도 2배 큰 데이터)를 덧셈 연산하도록 구현된다.
예컨대 덧셈기(120)는 1개의 FT32(32-bit)를 덧셈 연산하거나, 2개의 FP16(16-bit) 데이터를 덧셈 연산한다.
누적 레지스터(130)는, 본 실시예에서 최대 32-bit 이하의 부동소수점 데이터(즉, 덧셈기에서 처리하는 부동소수점 데이터 타입과 같은 데이터)를 누적할 수 있도록 구현된다.
입력 분할 제어기(140)는 2개의 FP32(32-bit) 부동소수점 데이터(즉, 부동소수점 피연산자)를 입력받고, 지정된 방식에 따라 각 FP32(32-bit) 부동소수점 데이터를 그 보다 작은 데이터 타입인 복수의 TF32(19-bit) 부동소수점 데이터로 분할한 후, 총 4번에 걸쳐 곱셈기(110)에 순차로 입력시킨다(도 5 참조).
도 5를 참조하면, 입력 분할 제어기(140)에 복수의 FP32 피연산자 A와 B가 입력될 경우, 입력 분할 제어기(140)는 각각 지정된 형태(또는 19-bit의 데이터 타입)의 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할한다.
즉, FP32 피연산자 A는 지정된 형태(또는 19-bit의 데이터 타입)의 복수의 부동소수점 데이터(Aa, Ab)로 분할되고, 또한 FP32 피연산자 B는 지정된 형태(또는 19-bit의 데이터 타입)의 복수의 부동소수점 데이터(Bc, Bd)로 분할된다.
이 때 FP32 피연산자 A와 B는 각각 1bit의 S(sign) 값, 8bit의 E(exponent) 값, 및 23bit의 M(mantissa) 값으로 구성된다.
그리고 입력 분할 제어기(140)에 의해 지정된 형태(예 : 19-bit의 데이터 타입)로 각각 분할된 부동소수점 데이터(Aa, Ab, Bc, Bd)는, 각각 1bit의 S(sign) 값, 8bit의 E(exponent) 값, 및 12bit의 M(mantissa) 값으로 구성된다.
그런데 FP32 피연산자 A와 B의 M(mantissa) 값의 크기는 23bit인 반면, 입력 분할 제어기(140)에 의해 분할된 부동소수점 데이터(Aa, Ab, Bc, Bd)의 M(mantissa) 값의 크기는 12bit이므로, FP32 피연산자 A와 B의 실제 데이터의 크기와는 1bit 차이가 발생하게 된다.
이에 따라 FP32 피연산자 A가 분할된 복수의 부동소수점 데이터(Aa, Ab) 중 어느 하나의 M(mantissa) 값에는 0(zero)이 입력되고(예 : Aa 참조), 피연산자 B가 분할된 복수의 부동소수점 데이터(Ba, Bb) 중 어느 하나의 M(mantissa) 값에는 0(zero)이 입력된다(예 : Bc 참조).
예컨대 FP32 피연산자 A가 분할된 복수의 부동소수점 데이터(Aa, Ab)의 M(mantissa) 값의 크기는 각각 12bit이지만, 제1 부동소수점 데이터(Aa)의 상위 11-bit까지는 분할되기 전 실제 데이터가 입력되고 최종 12-bit에는 0(zero)이 입력되며, 제2 부동소수점 데이터(Ab)의 총 12-bit에는 분할되기 전 실제 데이터가 모두 입력된다. 이와 마찬가지로 FP32 피연산자 B가 분할된 복수의 부동소수점 데이터(Bc, Bd)의 M(mantissa) 값의 크기는 각각 12bit이지만, 제3 부동소수점 데이터(Bc)의 상위 11-bit까지는 분할되기 전 실제 데이터가 입력되고 최종 12-bit에는 0(zero)이 입력되며 제4 부동소수점 데이터(Bd)의 총 12-bit에는 분할되기 전 실제 데이터가 모두 입력된다.
이 때 입력 분할 제어기(140)에서 FP32 피연산자 A와 B를 분할할 때, 가수(mantissa)의 상위 12-bit가 포함된 제1,3 부동소수점 데이터(Aa, Bc)에는, 곱셈기(110)가 분할된 부동소수점 데이터 중 상위 12-bit가 포함된 부동소수점 데이터임을 인식할 수 있도록 하기 위한 정보가 필요하지 않다. 하지만, 하위 12-bit가 포함된 제2,4 부동소수점 데이터(Ab, Bd)에는, 곱셈기(110)가 분할된 부동소수점 데이터 중 하위 12-bit(즉, 분할되기 전 피연산자의 23-bit의 M 값 중 하위 12-bit의 M 값)가 포함된 부동소수점 데이터임을 인식할 수 있도록 하기 위한 정보가 필요하다.
이 때 곱셈기(110)가 분할된 부동소수점 데이터 중 하위 12-bit(즉, 분할되기 전 피연산자의 23-bit의 M 값 중 하위 12-bit의 M 값)가 포함된 부동소수점 데이터임을 인식할 수 있도록 하기 위한 정보가 필요한 이유는, 제2,4 부동소수점 데이터(Ab, Bd)는, 분할되기 전 피연산자의 23-bit의 M 값 중 하위 12-bit의 M 값이, 분할 시 상위 12-bit M 값으로 변경되었기 때문에 실제 부동소수점 연산시에는 지수(exponent)를 조정할 필요가 있기 때문이다(즉, Aa와 Bc의 E 값과 Ab와 Bd의 E' 값에 차이가 있음).
이에 따라 본 실시예는 부동소수점 연산의 임플리싯 비트(implicit bit)을 처리하여(예 : 임플리싯 비트를 1 또는 0으로 처리), 곱셈기(110)에 입력된 부동소수점 데이터가, 분할된 부동소수점 데이터 중 상위 12-bit가 포함된 부동소수점 데이터인지, 아니면 분할된 부동소수점 데이터 중 하위 12-bit(즉, 분할되기 전 피연산자의 23-bit의 M 값 중 하위 12-bit의 M 값)가 포함된 부동소수점 데이터인지 인식할 수 있도록 한다.
예컨대 부동소수점 데이터의 실제 값은 수식()에 의해 계산된다. 이 때 해당 수식에서 가수(mantissa) M 앞에 항상 붙는 '1'이 임플리싯 비트(implicit bit)로서, 부동소수점 데이터에 대한 곱셈 및 덧셈을 수행하기 전, 가수(mantissa) 데이터 최상위 비트에 1을 이어 붙이는 동작이 필요하다. 그런데 본 실시예에서는 입력 분할 제어기(140)를 통해 분할된 제1-4 부동소수점 데이터(Aa, Ab, Bc, Bd) 중, 분할된 부동소수점 데이터 중 상위 12-bit가 포함된 부동소수점 데이터인 제1,3 부동소수점 데이터(Aa, Bc)에서만 임플리싯 비트(implicit bit)를 포함시켜 출력하고, 분할된 부동소수점 데이터 중 하위 12-bit가 포함된 부동소수점 데이터인 제2,4 부동소수점 데이터(Ab, Bd)에는 임플리싯 비트(implicit bit)를 포함시키지 않음으로써 구분될 수 있도록 한다.
도 5에 도시된 바와 같이, 입력 분할 제어기(140)에 의해 FP32 피연산자 A와 B가 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할되면, 입력 분할 제어기(140)는 아래의 수학식 1과 같은 분배 법칙에 따라, 4개의 쌍으로 조합하여, 해당하는 부동소수점 데이터(Aa, Ab, Bc, Bd) 쌍을 순차적으로 곱셈기(110)에 출력한다.
즉, 입력 분할 제어기(140)는 Aa와 Bc 쌍을 곱셈기(110)에 출력하고, Aa와 Bd 쌍을 곱셈기(110)에 출력하며, Ab와 Bc 쌍을 곱셈기(110)에 출력하고, Ab와 Bd 쌍을 곱셈기(110)에 순차로 출력한다.
이에 따라 곱셈기(110)는 FP32 피연산자 A와 B에 대하여 분할된 부동소수점 데이터(Aa, Ab, Bc, Bd)를 이용하여 총 4번의 곱셈을 수행함으로써 결과적으로 FP32(32-bit) 데이터를 곱셈 연산하게 된다.
이미 상술한 바와 같이 본 실시예에서 FP32 피연산자 A와 B를 직접 곱셈하지 못하고 분할하여 처리하는 이유는, 도 4에서와 같이 곱셈기가 하드웨어적으로 FP32 피연산자를 직접 연산할 수 없는 작은 데이터 타입으로 구현되었기 때문이다. 하지만 본 발명은 MAC 연산 시 부동소수점 연산기에서 하드웨어적으로 연산할 수 있도록 구현된 부동소수점 데이터 타입(예 : FP16 또는 FP8)보다 더 큰 부동소수점 데이터 타입(예 : FP32)에 대한 연산 하나를 수행할 수 있도록 한다.
즉, FPU 하드웨어에서 지원되는 TF32/FP16/BF16에 대한 MAC 연산의 경우, 한 번의 동작으로 하나의 연산을 매번 처리할 수 있으며, FP8 데이터는 한 번의 동작으로 두 개의 연산을 처리할 수 있다.
결과적으로 본 발명은 1의 TF32/FP16/BF16 성능, 2의 FP8 성능, 1/4의 FP32 성능을 지니게 되는 것이며, 기존에는 1/4의 FP32 성능조차도 구현할 수 없었다는 점에서 기술적 차이가 있다. 즉, 인공신경망 가속기에서 하드웨어로 구현된 FPU의 가장 큰 데이터 타입(예 : FP32)보다 2배 큰 데이터 타입(예 : FP16→FP32, FP32→FP64, FP64→FP128 등)에 대하여 1/4의 성능으로 연산을 지원할 수 있도록 하는 효과가 있는 것이다.
또한 본 발명은 연산하고자 하는 모든 데이터 타입(예 : FP32, TF32, FP16, BF16, FP8 등)에 대한 부동소수점 연산기를 하드웨어로 포함하고 있는 반도체를 보다 작은 면적으로 구현할 수 있도록 하는 효과가 있다.
이 때 본 실시예에 따라 FPU를 활용한 MAC 장치에서 설명한 데이터 타입은 예시적인 것이며 이를 한정하고자 하는 것이 아님에 유의한다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 기술적 보호범위는 아래의 특허청구범위에 의해서 정하여져야 할 것이다. 또한 본 명세서에서 설명된 구현은, 예컨대, 방법 또는 프로세스, 장치, 소프트웨어 프로그램, 데이터 스트림 또는 신호로 구현될 수 있다. 단일 형태의 구현의 맥락에서만 논의(예컨대, 방법으로서만 논의)되었더라도, 논의된 특징의 구현은 또한 다른 형태(예컨대, 장치 또는 프로그램)로도 구현될 수 있다. 장치는 적절한 하드웨어, 소프트웨어 및 펌웨어 등으로 구현될 수 있다. 방법은, 예컨대, 컴퓨터, 마이크로프로세서, 집적 회로 또는 프로그래밍 가능한 로직 디바이스 등을 포함하는 프로세싱 디바이스를 일반적으로 지칭하는 프로세서 등과 같은 장치에서 구현될 수 있다.
110 : 곱셈기
120 : 덧셈기
130 : 누적 레지스터
140 : 입력 분할 제어기

Claims (20)

  1. 부동소수점 데이터를 곱셈 연산하는 곱셈기;
    상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기;
    상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터; 및
    상기 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하여 상기 곱셈기에 입력시키는 입력 분할 제어기를 포함하되,
    상기 누적 레지스터는,
    상기 덧셈기에서 처리하는 부동소수점 데이터 타입과 같은 크기의 부동소수점 데이터를 누적할 수 있도록 구현된 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  2. 제 1항에 있어서,
    상기 덧셈기는,
    상기 곱셈기에서 처리하는 부동소수점 데이터 타입보다 적어도 2배 큰 데이터를 덧셈 연산하도록 구현된 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  3. 삭제
  4. 부동소수점 데이터를 곱셈 연산하는 곱셈기;
    상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기;
    상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터; 및
    상기 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하여 상기 곱셈기에 입력시키는 입력 분할 제어기를 포함하되,
    상기 입력 분할 제어기는,
    상기 분할한 복수의 부동소수점 데이터를 곱셈기에 입력시킬 때,
    지정된 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여, 해당하는 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  5. 제 4항에 있어서,
    상기 입력 분할 제어기는,
    아래의 수학식 1과 같은 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여 순차적으로 곱셈기에 입력시키되, Aa와 Bc 쌍, Aa와 Bd 쌍, Ab와 Bc 쌍, 및 Ab와 Bd 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
    (수학식 1)

  6. 부동소수점 데이터를 곱셈 연산하는 곱셈기;
    상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기;
    상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터; 및
    상기 곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하여 상기 곱셈기에 입력시키는 입력 분할 제어기를 포함하되,
    상기 입력 분할 제어기는,
    피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    M(mantissa)의 크기를 2로 나눈 값이 동일하도록 분할하며, 분할되는 부동소수점 데이터의 M(mantissa)의 크기가 동일하도록 맞추기 위하여, 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit를 추가하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  7. 제 6항에 있어서,
    상기 입력 분할 제어기는,
    분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit가 추가되는 경우,
    해당 부동소수점 데이터의 M(mantissa)의 최종 bit 값에 0(zero)을 입력하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  8. 제 6항에 있어서,
    상기 입력 분할 제어기는,
    피연산자 A가 분할된 제1 부동소수점 데이터(Aa)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제2 부동소수점 데이터(Ab)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력하고,
    피연산자 B가 분할된 제3 부동소수점 데이터(Bc)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제4 부동소수점 데이터(Bd)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력함으로써, 부동소수점 데이터를 분할하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  9. 제 6항에 있어서,
    상기 입력 분할 제어기는,
    분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 부동소수점 데이터의 M(mantissa) 앞에, 지정된 임플리싯 비트(implicit bit)를 부가함으로써, 곱셈기가 분할된 부동소수점 데이터 중 분할되기 전 피연산자의 M(mantissa) 값 중, 하위 bit의 M(mantissa) 값이 포함된 부동소수점 데이터임을 인식할 수 있도록 하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  10. 제 9항에 있어서,
    상기 입력 분할 제어기는,
    분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 제2,4 부동소수점 데이터(Ab, Bd)의 E(exponent) 값을,
    분할 시 변경된 M(mantissa)의 상위 bit 크기를 반영하여, 분할되는 부동소수점 데이터의 E'(exponent) 값을 조정하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치.
  11. 부동소수점 데이터를 곱셈 연산하는 곱셈기, 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기, 및 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터를 포함하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법에 있어서,
    곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 입력 분할 제어기가 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하는 단계; 및
    상기 입력 분할 제어기가 상기 분할된 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)를 상기 곱셈기에 입력시키는 단계를 포함하되,
    상기 누적 레지스터는,
    상기 덧셈기에서 처리하는 부동소수점 데이터 타입과 같은 크기의 부동소수점 데이터를 누적할 수 있도록 구현된 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  12. 제 11항에 있어서,
    상기 덧셈기는,
    상기 곱셈기에서 처리하는 부동소수점 데이터 타입보다 적어도 2배 큰 데이터를 덧셈 연산하도록 구현된 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  13. 삭제
  14. 부동소수점 데이터를 곱셈 연산하는 곱셈기, 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기, 및 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터를 포함하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법에 있어서,
    곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 입력 분할 제어기가 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하는 단계; 및
    상기 입력 분할 제어기가 상기 분할된 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)를 상기 곱셈기에 입력시키는 단계를 포함하되,
    상기 분할한 복수의 부동소수점 데이터를 곱셈기에 입력시킬 때,
    상기 입력 분할 제어기는,
    지정된 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여, 해당하는 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  15. 제 14항에 있어서,
    상기 부동소수점 데이터 쌍을 순차적으로 곱셈기에 입력시킬 때,
    상기 입력 분할 제어기는,
    아래의 수학식 1과 같은 분배 법칙에 따라 4개의 부동소수점 데이터 쌍으로 조합하여 순차적으로 곱셈기에 입력시키되, Aa와 Bc 쌍, Aa와 Bd 쌍, Ab와 Bc 쌍, 및 Ab와 Bd 쌍을 순차적으로 곱셈기에 입력시키는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
    (수학식 1)

  16. 부동소수점 데이터를 곱셈 연산하는 곱셈기, 상기 곱셈기에서 연산된 부동소수점 데이터와 누적 레지스터에 누적된 부동소수점 데이터를 덧셈 연산하는 덧셈기, 및 상기 덧셈기에서 연산된 부동소수점 데이터를 누적하는 누적 레지스터를 포함하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법에 있어서,
    곱셈기가 연산 처리할 수 있는 데이터 타입보다 큰 2개의 부동소수점 데이터(A,B)가 피연산자로서 입력될 경우, 입력 분할 제어기가 지정된 방식에 따라 각각 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)로 분할하는 단계; 및
    상기 입력 분할 제어기가 상기 분할된 복수의 부동소수점 데이터(Aa, Ab, Bc, Bd)를 상기 곱셈기에 입력시키는 단계를 포함하되,
    상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    상기 입력 분할 제어기는,
    M(mantissa)의 크기를 2로 나눈 값이 동일하도록 분할하며, 분할되는 부동소수점 데이터의 M(mantissa)의 크기가 동일하도록 맞추기 위하여, 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit를 추가하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  17. 제 16항에 있어서,
    상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    상기 분할되는 어느 하나의 부동소수점 데이터의 M(mantissa)에 1bit가 추가되는 경우,
    상기 입력 분할 제어기는,
    해당 부동소수점 데이터의 M(mantissa)의 최종 bit 값에 0(zero)을 입력하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  18. 제 16항에 있어서,
    상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    상기 입력 분할 제어기는,
    피연산자 A가 분할된 제1 부동소수점 데이터(Aa)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제2 부동소수점 데이터(Ab)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력하고,
    피연산자 B가 분할된 제3 부동소수점 데이터(Bc)의 M(mantissa)의 지정된 상위 bit까지는 분할되기 전 실제 데이터를 입력하고 최종 bit에는 0(zero)을 입력하며, 제4 부동소수점 데이터(Bd)의 M(mantissa)의 총 bit에는 분할되기 전 실제 데이터를 모두 입력함으로써, 부동소수점 데이터를 분할하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  19. 제 16항에 있어서,
    상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    상기 입력 분할 제어기는,
    분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 부동소수점 데이터의 M(mantissa) 앞에, 지정된 임플리싯 비트(implicit bit)를 부가함으로써, 곱셈기가 분할된 부동소수점 데이터 중 분할되기 전 피연산자의 M(mantissa) 값 중, 하위 bit의 M(mantissa) 값이 포함된 부동소수점 데이터임을 인식할 수 있도록 하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
  20. 제 19항에 있어서,
    상기 피연산자로서 입력되는 부동소수점 데이터를 분할할 때,
    상기 입력 분할 제어기는,
    분할되기 전 부동소수점 데이터의 M(mantissa)의 하위 bit가 포함된 제2,4 부동소수점 데이터(Ab, Bd)의 E(exponent) 값을,
    분할 시 변경된 M(mantissa)의 상위 bit 크기를 반영하여, 분할되는 부동소수점 데이터의 E'(exponent) 값을 조정하는 것을 특징으로 하는 부동소수점 연산기를 이용한 엠에이씨 장치의 제어 방법.
KR1020230044376A 2022-12-27 2023-04-04 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법 Active KR102848552B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/488,124 US20240211211A1 (en) 2022-12-27 2023-10-17 Mac apparatus using floating point unit and control method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220186111 2022-12-27
KR1020220186111 2022-12-27

Publications (2)

Publication Number Publication Date
KR20240103926A KR20240103926A (ko) 2024-07-04
KR102848552B1 true KR102848552B1 (ko) 2025-08-25

Family

ID=91913595

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230044376A Active KR102848552B1 (ko) 2022-12-27 2023-04-04 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법

Country Status (1)

Country Link
KR (1) KR102848552B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210011686A1 (en) * 2018-03-30 2021-01-14 Riken Arithmetic operation device and arithmetic operation system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220125114A (ko) * 2021-03-04 2022-09-14 삼성전자주식회사 인코딩 방법 및 장치
KR102447445B1 (ko) * 2021-03-08 2022-09-26 공재섭 행렬 연산의 효율적 병렬처리를 위한 연산 장치 및 이를 포함하는 메모리 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210011686A1 (en) * 2018-03-30 2021-01-14 Riken Arithmetic operation device and arithmetic operation system

Also Published As

Publication number Publication date
KR20240103926A (ko) 2024-07-04

Similar Documents

Publication Publication Date Title
US11797269B2 (en) Apparatus and methods for neural network operations supporting floating point numbers of short bit length
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
CN107291419B (zh) 用于神经网络处理器的浮点乘法器及浮点数乘法
CN106528044B (zh) 处理器、指令执行方法和计算系统
US20210349692A1 (en) Multiplier and multiplication method
EP3788470A1 (en) Block floating point computations using reduced bit-width vectors
JP2012069116A5 (ko)
CN112200300A (zh) 卷积神经网络运算方法及装置
CN111124361A (zh) 算术处理装置及其控制方法
CN116820393A (zh) 支持深度学习指令的多精度乘加单元及其应用方法
JP2025010412A (ja) 符号付きマルチワード乗算器
CN108733347B (zh) 一种数据处理方法及装置
CN112204517B (zh) 多输入浮点加法器
CN113010148B (zh) 一种适用于混合精度神经网络的定点乘加运算单元及方法
JP7137067B2 (ja) 演算処理装置、学習プログラム及び学習方法
JP2022022876A (ja) 畳み込みニューラルネットワーク処理装置
KR102848552B1 (ko) 부동소수점 연산기를 이용한 엠에이씨 장치 및 그 제어 방법
JP7188237B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム
US20240211211A1 (en) Mac apparatus using floating point unit and control method thereof
Ghavami et al. Boosting multiple multipliers packing on FPGA DSP blocks via truncation and compensation-based approximation
US12379897B2 (en) Processing unit, method and computer program for multiplication
CN115885250A (zh) 具有小占有面积算术逻辑单元的处理单元
US20140136582A1 (en) Method and apparatus for digital automatic gain control
JP6984762B2 (ja) 演算処理装置及び演算処理装置の制御方法
EP4600867A1 (en) Convolution processing method and electronic apparatus performing the same

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

F11 Ip right granted following substantive examination

Free format text: ST27 STATUS EVENT CODE: A-2-4-F10-F11-EXM-PR0701 (AS PROVIDED BY THE NATIONAL OFFICE)

PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-2-2-U10-U11-OTH-PR1002 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

Q13 Ip right document published

Free format text: ST27 STATUS EVENT CODE: A-4-4-Q10-Q13-NAP-PG1601 (AS PROVIDED BY THE NATIONAL OFFICE)