KR20210093126A - Processing-In-Memory(PIM) system and operating method of the PIM system - Google Patents
Processing-In-Memory(PIM) system and operating method of the PIM system Download PDFInfo
- Publication number
- KR20210093126A KR20210093126A KR1020200006903A KR20200006903A KR20210093126A KR 20210093126 A KR20210093126 A KR 20210093126A KR 1020200006903 A KR1020200006903 A KR 1020200006903A KR 20200006903 A KR20200006903 A KR 20200006903A KR 20210093126 A KR20210093126 A KR 20210093126A
- Authority
- KR
- South Korea
- Prior art keywords
- mac
- data
- pim
- operator
- output
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title abstract description 4
- 239000011159 matrix material Substances 0.000 claims description 319
- 238000000034 method Methods 0.000 claims description 140
- 230000005540 biological transmission Effects 0.000 claims description 35
- 230000006870 function Effects 0.000 claims description 30
- 238000012546 transfer Methods 0.000 claims description 30
- 230000004913 activation Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 79
- 238000009825 accumulation Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 20
- 238000013528 artificial neural network Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000001186 cumulative effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 102100021568 B-cell scaffold protein with ankyrin repeats Human genes 0.000 description 2
- 101000971155 Homo sapiens B-cell scaffold protein with ankyrin repeats Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001934 delay 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
Abstract
Description
본 개시의 여러 실시예들은, 프로세싱-인-메모리(Processing-In-Memory; 이하 PIM) 시스템에 관한 것으로서, 특히 PIM 장치 및 PIM 컨트롤러를 포함하는 PIM 시스템 및 그 동작 방법에 관한 것이다.Various embodiments of the present disclosure relate to a Processing-In-Memory (PIM) system, and more particularly, to a PIM system including a PIM device and a PIM controller, and an operating method thereof.
최근 정보기술(IT) 산업 뿐만 아니라, 금융, 의료 등 산업 전반에 걸쳐 인공지능에 대한 관심이 급증하고 있다. 이에 따라 다양한 분야에서 인공 지능, 보다 정확하게는 딥 러닝(deep learning)의 도입을 고려하고 시제품화하고 있다. 일반적으로 딥 러닝은, 기존 신경망(neural networks)의 계층 수를 증가시킨 심층 신경망(deep neural networks, DNNs) 또는 심층망(deep networks)을 효과적으로 학습하여 패턴인식(pattern recognition)이나 추론(inference)에 활용하는 기술을 통칭한다.Recently, interest in artificial intelligence is rapidly increasing not only in the information technology (IT) industry, but also in the financial and medical industries. Accordingly, the introduction of artificial intelligence, more precisely, deep learning, is being considered and prototyped in various fields. In general, deep learning is used for pattern recognition or inference by effectively learning deep neural networks (DNNs) or deep networks that have increased the number of layers of existing neural networks. referred to as the technology used.
딥 러닝에 대한 이와 같은 광범위한 관심의 배경과 원인들 중 하나는 연산을 수행하는 프로세서(processor)의 성능 향상일 수 있다. 인공 지능의 성능을 향상시키기 위해서는 신경망(neural network)의 층을 많게는 수백 개 쌓아 학습을 시킨다. 이와 같은 추세는 최근 몇 년간 계속 되었으며, 이로 인해 실제로 연산을 하는 하드웨어에 요구되는 연산량이 기하급수적으로 증가하였다. 더욱이 메모리와 프로세서가 분리되는 기존의 하드웨어 시스템의 경우, 메모리와 프로세서 사이의 데이터 통신양의 제약으로 인공 지능 하드웨어 성능 향상을 저해하고 있다. 이를 해결하기 위해, 최근에는 반도체 칩 자체에서 프로세서와 메모리가 일체화된 PIM 장치가 신경망 컴퓨팅 장치(computing device)로서 사용되고 있는 추세다. PIM 장치는 PIM 장치 내부에서 직접 연산 동작을 수행하므로, 신경망 내에서의 데이터 처리 속도를 향상시킨다.One of the backgrounds and causes of such widespread interest in deep learning may be an improvement in the performance of a processor that performs computations. In order to improve the performance of artificial intelligence, learning is done by stacking up to hundreds of layers of neural networks. This trend has continued in recent years, and as a result, the amount of computation required for the hardware that actually performs the computation has increased exponentially. Moreover, in the case of the existing hardware system in which the memory and the processor are separated, the improvement of the artificial intelligence hardware performance is hindered by the limitation of the amount of data communication between the memory and the processor. In order to solve this problem, a PIM device in which a processor and a memory are integrated in a semiconductor chip itself has recently been used as a neural network computing device. Since the PIM device directly performs a calculation operation inside the PIM device, the data processing speed in the neural network is improved.
본 출원이 해결하고자 하는 과제는, PIM 장치의 곱셈-누적 가산(multiplying-accumulating; 이하 MAC) 연산이 PIM 컨트롤러에 의해 수행되도록 구성되고, 더욱이 MAC 연산이 확정적(deterministic) 방식으로 이루어지도록 할 수 있는 PIM 시스템 및 그 동작 방법을 제공하는 것이다.The problem to be solved by the present application is that the multiplying-accumulating (hereinafter MAC) operation of the PIM device is configured to be performed by the PIM controller, and furthermore, the MAC operation can be performed in a deterministic manner. To provide a PIM system and an operating method thereof.
본 개시의 일 예에 따른 PIM 시스템은, PIM 장치 및 PIM 컨트롤러를 포함한다. 상기 PIM 장치는, 제1 저장영역과, 제2 저장영역과, 그리고 상기 제1 저장영역 및 제2 저장영역으로부터 각각 제1 데이터 및 제2 데이터를 전송받아 곱셈-누적 가산(MAC) 연산을 수행하는 MAC 오퍼레이터를 포함한다. 상기 PIM 컨트롤러는, 상기 PIM 장치의 메모리 모드 동작 및 MAC 모드 동작을 제어하되, 상기 메모리 모드에서는 메모리 커맨드 신호를 생성하여 상기 PIM 장치로 전송하고, 상기 MAC 모드에서는 제1 내지 제5 MAC 커맨드 신호를 상기 PIM 장치로 전송하도록 구성된다.A PIM system according to an example of the present disclosure includes a PIM device and a PIM controller. The PIM device receives first data and second data from a first storage area, a second storage area, and the first and second storage areas, respectively, and performs a multiply-accumulate addition (MAC) operation MAC operator that does The PIM controller controls a memory mode operation and a MAC mode operation of the PIM device, and generates and transmits a memory command signal to the PIM device in the memory mode, and receives first to fifth MAC command signals in the MAC mode and transmit to the PIM device.
본 개시의 일 예에 따른 PIM 시스템은, PIM 장치 및 PIM 컨트롤러를 포함한다. 상기 PIM 장치는, 저장영역과, 글로벌 버퍼와, 그리고 상기 저장영역 및 글로벌 버퍼로부터 각각 제1 데이터 및 제2 데이터를 전송받아 MAC 연산을 수행하는 MAC 오퍼레이터를 포함한다. 상기 PIM 컨트롤러는, 상기 PIM 장치의 메모리 모드 동작 및 MAC 모드 동작을 제어하되, 상기 메모리 모드에서는 메모리 커맨드 신호를 생성하여 상기 PIM 장치로 전송하고, 상기 MAC 모드에서는 제1 내지 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하도록 구성된다.A PIM system according to an example of the present disclosure includes a PIM device and a PIM controller. The PIM device includes a storage area, a global buffer, and a MAC operator that receives first data and second data from the storage area and the global buffer, respectively, and performs a MAC operation. The PIM controller controls a memory mode operation and a MAC mode operation of the PIM device, and generates and transmits a memory command signal to the PIM device in the memory mode, and receives first to fourth MAC command signals in the MAC mode and transmit to the PIM device.
본 개시의 일 예에 따른 PIM 시스템의 동작 방법은, MAC 연산을 수행하는 PIM 장치와, 상기 PIM 장치의 MAC 연산 동작을 제어하는 PIM 컨트롤러를 포함하는 PIM 시스템의 동작방법에 있어서, 상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 제1 저장장치로부터 MAC 연산을 위한 MXN(M, N은 1보다 큰 자연수)의 웨이트 매트릭스의 R행(R은 "1"로 초기 세팅됨) 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제2 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 제2 저장장치로부터 MAC 연산을 위한 NX1의 벡터 매트릭스의 제1열 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제3 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 R행 원소들에 대한 입력 래치가 수행되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 벡터 매트릭스의 제1열 원소들에 대한 입력 래치가 수행되도록 하는 단계와, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계와, 상기 PIM 컨트롤러로부터 제5 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 매트릭스 곱셈 연산 결과인 결과 데이터에 대한 출력 래치가 수행되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제6 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 출력 래치된 결과 데이터가 상기 MAC 오퍼레이터로부터 출력되도록 하는 단계와, 그리고 상기 R을 +1 증가시킨 후 상기 R이 마지막 행보다 같거나 작은 경우 상기 단계들을 반복하여 수행하는 단계를 포함한다.A method of operating a PIM system according to an example of the present disclosure is a method of operating a PIM system including a PIM device for performing a MAC operation and a PIM controller for controlling a MAC operation operation of the PIM device. A first MAC command signal is transmitted to the PIM device, and from the first storage device of the PIM device, an R row (R is “1”) of a weight matrix of MXN (M, N is a natural number greater than 1) for MAC operation. initially set) elements are input to a MAC operator of the PIM device, and transmitting a second MAC command signal from the PIM controller to the PIM device, and NX1 for MAC operation from a second storage device of the PIM device allowing the elements of the first column of the vector matrix to be input to the MAC operator of the PIM device, and sending a third MAC command signal from the PIM controller to the PIM device, so that the R row of the weight matrix in the MAC operator performing input latching on elements, and transmitting a fourth MAC command signal from the PIM controller to the PIM device, so that the input latching of the first column elements of the vector matrix is performed in the MAC operator performing a matrix multiplication operation of elements in the R-th row of the weight matrix and elements in the first column of the vector matrix in the MAC operator; and sending a fifth MAC command signal from the PIM controller to the PIM. transmitting to the device so that output latching is performed on the result data, which is the result of the matrix multiplication operation, in the MAC operator; and transmitting a sixth MAC command signal from the PIM controller to the PIM device, in the MAC operator allowing the output latched result data to be output from the MAC operator, and when R is less than or equal to the last row after increasing R by +1, the step It includes the step of repeatedly performing the steps.
본 개시의 일 예에 따른 PIM 시스템의 동작 방법은, MAC 연산을 수행하는 PIM 장치와, 상기 PIM 장치의 MAC 연산 동작을 제어하는 PIM 컨트롤러를 포함하는 PIM 시스템의 동작방법에 있어서, 상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 저장장치로부터 MAC 연산을 위한 MXN(M, N은 1보다 큰 자연수)의 웨이트 매트릭스의 R행(R은 "1"로 초기 세팅됨) 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계와, 상기 PIM 장치의 글로벌 버퍼로부터 MAC 연산을 위한 NX1의 벡터 매트릭스의 제1열 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제2 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들 및 상기 벡터 매트릭스의 제1열 원소들에 대한 입력 래치가 수행되도록 하는 단계와, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계와, 상기 PIM 컨트롤러로부터 제3 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 매트릭스 곱셈 연산 결과인 결과 데이터에 대한 출력 래치가 수행되도록 하는 단계와, 상기 PIM 컨트롤러로부터 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 출력 래치된 결과 데이터가 상기 MAC 오퍼레이터로부터 출력되도록 하는 단계와, 그리고 상기 R을 +1 증가시킨 후 상기 R이 마지막 행보다 같거나 작은 경우 상기 단계들을 반복하여 수행하는 단계를 포함한다.A method of operating a PIM system according to an example of the present disclosure is a method of operating a PIM system including a PIM device for performing a MAC operation and a PIM controller for controlling a MAC operation operation of the PIM device. A first MAC command signal is transmitted to the PIM device, and the R row (R is “1” initially set to “1”) of a weight matrix of MXN (M, N are natural numbers greater than 1) for MAC operation from the storage device of the PIM device. allowing elements to be input to the MAC operator of the PIM device, and allowing the first column elements of the vector matrix of NX1 for MAC operation to be input from the global buffer of the PIM device to the MAC operator of the PIM device; , by transmitting a second MAC command signal from the PIM controller to the PIM device, so that an input latch for the elements of the Rth row of the weight matrix and the elements of the first column of the vector matrix is performed in the MAC operator performing a matrix multiplication operation of elements in the R-th row of the weight matrix and elements in the first column of the vector matrix in the MAC operator; and sending a third MAC command signal from the PIM controller to the PIM device. sending an output latch on the result data that is the result of the matrix multiplication operation in the MAC operator; and transmitting a fourth MAC command signal from the PIM controller to the PIM device, so that the MAC operator allowing output latched result data to be output from the MAC operator, and repeating the above steps when R is equal to or smaller than the last row after increasing R by +1.
여러 실시예들에 따르면, PIM 장치의 MAC 연산이 PIM 컨트롤러에 의해 수행되고, 특히 MAC 연산이 확정적 방식으로 수행되도록 구성되는 PIM 시스템 및 그 동작 방법을 제공할 수 있다는 이점이 제공된다.According to various embodiments, it is possible to provide a PIM system and a method of operating the same, wherein the MAC operation of the PIM device is performed by the PIM controller, and in particular, the MAC operation is configured to be performed in a deterministic manner.
도 1은 본 개시의 일 예에 따른 PIM 시스템을 나타내 보인 블록도이다.
도 2는 본 개시의 일 예에 따른 PIM 시스템에서 PIM 컨트롤러의 MAC 커맨드 발생기로부터 출력되는 MAC 커맨드를 설명하기 위해 나타내 보인 도면이다.
도 3은 본 개시의 일 예에 따른 PIM 시스템에서 PIM 장치의 MAC 오퍼레이터 구성의 일 예를 나타내 보인 블록도이다.
도 4는 본 개시의 일 예에 따른 PIM 시스템에서 수행되는 MAC 연산의 일 예를 나타내 보인 도면이다.
도 5는 본 개시의 일 예에 따른 PIM 시스템에서 도 4의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 6 내지 도 12는 본 개시의 일 예에 따른 PIM 시스템에서 도 4의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 13은 본 개시의 일 예에 따른 PIM 시스템에서 수행되는 MAC 연산의 다른 예를 나타내 보인 도면이다.
도 14는 본 개시의 일 예에 따른 PIM 시스템에서 도 13의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 15는 본 개시의 일 예에 따른 PIM 시스템에서 도 14의 MAC 연산을 수행하기 위한 MAC 오퍼레이터 구성의 일 예를 나타내 보인 도면이다.
도 16은 본 개시의 일 예에 따른 PIM 시스템에서 수행되는 MAC 연산의 또 다른 예를 나타내 보인 도면이다.
도 17은 본 개시의 일 예에 따른 PIM 시스템에서 도 16의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 18는 본 개시의 일 예에 따른 PIM 시스템에서 도 16의 MAC 연산을 수행하기 위한 MAC 오퍼레이터 구성의 일 예를 나타내 보인 도면이다.
도 19는 본 개시의 다른 예에 다른 PIM 시스템을 나타내 보인 도면이다.
도 20은 본 개시의 다른 예에 따른 PIM 시스템에서 PIM 컨트롤러의 MAC 커맨드 발생기로부터 출력되는 MAC 커맨드를 설명하기 위해 나타내 보인 도면이다.
도 21은 본 개시의 다른 예에 따른 PIM 시스템에서 도 4의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 22 내지 도 25는 본 개시의 다른 예에 따른 PIM 시스템에서 도 4의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 도면들이다.
도 26은 본 개시의 다른 예에 따른 PIM 시스템에서 도 13의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 27은 본 개시의 다른 예에 따른 PIM 시스템에서 도 16의 MAC 연산을 수행하는 과정을 설명하기 위해 나타내 보인 플로챠트이다.
도 28은 본 개시의 또 다른 예에 다른 PIM 시스템을 나타내 보인 블록도이다.
도 29는 본 개시의 또 다른 예에 다른 PIM 시스템을 나타내 보인 블록도이다.1 is a block diagram illustrating a PIM system according to an example of the present disclosure.
2 is a diagram illustrating a MAC command output from a MAC command generator of a PIM controller in a PIM system according to an example of the present disclosure.
3 is a block diagram illustrating an example of a configuration of a MAC operator of a PIM device in a PIM system according to an example of the present disclosure.
4 is a diagram illustrating an example of a MAC operation performed in a PIM system according to an example of the present disclosure.
5 is a flowchart illustrating a process of performing the MAC operation of FIG. 4 in the PIM system according to an example of the present disclosure.
6 to 12 are diagrams illustrating a process of performing the MAC operation of FIG. 4 in the PIM system according to an example of the present disclosure.
13 is a diagram illustrating another example of a MAC operation performed in a PIM system according to an example of the present disclosure.
14 is a flowchart illustrating a process of performing the MAC operation of FIG. 13 in the PIM system according to an example of the present disclosure.
15 is a diagram illustrating an example of a MAC operator configuration for performing the MAC operation of FIG. 14 in a PIM system according to an example of the present disclosure.
16 is a diagram illustrating another example of a MAC operation performed in a PIM system according to an example of the present disclosure.
17 is a flowchart illustrating a process of performing the MAC operation of FIG. 16 in the PIM system according to an example of the present disclosure.
18 is a diagram illustrating an example of a MAC operator configuration for performing the MAC operation of FIG. 16 in a PIM system according to an example of the present disclosure.
19 is a diagram illustrating a PIM system according to another example of the present disclosure.
20 is a diagram illustrating a MAC command output from a MAC command generator of a PIM controller in a PIM system according to another example of the present disclosure.
21 is a flowchart illustrating a process of performing the MAC operation of FIG. 4 in a PIM system according to another example of the present disclosure.
22 to 25 are diagrams illustrating a process of performing the MAC operation of FIG. 4 in a PIM system according to another example of the present disclosure.
26 is a flowchart illustrating a process of performing the MAC operation of FIG. 13 in a PIM system according to another example of the present disclosure.
27 is a flowchart illustrating a process of performing the MAC operation of FIG. 16 in a PIM system according to another example of the present disclosure.
28 is a block diagram illustrating another PIM system according to another example of the present disclosure.
29 is a block diagram illustrating another PIM system according to another example of the present disclosure.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 요소를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다. "기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다. "로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.In the description of examples of the present application, descriptions such as "first" and "second" are for distinguishing elements, and are not used to limit the members themselves or to mean a specific order. A description that one component is “connected” or “connected” to another component may be directly or electrically connected to another component or may be connected to another component, or another separate component in the middle. Components may be interposed to form a connection relationship or a connection relationship. The term "preset" means that when a parameter is used in a process or algorithm, the value of the parameter is predetermined. The value of the parameter may be set when a process or algorithm is started or set during a period during which the process or algorithm is performed, according to an embodiment. “Logic high level” and “logic low level” are used to describe the logic levels of signals. A signal having a “logic high level” is distinguished from a signal having a “logic low level”. For example, when the signal having the first voltage corresponds to the “logic high level”, the signal having the second voltage may correspond to the “logic low level”. According to an embodiment, the “logic high level” may be set to a voltage greater than the “logic low level”. Meanwhile, the logic levels of the signals may be set to different logic levels or opposite logic levels according to embodiments. For example, a signal having a logic high level may be set to have a logic low level according to an embodiment, and a signal having a logic low level may be set to have a logic high level according to an embodiment.
이하, 실시예를 통하여 본 발명을 더욱 상세히 설명하기로 한다. 이들 실시예는 단지 본 발명을 예시하기 위한 것이며, 본 발명의 권리 보호 범위가 이들 실시예에 의해 제한되는 것은 아니다.Hereinafter, the present invention will be described in more detail through examples. These examples are only for illustrating the present invention, and the scope of protection of the rights of the present invention is not limited by these examples.
도 1에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)의 블록도가 개략적으로 도시되어 있다. 도 1에 나타낸 바와 같이, PIM 시스템(10)은, PIM 장치(100) 및 PIM 컨트롤러(200)를 포함하여 구성된다. PIM 장치(100)는, 제1 메모리 뱅크(BANK0)(111)와, 제2 메모리 뱅크(BANK1)(112)와, MAC 오퍼레이터(MAC OPERATOR)(120)와, 인터페이스(I/F)(131)와, 그리고 데이터 입출력 패드(DQ)(132)를 포함하여 구성될 수 있다. PIM 장치(100)의 제1 메모리 뱅크(111), 제2 메모리 뱅크(BANK1), 및 MAC 오퍼레이터(120)는 하나의 MAC 유닛(MAC UNIT)을 구성한다. 다른 예에서, PIM 장치(100)는 복수의 MAC 유닛들을 포함할 수 있다. 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)는 데이터가 저장되는 영역으로, 예컨대 디램(DRAM)을 구성하는 메모리 영역 단위일 수 있다. 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)는, 독립적으로 활성화(active)될 수 있는 단위이며, PIM 장치(100) 내의 데이터 입출력 라인과 동일한 데이터 버스 폭(data bus width)을 가질 수 있다. 일 예에서 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)는, 다른 메모리 뱅크가 액세스되는 동안 활성화 동작이 병행하여 진행되는 인터리빙(interleaving) 방식으로 동작할 수 있다. 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)는, 복수의 로우들(rows) 및 컬럼들(columns)의 교차점들 각각에 메모리 단위 셀이 배치되어 구성되는 적어도 하나의 메모리 셀 어레이를 포함할 수 있다.1 schematically shows a block diagram of a
도면에 나타내지는 않았지만, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 인접한 영역에는 코어(core)가 배치될 수 있다. 코어는, X-디코더들(XDEC) 및 Y-디코더들/입출력회로들(YDEC/IO)을 포함할 수 있다. X-디코더(XDEC)는, 워드라인 디코더 또는 로우 디코더로 명명되기도 한다. X-디코더(XDEC)는, PIM 컨트롤러(200)로부터 전송되는 로우 어드레스(ADD_R)를 수신하고, 수신된 로우 어드레스(ADD_R)를 디코딩하여 선택된 메모리 뱅크의 선택된 로우를 인에이블시킨다. Y-디코더들/입출력회로들(YDEC/IO) 각각은, Y-디코더(YDEC) 및 입출력회로(IO)를 포함할 수 있다. Y-디코더(YDEC)는, 비트라인 디코더 또는 컬럼 디코더로 명명되기도 한다. Y-디코더(YDEC)는, PIM 컨트롤러(200)로부터 전송되는 컬럼 어드레스(ADDR_C)를 수신하고, 수신된 컬럼 어드레스(ADDR_C)를 디코딩하여 선택된 메모리 뱅크 내에서 선택된 로우의 컬럼들 중 선택된 컬럼들을 인에이블시킨다. 입출력회로(IO)는, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 대한 리드 동작에서 리드 데이터를 감지 증폭하기 위한 입출력 센스앰프(IO sense amp)를 포함할 수 있다. 또한 입출력회로(IO)는, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 대한 라이트 동작에서 라이트 데이터를 드라이빙하기 위한 라이트 드라이버(write driver)를 포함할 수 있다.Although not shown in the drawing, a core may be disposed in an area adjacent to the
PIM 장치(100)의 인터페이스(131)는, PIM 컨트롤러(200)로부터 메모리 커맨드(M_CMD), MAC 커맨드들(MAC_CMDs), 뱅크선택신호(BS), 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 수신받는다. 인터페이스(131)는, 수신된 메모리 커맨드(M_CMD)를 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)와 함께 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)로 전송한다. 인터페이스(131)는, 수신된 MAC 커맨드들(MAC_CMDs)을 제1 메모리 뱅크(111), 제2 메모리 뱅크(112), 및 MAC 오퍼레이터(120)로 전송한다. 이때 인터페이스(131)는, 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)로 함께 전송시킬 수도 있다. PIM 장치(100)의 데이터 입출력 패드(132)는, PIM 장치(100) 내의 제1 및 제2 메모리 뱅크(111, 112) 및 MAC 오퍼레이터(120)와 PIM 장치(100)의 외부 사이의 데이터 통신 터미널로 기능한다. 여기서 PIM 장치(100)의 외부는, PIM 시스템(10)을 구성하는 PIM 컨트롤러(200)이거나, 또는 PIM 시스템(10) 외부의 호스트일 수 있다. 이에 따라 호스트 또는 PIM 컨트롤러(200)로부터 전송되는 데이터는, 데이터 입출력 패드(132)를 통해 PIM 장치(100) 내부로 입력될 수 있다. 또한 PIM 장치(100) 내의 데이터는 데이터 입출력 패드(132)를 통해 PIM 장치(100) 외부로 전송될 수 있다.The
PIM 컨트롤러(200)는, PIM 장치(100)의 동작을 제어한다. 일 예에서 PIM 컨트롤러(200)는, PIM 장치(100)의 메모리 모드 동작을 제어하거나, 또는 MAC 모드 동작을 제어할 수 있다. PIM 컨트롤러(200)가 PIM 장치(100)를 메모리 모드로 동작되도록 제어하는 경우, PIM 장치(100)에서 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 대한 데이터 리드 동작 및 데이터 라이트 동작이 수행될 수 있다. PIM 컨트롤러(200)가 PIM 장치(100)를 MAC 모드로 동작되도록 제어하는 경우, PIM 장치(100)에서 MAC 오퍼레이터(120)에 의한 MAC 연산 동작이 수행될 수 있다. PIM 컨트롤러(200)가 PIM 장치(100)를 MAC 모드로 동작되도록 제어하는 경우, PIM 장치(100)에서 MAC 연산을 위해 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 데이터를 라이트하고 리드하는 동작이 수행될 수도 있다.The
PIM 컨트롤러(200)는, 커맨드 큐(210), 스케줄러(220), 메모리 커맨드 발생기(230), MAC 커맨드 발생기(240), 및 어드레스 발생기(250)를 포함하여 구성될 수 있다. 커맨드 큐(210)는, PIM 시스템(10)의 외부, 예컨대 호스트로부터 전송되는 커맨드(CMD)를 전송받아 저장한다. 커맨드 큐(210)는, 커맨드(CMD)를 저장할 때마다 커맨드(CMD)의 저장 상태에 관한 정보를 스케줄러(220)로 전송할 수 있다. 커맨드 큐(210)에 저장되는 커맨드(CMD)는, 스케줄러(220)에 의해 정해진 순서대로 메모리 커맨드 발생기(230) 또는 MAC 커맨드 발생기(240)로 전송된다. 커맨드 큐(210)로부터 출력되는 커맨드(CMD)가 PIM 장치(100)의 메모리 모드 동작을 요청하는 커맨드인 경우, 커맨드 큐(210)는 커맨드(CMD)를 메모리 커맨드 발생기(230)로 전송한다. 반면에 커맨드 큐(210)로부터 출력되는 커맨드(CMD)가 PIM 장치(100)의 MAC 모드 동작을 요청하는 커맨드인 경우, 커맨드 큐(210)는 커맨드(CMD)를 MAC 커맨드 발생기(240)로 전송한다. 커맨드(CMD)가 어떤 모드 동작을 요청하는지에 대한 정보는 스케줄러(220)로부터 제공될 수 있다.The
스케줄러(220)는, 커맨드 큐(210)에 저장되어 있는 커맨드(CMD)가 커맨드 큐(210)로부터 출력되는 타이밍을 조절한다. 이를 위해, 스케줄러(220)는, 커맨드 큐(210)로부터 전송되는 커맨드(CMD) 저장 상태에 관한 정보를 분석하여, 적절한 순서대로 커맨드(CMD)가 처리되도록 커맨드(CMD) 처리 순서를 재조정한다. 스케줄러(220)는, 커맨드 큐(210)로부터 출력되는 커맨드(CMD)가 PIM 장치(100)의 메모리 모드 동작을 요청하는 것인지, 아니면 MAC 모드 동작을 요청하는 것인지에 대한 정보를 커맨드 큐(210)에 전송할 수 있다. 이를 위해 스케줄러(220)는 모드 선택기(221)를 포함할 수 있다. 모드 선택기(221)는, 커맨드 큐(210)에 저장되어 있는 커맨드(CMD)가 PIM 장치(100)의 메모리 모드 동작을 요청하는 커맨드인지, 아니면 MAC 모드 동작을 요청하는 커맨드인지에 관한 모드 선택 신호를 커맨드 큐(210)에 전송할 수 있다.The
메모리 커맨드 발생기(230)는, 커맨드 큐(210)로부터 PIM 장치(100)의 메모리 모드 동작을 요청하는 커맨드(CMD)를 전송받는다. 메모리 커맨드 발생기(230)는, 전송된 커맨드(CMD)를 디코딩하여 메모리 커맨드(M_CMD)를 생성하여 출력한다. 메모리 커맨드 발생기(230)로부터 출력되는 메모리 커맨드(M_CMD)는 PIM 장치(100)로 전송된다. 일 예에서 메모리 커맨드(M_CMD)는, 메모리 리드 커맨드 및 메모리 라이트 커맨드를 포함할 수 있다. 메모리 커맨드 발생기(230)로부터 메모리 리드 커맨드가 출력되는 경우, PIM 장치(100)는 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 대한 데이터 리드 동작을 수행한다. PIM 장치(100)에서 리드된 데이터는, 데이터 입출력 라인(132)을 통해 PIM 장치(100) 외부로 전송된다. PIM 장치(100)로부터 출력되는 리드 데이터는, PIM 컨트롤러(200)를 통해 호스트로 전송될 수 있다. 메모리 커맨드 발생기(230)로부터 메모리 라이트 커맨드가 출력되는 경우, PIM 장치(100)는 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 대한 데이터 라이트 동작을 수행한다. 이때 PIM 장치(100)에 라이트할 데이터는, 호스트로부터 PIM 컨트롤러(200)를 통해 PIM 장치(100)로 전송된다. PIM 장치(100)로 전송된 라이트 데이터는, 데이터 입출력 라인(132)을 통해 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 전송된다.The
MAC 커맨드 발생기(240)는, 커맨드 큐(210)로부터 PIM 장치(100)의 MAC 모드 동작을 요청하는 커맨드(CMD)를 전송받는다. MAC 커맨드 발생기(240)는, 전송된 커맨드(CMD)를 디코딩하여 MAC 커맨드들(MAC_CMDs)를 생성하여 출력한다. MAC 커맨드 발생기(240)로부터 출력되는 MAC 커맨드들(MAC_CMDs)는 PIM 장치(100)로 전송된다. MAC 커맨드 발생기(240)로부터 전송되는 MAC 커맨드들(MAC_CMDs)에 의해, PIM 장치(100)의 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)에 대한 데이터 리드 동작과, MAC 오퍼레이터(120)의 MAC 연산 동작이 제어된다. MAC 커맨드들(MAC_CMDs) 및 그에 따른 PIM 장치(100)의 MAC 모드 동작에 대해서는 아래에서 도 2를 참조하여 보다 상세하게 설명하기로 한다. 어드레스 발생기(250)는, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112) 중 하나의 뱅크를 선택하는 뱅크선택신호(BS)를 생성하여 PIM 장치(100)로 전송한다. 또한 어드레스 발생기(250)는, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112)의 액세스할 영역을 지정하는 로우 어드레스(ADDR_R) 및 컬럼 어드레스(ADDR/C)를 생성하여 PIM 장치(100)로 전송한다.The
도 2에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 PIM 컨트롤러(200)를 구성하는 MAC 커맨드 발생기(240)로부터 발생되는 MAC 커맨드들(MAC_CMDs)이 도시되어 있다. 도 2에 나타낸 바와 같이, MAC 커맨드들(MAC_CMDs)은, 제1 내지 제6 MAC 커맨드 신호를 포함할 수 있다. 일 예에서 제1 MAC 커맨드 신호는, 제1 MAC 리드 신호(MAC_RD_BK0)일 수 있다. 제2 MAC 커맨드 신호는, 제2 MAC 리드 신호(MAC_RD_BK1)일 수 있다. 제3 MAC 커맨드 신호는, 제1 MAC 입력 래치 신호(MAC_L1)일 수 있다. 제4 MAC 커맨드 신호는, 제2 MAC 입력 래치 신호(MAC_L2)일 수 있다. 제5 MAC 커맨드 신호는, MAC 출력 래치 신호(MAC_L3)일 수 있다. 그리고 제6 MAC 커맨드 신호는, MAC 래치 리셋 신호(MAC_L_RST)일 수 있다.FIG. 2 shows MAC commands MAC_CMDs generated from the
제1 MAC 리드 신호(MAC_RD_BK0)는, 제1 메모리 뱅크(111)로부터 제1 데이터, 예컨대 웨이트 데이터를 리드하여 MAC 오퍼레이터(120)로 전송하는 동작을 제어한다. 제2 MAC 리드 신호(MAC_RD_BK1)는, 제2 메모리 뱅크(112)로부터 제2 데이터, 예컨대 벡터 데이터를 리드하여 MAC 오퍼레이터(120)로 전송하는 동작을 제어한다. 제1 MAC 입력 래치 신호(MAC_L1)는, 제1 메모리 뱅크(111)로부터 MAC 오퍼레이터(120)로 전송되는 웨이트 데이터에 대한 입력 래치 동작을 제어한다. 제2 MAC 입력 래치 신호(MAC_L2)는, 제2 메모리 뱅크(112)로부터 MAC 오퍼레이터(120)로 전송되는 벡터 데이터에 대한 입력 래치 동작을 제어한다. 웨이트 데이터 및 벡터 데이터에 대한 입력 래치 동작이 이루어지면, MAC 오퍼레이터(120)는 MAC 연산을 수행하고, 연산 결과인 MAC 결과 데이터를 생성한다. MAC 출력 래치 신호(MAC_L3)는, MAC 오퍼레이터(120) 내에서 생성되는 MAC 결과 데이터에 대한 출력 래치 동작을 제어한다. 그리고 MAC 래치 리셋 신호(MAC_L_RST)는, MAC 오퍼레이터(120) 내에서 생성되는 MAC 결과 데이터의 출력 동작과, MAC 오퍼레이터(120) 내에서의 출력 래치에 대한 리셋 동작을 제어한다.The first MAC read signal MAC_RD_BK0 controls an operation of reading first data, for example, weight data, from the
본 예에 따른 PIM 시스템(10)는, 확정적(deterministic) MAC 연산 동작을 수행하도록 구성된다. 본 개시에서 사용되는 용어 "확정적(deterministic) MAC 연산 동작"은, PIM 시스템(10) 내에서 수행되는 MAC 연산 동작이 사전에 정해져서 고정되어 있는 시간 동안 이루어지는 것으로 정의될 수 있다. 이에 따라 PIM 컨트롤러(200)로부터 PIM 장치(100)로 전송되는 MAC 커맨드들(MAC_CMDs) 각각은 정해진 시간 간격으로 순차적으로 생성된다. 따라서 PIM 컨트롤러(200)는, PIM 장치(100)로 MAC 연산 동작을 제어하는 MAC 커맨드들(MAC_CMDs) 각각의 생성을 위해, PIM 장치(100)로부터 별도의 동작 완료 신호를 PIM 컨트롤러(200)에 전송할 것을 요구하지 않는다. 일 예에서 확정적 MAC 연산 동작을 위해, PIM 장치(100) 내에서 MAC 커맨드들(MAC_CMDs) 각각에 의해 수행되는 MAC 연산 동작들 각각이 이루어지는 레이턴시(latency)가 고정적으로 설정될 수 있다. 그리고 PIM 컨트롤러(200)로부터 출력되는 MAC 커맨드들(MAC_CMDs) 각각은 설정된 레이턴시 간격으로 순차적으로 생성될 수 있다.The
도 3에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 PIM 장치(100)를 구성하는 MAC 오퍼레이터(120)의 일 예가 도시되어 있다. 도 3을 참조하면, MAC 오퍼레이터(120)는, 데이터 입력부(121)와, MAC 회로(122)와, 그리고 데이터 출력부(123)를 포함하여 구성될 수 있다. 데이터 입력부(121)는, 제1 입력 래치(121-1) 및 제2 입력 래치(121-2)를 포함하여 구성될 수 있다. MAC 회로(122)는, 곱셈 로직(122-1) 및 가산 로직(122-2)을 포함하여 구성될 수 있다. 데이터 출력부(123)는, 출력 래치(123-1), 전달 게이트(123-2), 지연회로(123-3), 및 인버터(123-4)를 포함하여 구성될 수 있다. 일 예에서 제1 입력 래치(121-1), 제2 입력 래치(121-2), 및 출력 래치(123-1)는 플립 플랍으로 구성될 수 있다.3 shows an example of the
MAC 오퍼레이터(120)의 데이터 입력부(121)는, 데이터 전송 라인을 통해 제1 메모리 뱅크(111)로부터 전송되는 제1 데이터(DA1)를 제1 MAC 입력 래치 신호(MAC_L1)에 동기시켜 MAC 회로(122)에 입력시킨다. 또한 데이터 입력부(121)는, 데이터 전송 라인을 통해 제2 메모리 뱅크(112)로부터 전송되는 제2 데이터(DA2)를 제2 MAC 입력 래치 신호(MAC_L1)에 동기시켜 MAC 회로(122)에 입력시킨다. PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)로부터 제1 MAC 입력 래치 신호(MAC_L1) 및 제2 MAC 입력 래치 신호(MAC_L2)가 일정한 시간 간격을 두고 순차적으로 PIM 장치(100)의 MAC 오퍼레이터(120)로 입력되므로, MAC 오퍼레이터(120) 내에서 제1 데이터(DA1)가 MAC 회로(122)로 먼저 입력되고, 이어서 제2 데이터(DA2)가 MAC 회로(122)로 입력된다.The
MAC 회로(122)는, 데이터 입력부(121)를 통해 입력되는 제1 데이터(DA1) 및 제2 데이터(DA2)에 대한 MAC 연산을 수행한다. MAC 회로(122)의 곱셈 로직(122-1)은, 복수의 곱셈기들(122-11)을 포함할 수 있다. 곱셈기들(122-11) 각각은 제1 입력 래치(121-1) 및 제2 입력 래치(121-2)를 통해 각각 입력되는 제1 데이터(DA1) 및 제2 데이터(DA2)에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 출력시킨다. 제1 데이터(DA1)를 구성하는 비트값들은, 곱셈기들(122-11) 각각에 나누어져서 입력된다. 마찬가지로 제2 데이터(DA2)를 구성하는 비트값들 또한, 곱셈기들(122-11) 각각에 나누어져서 입력된다. 예컨대 제1 데이터(DA1) 및 제2 데이터(DA2)가 각각 N비트의 바이너리 스트림으로 구성되는 경우, M개의 곱셈기들(122-11) 각각에는 (N/M)비트의 제1 데이터(DA1) 및 제2 데이터(DA2)가 입력될 수 있다.The
MAC 회로(122)의 가산 로직(122-2)은 복수의 가산기들(122-21)을 포함할 수 있다. 도면에 나타내지는 않았지만, 복수의 가산기들(122-21)은, 복수의 스테이지들(stages)을 갖는 트리(tree) 구조로 배치될 수 있다. 첫번째 스테이지의 가산기들(122-21) 각각은, 곱셈 로직(122-1)의 곱셈기들(122-11) 중 2개의 곱셈기들(122-11)로부터 곱셈 결과 데이터를 입력받고, 가산 연산을 수행한 후 그 결과 데이터를 출력시킨다. 두번째 스테이지의 가산기들(122-21) 각각은, 첫번째 스테이지의 가산기들(122-21) 중 2개의 가산기들(122-21)로부터 가산 결과 데이터를 입력받고, 가산 연산을 수행한 후 그 결과 데이터를 출력시킨다. 마지막 스테이지의 가산기(122-21)는, 이전 스테이지의 2개의 가산기들(122-21)로부터 가산 결과 데이터를 입력받고, 가산 연산을 수행한 후 그 결과 데이터를 출력시킨다. 도면에 나타내지는 않았지만, 가산 로직(122-2)은, 마지막 스테이지의 가산기(122-21)로부터 출력되는 MAC 결과 데이터(DA_MAC)와, 데이터 출력부(123)의 출력 래치(123-1)에 저장되어 있던 이전의 MAC 결과 데이터(DA_MAC)를 누적 가산하기 위한 가산기를 더 포함할 수 있다.The addition logic 122 - 2 of the
데이터 출력부(123)는, MAC 회로(122)로부터 출력되는 MAC 결과 데이터(DA_MAC)를 데이터 전송 라인으로 출력시킨다. 구체적으로 데이터 출력부(123)의 출력 래치(123-1)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 MAC 회로(122)로부터 출력되는 MAC 결과 데이터(DA_MAC)를 래치하여 출력시킨다. 출력 래치(123-1)로부터 출력되는 MAC 결과 데이터(DA_MAC)는, 누적 가산 연산을 위해 MAC 회로(122)로 피드백 될 수 있다. 또한 MAC 결과 데이터(DA_MAC)는 데이터 전송 라인으로의 출력을 위해 전달 게이트(123-2)에 입력될 수 있다. 출력 래치(123-1)는, 래치 리셋 신호(LATCH_RST)가 입력되면 초기화되며, 이에 따라 출력 래치(123-1)에 래치되어 있던 모든 데이터가 제거된다. 일 예에서 래치 리셋 신호(LATCH_RST)는, MAC 래치 리셋 신호(MAC_L_RST)의 발생에 의해 활성화되어 출력 래치(123-1)에 입력될 수 있다.The
PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)으로부터 MAC 오퍼레이터(120)의 데이터 출력부(123)로 전송되는 MAC 래치 리셋 신호(MAC_L_RST)는, 데이터 출력부(123)의 전달 게이트(123-2), 지연회로(123-3), 및 인버터(123-4)에 입력된다. 인버터(123-4)는, MAC 래치 리셋 신호(MAC_L_RST)의 로직레벨을 반전버퍼링하여 전달 게이트(123-2)에 입력시킨다. 전달 게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 응답하여 출력 래치(123-1)로부터 전송되는 MAC 결과 데이터(DA_MAC)를 데이터 전송 라인으로 출력시킨다. 지연회로(123-3)는, 입력되는 MAC 래치 리셋 신호(MAC_L_RST)를 일정 시점 지연시킨 후에 래치제어신호(PINSTB)로서 출력시킨다.The MAC latch reset signal MAC_L_RST transmitted from the
도 4에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 수행되는 MAC 연산의 일 예가 나타나 있다. 도 4에 나타낸 바와 같이, PIM 시스템(10)에 의해 수행되는 MAC 연산은 매트릭스 연산을 통해 이루어진다. 구체적으로, PIM 장치(100)는, PIM 컨트롤러(200)의 제어에 의해 M행 및 N열(MXN)(M, N은 자연수), 예컨대 8행 및 8열(8X8)의 웨이트 매트릭스(WEIGHT MATRIX)와 N행 및 1열(NX1), 예컨대 8행 및 1열(8X1)의 벡터 매트릭스(VECTOR MATRIX)에 대한 매트릭스 곱셈 연산을 수행한다. 웨이트 매트릭스를 구성하는 원소들(W0.1, …, W7.7)은, 제1 메모리 뱅크(111)로부터 MAC 오퍼레이터(120)로 입력되는 제1 데이터(DA1)에 해당한다. 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)은, 제2 메모리 뱅크(112)로부터 MAC 오퍼레이터(120)로 입력되는 제2 데이터(DA2)에 해당한다. 웨이트 매트릭스를 구성하는 원소들(W0.1, …, W7.7) 각각과, 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0) 각각은, 복수의 비트값들을 갖는 바이너리 스트림(binary stream)으로 구성될 수 있다. 웨이트 매트릭스를 구성하는 원소들(W0.1, …, W7.7) 각각의 비트 수는, 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0) 각각의 비트 수와 동일하다.4 shows an example of a MAC operation performed in the
이와 같은 웨이트 매트릭스 및 벡터 매트릭스의 곱셈 연산은, 다층 퍼셉트론(Multi-Layer Perceptron; 이하 MLP) 방식의 신경망 구조에 부합될 수 있다. 일반적으로 딥 러닝을 수행하기 위한 MLP 방식의 신경망은, 입력층(input layer), 복수, 예컨대 적어도 3개 이상의 은닉층들(hidden layers), 및 출력층(output layer)을 포함한다. 도 4에 나타낸 웨이트 매트릭스와 벡터 매트릭스의 곱셈 연산, 즉 MAC 연산은, 은닉층들 중 하나의 은닉층에서의 연산에 해당한다. 첫번째 은닉층의 경우, 입력되는 벡터 데이터를 사용하여 MAC 연산을 수행한다. 그러나 두번째 은닉층부터 마지막 은닉층에 이르기까지 은닉층에서의 MAC 연산은 그 이전의 은닉층에서의 연산 결과를 벡터 데이터로 사용하여 수행한다.Such a multiplication operation of a weight matrix and a vector matrix may conform to the structure of a multi-layer perceptron (MLP) neural network. In general, an MLP neural network for performing deep learning includes an input layer, a plurality of, for example, at least three or more hidden layers, and an output layer. The multiplication operation of the weight matrix and the vector matrix shown in FIG. 4 , that is, the MAC operation corresponds to an operation in one of the hidden layers. For the first hidden layer, MAC operation is performed using input vector data. However, MAC operation in the hidden layer from the second hidden layer to the last hidden layer is performed using the operation result of the previous hidden layer as vector data.
도 5에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 4를 참조하여 설명한 MAC 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 그리고 도 6 내지 도 12에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 4의 MAC 연산을 수행하는 과정들을 설명하기 위한 블록도들이 도시되어 있다. 도 6 내지 도 12와 함께 도 5를 참조하면, MAC 연산을 수행하기 전에, 단계 301에서, 제1 데이터, 즉 웨이트 데이터를 제1 메모리 뱅크(111)에 라이트(write)한다. 이에 따라 PIM 장치(100)의 제1 메모리 뱅크(111)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 4의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.FIG. 5 is a flowchart illustrating a process of performing the MAC operation process described with reference to FIG. 4 in the
단계 302에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(10)의 외부에서 PIM 컨트롤러(200)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 4의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 302에서 인퍼런스 요청이 전송되는 경우, 단계 303에서 PIM 컨트롤러(200)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 제2 메모리 뱅크(112)에 라이트한다. 이에 따라 PIM 장치(100)의 제2 메모리 뱅크(112)에는 벡터 데이터가 저장된다.In
단계 304에서, 도 6에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 리드 신호(MAC_RD_BK0)를 생성하여 PIM 장치(100)로 전송한다. 이때 PIM 컨트롤러(200)의 어드레스 발생기(250)는 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 뱅크선택신호(BS)는, 제1 메모리 뱅크(111) 및 제2 메모리 뱅크(112) 중에서 제1 메모리 뱅크(111)를 지정한다. 이에 따라 제1 MAC 리드 신호(MAC_RD_BK0)는 PIM 장치(100)의 제1 메모리 뱅크(111)에 대한 데이터 리드 동작을 제어한다. 제1 메모리 뱅크(111)는, 제1 MAC 리드 신호(MAC_RD_BK0)에 응답하여, 로우/컬럼 어드레스(ADDR_R/ADDR_C)에 의해 지정된 영역에 저장되어 있는 웨이트 데이터 중 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)을 MAC 오퍼레이터(120)에 전송한다. 일 예에서 제1 메모리 뱅크(111)로부터 MAC 오퍼레이터(120)로의 데이터 전송은, PIM 장치(100) 내에서의 데이터 전송 경로를 제공하는 글로벌 입출력(Global Input/Output; 이하 GIO) 라인을 통해 이루어질 수 있다. 다른 예에서 제1 메모리 뱅크(111)로부터 MAC 오퍼레이터(120)로의 데이터 전송은, 제1 메모리 뱅크(111)와 MAC 오퍼레이터(120) 사이의 데이터 전송만을 위한 제1 뱅크 입출력(Bank Input/Output; 이하 BIO) 라인을 통해 이루어질 수 있다.In
단계 305에서, 도 7에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 리드 신호(MAC_RD_BK1)를 생성하여 PIM 장치(100)로 전송한다. 이때 PIM 컨트롤러(200)의 어드레스 발생기(250)는, 제2 메모리 뱅크(112)를 지정하는 뱅크선택신호(BS)와, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 제2 MAC 리드 신호(MAC_RD_BK1)는 PIM 장치(100)의 제2 메모리 뱅크(112)에 대한 데이터 리드 동작을 제어한다. 제2 메모리 뱅크(112)는, 제2 MAC 리드 신호(MAC_RD_BK10)에 응답하여, 로우/컬럼 어드레스(ADDR_R/ADDR_C)에 의해 지정된 영역에 저장되어 있는 벡터 데이터, 즉 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0)을 MAC 오퍼레이터(120)에 전송한다. 일 예에서 제2 메모리 뱅크(112)로부터 MAC 오퍼레이터(120)로의 데이터 전송은, PIM 장치(100) 내에서의 GIO 라인을 통해 이루어질 수 있다. 다른 예에서 제2 메모리 뱅크(112)로부터 MAC 오퍼레이터(120)로의 데이터 전송은, 제2 메모리 뱅크(112)와 MAC 오퍼레이터(120) 사이의 데이터 전송만을 위한 제2 BIO 라인을 통해 이루어질 수 있다. In
단계 306에서, 도 8에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(100)로 전송한다. 제1 MAC 입력 래치 신호(MAC_L1)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제1 데이터의 입력 래치 동작을 제어한다. 이 입력 래치 동작에 의해, 도 10에 나타낸 바와 같이, MAC 오퍼레이터(120)의 MAC 회로(122)로 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)이 입력된다. MAC 회로(122)는, 웨이트 매트릭스의 열 수와 동일한 개수, 즉 8개의 곱셈기들(122-11)을 포함한다. 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7) 각각은 곱셈기들(122-11) 각각에 입력된다.In
단계 307에서, 도 9에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 입력 래치 신호(MAC_L2)를 생성하여 PIM 장치(100)로 전송한다. 제2 MAC 입력 래치 신호(MAC_L2)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제2 데이터의 입력 래치 동작을 제어한다. 이 입력 래치 동작에 의해, 도 10에 나타낸 바와 같이, MAC 오퍼레이터(120)의 MAC 회로(122)로 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0)이 입력된다. 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0) 각각은 곱셈기들(122-11) 각각에 입력된다.In
단계 308에서, MAC 오퍼레이터(120)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 1단 스테이지에 배치되는 4개의 가산기들(122-21A)과, 2단 스테이지에 배치되는 2개의 가산기들(122-21B)과, 그리고 3단 스테이지에 배치되는 가산기(122-21C)를 포함한다.In
1단 스테이지의 가산기들(122-21A) 각각은, 곱셈기들(122-11) 중 2개의 곱셈기들(122-11)로부터 출력 데이터를 입력받아 가산하여 출력시킨다. 2단 스테이지의 가산기들(122-21B) 각각은, 1단 스테이지의 가산기들(122-21A) 중 2개의 가산기들(122-21A)의 출력 데이터를 입력받아 가산하여 출력시킨다. 3단 스테이지의 가산기(122-21C)는, 2단 스테이지의 가산기들(122-21B)의 출력 데이터를 입력받아 가산하여 출력시킨다. 가산 로직(122-2)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스와의 MAC 연산 결과 데이터이다. 이에 따라 출력 데이터는, 도 4에 나타낸 MAC 결과 데이터들로 원소들(MAC0.0, …, MAC7.0)이 구성되는 8행 및 1열의 MAC 결과 매트릭스의 제1행 및 제1열의 원소(MAC0.0)를 구성한다. 가산 로직(122-2)으로부터 출력되는 출력 데이터(MAC0.0)는, 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(120)의 데이터 출력부(123) 내에 배치되는 출력 래치(123-1)로 입력된다.Each of the adders 122-21A of the first stage receives output data from two multipliers 122-11 among the multipliers 122-11, adds them, and outputs the received data. Each of the adders 122-21B of the second stage receives, adds, and outputs the output data of the two adders 122-21A among the adders 122-21A of the first stage. The adder 122-21C of the third stage receives, adds, and outputs the output data of the adders 122-21B of the second stage. The output data output from the addition logic 122-2 is MAC operation result data of the first row of the weight matrix and the vector matrix. Accordingly, the output data is the element (MAC0) in the first row and first column of the MAC result matrix of 8 rows and 1 column in which the elements MAC0.0, ..., MAC7.0 are composed of the MAC result data shown in FIG. .0) is configured. The output data MAC0.0 output from the addition logic 122-2 is an output latch 123-1 disposed in the
단계 309에서, 도 11에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(100)로 전송한다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 MAC 결과 데이터(MAC0.0)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(120)의 MAC 회로(122)로부터 입력되는 MAC 결과 데이터(MAC0.0)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력된다. 출력 래치(123-1)로부터 출력되는 MAC 결과 데이터(MAC0.0)는 데이터 출력부(123)의 전달게이트(123-2)로 입력된다.In
단계 310에서, 도 12에 나타낸 바와 같이, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(100)로 전송한다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 MAC 결과 데이터(MAC0.0)의 출력 동작과 출력 래치의 리셋 동작을 제어한다. 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(120)의 데이터 출력부(123)의 출력 래치(123-1)로부터 MAC 결과 데이터(MAC0.0)를 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 MAC 결과 데이터(MAC0.0)를 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 MAC 결과 데이터(MAC0.0)는, PIM 장치(100) 내에서 제1 BIO 라인 또는 제2 BIO 라인을 통해 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 저장될 수 있다.In
단계 311에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 311에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 312에서는 단계 311에 의해 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 311에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 312에서의 판단은 단계 311에 의해 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 304의 과정을 다시 수행한다.In
단계 312로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 304 내지 단계 310의 과정이 수행된다. 즉 단계 311에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, 웨이트 매트릭스의 제1행 대신 제2행과 벡터 매트릭스의 MAC 연산이 이루어진다는 점에서만 차이가 있다. 단계 312에서 피드백되어 단계 304 내지 단계 311를 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 311에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 312의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.When fed back from
도 13에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 수행되는 연산의 다른 예가 나타나 있다. 도 13에 나타낸 바와 같이, PIM 시스템(10)에 의해 수행되는 연산은, MAC 연산된 MAC 결과 매트릭스(MAC RESULT MATRIX)와 바이어스 매트릭스(BIAS MATRIX)의 덧셈 연산을 더 포함한다. 구체적으로, 도 4를 참조하여 설명한 바와 같이, PIM 장치(100)는, PIM 컨트롤러(200)의 제어에 의해, 예컨대 8행 및 8열(8X8)의 웨이트 매트릭스(WEIGHT MATRIX)와 예컨대 8행 및 1열(8X1)의 벡터 매트릭스(VECTOR MATRIX)에 대한 매트릭스 곱셈 연산을 수행한다. 웨이트 매트릭스와 벡터 매트리스의 매트릭스 곱셈 연산 결과, 8개의 원소들(MAC0.0, …, MAC7.0)로 구성되는 8행 및 1열(8X1)의 MAC 결과 매트릭스(MAC RESULT MATRIX)가 생성된다. 8행 및 1열(8X1)의 MAC 결과 매트릭스는 8행 및 1열(8X1)의 바이어스 매트릭스(BIAS MATRIX)와 매트릭스 덧셈 연산된다. 바이어스 매트릭스는 바이어스 데이터로 구성되는 원소들(B0.1, …, B7.7)을 갖는다. 이 바이어스 데이터는, MAC 결과 매트릭스가 갖는 오차를 감소시키도록 임의로 설정될 수 있다. MAC 결과 매트릭스와 바이어스 매트릭스의 매트릭스 덧셈 연산 결과, 8개의 원소들(Y0.0, …, Y7.0)로 구성되는 8행 및 1열(8X1)의 바이어스된 결과 매트릭스(BIASED RESULT MATRIX)가 생성된다.13 shows another example of an operation performed in the
도 14에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 13을 참조하여 설명한 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 그리고 도 15에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 13의 연산 수행을 구현하기 위한 MAC 오퍼레이터(120-1) 구성의 일 예가 도시되어 있다. 도 15에서 도 3과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 14를 참조하면, 단계 321에서, PIM 장치(100)에서의 연산을 수행하기 위해, 제1 데이터, 즉 웨이트 데이터를 제1 메모리 뱅크(111)에 라이트(write)한다. 이에 따라 PIM 장치(100)의 제1 메모리 뱅크(111)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 13의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.FIG. 14 is a flowchart illustrating a process of performing the calculation process described with reference to FIG. 13 in the
단계 322에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(10)의 외부에서 PIM 컨트롤러(200)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 13의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 322에서 인퍼런스 요청이 전송되는 경우, 단계 323에서 PIM 컨트롤러(200)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 제2 메모리 뱅크(112)에 라이트한다. 이에 따라 PIM 장치(100)의 제2 메모리 뱅크(112)에는 벡터 데이터가 저장된다.In
단계 324에서 MAC 오퍼레이터의 출력 래치를 바이어스 데이터로 초기 세팅하고, 초기 세팅된 바이어스 데이터를 MAC 오퍼레이터의 누적 가산기로 피드백시킨다. 이 과정은, 도 13을 참조하여 설명한 연산에서 MAC 결과 매트릭스에 바이어스 매트릭스를 매트릭스 덧셈 연산시키기 위한 과정이다. 즉 도 15에 나타낸 바와 같이, MAC 오퍼레이터(120-1)의 데이터 출력부(123-A) 내의 출력 래치(123-1)를 바이어스 데이터로 초기 세팅시킨다. 매트릭스 곱셈 연산이 웨이트 매트릭스의 제1행에 대해 수행되는 과정이므로, 바이어스 데이터로서 바이어스 매트릭스의 제1행 및 제1열 원소(B0.0)가 출력 래치(123-1)에 초기 세팅된다. 출력 래치(123-1)는, 바이어스 데이터(B0.0)를 출력시키고, 출력 래치(123-1)로부터 출력되는 바이어스 데이터(B0.0)는 가산 로직(122-2)의 누적 가산기(122-21D)로 입력된다.In
일 예에서 출력 래치(123-1)로부터 바이어스 데이터(B0,0)를 출력시켜 누적 가산기(122-21D)로 피드백시키기 위해, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는 MAC 출력 래치 신호(MAC_L3)를 PIM 장치(100)의 MAC 오퍼레이터(120-1)로 전송시킬 수 있다. MAC 오퍼레이터(120-1)의 누적 가산기(122-21D)는, 후속으로 MAC 연산이 수행되는 경우, 가산 로직(122-2)의 마지막 스테이지에 배치되는 가산기(122-21C)로부터 출력되는 MAC 결과 데이터(MAC0.0)와 피드백된 바이어스 데이터(B0.0)를 가산하고, 그 결과인 바이어스된 데이터(Y0.0)를 출력하여 출력 래치(123-1)로 입력시킨다. 바이어스된 데이터(Y0.0)는, 후속으로 전송되는 MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력될 수 있다.In one example, in order to output the bias data B0,0 from the output latch 123-1 and feed it back to the accumulation adder 122-21D, the
단계 325에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 리드 신호(MAC_RD_BK0)를 생성하여 PIM 장치(100)로 전송한다. 또한 PIM 컨트롤러(200)의 어드레스 발생기(250)는 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 단계 325의 과정은, 도 6을 참조하여 설명한 과정과 동일하다. 단계 326에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 리드 신호(MAC_RD_BK1)를 생성하여 PIM 장치(100)로 전송한다. 또한 PIM 컨트롤러(200)의 어드레스 발생기(250)는, 제2 메모리 뱅크(112)를 지정하는 뱅크선택신호(BS)와, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 단계 326의 과정은, 도 7을 참조하여 설명한 과정과 동일하다.In
단계 327에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(100)로 전송한다. 단계 327의 과정은, 도 8을 참조하여 설명한 과정과 동일하다. 제1 MAC 입력 래치 신호(MAC_L1)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제1 데이터의 입력 래치 동작을 제어한다. 제1 데이터의 입력 래치 동작은, 도 10을 참조하여 설명한 과정과 동일하다. 단계 328에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 입력 래치 신호(MAC_L2)를 생성하여 PIM 장치(100)로 전송한다. 단계 328의 과정은, 도 9를 참조하여 설명한 과정과 동일하다. 제2 MAC 입력 래치 신호(MAC_L2)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제2 데이터의 입력 래치 동작을 제어한다. 제2 데이터의 입력 래치 동작은, 도 10을 참조하여 설명한 바와 동일하다. In
단계 329에서, MAC 오퍼레이터(120)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 도 15에 나타낸 바와 같이, 1단 스테이지에 배치되는 4개의 가산기들(122-21A)과, 2단 스테이지에 배치되는 2개의 가산기들(122-21B)과, 3단 스테이지에 배치되는 가산기(122-21C)와, 그리고 누적 가산기(122-21D)를 포함한다. 누적 가산기(122-21D)는, 가산기(122-21C)의 출력 데이터와, 출력 래치(123-1)로부터 피드백되는 피드백 데이터를 가산하여 출력시킨다. 가산 로직(122-2)의 가산기(122-21C)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스의 제1열과의 매트릭스 곱셈 결과 데이터(MAC0.0)이다. 누적 가산기(122-21D)는, 가산기(122-21C)로부터 출력되는 매트릭스 곱셈 결과 데이터(MAC0.0)와 출력 래치(123-1)로부터 피드백된 바이어스 데이터(B0.0)를 가산하여 출력시킨다. 누적 가산기(122-21D)로부터 출력되는 출력 데이터(Y0.0)는, MAC 오퍼레이터(120)의 데이터 출력부(123-A) 내에 배치되는 출력 래치(123-1)로 입력된다.In
단계 330에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(100)로 전송한다. 단계 330의 과정은, 도 11을 참조하여 설명한 과정과 동일하다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 MAC 결과 데이터(MAC0.0)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, MAC 오퍼레이터(120)의 MAC 회로(122)로부터 입력되는 바이어스된 결과 데이터(Y0.0)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력된다. 출력 래치(123-1)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는 전달게이트(123-2)로 입력된다.In
단계 331에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(100)로 전송한다. 단계 331의 과정은, 도 12를 참조하여 설명한 과정과 동일하다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 바이어스된 결과 데이터(Y0.0)의 출력 동작과 출력 래치(123-1)의 리셋 동작을 제어한다. MAC 오퍼레이터(120)의 데이터 출력부(123-A)의 출력 래치(123-1)로부터 바이어스된 결과 데이터(Y0.0)를 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 바이어스된 결과 데이터(Y0.0)를 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는, PIM 장치(100) 내에서 제1 BIO 라인 또는 제2 BIO 라인을 통해 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 저장될 수 있다.In
단계 332에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 332에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 333에서는 단계 332에 의해 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 332에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 333에서의 판단은 단계 332에 의해 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 324의 과정을 다시 수행한다.In
단계 333로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 324 내지 단계 331의 과정이 수행된다. 즉 단계 332에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, 웨이트 매트릭스의 제1행 대신 제2행과 벡터 매트릭스의 매트릭스 곱셈 연산이 이루어진다는 점에서 차이가 있다. 그리고 단계 324에서 출력 래치(123-1)에 초기 세팅되는 바이어스 데이터가 바이어스 매트릭스의 제2행 및 제1열 원소(B1.0)로 변경되는 점에서만 차이가 있다. 단계 333에서 피드백되어 단계 324 내지 단계 332를 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 332에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 333의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.When fed back from
도 16에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 수행되는 연산의 또 다른 예가 나타나 있다. 도 16에 나타낸 바와 같이, PIM 시스템(10)에 의해 수행되는 연산은, 바이어스된 결과 매트릭스(BIASED RESULT MATRIX)에 대한 활성화 함수(ACTIVE FUNCTION) 적용 과정을 더 포함한다. 구체적으로, 도 13을 참조하여 설명한 바와 같이, PIM 장치(100)는, PIM 컨트롤러(200)의 제어에 의해, 예컨대 8행 및 8열(8X8)의 웨이트 매트릭스(WEIGHT MATRIX)와 예컨대 8행 및 1열(8X1)의 벡터 매트릭스(VECTOR MATRIX)에 대한 매트릭스 곱셈 연산을 수행한다. 그리고 그 결과인 MAC 결과 매트릭스(MAC RESULT MATRIX)와 바이어스 매트릭스(BIAS MATRIX)의 매트릭스 덧셈 연산을 수행하여 바이어스된 결과 매트릭스(BIASED RESULT MATRIX)를 생성한다.FIG. 16 shows another example of an operation performed in the
바이어스된 결과 매트릭스는 활성화 함수(ACTIVE FUNCTION)가 적용된 후에 출력된다. 활성화 함수는, MLP 신경망에서 MAC 연산된 값을 임계값과 비교하여 고유한 출력값을 계산하는데 사용되는 함수를 의미한다. 일 예에서 활성화 함수는, 출력값이 양수만 가능한 단극성 활성화 함수나, 또는 음수도 출력 가능한 양극성 활성화 함수일 수 있다. 일 예에서 활성화 함수는, 시그모이드(Sigmoid) 함수, Tanh 함수, 정류된 선형(ReLU) 함수, 리키(Leaky) ReLU 함수, 항등(Identity) 함수, 맥스 아웃(Max Out) 함수를 포함할 수 있다.The biased result matrix is output after the ACTIVE FUNCTION is applied. The activation function refers to a function used to calculate a unique output value by comparing the MAC calculated value in the MLP neural network with a threshold value. In an example, the activation function may be a unipolar activation function capable of outputting only a positive value or a bipolar activation function capable of outputting a negative value as well. In one example, the activation function may include a Sigmoid function, a Tanh function, a rectified linear (ReLU) function, a Leaky ReLU function, an identity function, and a Max Out function. there is.
도 17에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 16을 참조하여 설명한 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 그리고 도 18에는 본 개시의 제1 실시예에 따른 PIM 시스템(10)에서 도 16의 연산 수행을 구현하기 위한 MAC 오퍼레이터(120-2) 구성의 일 예가 도시되어 있다. 도 18에서 도 3과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복되는 설명은 생략하기로 한다. 도 17을 참조하면, 단계 341에서, MAC 연산을 수행하기 위해 제1 데이터, 즉 웨이트 데이터를 제1 메모리 뱅크(111)에 라이트(write)한다. 이에 따라 PIM 장치(100)의 제1 메모리 뱅크(111)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 16의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.FIG. 17 is a flowchart illustrating a process of performing the calculation process described with reference to FIG. 16 in the
단계 342에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(10)의 외부에서 PIM 컨트롤러(200)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(10)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 16의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 342에서 인퍼런스 요청이 전송되는 경우, 단계 343에서 PIM 컨트롤러(200)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 제2 메모리 뱅크(112)에 라이트한다. 이에 따라 PIM 장치(100)의 제2 메모리 뱅크(112)에는 벡터 데이터가 저장된다.In
단계 344에서 MAC 오퍼레이터의 출력 래치를 바이어스 데이터로 초기 세팅하고, 초기 세팅된 바이어스 데이터를 MAC 오퍼레이터의 누적 가산기로 피드백시킨다. 이 과정은, 도 16을 참조하여 설명한 연산에서 MAC 결과 매트릭스에 바이어스 매트릭스를 매트릭스 덧셈 연산시키기 위한 과정이다. 즉 도 18에 나타낸 바와 같이, MAC 오퍼레이터(120-2)의 데이터 출력부(123-B) 내의 출력 래치(123-1)를 바이어스 데이터로 초기 세팅시킨다. 매트릭스 곱셈 연산이 웨이트 매트릭스의 제1행에 대해 수행되는 과정이므로, 바이어스 데이터로서 바이어스 매트릭스의 제1행 및 제1열 원소(B0.0)가 출력 래치(123-1)에 초기 세팅된다. 출력 래치(123-1)는, 바이어스 데이터(B0.0)를 출력시키고, 출력 래치(123-1)로부터 출력되는 바이어스 데이터(B0.0)는 가산 로직(122-2)의 누적 가산기(122-21D)로 입력된다.In
일 예에서 출력 래치(123-1)로부터 바이어스 데이터(B0,0)를 출력시켜 누적 가산기(122-21D)로 피드백시키기 위해, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는 MAC 출력 래치 신호(MAC_L3)를 PIM 장치(100)의 MAC 오퍼레이터(120-2)로 전송시킬 수 있다. MAC 오퍼레이터(120-2)의 누적 가산기(122-21D)는, 후속으로 MAC 연산이 수행되는 경우, 가산 로직(122-2)의 마지막 스테이지에 배치되는 가산기(122-21C)로부터 출력되는 MAC 결과 데이터(MAC0.0)와 피드백된 바이어스 데이터(B0.0)를 가산하고, 그 결과인 바이어스된 데이터(Y0.0)를 출력하여 출력 래치(123-1)로 입력시킨다. 바이어스된 데이터(Y0.0)는, 후속으로 전송되는 MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 MAC 오퍼레이터(120-2)의 데이터 출력부(123-B) 내에 배치되는 활성화 함수 로직(123-5)으로 입력될 수 있다.In one example, in order to output the bias data B0,0 from the output latch 123-1 and feed it back to the accumulation adder 122-21D, the
단계 345에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 리드 신호(MAC_RD_BK0)를 생성하여 PIM 장치(100)로 전송한다. 또한 PIM 컨트롤러(200)의 어드레스 발생기(250)는 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 단계 345의 과정은, 도 6을 참조하여 설명한 과정과 동일하다. 단계 346에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 리드 신호(MAC_RD_BK1)를 생성하여 PIM 장치(100)로 전송한다. 또한 PIM 컨트롤러(200)의 어드레스 발생기(250)는, 제2 메모리 뱅크(112)를 지정하는 뱅크선택신호(BS)와, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(100)로 전송한다. 단계 346의 과정은, 도 7을 참조하여 설명한 과정과 동일하다.In
단계 347에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제1 MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(100)로 전송한다. 단계 347의 과정은, 도 8을 참조하여 설명한 과정과 동일하다. 제1 MAC 입력 래치 신호(MAC_L1)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제1 데이터의 입력 래치 동작을 제어한다. 제1 데이터의 입력 래치 동작은, 도 10을 참조하여 설명한 과정과 동일하다. 단계 348에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, 제2 MAC 입력 래치 신호(MAC_L2)를 생성하여 PIM 장치(100)로 전송한다. 단계 348의 과정은, 도 9를 참조하여 설명한 과정과 동일하다. 제2 MAC 입력 래치 신호(MAC_L2)는 PIM 장치(100)의 MAC 오퍼레이터(120)에 대한 제2 데이터의 입력 래치 동작을 제어한다. 제2 데이터의 입력 래치 동작은, 도 10을 참조하여 설명한 바와 동일하다. In
단계 349에서, MAC 오퍼레이터(120)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 도 18에 나타낸 바와 같이, 1단 스테이지에 배치되는 4개의 가산기들(122-21A)과, 2단 스테이지에 배치되는 2개의 가산기들(122-21B)과, 3단 스테이지에 배치되는 가산기(122-21C)와, 그리고 누적 가산기(122-21D)를 포함한다. 누적 가산기(122-21D)는, 가산기(122-21C)의 출력 데이터와, 출력 래치(123-1)로부터 피드백되는 피드백 데이터를 가산하여 출력시킨다. 가산 로직(122-2)의 가산기(122-21C)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스의 제1열과의 매트릭스 곱셈 결과 데이터(MAC0.0)이다. 누적 가산기(122-21D)는, 가산기(122-21C)로부터 출력되는 매트릭스 곱셈 결과 데이터(MAC0.0)와 출력 래치(123-1)로부터 피드백된 바이어스 데이터(B0.0)를 가산하여 출력시킨다. 누적 가산기(122-21D)로부터 출력되는 출력 데이터(Y0.0)는, MAC 오퍼레이터(120)의 데이터 출력부(123-A) 내에 배치되는 출력 래치(123-1)로 입력된다.In
단계 350에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(100)로 전송한다. 단계 350의 과정은, 도 11을 참조하여 설명한 과정과 동일하다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 출력 래치(123-1)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, MAC 오퍼레이터(120)의 MAC 회로(122)로부터 입력되는 바이어스된 결과 데이터(Y0.0)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력된다. 출력 래치(123-1)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는 활성화 함수 로직(123-5)으로 입력된다. 그리고 단계 351에서, 활성화 함수 로직(123-5)은, 입력되는 바이어스된 결과 데이터(Y0.0)에 활성화 함수를 적용하여 최종 출력값을 생성하여 전달게이트(도 3의 123-2)로 입력시킨다. In
단계 352에서, PIM 컨트롤러(200)의 MAC 커맨드 발생기(240)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(100)로 전송한다. 단계 352의 과정은, 도 12를 참조하여 설명한 과정과 동일하다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(100)의 MAC 오퍼레이터(120)에서의 최종 출력값의 출력 동작과 출력 래치(123-1)의 리셋 동작을 제어한다. MAC 오퍼레이터(120)의 데이터 출력부(123-B)의 활성화 함수 로직(123-5)로부터 최종 출력값을 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 최종 출력값을 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 최종 출력값은, PIM 장치(100) 내에서 제1 BIO 라인 또는 제2 BIO 라인을 통해 제1 메모리 뱅크(111) 또는 제2 메모리 뱅크(112)에 저장될 수 있다.In
단계 353에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 353에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 354에서는 단계 353에 의해 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 353에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 354에서의 판단은 단계 353에 의해 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 344의 과정을 다시 수행한다.In
단계 354로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 344 내지 단계 354의 과정이 수행된다. 즉 단계 353에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, 웨이트 매트릭스의 제1행 대신 제2행과 벡터 매트릭스의 매트릭스 곱셈 연산이 이루어진다는 점에서 차이가 있다. 그리고 단계 344에서 출력 래치(123-1)에 초기 세팅되는 바이어스 데이터가 바이어스 매트릭스의 제2행 및 제1열 원소(B1.0)로 변경되는 점에서만 차이가 있다. 단계 354에서 피드백되어 단계 344 내지 단계 354를 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 354에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 354의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.Upon feedback from
도 19에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)의 블록도가 개략적으로 도시되어 있다. 도 19에서 도 1과 동일한 참조부호는 동일한 구성을 나타낸다. 도 19에 나타낸 바와 같이, PIM 시스템(30)은, PIM 장치(400) 및 PIM 컨트롤러(500)를 포함하여 구성된다. PIM 장치(400)는, 메모리 뱅크(BANK)(411)와, 글로벌 버퍼(412)와, MAC 오퍼레이터(MAC OPERATOR)(420)와, 인터페이스(I/F)(431)와, 그리고 데이터 입출력 패드(DQ)(432)를 포함하여 구성될 수 있다. PIM 장치(400)의 메모리 뱅크(411) 및 MAC 오퍼레이터(420)는 하나의 MAC 유닛(MAC UNIT)을 구성한다. 다른 예에서, PIM 장치(400)는 복수의 MAC 유닛들을 포함할 수 있다. 메모리 뱅크(411)는 데이터가 저장되는 영역으로, 예컨대 디램(DRAM)을 구성하는 메모리 영역 단위일 수 있다. 글로벌 버퍼(412) 또한 데이터가 저장되는 영역으로, 예컨대 디램(DRAM) 또는 에스램(SRAM)으로 구성될 수 있다. 메모리 뱅크(411)는, 독립적으로 활성화(active)될 수 있는 단위이며, PIM 장치(400) 내의 데이터 입출력 라인과 동일한 데이터 버스 폭(data bus width)을 가질 수 있다. 일 예에서 메모리 뱅크(411)는, 다른 메모리 뱅크가 액세스되는 동안 활성화 동작이 병행하여 진행되는 인터리빙(interleaving) 방식으로 동작할 수 있다. 메모리 뱅크(411)는, 복수의 로우들(rows) 및 컬럼들(columns)의 교차점들 각각에 메모리 단위 셀이 배치되어 구성되는 적어도 하나의 메모리 셀 어레이를 포함할 수 있다.19 schematically shows a block diagram of a
도면에 나타내지는 않았지만, 메모리 뱅크(411)에 인접한 영역에는 코어(core)가 배치될 수 있다. 코어는, X-디코더들(XDEC) 및 Y-디코더들/입출력회로들(YDEC/IO)을 포함할 수 있다. X-디코더(XDEC)는, 워드라인 디코더 또는 로우 디코더로 명명되기도 한다. X-디코더(XDEC)는, PIM 컨트롤러(500)로부터 전송되는 로우 어드레스(ADD_R)를 수신하고, 수신된 로우 어드레스(ADD_R)를 디코딩하여 선택된 메모리 뱅크의 선택된 로우를 인에이블시킨다. Y-디코더들/입출력회로들(YDEC/IO) 각각은, Y-디코더(YDEC) 및 입출력회로(IO)를 포함할 수 있다. Y-디코더(YDEC)는, 비트라인 디코더 또는 컬럼 디코더로 명명되기도 한다. Y-디코더(YDEC)는, PIM 컨트롤러(500)로부터 전송되는 컬럼 어드레스(ADDR_C)를 수신하고, 수신된 컬럼 어드레스(ADDR_C)를 디코딩하여 선택된 메모리 뱅크 내에서 선택된 로우의 컬럼들 중 선택된 컬럼들을 인에이블시킨다. 입출력회로(IO)는, 메모리 뱅크(411)에 대한 리드 동작에서 리드 데이터를 감지 증폭하기 위한 입출력 센스앰프(IO sense amp)를 포함할 수 있다. 또한 입출력회로(IO)는, 메모리 뱅크(411)에 대한 라이트 동작에서 라이트 데이터를 드라이빙하기 위한 라이트 드라이버(write driver)를 포함할 수 있다.Although not shown in the drawing, a core may be disposed in an area adjacent to the
PIM 장치(400)의 MAC 오퍼레이터(420)는, 도 3을 참조하여 설명한 MAC 오퍼레이터(120)와 대부분 동일하다. 즉 본 예에 따른 MAC 오퍼레이터(420)는, 도 3을 참조하여 설명한 바와 같이, 데이터 입력부(121)와, MAC 회로(122)와, 그리고 데이터 출력부(123)를 포함하여 구성될 수 있다. 데이터 입력부(121)는, 제1 입력 래치(121-1) 및 제2 입력 래치(121-2)를 포함하여 구성될 수 있다. MAC 회로(122)는, 곱셈 로직(122-1) 및 가산 로직(122-2)을 포함하여 구성될 수 있다. 데이터 출력부(123)는, 출력 래치(123-1), 전달 게이트(123-2), 지연회로(123-3), 및 인버터(123-4)를 포함하여 구성될 수 있다. 일 예에서 제1 입력 래치(121-1), 제2 입력 래치(121-2), 및 출력 래치(123-1)는 플립 플랍으로 구성될 수 있다.The
본 예에서의 MAC 오퍼레이터(420)는, 제1 입력 래치(121-1) 및 제2 입력 래치(121-2)의 클럭 단자에 각각 MAC 입력 래치 신호(MAC_L1)가 동시에 입력된다는 점에서 도 3의 MAC 오퍼레이터(120)와 다르다. 아래에서 상세하게 설명하겠지만, 본 예에 따른 PIM 시스템(30)의 PIM 장치(400) 내에서 MAC 오퍼레이터(420)로의 웨이트 데이터와 벡터 데이터 전송은 동시에 이루어질 수 있다. 즉 MAC 오퍼레이터(420)의 데이터 입력부(121)를 구성하는 제1 입력 래치(121-1) 및 제2 입력 래치(121-2)에 각각 제1 데이터(DA1)(웨이트 데이터) 및 제2 데이터(DA2)(벡터 데이터)가 동시에 입력된다. 따라서 제1 입력 래치(121-1)의 클럭단자 및 제2 입력 래치(121-2)의 클럭 단자에 별도의 제어신호가 인가될 필요가 없으며, 이에 따라 본 예의 MAC 오퍼레이터(420)에서는 제1 입력 래치(121-1)의 클럭단자 및 제2 입력 래치(121-2)의 클럭 단자에 MAC 입력 래치(MAC_L1)가 공통으로 입력된다.3 in that the
다른 예에서 PIM 장치(400)의 MAC 오퍼레이터(420)는, 도 13에 나타낸 연산을 수행하기 위해 도 15를 참조하여 설명한 MAC 오퍼레이터(120-1)와 동일하게 구성될 수 있다. 이 경우에도 데이터 입력부(121)를 구성하는 제1 입력 래치(121-1)의 클럭단자 및 제2 입력 래치(121-2)의 클럭 단자에 MAC 입력 래치(MAC_L1)가 공통으로 입력되는 점을 제외하고는, 도 15를 참조하여 설명한 바와 동일한 구성을 갖는다. 또 다른 예에서 PIM 장치(400)의 MAC 오퍼레이터(420)는, 도 16에 나타낸 연산을 수행하기 위해 도 18을 참조하여 설명한 MAC 오퍼레이터(120-2)와 동일하게 구성될 수 있다. 이 경우에도 데이터 입력부(121)를 구성하는 제1 입력 래치(121-1)의 클럭단자 및 제2 입력 래치(121-2)의 클럭 단자에 MAC 입력 래치(MAC_L1)가 공통으로 입력되는 점을 제외하고는, 도 18을 참조하여 설명한 바와 동일한 구성을 갖는다.In another example, the
PIM 장치(400)의 인터페이스(431)는, PIM 컨트롤러(500)로부터 메모리 커맨드(M_CMD), MAC 커맨드들(MAC_CMDs), 뱅크선택신호(BS), 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 수신받는다. 인터페이스(431)는, PIM 컨트롤러(500)로부터 수신된 메모리 커맨드(M_CMD)를 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)와 함께 메모리 뱅크(411)로 전송한다. 인터페이스(431)는, PIM 컨트롤러(500)로부터 수신된 MAC 커맨드들(MAC_CMDs)을 메모리 뱅크(411) 및 MAC 오퍼레이터(420)로 전송한다. 이때 인터페이스(431)는, 뱅크선택신호(BS) 및 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 메모리 뱅크(411)로 함께 전송시킬 수도 있다. PIM 장치(400)의 데이터 입출력 패드(432)는, PIM 장치(400) 내의 메모리 뱅크(411), 글로벌 버퍼(412), 및 MAC 오퍼레이터(420)와 PIM 장치(400)의 외부 사이의 데이터 통신 터미널로 기능한다. 여기서 PIM 장치(400)의 외부는, PIM 시스템(30)을 구성하는 PIM 컨트롤러(500)이거나, 또는 PIM 시스템(30) 외부의 호스트일 수 있다. 이에 따라 호스트 또는 PIM 컨트롤러(500)로부터 전송되는 데이터는, 데이터 입출력 패드(432)를 통해 PIM 장치(400) 내부로 입력될 수 있다. 또한 PIM 장치(400) 내의 데이터는 데이터 입출력 패드(432)를 통해 PIM 장치(400) 외부로 전송될 수 있다.The
PIM 컨트롤러(500)는, PIM 장치(400)의 동작을 제어한다. 일 예에서 PIM 컨트롤러(500)는, PIM 장치(400)의 메모리 모드 동작을 제어하거나, 또는 MAC 모드 동작을 제어할 수 있다. PIM 컨트롤러(500)가 PIM 장치(400)를 메모리 모드로 제어하는 경우, PIM 장치(500)에서 메모리 뱅크(411)에 대한 데이터 리드 동작 및 데이터 라이트 동작이 수행될 수 있다. PIM 컨트롤러(500)가 PIM 장치(400)를 MAC 모드로 제어하는 경우, PIM 장치(400)에서 MAC 오퍼레이터(420)에 의한 MAC 연산 동작이 수행될 수 있다. PIM 컨트롤러(500)가 PIM 장치(400)를 MAC 모드로 동작되도록 제어하는 경우, PIM 장치(400)에서는 MAC 연산을 위해 메모리 뱅크(411) 및 글로벌 버퍼(412)에 데이터를 라이트하고 리드하는 동작이 수행될 수도 있다.The
PIM 컨트롤러(500)는, 커맨드 큐(210), 스케줄러(220), 메모리 커맨드 발생기(230), MAC 커맨드 발생기(540), 및 어드레스 발생기(550)를 포함하여 구성될 수 있다. 스케줄러(220)는 모드 선택기(221)를 포함할 수 있다. 커맨드 큐(210)는, PIM 시스템(30)의 외부로부터 전송되는 커맨드(CMD)를 전송받아 저장한다. 커맨드 큐(210)에 저장되는 커맨드(CMD)는, 스케줄러(220)에 의해 정해진 순서대로 메모리 커맨드 발생기(230) 또는 MAC 커맨드 발생기(540)로 전송된다. 스케줄러(220)는, 커맨드 큐(210)에 저장되어 있는 커맨드(CMD)가 커맨드 큐(210)로부터 출력되는 타이밍을 조절한다. 스케줄러(210)는, 커맨드 큐(210)에 저장되어 있는 커맨드(CMD)가 PIM 장치(400)의 메모리 모드 동작을 요청하는 커맨드인지, 아니면 MAC 모드 동작을 요청하는 커맨드인지에 관한 모드 선택 신호를 생성하는 모드 선택기(221)를 포함한다. 메모리 커맨드 발생기(230)는, 커맨드 큐(210)로부터 PIM 장치(400)의 메모리 모드 동작을 요청하는 커맨드(CMD)를 전송받고, 메모리 커맨드(M_CMD)를 생성하여 출력시킨다. 이와 같은 커맨드 큐(210), 스케줄러(220), 모드 선택기(221), 및 메모리 커맨드 발생기(230)에 대해서는 도 1을 참조하여 설명한 바와 동일하다.The
MAC 커맨드 발생기(540)는, 커맨드 큐(210)로부터 PIM 장치(400)의 MAC 모드 동작을 요청하는 커맨드(CMD)를 전송받는다. MAC 커맨드 발생기(540)는, 전송된 커맨드(CMD)를 디코딩하여 MAC 커맨드들(MAC_CMDs)를 생성하여 출력한다. MAC 커맨드 발생기(540)로부터 출력되는 MAC 커맨드들(MAC_CMDs)는 PIM 장치(400)로 전송된다. MAC 커맨드 발생기(540)로부터 전송되는 MAC 커맨드들(MAC_CMDs)에 의해, PIM 장치(400)의 메모리 뱅크(411)에 대한 데이터 리드 동작과, MAC 오퍼레이터(420)의 MAC 연산 동작이 제어된다. MAC 커맨드들(MAC_CMDs) 및 그에 따른 PIM 장치(400)의 MAC 모드 동작에 대해서는 아래에서 도 20을 참조하여 보다 상세하게 설명하기로 한다. 어드레스 발생기(550)는, 메모리 뱅크(411)를 선택하는 뱅크선택신호(BS)를 생성하여 PIM 장치(400)로 전송한다. 또한 어드레스 발생기(550)는, 메모리 뱅크(411)의 액세스할 영역을 지정하는 로우 어드레스(ADDR_R) 및 컬럼 어드레스(ADDR/C)를 생성하여 PIM 장치(400)로 전송한다.The
도 20에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)에서 PIM 컨트롤러(500)를 구성하는 MAC 커맨드 발생기(540)로부터 발생되는 MAC 커맨드들(MAC_CMDs)이 도시되어 있다. 도 20에 나타낸 바와 같이, MAC 커맨드들(MAC_CMDs)은, 제1 내지 제4 MAC 커맨드 신호를 포함할 수 있다. 일 예에서 제1 MAC 커맨드 신호는, MAC 리드 신호(MAC_RD_BK)일 수 있다. 제2 MAC 커맨드 신호는, MAC 입력 래치 신호(MAC_L1)일 수 있다. 제3 MAC 커맨드 신호는, MAC 출력 래치 신호(MAC_L3)일 수 있다. 그리고 제4 MAC 커맨드 신호는, MAC 래치 리셋 신호(MAC_L_RST)일 수 있다.FIG. 20 shows MAC commands MAC_CMDs generated from the
MAC 리드 신호(MAC_RD_BK)는, 메모리 뱅크(411)로부터 제1 데이터, 예컨대 웨이트 데이터를 리드하여 MAC 오퍼레이터(420)로 전송하는 동작을 제어한다. MAC 입력 래치 신호(MAC_L1)는, 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로 전송되는 웨이트 데이터에 대한 입력 래치 동작을 제어한다. MAC 출력 래치 신호(MAC_L3)는, MAC 오퍼레이터(420) 내에서 생성되는 MAC 결과 데이터에 대한 출력 래치 동작을 제어한다. 그리고 MAC 래치 리셋 신호(MAC_L_RST)는, MAC 오퍼레이터(420) 내에서 생성되는 MAC 결과 데이터의 출력 동작과, MAC 오퍼레이터(420) 내에서의 출력 래치에 대한 리셋 동작을 제어한다.The MAC read signal MAC_RD_BK controls an operation of reading first data, for example, weight data, from the
본 예에 따른 PIM 시스템(30) 또한, 확정적(deterministic) MAC 연산 동작을 수행하도록 구성된다. 이에 따라 PIM 컨트롤러(500)로부터 PIM 장치(400)로 전송되는 MAC 커맨드들(MAC_CMDs) 각각은 정해진 시간 간격으로 순차적으로 생성된다. 따라서 PIM 컨트롤러(500)는, PIM 장치(400)로 MAC 연산 동작을 제어하는 MAC 커맨드들(MAC_CMDs) 각각의 생성을 위해, PIM 장치(400)로부터 별도의 동작 완료 신호를 PIM 컨트롤러(500)에 전송할 것을 요구하지 않는다. 일 예에서 확정적 MAC 연산 동작을 위해, PIM 장치(400) 내에서 MAC 커맨드들(MAC_CMDs) 각각에 의해 수행되는 MAC 연산 동작들 각각이 이루어지는 레이턴시(latency)가 고정적으로 설정될 수 있다. 그리고 PIM 컨트롤러(500)로부터 출력되는 MAC 커맨드들(MAC_CMDs) 각각은 설정된 레이턴시 간격으로 순차적으로 생성될 수 있다.The
도 21에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)에서 도 4를 참조하여 설명한 MAC 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 그리고 도 22 내지 도 25에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)에서 도 4의 MAC 연산을 수행하는 과정들을 설명하기 위한 블록도들이 도시되어 있다. 도 22 내지 도 25와 함께 도 21을 참조하면, 단계 361에서, MAC 연산을 수행하기 위해, 제1 데이터, 즉 웨이트 데이터를 메모리 뱅크(411)에 라이트한다. 이에 따라 PIM 장치(400)의 메모리 뱅크(411)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 4의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.21 is a flowchart illustrating a process of performing the MAC operation process described with reference to FIG. 4 in the
단계 362에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(30)의 외부에서 PIM 컨트롤러(500)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 4의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 362에서 인퍼런스 요청이 전송되는 경우, 단계 363에서 PIM 컨트롤러(500)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 글로벌 버퍼(412)에 라이트한다. 이에 따라 PIM 장치(400)의 글로벌 버퍼(412)에는 벡터 데이터가 저장된다.In
단계 364에서, 도 22에 나타낸 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 리드 신호(MAC_RD_BK)를 생성하여 PIM 장치(400)로 전송한다. 이때 PIM 컨트롤러(500)의 어드레스 발생기(550)는, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(400)로 전송한다. 도면에 나타내지는 않았지만, PIM 장치(400) 내에 복수의 메모리 뱅크들이 배치되는 경우, 어드레스 발생기(550)는, PIM 장치(400) 내의 복수의 메모리 뱅크들 중 메모리 뱅크(411)를 지정하는 뱅크선택신호를 함께 전송할 수 있다. PIM 장치(400)로 전송되는 MAC 리드 신호(MAC_RD_BK)는, PIM 장치(400)의 메모리 뱅크(411)에 대한 데이터 리드 동작을 제어한다. 메모리 뱅크(411)는, MAC 리드 신호(MAC_RD_BK)에 응답하여, 메모리 뱅크(411)에서 로우/컬럼 어드레스(ADDR_R/ADDR_C)에 의해 지정된 영역에 저장되어 있는 웨이트 데이터 중 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)을 MAC 오퍼레이터(420)에 전송한다. 일 예에서 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 데이터 전송은, 메모리 뱅크(411)와 MAC 오퍼레이터(420) 사이의 데이터 전송만을 위한 BIO 라인을 통해 이루어질 수 있다.In
한편, 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로 웨이트 데이터가 전송되는 클럭에 동기되어, 글로벌 버퍼(412)에 저장되어 있는 벡터 데이터(X0.0, …, X7.0)도 MAC 오퍼레이터(420)로 전송된다. 이를 위해 PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)로부터의 MAC 리드 신호(MAC_RD_BK)의 전송에 동기되어 글로벌 버퍼(412)에 대한 리드 동작을 제어하는 제어신호가 발생될 수 있다. 글로벌 버퍼(412)와 MAC 오퍼레이터(420) 사이의 데이터 전송은 GIO 라인을 통해 이루어질 수 있다. 이에 따라 BIO 라인을 통해 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 웨이트 데이터 전송과 독립적으로 글로벌 버퍼(412)로부터 MAC 오퍼레이터(420)로의 벡터 데이터 전송이 이루어질 수 있다. 일 예에서 MAC 오퍼레이터(420)로의 웨이트 데이터 전송 및 벡터 데이터 전송은 각각 BIO 라인 및 GIO 라인을 통해 동시에 이루어질 수 있다.On the other hand, the vector data (X0.0, ..., X7.0) stored in the
단계 365에서, 도 23에 나타낸 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(400)로 전송한다. MAC 입력 래치 신호(MAC_L1)는 PIM 장치(400)의 MAC 오퍼레이터(420)에 대한 웨이트 데이터의 입력 래치 동작 및 벡터 데이터의 입력 래치 동작을 제어한다. 이 입력 래치 동작에 의해, MAC 오퍼레이터(420)의 MAC 회로(122)로 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)과 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0)이 입력된다. MAC 회로(122)는, 웨이트 매트릭스의 열 수 및 벡터 매트릭스의 행 수와 동일한 개수, 즉 8개의 곱셈기들(122-11)을 포함할 수 있다. 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7) 각각과, 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0) 각각은 곱셈기들(122-11) 각각에 입력된다. In
단계 366에서, MAC 오퍼레이터(420)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 도 3을 참조하여 설명한 바와 같이, 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 곱셈기들(122-11)로부터 출력 데이터를 입력받아 가산하여 출력시킨다. 가산 로직(122-2)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스와의 MAC 연산 결과 데이터이다. 이에 따라 출력 데이터는, 도 4에 나타낸 MAC 결과 데이터들로 원소들(MAC0.0, …, MAC7.0)이 구성되는 8행 및 1열의 MAC 결과 매트릭스의 제1행 및 제1열의 원소(MAC0.0)를 구성한다. 가산 로직(122-2)으로부터 출력되는 출력 데이터(MAC0.0)는, 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(420)의 데이터 출력부(123) 내에 배치되는 출력 래치(123-1)로 입력된다.In
단계 367에서, 도 24에 나타낸 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(400)로 전송한다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 MAC 결과 데이터(MAC0.0)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(420)의 MAC 회로(122)로부터 입력되는 MAC 결과 데이터(MAC0.0)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력된다. 출력 래치(123-1)로부터 출력되는 MAC 결과 데이터(MAC0.0)는 데이터 출력부(123)의 전달게이트(123-2)로 입력된다.In
단계 368에서, 도 25에 나타낸 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(400)로 전송한다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 MAC 결과 데이터(MAC0.0)의 출력 동작과 출력 래치의 리셋 동작을 제어한다. 도 3을 참조하여 설명한 바와 같이, MAC 오퍼레이터(420)의 데이터 출력부(123)의 출력 래치(123-1)로부터 MAC 결과 데이터(MAC0.0)를 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 MAC 결과 데이터(MAC0.0)를 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 MAC 결과 데이터(MAC0.0)는, PIM 장치(400) 내에서 BIO 라인을 통해 메모리 뱅크(411)에 저장될 수 있다.In
단계 369에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 369에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 370에서는 단계 369에 의해 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 369에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 370에서의 판단은 단계 369에 의해 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 364의 과정을 다시 수행한다.In
단계 370으로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 364 내지 단계 370의 과정이 수행된다. 즉 단계 369에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, 웨이트 매트릭스의 제1행 대신 제2행과 벡터 매트릭스의 MAC 연산이 이루어진다는 점에서만 차이가 있다. 단계 370에서 피드백되어 단계 364 내지 단계 370을 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 369에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 370의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.Upon feedback from
도 26에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)에서 도 13을 참조하여 설명한 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 본 예에 따른 연산 과정 수행을 위해, PIM 장치(400)의 MAC 오퍼레이터(420)는, 도 15에 나타낸 MAC 오퍼레이터(120-1)와 동일한 구성을 갖는다. 도 26을 도 19와 함께 참조하면, 단계 381에서, MAC 연산을 수행하기 위해, 제1 데이터, 즉 웨이트 데이터를 메모리 뱅크(411)에 라이트한다. 이에 따라 PIM 장치(400)의 메모리 뱅크(411)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 13의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.FIG. 26 is a flowchart illustrating a process of performing the calculation process described with reference to FIG. 13 in the
단계 382에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(30)의 외부에서 PIM 컨트롤러(500)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 13의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 382에서 인퍼런스 요청이 전송되는 경우, 단계 383에서 PIM 컨트롤러(500)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 글로벌 버퍼(412)에 라이트한다. 이에 따라 PIM 장치(400)의 글로벌 버퍼(412)에는 벡터 데이터가 저장된다.In
단계 384에서, MAC 오퍼레이터(420)의 출력 래치를 바이어스 데이터로 초기 세팅하고, 초기 세팅된 바이어스 데이터를 MAC 오퍼레이터(420)의 누적 가산기로 피드백시킨다. 이 과정은, 도 13을 참조하여 설명한 연산에서 MAC 결과 매트릭스에 바이어스 매트릭스를 매트릭스 덧셈 연산시키기 위한 과정이다. 즉 도 15를 참조하여 설명한 바와 같이, MAC 오퍼레이터(420)의 데이터 출력부(123-A) 내의 출력 래치(123-1)를 바이어스 데이터로 초기 세팅시킨다. 매트릭스 곱셈 연산이 웨이트 매트릭스의 제1행에 대해 수행되는 과정이므로, 바이어스 데이터로서 바이어스 매트릭스의 제1행 및 제1열 원소(B0.0)가 출력 래치(123-1)에 초기 세팅된다. 출력 래치(123-1)는, 바이어스 데이터(B0.0)를 출력시키고, 출력 래치(123-1)로부터 출력되는 바이어스 데이터(B0.0)는 가산 로직(122-2)의 누적 가산기(122-21D)로 입력된다.In
일 예에서 출력 래치(123-1)로부터 바이어스 데이터(B0,0)를 출력시켜 누적 가산기(122-21D)로 피드백시키기 위해, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는 MAC 출력 래치 신호(MAC_L3)를 PIM 장치(400)의 MAC 오퍼레이터(420)로 전송시킬 수 있다. MAC 오퍼레이터(420)의 누적 가산기(122-21D)는, 후속으로 MAC 연산이 수행되는 경우, 가산 로직(122-2)의 마지막 스테이지에 배치되는 가산기(122-21C)로부터 출력되는 MAC 결과 데이터(MAC0.0)와 피드백된 바이어스 데이터(B0.0)를 가산하고, 그 결과인 바이어스된 데이터(Y0.0)를 출력하여 출력 래치(123-1)로 입력시킨다. 바이어스된 데이터(Y0.0)는, 후속으로 전송되는 MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력될 수 있다.In one example, in order to output the bias data B0,0 from the output latch 123-1 and feed it back to the accumulation adder 122-21D, the
단계 385에서, 도 22를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 리드 신호(MAC_RD_BK)를 생성하여 PIM 장치(400)로 전송한다. 이때 PIM 컨트롤러(500)의 어드레스 발생기(550)는, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(400)로 전송한다. PIM 장치(400)로 전송되는 MAC 리드 신호(MAC_RD_BK)는, PIM 장치(400)의 메모리 뱅크(411)에 대한 데이터 리드 동작을 제어한다. 메모리 뱅크(411)는, MAC 리드 신호(MAC_RD_BK)에 응답하여, 메모리 뱅크(411)에서 로우/컬럼 어드레스(ADDR_R/ADDR_C)에 의해 지정된 영역에 저장되어 있는 웨이트 데이터 중 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)을 MAC 오퍼레이터(420)에 전송한다. 일 예에서 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 데이터 전송은, 메모리 뱅크(411)와 MAC 오퍼레이터(420) 사이의 데이터 전송만을 위한 BIO 라인을 통해 이루어질 수 있다.In
한편, 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로 웨이트 데이터가 전송되는 클럭에 동기되어, 글로벌 버퍼(412)에 저장되어 있는 벡터 데이터(X0.0, …, X7.0)도 MAC 오퍼레이터(420)로 전송된다. 이를 위해 PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)로부터의 MAC 리드 신호(MAC_RD_BK)의 전송에 동기되어 글로벌 버퍼(412)에 대한 리드 동작을 제어하는 제어신호가 발생될 수 있다. 글로벌 버퍼(412)와 MAC 오퍼레이터(420) 사이의 데이터 전송은 GIO 라인을 통해 이루어질 수 있다. 이에 따라 BIO 라인을 통해 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 웨이트 데이터 전송과 독립적으로 글로벌 버퍼(412)로부터 MAC 오퍼레이터(420)로의 벡터 데이터 전송이 이루어질 수 있다. 일 예에서 MAC 오퍼레이터(420)로의 웨이트 데이터 전송 및 벡터 데이터 전송은 각각 BIO 라인 및 GIO 라인을 통해 동시에 이루어질 수 있다.On the other hand, the vector data (X0.0, ..., X7.0) stored in the
단계 386에서, 도 23을 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(400)로 전송한다. MAC 입력 래치 신호(MAC_L1)는 PIM 장치(400)의 MAC 오퍼레이터(420)에 대한 웨이트 데이터의 입력 래치 동작 및 벡터 데이터의 입력 래치 동작을 제어한다. 이 입력 래치 동작에 의해, MAC 오퍼레이터(420)의 MAC 회로(122)로 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)과 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0)이 입력된다. MAC 회로(122)는, 웨이트 매트릭스의 열 수 및 벡터 매트릭스의 행 수와 동일한 개수, 즉 8개의 곱셈기들(122-11)을 포함할 수 있다. 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7) 각각과, 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0) 각각은 곱셈기들(122-11) 각각에 입력된다. In
단계 387에서, MAC 오퍼레이터(420)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 곱셈기들(122-11)로부터 출력 데이터를 입력받아 가산연산을 수행하고, 그 결과를 누적 가산기(122-21D)로 출력시킨다. 가산 로직(122-2)의 가산기(122-21C)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스와의 MAC 연산 결과 데이터(MAC0.0)이다. 누적 가산기(122-21D)는, 가산기(122-21C)로부터 출력되는 매트릭스 곱셈 결과 데이터(MAC0.0)와 출력 래치(123-1)로부터 피드백된 바이어스 데이터(B0.0)를 가산하여 출력시킨다. 누적 가산기(122-21D)로부터 출력되는 출력 데이터, 즉 바이어스된 결과 데이터(Y0.0)는, MAC 오퍼레이터(120)의 데이터 출력부(123-A) 내에 배치되는 출력 래치(123-1)로 입력된다.In
단계 388에서, 도 24를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(400)로 전송한다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 출력 래치(123-1)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, MAC 오퍼레이터(420)의 출력 래치(123-1)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 바이어스된 결과 데이터(Y0.0)를 출력시킨다. 출력 래치(123-1)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는 데이터 출력부(123-A)의 전달게이트(123-2)로 입력된다.In
단계 389에서, 도 25를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(400)로 전송한다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 바이어스된 결과 데이터(Y0.0)의 출력 동작과 출력 래치의 리셋 동작을 제어한다. MAC 오퍼레이터(420)의 데이터 출력부(123)의 출력 래치(123-1)로부터 바이어스된 결과 데이터(Y0.0)를 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 바이어스된 결과 데이터(Y0.0)를 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는, PIM 장치(400) 내에서 BIO 라인을 통해 메모리 뱅크(411)에 저장될 수 있다.In
단계 390에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 390에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 391에서는 단계 390에 의해 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 390에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 391에서의 판단은 단계 390에 의해 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 384의 과정을 다시 수행한다.In
단계 391으로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 384 내지 단계 391의 과정이 수행된다. 즉 단계 389에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, 웨이트 매트릭스의 제1행 대신 제2행과 벡터 매트릭스의 MAC 연산이 이루어진다는 점에서만 차이가 있다. 단계 390에서 피드백되어 단계 384 내지 단계 390을 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 389에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 390의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.When fed back from
도 27에는 본 개시의 제2 실시예에 따른 PIM 시스템(30)에서 도 16을 참조하여 설명한 연산 과정을 수행하는 과정을 나타내는 플로챠트가 도시되어 있다. 본 예에 따른 연산 과정 수행을 위해, PIM 장치(400)의 MAC 오퍼레이터(420)는, 도 18에 나타낸 MAC 오퍼레이터(120-2)와 동일한 구성을 갖는다. 도 27을 도 18과 함께 참조하면, 단계 601에서, MAC 연산을 수행하기 위해, 제1 데이터, 즉 웨이트 데이터를 메모리 뱅크(411)에 라이트한다. 이에 따라 PIM 장치(400)의 메모리 뱅크(411)에는 웨이트 데이터가 저장된다. 본 예에서는 웨이트 데이터가 도 16의 웨이트 매트릭스를 구성하는 원소들(W0.0, …, W7.7)인 것으로 전제한다.FIG. 27 is a flowchart illustrating a process of performing the calculation process described with reference to FIG. 16 in the
단계 602에서, 인퍼런스(inference) 요청이 있는지를 판단한다. 인퍼런스 요청은, PIM 시스템(30)의 외부에서 PIM 컨트롤러(500)로 전송될 수 있다. 일 예에서 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 대기 상태를 유지할 수 있다. 다른 예에서, 인퍼런스 요청이 없는 경우, PIM 시스템(30)은 인퍼런스 요청이 전송될 때까지 MAC 연산 동작 외의 다른 동작, 예컨대 데이터 리드/라이트와 같은 메모리 모드의 동작을 수행할 수도 있다. 본 예에서 인퍼런스 요청과 함께 제2 데이터, 즉 벡터 데이터가 함께 전송되는 것을 전제한다. 또한 본 예에서 벡터 데이터는 도 16의 벡터 매트릭스를 구성하는 원소들(X0.0, …, X7.0)인 것으로 전제한다. 단계 602에서 인퍼런스 요청이 전송되는 경우, 단계 603에서 PIM 컨트롤러(500)는, 인퍼런스 요청과 함께 전송되는 벡터 데이터를 글로벌 버퍼(412)에 라이트한다. 이에 따라 PIM 장치(400)의 글로벌 버퍼(412)에는 벡터 데이터가 저장된다.In
단계 604에서, MAC 오퍼레이터(420)의 출력 래치를 바이어스 데이터로 초기 세팅하고, 초기 세팅된 바이어스 데이터를 MAC 오퍼레이터(420)의 누적 가산기로 피드백시킨다. 이 과정은, 도 16을 참조하여 설명한 연산에서 MAC 결과 매트릭스에 바이어스 매트릭스를 매트릭스 덧셈 연산시키기 위한 과정이다. 즉 도 18을 참조하여 설명한 바와 같이, MAC 오퍼레이터(420)의 데이터 출력부(123-B) 내의 출력 래치(123-1)를 바이어스 데이터로 초기 세팅시킨다. 매트릭스 곱셈 연산이 웨이트 매트릭스의 제1행에 대해 수행되는 과정이므로, 바이어스 데이터로서 바이어스 매트릭스의 제1행 및 제1열 원소(B0.0)가 출력 래치(123-1)에 초기 세팅된다. 출력 래치(123-1)는, 바이어스 데이터(B0.0)를 출력시키고, 출력 래치(123-1)로부터 출력되는 바이어스 데이터(B0.0)는 가산 로직(122-2)의 누적 가산기(122-21D)로 피드백되어 입력된다.In
일 예에서 출력 래치(123-1)로부터 바이어스 데이터(B0,0)를 출력시켜 누적 가산기(122-21D)로 피드백시키기 위해, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는 MAC 출력 래치 신호(MAC_L3)를 PIM 장치(400)의 MAC 오퍼레이터(420)로 전송시킬 수 있다. MAC 오퍼레이터(420)의 누적 가산기(122-21D)는, 후속으로 MAC 연산이 수행되는 경우, 가산 로직(122-2)의 마지막 스테이지에 배치되는 가산기(122-21C)로부터 출력되는 MAC 결과 데이터(MAC0.0)와 피드백된 바이어스 데이터(B0.0)를 가산하고, 그 결과인 바이어스된 데이터(Y0.0)를 출력하여 출력 래치(123-1)로 입력시킨다. 바이어스된 데이터(Y0.0)는, 후속으로 전송되는 MAC 출력 래치 신호(MAC_L3)에 동기되어 출력 래치(123-1)로부터 출력될 수 있다.In one example, in order to output the bias data B0,0 from the output latch 123-1 and feed it back to the accumulation adder 122-21D, the
단계 605에서, 도 22를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 리드 신호(MAC_RD_BK)를 생성하여 PIM 장치(400)로 전송한다. 이때 PIM 컨트롤러(500)의 어드레스 발생기(550)는, 로우/컬럼 어드레스(ADDR_R/ADDR_C)를 생성하여 PIM 장치(400)로 전송한다. PIM 장치(400)로 전송되는 MAC 리드 신호(MAC_RD_BK)는, PIM 장치(400)의 메모리 뱅크(411)에 대한 데이터 리드 동작을 제어한다. 메모리 뱅크(411)는, MAC 리드 신호(MAC_RD_BK)에 응답하여, 메모리 뱅크(411)에서 로우/컬럼 어드레스(ADDR_R/ADDR_C)에 의해 지정된 영역에 저장되어 있는 웨이트 데이터 중 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)을 MAC 오퍼레이터(420)에 전송한다. 일 예에서 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 데이터 전송은, 메모리 뱅크(411)와 MAC 오퍼레이터(420) 사이의 데이터 전송만을 위한 BIO 라인을 통해 이루어질 수 있다.In
한편, 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로 웨이트 데이터가 전송되는 클럭에 동기되어, 글로벌 버퍼(412)에 저장되어 있는 벡터 데이터(X0.0, …, X7.0)도 MAC 오퍼레이터(420)로 전송된다. 이를 위해 PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)로부터의 MAC 리드 신호(MAC_RD_BK)의 전송에 동기되어 글로벌 버퍼(412)에 대한 리드 동작을 제어하는 제어신호가 발생될 수 있다. 글로벌 버퍼(412)와 MAC 오퍼레이터(420) 사이의 데이터 전송은 GIO 라인을 통해 이루어질 수 있다. 이에 따라 BIO 라인을 통해 메모리 뱅크(411)로부터 MAC 오퍼레이터(420)로의 웨이트 데이터 전송과 독립적으로 글로벌 버퍼(412)로부터 MAC 오퍼레이터(420)로의 벡터 데이터 전송이 이루어질 수 있다. 일 예에서 MAC 오퍼레이터(420)로의 웨이트 데이터 전송 및 벡터 데이터 전송은 각각 BIO 라인 및 GIO 라인을 통해 동시에 이루어질 수 있다.On the other hand, the vector data (X0.0, ..., X7.0) stored in the
단계 606에서, 도 23을 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 입력 래치 신호(MAC_L1)를 생성하여 PIM 장치(400)로 전송한다. MAC 입력 래치 신호(MAC_L1)는 PIM 장치(400)의 MAC 오퍼레이터(420)에 대한 웨이트 데이터의 입력 래치 동작 및 벡터 데이터의 입력 래치 동작을 제어한다. 이 입력 래치 동작에 의해, MAC 오퍼레이터(420)의 MAC 회로(122)로 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7)과 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0)이 입력된다. MAC 회로(122)는, 웨이트 매트릭스의 열 수 및 벡터 매트릭스의 행 수와 동일한 개수, 즉 8개의 곱셈기들(122-11)을 포함할 수 있다. 웨이트 매트릭스의 제1행에 있는 원소들(W0.0, …, W0.7) 각각과, 벡터 매트릭스의 제1열에 있는 원소들(X0.0, …, X7.0) 각각은 곱셈기들(122-11) 각각에 입력된다. In
단계 607에서, MAC 오퍼레이터(420)의 MAC 회로(122)는, 입력되는 웨이트 매트릭스의 제R행 및 벡터 매트릭스의 제1열에 대한 MAC 연산을 수행한다. 초기값으로 R=1이 설정되며, 이에 따라 웨이트 매트릭스의 제1행 및 벡터 매트릭스의 제1열에 대한 MAC 연산이 수행된다. 구체적으로 곱셈 로직(122-1)의 곱셈기들(122-11) 각각은, 입력되는 데이터에 대한 곱셈 연산을 수행하고, 그 결과 데이터를 가산 로직(122-2)에 입력시킨다. 가산 로직(122-2)은, 곱셈기들(122-11)로부터 출력 데이터를 입력받아 가산연산을 수행하고, 그 결과를 누적 가산기(122-21D)로 출력시킨다. 가산 로직(122-2)의 가산기(122-21C)로부터 출력되는 출력 데이터는, 웨이트 매트릭스의 제1행과 벡터 매트릭스와의 MAC 연산 결과 데이터(MAC0.0)이다. 누적 가산기(122-21D)는, 가산기(122-21C)로부터 출력되는 매트릭스 곱셈 결과 데이터(MAC0.0)와 출력 래치(123-1)로부터 피드백된 바이어스 데이터(B0.0)를 가산하여 출력시킨다. 누적 가산기(122-21D)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는, MAC 오퍼레이터(120)의 데이터 출력부(123-A) 내에 배치되는 출력 래치(123-1)로 입력된다.In
단계 608에서, 도 24를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 출력 래치 신호(MAC_L3)를 생성하여 PIM 장치(400)로 전송한다. MAC 출력 래치 신호(MAC_L3)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 출력 래치(123-1)의 출력 래치 동작을 제어한다. 이 출력 래치 동작에 의해, MAC 오퍼레이터(420)의 출력 래치(123-1)는, MAC 출력 래치 신호(MAC_L3)에 동기되어 바이어스된 결과 데이터(Y0.0)를 출력시킨다. 출력 래치(123-1)로부터 출력되는 바이어스된 결과 데이터(Y0.0)는 활성화 함수 로직(123-5)으로 입력된다. 그리고 단계 610에서, 활성화 함수 로직(123-5)은, 입력되는 바이어스된 결과 데이터(Y0.0)에 활성화 함수를 적용하여 최종 출력값을 생성하여 전달게이트(도 3의 123-2)로 입력시킨다.In
단계 610에서, 도 25를 참조하여 설명한 바와 같이, PIM 컨트롤러(500)의 MAC 커맨드 발생기(540)는, MAC 래치 리셋 신호(MAC_L_RST)를 생성하여 PIM 장치(400)로 전송한다. MAC 래치 리셋 신호(MAC_L_RST)는 PIM 장치(400)의 MAC 오퍼레이터(420)에서의 최종 출력값의 출력 동작과 출력 래치의 리셋 동작을 제어한다. MAC 오퍼레이터(420)의 데이터 출력부(123-B)의 활성화 함수 로직(123-5)으로부터 최종 출력값을 입력받은 전달게이트(123-2)는, MAC 래치 리셋 신호(MAC_L_RST)에 동기되어 최종 출력값을 출력시킨다. 일 예에서 MAC 오퍼레이터(120)로부터 출력되는 최종 출력값은, PIM 장치(400) 내에서 BIO 라인을 통해 메모리 뱅크(411)에 저장될 수 있다.In
단계 611에서, MAC 연산이 수행된 웨이트 매트릭스의 행 수인 "R"을 하나 증가시킨다. 지금까지 웨이트 매트릭스의 제1행 내지 제8행 중 제1행에 대한 MAC 연산이 수행됨에 따라, 단계 611에서 웨이트 매트릭스의 행 수는 제1행에서 제2행으로 변경된다. 단계 612에서는 단계 611에서 변경된 웨이트 매트릭스의 행 수가 웨이트 매트릭스의 마지막 행, 즉 제8행보다 큰지의 여부를 판단한다. 단계 611에 의해 변경된 웨이트 매트릭스의 행 수가 제2행이므로, 단계 612에서의 판단은 단계 611에서 변경된 웨이트 매트릭스의 행 수가 제8행보다 작은 것으로 판단하여, 단계 604의 과정을 다시 수행한다.In
단계 612로부터 피드백되면, MAC 연산이 이루어지는 웨이트 매트릭스의 행 수, 벡터 매트릭스의 열 수, 및 바이어스 매트릭스의 열 수가 다른 점을 제외하고는 위에서 설명한 바와 동일한 단계 604 내지 단계 612의 과정이 수행된다. 즉 단계 611에서 웨이트 매트릭스의 행 수가 제2행으로 증가됨에 따라, MAC 연산의 대상이 웨이트 매트릭스의 제2행과 벡터 매트릭스인 점과, 바이어스 연산의 대상이 MAC 결과 매트릭스의 제1행 및 제2열 원소(MAC1.0)와 바이어스 매트릭스의 제1행 및 제2열 원소(B1.0)인 점에서만 차이가 있다. 단계 612에서 피드백되어 단계 604 내지 단계 611을 수행하는 과정은, 웨이트 매트릭스의 모든 행 수, 즉 제1행 내지 제8행과 벡터 매트릭스의 MAC 연산이 종료될 때까지 이루어진다. 웨이트 매트릭스의 제8행에 대한 MAC 연산이 종료되어, 단계 611에서 웨이트 매트릭스의 행 수가 제8행에서 제9행으로 변경되면, 단계 612의 판단에서 웨이트 매트릭스의 행 수인 제9행이 마지막 행인 제8행보다 크므로, MAC 연산 동작을 종료한다.Upon feedback from
도 28에는 본 개시의 제3 실시예에 다른 PIM 시스템(20)의 블록도가 도시되어 있다. 도 28에 나타낸 바와 같이, 본 예에 따른 PIM 시스템(20)은, PIM 컨트롤러(200)가 모드 레지스터(Mode Register)(260)를 더 포함하는 것을 제외하고는, 도 1을 참조하여 설명한 PIM 시스템(10)과 동일하다. 이에 따라 도 1을 참조하여 설명한 설명 동일한 설명은 생략하기로 한다. PIM 컨트롤러(200) 내의 모드 레지스터(260)는, PIM 시스템(20)의 MAC 모드 동작시 필요한 세팅을 지시하는 모드 레지스터 세팅(Mode Register Setting; 이하 MRS) 신호를 제공받을 수 있다. 일 예에서 스케줄러(220) 내의 모드 선택기(221)로부터 MRS 신호를 제공받을 수 있으나, 이는 단지 하나의 예시로서 별도의 MRS 신호 제공을 위한 로직이 배치될 수도 있다. MRS 신호를 제공받은 모드 레지스터(260)는, MRS 신호를 MAC 커맨드 발생기(240)로 전송한다.28 is a block diagram of a
일 예에서 MRS 신호에는, MAC 커맨드들(MAC_CMDs) 각각이 생성되는 타이밍이 포함될 수 있다. 이 경우 PIM 시스템(20)의 확정적(deterministic) 동작은, 모드 레지스터(260)에 의해 제공되는 MRS 데이터에 의해 수행될 수 있다. 다른 예에서 MRS 신호에는, MAC 모드 동작과 MAC 모드 동작들 사이의 타이밍이나, 또는 MAC 모드 동작과 메모리 모드 동작 사이의 모드 변환 동작에 관련된 정보가 포함될 수 있다. 일 예에서 모드 레지스터(260)에서의 MRS 세팅은, 외부로부터 인퍼런스가 전송되어 벡터 데이터가 PIM 장치(100)의 제2 메모리 뱅크(112)에 저장되기 전에 수행될 수 있다. 다른 예에서 모드 레지스터(260)에서의 MRS 세팅은, 외부로부터 인퍼런스가 전송되어 벡터 데이터가 PIM 장치(100)의 제2 메모리 뱅크(112)에 저장된 후에 수행될 수도 있다.In one example, the MRS signal may include a timing at which each of the MAC commands MAC_CMDs are generated. In this case, the deterministic operation of the
도 29에는 본 개시의 제4 실시예에 다른 PIM 시스템(40)의 블록도가 도시되어 있다. 도 29에 나타낸 바와 같이, 본 예에 따른 PIM 시스템(40)은, PIM 컨트롤러(500)가 모드 레지스터(260)를 더 포함하는 것을 제외하고는, 도 19를 참조하여 설명한 PIM 시스템(30)과 동일하다. 이에 따라 도 19를 참조하여 설명한 설명과 동일한 설명은 생략하기로 한다. PIM 컨트롤러(500) 내의 모드 레지스터(260)는, PIM 시스템(40)의 MAC 모드 동작시 필요한 세팅을 지시하는 MRS 신호를 제공받을 수 있다. 일 예에서 스케줄러(220) 내의 모드 선택기(221)로부터 MRS 신호를 제공받을 수 있으나, 이는 단지 하나의 예시로서 별도의 MRS 신호 제공을 위한 로직이 배치될 수도 있다. MRS 신호를 제공받은 모드 레지스터(260)는, MRS 신호를 MAC 커맨드 발생기(540)로 전송한다.29 is a block diagram of a
일 예에서 MRS 신호에는, MAC 커맨드들(MAC_CMDs) 각각이 생성되는 타이밍이 포함될 수 있다. 이 경우 PIM 시스템(40)의 확정적(deterministic) 동작은, 모드 레지스터(260)에 의해 제공되는 MRS 데이터에 의해 수행될 수 있다. 다른 예에서 MRS 신호에는, MAC 모드 동작과 MAC 모드 동작들 사이의 타이밍이나, 또는 MAC 모드 동작과 메모리 모드 동작 사이의 모드 변환 동작에 관련된 정보가 포함될 수 있다. 일 예에서 모드 레지스터(260)에서의 MRS 세팅은, 외부로부터 인퍼런스가 전송되어 벡터 데이터가 PIM 장치(400)의 글로벌 버퍼(412)에 저장되기 전에 수행될 수 있다. 다른 예에서 모드 레지스터(260)에서의 MRS 세팅은, 외부로부터 인퍼런스가 전송되어 벡터 데이터가 PIM 장치(400)의 글로벌 버퍼(412)에 저장된 후에 수행될 수도 있다.In one example, the MRS signal may include a timing at which each of the MAC commands MAC_CMDs are generated. In this case, the deterministic operation of the
이제까지 본 출원 기술에 대하여 실시예들을 중심으로 살펴보았다. 본 출원 기술이 속하는 기술분야에서 통상의 지식을 가진 자는 본 출원 기술이 본 출원 기술의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 출원 기술의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 출원 기술에 포함된 것으로 해석되어야 할 것이다.So far, with respect to the technology of the present application, it has been mainly looked at the embodiments. Those of ordinary skill in the art to which the technology of the present application belongs will understand that the technology of the present application may be implemented in a modified form without departing from the essential characteristics of the technology of the present application. Therefore, the disclosed embodiments are to be considered in an illustrative rather than a restrictive sense. The scope of the technology of the present application is indicated in the claims rather than the above description, and all differences within the scope equivalent thereto should be construed as being included in the technology of the present application.
10...PIM 시스템
100...PIM 장치
111...제1 메모리 뱅크
112...제2 메모리 뱅크
120...MAC 오퍼레이터
131...인터페이스
132...데이터 입출력 단자(DQ)
200...PIM 컨트롤러
210...커맨드 큐
220...스케줄러
221...모드 선택기
230...메모리 커맨드 발생기
240...MAC 커맨드 발생기
250...어드레스 발생기10...PIM
111...
120...
132...Data input/output terminal (DQ) 200...PIM controller
210...
221...
240...
Claims (52)
상기 PIM 장치의 메모리 모드 동작 및 MAC 모드 동작을 제어하되, 상기 메모리 모드에서는 메모리 커맨드 신호를 생성하여 상기 PIM 장치로 전송하고, 상기 MAC 모드에서는 제1 내지 제5 MAC 커맨드 신호를 상기 PIM 장치로 전송하도록 구성되는 PIM 컨트롤러를 포함하는 PIM 시스템.a first storage area, a second storage area, and a MAC operator receiving first data and second data from the first storage area and the second storage area, respectively, and performing a multiply-accumulate addition (MAC) operation; a PIM device; and
A memory mode operation and a MAC mode operation of the PIM device are controlled, wherein a memory command signal is generated and transmitted to the PIM device in the memory mode, and first to fifth MAC command signals are transmitted to the PIM device in the MAC mode A PIM system comprising a PIM controller configured to:
상기 제1 저장영역으로부터 상기 MAC 오퍼레이터로의 상기 제1 데이터의 전송과, 상기 제2 저장영역으로부터 상기 MAC 오퍼레이터로의 상기 제2 데이터의 전송은, 상기 PIM 장치 내의 글로벌 입출력(GIO) 라인을 통해 이루어지는 PIM 시스템.According to claim 1,
The transfer of the first data from the first storage area to the MAC operator and the transfer of the second data from the second storage area to the MAC operator are performed via a global input/output (GIO) line in the PIM device. PIM system made.
상기 MAC 연산은, 정해진 고정 시간 동안 수행하는 확정적 MAC 연산 방식으로 동작하도록 구성되는 PIM 시스템.According to claim 1,
The MAC operation is a PIM system configured to operate in a deterministic MAC operation method performed for a fixed fixed time.
상기 메모리 모드에서 상기 메모리 커맨드 신호를 생성하여 출력하는 메모리 커맨드 발생기; 및
상기 MAC 모드에서 상기 제1 내지 제5 MAC 커맨드 신호를 생성하여 출력하는 MAC 커맨드 발생기를 포함하는 PIM 시스템.According to claim 1, wherein the PIM controller,
a memory command generator for generating and outputting the memory command signal in the memory mode; and
and a MAC command generator for generating and outputting the first to fifth MAC command signals in the MAC mode.
상기 MAC 커맨드 발생기는, 상기 제1 내지 제5 MAC 커맨드 신호를 정해진 고정 시간 간격으로 순차적으로 출력시키도록 구성되는 PIM 시스템.5. The method of claim 4,
The MAC command generator is configured to sequentially output the first to fifth MAC command signals at predetermined fixed time intervals.
상기 제1 MAC 커맨드 신호는, 상기 제1 저장영역으로부터 상기 제1 데이터를 리드하는 제어신호이고,
상기 제2 MAC 커맨드 신호는, 상기 제2 저장영역으로부터 상기 제2 데이터를 리드하는 제어신호이고,
상기 제3 MAC 커맨드 신호는, 상기 제1 데이터를 상기 MAC 오퍼레이터 내에 래치시키는 제어신호이고,
상기 제4 MAC 커맨드 신호는, 상기 제2 데이터를 상기 MAC 오퍼레이터 내에 래치시키는 제어신호이며, 그리고
상기 제5 MAC 커맨드 신호는, 상기 MAC 오퍼레이터의 MAC 결과 데이터를 래치시키는 제어신호인 PIM 시스템.5. The method of claim 4,
The first MAC command signal is a control signal for reading the first data from the first storage area;
The second MAC command signal is a control signal for reading the second data from the second storage area;
The third MAC command signal is a control signal for latching the first data in the MAC operator,
The fourth MAC command signal is a control signal for latching the second data in the MAC operator, and
The fifth MAC command signal is a control signal for latching MAC result data of the MAC operator.
제1 시점에 상기 제1 MAC 커맨드 신호를 출력시키고,
상기 제1 시점으로부터 제1 레이턴시가 경과한 제2 시점에 상기 제2 MAC 커맨드 신호를 출력시키고,
상기 제2 시점으로부터 제2 레이턴시가 경과한 제3 시점에 상기 제3 MAC 커맨드 신호를 출력시키고,
상기 제3 시점으로부터 제3 레이턴시가 경과한 제4 시점에 상기 제4 MAC 커맨드 신호를 출력시키며, 그리고
상기 제4 시점으로부터 제4 레이턴시가 경과한 제5 시점에 상기 제5 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.7. The method of claim 6, wherein the MAC command generator comprises:
outputting the first MAC command signal at a first time,
outputting the second MAC command signal at a second time point when a first latency has elapsed from the first time point;
outputting the third MAC command signal at a third time point when a second latency has elapsed from the second time point;
outputting the fourth MAC command signal at a fourth time point when a third latency has elapsed from the third time point, and
and output the fifth MAC command signal at a fifth time point when a fourth latency has elapsed from the fourth time point.
상기 제1 레이턴시는, 상기 제1 MAC 커맨드 신호에 의해 상기 제1 저장영역으로부터 상기 제1 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고,
상기 제2 레이턴시는, 상기 제2 MAC 커맨드 신호에 의해 상기 제2 저장영역으로부터 상기 제2 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고,
상기 제3 레이턴시는, 상기 제3 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제1 데이터가 래치되는데 소요되는 시간으로 설정되고,
상기 제4 레이턴시는, 상기 제4 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제2 데이터가 래치되고, 래치된 상기 제1 데이터 및 제2 데이터에 대한 MAC 연산이 수행되는데 소요되는 시간으로 설정되는 PIM 시스템.8. The method of claim 7,
The first latency is set as a time required to read the first data from the first storage area and input it to the MAC operator by the first MAC command signal;
The second latency is set to a time required to read the second data from the second storage area and input it to the MAC operator by the second MAC command signal;
The third latency is set to a time required for the first data input to the MAC operator by the third MAC command signal to be latched;
The fourth latency is set as a time required for the second data input to the MAC operator by the fourth MAC command signal to be latched and to perform MAC operations on the latched first data and second data. being a PIM system.
상기 제1 저장영역 및 제2 저장영역으로부터 각각 상기 제1 데이터 및 제2 데이터를 입력받고, 상기 제3 MAC 커맨드 신호 및 상기 제4 MAC 커맨드 신호에 각각 동기되어 상기 제1 데이터 및 제2 데이터를 래치시키는 데이터 입력부;
상기 데이터 입력부로부터 래치되는 제1 데이터 및 제2 데이터를 입력받고 상기 MAC 연산을 수행하여 MAC 결과 데이터를 출력하는 MAC 회로; 및
상기 MAC 회로로부터의 상기 MAC 결과 데이터를 입력받고, 상기 제5 MAC 커맨드 신호에 동기되어 상기 MAC 결과 데이터를 래치시키는 출력래치를 포함하는 데이터 출력부를 포함하는 PIM 장치.The method of claim 6, wherein the MAC operator,
The first data and the second data are respectively received from the first storage area and the second storage area, and the first data and the second data are respectively synchronized with the third MAC command signal and the fourth MAC command signal. a data input unit for latching;
a MAC circuit for receiving first data and second data latched from the data input unit, performing the MAC operation, and outputting MAC result data; and
and a data output unit receiving the MAC result data from the MAC circuit and including an output latch for latching the MAC result data in synchronization with the fifth MAC command signal.
상기 데이터 출력부는, 상기 MAC 결과 데이터를 상기 GIO 라인으로 출력시키는 전달게이트를 더 포함하는 PIM 장치.10. The method of claim 9,
The data output unit may further include a transfer gate configured to output the MAC result data to the GIO line.
상기 MAC 커맨드 발생기는, 상기 제5 MAC 커맨드 신호를 출력시킨 후에 정해진 고정 시간이 경과한 후에 제6 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.7. The method of claim 6,
The MAC command generator is configured to output a sixth MAC command signal after a predetermined fixed time elapses after outputting the fifth MAC command signal.
상기 제6 MAC 커맨드 신호는, 상기 MAC 결과 데이터를 상기 MAC 오퍼레이터로부터 출력시키고, 상기 MAC 오퍼레이터 내의 출력 래치를 리셋시키는 제어신호인 PIM 시스템.12. The method of claim 11,
The sixth MAC command signal is a control signal for outputting the MAC result data from the MAC operator and resetting an output latch in the MAC operator.
제1 시점에 상기 제1 MAC 커맨드 신호를 출력시키고,
상기 제1 시점으로부터 제1 레이턴시가 경과한 제2 시점에 상기 제2 MAC 커맨드 신호를 출력시키고,
상기 제2 시점으로부터 제2 레이턴시가 경과한 제3 시점에 상기 제3 MAC 커맨드 신호를 출력시키고,
상기 제3 시점으로부터 제3 레이턴시가 경과한 제4 시점에 상기 제4 MAC 커맨드 신호를 출력시키고,
상기 제4 시점으로부터 제4 레이턴시가 경과한 제5 시점에 상기 제5 MAC 커맨드 신호를 출력시키며, 그리고
상기 제5 시점으로부터 제5 레이턴시가 경과한 제6 시점에 상기 제6 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.13. The method of claim 12, wherein the MAC command generator,
outputting the first MAC command signal at a first time,
outputting the second MAC command signal at a second time point when a first latency has elapsed from the first time point;
outputting the third MAC command signal at a third time point when a second latency has elapsed from the second time point;
outputting the fourth MAC command signal at a fourth time point when a third latency has elapsed from the third time point;
outputting the fifth MAC command signal at a fifth time point when a fourth latency has elapsed from the fourth time point, and
and output the sixth MAC command signal at a sixth time point when a fifth latency has elapsed from the fifth time point.
상기 제1 레이턴시는, 상기 제1 MAC 커맨드 신호에 의해 상기 제1 저장영역으로부터 상기 제1 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고,
상기 제2 레이턴시는, 상기 제2 MAC 커맨드 신호에 의해 상기 제2 저장영역으로부터 상기 제2 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고,
상기 제3 레이턴시는, 상기 제3 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제1 데이터가 래치되는데 소요되는 시간으로 설정되고,
상기 제4 레이턴시는, 상기 제4 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제2 데이터가 래치되고, 래치된 상기 제1 데이터 및 제2 데이터에 대한 MAC 연산이 수행되는데 소요되는 시간으로 설정되며, 그리고
상기 제5 레이턴시는, 상기 MAC 연산으로 생성되는 MAC 결과 데이터에 대한 출력 래치가 수행되는데 소요되는 시간으로 설정되는 PIM 시스템.14. The method of claim 13,
The first latency is set as a time required to read the first data from the first storage area and input it to the MAC operator by the first MAC command signal;
The second latency is set to a time required to read the second data from the second storage area and input it to the MAC operator by the second MAC command signal;
The third latency is set to a time required for the first data input to the MAC operator by the third MAC command signal to be latched;
The fourth latency is set as a time required for the second data input to the MAC operator by the fourth MAC command signal to be latched and to perform MAC operations on the latched first data and second data. becomes, and
The fifth latency is set as a time required to perform an output latch on the MAC result data generated by the MAC operation.
외부로부터 전송되는 커맨드를 저장하는 커맨드 큐;
상기 커맨드 큐에 저장되어 있는 커맨드가 상기 커맨드 큐로부터 출력되는 타이밍을 조정하는 스케줄러를 더 포함하는 PIM 시스템.The method of claim 6, wherein the PIM controller,
a command queue for storing commands transmitted from the outside;
The PIM system further comprising a scheduler that adjusts a timing at which a command stored in the command queue is output from the command queue.
상기 스케줄러는, 상기 커맨드 큐로부터 출력되는 커맨드가 상기 메모리 모드 동작을 요청하는지, 아니면 상기 MAC 모드 동작을 요청하는지에 관한 모드 선택 신호를 생성하는 모드 선택기를 포함하는 PIM 시스템.16. The method of claim 15,
and the scheduler includes a mode selector configured to generate a mode selection signal indicating whether a command output from the command queue requests the memory mode operation or the MAC mode operation.
상기 커맨드 큐는, 상기 스케줄러로부터의 제어신호에 응답하여, 상기 커맨드가 메모리 모드 동작을 요청하는 경우 상기 메모리 커맨드 발생기로 전송하고, 상기 커맨드가 MAC 모드 동작을 요청하는 경우 상기 MAC 커맨드 발생기로 전송하는 PIM 시스템.16. The method of claim 15,
The command queue, in response to a control signal from the scheduler, is transmitted to the memory command generator when the command requests a memory mode operation, and is transmitted to the MAC command generator when the command requests a MAC mode operation. PIM system.
상기 PIM 컨트롤러는, 상기 MAC 모드 동작시 필요한 모드 레지스터 세팅이 이루어지는 모드 레지스터를 더 포함하는 PIM 시스템.7. The method of claim 6,
The PIM controller further includes a mode register configured to set a mode register necessary for the MAC mode operation.
상기 모드 레지스터 세팅은, 상기 제1 내지 제5 MAC 커맨드 신호가 생성되는 타이밍을 포함하는 PIM 시스템.19. The method of claim 18,
The mode register setting includes a timing at which the first to fifth MAC command signals are generated.
상기 모드 레지스터 세팅은, MAC 모드 동작과 MAC 모드 동작 사이의 타이밍, 또는 MAC 모드 동작과 메모리 모드 동작 사이의 모드 변환 동작에 관련된 정보를 포함하는 PIM 시스템.19. The method of claim 18,
The mode register setting includes information related to a timing between a MAC mode operation and a MAC mode operation, or a mode conversion operation between a MAC mode operation and a memory mode operation.
상기 PIM 장치의 메모리 모드 동작 및 MAC 모드 동작을 제어하되, 상기 메모리 모드에서는 메모리 커맨드 신호를 생성하여 상기 PIM 장치로 전송하고, 상기 MAC 모드에서는 제1 내지 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하도록 구성되는 PIM 컨트롤러를 포함하는 PIM 시스템.a PIM device including a storage area, a global buffer, and a MAC operator receiving first data and second data from the storage area and the global buffer, respectively, and performing a MAC operation; and
A memory mode operation and a MAC mode operation of the PIM device are controlled, wherein a memory command signal is generated and transmitted to the PIM device in the memory mode, and first to fourth MAC command signals are transmitted to the PIM device in the MAC mode A PIM system comprising a PIM controller configured to:
상기 MAC 연산은, 정해진 고정 시간 동안 수행하는 확정적 MAC 연산 방식으로 동작하도록 구성되는 PIM 시스템.22. The method of claim 21,
The MAC operation is a PIM system configured to operate in a deterministic MAC operation method performed for a fixed fixed time.
상기 PIM 장치는, 상기 PIM 장치의 내부에서의 데이터 전송 통로를 제공하는 GIO 라인과, 상기 저장장치와 상기 MAC 오퍼레이터 사이의 데이터 전송 통로를 제공하는 뱅크 입출력(BIO) 라인을 더 포함하며,
상기 저장영역으로부터 상기 MAC 오퍼레이터로의 상기 제1 데이터의 전송은 상기 BIO 라인을 통해 이루어지고, 상기 글로벌 버퍼로부터 상기 MAC 오퍼레이터로의 상기 제2 데이터의 전송은, 상기 GIO 라인을 통해 이루어지는 PIM 시스템.22. The method of claim 21,
The PIM device further includes a GIO line providing a data transmission path inside the PIM device, and a bank input/output (BIO) line providing a data transmission path between the storage device and the MAC operator,
The transmission of the first data from the storage area to the MAC operator is performed through the BIO line, and the transmission of the second data from the global buffer to the MAC operator is performed through the GIO line.
상기 메모리 모드에서 상기 메모리 커맨드 신호를 생성하여 출력하는 메모리 커맨드 발생기; 및
상기 MAC 모드에서 상기 제1 내지 제3 MAC 커맨드 신호를 생성하여 출력하는 MAC 커맨드 발생기를 포함하는 PIM 시스템.The method of claim 21, wherein the PIM controller,
a memory command generator for generating and outputting the memory command signal in the memory mode; and
and a MAC command generator for generating and outputting the first to third MAC command signals in the MAC mode.
상기 MAC 커맨드 발생기는, 상기 제1 내지 제3 MAC 커맨드 신호를 정해진 고정 시간 간격으로 순차적으로 출력시키도록 구성되는 PIM 시스템.25. The method of claim 24,
The MAC command generator is configured to sequentially output the first to third MAC command signals at predetermined fixed time intervals.
상기 제1 MAC 커맨드 신호는, 상기 저장영역으로부터 상기 제1 데이터를 리드하는 제어신호이고,
상기 제2 MAC 커맨드 신호는, 상기 제1 데이터 및 제2 데이터를 상기 MAC 오퍼레이터 내에 래치시키는 제어신호이고,
상기 제3 MAC 커맨드 신호는, 상기 MAC 오퍼레이터의 MAC 결과 데이터를 래치시키는 제어신호인 PIM 시스템.25. The method of claim 24,
The first MAC command signal is a control signal for reading the first data from the storage area;
The second MAC command signal is a control signal for latching the first data and the second data in the MAC operator;
The third MAC command signal is a control signal for latching MAC result data of the MAC operator.
제1 시점에 상기 제1 MAC 커맨드 신호를 출력시키고,
상기 제1 시점으로부터 제1 레이턴시가 경과한 제2 시점에 상기 제2 MAC 커맨드 신호를 출력시키며, 그리고
상기 제2 시점으로부터 제2 레이턴시가 경과한 제3 시점에 상기 제3 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.27. The method of claim 26, wherein the MAC command generator comprises:
outputting the first MAC command signal at a first time,
outputting the second MAC command signal at a second time point when a first latency has elapsed from the first time point, and
and output the third MAC command signal at a third time point when a second latency has elapsed from the second time point.
상기 제1 레이턴시는, 상기 제1 MAC 커맨드 신호에 의해 상기 저장영역으로부터 상기 제1 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고, 그리고
상기 제2 레이턴시는, 상기 제2 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제1 데이터 및 제2 데이터가 래치되고, 래치된 상기 제1 데이터 및 제2 데이터에 대한 MAC 연산이 수행되는데 소요되는 시간으로 설정되는 PIM 시스템.28. The method of claim 27,
The first latency is set to a time required to read the first data from the storage area and input it to the MAC operator by the first MAC command signal, and
In the second latency, the first data and second data input to the MAC operator by the second MAC command signal are latched, and a MAC operation is performed on the latched first data and second data. A PIM system that is set to time.
상기 저장영역 및 상기 글로벌 버퍼로부터 각각 상기 제1 데이터 및 제2 데이터를 입력받고, 상기 제2 MAC 커맨드 신호에 동기되어 상기 제1 데이터 및 제2 데이터를 래치시키는 데이터 입력부;
상기 데이터 입력부로부터 래치되는 제1 데이터 및 제2 데이터를 입력받고 상기 MAC 연산을 수행하여 MAC 결과 데이터를 출력하는 MAC 회로; 및
상기 MAC 회로로부터의 상기 MAC 결과 데이터를 입력받고, 상기 제3 MAC 커맨드 신호에 동기되어 상기 MAC 결과 데이터를 래치시키는 출력래치를 포함하는 데이터 출력부를 포함하는 PIM 장치.29. The method of claim 28, wherein the MAC operator,
a data input unit receiving the first data and the second data from the storage area and the global buffer, respectively, and latching the first data and the second data in synchronization with the second MAC command signal;
a MAC circuit for receiving first data and second data latched from the data input unit, performing the MAC operation, and outputting MAC result data; and
and a data output unit receiving the MAC result data from the MAC circuit and including an output latch for latching the MAC result data in synchronization with the third MAC command signal.
상기 데이터 출력부는, 상기 MAC 결과 데이터를 상기 GIO 라인으로 출력시키는 전달게이트를 더 포함하는 PIM 장치.30. The method of claim 29,
The data output unit may further include a transfer gate configured to output the MAC result data to the GIO line.
상기 MAC 커맨드 발생기는, 상기 제3 MAC 커맨드 신호를 출력시킨 후에 정해진 고정 시간이 경과한 후에 제4 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.25. The method of claim 24,
The MAC command generator is configured to output a fourth MAC command signal after a predetermined fixed time has elapsed after outputting the third MAC command signal.
상기 제4 MAC 커맨드 신호는, 상기 MAC 결과 데이터를 상기 MAC 오퍼레이터로부터 출력시키고, 상기 MAC 오퍼레이터 내의 출력 래치를 리셋시키는 제어신호인 PIM 시스템.32. The method of claim 31,
The fourth MAC command signal is a control signal for outputting the MAC result data from the MAC operator and resetting an output latch in the MAC operator.
제1 시점에 상기 제1 MAC 커맨드 신호를 출력시키고,
상기 제1 시점으로부터 제1 레이턴시가 경과한 제2 시점에 상기 제2 MAC 커맨드 신호를 출력시키고,
상기 제2 시점으로부터 제2 레이턴시가 경과한 제3 시점에 상기 제3 MAC 커맨드 신호를 출력시키며, 그리고
상기 제3 시점으로부터 제3 레이턴시가 경과한 제4 시점에 상기 제4 MAC 커맨드 신호를 출력시키도록 구성되는 PIM 시스템.33. The method of claim 32, wherein the MAC command generator comprises:
outputting the first MAC command signal at a first time,
outputting the second MAC command signal at a second time point when a first latency has elapsed from the first time point;
outputting the third MAC command signal at a third time point when a second latency has elapsed from the second time point, and
and output the fourth MAC command signal at a fourth time point when a third latency has elapsed from the third time point.
상기 제1 레이턴시는, 상기 제1 MAC 커맨드 신호에 의해 상기 저장영역으로부터 상기 제1 데이터를 리드하여 상기 MAC 오퍼레이터로 입력시키는데 소요되는 시간으로 설정되고,
상기 제2 레이턴시는, 상기 제2 MAC 커맨드 신호에 의해 상기 MAC 오퍼레이터로 입력되는 상기 제1 데이터 및 제2 데이터가 래치되고, 래치된 상기 제1 데이터 및 제2 데이터에 대한 MAC 연산이 수행되는데 소요되는 시간으로 설정되며, 그리고
상기 제3 레이턴시는, 상기 MAC 연산으로 생성되는 MAC 결과 데이터에 대한 출력 래치가 수행되는데 소요되는 시간으로 설정되는 PIM 시스템.34. The method of claim 33,
The first latency is set to a time required to read the first data from the storage area and input it to the MAC operator by the first MAC command signal;
In the second latency, the first data and second data input to the MAC operator by the second MAC command signal are latched, and a MAC operation is performed on the latched first data and second data. is set to the time to be, and
The third latency is set to a time required to perform an output latch on the MAC result data generated by the MAC operation.
외부로부터 전송되는 커맨드를 저장하는 커맨드 큐;
상기 커맨드 큐에 저장되어 있는 커맨드가 상기 커맨드 큐로부터 출력되는 타이밍을 조정하는 스케줄러를 더 포함하는 PIM 시스템.The method of claim 24, wherein the PIM controller comprises:
a command queue for storing commands transmitted from the outside;
The PIM system further comprising a scheduler that adjusts a timing at which a command stored in the command queue is output from the command queue.
상기 스케줄러는, 상기 커맨드 큐로부터 출력되는 커맨드가 상기 메모리 모드 동작을 요청하는지, 아니면 상기 MAC 모드 동작을 요청하는지에 관한 모드 선택 신호를 생성하는 모드 선택기를 포함하는 PIM 시스템.36. The method of claim 35,
and the scheduler includes a mode selector configured to generate a mode selection signal indicating whether a command output from the command queue requests the memory mode operation or the MAC mode operation.
상기 커맨드 큐는, 상기 스케줄러로부터의 제어신호에 응답하여, 상기 커맨드가 메모리 모드 동작을 요청하는 경우 상기 메모리 커맨드 발생기로 전송하고, 상기 커맨드가 MAC 모드 동작을 요청하는 경우 상기 MAC 커맨드 발생기로 전송하는 PIM 시스템.36. The method of claim 35,
The command queue, in response to a control signal from the scheduler, is transmitted to the memory command generator when the command requests a memory mode operation, and is transmitted to the MAC command generator when the command requests a MAC mode operation. PIM system.
상기 PIM 컨트롤러는, 상기 MAC 모드 동작시 필요한 모드 레지스터 세팅이 이루어지는 모드 레지스터를 더 포함하는 PIM 시스템.25. The method of claim 24,
The PIM controller further includes a mode register configured to set a mode register necessary for the MAC mode operation.
상기 모드 레지스터 세팅은, 상기 제1 내지 제5 MAC 커맨드 신호가 생성되는 타이밍을 포함하는 PIM 시스템.39. The method of claim 38,
The mode register setting includes a timing at which the first to fifth MAC command signals are generated.
상기 모드 레지스터 세팅은, MAC 모드 동작과 MAC 모드 동작 사이의 타이밍, 또는 MAC 모드 동작과 메모리 모드 동작 사이의 모드 변환 동작에 관련된 정보를 포함하는 PIM 시스템.39. The method of claim 38,
The mode register setting includes information related to a timing between a MAC mode operation and a MAC mode operation, or a mode conversion operation between a MAC mode operation and a memory mode operation.
상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 제1 저장장치로부터 MAC 연산을 위한 MXN(M, N은 1보다 큰 자연수)의 웨이트 매트릭스의 R행(R은 "1"로 초기 세팅됨) 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계;
상기 PIM 컨트롤러로부터 제2 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 제2 저장장치로부터 MAC 연산을 위한 NX1의 벡터 매트릭스의 제1열 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계;
상기 PIM 컨트롤러로부터 제3 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 R행 원소들에 대한 입력 래치가 수행되도록 하는 단계;
상기 PIM 컨트롤러로부터 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 벡터 매트릭스의 제1열 원소들에 대한 입력 래치가 수행되도록 하는 단계;
상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계;
상기 PIM 컨트롤러로부터 제5 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 매트릭스 곱셈 연산 결과인 결과 데이터에 대한 출력 래치가 수행되도록 하는 단계:
상기 PIM 컨트롤러로부터 제6 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 출력 래치된 결과 데이터가 상기 MAC 오퍼레이터로부터 출력되도록 하는 단계; 및
상기 R을 +1 증가시킨 후 상기 R이 마지막 행보다 같거나 작은 경우 상기 단계들을 반복하여 수행하는 단계를 포함하는 PIM 시스템의 동작 방법.A method of operating a PIM system comprising: a PIM device for performing a MAC operation; and a PIM controller for controlling a MAC operation operation of the PIM device, the method comprising:
R row (R is a natural number greater than 1) of a weight matrix of MXN (M, N is a natural number greater than 1) for MAC operation from the first storage device of the PIM device by transmitting a first MAC command signal from the PIM controller to the PIM device initially set to "1") allowing elements to be input to a MAC operator of the PIM device;
transmitting a second MAC command signal from the PIM controller to the PIM device so that the first column elements of the vector matrix of NX1 for MAC operation are input from the second storage device of the PIM device to the MAC operator of the PIM device step;
transmitting a third MAC command signal from the PIM controller to the PIM device, so that an input latch for R row elements of the weight matrix is performed in the MAC operator;
transmitting a fourth MAC command signal from the PIM controller to the PIM device, so that an input latch on the first column elements of the vector matrix is performed in the MAC operator;
performing a matrix multiplication operation on the elements of the R-th row of the weight matrix and the elements of the first column of the vector matrix in the MAC operator;
transmitting a fifth MAC command signal from the PIM controller to the PIM device so that an output latch is performed on the result data that is the result of the matrix multiplication operation in the MAC operator;
transmitting a sixth MAC command signal from the PIM controller to the PIM device so that the output latched result data in the MAC operator is output from the MAC operator; and
and repeating the above steps if R is less than or equal to the last row after increasing R by +1.
상기 제1 내지 제6 MAC 커맨드 신호의 전송은, 정해진 고정 시간 동안 수행하는 확정적 MAC 연산 방식으로 이루어지는 PIM 시스템의 동작방법.42. The method of claim 41,
The transmission of the first to sixth MAC command signals is a method of operating a PIM system in which a deterministic MAC operation method is performed for a predetermined fixed time.
상기 MXN의 웨이트 매트릭스를 상기 제1 저장장치에 라이트하는 단계;
상기 PIM 시스템의 외부로부터 인퍼런스 요청이 있는 경우, 상기 NX1의 벡터 매트릭스를 상기 제2 저장장치에 라이트하는 단계를 더 포함하는 PIM 시스템의 동작방법.42. The method of claim 41, wherein before transmitting a first MAC command signal from the PIM controller to the PIM device,
writing the weight matrix of the MXN to the first storage device;
and writing the vector matrix of NX1 to the second storage device when there is an inference request from outside the PIM system.
상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하기 전에, 상기 MAC 오퍼레이터의 출력 래치를 NX1의 바이어스 매트릭스의 제R행 원소로 초기 세팅하는 단계를 더 포함하는 PIM 시스템의 동작 방법.42. The method of claim 41,
and, before sending a first MAC command signal from the PIM controller to the PIM device, initially setting an output latch of the MAC operator to an R-th row element of a bias matrix of NX1.
상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계에서, 상기 매트릭스 곱셈 연산 결과인 MAC 결과 데이터에 상기 초기 세팅된 바이어스 매트릭스가 가산되도록 하는 과정을 더 포함하는 PIM 시스템의 동작방법.45. The method of claim 44,
In the step of performing a matrix multiplication operation of the elements of the R-th row of the weight matrix and the elements of the first column of the vector matrix in the MAC operator, the initially set bias matrix is added to the MAC result data, which is the result of the matrix multiplication operation. The method of operation of the PIM system further comprising the step of adding.
상기 PIM 컨트롤러로부터 제6 MAC 커맨드 신호를 상기 PIM 장치로 전송하기 전에, 상기 MAC 오퍼레이터 내에서 출력 래치되는 상기 매트릭스 곱셈 연산 결과인 결과 데이터는, 상기 MAC 오퍼레이터 내에서 상기 초기 세팅된 바이어스 매트릭스가 가산된 결과 데이터로 대체되고,
상기 출력 래치된 초기 세팅된 바이어스 매트릭스가 가산된 결과 데이터에 활성화 함수를 적용하는 단계를 더 포함하며, 그리고
상기 MAC 오퍼레이터로부터 출력되는 상기 출력 래치된 결과 데이터는, 상기 활성화 함수가 적용된 데이터로 대체되는 PIM 시스템의 동작방법.46. The method of claim 45,
Before transmitting the sixth MAC command signal from the PIM controller to the PIM device, the result data, which is the result of the matrix multiplication operation output latched in the MAC operator, is obtained by adding the initially set bias matrix in the MAC operator. replaced by the resulting data,
applying an activation function to the result data to which the output latched initially set bias matrix is added; and
The output latched result data output from the MAC operator is replaced with data to which the activation function is applied.
상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 PIM 장치의 저장장치로부터 MAC 연산을 위한 MXN(M, N은 1보다 큰 자연수)의 웨이트 매트릭스의 R행(R은 "1"로 초기 세팅됨) 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계;
상기 PIM 장치의 글로벌 버퍼로부터 MAC 연산을 위한 NX1의 벡터 매트릭스의 제1열 원소들이 상기 PIM 장치의 MAC 오퍼레이터로 입력되도록 하는 단계;
상기 PIM 컨트롤러로부터 제2 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들 및 상기 벡터 매트릭스의 제1열 원소들에 대한 입력 래치가 수행되도록 하는 단계;
상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계;
상기 PIM 컨트롤러로부터 제3 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 매트릭스 곱셈 연산 결과인 결과 데이터에 대한 출력 래치가 수행되도록 하는 단계:
상기 PIM 컨트롤러로부터 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하여, 상기 MAC 오퍼레이터 내에서 상기 출력 래치된 결과 데이터가 상기 MAC 오퍼레이터로부터 출력되도록 하는 단계; 및
상기 R을 +1 증가시킨 후 상기 R이 마지막 행보다 같거나 작은 경우 상기 단계들을 반복하여 수행하는 단계를 포함하는 PIM 시스템의 동작 방법.A method of operating a PIM system comprising: a PIM device for performing a MAC operation; and a PIM controller for controlling a MAC operation operation of the PIM device, the method comprising:
A first MAC command signal is transmitted from the PIM controller to the PIM device, and the R row (R is “1”) of a weight matrix of MXN (M, N is a natural number greater than 1) for MAC operation from the storage device of the PIM device. (initially set to "), causing the elements to be input to the MAC operator of the PIM device;
allowing first column elements of a vector matrix of NX1 for MAC operation to be input from the global buffer of the PIM device to a MAC operator of the PIM device;
sending a second MAC command signal from the PIM controller to the PIM device so that an input latch is performed on the elements in the R-th row of the weight matrix and the elements in the first column of the vector matrix in the MAC operator; ;
performing a matrix multiplication operation on the elements of the R-th row of the weight matrix and the elements of the first column of the vector matrix in the MAC operator;
transmitting a third MAC command signal from the PIM controller to the PIM device so that an output latch is performed on the result data that is the result of the matrix multiplication operation in the MAC operator;
transmitting a fourth MAC command signal from the PIM controller to the PIM device so that the output latched result data in the MAC operator is output from the MAC operator; and
and repeating the above steps if R is less than or equal to the last row after increasing R by +1.
상기 제1 내지 제4 MAC 커맨드 신호의 전송은, 정해진 고정 시간 동안 수행하는 확정적 MAC 연산 방식으로 이루어지는 PIM 시스템의 동작방법.48. The method of claim 47,
The transmission of the first to fourth MAC command signals is a method of operating a PIM system in which the deterministic MAC operation is performed for a fixed time.
상기 MXN의 웨이트 매트릭스를 상기 저장장치에 라이트하는 단계;
상기 PIM 시스템의 외부로부터 인퍼런스 요청이 있는 경우, 상기 NX1의 벡터 매트릭스를 상기 글로벌 버퍼에 저장하는 단계를 더 포함하는 PIM 시스템의 동작방법.48. The method of claim 47, wherein before transmitting a first MAC command signal from the PIM controller to the PIM device,
writing the weight matrix of the MXN to the storage device;
and storing the vector matrix of the NX1 in the global buffer when there is an inference request from outside the PIM system.
상기 PIM 컨트롤러로부터 제1 MAC 커맨드 신호를 상기 PIM 장치로 전송하기 전에, 상기 MAC 오퍼레이터의 출력 래치를 NX1의 바이어스 매트릭스의 제R행 원소로 초기 세팅하는 단계를 더 포함하는 PIM 시스템의 동작 방법.48. The method of claim 47,
and, before sending a first MAC command signal from the PIM controller to the PIM device, initially setting an output latch of the MAC operator to an R-th row element of a bias matrix of NX1.
상기 MAC 오퍼레이터 내에서 상기 웨이트 매트릭스의 제R행 원소들과 상기 벡터 매트릭스의 제1열 원소들의 매트릭스 곱셈 연산을 수행하는 단계에서, 상기 매트릭스 곱셈 연산 결과인 MAC 결과 데이터에 상기 초기 세팅된 바이어스 매트릭스가 가산되도록 하는 과정을 더 포함하는 PIM 시스템의 동작방법.51. The method of claim 50,
In the step of performing a matrix multiplication operation of the elements of the R-th row of the weight matrix and the elements of the first column of the vector matrix in the MAC operator, the initially set bias matrix is added to the MAC result data, which is the result of the matrix multiplication operation. The method of operation of the PIM system further comprising the step of adding.
상기 PIM 컨트롤러로부터 제4 MAC 커맨드 신호를 상기 PIM 장치로 전송하기 전에, 상기 MAC 오퍼레이터 내에서 출력 래치되는 상기 매트릭스 곱셈 연산 결과인 결과 데이터는, 상기 MAC 오퍼레이터 내에서 상기 초기 세팅된 바이어스 매트릭스가 가산된 결과 데이터로 대체되고,
상기 출력 래치된 초기 세팅된 바이어스 매트릭스가 가산된 결과 데이터에 활성화 함수를 적용하는 단계를 더 포함하며, 그리고
상기 MAC 오퍼레이터로부터 출력되는 상기 출력 래치된 결과 데이터는, 상기 활성화 함수가 적용된 데이터로 대체되는 PIM 시스템의 동작방법.52. The method of claim 51,
Before transmitting the fourth MAC command signal from the PIM controller to the PIM device, the result data, which is the result of the matrix multiplication operation output latched in the MAC operator, is obtained by adding the initially set bias matrix in the MAC operator. replaced by the resulting data,
applying an activation function to the result data to which the output latched initially set bias matrix is added; and
The output latched result data output from the MAC operator is replaced with data to which the activation function is applied.
Priority Applications (31)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200006903A KR20210093126A (en) | 2020-01-17 | 2020-01-17 | Processing-In-Memory(PIM) system and operating method of the PIM system |
TW109131494A TW202141290A (en) | 2020-01-07 | 2020-09-14 | Processing-in-memory (pim) system and operating methods of the pim system |
US17/027,276 US11513733B2 (en) | 2020-01-07 | 2020-09-21 | Processing-in-memory (PIM) system and operating methods of the PIM system |
CN202110012256.4A CN113157248A (en) | 2020-01-07 | 2021-01-06 | In-memory Processing (PIM) system and method of operating PIM system |
US17/143,886 US11315611B2 (en) | 2020-01-07 | 2021-01-07 | Processing-in-memory (PIM) system and operating methods of the PIM system |
US17/143,941 US20210210125A1 (en) | 2020-01-07 | 2021-01-07 | Processing-in-memory (pim) system and operating methods of the pim system |
US17/143,984 US11847451B2 (en) | 2020-01-07 | 2021-01-07 | Processing-in-memory (PIM) device for implementing a quantization scheme |
US17/144,530 US11500629B2 (en) | 2020-01-07 | 2021-01-08 | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit |
US17/146,101 US11663000B2 (en) | 2020-01-07 | 2021-01-11 | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
US17/147,278 US11635911B2 (en) | 2020-01-07 | 2021-01-12 | Processing-in-memory (PIM) system and operating methods of the PIM system |
US17/148,473 US11720354B2 (en) | 2020-01-07 | 2021-01-13 | Processing-in-memory (PIM) system and operating methods of the PIM system |
US17/148,451 US11385837B2 (en) | 2020-01-07 | 2021-01-13 | Memory system |
US17/175,497 US11586438B2 (en) | 2020-01-07 | 2021-02-12 | Multiplication and accumulation (MAC) operator |
US17/175,446 US11817884B2 (en) | 2020-01-07 | 2021-02-12 | Neural network system with multiplication and accumulation(MAC) operator |
US17/175,477 US11579870B2 (en) | 2020-01-07 | 2021-02-12 | Multiplication and accumulation (MAC) operator |
US17/188,951 US11909421B2 (en) | 2020-01-07 | 2021-03-01 | Multiplication and accumulation (MAC) operator |
US17/225,915 US20210224039A1 (en) | 2020-01-07 | 2021-04-08 | Multiplication and accumulation (mac) operator and processing-in-memory (pim) device including the mac operator |
US17/491,954 US11704052B2 (en) | 2020-01-07 | 2021-10-01 | Processing-in-memory (PIM) systems |
US17/491,893 US11908541B2 (en) | 2020-01-07 | 2021-10-01 | Processing-in-memory (PIM) systems |
US17/694,220 US20220197596A1 (en) | 2020-01-07 | 2022-03-14 | Processing-in-memory (pim) system and operating methods of the pim system |
US17/703,744 US20220229633A1 (en) | 2020-01-07 | 2022-03-24 | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
US17/724,253 US11907680B2 (en) | 2020-01-07 | 2022-04-19 | Multiplication and accumulation (MAC) operator |
US17/726,303 US11829760B2 (en) | 2020-01-07 | 2022-04-21 | Processing-in-memory device and processing-in-memory system including the same |
US17/750,922 US20220283806A1 (en) | 2020-01-07 | 2022-05-23 | Processing-in-memory device having a plurality of global buffers and processing-in-memory system including the same |
US17/889,071 US11816362B2 (en) | 2020-01-07 | 2022-08-16 | Processing-in-memory (PIM) system and operating methods of the PIM system |
US17/889,134 US11822823B2 (en) | 2020-01-07 | 2022-08-16 | Processing-in-memory (PIM) system and operating methods of the PIM system |
US17/894,014 US20220405019A1 (en) | 2020-01-07 | 2022-08-23 | Processing-in-memory (pim) system and operating methods of the pim system |
US17/962,334 US20230033179A1 (en) | 2020-01-07 | 2022-10-07 | Accumulator and processing-in-memory (pim) device including the accumulator |
US18/114,140 US20230244442A1 (en) | 2020-01-07 | 2023-02-24 | Normalizer and multiplication and accumulation (mac) operator including the normalizer |
US18/118,634 US20230221883A1 (en) | 2020-01-07 | 2023-03-07 | Processing-in-memory (pim) system and operating methods of the pim system |
US18/334,659 US20230325186A1 (en) | 2020-01-07 | 2023-06-14 | Processing-in-memory (pim) system and operating methods of the pim system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200006903A KR20210093126A (en) | 2020-01-17 | 2020-01-17 | Processing-In-Memory(PIM) system and operating method of the PIM system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210093126A true KR20210093126A (en) | 2021-07-27 |
Family
ID=77125468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200006903A KR20210093126A (en) | 2020-01-07 | 2020-01-17 | Processing-In-Memory(PIM) system and operating method of the PIM system |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20210093126A (en) |
-
2020
- 2020-01-17 KR KR1020200006903A patent/KR20210093126A/en unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822823B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US11908541B2 (en) | Processing-in-memory (PIM) systems | |
US20230325186A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
US11467965B2 (en) | Processing-in-memory (PIM) device | |
US20210223996A1 (en) | Processing-in-memory (pim) devices | |
US20210210125A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
US11861369B2 (en) | Processing-in-memory (PIM) device | |
US20220351765A1 (en) | Processing-in-memory (pim) device for performing a burst multiplication and accumulation (mac) operation | |
US11385837B2 (en) | Memory system | |
US11847451B2 (en) | Processing-in-memory (PIM) device for implementing a quantization scheme | |
US11500629B2 (en) | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit | |
KR20210093126A (en) | Processing-In-Memory(PIM) system and operating method of the PIM system | |
US11315611B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
US20220283806A1 (en) | Processing-in-memory device having a plurality of global buffers and processing-in-memory system including the same | |
US20210224039A1 (en) | Multiplication and accumulation (mac) operator and processing-in-memory (pim) device including the mac operator | |
US11829760B2 (en) | Processing-in-memory device and processing-in-memory system including the same | |
US20230033179A1 (en) | Accumulator and processing-in-memory (pim) device including the accumulator | |
US20220019374A1 (en) | Processing-in-memory (pim) systems | |
KR20210093127A (en) | AIM device | |
US11842193B2 (en) | Processing-in-memory (PIM) device | |
US11635911B2 (en) | Processing-in-memory (PIM) system and operating methods of the PIM system | |
JP2871967B2 (en) | Dual-port semiconductor memory device | |
US20220197596A1 (en) | Processing-in-memory (pim) system and operating methods of the pim system | |
US20210373852A1 (en) | Processing-in-memory (pim) devices | |
US11537323B2 (en) | Processing-in-memory (PIM) device |