KR102737112B1 - 컴퓨팅 장치 및 이의 동작 방법 - Google Patents

컴퓨팅 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR102737112B1
KR102737112B1 KR1020220168833A KR20220168833A KR102737112B1 KR 102737112 B1 KR102737112 B1 KR 102737112B1 KR 1020220168833 A KR1020220168833 A KR 1020220168833A KR 20220168833 A KR20220168833 A KR 20220168833A KR 102737112 B1 KR102737112 B1 KR 102737112B1
Authority
KR
South Korea
Prior art keywords
value
bit
activation
received
bits
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
KR1020220168833A
Other languages
English (en)
Other versions
KR20240084631A (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 KR1020220168833A priority Critical patent/KR102737112B1/ko
Priority to US18/326,563 priority patent/US20240184533A1/en
Priority to CN202311477991.8A priority patent/CN118153646A/zh
Priority to EP23213890.9A priority patent/EP4383062A1/en
Publication of KR20240084631A publication Critical patent/KR20240084631A/ko
Application granted granted Critical
Publication of KR102737112B1 publication Critical patent/KR102737112B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/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 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
    • 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
    • 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/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • 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/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3832Less usual number representations

Landscapes

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

Abstract

컴퓨팅 장치가 개시된다. 일 실시 예는 가중치값을 저장하는 제1 버퍼, 활성화값을 저장하는 제2 버퍼, 및 연산기를 포함한다. 연산기는 제1 버퍼로부터 가중치값을 수신하고, 제2 버퍼로부터 활성화값을 수신하며, 수신된 가중치값에서 수신된 가중치값의 범위와 관련된 깊이 필드를 검출하고, 수신된 활성화값에서 수신된 활성화값의 범위와 관련된 깊이 필드를 검출하고, 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정하고, 수신된 가중치값을 처리하여 제1 피연산자를 결정하고, 수신된 활성화값을 처리하여 제2 피연산자를 결정하고, 결정된 제1 및 제2 피연산자를 기초로 연산을 수행하고, 연산 결과 및 결정된 깊이 필드를 기초로 상기 출력 데이터를 결정한다.

Description

컴퓨팅 장치 및 이의 동작 방법{COMPUTING APPARATUS AND OPERATING METHOD THEREOF}
아래의 개시는 컴퓨팅 장치 및 이의 동작 방법에 관한 것이다.
딥러닝 가속기(accelerator)는 심층 신경망을 구현하고 실행하기 위한 전용 하드웨어를 의미할 수 있다. 딥러닝 가속기는 일반적으로 복수의 코어를 가질 수 있고, 저정밀 연산, 새로운 데이터플로우 아키텍처(dataflow architecture) 또는 인-메모리 컴퓨팅 기능(in-memory computing capability)에 초점을 맞추고 설계될 수 있다.
딥러닝 가속기에서 32비트 부동 소수점(32-bits floating point)의 숫자 포맷이 사용되었지만, 많은 연산량을 임베디드/모바일 환경에서 가속하기 위하여 적은 비트길이(bitwidth)가 활용되기 시작하였다. 최근 고성능 워크스테이션의 GPU(Graphic Processing Unit)에서 8비트 고정 소수점(8-bits fixed point)의 숫자 포맷을 지원하고 있다. 32비트 부동 소수점 이외의 숫자 포맷으로 값을 표현하는 것을 딥러닝 분야에서 양자화(quantization)라 불린다.
기존의 고정 소수점의 숫자 포맷은 값의 표현(representation) 범위가 좁다. 예를 들어, 소수부(fractional parts)가 7비트이면 고정 소수점의 숫자 포맷은 최소 2-7(=1/128)의 값을 표현할 수 있다.
부동 소수점의 숫자 포맷은 지수부(exponent)의 길이가 고정된다. 이에 따라, 동일한 전체 비트길이(또는 동일한 비트수)일 때, 부동 소수점의 숫자 포맷은 고정 소수점의 숫자 포맷보다 적은 가수부(mantissa)를 표현한다.
전체 비트길이를 줄이면서도 딥러닝의 정확도를 향상시키기 위해, 새로운 숫자 포맷이 요구될 수 있고, 새로운 숫자 포맷의 데이터를 처리할 수 있는 컴퓨팅 장치(또는 딥러닝 가속기)가 필요할 수 있다.
일 실시 예에 따른 컴퓨팅 장치는 가중치값을 저장하는 제1 버퍼; 활성화값을 저장하는 제2 버퍼; 및 상기 제1 버퍼로부터 상기 가중치값을 수신하고, 상기 제2 버퍼로부터 상기 활성화값을 수신하며, 상기 수신된 가중치값에서 상기 수신된 가중치값의 범위와 관련된 깊이 필드를 검출하고, 상기 수신된 활성화값에서 상기 수신된 활성화값의 범위와 관련된 깊이 필드를 검출하고, 상기 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정하고, 상기 수신된 가중치값을 처리하여 제1 피연산자(operand)를 결정하고, 상기 수신된 활성화값을 처리하여 제2 피연산자를 결정하고, 상기 결정된 제1 및 제2 피연산자를 기초로 연산을 수행하고, 상기 연산 결과 및 상기 결정된 깊이 필드를 기초로 상기 출력 데이터를 결정하는 연산기를 포함한다.
상기 연산기는 상기 수신된 가중치값의 비트들 중 최상위 비트(most significant bit)를 제외한 나머지에서 처음으로 제1 값을 갖는 제1 타겟 비트를 검출하고, 상기 수신된 가중치값의 차상위 비트(second most significant bit)부터 상기 제1 타겟 비트까지의 비트들을 상기 수신된 가중치값의 깊이 필드로 검출하는 제1 깊이 필드 검출기; 및 상기 수신된 활성화값의 비트들 중 최상위 비트를 제외한 나머지에서 처음으로 제1 값을 갖는 제2 타겟 비트를 검출하고, 상기 수신된 활성화값의 차상위 비트부터 상기 제2 타겟 비트까지의 비트들을 상기 수신된 활성화값의 깊이 필드로 검출하는 제2 깊이 필드 검출기를 포함할 수 있다.
상기 제1 깊이 필드 검출기는 상기 수신된 가중치값의 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 가중치값의 차상위 비트를 상기 수신된 가중치값의 깊이 필드로 검출할 수 있고, 상기 제2 깊이 필드 검출기는 상기 수신된 활성화값의 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 활성화값의 차상위 비트를 상기 수신된 활성화값의 깊이 필드로 검출할 수 있다.
상기 연산기는 상기 제1 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 제1 비트 체크 회로; 및 상기 다음 비트가 상기 제1 값을 갖는 경우 상기 제1 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제1 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제1 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 제1 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제1 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제1 피연산자를 결정하는 제1 마스킹 회로를 포함할 수 있다.
상기 연산기는 상기 제2 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 제2 비트 체크 회로; 및 상기 다음 비트가 상기 제1 값을 갖는 경우 상기 제2 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제2 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제2 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 제2 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제2 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제2 피연산자를 결정하는 제2 마스킹 회로를 포함할 수 있다.
상기 연산기는 상기 검출된 각 깊이 필드에 대응되는 변환값을 결정하고, 상기 결정된 각 변환값을 합산하며, 상기 합산 결과를 이용하여 상기 출력 데이터의 깊이 필드를 결정할 수 있다.
상기 연산기는 상기 수신된 가중치값의 가수부 필드의 리딩(leading) 비트와 상기 수신된 활성화값의 가수부 필드의 리딩 비트 각각이 제2 값을 갖는 경우, 상기 연산 결과에 2-비트 시프트를 수행하고, 상기 수신된 가중치값의 가수부 필드의 리딩 비트 및 상기 수신된 활성화값의 가수부 필드의 리딩 비트 중 어느 하나가 상기 제2 값을 갖고 다른 하나가 제1 값을 갖는 경우, 상기 연산 결과에 1-비트 시프트를 수행하며, 상기 수신된 가중치값의 가수부 필드의 리딩 비트 및 상기 수신된 활성화값의 가수부 필드의 리딩 비트 각각이 상기 제1 값을 갖는 경우 상기 연산 결과에 시프트를 수행하지 않는 시프트 회로를 포함할 수 있다.
상기 연산기는 상기 연산 결과에서 일부 비트들을 추출하고, 상기 추출된 일부 비트들, 상기 결정된 깊이 필드, 상기 수신된 가중치값의 부호 비트, 및 상기 수신된 활성화값의 부호 비트를 이용하여 상기 출력 데이터를 결정하는 인코더를 포함할 수 있다.
상기 가중치값과 상기 활성화값은 제1 숫자 포맷을 가질 수 있다.
상기 컴퓨팅 장치는 상기 제1 숫자 포맷이 아닌 다른 숫자 포맷의 원시(raw) 가중치값 및 상기 제1 숫자 포맷이 아닌 다른 숫자 포맷의 원시 활성화값 각각을 상기 제1 숫자 포맷의 상기 가중치값과 상기 제1 숫자 포맷의 활성화값 각각으로 변환하는 변환기를 더 포함할 수 있다.
상기 변환기는 상기 원시 가중치값의 지수값과 미리 설정된 인자를 기초로 상기 가중치값의 깊이 필드를 결정하고, 상기 원시 가중치값의 지수값과 상기 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제1 나머지에 대응되는 비트를 결정하며, 상기 제1 나머지에 대응되는 비트와 상기 원시 가중치값의 가수부 비트들의 일부 비트들을 통해 상기 가중치값의 가수부 필드를 결정할 수 있다.
상기 변환기는 상기 원시 활성화값의 지수값과 상기 미리 설정된 인자를 기초로 상기 활성화값의 깊이 필드를 결정하고, 상기 원시 활성화값의 지수값과 상기 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제2 나머지에 대응되는 비트를 결정하며, 상기 제2 나머지에 대응되는 비트와 상기 원시 활성화값의 가수부 비트들의 일부 비트들을 통해 상기 활성화값의 가수부 필드를 결정할 수 있다.
일 실시 예에 따른 컴퓨팅 장치는 제1 숫자 포맷의 가중치값을 저장하는 제1 버퍼; 제2 숫자 포맷의 활성화값을 저장하는 제2 버퍼; 및 상기 제1 버퍼로부터 상기 가중치값을 수신하고, 상기 제2 버퍼로부터 상기 활성화값을 수신하며, 상기 수신된 가중치값에서 상기 수신된 가중치값의 범위와 관련된 깊이 필드를 검출하고, 상기 수신된 가중치값을 처리하여 피연산자를 결정하고, 상기 결정된 피연산자와 상기 수신된 활성화값의 가수부를 기초로 연산을 수행하고, 상기 검출된 깊이 필드, 상기 수신된 가중치값의 기반(base)값, 상기 수신된 활성화값의 지수부, 및 상기 연산 결과를 시프트하기 위한 시프트값을 기초로 출력 데이터의 지수부를 결정하고, 상기 결정된 지수부 및 상기 연산 결과를 기초로 상기 출력 데이터를 결정하는 연산기를 포함한다.
상기 연산기는 상기 수신된 가중치값의 비트들 중 최상위 비트를 제외한 나머지에서 처음으로 제1 값을 갖는 타겟 비트를 검출하고, 상기 수신된 가중치값의 차상위 비트부터 상기 타겟 비트까지의 비트들을 상기 수신된 가중치값의 깊이 필드로 검출하는 깊이 필드 검출기를 포함할 수 있다.
상기 깊이 필드 검출기는 상기 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 가중치값의 차상위 비트를 상기 수신된 가중치값의 깊이 필드로 검출할 수 있다.
상기 연산기는 상기 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 비트 체크 회로; 및 상기 다음 비트가 상기 제1 값을 갖는 경우 상기 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 피연산자를 결정하는 마스킹 회로를 포함할 수 있다.
상기 연산기는 상기 결정된 피연산자 및 상기 가수부를 기초로 이진 곱셈 연산을 수행할 수 있다.
상기 연산기는 상기 검출된 깊이 필드에 대응되는 변환값을 결정하고, 상기 결정된 변환값, 상기 기반값을 2의 k승(power)으로 표현했을 때 상기 k, 상기 수신된 가중치값의 가수부 필드의 리딩(leading) 비트에 따라 결정된 값, 상기 시프트값, 및 상기 수신된 활성화값의 지수부를 이용하여 상기 출력 데이터의 지수부를 결정할 수 있다.
상기 연산기는 상기 결정된 변환값과 상기 k 사이의 곱셈 결과에 상기 수신된 활성화값의 지수부의 부호(sign)를 적용하고, 상기 부호가 적용된 곱셈 결과, 상기 수신된 활성화값의 지수부, 상기 리딩 비트에 따라 결정된 값, 및 상기 시프트값을 합산하여 상기 출력 데이터의 지수부를 결정할 수 있다.
상기 리딩 비트가 제2 값을 갖는 경우 상기 리딩 비트에 따라 결정된 값은 마이너스 1에 해당하고, 상기 리딩 비트가 제1 값을 갖는 경우 상기 리딩 비트에 따라 결정된 값은 0에 해당할 수 있다.
상기 연산기는 상기 연산 결과에서 일부 비트들을 추출하고, 상기 추출된 일부 비트들 및 상기 결정된 지수부를 이용하여 상기 출력 데이터를 결정할 수 있다.
일 실시 예에 따른 컴퓨팅 장치의 동작 방법은 가중치값에서 상기 가중치값의 범위와 관련된 깊이 필드를 검출하는 단계; 활성화값에서 상기 활성화값의 범위와 관련된 깊이 필드를 검출하는 단계; 상기 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정하는 단계; 상기 가중치값을 처리하여 제1 피연산자를 결정하는 단계; 상기 활성화값을 처리하여 제2 피연산자를 결정하는 단계; 상기 결정된 제1 및 제2 피연산자를 기초로 연산을 수행하는 단계; 및 상기 연산 결과 및 상기 결정된 깊이 필드를 기초로 상기 출력 데이터를 결정하는 단계를 포함한다.
상기 가중치값의 값의 범위와 관련된 깊이 필드를 검출하는 단계는 상기 가중치값의 차상위 비트부터 처음으로 제1 값을 갖는 비트까지의 비트들을 상기 가중치값의 깊이 필드로 검출하는 단계를 포함할 수 있다.
상기 활성화값의 값의 범위와 관련된 깊이 필드를 검출하는 단계는 상기 활성화값의 차상위 비트부터 처음으로 제1 값을 갖는 비트까지의 비트들을 상기 활성화값의 깊이 필드로 검출하는 단계를 포함할 수 있다.
도 1은 일 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도이다.
도 2는 일 실시 예에 따른 제1 숫자 포맷을 설명하는 도면이다.
도 3과 도 4는 일 실시 예에 따른 제1 숫자 포맷과 제2 숫자 포맷의 맵핑을 설명하는 흐름도이다.
도 5a와 도 5b는 일 실시 예에 따른 컴퓨팅 장치의 연산기의 예시를 설명하는 블록도이다.
도 6은 일 실시 예에 따른 컴퓨팅 장치의 연산기의 다른 예시를 설명하는 블록도이다.
도 7은 일 실시 예에 따른 컴퓨팅 장치가 제1 숫자 포맷의 가중치값 및 제1 숫자 포맷의 활성화값을 기초로 연산을 수행하는 예시를 설명하는 흐름도이다.
도 8은 일 실시 예에 따른 컴퓨팅 장치가 제1 숫자 포맷의 가중치값과 제2 숫자 포맷의 활성화값을 기초로 연산을 수행하는 예시를 설명하는 흐름도이다.
도 9는 일 실시 예에 따른 컴퓨팅 장치의 숫자 포맷 변환을 설명하는 도면이다.
도 10은 일 실시 예에 따른 처리 시스템의 개략적인 블록도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도이다.
도 1을 참조하면, 컴퓨팅 장치(100)는 제1 버퍼(110), 제2 버퍼(120), 및 연산기(130)를 포함한다.
컴퓨팅 장치(100)는 딥러닝 가속기(예: 뉴럴 프로세서 등)에 해당할 수 있다.
연산기(130)는 연산 회로로 달리 표현될 수 있다.
제1 버퍼(110)는 가중치값들을 저장할 수 있다. 가중치값들의 숫자 포맷은 도 2를 통해 설명할 제1 숫자 포맷이거나 제2 숫자 포맷일 수 있다. 제2 숫자 포맷은 부동 소수점 포맷을 나타낸다.
제2 버퍼(120)는 활성화(activation)값들을 저장할 수 있다. 이러한 활성화값들은 입력 특징맵(input feature map)에 해당할 수 있다. 활성화값들은 제1 숫자 포맷이거나 제2 숫자 포맷일 수 있다.
연산기(130)는 입력 특징 맵 및 가중치값들을 기초로 연산을 수행하여 출력 특징 맵(output feature map)을 생성(또는 결정)할 수 있다.
연산기(130)는 제1 버퍼(110)로부터 가중치값을 수신할 수 있고, 제2 버퍼(120)로부터 활성화값을 수신할 수 있다.
수신된 가중치값과 수신된 활성화값 각각은, 예를 들어, 제1 숫자 포맷을 가질 수 있다. 이 경우, 연산기(130)는 수신된 가중치값에서 수신된 가중치값의 범위와 관련된 깊이 필드(또는 깊이 비트)를 검출할 수 있고, 수신된 활성화값에서 수신된 활성화값의 범위와 관련된 깊이 필드(또는 깊이 비트)를 검출할 수 있다. 연산기(130)는 검출된 각 깊이 필드를 기초로 출력 데이터의 지수부(exponent)를 결정할 수 있다. 연산기(130)는 수신된 가중치값을 처리하여 제1 피연산자(operand)를 결정할 수 있고, 수신된 활성화값을 처리하여 제2 피연산자를 결정할 수 있다. 연산기(130)는 결정된 제1 및 제2 피연산자를 기초로 연산(예: 이진 곱셈 연산)을 수행할 수 있고, 연산 결과 및 결정된 지수부를 기초로 출력 데이터를 결정할 수 있다. 수신된 가중치값과 수신된 활성화값 각각이 제1 숫자 포맷을 가질 때 연산기(130)의 동작에 대해선 도 5a와 도 5b를 통해 후술한다.
수신된 가중치값은, 예를 들어, 제1 숫자 포맷을 가질 수 있고, 수신된 활성화값은, 예를 들어, 제2 숫자 포맷을 가질 수 있다. 이 경우, 연산기(130)는 수신된 가중치값에서 수신된 가중치값의 범위와 관련된 깊이 필드를 검출할 수 있고, 수신된 가중치값을 처리하여 피연산자를 결정할 수 있다. 연산기(130)는 결정된 피연산자와 수신된 활성화값의 가수부를 기초로 연산(예: 이진 곱셈 연산)을 수행할 수 있다. 연산기(130)는 검출된 깊이 필드, 수신된 가중치값의 기반(base)값, 수신된 활성화값의 지수부, 및 연산 결과를 시프트하기 위한 시프트값을 기초로 출력 데이터의 지수부를 결정할 수 있다. 연산기(130)는 결정된 지수부 및 연산 결과를 기초로 출력 데이터를 결정할 수 있다. 수신된 가중치값이 제1 숫자 포맷을 갖고 수신된 활성화값이 제2 숫자 포맷을 가질 때 연산기(130)의 동작에 대해선 도 6을 통해 후술한다.
제1 숫자 포맷은 기존 딥러닝 가속기에서 사용되는 숫자 포맷(예: 부동 소수점 포맷 등)보다 작은 비트길이(bitwidth)를 가질 수 있다. 이에 따라, 제1 버퍼(110)의 사이즈는 부동 소수점 포맷의 가중치값들을 저장하는 기존 버퍼 사이즈보다 작을 수 있다. 제2 버퍼(120)의 사이즈는 부동 소수점 포맷의 활성화값들을 저장하는 기존 버퍼 사이즈보다 작을 수 있다. 컴퓨팅 장치(100)가 외부 메모리(예: 도 9를 통해 후술할 메모리(930))에서 가져오는 데이터량이 기존 딥러닝 가속기가 외부 메모리에서 가져오는 데이터량보다 작을 수 있어, 컴퓨팅 장치(100)는 기존 딥러닝 가속기보다 빠른 속도로 연산을 수행할 수 있다.
도 2는 일 실시 예에 따른 제1 숫자 포맷을 설명하는 도면이다.
도 2를 참조하면, 제1 숫자 포맷(200)은 부호(sign) 비트(210), 깊이 필드(또는 깊이 비트)(220), 및 가수부(mantissa) 필드(또는 가수부 비트)(230)를 포함할 수 있다.
부호 비트(210)는 제1 값(예: 1) 또는 제2 값(예: 0)일 수 있다. 부호 비트(210)가 1인 경우 제1 숫자 포맷(200)의 값은 음수(negative number)일 수 있고, 부호 비트(210)가 0인 경우 제1 숫자 포맷(200)의 값은 양수(positive number)일 수 있다.
부호 비트(210)는 제1 숫자 포맷(200)의 최상위 비트(MSB: Most Significant bit)일 수 있다.
깊이 필드(220)는 제1 숫자 포맷(200)의 값의 범위와 관련된 필드일 수 있다. 제1 숫자 포맷(200)에서 부호 비트(210)를 제외하고 차상위 비트(second MSB)부터 처음으로 "1"을 갖는 비트까지의 비트들이 깊이 필드(220)에 해당할 수 있다. 깊이값(d)은 깊이 필드(220)의 비트 개수 또는 깊이 필드(220)의 bitwidth를 나타낼 수 있다.
가수부 필드(230)는 제1 숫자 포맷(200)의 값을 표현하는 필드일 수 있다. 제1 숫자 포맷(200)에서 부호 비트(210)와 깊이 필드(220)를 제외한 나머지가 가수부 필드(230)일 수 있다.
일례로, 제1 숫자 포맷(200)을 가진 "1001xxxx"의 경우, MSB를 제외하고 네번째 비트가 처음으로 "1"을 가지므로, MSB의 다음 비트(즉, 두번째 비트 또는 차상위 비트)부터 네번째 비트까지의 비트들 "001"이 "1001xxxx"의 깊이 필드에 해당할 수 있고, 깊이값은 3일 수 있다. "1001xxxx"에서 "xxxx"는 "1001xxxx"의 값을 표현하는 가수부 필드일 수 있다. 다른 일례로, 제1 숫자 포맷(200)을 가진 "01001xxx"의 경우, 두번째 비트(즉, 차상위 비트)가 처음으로 "1"을 가지므로 두번째 비트 "1"이 "01001xxx"의 깊이 필드에 해당할 수 있고, 깊이값은 1일 수 있다. "01001xxx"에서 "001xxx"는 "01001xxx"의 값을 표현하는 가수부 필드일 수 있다.
제1 숫자 포맷(200)의 bitwidth는 부호 비트(210)의 개수, 깊이 필드(220)의 비트 개수(또는 깊이값), 및 가수부 필드(230)의 비트 개수의 합일 수 있다. 주어진 비트길이에서, 깊이 필드(220)와 가수부 필드(230)는 가변할 수 있다.
일 실시 예에 있어서, 제1 숫자 포맷(200)에는 기반(base)값 및/또는 규모(scale)값이 정의될 수 있다.
기반값은 제1 숫자 포맷(200)의 값의 표현 가능(representable) 범위와 관련된 값일 수 있다. 기반값이 클수록 제1 숫자 포맷(200)은 더 넓은 범위의 값을 표현할 수 있다. 예를 들어, 제1 숫자 포맷(200)은 기본적으로 1 미만의 소수부를 표현할 수 있고, 기반값이 클수록 제1 숫자 포맷(200)은 더 넓은 범위의 소수부(r)를 표현할 수 있다. 또한, 기반값(base)과 깊이값(d)에 따라, 소수부의 범위는 base1-d > r ≥ base-d로 결정될 수 있다. 기반값이 2k로 표현된다고 할 때, 위 소수부의 범위는 2k(1-d) > r ≥ 2- kd로 표현될 수 있다. 예를 들어, 기반값이 4(즉, k=2)이고 깊이값이 2인 경우, 제1 숫자 포맷(200)은 2-2 ~ 2-4의 범위를 표현할 수 있다. 소수부(r)의 범위는 2-2 > r ≥ 2-4일 수 있다. 기반값이 8(즉, k=3)이고 깊이값이 2인 경우, 제1 숫자 포맷(200)은 2-3 ~2-6의 범위를 표현할 수 있다. 소수부(r)의 범위는 2-3 > r ≥ 2-6일 수 있다. 동일한 깊이값일 때, 기반값이 클수록 제1 숫자 포맷(200)은 값을 더 정밀하고 넓게 표현할 수 있다.
규모값은 제1 숫자 포맷(200)이 1 이상의 값을 표현하기 위해 설정될 수 있다. 예를 들어, 제1 숫자 포맷(200)이 1 미만의 소수부를 표현하고 있다고 할 때, 1 미만의 소수부에 규모값이 적용됨으로써 제1 숫자 포맷(200)은 1 이상의 값을 표현할 수 있다.
일 실시 예에 따르면, 제1 숫자 포맷(200), 고정 소수점, 및 부동 소수점이 동일한 비트길이를 가진다고 할 때, 제1 숫자 포맷(200)은 고정 소수점보다 넓은 범위를 표현할 수 있고 부동 소수점보다 많은 가수부를 표현할 수 있다. 또한, 동일한 비트길이로 큰 값(예: 1에 가까운 값)을 표현하고자 할 때, 제1 숫자 포맷(200)은 부동 소수점보다 많은 가수부를 표현할 수 있고, 가수부의 비트 개수(또는 가수부 필드)가 고정되지 않고 가변할 수 있다. 이에 따라, 특정 범위(예: 1에 가까운 임의 값의 범위)에서, 제1 숫자 포맷(200)은 부동 소수점보다 가수부를 크게 표현할 수 있다.
아래에서, 부호 비트(210)가 생략되어 설명될 수 있는데, 부호 비트(210)가 생략된 것을 "부호없는(unsigned) 제1 숫자 포맷"이라 지칭한다.
도 3과 도 4는 일 실시 예에 따른 제1 숫자 포맷과 제2 숫자 포맷의 맵핑을 설명하는 흐름도이다.
도 3과 도 4에 도시된 예에서, 기반값은 2 k 이고, unsigned 제1 숫자 포맷 의 비트길이는 n일 수 있다. unsigned 제1 숫자 포맷은 n-bits일 수 있다.
단계 311에서, 컴퓨팅 장치(100)는 kn을 기초로 레귤러 필드 길이(regular field width)(rf)를 결정할 수 있다. 컴퓨팅 장치(100)는 에 따라 rf를 결정할 수 있다. 예를 들어, k=2이고 n=7인 경우, 컴퓨팅 장치(100)는 rf=5로 결정할 수 있다.
단계 313에서, 컴퓨팅 장치(100)는 1~rf 범위에서 깊이값(d)를 설정할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 d=1로 설정할 수 있고, 단계 329에서 d의 반복 지시가 있는 경우, d=2로 설정할 수 있다. 컴퓨팅 장치(100)는 d=1에서부터 d=rf까지 단계 315, 단계 317, 단계 319, 단계 321(또는 단계 323), 단계 325, 단계 327을 반복 수행할 수 있다.
단계 315에서, 컴퓨팅 장치(100)는 여러 변수들(예: 서브-지수부 비트(sub-exponent bits)(se), 공통 가수부 비트(common mantissa bits)(cm), 가수부 모듈러(mantissa modulo)(mm), 및 서브-지수부 코드(sub-exponent code)(sec))을 결정할 수 있다. 컴퓨팅 장치(100)는 에 따라 se를 결정할 수 있고, 에 따라 cm을 결정할 수 있으며, 에 따라 mm을 결정할 수 있고, 에 따라 sec를 결정할 수 있다. 예를 들어, 주어진 n=7, k=2 및 d=1에서, 컴퓨팅 장치(100)는 se=1로 결정할 수 있고, mm=0으로 결정할 수 있고, sec=1로 결정할 수 있다. 컴퓨팅 장치(100)는 cm=5이므로, cm=xxxxx로 결정할 수 있다.
단계 317에서, 컴퓨팅 장치(100)는 1~k 범위에서 서브-지수부 레벨(sub-exponent level)(sel)을 설정할 수 있다. 예를 들어, 주어진 k=2에서, 컴퓨팅 장치(100)는 1~2 범위에서 sel을 설정할 수 있다. 예를 들어, 컴퓨팅 장치는 sel=1로 설정할 수 있고, 단계 319, 단계 321(또는 단계 323), 단계 325, 및 단계 327을 수행한 경우, sel=2로 설정할 수 있다. 컴퓨팅 장치(100)는 sel=1에서부터 sel=k까지 계 319, 단계 321(또는 단계 323), 단계 325, 및 단계 327을 반복 수행할 수 있다.
단계 319에서, 컴퓨팅 장치(100)는 mmsel 이상인지 여부를 결정할 수 있다. 컴퓨팅 장치(100)는 mmsel 이상인 경우 단계 321에서 에 따라 em을 계산할 수 있고, 에 따라 esec를 결정할 수 있으며, 에 따라 sec를 업데이트할 수 있다. em은 유효 가수부(effective mantissa)를 나타낼 수 있고, esec는 유효 서브-지수부 코드(effective sub-exponent code)를 나타낼 수 있다. 컴퓨팅 장치(100)는 mmsel 보다 작은 경우 단계 323에서 에 따라 em을 결정할 수 있고, 에 따라 esec를 결정할 수 있으며, 에 따라 sec를 업데이트할 수 있다.
예를 들어, mm=0인 경우 mmsel 보다 작으므로, 컴퓨팅 장치(100)는 단계 323에서 em=xxxxx로 결정할 수 있고, esec=bin(1)=1로 결정할 수 있으며, sec를 0으로 업데이트할 수 있다.
단계 325에서, 컴퓨팅 장치(100)는 제1 규칙 {leading (d-1) 0s, first 1, esec, em-bits}에 따라 부호화를 수행하여, unsigned 제1 숫자 포맷의 이진 코드를 생성할 수 있다. 예를 들어, 주어진 d=1과 sel=1에서, esec=1이고 em=xxxxx일 수 있다. 이 경우, 컴퓨팅 장치(100)는 제1 규칙에 따라 제1 숫자 포맷(200)의 "11xxxxx"를 생성할 수 있다.
단계 327에서, 컴퓨팅 장치(100)는 제2 규칙 {1.xx...em-bits * 2-(( d ―1)* k + sel )}에 따라, 생성된 이진 코드를 부동 소수점의 숫자로 디코딩(또는 변환)할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 "11xxxxx"에서 "xxxxx"는 em-bits에 해당하고, k=2, d=1, sel=1일 수 있어, "11xxxxx"를 1.xxxxx*2-1로 변환할 수 있다. 참고로, "*"는 곱셈 기호를 나타낸다.
컴퓨팅 장치(100)는 단계 317로 돌아가서 sel=2로 설정할 수 있고, 단계 319, 단계 323, 단계 325, 및 단계 327을 반복할 수 있다. 이러한 반복에 의해, 컴퓨팅 장치(100)는 unsigned 제1 숫자 포맷의 "10xxxxx"를 생성할 수 있고, 생성된 "10xxxxx"를 부동 소수점 포맷의 1.xxxxx*2-2로 변환할 수 있다.
sel=k에서, 컴퓨팅 장치(100)가 단계 319, 단계 321(또는 단계 323), 단계 325, 및 단계 327을 반복 수행한 경우, 단계 329에서 d를 반복할 것으로 결정할 수 있다.
컴퓨팅 장치(100)는 단계 313으로 돌아가 d=2로 설정할 수 있다.
d=2일 때, 컴퓨팅 장치(100)는 단계 315, 단계 317, 단계 319, 단계 321(또는 단계 323), 단계 325, 단계 327을 반복할 수 있다. 이러한 반복에 의해, 컴퓨팅 장치(100)는 제1 숫자 포맷(200)의 "011xxxx"를 생성할 수 있고, 제1 숫자 포맷(200)의 "011xxxx"를 부동 소수점 포맷의 1.xxxxx*2-3으로 변환할 수 있으며, 제1 숫자 포맷(200)의 "010xxxx"를 생성할 수 있고, 제1 숫자 포맷(200)의 "010xxxx"를 부동 소수점 포맷의 1.xxxxx*2-4로 변환할 수 있다.
d=rf에서, 컴퓨팅 장치(100)가 단계 315, 단계 317, 단계 319, 단계 321(또는 단계 323), 단계 325, 단계 327을 반복 수행한 경우, 도 4의 단계411을 수행할 수 있다.
도 4를 참조하면, 단계 411에서, 컴퓨팅 장치(100)는 sec를 초기화할 수 있다. 컴퓨팅 장치(100)는 sec=2 n rf ―1―1에 따라 sec를 초기화할 수 있다. 예를 들어, 주어진 n=7 및 rf=5에서, 컴퓨팅 장치(100)는 sec=1로 초기화할 수 있다.
단계 413에서, 컴퓨팅 장치(100)는 1~(2 n rf ―1―1)의 범위에서 sel을 설정할 수 있다. 컴퓨팅 장치(100)는 sel=1로 설정할 수 있다. n=7 및 rf=5일 때 2 n rf ―1―1는 1로 계산되므로, n=7 및 rf=5일 때 sel은 1로만 설정될 수 있다.
단계 415에서, 컴퓨팅 장치(100)는 esec를 결정할 수 있고, sec를 업데이트할 수 있다. 컴퓨팅 장치(100)는 에 따라 esec를 결정할 수 있고, 에 따라 sec를 업데이트할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 esec=bin(1)=1로 결정할 수 있고, sec를 0으로 업데이트할 수 있다.
단계 417에서, 컴퓨팅 장치(100)는 제3 규칙 {leading (rf) 0s, esec, 1-가수부 bit}에 따라 부호화를 수행하여, unsigned 제1 숫자 포맷의 이진 코드를 생성할 수 있다. 예를 들어, rf=5이고 esec=1인 경우, 컴퓨팅 장치(100)는 제1 숫자 포맷(200)의 "000001x"를 생성할 수 있다.
단계 419에서, 컴퓨팅 장치(100)는 제4 규칙 {1.x...1-가수부 비트 * 2-( rf * k + sel )}에 따라, 생성된 이진 코드를 부동 소수점의 숫자로 디코딩(또는 변환)할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 제4 규칙에 따라 제1 숫자 포맷(200)의 "000001x"를 1.x*2-11로 변환할 수 있다.
컴퓨팅 장치(100)는 단계 413에서 sel=2로 설정할 수 있고, 단계 415 내지 단계 419를 반복할 수 있다. n=7 및 rf=5일 때 2 n rf ―1―1는 1로 계산되므로, n=7 및 rf=5일 때 sel은 1로만 설정될 수 있다. 이 경우, 컴퓨팅 장치(100)는 단계 415 내지 단계 419를 반복하지 않을 수 있다.
sel의 반복이 완료되는 경우, 컴퓨팅 장치(100)는 단계 421에서 최하위 위치(least significant position)(lsp)를 계산할 수 있다. 컴퓨팅 장치(100)는 에 따라 lsp를 계산할 수 있다. 예를 들어, k=2, n=7, 및 rf=5일 때, 컴퓨팅 장치(100)는 lsp=12를 계산할 수 있다.
단계 421에서, 컴퓨팅 장치(100)는 unsigned 제1 숫자 포맷의 "000001"를 1.0*2-lsp로 변환할 수 있고, unsigned 제1 숫자 포맷의 "000000"를 0.0으로 변환할 수 있다.
아래 표 1은 k=2 및 n=7일 때의 unsigned 제1 숫자 포맷, unsigned 제1 숫자 포맷이 변환된 제2 숫자 포맷, 및 제3 숫자 포맷(예: 고정 소수점)의 예시를 보여준다.
unsigned 제1 숫자 포맷 제2 숫자 포맷 제3 숫자 포맷
11xxxxx 1.xxxxx… *2-1 0.1xxxxx…
10xxxxx 1.xxxxx… *2-2 0.01xxxxx…
011xxxx 1.xxxx… *2-3 0.001xxxx…
010xxxx 1.xxxx…*2-4 0.0001xxxx…
0011xxx 1.xxx…*2-5 0.00001xxx…
0010xxx 1.xxx…*2-6 0.000001xxx…
00011xx 1.xx…*2-7 0.0000001xx…
00010xx 1.xx…*2-8 0.00000001xx…
000011x 1.x…*2-9 0.000000001x…
000010x 1.x…*2-10 0.0000000001x…
000001x 1.x…*2-11 0.00000000001x…
0000001 1.0…*2-12 0.000000000001…
0000000 0.0…*2-12 0.000000000000…
위 표 1의 11xxxxx와 10xxxxx는 d=1일 때 생성된 이진 코드들이고, 011xxxx와 010xxxx는 d=2일 때 생성된 이진 코드들이며, 0011xxx 와 0010xxx는 d=3일 때 생성된 이진 코드들이다. 00011xx와 00010xx 는 d=4일 때 생성된 이진 코드들이고, 000011x와 000010x는 d=5일 때 생성된 이진 코드들이다. 000001x는 도 4의 단계 417을 통해 생성된 이진 코드이고, 0000001와 0000000는 도 4의 단계 421에 의해 생성된 이진 코드들이다.위 표 1의 제2 숫자 포맷과 제3 숫자 포맷에서 …는 0들을 나타낼 수 있다.
아래 표 2는 k=3 및 n=7일 때의 unsigned 제1 숫자 포맷, unsigned 제1 숫자 포맷이 변환된 제2 숫자 포맷, 및 제3 숫자 포맷의 예시를 보여준다.
unsigned 제1 숫자 포맷 제2 숫자 포맷 제3 숫자 포맷
11xxxxx 1.xxxxx…*2-1 0.1xxxxx…
101xxxx 1.xxxxx…*2-2 0.01xxxxx…
100xxxx 1.xxxx…*2-3 0.001xxxx…
011xxxx 1.xxxx…*2-4 0.0001xxxx…
0101xxx 1.xxx…*2-5 0.00001xxx…
0100xxx 1.xxx…*2-6 0.000001xxx…
0011xxx 1.xxx…*2-7 0.0000001xxx…
00101xx 1.xx…*2-8 0.00000001xx…
00100xx 1.xx…*2-9 0.000000001xx…
00011xx 1.xx…*2-10 0.0000000001xx…
000101x 1.x…*2-11 0.00000000001x…
000100x 1.x…*2-12 0.000000000001x…
000011x 1.x…*2-13 0.0000000000001x…
000010x 1.x…*2-14 0.00000000000001x…
000001x 1.x…*2-15 0.000000000000001x…
0000001 1.0…*2-16 0.0000000000000001…
0000000 0.0…*2-16 0.0000000000000000…
위 표 2의 제2 숫자 포맷과 제3 숫자 포맷에서 …는 0들을 나타낼 수 있다.일 실시 예에 있어서, 컴퓨팅 장치(100)는 숫자 포맷들 사이의 맵핑 관계(예: 위 표 1 또는 표 2)에 기초하여, 제2 숫자 포맷의 데이터(예: 가중치값 및/또는 활성화값) 또는 제3 숫자 포맷의 데이터를 제1 숫자 포맷(200)의 데이터로 변환할 수 있다.
도 5a와 도 5b는 일 실시 예에 따른 컴퓨팅 장치의 연산기의 예시를 설명하는 블록도이다.
도 5a를 참조하면, 연산기(500)는 제1 및 제2 마스킹 회로(501, 507), 제1 및 제2 깊이 필드 검출기(503, 509), 제1 및 제2 비트 체크 회로(505, 511), 가산기(513), 곱셈 회로(515), 시프트(shift) 회로(517), 및 인코더(519)를 포함할 수 있다.
연산기(500)는 연산기(130)의 일 예시일 수 있다.
아래에서 자세히 설명하겠지만, 제1 및 제2 깊이 필드 검출기(503, 509) 각각은 주어진 비트들 중에서 MSB를 제외한 나머지에서 처음으로 "1"을 갖는 비트를 검출할 수 있어, 제1 및 제2 깊이 필드 검출기(503, 509) 각각은 첫번째(first) 1 검출기로 표현될 수 있다.
연산기(500)는 제1 버퍼(110)로부터 제1 숫자 포맷(200)의 가중치값을 수신할 수 있다. 연산기(500)는 가중치값을 제1 마스킹 회로(501)와 제1 깊이 필드 검출기(503)로 전달할 수 있다.
제1 깊이 필드 검출기(503)는 가중치값의 비트들 중 최상위 비트(MSB)를 제외한 나머지에서 처음으로 "1"을 갖는 비트(이하, "제1 타겟 비트"라 지칭함)를 검출할 수 있다. 제1 깊이 필드 검출기(503)는 가중치값의 차상위 비트부터 제1 타겟 비트까지의 비트들을 가중치값의 깊이 필드로 검출할 수 있다.
예를 들어, 도 5b에 도시된 예에서, 제1 깊이 필드 검출기(503)는 제1 숫자 포맷(200)의 가중치값 "10011xxx"를 입력받은 경우, "10011xxx"에서 MSB를 제외하고 나머지에서 제1 타겟 비트를 검출(또는 결정)할 수 있다. 제1 깊이 필드 검출기(503)는 차상위 비트(즉, 두번째 비트)는 "0"을 가지므로, 차상위 비트의 다음 비트(즉, 세번째 비트)가 "1"을 갖는지 체크할 수 있다. 제1 깊이 필드 검출기(503)는 세번째 비트가 "0"을 가지므로, 세번째 비트의 다음 비트(즉, 네번째 비트)가 "1"을 갖는지 체크할 수 있다. 제1 깊이 필드 검출기(503)는 네번째 비트가 "1"을 가지므로, 네번째 비트(550)를 제1 타겟 비트로 검출(또는 결정)할 수 있다. 제1 깊이 필드 검출기(503)는 "10011xxx"의 차상위 비트부터 네번째 비트(550)까지의 비트들 "001"을 "10011xxx"의 깊이 필드로 검출(또는 결정)할 수 있다.
다른 예를 들어, 제1 깊이 필드 검출기(503)는 제1 숫자 포맷(200)의 "111xxxxx"를 입력받은 경우, "111xxxxx"에서 MSB를 제외하고 차상위 비트가 처음으로 "1"을 갖는 것으로 검출할 수 있다. 제1 깊이 필드 검출기(503)는 "111xxxxx"의 차상위 비트 "1"을 "111xxxxx"의 깊이 필드로 검출(또는 결정)할 수 있다.
제1 깊이 필드 검출기(503)는 가중치값의 깊이 필드에 대응되는 변환값을 결정할 수 있다. 변환값은, 예를 들어, 정수(integer)일 수 있다. 깊이 필드와 변환값은 아래 표 3의 예시와 같이 미리 맵핑되어 있을 수 있고, 이러한 맵핑 관계에 따라 제1 깊이 필드 검출기(503)는 가중치값의 깊이 필드에 대응되는 변환값을 결정할 수 있다.
깊이 필드 변환값
01 1
001 2
0001 3
깊이 필드와 변환값 사이의 맵핑 관계는 위 표 3으로 제한되지 않는다.이하, 가중치값의 깊이 필드에 대응되는 변환값을 "제1 변환값"이라 지칭한다. 제1 깊이 필드 검출기(503)는 제1 변환값을 가산기(513)로 전달할 수 있다.
제1 비트 체크 회로(505)는 가중치값의 제1 타겟 비트의 다음 비트가 어떤 값을 갖는지 체크할 수 있다. 제1 비트 체크 회로(505)는 체크 결과(예: 0 또는 1)를 시프트 회로(517)로 전달할 수 있다. 예를 들어, 제1 비트 체크 회로(505)는 가중치값 "10011xxx"의 네번째 비트(550)가 제1 타겟 비트이므로, 네번째 비트(550)의 다음 비트(즉, 다섯번째 비트)(560)가 어떤 값을 갖는지 체크할 수 있다. 제1 비트 체크 회로(505)는 "10011xxx"의 다섯번째 비트(560)가 "1"을 갖는 것으로 체크할 수 있다. 제1 비트 체크 회로(505)는 체크 결과(즉, 다섯번째 비트(560)의 값)를 시프트 회로(517)로 전달할 수 있다. 가중치값 "10011xxx"의 차상위 비트부터 제1 타겟 비트까지의 비트들은 깊이 필드에 해당할 수 있고, 제1 타겟 비트의 다음 비트(560)부터 가중치값의 최하위 비트(LSB: Least Significant Bit)까지의 비트들은 가수부 필드에 해당할 수 있다. 제1 비트 체크 회로(505)는 가중치값의 가수부 필드의 리딩(leading) 비트(또는 가수부 필드의 첫번째 비트)가 어떤 값을 갖는지 체크할 수 있다. 다섯번째 비트(560)는 "10011xxx"의 가수부 필드의 리딩(leading) 비트(또는 첫번째 비트)일 수 있어, 제1 비트 체크 회로(505)는 가중치값의 가수부 필드의 리딩 비트가 어떤 값을 갖는지 체크할 수 있고, 체크 결과를 시프트 회로(517)로 전달할 수 있다.
도 5a에 도시된 예에서, 제1 깊이 필드 검출기(503)와 제1 비트 체크 회로(505)가 구분되어 있으나 이는 예시적인 사항일 뿐, 제1 깊이 필드 검출기(503)와 제1 비트 체크 회로(505)는 하나의 회로로 구현될 수 있다.
제1 마스킹 회로(501)는 가중치값을 처리하여 제1 피연산자를 결정할 수 있다. 제1 마스킹 회로(501)는 제1 비트 체크 회로(505)로부터 제1 타겟 비트의 다음 비트가 어떤 값을 갖는지를 수신할 수 있다. 제1 마스킹 회로(501)는 제1 비트 체크 회로(505)로부터 "1"을 수신하는 경우 제1 타겟 비트에 마스킹을 수행할 수 있다. 제1 마스킹 회로(501)는 제1 비트 체크 회로(505)로부터 "0"을 수신하는 경우 제1 타겟 비트의 다음 비트를 "1"로 변환할 수 있고, 제1 타겟 비트에 마스킹을 수행할 수 있다. 마스킹은, 예를 들어, 비트의 값을 "0"으로 변환하는 처리를 포함할 수 있다. 제1 마스킹 회로(501)는 마스킹 결과에서 일정 개수(또는 정해진 위치)의 비트들을 추출할 수 있고, 추출된 비트들을 제1 피연산자로 결정하여 곱셈 회로(515)에 전달할 수 있다. 추출되는 비트들의 개수는 곱셈기(515)의 크기에 따라 결정될 수 있다.
예를 들어, 제1 마스킹 회로(501)는 도 5b의 가중치값 "10011xxx"의 제1 타겟 비트(540)의 다음 비트(560)(또는 가수부 필드의 리딩 비트)가 "1"을 가지므로 제1 비트 체크 회로(505)로부터 "1"을 수신할 수 있다. 제1 마스킹 회로(501)는 제1 타겟 비트(550)의 값을 "1"에서 "0"으로 변환(또는 변경)할 수 있다. 곱셈기(515)가, 예를 들어, 6-bits*6-bits 이진 곱셈 회로인 경우, 제1 마스킹 회로(501)는 제1 타겟 비트(550)의 값이 변환된 가중치값 "10001xxx"에서 가수부 필드를 포함하는 하위 6 비트들 "001xxx"을 추출할 수 있다. 제1 마스킹 회로(501)는 추출된 비트들 "001xxx"을 곱셈 회로(515)의 제1 피연산자로 결정할 수 있고, 제1 피연산자 "001xxx"을 곱셈 회로(515)로 전달할 수 있다.
다른 예를 들어, 제1 마스킹 회로(501)는 가중치값 "000010xx"의 제1 타겟 비트의 다음 비트가 "0"을 가지므로 제1 비트 체크 회로(505)로부터 "0"을 수신할 수 있다. 제1 마스킹 회로(501)는 제1 타겟 비트의 다음 비트의 값을 "1"로 변환할 수 있고, 제1 타겟 비트의 값을 "1"에서 "0"으로 변환할 수 있다. 곱셈기(515)가, 예를 들어, 6-bits*6-bits 이진 곱셈 회로인 경우, 제1 마스킹 회로(501)는 제1 타겟 비트의 값과 제1 타겟 비트의 다음 비트의 값이 변환된 가중치값 "000001xx"에서 가수부 필드를 포함하는 하위 6 비트들 "0001xx"을 추출할 수 있다. 제1 마스킹 회로(501)는 추출된 비트들 "0001xx"을 제1 피연산자로 결정할 수 있고, 제1 피연산자 "0001xx"을 곱셈 회로(515)로 전달할 수 있다.
연산기(500)는 제2 버퍼(120)로부터 제1 숫자 포맷(200)의 활성화값을 수신할 수 있다. 연산기(500)는 활성화값을 제2 마스킹 회로(507)와 제2 깊이 필드 검출기(509)로 전달할 수 있다.
제2 마스킹 회로(507)에 대한 설명은 제1 마스킹 회로(501)에 대한 설명이 적용될 수 있고, 제2 깊이 필드 검출기(509)에 대한 설명은 제1 깊이 필드 검출기(503)에 대한 설명이 적용될 수 있다.
제2 마스킹 회로(507)는 활성화값을 처리하여 제2 피연산자를 결정할 수 있고, 제2 피연산자를 곱셈 회로(515)에 전달할 수 있다.
제2 깊이 필드 검출기(509)는 활성화값의 비트들 중 MSB를 제외한 나머지에서 처음으로 "1"을 갖는 비트(이하, "제2 타겟 비트"라 지칭함)를 검출할 수 있고, 활성화값의 차상위 비트부터 제2 타겟 비트까지의 비트들을 활성화값의 깊이 필드로 검출할 수 있다. 예를 들어, 제2 깊이 필드 검출기(509)는 제1 숫자 포맷(200)의 "1010xxxx"를 입력받은 경우, "1010xxxx"의 세번째 비트를 제2 타겟 비트로 검출(또는 결정)할 수 있다. 제2 깊이 필드 검출기(509)는 "1010xxxx"의 차상위 비트부터 제2 타겟 비트까지의 비트들 "01"을 "1010xxxx"의 깊이 필드로 검출(또는 결정)할 수 있다.
제2 깊이 필드 검출기(509)는 활성화값의 깊이 필드에 대응되는 변환값을 결정할 수 있다. 예를 들어, 제2 깊이 필드 검출기(509)는 위 표 3을 참조하여 활성화값의 깊이 필드에 대응되는 변환값을 결정할 수 있다. 이하, 활성화값의 깊이 필드에 대응되는 변환값을 "제2 변환값"이라 지칭한다. 제2 깊이 필드 검출기(509)는 제2 변환값을 가산기(513)로 전달할 수 있다.
가산기(513)는 제1 깊이 필드 검출기(503)로부터 수신한 제1 변환값과 제2 깊이 필드 검출기(509)로부터 수신한 제2 변환값을 합산할 수 있다. 가산기(513)는 합산 결과를 인코더(519)로 전달할 수 있다. 예를 들어, 가산기(513)는 제1 깊이 필드 검출기(503)로부터 제1 변환값(예: 2)을 수신할 수 있고, 제2 깊이 필드 검출기(509)로부터 제2 변환값(예: 1)을 수신할 수 있다. 이 경우, 가산기(513)는 합산 결과(예: 3)를 인코더(519)로 전달할 수 있다.
곱셈 회로(515)는 제1 피연산자 및 제2 피연산자를 기초로 이진 곱셈 연산을 수행할 수 있다.
곱셈 회로(515)가 예를 들어 6-bits*6-bits 이진 곱셈 회로인 경우, 곱셈 회로(515)의 연산 결과의 비트길이(bitwidth)(또는 사이즈)는 12-bits일 수 있다.
시프트 회로(517)는 곱셈 회로(515)로부터 곱셈 회로(515)의 연산 결과를 수신할 수 있다. 시프트 회로(517)는 제1 비트 체크 회로(505)의 체크 결과(예: 0 또는 1)와 제2 비트 체크 회로(511)의 체크 결과(예: 0 또는 1)를 기초로 곱셈 회로(515)의 연산 결과에 시프트를 수행할 수 있다. 예를 들어, 시프트 회로(517)는 제1 비트 체크 회로(505)로부터 "0"을 수신할 수 있고, 비트 체크 회로(511)로부터 "0"을 수신할 수 있다. 이 경우, 시프트 회로(517)는 곱셈 회로(515)의 연산 결과를 오른쪽으로 2-bits만큼 시프트할 수 있다. 시프트 회로(517)는 제1 비트 체크 회로(505)와 제2 비트 체크 회로(511) 중 어느 하나로부터 "0"을 수신할 수 있고, 다른 하나로부터 "1"을 수신할 수 있다. 이 경우, 시프트 회로(517)는 곱셈 회로(515)의 연산 결과를 오른쪽으로 1-bit만큼 시프트할 수 있다. 시프트 회로(517)는 제1 비트 체크 회로(505)와 제2 비트 체크 회로(511)로부터 "1"을 수신할 수 있다. 이 경우, 시프트 회로(517)는 곱셈 회로(515)의 연산 결과에 시프트를 수행하지 않을 수 있다.
시프트 회로(517)는 곱셈 회로(515)의 연산 결과에 시프트를 수행한 경우 시프트 결과를 인코더(519)에 전달할 수 있다. 시프트 회로(517)는 곱셈 회로(515)의 연산 결과에 시프트를 수행하지 않은 경우 곱셈 회로(515)의 연산 결과를 인코더(519)에 전달할 수 있다.
인코더(519)는 시프트 회로(517)로부터 수신한 데이터(예: 시프트 결과 또는 곱셈 회로(515)의 연산 결과)와 가산기(513)로부터 수신한 합산 결과를 기초로 출력 데이터를 결정할 수 있다. 출력 데이터는 제1 숫자 포맷(200)을 가질 수 있다. 출력 데이터의 bitwidth는 가중치값의 bitwidth 및 활성화값의 bitwidth와 동일할 수 있다. 가중치값의 bitwidth 및 활성화값의 bitwidth가 8-bits이면 출력 데이터의 bitwidth는 8-bits이다.
인코더(519)는 가중치값의 부호 비트와 활성화값의 부호 비트를 이용하여 출력 데이터의 부호 비트를 결정할 수 있다. 인코더(519)는 가중치값의 부호 비트와 활성화값의 부호 비트가 서로 동일하면, 출력 데이터의 부호 비트를 "0"으로 결정할 수 있다. 인코더(519)는 가중치값의 부호 비트와 활성화값의 부호 비트가 서로 다르면, 출력 데이터의 부호 비트를 "1"로 결정할 수 있다.
인코더(519)는 가산기(513)로부터 수신한 합산 결과를 이용하여 출력 데이터의 깊이 필드를 결정할 수 있다. 인코더(519)는 위 표 3을 참조하여 합산 결과와 맵핑된 깊이 필드를 찾을 수 있고, 찾은 깊이 필드를 출력 데이터의 깊이 필드로 결정할 수 있다. 예를 들어, 인코더(519)는 가산기(513)로부터 합산 결과 "3"을 수신하는 경우, 위 표 3을 참조하여 "3"과 맵핑된 "0001"을 출력 데이터의 깊이 필드로 결정할 수 있다.
인코더(519)는 시프트 회로(517)로부터 수신한 데이터(예: shift 결과 또는 곱셈 회로(515)의 연산 결과)의 상위 비트들을 추출할 수 있고, 추출한 상위 비트들을 출력 데이터의 가수부 필드로 결정할 수 있다. 예를 들어, 출력 데이터의 bitwidth는 8-bits일 수 있다. 출력 데이터의 부호 비트는 1개 일 수 있다. 출력 데이터의 깊이 필드가 "0001"인 경우 깊이 필드의 비트들의 개수는 4개이다. 인코더(519)는 출력 데이터의 8-bits 중에서 3-bits가 가수부 필드의 크기인 것을 알 수 있다. 인코더(519)는 시프트 회로(517)로부터 수신한 데이터의 상위 3개의 비트들을 추출할 수 있고, 추출된 비트들을 출력 데이터의 가수부 필드로 결정할 수 있다. 추출된 비트들이 예를 들어 "abc"인 경우, 인코더(519)는 "00001abc"를 출력 데이터로 결정할 수 있다.
인코더(519)는 출력 데이터를 출력 버퍼에 저장할 수 있다.
아래 표 4는 컴퓨팅 장치(100)가 여러 숫자 포맷들을 이용했을 때 정확도와 consistency의 예시를 보여준다.
부동 소수점 부동 소수점 고정 소수점 제1 숫자 포맷
bitwidth 32
(baseline)
16
(half)
10 11 8 11 8 9
가수부 23 10 4 5 7 10 5 6
히든 비트 1 1 1 1 0 0 1 1
정확도(%) 79.814 79.8 79.69 79.718 79.188 79.8 79.748 79.812
정확도 차이(%) - 0.014 0.124 0.096 0.626 0.014 0.066 0.002
Consistency(%) - 99.922 96.646 98.376 94.096 99.282 97.826 99.012
1-consistency(%) - 0.078 3.354 1.624 5.904 0.718 2.174 0.988
위 표 4에서, 정확도는 이미지 분류의 정확도를 나타내고, consistency는 부동 소수점 32(baseline)를 이용했을 때의 이미지 분류 결과와 동일한 정도를 나타낸다. 컴퓨팅 장치(100)가 제1 숫자 포맷을 이용한 경우 상대적으로 적은 bitwidth에서도 보다 높은 정확도를 보여줄 수 있다. 제1 숫자 포맷이 다른 숫자 포맷보다 적은 bitwidth를 가져, 컴퓨팅 장치(100)가 외부 메모리에서 가져오는 데이터량과 통신량이 감소할 수 있고, 에너지 효율이 향상될 수 있다.
도 6은 일 실시 예에 따른 컴퓨팅 장치의 연산기의 다른 예시를 설명하는 블록도이다.
도 6을 참조하면, 연산기(600)는 마스킹 회로(601), 깊이 필드 검출기(603) 비트 체크 회로(605), 곱셈 회로(607), 시프트값 검출기(609), 시프트 회로(611), 가산기(613), 및 조합 회로(615)를 포함할 수 있다.
연산기(600)는 연산기(130)의 일 예시일 수 있다.
깊이 필드 검출기(603)는 가중치값의 깊이 필드를 검출할 수 있어 깊이 필드 검출기로 표현될 수 있다.
연산기(600)는 제1 숫자 포맷(200)의 가중치값과 제2 숫자 포맷(예: 부동 소수점 포맷)의 활성화값을 기초로 연산을 수행하여 출력 데이터(예: 출력 특징값)를 결정할 수 있다. 다시 말해, 연산기(600)는 가중치값과 활성화값이 서로 다른 숫자 포맷을 가졌을 때, 가중치값과 활성화값을 기초로 출력 데이터를 결정할 수 있다. 도 6을 통해 설명할 내용은 가중치값이 제2 숫자 포맷을 갖고 활성화값이 제1 숫자 포맷(200)을 가질 때에도 적용될 수 있다.
연산기(600)는 제1 버퍼(110)로부터 제1 숫자 포맷(200)의 가중치값을 수신할 수 있다. 연산기(600)는 가중치값을 마스킹 회로(601)와 깊이 필드 검출기(603)로 전달할 수 있다.
마스킹 회로(601)는 가중치값을 처리하여 곱셈 회로(607)의 제1 피연산자를 결정할 수 있다. 마스킹 회로(601)에 대한 설명은 도 5a의 제1 마스킹 회로(501)에 대한 설명이 적용될 수 있다.
연산기(600)는 제2 버퍼(120)로부터 제2 숫자 포맷의 활성화값을 수신할 수 있다. 연산기(600)는 활성화값의 지수부를 가산기(613)로 전달할 수 있고, 활성화값의 가수부와 "1"을 곱셈 회로(607)에 전달할 수 있다. 이 때, "1"은 활성화값의 가수부의 앞 단에 부가되는 비트일 수 있다. 이로 인해, "1"이 부가된 가수부가 곱셈 회로(607)의 제2 피연산자가 될 수 있다. 예를 들어, 활성화값의 가수부가 10-bits의 "0100110101"인 경우, "0100110101"의 앞 단에 "1"이 부가된 "10100110101"이 곱셈 회로(607)의 제2 피연산자가 될 수 있다.
가중치값의 사이즈는, 예를 들어, 8-bits일 수 있고, 활성화값의 사이즈는, 예를 들어, 16-bits일 수 있다. 활성화값의 가수부의 사이즈는 10-bits일 수 있다. 곱셈 회로(607)는, 예를 들어, 6-bits*11-bits 이진 곱셈 회로일 수 있다. 가중치값의 사이즈, 활성화값의 사이즈, 및 곱셈 회로(607)의 사이즈는 전술한 예시로 제한되지 않는다.
깊이 필드 검출기(603)는 가중치값에서 가중치값의 범위와 관련된 깊이 필드를 검출할 수 있다. 예를 들어, 깊이 필드 검출기(603)는 가중치값의 비트들 중 MSB를 제외한 나머지에서 처음으로 제1 값을 갖는 비트(이하, "타겟 비트"라 지칭함)를 검출할 수 있다. 깊이 필드 검출기(603)는 가중치값의 차상위 비트부터 타겟 비트까지의 비트들을 가중치값의 깊이 필드로 검출(또는 결정)할 수 있다. 깊이 필드 검출기(603)의 깊이 필드 검출 동작은 도 5a의 제1 깊이 필드 검출기(503)의 깊이 필드 검출 동작이 적용될 수 있다.
깊이 필드 검출기(603)는 가중치값의 검출된 깊이 필드에 대응되는 변환값을 결정할 수 있다. 깊이 필드 검출기(603)는 깊이 필드와 변환값 사이의 미리 정해진 맵핑 관계(예: 위 표 3)를 통해, 가중치값의 검출된 깊이 필드에 대응되는 변환값을 결정할 수 있다. 예를 들어, 깊이 필드 검출기(603)는 깊이 필드 "001"을 검출한 경우 위 표 3을 통해 "001"에 대응되는 변환값을 "2"로 결정할 수 있다.
깊이 필드 검출기(603)는 활성화값의 지수부의 부호가 플러스인지 아니면 마이너스지인지 체크할 수 있다.
깊이 필드 검출기(603)는 가중치값의 기반값을 체크할 수 있다.
깊이 필드 검출기(603)는 가중치값의 기반값을 2의 k승(power)로 표현했을 때의 k와 결정된 변환값의 곱셈 결과에 활성화값의 지수부의 부호를 적용할 수 있고, 이러한 적용 결과를 가산기(613)로 전달할 수 있다. 예를 들어, 가중치값의 기반값이 4인 경우 기반값은 22로 표현될 수 있다. 결정된 변환값이 "2"인 경우, 깊이 필드 검출기(603)는 기반값의 지수부(k) "2"와 결정된 변환값 "2"를 곱하여 "4"를 계산할 수 있다. 활성화값의 지수부가 마이너스인 경우, 깊이 필드 검출기(603)는 곱셈 결과 "4"에 마이너스를 적용하여 "-4"를 가산기(613)로 전달할 수 있다.
비트 체크 회로(605)는 가중치값의 타겟 비트의 다음 비트가 어떤 값을 갖는지 체크할 수 있고, 체크 결과(예: 0 또는 1)에 따른 값을 가산기(613)로 전달할 수 있다. 예를 들어, 비트 체크 회로(605)는 가중치값의 타겟 비트의 다음 비트가 "0"을 가지면 "-1"을 가산기(613)로 전달할 수 있고, 가중치값의 타겟 비트의 다음 비트가 "1"을 가지면 "0"을 가산기(613)로 전달할 수 있다.
도 6에 도시된 예에서, 깊이 필드 검출기(603)와 비트 체크 회로(605)가 구분되어 있으나 이는 예시적인 사항일 뿐, 깊이 필드 검출기(603)와 비트 체크 회로(605)는 하나의 회로로 구현될 수 있다.
곱셈 회로(607)는 마스킹 회로(601)로부터 수신한 제1 피연산자와 제2 피연산자를 기초로 연산(예: 이진 곱셈 연산)을 수행할 수 있다. 곱셈 회로(607)가 전술한 예와 같이 6-bits*11-bits 이진 곱셈 회로일 수 있고, 곱셈 회로(607)는 6-bits의 제1 피연산자와 11-bits의 제2 피연산자를 입력 받을 수 있다. 곱셈 회로(607)의 연산 결과의 사이즈는 17-bits일 수 있다.
곱셈 회로(607)는 연산 결과를 시프트값 검출기(609)로 전달할 수 있다.
시프트값 검출기(609)는 곱셈 회로(607)의 연산 결과를 정규화하기 위한 시프트값을 결정할 수 있다. 예를 들어, 곱셈 회로(607)의 연산 결과가 17-bits의 "01xxxxxxxxxxxxxxx"일 수 있다. "01xxxxxxxxxxxxxxx"는 "0.01xxxxxxxxxxxxxxx"에 대응될 수 있다. 시프트값 검출기(609)는 "0.01xxxxxxxxxxxxxxx"를 "1.xxxxxxxxxxxxxxx*2-2"로 정규화하기 위한 시프트값을 "-2"로 결정할 수 있다.
시프트값 검출기(609)는 결정된 시프트값을 가산기(613)와 시프트 회로(611)로 전달할 수 있다.
가산기(613)는 깊이 필드 검출기(603)로부터 수신한 값, 활성화값의 지수부, 비트 체크 회로(605)로부터 수신한 값, 및 시프트값 검출기(609)로부터 수신한 시프트값을 이용하여 출력 데이터의 지수부를 결정할 수 있다. 예를 들어, 활성화값의 지수부가 "-1"일 수 있다. 가산기(613)는 깊이 필드 검출기(603)로부터 "-4"를 수신하고, 비트 체크 회로(605)로부터 "-1"을 수신하고, 시프트값 검출기(609)로부터 "-2"를 수신한 경우, "-4", "-1", "-1", "-2"를 합산하여 출력 데이터의 지수부 "-8"을 결정할 수 있다.
시프트 회로(611)는 시프트값을 기초로 곱셈 회로(607)의 연산 결과를 시프트할 수 있고, 시프트된 연산 결과에서 가수부 비트들 중 일부를 추출할 수 있다. 예를 들어, 시프트 회로(611)는 시프트값이 "-2"이고 곱셈 회로(607)의 연산 결과가 "01xxxxxxxxxxxxxxx"인 경우, "0.01xxxxxxxxxxxxxxx"를 "1.xxxxxxxxxxxxxxx*2-2"로 시프트(또는 정규화)할 수 있다. 출력 데이터가 16-bits의 부동 소수점 포맷이면, 16-bits 중 10-bits는 부동 소수점 포맷의 가수부 비트들에 해당한다. 시프트 회로(611)는 "1.xxxxxxxxxxxxxxx*2-2"의 가수부 비트들 "xxxxxxxxxxxxxxx" 중에서 상위 10개 비트들을 추출할 수 있다.
시프트 회로(611)는 추출된 비트들을 조합 회로(615)로 전달할 수 있다.
조합 회로(615)는 시프트 회로(611)로부터 수신한 비트들, 가산기(613)로부터 수신한 지수부, 가중치값의 부호 비트, 및 활성화값의 부호 비트를 기초로 출력 데이터를 결정할 수 있다. 예를 들어, 조합 회로(615)는 가중치값의 부호 비트 및 활성화값의 부호 비트가 서로 동일하면 출력 데이터의 부호 비트를 "0"으로 결정할 수 있다. 조합 회로(615)는 가산기(613)로부터 지수부를 수신하고 시프트 회로(611)로부터 10-bits의 "xxxxxxxxxx"를 수신한 경우, 16-bits의 부동 소수점 포맷의 출력 데이터 "0eeeeexxxxxxxxxx"를 결정할 수 있다. 여기서, "eeeee"는 지수부의 이진 코드에 해당할 수 있다.
실시 예에 있어서, 조합 회로(615)는 출력 데이터의 부호 비트를 저장하는 제1 레지스터, 가산기(613)로부터 수신한 지수부를 저장하는 제2 레지스터, 및 시프트 회로(611)로부터 수신한 비트들을 저장하는 제3 레지스터를 포함할 수 있다. 조합 회로(615)는 가중치값의 부호 비트 및 활성화값의 부호 비트가 서로 동일하면 제1 레지스터에 "0"을 기록할 수 있다.
도 7은 일 실시 예에 따른 컴퓨팅 장치가 제1 숫자 포맷의 가중치값 및 제1 숫자 포맷의 활성화값을 기초로 연산을 수행하는 예시를 설명하는 흐름도이다.
도 7을 참조하면, 단계 710에서, 컴퓨팅 장치(100)는 가중치값에서 가중치값의 범위와 관련된 깊이 필드를 검출할 수 있다. 예를 들어, 컴퓨팅 장치(100)의 연산기(130)(예: 연산기(500))는 가중치값의 비트들 중 MSB를 제외한 나머지에서 처음으로 제1 값(예: 1)을 갖는 제1 타겟 비트를 검출할 수 있다. 연산기(130)는 가중치값의 차상위 비트부터 제1 타겟 비트까지의 비트들을 가중치값의 깊이 필드로 검출할 수 있다. 가중치값의 차상위 비트가 처음으로 제1 값을 갖는 경우 연산기(130)는 가중치값의 차상위 비트를 가중치값의 깊이 필드로 검출할 수 있다.
단계 720에서, 컴퓨팅 장치(100)는 활성화값에서 활성화값의 범위와 관련된 깊이 필드를 검출할 수 있다. 예를 들어, 연산기(130)는 활성화값의 비트들 중 MSB를 제외한 나머지에서 처음으로 제1 값을 갖는 제2 타겟 비트를 검출할 수 있다. 연산기(130)는 활성화값의 차상위 비트부터 제2 타겟 비트까지의 비트들을 활성화값의 깊이 필드로 검출할 수 있다. 연산기(130)는 활성화값의 차상위 비트가 처음으로 제1 값을 갖는 경우 활성화값의 차상위 비트를 활성화값의 깊이 필드로 검출할 수 있다.
단계 730에서, 컴퓨팅 장치(100)는 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 검출된 각 깊이 필드에 대응되는 변환값을 결정할 수 있고, 결정된 각 변환값을 합산할 수 있으며, 합산 결과를 이용하여 출력 데이터의 깊이 필드를 결정할 수 있다.
단계 740에서, 컴퓨팅 장치(100)는 가중치값을 처리하여 제1 피연산자를 결정할 수 있다. 예를 들어, 연산기(130)는 제1 타겟 비트의 다음 비트가 제1 값을 갖는지 여부를 판단할 수 있다. 연산기(130)는 제1 타겟 비트의 다음 비트가 제1 값을 갖는 경우 제1 타겟 비트의 값을 제1 값에서 제2 값(예: 0)으로 변경할 수 있다. 연산기(130)는 제2 값을 갖는 제1 타겟 비트, 제1 타겟 비트의 다음 비트, 및 제1 타겟 비트의 다음 비트의 이후 비트를 포함하는 제1 피연산자를 결정할 수 있다. 연산기(130)는 제1 타겟 비트의 다음 비트가 제2 값을 갖는 경우 제1 타겟 비트의 다음 비트의 값을 제2 값에서 제1 값으로 변경할 수 있다. 연산기(130)는 제1 타겟 비트의 값을 제1 값에서 제2 값으로 변경할 수 있다. 연산기(130)는 제2 값을 갖는 제1 타겟 비트, 제1 값을 갖는 다음 비트, 및 다음 비트의 이후 비트를 포함하는 제1 피연산자를 결정할 수 있다.
단계 750에서, 컴퓨팅 장치(100)는 활성화값을 처리하여 제2 피연산자를 결정할 수 있다. 예를 들어, 연산기(130)는 제2 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단할 수 있다. 연산기(130)는 제2 타겟 비트의 다음 비트가 제1 값을 갖는 경우 제2 타겟 비트의 값을 제1 값에서 제2 값으로 변경할 수 있다. 연산기(130)는 제2 값을 갖는 제2 타겟 비트, 제2 타겟 비트의 다음 비트, 및 다음 비트의 이후 비트를 포함하는 제2 피연산자를 결정할 수 있다. 연산기(130)는 제2 타겟 비트의 다음 비트가 제2 값을 갖는 경우 제2 타겟 비트의 다음 비트의 값을 제2 값에서 제1 값으로 변경할 수 있다. 연산기(130)는 제2 타겟 비트의 값을 제1 값에서 제2 값으로 변경할 수 있다. 연산기(130)는 제2 값을 갖는 제2 타겟 비트, 제1 값을 갖는 다음 비트, 및 다음 비트의 이후 비트를 포함하는 제2 피연산자를 결정할 수 있다.
단계 760에서, 컴퓨팅 장치(100)는 결정된 제1 및 제2 피연산자를 기초로 연산을 수행할 수 있다. 예를 들어, 연산기(130)는 결정된 제1 및 제2 피연산자를 기초로 이진 곱셈 연산을 수행할 수 있다.
단계 770에서, 컴퓨팅 장치(100)는 연산 결과 및 결정된 깊이 필드를 기초로 출력 데이터를 결정할 수 있다. 연산기(130)는 연산 결과에서 일부 비트들을 추출할 수 있다. 추출된 일부 비트들은 출력 데이터의 가수부 필드에 해당할 수 있다. 연산기(130)는 추출된 일부 비트들, 결정된 깊이 필드, 가중치값의 부호 비트, 및 활성화값의 부호 비트를 이용하여 출력 데이터를 결정할 수 있다.
실시 예에 있어서, 연산기(130)는 가중치값의 가수부 필드의 리딩 비트와 활성화값의 가수부 필드의 리딩 비트 각각이 제2 값(예: 0)을 갖는 경우, 연산 결과에 2-비트 시프트(예: 오른쪽 2-비트 시프트)를 수행할 수 있다. 연산기(130)는 2-비트 시프트된 연산 결과에서 일부 비트들을 추출할 수 있다. 추출된 일부 비트들은 출력 데이터의 가수부 필드에 해당할 수 있다. 연산기(130)는 가중치값의 가수부 필드의 리딩 비트 및 활성화값의 가수부 필드의 리딩 비트 중 어느 하나가 제2 값을 갖고 다른 하나가 제1 값을 갖는 경우, 연산 결과에 1-비트 시프트(예: 오른쪽 1-비트 시프트)를 수행할 수 있다. 연산기(130)는 1-비트 시프트된 연산 결과에서 일부 비트들을 추출할 수 있다. 추출된 일부 비트들은 출력 데이터의 가수부 필드에 해당할 수 있다. 연산기(130)는 가중치값의 가수부 필드의 리딩 비트 및 활성화값의 가수부 필드의 리딩 비트 각각이 제1 값을 갖는 경우 연산 결과에 시프트를 수행하지 않을 수 있다.
실시 예에 있어서, 컴퓨팅 장치(100)는 제1 숫자 포맷(200)이 아닌 다른 숫자 포맷(예: 제2 숫자 포맷, 제3 숫자 포맷 등)의 원시(raw) 가중치값 및 제1 숫자 포맷(200)이 아닌 다른 숫자 포맷(예: 제2 숫자 포맷, 제3 숫자 포맷 등)의 원시 활성화값 각각을 제1 숫자 포맷(200)의 가중치값과 제1 숫자 포맷(200)의 활성화값 각각으로 변환할 수 있다. 도 9를 통해 자세히 설명하겠지만, 컴퓨팅 장치(100)는 원시 가중치값의 지수값과 미리 설정된 인자(예: 상술한 k(또는 기반값))를 기초로 가중치값의 깊이 필드를 결정할 수 있다. 컴퓨팅 장치(100)는 원시 가중치값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제1 나머지에 대응되는 비트를 결정할 수 있다. 컴퓨팅 장치(100)는 제1 나머지에 대응되는 비트와 원시 가중치값의 가수부 비트들의 일부 비트들을 통해 가중치값의 가수부 필드를 결정할 수 있다. 컴퓨팅 장치(100)는 원시 활성화값의 지수값과 미리 설정된 인자를 기초로 활성화값의 깊이 필드를 결정할 수 있다. 컴퓨팅 장치(100)는 원시 활성화값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제2 나머지에 대응되는 비트를 결정할 수 있다. 컴퓨팅 장치(100)는 제2 나머지에 대응되는 비트와 원시 활성화값의 가수부 비트들의 일부 비트들을 통해 활성화값의 가수부 필드를 결정할 수 있다.
도 1 내지 도 6을 통해 설명한 내용들은 도 7의 컴퓨팅 장치의 동작에 적용될 수 있다.
도 8은 일 실시 예에 따른 컴퓨팅 장치가 제1 숫자 포맷의 가중치값과 제2 숫자 포맷의 활성화값을 기초로 연산을 수행하는 예시를 설명하는 흐름도이다.
도 8을 참조하면, 단계 810에서, 컴퓨팅 장치(100)는 가중치값에서 가중치값의 범위와 관련된 깊이 필드를 검출할 수 있다. 예를 들어, 컴퓨팅 장치(100)의 연산기(130)(예: 연산기(600))는 가중치값의 비트들 중 MSB를 제외한 나머지에서 처음으로 제1 값을 갖는 타겟 비트를 검출할 수 있다. 연산기(130)는 가중치값의 차상위 비트부터 타겟 비트까지의 비트들을 가중치값의 깊이 필드로 검출할 수 있다.
단계 820에서, 컴퓨팅 장치(100)는 가중치값을 처리하여 피연산자를 결정할 수 있다. 단계 820에 대한 설명은 단계 740에 대한 설명이 적용될 수 있다.
단계 830에서, 컴퓨팅 장치(100)는 결정된 피연산자와 활성화값의 가수부를 기초로 연산을 수행할 수 있다. 예를 들어, 연산기(130)는 결정된 피연산자와 활성화값의 가수부를 기초로 이진 곱셈 연산을 수행할 수 있다.
실시 예에 있어서, 연산기(130)는 활성화값의 가수부의 앞 단에 "1"을 부가할 수 있고, 결정된 피연산자와 "1"이 부가된 가수부를 기초로 이진 곱셈 연산을 수행할 수 있다.
단계 840에서, 컴퓨팅 장치(100)는 검출된 깊이 필드, 가중치값의 기반값, 활성화값의 지수부, 및 연산 결과를 시프트하기 위한 시프트값을 기초로 출력 데이터의 지수부를 결정할 수 있다. 실시 예에 있어서, 연산기(130)는 검출된 깊이 필드에 대응되는 변환값을 결정할 수 있다. 연산기(130)는 결정된 변환값, 가중치값의 기반값을 2의 k승(power)으로 표현했을 때의 k, 가중치값의 가수부 필드의 리딩 비트에 따라 결정된 값(예: -1 또는 0), 연산 결과를 시프트하기 위한 시프트값, 및 활성화값의 지수부를 이용하여 출력 데이터의 지수부를 결정할 수 있다. 예를 들어, 연산기(130)는 결정된 변환값과 k 사이의 곱셈 결과에 활성화값의 지수부의 부호(예: 플러스 또는 마이너스)를 적용할 수 있고, 부호가 적용된 곱셈 결과, 활성화값의 지수부, 가중치값의 가수부 필드의 리딩 비트에 따라 결정된 값, 및 시프트값을 합산하여 출력 데이터의 지수부를 결정할 수 있다. 이 때, 가중치값의 가수부 필드의 리딩 비트가 제2 값을 갖는 경우 리딩 비트에 따라 결정된 값은 -1에 해당할 수 있고, 리딩 비트가 제1 값을 갖는 경우 리딩 비트에 따라 결정된 값은 0에 해당할 수 있다.
단계 850에서, 컴퓨팅 장치(100)는 결정된 지수부 및 연산 결과를 기초로 출력 데이터를 결정할 수 있다. 연산기(130)는 연산 결과에서 일부 비트들을 추출할 수 있다. 추출된 일부 비트들은 부동 소수점 포맷의 출력 데이터의 가수부 비트들에 해당할 수 있다. 연산기(130)는 추출된 일부 비트들 및 결정된 지수부를 이용하여 출력 데이터를 결정할 수 있다.
실시 예에 있어서, 컴퓨팅 장치(100)는 제1 숫자 포맷(200)이 아닌 다른 숫자 포맷의 원시 가중치값을 제1 숫자 포맷(200)의 가중치값으로 변환할 수 있다. 도 9를 통해 자세히 설명하겠지만, 컴퓨팅 장치(100)는 원시 가중치값의 지수값과 미리 설정된 인자를 기초로 가중치값의 깊이 필드를 결정할 수 있고, 원시 가중치값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 나머지에 대응되는 비트와 원시 가중치값의 가수부 비트들의 일부 비트들을 통해 가중치값의 가수부 필드를 결정할 수 있다.
도 1 내지 도 6을 통해 설명한 내용들은 도 8의 컴퓨팅 장치의 동작에 적용될 수 있다.
도 9는 일 실시 예에 따른 컴퓨팅 장치의 숫자 포맷 변환을 설명하는 도면이다.
도 9를 참조하면, 일 실시 예에 따른 컴퓨팅 장치(900)는 제1 버퍼(110), 제2 버퍼(120), 연산기(130), 및 변환기(910)를 포함할 수 있다. 컴퓨팅 장치(100)에 대한 설명은 컴퓨팅 장치(900)에 적용될 수 있다.
변환기(910)는 제1 숫자 포맷(200)이 아닌 다른 숫자 포맷(예: 제2 숫자 포맷, 제3 숫자 포맷 등)의 원시 가중치값을 제1 숫자 포맷(200)의 가중치값으로 변환할 수 있다. 변환기(910)는 제1 숫자 포맷(200)의 가중치값을 제1 버퍼(110)에 저장할 수 있다.
변환기(910)는 제1 숫자 포맷(200)이 아닌 다른 숫자 포맷(예: 제2 숫자 포맷, 제3 숫자 포맷 등)의 원시 활성화값을 제1 숫자 포맷(200)의 활성화값으로 변환할 수 있다. 변환기(910)는 제1 숫자 포맷(200)의 활성화값을 제2 버퍼(120)에 저장할 수 있다.
변환기(910)는 제2 숫자 포맷의 원시 가중치값의 지수값과 미리 설정된 인자(예: 상술한 k(또는 기반값))를 기초로 제1 숫자 포맷(200)의 가중치값의 깊이 필드를 결정할 수 있다. 변환기(910)는 원시 가중치값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 나머지(또는 원시 가중치값의 지수값과 미리 설정된 인자 사이의 모듈로 연산의 결과)(예: 상술한 제1 나머지)에 대응되는 비트를 결정할 수 있다. 변환기(910)는 나머지에 대응되는 비트와 원시 가중치값의 가수부 비트들의 일부 비트들을 통해 제1 숫자 포맷(200)의 가중치값의 가수부 필드를 결정할 수 있다. 원시 가중치값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 나머지에 대응되는 비트의 예시는 아래 표 5와 같다.
원시 가중치값의 지수값과 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 나머지 나머지에 대응되는 비트(들)
k=2 1 1
0 0
k=3 2 01
1 1
0 00
위 표 5의 예시에서, k=2일 때, 변환기(910)는 나머지가 1로 계산되면 나머지에 대응되는 비트를 1로 결정할 수 있고, 나머지가 0으로 계산되면 나머지에 대응되는 비트를 0으로 결정할 수 있다. 결정된 비트는 후술하겠지만 가수부 필드의 첫번째 비트에 해당할 수 있다. k=3일 때, 변환기(910)는 나머지가 2로 계산되면 나머지에 대응되는 비트들을 01로 결정할 수 있고, 나머지가 0으로 계산되면 나머지에 대응되는 비트들을 00으로 결정할 수 있다. 결정된 비트들은 가수부 필드의 첫번째와 두번째 비트에 해당할 수 있다. 변환기(910)는 나머지가 1으로 계산되면 나머지에 대응되는 비트를 1로 결정할 수 있다. 결정된 비트는 가수부 필드의 첫번째 비트에 해당할 수 있다.일 예시로, 부호 비트를 제외하고 가중치값은 7-bits일 수 있고, k=2(또는 base=4)일 수 있다.
제2 숫자 포맷의 원시 가중치값은, 예를 들어, 위 표 1의 1.xxxx…*2-3에 해당할 수 있다. 1.xxxx…*2-3에서 지수값은 "-3"일 수 있다. 변환기(910)는 지수값의 절대값 "3"을 k로 나눈 결과 "1.5"의 올림값 "2"를 깊이값으로 결정할 수 있고, 깊이값 "2"에 따라 "01"을 가중치값의 깊이 필드로 결정할 수 있다. 이 때, 가중치값의 깊이 필드는 2-bits이다. 변환기(910)는 지수값의 절대값 "3"을 k로 나눴을 때 나머지가 "1"이므로, 위 표 5를 참조하여 나머지 "1"에 대응되는 비트 "1"을 결정할 수 있다. 변환기(910)는 결정된 비트 "1"에 따라 가중치값의 가수부 필드의 첫번째 비트를 "1"로 결정할 수 있다. 부호 비트를 제외하고 가중치값은 7-bits이고 깊이 필드는 2-bits이므로, 가수부 필드는 5-bits일 수 있다. 가수부 필드의 첫번째 비트는 1이므로, 변환기(910)는 가수부 필드의 나머지 4-bits를 채우기 위해 1.xxxx…*2-3의 가수부 비트들 "xxxx…"에서 상위 4개의 비트들(예: xxxx)을 추출할 수 있다. 변환기(910)는 제2 숫자 포맷의 raw 가중치값 1.xxxx…*2-3을 제1 숫자 포맷(200)의 가중치값 s011xxxx로 변환할 수 있다. 여기서, s는 부호 비트를 나타낸다.
제2 숫자 포맷의 원시 가중치값은, 예를 들어, 위 표 1의 1.xxxx…*2-4에 해당할 수 있다. 1.xxxx…*2-4에서 지수값은 "-4"일 수 있다. 변환기(910)는 지수값의 절대값 "4"를 k로 나눈 결과 "2"의 올림값 "2"를 깊이값으로 결정할 수 있고, 깊이값 "2"에 따라 "01"을 가중치값의 깊이 필드로 결정할 수 있다. 변환기(910)는 지수값의 절대값 "4"를 k로 나눴을 때 나머지가 "0"이므로 위 표 5를 참조하여 나머지 "0"에 대응되는 비트 "0"을 결정할 수 있다. 변환기(910)는 결정된 비트 "0"에 따라 가중치값의 가수부 필드의 첫번째 비트를 "0"으로 결정할 수 있다. 변환기(910)는 가수부 필드의 나머지를 채우기 위해 1.xxxx…*2-4의 가수부 비트들 "xxxx…"에서 상위 4개의 비트들(예: xxxx)을 추출할 수 있다. 변환기(910)는 제2 숫자 포맷의 원시 가중치값 1.xxxx…*2-4을 제1 숫자 포맷(200)의 가중치값 s010xxxx로 변환할 수 있다. 여기서, s는 부호 비트를 나타낸다.
다른 예시로, 부호 비트를 제외하고 가중치값은 7-bits일 수 있고, k=3(또는 base=8)일 수 있다.
제2 숫자 포맷의 원시 가중치값은, 예를 들어, 위 표 2의 1.xxxxx…*2-1에 해당할 수 있다. 1.xxxxx…*2-1에서 지수값은 "-1"일 수 있다. 변환기(910)는 지수값의 절대값 "1"을 k로 나눈 결과 "1/3"의 올림값 "1"을 깊이값으로 결정할 수 있고, 깊이값 "1"에 따라 "1"을 깊이 필드로 결정할 수 있다. 변환기(910)는 지수값의 절대값 "1"을 k로 나눴을 때 나머지가 "1"이므로 위 표 5를 참조하여 나머지 "1"에 대응되는 비트 "1"을 결정할 수 있다. 변환기(910)는 결정된 비트 "1"에 따라 가수부 필드의 첫번째 비트를 "1"로 결정할 수 있다. 부호 비트를 제외하고 가중치값은 7-bits이고 깊이 필드는 1-bit이므로, 가수부 필드는 6-bits일 수 있다. 가수부 필드의 첫번째 비트는 "1"일 수 있어, 변환기(910)는 가수부 필드의 나머지 5-bits를 채우기 위해 1.xxxxx…*2-1의 가수부 비트들 "xxxxx…"에서 상위 5개의 비트들(예: xxxxx)을 추출할 수 있다. 변환기(910)는 제2 숫자 포맷의 원시 가중치값 1.xxxxx…*2-1을 제1 숫자 포맷(200)의 가중치값 s11xxxxx로 변환할 수 있다. 여기서, s는 부호 비트를 나타낸다.
제2 숫자 포맷의 원시 가중치값은, 예를 들어, 위 표 2의 1.xxxxx…*2-2에 해당할 수 있다. 1.xxxxx…*2-2에서 지수값은 "-2"일 수 있다. 변환기(910)는 지수값의 절대값 "2"를 k로 나눈 결과 "2/3"의 올림값 "1"을 깊이값으로 결정할 수 있고, 깊이값 "1"에 따라 "1"을 깊이 필드로 결정할 수 있다. 변환기(910)는 지수값의 절대값 "2"를 k로 나눴을 때의 나머지가 "2"이므로 위 표 5를 참조하여 나머지 "2"에 대응되는 비트들 "01"을 결정할 수 있다. 변환기(910)는 결정된 비트 "01"에 따라 가수부 필드의 첫번째와 두번째 비트를 "01"로 결정할 수 있다. 부호 비트를 제외하고 가중치값은 7-bits이고 깊이 필드는 1-bit이므로, 가수부 필드는 6-bits일 수 있다. 가수부 필드의 첫번째와 두번째 비트는 "01"일 수 있어, 변환기(910)는 가수부 필드의 나머지 4-bits를 채우기 위해 1.xxxxx…*2-2의 가수부 비트들 "xxxxx…"에서 상위 4개의 비트들(예: xxxx)을 추출할 수 있다. 변환기(910)는 제2 숫자 포맷의 원시 가중치값 1.xxxxx…*2-2을 제1 숫자 포맷(200)의 가중치값 s101xxxx로 변환할 수 있다. 여기서, s는 부호 비트를 나타낸다.
제2 숫자 포맷의 원시 가중치값은, 예를 들어, 위 표 2의 1.xxxx…*2-3에 해당할 수 있다. 1.xxxx…*2-3에서 지수값은 "-3"일 수 있다. 변환기(910)는 지수값의 절대값 "3"을 k로 나눈 결과 "1"의 올림값 "1"을 깊이값으로 결정할 수 있고, 깊이값 "1"에 따라 "1"을 깊이 필드로 결정할 수 있다. 변환기(910)는 지수값의 절대값 "3"을 k로 나눴을 때의 나머지가 "0"이므로 위 표 5를 참조하여 나머지 "0"에 대응되는 비트들 "00"을 결정할 수 있다. 변환기(910)는 결정된 비트 "00"에 따라 가수부 필드의 첫번째와 두번째 비트를 "00"으로 결정할 수 있다. 변환기(910)는 가수부 필드의 나머지를 채우기 위해 1.xxxx…*2-3의 가수부 비트들 "xxxx…"에서 상위 4개의 비트들(예: xxxx)을 추출할 수 있다. 변환기(910)는 제2 숫자 포맷의 원시 가중치값 1.xxxx…*2-3을 제1 숫자 포맷(200)의 가중치값 s100xxxx로 변환할 수 있다. 여기서, s는 부호 비트를 나타낸다.
앞서 설명한 원시 가중치값을 제1 숫자 포맷(200)의 가중치값으로 변환하는 방식과 동일하게, 변환기(910)는 원시 활성화값을 제1 숫자 포맷(200)의 활성화값으로 변환할 수 있다.
변환기(910)는 원시 가중치값 및/또는 원시 활성화값이 제3 숫자 포맷(예: 고정 소수점)인 경우 원시 가중치값 및/또는 원시 활성화값을 제2 숫자 포맷(예: 부동 소수점)으로 변환할 수 있다. 고정 소수점의 숫자를 부동 소수점의 숫자로 변환하는 것은 통상의 기술자에게 자명하므로, 고정 소수점의 숫자를 부동 소수점의 숫자로 변환하는 내용의 상세한 설명을 생략한다. 변환기(910)는 제2 숫자 포맷으로 변환된 원시 가중치값 및/또는 원시 활성화값을 제1 숫자 포맷(200)의 가중치값 및/또는 활성화값으로 변환할 수 있다.
도 10은 일 실시 예에 따른 처리 시스템의 개략적인 블록도이다.
도 10을 참조하면, 일 실시 예에 따른 처리 시스템(1000)은 프로세서(1010), 호스트(1020), 및 메모리(1030)를 포함할 수 있다.
처리 시스템(1000)은 전자 장치로 달리 표현될 수 있다. 예시적인 실시예로, 처리 시스템(1000)은 데이터 센터와 서버에 적용될 수 있다. 이에 제한되는 것은 아니고, 처리 시스템(900)은 사용자 단말(예: PC, 스마트폰, 노트북, 태블릿 PC 등)에 적용될 수 있다.
프로세서(1010)는 앞서 설명한 컴퓨팅 장치(100, 900)에 해당할 수 있다.
프로세서(1010)는 NPU(Neural Processing Unit), 딥러닝 가속기 등으로 다르게 표현될 수 있다.
도 10에 하나의 프로세서(1010)가 도시되어 있으나 이는 예시적인 사항일 뿐 처리 시스템(1000)은 복수의 프로세서들을 포함할 수 있다.
프로세서(1010), 호스트(1020), 및 메모리(1030)는 서로 통신할 수 있다. 예를 들어, 프로세서(1010), 호스트(1020), 및 메모리(1030)는 버스(bus), NoC(Network on a Chip), 또는 PCIe(Peripheral Component Interconnect Express) 등을 통해 서로 통신할 수 있다.
호스트(1020)는 처리 시스템(1000)에 포함된 컴포넌트들의 동작을 제어하는 장치일 수 있다. 호스트(1020)는, 예를 들어, 중앙 처리 장치(CPU: Central Processing Unit)를 포함할 수 있다. 호스트(1020)는 컴파일러를 포함할 수 있고, 컴파일러는 어플리케이션(또는 프로그램, 소스코드)에 컴파일을 수행하여 어플리케이션을 프로세서(1010)가 처리 가능한 포맷 또는 프로세서(1010)가 실행할 수 있는 실행 파일로 변환할 수 있다.
메모리(1030)는 프로세서(1010)의 외부에 배치될 수 있고, 오프 칩 메모리로 다르게 표현될 수 있다. 메모리(1030)는 DRAM(Dynamic Random Access Memory)을 포함할 수 있으나, 이에 제한되지 않는다.
메모리(1030)는 프로세서(1010) 각각에 의해 실행될 명령어들을 저장할 수 있고, 데이터(예: 가중치값 및/또는 활성화값)를 저장할 수 있다. 가중치값 및/또는 활성화값은 제1 숫자 포맷(1000)을 가질 수 있다. 메모리(1030)에 저장된 명령어들과 데이터는 프로세서(1010)로 전달될 수 있다. 프로세서(1010)는 명령어에 따라 데이터에 연산을 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (20)

  1. 가중치값을 저장하는 제1 버퍼;
    활성화값을 저장하는 제2 버퍼; 및
    상기 제1 버퍼로부터 상기 가중치값을 수신하고, 상기 제2 버퍼로부터 상기 활성화값을 수신하며, 상기 수신된 가중치값에서 상기 수신된 가중치값의 범위와 관련된 깊이 필드를 검출하고, 상기 수신된 활성화값에서 상기 수신된 활성화값의 범위와 관련된 깊이 필드를 검출하고, 상기 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정하고, 상기 수신된 가중치값을 처리하여 제1 피연산자(operand)를 결정하고, 상기 수신된 활성화값을 처리하여 제2 피연산자를 결정하고, 상기 결정된 제1 및 제2 피연산자를 기초로 연산을 수행하고, 상기 연산 결과 및 상기 결정된 깊이 필드를 기초로 상기 출력 데이터를 결정하는 연산기
    를 포함하는,
    컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 연산기는,
    상기 수신된 가중치값의 비트들 중 최상위 비트(most significant bit)를 제외한 나머지에서 처음으로 제1 값을 갖는 제1 타겟 비트를 검출하고, 상기 수신된 가중치값의 차상위 비트(second most significant bit)부터 상기 제1 타겟 비트까지의 비트들을 상기 수신된 가중치값의 깊이 필드로 검출하는 제1 깊이 필드 검출기; 및
    상기 수신된 활성화값의 비트들 중 최상위 비트를 제외한 나머지에서 처음으로 제1 값을 갖는 제2 타겟 비트를 검출하고, 상기 수신된 활성화값의 차상위 비트부터 상기 제2 타겟 비트까지의 비트들을 상기 수신된 활성화값의 깊이 필드로 검출하는 제2 깊이 필드 검출기
    를 포함하는,
    컴퓨팅 장치.
  3. 제2항에 있어서,
    상기 제1 깊이 필드 검출기는,
    상기 수신된 가중치값의 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 가중치값의 차상위 비트를 상기 수신된 가중치값의 깊이 필드로 검출하고,
    상기 제2 깊이 필드 검출기는,
    상기 수신된 활성화값의 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 활성화값의 차상위 비트를 상기 수신된 활성화값의 깊이 필드로 검출하는,
    컴퓨팅 장치.
  4. 제2항에 있어서,
    상기 연산기는,
    상기 제1 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 제1 비트 체크 회로; 및
    상기 다음 비트가 상기 제1 값을 갖는 경우 상기 제1 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제1 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제1 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 제1 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제1 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제1 피연산자를 결정하는 제1 마스킹 회로
    를 포함하는,
    컴퓨팅 장치.
  5. 제2항에 있어서,
    상기 연산기는,
    상기 제2 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 제2 비트 체크 회로; 및
    상기 다음 비트가 상기 제1 값을 갖는 경우 상기 제2 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제2 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제2 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 제2 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 제2 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 제2 피연산자를 결정하는 제2 마스킹 회로
    를 포함하는,
    컴퓨팅 장치.
  6. 제1항에 있어서,
    상기 연산기는,
    상기 검출된 각 깊이 필드에 대응되는 변환값을 결정하고, 상기 결정된된 각 변환값을 합산하며, 상기 합산 결과를 이용하여 상기 출력 데이터의 깊이 필드를 결정하는,
    컴퓨팅 장치.
  7. 제1항에 있어서,
    상기 연산기는,
    상기 수신된 가중치값의 가수부 필드의 리딩(leading) 비트와 상기 수신된 활성화값의 가수부 필드의 리딩 비트 각각이 제2 값을 갖는 경우, 상기 연산 결과에 2-비트 시프트를 수행하고, 상기 수신된 가중치값의 가수부 필드의 리딩 비트 및 상기 수신된 활성화값의 가수부 필드의 리딩 비트 중 어느 하나가 상기 제2 값을 갖고 다른 하나가 제1 값을 갖는 경우, 상기 연산 결과에 1-비트 시프트를 수행하며, 상기 수신된 가중치값의 가수부 필드의 리딩 비트 및 상기 수신된 활성화값의 가수부 필드의 리딩 비트 각각이 상기 제1 값을 갖는 경우 상기 연산 결과에 시프트를 수행하지 않는 시프트 회로
    를 포함하는,
    컴퓨팅 장치.
  8. 제1항에 있어서,
    상기 연산기는,
    상기 연산 결과에서 일부 비트들을 추출하고, 상기 추출된 일부 비트들, 상기 결정된 깊이 필드, 상기 수신된 가중치값의 부호 비트, 및 상기 수신된 활성화값의 부호 비트를 이용하여 상기 출력 데이터를 결정하는 인코더
    를 포함하는,
    컴퓨팅 장치.
  9. 제1항에 있어서,
    상기 가중치값과 상기 활성화값은 제1 숫자 포맷을 갖고,
    상기 컴퓨팅 장치는,
    상기 제1 숫자 포맷이 아닌 다른 숫자 포맷의 원시(raw) 가중치값 및 상기 제1 숫자 포맷이 아닌 다른 숫자 포맷의 원시 활성화값 각각을 상기 제1 숫자 포맷의 상기 가중치값과 상기 제1 숫자 포맷의 활성화값 각각으로 변환하는 변환기
    를 더 포함하는,
    컴퓨팅 장치.
  10. 제9항에 있어서,
    상기 변환기는,
    상기 원시 가중치값의 지수값과 미리 설정된 인자를 기초로 상기 가중치값의 깊이 필드를 결정하고, 상기 원시 가중치값의 지수값과 상기 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제1 나머지에 대응되는 비트를 결정하며, 상기 제1 나머지에 대응되는 비트와 상기 원시 가중치값의 가수부 비트들의 일부 비트들을 통해 상기 가중치값의 가수부 필드를 결정하고,
    상기 원시 활성화값의 지수값과 상기 미리 설정된 인자를 기초로 상기 활성화값의 깊이 필드를 결정하고, 상기 원시 활성화값의 지수값과 상기 미리 설정된 인자 사이의 나눗셈 연산을 통해 도출된 제2 나머지에 대응되는 비트를 결정하고, 상기 제2 나머지에 대응되는 비트와 상기 원시 활성화값의 가수부 비트들의 일부 비트들을 통해 상기 활성화값의 가수부 필드를 결정하는,
    컴퓨팅 장치.
  11. 제1 숫자 포맷의 가중치값을 저장하는 제1 버퍼;
    제2 숫자 포맷의 활성화값을 저장하는 제2 버퍼; 및
    상기 제1 버퍼로부터 상기 가중치값을 수신하고, 상기 제2 버퍼로부터 상기 활성화값을 수신하며, 상기 수신된 가중치값에서 상기 수신된 가중치값의 범위와 관련된 깊이 필드를 검출하고, 상기 수신된 가중치값을 처리하여 피연산자를 결정하고, 상기 결정된 피연산자와 상기 수신된 활성화값의 가수부를 기초로 연산을 수행하고, 상기 검출된 깊이 필드, 상기 수신된 가중치값의 기반(base)값, 상기 수신된 활성화값의 지수부, 및 상기 연산 결과를 시프트하기 위한 시프트값을 기초로 출력 데이터의 지수부를 결정하고, 상기 결정된 지수부 및 상기 연산 결과를 기초로 상기 출력 데이터를 결정하는 연산기
    를 포함하는,
    컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 연산기는,
    상기 수신된 가중치값의 비트들 중 최상위 비트를 제외한 나머지에서 처음으로 제1 값을 갖는 타겟 비트를 검출하고, 상기 수신된 가중치값의 차상위 비트부터 상기 타겟 비트까지의 비트들을 상기 수신된 가중치값의 깊이 필드로 검출하는 깊이 필드 검출기
    를 포함하는,
    컴퓨팅 장치.
  13. 제12항에 있어서,
    상기 깊이 필드 검출기는,
    상기 차상위 비트가 처음으로 제1 값을 갖는 경우 상기 수신된 가중치값의 차상위 비트를 상기 수신된 가중치값의 깊이 필드로 검출하는,
    컴퓨팅 장치.
  14. 제12항에 있어서,
    상기 연산기는,
    상기 타겟 비트의 다음 비트가 상기 제1 값을 갖는지 여부를 판단하는 비트 체크 회로; 및
    상기 다음 비트가 상기 제1 값을 갖는 경우 상기 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 타겟 비트, 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 피연산자를 결정하고, 상기 다음 비트가 상기 제2 값을 갖는 경우 상기 다음 비트의 값을 상기 제2 값에서 상기 제1 값으로 변경하고, 상기 타겟 비트의 값을 상기 제1 값에서 제2 값으로 변경하며, 상기 제2 값을 갖는 상기 타겟 비트, 상기 제1 값을 갖는 상기 다음 비트, 및 상기 다음 비트의 이후 비트를 포함하는 상기 피연산자를 결정하는 마스킹 회로
    를 포함하는,
    컴퓨팅 장치.
  15. 제11항에 있어서,
    상기 연산기는,
    상기 검출된 깊이 필드에 대응되는 변환값을 결정하고, 상기 결정된 변환값, 상기 기반값을 2의 k승(power)으로 표현했을 때 상기 k, 상기 수신된 가중치값의 가수부 필드의 리딩(leading) 비트에 따라 결정된 값, 상기 시프트값, 및 상기 수신된 활성화값의 지수부를 이용하여 상기 출력 데이터의 지수부를 결정하는,
    컴퓨팅 장치.
  16. 제15항에 있어서,
    상기 연산기는,
    상기 결정된 변환값과 상기 k 사이의 곱셈 결과에 상기 수신된 활성화값의 지수부의 부호(sign)를 적용하고, 상기 부호가 적용된 곱셈 결과, 상기 수신된 활성화값의 지수부, 상기 리딩 비트에 따라 결정된 값, 및 상기 시프트값을 합산하여 상기 출력 데이터의 지수부를 결정하는,
    컴퓨팅 장치.
  17. 제16항에 있어서,
    상기 리딩 비트가 제2 값을 갖는 경우 상기 리딩 비트에 따라 결정된 값은 마이너스 1에 해당하고, 상기 리딩 비트가 제1 값을 갖는 경우 상기 리딩 비트에 따라 결정된 값은 0에 해당하는,
    컴퓨팅 장치.
  18. 제11항에 있어서,
    상기 연산기는,
    상기 연산 결과에서 일부 비트들을 추출하고, 상기 추출된 일부 비트들 및 상기 결정된 지수부를 이용하여 상기 출력 데이터를 결정하는,
    컴퓨팅 장치.
  19. 컴퓨팅 장치의 동작 방법에 있어서,
    가중치값에서 상기 가중치값의 범위와 관련된 깊이 필드를 검출하는 단계;
    활성화값에서 상기 활성화값의 범위와 관련된 깊이 필드를 검출하는 단계;
    상기 검출된 각 깊이 필드를 기초로 출력 데이터의 깊이 필드를 결정하는 단계;
    상기 가중치값을 처리하여 제1 피연산자를 결정하는 단계;
    상기 활성화값을 처리하여 제2 피연산자를 결정하는 단계;
    상기 결정된 제1 및 제2 피연산자를 기초로 연산을 수행하는 단계; 및
    상기 연산 결과 및 상기 결정된 깊이 필드를 기초로 상기 출력 데이터를 결정하는 단계
    를 포함하는,
    컴퓨팅 장치의 동작 방법.
  20. 제19항에 있어서,
    상기 가중치값의 값의 범위와 관련된 깊이 필드를 검출하는 단계는,
    상기 가중치값의 차상위 비트부터 처음으로 제1 값을 갖는 비트까지의 비트들을 상기 가중치값의 깊이 필드로 검출하는 단계
    를 포함하고,
    상기 활성화값의 값의 범위와 관련된 깊이 필드를 검출하는 단계는,
    상기 활성화값의 차상위 비트부터 처음으로 제1 값을 갖는 비트까지의 비트들을 상기 활성화값의 깊이 필드로 검출하는 단계
    를 포함하는,
    컴퓨팅 장치의 동작 방법.
KR1020220168833A 2022-12-06 2022-12-06 컴퓨팅 장치 및 이의 동작 방법 Active KR102737112B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220168833A KR102737112B1 (ko) 2022-12-06 2022-12-06 컴퓨팅 장치 및 이의 동작 방법
US18/326,563 US20240184533A1 (en) 2022-12-06 2023-05-31 Apparatus and method with data processing
CN202311477991.8A CN118153646A (zh) 2022-12-06 2023-11-08 计算设备及其操作方法
EP23213890.9A EP4383062A1 (en) 2022-12-06 2023-12-04 Apparatus and method with data processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220168833A KR102737112B1 (ko) 2022-12-06 2022-12-06 컴퓨팅 장치 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20240084631A KR20240084631A (ko) 2024-06-14
KR102737112B1 true KR102737112B1 (ko) 2024-12-02

Family

ID=89076282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220168833A Active KR102737112B1 (ko) 2022-12-06 2022-12-06 컴퓨팅 장치 및 이의 동작 방법

Country Status (4)

Country Link
US (1) US20240184533A1 (ko)
EP (1) EP4383062A1 (ko)
KR (1) KR102737112B1 (ko)
CN (1) CN118153646A (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110852416A (zh) 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数数据表现形式的cnn加速计算方法及系统
JP2020521192A (ja) 2017-05-17 2020-07-16 グーグル エルエルシー ハードウェアにおける行列乗算の実行
US20200302271A1 (en) 2019-03-18 2020-09-24 Microsoft Technology Licensing, Llc Quantization-aware neural architecture search

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220156569A1 (en) * 2020-11-13 2022-05-19 Samsung Electronics Co., Ltd. Weight-sparse neural processing unit with multi-dimensional routing of non-zero values

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020521192A (ja) 2017-05-17 2020-07-16 グーグル エルエルシー ハードウェアにおける行列乗算の実行
US20200302271A1 (en) 2019-03-18 2020-09-24 Microsoft Technology Licensing, Llc Quantization-aware neural architecture search
CN110852416A (zh) 2019-09-30 2020-02-28 成都恒创新星科技有限公司 基于低精度浮点数数据表现形式的cnn加速计算方法及系统

Also Published As

Publication number Publication date
KR20240084631A (ko) 2024-06-14
US20240184533A1 (en) 2024-06-06
EP4383062A1 (en) 2024-06-12
CN118153646A (zh) 2024-06-07

Similar Documents

Publication Publication Date Title
CN106990937B (zh) 一种浮点数处理装置和处理方法
CN111492343B (zh) 浮点乘法运算处理的系统和方法
JP5731937B2 (ja) ベクトル浮動小数点引数削減
JP7244186B2 (ja) 改良された低精度の2進浮動小数点形式設定
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
CN112241291B (zh) 用于指数函数实施的浮点单元
US10095475B2 (en) Decimal and binary floating point rounding
CN1928809A (zh) 用于执行浮点运算的系统、设备和方法
CN112835551A (zh) 用于处理单元的数据处理方法、电子设备和计算机可读存储介质
US9430190B2 (en) Fused multiply add pipeline
KR102481418B1 (ko) 단일 곱셈-누산 방법 및 장치
CN103135960A (zh) 一种基于fpga的集成浮点运算器的设计方法
KR102737112B1 (ko) 컴퓨팅 장치 및 이의 동작 방법
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
US9141586B2 (en) Method, apparatus, system for single-path floating-point rounding flow that supports generation of normals/denormals and associated status flags
US20230161555A1 (en) System and method performing floating-point operations
US7814138B2 (en) Method and apparatus for decimal number addition using hardware for binary number operations
US8924447B2 (en) Double precision approximation of a single precision operation
CN111324856B (zh) 计算机可读存储介质、计算机实施的方法和计算机器
Vanashree et al. Design of a Simplified Floating Point Adder for Complex Computation
TW202528922A (zh) 使用整數運算執行編碼格式轉換的方法與系統
CN116368462A (zh) 高精度锚定隐式处理
WO2019199442A1 (en) Computing device performance of low precision arithmetic functions with arrays of pre-calculated values
JP2020513612A (ja) 符号絶対値データ形式で結果を生み出すための回路、方法およびコンピュータ・プログラム製品

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

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

GRNT Written decision to grant
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

PG1601 Publication of registration

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

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000