KR102339896B1 - 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 - Google Patents
프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 Download PDFInfo
- Publication number
- KR102339896B1 KR102339896B1 KR1020210066271A KR20210066271A KR102339896B1 KR 102339896 B1 KR102339896 B1 KR 102339896B1 KR 1020210066271 A KR1020210066271 A KR 1020210066271A KR 20210066271 A KR20210066271 A KR 20210066271A KR 102339896 B1 KR102339896 B1 KR 102339896B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- weights
- significant
- selection signal
- input
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
프로세싱 엘리먼트가 개시된다. 상기 프로세싱 엘리먼트는 N 비트 가중치들을 저장하는 가중치 레지스터, N 비트 입력 활성화들을 저장하는 입력 활성화 레지스터, 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 서로 다른 값들을 가지는 선택 신호를 생성하는 선택 신호 생성기, 상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제1선택기, 상기 M 비트 가중치들 중 어느 하나와 상기 M 비트 입력 활성화들 중 어느 하나를 곱하여 제1부분 곱을 생성하는 제1부분 곱 생성기(partial product generator), 상기 1/2 x M 비트 가중치들 중 어느 하나와 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 곱하여 제2부분 곱을 생성하는 제2부분 곱 생성기, 및 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 어느 하나를 선택하는 제2선택기를 포함한다.
Description
본 발명은 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기에 관한 것으로, 상세하게는 전력 소비를 감소시키기 위한 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기에 관한 것이다.
인공 신경망(artificial neural network)은 컴퓨터 비전(computer vision), 자연어 처리, 및 음성 인식과 같은 다양한 인공 지능 어플리케이션들에서 사용된다. 인공 신경망은 훈련 단계와 추론 단계로 나뉠 수 있다. 훈련 단계에서 훈련 데이터를 이용하여 인공 신경망의 파라미터들이 학습된다. 추론 단계에서 새로운 입력 데이터를 훈련된 인공 신경망에 적용하여 인공 신경망의 예측 결과가 출력된다.
훈련 동작은 CPU, 또는 GPU에서 수행된다. 추론 동작은 인공 지능 어플리케이션들을 가속시키기 위해 특별히 고안된 하드웨어인 AI 가속기에서 수행된다.
AI 가속기는 복수의 프로세싱 엘리먼트들을 포함한다. AI 가속기의 프로세싱 엘리먼트는 인공 신경망의 가중치들과 입력 활성화들(input activations)을 곱하는 연산을 수행한다.
프로세싱 엘리먼트는 4 비트 가중치들과 4 비트 입력 활성화들을 곱셈할 때, 2 비트 가중치들과 2 비트 입력 활성화들의 곱셈보다 더 정확한 연산이 가능하다는 장점이 있다. 하지만, 프로세싱 엘리먼트는 4 비트 가중치들과 4 비트 입력 활성화들을 곱셈할 때, 2 비트 가중치들과 2 비트 입력 활성화들의 곱셈보다 더 많은 소비 전력을 요구한다는 단점이 있다.
본 발명이 이루고자 하는 기술적인 과제는 상기와 같은 종래의 문제점을 해결하기 위한 것으로, 소비 전력을 감소시킬 수 있는 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기를 제공하는 것이다.
본 발명의 실시 예에 따른 프로세싱 엘리먼트는 N 비트 가중치들을 저장하는 가중치 레지스터, N 비트 입력 활성화들을 저장하는 입력 활성화 레지스터, 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 서로 다른 값들을 가지는 선택 신호를 생성하는 선택 신호 생성기, 상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제1선택기, 상기 M 비트 가중치들 중 어느 하나와 상기 M 비트 입력 활성화들 중 어느 하나를 곱하여 제1부분 곱을 생성하는 제1부분 곱 생성기(partial product generator), 상기 1/2 x M 비트 가중치들 중 어느 하나와 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 곱하여 제2부분 곱을 생성하는 제2부분 곱 생성기, 및 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 어느 하나를 선택하는 제2선택기를 포함한다.
상기 제1선택기는 상기 N 비트 가중치들을 수신하여 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나, 또는 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하는 제1디멀티플렉서(demultiplexer), 및 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 M 비트 입력 활성화들 중 어느 하나, 또는 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제2디멀티플렉서(demultiplexer)를 포함한다.
제1값을 가지는 상기 선택 신호는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
제2값을 가지는 상기 선택 신호는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 입력 활성화에 대해 생성된다.
상기 제1선택기는 상기 제1값을 가지는 상기 선택 신호에 따라 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력한다.
상기 1/2 x M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트와 상기 그 다음 비트가 제거된 가중치이다.
상기 1/2 x M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에서 상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화이다.
상기 제1선택기는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하고, 상기 M 비트 입력 활성화들 중 어느 하나를 출력한다.
상기 M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 가중치이다.
상기 M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 입력 활성화이다.
상기 선택 신호 생성기는 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제1레벨을 가지는 제1제어 신호를 생성하며, 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제2레벨을 가지는 상기 제1제어 신호를 생성하는 제1감지 회로, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제3레벨을 가지는 제2제어 신호를 생성하며, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제4레벨을 가지는 상기 제2제어 신호를 생성하는 제2감지 회로, 및 상기 제1제어 신호와 상기 제2제어 신호를 수신하고, AND 연산을 수행하여 상기 선택 신호를 생성하는 AND 게이트를 포함한다.
본 발명의 실시 예에 따라 상기 프로세싱 엘리먼트는 상기 제1부분 곱 생성기와 상기 제2부분 곱 생성기 각각이 제1플립플롭과 제2플립플롭을 포함할 때, 상기 선택 신호 생성기에서 출력되는 상기 선택 신호를 지연시켜 상기 제2선택기로 출력하는 제3플립 플롭을 더 포함할 수 있다.
본 발명의 실시 예에 따라 제1값을 가지는 상기 선택 신호는 상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
제2값을 가지는 상기 선택 신호는 상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
본 발명의 실시 예에 따른 프로세싱 엘리먼트의 동작 방법은 프로세싱 엘리먼트는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치가 있는지 판단하는 단계, 상기 프로세싱 엘리먼트는 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하는 단계, 상기 프로세싱 엘리먼트는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와, 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화가 있을 때, 제1값을 가지는 선택 신호를 생성하는 단계, 상기 프로세싱 엘리먼트는 상기 선택 신호에 따라 상기 i번째 M 비트 가중치와 상기 i번째 M 비트 입력 활성화 각각에서 상기 최상위 비트와 상기 그 다음 비트를 제거하는 단계, 및 상기 프로세싱 엘리먼트는 상기 최상위 비트와 상기 그 다음 비트가 제거된 가중치와 입력 활성화를 곱하여 제1부분 곱을 생성하는 단계를 포함한다.
상기 프로세싱 엘리먼트의 동작 방법은 상기 프로세싱 엘리먼트는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있는지 판단하는 단계, 상기 프로세싱 엘리먼트는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있을 때, 제2값을 가지는 상기 선택 신호를 생성하는 단계, 상기 프로세싱 엘리먼트는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 p번째 M 비트 가중치와 상기 p번째 M 비트 입력 활성화를 곱하여 제2부분 곱을 생성하는 단계를 더 포함할 수 있다.
상기 프로세싱 엘리먼트의 동작 방법은 상기 프로세싱 엘리먼트는 상기 제1값을 가지는 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제1부분 곱을 선택하여 출력하는 단계, 및 상기 프로세싱 엘리먼트는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제2부분 곱을 선택하여 출력하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 가속기는 복수의 프로세싱 엘리먼트들을 포함하는 프로세싱 엘리먼트 어레이, 및 상기 복수의 프로세싱 엘리먼트들로부터 출력되는 부분 합들을 저장하고, 부분 합들을 더하여 곱셈 가중치 합(weighted sum)을 출력하는 누산기를 포함한다.
상기 복수의 프로세싱 엘리먼트들 각각은 N 비트 가중치들을 저장하는 가중치 레지스터, N 비트 입력 활성화들을 저장하는 입력 활성화 레지스터, 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 선택 신호를 생성하는 선택 신호 생성기, 상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K 개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제1선택기, 상기 M 비트 가중치들 중 어느 하나와 상기 M 비트 입력 활성화들 중 어느 하나를 곱하여 제1부분 곱을 생성하는 제1부분 곱 생성기(partial product generator), 상기 1/2 x M 비트 가중치들 중 어느 하나와 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 곱하여 제2부분 곱을 생성하는 제2부분 곱 생성기, 및 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 어느 하나를 선택하는 제2선택기를 포함한다.
상기 제1선택기는 상기 N 비트 가중치들을 수신하여 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나, 또는 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하는 제1디멀티플렉서(demultiplexer), 및 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 M 비트 입력 활성화들 중 어느 하나, 또는 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제2디멀티플렉서(demultiplexer)를 포함한다.
제1값을 가지는 상기 선택 신호는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
제2값을 가지는 상기 선택 신호는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 입력 활성화에 대해 생성된다.
상기 제1선택기는 상기 제1값을 가지는 상기 선택 신호에 따라 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력한다.
상기 1/2 x M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트와 상기 그 다음 비트가 제거된 가중치이다.
상기 1/2 x M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에서 상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화이다.
상기 제1선택기는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하고, 상기 M 비트 입력 활성화들 중 어느 하나를 출력한다.
상기 M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 가중치이다.
상기 M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 입력 활성화이다.
상기 선택 신호 생성기는 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제1레벨을 가지는 제1제어 신호를 생성하며, 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제2레벨을 가지는 상기 제1제어 신호를 생성하는 제1감지 회로, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제3레벨을 가지는 제2제어 신호를 생성하며, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제4레벨을 가지는 상기 제2제어 신호를 생성하는 제2감지 회로, 및 상기 제1제어 신호와 상기 제2제어 신호를 수신하고, AND 연산을 수행하여 상기 선택 신호를 생성하는 AND 게이트를 포함한다.
상기 프로세싱 엘리먼트는 상기 제1부분 곱 생성기와 상기 제2부분 곱 생성기 각각이 제1플립플롭과 제2플립플롭을 포함할 때, 상기 선택 신호 생성기에서 출력되는 상기 선택 신호를 지연시켜 상기 제2선택기로 출력하는 제3플립 플롭을 더 포함할 수 있다.
상기 복수의 프로세싱 엘리먼트들 각각은 상기 제2선택기로부터 출력되는 상기 제1부분 곱, 또는 상기 제2부분 곱을 다른 부분 곱과 가산하여 부분 합(partial sum)과 부분 자리올림(partial carry)를 생성하는 CSA 어레이, 상기 CSA 어레이로부터 출력되는 상기 부분 합과 상기 부분 자리올림을 저장하기 위한 래치들(latches), 및 상기 래치들에서 출력되는 상기 부분 합과 상기 부분 자리올림을 합산하고, 합산 값에 따라 상기 합산 값, 또는 포화값이 출력되는 포화 가산기(saturating adder)를 포함한다.
본 발명의 실시 예에 따라 제1값을 가지는 상기 선택 신호는 상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
제2값을 가지는 상기 선택 신호는 상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
본 발명의 실시 예에 따른 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기는 평상시에는 가중치들과 입력 활성화들에 대해 M 비트(예컨대, 4 비트) 곱셈 동작을 수행하며, 가중치들과 입력 활성화들의 1/2 x M 비트(예컨대, 2 비트) 곱셈 동작이 가능할 때는 가중치들과 입력 활성화들을 1/2 x M 비트(예컨대, 2 비트) 곱셈 동작으로 수행하게 함으로써 소비 전력을 감소시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 프로세싱 유닛의 동작을 설명하기 위한 인공 신경망의 블록도를 나타낸다.
도 3은 도 1에 도시된 가속기의 블록도를 나타낸다.
도 4는 도 3에 도시된 프로세싱 엘리먼트(processing element)의 내부 블록도를 나타낸다.
도 5는 도 4에 도시된 선택 신호 생성기의 내부 블록도를 나타낸다.
도 6은 본 발명의 다른 실시 예에 따른 프로세싱 엘리먼트의 내부 블록도를 나타낸다.
도 7은 도 4에 도시된 프로세싱 엘리먼트의 동작 방법을 설명하기 위한 흐름도를 나타낸다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 프로세싱 유닛의 동작을 설명하기 위한 인공 신경망의 블록도를 나타낸다.
도 3은 도 1에 도시된 가속기의 블록도를 나타낸다.
도 4는 도 3에 도시된 프로세싱 엘리먼트(processing element)의 내부 블록도를 나타낸다.
도 5는 도 4에 도시된 선택 신호 생성기의 내부 블록도를 나타낸다.
도 6은 본 발명의 다른 실시 예에 따른 프로세싱 엘리먼트의 내부 블록도를 나타낸다.
도 7은 도 4에 도시된 프로세싱 엘리먼트의 동작 방법을 설명하기 위한 흐름도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다. 도 2는 도 1에 도시된 프로세싱 유닛의 동작을 설명하기 위한 인공 신경망의 블록도를 나타낸다.
도 1과 도 2를 참고하면, 시스템(100)은 인공 신경망(103)의 가중치들(weights)과 활성화들(activations)의 곱셈 연산을 보다 빠르게 하고 소비 전력을 감소시키기 위한 시스템이다. 시스템(100)은 스마트 폰, 노트북, 태블릿 PC, PC, 또는 서버와 같은 전자 장치이다. 시스템(100)은 CPU(Central Processing Unit; 10), GPU(Graphics Processing Unit; 20), 메모리(30), 및 가속기(200)를 포함한다. 도 1에 도시된 시스템(100)은 본 발명을 설명하기 위한 일 실시 예를 나타낸다. 실시 예에 따라 시스템(100)은 다양하게 구현될 수 있다. 예컨대, 시스템(100)은 입력 장치(미도시), 또는 송수신기(transceiver; 미도시)를 더 포함할 수 있다. CPU(10), GPU(20), 메모리(30), 및 가속기(200)는 버스(101)에 접속된다. CPU(10), GPU(20), 메모리(30), 및 가속기(200)는 버스(101)를 통해 명령들과 데이터를 주고 받는다.
CPU(10)는 인공 신경망(103)의 가중치들과 편향 벡터들(bias vectors)인 파라미터들을 훈련시키기 위한 명령들을 실행한다. 실시 예에 따라 인공 신경망(103)의 훈련은 GPU(20)에서 수행될 수 있다.
메모리(30)는 CPU(10), 또는 GPU(20)에서 실행되는 명령들을 저장한다. 본 발명에서 프로세싱 유닛은 CPU(10), 또는 GPU(20)를 의미한다.
가속기(200)는 인공 신경망(103)의 훈련이 끝난 뒤인 인공 신경망(103)의 추론이 수행된다. 실시 예에 따라 가속기(200)는 AI 가속기로 호칭될 수 있다. 또한, 실시 예에 따라 가속기(200)는 가속 하드웨어로 호칭될 수 있다.
도 2를 참고하면, 인공 신경망(103)은 입력 레이어(input layer; 105), 은닉 레이어(hidden layer; 107), 및 출력 레이어(output layer; 109)를 포함한다.
입력 레이어(105)는 각 값(each value)을 수신한다. 입력 레이어(105)는 각 값을 복제(duplicate)하고, 복제된 각 값을 은닉층(107)으로 전송한다. 상기 각 값은 입력 활성화(input activations)라고 호칭될 수 있다. 메모리(30)는 각 값을 저장한다.
은닉 레이어(107)는 각 값과 가중치들을 곱하고, 가중치 합(weighted sum)을 출력한다. 상기 가중치 합은 출력 활성화(output activations)라고 호칭될 수 있다. 메모리(30)는 가중치들과 가중치 합을 저장한다.
실시 예에 따라 은닉 레이어(107)는 가중치 합을 활성화 함수에 적용할 수 있다. 인공 신경망(103)의 훈련 단계에서 각 값과 가중치들의 곱은 CPU(10), 또는 GPU(20)에서 수행된다. 인경 신경망(103)의 추론 단계에서 각 값과 가중치들의 곱은 가속기(200)에서 수행된다.
출력 레이어(109)는 은닉 레이어(107)로부터 수신된 가중치 합을 활성화 함수(activation function)에 적용하여 출력 값을 생성한다.
입력 레이어(105), 은닉 레이어(107), 및 출력 레이어(109) 각각은 노드들을 포함한다. 실시 예에 따라 입력 레이어(105), 은닉 레이어(107), 및 출력 레이어(109)의 노드들의 수와, 은닉 레이어(107)의 레이어 수는 다양할 수 있다.
도 3은 도 1에 도시된 가속기의 블록도를 나타낸다.
도 1과 도 3을 참고하면, 가속기(200)는 컨트롤러(210), 입력 활성화 버퍼(220), 가중치 버퍼(230), 출력 버퍼(240), 제1레지스터(250), 제2레지스터(260), 복수의 프로세싱 엘리먼트들(processing elements; 270), 및 누산기(accumulator; 280)를 포함한다.
컨트롤러(210)는 CPU(10), 또는 GPU(20)로부터 가속기(200)의 동작을 실행시키기 위한 명령들을 수신한다. 예컨대, 상기 명령들은 로드(load) 명령, 곱셈 명령, 합산 명령, 및 저장 명령을 포함할 수 있다. 컨트롤러(210)가 상기 로드 명령을 수신할 때, 컨트롤러(210)는 제1레지스터(250)에 저장된 입력 활성화들, 또는 제2레지스터(260)에 저장된 가중치들을 복수의 프로세싱 엘리먼트들(270)에 로드(load)하기 위해 제1레지스터(250), 또는 제2레지스터(260)를 제어한다. 컨트롤러(210)는 CPU(10), 또는 GPU(20)로부터 수신된 명령들에 따라 가속기(200)의 각 구성요소들(220, 230, 240, 250, 260, 270, 및 280)의 동작들을 제어한다.
입력 활성화 버퍼(220)는 메모리(30)로부터 입력 활성화들을 수신하여 저장한다. 가중치 버퍼(230)는 메모리(30)로부터 가중치들을 수신하여 저장한다.
출력 버퍼(240)는 누산기(280)로부터 출력되는 결과 값을 저장하고, 결과 값을 CPU(10), GPU(20), 또는 메모리(30)로 전송한다.
제1레지스터(250)는 입력 활성화 버퍼(220)로부터 입력 활성화들을 수신하고 저장한다. 제2레지스터(260)는 가중치 버퍼(230)로부터 가중치들을 수신하고 저장한다. 제1레지스터(250)와 제2레지스터(260)는 FIFO(First In First Out) 레지스터일 수 있다.
복수의 프로세싱 엘리먼트들(270) 각각은 제1레지스터(250)로부터 수신된 입력 활성화들과 제2레지스터(260)로부터 수신된 가중치들을 곱하는 곱셈 연산을 수행하고, 부분 합(partial sum)을 생성한다. 복수의 프로세싱 엘리먼트들(270)은 프로세싱 엘리먼트 어레이(272)로 호칭될 수 있다.
누산기(280)는 복수의 프로세싱 엘리먼트들(270)로부터 출력되는 부분 합들을 저장하고, 부분 합들을 더하여 곱셈 가중치 합(weighted sum)을 업데이트한다.
실시 예에 따라 가속기(200)의 구조는 다양하게 구현될 수 있다.
도 4는 도 3에 도시된 프로세싱 엘리먼트(processing element)의 내부 블록도를 나타낸다.
도 1 내지 도 4를 참고하면, 복수의 프로세싱 엘리먼트들(270)은 모두 같은 구조를 가진다. 도 4에 대표적으로 복수의 프로세싱 엘리먼트들(270) 중 어느 하나의 프로세싱 엘리먼트(270)가 도시된다.
프로세싱 엘리먼트(270)는 가중치 레지스터(271), 입력 활성화 레지스터(273), 선택 신호 생성기(300), 제1선택기(275), 제1복수의 부분 곱 생성기들(283), 제2복수의 부분 곱 생성기들(285), 제2선택기(287), CSA 어레이(289), 래치들(latches; 291), 및 포화 가산기(293)를 포함한다.
가중치 레지스터(271)는 제2레지스터(260)에 저장된 N 비트 가중치들을 수신하고, N 비트 가중치들을 저장한다. 상기 N은 양수이다. 예컨대, 상기 N은 32일 수 있다. 도 4에서 32 비트 가중치들("A0, A1,..., 및 A31")이 도시된다. 즉, 가중치 레지스터(271)는 32 비트 가중치들을 저장할 수 있다. 실시 예에 따라 상기 N은 다양한 값을 가질 수 있다. 상기 N 비트 가중치들은 가중치 시퀀스(sequence)를 나타낸다. 가중치 시퀀스란 복수의 가중치들("A0, A1,..., 및 A31")을 의미한다.
입력 활성화 레지스터(273)는 제1레지스터(250)에 저장된 N 비트 입력 활성화들을 수신하고, N 비트 입력 활성화들을 저장한다. 상기 N은 양수이다. 예컨대, 상기 N은 32일 수 있다. 도 4에서 32 비트 입력 활성화들("B0, B1, ...., 및 B31")이 도시된다. 입력 활성화 레지스터(273)는 32 비트 입력 활성화들을 저장할 수 있다. 실시 예에 따라 상기 N은 다양한 값을 가질 수 있다. 상기 N 비트 입력 활성화들은 입력 활성화 시퀀스(sequence)를 나타낸다. 입력 활성화 시퀀스란 복수의 입력 활성화들("B0, B1,..., 및 B31")을 의미한다. 상기 N 비트 가중치들에서 N과 상기 N 비트 입력 활성화들에서 N은 같은 문자이다. 즉, 가중치 레지스터(271)가 32 비트 가중치들을 저장할 때, 입력 활성화 레지스터(273)도 32 비트 입력 활성화들을 저장한다.
선택 신호 생성기(300)는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 서로 다른 값들을 가지는 선택 신호(SEL)를 생성한다.
상기 N 비트 가중치들은 K개의 M 비트 가중치들로 나뉠 수 있다. 상기 K와 상기 M은 자연수이다. 예컨대, N이 32이고, M이 4일 때, K는 8이다. 즉, 32 비트 가중치들("A0, A1, ..., 및 A31")은 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")로 나뉠 수 있다. 각 가중치("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 또는 "A28, A29, A30, A31")는 4비트로 표현된다. 실시 예에 따라 상기 M은 8, 또는 16일 수 있다.
상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나뉠 수 있다. 상기 K와 상기 M은 자연수이다. 예컨대, N이 32이고, M이 4일 때, K는 8이다. 즉, 32 비트 입력 활성화들("B0, B1, ..., 및 B31")은 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31")로 나뉠 수 있다. 각 입력 활성화("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 또는 "A28, A29, A30, A31")는 4 비트로 표현된다. 실시 예에 따라 상기 M은 8, 또는 16일 수 있다.
N이 32이고, M이 8, K가 4일 때, 32 비트 가중치들("A0, A1, ..., 및 A31")은 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")로 나뉠 수 있다. 각 가중치("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")는 8 비트로 표현된다.
N이 32이고, M이 8, K가 4일 때, 32 비트 입력 활성화들("B0, B1, ..., 및 B31")은 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31")로 나뉠 수 있다. 각 입력 활성화("B0, B1, B2, B3, B4, B5, B6, B7", ..., 또는 "B24, B25, B26, B27, B28, B29, B30, B31")는 8 비트로 표현된다.
상기 K와 상기 M은 상기 K개의 상기 M 비트 가중치들과 같은 문자이다. 즉, 32 비트 가중치들("A0, A1, ..., 및 A31")이 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")로 나뉠 때, 32 비트 입력 활성화들("B0, B1, ..., 및 B31")은 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31")로 나뉜다.
선택 신호 생성기(300)는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단한다. 예컨대, 선택 신호 생성기(300)는 32 비트 가중치들("A0, A1, ..., 및 A31")을 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")로 나누고, 32 비트 입력 활성화들("B0, B1, ..., 및 B31")을 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31")로 나눌 때, 상기 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")과 상기 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31") 중 최상위비트(A0, A4, A8, A12, A16, A20, A24, A28, B0, B4, B8, B12, B16, B20, B24, 또는 B28)와 그 다음 비트(A1, A5, A9, A13, A17, A21, A25, A29, B1, B5, B9, B13, B17, B21, B25, 또는 B29)가 모두 0인 i번째 4 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 4 비트 입력 활성화가 있는지 판단한다. 상기 i는 자연수이다. 상기 i는 순서를 나타낸다. 상기 그 다음 비트는 상기 최상위비트의 다음 비트를 의미한다.
비트 가중치("A4, A5, A6, A7") 중 최상위비트(A4)와 그 다음 비트(A5)가 모두 0일 때, 상기 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31") 중 2번째 4 비트 가중치("A4, A5, A6, A7")의 최상위비트(A4)와 그 다음 비트(A5)가 모두 0이다.
입력 활성화("B4, B5, B6, B7") 중 최상위비트(B4)와 그 다음 비트(B5)가 모두 0일 때, 상기 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31") 중 2번째 4 비트 입력 활성화("B4, B5, B6, B7")의 최상위비트(B4)와 그 다음 비트(B5)가 모두 0이다.
선택 신호 생성기(300)는 최상위비트(A4)와 그 다음 비트(A5)가 모두 0인 2번째 4 비트 가중치("A4, A5, A6, A7")와, 최상위비트(B4)와 그 다음 비트(B5)가 모두 0인 4 비트 입력 활성화("B4, B5, B6, B7")를 찾을 수 있다.
선택 신호 생성기(300)는 32 비트 가중치들("A0, A1, ..., 및 A31")을 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")로 나누고, 32 비트 입력 활성화들("B0, B1, ..., 및 B31")을 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31")로 나눌 때, 상기 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")과 상기 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31") 중 최상위비트(A0, A8, A16, 또는 A24)에서 4번째 비트(A1~A3, A9~A11, 또는 A17~A19, A25~A27)까지 모두 연속해서 0인 i번째 8 비트 가중치와, 최상위비트(B0, B8, B16, 또는 B24)에서 4번째 비트(B1~B3, B9~B11, B17~B19, 또는 B25~B27)까지 모두 연속해서 0인 i번째 8 비트 입력 활성화가 있는지 판단한다. 상기 i는 자연수이다. 상기 i는 순서를 나타낸다.
비트 가중치("A0, A1, A2, A3, A4, A5, A6, A7") 중 최상위비트(A0)에서 4번째 비트(A1~A3)까지 모두 0일 때, 상기 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31") 중 첫번째 8 비트 가중치(""A0, A1, A2, A3, A4, A5, A6, A7")의 최상위비트(A0)에서 4번째 비트(A1~A3)가 연속해서 모두 0이다.
입력 활성화("B0, B1, B2, B3, B4, B5, B6, B7") 중 최상위비트(B0)에서 4번째 비트(B1~B3)까지 모두 0일 때, 상기 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31") 중 첫번째 8 비트 입력 활성화(""B0, B1, B2, B3, B4, B5, B6, B7")의 최상위비트(B0)에서 4번째 비트(B1~B3)가 연속해서 모두 0이다.
선택 신호 생성기(300)는 최상위비트(A0)에서 4번째 비트(A1~A3)까지 모두 0 인 첫번째 비트 가중치(""A0, A1, A2, A3, A4, A5, A6, A7")와, 최상위비트(B0)에서 4번째 비트(B1~B3)까지 모두 0인 첫번째 8 비트 입력 활성화(""B0, B1, B2, B3, B4, B5, B6, B7")를 찾을 수 있다.
선택 신호 생성기(300)는 상기 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")과 상기 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31") 중 최상위비트(A0, A4, A8, A12, A16, A20, A24, A28, B0, B4, B8, B12, B16, B20, B24, 또는 B28)와 그 다음 비트(A1, A5, A9, A13, A17, A21, A25, A29, B1, B5, B9, B13, B17, B21, B25, 또는 B29)가 모두 0인 i번째 4 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 4 비트 입력 활성화가 있을 때, 제1값(예컨대, 1)을 가지는 선택 신호(SEL)를 생성한다. 상기 제1값은 하이(high) 상태를 의미할 수 있다. 실시 예에 따라 상기 제1값은 다양하게 표현될 수 있다. 상기 제1값을 가지는 선택 신호(SEL)는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성된다.
선택 신호 생성기(300)는 상기 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")과 상기 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31") 중 최상위비트(A0, A8, A16, 또는 A24)에서 4번째 비트(A1~A3, A9~A11, A17~A19, 또는 A25~A27)까지 모두 연속해서 0인 i번째 8 비트 가중치와, 최상위비트(B0, B8, B16, 또는 B24)에서 4번째 비트(B1~B3, B9~B11, B17~B19, 또는 B25~B27)까지 모두 연속해서 0인 i번째 8 비트 입력 활성화가 있을 때, 제1값(예컨대, 1)을 가지는 선택 신호(SEL)를 생성한다. 상기 제1값은 하이(high) 상태를 의미할 수 있다. 실시 예에 따라 상기 제1값은 다양하게 표현될 수 있다. 상기 제1값을 가지는 선택 신호(SEL)는 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 8 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 8비트 입력 활성화에 대해 생성될 수 있다.
선택 신호 생성기(300)는 상기 8개의 4 비트 가중치들("A0, A1, A2, A3", "A4, A5, A6, A7", ..., 및 "A28, A29, A30, A31")과 상기 8개의 4 비트 입력 활성화들("B0, B1, B2, B3", "B4, B5, B6, B7", ..., 및 "B28, B29, B30, B31") 중 최상위비트(A0, A4, A8, A12, A16, A20, A24, A28, B0, B4, B8, B12, B16, B20, B24, 또는 B28)와 그 다음 비트(A1, A5, A9, A13, A17, A21, A25, A29, B1, B5, B9, B13, B17, B21, B25, 또는 B29)가 모두 0인 i번째 4 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 4 비트 입력 활성화가 없을 때, 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성한다. 상기 제2값은 로우(low) 상태를 의미할 수 있다. 실시 예에 따라 상기 제2값은 다양하게 표현될 수 있다. 상기 제2값을 가지는 선택 신호(SEL)는 상기 최상위비트와 그 다음 비트가 모두 0이 아닌 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 입력 활성화에 대해 생성된다.
선택 신호 생성기(300)는 상기 4개의 8 비트 가중치들("A0, A1, A2, A3, A4, A5, A6, A7", ..., 및 "A24, A25, A26, A27, A28, A29, A30, A31")과 상기 4개의 8 비트 입력 활성화들("B0, B1, B2, B3, B4, B5, B6, B7", ..., 및 "B24, B25, B26, B27, B28, B29, B30, B31") 중 최상위비트(A0, A8, A16, 또는 A24)에서 4번째 비트(A1~A3, A9~A11, A17~A19, 또는 A25~A27)까지 모두 연속해서 0인 i번째 8 비트 가중치와, 최상위비트(B0, B8, B16, 또는 B24)에서 4번째 비트(B1~B3, B9~B11, B17~B19, 또는 B25~B27)까지 모두 연속해서 0인 i번째 8 비트 입력 활성화가 없을 때, 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성한다. 상기 제2값은 로우(low) 상태를 의미할 수 있다. 실시 예에 따라 상기 제2값은 다양하게 표현될 수 있다. 상기 제2값을 가지는 선택 신호(SEL)는 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 8 비트 가중치와 상기 i번째 8비트 입력 활성화에 대해 생성될 수 있다.
최상위비트(A0, A4, A8, A12, A16, A20, A24, 또는 A28)와 그 다음 비트(A1, A5, A9, A13, A17, A21, A25, 또는 A29)가 모두 0인 i번째 4 비트 가중치가 존재하더라도 i번째 4 비트 입력 활성화의 최상위비트(B0, B4, B8, B12, B16, B20, B24, 또는 B28)와 그 다음 비트(B1, B5, B9, B13, B17, B21, B25, 또는 B29)가 모두 0이 아닐 때, 선택 신호 생성기(300)는 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성한다. 또한, 최상위비트(B0, B4, B8, B12, B16, B20, B24, 또는 B28)와 그 다음 비트(B1, B5, B9, B13, B17, B21, B25, 또는 B29)가 모두 0인 i번째 4 비트 입력 활성화가 존재하더라도 i번째 4 비트 가중치의 최상위비트(A0, A4, A8, A12, A16, A20, A24, 또는 A28)와 그 다음 비트(A1, A5, A9, A13, A17, A21, A25, 또는 A29)가 모두 0이 아닐 때, 선택 신호 생성기(300)는 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성한다.
최상위비트(A0, A8, A16, 또는 A24)에서 4번째 비트(A1~A3, A9~A11, A17~A19, 또는 A25~A27)까지 모두 0인 i번째 8 비트 가중치가 존재하더라도 i번째 8 비트 입력 활성화의 최상위비트(B0, B8, B16, 또는 B24)에서 4번째 비트(B1~B3, B9~B11, 또는 B17~B19, B25~B27)까지 모두 0이 아닐 때, 선택 신호 생성기(300)는 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성한다. 또한, 최상위비트(B0, B8, B16, 또는 B24)에서 4번째 비트(B1~B3, B9~B11, 또는 B17~B19, B25~B27)까지 모두 0인 i번째 8 비트 입력 활성화가 존재하더라도 i번째 8 비트 가중치의 최상위비트(A0, A8, A16, 또는 A24)에서 4번째 비트(A1~A3, A9~A11, A17~A19, 또는 A25~A27)까지 모두 0이 아닐 때, 선택 신호 생성기(300)는 제2값(예컨대, 0)을 가지는 선택 신호(SEL)를 생성할 수 있다.
도 5는 도 4에 도시된 선택 신호 생성기의 내부 블록도를 나타낸다.
도 4와 도 5를 참고하면, 선택 신호 생성기(300)는 복수의 감지 회로들(301, 303, 305, 307, 309, 및 311)과 복수의 AND 게이트들(333, 335, 337, 및 339)을 포함한다. 도 5에서는 8개의 감지 회로들과 4개의 AND 게이트들이 도시되었으나, 선택 신호 생성기(300)에는 실제로는 16개의 감지 회로들과 8개의 AND 게이트들이 구현될 수 있다.
복수의 제1감지 회로들(301, 305, 309, 및 313) 각각은 상기 M 비트 가중치들을 각각 수신하고, 상기 M 비트 가중치들의 최상위비트와 그 다음 비트가 모두 0인지를 식별한다. 예컨대, 제1감지 회로(301)는 4 비트 가중치("A0, A1, A2, A3")를 수신하고, 4 비트 가중치("A0, A1, A2, A3")의 최상위비트("A0")와 그 다음 비트("A1")가 모두 0인지 식별한다.
상기 M 비트 가중치들의 최상위비트와 그 다음 비트가 모두 0일 때, 복수의 제1감지 회로들(301, 305, 309, 및 313) 각각은 제1레벨을 가지는 제1제어 신호(CS1, CS3, CS5, 또는 CS7)를 생성한다. 예컨대, 4 비트 가중치("A0, A1, A2, A3")의 최상위비트("A0")와 그 다음 비트("A1")가 모두 0일 때, 제1레벨(예컨대, 1)을 가지는 제1제어 신호(CS1)를 생성한다.
상기 M 비트 가중치들의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 복수의 제1감지 회로들(301, 305, 309, 및 313) 각각은 제2레벨을 가지는 제1제어 신호(CS1, CS3, CS5, 또는 CS7)를 생성한다. 예컨대, 4 비트 가중치("A0, A1, A2, A3")의 최상위비트("A0")와 그 다음 비트("A1")가 모두 0이 아닐 때, 제2레벨(예컨대, 0)을 가지는 제1제어 신호(CS1)를 생성한다.
복수의 제2감지 회로들(303, 307, 311, 및 315) 각각은 상기 M 비트 입력 활성화들을 각각 수신하고, 상기 M 비트 입력 활성화들의 최상위비트와 그 다음 비트가 모두 0인지를 식별한다. 예컨대, 제2감지 회로(303)는 4 비트 입력 활성화("B0, B1, B2, B3")를 수신하고, 4 비트 입력 활성화("B0, B1, B2, B3")의 최상위비트("B0")와 그 다음 비트("B1")가 모두 0인지 식별한다.
상기 M 비트 입력 활성화들의 최상위비트와 그 다음 비트가 모두 0일 때, 복수의 제2감지 회로들(303, 307, 311, 및 315) 각각은 제3레벨을 가지는 제2제어 신호(CS2, CS4, CS6, 또는 CS8)를 생성한다. 예컨대, 4 비트 입력 활성화("B0, B1, B2, B3")의 최상위비트("B0")와 그 다음 비트("B1")가 모두 0일 때, 제3레벨(예컨대, 1)을 가지는 제2제어 신호(CS2)를 생성한다. 상기 제3레벨은 제1제어 신호(CS1)의 제1레벨과 같은 레벨을 의미한다.
상기 M 비트 가중치들의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 복수의 제2감지 회로들(303, 307, 311, 및 315) 각각은 제3레벨을 가지는 제2제어 신호(CS2, CS4, CS6, 또는 CS8)를 생성한다. 예컨대, 4 비트 입력 활성화("B0, B1, B2, B3")의 최상위비트("B0")와 그 다음 비트("B1")가 모두 0이 아닐 때, 제4레벨(예컨대, 0)을 가지는 제2제어 신호(CS2)를 생성한다. 상기 제4레벨은 제1제어 신호(CS1)의 제2레벨과 같은 레벨을 의미한다.
복수의 AND 게이트들(333, 335, 337, 및 339) 각각은 복수의 제1감지 회로들(301, 305, 309, 및 313)로부터 생성된 제1제어 신호(CS1, CS3, CS5, 또는 CS7)를 수신하고, 복수의 제2감지 회로들(303, 307, 311, 및 315)로부터 제2제어 신호(CS2, CS4, CS6, 또는 CS8)를 수신하여 제1제어 신호(CS1, CS3, CS5, 또는 CS7)와 제2제어 신호(CS2, CS4, CS6, 또는 CS8)에 대해 AND 연산을 수행하고 비트값(S0, S1, S2, 또는 S3)을 출력한다. 예컨대, 제1AND 게이트(333)는 제1제어 신호(CS1)와 제2제어 신호(CS2)를 수신하고 제1제어 신호(CS1)와 제2제어 신호(CS2)에 대해 AND 연산을 수행하여 비트값(S0)을 출력한다. 비트값(S0)을 출력한다. 비트값(S0)은 0, 또는 1이다. 실시 예에 따라 비트값들은 S0에서 S7까지 포함할 수 있다. 상기 비트값들(S0~S7)은 선택 신호(SEL)로 정의된다.
선택 신호(SEL)가 복수의 비트값들(S0~S7)을 포함할 때, 선택 신호(SEL)에 따라 한꺼번에 M 비트 가중치들와 M 비트 입력 활성화들이 제1복수의 부분 곱 생성기들(283), 또는 제2복수의 부분 곱 생성기들(285)로 전달되도록 할 수 있다.
도 4를 참고하면, 제1선택기(275)는 상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 선택 신호(SEL)에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K 개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력한다. 여기서 "x"는 곱셈을 의미한다. 예컨대, 32비트 가중치들은 8개의 4 비트 가중치들로 나뉠 수 있다. 또한, 32 비트 가중치들은 16개의 2 비트 가중치들로 나뉠 수 있다. 또한, 32 비트 가중치들은 4개의 8 비트 가중치들로 나뉠 수 있다.
N이 32이고, M이 4라고 할 때, 제1선택기(275)는 32 비트 가중치들과 32 비트 입력 활성화들을 수신하여 선택 신호(SEL)에 따라 상기 32 비트 가중치들을 8개 로 나눈 4 비트 가중치들 중 어느 하나, 또는 상기 32 비트 가중치들을 16(=2 x 8)개로 나눈 2(=1/2 x 4) 비트 가중치들 중 어느 하나를 출력하고, 상기 32 비트 입력 활성화들을 8개로 나눈 4 비트 입력 활성화들 중 어느 하나, 또는 상기 32 비트 입력 활성화들을 16(=2 x 8)개로 나눈 2(=1/2 x 4) 비트 입력 활성화들 중 어느 하나를 출력한다.
N이 32이고, M이 8이라고 할 때, 제1선택기(275)는 32 비트 가중치들과 32 비트 입력 활성화들을 수신하여 선택 신호(SEL)에 따라 상기 32 비트 가중치들을 4개로 나눈 8 비트 가중치들 중 어느 하나, 또는 상기 32 비트 가중치들을 8 (=2 x 4)개로 나눈 4(=1/2 x 8) 비트 가중치들 중 어느 하나를 출력하고, 상기 32 비트 입력 활성화들을 4개로 나눈 8 비트 입력 활성화들 중 어느 하나, 또는 상기 32 비트 입력 활성화들을 8(=2 x 4)개로 나눈 4(=1/2 x 8) 비트 입력 활성화들 중 어느 하나를 출력할 수 있다.
제1선택기(275)는 상기 제1값을 가지는 선택 신호(SEL)에 따라 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력한다. 상기 M이 4일 때, 제1선택기(275)는 상기 제1값을 가지는 선택 신호(SEL)에 따라 2 비트 가중치들 중 어느 하나(예컨대, "A6, A7")를 출력하고, 2 비트 입력 활성화들 중 어느 하나(예컨대, "B6, B7")를 출력한다.
상기 1/2 x M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트와 상기 그 다음 비트가 제거된 가중치이다. 예컨대, M이 4일 때, 상기 2 비트 가중치들 중 어느 하나는 상기 최상위비트("A4")와 상기 그 다음 비트("A5")가 모두 0인 상기 i(예컨대, i는 2)번째 4 비트 가중치(예컨대, "A4, A5, A6, A7")에서 상기 최상위비트(예컨대, "A4")와 상기 그 다음 비트("A5")가 제거된 가중치이다. 상기 최상위비트(예컨대, "A4")와 상기 그 다음 비트("A5")가 제거된다함은 4 비트 가중치(예컨대, "A4, A5, A6, A7")에서 상기 최상위비트(예컨대, "A4")와 상기 그 다음 비트("A5")가 모두 0이므로, 0인 상기 최상위비트(예컨대, "A4")와 상기 그 다음 비트("A5")를 제외한 나머지 비트들(예컨대, "A6, A7")이 남는 것을 의미한다. 즉, 4 비트 가중치(예컨대, "A4, A5, A6, A7")에서 2 비트 가중치(예컨대, "A6, A7")로 변경된다.
상기 M이 8일 때, 제1선택기(275)는 상기 제1값을 가지는 선택 신호(SEL)에 따라 4 비트 가중치들 중 어느 하나(예컨대, "A4, A5, A6, A7")를 출력하고, 4 비트 입력 활성화들 중 어느 하나(예컨대, "B4, B5, B6, B7")를 출력한다.
상기 M이 8일 때, 상기 1/2 x M 비트 가중치들 중 어느 하나는 최상위비트에서 4번째 비트까지 모두 연속해서 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트에서 4번째 비트까지 모두 제거된 가중치이다. 예컨대, M이 8일 때, 상기 4 비트 가중치들 중 어느 하나는 상기 최상위비트("A0")에서 4번째 비트("A1, A2, A3")까지 모두 0인 상기 i(예컨대, i는 1)번째 8 비트 가중치(예컨대, "A0, A1, A2, A3, A4, A5, A6, A7")이다. 상기 4 비트 가중치들 중 어느 하나는 상기 최상위비트(예컨대, "A0")에서 4번째 비트("A1, A2, A3")까지 모두 제거된 가중치이다. 상기 최상위비트(예컨대, "A0")에서 4번째 비트("A1, A2, A3")까지 모두 제거된다 함은 8 비트 가중치(예컨대, "A0, A1, A2, A3, A4, A5, A6, A7")에서 상기 최상위비트(예컨대, "A0")에서 4번째 비트("A1, A2, A3")까지 모두 0이므로, 0인 상기 최상위비트(예컨대, "A0")에서 4번째 비트("A1, A2, A3")를 제외한 나머지 비트들(예컨대, "A4, A5, A6, A7")이 남는 것을 의미한다. 즉, 8 비트 가중치(예컨대, "A0, A1, A2, A3, A4, A5, A6, A7")에서 4 비트 가중치(예컨대, "A4, A5, A6, A7")로 변경된다.
상기 1/2 x M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에서 상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화이다. 예컨대, 상기 M이 4일 때, 상기 2 비트 입력 활성화들 중 어느 하나는 상기 최상위비트("B4")와 상기 그 다음 비트("B5")가 모두 0인 상기 i(예컨대, i는 2)번째 4 비트 입력 활성화(예컨대, "B4, B5, B6, B7")에서 상기 최상위비트("B4")와 상기 그 다음 비트("B5")가 제거된 입력 활성화이다. 상기 최상위비트(예컨대, "B4")와 상기 그 다음 비트("B5")가 제거된다함은 4 비트 입력 활성화(예컨대, "B4, B5, B6, B7")에서 상기 최상위비트(예컨대, "B4")와 상기 그 다음 비트("B5")가 모두 0이므로, 0인 상기 최상위비트(예컨대, "B4")와 상기 그 다음 비트("B5")를 제외한 나머지 비트들(예컨대, "B6, B7")이 남는 것을 의미한다. 즉, 4 비트 입력 활성화(예컨대, "B4, B5, B6, B7")에서 2 비트 입력 활성화(예컨대, "B6, B7")로 변경된다.
상기 M이 8일 때, 상기 4 비트 입력 활성화들 중 어느 하나는 상기 최상위비트("B0")에서 4번째 비트("B1, B2, B3")까지 모두 0인 상기 i(예컨대, i는 1)번째 8 비트 입력 활성화(예컨대, "B0, B1, B2, B3, B4, B5, B6, B7")이다. 상기 4 비트 입력 활성화들 중 어느 하나는 상기 최상위비트("B0")에서 4번째 비트("B1, B2, B3")까지 모두 제거된 입력 활성화이다. 상기 최상위비트(예컨대, "B0")에서 4번째 비트("B1, B2, B3")까지 모두 제거된다함은 8 비트 입력 활성화(예컨대, "B0, B1, B2, B3, B4, B5, B6, B7")에서 상기 최상위비트(예컨대, "B0")에서 4번째 비트("B1, B2, B3")까지 모두 0이므로, 0인 상기 최상위비트(예컨대, "B0")에서 4번째 비트("B1, B2, B3")를 제외한 나머지 비트들(예컨대, "B4, B5, B6, B7")이 남는 것을 의미한다. 즉, 8 비트 입력 활성화(예컨대, "B0, B1, B2, B3, B4, B5, B6, B7")에서 4 비트 입력 활성화(예컨대, "B4, B5, B6, B7")로 변경된다.
제1선택기(275)는 상기 제2값을 가지는 선택 신호(SEL)에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하고, 상기 M 비트 입력 활성화들 중 어느 하나를 출력한다. 예컨대, 상기 M이 4일 때, 제1선택기(275)는 상기 제2값을 가지는 선택 신호(SEL)에 따라 4 비트 가중치들 중 어느 하나(예컨대, "A0, A1, A2, A3")를 출력하고, 4 비트 입력 활성화들 중 어느 하나(예컨대, "B0, B1, B2, B3")를 출력한다.
상기 M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 가중치이다. 상기 M이 4일 때, 4 비트 가중치들 중 어느 하나(예컨대, "A0, A1, A2, A3")는 상기 최상위비트("A0")와 상기 그 다음 비트("A1")가 모두 0이 아닌 가중치이다. 상기 M이 8일 때, 8 비트 가중치들 중 어느 하나(예컨대, "A8, A9, A10, A11, A12, A13, A14, A15")는 상기 최상위비트("A8")에서 4번째 비트("A9~A11")까지 모두 0이 아닌 가중치이다.
상기 M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 입력 활성화이다. 상기 M이 4일 때, 4 비트 입력 활성화들 중 어느 하나(예컨대, "B0, B1, B2, B3")는 상기 최상위비트("B0")와 상기 그 다음 비트("B1")가 모두 0이 아닌 입력 활성화이다. 상기 M이 8일 때, 8비트 입력 활성화 중 어느 하나(예컨대, "B8, B9, B10, B11, B12, B13, B14, B15")는 상기 최상위비트("B8")에서 4번째 비트("B9~B11")까지 모두 0이 아닌 입력 활성화이다.
제1선택기(275)는 상기 N 비트 가중치들을 수신하여 선택 신호(SEL)에 따라 상기 N 비트 가중치들을 K개로 나눈 상기 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K개로 나눈 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하는 제1디멀티플렉서(demultiplexer; 277), 및 상기 N 비트 입력 활성화들을 수신하여 선택 신호(SEL)에 따라 상기 N 비트 입력 활성화들을 K개로 나눈 상기 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제2디멀티플렉서(demultiplexer; 279)를 포함한다.
CSA 어레이(289)는 제2선택기(287)로부터 출력되는 상기 제1부분 곱, 또는 상기 제2부분 곱을 다른 부분 곱과 가산하여 부분 합(partial sum)과 부분 자리올림(partial carry)를 생성한다.
래치들(291)은 CSA 어레이(289)로부터 출력되는 상기 부분 합과 상기 부분 자리올림을 저장한다.
포화 가산기(293)는 래치들(291)에서 상기 부분 합과 상기 부분 자리올림을 합산하고, 합산 값에 따라 상기 합산 값, 또는 포화값이 출력된다.
도 6은 본 발명의 다른 실시 예에 따른 프로세싱 엘리먼트의 내부 블록도를 나타낸다.
도 6을 참고하면, 도 6에 도시된 프로세싱 엘리먼트는 플립플롭들을 제외한 나머지 구성요소들은 도 4에 도시된 프로세싱 엘리먼트와 같다. 따라서 도 4에 도시된 프로세싱 엘리먼트와 차이가 있는 플립플롭들에 대해서만 설명하기로 한다.
제1부분 곱 생성기(283-1)와 상기 제2부분 곱 생성기(285-1) 각각이 제1플립플롭(403)과 제2플립플롭(405)을 포함할 수 있다. 제1부분 곱 생성기(283-1)와 상기 제2부분 곱 생성기(285-1) 각각이 제1플립플롭(403)과 제2플립플롭(405)을 포함할 때, 제2선택기(287)와 동기화 문제가 발생할 수 있다. 따라서 제1부분 곱 생성기(283-1)와 상기 제2부분 곱 생성기(285-1) 각각이 제1플립플롭(403)과 제2플립플롭(405)을 포함할 때, 선택 신호 생성기(300)에서도 제3플립플롭(401)을 포함하여 선택 신호(SEL)를 지연시키고 제2선택기(287)로 출력하도록 함으로써 동기화 문제를 해결할 수 있다.
도 7은 도 1에 도시된 프로세싱 엘리먼트의 동작 방법을 설명하기 위한 흐름도를 나타낸다.
도 1 내지 도 7을 참고하면, 프로세싱 엘리먼트(270)는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치가 있는지 판단한다(S10).
프로세싱 엘리먼트(270)는 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단한다(S20).
프로세싱 엘리먼트(270)는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와, 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화가 있을 때, 제1값을 가지는 선택 신호(SEL)를 생성한다(S30).
프로세싱 엘리먼트(270)는 선택 신호(SEL)에 따라 상기 i번째 M 비트 가중치와 상기 i번째 M 비트 입력 활성화 각각에서 상기 최상위 비트와 상기 그 다음 비트를 제거한다(S40). 이때, 상기 i번째 M 비트 가중치는 1/2 x M 비트 가중치로 변환되고, 상기 i번째 M 비트 입력 활성화는 1/2 x M 비트 입력 활성화로 변환된다.
프로세싱 엘리먼트(270)는 상기 최상위 비트와 상기 그 다음 비트가 제거된 가중치와 입력 활성화를 곱하여 제1부분 곱을 생성한다(S50).
프로세싱 엘리먼트(270)는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 N 비트 입력 활성화들로 나눌 때, 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있는지 판단한다(S60). 상기 p는 자연수이다.
프로세싱 엘리먼트(270)는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있을 때, 제2값을 가지는 선택 신호(SEL)를 생성한다(S70).
프로세싱 엘리먼트(270)는 상기 제2값을 가지는 선택 신호(SEL)에 따라 상기 p번째 M 비트 가중치와 상기 p번째 M 비트 입력 활성화를 곱하여 제2부분 곱을 생성한다(S80).
프로세싱 엘리먼트(270)는 상기 제1값을 가지는 선택 신호(SEL)에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제1부분 곱을 선택하여 출력한다(S90).
프로세싱 엘리먼트(270)는 상기 제2값을 가지는 선택 신호(SEL)에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제2부분 곱을 선택하여 출력한다(S100).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 시스템;
10: CPU;
20: GPU;
30: 메모리;
101: 버스;
200: 가속기;
270: 프로세싱 엘리먼트;
271: 가중치 레지스터;
273: 입력 활성화 레지스터;
300: 선택 신호 생성기;
275: 제1선택기;
283: 제1복수의 부분 곱 생성기들;
285: 제2복수의 부분 곱 생성기들;
287: 제2선택기;
289: CSA 어레이;
291: 래치들;
10: CPU;
20: GPU;
30: 메모리;
101: 버스;
200: 가속기;
270: 프로세싱 엘리먼트;
271: 가중치 레지스터;
273: 입력 활성화 레지스터;
300: 선택 신호 생성기;
275: 제1선택기;
283: 제1복수의 부분 곱 생성기들;
285: 제2복수의 부분 곱 생성기들;
287: 제2선택기;
289: CSA 어레이;
291: 래치들;
Claims (20)
- N 비트 가중치들을 저장하는 가중치 레지스터;
N 비트 입력 활성화들을 저장하는 입력 활성화 레지스터;
상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 서로 다른 값들을 가지는 선택 신호를 생성하는 선택 신호 생성기;
상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제1선택기;
상기 M 비트 가중치들 중 어느 하나와 상기 M 비트 입력 활성화들 중 어느 하나를 곱하여 제1부분 곱을 생성하는 제1부분 곱 생성기(partial product generator);
상기 1/2 x M 비트 가중치들 중 어느 하나와 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 곱하여 제2부분 곱을 생성하는 제2부분 곱 생성기; 및
상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 어느 하나를 선택하는 제2선택기를 포함하는 프로세싱 엘리먼트. - 제1항에 있어서, 상기 제1선택기는,
상기 N 비트 가중치들을 수신하여 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하거나, 또는 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하는 제1디멀티플렉서(demultiplexer); 및
상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 M 비트 입력 활성화들 중 어느 하나를 출력하거나, 또는 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제2디멀티플렉서(demultiplexer)를 포함하는 프로세싱 엘리먼트. - 제1항에 있어서,
제1값을 가지는 상기 선택 신호는,
상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성되며,
제2값을 가지는 상기 선택 신호는,
상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 입력 활성화에 대해 생성되는 프로세싱 엘리먼트. - 제3항에 있어서, 상기 제1선택기는,
상기 제1값을 가지는 상기 선택 신호에 따라 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하며,
상기 1/2 x M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트와 상기 그 다음 비트가 제거된 가중치이며,
상기 최상위비트와 상기 그 다음 비트가 제거된 가중치는,
상위 1/2 X M 비트 가중치와 하위 1/2 X M 비트 가중치를 포함하는 상기 i번째 M 비트 가중치에서 상기 하위 1/2 X M 비트 가중치이며,
상기 1/2 x M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에서 상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화이며,
상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화는,
상위 1/2 X M 비트 입력 활성화와 하위 1/2 X M 비트 입력 활성화를 포함하는 상기 i번째 M 비트 입력 활성화에서 상기 하위 1/2 X M 비트 입력 활성화인 프로세싱 엘리먼트. - 제3항에 있어서, 상기 제1선택기는,
상기 제2값을 가지는 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하고, 상기 M 비트 입력 활성화들 중 어느 하나를 출력하며,
상기 M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 가중치이며,
상기 M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 입력 활성화인 프로세싱 엘리먼트. - 제1항에 있어서, 상기 선택 신호 생성기는,
상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제1레벨을 가지는 제1제어 신호를 생성하며, 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제2레벨을 가지는 상기 제1제어 신호를 생성하는 제1감지 회로;
상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제3레벨을 가지는 제2제어 신호를 생성하며, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제4레벨을 가지는 상기 제2제어 신호를 생성하는 제2감지 회로; 및
상기 제1제어 신호와 상기 제2제어 신호를 수신하고, AND 연산을 수행하여 상기 선택 신호를 생성하는 AND 게이트를 포함하는 프로세싱 엘리먼트. - 제1항에 있어서, 상기 프로세싱 엘리먼트는,
상기 제1부분 곱 생성기와 상기 제2부분 곱 생성기 각각이 제1플립플롭과 제2플립플롭을 포함할 때, 상기 선택 신호 생성기에서 출력되는 상기 선택 신호를 지연시켜 상기 제2선택기로 출력하는 제3플립 플롭을 더 포함하는 프로세싱 엘리먼트. - 제1항에 있어서,
제1값을 가지는 상기 선택 신호는,
상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성되며,
제2값을 가지는 상기 선택 신호는,
상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 입력 활성화에 대해 생성되는 프로세싱 엘리먼트. - 프로세싱 엘리먼트는 N 비트 가중치들을 K개의 M 비트 가중치들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치가 있는지 판단하는 단계;
상기 프로세싱 엘리먼트는 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하는 단계;
상기 프로세싱 엘리먼트는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와, 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화가 있을 때, 제1값을 가지는 선택 신호를 생성하는 단계;
상기 프로세싱 엘리먼트는 상기 선택 신호에 따라 상기 i번째 M 비트 가중치와 상기 i번째 M 비트 입력 활성화 각각에서 상기 최상위 비트와 상기 그 다음 비트를 제거하는 단계; 및
상기 프로세싱 엘리먼트는 상기 최상위 비트와 상기 그 다음 비트가 제거된 가중치와 입력 활성화를 곱하여 제1부분 곱을 생성하는 단계를 포함하는 프로세싱 엘리먼트의 동작 방법. - 제9항에 있어서, 상기 프로세싱 엘리먼트의 동작 방법은,
상기 프로세싱 엘리먼트는 상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있는지 판단하는 단계;
상기 프로세싱 엘리먼트는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 가중치, 또는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 p번째 M 비트 입력 활성화가 있을 때, 제2값을 가지는 상기 선택 신호를 생성하는 단계;
상기 프로세싱 엘리먼트는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 p번째 M 비트 가중치와 상기 p번째 M 비트 입력 활성화를 곱하여 제2부분 곱을 생성하는 단계를 더 포함하는 프로세싱 엘리먼트의 동작 방법. - 제10항에 있어서, 상기 프로세싱 엘리먼트의 동작 방법은,
상기 프로세싱 엘리먼트는 상기 제1값을 가지는 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제1부분 곱을 선택하여 출력하는 단계; 및
상기 프로세싱 엘리먼트는 상기 제2값을 가지는 상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 상기 제2부분 곱을 선택하여 출력하는 단계를 더 포함하는 프로세싱 엘리먼트의 동작 방법. - 복수의 프로세싱 엘리먼트들을 포함하는 프로세싱 엘리먼트 어레이; 및
상기 복수의 프로세싱 엘리먼트들로부터 출력되는 부분 합들을 저장하고, 부분 합들을 더하여 곱셈 가중치 합(weighted sum)을 출력하는 누산기를 포함하며,
상기 복수의 프로세싱 엘리먼트들 각각은,
N 비트 가중치들을 저장하는 가중치 레지스터;
N 비트 입력 활성화들을 저장하는 입력 활성화 레지스터;
상기 N 비트 가중치들을 K개의 M 비트 가중치들로 나누고, 상기 N 비트 입력 활성화들을 K개의 M 비트 입력 활성화들로 나눌 때, 상기 K개의 M 비트 가중치들과 상기 K개의 M 비트 입력 활성화들 중 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 가중치와, 최상위비트와 그 다음 비트가 모두 0인 i번째 M 비트 입력 활성화가 있는지 판단하며, 판단 결과에 따라 선택 신호를 생성하는 선택 신호 생성기;
상기 N 비트 가중치들과 상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 N 비트 가중치들을 K개로 나눈 M 비트 가중치들 중 어느 하나, 또는 상기 N 비트 가중치들을 2 x K 개로 나눈 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 N 비트 입력 활성화들을 K개로 나눈 M 비트 입력 활성화들 중 어느 하나, 또는 상기 N 비트 입력 활성화들을 2 x K개로 나눈 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제1선택기;
상기 M 비트 가중치들 중 어느 하나와 상기 M 비트 입력 활성화들 중 어느 하나를 곱하여 제1부분 곱을 생성하는 제1부분 곱 생성기(partial product generator);
상기 1/2 x M 비트 가중치들 중 어느 하나와 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 곱하여 제2부분 곱을 생성하는 제2부분 곱 생성기; 및
상기 선택 신호에 따라 상기 제1부분 곱과 상기 제2부분 곱 중 어느 하나를 선택하는 제2선택기를 포함하는 가속기. - 제12항에 있어서, 상기 제1선택기는,
상기 N 비트 가중치들을 수신하여 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하거나, 또는 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하는 제1디멀티플렉서(demultiplexer); 및
상기 N 비트 입력 활성화들을 수신하여 상기 선택 신호에 따라 상기 M 비트 입력 활성화들 중 어느 하나를 출력하거나, 또는 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하는 제2디멀티플렉서(demultiplexer)를 포함하는 가속기. - 제12항에 있어서,
제1값을 가지는 상기 선택 신호는,
상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성되며,
제2값을 가지는 상기 선택 신호는,
상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 가중치와 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 M 비트 입력 활성화에 대해 생성되는 가속기. - 제14항에 있어서, 상기 제1선택기는,
상기 제1값을 가지는 상기 선택 신호에 따라 상기 1/2 x M 비트 가중치들 중 어느 하나를 출력하고, 상기 1/2 x M 비트 입력 활성화들 중 어느 하나를 출력하며,
상기 1/2 x M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 가중치에서 상기 최상위비트와 상기 그 다음 비트가 제거된 가중치이며,
상기 최상위비트와 상기 그 다음 비트가 제거된 가중치는,
상위 1/2 X M 비트 가중치와 하위 1/2 X M 비트 가중치를 포함하는 상기 i번째 M 비트 가중치에서 상기 하위 1/2 X M 비트 가중치이며,
상기 1/2 x M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0인 상기 i번째 M 비트 입력 활성화에서 상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화이며,
상기 최상위비트와 상기 그 다음 비트가 제거된 입력 활성화는,
상위 1/2 X M 비트 입력 활성화와 하위 1/2 X M 비트 입력 활성화를 포함하는 상기 i번째 M 비트 입력 활성화에서 상기 하위 1/2 X M 비트 입력 활성화인 가속기. - 제14항에 있어서, 상기 제1선택기는,
상기 제2값을 가지는 상기 선택 신호에 따라 상기 M 비트 가중치들 중 어느 하나를 출력하고, 상기 M 비트 입력 활성화들 중 어느 하나를 출력하며,
상기 M 비트 가중치들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 가중치이며,
상기 M 비트 입력 활성화들 중 어느 하나는 상기 최상위비트와 상기 그 다음 비트가 모두 0이 아닌 입력 활성화인 가속기. - 제12항에 있어서, 상기 선택 신호 생성기는,
상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제1레벨을 가지는 제1제어 신호를 생성하며, 상기 M 비트 가중치들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제2레벨을 가지는 상기 제1제어 신호를 생성하는 제1감지 회로;
상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0일 때, 제3레벨을 가지는 제2제어 신호를 생성하며, 상기 M 비트 입력 활성화들 중 어느 하나의 최상위비트와 그 다음 비트가 모두 0이 아닐 때, 제4레벨을 가지는 상기 제2제어 신호를 생성하는 제2감지 회로; 및
상기 제1제어 신호와 상기 제2제어 신호를 수신하고, AND 연산을 수행하여 상기 선택 신호를 생성하는 AND 게이트를 포함하는 가속기. - 제12항에 있어서, 상기 프로세싱 엘리먼트는,
상기 제1부분 곱 생성기와 상기 제2부분 곱 생성기 각각이 제1플립플롭과 제2플립플롭을 포함할 때, 상기 선택 신호 생성기에서 출력되는 상기 선택 신호를 지연시켜 상기 제2선택기로 출력하는 제3플립 플롭을 더 포함하는 가속기. - 제12항에 있어서, 상기 복수의 프로세싱 엘리먼트들 각각은,
상기 제2선택기로부터 출력되는 상기 제1부분 곱, 또는 상기 제2부분 곱을 다른 부분 곱과 가산하여 부분 합(partial sum)과 부분 자리올림(partial carry)를 생성하는 CSA 어레이;
상기 CSA 어레이로부터 출력되는 상기 부분 합과 상기 부분 자리올림을 저장하기 위한 래치들(latches); 및
상기 래치들에서 출력되는 상기 부분 합과 상기 부분 자리올림을 합산하고, 합산 값에 따라 상기 합산 값, 또는 포화값이 출력되는 포화 가산기(saturating adder)를 포함하는 가속기. - 제12항에 있어서,
제1값을 가지는 상기 선택 신호는,
상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0인 상기 i번째 M 비트 입력 활성화에 대해 생성되며,
제2값을 가지는 상기 선택 신호는,
상기 M이 8일 때, 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 가중치와 상기 최상위비트에서 4번째 비트까지 모두 0이 아닌 상기 i번째 M 비트 입력 활성화에 대해 생성되는 가속기.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210066271A KR102339896B1 (ko) | 2021-05-24 | 2021-05-24 | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 |
US17/664,393 US11544548B2 (en) | 2021-05-24 | 2022-05-20 | Processing element and neural processing device including same |
US18/052,169 US20230143798A1 (en) | 2021-05-24 | 2022-11-02 | Processing element and neural processing device including same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210066271A KR102339896B1 (ko) | 2021-05-24 | 2021-05-24 | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102339896B1 true KR102339896B1 (ko) | 2021-12-16 |
Family
ID=79033301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210066271A KR102339896B1 (ko) | 2021-05-24 | 2021-05-24 | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102339896B1 (ko) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139217A (ja) * | 1992-10-29 | 1994-05-20 | Hitachi Ltd | 高精度演算処理装置および方法 |
JPH09128357A (ja) * | 1995-11-01 | 1997-05-16 | Kokusai Electric Co Ltd | カオスニューロン回路 |
KR0162770B1 (ko) * | 1996-05-07 | 1999-01-15 | 양승택 | 신경망을 위한 곱셈기 및 그 곱셈방법 |
KR20190052893A (ko) * | 2017-11-09 | 2019-05-17 | 삼성전자주식회사 | 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 |
KR101981109B1 (ko) | 2017-07-05 | 2019-05-22 | 울산과학기술원 | 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기 |
KR20190099930A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치 |
KR20190099927A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 |
KR20200143608A (ko) * | 2019-06-14 | 2020-12-24 | 포항공과대학교 산학협력단 | 뉴럴 네트워크 가속기 |
-
2021
- 2021-05-24 KR KR1020210066271A patent/KR102339896B1/ko active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139217A (ja) * | 1992-10-29 | 1994-05-20 | Hitachi Ltd | 高精度演算処理装置および方法 |
JPH09128357A (ja) * | 1995-11-01 | 1997-05-16 | Kokusai Electric Co Ltd | カオスニューロン回路 |
KR0162770B1 (ko) * | 1996-05-07 | 1999-01-15 | 양승택 | 신경망을 위한 곱셈기 및 그 곱셈방법 |
KR101981109B1 (ko) | 2017-07-05 | 2019-05-22 | 울산과학기술원 | 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기 |
KR20190052893A (ko) * | 2017-11-09 | 2019-05-17 | 삼성전자주식회사 | 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 |
KR20190099930A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 완전 연결 네트워크의 데이터 입력 및 출력을 제어하는 방법 및 장치 |
KR20190099927A (ko) * | 2018-02-20 | 2019-08-28 | 삼성전자주식회사 | 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치 |
KR20200143608A (ko) * | 2019-06-14 | 2020-12-24 | 포항공과대학교 산학협력단 | 뉴럴 네트워크 가속기 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102258566B1 (ko) | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 | |
US11741362B2 (en) | Training neural networks using mixed precision computations | |
CN112074806A (zh) | 使用减小的位宽向量的块浮点计算 | |
US10579334B2 (en) | Block floating point computations using shared exponents | |
US11593628B2 (en) | Dynamic variable bit width neural processor | |
US20200192636A1 (en) | Generating Randomness in Neural Networks | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
JP7110278B2 (ja) | 負荷を均衡化するための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム | |
US11915141B2 (en) | Apparatus and method for training deep neural network using error propagation, weight gradient updating, and feed-forward processing | |
JP7405851B2 (ja) | 数を変換するためのハードウェア・モジュール | |
CN118093203B (zh) | 数据搬运方法、分布式训练系统、电子设备和存储介质 | |
JP7246447B2 (ja) | モデルトレーニング方法、装置、電子デバイス、記憶媒体、開発システムおよびプログラム | |
CN116783577A (zh) | 用于归一化函数的数字电路 | |
KR102339896B1 (ko) | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 | |
KR20220114228A (ko) | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 | |
KR102412872B1 (ko) | 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기 | |
CN109993276B (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
US20190073584A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data | |
WO2020194032A1 (en) | Accelerating neuron computations in artificial neural networks by skipping bits | |
CN117492766A (zh) | 编译方法、编译器、神经网络加速器、芯片及电子设备 | |
KR20220166707A (ko) | 곱셈 누산 디바이스 | |
JP2022170512A (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
JPH02170264A (ja) | ニューラルネットワークシミュレータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |