KR102482300B1 - 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치 - Google Patents

변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치 Download PDF

Info

Publication number
KR102482300B1
KR102482300B1 KR1020220083327A KR20220083327A KR102482300B1 KR 102482300 B1 KR102482300 B1 KR 102482300B1 KR 1020220083327 A KR1020220083327 A KR 1020220083327A KR 20220083327 A KR20220083327 A KR 20220083327A KR 102482300 B1 KR102482300 B1 KR 102482300B1
Authority
KR
South Korea
Prior art keywords
bit
value
csa
harley
output
Prior art date
Application number
KR1020220083327A
Other languages
English (en)
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 KR1020220083327A priority Critical patent/KR102482300B1/ko
Application granted granted Critical
Publication of KR102482300B1 publication Critical patent/KR102482300B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/504Adding; Subtracting in bit-serial fashion, i.e. having a single digit-handling circuit treating all denominations after each other
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

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

Abstract

본 발명은 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법에 관한 것으로, 상기 방법은 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 단계; 상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하는 단계; 및 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 단계를 포함하며, 상기 비트 정밀도는 상기 CSA의 캐리(carry) 또는 출력 값(output)으로 연산될 수 있다.

Description

변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치{BIT SERIAL COMPUTATION METHOD AND APPARATUS INCLUDING MODIFIED HARLEY-SEAL POPCOUNT}
본 발명은 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치에 관한 것이다.
딥 러닝(deep learning) 기술에서 활용되는 심층신경망 (deep neural network) 등의 뉴럴 네트워크(neural network)은 입력층(input layer)과 출력층(output layer) 사이에 여러 개의 은닉층(hidden layer)들로 이루어지며, 컨벌루션 연산 등 내적 (dot product)를 기반으로 한 대량의 연산과 데이터를 이용하여 복잡한 비선형 관계를 모델링할 수 있다.
딥러닝 신경망은 성능이 좋은 반면 많은 수의 연산이 필요하므로 휴대폰 등의 작은 기기에서 연산 속도가 떨어지는 문제가 발생하며, 이를 보완하여 연산 속도를 향상시키기 위해 비트 포지션을 낮추는 방법이 제안되고 있다. 하지만 휴대폰 등 기존 기기의 중앙처리장치 (CPU) 등이 8비트 단위 연산기를 갖도록 설계되어 있다는 한계로 인해 낮은 비트 포지션 기반 연산이 효율적으로 수행되지 않는다는 제한이 있다.
이러한 제한을 극복하고 8비트 단위 연산기에서 낮은 비트 포지션 기반 연산을 수행하기 위해 비트 시리얼 연산이 사용된다. 낮은 비트 포지션 기반의 컨벌루션 연산 등 내적 연산을 수행하기 위해 각 비트 플레인을 모아서 AND 게이트 등 비트 연산을 수행하고 연산 결과를 팝 카운트 연산함으로써 내적(dot product)을 효율적으로 수행할 수 있다.
다시 말해 여러 숫자의 각 비트 플레인을 모아서 8비트 단위로 묶어 연산을 수행함으로써 8 비트 연산기를 낭비 없이 사용할 수 있다.
또한, 비트 시리얼 연산은 다수의 논리 연산과 팝 카운트(POP-COUNT) 연산으로 구성되며, AND 등과 같은 비트와이즈(BITWISE) 논리 연산은 빠르게 수행 가능하나 팝 카운트 연산의 경우 기기에 따라 매우 느린 경우가 있어 연산 속도 증가를 위해서는 효율적인 팝 카운트 구현이 매우 중요하다.
도 1에 도시된 바와 같이, 종래의 비트 시리얼 연산(bit serial computation)은 [1 0 3 1]과 [2 1 1 0] 벡터 간의 내적을 수행하기 위하여 각 벡터를 비트 플레인으로 변환하고, LSB인 [1 0 1 1] 및 LSB인 [0 1 1 0]을 비트 연산하여 팝 카운트를 수행하고(P1), 그 다음 비트 포지션인 [1 0 1 1] 및 [1 0 0 0]과, [0 0 1 0] 및 [0 1 1 0]을 비트 연산하여 팝 카운트를 수행하고, 1 비트만큼 왼쪽 시프트를 수행하며(P2), 그 다음 비트 포지션인 [0 0 1 0] 및 [1 0 0 0]을 비트 연산하여 팝 카운트를 수행하고, MSB인 비트 포지션에 맞춰 2 비트만큼 왼쪽 시프트를 수행한다(P3).
다시 말해, LSB의 비트 연산 및 팝 카운트 결과(P1), 다음 비트 포지션의 비트 연산 및 팝카운트(P2), MSB의 비트 연산 및 팝 카운트(P3)를 각각 처리할 복수의 팝 카운트가 구현되어야 했으며, 각 연산마다 별도의 팝 카운트로 별도의 연산을 수행하고, P1, P2, P3 마다 팝 카운트 연산 후 시프트(shift) 및 합산(add)을 수행하여야 해서 연산 성능이 떨어지는 문제점이 존재하였다.
이로 인해, N (bit) x M (bit) 간 컨벌루션 연산을 수행할 때 비트 시리얼 연산에서는 N*M회의 팝 카운트 연산이 수행되어야 하며, 팝 카운트 연산이 일부 느려지면 N*M 만큼의 지연이 발생되어 큰 latency overhead를 초래할 수 있는 바 효율적인 팝 카운트 연산을 수행하도록 구현한 발명의 필요성이 대두되었다.
arXiv:1611.07612v9 [cs.DS] 5 Sep 2018("Faster Population Counts Using AVX2 Instructions", Wojciech Mu la, Nathan Kurz and Daniel Lemire)
종래 문제점을 해결하기 위하여, 본 발명은 캐리 세이브 에더(CSA, CARRY SAVER ADDER)에 입력되는 입력 값에 비트 포지션을 반영하여 내적(DOT PRODUCT)의 모든 연산을 한번에 수행할 수 있는, 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치를 제공하고자 한다.
본 발명은 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법에 관한 것으로, 상기 방법은 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 단계; 상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하는 단계; 및 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 단계를 포함할 수 있다.
또한, 본 발명의 일 실시에에 따른 팝 카운트 연산을 실행하기 위한 장치로서, 메모리; 및 상기 메모리에 결합된 프로세서를 포함하고, 상기 프로세서는 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하고, 상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하고, 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하도록 구성될 수 있다.
한편, 본 발명은 본 발명의 일 실시예에 따른 상술한 방법을 컴퓨터 상에서 수행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 독출 가능한 기록 매체를 제공할 수 있다.
또한, 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 장치는 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 비트 연산기; 상기 비트 연산기로부터 출력된 비트 연산의 결과 값 및 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 입력 받는 캐리 세이브 에더(Carry Saver Adder, CSA); 및 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 팝 카운터;를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 팝 카운트-시프트-합산 순서로 비트 시리얼 연산을 수행할 필요 없이 CSA를 이용한 팝 카운트 만으로 내적 연산을 수행할 수 있어, 각 비트 포지션 별 부분합을 저장할 메모리 사용량을 최소화하고 연산 효율을 최적화할 수 있다.
도 1은 종래 비트 시리얼 연산 방법을 도시한 것이다.
도 2a는 종래 할리-실 팝 카운트 및 진리표를 도시한 것이며, 도 2b는 종래 할리-실 팝 카운트를 포함한 다양한 팝 카운트의 메모리 처리량 그래프를 도시한 것이며, 도 2c는 입력 크기에 따른 팝 카운트 연산 당 필요한 사이클 수를 도시한 테이블이다.
도 3은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 플로우 차트로 도시한 것이다.
도 4는 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 CSA로 구현한 회로도를 도시한 것이다.
도 5는 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 CSA로 구현한 구성도를 구체적으로 도시한 것이다.
도 6은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 수행하는 알고리즘의 수도 코드를 도시한 것이다.
도 7은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 장치의 구성을 도시한 블록도이다.
이하에서, 각 단계의 시간적 선후는 나열한 순서에 국한되지 않으며, 각 단계의 시간적 순서를 통상의 기술자에게 자명한 정도로 대체, 변경, 생략 가능하다.
도 2a는 종래 할리-실 팝 카운트 및 진리표를 도시한 것이며, 도 2b는 종래 할리-실 팝 카운트를 포함한 다양한 팝 카운트의 메모리 처리량 그래프를 도시한 것이며, 도 2c는 입력 크기에 따른 팝 카운트 연산 당 필요한 사이클 수를 도시한 테이블이다.
도 2a에 도시된 바와 같이, 할리-실 팝카운트의 에더 구조는 4개의 입력 값(di,
Figure 112022070625165-pat00001
,
Figure 112022070625165-pat00002
,
Figure 112022070625165-pat00003
)을 연산하기 위하여, 두 개의 입력 값은 0으로 초기화된 하나의 할리-실 팝카운트 연산을 위한 저장 공간인 ones와 같이 CSA(11)에 입력하고, 상기 CSA에서 출력한 합산 출력 값을 저장 공간 ones에 저장한 뒤, 다른 두 개의 입력 값과 저장 공간 ones의 값을 다른 CSA(12)에 입력한다. 이후, CSA(12)의 출력 값을 저장 공간 ones에 다시 저장한다.
최종적으로, CSA(11)에서 출력된 캐리(Carry) 및 CSA(12)에서 출력된 캐리와 함께 0으로 초기화된 하나의 저장 공간인 twos를 CSA(13)에 입력한다. CSA(13)의 출력 값은 저장 공간 twos에, 캐리는 저장 공간 fours에 저장한다.
그 결과, ones, twos, fours 출력 값을 획득할 수 있으며, 각 출력 값에 팝 카운트를 적용할 수 있다. 이때, 각 출력 값은 최종 팝카운트 결과의 비트 포지션을 반영하므로 ones의 팝카운트 결과는 시프트 하지 않고, twos의 팝카운트 결과는 왼쪽으로 1 시프트 하고, fours의 팝카운트 결과는 왼쪽으로 2 시프트하여 합산할 수 있다.
즉, 네 개의 입력 값에 팝 카운트를 적용할 경우 4 개의 팝 카운트가 필요하지만, 할리-실 팝 카운트를 통해 세 개의 출력 값에 각각 팝 카운트를 적용하면 되어서 팝 카운트 연산 개수를 감소시킬 수 있다.
더하여, 도 2b 및 도 2c에 도시된 바와 같이, 여러 CPU 팝카운트 성능 크기 중에 avx2-harley-seal(avx2-할리 실) 팝 카운트가 가장 메모리 처리량이 181.82GB/s로 가장 높으며, 입력 맵의 어레이 사이즈가 커질수록 팝 카운트 연산 당 필요한 사이클 개수가 0.69에서 0.52까지 줄어드는 것을 확인할 수 있다.
따라서, avx2-할리 실 팝 카운트를 이용하여 컨볼루션 연산을 수행할 경우 입력 값이 커질수록 팝 카운트 메모리 처리량 성능이 더욱 향상될 수 있다.
도 3은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 플로우 차트로 도시한 것이며, 본 발명의 일 실시예에 따라 기존의 avx2-할리 실 팝 카운트를 변형시켜 팝 카운트 연산 성능을 더욱 극대화하고 추가적인 시프트 또는 합산을 생략하여 연산 처리 과정을 단순화할 수 있다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법은 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 단계(S301), 상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하는 단계(S302) 및 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 단계(S303)를 포함할 수 있다.
이때 상기 저장 공간은 첫 번째 CSA에 입력될 때 0으로 초기화될 수 있으며, CSA에 입력하는 단계에 맞춰 상기 저장 공간의 값을 적절한 형태로 입력할 수 있다.
이때, 상기 비트 포지션은 두 값의 연산이 이루어졌을 때, 즉 연산 결과에 해당하는 비트 정밀도를 의미한다.
예를 들어, 비트 포지션이 MSB일 경우, 비트 포지션에 위치한 비트 간의 비트 연산 결과는 [1 0] * [0 1]을 연산할 때, 1비트 위치에 있는 1과 0의 연산 결과의 비트 정밀도인 2^2를 의미하며, 상기 비트 포지션의 다음 비트 포지션에 위치한 비트 간 비트 연산 결과는 1비트 위치에 있는 1과 0비트 위치에 있는 1, 0비트 위치에 있는 0과 1비트 위치에 있는 1의 연산 결과의 비트 정밀도인 2^1를 의미한다.
참고로, 비트 정밀도만큼 각 값에 대해 시프트를 수행하며, 1 비트만큼 왼쪽으로 시프트를 수행하는 것을 *2로 표시할 수 있으며, 1 비트만큼 오른쪽으로 시프트를 수행하는 것을 *2^(-1)로 표시할 수 있다.
또한, 일 실시예로서, 상기 비트 연산은 논리 앤드 연산(logical AND operation)을 포함할 수 있다. 다만 이는 예시적인 실시예에 불과하며 상기 비트 연산은 상술한 실시예에 한정되지 않고 다른 논리 연산을 포함할 수 있다.
도 4 내지 도 5는 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 CSA로 구현한 회로도를 도시한 것이다.
도 4 내지 도 5에서 점선은 CSA의 캐리, 실선은 합산 출력 값을 의미한다.
구체적으로, 본 발명의 일 실시예에 따른 단계 S302에서, 가장 낮은 비트 포지션(LSB) 간의 비트 연산 결과를 입력할 때는 상기 비트 연산의 결과 값과 가장 낮은 비트 포지션에 해당하는 저장 공간을 입력 받으며, 상기 CSA의 출력 값은 입력된 저장 공간에 다시 저장되어 다음 CSA에 입력으로 주어진다. 그 외 비트 포지션 간의 비트 연산 결과를 입력할 때는 상기 비트 연산의 결과 값과 이전 CSA의 캐리 및 비트 포지션에 해당하는 저장 공간의 값을 입력 받을 수 있다.
예를 들어, 도 4에 도시된 바와 같이, 1bit * 1bit 연산을 수행할 때, S301에서 논리 앤드 연산을 수행하여 LSB 비트간 연산을 수행한 논리 비트 연산 결과인 [0, 0]을 획득할 수 있다.
그리고, [0,0] 논리 비트 연산 결과와 할리-실 팝카운트 결과 LSB 비트 포지션의 값을 저장하는 공간인 ones의 값을 CSA(110)에 입력할 수 있다. 이 때 ones는 최초에 0으로 초기화되어 주어진다. 상기 연산은 LSB 비트 간 연산 결과인 바 CSA(110)는 두 개의 입력 값만 받아 캐리와 합산 출력 값을 출력할 수 있다. 상기 캐리는 할리-실 팝카운트 결과 중 두 번째 비트 포지션에 해당하는 값을 저장하는 공간인 twos에 저장되고, 합산 출력 값은 LSB 비트 포지션의 값을 저장하는 공간인 ones에 저장된다.
또한, 1bit * 2bit 연산을 수행할 때, S301에서 논리 앤드 연산을 수행하여 LSB 비트간 연산을 수행한 논리 비트 연산 결과인 [0, 0], 하나의 LSB와 다음 비트 포지션인 MSB의 연산을 수행한 논리 비트 연산 결과인 [0, 1]을 획득할 수 있다.
CSA(110)은 1bit*1bit 연산과 동일하고, CSA(120)은 CSA(110)에서 출력된 캐리와 할리-실 팝카운트 결과 중 두 번째 비트 포지션에 해당하는 값을 저장하는 공간인 twos의 값, 그리고 [0,1] 논리 비트 연산 결과를 포함하는 세 개의 입력 값을 입력 받을 수 있다. 이때 twos는 최초에 0으로 초기화되어 주어진다. 그리고 출력된 합산 출력 값은 할리-실 팝카운트 결과 중 두 번째 비트 포지션에 해당하는 값을 저장하는 공간인 twos에 저장된다.
도 4에 도시된 바와 같이, 1bit*3bit와 1bit*4bit도 동일한 방식으로 연산을 수행할 수 있다. 각 비트 포지션에 해당하는 값을 저장하는 공간은 주어진 모든 논리 비트 연산 결과의 팝카운트를 할리-실 팝카운트 방식으로 수행했을 때 최종적으로 각 비트 포지션에 남는 비트 집합을 저장한다. 각 저장 공간에 해당하는 각 비트 포지션이 있으므로, 최종 팝카운트 수행 시 비트 포지션에 따른 가중치를 반영할 수 있다. 예를 들어 1 비트 포지션을 저장하는 ones 공간의 경우 LSB 비트의 값을 모두 모아 놓은 집합이므로 시프트를 수행하지 않고, 2 비트 포지션을 저장하는 twos 공간의 경우 2^1 가중치를 갖는 비트의 값을 모아 놓은 집합이므로 팝카운트 결과를 왼쪽으로 1비트 시프트할 수 있는 값을 표현한다.
더하여, 도 5에 도시된 바와 같이, 단계 S302는 상기 비트 연산의 결과 값과 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 두 개의 입력 값을 입력하는 제1 단계, 상기 비트 연산의 결과 값과 이전 CSA의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력하는 제2 단계, 및 이전 CSA들의 복수의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력하는 제3 단계 중 적어도 제1 단계를 포함할 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 2bit * 2bit 연산을 수행할 때, S301에서 논리 앤드 연산을 수행하여 LSB 비트간 연산을 수행한 논리 비트 연산 결과인 [0, 0], 하나의 LSB와 다음 비트 포지션인 MSB의 연산을 수행한 논리 비트 연산 결과인 [0, 1]과 [1, 0], MSB 비트간 연산을 수행한 논리 비트 연산 결과인 [1,1]을 획득할 수 있다.
그리고, S302에서 [0,0], [0,1], [1,0], 및 [1,1] 네 개의 입력 값을 input으로 CSA에 입력할 수 있다.
구체적으로 도 5에 도시된 바와 같이, [0,0] 입력 값은 LSB 비트 포지션에 따른 출력을 저장하는 공간인 ones를 초기화한 값과 같이 CSA(110)에 입력된다.
CSA(110)에서 출력한 합산 출력 값인 ones는 그대로 출력하고(즉, 초기화된 저장 공간인 ones에 합산 출력 값을 저장함), CSA(110)에서 출력된 캐리는, [0,1] 입력 값과 LSB 비트 포지션의 다음 비트 포지션에 따른 출력을 저장하는 공간인 twos를 초기화한 값과 같이 CSA(120)에 입력된다.
이때, [1,0] 입력 값은 [0,1] 입력 값과 같은 2^1 비트 포지션을 갖는 바, [0,1]의 합산 출력 값은 그대로 출력하지 않고, CSA(130)에 [1,0] 입력 값과 같이 입력된다. [0,1]의 합산 출력 값은 상기 twos에 저장되어 LSB 비트 포지션의 다음 비트 포지션에 따른 출력을 저장하는 공간의 값을 CSA(130)에 입력시킬 수 있다.
따라서, [1,0]의 논리 비트 연산 결과가 입력되는 CSA(130)는 두 개의 입력 값 만을 입력 받으며, 상기 입력 값은 [1,0] 논리 비트 연산 결과와 비트 포지션의 현재 상태를 나타내는 twos 값이다.
CSA(120)와 CSA(130)에서 출력된 두 개의 캐리는 2^2 비트 포지션에 따른 출력을 저장하는 공간인 fours를 초기화한 입력 값과 같이 CSA(140)에 입력된다.
2^1 비트 포지션을 갖는 [0,1] 및 [1,0]의 캐리 값을 전달받아 2^2 비트 포지션을 나타내기 위해 CSA(140)에서는 두 개의 캐리와 fours를 입력 받고, CSA(140)의 합산 출력 값이 fours에 저장되어 2^2 비트 포지션을 나타낸다.
따라서, CSA(150)에 fours의 값과 [1,1] 논리 비트 연산 결과 값을 포함하는 두 개의 값을 입력 받아 CSA(150)에서 출력한 합산 출력 값이 fours에 다시 저장되어 이는 그대로 출력된다.
CSA(140)와 CSA(150)에서 출력된 두 개의 캐리는 비트 정밀도를 나타내는 CSA의 출력 값이자 2^3 비트 포지션에 따른 출력을 저장하는 공간인 eights를 초기화한 입력 값과 같이 CSA(160)에 입력된다.
2^2 비트 포지션을 갖는 [1,1]의 캐리 값을 전달받아 2^4 비트 포지션을 나타내기 위해 CSA(160)에서는 CSA(140) 및 CSA(150)에서 출력된 두 개의 캐리와 eights를 입력 받고, CSA(160)의 합산 출력 값이 eights에 저장되어 2^3 비트 포지션을 나타내고, CSA(160)의 캐리가 2^4 비트 포지션에 따른 출력을 저장하는 공간인 sixteens에 저장된다.
도 5에 도시된 CSA 연산 결과 ones, twos, fours, eights를 획득할 수 있고, 상기 네 개의 출력 값에 대해 팝 카운트를 적용하여 팝 카운트 값을 각 비트 포지션에 따라 0비트, 1비트, 2비트, 3비트 왼쪽으로 시프트하여 그 합산을 구함으로써 컨볼루션 연산을 마칠 수 있다.
상술한 예시의 경우 2bit*2bit에 불과하며 입력 값이 각각 한 개의 비트 집합으로 표현되어 입력 값에 대한 팝 카운트와 출력 값에 대한 팝 카운트 연산 개수가 크게 차이 나지 않지만 입력 비트의 수가 커질수록 혹은 상기 비트 연산의 결과가 많은 비트들로 주어져 연산기가 한번에 처리할 수 있는 크기를 벗어나 여러 개의 비트 집합으로 주어질 경우 팝 카운트 연산 개수가 줄어들고, 비트 포지션을 반영하여 상기 비트 연산의 결과를 적절한 CSA에 입력함으로써 출력 값에 대해 별도로 시프트 및 합산을 수행하지 않아 연산 효율이 극대화될 수 있다.
도 6은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 수행하는 알고리즘의 수도 코드를 도시한 것이다.
상술한 할리-실 팝 카운트를 이용한 비트 시리얼 연산 방법을 구현한 알고리즘의 수도 코드이며, 도 6을 참조하면, CSA 입력 값이 두 개인 CSA와 입력 값이 세 개인 CSA가 반복하여 사용됨을 알 수 있다.
따라서, avx2 할리-실 팝카운트를 상술한 바와 같이 구조화하여 이미 각 비트 포지션을 나타내는 저장 공간의 값을 사용함으로써 각 비트 포지션 별로 시프트 후 합산(shift-add)의 필요성 없고, shift와 add를 위해 소모되는 latency를 줄일 수 있다. 더하여, 부분합의 저장 필요성도 없어져 연산 성능을 향상시킬 수 있다.
도 7은 본 발명의 일 실시예에 따른 변형된 할리-실 팝 카운트를 이용한 비트 시리얼 연산 장치의 구성을 도시한 블록도이다.
본 발명의 일 실시예에 따르면, 팝 카운트 연산을 실행하기 위한 장치(1100)로서, 메모리(1120) 및 상기 메모리(1120)에 결합된 프로세서(1110)를 포함하고, 상기 프로세서(1110)는 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하고, 상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력할 수 있다.
상술한 내용과 동일한 내용은 중복을 피하기 위해 생략하기로 한다.
본 출원의 실시예에 개시된 방법의 내용은 하드웨어 프로세서로 직접 구현될 수 있으며, 또는 프로세서 중 하드웨어 및 소프트웨어 모듈의 조합으로 구현되어 수행 완성될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래머블 판독 전용 메모리 또는 전기적 소거 가능 프로그래머블 메모리, 레지스터 등과 같은 종래의 저장 매체에 저장될 수 있다. 상기 저장 매체는 메모리에 위치하며, 프로세서는 메모리에 저장된 정보를 판독하여, 그 하드웨어와 결합하여 상술한 방법의 내용을 완성한다. 중복되는 것을 방지하기 위해, 여기서는 상세한 설명을 생략한다.
구현 과정에서, 상술한 방법의 각 내용은 프로세서 중 하드웨어의 논리 집적 회로 또는 소프트웨어 형태의 인스트럭션에 의해 완성될 수 있다. 본 출원의 실시예에 개시된 방법의 내용은 하드웨어 프로세서로 직접 구현될 수 있으며, 또는 프로세서 중 하드웨어 및 소프트웨어 모듈의 조합으로 구현되어 수행 완성될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래머블 판독 전용 메모리 또는 전기적 소거 가능 프로그래머블 메모리, 레지스터 등과 같은 종래의 저장 매체에 저장될 수 있다. 상기 저장 매체는 메모리에 위치하며, 프로세서는 메모리에 저장된 정보를 판독하여, 그 하드웨어와 결합하여 상술한 방법의 내용을 완성한다.
즉, 본 분야에서 통상의 지식을 가진 자들은, 본 명세서에서 개시한 실시예에서 설명하는 각 예시적인 유닛 및 알고리즘 단계를 결합하여, 전자 하드웨어 또는 컴퓨터 소프트웨어와 전자 하드웨어의 결합으로 실현할 수 있음을 알 수 있다. 이러한 기능을 하드웨어 방식으로 수행할 것인지 아니면 소프트웨어 방식으로 수행할 것인지는, 기술방안의 특정 응용과 설계 제약 조건에 의해 결정된다. 통상의 지식을 가진 자들은 특정된 응용 각각에 대해 서로 다른 방법을 사용하여 설명한 기능을 실현할 수 있지만, 이러한 실현은 본 출원의 범위를 벗어난 것으로 간주되어서는 안된다.
본 출원에서 제공하는 몇 개의 실시예에서, 이해해야 할 것은 개시된 장치와 방법은 기타 방식을 통해 실현될 수 있다. 예를 들어, 위에서 설명한 장치 실시예는 단지 예시적인 것으로서, 예를 들어, 상기 유닛의 구분은 단지 일종 논리적 기능 구분으로서, 실제 실현 시 기타의 구분 방식이 존재할 수 있으며, 예를 들어, 복수의 유닛 또는 어셈블리는 다른 하나의 시스템에 결합되거나 집적될 수 있고, 또는 일부 특징은 무시하거나 수행하지 않을 수 있다. 다른 한편, 표시되거나 논의되는 서로 사이의 커플링 또는 직접적인 커플링 또는 통신 연결은 일부 인터페이스, 장치 또는 유닛을 통한 간접적인 커플링 또는 통신 연결일 수 있고, 전기적, 기계적 또는 기타 형태일 수 있다.
위에서 분리된 부품으로서 설명된 유닛은 물리적으로 분리된 것일 수 있고, 유닛으로서 표시되는 부품은 물리적 유닛이거나 아닐 수 있는 바, 즉 한 곳에 위치하거나 복수의 네트워크 유닛에 분포될 수도 있다. 실제 수요에 따라 그 중 일부 또는 모든 유닛을 선택하여 본 실시예의 방안의 목적을 실현할 수 있다.
즉, 본 출원의 각 실시예에서의 각 기능 유닛은 하나의 처리 유닛에 집적될 수 있고, 각 유닛이 단독으로 존재할 수도 있으며, 둘 또는 둘 이상의 유닛이 하나의 유닛에 집적될 수도 있다.
상기 기능이 만약 소프트웨어 기능 유닛의 형태로 구현되어 독립적인 제품으로서 판매되거나 사용될 경우, 하나의 컴퓨터 판독 가능 저장매체에 저장될 수 있다. 이러한 이해에 기반하여, 본 출원의 기술방안에서 본질적으로 또는 선행기술에 대해 기여한 부분 또는 상기 기술방안의 일부분은 소프트웨어 제품의 형태로 구현될 수 있고, 상기 컴퓨터 소프트웨어 제품은 하나의 저장매체에 저장되며, 약간의 인스트럭션을 포함하여 하나의 컴퓨터 장치(개인 컴퓨터, 서버 또는 네트워크 기기 등일 수 있음)로 하여금 본 출원의 각 실시예에서 설명하는 방법의 전부 또는 일부 단계를 수행하도록 한다. 상술한 저장매체는 USB 메모리, 모바일 하드디스크, 읽기 전용 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 시디롬 등과 같은 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되지 아니한다. 첨부된 청구범위에 의해 권리범위를 한정하고자 하며, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 형태의 치환, 변형 및 변경할 수 있다는 것은 당 기술분야의 통상의 지식을 가진 자에게 자명할 것이다.
110, 120, 130, 140, 150, 160: CSA
1100: 처리 장치
1110: 프로세서
1120: 메모리

