KR20220101519A - 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치 - Google Patents

엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치 Download PDF

Info

Publication number
KR20220101519A
KR20220101519A KR1020210003633A KR20210003633A KR20220101519A KR 20220101519 A KR20220101519 A KR 20220101519A KR 1020210003633 A KR1020210003633 A KR 1020210003633A KR 20210003633 A KR20210003633 A KR 20210003633A KR 20220101519 A KR20220101519 A KR 20220101519A
Authority
KR
South Korea
Prior art keywords
address
control signal
circuit
input data
index
Prior art date
Application number
KR1020210003633A
Other languages
English (en)
Inventor
손문규
정춘석
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020210003633A priority Critical patent/KR20220101519A/ko
Priority to US17/319,660 priority patent/US11423959B2/en
Priority to CN202110631272.1A priority patent/CN114756486A/zh
Priority to US17/864,871 priority patent/US11823764B2/en
Publication of KR20220101519A publication Critical patent/KR20220101519A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

PIM 장치는, 제1 입력데이터 및 제2 입력데이터에 대해 엘리먼트-와이즈 곱셈을 수행하여 출력데이터를 발생시키는 곱셈 회로와, 리드 제어신호에 응답하여 제1 입력데이터 및 제2 입력데이터를 곱셈 회로로 전송하고, 라이트 제어신호에 응답하여 출력데이터를 저장하는 메모리 회로와, 그리고 리드 제어신호에 응답하여 출력데이터가 저장될 메모리 회로의 어드레스 신호를 타겟 어드레스 신호로 저장하고, 라이트 제어신호에 응답하여 타겟 어드레스 신호를 메모리 회로로 전송하는 어드레스 파이프 회로를 포함한다.

Description

엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치{Processing-in-memory device for element-wise multiplication}
본 개시의 여러 실시예들은 프로세싱-인-메모리(Processing-In-Memory; 이하 PIM) 장치에 관한 것으로서, 특히 엘리먼트-와이즈 곱셈을 위한 PIM 장치에 관한 것이다.
최근 정보기술(IT) 산업 뿐만 아니라, 금융, 의료 등 산업 전반에 걸쳐 인공지능에 대한 관심이 급증하고 있다. 이에 따라 다양한 분야에서 인공 지능, 보다 정확하게는 딥 러닝(deep learning)의 도입을 고려하고 시제품화하고 있다. 일반적으로 딥 러닝은, 기존 신경망(neural networks)의 계층 수를 증가시킨 심층 신경망(deep neural networks, DNNs) 또는 심층망(deep networks)을 효과적으로 학습하여 패턴인식(pattern recognition)이나 추론(inference)에 활용하는 기술을 통칭한다.
딥 러닝에 대한 이와 같은 광범위한 관심의 배경과 원인들 중 하나는 연산을 수행하는 프로세서(processor)의 성능 향상일 수 있다. 인공 지능의 성능을 향상시키기 위해서는 신경망(neural network)의 층을 많게는 수백 개 쌓아 학습을 시킨다. 이와 같은 추세는 최근 몇 년간 계속 되었으며, 이로 인해 실제로 연산을 하는 하드웨어에 요구되는 연산량이 기하급수적으로 증가하였다. 더욱이 메모리와 프로세서가 분리되는 기존의 하드웨어 시스템의 경우, 메모리와 프로세서 사이의 데이터 통신양의 제약으로 인공 지능 하드웨어 성능 향상을 저해하고 있다. 이를 해결하기 위해, 최근에는 반도체 칩 자체에서 프로세서와 메모리가 일체화된 PIM 장치가 신경망 컴퓨팅 장치(computing device)로서 사용되고 있는 추세다. PIM 장치는 PIM 장치 내부에서 직접 연산 동작을 수행하므로, 신경망 내에서의 데이터 처리 속도를 향상시킨다.
본 출원이 해결하고자 하는 과제는, tCCD 간격으로 전송되는 커맨드들에 따라 엘리먼트-와이즈 곱셈 동작이 수행되도록 하여 엘리먼트-와이즈 곱셈 동작을 가속화할 수 있는 PIM 장치를 제공하는 것이다.
본 개시의 일 예에 따른 PIM 장치는, 제1 입력데이터 및 제2 입력데이터에 대해 엘리먼트-와이즈 곱셈을 수행하여 출력데이터를 발생시키는 곱셈 회로와, 리드 제어신호에 응답하여 상기 제1 입력데이터 및 제2 입력데이터를 상기 곱셈 회로로 전송하고, 라이트 제어신호에 응답하여 상기 출력데이터를 저장하는 메모리 회로와, 그리고 상기 리드 제어신호에 응답하여 상기 출력데이터가 저장될 상기 메모리 회로의 어드레스 신호를 타겟 어드레스 신호로 저장하고, 상기 라이트 제어신호에 응답하여 상기 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 어드레스 파이프 회로를 포함한다.
본 개시의 다른 예에 따른 PIM 장치는, 제1 입력데이터 및 제2 입력데이터에 대해 곱셈-누산(MAC) 또는 엘리먼트-와이즈 곱셈을 수행하여 출력데이터를 발생시키는 MAC 회로와, 리드 제어신호에 응답하여 상기 제1 입력데이터 및 제2 입력데이터를 상기 MAC 회로로 전송하고, 라이트 제어신호에 응답하여 상기 출력데이터를 저장하는 메모리 회로와, 그리고 상기 리드 제어신호에 응답하여 상기 출력데이터가 저장될 상기 메모리 회로의 어드레스 신호를 타겟 어드레스 신호로 저장하고, 상기 라이트 제어신호에 응답하여 상기 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 어드레스 파이프 회로를 포함한다.
여러 실시예들에 따르면, 어드레스 파이프 회로를 채용함으로써 tCCD 간격으로 전송되는 커맨드들에 따라 엘리먼트-와이즈 곱셈 동작이 수행될 수 있도록 할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 PIM 장치를 나타내 보인 블록도이다.
도 2는 도 1의 PIM 장치에서의 엘리먼트-와이즈 곱셈 과정의 일 예를 설명하기 위해 나타내 보인 도면들이다.
도 3은 도 1의 PIM 장치에서의 어드레스 파이프 회로 구성의 일 예를 나타내 보인 도면이다.
도 4는 도 1의 PIM 장치에서 엘리먼트-와이즈 곱셈 과정을 설명하기 위해 나타내 보인 타이밍도이다.
도 5 내지 도 13은 도 4의 타이밍도의 여러 시점에서 PIM 장치의 엘리먼트-와이즈 곱셈 동작을 설명하기 위해 나타내 보인 도면들이다.
도 14는 본 개시의 다른 예에 따른 PIM 장치를 나타내 보인 블록도이다.
도 15는 도 14의 PIM 장치의 MAC 회로 구성의 일 예를 나타내 보인 도면이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 요소를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다. "기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다. "로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.
도 1은 본 개시의 일 예에 따른 PIM 장치(100)를 나타내 보인 블록도이다. 도 1을 참조하면, 본 예에 따른 PIM 장치(100)는, 커맨드/어드레스 디코더(command/address decoder)(110)와, 메모리 회로(memory circuit)(120)와, 곱셈 회로(multiplier circuit)(130)와, 그리고 어드레스 파이프 회로(address pipeline circuit)(140)를 포함한다.
커맨드/어드레스 디코더(110)는, 외부, 예컨대 호스트 또는 컨트롤러로부터 커맨드를 입력받는다. 커맨드/어드레스 디코더(110)는, 커맨드와 함께 어드레스 정보도 함께 입력받는다. 이하에서는 설명의 편의상 외부로부터 전송되는 커맨드에 어드레스 정보가 포함되는 것으로 전제하기로 한다. 커맨드/어드레스 디코더(110)는, 전송되는 커맨드를 디코딩하여 제어신호들(RD, WT, MUL)을 발생시킨다. 커맨드/어드레스 디코더(110)는, 어드레스 정보를 디코딩하여 어드레스 신호(ADDR)를 발생시킨다. 다른 예에서 커맨드/어드레스 디코더(110)는, 커맨드 및 어드레스 정보를 각각 디코딩하는 커맨드 디코더 및 어드레스 디코더로 분리될 수도 있다.
일 예에서 커맨드/어드레스 디코더(110)는, 외부로부터 엘리먼트-와이즈 곱셈 커맨드(EWMUL)를 전송받을 수 있다. 커맨드/어드레스 디코더(110)는, 엘리먼트-와이즈 곱셈 커맨드(EWMUL)를 디코딩하여 리드 제어신호(RD), 라이트 제어신호(WT), 연산 제어신호(MUL), 및 어드레스 신호(ADDR)를 발생시킨다. 커맨드/어드레스 디코더(110)로부터 발생되는 리드 제어신호(RD), 라이트 제어신호(WT), 및 어드레스 신호(ADDR)는, 메모리 회로(120) 및 어드레스 파이프 회로(140)로 전송된다. 커맨드/어드레스 디코더(110)로부터 발생되는 연산 제어신호(MUL)는 곱셈 회로(130)로 전송된다.
커맨드/어드레스 디코더(110)는 모드 레지스터 셋(MRS; Mode Register Set)(111)을 포함할 수 있다. 모드 레지스터 셋(111)은, PIM 장치(100)가 동작하는데 있어서 필요한 파라메타 정보들에 대한 설정값들을 갖는다. PIM 장치(100)는, 통상의 메모리 액세스 동작, 예컨대 메모리 리드 동작 및 메모리 라이트 동작을 수행할 수 있다. 또한 PIM 장치(100)는, 엘리먼트-와이즈 곱셈 동작을 수행할 수도 있다. 본 예에서 엘리먼트-와이즈 곱셈은, 형태가 동일한 두 행렬을 원소끼리(element-wise) 곱하는 연산을 의미한다. 모드 레지스터 셋(111)은, PIM 장치(100)가 메모리 액세스 동작을 수행하는데 적용되는 제1 설정값 및 엘리먼트-와이즈 곱셈 동작을 수행하는데 적용되는 제2 설정값을 갖는다. 예컨대 리드 커맨드 및 라이트 커맨드와 같이 PIM 장치(100)의 메모리 액세스 동작이 요청되는 경우, 모드 레지스터 셋(111)은 제1 설정값을 활성화한다. 반면에 엘리먼트-와이즈 곱셈 커맨드(EWMUL)가 요청되는 경우, 모드 레지스터 셋(111)은 제2 설정값을 활성화한다.
이하에서는 PIM 장치(100)가 엘리먼트-와이즈 곱셈 동작을 수행하는 것을 전제로 하며, 이에 따라 모드 레지스터 셋(111)에서 제2 설정값이 활성화된 상태인 것을 가정하기로 한다. 따라서 PIM 장치(100)가 엘리먼트-와이즈 곱셈 동작을 수행하는 과정에서, 커맨드/어드레스 디코더(110)로부터 출력되는 리드 제어신호(RD) 및 라이트 제어신호(WT)는, 각각 PIM 장치(100)가 메모리 액세스 동작을 수행하는 과정에서의 리드 제어신호 및 라이트 제어신호와 구별될 수 있다.
메모리 회로(120)는, 제1 메모리 뱅크(first memory bank)(121), 제2 메모리 뱅크(second memory bank)(122), 및 제3 메모리 뱅크(third memory bank)(123)를 포함한다. 일 예에서 메모리 회로(120)는, 휘발성 메모리, 예컨대 에스램(SRAM) 또는 디램(DRAM)으로 구성될 수 있다. 예컨대 메모리 회로(120)는, SRAM, 동기식 DRAM(SDRAM), 더블 데이터 레이트 동기식 DRAM(DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM 등), 그래픽 더블 데이터 레이트 동기식 DRAM(GDDR, GDDR2, GDDR3 등), 쿼드 데이터 레이트 DRAM (QDR DRAM), RAMBUS XDR DRAM(XDR DRAM), 패스트 페이지 모드 DRAM (FPM DRAM), 비디오 DRAM (VDRAM), 확장 데이터 출력형 DRAM (EDO DRAM), 버스트 EDO DRAM(BEDO DRAM), 멀티뱅크 DRAM(MDRAM), 동기식 그래픽 RAM(SGRAM), 및/또는 기타 다른 여러 형태의 DRAM으로 구성될 수도 있다. 다른 예에서 메모리 회로(120)는, 플래시(flash) 메모리, 상변화 메모리(PCRAM), 저항변화 메모리(ReRAM), 강유전체 메모리(FeRAM), 자기저항 메모리(MRAM)와 같은 비휘발성 메모리로 구성될 수도 있다. 또 다른 예에서 메모리 회로(120)는, 휘발성 메모리와 비휘발성 메모리를 모두 포함하여 구성될 수도 있다.
제1 메모리 뱅크(121), 제2 메모리 뱅크(122), 및 제3 메모리 뱅크(123)는, 복수의 로우들(rows) 및 컬럼들(columns)을 포함한다. 복수의 로우들 및 컬럼들의 교차점에는 메모리 셀이 배치된다. 제1 메모리 뱅크(121), 제2 메모리 뱅크(122), 및 제3 메모리 뱅크(123)에서의 메모리 셀 액세스는, 로우 어드레스에 의해 선택된 로우의 메모리 셀들 중 컬럼 어드레스에 의해 선택된 컬럼에 배치되는 메모리 셀에 대해 이루어질 수 있다.
제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에는, 엘리먼트-와이즈 곱셈에 사용되는 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)가 각각 저장된다. 제1 메모리 뱅크(121)에 제1 입력 데이터(DA1)를 저장하고, 제2 메모리 뱅크(122)에 제2 입력 데이터(DA2)를 저장하는 동작은, 통상의 메모리 라이트 동작을 통해 수행될 수 있다. 이하에서는 메모리 라이트 동작을 통해, 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)가 각각 저장되어 있는 경우를 전제로 한다. 제3 메모리 뱅크(123)에는, 엘리먼트-와이즈 곱셈에 의해 생성되는 결과 데이터(DA_RST)가 저장될 수 있다.
제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)는, 커맨드/어드레스 디코더(110)로부터 전송되는 리드 제어신호(RD)에 응답하여, 각각 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)를 곱셈 회로(130)로 전송할 수 있다. 제3 메모리 뱅크(123)는, 커맨드/어드레스 디코더(110)로부터 전송되는 라이트 제어신호(WT)에 응답하여, 곱셈 회로(130)로부터 출력되는 결과 데이터(DA_RST)를 저장할 수 있다. 결과 데이터(DA_RST)를 저장하는 과정에서, 제3 메모리 뱅크(123)는 어드레스 파이프 회로(140)로부터 타겟 어드레스 신호(ADDR_T)를 전송받을 수 있다. 제3 메모리 뱅크(123)는, 커맨드/어드레스 디코더(110)로부터 전송되는 라이트 제어신호(WT)에 응답하여 타겟 어드레스 신호(ADDR_T)에 대응되는 위치에 결과 데이터(DA_RST)를 저장한다..
곱셈 회로(130)는, 메모리 회로(120)의 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 전송되는 제1 입력데이터(DA1) 및 제2 입력데이터(DA2)에 대한 엘리먼트-와이즈 곱셈을 수행하여 결과 데이터(DA_RST)를 생성한다. 곱셈 회로(130)는, 커맨드/어드레스 디코더(110)로부터 전송되는 연산 제어신호(MUL)에 응답하여 엘리먼트-와이즈 곱셈을 수행할 수 있다. 곱셈 회로(130)는, 라이트 제어신호(WT)에 응답하여 결과 데이터(DA_RST)를 메모리 회로(120)의 제3 메모리 뱅크(123)로 전송한다. 일 예에서 곱셈 회로(130)는, 두 개의 입력데이터를 입력받고, 두 개의 입력데이터에 대한 곱셈 연산을 수행하는 출력하는 적어도 하나의 곱셈기(muliplier)를 포함한다.
어드레스 파이프 회로(140)는, 제3 메모리 영역(123)의 타겟 어드레스 신호(ADDR_T)를 저장한다. 여기서 "타겟 어드레스 신호(ADDR_T)"는, 곱셈 회로(130)로부터 출력되는 결과 데이터(DA_RST)가 저장될 제3 메모리 영역(123)의 위치를 지정하는 어드레스 신호로 정의될 수 있다. 어드레스 파이프 회로(140)는, 라이트 제어신호(WT)에 응답하여 타겟 어드레스 신호(ADDR_T)를 제3 메모리 영역(123)으로 전송한다. 어드레스 파이프 회로(140)는, 각각이 타겟 어드레스 신호(ADDR_T)를 저장할 수 있는 복수의 어드레스 저장영역들을 포함할 수 있다. 일 예에서 복수의 어드레스 저장영역들 각각은, 어드레스 레지스터(address register)로 구성될 수 있다.
구체적으로 어드레스 파이프 회로(140)는, 어드레스 저장 동작 및 어드레스 출력 동작을 수행한다. 어드레스 파이프 회로(140)의 어드레스 저장 동작은, 커맨드/어드레스 디코더(110)로부터의 리드 제어신호(RD)에 응답하여 수행된다. 즉 어드레스 파이프 회로(140)는, 리드 제어신호(RD)에 응답하여 리드 제어신호(RD)와 함께 전송되는 어드레스 신호(ADDR)를 타겟 어드레스 신호(ADDR_T)로 저장한다. 이때 어드레스 파이프 회로(140)는, 전송되는 리드 제어신호(RD)에 대응하는 인덱스를 생성할 수 있다. 생성된 인덱스에 의해, 타겟 어드레스 신호(ADDR_T)와 리드 제어신호(RD)는 상호 연관된다.
어드레스 파이프 회로(140)의 어드레스 출력 동작은, 커맨드/어드레스 디코더(110)로부터의 라이트 제어신호(WT)에 응답하여 수행된다. 즉 어드레스 파이프 회로(140)는, 라이트 제어신호(RD)에 응답하여 저장되어 있는 타겟 어드레스 신호(ADDR_T)를 메모리 회로(120)의 제3 메모리 뱅크(123)로 전송한다. 이때 어드레스 파이프 회로(140)는, 전송되는 라이트 제어신호(WT)에 대응되는 인덱스 선택신호를 생성할 수 있다. 어드레스 파이프 회로(140)는, 인덱스 선택신호와 동일한 값의 인덱스와 연관된 타겟 어드레스 신호(ADDR_T)를 제3 메모리 뱅크(113)로 전송한다. 일 예에서 인덱스 선택신호가 "111"의 값을 갖는 경우, 어드레스 파이프 회로(140)는 "111"의 값을 갖는 인덱스와 연관된 타겟 어드레스 신호를 제3 메모리 뱅크(123)로 전송한다.
본 예에 따른 PIM 장치(100)로 엘리먼트-와이즈 곱셈 커맨드(EWMUL)가 전송되면, 리드 제어신호(RD)에 의해 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 각각 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)가 곱셈 회로(130)로 입력된다. 이와 함께, 곱셈 회로(130)로부터의 결과 데이터(DA_RST)가 저장될 제3 메모리 뱅크(123)의 어드레스 신호(ADDR)가 타겟 어드레스 신호(ADDR_T)로 어드레스 파이프 회로(140)에 저장된다. 어드레스 파이프 회로(140)에 저장된 타겟 어드레스 신호(ADDR_T)는, 결과 데이터(DA_RST)가 제3 메모리 뱅크(123)에 저장되도록 하는 라이트 제어신호(WT)와 함께 제3 메모리 뱅크(123)에 전송된다. 이와 같이, 어드레스 파이프 회로(140)에 의해 타겟 어드레스 신호(ADDR_T)가 제3 메모리 뱅크(123)로 제공되므로, 커맨드/어드레스 디코더(110)로부터 발생되는 어드레스 신호(ADDR)는, 제3 메모리 뱅크(123)에 결과 데이터(DA_RST)가 저장될 때까지 유지시킬 필요가 없다. 따라서 커맨드/어드레스 디코더(110)는, 연속된 커맨드 사이에 필요한 최소 시간 간격인 tCCD 간격으로 엘리먼트-와이즈 곱셈 커맨드(EWMUL)를 처리할 수 있다.
도 2는 도 1의 PIM 장치(100)에서의 엘리먼트-와이즈 곱셈 과정의 일 예를 설명하기 위해 나타내 보인 도면들이다. 도 2를 참조하면, 본 개시의 일 예에 따른 PIM 장치(100)는, 제1 입력 데이터들(DA1_0-DA1_N) 및 제2 입력 데이터들(DA2_0-DA2_N)에 대한 엘리먼트-와이즈 곱셈을 수행하고, 출력 데이터들(DA_RST_0-DA_RST_N)을 발생시킨다. 여기서 "N"은 자연수를 나타낸다. 이하에서 제1 입력 데이터들(DA1_0-DA1_N), 제2 입력 데이터들(DA2_0-DA2_N), 및 출력 데이터들(DA_RST_0-DA_RST_N)은, 모두 부동 소수점(floating point) 형식을 갖는 것을 전제하기로 한다.
엘리먼트-와이즈 곱셈이 제1 행렬 및 제2 행렬에 대해 이루어지는 경우, 일 예에서 제1 입력 데이터들(DA1_0-DA1_N) 및 제2 입력데이터들(DA2_0-DA2_N)은 각각 제1 행렬 및 제2 행렬을 구성하는 엘리먼트들에 해당될 수 있다. 이 경우 제1 입력 데이터들(DA1_0-DA1_N) 및 제2 입력 데이터들(DA2_0-DA2_N) 각각으로부터 곱셈 회로(130)에 입력되는 제1 입력데이터 및 제2 입력데이터는, 각각 제1 행렬 및 제2 행렬에서 동일한 행 및 열에 위치하는 엘리먼트에 해당한다. 다른 예에서 제1 입력 데이터들(DA1_0-DA1_N)은 제1 행렬을 구성하는 엘리먼트들 중 하나의 엘리먼트에 해당할 수 있으며, 제2 입력 데이터들(DA2_0-DA2_N)은 제2 행렬을 구성하는 엘리먼트들 중 하나의 엘리먼트에 해당할 수 있다. 이 경우에도 제1 입력 데이터들(DA1_0-DA1_N) 및 제2 입력 데이터들(DA2_0-DA2_N)은, 각각 제1 행렬 및 제2 행렬에서 동일한 행 및 열에 위치하는 엘리먼트에 해당한다.
제1 입력 데이터들(DA1_0-DA1_N)은, 제1 메모리 뱅크(121)의 제1 로우(R1)에 저장되어 있다. 제2 입력 데이터들(DA2_0-DA2_N)은, 제2 메모리 뱅크(121)의 제1 로우(R1)에 저장되어 있다. 출력 데이터들(DA_RST_0-DA_RST_N)은, 제3 메모리 뱅크(123)의 제1 로우(R1)에 저장된다. 제1 메모리 뱅크(121), 제2 메모리 뱅크(122), 및 제3 메모리 뱅크(123)의 제1 로우(R1)는 모두 동일한 로우 어드레스를 갖는다.
일 예에서 제1 입력 데이터들(DA1_0-DA1_N) 각각과, 제2 입력 데이터들(DA2_0-DA2_N) 각각은, 곱셈 회로(130) 내의 곱셈기가 갖는 연산 능력에 부합되는 데이터 크기로 구성된다. 예컨대 곱셈 회로(130) 내의 곱셈기가 부동 소수점 형태의 16비트 데이터들에 대한 곱셈 연산을 수행할 수 있는 경우, 곱셈기에 입력되는 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)는 각각 부동 소수점 형태의 16비트로 구성될 수 있다. 이 경우 본 예에 따른 PIM 장치(100)에서 제1 입력 데이터들(DA1_0-DA1_N) 및 제2 입력 데이터들(DA2_0-DA2_N)에 대한 엘리먼트-와이즈 곱셈을 모두 완료하기 위해서, 곱셈 회로(130)는 (N+1)번의 엘리먼트-와이즈 곱셈을 반복적으로 수행해야 한다.
PIM 장치(100)가 (N+1)번의 엘리먼트-와이즈 곱셈을 수행하기 위해, 외부, 예컨대 호스트 또는 컨트롤러로부터 엘리먼트-와이즈 곱셈 커맨드(EWMUL)를 (N+1)번 전송받아야 한다. 본 예에서는 엘리먼트-와이즈 곱셈 커맨드(EWMUL)에 어드레스 신호(ADDR)가 포함되는 것을 전제하기로 한다. 그러나 이는 단지 하나의 예일 뿐, 엘리먼트-와이즈 곱셈 커맨드(EWMUL)와 어드레스 신호(ADDR)가 독립적으로 전송될 수도 있다. 본 예에서 어드레스 신호(ADDR)는 컬럼 어드레스 신호를 포함하는 것을 전제하기로 한다. 따라서 엘리먼트-와이즈 곱셈 커맨드(EWMUL)에 포함되는 어드레스 신호(ADDR)는, 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)가 저장되어 있고, 또한 출력 데이터(DA_RST)가 저장될 컬럼 어드레스를 의미한다. 이하에서는 제1 입력 데이터 및 제2 입력 데이터가 저장되어 있는 컬럼 어드레스와, 출력 데이터가 저장될 컬럼 어드레스가 모두 동일한 경우를 예로 들기로 한다.
제1 어드레스 신호(ADDR_0)를 포함하는 첫번째 엘리먼트-와이즈 곱셈 커맨드가 전송되면, PIM 장치(100)는 첫번째 엘리먼트-와이즈 곱셈을 수행한다. 이 경우 도면에 나타낸 바와 같이, 제1 메모리 뱅크(121)의 제1 어드레스 신호(ADDR_0)에 대응하는 첫번째 제1 입력 데이터(DA1_0)가 곱셈 회로(130)로 전송된다. 마찬가지로 제2 메모리 뱅크(122)의 제1 어드레스 신호(ADDR_0)에 대응하는 첫번째 제2 입력 데이터(DA2_0)도 곱셈 회로(130)로 전송된다. 곱셈 회로(130)에서는 첫번째 제1 입력 데이터(DA1_0) 및 첫번째 제2 입력 데이터(DA2_0)에 대한 엘리먼트-와이즈 곱셈을 수행하고, 첫번째 결과 데이터(DA_RST_0)를 제3 메모리 뱅크(123)의 제1 어드레스 신호(ADDR_0)가 지정한 영역에 저장한다.
제2 어드레스 신호(ADDR_1)를 포함하는 두번째 엘리먼트-와이즈 곱셈 커맨드가 전송되면, PIM 장치(100)는 두번째 엘리먼트-와이즈 곱셈을 수행한다. 이 경우 도면에 나타내지는 않았지만, 제1 메모리 뱅크(121)의 제2 어드레스 신호(ADDR_1)에 대응하는 두번째 제1 입력 데이터(DA1_1)가 곱셈 회로(130)로 전송된다. 마찬가지로 제2 메모리 뱅크(122)의 제2 어드레스 신호(ADDR_1)에 대응하는 두번째 제2 입력 데이터(DA2_1)도 곱셈 회로(130)로 전송된다. 곱셈 회로(130)에서는 두번째 제1 입력 데이터(DA1_1) 및 두번째 제2 입력 데이터(DA2_1)에 대한 엘리먼트-와이즈 곱셈을 수행하고, 두번째 결과 데이터(DA_RST_1)를 제3 메모리 뱅크(123)의 제2 어드레스 신호(ADDR_1)가 지정한 영역에 저장한다. 이와 같은 동작은 (N+1)번째 엘리먼트-와이즈 곱셈이 모두 완료될 때까지 반복되어 수행된다.
지금까지 설명한 바와 같이, 한 번의 엘리먼트-와이즈 곰셈 과정은, 결과 데이터(DA_RST)가 제3 메모리 뱅크(123)에 저장된 후에 종료된다. 결과 데이터(DA_RST)가 제3 메모리 뱅크(123)에 저장되기 위해서는, 결과 데이터(DA_RST)가 저장될 영역을 지정하는 어드레스 신호(ADDR)가 유지되어야 한다. 예컨대 첫번째 엘리먼트-와이즈 곱셈에서 발생된 첫번째 출력 데이터(DA_RST_0)가 제3 메모리 뱅크(123)에 저장되는 동작이 완료될 때까지 제1 어드레스 신호(ADDR_0)가 유지되어야 한다. 이에 따라 일반적인 경우, 첫번째 출력 데이터(DA_RST_0)가 제3 메모리 뱅크(123)에 저장되는 동작이 완료될 때까지 두번째 엘리먼트-와이즈 곱셈 동작을 수행할 수 없게 된다. 그러나 본 예에 따른 PIM 장치(100)의 경우, 제1 어드레스 신호(ADDR_0)가 어드레스 파이프 회로(도 1의 140)에 타겟 어드레스로 저장된다. 그리고 첫번째 출력 데이터(DA_RST_0)가 제3 메모리 뱅크(123)에 저장될 시점에 어드레스 파이프 회로(140)에 저장된 타겟 어드레스, 즉 제1 어드레스 신호(ADDR_0)가 제3 메모리 뱅크(123)로 전송된다. 따라서 첫번째 출력 데이터(DA_RST_0)가 제3 메모리 뱅크(123)에 저장되기 전에 두번째 엘리먼트-와이즈 곱셈 커맨드를 전송받을 수 있으며, 이에 따라 첫번째 엘리먼트-와이즈 곱셈과 두번째 엘리먼트-와이즈 곱셈이 중첩적으로 수행될 수 있게 된다.
도 3은 도 1의 PIM 장치(100)에서의 어드레스 파이프 회로(140) 구성의 일 예를 나타내 보인 도면이다. 이하에서는 PIM 장치(100)에 제1 엘리먼트-와이즈 곱셈 커맨드, 제2 엘리먼트-와이즈 곱셈 커맨드, 및 제3 엘리먼트-와이즈 곱셈 커맨드가 순차적으로 전송되는 경우를 예로 들기로 한다. 이에 따라 어드레스 파이프 회로(140)에는 제1 리드 제어신호(RD0), 제1 라이트 제어신호(WT0), 및 제1 어드레스 신호(ADDR0)가 전송되고, 이어서 제2 리드 제어신호(RD1), 제2 라이트 제어신호(WT1), 및 제2 어드레스 신호(ADDR1)가 전송되며, 그리고 끝으로 제3 리드 제어신호(RD2), 제3 라이트 제어신호(WT2), 및 제3 어드레스 신호(ADDR2)가 전송된다. 도 3을 참조하면, 어드레스 파이프 회로(140)는, 타겟 어드레스 및 인덱스가 저장되는 어드레스 저장소(141)와, 인덱스를 생성하는 인덱스 발생기(index generator)(142)와, 그리고 인덱스를 검출하여 출력한 타겟 어드레스를 지정하는 인덱스 검출기(index detector)(143)를 포함한다.
어드레스 저장소(141)는, 복수의 어드레스 저장영역들(141-1) 및 인덱스 저장영역들(141-2)을 갖는다. 복수의 어드레스 저장영역들(141-1) 각각에는 하나의 타겟 어드레스 신호(ADDR_T)가 저장된다. 즉 커맨드/어드레스 디코더(도 1의 110)로부터 어드레스 파이프 회로(140)로 전송되는 어드레스 신호(ADDR)는, 복수의 어드레스 저장영역들(141-1) 중 하나의 어드레스 저장영역에 저장된다. 예컨대 첫번째 어드레스 저장영역에는 제1 어드레스 신호(ADDR0)가 제1 타겟 어드레스 신호(ADDR_T0)로 저장된다. 두번째 어드레스 저장영역에는 제2 어드레스 신호(ADDR1)가 제2 타겟 어드레스 신호(ADDR_T1)로 저장된다. 세번째 어드레스 저장영역에는 제3 어드레스 신호(ADDR2)가 제3 타겟 어드레스 신호(ADDR_T2)로 저장된다. 복수의 인덱스 저장영역들(141-2) 각각에는 하나의 인덱스(INDEX)가 저장된다. 예컨대 첫번째 인덱스 저장영역에는 제1 인덱스(INDEX0)가 저장된다. 두번째 인덱스 저장영역에는 제2 인덱스(INDEX1)가 저장된다. 세번째 인덱스 저장영역에는 제3 인덱스(INDEX2)가 저장된다.
어드레스 저장영역들(141-1) 각각에 저장된 타겟 어드레스 신호(ADDR_T)와 인덱스 저장영역들(141-2) 각각에 저장된 인덱스(INDEX)는, 상호 1:1로 매치(match)된다. 즉 타겟 어드레스 신호(ADDR_T)는 하나의 인덱스(INDEX)에 연관된다. 예컨대 제1 타겟 어드레스 신호(ADDR_T0)는 제1 인덱스(INDEX0)에 연관된다. 제2 타겟 어드레스 신호(ADDR_T1)는 제2 인덱스(INDEX1)에 연관된다. 제3 타겟 어드레스 신호(ADDR_T2)는 제3 인덱스(INDEX2)에 연관된다. 따라서 어느 하나의 인덱스(INDEX)가 선택되면, 복수의 타겟 어드레스들(ADDR_Ts) 중 선택된 인덱스(INDEX)에 연관되는 타겟 어드레스 신호(ADDR_T)가 선택될 수 있다.
인덱스 발생기(142)는, 커맨드/어드레스 디코더(도 1의 110)로부터 전송되는 리드 제어신호(RD)에 응답하여 인덱스(INDEX)를 생성하여 인덱스 저장영역들(141-2) 중 하나에 저장한다. 일 예에서 인덱스 발생기(142)는 제1 카운터(CNT1)(142-1)를 포함할 수 있다. 제1 카운터(CNT1)(142-1)는, 리드 제어신호(RD)를 입력받는다. 제1 카운터(CNT1)(142-1)는, 입력된 리드 제어신호(RD)를 카운팅하고, 카운팅한 값을 인덱스(INDEX)로서 인덱스 저장영역들(141-2)로 전송한다. 이때 저장된 인덱스(INDEX)는, 새롭게 저장된 타겟 어드레스 신호(ADDR_T), 즉 입력된 리드 제어신호(RD)와 함께 입력된 어드레스 신호(ADDR)에 부여된다.
어드레스 파이프 회로(140)로 제1 리드 제어신호(RD0) 및 제1 어드레스 신호(ADDR0)가 입력되면, 제1 어드레스 신호(ADDR0)는 제1 타겟 어드레스 신호(ADDR_T0)로 어드레스 저장영역(141-1)에 저장된다. 그리고 제1 카운터(CNT1)(142-1)는, 인덱스(INDEX)로서 카운팅값 "001"을 생성한다. 이 카운팅값 "001"은 인덱스 저장 영역(141-2)에 제1 인덱스(INDEX0)로 저장되며, 제1 타겟 어드레스 신호(ADDR_T0)에 대응된다. 이어서 어드레스 파이프 회로(140)로 제2 리드 제어신호(RD1) 및 제2 어드레스 신호(ADDR1)가 입력되면, 제2 어드레스 신호(ADDR1)는 제2 타겟 어드레스 신호(ADDR_T1)로 어드레스 저장영역(141-1)에 저장된다. 그리고 제1 카운터(CNT1)(142-1)는, 인덱스(INDEX)로서 카운팅값 "010"을 생성한다. 이 카운팅값 "010"은 인덱스 저장 영역(141-2)에 제2 인덱스(INDEX1)로 저장되며, 제2 타겟 어드레스 신호(ADDR_T1)에 대응된다. 마찬가지로 어드레스 파이프 회로(140)로 제3 리드 제어신호(RD2) 및 제3 어드레스 신호(ADDR2)가 입력되면, 제3 어드레스 신호(ADDR2)는 제3 타겟 어드레스 신호(ADDR_T2)로 어드레스 저장영역(141-1)에 저장된다. 그리고 제1 카운터(CNT1)(142-1)는, 인덱스(INDEX)로서 카운팅값 "011"을 생성한다. 이 카운팅값 "011"은 인덱스 저장 영역(141-2)에 제3 인덱스(INDEX2)로 저장되며, 제3 타겟 어드레스 신호(ADDR_T2)에 대응된다.
인덱스 검출기(143)는, 커맨드/어드레스 디코더(도 1의 110)로부터 전송되는 라이트 제어신호(WT)에 응답하여 인덱스 선택 신호(INDEX_S)를 생성하여 어드레스 저장소(141)로 전송한다. 일 예에서 인덱스 검출기(143)는 제2 카운터(CNT1)(143-1)를 포함할 수 있다. 제2 카운터(CNT1)(143-1)는, 라이트 제어신호(WT)를 입력받는다. 제2 카운터(CNT1)(143-1)는, 입력된 라이트 제어신호(WT)를 카운팅하고, 카운팅한 값을 인덱스 선택 신호(INDEX_S)로서 어드레스 저장소(141)로 전송한다.
제1 라이트 제어신호(WT0)가 입력되면, 제2 카운터(CNT2)(143-1)는 인덱스 선택 신호(INDEX_S)로서 제1 카운팅값, 예컨대 "001"을 출력시킨다. 어드레스 파이프 회로(140)는, 인덱스 선택 신호(INDEX_S)와 동일한 값을 갖는 제1 인덱스(INDEX0)가 부여된 제1 타겟 어드레스 신호(ADDR_T0)를 출력시킨다. 이어서 제2 라이트 제어신호(WT1)가 입력되면, 제2 카운터(CNT2)(143-1)는 인덱스 선택 신호(INDEX_S)로서 제2 카운팅값, 예컨대 "010"을 출력시킨다. 어드레스 파이프 회로(140)는, 인덱스 선택 신호(INDEX_S)와 동일한 값을 갖는 제2 인덱스(INDEX1)가 부여된 제2 타겟 어드레스 신호(ADDR_T1)를 출력시킨다. 이어서 제3 라이트 제어신호(WT2)가 입력되면, 제2 카운터(CNT2)(143-1)는 인덱스 선택 신호(INDEX_S)로서 제3 카운팅값, 예컨대 "011"을 출력시킨다. 어드레스 파이프 회로(140)는, 인덱스 선택 신호(INDEX_S)와 동일한 값을 갖는 제3 인덱스(INDEX2)가 부여된 제3 타겟 어드레스 신호(ADDR_T2)를 출력시킨다.
이와 같은 어드레스 파이프 회로(140) 구성에 따르면, 제1 엘리먼트-와이즈 곱셈 커맨드 전송에 의해 발생되는 제1 리드 제어신호(RD0)에 제1 어드레스 신호(ADDR_0)가 제1 인덱스(INDEX0)과 함께 어드레스 저장소(141)에 저장된다. 따라서 제1 리드 제어신호(RD0)에 따라 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 각각 제1 입력 데이터(DA1) 및 제2 입력 데이터(DA2)가 곱셈 회로(130)로 전송될 때까지만 제1 어드레스 신호(ADDR0)를 유지하고 있으면 될 뿐, 제3 메모리 뱅크(123)에 결과 데이터(DA_RST)가 저장될 때까지 제1 어드레스 신호(ADDR0)를 유지할 필요는 없다. 이는 제2 어드레스 신호(ADDR1) 및 제3 어드레스 신호(ADDR2)에 대해서도 동일하게 적용된다.
어드레스 파이프 회로(140)에 저장되어 있는 타겟 어드레스 신호(ADDR_T)의 출력은, 인덱스 선택 신호(INDEX_S)와 동일한 값의 인덱스(INDEX)가 부여된 타겟 어드레스 신호(ADDR_T)에 대해 이루어진다. 인덱스(INDEX)는 리드 제어신호(RD)를 카운팅한 값을 갖고, 인덱스 선택 신호(INDEX_S)는 라이트(WT) 제어신호(WT)를 카운팅한 값을 갖는다. 이에 따라 인덱스 선택 신호(INDEX_S)의 값과 인덱스(INDEX)의 값이 동일하다는 것은, 리드 제어신호(RD) 및 라이트 제어신호(WT)가 동일한 엘리먼트-와이즈 곱셈 커맨드에 의해 생성된 제어신호라는 것을 의미한다. 따라서 제3 메모리 뱅크(123)에 전송되는 결과 데이터(DA_RST) 및 타겟 어드레스 신호(ADDR_T)는, 각각 동일한 엘리먼트-와이즈 곱셈 동작에 의한 결과 데이터(DA_RST) 및 어드레스 신호(ADDR)에 해당된다.
도 4는 도 1의 PIM 장치(100)에서 엘리먼트-와이즈 곱셈 과정을 설명하기 위해 나타내 보인 타이밍도이다. 그리고 도 5 내지 도 13은 도 4의 타이밍도의 여러 시점에서의 엘리먼트-와이즈 곱셈 동작을 설명하기 위해 나타내 보인 도면들이다. 도 4를 참조하면, 본 예에 따른 PIM 장치(100)는, 제1 내지 제3 엘리먼트-와이즈 곱셈 커맨드(EWMUL0-EWMUL2)를 tCCD 간격으로 전송받는다. 즉 제1 시점(T1)에서 PIM 장치(100)는 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)를 전송받는다. PIM 장치(100)는, 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)에 따라 제1 엘리먼트-와이즈 곱셈 동작을 수행한다. 제1 시점(T1)으로부터 tCCD가 경과한 제2 시점(T2)에서 PIM 장치(100)는 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)를 전송받는다. PIM 장치(100)는, 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)에 따라 제2 엘리먼트-와이즈 곱셈 동작을 수행한다. 제2 시점(T2)으로부터 tCCD가 경과한 제4 시점(T4)에서 PIM 장치(100)는 제3 엘리먼트-와이즈 곱셈 커맨드(EWMUL2)를 전송받는다. PIM 장치(100)는, 제3 엘리먼트-와이즈 곱셈 커맨드(EWMUL2)에 따라 제3 엘리먼트-와이즈 곱셈 동작을 수행한다. 본 예에 따르면, 제1 내지 제3 엘리먼트-와이즈 곱셈 동작들은, 시간적으로 상호 중첩되어 수행될 수 있다.
도 5를 도 4와 함께 참조하면, 제1 시점(T1)에 PIM 장치(100)로 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)가 전송되면, PIM 장치(100)의 커맨드/어드레스 디코더(110)는, 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)를 디코딩하여, 일정 시간 경과한 제3 시점(T3)에 제1 리드 제어신호(RD0) 및 제1 어드레스 신호(ADDR0)를 출력한다. 여기서 제1 시점(T1)과 제3 시점(T3) 사이의 시간 간격은, 커맨드/어드레스 디코더(110)가 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)를 디코딩하는데 소요되는 시간 간격이다. 커맨드/어드레스 디코더(110)로부터 생성된 제1 리드 제어신호(RD0) 및 제1 어드레스 신호(ADDR0)는, 메모리 회로(120)의 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)와, 어드레스 파이프 회로(140)에 전송된다. 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에 전송된 제1 리드 제어신호(RD0)에 의해, 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제1 어드레스 신호(ADDR0)에 의해 대응하는 컬럼 라인들이 활성화된다. 어드레스 파이프 회로(140)는, 제1 타겟 어드레스 신호(ADDR_T0)로서 제1 어드레스 신호(ADDR0)를 어드레스 저장소(141) 내에 저장한다. 어드레스 파이프 회로(140)의 인덱스 발생기(142)는, 제1 리드 제어신호(RD0)를 카운팅하여 예컨대 "001"의 인덱스(INDEX)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스(INDEX) "001"을 제1 인덱스(INDEX0)로서 제1 타겟 어드레스 신호(ADDR_T0)와 연관하여 저장한다.
도 6을 도 4와 함께 참조하면, 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)가 PIM 장치(100)로 전송된 제1 시점(T1)으로부터 tCCD가 경과한 제2 시점(T2)에 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)가 PIM 장치(100)로 전송된다. 제2 시점(T2)에 PIM 장치(100)로 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)가 전송되면, PIM 장치(100)의 커맨드/어드레스 디코더(110)는, 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)를 디코딩하여, 일정 시간 경과한 제5 시점(T5)에 제2 리드 제어신호(RD1) 및 제2 어드레스 신호(ADDR1)를 출력한다. 여기서, 제5 시점(T5)은, 제1 시점(T1)으로부터 커맨드/어드레스 디코더(110)가 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)를 디코딩하고, 제1 리드 제어신호(RD0) 및 제1 어드레스 신호(ADDR0)의 전송이 완료되는데 소요되는 시간이 경과한 시점이다. 즉 커맨드/어드레스 디코더(110)는, 제1 시점(T1)부터 제3 시점(T3)까지 제1 엘리먼트-와이즈 곱셈 커맨드(EWMUL0)에 대한 디코딩 동작을 수행한다. 제3 시점(T3)에서 커맨드/어드레스 디코더(110)로부터 출력되는 제1 어드레스 신호(ADDR0)는 제5 시점(T5)까지 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로 전송된다.
제5 시점(T5)에 커맨드/어드레스 디코더(110)로부터 출력되는 제2 리드 제어신호(RD1) 및 제2 어드레스 신호(ADDR1)는, 메모리 회로(120)의 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)와, 어드레스 파이프 회로(140)에 전송된다. 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에 전송된 제2 리드 제어신호(RD1)에 의해, 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제2 어드레스 신호(ADDR1)에 의해 대응하는 컬럼 라인들이 활성화된다. 어드레스 파이프 회로(140)는, 제2 타겟 어드레스 신호(ADDR_T1)로서 제2 어드레스 신호(ADDR1)를 어드레스 저장소(141) 내에 저장한다. 어드레스 파이프 회로(140)의 인덱스 발생기(142)는, 제2 리드 제어신호(RD1)를 카운팅하여 예컨대 "010"의 인덱스(INDEX)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스(INDEX) "010"을 제2 인덱스(INDEX1)로서 제2 타겟 어드레스 신호(ADDR_T1)와 연관하여 저장한다.
도 7을 도 4와 함께 참조하면, 제1 리드 제어신호(RD0)가 생성된 후 일정 시간이 경과한 제6 시점(T6)에 커맨드/어드레스 디코더(110)는 제1 연산 제어신호(MUL0)를 생성하여 출력시킨다. 제1 연산 제어신호(MUL0)는 곱셈 회로(130)로 전송된다. 커맨드/어드레스 디코더(110)로부터 제1 연산 제어신호(MUL0)가 출력되는 제6 시점(T6)에 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 각각 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)가 곱셈 회로(130)로 전송되기 시작한다. 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로 각각 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)가 전송되는 과정은, 다음 연산 제어신호(MUL)가 발생될 때까지 유지될 수 있다. 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)는, 각각 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제1 어드레스 신호(ADDR0)에 대응하는 컬럼 라인들을 통해 곱셈 회로(130)로 전송된다. 곱셈 회로(130)는, 커맨드/어드레스 디코더(110)로부터 전송되는 제1 연산 제어신호(MUL0)에 응답하여, 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)에 대한 제1 엘리먼트-와이즈 곱셈 동작을 수행한다.
도 8을 도 4와 함께 참조하면, 위에서 설명한 바와 같이, 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)가 PIM 장치(100)로 전송된 제2 시점(T2)으로부터 tCCD가 경과한 제4 시점(T4)에 제3 엘리먼트-와이즈 곱셈 커맨드(EWMUL2)가 PIM 장치(100)로 전송된다. PIM 장치(100)의 커맨드/어드레스 디코더(110)는, 제3 엘리먼트-와이즈 곱셈 커맨드(EWMUL2)를 디코딩하여, 일정 시간 경과한 제8 시점(T8)에 제3 리드 제어신호(RD2) 및 제3 어드레스 신호(ADDR2)를 출력한다. 여기서, 제8 시점(T8)은, 제2 시점(T2)으로부터 커맨드/어드레스 디코더(110)가 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)를 디코딩하고, 제2 리드 제어신호(RD1) 및 제2 어드레스 신호(ADDR1)의 전송이 완료되는데 소요되는 시간이 경과한 시점이다. 즉 커맨드/어드레스 디코더(110)는, 제2 시점(T2)부터 제5 시점(T5)까지 제2 엘리먼트-와이즈 곱셈 커맨드(EWMUL1)에 대한 디코딩 동작을 수행한다. 제5 시점(T5)에서 커맨드/어드레스 디코더(110)로부터 출력되는 제2 어드레스 신호(ADDR1)는 제8 시점(T8)까지 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로 전송된다.
제8 시점(T8)에 커맨드/어드레스 디코더(110)로부터 출력되는 제3 리드 제어신호(RD2) 및 제3 어드레스 신호(ADDR2)는, 메모리 회로(120)의 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)와, 어드레스 파이프 회로(140)에 전송된다. 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에 전송된 제3 리드 제어신호(RD2)에 의해, 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제3 어드레스 신호(ADDR2)에 의해 대응하는 컬럼 라인들이 활성화된다. 어드레스 파이프 회로(140)는, 제3 타겟 어드레스 신호(ADDR_T2)로서 제3 어드레스 신호(ADDR2)를 어드레스 저장소(141) 내에 저장한다. 어드레스 파이프 회로(140)의 인덱스 발생기(142)는, 제3 리드 제어신호(RD2)를 카운팅하여 예컨대 "011"의 인덱스(INDEX)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스(INDEX) "011"을 제3 인덱스(INDEX2)로서 제3 타겟 어드레스 신호(ADDR_T2)와 연관하여 저장한다.
도 9를 도 4와 함께 참조하면, 제2 리드 제어신호(RD1)가 생성된 제5 시점(T5) 후 일정 시간이 경과한 제9 시점(T9)에 커맨드/어드레스 디코더(110)는 제2 연산 제어신호(MUL1)를 생성하여 출력시킨다. 제2 연산 제어신호(MUL1)는 곱셈 회로(130)로 전송된다. 커맨드/어드레스 디코더(110)로부터 제2 연산 제어신호(MUL1)가 출력되는 제9 시점(T9)에 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 각각 제1 입력데이터(DA1_1) 및 제2 입력데이터(DA2_1)가 곱셈 회로(130)로 전송되기 시작한다. 제1 입력데이터(DA1_1) 및 제2 입력데이터(DA2_1)는, 각각 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제2 어드레스 신호(ADDR1)에 대응하는 컬럼 라인들을 통해 곱셈 회로(130)로 전송된다. 곱셈 회로(130)는, 커맨드/어드레스 디코더(110)로부터 전송되는 제2 연산 제어신호(MUL1)에 응답하여, 제1 입력데이터(DA1_1) 및 제2 입력데이터(DA2_1)에 대한 제2 엘리먼트-와이즈 곱셈 동작을 수행한다.
도 10을 도 4와 함께 참조하면, 제1 연산 제어신호(MUL0)가 발생된 제6 시점(T6)으로부터 일정 시간 경과한 제10 시점(T10)에, 커맨드/어드레스 디코더(110)는 제1 라이트 제어신호(WT0)를 생성하여 출력시킨다. 제1 라이트 제어신호(WT0)는 제3 메모리 뱅크(123) 및 어드레스 파이프 회로(140)에 전송된다. 곱셈 회로(130) 또한 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)에 대한 엘리먼트-와이즈 곱셈 결과인 제1 결과데이터(DA_RST0)를 제3 메모리 뱅크(123)로 전송한다. 어드레스 파이프 회로(140)의 인덱스 검출기(143)는, 제1 라이트 제어신호(WT0)를 카운팅하여 예컨대 "001"의 인덱스 선택신호(INDEX_S)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스 선택신호(INDEX_S)와 동일한 값을 갖는 제1 인덱스(INDEX0) "001"에 연관된 제1 타겟 어드레스 신호(ADDR_T0), 즉 제1 어드레스 신호(ADDR0)를 제3 메모리 뱅크(123)로 전송한다. 제3 메모리 뱅크(123)는, 곱셈 회로(130)로부터 전송되는 제1 출력데이터(DA_RST0)를 어드레스 파이프 회로(140)로부터 전송되는 제1 어드레스 신호(ADDR0)에 대응하는 위치에 저장한다.
도 11을 도 4와 함께 참조하면, 제3 리드 제어신호(RD2)가 생성된 제8 시점(T8) 후 일정 시간이 경과한 제11 시점(T1)에 커맨드/어드레스 디코더(110)는 제3 연산 제어신호(MUL1)를 생성하여 출력시킨다. 제3 연산 제어신호(MUL2)는 곱셈 회로(130)로 전송된다. 커맨드/어드레스 디코더(110)로부터 제3 연산 제어신호(MUL2)가 출력되는 제11 시점(T11)에 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 각각 제1 입력데이터(DA1_2) 및 제2 입력데이터(DA2_2)가 곱셈 회로(130)로 전송되기 시작한다. 제1 입력데이터(DA1_2) 및 제2 입력데이터(DA2_2)는, 각각 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)에서 제3 어드레스 신호(ADDR2)에 대응하는 위치에 저장되어 있는 데이터이다. 곱셈 회로(130)는, 커맨드/어드레스 디코더(110)로부터 전송되는 제3 연산 제어신호(MUL2)에 응답하여, 제1 입력데이터(DA1_2) 및 제2 입력데이터(DA2_2)에 대한 제3 엘리먼트-와이즈 곱셈 동작을 수행한다.
도 12를 도 4와 함께 참조하면, 제2 연산 제어신호(MUL1)가 발생된 제9 시점(T9)으로부터 일정 시간 경과한 제12 시점(T12)에, 커맨드/어드레스 디코더(110)는 제2 라이트 제어신호(WT1)를 생성하여 출력시킨다. 제2 라이트 제어신호(WT1)는 제3 메모리 뱅크(123) 및 어드레스 파이프 회로(140)에 전송된다. 곱셈 회로(130) 또한 제1 입력데이터(DA1_1) 및 제2 입력데이터(DA2_1)에 대한 제2 엘리먼트-와이즈 곱셈 결과인 제2 결과데이터(DA_RST1)를 제3 메모리 뱅크(123)로 전송한다. 어드레스 파이프 회로(140)의 인덱스 검출기(143)는, 제2 라이트 제어신호(WT1)를 카운팅하여 예컨대 "010"의 인덱스 선택신호(INDEX_S)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스 선택신호(INDEX_S)와 동일한 값을 갖는 제2 인덱스(INDEX1) "010"에 연관된 제2 타겟 어드레스 신호(ADDR_T1), 즉 제2 어드레스 신호(ADDR1)를 제3 메모리 뱅크(123)로 전송한다. 제3 메모리 뱅크(123)는, 곱셈 회로(130)로부터 전송되는 제2 출력데이터(DA_RST1)를 어드레스 파이프 회로(140)로부터 전송되는 제2 어드레스 신호(ADDR1)에 대응하는 위치에 저장한다.
도 13을 도 4와 함께 참조하면, 제3 연산 제어신호(MUL2)가 발생된 제11 시점(T11)으로부터 일정 시간 경과한 제13 시점(T13)에, 커맨드/어드레스 디코더(110)는 제3 라이트 제어신호(WT2)를 생성하여 출력시킨다. 제3 라이트 제어신호(WT2)는 제3 메모리 뱅크(123) 및 어드레스 파이프 회로(140)에 전송된다. 곱셈 회로(130) 또한 제1 입력데이터(DA1_2) 및 제2 입력데이터(DA2_2)에 대한 제3 엘리먼트-와이즈 곱셈 결과인 제3 결과데이터(DA_RST2)를 제3 메모리 뱅크(123)로 전송한다. 어드레스 파이프 회로(140)의 인덱스 검출기(143)는, 제3 라이트 제어신호(WT2)를 카운팅하여 예컨대 "011"의 인덱스 선택신호(INDEX_S)를 어드레스 저장소(141)로 전송한다. 어드레스 저장소(141)는, 전송되는 인덱스 선택신호(INDEX_S)와 동일한 값을 갖는 제3 인덱스(INDEX2) "011"에 연관된 제3 타겟 어드레스 신호(ADDR_T2), 즉 제3 어드레스 신호(ADDR2)를 제3 메모리 뱅크(123)로 전송한다. 제3 메모리 뱅크(123)는, 곱셈 회로(130)로부터 전송되는 제3 출력데이터(DA_RST2)를 어드레스 파이프 회로(140)로부터 전송되는 제3 어드레스 신호(ADDR2)에 대응하는 위치에 저장한다.
도 14는 본 개시의 다른 예에 따른 PIM 장치(200)를 나타내 보인 블록도이다. 그리고 도 15는 도 14의 PIM 장치(200)의 MAC 회로(230)를 나타내 보인 도면이다. 도 14에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타내며, 이하에서 중복된 설명은 생략하기로 한다. 도 14 및 도 15를 참조하면, 본 예에 따른 PIM 장치(200)는 MAC 회로(230)를 포함한다는 점에서 도 1을 참조하여 설명한 PIM 장치(100)와 차이가 있다.
구체적으로 도 15에 나타낸 바와 같이, MAC 회로(230)는, 곱셈 회로(310)와, 데이터출력 선택회로(320)와, 애더 트리(adder tree)(330)와, 그리고 누산 회로(accumulating circuit)(340)를 포함한다. 곱셈 회로(310)는, 복수, 예컨대 8개의 곱셈기들(MUL0-MUL7)이 상호 병렬로 배치되어 구성된다. 곱셈기들(MUL0-MUL7)들 각각은, 제1 입력데이터 및 제2 입력데이터에 대한 곱셈 연산을 수행한 후, 그 결과데이터를 출력시킨다.
데이터출력 선택회로(320)는, 곱셈 회로(310)로부터의 출력데이터를 제1 출력경로 및 제2 출력경로 중 선택된 하나의 출력경로를 통해 출력시킨다. 일 예에서 데이터출력 선택회로(320)는, 복수의 1X2 디멀티플렉서들(DEMUX0-DEMUX7)이 상호 병렬로 배치되어 구성될 수 있다. 데이터출력 선택회로(320)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7)의 개수는 곱셈기들(MUL0-MUL7)의 개수와 동일하다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각은 하나의 입력단자와 두 개의 출력단자들을 갖는다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각의 입력단자는, 곱셈기들(MUL0-MUL7) 각각의 출력단자에 결합된다. 예컨대 제1 디멀티플렉서(DEMUX0)의 입력단자는 제1 곱셈기(MUL0)의 출력단자에 결합된다. 제2 디멀티플렉서(DEMUX1)의 입력단자는 제2 곱셈기(MUL1)의 출력단자에 결합된다. 이와 같은 방식으로 제8 디멀티플렉서(DEMUX7)의 입력단자는 제8 곱셈기(MUL7)의 출력단자에 결합된다. 디멀티플렉서들(DEMUX0-DEMUX7) 각각은, 제1 출력라인 및 제2 출력라인 중 데이터출력 선택회로(320)로 전송되는 선택 제어신호(CS)에 의해 선택되는 출력라인으로 입력데이터를 출력시킨다. 예컨대 로직로우의 선택 제어신호(CS)가 전송되면, 디멀티플렉서들(DEMUX0-DEMUX7) 각각은 제1 출력라인으로 입력데이터를 출력시킨다. 로직하이의 선택 제어신호(CS)가 전송되면, 디멀티플렉서들(DEMUX0-DEMUX7) 각각은 제2 출력라인으로 입력데이터를 출력시킨다.
애더 트리(330)는, 복수의 가산기들(ADDERs)이 트리(tree) 구조로 배열되어 구성된다. 본 예에서 애더 트리(330)를 구성하는 복수의 가산기들(ADDERs)은 반가산기(half-adder)로 구성된다. 그러나 이는 단지 하나의 예로서, 복수의 가산기들(ADDERs)은 전가산기(full-adder)로 구성될 수도 있다. 애더 트리(330)의 최상위 스테이지, 즉 제1 스테이지(ST1)에는 4개 가산기들(ADDERs)이 상호 병렬로 배치된다. 애더 트리(330)에서 제1 스테이지(ST1) 하위에 배치되는 제2 스테이지(ST2)에는 2개의 가산기들(ADDERs)이 상호 병렬로 배치된다. 최하위 스테이지, 즉 애더 트리(330)에서 제2 스테이지(ST2) 하위에 배치되는 제3 스테이지(ST3)에는 한개의 가산기(ADDER)가 배치된다.
제1 스테이지(ST1)의 가산기들(ADDERs) 각각은, 데이터출력 선택회로(320)를 통해 전송되는 2개의 곱셈기들의 출력데이터들에 대한 가산연산을 수행하고, 그 결과데이터를 출력시킨다. 제2 스테이지(ST2)의 가산기들(ADDERs) 각각은, 제1 스테이지(ST1)의 2개의 가산기들(ADDERs)의 출력데이터에 대한 가산연산을 수행하고, 그 결과데이터를 출력시킨다. 제3 스테이지(ST3)의 가산기(ADDER)는, 제2 스테이지(ST2)의 2개의 가산기들(ADDERs)의 출력데이터에 대한 가산연산을 수행하고, 그 결과데이터를 출력시킨다.
누산 회로(340)는, 가산기(341) 및 래치 회로(342)를 포함한다. 가산기(341)는, 애더 트리(330)로부터 전송되는 출력데이터와 래치 회로(342)로부터 전송되는 피드백데이터에 대한 가산 동작을 수행한다. 가산기(341)는 반가산기(half-adder)로 구성될 수 있다. 래치 회로(342)는, 가산기(341)로부터의 출력데이터를 래치하여 가산기(340)로 피드백데이터로 전송하거나, 또는 MAC 회로(230) 외부로 출력시킨다. 일 예에서 래치 회로(342)는 플립플랍을 포함할 수 있다.
본 예에 따른 PIM 장치(200)에서 MAC 회로(230)는, MAC(Multiplying and Accumulation) 연산 동작을 수행하거나, 또는 엘리먼트-와이즈 곱셈 동작을 수행할 수 있다. MAC 회로(230)가 MAC 연산 동작을 수행하는 경우, 데이터출력 선택회로(320)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 데이터는 애더 트리(330)의 제1 스테이지(ST1)를 구성하는 가산기들(ADDERs) 각각으로 입력된다. 애더 트리(330)의 제3 스테이지(ST3)를 구성하는 가산기(ADDR)로부터 출력되는 데이터는, 누산 회로(340)의 래치 회로(342)에 래치되어 있는 이전 데이터와 누산된다.
MAC 회로(230)가 엘리먼트-와이즈 곱셈 동작을 수행하는 경우, 데이터출력 선택회로(320)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7) 각각으로부터 출력되는 데이터는 애더 트리(330)로 전송되지 않고 MAC 회로(230) 외부로 출력된다. MAC 회로(230)가 엘리먼트-와이즈 곱셈 동작을 수행하기 위해, 제1 입력데이터들(DA1_0-DA1_7) 각각과, 제2 입력데이터들(DA2_0-DA2_7) 각각은, 곱셈기들(MUL0-MUL7) 각각의 제1 입력단자 및 제2 입력단자로 입력된다. 도 1을 참조하여 설명한 바와 같이, 제1 입력데이터들(DA1_0-DA1_7) 및 제2 입력데이터들(DA2_0-DA2_7)은, 각각 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 전송될 수 있다. 엘리먼트-와이즈 곱셈이 제1 행렬 및 제2 행렬에 대해 수행되는 경우, 제1 입력데이터들(DA1_0-DA1_7)은 제1 행렬의 엘리먼트들이며, 제2 입력데이터들(DA2_0-DA2_7)은 제2 행렬의 엘리먼트들일 수 있다.
곱셈 회로(310)를 구성하는 곱셈기들(MUL0-MUL7) 각각으로 입력되는 제1 입력데이터 및 제2 입력데이터는, 각각 제1 행렬 및 제2 행렬에서 동일한 행 및 동일한 열에 위치한 엘리먼트이다. 예컨대 제1 곱셈기(MUL0)에 입력되는 제1 입력데이터(DA1_0) 및 제2 입력데이터(DA2_0)는, 각각 제1 행렬 및 제2 행렬의 제1행 및 제1열의 엘리먼트일 수 있다. 유사하게 제2 곱셈기(MUL1)에 입력되는 제1 입력데이터(DA1_1) 및 제2 입력데이터(DA2_1)는, 각각 제1 행렬 및 제2 행렬의 제1행 및 제2열의 엘리먼트일 수 있다. 곱셈기들(MUL0-MUL7)은, 제1 입력데이터 및 제2 입력데이터에 대한 곱셈 연산을 수행하고, 그 결과데이터(DM_0-DM_7)를 데이터출력 선택회로(320)로 출력시킨다. 데이터출력 선택회로(320)를 구성하는 디멀티플렉서들(DEMUX0-DEMUX7)은, 선택 제어신호(CS)를 입력받고, 곱셈기들(MUL0-MUL7)로부터 출력되는 결과데이터(DM_0-DM_7)를 제1 출력단자를 통해 출력시킨다.
본 예에 따른 PIM 장치(200)에서 MAC 회로(230) 내의 동작을 제외한 나머지 동작은 도 1 내지 도 13을 참조하여 설명한 PIM 장치(100)와 동일하다. 구체적으로 엘리먼트-와이즈 곱셈 커맨드(EWMUL)가 전송되면, 리드 제어신호(RD) 및 제1 어드레스 신호(ADDR0)에 의해 제1 메모리 뱅크(121) 및 제2 메모리 뱅크(122)로부터 각각 제1 입력데이터들(DA1_0-DA1_7) 및 제2 입력데이터들(DA2_0-DA2_7)이 MAC 회로(230)로 전송된다. 이 과정에서 제1 어드레스 신호(ADDR0)는, 어드레스 파이프 회로(140) 내에 타겟 어드레스(ADDR_T)로서 인덱스(INDEX)에 연관된 상태로 저장된다. MAC 회로(230)는, 연산 제어신호(MUL)에 응답하여 제1 입력데이터들(DA1_0-DA1_7) 및 제2 입력데이터들(DA2_0-DA2_7)에 대한 엘리먼트-와이즈 곱셈을 수행하고, 그 결과데이터들(DA_RST0-DA_RST7)을 출력시킨다. MAC 회로(230)로부터 출력되는 결과데이터들(DA_RST0-DA_RST7)은 제3 메모리 뱅크(123)로 전송된다. 제3 메모리 뱅크(123)는, 라이트 제어신호와, 어드레스 파이프 회로(140)로부터의 타겟 어드레스(ADDR_T)에 따라 결과데이터들(DA_RST0-DA_RST7)을 저장한다.
이제까지 본 출원 기술에 대하여 실시예들을 중심으로 살펴보았다. 본 출원 기술이 속하는 기술분야에서 통상의 지식을 가진 자는 본 출원 기술이 본 출원 기술의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 출원 기술의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 출원 기술에 포함된 것으로 해석되어야 할 것이다.
100...PIM 장치 110...커맨드/어드레스 디코더
111...MRS 120...메모리 장치
121...제1 메모리 뱅크 122...제2 메모리 뱅크
123...제3 메모리 뱅크 130...곱셈 회로
140...어드레스 파이프 회로

