1 |
1
레이어들(Layers)을 포함하는 신경망(Neural Network)의 연산을 수행하기 위한 신경망 가속기에 있어서:필터와 관련된 커널(Kernel) 데이터를 저장하는 커널 메모리;상기 레이어들의 출력들인 피처 맵(Feature Map) 데이터를 저장하는 피처 맵 메모리; 및제 1 방향 및 제 2 방향을 따라 배치되는 프로세싱 엘리먼트(Processing Element; PE)들을 포함하는 PE 어레이를 포함하되,상기 PE들 각각은, 상기 피처 맵 메모리로부터 제 1 방향으로 전송되는 상기 피처 맵 데이터와 상기 커널 메모리로부터 제 2 방향으로 전송되는 상기 커널 데이터를 이용하여 연산을 수행하고 그리고 상기 제 1 방향과 반대인 제 3 방향으로 연산 결과를 상기 피처 맵 메모리로 전송하는 신경망 가속기
|
2 |
2
제 1 항에 있어서,상기 연산은 곱셈 연산, 가산 연산, 액티베이션(Activation) 연산, 노멀라이제이션(Normalization) 연산, 및 풀링(Pooling) 연산을 포함하는 신경망 가속기
|
3 |
3
제 2 항에 있어서,상기 PE 어레이는:상기 제 2 방향으로 상기 커널 데이터를 상기 PE들로 전송하는 커널 로드 유닛들; 및상기 제 1 방향으로 상기 피처 맵 데이터를 상기 PE들로 전송하고, 상기 제 3 방향으로 전송되는 상기 연산 결과를 수신하고, 그리고 상기 연산 결과를 상기 피처 맵 메모리로 전송하는 피처 맵 입출력 유닛들을 더 포함하는 신경망 가속기
|
4 |
4
제 3 항에 있어서,상기 PE들 각각은:상기 제 1 방향으로 전송되는 명령을 저장하는 제어 레지스터;상기 커널 데이터를 저장하는 커널 레지스터;상기 피처 맵 데이터를 저장하는 피처 맵 레지스터;상기 커널 레지스터 및 상기 피처 맵 레지스터에 저장된 데이터에 대한 곱셈 연산을 수행하는 곱셈기;상기 곱셈기의 곱셈 결과 및 이전의 연산 결과에 대한 가산 연산을 수행하는 가산기;상기 이전의 연산 결과 또는 상기 가산기의 가산 결과를 누적하는 누적 레지스터; 및상기 가산 결과 또는 다른 PE로부터 상기 제 3 방향으로 전송되는 연산 결과를 저장하는 출력 레지스터를 포함하는 신경망 가속기
|
5 |
5
제 4 항에 있어서,상기 PE들 각각은 ReLU(Rectified Linear Unit) 함수 또는 Leaky ReLU 함수를 이용하여 상기 액티베이션 연산을 수행하는 신경망 가속기
|
6 |
6
제 4 항에 있어서,상기 가산기는 상기 출력 레지스터에 저장된 상기 연산 결과와 상기 누적 레지스터에 저장된 누적 결과를 비교하고 그리고 비교 결과에 기초하여, 상기 출력 레지스터에 저장된 상기 연산 결과를 업데이트하는 신경망 가속기
|
7 |
7
제 4 항에 있어서,상기 피처 맵 입출력 유닛은 출력 명령에 기초하여, 상기 PE들로부터 새로운 피처 맵 데이터 또는 상기 새로운 피처 맵 데이터를 생성하기 위한 부분 합을 더 수신하고 그리고 상기 새로운 피처 맵 데이터 또는 상기 부분 합을 상기 피처 맵 메모리로 더 전송하는 신경망 가속기
|
8 |
8
제 7 항에 있어서,상기 출력 레지스터는 상기 제어 레지스터로 전송되는 상기 출력 명령에 기초하여, 상기 연산 결과가 유효한지 여부를 나타내는 유효 플래그 비트(Valid Flag Bit)와 PE가 상기 제 1 방향을 기준으로 상기 피처 맵 메모리로부터 가장 멀리 떨어진 컬럼에 배치되는지 여부를 나타내는 라스트 플래그 비트(Last Flag Bit)를 더 저장하는 신경망 가속기
|
9 |
9
제 8 항에 있어서,상기 PE들은 제 1 PE 및 상기 제 1 방향으로 상기 제 1 PE의 옆에 위치하는 제 2 PE를 포함하고, 그리고상기 제 1 PE는 상기 제 2 PE의 유효 플래그 비트 및 라스트 플래그 비트에 기초하여, 상기 제 3 방향으로 상기 제 2 PE의 연산 결과, 상기 유효 플래그 비트, 및 상기 라스트 플래그 비트를 수신하는 신경망 가속기
|
10 |
10
제 9 항에 있어서,상기 제 1 PE는 상기 제 2 PE의 상기 라스트 플래그 비트가 활성화될 때까지 상기 제 3 방향으로 상기 제 2 PE의 연산 결과, 상기 유효 플래그 비트, 및 상기 라스트 플래그 비트를 반복적으로 수신하는 신경망 가속기
|
11 |
11
제 7 항에 있어서,상기 피처 맵 입출력 유닛은 로드 부분 합(Load Partial Sum) 명령 및 패스 부분 합(Pass Partial Sum) 명령에 기초하여, 상기 제 1 방향으로 상기 피처 맵 메모리로부터 상기 부분 합을 더 수신하고 상기 부분 합을 상기 PE들로 더 전송하는 신경망 가속기
|
12 |
12
제 11 항에 있어서,상기 PE들 각각의 상기 누적 레지스터는 상기 제어 레지스터로 전송되는 상기 로드 부분 합 명령에 응답하여, 상기 제 1 방향으로 전송되는 상기 부분 합을 저장하는 신경망 가속기
|
13 |
13
제 12 항에 있어서,상기 PE들은 제 1 PE 및 상기 제 1 방향으로 상기 제 1 PE의 옆에 위치하는 제 2 PE를 포함하고, 그리고상기 제 1 PE는 상기 로드 부분 합 명령을 수신한 다음 상기 패스 부분 합 명령을 수신하면, 상기 수신된 패스 부분 합 명령 대신에 상기 로드 부분 합 명령을 상기 제 2 PE로 전송하는 신경망 가속기
|
14 |
14
제 13 항에 있어서,상기 제 1 PE는 상기 제 1 방향으로 상기 수신된 패스 부분 합 명령과 함께 전송되는 부분 합을 상기 제 2 PE로 전송하는 신경망 가속기
|
15 |
15
레이어들(Layers)을 포함하는 신경망(Neural Network)의 연산을 수행하기 위한 신경망 가속기에 있어서:필터와 관련된 커널(Kernel) 데이터를 저장하는 커널 메모리;상기 레이어들의 출력들인 피처 맵(Feature Map) 데이터를 저장하는 피처 맵 메모리; 및제 1 방향 및 제 2 방향을 따라 배치되는 프로세싱 엘리먼트(Processing Element; PE)들 그리고 상기 제 2 방향으로 상기 PE들과 상기 피처 맵 메모리 사이에 배치되는 액티베이션(Activation) 유닛들을 포함하는 PE 어레이를 포함하되,상기 PE들 각각은, 상기 피처 맵 메모리로부터 제 1 방향으로 전송되는 상기 피처 맵 데이터와 상기 커널 메모리로부터 제 2 방향으로 전송되는 상기 커널 데이터를 이용하여 제 1 연산을 수행하고 그리고 상기 제 1 방향과 반대인 제 3 방향으로 제 1 연산 결과를 상기 액티베이션 유닛들로 전송하고, 그리고상기 액티베이션 유닛들은 상기 제 1 연산 결과에 대한 제 2 연산을 수행하고 그리고 제 2 연산 결과를 상기 피처 맵 메모리로 전송하는 신경망 가속기
|
16 |
16
제 15 항에 있어서,상기 제 1 연산은 곱셈 연산 및 가산 연산을 포함하는 신경망 가속기
|
17 |
17
제 16 항에 있어서,상기 제 2 연산은 ReLU(Rectified Linear Unit) 함수, Leaky ReLU 함수, Sigmoid 함수, 또는 tanh(Hyperbolic Tangent) 함수를 이용하는 액티베이션 연산, 노멀라이제이션(Normalization) 연산, 및 풀링(Pooling) 연산을 포함하는 신경망 가속기
|
18 |
18
제 17 항에 있어서,상기 PE 어레이는:상기 제 2 방향으로 상기 커널 데이터를 상기 PE들로 전송하는 커널 로드 유닛들;상기 제 1 방향으로 상기 피처 맵 데이터를 상기 PE들로 전송하고, 상기 제 3 방향으로 전송되는 상기 제 1 연산 결과 또는 상기 제 2 연산 결과를 수신하고, 그리고 상기 수신된 연산 결과를 상기 피처 맵 메모리로 전송하는 피처 맵 입출력 유닛들; 및상기 제 1 연산 결과 및 상기 제 2 연산 결과 중 어느 하나를 선택하는 멀티플렉싱 유닛들을 포함하는 신경망 가속기
|
19 |
19
제 18 항에 있어서,상기 PE들 각각이 상기 ReLU 함수 또는 상기 Leaky ReLU 함수를 이용하여 상기 액티베이션 연산을 수행하면, 상기 멀티플렉싱 유닛들은 상기 제 1 연산 결과를 선택하고 그리고 상기 수신된 연산 결과는 상기 제 1 연산 결과인 신경망 가속기
|
20 |
20
제 18 항에 있어서,상기 PE들 각각이 상기 액티베이션 연산을 수행하지 않으면, 상기 멀티플렉싱 유닛들은 상기 제 2 연산 결과를 선택하고 그리고 상기 수신된 연산 결과는 상기 제 2 연산 결과인 신경망 가속기
|