Claims (9)

  1. 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 하나 이상의 컴퓨터 프로그램이 저장된 메모리를 포함하는 컴퓨터 상에서 수행되는 비트 시리얼 연산 방법으로서, 상기 방법은
    비트 연산기에 의해 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 단계;
    상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하는 단계; 및
    팝 카운터에 의해 상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 단계를 포함하는,
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법.
  2. 제1 항에 있어서,
    상기 비트 연산은 논리 앤드 연산(logical AND operation)인 것을 특징으로 하는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법.
  3. 제1 항에 있어서,
    상기 CSA에 입력하는 단계는
    가장 낮은 비트 포지션(LSB) 간의 비트 연산 결과를 입력할 때는 상기 비트 연산의 결과 값과 가장 낮은 비트 포지션에 해당하는 저장 공간을 입력 받으며,
    그 외 비트 포지션 간의 비트 연산 결과를 입력할 때는 상기 비트 연산의 결과 값과 이전 CSA의 캐리 및 비트 포지션에 해당하는 저장 공간의 값을 입력 받는 것을 특징으로 하는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법.
  4. 제3 항에 있어서,
    상기 CSA의 출력 값은 입력된 저장 공간에 다시 저장되어 다음 CSA에 입력으로 제공되는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법.
  5. 제1 항에 있어서,
    상기 CSA에 입력하는 단계는
    상기 비트 연산의 결과 값과 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 두 개의 입력 값을 입력하는 제1 단계;
    상기 비트 연산의 결과 값과 이전 CSA의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력하는 제2 단계; 및
    이전 CSA들의 복수의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력하는 제3 단계; 중 적어도 제1 단계를 포함하는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법.
  6. 팝 카운트 연산을 실행하기 위한 장치로서,
    메모리; 및
    상기 메모리에 결합된 프로세서를 포함하고,
    상기 프로세서는
    웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하고,
    상기 비트 연산의 결과 값과 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 캐리 세이브 에더(Carry Saver Adder, CSA)에 입력하고,
    상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하도록 구성된 장치.
  7. 제1 항 내지 제5 항 중 어느 한 항에 따른 방법을 컴퓨터 상에서 수행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 독출 가능한 기록 매체.
  8. 웨이트 커널 및 입력 액티베이션 간의 비트 연산을 수행하는 비트 연산기;
    상기 비트 연산기로부터 출력된 비트 연산의 결과 값 및 할리-실 팝 카운트 연산을 위한 비트 포지션(bit position)에 따른 출력을 저장하는 저장 공간의 값을 입력 받는 캐리 세이브 에더(Carry Saver Adder, CSA); 및
    상기 CSA에서 출력된 출력 값에 대해 팝 카운트를 수행하는 팝 카운터;를 포함하는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 장치.
  9. 제8 항에 있어서,
    상기 CSA는, 상기 비트 연산의 결과 값과 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 두 개의 입력 값을 입력 받거나, 또는
    상기 비트 연산의 결과 값과 이전 CSA의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력 받거나, 또는
    이전 CSA들의 복수의 캐리 및 비트 포지션에 따른 출력을 저장하는 공간의 값을 포함하는 세 개의 입력 값을 입력 받는 것을 특징으로 하는
    변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 장치.
KR1020220083327A 2022-07-06 2022-07-06 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치 KR102482300B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220083327A KR102482300B1 (ko) 2022-07-06 2022-07-06 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220083327A KR102482300B1 (ko) 2022-07-06 2022-07-06 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102482300B1 true KR102482300B1 (ko) 2022-12-29

Family

ID=84539601

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220083327A KR102482300B1 (ko) 2022-07-06 2022-07-06 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102482300B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060030259A (ko) * 2004-10-05 2006-04-10 동부아남반도체 주식회사 시스템 클록을 이용한 곱셈 처리기
KR20160039544A (ko) * 2014-10-01 2016-04-11 삼성전자주식회사 실시간 분석을 지원하는 인-메모리 팝 카운트
KR20190089685A (ko) * 2018-01-23 2019-07-31 삼성전자주식회사 데이터를 처리하는 방법 및 장치
KR20200079059A (ko) * 2018-12-24 2020-07-02 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060030259A (ko) * 2004-10-05 2006-04-10 동부아남반도체 주식회사 시스템 클록을 이용한 곱셈 처리기
KR20160039544A (ko) * 2014-10-01 2016-04-11 삼성전자주식회사 실시간 분석을 지원하는 인-메모리 팝 카운트
KR20190089685A (ko) * 2018-01-23 2019-07-31 삼성전자주식회사 데이터를 처리하는 방법 및 장치
KR20200079059A (ko) * 2018-12-24 2020-07-02 삼성전자주식회사 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
arXiv:1611.07612v9 [cs.DS] 5 Sep 2018("Faster Population Counts Using AVX2 Instructions", Wojciech Mu la, Nathan Kurz and Daniel Lemire)