Claims (31)

  1. 제1 입력데이터 및 제2 입력데이터에 대해 엘리먼트-와이즈 곱셈을 수행하여 출력데이터를 발생시키는 곱셈 회로;
    리드 제어신호에 응답하여 상기 제1 입력데이터 및 제2 입력데이터를 상기 곱셈 회로로 전송하고, 라이트 제어신호에 응답하여 상기 출력데이터를 저장하는 메모리 회로; 및
    상기 리드 제어신호에 응답하여 상기 출력데이터가 저장될 상기 메모리 회로의 어드레스 신호를 타겟 어드레스 신호로 저장하고, 상기 라이트 제어신호에 응답하여 상기 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 어드레스 파이프 회로를 포함하는 PIM 장치.
  2. 제1항에 있어서,
    엘리먼트-와이즈 곱셈 커맨드에 대응하는 제어신호들 및 어드레스 신호를 발생시키는 커맨드/어드레스 디코더를 더 포함하는 PIM 장치.
  3. 제2항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 제어신호들로서 상기 리드 제어신호, 연산 제어신호, 및 상기 라이트 제어신호를 순차적으로 출력하도록 구성되는 PIM 장치.
  4. 제3항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 리드 제어신호 및 상기 라이트 제어신호는 상기 메모리 회로 및 상기 어드레스 파이프 회로로 전송하고, 상기 연산 제어신호는 상기 곱셈 회로로 전송하는 PIM 장치.
  5. 제4항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 리드 제어신호 및 상기 라이트 제어신호와 함께 상기 어드레스 신호를 메모리 회로 및 상기 어드레스 파이프 회로로 전송하는 PIM 장치.
  6. 제2항에 있어서,
    상기 커맨드/어드레스 디코더는, 메모리 액세스 동작 수행에 적용되는 제1 설정값 및 엘리먼트-와이즈 곱셈 동작 수행에 적용되는 제2 설정값을 갖는 모드 레지스터 셋을 포함하고,
    상기 엘리먼트-와이즈 곱셈이 요청되면, 상기 모드 레지스터 셋의 상기 제2 설정값을 활성화시키는 PIM 장치.
  7. 제1항에 있어서,
    상기 곱셈 회로는, 연산 제어신호에 응답하여 상기 엘리먼트-와이즈 곱셈을 수행하는 PIM 장치.
  8. 제7항에 있어서,
    상기 연산 제어신호는, 상기 리드 제어신호가 발생된 시점으로부터 상기 메모리 회로로부터 상기 제1 입력데이터 및 제2 입력데이터가 출력될 때까지의 시간이 경과한 후에 발생되는 PIM 장치.
  9. 제1항에 있어서, 상기 메모리 회로는,
    상기 제1 입력데이터를 저장하는 제1 메모리 뱅크;
    상기 제2 입력데이터를 저장하는 제2 메모리 뱅크; 및
    상기 출력데이터가 저장되는 제3 메모리 뱅크를 포함하는 PIM 장치.
  10. 제9항에 있어서,
    상기 제1 입력데이터가 저장되는 상기 제1 메모리 뱅크의 로우와, 상기 제2 입력데이터가 저장되는 상기 제2 메모리 뱅크의 로우와, 그리고 상기 출력데이터가 저장되는 상기 제3 메모리 뱅크의 로우는 동일한 로우 어드레스를 갖는 PIM 장치.
  11. 제10항에 있어서,
    상기 제1 입력데이터가 저장되는 상기 제1 메모리 뱅크의 컬럼과, 상기 제2 입력데이터가 저장되는 상기 제2 메모리 뱅크의 컬럼과, 그리고 상기 출력데이터가 저장되는 상기 제3 메모리 뱅크의 컬럼은 동일한 컬럼 어드레스를 갖는 PIM 장치.
  12. 제9항에 있어서,
    엘리먼트-와이즈 곱셈 커맨드에 대응하여, 상기 리드 제어신호 및 어드레스 신호와, 연산 제어신호와, 그리고 상기 라이트 제어신호를 순차적으로 발생시키는 커맨드/어드레스 디코더를 더 포함하고,
    상기 제1 메모리 뱅크 및 제2 메모리 뱅크는, 각각 상기 리드 제어신호에 응답하여 상기 어드레스 신호에 대응하는 영역에 저장된 상기 제1 입력데이터 및 제2 입력데이터를 상기 곱셈회로로 전송하며, 그리고
    상기 제3 메모리 뱅크는, 상기 라이트 제어신호에 응답하여 상기 어드레스 파이프 회로로부터 전송되는 상기 타겟 어드레스 신호에 대응하는 영역에 상기 출력데이터를 저장하는 PIM 장치.
  13. 제1항에 있어서, 상기 어드레스 파이프 회로는,
    각각이 상기 타겟 어드레스 신호를 저장하는 복수의 어드레스 저장영역들;
    각각이 상기 타겟 어드레스 신호에 연관되는 인덱스를 저장하는 복수의 인덱스 저장영역들;
    상기 리드 제어신호에 응답하여 상기 인덱스를 생성하는 인덱스 발생기; 및
    상기 라이트 제어신호에 응답하여 인덱스 선택신호를 생성하는 인덱스 검출기를 포함하는 PIM 장치.
  14. 제13항에 있어서,
    상기 인덱스 발생기는, 상기 리드 제어신호를 카운팅한 카운팅 값으로 상기 인덱스를 생성하고,
    상기 인덱스 검출기는, 상기 라이트 제어신호를 카운팅한 카운팅 값으로 상기 인덱스 선택신호를 생성하는 PIM 장치.
  15. 제14항에 있어서,
    상기 어드레스 파이프 회로는, 상기 복수의 어드레스 저장소들에 저장되어 있는 타겟 어드레스 신호들 중 상기 인덱스 선택신호와 동일한 값의 인덱스에 연관된 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 PIM 장치.
  16. 제1 입력데이터 및 제2 입력데이터에 대해 곱셈-누산(MAC) 또는 엘리먼트-와이즈 곱셈을 수행하여 출력데이터를 발생시키는 MAC 회로;
    리드 제어신호에 응답하여 상기 제1 입력데이터 및 제2 입력데이터를 상기 MAC 회로로 전송하고, 라이트 제어신호에 응답하여 상기 출력데이터를 저장하는 메모리 회로; 및
    상기 리드 제어신호에 응답하여 상기 출력데이터가 저장될 상기 메모리 회로의 어드레스 신호를 타겟 어드레스 신호로 저장하고, 상기 라이트 제어신호에 응답하여 상기 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 어드레스 파이프 회로를 포함하는 PIM 장치.
  17. 제16항에 있어서, 상기 MAC 회로는,
    복수의 곱셈기들이 상호 병렬로 배치되는 곱셈 회로;
    상기 곱셈 회로로부터의 출력데이터를 제1 출력경로 및 제2 출력경로 중에서 선택된 하나의 출력경로를 통해 출력시키는 데이터출력 선택회로;
    복수의 가산기들이 트리 구조로 배열되어 구성되는 애더 트리; 및
    상기 애더 트리로부터 출력되는 데이터에 대한 누산 연산을 수행하는 누산 회로를 포함하는 PIM 장치.
  18. 제17항에 있어서,
    상기 데이터출력 선택회로는, 각각이 상기 복수의 곱셈기들 각각으로부터 출력되는 데이터를 입력받고 제1 출력단자 또는 제2 출력단자로 출력시키는 복수의 디멀티플렉서들을 포함하는 PIM 장치.
  19. 제18항에 있어서,
    상기 복수의 디멀티플렉서들 각각의 상기 제1 출력단자는 상기 MAC 회로 외부로 연장되고, 상기 제2 출력단자는 상기 애더 트리에 결합되는 PIM 장치.
  20. 제19항에 있어서,
    상기 복수의 디멀티플렉서들 각각은,
    상기 MAC 연산의 경우 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제2 출력단자로 출력시키고,
    상기 엘리먼트-와이즈 곱셈의 경우 상기 복수의 곱셈기들 각각으로부터 전송되는 데이터를 상기 제1 출력단자로 출력시키는 PIM 장치.
  21. 제16항에 있어서,
    엘리먼트-와이즈 곱셈 커맨드에 대응하는 제어신호들 및 어드레스 신호를 발생시키는 커맨드/어드레스 디코더를 더 포함하는 PIM 장치.
  22. 제21항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 제어신호들로서 상기 리드 제어신호, 연산 제어신호, 및 상기 라이트 제어신호를 순차적으로 출력하도록 구성되는 PIM 장치.
  23. 제22항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 리드 제어신호 및 상기 라이트 제어신호는 상기 메모리 회로 및 상기 어드레스 파이프 회로로 전송하고, 상기 연산 제어신호는 상기 곱셈 회로로 전송하는 PIM 장치.
  24. 제23항에 있어서,
    상기 커맨드/어드레스 디코더는, 상기 리드 제어신호 및 상기 라이트 제어신호와 함께 상기 어드레스 신호를 메모리 회로 및 상기 어드레스 파이프 회로로 전송하는 PIM 장치.
  25. 제16항에 있어서, 상기 메모리 회로는,
    상기 제1 입력데이터를 저장하는 제1 메모리 뱅크;
    상기 제2 입력데이터를 저장하는 제2 메모리 뱅크; 및
    상기 출력데이터가 저장되는 제3 메모리 뱅크를 포함하는 PIM 장치.
  26. 제25항에 있어서,
    상기 제1 입력데이터가 저장되는 상기 제1 메모리 뱅크의 로우와, 상기 제2 입력데이터가 저장되는 상기 제2 메모리 뱅크의 로우와, 그리고 상기 출력데이터가 저장되는 상기 제3 메모리 뱅크의 로우는 동일한 로우 어드레스를 갖는 PIM 장치.
  27. 제26항에 있어서,
    상기 제1 입력데이터가 저장되는 상기 제1 메모리 뱅크의 컬럼과, 상기 제2 입력데이터가 저장되는 상기 제2 메모리 뱅크의 컬럼과, 그리고 상기 출력데이터가 저장되는 상기 제3 메모리 뱅크의 컬럼은 동일한 컬럼 어드레스를 갖는 PIM 장치.
  28. 제25항에 있어서,
    엘리먼트-와이즈 곱셈 커맨드에 대응하여, 상기 리드 제어신호 및 어드레스 신호와, 연산 제어신호와, 그리고 상기 라이트 제어신호를 순차적으로 발생시키는 커맨드/어드레스 디코더를 더 포함하고,
    상기 제1 메모리 뱅크 및 제2 메모리 뱅크는, 각각 상기 리드 제어신호에 응답하여 상기 어드레스 신호에 대응하는 영역에 저장된 상기 제1 입력데이터 및 제2 입력데이터를 상기 곱셈회로로 전송하며, 그리고
    상기 제3 메모리 뱅크는, 상기 라이트 제어신호에 응답하여 상기 어드레스 파이프 회로로부터 전송되는 상기 타겟 어드레스 신호에 대응하는 영역에 상기 출력데이터를 저장하는 PIM 장치.
  29. 제16항에 있어서, 상기 어드레스 파이프 회로는,
    각각이 상기 타겟 어드레스 신호를 저장하는 복수의 어드레스 저장영역들;
    각각이 상기 타겟 어드레스 신호에 연관되는 인덱스를 저장하는 복수의 인덱스 저장영역들;
    상기 리드 제어신호에 응답하여 상기 인덱스를 생성하는 인덱스 발생기; 및
    상기 라이트 제어신호에 응답하여 인덱스 선택신호를 생성하는 인덱스 검출기를 포함하는 PIM 장치.
  30. 제29항에 있어서,
    상기 인덱스 발생기는, 상기 리드 제어신호를 카운팅한 카운팅 값으로 상기 인덱스를 생성하고,
    상기 인덱스 검출기는, 상기 라이트 제어신호를 카운팅한 카운팅 값으로 상기 인덱스 선택신호를 생성하는 PIM 장치.
  31. 제30항에 있어서,
    상기 어드레스 파이프 회로는, 상기 복수의 어드레스 저장소들에 저장되어 있는 타겟 어드레스 신호들 중 상기 인덱스 선택신호와 동일한 값의 인덱스에 연관된 타겟 어드레스 신호를 상기 메모리 회로로 전송하는 PIM 장치.
