1 |
1
딥러닝 신경망(deep learning neural network)에 대한 연산 방법으로서,가중치(W)들과 입력 값(A)들 간의 곱셈(제1 곱셈)들에 대해 각각, 제1 곱셈 결과 값들의 종류에 따른 원-핫 인코딩(one-hot encoding)의 코드들을 생성하는 단계;상기 생성된 각 코드에 대해 팝카운트(pop-count)를 수행하는 단계; 및서로 다른 상수 값인 상기 각 종류의 제1 곱셈 결과 값과 상기 팝카운트의 각 카운트 값 간의 상수 곱셈(제2 곱셈)에 대한 결과 값들을 누산하는 단계;를 포함하는 연산 방법
|
2 |
2
제1항에 있어서,상기 누산하는 단계는,상기 제2 곱셈 결과 값들을 도출하는 제1 도출 단계; 및상기 제2 곱셈 결과 값들에 대한 누산 결과 값을 도출하는 제2 도출 단계;를 포함하는 연산 방법
|
3 |
3
제2항에 있어서,상기 제1 도출 단계는 상기 상수 값과 상기 카운트 값 간에 곱셈 연산을 수행하는 상수 곱셈기를 이용하거나, 상기 상수 값의 비트에 대한 시프트(shift)를 수행하는 시프터(shifter)를 이용하는 단계를 포함하는 연산 방법
|
4 |
4
제2항에 있어서,상기 제1 도출 단계는 상기 제2 곱셈 결과 값들이 저장된 순람표(Lookup table)을 이용하는 단계를 포함하는 연산 방법
|
5 |
5
제3항 또는 제4항에 있어서,상기 제2 도출 단계는 상기 제2 곱셈 결과 값들 간에 누산 연산을 수행하는 가산기 트리(adder tree)를 이용하는 단계를 포함하는 연산 방법
|
6 |
6
제1항에 있어서,상기 누산하는 단계는 상기 제2 곱셈 결과 값들이 저장된 순람표(Lookup table)를 기반으로 분산 산술(distributed arithmetic)을 수행하는 단계를 포함하는 연산 방법
|
7 |
7
제1항에 있어서,상기 생성하는 단계는 가중치와 입력 값의 비트 종류에 따라, 상기 제1 곱셈 결과 값의 종류를 구분하여 상기 코드를 생성하는 단계를 포함하는 연산 방법
|
8 |
8
제7항에 있어서,상기 생성하는 단계는,상기 제1 곱셈에 대해 그 결과 값이 0(zero)인지 여부를 구분하는 제1 구분 단계; 및그 결과 값이 0이 아닌 것(non-zero)으로 구분된 각 제1 곱셈에 대해 그 나머지의 결과 값 종류로 구분하는 제2 구분 단계; 및상기 제2 구분 단계에서 구분된 결과를 기반으로, 상기 코드를 생성하는 단계;를 포함하는 연산 방법
|
9 |
9
제8항에 있어서,상기 제2 구분 단계는,상기 non-zero로 구분된 각 제1 곱셈에 대해, 가중치와 입력 값의 최상위비트(most significant bit)를 기준으로 2개 그룹으로 그 결과 값의 종류를 구분하는 제2-1 단계; 및상기 2개 그룹에 대해 각 그룹에 속한 제1 곱셈에 대해 그 결과 값의 종류를 구분하는 제2-2 구분 단계;를 포함하는 연산 방법
|
10 |
10
제1항에 있어서,상기 각 제1 곱셈 결과 값들의 종류에 대해, 그 반복 확률에 따라 다수의 데이터로 구분하는 단계; 및제1 데이터에 속하는 상기 제1 곱셈에 대해, 상기 생성하는 단계, 상기 수행하는 단계 및 상기 누산하는 단계를 각각 적용하는 제1 연산 단계;상기 제1 데이터 보다 반복 확률이 낮은 제2 데이터에 속하는 상기 제1 곱셈에 대해, 상기 제1 연산 단계와 다른 곱셈-누산의 연산을 수행하는 제2 연산 단계; 및제1 및 제2 연산 단계의 결과 값들을 누산하는 제3 연산 단계;를 더 포함하는 연산 방법
|
11 |
11
딥러닝 신경망 연산에 적용되는 곱셈 누산기로서,가중치(W)들과 입력 값(A)들 간의 곱셈(제1 곱셈)들에 대해 각각, 제1 곱셈 결과 값들의 종류에 따른 원-핫 인코딩(one-hot encoding)의 코드들을 생성하는 인코더;상기 생성된 각 코드에 대해 팝카운트(pop-count)를 수행하는 팝카운터; 및서로 다른 상수 값인 상기 각 종류의 제1 곱셈 결과 값과 상기 팝카운트의 각 카운트 값 간의 상수 곱셈(제2 곱셈) 결과 값들을 누산하는 곱셈-누산 연산부;를 포함하는 곱셈 누산기
|
12 |
12
제11항에 있어서,상기 곱셈-누산 연산부는 상기 상수 값과 상기 카운트 값 간에 곱셈 연산을 수행하는 상수 곱셈기나, 상기 상수 값의 비트에 대한 시프트(shift)를 수행하는 시프터(shifter)를 기반으로 상기 제2 곱셈 결과 값을 도출하는 곱셈 누산기
|
13 |
13
제11항에 있어서,상기 곱셈-누산 연산부는 상기 제2 곱셈 결과 값들이 저장된 순람표(Lookup table)를 기반으로 상기 제2 곱셈 결과 값들을 도출하는 곱셈 누산기
|
14 |
14
제12항 또는 제13항에 있어서,상기 곱셈-누산 연산부는 상기 제2 곱셈 결과 값들 간에 누산 연산을 수행하는 가산기 트리(adder tree)를 기반으로 상기 제2 곱셈 결과 값들을 누산하는 곱셈 누산기
|
15 |
15
제11항에 있어서,상기 곱셈-누산 연산부는 상기 제2 곱셈 결과 값이 저장된 순람표(Lookup table)를 기반으로 분산 산술(distributed arithmetic)을 수행하여 상기 제2 곱셈 결과 값들을 누산하는 곱셈 누산기
|
16 |
16
제11항에 있어서,상기 인코더는 가중치와 입력 값의 비트 종류에 따라, 상기 제1 곱셈 결과 값의 종류를 구분하여 상기 코드를 생성하는 곱셈 누산기
|
17 |
17
제11항에 있어서,상기 인코더는 상기 각 제1 곱셈에 대해 그 결과 값이 0(zero)인지 여부를 제1 구분하고, 그 결과 값이 0이 아닌 것(non-zero)으로 구분된 각 제1 곱셈에 대해 그 결과 값의 종류를 제2 구분하며, 상기 제2 구분된 결과를 기반으로, 상기 코드를 생성하는 곱셈 누산기
|
18 |
18
제17항에 있어서,상기 인코더는 상기 제2 구분 시, 상기 non-zero로 구분된 각 제1 곱셈에 대해 가중치와 입력 값의 최상위비트(most significant bit)를 기준으로 2개 그룹으로 그 결과 값의 종류를 구분한 후, 상기 2개 그룹에 대해 각 그룹에 속한 제1 곱셈에 대해 그 결과 값의 종류를 구분하는 곱셈 누산기
|
19 |
19
제11항에 있어서,상기 인코더, 상기 팝카운터 및 상기 곱셈-누산 연산부를 각각 포함하며, 제1 데이터에 속하는 상기 제1 곱셈을 처리하는 제1 연산부;상기 제1 데이터 보다 반복 확률이 낮은 제2 데이터에 속하는 상기 제1 곱셈에 대해, 상기 제1 연산부와 다른 곱셈-누산의 연산을 수행하는 제2 연산부; 및제1 및 제2 연산부의 결과 값들을 누산하는 제3 연산부;를 더 포함하는 곱셈 누산기
|
20 |
20
딥러닝 신경망(deep learning neural network) 연산을 수행하는 전자 장치로서,상기 딥러닝 신경망의 가중치(W)들과, 상기 딥러닝 신경망의 입력층에 입력되는 입력 값(A)들을 저장한 메모리; 및상기 메모리에 저장된 가중치들과 입력 값들 간의 곱셈(제1 곱셈)들에 대한 누산 결과 값을 계산하는 곱셈-누산기;를 포함하며,상기 곱셈-누산기는,상기 제1 곱셈들에 대해 각각, 제1 곱셈 결과 값들의 종류에 따른 원-핫 인코딩(one-hot encoding)의 코드들을 생성하고, 상기 생성된 각 코드에 대해 팝카운트(pop-count)를 수행하며, 서로 다른 상수 값인 상기 각 종류의 제1 곱셈 결과 값과 상기 팝카운트의 각 카운트 값 간의 상수 곱셈(제2 곱셈) 결과 값들을 누산하는 전자 장치
|