KR20220101518A - 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 - Google Patents
곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 Download PDFInfo
- Publication number
- KR20220101518A KR20220101518A KR1020210003632A KR20210003632A KR20220101518A KR 20220101518 A KR20220101518 A KR 20220101518A KR 1020210003632 A KR1020210003632 A KR 1020210003632A KR 20210003632 A KR20210003632 A KR 20210003632A KR 20220101518 A KR20220101518 A KR 20220101518A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- output
- circuit
- mac
- ewm
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/462—Multiplying; dividing
-
- 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/40—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using contact-making devices, e.g. electromagnetic relay
- G06F7/44—Multiplying; Dividing
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1087—Data input latches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
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)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Electromagnetism (AREA)
- Computer Hardware Design (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
곱셈-누산(MAC) 회로는, MAC 오퍼레이터 및 데이터 입력회로를 포함한다. MAC 오퍼레이터는, 웨이트 데이터 및 벡터 데이터에 대한 곱셈-누산(MAC) 연산과 웨이트 데이터 및 상수 데이터에 대한 엘리먼트-와이즈 곱셈(EWM) 연산 중 하나를 선택적으로 수행하도록 구성된다. 데이터 입력회로는, MAC 오퍼레이터가 MAC 연산을 수행하는 경우 웨이트 데이터 및 벡터 데이터를 MAC 오퍼레이터로 제공하고, MAC 오퍼레이터가 EWM 연산을 수행하는 경우 웨이트 데이터 및 상수 데이터를 MAC 오퍼레이터로 제공하도록 구성된다.
Description
본 개시의 여러 실시예들은 곱셈-누산(multiplication and accumulation; 이하 MAC) 회로 및 이를 포함하는 프로세싱-인-메모리(processing-in-memory; 이하 PIM) 장치에 관한 것으로서, 특히 매트릭스와 상수 사이의 엘리먼트-와이즈 곱셈(element-wise multiplication; 이하 EWM) 연산을 수행할 수 있는 MAC 회로 및 이를 포함하는 PIM 장치에 관한 것이다.
최근 정보기술(IT) 산업 뿐만 아니라, 금융, 의료 등 산업 전반에 걸쳐 인공지능에 대한 관심이 급증하고 있다. 이에 따라 다양한 분야에서 인공 지능, 보다 정확하게는 딥 러닝(deep learning)의 도입을 고려하고 시제품화하고 있다. 일반적으로 딥 러닝은, 기존 신경망(neural networks)의 계층 수를 증가시킨 심층 신경망(deep neural networks, DNNs) 또는 심층망(deep networks)을 효과적으로 학습하여 패턴인식(pattern recognition)이나 추론(inference)에 활용하는 기술을 통칭한다.
딥 러닝에 대한 이와 같은 광범위한 관심의 배경과 원인들 중 하나는 연산을 수행하는 프로세서(processor)의 성능 향상일 수 있다. 인공 지능의 성능을 향상시키기 위해서는 신경망(neural network)의 층을 많게는 수백 개 쌓아 학습을 시킨다. 이와 같은 추세는 최근 몇 년간 계속 되었으며, 이로 인해 실제로 연산을 하는 하드웨어에 요구되는 연산량이 기하급수적으로 증가하였다. 더욱이 메모리와 프로세서가 분리되는 기존의 하드웨어 시스템의 경우, 메모리와 프로세서 사이의 데이터 통신양의 제약으로 인공 지능 하드웨어 성능 향상을 저해하고 있다. 이를 해결하기 위해, 최근에는 반도체 칩 자체에서 프로세서와 메모리가 일체화된 PIM 장치가 신경망 컴퓨팅 장치(computing device)로서 사용되고 있는 추세다. PIM 장치는 PIM 장치 내부에서 직접 연산 동작을 수행하므로, 신경망 내에서의 데이터 처리 속도를 향상시킨다.
본 출원이 해결하고자 하는 과제는, 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈에 따른 MAC 연산과, 웨이트 매트릭스와 상수의 매트릭스 곱셈에 따른 EWM 연산을 선택적으로 수행할 수 있는 MAC 회로를 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 상기와 같은 MAC 회로를 갖는 PIM 장치를 제공하는 것이다.
본 개시의 일 예에 따른 MAC 회로는, MAC 오퍼레이터 및 데이터 입력회로를 포함한다. MAC 오퍼레이터는, 웨이트 데이터 및 벡터 데이터에 대한 곱셈-누산(MAC) 연산과 웨이트 데이터 및 상수 데이터에 대한 엘리먼트-와이즈 곱셈(EWM) 연산 중 하나를 선택적으로 수행하도록 구성된다. 데이터 입력회로는, MAC 오퍼레이터가 MAC 연산을 수행하는 경우 웨이트 데이터 및 벡터 데이터를 MAC 오퍼레이터로 제공하고, MAC 오퍼레이터가 EWM 연산을 수행하는 경우 웨이트 데이터 및 상수 데이터를 MAC 오퍼레이터로 제공하도록 구성된다.
본 개시의 일 예에 따른 PIM 장치는, 웨이트 매트릭스의 엘리먼트들로 구성되는 웨이트 데이터들을 저장하는 제1 메모리영역과, 벡터 매트릭스의 엘리먼트들로 구성되는 벡터 데이터들을 저장하는 제2 메모리영역과, 상수 데이터를 저장하는 제3 메모리영역과, 그리고 웨이트 데이터들 및 벡터 데이터들에 대한 MAC 연산 또는 웨이트 데이터들 및 상수 데이터에 대한 EWM 연산을 선택적으로 수행하도록 구성된 MAC 회로를 포함한다.
여러 실시예들에 따르면, MAC 회로를 이용하여, 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈에 따른 MAC 연산과, 웨이트 매트릭스와 상수의 매트릭스 곱셈에 따른 EWM 연산을 선택적으로 수행할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 MAC 회로를 나타내 보인 도면이다.
도 2는 도 1의 데이터 입력 회로의 데이터 선택 회로 구성의 일 예를 나타내 보인 도면이다.
도 3은 도 2의 데이터 선택 회로의 비트 복제 블록의 동작을 설명하기 위해 나타내 보인 도면이다.
도 4는 본 개시의 일 예에 따른 MAC 회로에서 웨이트 매트릭스 및 벡터 매트릭스의 매트릭스 곱셈에 의한 MAC 연산의 일 예를 나타내 보인 도면이다.
도 5는 본 개시의 일 예에 따른 MAC 회로에서 웨이트 매트릭스 및 상수의 매트릭스 곱셈에 의한 EWM 연산의 일 예를 나타내 보인 도면이다.
도 6은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 일 예를 나타내 보인 도면이다.
도 7은 도 1의 MAC 회로에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 8은 도 1의 MAC 회로에서의 EWM 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 9는 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 다른 예를 나타내 보인 도면이다.
도 10은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 또 다른 예를 나타내 보인 도면이다.
도 11은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 또 다른 예를 나타내 보인 도면이다.
도 12는 본 개시의 일 예에 따른 PIM 장치를 나타내 보인 도면이다.
도 2는 도 1의 데이터 입력 회로의 데이터 선택 회로 구성의 일 예를 나타내 보인 도면이다.
도 3은 도 2의 데이터 선택 회로의 비트 복제 블록의 동작을 설명하기 위해 나타내 보인 도면이다.
도 4는 본 개시의 일 예에 따른 MAC 회로에서 웨이트 매트릭스 및 벡터 매트릭스의 매트릭스 곱셈에 의한 MAC 연산의 일 예를 나타내 보인 도면이다.
도 5는 본 개시의 일 예에 따른 MAC 회로에서 웨이트 매트릭스 및 상수의 매트릭스 곱셈에 의한 EWM 연산의 일 예를 나타내 보인 도면이다.
도 6은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 일 예를 나타내 보인 도면이다.
도 7은 도 1의 MAC 회로에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 8은 도 1의 MAC 회로에서의 EWM 연산 동작을 설명하기 위해 나타내 보인 도면이다.
도 9는 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 다른 예를 나타내 보인 도면이다.
도 10은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 또 다른 예를 나타내 보인 도면이다.
도 11은 도 1의 MAC 회로의 MAC 오퍼레이터 구성의 또 다른 예를 나타내 보인 도면이다.
도 12는 본 개시의 일 예에 따른 PIM 장치를 나타내 보인 도면이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 요소를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다. "기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다. "로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.
도 1은 본 개시의 일 예에 따른 MAC 회로(10)를 나타내 보인 도면이다. 도 1을 참조하면, 본 예에 따른 MAC 회로(10)는 MAC 연산 및 EWM 연산을 수행한다. MAC 연산은, 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈으로 수행된다. EWM 연산은, 웨이트 매트릭스와 상수의 매트릭스 곱셈으로 수행된다. 이에 따라 MAC 회로(10)는, MAC 연산을 위해 웨이트 매트릭스 및 벡터 매트릭스로부터 각각 웨이트 데이터 및 벡터 데이터를 입력받는다. 반면에 EWM 연산을 위해, MAC 회로(10)는, 웨이트 매트릭스로부터의 웨이트 데이터 및 상수 데이터를 입력받는다.
MAC 연산을 수행하기 위해, MAC 회로(10)는, 예컨대 메모리 영역으로부터 웨이트 데이터(weight data)(DW<127:0>) 및 벡터 데이터(vector data)(DV<127:0>)를 입력받을 수 있다. MAC 회로(10)는, MAC 연산을 위한 데이터 입력 동작을 제어하는 제1 래치 제어신호(LATCH1)를 입력받을 수 있다. MAC 회로(10)는, MAC 연산 과정에서의 데이터 누산(accumulation) 및 출력 동작을 제어하는 제2 래치 제어신호(LATCH2)를 입력받을 수 있다. MAC 회로(10)는, MAC 연산으로 생성되는 MAC 결과 데이터(MAC_RST)를 출력할 수 있다. MAC 회로(10)는, MAC 연산의 결과 데이터(MAC_RST)를 출력하는 동작을 제어하는 MAC 결과데이터 출력 제어신호(MAC_RD_RST)를 입력받을 수 있다.
EWM 연산을 수행하기 위해, MAC 회로(10)는, 메모리 영역으로부터 웨이트 데이터(DW<127:0>) 및 상수 데이터(constant data)(DC<15:0>)를 입력받을 수 있다. MAC 회로(10)는, EWM 연산에 사용되는 상수 데이터(DC<15:9>)의 입력 동작을 제어하는 제3 래치 제어신호(LATCH3)를 입력받을 수 있다. MAC 회로(10)는, EWM 연산을 위한 데이터 입력 동작을 제어하는 제4 래치 제어신호(LATCH4)를 입력받을 수 있다. MAC 회로(10)는, EWM 연산으로 생성되는 EWM 결과 데이터(EWM_RST)를 출력할 수 있다. MAC 회로(10)는, EWM 연산의 결과 데이터(EWM_RST)를 출력하는 동작을 제어하는 EWM 결과데이터 출력 제어신호(EWM_RD_RST)를 입력받을 수 있다.
구체적으로 MAC 회로(10)는, 데이터 입력 회로(100) 및 MAC 오퍼레이터(200A)를 포함한다. 데이터 입력 회로(100)는, 웨이트 데이터(DW<127:0>), 벡터 데이터(DV<127:0>), 및 상수 데이터(DC<15:0>)를 입력받는다. 웨이트 데이터(DW<127:0>)는 웨이트 매트릭스의 엘리먼트들일 수 있다. 벡터 데이터(DV<128:0>)는 벡터 매트릭스의 엘리먼트들일 수 있다. 상수 데이터(DC<15:0>)는 일정한 값의 상수(constant)에 해당한다. 본 예에서 웨이트 데이터(DW<127:0>) 및 벡터 데이터(DV<127:0>)는 128비트의 크기를 갖고 상수 데이터(DC<15:0>)는 16비트의 크기를 갖지만, 이는 단지 하나의 예일 뿐으로서 웨이트 매트릭스 또는 벡터 매트릭스의 엘리먼트들 각각의 크기 및 MAC 오퍼레이터(200A)의 연산 능력에 따라 더 크거나 작은 크기를 가질 수도 있다.
데이터 입력 회로(100)는, 제1 입력 래치(110)와, 데이터 선택 회로(120)와, 제2 입력 래치(130)와, 그리고 논리합(이하 OR) 연산자(140)를 포함한다. 제1 입력 래치(110)는, 웨이트 데이터(DW<127:0>)를 입력받는다. 데이터 선택 회로(120)는, 벡터 데이터(DV<127:0>) 및 상수 데이터(DC<15:0>와, 플래그 신호(FLAG)와, 그리고 제3 래치 제어신호(LATCH3)를 입력받는다. OR 연산자(140)는, 제1 래치 제어신호(LATCH1) 및 제4 래치 제어신호(LATCH4)를 입력받는다. 일 예에서 제1 래치 제어신호(LATCH1)는, MAC 회로(10)가 MAC 연산 동작을 수행하는 경우 로직하이 레벨을 가질 수 있다. 제4 래치 제어신호(LATCH4)는, MAC 회로(10)가 EWM 연산 동작을 수행하는 경우 로직하이 레벨을 가질 수 있다.
제1 입력래치(110)는, OR 연산자(140)의 출력신호에 동기되어 웨이트 데이터(DW<127:0>)를 MAC 오퍼레이터(200A)로 출력시킨다. 일 예에서 제1 입력래치(110)는, 플립 플롭(flip flop)으로 구성될 수 있다. 데이터 선택 회로(120)는, 제3 래치 제어신호(LATCH3)의 활성화에 따라 상수 데이터(DC<15:0>)를 입력받아 래치한 후, 플래그 신호(FLAG)의 로직레벨에 따라 벡터 데이터(DV<127:0>) 또는 복제된 상수 데이터(DC<127:0>)를 선택적으로 출력시킨다. 데이터 선택 회로(120)의 구성에 대해서는 아래에서 상세하게 설명하기로 한다. 제2 입력래치(130)는, OR 연산자(140)의 출력신호에 동기되어 데이터 선택 회로(120)로부터 선택되어 출력되는 데이터, 즉 벡터 데이터(DV<127:0>) 또는 복제된 상수 데이터(DC<127:0>) 중 하나를 MAC 오퍼레이터(200A)로 출력시킨다. OR 연산자(140)는, 제1 래치 제어신호(LATCH1) 및 제4 래치 제어신호(LATCH4)를 입력받아 OR 연산을 수행한다. OR 연산자(140)는, OR 연산 결과 생성되는 신호를 제1 입력래치(110) 및 제2 입력래치(130)의 클럭단자로 전송한다.
도 2는 도 1의 MAC 회로(10)의 데이터 선택 회로(120)의 일 예를 나타내 보인 도면이다. 그리고 도 3은 도 2의 데이터 선택 회로(120)의 비트 복제 블록(122)에서의 입력 데이터와 출력 데이터를 비교하기 위해 나타내 보인 도면이다. 먼저 도 2를 참조하면, 데이터 선택 회로(120)는, 제3 래치회로(121)와, 비트 복제 블록(bit copy block)(122)과, 그리고 데이터 선택출력기(123)를 포함한다. 제3 래치회로(121)는 상수 데이터(DC<15:0>)를 입력받고, 제3 래치 제어신호(LATCH3)에 동기되어 상수 데이터(DC<15:0>)를 출력시킨다. 비트 복제 블록(122)은, 제3 래치회로(121)로부터 전송되는 상수 데이터(DC<15:0>)를 복수개로 복제하여 복제된 상수 데이터(DC<127:0>)를 출력시킨다. 비트 복제 블록(122)은, 복제된 상수 데이터(DC<127:0>)를 생성하는데 있어서, 복제된 상수 데이터(DC<127:0>)가 웨이트 데이터(DW<127:0>)의 비트수 또는 벡터 데이터(DV<127:0>)의 비트수와 동일한 비트수를 갖도록 한다. 이에 따라 비트 복제 블록(122)은, 16비트에서 128비트로 비트수가 증가된 복제된 상수 데이터(DC<127:0>)를 출력시킨다.
도 3에 나타낸 바와 같이, 상수 데이터(DC<15:0>)로서 16비트의 바이너리 스트림 데이터 "1000010100000001"이 비트 복제 블록(122)에 입력되는 경우를 예로 들기로 한다. 비트 복제 블록(122)은, 16비트의 상수 데이터(DC<15:0>)를 웨이트 데이터(DW<127:0>)의 비트수와 동일한 비트수, 예컨대 128비트로 확장한다. 이때 비트 복제 블록(122)은, 16비트의 상수 데이터(DC<15:0>), 즉 바이너리 스트림 데이터 "1000010100000001"을 복제하여 반복 배치되도록 한다. 본 예의 경우, 복제된 상수 데이터(DC<127:0>)는, 16비트의 상수 데이터(DC<15:0>) 8개가 직렬 방식으로 배치되어 구성된다. 즉 복제된 상수 데이터(DC<127:0>)에 포함된 8개의 상수 데이터(DC<15:0>)들 중 어느 하나의 상수 데이터(DC<15:0>)의 최하위 비트(LSB)은, 인접한 다른 상수 데이터(DC<15:0>)의 최상위 비트(MSB)와 인접하고, 최상위 비트(MSB)은, 인접한 또 다른 상수 데이터(DC<15:0>)의 최하위 비트(LSB)와 인접한다.
다시 도 2를 참조하면, 데이터 선택출력기(123)는, 제1 입력단자(IN1)를 통해 비트 복제 블록(122)으로부터 출력되는 복제된 상수 데이터(DC<127:0>)를 입력받는다. 데이터 선택출력기(123)는, 제2 입력단자(IN2)를 통해 벡터 데이터(DV<127:0>)를 입력받는다. 데이터 선택출력기(123)는, 플래그 신호(FLAG)의 로직레벨에 따라서 제1 입력단자(IN1)로 입력되는 복제된 상수 데이터(DC<127:0>) 또는 제2 입력단자(IN2)로 입력되는 벡터 데이터(DV<127:0>)를 출력단자(OUT)를 통해 출력시킨다. 예컨대 MAC 연산이 요구되는 경우, 로직로우의 플래그 신호(FLAG)가 데이터 선택출력기(123)로 전송된다. 이 경우 데이터 선택출력기(123)는, 제2 입력단자(IN2)를 통해 입력되는 벡터 데이터(DV<127:0>)를 출력단자(OUT)를 통해 출력시킨다. 반면에 EWM 연산이 요구되는 경우, 로직하이의 플래그 신호(FLAG)가 데이터 선택출력기(123)로 전송된다. 이 경우 데이터 선택출력기(123)는, 제1 입력단자(IN1)를 통해 입력되는 복제된 상수 데이터(DC<127:0>)를 출력단자(OUT)를 통해 출력시킨다. 일 예에서 데이터 선택출력기(123)는 2-1 멀티플렉서로 구성될 수 있다.
도 4는 본 개시의 일 예에 따른 MAC 회로(10)의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 4를 참조하면, MAC 회로(10)는, 웨이트 매트릭스(weight matrix)와 벡터 매트릭스(vector matrix)에 대한 매트릭스 곱셈을 수행하여 결과 매트릭스(result matrix)를 생성하는 MAC 연산 동작을 수행한다. 웨이트 매트릭스는 M개의 행들 및 N개의 열들로 구성된다. 벡터 매트릭스 및 결과 매트릭스는, 각각 N개의 행들 및 1개의 열로 구성된다. 웨이트 매트릭스의 행들 개수(M) 및 열들 개수(N)는 다양하게 설정될 수 있다. 본 예에서는 웨이트 매트릭스의 행들 개수(M) 및 열들 개수(N)가 각각 512개인 경우를 예로 들기로 한다. 이 경우 웨이트 매트릭스는, 512개의 행들(R1-R512) 및 512개의 열들(C1-C512)을 가지며, 모두 (512*512)개의 엘리먼트들(elements)(W1.1-W1.512, …, W512.1-W512.512)을 갖는다. 벡터 매트릭스는, 512개의 행들(R1-R512) 및 1개의 열(C1)을 가지며, 모두 512개의 엘리먼트들(V1.1, …, V512.1)을 갖는다.
이와 같은 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈을 수행하는데 있어서, MAC 오퍼레이터(도 1의 200)로 입력되는 웨이트 데이터들 및 벡터 데이터들의 크기는, 웨이트 매트릭스의 엘리먼트들(W1.1-W1.512, …, W512.1-W512.512) 각각과 벡터 매트릭스의 엘리먼트들(V1.1, …, V512.1) 각각의 크기와, MAC 오퍼레이터(200A)가 수행할 수 있는 MAC 연산량에 따라 달라질 수 있다. 예컨대 웨이트 매트릭스 및 벡터 매트릭스에서 엘리먼트들 각각이 2바이트의 크기를 갖고, MAC 오퍼레이터(200A)가 8개의 곱셈기들을 갖는 경우, 본 예에서와 같이 각각 128비트의 웨이트 데이터(DW<127:0>) 및 벡터 데이터(DV<127:0>)가 MAC 오퍼레이터(200A)로 입력된다. 이 경우 MAC 오퍼레이터(200A)로 입력되는 128비트의 웨이트 데이터(DW<127:0>)는, 웨이트 매트릭스의 8개의 엘리먼트들, 예컨대 웨이트 매트릭스의 제1 행(R1)의 제1 열(C1) 내지 제8 열(C8)의 엘리먼트들(W1.1-W1.8)로 구성될 수 있다. 또한 MAC 오퍼레이터(200A)로 입력되는 128비트의 벡터 데이터(DV<127:0>)는, 벡터 매트릭스의 8개의 엘리먼트들, 예컨대 웨이트 매트릭스의 제1 행(R1) 내지 제8 행(R8)의 제1 열(C1)의 엘리먼트들(V1.1-V8.1)로 구성될 수 있다.
MAC 회로(10)의 MAC 연산 동작을 통해서, 결과 데이터(MAC_RST), 예컨대 결과 매트리스의 제1 행(R1) 및 제1 열(C1)의 엘리먼트(MAC_RST1.1)를 얻기 위해서는, 모두 64번의 MAC 연산 동작을 반복 수행하여야 한다. MAC 연산 동작이 매트릭스 곱셈으로 수행되므로, 이 과정에서 곱셈 연산 외에 가산 연산 및 누산 연산이 함께 수행되어야 한다.
도 5는 본 개시의 일 예에 따른 MAC 회로(10)의 EWM 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 5를 참조하면, MAC 회로(10)는, 웨이트 매트릭스와 상수에 대한 매트릭스 곱셈을 수행하여 결과 매트릭스(result matrix)를 생성하는 EWM 연산 동작을 수행한다. 본 예에서도 웨이트 매트릭스가 512개의 행들(R1-R512) 및 512개의 열들(C1-C512)로 구성되는 경우를 예로 들기로 한다. 도 4를 참조하여 설명한 바와 같이, 웨이트 매트릭스는, 모두 (512*512)개의 엘리먼트들(W1.1-W1.512, …, W512.1-W512.512)을 갖는 반면, 상수는 하나의 데이터(C)로 구성된다. MAC 회로(10)의 EWM 연산 동작에 의해 생성되는 결과 데이터(EWM_RST), 예컨대 결과 매트리스는, 웨이트 매트릭스와 동일한 크기를 갖는다. 즉 결과 매트릭스는 512개의 행들(R1-R512) 및 512개의 열들(C1-C512)로 구성된다. 결과 매트릭스의 엘리먼트들 각각은, 웨이트 매트릭스의 엘리먼트들 각각에 상수 데이터(C)가 곱해진 값을 갖는다. 이와 같이 MAC 회로(10)가 EWM 연산을 수행하는데 있어서 곱셈 연산만 요구될 뿐, MAC 연산과 같이 가산 연산 및 누산 연산은 요구되지 않는다.
도 6은 도 1의 MAC 회로(10)의 MAC 오퍼레이터(200A) 구성의 일 예를 나타내 보인 도면이다. 도 6을 참조하면, 본 예에 따른 MAC 오퍼레이터(200A)는, 곱셈 회로(210)와, 데이터출력 선택회로(220)와, 애더 트리(adder tree)(230)와, 누산기(accumulator)(240)와, 그리고 데이터 출력회로(250)를 포함한다. 도 4를 참조하여 설명한 바와 같이, MAC 연산은, 곱셈 연산, 가산 연산, 및 누산 연산을 모두 수행하여야 하므로, MAC 연산을 수행하는 과정에서 곱셈 회로(210), 애더 트리(230), 및 누산기(240)가 모두 동작한다. 반면에 도 5를 참조하여 설명한 바와 같이, EWM 연산은, 곱셈 연산만을 수행하므로, EWM 연산을 수행하는 과정에서 곱셈 회로(210)만 동작하고, 애더 트리(230) 및 누산기(240)는 동작하지 않는다.
구체적으로 곱셈 회로(210)는, 복수, 예컨대 8개의 곱셈기들(MUL0-MUL7)이 상호 병렬로 배치되어 구성된다. 여기서 병렬 배치의 의미는 상호 데이터 입출력 및 연산 동작이 독립적으로 이루어지는 배치 구조를 의미하는 것일 수 있으며, 이하에서 동일하게 적용될 수 있다. 곱셈기들(MUL0-MUL7)들 각각은, 제1 입력데이터들(DA1_0-DA1_7) 각각과, 제2 입력데이터들(DA2_0-DA2_7) 각각을 입력받는다. 곱셈기들(MUL0-MUL7) 각각은, 제1 입력데이터들(DA1_0-DA1_7) 각각과 제2 입력데이터들(DA2_0-DA2_7) 각각에 대한 곱셈 연산을 수행한 후, 그 결과 데이터들(DM_0-DM_7) 각각을 출력시킨다.
데이터출력 선택회로(220)는, 곱셈 회로(210)로부터 출력되는 결과 데이터들(DM_0-DM_7) 각각을 제1 출력경로(261) 및 제2 출력경로(262) 중 선택된 하나의 출력경로를 통해 출력시킨다. 데이터출력 선택회로(320)는, 각각이 하나의 입력단자와 두 개의 출력단자들을 갖는 복수의 1-2 디멀티플렉서들(DEMUX0-DEMUX7)이 상호 병렬로 배치되어 구성될 수 있다. 데이터출력 선택회로(220)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7)의 개수는 곱셈기들(MUL0-MUL7)의 개수와 동일할 수 있다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각의 입력단자는, 곱셈기들(MUL0-MUL7) 각각의 출력단자에 결합된다. 예컨대 제1 디멀티플렉서(DEMUX0)의 입력단자는 제1 곱셈기(MUL0)의 출력단자에 결합된다. 제2 디멀티플렉서(DEMUX1)의 입력단자는 제2 곱셈기(MUL1)의 출력단자에 결합된다. 이와 같은 방식으로 제8 디멀티플렉서(DEMUX7)의 입력단자는 제8 곱셈기(MUL7)의 출력단자에 결합된다.
디멀티플렉서들(DEMUX0-DEMUX7) 각각에서 데이터 출력이 이루어지는 출력라인의 선택은 데이터출력 선택회로(320)로 전송되는 플래그 신호(FLAG)에 의해 이루어질 수 있다. 예컨대 데이터출력 선택회로(220)로 로직로우의 플래그 신호(FLAG)가 전송되면, 디멀티플렉서들(DEMUX0-DEMUX7) 각각은 제1 출력라인(261)으로 곱셈기들(MUL0-MUL7) 각각으로부터 출력되는 출력데이터(DM_0, …, DM_7)를 출력시킨다. 반면에 데이터 선택회로(220)로 로직하이의 플래그 신호(FLAG)가 전송되면, 디멀티플렉서들(DEMUX0-DEMUX7) 각각은 제2 출력라인(262)으로 곱셈기들(MUL0-MUL7) 각각으로부터 출력되는 출력데이터(DM_0, …, DM_7)를 출력시킨다.
디멀티플렉서들(DEMUX0-DEMUX7) 각각의 제1 출력라인(261)은 애더 트리(230)에 결합된다. 이에 따라 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 제1 출력라인(261)을 통해 출력되는 데이터는 애더 트리(230)로 전송된다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각의 제2 출력라인(262)은 데이터 출력 회로(250)에 결합된다. 데이터 출력 회로(250)는, EWM 결과데이터 출력 제어신호(EWM_RD_RST)에 응답하여, EWM 연산의 결과 데이터(EWM_RST)로서 디멀티플렉서들(DEMUX0-DEMUX7) 각각의 제2 출력라인(262)을 통해 전송되는 출력데이터(DM_0, …, DM_7)를 MAC 오퍼레이터(200A) 외부로 출력시킨다.
애더 트리(230)는, 복수의 가산기들(ADDER1, ADDR2, ADDR3)이 트리(tree) 구조로 배열되어 구성된다. 본 예에서 애더 트리(230)를 구성하는 복수의 가산기들(ADDER1, ADDR2, ADDR3) 각각은 반가산기(half-adder)로 구성된다. 그러나 이는 단지 하나의 예로서, 복수의 가산기들(ADDER1, ADDR2, ADDR3) 각각은 전가산기(full-adder)로 구성될 수도 있다. 애더 트리(230)의 최상위 스테이지, 즉 제1 스테이지(ST1)에는 4개의 제1 가산기들(ADDER1)이 상호 병렬로 배치된다. 애더 트리(230)에서 제1 스테이지(ST1) 하위에 배치되는 제2 스테이지(ST2)에는 2개의 제2 가산기들(ADDER2)이 상호 병렬로 배치된다. 최하위 스테이지, 즉 애더 트리(230)에서 제2 스테이지(ST2) 하위에 배치되는 제3 스테이지(ST3)에는 한개의 제3 가산기(ADDER3)가 배치된다. 복수의 가산기들(ADDER1, ADDR2, ADDR3) 각각이 반가산기로 구성되는 경우, 제1 가산기들(ADDR1)의 개수는 곱셈기들(MUL0-MUL7) 개수의 절반일 수 있다. 제2 가산기들(ADDR2)의 개수는, 제1 가산기들(ADDR1) 개수의 절반일 수 있다. 마찬가지로 제3 가산기(ADDR3)의 개수는, 제2 가산기들(ADDER2) 개수의 절반일 수 있다.
제1 스테이지(ST1)의 제1 가산기들(ADDER1) 각각의 제1 및 제2 입력단자는, 데이터출력 선택회로(220)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7) 중 2개의 디멀티플렉서들 각각의 제1 출력라인(261)과 결합한다. 이에 따라 제1 가산기들(ADDR1) 각각은, 데이터출력 선택회로(220)를 통해 전송되는 2개의 곱셈기들(MULs)의 출력 데이터들(DMs)에 대한 가산연산을 수행하고, 그 결과 데이터를 출력시킨다. 제2 스테이지(ST2)의 제2 가산기들(ADDER2) 각각은, 제1 스테이지(ST1)의 2개의 제1 가산기들(ADDER1)의 출력데이터에 대한 가산연산을 수행하고, 그 결과데이터를 출력시킨다. 제3 스테이지(ST3)의 제3 가산기(ADDER3)는, 제2 스테이지(ST2)의 2개의 제2 가산기들(ADDER2)의 출력데이터에 대한 가산연산을 수행하고, 그 결과데이터(DMA)를 출력시킨다.
누산기(240)는, 누적 가산기(ADDR_A)(241) 및 래치 회로(242)를 포함한다. 누적 가산기(ADDR_A)(241)는, 애더 트리(230)의 최하위 스테이지, 즉 제3 스테이지(ST3)의 제3 가산기(ADDR3)로부터 전송되는 출력데이터(DMA)와 래치 회로(242)로부터 전송되는 피드백데이터(DF)에 대한 가산 동작을 수행하여, 누적 가산된 결과 데이터(DMACC)를 출력한다. 일 예에서 누적 가산기(ADDR_A)(241)는 반가산기로 구성될 수 있다. 래치 회로(242)는, 누적 가산기(ADDR_A)(241)로부터 출력되는 누적 가산된 결과 데이터(DMACC)를 입력받는다. 래치 회로(242)는, 누적 가산된 결과 데이터(DMACC)를 래치하여 누적 가산기(ADDR_A)(241)로 피드백데이터(DF)로 전송한다. 일 예에서 래치 회로(242)는 플립플랍을 포함할 수 있다. 도 3을 참조하여 설명한 웨이트 매트릭스의 어느 한 행(R)과 벡터 매트릭스의 매트릭스 곱셈 연산이 종료되면, 래치 회로(242)가 래치하고 있는 누적 가산된 결과 데이터(DMACC)는 데이터 출력 회로(250)로 전송된다. 데이터 출력 회로(250)는, MAC 결과데이터 출력 제어신호(MAC_RD_RST)에 응답하여, 래치 회로(242)로부터 전송되는 누적 가산된 결과 데이터(DMACC)를 MAC 연산 결과 데이터(MAC_RST)로서 출력시킨다.
지금까지 설명한 바와 같이, MAC 오퍼레이터(200A)는 MAC 연산 동작 및 EWM 연산 동작을 모두 수행할 수 있다. MAC 오퍼레이터(200A)가 MAC 연산을 수행하는 경우, 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 데이터는, 제1 출력라인(261)을 통해 애더 트리(230)로 전송되고, 애더 트리(230)에서 가산 연산된 데이터는 누산기(240)로 전송된다. 이에 따라 MAC 연산을 위한 곱셈 연산, 가산 연산, 및 누산 연산이 정상적으로 수행된다. MAC 오퍼레이터(200A)가 EWM 연산을 수행하는 경우, 데이터출력 선택회로(320)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 데이터는 제2 출력라인(262) 및 데이터 출력 회로(250)를 통해 MAC 오퍼레이터(200A) 외부로 출력된다. 이에 따라 EWM 연산을 위한 곱셈 연산이 정상적으로 수행된다.
도 7은 도 1의 MAC 회로(1)에서의 MAC 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 7에서 도 1 및 도 6과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 본 예에서는 도 4를 참조하여 설명한 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈에 의한 MAC 연산 동작을 예로 들기로 한다.
도 7을 참조하면, 데이터 입력회로(100)의 제1 입력래치(110)로 128비트의 웨이트 데이터(DW<127:0>)가 전송된다. 웨이트 데이터(DW<127:0>)는, 웨이트 매트릭스의 제1 행(R1)의 제1 열(C1) 내지 제8 열(C8)의 엘리먼트들(W1.1-W1.8)로 구성된다. 데이터 선택 회로(120)로 128비트의 벡터 데이터(DV<127:0>) 및 16비트의 상수 데이터(DC<15:0>)가 입력된다. 벡터 데이터(DV<127:0>)는, 벡터 매트릭스의 제1 행(R1) 내지 제8 행(R8)의 제1 열(C1)의 엘리먼트들(V1.1-V8.1)로 구성된다. 또한 데이터 선택 회로(120)로 로직로우(L)의 플래그 신호(FLAG) 및 로직로우(L)의 제3 래치 제어신호(LATCH3)가 입력된다. 도 2를 참조하여 설명한 바와 같이, 데이터 선택 회로(120)는, 로직로우(L)의 플래그 신호(FLAG)에 응답하여 128비트의 벡터 데이터(DV<127:0>)를 출력시킨다. 데이터 선택 회로(120)로부터 출력되는 벡터 데이터(DV<127:0>)는 제2 입력래치(130)로 전송된다.
한편 데이터 선택 회로(100)의 OR 연산자(140)에는 로직하이(H)의 제1 래치 제어신호(LATCH1) 및 로직로우(L)의 제4 래치 제어신호(LATCH4)가 입력된다. OR 연산자(140)는 로직하이(H)의 출력신호를 제1 입력래치(110) 및 제2 입력래치(130)에 입력시킨다. 제1 입력래치(110) 및 제2 입력래치(130)는, OR 연산자(140)로부터의 로직하이(H)의 출력신호에 응답하여 128비트의 웨이트 데이터(DW<127:0>) 및 128비트의 벡터 데이터(DV<127:0>)를 각각 MAC 오퍼레이터(200A)로 전송한다.
MAC 오퍼레이터(200A)로 전송되는 128비트의 웨이트 데이터(DW<127:0>)는, 곱셈 회로(210)의 제1 내지 제8 곱셈기(MUL0, …, MUL7)로 하나의 엘리먼트씩 입력된다. 즉 제1 곱셈기(MUL0)에는, 웨이트 매트릭스의 제1 행(R1) 및 제1 열(C1)의 엘리먼트(W1.1)에 해당하는 제1 웨이트 데이터(DW1.1<15:0>)가 입력된다. 제1 웨이트 데이터(DW1.1<15:0>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 웨이트 데이터(DW<127:0>)의 제1 비트부터 제16 비트까지의 바이너리 스트림으로 구성된다. 제2 곱셈기(MUL1)에는, 웨이트 매트릭스의 제1 행(R1) 및 제2 열(C2)의 엘리먼트(W1.2)에 해당하는 제2 웨이트 데이터(DW1.2<31:16>)가 입력된다. 제2 웨이트 데이터(DW1.2<31:16>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 웨이트 데이터(DW<127:0>)의 제17 비트부터 제32 비트까지의 바이너리 스트림으로 구성된다. 마찬가지로 제8 곱셈기(MUL7)에는, 웨이트 매트릭스의 제1 행(R1) 및 제8 열(C8)의 엘리먼트(W1.8)에 해당하는 제8 웨이트 데이터(DW1.8<127:112>)가 입력된다. 제8 웨이트 데이터(DW1.8<127:112>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 웨이트 데이터(DW<127:0>)의 제113 비트부터 제128 비트까지의 바이너리 스트림으로 구성된다.
MAC 오퍼레이터(200A)로 전송되는 128비트의 벡터 데이터(DV<127:0>) 또한, 곱셈 회로(210)의 제1 내지 제8 곱셈기(MUL0, …, MUL7)로 하나의 엘리먼트씩 입력된다. 즉 제1 곱셈기(MUL0)에는, 벡터 매트릭스의 제1 행(R1) 및 제1 열(C1)의 엘리먼트(V1.1)에 해당하는 제1 벡터 데이터(DV1.1<15:0>)가 입력된다. 제1 벡터 데이터(DV1.1<15:0>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 벡터 데이터(DV<127:0>)의 제1 비트부터 제16 비트까지의 바이너리 스트림으로 구성된다. 제2 곱셈기(MUL1)에는, 벡터 매트릭스의 제2 행(R2) 및 제1 열(C1)의 엘리먼트(V2.1)에 해당하는 제2 벡터 데이터(DV2.1<31:16>)가 입력된다. 제2 벡터 데이터(DV2.1<31:16>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 벡터 데이터(DV<127:0>)의 제17 비트부터 제32 비트까지의 바이너리 스트림으로 구성된다. 마찬가지로 제8 곱셈기(MUL7)에는, 벡터 매트릭스의 제8 행(R8) 및 제1 열(C1)의 엘리먼트(V8.1)에 해당하는 제8 벡터 데이터(DV8.1<127:112>)가 입력된다. 제8 벡터 데이터(DV8.1<127:112>)는, 데이터 입력 회로(100)로부터 전송되는 128비트의 벡터 데이터(DV<127:0>)의 제113 비트부터 제128 비트까지의 바이너리 스트림으로 구성된다.
곱셈회로(210)의 곱셈기들(MUL0-MUL7) 각각은, 입력되는 웨이트 데이터 및 벡터 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터(DWV1.1, DWV1.2, …, DWV1.8)를 출력한다. 곱셈기들(MUL0-MUL7) 각각으로부터 출력되는 결과 데이터(DWV1.1, DWV1.2, …, DWV1.8)는, 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로 입력된다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각은, 로직로우(L)의 플래그신호(FLAG)에 응답하여 제1 출력라인(261)으로 결과 데이터(DWV1.1, DWV1.2, …, DWV1.8)를 출력시킨다. 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 결과 데이터(DWV1.1, DWV1.2, …, DWV1.8)는 애더 트리(230)로 전송된다.
애더 트리(230)는, 스테이지별로 가산 동작을 수행하고, 그 결과 데이터를 누산기(240)로 전송한다. 누산기(240)는, 로직하이(H)의 제2 래치 제어신호(LATCH2)에 응답하여 누산 연산을 수행한다. 누산기(240)의 누산 연산에 의해 생성된 데이터는 누산기(240) 내에서 피드백 데이터로 사용되기 위해 래치되며, 또한 데이터 출력 회로(250)로 출력된다. 웨이트 매트릭스의 모든 엘리먼트들 및 벡터 매트릭스의 모든 엘리먼트들에 대한 매트릭스 곱셈이 완료되지 않았으므로, 데이터 출력 회로(250)로 전송되는 MAC 결과데이터 출력 제어신호(MAC_RD_RST) 및 EWM 결과데이터 출력 제어신호(EWM_RD_RST)는 모두 로직로우(L) 레벨을 갖는다.
도 8은 도 1의 MAC 회로(10)에서의 EWM 연산 동작을 설명하기 위해 나타내 보인 도면이다. 도 8에서 도 1 및 도 6과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 본 예에서는 도 5를 참조하여 설명한 웨이트 매트릭스와 상수의 매트릭스 곱셈에 의한 EWM 연산 동작을 예로 들기로 한다.
도 8을 참조하면, 데이터 입력회로(100)의 제1 입력래치(110)로 128비트의 웨이트 데이터(DW<127:0>)가 전송된다. 웨이트 데이터(DW<127:0>)는, 웨이트 매트릭스의 제1 행(R1)의 제1 열(C1) 내지 제8 열(C8)의 엘리먼트들(W1.1-W1.8)로 구성된다. 데이터 선택 회로(120)로 128비트의 벡터 데이터(DV<127:0>) 및 16비트의 상수 데이터(DC<15:0>)가 입력된다. 벡터 데이터(DV<127:0>)는, 벡터 매트릭스의 제1 행(R1) 내지 제8 행(R8)의 제1 열(C1)의 엘리먼트들(V1.1-V8.1)로 구성된다. 또한 데이터 선택 회로(120)로 로직하이(H)의 플래그 신호(FLAG) 및 로직하이(H)의 제3 래치 제어신호(LATCH3)가 입력된다. 도 2 및 도 3을 참조하여 설명한 바와 같이, 데이터 선택 회로(120)의 제3 입력래치(121)는 로직하이(H)의 제3 래치 제어신호(LATCH3)에 응답하여 16비트의 상수 데이터(DC<15:0>)를 비트 복제 블록(122)으로 입력시킨다. 비트 복제 블록(122)은, 16비트의 상수 데이터(DC<15:0>)를 복제하여 128비트의 복제된 상수 데이터(DC<127:0>)를 데이터 선택출력기(123)의 제1 입력단자(IN1)로 전송한다. 데이터 선택출력기(123)는, 로직하이(H)의 플래그 신호(FLAG)에 응답하여 128비트의 복제된 상수 데이터(DC<127:0>)를 출력시킨다. 데이터 선택 회로(120)로부터 출력되는 128비트의 복제된 상수 데이터(DC<127:0>)는 제2 입력래치(130)로 전송된다.
한편 데이터 선택 회로(100)의 OR 연산자(140)에는 로직로우(L)의 제1 래치 제어신호(LATCH1) 및 로직하이(H)의 제4 래치 제어신호(LATCH4)가 입력된다. OR 연산자(140)는 로직하이(H)의 출력신호를 제1 입력래치(110) 및 제2 입력래치(130)에 입력시킨다. 제1 입력래치(110) 및 제2 입력래치(130)는, OR 연산자(140)로부터의 로직하이(H)의 출력신호에 응답하여 128비트의 웨이트 데이터(DW<127:0>) 및 128비트의 복제된 상수 데이터(DC<127:0>)를 각각 MAC 오퍼레이터(200A)로 전송한다.
MAC 오퍼레이터(200A)로 전송되는 128비트의 웨이트 데이터(DW<127:0>)는, 곱셈 회로(210)의 제1 내지 제8 곱셈기(MUL0, …, MUL7)로 하나의 엘리먼트씩 입력된다. 이 과정은 도 7을 참조하여 설명한 과정과 동일하므로 중복되는 설명은 생략하기로 한다. MAC 오퍼레이터(200A)로 전송되는 128비트의 복제된 상수 데이터(DC<127:0>)는, 곱셈 회로(210)의 제1 내지 제8 곱셈기(MUL0, …, MUL7)로 복제되기 전의 상수 데이터(DC<15:0>) 상태로 입력된다.
곱셈회로(210)의 곱셈기들(MUL0-MUL7) 각각은, 입력되는 웨이트 데이터 및 상수 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)를 출력한다. 곱셈기들(MUL0-MUL7) 각각으로부터 출력되는 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)는, 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로 입력된다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각은, 로직하이(H)의 플래그신호(FLAG)에 응답하여 제2 출력라인(262으로 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)를 출력시킨다. 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)는 데이터 출력 회로(250)로 전송된다.
일 예에서 데이터 출력 회로(250)는, 로직하이(H)의 EWM 결과데이터 출력 제어신호(EWM_RD_RST)에 응답하여, 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)를 제1 EWM 결과데이터(EWM_RST1)로서 출력시킬 수 있다. 이 경우 제1 EWM 결과데이터(EWM_RST1)는, 도 5에 나타낸 결과 매트릭스의 제1 행(R1)의 제1 열(C1) 내지 제8 열(C8)의 엘리먼트(C??W1. 1, C??W1. 2, …, C??W1. 8)에 해당한다. 다른 예에서 웨이트 매트릭스의 모든 엘리먼트들과 상수 사이의 매트릭스 곱셈이 완료되지 않았으므로, EWM 결과데이터 출력 제어신호(EWM_RD_RST)는 로직로우(L) 레벨일 수 있다. 이 경우 데이터 출력 회로(250)는 제1 EWM 결과데이터(EWM_RST1)를 출력시키지 않고, 결과 데이터(DWC1.1, DWC1.2, …, DWC1.8)를 출력 대기 상태로 유지시킬 수도 있다.
도 9는 도 1의 MAC 회로(10)의 MAC 오퍼레이터(200B) 구성의 다른 예를 나타내 보인 도면이다. 도 9에서 도 6과 동일한 참조부호는 동일한 구성요소를 나타내며, 따라서 이하에서 중복되는 설명은 생략하기로 한다. 도 9를 참조하면, 본 예에 따른 MAC 오퍼레이터(200B)는, 데이터 출력 선택 회로(220)의 제2 출력단자(262)와 데이터 출력 회로(250) 사이에 배치되는 후처리 회로(post processing circuit)(310)를 더 포함한다. 일 예에서 후처리 회로(310)는 정규화기(normalizer)(311)를 포함할 수 있다.
일반적으로 MAC 오퍼레이터(200B)로 입력되는 제1 입력데이터(DA1) 및 제2 입력데이터(DA2)가 부호(sign), 지수(exponent) 및 가수(mantissa)로 구분되는 부동 소수점(floating point) 형태를 갖는 경우, 곱셈 회로(210)에서 가수를 오른쪽이나 왼쪽으로 이동시키고 지수를 그에 맞게 각각 감소시키거나 증가시키는 정규화(normalization)가 곱셈 결과 데이터에 대해 수행된다. 그러나 MAC 오퍼레이터(200B)의 면적 효율성 향상 등의 이유로 곱셈 회로(210)에서의 정규화를 생략하고, 애더 트리(230) 또는 누산기(240)에서 정규화가 수행되도록 할 수도 있다. 이 경우 곱셈 회로(210)에서의 곱셈 결과 데이터(DM)가 데이터출력 선택회로(220)의 제2 출력라인(262)을 통해 전송되는 EWM 연산의 경우, 정규화가 수행되지 않은 상태로 데이터 출력 회로(250)로부터 출력될 수 있다. 이에 따라 본 예에서 후처리 회로(310)의 정규화기(311)는, 데이터 출력 회로(250)의 제2 출력라인(262)을 통해 출력되는 곱셈 결과 데이터(DM)를 전송받는다. 정규화기(311)는, 곱셈 결과 데이터(DM)에 대한 정규화를 수행하여 정규화된 곱셈 결과 데이터(DMN)를 데이터 출력 회로(250)로 전송한다.
도 10은 도 1의 MAC 회로(10)의 MAC 오퍼레이터(200C) 구성의 또 다른 예를 나타내 보인 도면이다. 도 10에서 도 6과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 10을 참조하면, 본 예에 따른 MAC 오퍼레이터(200C)는, 곱셈 회로(210), 데이터출력 선택회로(220), 누산 회로(420), 애더 회로(430), 및 데이터 출력 회로(250)를 포함한다. 곱셈 회로(210), 데이터출력 선택회로(220), 및 데이터 출력 회로(250)에 대해서는 도 6을 참조하여 이미 설명한 바와 동일하다. 본 예에 따른 MAC 오퍼레이터(200C)에서 MAC 연산은, 복수의 곱셈 연산 및 누산 연산이 수행되고, 그 결과에 대한 가산 연산을 수행함으로써 이루어질 수 있다.
누산 회로(420)는, 상호 병렬로 배치되는 복수의 누산기들(ACC0-ACC7)을 포함한다. 누산기들(ACC0-ACC7) 각각은, 데이터출력 선택회로(220)의 디멀티플렉서들(DEMUX0-DEMUX7) 각각의 제1 출력라인(261)과 결합된다. 이에 따라 제1 누산기(ACC0)는, 제1 곱셈기(MUL0)로부터 출력되어 제1 디멀티플렉서(DEMUX0)의 제1 출력라인(261)을 통해 전송되는 제1 곱셈 결과 데이터(DM_0)에 대한 누산 연산 동작을 수행한다. 제2 누산기(ACC1)는, 제2 곱셈기(MUL1)로부터 출력되어 제2 디멀티플렉서(DEMUX1)의 제1 출력라인(261)을 통해 전송되는 제2 곱셈 결과 데이터(DM_1)에 대한 누산 연산 동작을 수행한다. 나머지 누산기들(ACC2-ACC7)도 동일한 방식으로 누산 연산 동작을 수행한다. 누산기들(ACC0-ACC7) 각각은, 도 6을 참조하여 설명한 누산기(240)와 동일하게 구성될 수 있다. 이하에서는 도 4를 참조하여 설명한 웨이트 매트릭스와 벡터 매트릭스의 매트릭스 곱셈을 예로 들어 MAC 오퍼레이터(200C)의 MAC 연산 동작을 설명하기로 한다. 본 예에 따른 MAC 오퍼레이터(200C)의 EWM 연산 동작은, 도 8을 참조하여 설명한 MAC 오퍼레이터(200A)의 EWM 연산 동작과 동일하다.
도 7을 참조하여 설명한 바와 같이, 첫번째 MAC 연산 동작에서, MAC 오퍼레이터(200C)의 제1 곱셈기(MUL0)에는 웨이트 매트리스의 제1 행(R1) 및 제1 열(C1)의 엘리먼트(W1.1)에 해당하는 웨이트 데이터(DW1.1)와, 벡터 매트릭스의 제1 행(R1) 및 제1 열(C1)의 엘리먼트(V1.1)에 해당하는 벡터 데이터(DV1.1)가 입력된다. 제1 곱셈기(MUL0)는 웨이트 데이터(DW1.1) 및 벡터 데이터(DV1.1)에 대한 곱셈 연산을 수행하여 첫번째 제1 곱셈 결과 데이터(DWV1.1)를 출력시킨다. 데이터출력 선택회로(220)의 제1 디멀티플렉서(DEMUX0)는, 로직로우(L)의 플래그신호(FLAG)에 응답하여 제1 출력라인(261)을 통해 첫번째 제1 곱셈 결과 데이터(DWV1.1)를 제1 누산기(ACC0)로 입력시킨다. 제1 누산기(ACC0)는, 첫번째 제1 곱셈 결과 데이터(DWV1.1)를 래치한다. 나머지 제2 내지 제8 누산기(ACC1, …, ACC7)도 동일한 방식으로 각각 첫번째 제2 내지 제8 곱셈 결과 데이터를 래치한다.
두번째 MAC 연산 동작에서, MAC 오퍼레이터(200C)의 제1 곱셈기(MUL0)에는 웨이트 매트리스의 제1 행(R1) 및 제9 열(C9)의 엘리먼트(W1.9)에 해당하는 웨이트 데이터(DW1.9)와, 벡터 매트릭스의 제9 행(R9) 및 제1 열(C1)의 엘리먼트(V9.1)에 해당하는 벡터 데이터(DV9.1)가 입력된다. 제1 곱셈기(MUL0)는 웨이트 데이터(DW1.9) 및 벡터 데이터(DV1.9)에 대한 곱셈 연산을 수행하여 두번째 제1 곱셈 결과 데이터(DWV1.9)를 출력시킨다. 데이터출력 선택회로(220)의 제1 디멀티플렉서(DEMUX0)는, 로직로우(L)의 플래그신호(FLAG)에 응답하여 제1 출력라인(261)을 통해 두번째 제1 곱셈 결과 데이터(DWV1.9)를 제1 누산기(ACC0)로 입력시킨다. 제1 누산기(ACC0)는, 두번째 제1 곱셈 결과 데이터(DWV1.9)가 첫번째 제1 곱셈 결과 데이터(DWV1.1)에 누산된 첫번째 누산 데이터(DMACC0)를 래치한다. 나머지 제2 내지 제8 누산기(ACC1, …, ACC7)도 동일한 방식으로 각각 두번째 제2 내지 제8 곱셈 결과 데이터를 래치한다.
세번째 내지 64번째 MAC 연산 동작도 동일한 방식으로 수행된다. 64회의 MAC 연산 동작에 의해 웨이트 매트릭스의 제1 행(R)의 엘리먼트들(W1.1-W1.512)과 벡터 매트릭스의 제1 열(C)의 엘리먼트들(V1.1-V512.1)에 대한 매트릭스 곱셈 결과인 결과 매트릭스의 제1 행(R) 및 제1 열(C1)의 엘리먼트(MAC_RST1.1)는 8개로 나누어진 상태로 누산 회로(420)의 누산기들(ACC0-ACC7)에 래치된다. 예컨대 누산 회로(420)의 제1 누산기(ACC0)는, 첫번째 내지 64번째 MAC 연산 과정에서 생성된 제1 곱셈 결과 데이터들이 모두 누산된 최종 제1 곱셈 결과 데이터(DMACC0)를 생성한다. 마찬가지로 나머지 누산기들(ACC1-ACC7) 각각도, 첫번째 내지 64번째 MAC 연산 과정에서 생성된 곱셈 결과 데이터들이 모두 누산된 최종 곱셈 결과 데이터(DMACC)를 생성한다.
누산 회로(420)의 누산기들(ACC0-ACC7) 각각으로부터 생성되는 최종 곱셈 결과 데이터들(DMACC0-DAMCC7)은 애더 회로(430)로 전송된다. 애더 회로(430)는, 최종 곱셈 결과 데이터들(DMACC0-DAMCC7)을 모두 가산하여 전체 누산 결과 데이터(DMACCT)를 생성하여 출력한다. 애더 회로(430)로부터 출력되는 전체 누산 결과 데이터(DAMCCT)는, 웨이트 매트릭스의 제1 행(R)의 엘리먼트들(W1.1-W1.512)과 벡터 매트릭스의 제1 열(C)의 엘리먼트들(V1.1-V512.1)에 대한 매트릭스 곱셈 결과인 결과 매트릭스의 제1 행(R) 및 제1 열(C1)의 엘리먼트(MAC_RST1.1)에 해당한다. 이 전체 누산 결과 데이터(DAMCCT)는, 데이터 출력 회로(250)를 통해 MAC 연산 결과 데이터(MAC_RST)로서 MAC 오퍼레??(200C) 외부로 출력될 수 있다.
도 11은 도 1의 MAC 회로(10)의 MAC 오퍼레이터(200D) 구성의 또 다른 예를 나타내 보인 도면이다. 도 11에서 도 10과 동일한 참조부호는 동일한 구성요소를 나타낸다. 도 11을 참조하면, 본 예에 따른 MAC 오퍼레이터(200D)는, 데이터 출력 선택 회로(220)의 제2 출력단자(262)와 데이터 출력 회로(250) 사이에 배치되는 후처리 회로(310)를 더 포함한다. 일 예에서 후처리 회로(310)는 정규화기(311)를 포함할 수 있다. 후처리 회로(310)에 대해서는 도 9를 참조하여 설명한 바와 동일하다. 이에 따라 후처리 회로(310)의 정규화기(311)는, 데이터 출력 회로(250)의 제2 출력라인(262)을 통해 출력되는 곱셈 결과 데이터(DM)를 전송받는다. 그리고 정규화기(311)는, 곱셈 결과 데이터(DM)에 대한 정규화를 수행하여 정규화된 곱셈 결과 데이터(DMN)를 데이터 출력 회로(250)로 전송한다. 데이터 출력 회로(250)는, 정규화된 곱셈 결과 데이터(DMN)를 EWM 결과데이터(EWM_RST)로 출력시킬 수 있다.
도 12는 본 개시의 일 예에 따른 PIM 장치(500)를 나타내 보인 도면이다. 도 12를 참조하면, 본 예에 따른 PIM 장치(500)는, 커맨드 디코더(command decoder)(510)와, MAC 회로(10)와, 제1 메모리 뱅크(memory bank0)(521)와, 제2 메모리 뱅크(memory bank1)(522)와, 글로벌 버퍼(global buffer)(530)와, 그리고 데이터 입출력 회로(data I/O circuit)(540)를 포함한다. 제1 메모리 뱅크(521)는, 도 4(또는 도 5)의 웨이트 매트릭스의 엘리먼트들(W1.1-W1.512, …, W512.1-W512.512) 중 어느 한 행, 예컨대 제1 행(R1)의 엘리먼트들)에 대응하는 웨이트 데이터들(DW)이 저장되는 제1 메모리영역을 포함할 수 있다. 제2 메모리 뱅크(522)는, 도 4의 벡터 매트릭스의 엘리먼트들(V1.1-V512.1)에 대응하는 벡터 데이터들(DV)이 저장되는 제2 메모리영역을 포함할 수 있다. 글로벌 버퍼(530)는, 도 5의 상수(C)에 대응하는 상수 데이터(DC)가 저장되는 제3 메모리영역을 포함할 수 있다.
MAC 회로(10)는, 제1 메모리 뱅크(521) 및 제2 메모리 뱅크(522)로부터 각각 웨이트 데이터(DW) 및 벡터 데이터(DV)를 전송받아 MAC 연산을 수행할 수 있다. 일 예에서 MAC 회로(10)는, 제1 뱅크 데이터 전송 라인(BIO; Bank data I/O line)(551)을 통해 제1 메모리 뱅크(521)로부터 웨이트 데이터(DW)를 전송받을 수 있다. 또한 MAC 회로(10)는, 제2 뱅크 데이터 전송 라인(552)을 통해 제1 메모리 뱅크(522)로부터 벡터 데이터(DV)를 전송받을 수 있다. 제1 뱅크 데이터 전송 라인(551)은, 제1 메모리 뱅크(521)와 MAC 회로(10) 사이의 데이터 전송 경로를 제공한다. 제2 뱅크 데이터 전송 라인(552)은, 제2 메모리 뱅크(522)와 MAC 회로(10) 사이의 데이터 전송 경로를 제공한다. 제1 메모리 뱅크(521), MAC 회로(10), 및 제2 메모리 뱅크(522)는, 하나의 MAC 유닛(MAC unit)을 구성할 수 있다. 비록 도면에 나타내지는 않았지만, PIM 장치(500)는 복수의 MAC 유닛들을 포함할 수 있다.
MAC 회로(10)는, 제1 메모리 뱅크(521) 및 글로벌 버퍼(530)로부터 각각 웨이트 데이터(DW) 및 상수 데이터(DC)를 전송받아 EWM 연산을 수행할 수 있다. MAC 회로(10)는, 제1 뱅크 데이터 전송 라인(551)을 통해 제1 메모리 뱅크(521)로부터 웨이트 데이터(DW)를 전송받을 수 있다. 또한 MAC 회로(10)는, 글로벌 데이터 전송 라인(GIO; Global data I/O line)(553)을 통해 글로벌 버퍼(530)로부터 상수 데이터(DC)를 전송받을 수 있다. 글로벌 데이터 전송 라인(553)은, PIM 장치(500) 내에서의 다양한 데이터 전송 경로들을 제공한다. 다른 예에서 MAC 회로(10)는, 데이터 입/출력 라인(540)의 데이터단자(DQ)를 통해 외부로부터 전송되는 상수 데이터(DC)를 직접 전송받을 수 있다. 이 경우 데이터 입/출력 라인(540)으로 전송되는 상수 데이터(DC)는, 글로벌 전송 라인(553)을 통해 MAC 회로(10)로 입력될 수 있다.
본 예에 따른 PIM 장치(500)에 있어서, MAC 유닛을 구성하는 MAC 회로(10)는, 도 1 내지 도 11을 참조하여 설명한 MAC 유닛(10)과 동일하게 구성된다. 이에 따라 MAC 회로(10)는, 웨이트 데이터(DW) 및 벡터 데이터(DV)에 대한 MAC 연산 또는 웨이트 데이터(DW) 및 상수 데이터(DC)에 대한 EWM 연산을 선택적으로 수행할 수 있다. MAC 회로(10)의 MAC 연산 동작은, 외부로부터 입력되는 MAC 커맨드(MAC_CMD)에 의해 커맨드 디코더(510)로부터 생성되는 여러 MAC 제어신호들에 의해 제어된다. MAC 회로(10)의 EWM 연산 동작은, 외부로부터 입력되는 EWM 커맨드(EWM_CMD)에 의해 커맨드 디코더(510)로부터 생성되는 여러 EWM 제어신호들에 의해 제어된다.
MAC 커맨드(MAC_CMD)가 전송되면, 커맨드 디코더(510)는, MAC 커맨드(MAC_CMD)에 대한 디코딩을 수행하여, 도 7을 참조하여 설명한 바와 같이, MAC 제어신호들, 예컨대 MAC 리드 제어신호(MAC_RD), 로직하이(H)의 제1 래치 제어신호(LATCH1), 로직하이(H)의 제2 래치 제어신호(LATCH2), 로직로우(L)의 제3 래치 제어신호(LATCH3), 로직로우(L)의 제4 래치 제어신호(LATCH4), 로직로우(L)의 플래그 신호(FLAG), 및 MAC 결과데이터 리드 제어신호(MAC_RD_RST)를 생성할 수 있다. MAC 리드 제어신호(MAC_RD)는, 제1 메모리 뱅크(521) 및 제2 메모리 뱅크(522)로 전송된다. 제1 메모리 뱅크(521) 및 제2 메모리 뱅크(522)는, MAC 리드 제어신호(MAC_RD)에 응답하여 웨이트 데이터(DW) 및 벡터 데이터(DV)를 각각 출력한다. MAC 회로(10)에 의한 MAC 연산이 종료되면, MAC 회로(10)의 MAC 결과데이터 출력 동작을 제어하는 MAC 결과데이터 출력 제어신호(MAC_RD_RST)가 커맨드 디코더(510)로부터 MAC 회로(10)로 전송될 수 있다. MAC 제어신호들에 의한 MAC 회로(10)의 MAC 연산 동작은, 도 7을 참조하여 설명한 바와 동일하다.
EWM 커맨드(EWM_CMD)가 전송되면, 커맨드 디코더(510)는, EWM 커맨드(EWM_CMD)에 대한 디코딩을 수행하여, 도 8을 참조하여 설명한 바와 같이, EWM 제어신호들, 예컨대 EWM 리드 제어신호(EWM_RD), 로직로우(L)의 제1 래치 제어신호(LATCH1), 로직로우(L)의 제2 래치 제어신호(LATCH2), 로직하이(H)의 제3 래치 제어신호(LATCH3), 로직하이(H)의 제4 래치 제어신호(LATCH4), 로직하이(H)의 플래그 신호(FLAG), 및 EWM 결과데이터 리드 제어신호(EWM_RD_RST)를 생성할 수 있다. EWM 리드 제어신호(EWM_RD)는, 제1 메모리 뱅크(521) 및 글로벌 버퍼(530)로 전송된다. 제1 메모리 뱅크(521) 및 글로벌 버퍼(530), EWM 리드 제어신호(EWM_RD)에 응답하여 웨이트 데이터(DW) 및 상수 데이터(DC)를 각각 출력한다. MAC 회로(10)에 의한 EWM 연산이 종료되면, MAC 회로(10)의 EWM 결과데이터 출력 동작을 제어하는 EWM 결과데이터 출력 제어신호(EWM_RD_RST)가 커맨드 디코더(510)로부터 MAC 회로(10)로 전송될 수 있다. EWM 제어신호들에 의한 MAC 회로(10)의 EWM 연산 동작은, 도 8을 참조하여 설명한 바와 동일하다.
이제까지 본 출원 기술에 대하여 실시예들을 중심으로 살펴보았다. 본 출원 기술이 속하는 기술분야에서 통상의 지식을 가진 자는 본 출원 기술이 본 출원 기술의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 출원 기술의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 출원 기술에 포함된 것으로 해석되어야 할 것이다.
10...MAC 회로
100...데이터 입력 회로
110...제1 입력래치 120...데이터 선택 회로
130...제2 입력래치 140...OR 연산자
200...MAC 오퍼레이터
110...제1 입력래치 120...데이터 선택 회로
130...제2 입력래치 140...OR 연산자
200...MAC 오퍼레이터
Claims (52)
- 웨이트 데이터 및 벡터 데이터에 대한 곱셈-누산(MAC) 연산과 상기 웨이트 데이터 및 상수 데이터에 대한 엘리먼트-와이즈 곱셈(EWM) 연산 중 하나를 선택적으로 수행하도록 구성되는 MAC 오퍼레이터; 및
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우 상기 웨이트 데이터 및 상기 벡터 데이터를 상기 MAC 오퍼레이터로 제공하고, 상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우 상기 웨이트 데이터 및 상기 상수 데이터를 상기 MAC 오퍼레이터로 제공하도록 구성되는 데이터 입력회로를 포함하는 MAC 회로. - 제1항에 있어서, 상기 MAC 오퍼레이터는,
복수의 곱셈기들이 상호 병렬로 배치되는 곱셈 회로;
상기 곱셈 회로로부터의 출력데이터를 제1 출력라인 및 제2 출력라인 중에서 선택된 하나의 출력라인을 통해 출력시키는 데이터출력 선택회로;
복수의 가산기들이 트리 구조로 배열되어 구성되는 애더 트리; 및
상기 애더 트리로부터 출력되는 데이터에 대한 누산 연산을 수행하는 누산 기를 포함하는 MAC 회로. - 제2항에 있어서,
상기 데이터 출력 회로의 상기 제1 출력라인은 상기 애더 트리에 결합되는 MAC 회로. - 제3항에 있어서,
상기 누산기의 출력단 및 상기 데이터 출력 회로의 제2 출력라인과 직접 결합되는 데이터 출력 회로를 더 포함하는 MAC 회로. - 제2항에 있어서,
상기 데이터출력 선택회로는, 각각이 상기 복수의 곱셈기들 각각으로부터 출력되는 데이터를 입력받고 상기 제1 출력라인 또는 상기 제2 출력라인으로 출력시키는 복수의 디멀티플렉서들을 포함하는 MAC 회로. - 제5항에 있어서,
상기 복수의 디멀티플렉서들 각각은,
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제1 출력라인을 통해 상기 애더 트리로 전송하고,
상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제2 출력라인을 통해 데이터 출력 회로로 출력시키는 MAC 회로. - 제6항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산기로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 제2 출력라인을 통해 전송되는 데이터를 출력시키도록 구성되는 MAC 회로. - 제6항에 있어서,
상기 MAC 오퍼레이터는, 상기 데이터출력 선택회로의 상기 제2 출력라인과 상기 데이터 출력 회로 사이에 배치되어, 상기 제2 출력라인을 통해 전송되는 데이터에 대한 정규화를 수행하는 정규화기를 더 포함하는 MAC 회로. - 제8항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산기로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 정규화기로부터 전송되는 데이터를 출력시키도록 구성되는 MAC 회로. - 제2항에 있어서, 상기 누산기는,
상기 애더 트리로부터 전송되는 데이터와 피드백 데이터에 대한 가산 동작을 수행하는 누적 가산기; 및
상기 누적 가산기로부터 출력되는 데이터를 래치하여 상기 피드백 데이터로서 상기 누적 가산기로 전송하는 래치 회로를 포함하는 MAC 회로. - 제1항에 있어서, 상기 MAC 오퍼레이터는,
복수의 곱셈기들이 상호 병렬로 배치되는 곱셈 회로;
상기 곱셈 회로로부터의 출력데이터를 제1 출력라인 및 제2 출력라인 중에서 선택된 하나의 출력라인을 통해 출력시키는 데이터출력 선택회로;
복수의 누산기들이 상호 병렬로 배치되는 누산 회로; 및
상기 복수의 누산기들 각각으로부터 출력되는 데이터들에 대한 가산 연산을 수행하는 애더 회로를 포함하는 MAC 회로. - 제11항에 있어서,
상기 데이터 출력 회로의 상기 제1 출력라인은 상기 누산 회로에 결합되는 MAC 회로. - 제12항에 있어서,
상기 애더 회로의 출력단 및 상기 데이터 출력 회로의 제2 출력라인과 직접 결합되는 데이터 출력 회로를 더 포함하는 MAC 회로. - 제11항에 있어서,
상기 데이터출력 선택회로는, 각각이 상기 복수의 곱셈기들 각각으로부터 출력되는 데이터를 입력받고 상기 제1 출력라인 또는 상기 제2 출력라인으로 출력시키는 복수의 디멀티플렉서들을 포함하는 MAC 회로. - 제14항에 있어서,
상기 복수의 디멀티플렉서들 각각은,
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제1 출력라인을 통해 상기 누산 회로로 전송하고,
상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제2 출력라인을 통해 데이터 출력 회로로 출력시키는 MAC 회로. - 제15항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산 회로로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 제2 출력라인을 통해 전송되는 데이터를 출력시키도록 구성되는 MAC 회로. - 제15항에 있어서,
상기 MAC 오퍼레이터는, 상기 데이터출력 선택회로의 상기 제2 출력라인과 상기 데이터 출력 회로 사이에 배치되어, 상기 제2 출력라인을 통해 전송되는 데이터에 대한 정규화를 수행하는 정규화기를 더 포함하는 MAC 회로. - 제17항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산 회로로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 정규화기로부터 전송되는 데이터를 출력시키도록 구성되는 MAC 회로. - 제15항에 있어서, 상기 복수의 누산기들 각각은,
상기 복수의 디멀티플렉서들 각각으로부터 전송되는 데이터와 피드백 데이터에 대한 가산 동작을 수행하는 누적 가산기; 및
상기 누적 가산기로부터 출력되는 데이터를 래치하여 상기 피드백 데이터로서 상기 누적 가산기로 전송하는 래치 회로를 포함하는 MAC 회로. - 제1항에 있어서, 상기 데이터 입력회로는,
상기 웨이트 데이터를 래치하여 상기 MAC 오퍼레이터로 전송하는 제1 입력래치;
상기 웨이트 데이터 및 상기 상수 데이터를 입력받고, 상기 웨이트 데이터 및 상수 데이터 중 하나의 데이터를 선택적으로 출력하는 데이터 선택 회로; 및
상기 데이터 선택 회로로부터 출력되는 데이터를 래치하여 상기 MAC 오퍼레이터로 전송하는 제2 입력래치를 포함하는 MAC 회로. - 제20항에 있어서, 상기 데이터 선택 회로는,
상기 상수 데이터를 래치하여 출력하는 제3 입력래치;
상기 제3 입력래치로부터 출력되는 상기 상수 데이터를 복제하여 복제된 상수 데이터를 출력하는 비트 복제 블록; 및
상기 복제된 상수 데이터 및 상기 벡터 데이터 중 하나를 선택적으로 출력하는 데이터 선택 출력기를 포함하는 MAC 회로. - 제21항에 있어서,
상기 비트 복제 블록은, 상기 복제된 상수 데이터가 상기 웨이트 데이터와 동일한 비트 수를 갖도록 상기 상수 데이터에 대한 복제 동작을 수행하도록 구성되는 MAC 회로. - 제21항에 있어서,
상기 데이터 입력 회로는, MAC 연산 동작을 위한 제1 래치 제어신호 및 EWM 연산 동작을 위한 제4 래치 제어신호에 대한 논리합(OR) 연산을 수행하여 생성된 신호를 상기 제1 입력래치 및 제2 입력래치의 클럭단자에 각각 입력시키는 OR 연산자를 더 포함하는 MAC 회로. - 제23항에 있어서,
상기 제3 입력래치의 상기 상수 데이터 출력은, 제3 래치 제어신호의 제1 로직레벨에 응답하여 수행되고,
상기 데이터 선택 출력기의 출력 데이터 선택은, 플래그 신호의 로직레벨에 따라서 이루어지는 MAC 회로. - 웨이트 매트릭스의 엘리먼트들로 구성되는 웨이트 데이터들을 저장하는 제1 메모리영역;
벡터 매트릭스의 엘리먼트들로 구성되는 벡터 데이터들을 저장하는 제2 메모리영역;
상수 데이터를 저장하는 제3 메모리영역; 및
상기 웨이트 데이터들 및 상기 벡터 데이터들에 대한 MAC 연산 또는 상기 웨이트 데이터들 및 상기 상수 데이터에 대한 EWM 연산을 선택적으로 수행하도록 구성된 MAC 회로를 포함하는 PIM 장치. - 제25항에 있어서,
상기 제1 메모리 영역 및 제2 메모리 영역은, 각각 제1 메모리 뱅크 및 제2 메모리 뱅크에 포함되고,
상기 제3 메모리 영역은, 글로벌 버퍼에 포함되는 PIM 장치. - 제26항에 있어서, 상기 MAC 회로는,
상기 제1 메모리 뱅크로부터 제1 뱅크 데이터 전송 라인을 통해 상기 웨이트 데이터를 전송받고,
상기 제2 메모리 뱅크로부터 제2 뱅크 데이터 전송 라인을 통해 상기 벡터 데이터를 전송받으며, 그리고
상기 글로벌 버퍼로부터 글로벌 데이터 전송 라인을 통해 상기 상수 데이터를 전송받는 PIM 장치. - 제25항에 있어서,
상기 MAC 오퍼레이터는, 외부로부터 전송되는 MAC 커맨드를 디코딩하여 상기 MAC 회로의 MAC 연산 동작을 제어하는 MAC 제어신호들을 생성하고, 외부로부터 전송되는 EWM 커맨드를 디코딩하여 상기 MAC 회로의 EWM 연산 동작을 제어하는 EWM 제어신호들을 생성하도록 구성되는 커맨드 디코더를 더 포함하는 PIM 장치. - 제25항에 있어서, 상기 MAC 회로는,
상기 MAC 연산 또는 상기 EWM 연산을 선택적으로 수행하도록 구성되는 MAC 오퍼레이터; 및
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우 상기 웨이트 데이터 및 상기 벡터 데이터를 상기 MAC 오퍼레이터로 제공하고, 상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우 상기 웨이트 데이터 및 상기 상수 데이터를 상기 MAC 오퍼레이터로 제공하도록 구성되는 데이터 입력회로를 포함하는 PIM 장치. - 제29항에 있어서, 상기 MAC 오퍼레이터는,
복수의 곱셈기들이 상호 병렬로 배치되는 곱셈 회로;
상기 곱셈 회로로부터의 출력데이터를 제1 출력라인 및 제2 출력라인 중에서 선택된 하나의 출력라인을 통해 출력시키는 데이터출력 선택회로;
복수의 가산기들이 트리 구조로 배열되어 구성되는 애더 트리; 및
상기 애더 트리로부터 출력되는 데이터에 대한 누산 연산을 수행하는 누산 기를 포함하는 PIM 장치. - 제30항에 있어서,
상기 데이터 출력 회로의 상기 제1 출력라인은 상기 애더 트리에 결합되는 PIM 장치. - 제31항에 있어서,
상기 MAC 오퍼레이터는, 상기 누산기의 출력단 및 상기 데이터 출력 회로의 제2 출력라인과 직접 결합되는 데이터 출력 회로를 더 포함하는 PIM 장치. - 제30항에 있어서,
상기 데이터출력 선택회로는, 각각이 상기 복수의 곱셈기들 각각으로부터 출력되는 데이터를 입력받고 상기 제1 출력라인 또는 상기 제2 출력라인으로 출력시키는 복수의 디멀티플렉서들을 포함하는 PIM 장치. - 제33항에 있어서,
상기 복수의 디멀티플렉서들 각각은,
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제1 출력라인을 통해 상기 애더 트리로 전송하고,
상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제2 출력라인을 통해 데이터 출력 회로로 출력시키는 PIM 장치. - 제34항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산기로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 제2 출력라인을 통해 전송되는 데이터를 출력시키도록 구성되는 PIM 장치. - 제34항에 있어서,
상기 MAC 오퍼레이터는, 상기 데이터출력 선택회로의 상기 제2 출력라인과 상기 데이터 출력 회로 사이에 배치되어, 상기 제2 출력라인을 통해 전송되는 데이터에 대한 정규화를 수행하는 정규화기를 더 포함하는 PIM 장치. - 제36항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산기로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 정규화기로부터 전송되는 데이터를 출력시키도록 구성되는 PIM 장치. - 제30항에 있어서, 상기 누산기는,
상기 애더 트리로부터 전송되는 데이터와 피드백 데이터에 대한 가산 동작을 수행하는 누적 가산기; 및
상기 누적 가산기로부터 출력되는 데이터를 래치하여 상기 피드백 데이터로서 상기 누적 가산기로 전송하는 래치 회로를 포함하는 PIM 장치. - 제29항에 있어서, 상기 MAC 오퍼레이터는,
복수의 곱셈기들이 상호 병렬로 배치되는 곱셈 회로;
상기 곱셈 회로로부터의 출력데이터를 제1 출력라인 및 제2 출력라인 중에서 선택된 하나의 출력라인을 통해 출력시키는 데이터출력 선택회로;
복수의 누산기들이 상호 병렬로 배치되는 누산 회로; 및
상기 복수의 누산기들 각각으로부터 출력되는 데이터들에 대한 가산 연산을 수행하는 애더 회로를 포함하는 PIM 장치. - 제39항에 있어서,
상기 데이터 출력 회로의 상기 제1 출력라인은 상기 누산 회로에 결합되는 PIM 장치. - 제40항에 있어서,
상기 MAC 오퍼레이터는, 상기 애더 회로의 출력단 및 상기 데이터 출력 회로의 제2 출력라인과 직접 결합되는 데이터 출력 회로를 더 포함하는 PIM 장치. - 제39항에 있어서,
상기 데이터출력 선택회로는, 각각이 상기 복수의 곱셈기들 각각으로부터 출력되는 데이터를 입력받고 상기 제1 출력라인 또는 상기 제2 출력라인으로 출력시키는 복수의 디멀티플렉서들을 포함하는 PIM 장치. - 제42항에 있어서,
상기 복수의 디멀티플렉서들 각각은,
상기 MAC 오퍼레이터가 상기 MAC 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제1 출력라인을 통해 상기 누산 회로로 전송하고,
상기 MAC 오퍼레이터가 상기 EWM 연산을 수행하는 경우, 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제2 출력라인을 통해 데이터 출력 회로로 출력시키는 PIM 장치. - 제43항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산 회로로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 제2 출력라인을 통해 전송되는 데이터를 출력시키도록 구성되는 PIM 장치. - 제43항에 있어서,
상기 MAC 오퍼레이터는, 상기 데이터출력 선택회로의 상기 제2 출력라인과 상기 데이터 출력 회로 사이에 배치되어, 상기 제2 출력라인을 통해 전송되는 데이터에 대한 정규화를 수행하는 정규화기를 더 포함하는 PIM 장치. - 제45항에 있어서,
상기 데이터 출력 회로는, MAC 결과데이터 출력 제어신호에 응답하여 상기 누산 회로로부터 전송되는 데이터를 출력시키고, EWM 결과데이터 출력 제어신호에 응답하여 상기 정규화기로부터 전송되는 데이터를 출력시키도록 구성되는 PIM 장치. - 제43항에 있어서, 상기 복수의 누산기들 각각은,
상기 복수의 디멀티플렉서들 각각으로부터 전송되는 데이터와 피드백 데이터에 대한 가산 동작을 수행하는 누적 가산기; 및
상기 누적 가산기로부터 출력되는 데이터를 래치하여 상기 피드백 데이터로서 상기 누적 가산기로 전송하는 래치 회로를 포함하는 PIM 장치. - 제29항에 있어서, 상기 데이터 입력회로는,
상기 웨이트 데이터를 래치하여 상기 MAC 오퍼레이터로 전송하는 제1 입력래치;
상기 웨이트 데이터 및 상기 상수 데이터를 입력받고, 상기 웨이트 데이터 및 상수 데이터 중 하나의 데이터를 선택적으로 출력하는 데이터 선택 회로; 및
상기 데이터 선택 회로로부터 출력되는 데이터를 래치하여 상기 MAC 오퍼레이터로 전송하는 제2 입력래치를 포함하는 PIM 장치. - 제48항에 있어서, 상기 데이터 선택 회로는,
상기 상수 데이터를 래치하여 출력하는 제3 입력래치;
상기 제3 입력래치로부터 출력되는 상기 상수 데이터를 복제하여 복제된 상수 데이터를 출력하는 비트 복제 블록; 및
상기 복제된 상수 데이터 및 상기 벡터 데이터 중 하나를 선택적으로 출력하는 데이터 선택 출력기를 포함하는 PIM 장치. - 제49항에 있어서,
상기 비트 복제 블록은, 상기 복제된 상수 데이터가 상기 웨이트 데이터와 동일한 비트 수를 갖도록 상기 상수 데이터에 대한 복제 동작을 수행하도록 구성되는 PIM 장치. - 제49항에 있어서,
상기 데이터 입력 회로는, MAC 연산 동작을 위한 제1 래치 제어신호 및 EWM 연산 동작을 위한 제4 래치 제어신호에 대한 논리합(OR) 연산을 수행하여 생성된 신호를 상기 제1 입력래치 및 제2 입력래치의 클럭단자에 각각 입력시키는 OR 연산자를 더 포함하는 PIM 장치. - 제51항에 있어서,
상기 제3 입력래치의 상기 상수 데이터 출력은, 제3 래치 제어신호의 제1 로직레벨에 응답하여 수행되고,
상기 데이터 선택 출력기의 출력 데이터 선택은, 플래그 신호의 로직레벨에 따라서 이루어지는 PIM 장치.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210003632A KR20220101518A (ko) | 2021-01-11 | 2021-01-11 | 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 |
US17/319,717 US20220222044A1 (en) | 2021-01-11 | 2021-05-13 | Multiplication-and-accumulation circuits and processing-in-memory devices having the same |
US17/331,426 US20220222045A1 (en) | 2021-01-11 | 2021-05-26 | Processing-in-memory devices having multiplication-and-accumulation circuits |
CN202110630911.2A CN114756198A (zh) | 2021-01-11 | 2021-06-07 | 乘法累加电路以及包括其的存储器内处理器件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210003632A KR20220101518A (ko) | 2021-01-11 | 2021-01-11 | 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220101518A true KR20220101518A (ko) | 2022-07-19 |
Family
ID=82321851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210003632A KR20220101518A (ko) | 2021-01-11 | 2021-01-11 | 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20220222044A1 (ko) |
KR (1) | KR20220101518A (ko) |
CN (1) | CN114756198A (ko) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848058B1 (en) * | 1999-06-04 | 2005-01-25 | Ati International Srl | Power reduction circuit and method with multi clock branch control |
US6624819B1 (en) * | 2000-05-01 | 2003-09-23 | Broadcom Corporation | Method and system for providing a flexible and efficient processor for use in a graphics processing system |
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
US11586907B2 (en) * | 2018-02-27 | 2023-02-21 | Stmicroelectronics S.R.L. | Arithmetic unit for deep learning acceleration |
US11372804B2 (en) * | 2018-05-16 | 2022-06-28 | Qualcomm Incorporated | System and method of loading and replication of sub-vector values |
KR102664213B1 (ko) * | 2018-10-08 | 2024-05-08 | 삼성전자주식회사 | 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템 |
US10884736B1 (en) * | 2019-03-15 | 2021-01-05 | Cadence Design Systems, Inc. | Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing |
US11210063B2 (en) * | 2019-03-27 | 2021-12-28 | Intel Corporation | Machine learning training architecture for programmable devices |
US11620358B2 (en) * | 2019-05-14 | 2023-04-04 | Intel Corporation | Technologies for performing macro operations in memory |
US11520854B2 (en) * | 2019-10-29 | 2022-12-06 | Meta Platforms, Inc. | Support for different matrix multiplications by selecting adder tree intermediate results |
US20210334636A1 (en) * | 2020-04-28 | 2021-10-28 | Arizona Board Of Regents On Behalf Of Arizona State University | Systolic-cnn: an opencl-defined scalable runtime-flexible programmable accelerator architecture for accelerating convolutional neural network inference in cloud/edge computing |
KR20220015813A (ko) * | 2020-07-31 | 2022-02-08 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
US11244718B1 (en) * | 2020-09-08 | 2022-02-08 | Alibaba Group Holding Limited | Control of NAND flash memory for al applications |
-
2021
- 2021-01-11 KR KR1020210003632A patent/KR20220101518A/ko unknown
- 2021-05-13 US US17/319,717 patent/US20220222044A1/en active Pending
- 2021-05-26 US US17/331,426 patent/US20220222045A1/en active Pending
- 2021-06-07 CN CN202110630911.2A patent/CN114756198A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220222044A1 (en) | 2022-07-14 |
US20220222045A1 (en) | 2022-07-14 |
CN114756198A (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jin et al. | Principles and construction of MSD adder in ternary optical computer | |
US10545865B2 (en) | Systems and methods for implementing low-latency lookup circuits using sparse hash functions | |
EP3686734A1 (en) | Calculation method and related product | |
CN111630502B (zh) | 用于神经网络处理器的统一存储器组织 | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
JPH0312739B2 (ko) | ||
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
CN114930311A (zh) | Fpga重复单元之间的级联通信 | |
CN111045728A (zh) | 一种计算装置及相关产品 | |
EP4345691A1 (en) | Methods and systems for performing channel equalisation on a convolution layer in a neural network | |
CN111627479B (zh) | 编码型闪存装置、系统和编码方法 | |
US20210064339A1 (en) | Arithmetic circuit, and neural processing unit and electronic apparatus including the same | |
EP4206993A1 (en) | Configurable pooling processing unit for neural network accelerator | |
KR20220101518A (ko) | 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치 | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
US11907680B2 (en) | Multiplication and accumulation (MAC) operator | |
CN110837354A (zh) | 基于三值逻辑运算器的msd并行加法器及其构造方法 | |
JP5120263B2 (ja) | パターンマッチング装置及び方法 | |
WO2020108486A1 (zh) | 数据处理装置、方法、芯片及电子设备 | |
KR20200095163A (ko) | 가속 회로에 적합한 합성곱 신경망의 Conv-XP 프루닝 장치 | |
WO2020072619A1 (en) | Addressing bottlenecks for deep neural network execution of a graphics processor unit | |
CN113536221B (zh) | 运算方法、处理器以及相关产品 | |
EP4160485A1 (en) | Methods and devices for configuring a neural network accelerator with a configurable pipeline | |
EP4036704A1 (en) | Multiplier |