Similar Documents

Publication Publication Date Title
CN110688158B (zh) 计算装置以及神经网络的处理系统
CN108427990B (zh) 神经网络计算系统和方法
CN107256424B (zh) 三值权重卷积网络处理系统及方法
WO2018205708A1 (zh) 应用于二值权重卷积网络的处理系统及方法
US11249721B2 (en) Multiplication circuit, system on chip, and electronic device
WO2019165989A1 (zh) 一种用于神经网络的数据处理电路
WO2019216376A1 (ja) 演算処理装置
CN112200713A (zh) 一种联邦学习中的业务数据处理方法、装置以及设备
CN111507465A (zh) 一种可配置的卷积神经网络处理器电路
CN111931925A (zh) 基于fpga的二值化神经网络的加速系统
CN114443559A (zh) 可重构算子单元、处理器、计算方法、装置、设备及介质
JP7033507B2 (ja) ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
WO2021081854A1 (zh) 一种卷积运算电路和卷积运算方法
CN114168106A (zh) 基于卷积神经网络的数据处理方法、装置及设备
Reis et al. A fast and energy efficient computing-in-memory architecture for few-shot learning applications
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
KR102482300B1 (ko) 변형된 할리-실 팝 카운트를 포함하는 비트 시리얼 연산 방법 및 장치
CN111931441B (zh) Fpga快速进位链时序模型的建立方法、装置以及介质
US11275713B2 (en) Bit-serial linear algebra processor
TW202333041A (zh) 執行浮點運算的系統及方法
CN112132272B (zh) 神经网络的计算装置、处理器和电子设备
WO2022213073A1 (en) Sparse machine learning acceleration
CN115708090A (zh) 一种计算装置、方法、系统、电路、芯片及设备
WO2020063225A1 (zh) 一种数据处理方法和装置
US11263517B1 (en) Flexible weight expansion

Legal Events

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