KR1020210003633A 2021-01-11 2021-01-11 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치 KR20220101519A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210003633A KR20220101519A (ko) 2021-01-11 2021-01-11 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치
US17/319,660 US11423959B2 (en) 2021-01-11 2021-05-13 Processing-in-memory devices for element-wise multiplication
CN202110631272.1A CN114756486A (zh) 2021-01-11 2021-06-07 用于逐元素乘法的存储器内处理器件
US17/864,871 US11823764B2 (en) 2021-01-11 2022-07-14 Processing-in-memory devices for element-wise multiplication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210003633A KR20220101519A (ko) 2021-01-11 2021-01-11 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치

Publications (1)

Publication Number Publication Date
KR20220101519A true KR20220101519A (ko) 2022-07-19

Family

ID=82322001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210003633A KR20220101519A (ko) 2021-01-11 2021-01-11 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치

Country Status (3)

Country Link
US (2) US11423959B2 (ko)
KR (1) KR20220101519A (ko)
CN (1) CN114756486A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213962B (zh) 2017-07-07 2020-10-09 华为技术有限公司 运算加速器
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements

Also Published As

Publication number Publication date
US11823764B2 (en) 2023-11-21
CN114756486A (zh) 2022-07-15
US20220223185A1 (en) 2022-07-14
US11423959B2 (en) 2022-08-23
US20220358975A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
US11720441B2 (en) Processing-in-memory (PIM) devices
US11513733B2 (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
US11847451B2 (en) Processing-in-memory (PIM) device for implementing a quantization scheme
US20210210125A1 (en) Processing-in-memory (pim) system and operating methods of the pim system
KR20220101519A (ko) 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치
US20220351765A1 (en) Processing-in-memory (pim) device for performing a burst multiplication and accumulation (mac) operation
JP6332756B2 (ja) データ処理方法、装置、およびシステム
KR101861647B1 (ko) 메모리 시스템 및 그 리프레시 제어 방법
US10437692B2 (en) Memory module, memory system including the same and operation method thereof
US20220405019A1 (en) Processing-in-memory (pim) system and operating methods of the pim system
US11500629B2 (en) Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit
US20230251792A1 (en) Memory Device Based Accelerated Deep-Learning System
EP4213150A1 (en) Memory and data migration method
US11948658B2 (en) Accumulator, operational logic circuit including accumulator, and processing-in-memory device including accumulator
US11704052B2 (en) Processing-in-memory (PIM) systems
US20220244958A1 (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
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
US20210373852A1 (en) Processing-in-memory (pim) devices
US11983508B2 (en) Processing-in-memory (PIM) system and operating methods of the PIM system
KR20210093126A (ko) 프로세싱-인-메모리 시스템 및 그 동작 방법