KR20220145226A - 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 - Google Patents
다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 Download PDFInfo
- Publication number
- KR20220145226A KR20220145226A KR1020210052016A KR20210052016A KR20220145226A KR 20220145226 A KR20220145226 A KR 20220145226A KR 1020210052016 A KR1020210052016 A KR 1020210052016A KR 20210052016 A KR20210052016 A KR 20210052016A KR 20220145226 A KR20220145226 A KR 20220145226A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- input
- output
- mac
- bits
- Prior art date
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 230000008859 change Effects 0.000 claims abstract description 6
- 239000011159 matrix material Substances 0.000 claims description 156
- 238000000034 method Methods 0.000 claims description 78
- 230000000295 complement effect Effects 0.000 claims description 43
- 238000009825 accumulation Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 17
- 238000007667 floating Methods 0.000 claims description 12
- 238000010606 normalization Methods 0.000 claims description 9
- 239000000654 additive Substances 0.000 claims 2
- 230000000996 additive effect Effects 0.000 claims 2
- 238000004364 calculation method Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 43
- 101100059544 Arabidopsis thaliana CDC5 gene Proteins 0.000 description 20
- 101150115300 MAC1 gene Proteins 0.000 description 20
- 101100244969 Arabidopsis thaliana PRL1 gene Proteins 0.000 description 18
- 102100039558 Galectin-3 Human genes 0.000 description 18
- 101100454448 Homo sapiens LGALS3 gene Proteins 0.000 description 18
- 101150051246 MAC2 gene Proteins 0.000 description 18
- 101001062854 Rattus norvegicus Fatty acid-binding protein 5 Proteins 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000000630 rising effect Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 210000004556 brain Anatomy 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods 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
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- 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/50—Adding; Subtracting
-
- 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- 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
-
- 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/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
다중 연산 회로는, 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기와, 제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기와, 입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로와, 그리고 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 제1 결과 데이터, 제1 입력 데이터, 제2 입력 데이터, 곱셈 데이터, 및 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함한다.
Description
본 개시의 여러 실시예들은, 다중 연산 회로(multiple operation circuit)와, 이를 포함하는 곱셈-누적(multiplcation and accumlation; 이하 MAC) 오퍼레이터 및 프로세싱-인-메모리(processing-in-memory; 이하 PIM) 장치에 관한 것이다.
최근 정보기술(IT) 산업 뿐만 아니라, 금융, 의료 등 산업 전반에 걸쳐 인공지능에 대한 관심이 급증하고 있다. 이에 따라 다양한 분야에서 인공 지능, 보다 정확하게는 딥 러닝(deep learning)의 도입을 고려하고 시제품화하고 있다. 일반적으로 딥 러닝은, 기존 신경망(neural networks)의 계층 수를 증가시킨 심층 신경망(deep neural networks, DNNs) 또는 심층망(deep networks)을 효과적으로 학습하여 패턴인식(pattern recognition)이나 추론(inference)에 활용하는 기술을 통칭한다.
딥 러닝에 대한 이와 같은 광범위한 관심의 배경과 원인들 중 하나는 연산을 수행하는 프로세서(processor)의 성능 향상일 수 있다. 인공 지능의 성능을 향상시키기 위해서는 신경망(neural network)의 층을 많게는 수백 개 쌓아 학습을 시킨다. 이와 같은 추세는 최근 몇 년간 계속 되었으며, 이로 인해 실제로 연산을 하는 하드웨어에 요구되는 연산량이 기하급수적으로 증가하였다. 더욱이 메모리와 프로세서가 분리되는 기존의 하드웨어 시스템의 경우, 메모리와 프로세서 사이의 데이터 통신양의 제약으로 인공 지능 하드웨어 성능 향상을 저해하고 있다. 이를 해결하기 위해, 최근에는 반도체 칩 자체에서 프로세서와 메모리가 일체화된 PIM 장치가 신경망 컴퓨팅 장치(computing device)로서 사용되고 있는 추세다. PIM 장치는 PIM 장치 내부에서 직접 연산 동작을 수행하므로, 신경망 내에서의 데이터 처리 속도를 향상시킨다.
본 출원이 해결하고자 하는 과제는, MAC 연산을 포함하여 복수의 연산 동작들을 선택적으로 수행할 수 있는 다중 연산 회로를 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 상기와 같은 다중 연산 회로를 포함하는 MAC 오퍼레이터를 제공하는 것이다.
본 출원이 해결하고자 하는 또 다른 과제는, 상기와 같은 다중 연산 회로를 포함하는 PIM 장치를 제공하는 것이다.
본 개시의 일 예에 따른 다중 연산 회로는, 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기와, 제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기와, 입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로와, 그리고 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 제1 결과 데이터, 제1 입력 데이터, 제2 입력 데이터, 곱셈 데이터, 및 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함한다.
본 개시의 일 예에 따른 곱셈-누산(MAC) 오퍼레이터는, 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각을 입력받아 복수의 연산 결과 데이터들 및 결과 데이터를 출력하는 복수의 다중 연산 회로들을 포함한다. 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각은, 복수의 다중 연산 회로들 각각으로 분산되어 입력된다. 복수의 연산 결과 데이터들은, 상기 복수의 다중 연산 회로들로부터 출력된다. 그리고 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성된다.
본 개시의 일 예에 따른 프로세싱-인-메모리(PIM) 장치는, 복수의 웨이트 데이터들을 제공하는 복수의 메모리 뱅크들과, 복수의 벡터 데이터들을 제공하는 글로벌 버퍼와, 복수의 웨이트 데이터들 및 복수의 벡터 데이터들에 대한 MAC 연산을 수행하는 복수의 MAC 오퍼레이터들을 포함한다. 복수의 MAC 오퍼레이터들 각각은, 복수의 다중 연산 회로들을 포함한다. 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성된다.
본 개시의 일 예에 따른 프로세싱-인-메모리(PIM) 장치는, 복수의 웨이트 데이터들을 제공하는 복수의 메모리 뱅크들과, 복수의 벡터 데이터들을 제공하는 글로벌 버퍼와, 그리고 복수의 웨이트 데이터들 및 복수의 벡터 데이터들에 대한 MAC 연산을 수행하는 복수의 다중 연산 회로들을 포함한다. 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성된다.
여러 실시예들에 따르면, 하나의 다중 연산 회로를 통해 MAC 연산 및 EW 연산을 포함하는 복수의 연산 동작을 선택적으로 수행할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 다중 연산 회로를 나타내 보인 도면이다.
도 2는 도 1의 다중 연산 회로의 곱셈기 구성의 일 예를 나타내 보인 도면이다.
도 3은 도 1의 다중 연산 회로의 가산기 구성의 일 예를 나타내 보인 도면이다.
도 4는 도 1의 다중 연산 회로의 제1 연산 모드에서의 MAC 연산에 의해 수행되는 매트릭스-벡터 곱셈의 일 예를 나타내 보인 도면이다.
도 5는 도 1의 다중 연산 회로에 의해 도 4의 매트릭스-벡터 곱셈이 수행되는 과정의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 6은 도 1의 다중 연산 회로에서 수행되는 도 5의 첫번째 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 7은 도 1의 다중 연산 회로에서 수행되는 도 5의 두번째 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 8은 도 1의 다중 연산 회로의 제2 연산 모드에서의 EW 곱셈 연산에 의해 수행되는 매트릭스-스칼라 곱셈의 일 예를 나타내 보인 도면이다.
도 9는 도 1의 다중 연산 회로에서 수행되는 도 8의 EW 곱셈 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 10은 도 1의 다중 연산 회로의 제2 연산 모드에서의 EW 가산 연산에 의해 수행되는 매트릭스 가산의 일 예를 나타내 보인 도면이다.
도 11은 도 1의 다중 연산 회로에서 수행되는 도 10의 EW 가산 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 12는 도 1의 다중 연산 회로의 제3 연산 모드에서의 누산 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 13은 본 개시의 다른 예에 따른 다중 연산 회로를 나타내 보인 도면이다.
도 14는 도 13의 다중 연산 회로의 곱셈기 구성의 일 예를 나타내 보인 도면이다.
도 15는 도 13의 다중 연산 회로의 정규화기 구성의 일 예를 나타내 보인 도면이다.
도 16은 본 개시의 일 예에 따른 MAC 오퍼레이터를 나타내 보인 도면이다.
도 17은 도 16의 MAC 오퍼레이터의 제1 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 18은 도 16의 MAC 오퍼레이터의 제2 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 19는 본 개시의 일 예에 따른 PIM 장치를 나타내 보인 도면이다.
도 20은 도 19의 PIM 장치에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 21은 본 개시의 다른 예에 따른 PIM 장치를 나타내 보인 도면이다.
도 22는 도 21의 PIM 장치에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 2는 도 1의 다중 연산 회로의 곱셈기 구성의 일 예를 나타내 보인 도면이다.
도 3은 도 1의 다중 연산 회로의 가산기 구성의 일 예를 나타내 보인 도면이다.
도 4는 도 1의 다중 연산 회로의 제1 연산 모드에서의 MAC 연산에 의해 수행되는 매트릭스-벡터 곱셈의 일 예를 나타내 보인 도면이다.
도 5는 도 1의 다중 연산 회로에 의해 도 4의 매트릭스-벡터 곱셈이 수행되는 과정의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 6은 도 1의 다중 연산 회로에서 수행되는 도 5의 첫번째 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 7은 도 1의 다중 연산 회로에서 수행되는 도 5의 두번째 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 8은 도 1의 다중 연산 회로의 제2 연산 모드에서의 EW 곱셈 연산에 의해 수행되는 매트릭스-스칼라 곱셈의 일 예를 나타내 보인 도면이다.
도 9는 도 1의 다중 연산 회로에서 수행되는 도 8의 EW 곱셈 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 10은 도 1의 다중 연산 회로의 제2 연산 모드에서의 EW 가산 연산에 의해 수행되는 매트릭스 가산의 일 예를 나타내 보인 도면이다.
도 11은 도 1의 다중 연산 회로에서 수행되는 도 10의 EW 가산 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 12는 도 1의 다중 연산 회로의 제3 연산 모드에서의 누산 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 13은 본 개시의 다른 예에 따른 다중 연산 회로를 나타내 보인 도면이다.
도 14는 도 13의 다중 연산 회로의 곱셈기 구성의 일 예를 나타내 보인 도면이다.
도 15는 도 13의 다중 연산 회로의 정규화기 구성의 일 예를 나타내 보인 도면이다.
도 16은 본 개시의 일 예에 따른 MAC 오퍼레이터를 나타내 보인 도면이다.
도 17은 도 16의 MAC 오퍼레이터의 제1 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 18은 도 16의 MAC 오퍼레이터의 제2 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 19는 본 개시의 일 예에 따른 PIM 장치를 나타내 보인 도면이다.
도 20은 도 19의 PIM 장치에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
도 21은 본 개시의 다른 예에 따른 PIM 장치를 나타내 보인 도면이다.
도 22는 도 21의 PIM 장치에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 요소를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다. "기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다. "로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.
도 1은 본 개시의 일 예에 따른 다중 연산 회로(100)를 나타내 보인 도면이다. 도 1을 참조하면, 다중 연산 회로(100)는, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])를 입력받을 수 있다. 이하에서는 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])가 16비트 바이너리 스트림(binary stream)인 경우를 전제하기로 한다. 그러나 이는 단지 하나의 예일 뿐이며, 32비트 또는 다른 비트 수를 가질 수도 있다. 일 예에서 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])는, 각각 제1 메모리 뱅크 및 제2 메모리 뱅크로부터 다중 연산 회로(100)로 전송될 수 있다. 다른 예에서 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])는, 각각 메모리 뱅크 및 버퍼 메모리로부터 다중 연산 회로(100)로 전송될 수 있다. 다중 연산 회로(100)는, 다른 다중 연산 회로(100)로부터 제1 결과 데이터(IY-1)를 전송받을 수 있다. 다중 연산 회로(100)는, 제어신호들로서 제1 내지 제3 선택 신호들(SS1-SS3) 및 업데이트 신호(UPDATE)를 전송받는다. 다중 연산 회로(100)는, 제2 결과 데이터(IY[15:0]) 및 연산 결과 데이터(Y[15:0])를 출력한다.
다중 연산 회로(100)는, 복수의 연산 모드들에 따른 연산 동작들을 수행할 수 있다. 복수의 연산 모드들은, MAC 연산을 수행하는 제1 연산 모드와, EW 연산들을 수행하는 제2 연산 모드와, 그리고 누산 연산을 수행하는 제3 연산 모드를 포함할 수 있다. 제2 연산 모드에서 수행되는 EW 연산들은, EW 곱셈 연산 및 EW 가산 연산을 포함할 수 있다. 일 예에서, MAC 연산은, 제1 매트릭스 데이터 및 제2 매트릭스 데이터의 매트릭스-벡터 곱셈으로 수행될 수 있다. EW 곱셈 연산은, 제1 매트릭스 데이터와 상수의 매트릭스-스칼라 곱셈으로 수행될 수 있다. EW 가산 연산은, 제1 매트릭스 데이터와 제2 매트릭스 데이터의 매트릭스 엘리먼트별 가산으로 수행될 수 있다. 그리고 누산 연산은, 제1 결과 데이터와 제2 결과 데이터의 가산 연산으로 수행될 수 있다.
다중 연산 회로(100)가 제1 연산 모드에서의 MAC 연산을 수행하는 경우, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])로서 각각 제1 매트릭스 데이터 및 제2 매트릭스 데이터가 다중 연산 회로(100)로 전송된다. MAC 연산이 (MㅧN)의 제1 매트릭스 및 (Nㅧ1)의 제2 매트릭스에 대해 수행되는 경우, 제1 입력 데이터(A[15:0])는 제1 매트릭스의 엘리먼트에 해당되고, 제2 입력 데이터(B[15:0])는 제2 매트릭스의 엘리먼트에 해당된다. 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])는, 부호(sign), 지수(exponent), 및 가수(mantissa)로 구성되는 부동 소수점 형식(floating-point format)이다. 그러나 이는 단지 하나의 예일 뿐이며, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])가, 부호 비트를 포함하는 정수부(integer part) 및 소수부(fraction part)로 구성되는 고정 소수점 형식(fixed-point format)일 수도 있다.
다중 연산 회로(100)가 제2 연산 모드에서의 EW 곱셈 연산을 수행하는 경우, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])로서 각각 매트릭스 데이터 및 상수 데이터(constant)가 다중 연산 회로(100)로 전송된다. EW 곱셈 연산이 (MㅧN)의 제1 매트릭스 및 상수에 대해 수행되는 경우, 제1 입력 데이터(A[15:0])는 제1 매트릭스의 엘리먼트에 해당되고, 제2 입력 데이터(B[15:0])는 상수 데이터에 해당된다. 다중 연산 회로(100)가 EW 가산 연산을 수행하는 경우, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])로서 각각 제1 매트릭스 데이터 및 제2 매트릭스 데이터가 다중 연산 회로(100)로 입력된다. EW 가산 연산이 (MㅧN)의 제1 매트릭스 및 (MㅧN)의 제2 매트릭스에 대해 수행되는 경우, 제1 입력 데이터(A[15:0])는 제1 매트릭스의 엘리먼트에 해당되고, 제2 입력 데이터(B[15:0])는 제2 매트릭스의 엘리먼트에 해당된다. 이때 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])는, 각각 제1 매트릭스 및 제2 매트릭스에서 동일한 위치, 즉 동일한 행 및 동일한 열의 엘리먼트에 해당된다.
다중 연산 회로(100)가 제3 연산 모드에서의 누산 연산을 수행하는 경우, 다중 연산 회로(100)는, 제1 결과 데이터(IY-1)를 입력받는다. 일 예에서 제1 결과 데이터(IY-1)는, 다른 다중 연산 회로에서 생성되어 다중 연산 회로(100)로 전송되는 제1 곱셈 데이터일 수 있다. 다중 연산 회로(100)는, 제1 곱셈 데이터와 이전의 연산 동작에 의해 저장되어 있는 제2 곱셈 데이터에 대한 가산 동작을 수행하고, 그 결과 데이터를 제2 결과 데이터(IY)로 출력시킨다. 다중 연산 회로(100)로부터 출력되는 제2 결과 데이터(IY)는, 다른 다중 연산 회로에서의 제1 결과 데이터(IY-1)로서 다른 다중 연산 회로로 전송될 수 있다.
본 예에 따른 다중 연산 회로(100)는, 곱셈기(multiplier)(110)와, 제1 내지 제4 선택기들(selectors)(121-124)과, 가산기(adder)(130)와, 그리고 래치 회로(latch circuit)(140)를 포함한다.
곱셈기(110)는, 제1 입력 단자, 제2 입력 단자, 및 출력 단자를 갖는다. 곱셈기(110)의 제1 입력 단자 및 제2 입력 단자에는 각각 제1 매트릭스 데이터 및 제2 매트릭스 데이터로서 입력되는 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])가 입력된다. 곱셈기(110)는, 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])에 대한 곱셈 연산을 수행하여 곱셈 데이터(AB[15:])를 생성한다. 곱셈기(110)는, 출력 단자를 통해 곱셈 데이터(AB[15:0])를 출력시킨다. 곱셈기(110)의 제1 입력 단자는, 제2 선택기(122)의 제1 입력 단자(IN21)와 결합된다. 이에 따라 곱셈기(110)의 제1 입력 단자로 전송되는 제1 입력 데이터(A[15:0])는, 제2 선택기(122)의 제1 입력 단자(IN21)로도 전송된다. 곱셈기(110)의 제2 입력 단자는, 제3 선택기(123)의 제1 입력 단자(IN31)와 결합된다. 이에 따라 곱셈기(110)의 제2 입력 단자로 전송되는 제2 입력 데이터(B[15:0])는, 제3 선택기(123)의 제1 입력 단자(IN31)로도 전송된다. 곱셈기(110)의 출력 단자는, 제1 선택기(121)의 제2 입력 단자(IN12)와 결합된다. 이에 따라 곱셈기(110)의 출력 단자로부터 출력되는 곱셈 데이터(AB[15:0])는 제1 선택기(121)의 제2 입력 단자(IN12)로 전송된다.
제1 선택기(121)는, 제1 입력 단자(IN11), 제2 입력 단자(IN12), 선택 단자(S1), 및 출력 단자(OUT1)를 갖는다. 제1 선택기(121)의 제1 입력 단자(IN11)는, 제1 결과 데이터(IY-1)를 전송받는다. 제1 선택기(121)의 제2 입력 단자(IN12)는, 곱셈기(110)이 출력 단자와 결합되어, 곱셈기(110)로부터 출력되는 곱셈 데이터(AB[15:0])를 전송받는다. 제1 선택기(121)의 선택 단자(S1)에는 제1 선택 신호(SS1)가 전송된다. 제1 선택기(121)의 출력 단자(OUT1)는, 제2 선택기(122)의 제2 입력 단자(IN22) 및 제4 선택기(124)의 제1 입력 단자(IN41)에 공통으로 결합된다. 제1 선택기(121)는, 제1 선택 신호(SS1)의 제1 로직 레벨 신호 입력에 응답하여 제1 입력 단자(IN11)를 통해 입력되는 제1 결과 데이터(IY-1)를 출력 단자(OUT1)를 통해 출력시킨다. 제1 선택기(121)는, 제1 선택 신호(SS1)의 제2 로직 레벨 신호 입력에 응답하여 제2 입력 단자(IN21)를 통해 입력되는 곱셈 데이터(AB[15:0])를 출력 단자(OUT1)를 통해 출력시킨다. 이하에서는 제1 로직 레벨 신호 및 제2 로직 레벨 신호가, 각각 로직 로우 신호 및 로직 하이 신호인 것으로 예를 들기로 한다. 일 예에서 제1 선택기(121)는, 2입력 및 1출력의 멀티플렉서(multiplexer)로 구성될 수 있다.
제2 선택기(122)는, 제1 입력 단자(IN21), 제2 입력 단자(IN22), 선택 단자(S2), 및 출력 단자(OUT2)를 갖는다. 제2 선택기(122)의 제1 입력 단자(IN21)는, 곱셈기(110)의 제1 입력 단자에 결합된다. 이에 따라 제2 선택기(122)의 제1 입력 단자(IN21)를 통해 제1 입력 데이터(A[15:0])가 전송된다. 제2 선택기(122)의 제2 입력 단자(IN22)는, 제1 선택기(121)의 출력 단자(OUT1)와 결합된다. 제2 선택기(122)의 선택 단자(S2)에는 제2 선택 신호(SS2)가 전송된다. 제2 선택기(122)의 출력 단자(OUT2)는, 가산기(130)의 제1 입력 단자에 결합된다. 제2 선택기(122)는, 제2 선택 신호(SS2)의 로직 로우 신호 입력에 응답하여 제1 입력 단자(IN21)를 통해 제1 입력 데이터(A[15:0])를 출력 단자(OUT2)를 통해 출력시킨다. 제2 선택기(122)는, 제2 선택 신호(SS2)의 로직 하이 신호 입력에 응답하여 제2 입력 단자(IN22)를 통해 입력되는 제1 선택기(121)로부터의 출력 데이터를 출력 단자(OUT2)를 통해 출력시킨다. 일 예에서 제2 선택기(122)는, 2입력 및 1출력의 멀티플렉서로 구성될 수 있다.
제3 선택기(123)는, 제1 입력 단자(IN31), 제2 입력 단자(IN32), 선택 단자(S3), 및 출력 단자(OUT3)를 갖는다. 제3 선택기(123)의 제1 입력 단자(IN31)는, 곱셈기(110)의 제2 입력 단자에 결합된다. 이에 따라 제3 선택기(123)의 제1 입력 단자(IN31)를 통해 제2 입력 데이터(B[15:0])가 전송된다. 제3 선택기(123)의 제2 입력 단자(IN32)는, 래치 회로(140)의 출력 단자에 결합된다. 이에 따라 제3 선택기(123)는, 래치 회로(140)의 출력 단자를 통해 출력되는 연산 결과 데이터(Y[15:0])를 피드백 데이터(DF[15:0])로 전송받는다. 제3 선택기(123)의 선택 단자(S3)에는, 제2 선택기(122)와 마찬가지로 제2 선택 신호(SS2)가 전송된다. 제3 선택기(123)의 출력 단자(OUT3)는, 가산기(130)의 제2 입력 단자에 결합된다. 제3 선택기(123)는, 제2 선택 신호(SS2)의 로직 로우 신호 입력에 응답하여 제1 입력 단자(IN31)를 통해 제2 입력 데이터(B[15:0])를 출력 단자(OUT3)를 통해 출력시킨다. 제3 선택기(123)는, 제2 선택 신호(SS2)의 로직 하이 신호 입력에 응답하여 제2 입력 단자(IN32)를 통해 입력되는 피드백 데이터(DF[15:0])를 출력 단자(OUT3)를 통해 출력시킨다. 일 예에서 제3 선택기(123)는, 2입력 및 1출력의 멀티플렉서로 구성될 수 있다.
가산기(130)는, 제1 입력 단자, 제2 입력 단자, 및 출력 단자를 갖는다. 가산기(130)의 제1 입력 단자는 제2 선택기(122)의 출력 단자(OUT2)에 결합된다. 가산기(130)이 제2 입력 단자는 제3 선택기(123)의 출력 단자(OUT3)에 결합된다. 이에 따라 가산기(130)의 제1 입력 단자 및 제2 입력 단자에는, 각각 제2 선택기(122)로부터의 출력 데이터 및 제3 선택기(123)로부터의 출력 데이터가 전송된다. 제2 선택 신호(SS2)가 로직 로우 신호인 경우, 가산기(130)의 제1 입력 단자 및 제2 입력 단자에는, 각각 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])가 전송된다. 제2 선택 신호(SS2)가 로직 하이 신호인 경우, 가산기(130)의 제1 입력 단자 및 제2 입력 단자에는, 각각 제1 선택기(121)로부터의 출력 데이터 및 래치 회로(140)로부터의 피드백 데이터(DF[15:0])가 전송된다. 가산기(130)의 출력 단자는, 제4 선택기(124)의 제2 입력 단자(IN42) 및 제1 출력 라인(161)에 공통으로 결합된다. 가산기(130)는, 제1 입력 단자 및 제2 입력 단자를 통해 전송되는 데이터들에 대한 가산 연산을 수행하여 MAC 데이터(MAC[15:0])를 생성한다. 가산기(130)는, MAC 데이터(MAC[15:0])를 제4 선택기(124)의 제2 입력 단자(IN42)로 전송시키고, 또한 제1 출력 라인(161)을 통해 중간 결과 데이터(IY[15:0])로서 다중 연산 회로(100) 외부로 출력시킨다.
제4 선택기(124)는, 제1 입력 단자(IN41), 제2 입력 단자(IN42), 선택 단자(S4), 및 출력 단자(OUT4)를 갖는다. 제4 선택기(124)의 제1 입력 단자(IN41)는, 제1 출력 단자(OUT1)에 결합된다. 제4 선택기(124)의 제2 입력 단자(IN42)는, 가산기(130)의 출력 단자에 결합된다. 제4 선택기(124)의 선택 단자(S4)는, 인버터(150)의 출력 단자에 결합된다. 인버터(150)의 입력 단자에는, 제3 선택 신호(SS3)가 전송된다. 본 예에서 인버터(150)의 채용은, 제2 선택 신호(SS2)와 제3 선택 신호(SS3)의 로직 레벨을 편의상 구분이 용이하게 하도록 하기 위한 것이며, 따라서 인버터(150)은 생략될 수도 있다. 제4 선택기(124)의 출력 단자(OUT4)는, 래치 회로(140)의 입력 단자에 결합된다. 제4 선택기(124)는, 제3 선택 신호(SS3)의 로직 하이 신호 입력에 응답하여 제1 입력 단자(IN41)를 통해 입력되는 제1 선택기(121)의 출력 데이터를 출력 단자(OUT4)를 통해 출력시킨다. 제4 선택기(124)는, 제3 선택 신호(SS3)의 로직 로우 신호 입력에 응답하여 제2 입력 단자(IN42)를 통해 입력되는 MAC 데이터(MAC[15:0])를 출력 단자(OUT4)를 통해 출력시킨다. 일 예에서 제4 선택기(124)는, 2입력 및 1출력의 멀티플렉서로 구성될 수 있다.
래치 회로(140)는, 입력 단자, 클럭 단자, 및 출력 단자를 갖는다. 일 예에서 래치 회로(140)는 래치 기능을 갖는 플립 플랍(flip flop)으로 구성될 수 있다. 래치 회로(140)의 입력 단자는, 제4 선택기(124)의 출력 단자(OUT4)에 결합된다. 래치 회로(140)의 클럭 단자에는 업데이트 신호(UPDATE)가 전송된다. 래치 회로(140)의 출력 단자(Q)는, 제3 선택기(123)의 제2 입력 단자(IN32) 및 제2 출력 라인(162)에 공통으로 결합된다. 래치 회로(140)는, 업데이트 신호(UPDATE)의 상승 에지에 동기되어 래치 회로(140)의 입력 단자로 입력되는 데이터, 즉 제4 선택기(124)로부터의 출력 데이터를 래치한다. 래치 회로(140)에 래치된 데이터는, 업데이트 신호(UPDATE)의 상승 에지로부터 일정 시간 지연된 시점에 래치 회로(140)의 출력 단자를 통해 출력된다. 래치 회로(140)로부터 출력되는 출력 데이터는, 피드백 데이터(DF[15:0])로서 제3 선택기(123)의 제2 입력 단자(IN32)로 전송된다. 또한 래치 회로(140)로부터 출력되는 출력 데이터는, 연산 결과 데이터(Y[15:0])로서 제2 출력 라인(162)을 통해 다중 연산 회로(100) 외부로 출력된다.
도 2는 도 1의 다중 연산 회로(100)의 곱셈기(110) 구성의 일 예를 나타내 보인 회로도이다. 본 예에서 제1 입력 데이터(A[15:0])는, 1비트의 제1 부호 비트(S1[0])와, 8비트들의 제1 지수 비트들(E1[7:0])과, 그리고 7비트들의 제1 가수 비트들(M1[6:0])로 구성되는 것을 전제하기로 한다. 또한 제2 입력 데이터(B[15:0])는, 1비트의 제2 부호 비트(S2[0])와, 8비트들의 제2 지수 비트들(E2[7:0])과, 그리고 7비트들의 제2 가수 비트들(M2[6:0])로 구성되는 것을 전제하기로 한다. 마찬가지로 곱셈기(110)로부터 출력되는 곱셈 데이터(AB[15:0])는, 1비트의 제3 부호 비트(S3[0])와, 8비트들의 제3 지수 비트들(E3[7:0])과, 그리고 7비트들의 제3 가수 비트들(M3[6:0])로 구성되는 것을 전제하기로 한다.
도 2를 참조하면, 곱셈기(110)는, 부호 처리 회로(110S)와, 지수 처리 회로(110S)와, 가수 처리 회로(110M)와, 그리고 정규화기(normalizer)(110N)를 포함한다. 부호 처리 회로(110S)는, 배타적 논리합(Exclusive OR; 이하 XOR) 게이트(111)를 포함한다. XOR 게이트(111)는, 제1 입력 데이터(A[15:0])의 제1 부호 비트(S1[0])와 제2 입력 데이터(B[15:0])의 제2 부호 비트(S2[0])에 대한 XOR 연산을 수행한다. XOR 게이트(111)는, 곱셈 데이터(AB[15:0])의 제3 부호 비트(S3[0])를 출력한다.
지수 처리 회로(110E)는, 제1 지수 가산기(112) 및 제2 지수 가산기(113)를 포함한다. 제1 지수 가산기(112)는, 제1 입력 데이터(A[15:0])의 제1 지수 비트(E1[7:0])와 제2 입력 데이터(B[15:0])의 제2 지수 비트(E2[7:0])에 대한 가산 연산을 수행하고, 그 결과 데이터를 출력시킨다. 제2 지수 가산기(113)는, 제1 가산기(112)로부터 출력되는 결과 데이터에 지수 바이어스 값, 예컨대 127을 빼주기 위해, 결과 데이터 및 -127에 대한 가산 연산을 수행하여, 중간 지수 비트들(EM[7:0])을 생성한다. 제2 지수 가산기(113)로부터 생성되는 중간 지수 비트들(EM[7:0])은 정규화기(110N)로 전송된다.
가수 처리 회로(110M)는, 가수 곱셈기(114)를 포함한다. 가수 곱셈기(114)는, 8비트의 제1 가수 비트들(M1[7:0]) 및 8비트의 제2 가수 비트들(M2[7:0])을 입력받는다. 8비트의 제1 가수 비트들(M1[7:0])은, 제1 입력 데이터(A[15:0])의 7비트의 제1 가수 비트들(M1[6:0])에 1비트의 암시 비트(Implied Bit)(IB)가 포함되어 구성된다. 8비트의 제2 가수 비트들(M2[7:0])은, 제2 입력 데이터(B[15:0])의 7비트의 제2 가수 비트들(M2[6:0])에 1비트의 암시 비트(IB)가 포함되어 구성된다. 암시 비트(IB)는, 소수점에 선행하는 "1"을 의미한다. 가수 곱셈기(114)는, 8비트의 제1 가수 비트들(M1[7:0]) 및 8비트의 제2 가수 비트들(M2[7:0])에 대한 곱셈 연산을 수행하고, 곱셈 결과 데이터로서 16비트의 제1 중간 가수 비트들(MM13[15:0])을 생성시킨다. 가수 곱셈기(114)로부터 생성되는 16비트의 제1 중간 가수 비트들(MM13[15:0])은 정규화기(110N)로 전송된다.
정규화기(110N)는, 부동 소수점 이동부(115)와, 멀티플렉서(116)와, 라운드 처리부(117)와, 그리고 제3 지수 가산기(118)를 포함한다. 정규화기(110N)의 부동 소수점 이동부(115)는, 가수 곱셈기(114)로부터 16비트의 제1 중간 가수 비트들(MM13[15:0])을 입력받고, 소수점이 가수 비트들(M3[15:0])의 최상위 비트(MSB; Most Significant Bit)를 향해 1비트 이동된 제2 중간 가수 비트들(MM23[15:0])을 생성하여 출력시킨다. 부동 소수점 이동부(115)로부터 출력되는 제2 중간 가수 비트들(MM23[15:0])의 소수점은, 15번째 비트(M[14]) 및 최상위 비트(MSB)(M[15]) 사이에 위치하게 된다. 부동 소수점 이동부(115)에 의해 소수점이 이동된 데이터는 멀티플렉서(116)의 제1 입력단자(IN1)로 전송된다.
정규화기(110N)의 멀티플렉서(116)는, 제1 입력단자(IN1)를 통해 가수 곱셈기(114)로부터 출력되는 제1 중간 가수 비트들(MM13[15:0])을 전송받는다. 멀티플렉서(116)는, 제2 입력단자(IN2)를 통해 부동 소수점 이동부(115)로부터 출력되는 제2 중간 가수 비트들(MM23[15:0])을 전송받는다. 멀티플렉서(2142)는, 선택신호로서 제1 중간 가수 비트들(MM13[15:0])의 최상위 비트(MM13[15])를 전송받는다. 최상위 비트(MM13[15])가 "0"인 경우, 멀티플렉서(116)는, 제1 입력단자(IN1)를 통해 전송되는 제1 중간 가수 비트들(MM13[15:0])를 출력시킨다. 최상위 비트(MM13[15])가 "1"인 경우, 멀티플렉서(116)는, 제2 입력단자(IN2)를 통해 전송되는 제2 중간 가수 비트들(MM23[15:0])를 출력시킨다.
정규화기(110N)의 라운드 처리부(117)는, 멀티플렉서(116)로부터 출력되는 16비트 가수 비트들에서 암시 비트가 포함된 9비트들을 제거하고, 제거 과정에서 라운드 처리를 수행한다. 라운드 처리 과정에서, 라운드 업에 따르는 +1 가산 연산이 수행될 수도 있다. 라운드 처리부(117)는, 곱셈 데이터(AB[15:0])의 7비트의 제3 가수 비트들(M3[6:0])을 출력한다.
정규화기(110N)의 제3 지수 가산기(118)는, 제2 지수 가산기(113)로부터 전송되는 중간 지수 비트들(EM[7:0])과 가수 곱셈기(114)로부터 생성되는 제1 중간 가수 비트들(MM13[15:0])의 최상위 비트(MM13[15])에 대한 가산 연산을 수행한다. 제3 지수 가산기(118)는, 곱셈 데이터(AB[15:0])의 8비트의 제3 지수 비트들(E3[7:0])을 출력시킨다. 최상위 비트(MM13[15])가 "0"인 경우, 제3 지수 가산기(118)로부터 출력되는 제3 지수 비트들(E3[7:0])은 제2 지수 가산기(113)로부터 출력되는 중간 지수 비트들(EM[7:0])과 동일한 값을 갖는다. 최상위 비트(MM13[15])가 "1"인 경우, 제3 지수 가산기(118)로부터 출력되는 제3 지수 비트들(E3[7:0])은 제2 지수 가산기(113)로부터 출력되는 중간 지수 비트들(EM[7:0]) 보다 "1" 더 큰 값을 갖는다.
도 3은 도 1의 다중 연산 회로(100)의 가산기(130) 구성의 일 예를 나타내 보인 회로도이다. 이하에서는 가산기(130)가 제2 선택기(122) 및 제3 선택기(123)로부터 각각 곱셈 데이터(AB[15:0]) 및 피드백 데이터(DF[15:0])를 입력받는 것을 예로 들기로 한다. 일 예에서 곱셈 데이터(AB[15:0])는, 도 2를 참조하여 설명한 곱셈기(110)로부터 출력되는 데이터일 수 있다. 이 경우 곱셈 데이터(AB[15:0]는, 1비트의 제3 부호 비트(S3[0])와, 8비트들의 제3 지수 비트들(E3[7:0])과, 그리고 7비트들의 제3 가수 비트들(M3[6:0])로 구성된다. 본 예에서, 피드백 데이터(DF[15:0])는, 1비트의 제4 부호 비트(S4[0])와, 8비트들의 제4 지수 비트들(E4[7:0])과, 그리고 7비트들의 제4 가수 비트들(M4[6:0])로 구성되는 것을 전제하기로 한다. 마찬가지로 가산기(130)로부터 출력되는 MAC 데이터(MAC[15:0])는, 1비트의 부호 비트(MAC_S[0])와, 8비트들의 지수 비트들(MAC_E[7:0])과, 그리고 7비트들의 가수 비트들(MAC_M[6:0])로 구성되는 것을 전제하기로 한다.
도 3을 참조하면, 가산기(130)는, 디퍼런스 회로(difference circuit)(130D)와, 2의 보수 처리 회로(130C)와, 시프트 회로(130S)와, 가산 회로(130A)와, 그리고 정규화기(130N)를 포함한다. 디퍼런스 회로(130D)는, 곱셈 데이터(AB[15:0])의 제3 지수 비트들(E3[7:0]) 및 피드백 데이터(DF[15:0])의 제4 지수 비트들(E4[7:0])을 입력받는다. 디퍼런스 회로(130D)는, 제3 지수 비트들(E3[7:0]) 및 제4 지수 비트들(E4[7:0])의 크기를 비교하여 상대적으로 더 큰 지수 비트들을 나타내는 최대 지수 비트들(E_MAX)을 출력시킨다. 디퍼런스 회로(130D)는, 제3 지수 비트들(E3[7:0]) 및 제4 지수 비트들(E4[7:0])의 차이값을 나타내는 지수 차이 비트들(DE)을 출력시킨다. 그리고 디퍼런스 회로(130D)는, 제3 지수 비트들(E3[7:0]) 및 제4 지수 비트들(E4[7:0]) 중 시프트될 대상에 따라 정해지는 선택 신호(SEL)를 출력시킨다. 디퍼런스 회로(130D)로부터 출력되는 최대 지수 비트들(E_MAC)은, 정규화기(130N)로 전송된다. 디퍼런스 회로(130D)로부터 출력되는 지수 차이 비트들(DE) 및 선택 신호(SEL)는, 시프트 회로(130S)로 전송된다.
2의 보수 처리 회로(130C)는, 제1 2의 보수 처리기(131C), 제2 2의 보수 처리기(132C), 제1 멀티플렉서(133C), 및 제2 멀티플렉서(134C)를 포함한다. 제1 2의 보수 처리기(131C)는, 곱셈 데이터(AB[15:0])의 제3 가수 비트들(M3[6:0])을 입력받는다. 제1 2의 보수 처리기(131C)는, 제3 가수 비트들(M3[6:0])에 대한 2의 보수 처리를 수행하여 제3 2의 보수 비트들(2M3[6:0])을 출력시킨다. 제2 2의 보수 처리기(132C)는, 피드백 데이터(DF[15:0])의 제4 가수 비트들(M4[6:0])을 입력받는다. 제2 2의 보수 처리기(132C)는, 제4 가수 비트들(M4[6:0])에 대한 2의 보수 처리를 수행하여 제4 2의 보수 비트들(2M4[6:0])을 출력시킨다.
제1 멀티플렉서(133C)는, 제1 입력 단자로 곱셈 데이터(AB[15:0])의 제3 가수 비트들(M3[6:0])을 입력받는다. 제1 멀티플렉서(133C)는, 제2 입력 단자로 제1 2의 보수 처리기(131C)로부터 출력되는 제3 2의 보수 비트들(2M3[6:0])을 입력받는다. 제1 멀티플렉서(133C)는, 선택 단자로 곱셈 데이터(AB[15:0])의 제3 부호 비트(S3[0])를 입력받는다. 제1 멀티플렉서(133C)는, 제3 부호 비트(S3[0])에 따라서 제1 입력 단자로 입력되는 제3 가수 비트들(M3[6:0]) 또는 제2 입력 단자로 입력되는 제3 2의 보수 비트들(2M3[6:0])을 출력시킨다. 일 예에서 제3 부호 비트(S3[0])가 양수(예컨대 "0")인 경우, 제1 멀티플렉서(133C)는 제3 가수 비트들(M3[6:0])을 출력시킨다. 반면에 제3 부호 비트(S3[0])가 음수(예컨대 "1")인 경우, 제1 멀티플렉서(133C)는 제3 2의 보수 비트들(2M3[6:0])을 출력시킨다. 이하에서 제1 멀티플렉서(133C)로부터의 출력 데이터를 제1 중간 가수 비트들(MM1[6:0])로 지칭하기로 한다.
제2 멀티플렉서(134C)는, 제1 입력 단자로 피드백 데이터(DF[15:0])의 제4 가수 비트들(M4[6:0])을 입력받는다. 제2 멀티플렉서(134C)는, 제2 입력 단자로 제2 2의 보수 처리기(132C)로부터 출력되는 제4 2의 보수 비트들(2M4[6:0])을 입력받는다. 제2 멀티플렉서(134C)는, 선택 단자로 피드백 데이터(DF[15:0])의 제4 부호 비트(S4[0])를 입력받는다. 제2 멀티플렉서(134C)는, 제4 부호 비트(S4[0])에 따라서 제1 입력 단자로 입력되는 제4 가수 비트들(M4[6:0]) 또는 제2 입력 단자로 입력되는 제4 2의 보수 비트들(2M4[6:0])을 출력시킨다. 일 예에서 제4 부호 비트(S4[0])가 양수(예컨대 "0")인 경우, 제2 멀티플렉서(134C)는 제4 가수 비트들(M4[6:0])을 출력시킨다. 반면에 제4 부호 비트(S4[0])가 음수(예컨대 "1")인 경우, 제2 멀티플렉서(134C)는 제4 2의 보수 비트들(2M4[6:0])을 출력시킨다. 이하에서 제2 멀티플렉서(134C)로부터의 출력 데이터를 제2 중간 가수 비트들(MM2[6:0])로 지칭하기로 한다.
시프트 회로(130S)는, 제3 멀티플렉서(131S), 제4 멀티플렉서(132S), 및 시프터(shifter)(133S)를 포함한다. 제3 멀티플렉서(131S)는, 제1 입력 단자로 2의 보수 처리 회로(130C)의 제1 멀티플렉서(133C)로부터 출력되는 제1 중간 가수 비트들(MM1[6:0])을 입력받는다. 제3 멀티플렉서(131S)는, 제2 입력 단자로 2의 보수 처리 회로(130C)의 제2 멀티플렉서(134C)로부터 출력되는 제2 중간 가수 비트들(MM2[6:0])을 입력받는다. 제3 멀티플렉서(131S)는, 선택 단자로 디퍼런스 회로(130D)로부터 전송되는 선택 신호(SEL)를 입력받는다. 제3 멀티플렉서(131S)는, 선택 신호(SEL)에 따라서 제1 중간 가수 비트들(MM1[6:0]) 또는 제2 중간 가수 비트들(MM2[6:0])을 출력시킨다. 일 예에서 선택 신호(SEL)가 제1 로직 레벨, 예컨대 로직 로우 신호인 경우, 제3 멀티플렉서(131S)는, 제1 중간 가수 비트들(MM1[6:0])을 출력시킨다. 반면에 선택 신호(SEL)가 제2 로직 레벨, 예컨대 로직 하이 신호인 경우, 제3 멀티플렉서(131S)는, 제2 중간 가수 비트들(MM2[6:0])을 출력시킨다. 이하에서 제3 멀티플렉서(131S)로부터의 출력 데이터를 제3 중간 가수 비트들(MM3[6:0])로 지칭하기로 한다.
제4 멀티플렉서(132S)는, 제1 입력 단자로 2의 보수 처리 회로(130C)의 제2 멀티플렉서(134C)로부터 출력되는 제2 중간 가수 비트들(MM2[6:0])을 입력받는다. 제4 멀티플렉서(132S)는, 제2 입력 단자로 2의 보수 처리 회로(130C)의 제1 멀티플렉서(133C)로부터 출력되는 제1 중간 가수 비트들(MM1[6:0])을 입력받는다. 제4 멀티플렉서(132S)는, 선택 단자로 디퍼런스 회로(130D)로부터 전송되는 선택 신호(SEL)를 입력받는다. 제4 멀티플렉서(132S)는, 선택 신호(SEL)에 따라서 제2 중간 가수 비트들(MM2[6:0]) 또는 제1 중간 가수 비트들(MM1[6:0])을 출력시킨다. 일 예에서 선택 신호(SEL)가 제1 로직 레벨, 예컨대 로직 로우 신호인 경우, 제4 멀티플렉서(132S)는, 제2 중간 가수 비트들(MM2[6:0])을 출력시킨다. 반면에 선택 신호(SEL)가 제2 로직 레벨, 예컨대 로직 하이 신호인 경우, 제4 멀티플렉서(132S)는, 제1 중간 가수 비트들(MM1[6:0])을 출력시킨다. 이하에서 제4 멀티플렉서(132S)로부터의 출력 데이터를 제4 중간 가수 비트들(MM4[6:0])로 지칭하기로 한다.
시프터(133S)는, 가산기(130)로 입력되는 곱셈 데이터(AB[15:0])의 제3 지수 비트들(E3[7:0])과 피드백 데이터(DF[15:0])의 제4 지수 비트들(E4[7:0])을 일치시키기 위해, 곱셈 데이터(AB[15:0]) 및 피드백 데이터(DF[15:0]) 중 어느 한 데이터의 가수 비트들에 대한 시프팅 동작을 수행한다. 구체적으로 시프터(133S)는, 제4 멀티플렉서(132S)로부터 출력되는 제4 중간 가수 비트들(MM4[6:0])을 전송받는다. 제4 중간 가수 비트들(MM4[6:0])은, 곱셈 데이터(AB[15:0])의 제3 가수 비트들(M3[6:0])(또는 제3 2의 보수 비트들(2M3[6:0]))이거나, 또는 피드백 데이터(DF[15:0])의 제4 가수 비트들(M4[6:0])(또는 제4 2의 보수 비트들(2M4[6:0]))일 수 있다. 시프터(133S)는, 디퍼런스 회로(130D)로부터 출력되는 지수 차이 비트들(DE)을 전송받는다. 시프터(133S)는, 지수 차이 비트들(DE)에 해당하는 비트들만큼 제4 중간 가수 비트들(MM4[6:0])을 시프팅시켜 시프트된 가수 비트들(SM[6:0])을 생성한다.
시프터(133S)는, 왼쪽 방향으로의 시프팅 동작을 수행하도록 구성된다. 그러나 이는 단지 하나의 예로서, 시프터(133S)가 오른쪽 방향으로의 시프팅 동작을 수행하도록 구성될 수도 있다. 본 예에서와 같이, 시프터(133S)가 왼쪽 시프팅 동작을 수행하는 경우, 시프터(133S)에는 제4 중간 가수 비트들(MM4[6:0])로서 상대적으로 작은 지수 비트들을 갖는 데이터의 가수 비트들이 전송된다. 다른 예에서 시프터(133S)가 오른쪽 시프팅 동작을 수행하도록 구성되는 경우, 시프터(133S)에는 제4 중간 가수 비트들(MM4[6:0])로서 상대적으로 큰 지수 비트들을 갖는 데이터의 가수 비트들이 전송된다. 시프터(133S)로 전송되는 가수 비트들의 선택은, 디퍼런스 회로(130D)로부터 출력되어 시프터 회로(130S)의 제3 멀티플렉서(131S) 및 제4 멀티플렉서(132S)의 선택 단자들로 전송되는 선택 신호(SEL)에 의해 이루어질 수 있다.
가산 회로(130A)는, 정수 가산기(131A), 제3 2의 보수 처리기(132A), 및 제5 멀티플렉서(133A)를 포함한다. 정수 가산기(131A)는, 시프터 회로(130S)의 제3 멀티플렉서(131S)로부터 출력되는 제3 중간 가수 비트들(MM3[6:0]) 및 시프터 회로(130S)의 시프터(133S)로부터 출력되는 시프트된 가수 비트들(SM[6:0])을 입력받는다. 또한 정수 가산기(131A)는, 제3 부호 비트(S3[0]) 및 제4 부호 비트(S4[0])를 입력받는다. 정수 가산기(131A)는, 제3 부호 비트(S3[0]) 및 제4 부호 비트(S4[0])와, 제3 중간 가수 비트들(MM3[6:0]) 및 시프트된 가수 비트들(SM[6:0])에 대한 가산 연산 결과를 이용하여 MAC 데이터(MAC[15:0])의 부호 비트(MAC_S[0])를 생성한다. 그리고 정수 가산기(131A)는, 제3 중간 가수 비트들(MM3[6:0]) 및 시프트된 가수 비트들(SM[6:0])에 대한 가산 연산을 수행하여 가산 가수 비트들(AM[6:0])을 생성한다. 일 예에서 제3 부호 비트(S3[0]) 및 제4 부호 비트(S4[0])가 모두 양수를 나타내는 "0"인 경우, 정수 가산기(131A)는, 부호 비트(MAC_S[0])로서 "0"을 출력한다. 제3 부호 비트(S3[0]) 및 제4 부호 비트(S4[0])가 모두 음수를 나타내는 "1"인 경우, 정수 가산기(131A)는, 부호 비트(MAC_S[0])로서 "1"을 출력한다. 제3 부호 비트(S3[0]) 및 제4 부호 비트(S4[0]) 중 하나는 "0"이고, 나머지가 "1"인 경우, 정수 가산기(131A)는, 제3 중간 가수 비트들(MM3[6:0]) 및 시프트된 가수 비트들(SM[6:0])에 대한 가산 연산 결과에 자리 올림이 발생되면 부호 비트(MAC_S[0])로서 "0"을 출력하고, 자리 올림이 발생되지 않으면 부호 비트(MAC_S[0])로서 "1"을 출력한다. 정수 가산기(131A)는, 제1 출력 단자 및 제2 출력 단자를 통해 각각 MAC 데이터(MAC[15:0])의 부호 비트(MAC_S[0]) 및 가산 가수 비트들(AM[6:0])을 출력시킨다.
제3 2의 보수 처리기(132A)는, 정수 가산기(131A)의 제2 출력 단자를 통해 출력되는 가산 가수 비트들(AM[6:0])을 전송받는다. 제3 2의 보수 처리기(132A)는, 가산 가수 비트들(AM[6:0])에 대한 2의 보수 처리를 수행하여 2의 보수 가산 비트들(2AM[6:0])을 출력시킨다. 제5 멀티플렉서(133A)는, 제1 입력 단자로 정수 가산기(131A)의 제2 출력 단자를 통해 출력되는 가산 가수 비트들(AM[6:0])을 입력받는다. 제5 멀티플렉서(133A)는, 제2 입력 단자로 제3 2의 보수 처리기(132A)로부터 출력되는 2의 보수 가산 비트들(2AM[6:0])을 입력받는다. 제5 멀티플렉서(133A)는, 선택 단자로 정수 가산기(131A)의 제1 출력 단자를 통해 출력되는 MAC 데이터(MAC[15:0])의 부호 비트(MAC_S[0])를 입력받는다. 제5 멀티플렉서(133A)는, 부호 비트(MAC_S[0])에 따라서 제1 입력 단자로 입력되는 가산 가수 비트들(AM[6:0]) 또는 제2 입력 단자로 입력되는 2의 보수 가산 비트들(2AM[6:0])을 출력 단자를 통해 출력시킨다. 일 예에서 부호 비트(MAC_S[0])가 양수(예컨대 "0")인 경우, 제5 멀티플렉서(133A)는 가산 가수 비트들(AM[6:0])을 출력시킨다. 반면에 부호 비트(MAC_S[0])가 음수(예컨대 "1")인 경우, 제5 멀티플렉서(133A)는 2의 보수 가산 비트들(2AM[6:0])을 출력시킨다. 이하에서 제5 멀티플렉서(133A)로부터의 출력 데이터를 제5 중간 가수 비트들(MM5[6:0])로 지칭하기로 한다.
정규화기(130N)는, 제1 입력 단자, 제2 입력 단자, 제1 출력 단자, 및 제2 출력 단자를 갖는다. 정규화기(130N)는, 제1 입력 단자로 디퍼런스 회로(130D)로부터 출력되는 최대 지수 비트들(E_MAX)을 전송받는다. 정규화기(130N)는, 제2 입력 단자로 제5 멀티플렉서(133A)로부터 출력되는 제5 중간 가수 비트들(MM5[6:0])을 입력받는다. 정규화기(130N)는, 제1 입력 단자로 전송되는 최대 지수 비트들(E_MAX)을 MAC 데이터(MAC[15:0])의 지수 비트들(MAC_E[7:0])로서 제1 출력 단자를 통해 출력시킨다. 또한 정규화기(130N)는, 제2 입력 단자로 전송되는 제5 중간 가수 비트들(MM5[6:0])에 대한 라운딩 처리를 수행하여 MAC 데이터(MAC[15:0])의 가수 비트들(MAC_M[6:0])을 생성하여 제2 출력 단자를 통해 출력시킨다.
도 4는 도 1의 다중 연산 회로(100)의 제1 연산 모드에서의 MAC 연산에 의해 수행되는 매트릭스-벡터 곱셈의 일 예를 나타내 보인 도면이다. 도 4를 참조하면, 다중 연산 회로(100)는, 웨이트 매트릭스(weight matrix)(210)와 벡터 매트릭스(vector matrix)(220)에 대한 매트릭스-벡터 곱셈을 수행하여 결과 매트릭스(result matrix)(230)를 생성하는 MAC 연산 동작을 수행할 수 있다. 웨이트 매트릭스(210)는 M개의 행들(RW(1), RW(2), …, RW(M))들 및 N개의 열들(CW(1), CW(2), CW(3), …, CW(N))을 갖는다. 여기서 M 및 N은, 2 이상의 자연수를 의미한다. 벡터 매트릭스(220)는, N개의 행들(RV(1), RV(2), …, RV(N)) 및 1개의 열(CV(1))을 갖는다. 결과 매트릭스(230)는, M개의 행들(RR(1), RR(2), …, RR(M)) 및 1개의 열(CR(1))을 갖는다.
웨이트 매트릭스(210)는, 웨이트 데이터들을 구성하는 (MㅧN)개의 웨이트 엘리먼트들(W(1.1)-W(1.N), …, W(M.1)-W(M.N))을 갖는다. 벡터 매트릭스(220)는, 벡터 데이터들을 구성하는 N개의 벡터 엘리먼트들(V(1), V(2), …, V(N))을 갖는다. 결과 매트릭스(230)는, MAC 결과 데이터들을 구성하는 M개의 결과 엘리먼트들(MAC_RST(1), MAC_RST(2), …, MAC_RST(M))을 갖는다. 이하에서 용어 "웨이트 데이터"는 용어 "웨이트 엘리먼트"와 동일한 의미로 사용하고, 용어 "벡터 데이터"는 용어 "벡터 엘리먼트"와 동일한 의미로 사용하며, 그리고 용어 "MAC 결과 데이터"는, 용어 "결과 엘리먼트"와 동일한 의미로 사용하기로 한다. 이하에서 웨이트 데이터들 및 벡터 데이터들은, 16비트의 부동 소수점 형식, 예컨대 16비트의 브레인 부동 소수점(BF16) 형식을 갖는 것으로 전제하기로 한다..
결과 매트릭스(230)의 제1 행(RR(1))의 MAC 결과 데이터(MAC_RST(1))는, 웨이트 매트릭스(210)의 제1 행(RW(1))의 웨이트 데이터들(W(1.1)-W(1.N))과 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 매트릭스-벡터 곱셈 연산으로 생성된다. 결과 매트릭스(230)의 제2 행(RR(2))의 MAC 결과 데이터(MAC_RST(2))는, 웨이트 매트릭스(210)의 제2 행(RW(2))의 웨이트 데이터들(W(2.1)-W(2.N))과 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 매트릭스-벡터 곱셈 연산으로 생성된다. 마찬가지로 결과 매트릭스(230)의 제M 행(RR(M))의 MAC 결과 데이터(MAC_RST(M))는, 웨이트 매트릭스(210)의 제M 행(RW(M))의 웨이트 데이터들(W(M.1)-W(M.N))과 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 매트릭스-벡터 곱셈 연산으로 생성된다.
도 5는 도 1의 다중 연산 회로(100)에 의해 도 4의 매트릭스-벡터 곱셈이 수행되는 과정의 일 예를 설명하기 위해 나타내 보인 도면이다. 다중 연산 회로(100)는, 웨이트 매트릭스(210)의 웨이트 데이트들(W(1.1)-W(1.N), …, W(M.1)-W(M.N)) 중 어느 한 행의 웨이트 데이터들과 벡터 데이터들에 대한 MAC 연산을 수행할 수 있다. 예컨대 도 5에 나타낸 바와 같이, 다중 연산 회로(100)는, 웨이트 매트릭스(210)의 제1 행(RW(1))의 웨이트 데이터들(W(1.1)-W(1.N)) 및 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 MAC 연산을 수행하여 결과 매트릭스(230)의 제1 행(RR(1))의 MAC 결과 데이터(MAC_RST(1))를 생성할 수 있다.
구체적으로 다중 연산 회로(100)는, 웨이트 매트릭스(210)의 제1 행(RW(1)) 및 제1 열(CW(1))의 웨이트 데이터(W(1.1))와 벡터 매트릭스(220)의 제1 행(RV(1))의 벡터 데이터(V(1))에 대한 첫번째 MAC 연산(1st MAC operation)을 수행하여 첫번째 MAC 데이터(MAC1[15:0])를 생성한다. 다음에 다중 연산 회로(100)는, 웨이트 매트릭스(210)의 제1 행(RW(1)) 및 제2 열(CW(2))의 웨이트 데이터(W(1.2))와 벡터 매트릭스(220)의 제2 행(RV(2))의 벡터 데이터(V(2))에 대한 두번째 MAC 연산(2nd MAC operation)을 수행하여 두번째 MAC 데이터(MAC2[15:0])를 생성한다. 두번째 MAC 연산은, 웨이트 데이터(W(1.2)) 및 벡터 데이터(V(2))에 대한 곱셈 연산과, 곱셈 연산 결과 생성되는 데이터에 첫번째 MAC 데이터(MAC1[15:0])를 누적 가산시키는 연산으로 이루어진다.
계속해서 다중 연산 회로(100)는, 웨이트 매트릭스(210)의 제1 행(RW(1)) 및 제3 열(CW(3))의 웨이트 데이터(W(1.3))와 벡터 매트릭스(220)의 제3 행(RV(3))의 벡터 데이터(V(3))에 대한 세번째 MAC 연산(3rd MAC operation)을 수행하여 tp번째 MAC 데이터(MAC3[15:0])를 생성한다. 세번째 MAC 연산은, 웨이트 데이터(W(1.3)) 및 벡터 데이터(V(3))에 대한 곱셈 연산과, 곱셈 연산 결과 생성되는 데이터에 두번째 MAC 데이터(MAC2[15:0])를 누적 가산시키는 연산으로 이루어진다. 이와 같은 MAC 연산은, 웨이트 매트릭스(210)의 제N 열(CW(N))에 이르기까지 순차적으로 수행된다. 마지막 N번째 MAC 연산은, 웨이트 데이터(W(1.N)) 및 벡터 데이터(V(N))에 대한 곱셈 연산과, 곱셈 연산 결과 생성되는 데이터에 (N-1)번째 MAC 데이터를 누적 가산시키는 연산으로 이루어진다. N번째 MAC 연산에 의해 생성되는 N번째 MAC 데이터(MAC"N"[15:0])는, 결과 매트릭스의 제1 행(RR(1))의 MAC 결과 데이터(MAC_RST(1))가 된다.
도 6은 도 1의 다중 연산 회로(100)의 도 5의 첫번째 MAC 연산 동작(1st MAC operation)을 설명하기 위해 나타내 보인 도면이다. 도 6에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 5를 참조하면, 다중 연산 회로(100)가 제1 연산 모드에서의 MAC 연산을 수행하기 위해, 로직 하이(HI)의 제1 선택 신호(SS1), 로직 하이(HI)의 제2 선택 신호(SS2), 및 로직 로우(LO)의 제3 선택 신호(SS3)가 순차적으로 다중 연산 회로(100)로 전송된다. 업데이트 신호(UPDATE)는, 제2 선택 신호(SS2)가 전송되기 전의 시점과, 제3 선택 신호(SS3)가 전송된 후의 시점에 로직 로우(LO)에서 로직 하이(HI)로 변경된다. 곱셈기(110)의 제1 입력 단자에는, 웨이트 매트릭스(도 4의 210)의 제1 행(RW(1)) 및 제1 열(CW(1))의 웨이트 데이터(W(1.1)[15:0])가 전송된다. 곱셈기(110)의 제2 입력 단자에는, 벡터 매트릭스(도 4의 220)의 제1 행(RV(1))의 벡터 데이터(V(1)[15:0])가 전송된다. 도 2를 참조하여 설명한 바와 같이, 곱셈기(110)는, 웨이트 데이터(W(1.1)[15:0]) 및 벡터 데이터(V(1)[15:0])에 대한 곱셈 연산 결과 생성되는 첫번째 곱셈 데이터(WV1[15:0])를 출력 단자를 통해 출력시킨다.
로직 하이(HI)의 제1 선택 신호(SS1)를 전송받은 제1 선택기(121)는, 제2 입력 단자(IN12)를 통해 전송되는 첫번째 곱셈 데이터(WV1[15:0])를 출력 단자(OUT1)를 통해 출력시킨다. 제1 선택기(121)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])는 제2 선택기(122)의 제2 입력 단자(IN22)로 전송된다. 도면에 나타내지는 않았지만, 제1 선택기(121)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])는 제4 선택기(124)의 제1 입력 단자(IN41)로도 전송된다. 업데이트 신호(UPDATE)가 로직 로우(LO)에서 로직 하이(HI)로 변경되면, 래치 회로(140)는 래치된 데이터를 첫번째 피드백 데이터(DF1[15:0])로서 제3 선택기(123)의 제2 입력 단자(IN32)로 전송한다. 래치 회로(140)는 초기화된 상태, 즉 "0"이 래치된 상태이므로, 첫번째 피드백 데이터(DF1[15:0])는 "0"의 값을 갖는다. 래치 회로(140)의 출력 동작이 이루어지면, 업데이트 신호(UPDATE)는 로직 하이(HI)에서 로직 로우(LO)로 변경된다.
로직 하이(HI)의 제2 선택 신호(SS2)를 전송받은 제2 선택기(122)는, 제1 선택기(121)로부터 제2 입력 단자(IN22)로 전송되는 첫번째 곱셈 데이터(WV1[15:0])를 출력 단자(OUT2)로 출력한다. 제2 선택기(122)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])는 가산기(130)의 제1 입력 단자로 전송된다. 로직 하이(HI)의 제2 선택 신호(SS2)를 전송받은 제3 선택기(123)는, 래치 회로(140)로부터 제2 입력 단자(IN32)로 전송되는 첫번째 피드백 데이터(DF1[15:0])를 출력 단자(OUT3)로 출력한다. 제3 선택기(123)로부터 출력되는 첫번째 피드백 데이터(DF1[15:0])는 가산기(130)의 제2 입력 단자로 전송된다.
가산기(130)는, 제1 입력 단자 및 제2 입력 단자로 각각 전송되는 첫번째 곱셈 데이터(WV1[15:0]) 및 첫번째 피드백 데이터(DF1[15:0])에 대한 가산 연산을 수행하여 첫번째 MAC 데이터(MAC1[15:0])를 생성한다. 첫번째 피드백 데이터(DF1[15:0])가 "0"의 값을 가지므로, 가산기(130)로부터 생성되는 첫번째 MAC 데이터(MAC1[15:0])는, 곱셈기(110)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])와 동일한 값을 갖는다. 가산기(130)에서 생성된 첫번째 MAC 데이터(MAC1[15:0])는, 가산기(130)의 출력 단자를 통해 제4 선택기(124)의 제2 입력 단자(IN42)로 전송된다. 또한 가산기(130)에서 생성된 첫번째 MAC 데이터(MAC1[15:0])는, 제1 출력 라인(161)을 통해 중간 결과 데이터(IY[15:0])로 출력된다. 로직 로우(LO)의 제3 선택 신호(SS3)는 인버터(150)에 의해 로직 하이(HI)로 로직 레벨이 변경되어 제4 선택기(124)로 전송된다. 로직 하이 신호(HI)를 전송받은 제4 선택기(124)는, 제2 입력 단자(IN12)를 통해 가산기(130)로부터 전송되는 첫번째 MAC 데이터(MAC1[15:0])를 출력 단자(OUT4)를 통해 출력시킨다. 제4 선택기(124)로부터 출력되는 첫번째 MAC 데이터(MAC1[15:0])는 래치 회로(140)의 입력 단자로 전송된다.
업데이트 신호(UPDATE)가 로직 로우(LO)에서 로직 하이(HI)로 변경되면, 래치 회로(140)는, 제4 선택기(124)로부터 입력 단자로 전송되는 첫번째 MAC 데이터(MAC1[15:0])를 래치한다. 그리고 래치 회로(140)는, 출력 단자(Q)를 통해 래치한 첫번째 MAC 데이터(MAC1[15:0])를 출력시킨다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 첫번째 MAC 데이터(MAC1[15:0])는, 다음의 두번째 MAC 연산(2nd MAC operation)시 피드백 데이터로서 제3 선택기(123)의 제2 입력 단자(IN32)로 전송될 수 있다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 첫번째 MAC 데이터(DA1[15:0])는, 제2 출력 라인(162)을 통해 다중 연산 회로(100)로부터 출력될 수도 있다. 래치 회로(140)가 첫번째 MAC 데이터(MAC1[15:0])를 출력시키면, 업데이트 신호(UPDATE)는 로직 하이(HI)에서 로직 로우(LO)로 변경된다.
도 7은 도 1의 다중 연산 회로(100)의 도 5의 두번째 MAC 연산 동작(2nd MAC operation)을 설명하기 위해 나타내 보인 도면이다. 도 7에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 7을 참조하면, 두번째 MAC 연산 동작 수행을 위해, 로직 하이(HI)의 제1 선택 신호(SS1), 로직 하이(HI)의 제2 선택 신호(SS2), 및 로직 로우(LO)의 제3 선택 신호(SS3)가 순차적으로 다중 연산 회로(100)로 전송된다. 업데이트 신호(UPDATE)는, 제2 선택 신호(SS2)가 전송되기 전의 시점과, 제3 선택 신호(SS3)가 전송된 후의 시점에 로직 로우(LO)에서 로직 하이(HI)로 변경된다. 곱셈기(110)의 제1 입력 단자에는, 웨이트 매트릭스(도 4의 210)의 제1 행(RW(1)) 및 제2 열(CW(2))의 웨이트 데이터(W(1.2)[15:0])가 전송된다. 곱셈기(110)의 제2 입력 단자에는, 벡터 매트릭스(도 4의 220)의 제2 행(RV(2))의 벡터 데이터(V(2)[15:0])가 전송된다. 곱셈기(110)는, 웨이트 데이터(W(1.2)[15:0]) 및 벡터 데이터(V(2)[15:0])에 대한 곱셈 연산 결과 생성되는 두번째 곱셈 데이터(WV2[15:0])를 출력 단자를 통해 출력시킨다.
로직 하이(HI)의 제1 선택 신호(SS1)를 선택 단자(S1)로 전송받은 제1 선택기(121)는, 제2 입력 단자(IN12)를 통해 전송되는 두번째 곱셈 데이터(WV2[15:0])를 출력 단자(OUT1)를 통해 출력시킨다. 제1 선택기(121)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])는 제2 선택기(122)의 제2 입력 단자(IN22)로 전송된다. 래치 회로(140)의 클럭 단자로 전송되는 업데이트 신호(UPDATE)가 로직 로우(LO)에서 로직 하이(HI)로 변경되면, 래치 회로(140)는 래치된 데이터를 두번째 피드백 데이터(DF2[15:0])로서 제3 선택기(123)의 제2 입력 단자(IN32)로 전송한다. 두번째 피드백 데이터(DF2[15:0])는, 도 5 및 도 6을 참조하여 설명한 첫번째 MAC 연산에서 생성되어 래치 회로(140)에 래치되어 있던 첫번째 MAC 데이터(MAC1[15:0])이다.
로직 하이(HI)의 제2 선택 신호(SS2)를 선택 단자(S2)로 전송받은 제2 선택기(122)는, 제1 선택기(121)로부터 제2 선택기(122)의 제2 입력 단자(IN22)로 전송되는 두번째 곱셈 데이터(WV2[15:0])를 출력 단자(OUT2)로 출력한다. 제2 선택기(122)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])는 가산기(130)의 제1 입력 단자로 전송된다. 로직 하이(HI)의 제2 선택 신호(SS2)를 선택 단자(S3)로 전송받은 제3 선택기(123)는, 래치 회로(140)로부터 제2 입력 단자(IN32)로 전송되는 두번째 피드백 데이터(DF2[15:0]), 즉 첫번째 MAC 데이터(MAC1[15:0])를 출력 단자(OUT3)로 출력한다. 제3 선택기(123)로부터 출력되는 첫번째 MAC 데이터(MAC1[15:0])는 가산기(130)의 제2 입력 단자로 전송된다.
가산기(130)는, 제1 입력 단자 및 제2 입력 단자로 각각 전송되는 두번째 곱셈 데이터(WV2[15:0]) 및 첫번째 MAC 데이터(MAC1[15:0])에 대한 가산 연산을 수행하여 두번째 MAC 데이터(MAC2[15:0])를 생성한다. 가산기(130)로부터 생성되는 두번째 MAC 데이터MAC2[15:0])는, 도 5를 참조하여 설명한 바와 같이, 곱셈기(110)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])에 첫번째 MAC 데이터(MAC1[15:0])가 누적 가산된 값을 갖는다. 가산기(130)에서 생성된 두번째 MAC 데이터(MAC2[15:0])는, 가산기(130)의 출력 단자를 통해 제4 선택기(124)의 제2 입력 단자(IN42)로 전송된다. 또한 가산기(130)에서 생성된 두번째 MAC 데이터(MAC2[15:0])는, 제1 출력 라인(161)을 통해 중간 결과 데이터(IY[15:0])로 출력될 수 있다. 로직 로우(LO)의 제3 선택 신호(SS3)는 인버터(150)에 의해 로직 하이(HI)로 로직 레벨이 변경되어 제4 선택기(124)의 선택 단자(S4)로 전송된다. 로직 하이 신호(HI)를 전송받은 제4 선택기(124)는, 제2 입력 단자(IN12)를 통해 가산기(130)로부터 전송되는 두번째 MAC 데이터(MAC2[15:0])를 출력 단자(OUT4)를 통해 출력시킨다. 제4 선택기(124)로부터 출력되는 두번째 MAC 데이터(MAC2[15:0])는 래치 회로(140)의 입력 단자로 전송된다.
래치 회로(140)는, 업데이트 신호(UPDATE)가 로직 로우(LO)에서 로직 하이(HI)로 변경되는 상승 에지에 동기되어, 제4 선택기(124)로부터 전송되는 두번째 MAC 데이터(MAC2[15:0])를 래치한다. 그리고 래치 회로(140)는, 래치한 두번째 MAC 데이터(MAC2[15:0])를 출력 단자(Q)를 통해 출력시킨다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 두번째 MAC 데이터(MAC2[15:0])는, 다음의 세번째 MAC 연산(3rd MAC operation)시 피드백 데이터로서 제3 선택기(123)의 제2 입력 단자(IN32)로 전송되될 수 있다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 두번째 MAC 데이터(MAC2[15:0])는, 제2 출력 라인(162)을 통해 다중 연산 회로(100)로부터 출력될 수도 있다. 래치 회로(140)가 두번째 MAC 데이터(MAC2[15:0])를 출력시키면, 업데이트 신호(UPDATE)는 로직 하이호(HI)에서 로직 로우(LO)로 변경된다.
도 8은 도 1의 다중 연산 회로(100)의 제2 연산 모드에서의 EW 곱셈 연산에 의해 수행되는 매트릭스-스칼라 곱셈의 일 예를 나타내 보인 도면이다. 도 8을 참조하면, 다중 연산 회로(100)는, 웨이트 매트릭스(310)와 상수(C)에 대한 매트릭스-스칼라 곱셈을 수행하여 결과 매트릭스(330)를 생성하는 EW 곱셈 연산 동작을 수행할 수 있다. 본 예에서의 웨이트 매트릭스(310)는, 도 5를 참조하여 설명한 웨이트 매트릭스(210)와 동일한 것으로 전제하기로 한다. 이에 따라 웨이트 매트릭스(310)는, 모두 (MㅧN)개의 웨이트 데이터들(W(1.1)-W(1.N), …, W(M.1)-W(M.N))을 갖는다. 반면에 상수(C)는 하나의 데이터로 구성된다. 결과 매트릭스(330)는, 다중 연산 회로(100)의 EW 곱셈 연산 동작에 의해 생성되는 EWM 결과 데이터(EWM)를 엘리먼트로 갖는다. 이에 따라 결과 매트리스(330)는, 웨이트 매트릭스(310)와 동일한 크기를 갖는다. 즉 결과 매트릭스(330)는 M개의 행들(R(1)-R(M)) 및 N개의 열들(C(1)-C(N))로 구성된다. 결과 매트릭스(330)의 엘리먼트들, 즉 EWM 결과 데이터들(EWMs) 각각은, 웨이트 매트릭스(310)의 웨이트 데이터들(W(1.1)-W(1.N), …, W(M.1)-W(M.N)) 각각에 상수 데이터(C)가 곱해진 값을 갖는다. 이와 같이 다중 연산 회로(100)에 의해 수행되는 제2 연산 모드에서의 EW 곱셈 연산은, 곱셈 연산만 요구될 뿐, MAC 연산과 같이 누적 가산 연산은 요구되지 않는다.
도 9는 도 1의 다중 연산 회로(100)의 도 8의 EW 곱셈 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 9에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 9를 참조하면, 다중 연산 회로(100)가 제2 연산 모드에서의 EW 곱셈 연산을 수행하기 위해, 제1 선택 신호(SS1) 및 제3 선택 신호(SS3)로 로직 하이 신호(HI)가 각각 제1 선택기(121) 및 제4 선택기(124)로 전송된다. 제2 선택 신호(SS2)로 비활성화(inactive)되며, 이에 따라 제2 선택기(122) 및 제3 선택기(123)는 동작하지 않는다. 업데이트 신호(UPDATE)는, 제3 선택 신호(SS3)가 전송되는 시점으로부터 일정 시간 지연된 시점, 예컨대 제4 선택기(124)로부터의 출력 데이터가 래치 회로(140)의 입력 단자에 전송된 후의 시점에 로직 로우 신호(LO)에서 로직 하이 신호(HI)로 변경된다. 곱셈기(110)의 제1 입력 단자에는, 웨이트 매트릭스(도 8의 310)의 제1 행(R(1)) 및 제1 열(C(1))의 웨이트 데이터(W(1.1)[15:0])가 전송된다. 곱셈기(110)의 제2 입력 단자에는, 상수 데이터(C[15:0])가 전송된다. 상수 데이터(C[15:0])는, 도 8의 상수(C)가 웨이트 데이터와 동일한 형식, 예컨대 BF16 형식으로 변경되어 구성된다. 곱셈기(110)는, 웨이트 데이터(W(1.1)[15:0]) 및 상수 데이터(C[15:0])에 대한 곱셈 연산 결과 생성되는 곱셈 데이터(WC1[15:0])를 출력 단자를 통해 출력시킨다.
제1 선택 신호(SS1)로서 로직 하이 신호(HI)를 전송받은 제1 선택기(121)는, 제2 입력 단자(IN12)를 통해 전송되는 곱셈 데이터(WC1[15:0])를 출력 단자(OUT1)를 통해 출력시킨다. 제1 선택기(121)로부터 출력되는 곱셈 데이터(WC1[15:0])는, 제2 선택기(122)의 제2 입력 단자(IN22) 및 제4 선택기(124)의 제1 입력 단자(IN41)로 전송된다. 제2 선택 신호(SS2)가 비활성화됨에 따라, 제2 선택기(122) 및 제3 선택기(123)는 동작하지 않으며, 그에 따라 가산기(130) 또한 동작하지 않는다. 제3 선택 신호(SS3)인 로직 하이 신호(HI)는, 인버터(150)에 의해 로직 로우 신호(LO)로 로직 레벨이 변경되어 제4 선택기(124)의 선택 단자(S4)로 전송된다. 선택 신호로서 로직 로우 신호(LO)를 전송받은 제4 선택기(124)는, 제1 선택기(121)의 출력 단자(OUT1)로부터 제1 입력 단자(IN41)로 전송되는 곱셈 데이터(WC1[15:0])를 출력 단자(OUT4)를 통해 출력시킨다. 제4 선택기(124)로부터 출력되는 곱셈 데이터(WC1[15:0])는 래치 회로(140)의 입력 단자로 전송된다.
래치 회로(140)는, 업데이트 신호(UPDATE)가 로직 로우 신호(LO)에서 로직 하이 신호(HI)로 변경되는 상승 에지에 동기되어, 제4 선택기(124)로부터 전송되는 곱셈 데이터(WC1[15:0])를 래치한다. 그리고 래치 회로(140)는, 출력 단자(Q)를 통해 래치한 곱셈 데이터(WC1[15:0])를 출력시킨다. 래치 회로(140)가 첫번째 MAC 데이터(MAC1[15:0])를 출력시키면, 업데이트 신호(UPDATE)는 로직 하이 신호(HI)에서 로직 로우 신호(LO)로 변경된다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 곱셈 데이터(WC1[15:0])는, 제2 출력 라인(162)을 통해 다중 연산 회로(100)로부터 출력된다. 다중 연산 회로(100)로부터 출력되는 곱셈 데이터(WC1[15:0])는, 도 8의 결과 매트릭스(330)의 제1 행(R(1)) 및 제1 열(C(1))이 EWM 결과 데이터(EWM(1.1))를 구성한다.
도 10은 도 1의 다중 연산 회로(100)의 제2 연산 모드에서의 EW 가산 연산에 의해 수행되는 매트릭스 가산의 일 예를 나타내 보인 도면이다. 도 10을 참조하면, 다중 연산 회로(100)는, 제1 매트릭스(410)와 제2 매트릭스(420)에 대한 매트릭스 가산을 수행하여 결과 매트릭스(430)를 생성하는 EW 가산 연산 동작을 수행할 수 있다. 본 예에서의 제1 매트릭스(410) 및 제2 매트릭스(420)는, 도 5를 참조하여 설명한 웨이트 매트릭스(210)와 동일한 형식을 갖는 것으로 전제하기로 한다. 이에 따라 제1 매트릭스(410)는, 모두 (MㅧN)개의 제1 데이터들(A(1.1)-A(1.N), …, A(M.1)-A(M.N))을 갖는다. 제2 매트릭스(420)는, 모두 (MㅧN)개의 제2 데이터들(B(1.1)-B(1.N), …, B(M.1)-B(M.N))을 갖는다. 결과 매트릭스(430)는, 다중 연산 회로(100)의 EW 가산 연산 동작에 의해 생성되는 EWA 결과 데이터(EWA)를 엘리먼트로 갖는다. 이에 따라 결과 매트리스(430)는, 제1 매트릭스(410) 및 제2 매트릭스(420)와 동일한 크기를 갖는다. 즉 결과 매트릭스(430)는 M개의 행들(R(1)-R(M)) 및 N개의 열들(C(1)-C(N))로 구성된다. 결과 매트릭스(430)의 엘리먼트들, 즉 EWA 결과 데이터들(EWA(1.1)-EWA(1.N), …, EWA(M.1)-EWA(M.N)) 각각은, 제1 매트릭스(410)의 제1 데이터들(A(1.1)-A(1.N), …, A(M.1)-A(M.N)) 각각에 제2 매트릭스(420)의 제2 데이터들(B(1.1)-B(1.N), …, B(M.1)-B(M.N)) 각각이 더해진 값을 갖는다. 이와 같이 다중 연산 회로(100)에 의해 수행되는 제2 연산 모드에서의 EW 가산 연산은, 가산 연산만 요구될 뿐, MAC 연산과 같이 곱셈 연산 및 누적 가산 연산은 요구되지 않는다.
도 11은 도 1의 다중 연산 회로(100)의 도 10의 EW 가산 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 11에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 11을 참조하면, 다중 연산 회로(100)가 제2 연산 모드에서의 EW 가산 연산을 수행하기 위해, 제2 선택 신호(SS2)로 로직 로우 신호(LO)가 제2 선택기(122)의 선택 단자(S2) 및 제3 선택기(123)의 선택 단자(S3)로 전송된다. 그리고 제3 선택 신호(SS3)로 로직 로우 신호(LO)가 제4 선택기(124)로 전송된다. 제1 선택 신호(SS1)로 비활성화(inactive)되며, 이에 따라 제1 선택기(121)는 동작하지 않는다. 업데이트 신호(UPDATE)는, 제3 선택 신호(SS3)가 전송되는 시점으로부터 일정 시간 지연된 시점, 예컨대 제4 선택기(124)로부터의 출력 데이터가 래치 회로(140)의 입력 단자에 전송된 후의 시점에 로직 로우 신호(LO)에서 로직 하이 신호(HI)로 변경된다.
다중 연산 회로(100)로 입력되는 제1 매트릭스(도 10의 410)의 제1 행(R(1)) 및 제1 열(C(1))의 제1 데이터(A(1.1)[15:0])는, 제2 선택기(122)의 제1 입력 단자(IN21)로 전송된다. 다중 연산 회로(100)로 입력되는 제2 매트릭스(도 10의 420)의 제1 행(R(1)) 및 제1 열(C(1))의 제2 데이터(B(1.1)[15:0])는, 제3 선택기(123)의 제1 입력 단자(IN31)로 전송된다. 제2 선택 신호(SS2)로서 로직 로우 신호(LO)를 전송받은 제2 선택기(122)는, 제1 입력 단자(IN21)로 전송되는 제1 데이터(A(1.1)[15:0])를 출력 단자(OUT2)를 통해 출력시킨다. 제2 선택기(122)로부터 출력되는 제1 데이터(A(1.1)[15:0])는, 가산기(130)의 제1 입력 단자로 전송된다. 제2 선택 신호(SS2)로서 로직 로우 신호(LO)를 전송받은 제3 선택기(123)는, 제1 입력 단자(IN31)로 전송되는 제2 데이터(B(1.1)[15:0])를 출력 단자(OUT3)를 통해 출력시킨다. 제3 선택기(123)로부터 출력되는 제2 데이터(B(1.1)[15:0])는, 가산기(130)의 제2 입력 단자로 전송된다.
가산기(130)는, 제1 입력 단자 및 제2 입력 단자로 각각 전송되는 제1 데이터(A(1.1)[15:0]) 및 제2 데이터(B(1.1)[15:0])에 대한 가산 연산을 수행하여 가산 데이터(DA11[15:0])를 생성한다. 가산기(130)로부터 생성되는 가산 데이터(DA11[15:0])는, 가산기(130)의 출력 단자를 통해 제4 선택기(124)의 제2 입력 단자(IN42)로 전송된다. 또한 가산기(130)에서 생성된 가산 데이터(DA11[15:0])는, 제1 출력 라인(161)을 통해 중간 결과 데이터(IY[15:0])로 출력될 수 있다. 로직 하이 신호(HI)를 전송받은 제4 선택기(124)는, 제2 입력 단자(IN12)를 통해 가산기(130)로부터 전송되는 가산 데이터(DA11[15:0])를 출력 단자(OUT4)를 통해 출력시킨다. 제4 선택기(124)로부터 출력되는 가산 데이터(DA11[15:0])는 래치 회로(140)의 입력 단자로 전송된다.
래치 회로(140)는, 업데이트 신호(UPDATE)가 로직 로우 신호(LO)에서 로직 하이 신호(HI)로 변경되는 상승 에지에 동기되어, 제4 선택기(124)로부터 전송되는 가산 데이터(DA11[15:0])를 래치한다. 그리고 래치 회로(140)는, 출력 단자(Q)를 통해 래치한 가산 데이터(DA11[15:0])를 출력시킨다. 래치 회로(140)가 가산 데이터(DA11[15:0])를 출력시키면, 업데이트 신호(UPDATE)는 로직 하이 신호(HI)에서 로직 로우 신호(LO)로 변경된다. 래치 회로(140)의 출력 단자(Q)를 통해 출력되는 가산 데이터(DA11[15:0])는, 제2 출력 라인(162)을 통해 다중 연산 회로(100)로부터 출력된다. 다중 연산 회로(100)로부터 출력되는 가산 데이터(DA11[15:0])는, 도 11의 결과 매트릭스(430)의 제1 행(R(1)) 및 제1 열(C(1))이 EWA 결과 데이터(EWA(1.1))를 구성한다.
도 12는 도 1의 다중 연산 회로(100)의 제3 연산 모드에서의 누산 연산 동작을 설명하기 위해 나타내 보인 도면이다. 다중 연산 회로(100)가 제3 연산 모드에서의 누산 연산을 수행하기 위해서는, 래치 회로(140)가 데이터를 래치하고 있는 상태가 전제된다. 일 예에서 래치 회로(140)가 데이터를 래치하기 위해, 도 6 및 도 7을 참조하여 설명한 제1 연산 모드에서의 MAC 연산이 먼저 수행될 수 있다. 본 예에서는 다중 연산 회로(100)가 제1 연산 모드에서의 MAC 연산을 수행하여, 도 5의 웨이트 매트릭스(210)의 제1 행(RW(1)) 및 제2 열(CW(2))의 웨이트 데이터(W(1.2))와, 벡터 매트릭스(220)의 제2 행(RV(2))의 벡터 데이터(V(2))에 대한 곱셈 연산(W(1.2)ㅧV(2))이 수행된 경우를 예로 들기로 한다. 이에 따라 다중 연산 회로(100)의 래치 회로(140)는, 곱셈 연산(W(1.2)ㅧV(2)) 결과인 두번째 곱셈 데이터(WV2[15:0])가 래치되어 있는 상태가 된다. 그리고 다중 연산 회로(100)로 전송되는 제1 결과 데이터(IY-1)는, 제1 행(RW(1)) 및 제1 열(CW(1))의 웨이트 데이터(W(1.1)) 및 제1 행(RV(1))의 벡터 데이터(V(1))의 곱셈 연산(W(1.1)ㅧV(1)) 결과인 첫번째 곱셈 데이터(WV1[15:0])인 것으로 전제하기로 한다.
도 12를 참조하면, 다중 연산 회로(100)의 래치 회로(140)에 두번째 곱셈 데이터(WV2[15:0])가 래치된 상태에서, 다중 연산 회로(100)는, 제1 결과 데이터(IY-1)로서 첫번째 곱셈 데이터(WV1[15:0])를 입력받는다. 다중 연산 회로(100)는, 로직 로우(LO)의 제1 선택 신호(SS1)와, 로직 하이(HI)의 제2 선택 신호(SS2)를 전송받는다. 로직 로우(LO)의 제1 선택 신호(SS1)는, 제1 선택기(121)의 선택 단자(S1)로 전송된다. 로직 하이(HI)의 제2 선택 신호(SS2)는, 제2 선택기(122)의 선택 단자(S2) 및 제3 선택기(123)의 선택 단자(S3)로 전송된다. 다중 연산 회로(100)는, 제2 선택 신호(SS2)가 전송되는 시점 이전에 로직 로우 신호(LO)에서 로직 하이 신호(HI)로 로직 레벨이 변경되는 업데이트 신호(UPDATE)를 전송받는다. 업데이트 신호(UPDATE)는, 래치 회로(140)의 클럭 단자로 전송된다. 제3 선택 신호(SS3)는 비활성화(deactivated)되며, 이에 따라 제4 선택기(124)는 동작하지 않는다.
다중 연산 회로(100)로 전송되는 제1 결과 데이터(IY-1), 즉 첫번째 곱셈 데이터(WV1[15:0])는 제1 선택기(121)의 제1 입력 단자(IN11)로 전송된다. 제1 선택기(121)는, 로직 로우(LO)의 제1 선택 신호(SS1) 입력에 응답하여, 첫번째 곱셈 데이터(WV1[15:0])를 출력 단자(OUT1)로 출력시킨다. 제1 선택기(121)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])는, 제2 선택기(122)의 제2 입력 단자(IN22)로 전송된다. 래치 회로(140)는, 업데이트 신호(UPDATE)가 로직 로우(LO)에서 로직 하이(HI)로 변경되는 상승 에지에 동기되어, 래치 회로(140)에 래치되어 있는 두번째 곱셈 데이터(WV2[15:0])를 출력 단자(Q)를 통해 출력시킨다. 래치 회로(140)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])는 제3 선택기(123)의 제2 입력 단자(IN32)로 피드백되어 전송된다. 또한 래치 회로(140)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])는, 연산 결과 데이터(Y[15:0])로서 다중 연산 회로(100)로부터 출력된다.
제2 선택 신호(SS2)로서 로직 하이 신호(HI)가 제2 선택기(122)의 선택 단자(S2)로 전송되면, 제2 선택기(122)는 제2 입력 단자(IN22)로 전송되는 첫번째 곱셈 데이터(WV1[15:0])를 출력 단자(OUT2)를 통해 출력시킨다. 제2 선택기(122)로부터 출력되는 첫번째 곱셈 데이터(WV1[15:0])는 가산기(130)의 제1 입력 단자로 전송된다. 제2 선택 신호(SS2)로서 로직 하이 신호(HI)가 제3 선택기(123)의 선택 단자(S3)로 전송되면, 제3 선택기(123)는 래치 회로(140)로부터 제2 입력 단자(IN22)로 전송되는 두번째 곱셈 데이터(WV1[15:0])를 출력 단자(OUT2)를 통해 출력시킨다. 제3 선택기(123)로부터 출력되는 두번째 곱셈 데이터(WV2[15:0])는 가산기(130)의 제2 입력 단자로 전송된다.
가산기(130)는, 제1 입력 단자 및 제2 입력 단자로 각각 전송되는 첫번째 곱셈 데이터(WV1[15:0]) 및 두번째 곱셈 데이터(WV2[15:0])에 대한 가산 연산을 수행하여 두번째 MAC 데이터(MAC2[15:0])를 생성한다. 가산기(130)로부터 생성되는 두번째 MAC 데이터(MAC2[15:0])는, 제1 출력 라인(161)을 통해 제2 결과 데이터(IY[15:0])로 출력된다. 도 5를 참조하여 설명한 바와 같이, 다중 연산 회로(100)의 제1 출력 라인(161)을 통해 출력되는 두번째 MAC 데이터(MAC2[15:0])는, 두번째 MAC 연산 동작 결과 생성되는 데이터와 동일한 값을 갖는다.
도 13은 본 개시의 다른 예에 따른 다중 연산 회로(500)를 나타내 보인 도면이다. 도 13을 참조하면, 본 예에 따른 다중 연산 회로(500)는, 곱셈기(510), 제1 내지 제4 선택기들(521-524), 가산기(530), 래치 회로(540), 인버터(550), 및 정규화기(570)를 포함한다. 본 예에 따른 다중 연산 회로(500)의 제1 내지 제4 선택기들(521-524), 가산기(530), 래치 회로(540), 및 인버터(550)는, 도 1을 참조하여 설명한 다중 연산 회로(100)의 제1 내지 제4 선택기들(121-124), 가산기(130), 래치 회로(140), 및 인버터(150)와 동일하며, 이에 따라 중복되는 설명은 생략하기로 한다.
곱셈기(510)는, 정규화 처리를 수행하지 않는다는 점에서 도 2를 참조하여 설명한 곱셈기(110)와 차이점이 있다. 구체적으로 16비트 부동 소수점 형식의 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])가 다중 연산 회로(500)로 입력되면, 곱셈기(510)는 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])에 대한 곱셈 연산을 수행한다. 곱셈기(510)는, 곱셈 연산 결과인 곱셈 데이터(AB[24:0])를 생성하여 출력한다. 곱셈기(510)에서 정규화 처리가 수행되지 않으므로, 곱셈기(510)로부터 출력되는 곱셈 데이터(AB[24:0])는, 25비트 부동 소수점 형식을 갖는다. 따라서 곱셈 데이터(AB[24:0])와, 제3 선택기(523)의 제2 입력 단자(IN32)로 전송되는 피드백 데이터(DF[24:0])와, 가산기(530) 및 래치 회로(540)로부터 출력되는 MAC 데이터(MAC[24:0])는 모두 25비트 부동 소수점 형식을 갖는다. 25비트 MAC 데이터(MAC{24:0])는, 정규화기(570)에서 16비트 부동 소수점 형식으로 표준화 처리되어 16비트의 결과 데이터(Y[16:0])로 출력된다.
도 14는 도 13의 다중 연산 회로(500)의 곱셈기(510) 구성의 일 예를 나타내 보인 도면이다. 제1 입력 데이터(A[15:0]) 및 제2 입력 데이터(B[15:0])는 모두 16비트 브레인 부동 소수점(BF16) 형식인 것을 전제하기로 한다. 이에 따라 제1 입력 데이터(A[15:0])는, 1비트의 제1 부호 비트(S1[0])와, 8비트들의 제1 지수 비트들(E1[7:0])과, 그리고 7비트들의 제1 가수 비트들(M1[6:0])로 구성된다. 제2 입력 데이터(B[15:0])는, 1비트의 제2 부호 비트(S2[0])와, 8비트들의 제2 지수 비트들(E2[7:0])과, 그리고 7비트들의 제2 가수 비트들(M2[6:0])로 구성된다. 도 13을 참조하여 설명한 바와 같이, 곱셈기(110)로부터 출력되는 곱셈 데이터(AB[24:0])는, 25비트의 부동 소수점 형식을 갖는다. 이하에서는 곱셈 데이터(AB[24:0])가 1비트의 제5 부호 비트(S5[0])와, 8비트들의 제5 지수 비트들(E5[7:0])과, 그리고 16비트들의 제5 가수 비트들(M5[15:0])로 구성되는 것을 전제하기로 한다.
도 14를 참조하면, 곱셈기(510)는, 부호 처리 회로(510S)와, 지수 처리 회로(510E)와, 그리고 가수 처리 회로(510M)를 포함한다. 부호 처리 회로(510S)는, XOR 게이트(511)를 포함한다. XOR 게이트(511)는, 제1 입력 데이터(A[15:0])의 제1 부호 비트(S1[0])와 제2 입력 데이터(B[15:0])의 제2 부호 비트(S2[0])를 입력받는다. 제1 부호 비트(S1[0])와 제2 부호 비트(S2[0]) 중 어느 하나만 음수를 나타내는 "1"인 경우, XOR 게이트(511)는 음수를 나타내는 "1"을 출력한다. 반면에 제1 부호 비트(S1[0])와 제2 부호 비트(S2[0])가 모두 양수를 나타내는 "0"이거나, 또는 모두 음수를 나타내는 "1"인 경우, XOR 게이트(511)는 양수를 나타내는 "0"을 출력한다. XOR 게이트(511)로부터 출력되는 데이터는, 24비트의 곱셈 결과 데이터(AB[24:0])의 제5 부호 비트(S5[0])를 구성한다.
지수 처리 회로(510E)는, 제1 지수 가산기(512) 및 제2 지수 가산기(513)를 포함한다. 제1 지수 가산기(512)는, 제1 입력 데이터(A[15:0])의 제1 지수 비트(E1[7:0])와 제2 입력 데이터(B[15:0])의 제2 지수 비트(E2[7:0])를 입력받는다. 제1 지수 가산기(512)는, 제1 지수 비트(E1[7:0])와 제2 지수 비트(E2[7:0])를 가산하고, 가산 결과 데이터를 출력시킨다. 제1 지수 비트(E1[7:0])와 제2 지수 비트(E2[7:0])는 각각 지수 바이어스 값, 예컨대 127이 더해진 상태이다. 따라서 지수 바이어스 값이 포함된 지수를 얻기 위해, 제2 지수 가산기(513)는, 제1 가산기(512)로부터 출력되는 가산 결과 데이터에 지수 바이어스 값, 예컨대 127을 빼주는 연산, 즉 가산 결과 데이터 및 (-127)에 대한 가산 연산을 수행한다. 제2 지수 가산기(513)로부터 출력되는 가산 결과 데이터는, 24비트의 곱셈 결과 데이터(AB[24:0]))의 제5 지수 비트들(E5[7:0])를 구성한다.
가수 처리 회로(510M)는, 가수 곱셈기(514)를 포함한다. 가수 곱셈기(514)는, 제1 입력 데이터(A[15:0])의 제1 가수 비트들(M1[7:0])과 제2 입력 데이터(B[15:0])의 제2 가수 비트들(M2[7:0])을 입력받는다. 제1 가수 비트들(M1[7:0])은, 제1 가수 비트들(M1[6:0])에 암시 비트(1.)가 포함되어 "1.M1[6:0]"의 8비트 형식으로 가수 곱셈기(514)에 입력된다. 마찬가지로 제2 가수 비트들(M2[7:0]) 또한, 제1 가수 비트들(M2[6:0])에 암시 비트(1.)가 포함되어 "1.M2[6:0]"의 8비트 형식으로 가수 곱셈기(514)에 입력된다. 가수 곱셈기(514)는, 8비트의 제1 가수 비트들(M1[7:0]) 및 제2 가수 비트(M2[7:0])에 대한 곱셈 연산을 수행한다. 가수 곱셈기(514)는, 곱셈 결과 데이터로서 16비트 데이터를 출력시킨다. 가수 곱셈기(514)로부터 출력되는 16비트 데이터는, 25비트 부동 소수점 형식의 곱셈 결과 데이터(AB[24:0])의 16비트 제5 가수 비트들(M5[15:0])를 구성한다. 곱셈기(510)에서의 정규화 처리가 수행되지 않음에 따라, 곱셈 데이터(AB[24:0])의 제5 가수 비트들(M5[15:0])의 소수점은 14번째 비트(M5[13])와 15번째 비트(M5[14]) 사이에 위치한다.
도 15는 도 13의 다중 연산 회로(500)의 정규화기(570) 구성의 일 예를 나타내 보인 도면이다. 도 15를 참조하면, 정규화기(570)는, 25비트 부동 소수점 형식의 MAC 데이터(MAC[24:0])를 입력받아 정규화 처리를 수행한다. 다중 연산 회로(500)에서 MAC 데이터(MAC[24:0])는, 곱셈기(510)로부터 출력되는 곱셈 데이터(AB[24:0])와 동일한 형식을 갖는다. 이에 따라 도 14를 참조하여 설명한 바와 같이, 정규화기(570)로 입력되는 MAC 데이터(MAC[24:0])는 1비트의 제6 부호 비트(S6[0])와, 8비트의 제6 지수 비트들(E6[7:0])과, 그리고 16비트의 제6 가수 비트들(M6[15:0])로 구성된다. 정규화기(570)는, 정규화 처리를 수행하여 16비트 브레인 부동 소수점(BF16) 형식의 결과 데이터(Y[15:0])를 생성하여 출력시킨다. 이에 따라 정규화기(570)로부터 출력되는 결과 데이터(Y[15:0])는, 1비트의 제7 부호 비트(S7[0])와, 8비트의 제7 지수 비트들(E7[7:0])과, 그리고 7비트의 제7 가수 비트들(M7[6:0])로 구성된다. 본 예에 따른 정규화기(570)에 있어서, MAC 데이터(MAC[24:0])의 제6 부호 비트(S6[0])는, 정규화기(570)에서의 정규화 처리 대상에서 제외된다. 이에 따라 제6 부호 비트(S6[0])는 데이터 변경 없이 정규화기(570)로부터 출력되어, 결과 데이터(Y[15:0])의 제7 부호 비트(S7[0])를 구성한다.
정규화기(570)는, 부동 소수점 이동부(571)와, 멀티플렉서(572)와, 라운드 처리부(573)와, 그리고 가산기(574)를 포함한다. 부동 소수점 이동부(571)는, 16비트의 제6 가수 비트들(M6[15:0])를 입력받는다. 부동 소수점 이동부(571)는, 제6 가수 비트들(M6[15:0])의 이진 소수점을 최상위 비트(MSB)를 향해 1비트 이동시킨 후에 이진 소수점이 이동된 제6 가수 비트들(M6[15:0])을 출력시킨다. 구체적으로 도 14를 참조하여 설명한 바와 같이, MAC 데이터(MAC[24:0])가 곱셈기(510)로부터 출력되는 곱셈 데이터(AB[24:0])와 동일한 형식을 가짐에 따라, 제6 가수 비트들(M6[15:0])의 이진 소수점 또한 14번째 비트(M6[13])와 15번째 비트(M6[14]) 사이에 위치한다. 따라서 소수점 왼쪽에 최상위 비트(MSB)를 포함한 두 개의 비트들, 즉 15번째 비트(M6[14]) 및 최상위 비트(MSB)(M6[15])가 위치한다. 부동 소수점 이동부(571)는, 15번째 비트(M6[14]) 및 최상위 비트(MSB)(M6[15]) 사이에 이진 소수점이 위치하도록 이진 소수점을 이동시킨다. 제6 가수 비트들(M6[15:0])의 최상위 비트(MSB)(M6[15])가 "1"인 경우, 부동 소수점 이동부(571)에 의해 생성된 데이터는 암시 비트를 포함하는 형태, 즉 "1.M6[14:0]"의 형태를 갖는다. 그러나 제6 가수 비트들(M6[15:0])의 최상위 비트(MSB)(M6[15])가 "0"인 경우, 부동 소수점 이동부(571)에 의해 생성된 데이터는 암시 비트를 포함하지 않는 형태, 즉 "0.M6[14:0]"의 형태를 갖는다. 부동 소수점 이동부(571)에 의해 이진 소수점이 이동된 데이터는 멀티플렉서(572)의 제1 입력단자(IN1)로 전송된다.
멀티플렉서(572)는, 제1 입력단자(IN1)를 통해 부동 소수점 이동부(571)으로부터 전송되는 이진 소수점이 이동된 데이터를 전송받는다. 그리고 제2 입력단자(IN2)를 통해 MAC(MAC[24:0])의 제6 가수 비트들(M6[15:0])를 입력받는다. 또한 선택 단자를 통해 제6 가수 비트들(M6[15:0])의 최상위 비트(MSB)(M6[15])를 전송받는다. 최상위 비트(MSB)(M6[15])가 "1"인 경우, 멀티플렉서(572)는, 제1 입력단자(IN1)로 전송되는 데이터, 즉 부동 소수점 이동부(571)로부터 출력되는 암시 비트를 포함하는 "1.M6[14:0]" 형식의 16비트 데이터를 출력시킨다. 최상위 비트(MSB)(M6[15])가 "0"인 경우, 멀티플렉서(572)는, 제2 입력단자(IN2)로 전송되는 제6 가수 비트들(M6[15:0])를 출력시킨다. 최상위 비트(MSB)(M6[15])가 "0"인 경우, 멀티플렉서(572)로부터 출력되는 제6 가수 비트들(M6[15:0])은 "01.M6[13:0]"의 형식을 갖는다. 이 경우 "01.M6[13:0]" 형식의 제6 가수 비트들(M6[15:0]에서 최상위 비트(MSB)(M6[15]="0")를 제거하게 되면 암시 비트를 포함하는 형식, 즉 "1.M6[14:0]"의 형식의 데이터를 생성할 수 있다.
라운드 처리부(573)는, 멀티플렉서(572)로부터 출력되는 16비트 데이터를 전송받는다. 라운드 처리부(573)는, 전송받은 16비트 데이터에서 암시 비트를 포함하여 9비트들을 제거하여 데이터 크기가 7비트가 되도록 한다. 이 과정에서 라운드 처리부(573)는 라운드 처리를 수행한다. 라운드 처리 과정에서, +1 가산 연산이 수행될 수도 있다. 라운드 처리부(573)는 비트 수 조절 및 라운드 처리를 통해 결과 데이터(Y[15:0])의 7비트의 제7 가수 비트들(M7[6:0])을 생성하여 출력한다.
가산기(574)는, MAC 데이터(MAC[24:0])의 8비트의 제6 지수 비트들(E6[7:0])과, 제6 가수 비트들(M6[15:0])의 최상위 비트(MSB)(M6[15])를 입력받는다. 가산기(574)는, 제6 지수 비트들(E6[7:0]) 및 최상위 비트(MSB)(M6[15])에 대한 가산 연산을 수행한다. 최상위 비트(MSB)(M6[15])가 "0"인 경우, 가산기(574)는, 입력되는 제6 지수 비트들(E6[7:0])과 동일한 데이터를 출력한다. 최상위 비트(MSB)(M6[15])가 "1"인 경우, 가산기(574)는, 입력되는 제6 지수 비트들(E6[7:0])에 +1 연산이 수행되어 생성된 데이터를 출력한다. 위에서 설명한 바와 같이, 최상위 비트(MSB)(M6[15])가 "1"인 경우, 부동 소수점 이동부(571)에 의해 이진 소수점이 왼쪽으로 1비트 이동된 데이터가 멀티플렉서(572)로부터 출력된다. 따라서 이 경우 가산기(574)에 입력되는 제6 지수 비트들(E6[7:0])에 +1 연산을 수행함으로써, 제6 가수 비트들(M6[15:0])에서의 이진 소수점 이동에 따른 지수 변경을 반영할 수 있다. 가산기(574)로부터 출력되는 8비트 데이터는, 결과 데이터(Y[15:0])의 8비트의 제7 지수 비트들(E7[7:0])을 구성한다.
도 16은 본 개시의 일 예에 따른 MAC 오퍼레이터(600)를 나타내 보인 도면이다. 도 16을 참조하면, MAC 오퍼레이터(600)는, 복수, 예컨대 "N"개의 제1 입력 데이터들(A(1)-A(N)) 및 "N"개의 제2 입력 데이터들(B(1)-B(N))을 입력받는다. MAC 오퍼레이터(600)는, 제어 신호들로서 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)를 전송받는다. MAC 오퍼레이터(600)는, "N"번째 제2 결과 데이터(IY(N-1)) 및 "N"개의 연산 결과 데이터들(Y(0)-Y(N-1))을 출력한다.
본 예에 따른 MAC 오퍼레이터(600)는, 복수, 예컨대 "N"개의 다중 연산 회로들(MOC(0)-MOC(N-1))(610(0)-610(N-1))을 포함한다. MAC 오퍼레이터(600)를 구성하는 다중 연산 회로들(610(0)-610(N-1))은, 도 1을 참조하여 설명한 다중 연산 회로(100)와 동일하게 구성된다. 이에 따라 도 1 내지 도 15를 참조하여 설명한 다중 연산 회로(100)의 구성 및 동작은, MAC 오퍼레이터(600)를 구성하는 다중 연산 회로들(610(0)-610(N-1))에 대해 동일하게 적용될 수 있다. 이에 MAC 오퍼레이터(600)를 구성하는 다중 연산 회로들(610(0)-610(N-1)) 각각의 구성 및 동작에 대한 중복된 설명은 생략하기로 한다.
MAC 오퍼레이터(600)로 전송되는 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)는, 다중 연산 회로들(610(0)-610(N-1)) 각각에 공통으로 전송된다. 반면에 MAC 오퍼레이터(600)로 전송되는 "N"개의 제1 입력 데이터들(A(1)-A(N)) 및 "N"개의 제2 입력 데이터들(B(1)-B(N))은, 다중 연산 회로들(610(0)-610(N-1)) 각각으로 분산되어 전송된다. 예컨대 첫번째 제1 입력 데이터(A(1)) 및 첫번째 제2 입력 데이터(B(1))는, 첫번째 다중 연산 회로(610(0))로 전송된다. 두번째 제1 입력 데이터(A(2)) 및 두번째 제2 입력 데이터(B(2))는, 두번째 다중 연산 회로(610(1))로 전송된다. 마찬가지로 "N"번째 제1 입력 데이터(A(N)) 및 "N"번째 제2 입력 데이터(B(N))는, "N"번째 다중 연산 회로(610(N-1))로 전송된다. "N"개의 제1 입력 데이터들(A(1)-A(N)) 및 "N"개의 제2 입력 데이터들(B(1)-B(N))은, 도 1을 참조하여 설명한 바와 같이, 수행하는 연산 종류에 따라서 서로 다른 형식의 데이터들일 수 있다.
다중 연산 회로들(610(0)-610(N-1)) 각각은, MAC 오퍼레이터(600) 내에서 제1 결과 데이터(IY-1)를 입력받고, 제2 결과 데이터(IY)를 출력한다. 예컨대 첫번째 다중 연산 회로(610C(0))는, 첫번째 제1 결과 데이터(IY-1(0))를 입력받고, 첫번째 제2 결과 데이터(IY(0))를 출력한다. 일 예에서 첫번째 다중 연산 회로(610(0))로 전송되는 첫번째 제1 결과 데이터(IY-1(0))는, "0"의 값으로 고정될 수 있다. 다른 예에서, 첫번째 제1 결과 데이터(IY-1(0))는, MAC 오퍼레이터(600) 외부로부터 필요시마다 첫번째 다중 연산 회로(610(0))로 전송될 수도 있다. 두번째 다중 연산 회로(610(1))는, 두번째 제1 결과 데이터(IY-1(1))을 입력받고, 두번째 제2 결과 데이터(IY(1))를 출력시킨다. 마찬가지로 "N"번째 다중 연산 회로(610(N-1))는, "N"번째 제1 결과 데이터(IY-1(N-1))를 입력받고, "N"번째 제2 결과 데이터(IY(N-1))를 출력한다. "N"번째 다중 연산 회로(610(N-1))로부터 출력되는 "N"번째 제2 결과 데이터(IY(N-1))는, MAC 오퍼레이터(600) 외부로 출력된다.
MAC 오퍼레이터(600)로부터 출력되는 연산 결과 데이터들(Y(0)-Y(N-1))은, 각각 다중 연산 회로들(610(0)-610(N-1)) 각각으로부터 출력된다. 즉 다중 연산 회로들(610(0)-610(N-1))은, 각각의 연산 결과 데이터(Y)를 MAC 오퍼레이터(600) 외부로 출력시킨다. 예컨대 첫번째 다중 연산 회로(610(0))는, 첫번째 연산 결과 데이터(Y(0))를 출력한다. 두번째 다중 연산 회로(610(1))는, 두번째 연산 결과 데이터(Y(1))를 출력한다. 마찬가지로 "N"번째 다중 연산 회로(610(N-1))는, "N"번째 연산 결과 데이터(Y(N-1))를 출력한다.
다중 연산 회로들(610(0)-610(N-1))은, 앞의 다중 연산 회로의 제2 결과 데이터(IY)가 출력되는 출력 라인이 뒤의 다중 연산 회로의 제1 결과 데이터(IY-1)가 입력되는 입력 라인과 결합되는 방식으로 배치된다. 이에 따라 앞의 다중 연산 회로로부터 출력되는 제2 결과 데이터(IY)는 뒤의 다중 연산 회로로 입력되는 제1 결과 데이터(IY-1)를 구성한다. 구체적으로 첫번째 다중 연산 회로(610(0))의 첫번째 제2 결과 데이터(IY(0))가 출력되는 출력 라인은, 두번째 제1 결과 데이터(IY-1(1))가 입력되는 두번째 다중 연산 회로(610(1))의 입력 라인에 결합된다. 첫번째 다중 연산 회로(610(0))로부터 출력되는 첫번째 제2 결과 데이터(IY(0))는, 두번째 제1 결과 데이터(IY-1(1))로서 두번째 다중 연산 회로(610(0))에 전송된다. 두번째 다중 연산 회로(610(1))의 두번째 제2 결과 데이터(IY(1))가 출력되는 출력 라인은, 세번째 제1 결과 데이터(IY-1(2))가 입력되는 세번째 다중 연산 회로(도면에서 생략됨)의 입력 라인에 결합된다. 두번째 다중 연산 회로(610(1))로부터 출력되는 두번째 제2 결과 데이터(IY(1))는 세번째 제1 결과 데이터(IY-1(2))로서 세번째 다중 연산 회로에 전송된다.
도면에서 생략된 "N-2"번째 다중 연산 회로의 "N-2"번째 제2 결과 데이터(IY(N-3))가 출력되는 출력 라인은, "N-1"번째 제1 결과 데이터(IY-1(N-2))가 입력되는 "N-1"번째 다중 연산 회로(610(N-2))의 입력 라인에 결합된다. "N-2"번째 다중 연산 회로로부터 출력되는 "N-2"번째 제2 결과 데이터(IY(N-3))는, "N-1"번째 제1 결과 데이터(IY-1(N-2))로서 "N-1"번째 다중 연산 회로(610(N-2))에 전송된다. 마찬가지로 "N-1"번째 다중 연산 회로(610(N-2))의 "N-1"번째 제2 결과 데이터(IY(N-2))가 출력되는 출력 라인은, "N"번째 제1 결과 데이터(IY-1(N-1))가 입력되는 "N"번째 다중 연산 회로(610(N-1))의 입력 라인에 결합된다. "N-1"번째 다중 연산 회로(610(N-2))로부터 출력되는 "N-1"번째 제2 결과 데이터(IY(N-2))는, "N"번째 제1 결과 데이터(IY-1(N-1))로서 "N"번째 다중 연산 회로(610(N-1))에 전송된다. "N"번째 다중 연산 회로(610(N-1))로부터는 출력되는 "N"번째 제2 결과 데이터(IY(N-1))는, MAC 오퍼레이터(600) 외부로 출력된다.
본 예에 따른 MAC 오퍼레이터(600)는, 제1 연산 모드에서의 MAC 연산과, 제2 연산 모드에서의 EW 곱셈 연산 및 EW 가산 연산과, 그리고 제3 연산 모드에서의 누산 연산을 선택적으로 수행할 수 있다. MAC 오퍼레이터(600)가 수행하는 연산 동작은, 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)에 의해 선택될 수 있다. 로직 하이(HI)의 제1 선택 신호(SS1) 및 제2 선택 신호(SS2)와, 로직 로우(LO)의 제3 선택 신호(SS3)가 전송되면, 도 6 및 도 7을 참조하여 설명한 다중 연산 회로(100)의 동작과 같이, MAC 오퍼레이터(600)는, 제1 연산 모드에서의 MAC 연산을 수행한다.
로직 하이(HI)의 제1 선택 신호(SS1) 및 제3 선택 신호(SS3)가 전송되고, 제2 선택 신호(SS2)가 비활성화되면, 도 9를 참조하여 설명한 다중 연산 회로(100)의 동작과 같이, MAC 오퍼레이터(600)는, 제2 연산 모드에서의 EW 곱셈 연산을 수행한다. 로직 로우(LO)의 제2 선택 신호(SS2) 및 제3 선택 신호(SS3)가 전송되고, 제1 선택 신호(SS1)가 비활성화되면, 도 11을 참조하여 설명한 다중 연산 회로(100)의 동작과 같이, MAC 오퍼레이터(600)는, 제2 연산 모드에서의 EW 가산 연산을 수행한다. 그리고 로직 로우(LO)의 제1 선택 신호(SS1) 및 로직 하이(HI)의 제2 선택 신호(SS2)가 전송되고, 제3 선택 신호(SS3)가 비활성화되면, 도 12를 참조하여 설명한 다중 연산 회로(100)의 동작과 같이, MAC 오퍼레이터(600)는, 제3 연산 모드에서의 누산 연산을 수행한다.
MAC 오퍼레이터(600)가 제1 연산 모드에서의 MAC 연산을 수행하는 경우, 제1 MAC 연산 모드로 MAC 연산을 수행할 수 있으며, 또한 제2 MAC 연산 모드에서 MAC 연산을 수행할 수 있다. 제1 MAC 연산 모드에서의 MAC 연산과, 제2 MAC 연산 모드에서의 MAC 연산은, 다중 연산 회로들(610(0)-610(N-1))로 웨이트 데이터들 및 벡터 데이터들을 입력시키는 방법에 따라 선택될 수 있다. MAC 오프레이터(600)가 제1 MAC 연산 모드로 MAC 연산을 수행하는 경우, MAC 오퍼레이터(600)는, 도 4의 결과 매트릭스(230)의 어느 한 행(R)의 MAC 결과 데이터(MAC_RST)를 출력시킨다. 이 경우 "N"번째 다중 연산 회로(610(N-1))로부터 출력되는 "N"번째 제2 결과 데이터(IY(N-1))가 MAC 결과 데이터(MAC_RST)를 구성한다. MAC 오퍼레이터(600)가 제2 MAC 연산 모드로 MAC 연산을 수행하는 경우, MAC 오퍼레이터(600)는, 도 4의 결과 매트릭스(230)의 복수, 예컨대 첫번째 내지 "M"번째 MAC 결과 데이터들(MAC_RST(1)-MAC_RST(M))을 출력시킨다. 이 경우, 다중 연산 회로들(610(0)-610(N-1)) 각각으로부터 출력되는 연산 결과 데이터들(Y(0)-Y(N-1)) 각각이 MAC 결과 데이터들(MAC_RST(1)-MAC_RST(M)) 각각을 구성한다.은, 가 MAC 결과 데이터웨이트 매트릭스의 어느 한 행의 웨이트 데이터들과, 벡터 매트릭스의 벡터 데이터들 사이의 매트릭스-벡터 곱셈으로 생성되는 MAC 결과 데이터일 수 있다.
도 17은 도 16의 MAC 오퍼레이터(600)의 제1 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 17에서 도 16과 동일한 참조부호는 동일한 구성 요소를 나타낸다. 본 예에서는 도 4를 참조하여 설명한 매트릭스-벡터 곱셈에서 웨이트 매트릭스(210)의 제1 행(RW(1))의 웨이트 데이터들(W(1.1)-W(1.N))과 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 MAC 연산을 수행하여 결과 매트릭스(230)의 제1 행(RR(1))의 MAC 결과 데이터(MAC_RST(1))를 생성하는 과정을 예로 들기로 한다. 본 예에서의 설명은, 결과 매트릭스(230)의 나머지 MAC 결과 데이터들(MAC_RST(2)-MAC_RST(M)) 각각을 생성하는 MAC 연산에도 동일하게 적용된다. MAC 오퍼레이터(600)는, 다중 연산 회로들(610(0)-610(N-1))에서 제1 연산 모드에서의 MAC 연산을 수행하고, 이어서 제3 연산 모드에서의 누산 연산을 수행함으로써 제1 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다.
도 17을 참조하면, MAC 오퍼레이터(600)는, 웨이트 매트릭스(210)의 제1 행(CR(1))의 웨이트 데이터들(W(1.1)-W(1.N))과, 벡터 매트릭스(220)의 벡터 데이터들(V(1.1)-V(1.N))을 입력받는다. MAC 오퍼레이터(600)가 제1 MAC 연산 모드에서의 MAC 연산을 수행하기 위해서는, 웨이트 데이터들(W(1.1)-W(1.N)) 각각이 다중 연산 회로들(610(0)-610(N-1)) 각각으로 전송된다. 벡터 데이터들(V(0)-V(N)) 또한 각각 다중 연산 회로들(610(0)-610(N-1)) 각각으로 전송된다. 예컨대 제1 행(RW(1)) 및 제1 열(CW(1))의 웨이트 데이터(W(1.1))와 제1 행(CV(1))의 벡터 데이터(V(1))는, 첫번째 다중 연산 회로(610(0))로 전송된다. 제1 행(RW(1)) 및 제2 열(CW(2))의 웨이트 데이터(W(1.2))와 제2 행(CV2)의 벡터 데이터(V(2))는, 두번째 다중 연산 회로(610(1))로 전송된다. 유사하게 제1 행(RW(1)) 및 제N 열(CW(N))의 웨이트 데이터(W(1.N))와 제N 행(CV(N))의 벡터 데이터(V(N))는, "N"번째 다중 연산 회로(610(N-1))로 전송된다.
먼저 로직 하이(HI)의 제1 선택 신호(SS1) 및 제2 선택 신호(SS2)와, 로직 로우(LO)의 제3 선택 신호(SS3)와, 그리고 래치 회로 동작을 위한 업데이트 신호(UPDATE)를 MAC 오퍼레이터(600)로 전송하여, MAC 오퍼레이터(600)의 다중 연산 회로들(610(0)-610(N-1))이 제1 연산 모드에서의 MAC 연산을 수행할 수 있도록 한다. 첫번째 다중 연산 회로(610(0))는, 도 6을 참조하여 설명한 바와 같이, 웨이트 데이터(W(1.1)) 및 벡터 데이터(V(1))에 대한 곱셈 연산(W(1.1)ㅧV(1))을 수행한다. 첫번째 다중 연산 회로(610(0))는, 곱셈 연산 결과 생성된 첫번째 곱셈 데이터(WV(1))를 첫번째 다중 연산 회로(610(0))의 래치 회로(도 6의 140)에 래치시킨다.
이와 같은 첫번째 다중 연산 회로(610(0))의 제1 연산 모드에서의 MAC 연산은, 두번째 내지 "N"번째 다중 연산 회로들(610(1)-610(N-1)) 각각에서 동일한 방식으로 수행된다. 이에 따라 두번째 다중 연산 회로(610(1))는, 웨이트 데이터(W(1.2)) 및 벡터 데이터(V(2))에 대한 곱셈 연산(W(1.2)ㅧV(2))을 수행하고, 곱셈 연산 결과 생성된 두번째 곱셈 데이터(WV(2))를 두번째 다중 연산 회로(610(1))의 래치 회로(도 6의 140)에 래치시킨다. "N-1"번째 다중 연산 회로(610(N-2))는, 웨이트 데이터(W(1.N-1)) 및 벡터 데이터(V(N-1))에 대한 곱셈 연산(W(1.N-1)ㅧV(N-1))을 수행하고, 곱셈 연산 결과 생성된 "N-1"번째 곱셈 데이터(WV(N-1))를 "N-1"번째 다중 연산 회로(610(N-2))의 래치 회로(도 6의 140)에 래치시킨다. 유사하게 "N"번째 다중 연산 회로(610(N-1))는, 웨이트 데이터(W(1.N)) 및 벡터 데이터(V(N))에 대한 곱셈 연산(W(1.N)ㅧV(N))을 수행하고, 곱셈 연산 결과 생성된 "N"번째 곱셈 데이터(WV(N))를 "N"번째 다중 연산 회로(610(N-1))의 래치 회로(도 6의 140)에 래치시킨다.
다음에 로직 로우(LO)의 제1 선택 신호(SS1)와, 로직 하이(HI)의 제2 선택 신호(SS2)와, 그리고 래치 회로 동작을 위한 업데이트 신호(UPDATE)를 MAC 오퍼레이터(600)로 전송하고, 제3 선택 신호(SS3)를 비활성화하여, MAC 오퍼레이터(600)의 다중 연산 회로들(610(0)-610(N-1))이 제3 연산 모드에서의 누산 연산을 수행할 수 있도록 한다. 첫번째 다중 연산 회로(610(0))는, 첫번째 제1 결과 데이터(IY-1(0))로서 "0"을 전송받는다. 첫번째 다중 연산 회로(610(0))는, 첫번째 제1 결과 데이터(IY-1(0))와, 래치되어 있는 첫번째 곱셈 데이터(WV(1))에 대한 가산 연산("0"+WV(1))을 수행한다. 첫번째 다중 연산 회로(610(0))는, 가산 연산 결과 생성되는 첫번째 MAC 데이터(MAC(1))를 첫번째 제2 결과 데이터(IY(0))로 출력시킨다.
두번째 다중 연산 회로(610(1))는, 두번째 제1 결과 데이터(IY-1(1))로서 첫번째 다중 연산 회로(610(0))로부터 출력되는 첫번째 MAC 데이터(MAC(1))를 전송받는다. 두번째 다중 연산 회로(610(1))는, 첫번째 MAC 데이터(MAC(1))와, 래치되어 있는 두번째 곱셈 데이터(WV(2))에 대한 가산 연산(MAC(1)+WV(1))을 수행한다. 두번째 다중 연산 회로(610(0))는, 가산 연산 결과 생성되는 두번째 MAC 데이터(MAC(2))를 두번째 제2 결과 데이터(IY(1))로 출력시킨다.
"N-1"번째 다중 연산 회로(610(N-2))는, "N-1"번째 제1 결과 데이터(IY-1(N-2))로서 "N-2"번째 다중 연산 회로(도면에서 생략됨)로부터 전송되는 "N-2"번째 MAC 데이터(MAC(N-2))를 전송받는다. "N-1"번째 다중 연산 회로(610(N-2))는, "N-2"번째 MAC 데이터(MAC(N-2))와, 래치되어 있는 "N-1"번째 곱셈 데이터(WV(N-1))에 대한 가산 연산(MAC(N-2)+WV(N-1))을 수행한다. "N-1"번째 다중 연산 회로(610(N-2))는, 가산 연산 결과 생성되는 "N-1"번째 MAC 데이터(MAC(N-1))를 "N-1"번째 제2 결과 데이터(IY(N-2))로 출력시킨다.
"N"번째 다중 연산 회로(610(N-1))는, "N"번째 제1 결과 데이터(IY-1(N-1))로서 "N-1"번째 다중 연산 회로(610(N-2))로부터 전송되는 "N-1"번째 MAC 데이터(MAC(N-1))를 전송받는다. "N"번째 다중 연산 회로(610(N-1))는, "N-1"번째 MAC 데이터(MAC(N-1))와, 래치되어 있는 "N"번째 곱셈 데이터(WV(N))에 대한 가산 연산(MAC(N-1)+WV(N))을 수행한다. "N"번째 다중 연산 회로(610(N-1))는, 가산 연산 결과 생성되는 "N"번째 MAC 데이터(MAC(N))를 "N"번째 제2 결과 데이터(IY(N-1))로 출력시킨다. "N"번째 다중 연산 회로(610(N-1))로부터 "N"번째 제2 결과 데이터(IY(N-1))로서 출력되는 "N"번째 MAC 데이터(MAC(N))는, 도 4 및 5를 참조하여 설명한 바와 같이, 웨이트 매트릭스(210)의 제1 행(RW(1))의 웨이트 데이터들(W(1.1)-W(1.N))과 벡터 매트릭스(220)의 벡터 데이터들(V(1)-V(N))에 대한 매트릭스-곱셈 결과 생성된 첫번째 MAC 결과 데이터(MAC_RST(1))를 구성한다.
도 18은 도 16의 MAC 오퍼레이터(600)의 제2 MAC 연산 모드에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 18에서 도 16과 동일한 참조부호는 동일한 구성 요소를 나타낸다. 본 예에서는 도 4를 참조하여 설명한 매트릭스-벡터 곱셈에서 웨이트 매트릭스(210) 및 벡터 매트릭스(220)에 대한 MAC 연산을 수행하여 결과 매트릭스(230)를 생성하는 과정을 예로 들기로 한다. 이 경우 MAC 오퍼레이터(600)는, 웨이트 매트릭스(210)의 행들(RWs)의 개수와 동일한 개수의 다중 연산 회로들(610(0)-610(M-1))을 포함하는 것을 전제하기로 한다. MAC 오퍼레이터(600)는, 다중 연산 회로들(610(0)-610(M-1))에서 제1 연산 모드에서의 MAC 연산을 웨이트 매트릭스(210)의 열(CW)의 개수(벡터 매트리스(220)의 행(RV)의 개수)와 동일한 횟수로 반복 수행함으로써 제2 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다.
도 18을 참조하면, MAC 오퍼레이터(600)는, 웨이트 매트릭스(210)의 모든 행들(RW(1)-RW(M))의 웨이트 데이터들(W(1.1)-W(1.N), …, W(M.1)-W(M.N))과, 벡터 매트릭스(220)의 벡터 데이터들(V(1.1)-V(1.N))을 순차적으로 입력받는다. MAC 오퍼레이터(600)가 제2 MAC 연산 모드에서의 MAC 연산을 수행하기 위해서는, 하나의 행(RW)의 웨이트 데이터들(Ws) 각각과 벡터 데이터들(V(1)-V(N)) 각각이 하나의 다중 연산 회로로 순차적으로 전송된다. 예컨대 첫번째 다중 연산 회로(610(0))에는, 제1 행(RW(1))의 웨이트 데이터들(W(1.1)-W(1.N)) 각각과 벡터 데이터들(V(1)-V(N)) 각각이 순차적으로 전송된다. 두번째 다중 연산 회로(610(1))에는, 제2 행(RW(2))의 웨이트 데이터들(W(2.1)-W(2.N)) 각각과 벡터 데이터들(V(1)-V(N)) 각각이 순차적으로 전송된다. "M-1"번째 다중 연산 회로(610(M-2))에는, 제"M-1" 행(RW(M-1))의 웨이트 데이터들(W(M-1.1)-W(M-1.N)) 각각과 벡터 데이터들(V(1)-V(N)) 각각이 순차적으로 전송된다. 마찬가지로 "N"번째 다중 연산 회로(610(M-2))에는, 제"M" 행(RW(M1))의 웨이트 데이터들(W(M1.1)-W(M1.N)) 각각과 벡터 데이터들(V(1)-V(N)) 각각이 순차적으로 전송된다.
먼저 로직 하이(HI)의 제1 선택 신호(SS1) 및 제2 선택 신호(SS2)와, 로직 로우(LO)의 제3 선택 신호(SS3)와, 그리고 래치 회로 동작을 위한 업데이트 신호(UPDATE)를 MAC 오퍼레이터(600)로 전송하여, MAC 오퍼레이터(600)의 다중 연산 회로들(610(0)-610(M-1))이 제1 연산 모드에서의 MAC 연산을 수행할 수 있도록 한다. 다중 연산 회로들(610(0))-610(M-1)) 각각에 웨이트 매트릭스(210)의 각각의 행(RW)의 제1 열(CW(1))의 웨이트 데이터들(W(1.1), W(2.1), …, W(M-1.1), W(M.1)과 제1 행(RV(1))의 벡터 데이터(V(1))가 전송되면, 다중 연산 회로들(610(0))-610(M-1))은 제1 연산 모드에서의 첫번째 MAC 연산을 수행한다. 제1 연산 모드에서의 첫번째 MAC 연산 과정은, 도 5 및 도 6을 참조하여 설명한 바와 동일하다. 다중 연산 회로들(610(0))-610(M-1)) 각각은, 제1 연산 모드에서의 첫번째 MAC 연산을 수행한 결과로서, 각 행의 첫번째 MAC 데이터들(MAC1[15:0])을 생성한다. 다중 연산 회로들(610(0))-610(M-1)) 각각에서 생성된 각 행의 첫번째 MAC 데이터들(MAC1[15:0])은, 다중 연산 회로들(610(0))-610(M-1)) 각각의 래치 회로에 래치된다.
이어서 다중 연산 회로들(610(0))-610(M-1)) 각각에 웨이트 매트릭스(210)의 각각의 행(RW)의 제2 열(CW(2))의 웨이트 데이터들(W(1.2), W(2.2), …, W(M-1.2), W(M.2)과 제2 행(RV(2))의 벡터 데이터(V(2))가 전송되면, 다중 연산 회로들(610(0))-610(M-1))은 제1 연산 모드에서의 두번째 MAC 연산을 수행한다. 제1 연산 모드에서의 두번째 MAC 연산 과정은, 도 5 및 도 7을 참조하여 설명한 바와 동일하다. 다중 연산 회로들(610(0))-610(N-1)) 각각은, 제1 연산 모드에서의 두번째 MAC 연산을 수행한 결과로서, 각 행의 두번째 MAC 데이터들(MAC2[15:0])을 생성한다. 다중 연산 회로들(610(0))-610(M-1)) 각각에서 생성된 각 행의 두번째 MAC 데이터들(MAC2[15:0])은, 다중 연산 회로들(610(0))-610(M-1)) 각각의 래치 회로에 래치된다. 이어서 다중 연산 회로들(610(0))-610(M-1)) 각각에 웨이트 매트릭스(210)의 각각의 행(RW)의 제23 열(CW(3))의 웨이트 데이터들(W(1.3), W(2.3), …, W(M-1.3), W(M.3)과 제3 행(RV(3))의 벡터 데이터(V(3))가 전송되면, 다중 연산 회로들(610(0))-610(M-1))은 제1 연산 모드에서의 세번째 MAC 연산을 수행한다. 제1 연산 모드에서의 세번째 MAC 연산 과정 또한, 도 5 및 도 7을 참조하여 설명한 방식과 동일하게 수행된다. 다중 연산 회로들(610(0))-610(M-1)) 각각은, 제1 연산 모드에서의 세번째 MAC 연산을 수행한 결과로서, 각 행의 세번째 MAC 데이터들(MAC3[15:0])을 생성한다. 다중 연산 회로들(610(0))-610(M-1)) 각각에서 생성된 각 행의 세번째 MAC 데이터들(MAC3[15:0])은, 다중 연산 회로들(610(0))-610(M-1)) 각각의 래치 회로에 래치된다.
이와 같은 방식으로 다중 연산 회로들(610(0))-610(M-1))은, 제1 연산 모드의 네번째 내지 "N"번째 MAC 연산들을 수행하고, 그 결과로서 각 행의 네번째 내지 "N"번째 MAC 데이터(MAC4[15:0]-MAC"N"[15:0])를 순차적으로 생성한다. 다중 연산 회로들(610(0))-610(M-1))이 제1 연산 모드의 "N"번째 MAC 연산을 수행하여 생성된 "N"번째 MAC 데이터들(MAC"N"[15:0])은, 도 5의 결과 매트릭스(230)의 MAC 결과 데이터들(MAC_RST(1)-MAC_RST(M)) 각각을 구성한다. 이에 따라 첫번째 다중 연산 회로(610(0))는, 웨이트 매트릭스의 제1 행(RW(1)) 및 벡터 매트릭스에 대한 MAC 연산 결과인 "N"번째 MAC 데이터(MAC"N"[15:0])를 첫번째 MAC 결과 데이터(MAC_RST(1))로서 출력시킨다. 두번째 다중 연산 회로(610(1))는, 웨이트 매트릭스의 제2 행(RW(2)) 및 벡터 매트릭스에 대한 MAC 연산 결과인 "N"번째 MAC 데이터(MAC"N"[15:0])를 두번째 MAC 결과 데이터(MAC_RST(2))로서 출력시킨다. 유사하게 "M-1"번째 다중 연산 회로(610(M-2))는, 웨이트 매트릭스의 제"M-1" 행(RW(M-1)) 및 벡터 매트릭스에 대한 MAC 연산 결과인 "N"번째 MAC 데이터(MAC"N"[15:0])를 "M-1"번째 MAC 결과 데이터(MAC_RST(M-1))로서 출력시킨다. 마찬가지로 "M"번째 다중 연산 회로(610(M-1))는, 웨이트 매트릭스의 제"M" 행(RW(M)) 및 벡터 매트릭스에 대한 MAC 연산 결과인 "N"번째 MAC 데이터(MAC"N"[15:0])를 "M"번째 MAC 결과 데이터(MAC_RST(M))로서 출력시킨다.
도 19는 본 개시의 일 예에 따른 PIM 장치(700)를 나타내 보인 도면이다. 도 19를 참조하면, 본 개시의 일 예에 따른 PIM 장치(700)는, L개(L은 2 이상의 자연수)의 메모리 뱅크들(BK(0)-BK(L-1))(710(0)-710(L-1))과, L개의 MAC 오퍼레이터들(MAC(0)-MAC(L-1))(720(0)-720(L-1))과, 글로벌 버퍼(GB)(730)와, 그리고 커맨드 디코더(comand decoder)(740)를 포함한다. 일 예에서 메모리 뱅크들(710(0)-710(L-1))은, 각각 MAC 오퍼레이터들(720(0)-720(L-1)) 각각과 함께 하나의 MAC 유닛을 구성할 수 있다. MAC 유닛을 구성하는 MAC 오퍼레이터(MAC)는, 그 MAC 유닛을 구성하는 메모리 뱅크(BK)로부터 MAC 연산을 위한 웨이트 데이터를 제공받는다. 예컨대 제1 메모리 뱅크(710(0)) 및 제1 MAC 오퍼레이터(720(0))는, 제1 MAC 유닛을 구성한다. 이 경우 제1 MAC 오퍼레이터(720(0))는, 제1 메모리 뱅크(710(0))로부터 웨이트 데이터를 제공받는다. MAC 오퍼레이터들(720(0)-720(L-1)) 각각의 구성 및 동작은, 도 16 및 도 17을 참조하여 설명한 MAC 오퍼레이터(600)의 구성 및 동작과 동일할 수 있다. 이 경우, 본 예에 따른 PIM 장치(700)의 MAC 오퍼레이터들(720(0)-720(L-1))은, 도 17을 참조하여 설명한 제1 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다.
글로벌 버퍼(730)는, MAC 오퍼레이터들(720(0)-720(L-1))로 MAC 연산을 위한 벡터 데이터를 제공하도록 구성된다. 이를 위해 글로벌 버퍼(730)는, 호스트로부터의 요청에 따라 컨트롤러를 통해 벡터 데이터를 전송받아 저장할 수 있다. 일 예에서 글로벌 버퍼(730)로부터 MAC 오퍼레이터들(720(0)-720(L-1))로의 벡터 데이터 전송은, GIO(Global Input/Output) 라인을 통해 이루어질 수 있다. 글로벌 버퍼(730)로부터 제공되는 벡터 데이터는, MAC 오퍼레이터들(720(0)-720(L-1))에 공통으로 전송될 수 있다.
커맨드 디코더(740)는, 예컨대 컨트롤러로부터 커맨드(CMD)를 전송받는다. 커맨드 디코더(740)는, 전송받은 커맨드(CMD)를 디코딩하여, 제어신호들, 예컨대 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)를 출력한다. 도면에 나타내지는 않았지만, 커맨드 디코더(740)는, 리드(read) 신호 및 라이트(write) 신호와 같이, 메모리 뱅크들(710(0)-710(L-1)) 및 글로벌 버퍼(730)에 대한 엑세스(access) 동작을 위한 제어 신호들을 출력할 수 있다. 도 16 내지 도 18을 참조하여 설명한 바와 같이, 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)는, MAC 오퍼레이터들(720(0)-720(L-1))의 복수의 연산 동작들을 제어한다.
도 20은 도 19의 PIM 장치(700)에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다. 도 19를 참조하여 설명한 바와 같이, PIM 장치(700)의 MAC 오퍼레이터들(720(0)-720(L-1))은, 도 17을 참조하여 설명한 제1 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다. 본 예에서는 PIM 장치(700)의 첫번째 MAC 오퍼레이터(720(0)) 및 첫번째 메모리 뱅크(710(0))에서의 MAC 연산 동작을 예로 들기로 한다. 본 예에 따른 MAC 연산 동작은, 두번째 내지 "N"번째 MAC 오퍼레이터들(720(1)-720(N-1))에서의 MAC 연산 동작에도 동일하게 적용된다.
도 20을 참조하면, 첫번째 MAC 오퍼레이터(720(0))는, 예컨대 "N"개의 다중 연산 회로들(610(0)-610(N-1))을 포함한다. 첫번째 MAC 오퍼레이터(720(0))는, MAC 연산을 수행하기 위해 첫번째 메모리 뱅크(710(0))로부터 웨이트 데이터들(W(1.1)-W(1.N))을 전송받는다. 또한 첫번째 MAC 오퍼레이터(720(0))는, 글로벌 버퍼(도 19의 730)로부터 벡터 데이터들(V(1)-V(N))을 전송받는다. 첫번째 메모리 뱅크(710(0))로부터 전송되는 웨이트 데이터들(W(1.1)-W(1.N))은, 각각 첫번째 MAC 오퍼레이터(720(0))의 "N"개의 다중 연산 회로들(610(0)-610(N-1)) 각각으로 전송된다. 유사하게 글로벌 버퍼(도 19의 730)로부터 전송되는 벡터 데이터들(V(1)-V(N)) 또한, 각각 첫번째 MAC 오퍼레이터(720(0))의 "N"개의 다중 연산 회로들(610(0)-610(N-1)) 각각으로 전송된다. 첫번째 MAC 오퍼레이터(720(0))는, 제1 MAC 연산 모드에서의 MAC 연산을 수행한다. 도 17을 참조하여 설명한 바와 같이, 제1 MAC 연산 모드에서의 MAC 연산 결과, 첫번째 MAC 오퍼레이터(720(0))는, "N"번째 다중 연산 회로(610(N-1))로부터 "N"번째 제2 결과 데이터(IY(N-1))로서 출력되는 "N"번째 MAC 데이터(MAC(N))를 출력한다. 첫번째 MAC 오퍼레이터(720(0))로부터 출력되는 "N"번째 MAC 데이터(MAC(N))는, 결과 매트릭스의 첫번째 MAC 결과 데이터(MAC_RST(1))를 구성한다.
도 21은 본 개시의 다른 예에 따른 PIM 장치(800)를 나타내 보인 도면이다. 도 21을 참조하면, 본 개시의 일 예에 따른 PIM 장치(800)는, L개(L은 2 이상의 자연수)의 메모리 뱅크들(BK(0)-BK(L-1))(810(0)-810(L-1))과, L개의 다중 연산 회로들(MOC(0)-MOC(L-1))(820(0)-820(L-1))과, 글로벌 버퍼(GB)(830)와, 그리고 커맨드 디코더(comand decoder)(840)를 포함한다. 본 예에 따른 PIM 장치(800)에서 다중 연산 회로들(MOC(0)-MOC(L-1))(820(0)-820(L-1)) 각각은, 도 1을 참조하여 설명한 다중 연산 회로(100)와 동일하게 구성된다. 이에 따라 다중 연산 회로들(820(0)-820(L-1)) 각각은, MAC 연산, EW 곱셈 연산, EW 가산 연산, 및 누산 연산을 선택적으로 수행할 수 있다. 다중 연산 회로들(820(0)-820(L-1)) 각각이 MAC 연산을 수행하는 경우, 메모리 뱅크들(810(0)-810(L-1))은, 각각 다중 연산 회로들(820(0)-820(L-1)) 각각과 함께 하나의 MAC 유닛을 구성할 수 있다. MAC 유닛을 구성하는 다중 연산 회로(820)는, 그 MAC 유닛을 구성하는 메모리 뱅크(BK)로부터 MAC 연산을 위한 웨이트 데이터를 제공받는다. 예컨대 제1 메모리 뱅크(810(0)) 및 제1 다중 연산 회로(820(0))는, 제1 MAC 유닛을 구성한다. 이 경우 제1 다중 연산 회로(820(0))는, 제1 메모리 뱅크(810(0))로부터 웨이트 데이터를 제공받는다. PIM 장치(800)가 MAC 연산을 수행하는 경우, 다중 연산 회로들(820(0)-820(L-1))은, 도 18을 참조하여 설명한 제2 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다.
글로벌 버퍼(830)는, 다중 연산 회로들(820(0)-820(L-1))로 MAC 연산을 위한 벡터 데이터를 제공하도록 구성된다. 이를 위해 글로벌 버퍼(830)는, 호스트로부터의 요청에 따라 컨트롤러를 통해 벡터 데이터를 전송받아 저장할 수 있다. 일 예에서 글로벌 버퍼(830)로부터 다중 연산 회로들(820(0)-820(L-1))로의 벡터 데이터 전송은, GIO(Global Input/Output) 라인을 통해 이루어질 수 있다. 글로벌 버퍼(830)로부터 제공되는 벡터 데이터는, 다중 연산 회로들(820(0)-820(L-1))에 공통으로 전송될 수 있다.
커맨드 디코더(840)는, 예컨대 컨트롤러로부터 커맨드(CMD)를 전송받는다. 커맨드 디코더(840)는, 전송받은 커맨드(CMD)를 디코딩하여, 제어신호들, 예컨대 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)를 출력한다. 도면에 나타내지는 않았지만, 커맨드 디코더(840)는, 리드(read) 신호 및 라이트(write) 신호와 같이, 메모리 뱅크들(710(0)-710(L-1)) 및 글로벌 버퍼(730)에 대한 엑세스(access) 동작을 위한 제어 신호들을 출력할 수 있다. 도 16 내지 도 18을 참조하여 설명한 바와 같이, 제1 선택 신호(SS1), 제2 선택 신호(SS2), 제3 선택 신호(SS3), 및 업데이트 신호(UPDATE)는, 다중 연산 회로들(820(0)-820(L-1))의 복수의 연산 동작들을 제어한다.
도 22는 도 21의 PIM 장치(800)에서의 MAC 연산 동작의 일 예를 설명하기 위해 나타내 보인 도면이다. 도 21을 참조하여 설명한 바와 같이, PIM 장치(800)의 다중 연산 회로들(820(0)-820(L-1))은, 도 18을 참조하여 설명한 제2 MAC 연산 모드에서의 MAC 연산을 수행할 수 있다. 도 22를 참조하면, 첫번째 다중 연산 회로(820(0))는, MAC 연산을 수행하기 위해 첫번째 메모리 뱅크(810(0))로부터 제1 행의 웨이트 데이터들(W(1.1)-W(1.N))을 순차적으로 전송받는다. 또한 첫번째 다중 연산 회로(820(0))는, 글로벌 버퍼(도 21의 830)로부터 벡터 데이터들(V(1)-V(N))을 순차적으로 전송받는다.
첫번째 다중 연산 회로(820(0))는, 첫번째 메모리 뱅크(810(0)) 및 글로벌 버퍼(830)로부터 각각 웨이트 데이터(W(1.1)) 및 벡터 데이터(V(1))를 전송받아 첫번째 MAC 연산을 수행한다. 다음에 첫번째 다중 연산 회로(820(0))는, 제1 메모리 뱅크(810(0)) 및 글로벌 버퍼(830)로부터 각각 웨이트 데이터(W(1.2)) 및 벡터 데이터(V(2))를 전송받아 두번째 MAC 연산을 수행한다. 다음에 첫번째 다중 연산 회로(820(0))는, 첫번째 메모리 뱅크(810(0)) 및 글로벌 버퍼(830)로부터 각각 웨이트 데이터(W(1.3)) 및 벡터 데이터(V(3))를 전송받아 세번째 MAC 연산을 수행한다. 이와 같은 MAC 연산은, 제1 행 및 제"N" 열의 웨이트 데이터(W(1.N)) 및 제"N" 행의 벡터 데이터(V(N))에 대한 "N"번째 MAC 연산이 수행될 때까지 반복적으로 수행된다. "N"번째 MAC 연산이 수행되면, 첫번째 다중 연산 회로(820(0))는, 웨이트 매트릭스의 제1 행의 웨이트 데이터들(W(1.1)-W(1.N)) 및 벡터 매트릭스의 벡터 데이터들(V(1)-V(N))에 대한 MAC 연산 결과인 첫번째 MAC 데이터(MAC(1))를 첫번째 MAC 결과 데이터(MAC_RST(1))로서 출력시킨다. 나머지 두번째 내지 "L"번째 다중 연산 회로들(820(1)-820(L-1))도 각각 동일한 방식으로 MAC 연산을 수행하여, 두번째 내지 "L"번째 MAC 데이터들(MAC(2)-MAC(L))을 두번째 내지 "L"번째 MAC 결과 데이터들(MAC_RST(1)-MAC_RST(L))로서 출력시킨다.
이제까지 본 출원 기술에 대하여 실시예들을 중심으로 살펴보았다. 본 출원 기술이 속하는 기술분야에서 통상의 지식을 가진 자는 본 출원 기술이 본 출원 기술의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 출원 기술의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 출원 기술에 포함된 것으로 해석되어야 할 것이다.
100...다중 연산 회로
110...곱셈기
121, 122, 123, 124...제1, 제2, 제3 제4 선택기
130...가산기 140...래치 회로
150...인버터 161...제1 출력 라인
162...제2 출력 라인
121, 122, 123, 124...제1, 제2, 제3 제4 선택기
130...가산기 140...래치 회로
150...인버터 161...제1 출력 라인
162...제2 출력 라인
Claims (70)
- 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기;
제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기;
입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로; 및
제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 제1 결과 데이터, 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 곱셈 데이터, 및 상기 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함하는 다중 연산 회로. - 제1항에 있어서,
상기 복수의 선택기들은, 상기 제1 연산 모드의 곱셈-누산(MAC) 연산 과정에서, 상기 곱셈기로부터 출력되는 곱셈 데이터 및 상기 피드백 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 다중 연산 회로. - 제1항에 있어서,
상기 복수의 선택기들은, 상기 제2 연산 모드의 엘리먼트-와이즈(EW) 곱셈 연산 과정에서, 상기 곱셈기로부터 출력되는 곱셈 데이터가 상기 래치 회로의 입력 단자로 전송되도록 구성되는 다중 연산 회로. - 제1항에 있어서,
상기 복수의 선택기들은, 상기 제2 연산 모드의 EW 가산 연산 과정에서, 상기 제1 입력 데이터 및 제2 입력 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 다중 연산 회로. - 제1항에 있어서,
상기 복수의 선택기들은, 상기 제3 연산 모드의 누산 연산 과정에서, 상기 제1 결과 데이터 및 상기 피드백 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 다중 연산 회로. - 제1항에 있어서, 상기 복수의 선택기들은,
상기 제1 결과 데이터 및 상기 곱셈 데이터를 입력받고, 제1 선택 신호 입력에 응답하여 상기 제1 결과 데이터 또는 상기 곱셈 데이터를 출력하는 제1 선택기;
상기 제1 입력 데이터 및 상기 제1 선택기의 출력 데이터를 입력받고, 제2 선택 신호 입력에 응답하여 상기 제1 입력 데이터 또는 상기 제1 선택기의 출력 데이터를 출력하는 제2 선택기;
상기 제2 입력 데이터 및 상기 피드백 데이터를 입력받고, 상기 제2 선택 신호 입력에 응답하여 상기 제2 입력 데이터 또는 상기 피드백 데이터를 출력하는 제3 선택기; 및
상기 제1 선택기의 출력 데이터 및 상기 가산 데이터를 입력받고, 제3 선택 신호 입력에 응답하여 상기 제1 선택기의 출력 데이터 또는 상기 가산 데이터를 출력하는 제4 선택기를 포함하는 다중 연산 회로. - 제6항에 있어서,
상기 제3 선택 신호를 입력받아 상기 제3 선택 신호의 로직 레벨을 인버팅하여 상기 제4 선택기로 전송하는 인버터를 더 포함하는 다중 연산 회로. - 제6항에 있어서,
상기 제1 선택기는, 상기 제1 선택 신호로 제1 로직 레벨 신호가 입력되면 상기 제1 결과 데이터를 출력하고, 상기 제1 선택 신호로 제2 로직 레벨 신호가 입력되면 상기 곱셈 데이터를 출력하고,
상기 제2 선택기는, 상기 제2 선택 신호로 상기 제1 로직 레벨 신호가 입력되면 상기 제1 입력 데이터를 출력하고, 상기 제2 선택 신호로 상기 제2 로직 레벨 신호가 입력되면 상기 제1 선택기의 출력 데이터를 출력하고,
상기 제3 선택기는, 상기 제2 선택 신호로 상기 제1 로직 레벨 신호가 입력되면 상기 제2 입력 데이터를 출력하고, 상기 제2 선택 신호로 상기 제2 로직 레벨 신호가 입력되면 상기 피드백 데이터를 출력하며, 그리고
상기 제4 선택기는, 상기 제3 선택 신호로 상기 제2 로직 레벨 신호가 입력되면, 상기 제1 선택기의 출력 데이터를 출력하고, 상기 제3 선택 신호로 상기 제1 로직 레벨 신호가 입력되면 상기 가산 데이터를 출력하는 다중 연산 회로. - 제8항에 있어서,
상기 제2 선택기의 출력 데이터 및 상기 제3 선택기의 출력 데이터는, 각각 상기 제3 입력 데이터 및 제4 입력 데이터를 구성하고,
상기 가산 데이터는 상기 제5 입력 데이터를 구성하는 다중 연산 회로. - 제9항에 있어서,
상기 래치 회로는, 클럭 단자로 전송되는 업데이트 신호의 로직 레벨 변경에 동기하여 입력 단자로 입력되는 제5 입력 데이터를 래치하고, 래치 데이터를 출력 단자를 통해 상기 피드백 데이터로 출력시키는 다중 연산 회로. - 제10항에 있어서,
상기 가산기로부터 출력되는 상기 가산 데이터를 제2 결과 데이터로 출력시키는 제1 출력 라인; 및
상기 래치 회로부터 출력되는 상기 래치 데이터를 연산 결과 데이터로 출력시키는 제2 출력 라인을 더 포함하는 다중 연산 회로. - 제11항에 있어서,
상기 제1 연산 모드의 MAC 연산은, 웨이트 매트릭스 및 벡터 매트릭스에 대한 매트릭스-벡터 곱셈으로 수행되고,
상기 제2 연산 모드의 EW 곱셈 연산은, 웨이트 매트릭스 및 상수에 대한 매트릭스-스칼라 곱셈으로 수행되고,
상기 제2 연산 모드에서의 EW 가산 연산은, 제1 매트릭스 및 제2 매트릭스에 대한 매트릭스 가산으로 수행되며,
상기 제3 연산 모드에서의 누적 연산은, 상기 제1 결과 데이터 및 상기 래치 데이터에 대한 가산으로 수행되는 다중 연산 회로. - 제12항에 있어서,
상기 제1 연산 모드의 MAC 연산 수행을 위해, 상기 제1 선택 신호 및 상기 제2 선택 신호로 상기 제2 로직 레벨 신호가 전송되고, 상기 제3 선택 신호로 상기 제1 로직 레벨 신호가 전송되는 다중 연산 회로. - 제12항에 있어서,
상기 제2 연산 모드의 EW 곱셈 연산 수행을 위해, 상기 제1 선택 신호 및 상기 제3 선택 신호로 상기 제2 로직 레벨 신호가 전송되고, 상기 제2 선택 신호는 비활성화되는 다중 연산 회로. - 제12항에 있어서,
상기 제2 연산 모드의 EW 가산 연산 수행을 위해, 상기 제2 선택 신호 및 상기 제3 선택 신호로 상기 제1 로직 레벨 신호가 전송되고, 상기 제1 선택 신호는 비활성화되는 다중 연산 회로. - 제12항에 있어서,
상기 제3 연산 모드의 누산 연산 수행을 위해, 상기 제1 선택 신호로 상기 제1 로직 레벨 신호가 전송되고, 상기 제2 선택 신호로 상기 제2 로직 레벨 신호가 전송되며, 그리고 상기 제3 선택 신호는 비활성화되는 다중 연산 회로. - 제6항에 있어서,
상기 제1 선택기는, 상기 제1 결과 데이터가 전송되는 제1 입력 단자와, 상기 곱셈기의 출력 단자와 결합되는 제2 입력 단자와, 상기 제1 선택 신호가 전송되는 선택 단자와, 그리고 출력 단자를 갖고,
상기 제2 선택기는, 상기 제1 입력 데이터가 전송되는 제1 입력 단자와, 상기 제1 선택기의 출력 단자와 결합되는 제2 입력 단자와, 상기 제2 선택 신호가 전송되는 선택 단자와, 그리고 상기 가산기의 제1 입력 단자와 결합되는 출력 단자를 갖고,
상기 제3 선택기는, 상기 제2 입력 데이터가 전송되는 제1 입력 단자와, 상기 래치 회로의 출력 단자에 결합되는 제2 입력 단자와, 상기 제2 선택 신호가 전송되는 선택 단자와, 그리고 상기 가산기의 제2 입력 단자에 결합되는 출력 단자를 가지며, 그리고
상기 제4 선택기는, 상기 제1 선택기의 출력 단자 및 상기 제2 선택기의 제2 입력 단자에 공통으로 결합되는 제1 입력 단자와, 상기 가산기의 출력 단자에 결합되는 제2 입력 단자와, 상기 제3 선택 신호가 전송되는 선택 단자와, 그리고 상기 래치 회로의 입력 단자에 결합되는 출력 단자를 갖는 다중 연산 회로. - 제1항에 있어서,
상기 제1 입력 데이터는, 제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 갖는 부동 소수점 형식이고, 상기 제2 입력 데이터는, 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 갖는 부동 소수점 형식이며,
상기 곱셈기는,
상기 제1 부호 비트 및 제2 부호 비트에 대한 XOR 연산을 수행하여 상기 곱셈 데이터의 제3 부호 비트를 출력하는 부호 처리 회로;
상기 제1 지수 비트 및 제2 지수 비트에 대한 가산 연산과, 바이어스값을 감산하는 연산을 수행하여 출력하는 지수 처리 회로;
상기 제1 가수 비트 및 제2 가수 비트에 대한 곱셈 연산을 수행하여 출력하는 가수 처리 회로; 및
상기 지수 처리 회로로부터 출력되는 지수 비트들을 상기 곱셈 데이터의 표준화된 제3 지수 비트들로 변환하고, 상기 가수 처리 회로로부터 출력되는 가수 비트들을 표준화된 제3 가수 비트들로 변환하여 출력하는 정규화기를 포함하는 다중 연산 회로. - 제18항에 있어서, 상기 가산기는,
상기 제1 지수 비트들 및 제2 지수 비트들을 비교하여, 최대 지수 비트들, 지수 차이 비트들, 및 선택 신호를 출력하는 디퍼런스 회로;
상기 제1 부호 비트의 값에 따라 상기 제1 가수 비트들 또는 상기 제1 가수 비트들의 2의 보수를 제1 중간 가수 비트들로 출력하고, 상기 제2 부호 비트의 값에 따라 상기 제2 가수 비트들 또는 상기 제2 가수 비트들의 2의 보수를 제2 중간 가수 비트들로 출력하는 2의 보수 회로;
상기 선택 신호의 로직 레벨에 따라 상기 2의 보수 회로로부터 출력되는 제1 중간 가수 비트들 및 상기 제2 중간 가수 비트들 중 어느 하나에 대한 시프트 동작을 수행하여, 시프트되지 않은 제3 중간 가수 비트들과 시프트된 중간 가수 비트들을 출력하는 시프트 회로;
상기 제3 중간 가수 비트들 및 상기 시프트된 중간 가수 비트들을 가산하여, 상기 가산 데이터의 부호 비트 및 가산 가수 비트들을 생성하고, 제1 출력 단자를 통해 상기 가산 데이터의 부호 비트를 출력하며, 그리고 상기 가산 데이터의 부호 비트의 값에 따라 상기 가산 가수 비트들 또는 상기 가산 가수 비트들의 2의 보수를 제2 출력 단자를 통해 제3 중간 가수 비트들로 출력하는 가산 회로; 및
상기 최대 지수 비트들 및 상기 가산 회로로부터 출력되는 제3 중간 가수 비트들에 대한 표준화 처리를 수행하는 정규화기를 포함하는 다중 연산 회로. - 제1항에 있어서,
상기 제1 입력 데이터는, 제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 갖는 부동 소수점 형식이고, 상기 제2 입력 데이터는, 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 갖는 부동 소수점 형식이며,
상기 곱셈기는, 상기 제1 입력 데이터 및 제2 입력 데이터의 제1 비트 수의 2배인 제3 비트 수의 상기 곱셈 데이터를 출력하고,
상기 가산기는, 상기 제3 비트 수의 상기 가산 데이터를 출력하며, 그리고
상기 래치 회로는, 상기 제3 비트 수의 상기 피드백 데이터를 출력하는 다중 연산 회로. - 제20항에 있어서,
상기 곱셈기는, 상기 제1 입력 데이터의 제1 가수 비트들에 암시 비트가 추가된 데이터와, 상기 제2 입력 데이터의 제2 가수 비트들에 암시 비트가 추가된 데이터에 대한 곱셈 연산을 수행하여 결과 데이터를 출력하는 가수 곱셈기를 포함하되,
상기 가수 곱셈기로부터 출력되는 상기 결과 데이터는, 상기 곱셈기로부터 출력되는 상기 곱셈 데이터의 가수 비트들을 구성하는 다중 연산 회로. - 제20항에 있어서,
상기 래치 회로의 출력 단자에 결합되어 상기 래치 회로로부터 출력되는 데이터를 상기 제1 비트 수의 데이터로 표준화시키는 정규화기를 더 포함하는 다중 연산 회로. - 제22항에 있어서, 상기 정규화기는,
상기 래치 회로로부터 출력되는 데이터의 가수 비트들을 입력받아 이진 소수점을 상기 가수 비트들의 최상위 비트를 향해 1비트 이동시킨 후에 출력시키는 부동 소수점 이동부;
상기 가수 비트들의 최상위 비트값에 따라서 상기 래치 회로로부터 출력되는 데이터의 가수 비트들 또는 상기 부동 소수점 이동부로부터의 출력 데이터를 선택적으로 출력시키는 멀티플렉서;
상기 멀티플렉서로부터 출력되는 데이터에 대해 암시 비트를 포함한 일정 수의 비트들을 제거하고 라운드 처리를 수행하여 상기 제1 비트 수의 데이터의 가수 비트들을 출력하도록 구성되는 라운드 처리부; 및
상기 래치 회로로부터 출력되는 데이터의 지수 비트들과 상기 가수 비트들의 최상위 비트값에 대한 가산 연산을 수행하여 상기 제1 비트 수의 데이터의 지수 비트들을 출력하도록 구성되는 가산기를 포함하는 다중 연산 회로. - 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각을 입력받아 복수의 연산 결과 데이터들 및 결과 데이터를 출력하는 복수의 다중 연산 회로들을 포함하되,
상기 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각은, 상기 복수의 다중 연산 회로들 각각으로 분산되어 입력되고,
상기 복수의 연산 결과 데이터들은, 각각 상기 복수의 다중 연산 회로들로부터 출력되며, 그리고
상기 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제24항에 있어서,
상기 다중 연산 회로들 각각은,
상기 제1 결과 데이터를 입력받고 제2 결과 데이터를 출력하도록 구성되고,
앞의 다중 연산 회로의 상기 제2 결과 데이터가 출력되는 출력 라인이 뒤의 다중 연산 회로의 상기 제1 결과 데이터가 입력되는 입력 라인과 결합되는 방식으로 배치되는 곱셈-누산(MAC) 오퍼레이터. - 제25항에 있어서,
상기 다중 연산 회로들 중 가장 앞에 배치되는 첫번째 다중 연산 회로의 상기 제1 결과 데이터는 "0"의 값으로 고정되는 곱셈-누산(MAC) 오퍼레이터. - 제26항에 있어서,
상기 다중 연산 회로들 중 가장 뒤에 배치되는 마지막 다중 연산 회로는, 상기 제2 결과 데이터를 상기 결과 데이터로서 출력시키도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제25항에 있어서,
상기 복수의 다중 연산 회로들은, "M"행들("M"은 2 이상의 자연수) 및 "N"열들("N"은 2 이상의 자연수)의 웨이트 매트릭스와, "N"행들 및 1열의 벡터 매트릭스에 대한 매트릭스-벡터 곱셈으로 이루어지는 MAC 연산을 수행하여 "M"행들 및 1열의 결과 매트릭스를 생성하되,
상기 MAC 연산은, 제1 MAC 연산 모드에서의 MAC 연산 또는 제2 MAC 모드에서의 MAC 연산으로 수행되는 곱셈-누산(MAC) 오퍼레이터. - 제28항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 중 하나인 제1 행의 "N"개의 웨이트 데이터들 각각과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들 각각을 전송받아 상기 결과 매트릭스의 제1 행의 MAC 결과 데이터를 생성하여 상기 제1 MAC 연산 모드에서의 MAC 연산을 수행하도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제29항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 데이터들 각각과 상기 벡터 데이터들 각각에 대한 곱셈 연산을 수행하여 래치한 후, 앞의 다중 연산 회로로부터 전송되는 상기 제1 결과 데이터와 상기 래치한 데이터를 가산하여 상기 제2 결과 데이터로 뒤의 다중 연산 회로로 전송하는 과정이 첫번째 다중 연산 회로부터 마지막 다중 연산 회로까지 순차적으로 수행되도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제30항에 있어서,
상기 다중 연산 회로들 중 가장 앞에 배치되는 첫번째 다중 연산 회로의 상기 제1 결과 데이터는 "0"의 값으로 고정되어 전송되고,
상기 다중 연산 회로들 중 가장 뒤에 배치되는 마지막 다중 연산 회로는, 사기 마지막 다중 연산 회로에서 생성된 제2 결과 데이터를 상기 결과 매트릭스의 상기 제1 행의 MAC 결과 데이터로서 출력시키는 곱셈-누산(MAC) 오퍼레이터. - 제28항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 각각의 "N"개의 웨이트 데이터들 각각과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들 각각을 순차적으로 전송받아 상기 결과 매트릭스의 상기 "M"개의 행들 각각의 MAC 결과 데이터를 생성하여 상기 제2 MAC 연산 모드에서의 MAC 연산을 수행하도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제32항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 각각의 "N"개의 웨이트 데이터들 각각과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들 각각에 대한 MAC 연산을 제1 열의 웨이트 데이터부터 제"N" 열의 웨이트 데이터까지 "N"회 반복적으로 수행하도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제33항에 있어서,
상기 다중 연산 회로들 각각은, 상기 "N"번째 웨이트 데이터 및 "N"번째 벡터 데이터에 대한 MAC 연산으로 생성되는 MAC 결과 데이터를 상기 연산 결과 데이터로서 출력시키는 곱셈-누산(MAC) 오퍼레이터. - 제25항에 있어서, 상기 다중 연산 회로들 각각은,
상기 다중 연산 회로들 각각에 입력되는 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기;
제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기;
입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로; 및
상기 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 상기 제1 결과 데이터, 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 곱셈 데이터, 및 상기 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제35항에 있어서,
상기 복수의 선택기들은, 상기 제1 연산 모드의 곱셈-누산(MAC) 연산 과정에서, 상기 곱셈기로부터 출력되는 곱셈 데이터 및 상기 피드백 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제35항에 있어서,
상기 복수의 선택기들은, 상기 제2 연산 모드의 엘리먼트-와이즈(EW) 곱셈 연산 과정에서, 상기 곱셈기로부터 출력되는 곱셈 데이터가 상기 래치 회로의 입력 단자로 전송되도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제35항에 있어서,
상기 복수의 선택기들은, 상기 제2 연산 모드의 EW 가산 연산 과정에서, 상기 제1 입력 데이터 및 제2 입력 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제35항에 있어서,
상기 복수의 선택기들은, 상기 제3 연산 모드의 누산 연산 과정에서, 상기 제1 결과 데이터 및 상기 피드백 데이터가 각각 상기 제3 입력 데이터 및 제4 입력 데이터로 상기 가산기에 입력되도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제35항에 있어서,
상기 복수의 다중 연산 회로들은, 제1 내지 제3 선택 신호들을 공통으로 전송받으며,
상기 복수의 선택기들은,
상기 제1 결과 데이터 및 상기 곱셈 데이터를 입력받고, 상기 제1 선택 신호 입력에 응답하여 상기 제1 결과 데이터 또는 상기 곱셈 데이터를 출력하는 제1 선택기;
상기 제1 입력 데이터 및 상기 제1 선택기의 출력 데이터를 입력받고, 상기 제2 선택 신호 입력에 응답하여 상기 제1 입력 데이터 또는 상기 제1 선택기의 출력 데이터를 출력하는 제2 선택기;
상기 제2 입력 데이터 및 상기 피드백 데이터를 입력받고, 상기 제2 선택 신호 입력에 응답하여 상기 제2 입력 데이터 또는 상기 피드백 데이터를 출력하는 제3 선택기; 및
상기 제1 선택기의 출력 데이터 및 상기 가산 데이터를 입력받고, 상기 제3 선택 신호 입력에 응답하여 상기 제1 선택기의 출력 데이터 또는 상기 가산 데이터를 출력하는 제4 선택기를 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제40항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 제3 선택 신호를 입력받아 상기 제3 선택 신호의 로직 레벨을 인버팅하여 상기 제4 선택기로 전송하는 인버터를 더 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제41항에 있어서,
상기 제1 선택기는, 제1 로직 레벨의 상기 제1 선택 신호가 입력되면 상기 제1 결과 데이터를 출력하고, 제2 로직 레벨의 상기 제1 선택 신호가 입력되면 상기 곱셈 데이터를 출력하도록 구성되고,
상기 제2 선택기는, 상기 제1 로직 레벨의 상기 제2 선택 신호가 입력되면 상기 제1 입력 데이터를 출력하고, 상기 제2 로직 레벨의 상기 제2 선택 신호가 입력되면 상기 제1 선택기의 출력 데이터를 출력하고,
상기 제3 선택기는, 상기 제1 로직 레벨의 상기 제2 선택 신호가 입력되면 상기 제2 입력 데이터를 출력하고, 상기 제2 로직 레벨의 상기 제2 선택 신호가 입력되면 상기 피드백 데이터를 출력하며, 그리고
상기 제4 선택기는, 상기 제2 로직 레벨의 상기 제3 선택 신호가 입력되면, 상기 제1 선택기의 출력 데이터를 출력하고, 상기 제1 로직 레벨의 상기 제3 선택 신호가 입력되면 상기 가산 데이터를 출력하는 곱셈-누산(MAC) 오퍼레이터. - 제42항에 있어서,
상기 제2 선택기의 출력 데이터 및 상기 제3 선택기의 출력 데이터는, 각각 상기 제3 입력 데이터 및 제4 입력 데이터를 구성하고,
상기 가산 데이터는 상기 제5 입력 데이터를 구성하는 곱셈-누산(MAC) 오퍼레이터. - 제43항에 있어서,
상기 복수의 다중 연산 회로들은, 상기 복수의 다중 연산 회로들 각각의 래치 회로의 클럭 단자에 공통으로 전송되는 업데이트 신호를 전송받으며,
상기 래치 회로는, 상기 업데이트 신호의 로직 레벨 변경에 동기되여 상기 래치 회로의 입력 단자로 입력되는 상기 제5 입력 데이터를 래치하고, 래치된 데이터를 출력 단자를 통해 상기 피드백 데이터로서 출력시키도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제44항에 있어서, 상기 복수의 다중 연산 회로들 각각은,
상기 가산기로부터 출력되는 상기 가산 데이터를 제2 결과 데이터로 출력시키는 제1 출력 라인; 및
상기 래치 회로부터 출력되는 상기 래치 데이터를 연산 결과 데이터로 출력시키는 제2 출력 라인을 더 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제45항에 있어서,
상기 제1 연산 모드의 MAC 연산은, 웨이트 매트릭스 및 벡터 매트릭스에 대한 매트릭스-벡터 곱셈으로 수행되고,
상기 제2 연산 모드의 EW 곱셈 연산은, 웨이트 매트릭스 및 상수에 대한 매트릭스-스칼라 곱셈으로 수행되고,
상기 제2 연산 모드에서의 EW 가산 연산은, 제1 매트릭스 및 제2 매트릭스에 대한 매트릭스 가산으로 수행되며,
상기 제3 연산 모드에서의 누적 연산은, 상기 제1 결과 데이터 및 상기 래치 데이터에 대한 가산으로 수행되는 곱셈-누산(MAC) 오퍼레이터. - 제46항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 제2 로직 레벨의 상기 제1 선택 신호 및 상기 제2 선택 신호와, 상기 제1 로직 레벨의 상기 제3 선택 신호 입력에 응답하여 상기 제1 연산 모드의 MAC 연산을 수행하도록 구성되는 곱셈-누산(MAC) 오퍼레이터. - 제46항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 제2 로직 레벨의 상기 제1 선택 신호 및 상기 제3 선택 신호 입력에 응답하여 상기 제2 연산 모드의 EW 곱셈 연산을 수행하도록 구성되되, 상기 제2 선택 신호는 비활성화되는 곱셈-누산(MAC) 오퍼레이터. - 제46항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 제1 로직 레벨의 상기 제2 선택 신호 및 상기 제3 선택 신호 입력에 응답하여 상기 제2 연산 모드의 EW 가산 연산을 수행하도록 구성되되, 상기 제1 선택 신호는 비활성화되는 곱셈-누산(MAC) 오퍼레이터. - 제46항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 제1 로직 레벨의 상기 제1 선택 신호 및 상기 제2 로직 레벨의 상기 제2 선택 신호 입력에 응답하여 상기 제3 연산 모드의 누산 연산을 수행하도록 구성되되, 상기 제3 선택 신호는 비활성화되는 곱셈-누산(MAC) 오퍼레이터. - 제40항에 있어서,
상기 제1 선택기는, 상기 제1 결과 데이터가 전송되는 제1 입력 단자와, 상기 곱셈기의 출력 단자와 결합되는 제2 입력 단자와, 상기 제1 선택 신호가 전송되는 선택 단자와, 그리고 출력 단자를 갖고,
상기 제2 선택기는, 상기 제1 입력 데이터가 전송되는 제1 입력 단자와, 상기 제1 선택기의 출력 단자와 결합되는 제2 입력 단자와, 상기 제2 선택 신호가 전송되는 선택 단자와, 그리고 상기 가산기의 제1 입력 단자와 결합되는 출력 단자를 갖고,
상기 제3 선택기는, 상기 제2 입력 데이터가 전송되는 제1 입력 단자와, 상기 래치 회로의 출력 단자에 결합되는 제2 입력 단자와, 상기 제2 선택 신호가 전송되는 선택 단자와, 그리고 상기 가산기의 제2 입력 단자에 결합되는 출력 단자를 가지며, 그리고
상기 제4 선택기는, 상기 제1 선택기의 출력 단자 및 상기 제2 선택기의 제2 입력 단자에 공통으로 결합되는 제1 입력 단자와, 상기 가산기의 출력 단자에 결합되는 제2 입력 단자와, 상기 제3 선택 신호가 전송되는 선택 단자와, 그리고 상기 래치 회로의 입력 단자에 결합되는 출력 단자를 갖는 곱셈-누산(MAC) 오퍼레이터. - 제25항에 있어서,
상기 복수의 제1 입력 데이터들 각각은, 제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 갖는 부동 소수점 형식이고, 상기 복수의 제2 입력 데이터들 각각은, 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 갖는 부동 소수점 형식이며,
상기 곱셈기는,
상기 제1 부호 비트 및 제2 부호 비트에 대한 XOR 연산을 수행하여 상기 곱셈 데이터의 제3 부호 비트를 출력하는 부호 처리 회로;
상기 제1 지수 비트 및 제2 지수 비트에 대한 가산 연산과, 바이어스값을 감산하는 연산을 수행하여 출력하는 지수 처리 회로;
상기 제1 가수 비트 및 제2 가수 비트에 대한 곱셈 연산을 수행하여 출력하는 가수 처리 회로; 및
상기 지수 처리 회로로부터 출력되는 지수 비트들을 상기 곱셈 데이터의 표준화된 제3 지수 비트들로 변환하고, 상기 가수 처리 회로로부터 출력되는 가수 비트들을 표준화된 제3 가수 비트들로 변환하여 출력하는 정규화기를 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제52항에 있어서, 상기 가산기는,
상기 제1 지수 비트들 및 제2 지수 비트들을 비교하여, 최대 지수 비트들, 지수 차이 비트들, 및 선택 신호를 출력하는 디퍼런스 회로;
상기 제1 부호 비트의 값에 따라 상기 제1 가수 비트들 또는 상기 제1 가수 비트들의 2의 보수를 제1 중간 가수 비트들로 출력하고, 상기 제2 부호 비트의 값에 따라 상기 제2 가수 비트들 또는 상기 제2 가수 비트들의 2의 보수를 제2 중간 가수 비트들로 출력하는 2의 보수 회로;
상기 선택 신호의 로직 레벨에 따라 상기 2의 보수 회로로부터 출력되는 제1 중간 가수 비트들 및 상기 제2 중간 가수 비트들 중 어느 하나에 대한 시프트 동작을 수행하여, 시프트되지 않은 제3 중간 가수 비트들과 시프트된 중간 가수 비트들을 출력하는 시프트 회로;
상기 제3 중간 가수 비트들 및 상기 시프트된 중간 가수 비트들을 가산하여, 상기 가산 데이터의 부호 비트 및 가산 가수 비트들을 생성하고, 제1 출력 단자를 통해 상기 가산 데이터의 부호 비트를 출력하며, 그리고 상기 가산 데이터의 부호 비트의 값에 따라 상기 가산 가수 비트들 또는 상기 가산 가수 비트들의 2의 보수를 제2 출력 단자를 통해 제3 중간 가수 비트들로 출력하는 가산 회로; 및
상기 최대 지수 비트들 및 상기 가산 회로로부터 출력되는 제3 중간 가수 비트들에 대한 표준화 처리를 수행하는 정규화기를 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제25항에 있어서,
상기 복수의 제1 입력 데이터들 각각은, 제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 갖는 부동 소수점 형식이고, 상기 복수의 제2 입력 데이터들 각각은, 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 갖는 부동 소수점 형식이며,
상기 곱셈기는, 상기 복수의 제1 입력 데이터들 각각과 상기 복수의 제2 입력 데이터들 각각의 제1 비트 수의 2배인 제3 비트 수의 상기 곱셈 데이터를 출력하고,
상기 가산기는, 상기 제3 비트 수의 상기 가산 데이터를 출력하며, 그리고
상기 래치 회로는, 상기 제3 비트 수의 상기 피드백 데이터를 출력하는 곱셈-누산(MAC) 오퍼레이터. - 제54항에 있어서,
상기 곱셈기는, 상기 복수의 제1 입력 데이터들 각각의 제1 가수 비트들에 암시 비트가 추가된 데이터와, 상기 복수의 제2 입력 데이터들 각각의 제2 가수 비트들에 암시 비트가 추가된 데이터에 대한 곱셈 연산을 수행하여 결과 데이터를 출력하는 가수 곱셈기를 포함하되,
상기 가수 곱셈기로부터 출력되는 상기 결과 데이터는, 상기 곱셈기로부터 출력되는 상기 곱셈 데이터의 가수 비트들을 구성하는 곱셈-누산(MAC) 오퍼레이터로. - 제55항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 래치 회로의 출력 단자에 결합되어 상기 래치 회로로부터 출력되는 데이터를 상기 제1 비트 수의 데이터로 표준화시키는 정규화기를 더 포함하는 곱셈-누산(MAC) 오퍼레이터. - 제56항에 있어서, 상기 정규화기는,
상기 래치 회로로부터 출력되는 데이터의 가수 비트들을 입력받아 이진 소수점을 상기 가수 비트들의 최상위 비트를 향해 1비트 이동시킨 후에 출력시키는 부동 소수점 이동부;
상기 가수 비트들의 최상위 비트값에 따라서 상기 래치 회로로부터 출력되는 데이터의 가수 비트들 또는 상기 부동 소수점 이동부로부터의 출력 데이터를 선택적으로 출력시키는 멀티플렉서;
상기 멀티플렉서로부터 출력되는 데이터에 대해 암시 비트를 포함한 일정 수의 비트들을 제거하고 라운드 처리를 수행하여 상기 제1 비트 수의 데이터의 가수 비트들을 출력하도록 구성되는 라운드 처리부; 및
상기 래치 회로로부터 출력되는 데이터의 지수 비트들과 상기 가수 비트들의 최상위 비트값에 대한 가산 연산을 수행하여 상기 제1 비트 수의 데이터의 지수 비트들을 출력하도록 구성되는 가산기를 포함하는 곱셈-누산(MAC) 오퍼레이터. - 복수의 웨이트 데이터들을 제공하는 복수의 메모리 뱅크들;
복수의 벡터 데이터들을 제공하는 글로벌 버퍼; 및
상기 복수의 웨이트 데이터들 및 상기 복수의 벡터 데이터들에 대한 MAC 연산을 수행하는 복수의 MAC 오퍼레이터들을 포함하되,
상기 복수의 MAC 오퍼레이터들 각각은, 복수의 다중 연산 회로들을 포함하며, 그리고
상기 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제58항에 있어서,
상기 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각은, 상기 복수의 다중 연산 회로들 각각으로 분산되어 입력되고,
상기 복수의 다중 연산 회로들 각각은, 상기 복수의 메모리 뱅크들 각각과 상기 글로벌 버퍼로부터 각각 상기 복수의 웨이트 데이터들 각각과 상기 복수의 벡터 데이터들 각각을 입력받아 복수의 연산 결과 데이터들 및 결과 데이터를 출력도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제58항에 있어서,
상기 다중 연산 회로들 각각은, 상기 제1 결과 데이터를 입력받고 제2 결과 데이터를 출력하되, 앞의 다중 연산 회로의 상기 제2 결과 데이터가 출력되는 출력 라인이 뒤의 다중 연산 회로의 상기 제1 결과 데이터가 입력되는 입력 라인과 결합되는 방식으로 배치되는 프로세싱-인-메모리(PIM) 장치. - 제60항에 있어서,
상기 다중 연산 회로들 중 가장 앞에 배치되는 첫번째 다중 연산 회로의 상기 제1 결과 데이터는 "0"의 값으로 고정되는 프로세싱-인-메모리(PIM) 장치. - 제61항에 있어서,
상기 다중 연산 회로들 중 가장 뒤에 배치되는 마지막 다중 연산 회로는, 상기 제2 결과 데이터를 상기 결과 데이터로서 출력시키도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제58항에 있어서, 상기 다중 연산 회로들 각각은,
상기 다중 연산 회로들 각각에 입력되는 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기;
제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기;
입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로; 및
상기 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 상기 제1 결과 데이터, 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 곱셈 데이터, 및 상기 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함하는 프로세싱-인-메모리(PIM) 장치. - 복수의 웨이트 데이터들을 제공하는 복수의 메모리 뱅크들;
복수의 벡터 데이터들을 제공하는 글로벌 버퍼; 및
상기 복수의 웨이트 데이터들 및 상기 복수의 벡터 데이터들에 대한 MAC 연산을 수행하는 복수의 다중 연산 회로들을 포함하되,
상기 복수의 다중 연산 회로들 각각은, 제1 내지 제3 선택 신호들에 의해 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따른 연산 동작들을 수행하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제64항에 있어서,
상기 복수의 제1 입력 데이터들 각각과 복수의 제2 입력 데이터들 각각은, 상기 복수의 다중 연산 회로들 각각으로 분산되어 입력되고,
상기 복수의 다중 연산 회로들 각각은, 상기 복수의 메모리 뱅크들 각각과 상기 글로벌 버퍼로부터 각각 상기 복수의 웨이트 데이터들 각각과 상기 복수의 벡터 데이터들 각각을 입력받아 복수의 연산 결과 데이터들 및 결과 데이터를 출력하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제65항에 있어서,
상기 복수의 다중 연산 회로들은, "M"행들("M"은 2 이상의 자연수) 및 "N"열들("N"은 2 이상의 자연수)의 웨이트 매트릭스와, "N"행들 및 1열의 벡터 매트릭스에 대한 매트릭스-벡터 곱셈으로 이루어지는 MAC 연산을 수행하여 "M"행들 및 1열의 결과 매트릭스를 생성하되,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 각각의 웨이트 데이터들과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들을 순차적으로 전송받아 상기 결과 매트릭스의 MAC 결과 데이터들을 생성하여 출력하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제66항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 각각의 "N"개의 웨이트 데이터들 각각과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들 각각을 순차적으로 전송받아 상기 결과 매트릭스의 상기 "M"개의 행들 각각의 MAC 결과 데이터를 생성하여 상기 제2 MAC 연산 모드에서의 MAC 연산을 수행하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제67항에 있어서,
상기 복수의 다중 연산 회로들 각각은, 상기 웨이트 매트릭스의 상기 "M"개의 행들 각각의 "N"개의 웨이트 데이터들 각각과 상기 벡터 매트릭스의 "N"개의 벡터 데이터들 각각에 대한 MAC 연산을 제1 열의 웨이트 데이터부터 제"N" 열의 웨이트 데이터까지 "N"회 반복적으로 수행하도록 구성되는 프로세싱-인-메모리(PIM) 장치. - 제68항에 있어서,
상기 다중 연산 회로들 각각은, 상기 "N"번째 웨이트 데이터 및 "N"번째 벡터 데이터에 대한 MAC 연산으로 생성되는 MAC 결과 데이터를 상기 연산 결과 데이터로서 출력시키는 프로세싱-인-메모리(PIM) 장치. - 제64항에 있어서, 상기 다중 연산 회로들 각각은,
상기 다중 연산 회로들 각각에 입력되는 제1 입력 데이터 및 제2 입력 데이터에 대한 곱셈 연산을 수행하여 곱셈 데이터를 출력하는 곱셈기;
제3 입력 데이터 및 제4 입력 데이터에 대한 가산 연산을 수행하여 가산 데이터를 출력하는 가산기;
입력 단자로 전송되는 제5 입력 데이터를 래치하여 피드백 데이터로 출력하는 래치 회로; 및
상기 제1 연산 모드, 제2 연산 모드, 및 제3 연산 모드에 따라 상기 제1 결과 데이터, 상기 제1 입력 데이터, 상기 제2 입력 데이터, 상기 곱셈 데이터, 및 상기 가산 데이터의 전송 경로를 변경시키도록 구성되는 복수의 선택기들을 포함하는 프로세싱-인-메모리(PIM) 장치.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210052016A KR20220145226A (ko) | 2021-04-21 | 2021-04-21 | 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 |
US17/399,844 US20220342637A1 (en) | 2021-04-21 | 2021-08-11 | Multiple operation circuits, multiplication/accumulation operators having the multiple operation circuits, and processing-in-memory devices having the multiple operation circuits |
US17/498,137 US20220342638A1 (en) | 2021-04-21 | 2021-10-11 | Multiplication/accumulation operators having multiple operation circuits |
US17/498,222 US20220342639A1 (en) | 2021-04-21 | 2021-10-11 | Processing-in-memory devices having multiple operation circuits |
CN202210001409.XA CN115220692A (zh) | 2021-04-21 | 2022-01-04 | 多重运算电路、乘法/累加运算器以及存储器内处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210052016A KR20220145226A (ko) | 2021-04-21 | 2021-04-21 | 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220145226A true KR20220145226A (ko) | 2022-10-28 |
Family
ID=83606290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210052016A KR20220145226A (ko) | 2021-04-21 | 2021-04-21 | 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 |
Country Status (3)
Country | Link |
---|---|
US (3) | US20220342637A1 (ko) |
KR (1) | KR20220145226A (ko) |
CN (1) | CN115220692A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240345843A1 (en) * | 2023-04-11 | 2024-10-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing formatted data in computational storage |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831445B1 (en) * | 2018-09-20 | 2020-11-10 | Groq, Inc. | Multimodal digital multiplication circuits and methods |
KR20200057814A (ko) * | 2018-11-13 | 2020-05-27 | 삼성전자주식회사 | 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US11256476B2 (en) * | 2019-08-08 | 2022-02-22 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
US12067373B2 (en) * | 2019-09-25 | 2024-08-20 | Arm Limited | Hybrid filter banks for artificial neural networks |
CN112712172B (zh) * | 2019-10-25 | 2023-12-26 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
US11675624B2 (en) * | 2020-03-29 | 2023-06-13 | Micron Technology, Inc. | Inference engine circuit architecture |
US11861337B2 (en) * | 2020-08-26 | 2024-01-02 | Micron Technology, Inc. | Deep neural networks compiler for a trace-based accelerator |
KR20220071723A (ko) * | 2020-11-24 | 2022-05-31 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
-
2021
- 2021-04-21 KR KR1020210052016A patent/KR20220145226A/ko unknown
- 2021-08-11 US US17/399,844 patent/US20220342637A1/en active Pending
- 2021-10-11 US US17/498,222 patent/US20220342639A1/en active Pending
- 2021-10-11 US US17/498,137 patent/US20220342638A1/en active Pending
-
2022
- 2022-01-04 CN CN202210001409.XA patent/CN115220692A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220342637A1 (en) | 2022-10-27 |
US20220342638A1 (en) | 2022-10-27 |
CN115220692A (zh) | 2022-10-21 |
US20220342639A1 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4139899A (en) | Shift network having a mask generator and a rotator | |
US4281391A (en) | Number theoretic processor | |
Lyon | Two's complement pipeline multipliers | |
KR100267009B1 (ko) | 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치 | |
US4761760A (en) | Digital adder-subtracter with tentative result correction circuit | |
US5897628A (en) | Circuit designing method and circuit designing device | |
US3614400A (en) | Maximum length pulse sequence generators | |
US3733477A (en) | Iterative binary divider utilizing multiples of the divisor | |
US5122982A (en) | Carry generation method and apparatus | |
KR20220145226A (ko) | 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 | |
CN113811900A (zh) | 算术运算装置和算术运算系统 | |
US3878985A (en) | Serial-parallel multiplier using booth{3 s algorithm with combined carry-borrow feature | |
CN113168310A (zh) | 用于转换数字的硬件模块 | |
US3202806A (en) | Digital parallel function generator | |
CN116783577A (zh) | 用于归一化函数的数字电路 | |
US5668748A (en) | Apparatus for two-dimensional discrete cosine transform | |
US4490805A (en) | High speed multiply accumulate processor | |
US5259039A (en) | Method of separating specific patterns from pattern space and apparatus therefor | |
US6061673A (en) | Learning methods in binary systems | |
JP2002505834A (ja) | ディジタルフィルタにおける係数のダイナミックレンジを変更するためのシステム | |
US5424967A (en) | Shift and rounding circuit and method | |
US5570309A (en) | Iterative arithmetic processor | |
KR20220101518A (ko) | 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 | |
CN109388372B (zh) | 一种基于最小模块的三值光学处理器msd乘法计算方法 | |
CN116324933A (zh) | 隐匿msb标准化系统、分散处理装置、隐匿msb标准化方法以及程序 |