KR102342994B1 - 산술 연산을 지원하는 인메모리 컴퓨팅 - Google Patents
산술 연산을 지원하는 인메모리 컴퓨팅 Download PDFInfo
- Publication number
- KR102342994B1 KR102342994B1 KR1020200137802A KR20200137802A KR102342994B1 KR 102342994 B1 KR102342994 B1 KR 102342994B1 KR 1020200137802 A KR1020200137802 A KR 1020200137802A KR 20200137802 A KR20200137802 A KR 20200137802A KR 102342994 B1 KR102342994 B1 KR 102342994B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- column peripheral
- sum value
- memory
- cell array
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4091—Sense or sense/refresh amplifiers, or associated sense circuitry, e.g. for coupled bit-line precharging, equalising or isolating
-
- 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/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4094—Bit-line management or control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/419—Read-write [R-W] circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
- H03K19/21—EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
- H03K19/215—EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical using field-effect transistors
Abstract
본 출원의 일 실시예에 따른 인메모리 컴퓨팅은 메모리 셀 어레이 및 상기 메모리 셀 어레이에 연결된 복수의 비트라인쌍들에 연결되는 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로를 포함하고, 상기 컬럼 주변 유닛들 각각은 상기 복수의 비트라인쌍들 중 하나의 비트라인 쌍을 통해 비트와이즈 데이터를 감지 증폭하는 감지증폭 및 라이트부 및 상기 비트와이즈 데이터에 기초하여, 전가산기 불 함수 기반의 산술 연산을 수행하고, 상기 산술 연산에 따라 획득되는 연산 데이터에 대해 상기 감지증폭 및 라이트부를 통해 라이트 백 동작을 수행시키는 연산 로직부를 포함한다.
Description
본 출원은 산술 연산을 지원하는 인메모리 컴퓨팅에 관한 것으로, 특히, 캐리 전달이 필요한 정수 연산을 고속으로 지원하는 인메모리 컴퓨팅에 관한 것이다.
기존의 캐시 메모리는 연산 동작에 비해 상대적으로 느린 읽기/쓰기 동작만으로 제한되어있다. 그러나, 최근 CPU에서 요구하는 데이터가 늘어날수록 메모리 접근이 늘어나며, 그로 인해 메모리의 부담이 커지고 있다. 이때 메모리에서 발생하는 선천적인 문제인 메모리 병목 현상을 줄이기 위해, 읽기/쓰기 이외에 추가적으로 메모리 내부에서 산술 연산을 수행하는 컴퓨팅 인 메모리 구조가 많이 제시되고 있다.
본 출원의 목적은 캐리 전달이 필요한 정수 연산을 고속으로 지원하는 인메모리 컴퓨팅 구조를 제공하기 위한 것이다.
본 출원의 일 실시예에 따른 인메모리 컴퓨팅은 메모리 셀 어레이 및 상기 메모리 셀 어레이에 연결된 복수의 비트라인쌍들에 연결되는 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로를 포함하고, 상기 컬럼 주변 유닛들 각각은 상기 복수의 비트라인쌍들 중 하나의 비트라인 쌍을 통해 비트와이즈 데이터를 감지 증폭하는 감지증폭 및 라이트부 및 상기 비트와이즈 데이터에 기초하여, 전가산기 불 함수 기반의 산술 연산을 수행하고, 상기 산술 연산에 따라 획득되는 연산 데이터에 대해 상기 감지증폭 및 라이트부를 통해 라이트 백 동작을 수행시키는 연산 로직부를 포함한다.
본 출원의 다른 실시예에 따른 인메모리 컴퓨팅은 메모리 셀 어레이, 상기 메모리 셀 어레이에 연결된 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로부, 상기 메모리 셀 어레이에 저장된 피승수 데이터를 저장하는 더미셀 어레이부, 상기 더미셀 어레이와 상기 메모리 셀 어레이를 분리시키는 BL 세퍼레이터부 및 상기 메모리 셀 어레이로부터 로드되는 승수 데이터에 기초하여, 상기 복수의 컬럼 주변 유닛들의 곱셈 연산 동작을 제어하는 시프트 레지스터 회로를 포함한다.
본 출원의 실시예에 따른 인메모리 컴퓨팅은 메모리 내부에서 고속의 산술 연산을 가능하게 할 수 있는 효과가 있다.
또한, 정수 연산을 수행할 때, 캐리 전달 지연을 줄이고, 곱셈의 레이턴시를 감소시켜 연산 에너지 효율을 개선시킬 수 있는 효과가 있다.
또한, 메모리 내부의 커패시턴스를 줄여 연산 속도를 증가시키고 에너지 소모를 감소시킬 수 있는 효과가 있다.
도 1은 본 출원의 실시예에 따른 메모리인 컴퓨팅에 대한 블록도이다.
도 2는 도 1의 컬럼 주변 유닛에 대한 블록도이다.
도 3은 도 2의 연산 로직부를 구체적으로 보여주는 회로도이다.
도 4는 도 3의 전가산기 로직에 대한 실시 예이다.
도 5는 도 1의 컬럼 주변 회로의 Shift 연산 동작을 설명하기 위한 예시 도이다.
도 6a와 도 6b는 도 1의 컬럼 주변 회로의 ADD 연산 동작을 설명하기 위한 예시 도이다.
도 7a와 도 7b는 도 1의 컬럼 주변 회로의 ADD-Shift 연산 동작을 설명하기 위한 예시 도이다.
도 8은 본 출원의 다른 실시예에 따른 메모리인 컴퓨팅에 대한 개념도이다.
도 9는 도 8의 메모리인 컴퓨팅에 대한 실시 예이다.
도 10은 레프트-쉬프트 곱셈연산 동작을 설명하기 위한 실시 예이다.
도 11과 도 12는 도 10의 제1 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 13과 도 14는 도 10의 제2 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 15와 도 16은 도 10의 제3 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 17은 도 10의 곱셈 데이터(MUL_D)를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 2는 도 1의 컬럼 주변 유닛에 대한 블록도이다.
도 3은 도 2의 연산 로직부를 구체적으로 보여주는 회로도이다.
도 4는 도 3의 전가산기 로직에 대한 실시 예이다.
도 5는 도 1의 컬럼 주변 회로의 Shift 연산 동작을 설명하기 위한 예시 도이다.
도 6a와 도 6b는 도 1의 컬럼 주변 회로의 ADD 연산 동작을 설명하기 위한 예시 도이다.
도 7a와 도 7b는 도 1의 컬럼 주변 회로의 ADD-Shift 연산 동작을 설명하기 위한 예시 도이다.
도 8은 본 출원의 다른 실시예에 따른 메모리인 컴퓨팅에 대한 개념도이다.
도 9는 도 8의 메모리인 컴퓨팅에 대한 실시 예이다.
도 10은 레프트-쉬프트 곱셈연산 동작을 설명하기 위한 실시 예이다.
도 11과 도 12는 도 10의 제1 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 13과 도 14는 도 10의 제2 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 15와 도 16은 도 10의 제3 임시 데이터를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
도 17은 도 10의 곱셈 데이터(MUL_D)를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
이하, 구체적인 실시형태 및 첨부된 도면을 참조하여 본 출원의 실시형태를 설명한다. 그러나, 본 출원의 실시 형태는 여러 가지 다른 형태로 변형될 수 있으며, 본 출원의 범위가 이하 설명하는 실시형태로 한정되는 것은 아니다. 또한, 본 출원의 실시형태는 통상의 기술자에게 본 발명을 더욱 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있으며, 도면상의 동일한 부호로 표시되는 요소는 동일한 요소이다.
그리고 도면에서 본 출원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하고, 여러 층 및 영역을 명확하게 표현하기 위하여 두께를 확대하여 나타내었으며, 동일한 사상의 범위 내의 기능이 동일한 구성요소는 동일한 참조부호를 사용하여 설명한다. 나아가, 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 출원의 실시예에 따른 메모리인 컴퓨팅(10)에 대한 블록도이고, 도 2는 도 1의 컬럼 주변 유닛(예컨대, 200_2)에 대한 블록도이다.
도 1과 도 2를 참조하면, 메모리인 컴퓨팅(10)은 메모리 셀 어레이(100)와 컬럼 주변 회로(200)를 포함할 수 있다.
먼저, 메모리 셀 어레이(100)는 복수의 워드라인들(WL_1~WL_N)과 복수의 비트라인쌍(BLB_1~BLB_M, BL_1~BL_M)에 연결된 복수의 메모리 셀들(101_1M~101_NM)을 포함할 수 있다.
다음으로, 컬럼 주변 회로(200)는 각 비트라인쌍(예컨대, BLB, BL)을 통해 메모리 셀 어레이(100)에 연결되는 복수의 컬럼 주변 유닛들(201_1~201_N)을 포함할 수 있다.
여기서, 복수의 컬럼 주변 유닛들(201_1~201_N) 각각은 감지증폭 및 라이트부(예컨대, 210_2) 및 연산 로직부(예컨대, 220_2)를 포함할 수 있다.
구체적으로, 감지증폭 및 라이트부(예컨대, 210_2)는 메모리 셀 어레이(100)에 연결된 비트라인쌍(예컨대, BLB, BL)을 통해 비트와이즈 데이터를 감지 증폭할 수 있다. 여기서, 비트와이즈 데이터는 하나 또는 복수의 워드라인 신호가 활성화됨에 따라 메모리 셀 어레이(100)로부터 비트라인쌍(예컨대, BLB, BL)을 통해 출력되는 데이터일 수 있다. 예를 들면, 비트와이즈 데이터는 AND 연산 값과 NOR 연산 값을 포함할 수 있다.
다음으로, 연산 로직부(예컨대, 220_2)는 비트와이즈 데이터에 기초하여, 전가산기 불 함수(Full-Adder Boolean Equation) 기반의 산술 연산을 수행할 수 있다. 여기서, 전가산기 불 함수는 캐리 값과 합산 값을 산술 연산하기 위한 방정식일 수 있다.
이때, 연산 로직부(예컨대, 220_2)는 산술 연산에 따라 획득되는 연산 데이터에 대해 감지증폭 및 라이트부(예컨대, 210_2)를 통해 라이트 백 동작을 수행시킬 수 있다. 여기서, 연산 데이터는 NAND, AND, NOR, OR, XNOR, XOR, NOT, Shift 연산 값을 포함하는 로직 데이터와 ADD, ADD-Shift, SUB, MULT 연산 값을 포함하는 정수 데이터 중 어느 하나일 수 있다.
본 출원의 실시 예에 따른 메모리인 컴퓨팅(10)은 연산 로직부(예컨대, 220_2)를 통해 전가산기 불 함수 기반의 산술 연산을 수행하고, 산술 연산에 따라 획득되는 연산 데이터에 대해 감지증폭 및 라이트부(예컨대, 210_2)를 통해 라이트 백 동작을 수행시킴으로써, 메모리 내부에서 고속 산술 연산을 가능하게 할 수 있는 효과가 있다.
이하, 도 3과 도 4를 참조하여, 연산 로직부(예컨대, 220_2)에 대해 보다 구체적으로 설명될 것이다.
도 3은 도 2의 연산 로직부(예컨대, 220_2)를 구체적으로 보여주는 회로도이고, 도 4는 도 3의 전가산기 로직(223)에 대한 실시 예이다.
도 3을 참조하면, 연산 로직부(예컨대, 220_2)는 제1 멀티플렉서(221), 시프트 플립플롭(222), 전가산기 로직(223) 제2 멀티플렉서(224) 및 제3 멀티플렉서(225)를 포함할 수 있다.
먼저, 제1 멀티플렉서(221)는 하위 비트 측으로부터 제1 캐리값(CN-1)을 출력받을 수 있다. 구체적으로, 제1 멀티플렉서(221)는 하위 비트라인 쌍에 연결된 컬럼 주변 유닛(예컨대, 201_1)의 연산 로직부(예컨대, 220_1)로부터 제1 캐리값(CN-1)을 출력받을 수 있다.
또한, 제1 멀티플렉서(221)는 선택 제어 신호(Logic SEL)에 응답하여, 전가산기 로직(223)에 선택 신호(LSEL)를 전송함으로써, 전가산기 로직(223)을 제어할 수 있다.
다음으로, 시프트 플립플롭(222)은 하위 비트 측으로부터 제1 합산값(SN-1)을 출력받을 수 있다. 구체적으로, 시프트 플립플롭(222)은 하위 비트라인 쌍에 연결된 컬럼 주변 유닛(예컨대, 201_1)의 연산 로직부(예컨대, 220_1)로부터 제1 합산값(SN-1)을 출력받아 저장할 수 있다.
다음으로, 전가산기 로직(223)은 감지증폭 및 라이트부(예컨대, 210_2)를 통해 감지된 비트와이즈 데이터, 제1 캐리값(CN-1), 제1 합산값(SN-1)에 기초하여, 전가산기 불 함수를 통해 제2 캐리값(CN)과 제2 합산값(SN)을 연산할 수 있다.
실시예에 따른 전가산기 로직(223)은 도 4에 도시된 바와 같이, 제1 멀티플렉서(221)로부터 전송받는 선택 신호(LSEL)에 따라 스위칭되는 전송 게이트 기반의 회로로 구현됨으로써, 로직 게이트 기반의 전가산기보다 캐리 전달 지연을 감소시킬 수 있다.
이때, 전가산기 로직(223)은 제2 합산값(SN)을 제2 멀티플렉서(224)에 출력하고, 제2 캐리값(CN)을 상위 비트라인쌍에 연결된 컬럼 주변 유닛(예컨대, 201_3)의 연산 로직부(예컨대, 220_3)로 출력할 수 있다.
다음으로, 제2 멀티플렉서(224)는 전가산기 로직(223)을 통해 연산된 제2 합산값(SN)을 출력받아, 상위 비트 측으로 전달할 수 있다.
구체적으로, 제2 멀티플렉서(224)는 전가산기 로직(223)을 통해 연산된 제2 합산값(SN)을 상위 비트라인쌍에 연결된 컬럼 주변 유닛(200_3)의 연산 로직부(예컨대, 220_3)에 전달할 수 있다.
또한, 제2 멀티플렉서(224)는 전가산기 로직(223)을 통해 연산된 제2 합산값(SN)을 제3 멀티플렉서(225)에 출력할 수 있다.
다음으로, 제3 멀티플렉서(225)는 제1 캐리값(CN-1), 제1 합산값(SN-1), 제2 합산값(SN) 및 로직 데이터(Logics) 중 적어도 하나를 출력받을 수 있다. 이때, 제3 멀티플렉서(225)는 제1 캐리값(CN-1), 제1 합산값(SN-1), 제2 합산값(SN) 및 로직 데이터(Logics) 중 적어도 하나를 감지증폭 및 라이트부(210)를 통해 메모리 셀 어레이(100)로 라이트 백 시킬 수 있다.
이하, 도 5를 참조하여, 컬럼 주변 회로(200)의 Shift 연산 동작에 대해 구체적으로 설명될 것이다.
도 5는 도 1의 컬럼 주변 회로(200)의 Shift 연산 동작을 설명하기 위한 예시 도이다.
도 5를 참조하면, 컬럼 주변 회로(200)는 비트와이즈 데이터(예컨대, A0)를 상위 비트 측 방향으로 전달하는 Shift 연산 동작을 수행할 수 있다.
구체적으로, 컬럼 주변 회로(200)는 제1 연산 로직부(예컨대, 220_1)를 통해 출력되는 비트와이즈 데이터(예컨대, A0)를 상위 비트 측 방향에 위치한 제2 연산 로직부(예컨대, 220_2)에 전달할 수 있다.
이때, 제1 연산 로직부(예컨대, 220_1)는 제2 연산 로직부(예컨대, 220_2)의 하위 비트 측에 위치하고, 제2 연산 로직부(예컨대, 220_2)는 제1 연산 로직부(예컨대, 220_1)의 상위 비트 측에 위치하며, 제1 및 제2 연산 로직부(예컨대, 220_1과 220_2)는 서로 전기적으로 연결될 수 있다.
즉, 컬럼 주변 회로(200)는 제1 연산 로직부(220_1)의 전가산기 로직(223_1)를 통해 출력되는 비트와이즈 데이터(예컨대, A0)를 제2 연산 로직부(220_2)의 제3 멀티플렉서(225_2)에 전달할 수 있다. 이때, 멀티플렉서(225_2)는 비트와이즈 데이터(예컨대, A0)를 감지증폭 및 라이트부(210_2)를 통해 라이트 백 시킬 수 있다.
또한, 컬럼 주변 회로(200)는 Shift 연산이 수행되는 단일 주기에서 복수의 연산 로직부들(220_1~220_N)을 통해 수행되는 모든 Shift 연산 동작을 한번에 수행할 수 있다.
이하, 도 6a와 도 6b를 참조하여, 컬럼 주변 회로(200)의 ADD 연산 동작에 대해 구체적으로 설명될 것이다.
도 6a와 도 6b는 도 1의 컬럼 주변 회로(200)의 ADD 연산 동작을 설명하기 위한 예시 도이다.
도 6a과 도 6b를 참조하면, 컬럼 주변 회로(200)는 전가산기 불 함수를 통해 연산되는 제2 캐리값(CN)을 상위 비트 측 방향으로 전달시키고, 전가산기 불 함수를 통해 연산되는 제2 합산값(SN)을 라이트 백 하는 ADD 연산을 수행할 수 있다.
예를 들면, 도 6a에 도시된 바와 같이, 컬럼 주변 회로(200)는 제1 연산 로직부(예컨대, 220_1)를 통해 연산되는 캐리값(예컨대, C0)을 제2 연산 로직부(예컨대, 220_2)로 전달할 수 있다. 이때, 컬럼 주변 회로(200)는 제1 연산 로직부(예컨대, 220_1)를 통해 연산되는 제2 합산값(예컨대, S0)을 제3 멀티플렉서(예컨대, 225_1)를 통해 라이트 백 시킬 수 있다.
또한, 도 6b에 도시된 바와 같이, 컬럼 주변 회로(200)는 제2 연산 로직부(예컨대, 220_2)를 통해 연산되는 캐리값(예컨대, C1)을 제3 연산 로직부(예컨대, 220_3)로 전달할 수 있다. 이때, 컬럼 주변 회로(200)는 제2 연산 로직부(예컨대, 220_2)를 통해 연산되는 제2 합산값(예컨대, S1)을 제3 멀티플렉서(예컨대, 225_2)를 통해 라이트 백 시킬 수 있다.
즉, 각 연산 로직부(220_1~220_4)를 통해 출력되는 각 캐리값(예컨대, C0)을 상위 비트라인 방향으로 전달시키고, 컬럼 주변 회로(200)는 각 연산 로직부(220_1~220_4)를 통해 출력되는 각 합산값(예컨대, S0~S3)을 라이트 백 할 수 있다.
또한, 컬럼 주변 회로(200)는 ADD 연산이 수행되는 단일 주기에서 복수의 연산 로직부들(220_1~220_N)을 통해 수행되는 모든 ADD 연산 동작을 한번에 수행할 수 있다.
구체적으로, 컬럼 주변 회로(200)는 ADD 연산이 수행되는 단일 주기에서, 전가산기 풀 함수 기반의 각 캐리값(예컨대, C0~C3)을 상위 비트 측으로 전달시키고, 전가산기 풀 함수 기반의 각 합산값(예컨대, S0~S3)을 라이트 백 하는 ADD 연산 동작을 한번에 수행할 수 있다.
이하, 도 7a와 도 7b를 참조하여, 컬럼 주변 회로(200)의 ADD-Shift 연산 동작에 대해 구체적으로 설명될 것이다.
도 7a와 도 7b는 도 1의 컬럼 주변 회로(200)의 ADD-Shift 연산 동작을 설명하기 위한 예시 도이다.
도 7a와 도 7b를 참조하면, 컬럼 주변 회로(200)는 전가산기 불 함수를 통해 연산되는 제2 합산값(SN)을 상위 비트 측으로 전달함에 따라, 하위 비트 측으로부터 전달받는 제1 합산값(SN-1)을 라이트 백 시키는 ADD-Shift 연산 동작을 수행할 수 있다.
예를 들면, 제1 내지 제4 연산 로직부(예컨대, 220_1~220_4)는 도 7a에 도시된 바와 같이, 각 제2 합산값(예컨대, S0~S3)을 상위 비트 측 방향으로 전달할 수 있다.
그런 다음, 도 7b에 도시된 바와 같이, 제1 내지 제5 연산 로직부(예컨대, 220_1~220_5)는 각 시프트 플립플롭(예컨대, 222_1~222_5)으로부터 각 제3 멀티플렉서(예컨대, 225_1~225_5)를 통해 각 제1 합산값(예컨대, 0~S3)을 라이트 백 시킬 수 있다.
즉, 컬럼 주변 회로(200)는 제1 내지 제4 연산 로직부(예컨대, 220_1~220_4)로부터 상위 비트 측으로 전달된 각 제2 합산값(예컨대, 0~S3)에 기초하여, 하위 비트 측으로부터 제1 내지 제5 연산 로직부(예컨대, 220_1~220_5)를 통해 전달받는 각 제1 합산값(예컨대, 0~S3)을 라이트 백 시킴으로써, ADD-Shift 연산 동작을 수행할 수 있다.
실시예에 따라, 컬럼 주변 회로(200)는 ADD-Shift 연산이 수행되는 단일 주기에서 복수의 연산 로직부들(220_1~220_N)을 통해 수행되는 모든 ADD-Shift 연산 동작을 한번에 수행할 수 있다.
구체적으로, 컬럼 주변 회로(200)는 ADD-Shift 연산이 수행되는 단일 주기에서, 제2 합산값을 상위 비트 측 방향으로 전달함에 따라 하위 비트 측 방향으로부터 전달받는 제1 합산값을 라이트 백 시키는 ADD-Shift 연산 동작을 한번에 수행할 수 있다.
도 8은 본 출원의 다른 실시예에 따른 메모리인 컴퓨팅(11)에 대한 개념도이고, 도 9는 도 8의 메모리인 컴퓨팅(11)에 대한 실시 예이며, 도 10은 레프트-쉬프트 곱셈연산 동작을 설명하기 위한 실시 예이다.
도 8과 도 9를 참조하면, 메모리인 컴퓨팅(10)은 메모리 셀 어레이(100), 컬럼 주변 회로(200), 더미셀 어레이(300), BL 세퍼레이터(400) 및 시프트 레지스터 회로(500)를 포함할 수 있다. 이하, 도 1 내지 도 7에서 설명된 동일한 부재번호의 메모리 셀 어레이(100)와 컬럼 주변 회로(200)에 대한 중복된 설명을 생략될 것이다.
먼저, 메모리 셀 어레이(100)는 적어도 둘의 워드라인 신호에 따라 활성화되는 승수 데이터와 피승수 데이터(A3, A2, A1, A0)를 사전에 저장할 수 있다. 여기서, 승수 데이터와 피승수 데이터는 곱셈 연산에 사용되는 데이터일 수 있다.
다음으로, 컬럼 주변 회로(200)는 복수의 비트라인들을 통해 메모리 셀 어레이(100)에 연결되는 복수의 컬럼 주변 유닛들(201_1~201_8)을 포함할 수 있다.
도 3에 도시된 바와 같이, 복수의 컬럼 주변 유닛들(201_1~201_8) 각각은 감지증폭 및 라이트부(210)와 연산 로직부(220)를 포함하고, 이때, 연산 로직부(220)는 제1 멀티플렉서(221), 시프트 플립플롭(222), 전가산기 로직(223) 제2 멀티플렉서(224) 및 제3 멀티플렉서(225)를 포함할 수 있다
다음으로, 더미셀 어레이(300)는 메모리 셀 어레이(100)와 컬럼 주변 회로(200) 사이에 위치하여, 메모리 셀 어레이(100)에 저장된 피승수 데이터(A3, A2, A1, A0)를 저장할 수 있다.
이러한 더미셀 어레이(300)는 컬럼 방향으로 서로 이격 배치된 제1 내지 제3 서브 어레이(310~330)를 포함할 수 있다.
구체적으로, 제1 서브 어레이(310)는 로우 방향으로 배치되고, 0의 데이터를 저장하기 위한 복수의 더미 셀들을 포함할 수 있다. 또한, 제2 서브 어레이(320)는 로우 방향으로 배치되고, 메모리 셀 어레이(100)에 저장된 피승수 데이터(A3, A2, A1, A0)를 최하위 비트에서 최상위 비트 순서로 저장하기 위한 복수의 더미 셀들을 포함할 수 있다. 또한, 제3 서브 어레이(330)는 로우 방향으로 배치되고, 컬럼 주변 회로(200)를 통해 라이트 백 되는 임시 데이터를 저장하기 위한 복수의 더미 셀들을 포함할 수 있다.
다음으로, BL 세퍼레이터(400)는 메모리 셀 어레이(100)와 더미셀 어레이(300) 사이에 위치하여, 메모리 셀 어레이(100)와 더미셀 어레이(300)를 분리시킬 수 있다.
구체적으로, BL 세퍼레이터(400)는 컬럼 주변 회로(200)의 곱셈 동작 여부에 기초하여, 더미셀 어레이(300)와 메모리 셀 어레이(100) 사이를 전기적으로 차단시킬 수 있다. 예를 들면, BL 세퍼레이터(400)는 메모리 셀 어레이(100)와 더미셀 어레이(300)를 연결하는 스위치들을 스위칭 오프시킴으로써, 메모리인 컴퓨팅(11)의 커패시턴스를 줄여 연산 속도를 빠르게 증가시키고 에너지 소모를 감소시킬 수 있다.
다음으로, 시프트 레지스터 회로(500)는 메모리 셀 어레이(100)로부터 임의의 비트라인을 통해 로드되는 승수 데이터(B3, B2, B1, B0)에 기초하여, 복수의 컬럼 주변 유닛들의 곱셈 연산 동작을 제어할 수 있다.
이러한 시프트 레지스터 회로(500)는 복수의 승수 플립플롭들(510_1~510_N)과 복수의 제어 멀티플렉서들(520_1~520_N)을 포함할 수 있다.
구체적으로, 복수의 승수 플립플롭들(510_1~510_N)은 승수 데이터(B3, B2, B1, B0)에 기초하여, 승수 데이터(B3, B2, B1, B0)가 최상위 비트에서 최하위 비트 순서로 출력되기 위한 로드 데이터(B0, B1, B2, B3)를 비트 별로 저장할 수 있다.
여기서, 로드 데이터는 승수 데이터(B3, B2, B1, B0)가 최상위 비트에서 최하위 비트 순서로 시프트 레지스터 회로(500)에 로드된 데이터일 수 있다. 예를 들면, 승수 데이터(B3, B2, B1, B0)가 '1011'인 경우, 로드 데이터(B0, B1, B2, B3)는 '1101'일 수 있다.
이때, 복수의 제어 멀티플렉서들(520_1~520_N)은 로드 데이터(B0, B1, B2, B3)에 기초하여, 복수의 컬럼 주변 유닛들(201_1~201_8)을 제어하기 위한 제어 신호를 전송할 수 있다.
예를 들면, 도 9에 도시된 바와 같이, 피승수 데이터(A3, A2, A1, A0)가 '1010'이고, 승수 데이터(B3, B2, B1, B0)가 '1011'인 경우, 복수의 승수 플립플롭들(510_1~510_N)은 로드 데이터(B0, B1, B2, B3)인 '1101'를 저장할 수 있다.
그런 다음, 복수의 승수 플립플롭들(510_1~510_N)은 로드 데이터(B0, B1, B2, B3)를 최하위 비트에서 최상위 비트 순서로 복수의 제어 멀티플렉서들(520_1~520_N)에 전송할 수 있다.
이때, 복수의 제어 멀티플렉서들(520_1~520_N)은 로드 데이터(B0, B1, B2, B3)에 기초하여, 컬럼 주변 회로(200)를 제어하기 위한 제어 신호를 각 제2 멀티플렉서(예컨대, 224_1~224_8)에 전송할 수 있다.
즉, 시프트 레지스터 회로(500)는 최상위 비트에서 최하위 비트 순서로 출력되기 위한 로드 데이터(B0, B1, B2, B3)에 대응되는 제어 신호를 컬럼 주변 회로(200)에 전송함으로써, 컬럼 주변 회로(200)의 곱셈 연산 동작을 제어할 수 있다.
실시예에 따른 컬럼 주변 회로(200)는 피승수 데이터(A3, A2, A1, A0)와 로드 데이터(B0, B1, B2, B3)에 대해 곱셈 연산 동작을 수행할 수 있다.
구체적으로, 컬럼 주변 회로(200)는 더미 어레이(300)에 저장된 피승수 데이터(A3, A2, A1, A0)와 시프트 레지스터 회로(500)를 통해 순차적으로 로드된 로드 데이터(B0, B1, B2, B3)에 대하여, 레프트-쉬프트 곱셈연산(Left-shift Multiplication) 동작을 반복적으로 수행할 수 있다.
예를 들면, 도 10에 도시된 바와 같이, 컬럼 주변 회로(200)는 피승수 데이터(A3, A2, A1, A0)와 B3 간의 곱인 '1010'과 0의 데이터 '0000'을 더하고, 이를 Left 방향으로 시프트시켜, 제1 임시 데이터(pMult0)인 '10100'를 획득할 수 있다. 그런 다음, 컬럼 주변 회로(200)는 피승수 데이터(A3, A2, A1, A0)와 B2 의 곱인 '0000'와 제1 임시 데이터를 더하고, 이를 Left 방향으로 시프트시켜, 제2 임시 데이터인 '010100'를 획득할 수 있다. 그런 다음, 컬럼 주변 회로(200)는 피승수 데이터(A3, A2, A1, A0)와 B1 의 곱인 '1010'와 제2 임시 데이터를 더하고, 이를 Left 방향으로 시프트시켜, 제3 임시 데이터인 '0110010'를 획득할 수 있다. 이후, 컬럼 주변 회로(200)는 피승수 데이터(A3, A2, A1, A0)와 B0 의 곱인 '1010'와 제3 임시 데이터를 더하여, 피승수 데이터(A3, A2, A1, A0)와 승수 데이터(B3, B2, B1, B0) 간의 곱셈 데이터(MUL_D)인 '01101110'를 획득할 수 있다.
이하, 도 11 내지 도 18을 참조하여, 컬럼 주변 회로(200)의 레프트-쉬프트 곱셈연산(Left-shift Multiplication) 동작에 대해 보다 구체적으로 설명될 것이다.
도 11과 도 12는 도 10의 제1 임시 데이터(pMult1)를 획득하기 위한 메모리인 컴퓨팅(11)의 동작 예시도이다.
도 11과 도 12를 참조하면, 컬럼 주변 회로(200)는 승수 데이터(B3, B2, B1, B0)의 최상위 비트(MSB)에 대응되는 제어 신호에 기초하여, 제1 및 제2 서브 어레이(310, 320)에 대한 컬럼별 ADD-Shift 동작을 수행할 수 있다. 이러한 컬럼별 ADD-Shift 동작은 시프트 후 덧셈 알고리즘을 이용하는 종래의 곱셈 연산 동작에 따라 발생하는 레이턴시를 개선시킬 수 있다.
예를 들면, 도 11에 도시된 바와 같이, 컬럼 주변 회로(200)는 시프트 레지스터 회로(500)를 통해 전송받는 승수 데이터(B3, B2, B1, B0)의 최상위 비트(B3)에 대응되는 제어 신호에 기초하여, 각 전가산기 로직(예컨대, 223_1~223_8)을 통해 제1 및 제2 서브 어레이(310, 320)에 대한 컬럼별 ADD 연산 값인 '1010'을 출력할 수 있다.
이때, 컬럼 주변 회로(200)는 각 제2 멀티플렉서(224_1~224_8)를 이용하여, 컬럼별 ADD 연산 값을 상위 비트 측으로 시프트하는 Left-shift 연산 동작을 수행할 수 있다.
그런 다음, 컬럼 주변 회로(200)는 도 12에 도시된 바와 같이, 각 시프트 플립플롭(222_1~2228)으로부터 각 제3 멀티플렉서(225_1~225_8)를 통해 라이트 백 되는 제1 임시 데이터(pMult1)를 제3 서브 어레이(330)에 저장할 수 있다. 여기서, 제1 임시 데이터(pMult1)는 '10100'일 수 있다.
도 13과 도 14는 도 10의 제2 임시 데이터(pMult2)를 획득하기 위한 메모리인 컴퓨팅(11)의 동작 예시도이다.
도 13과 도 14를 참조하면, 컬럼 주변 회로(200)는 승수 데이터(B3, B2, B1, B0)의 중간 비트(B2 또는 B1)가 0에 대응되는 제어 신호에 기초하여, 제3 서브 어레이(330)에 대한 Shift 연산 동작을 수행할 수 있다.
예를 들면, 도 13에 도시된 바와 같이, 컬럼 주변 회로(200)는 시프트 레지스터 회로(500)를 통해 전송받는 중간 비트(B2)가 0에 대응되는 제어 신호에 기초하여, 시프트 플립플롭에 저장된 제1 임시 데이터(pMult1)를 각 제2 멀티플렉서(224_1~224_8)를 통해 상위 비트 측으로 시프트하는 Left-shift 연산 동작을 수행할 수 있다.
그런 다음, 도 14에 도시된 바와 같이, 컬럼 주변 회로(200)는 각 시프트 플립플롭(222_1~222_8)으로부터 각 제3 멀티플렉서(225_1~225_8)를 통해 라이트 백되는 제2 임시 데이터(pMult2)를 제3 서브 어레이(330)에 저장할 수 있다. 여기서, 제2 임시 데이터(pMult2)는 '101000'일 수 있다.
도 15와 도 16은 도 10의 제3 임시 데이터(tMult)를 획득하기 위한 메모리인 컴퓨팅(11)의 동작 예시도이다.
도 15와 도 16을 참조하면, 컬럼 주변 회로(200)는 승수 데이터(B3, B2, B1, B0)의 중간 비트(B2 또는 B1)가 1에 대응되는 제어 신호에 기초하여, 제2 및 제3 서브 어레이(320, 330)에 대해 저장된 컬럼별 ADD-Shift 연산 동작을 수행할 수 있다.
예를 들면, 도 15에 도시된 바와 같이, 컬럼 주변 회로(200)는 시프트 레지스터 회로(500)를 통해 전송받는 중간 비트(B1) 1에 대응되는 제어 신호에 기초하여, 각 전가산기 로직(223_1~223_8)을 통해 제2 및 제3 서브 어레이(320, 330)에 대한 컬럼별 ADD 연산 값인 '110010'을 출력할 수 있다.
이때, 컬럼 주변 회로(200)는 각 제2 멀티플렉서(224_1~224_8)를 통해 컬럼별 ADD 연산 값에 대해 상위 비트 측으로 Left-Shift 동작을 수행할 수 있다.
그런 다음, 컬럼 주변 회로(200)는 도 16에 도시된 바와 같이, 각 시프트 플립플롭(222_1~2228)으로부터 각 제3 멀티플렉서(225_1~225_8)를 통해 라이트 백 되는 제3 임시 데이터(tMult)를 제3 서브 어레이(330)에 저장할 수 있다. 여기서, 제3 임시 데이터는 '1100100'일 수 있다.
도 17은 도 10의 곱셈 데이터(MUL_D)를 획득하기 위한 메모리인 컴퓨팅(11)의 동작 예시도이다.
도 17을 참조하면, 컬럼 주변 회로(200)는 승수 데이터의 최하위 비트(B0)에 대응되는 제어 신호에 기초하여, 제2 및 제3 서브 어레이(320, 330)에 대한 컬럼별 ADD 연산 동작을 수행할 수 있다.
구체적으로, 컬럼 주변 회로(200)는 제2 서브 어레이(320)에 저장된 피승수 데이터(A3, A2, A1, A0)와 제3 서브 어레이(330)에 저장된 제3 임시 데이터(tMult)에 대해 컬럼별 ADD 연산 동작을 수행할 수 있다.
예를 들면, 도 17에 도시된 바와 같이, 컬럼 주변 회로(200)는 시프트 레지스터 회로(500)를 통해 전송받는 최하위 비트에 대응되는 제어 신호에 기초하여, 각 전가산기 로직(223_1~223_8)을 통해 제2 및 제3 서브 어레이(320, 330)에 대한 컬럼별 ADD 연산 값인 '01101110'을 출력할 수 있다.
그런 다음, 컬럼 주변 회로(200)는 각 제2 멀티플렉서(224_1~224_8)로부터 각 제3 멀티플렉서(225_1~225_8)를 통해 라이트 백 되는 곱셈 데이터를 제3 서브 어레이(330)에 저장할 수 있다. 여기서, 곱셈 데이터(MUL_D)는 '01101110'일 수 있다.
본 출원은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 출원의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 11: 인메모리 컴퓨팅
100: 메모리 어레이
200: 컬럼 주변 회로
210: 감지증폭 및 라이트부
220: 연산 로직부
100: 메모리 어레이
200: 컬럼 주변 회로
210: 감지증폭 및 라이트부
220: 연산 로직부
Claims (20)
- 메모리 셀 어레이; 및
상기 메모리 셀 어레이에 연결된 복수의 비트라인쌍들에 연결되는 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로를 포함하고,
상기 컬럼 주변 유닛들 각각은
상기 복수의 비트라인쌍들 중 하나의 비트라인 쌍을 통해 비트와이즈 데이터를 감지 증폭하는 감지증폭 및 라이트부; 및
상기 비트와이즈 데이터에 기초하여, 전가산기 불 함수 기반의 산술 연산을 수행하고, 상기 산술 연산에 따라 획득되는 연산 데이터에 대해 상기 감지증폭 및 라이트부를 통해 라이트 백 동작을 수행시키는 연산 로직부를 포함하는, 인메모리 컴퓨팅. - 제1항에 있어서,
상기 연산 데이터는 NAND, AND, NOR, OR, XNOR, XOR, NOT, Shift 연산 값을 포함하는 로직 데이터와 ADD, ADD-Shift, SUB, MULT 연산 값을 정수 데이터 중 어느 하나를 포함하는, 인메모리 컴퓨팅. - 제2항에 있어서,
상기 연산 로직부는 하위 비트 측으로부터 제1 캐리값을 출력받는 제1 멀티플렉서;
상기 하위 비트 측으로부터 제1 합산값을 출력받는 시프트 플립플롭;
상기 제1 캐리값, 상기 제1 합산값 및 상기 감지증폭 및 라이트부를 감지된 비트와이즈 데이터에 기초하여, 제2 캐리값과 제2 합산값을 연산하는 전가산기 로직;
상기 제2 합산값을 출력받아 상위 비트측으로 전달하는 제2 멀티플렉서; 및
상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 출력받는 제3 멀티플렉서를 포함하는, 인메모리 컴퓨팅. - 제3항에 있어서,
상기 제3 멀티플렉서는 상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 상기 감지증폭 및 라이트부를 통해 라이트 백 시키는, 인메모리 컴퓨팅. - 제3항에 있어서,
상기 전가산기 로직은 상기 제1 멀티플렉서로부터 전송받는 선택 신호에 따라 스위칭되는 전송 게이트 기반의 회로로 구현된, 인메모리 컴퓨팅. - 제3항에 있어서,
상기 컬럼 주변 회로는 상기 비트와이즈 데이터를 상위 비트 측 방향으로 전달하는 Shift 연산을 수행하는, 인메모리 컴퓨팅. - 제6항에 있어서,
상기 컬럼 주변 회로는 상기 Shift 연산이 수행되는 단일 주기에서, 상기 복수의 연산 로직부들을 통해 수행되는 모든 Shift 연산 동작을 한번에 수행하는, 인메모리 컴퓨팅. - 제3항에 있어서,
상기 컬럼 주변 회로는 상기 제2 캐리값을 상위 비트 측 방향으로 전달하고, 상기 제2 합산값을 라이트 백 시키는 ADD 연산을 수행하는, 인메모리 컴퓨팅. - 제8항에 있어서,
상기 컬럼 주변 회로는 상기 ADD 연산이 수행되는 단일 주기에서, 상기 복수의 연산 로직부들을 통해 수행되는 모든 ADD 연산 동작을 한번에 수행하는, 인메모리 컴퓨팅. - 제3항에 있어서,
상기 컬럼 주변 회로는 상기 제2 합산값을 상위 비트 측 방향으로 전달함에 따라, 하위 비트 측으로부터 전달받는 상기 제1 합산값을 라이트 백 시키는 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅. - 제10항에 있어서,
상기 ADD-Shift 연산이 수행되는 주기는 상기 제2 합산값을 상위 비트 측 방향으로 전달하는 제1 주기와 상기 제1 합산값을 라이트 백 시키는 제2 주기를 포함하는, 인메모리 컴퓨팅. - 메모리 셀 어레이;
상기 메모리 셀 어레이에 연결된 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로부;
상기 메모리 셀 어레이에 저장된 피승수 데이터를 저장하는 더미셀 어레이부;
상기 더미셀 어레이와 상기 메모리 셀 어레이를 분리시키는 BL 세퍼레이터부; 및
상기 메모리 셀 어레이로부터 로드되는 승수 데이터에 기초하여, 상기 복수의 컬럼 주변 유닛들의 곱셈 연산 동작을 제어하는 시프트 레지스터 회로를 포함하는, 인메모리 컴퓨팅. - 제12항에 있어서,
상기 더미셀 어레이부는 0의 데이터를 저장하는 제1 서브 어레이;
상기 피승수 데이터를 최하위 비트에서 최상위 비트 순서로 저장하는 제2 서브 어레이; 및
상기 복수의 컬럼 주변 유닛들을 통해 라이트 백 되는 임시 데이터를 저장하는 제3 서브 어레이를 포함하는, 인메모리 컴퓨팅. - 제12항에 있어서,
상기 시프트 레지스터 회로는 상기 승수 데이터가 최상위 비트에서 최하위 비트 순서로 출력되는 로드 데이터를 저장하는 복수의 승수 플립플롭들; 및
상기 로드 데이터에 기초하여, 상기 복수의 컬럼 주변 유닛들을 제어하기 위한 제어 신호를 전송하는 복수의 제어 멀티플렉서들을 포함하는, 인메모리 컴퓨팅. - 제13항에 있어서,
상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 최상위 비트에 대응되는 제어 신호에 기초하여, 상기 제1 및 제2 서브 어레이 대한 컬럼별 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅. - 제13항에 있어서,
상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 중간 비트가 0에 대응되는 제어 신호에 기초하여, 상기 제3 서브 어레이에 대한 Shift 연산 동작을 수행하는, 인메모리 컴퓨팅. - 제13항에 있어서,
상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 중간 비트가 1에 대응되는 제어 신호에 기초하여, 상기 제2 및 제3 서브 어레이에 대한 컬럼별 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅. - 제13항에 있어서,
상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 최하위 비트에 대응되는 제어 신호에 기초하여, 상기 제2 및 제3 서브 어레이에 대한 ADD 연산 동작을 수행하는, 인메모리 컴퓨팅. - 제13항에 있어서,
상기 복수의 컬럼 주변 유닛들 각각은 하위 비트 측으로부터 제1 캐리값을 출력받는 제1 멀티플렉서;
상기 하위 비트 측으로부터 제1 합산값을 출력받는 시프트 플립플롭;
상기 제1 캐리값, 상기 제1 합산값 및 감지증폭 및 라이트부를 통해 감지된 비트와이즈 데이터에 기초하여, 제2 캐리값과 제2 합산값을 연산하는 전가산기 로직;
상기 제2 합산값을 출력받아 상위 비트측으로 전달하는 제2 멀티플렉서; 및
상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 출력받는 제3 멀티플렉서를 포함하는, 인메모리 컴퓨팅. - 제19항에 있어서,
상기 전가산기 로직은 상기 제1 멀티플렉서로부터 전송받는 선택 신호에 따라 스위칭되는 전송 게이트 기반의 회로로 구현된, 인메모리 컴퓨팅.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/377,766 US11664069B2 (en) | 2020-07-21 | 2021-07-16 | In-memory computing device supporting arithmetic operations |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20200090069 | 2020-07-21 | ||
KR1020200090069 | 2020-07-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102342994B1 true KR102342994B1 (ko) | 2021-12-24 |
Family
ID=79176089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200137802A KR102342994B1 (ko) | 2020-07-21 | 2020-10-22 | 산술 연산을 지원하는 인메모리 컴퓨팅 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11664069B2 (ko) |
KR (1) | KR102342994B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022050191A (ja) * | 2020-09-17 | 2022-03-30 | キオクシア株式会社 | 半導体記憶装置及び情報処理装置 |
CN114882921B (zh) * | 2022-07-08 | 2022-10-04 | 中科南京智能技术研究院 | 一种多比特计算装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160130700A (ko) * | 2015-05-04 | 2016-11-14 | 삼성전자주식회사 | 나눗셈 연산을 수행하는 장치, 그것을 포함하는 시스템 온 칩 및 그것의 방법 |
KR20170015477A (ko) * | 2014-06-05 | 2017-02-08 | 마이크론 테크놀로지, 인크. | 메모리에서 비교 연산들 |
KR20170118051A (ko) * | 2015-02-23 | 2017-10-24 | 인텔 코포레이션 | 벡터 캐시 라인 라이트 백 프로세서, 방법, 시스템, 및 명령어 |
KR20200081623A (ko) * | 2018-12-27 | 2020-07-08 | 고려대학교 산학협력단 | 비지도 학습 기능을 지원하는 프로세싱 인 메모리 및 그 동작 방법 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360704B2 (en) * | 2018-12-21 | 2022-06-14 | Micron Technology, Inc. | Multiplexed signal development in a memory device |
US11281429B2 (en) * | 2019-09-25 | 2022-03-22 | Purdue Research Foundation | Ternary in-memory accelerator |
US11461074B2 (en) * | 2020-07-10 | 2022-10-04 | Flashsilicon Incorporation | Multiple-digit binary in-memory multiplier devices |
US20220108203A1 (en) * | 2020-10-01 | 2022-04-07 | Texas Instruments Incorporated | Machine learning hardware accelerator |
-
2020
- 2020-10-22 KR KR1020200137802A patent/KR102342994B1/ko active IP Right Grant
-
2021
- 2021-07-16 US US17/377,766 patent/US11664069B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170015477A (ko) * | 2014-06-05 | 2017-02-08 | 마이크론 테크놀로지, 인크. | 메모리에서 비교 연산들 |
KR20170118051A (ko) * | 2015-02-23 | 2017-10-24 | 인텔 코포레이션 | 벡터 캐시 라인 라이트 백 프로세서, 방법, 시스템, 및 명령어 |
KR20160130700A (ko) * | 2015-05-04 | 2016-11-14 | 삼성전자주식회사 | 나눗셈 연산을 수행하는 장치, 그것을 포함하는 시스템 온 칩 및 그것의 방법 |
KR20200081623A (ko) * | 2018-12-27 | 2020-07-08 | 고려대학교 산학협력단 | 비지도 학습 기능을 지원하는 프로세싱 인 메모리 및 그 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US11664069B2 (en) | 2023-05-30 |
US20220028445A1 (en) | 2022-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
He et al. | Newton: A DRAM-maker’s accelerator-in-memory (AiM) architecture for machine learning | |
US11194579B2 (en) | Memory device supporting skip calculation mode and method of operating the same | |
KR102342994B1 (ko) | 산술 연산을 지원하는 인메모리 컴퓨팅 | |
US10877754B2 (en) | Matrix computation engine | |
EP2799997B1 (en) | Data processing device | |
WO2016101359A1 (zh) | 基于忆阻器实现计算与存储融合的处理器及其操作方法 | |
JPH0594698A (ja) | 半導体記憶装置 | |
JP2006164183A (ja) | 半導体信号処理装置 | |
JP2006059068A (ja) | プロセッサ装置 | |
CN101689105A (zh) | 运用平凡算术运算的处理器 | |
KR20220051006A (ko) | Pim(processing-in-memory) 연산 수행 방법, 및 관련 메모리 디바이스 및 시스템 | |
WO2005088640A9 (en) | Improvements relating to orthogonal data memory | |
Roohi et al. | Processing-in-memory acceleration of convolutional neural networks for energy-effciency, and power-intermittency resilience | |
US7707463B2 (en) | Implementing directory organization to selectively optimize performance or reliability | |
Arora et al. | CoMeFa: Compute-in-memory blocks for FPGAs | |
EP3264415B1 (en) | Methods and apparatus for smart memory interface | |
US20220391128A1 (en) | Techniques to repurpose static random access memory rows to store a look-up-table for processor-in-memory operations | |
CN111459552B (zh) | 一种内存中并行化计算的方法及装置 | |
Chen et al. | BRAMAC: Compute-in-BRAM Architectures for Multiply-Accumulate on FPGAs | |
CN103295627A (zh) | 相变存储器、数据并行写入方法及数据读取方法 | |
CN114072778A (zh) | 存储器处理单元架构 | |
Arora et al. | MathRAMs: Configurable Fused Compute-Memory Blocks for FPGAs. | |
EP4254201A1 (en) | Dynamic buffers and method for dynamic buffer allocation | |
US20230420035A1 (en) | In-memory computing circuit and method, and semiconductor memory | |
US20230315341A1 (en) | Processor for performing a predetermined computational operation, and processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |