KR102342994B1 - 산술 연산을 지원하는 인메모리 컴퓨팅 - Google Patents

산술 연산을 지원하는 인메모리 컴퓨팅 Download PDF

Info

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
Application number
KR1020200137802A
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 US17/377,766 priority Critical patent/US11664069B2/en
Application granted granted Critical
Publication of KR102342994B1 publication Critical patent/KR102342994B1/ko

Links

Images

Classifications

    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4091Sense or sense/refresh amplifiers, or associated sense circuitry, e.g. for coupled bit-line precharging, equalising or isolating
    • 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/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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
    • 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/50Adding; Subtracting
    • 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
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital 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/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic 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/21EXCLUSIVE-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/215EXCLUSIVE-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

산술 연산을 지원하는 인메모리 컴퓨팅{IN MEMORY COMPUTING SUPPORTING ARITHMETIC OPERATIONS}
본 출원은 산술 연산을 지원하는 인메모리 컴퓨팅에 관한 것으로, 특히, 캐리 전달이 필요한 정수 연산을 고속으로 지원하는 인메모리 컴퓨팅에 관한 것이다.
기존의 캐시 메모리는 연산 동작에 비해 상대적으로 느린 읽기/쓰기 동작만으로 제한되어있다. 그러나, 최근 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)를 획득하기 위한 메모리인 컴퓨팅의 동작 예시도이다.
이하, 구체적인 실시형태 및 첨부된 도면을 참조하여 본 출원의 실시형태를 설명한다. 그러나, 본 출원의 실시 형태는 여러 가지 다른 형태로 변형될 수 있으며, 본 출원의 범위가 이하 설명하는 실시형태로 한정되는 것은 아니다. 또한, 본 출원의 실시형태는 통상의 기술자에게 본 발명을 더욱 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있으며, 도면상의 동일한 부호로 표시되는 요소는 동일한 요소이다.
그리고 도면에서 본 출원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하고, 여러 층 및 영역을 명확하게 표현하기 위하여 두께를 확대하여 나타내었으며, 동일한 사상의 범위 내의 기능이 동일한 구성요소는 동일한 참조부호를 사용하여 설명한다. 나아가, 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 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: 연산 로직부

Claims (20)

  1. 메모리 셀 어레이; 및
    상기 메모리 셀 어레이에 연결된 복수의 비트라인쌍들에 연결되는 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로를 포함하고,
    상기 컬럼 주변 유닛들 각각은
    상기 복수의 비트라인쌍들 중 하나의 비트라인 쌍을 통해 비트와이즈 데이터를 감지 증폭하는 감지증폭 및 라이트부; 및
    상기 비트와이즈 데이터에 기초하여, 전가산기 불 함수 기반의 산술 연산을 수행하고, 상기 산술 연산에 따라 획득되는 연산 데이터에 대해 상기 감지증폭 및 라이트부를 통해 라이트 백 동작을 수행시키는 연산 로직부를 포함하는, 인메모리 컴퓨팅.
  2. 제1항에 있어서,
    상기 연산 데이터는 NAND, AND, NOR, OR, XNOR, XOR, NOT, Shift 연산 값을 포함하는 로직 데이터와 ADD, ADD-Shift, SUB, MULT 연산 값을 정수 데이터 중 어느 하나를 포함하는, 인메모리 컴퓨팅.
  3. 제2항에 있어서,
    상기 연산 로직부는 하위 비트 측으로부터 제1 캐리값을 출력받는 제1 멀티플렉서;
    상기 하위 비트 측으로부터 제1 합산값을 출력받는 시프트 플립플롭;
    상기 제1 캐리값, 상기 제1 합산값 및 상기 감지증폭 및 라이트부를 감지된 비트와이즈 데이터에 기초하여, 제2 캐리값과 제2 합산값을 연산하는 전가산기 로직;
    상기 제2 합산값을 출력받아 상위 비트측으로 전달하는 제2 멀티플렉서; 및
    상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 출력받는 제3 멀티플렉서를 포함하는, 인메모리 컴퓨팅.
  4. 제3항에 있어서,
    상기 제3 멀티플렉서는 상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 상기 감지증폭 및 라이트부를 통해 라이트 백 시키는, 인메모리 컴퓨팅.
  5. 제3항에 있어서,
    상기 전가산기 로직은 상기 제1 멀티플렉서로부터 전송받는 선택 신호에 따라 스위칭되는 전송 게이트 기반의 회로로 구현된, 인메모리 컴퓨팅.
  6. 제3항에 있어서,
    상기 컬럼 주변 회로는 상기 비트와이즈 데이터를 상위 비트 측 방향으로 전달하는 Shift 연산을 수행하는, 인메모리 컴퓨팅.
  7. 제6항에 있어서,
    상기 컬럼 주변 회로는 상기 Shift 연산이 수행되는 단일 주기에서, 상기 복수의 연산 로직부들을 통해 수행되는 모든 Shift 연산 동작을 한번에 수행하는, 인메모리 컴퓨팅.
  8. 제3항에 있어서,
    상기 컬럼 주변 회로는 상기 제2 캐리값을 상위 비트 측 방향으로 전달하고, 상기 제2 합산값을 라이트 백 시키는 ADD 연산을 수행하는, 인메모리 컴퓨팅.
  9. 제8항에 있어서,
    상기 컬럼 주변 회로는 상기 ADD 연산이 수행되는 단일 주기에서, 상기 복수의 연산 로직부들을 통해 수행되는 모든 ADD 연산 동작을 한번에 수행하는, 인메모리 컴퓨팅.
  10. 제3항에 있어서,
    상기 컬럼 주변 회로는 상기 제2 합산값을 상위 비트 측 방향으로 전달함에 따라, 하위 비트 측으로부터 전달받는 상기 제1 합산값을 라이트 백 시키는 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅.
  11. 제10항에 있어서,
    상기 ADD-Shift 연산이 수행되는 주기는 상기 제2 합산값을 상위 비트 측 방향으로 전달하는 제1 주기와 상기 제1 합산값을 라이트 백 시키는 제2 주기를 포함하는, 인메모리 컴퓨팅.
  12. 메모리 셀 어레이;
    상기 메모리 셀 어레이에 연결된 복수의 컬럼 주변 유닛들을 포함하는 컬럼 주변 회로부;
    상기 메모리 셀 어레이에 저장된 피승수 데이터를 저장하는 더미셀 어레이부;
    상기 더미셀 어레이와 상기 메모리 셀 어레이를 분리시키는 BL 세퍼레이터부; 및
    상기 메모리 셀 어레이로부터 로드되는 승수 데이터에 기초하여, 상기 복수의 컬럼 주변 유닛들의 곱셈 연산 동작을 제어하는 시프트 레지스터 회로를 포함하는, 인메모리 컴퓨팅.
  13. 제12항에 있어서,
    상기 더미셀 어레이부는 0의 데이터를 저장하는 제1 서브 어레이;
    상기 피승수 데이터를 최하위 비트에서 최상위 비트 순서로 저장하는 제2 서브 어레이; 및
    상기 복수의 컬럼 주변 유닛들을 통해 라이트 백 되는 임시 데이터를 저장하는 제3 서브 어레이를 포함하는, 인메모리 컴퓨팅.
  14. 제12항에 있어서,
    상기 시프트 레지스터 회로는 상기 승수 데이터가 최상위 비트에서 최하위 비트 순서로 출력되는 로드 데이터를 저장하는 복수의 승수 플립플롭들; 및
    상기 로드 데이터에 기초하여, 상기 복수의 컬럼 주변 유닛들을 제어하기 위한 제어 신호를 전송하는 복수의 제어 멀티플렉서들을 포함하는, 인메모리 컴퓨팅.
  15. 제13항에 있어서,
    상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 최상위 비트에 대응되는 제어 신호에 기초하여, 상기 제1 및 제2 서브 어레이 대한 컬럼별 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅.
  16. 제13항에 있어서,
    상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 중간 비트가 0에 대응되는 제어 신호에 기초하여, 상기 제3 서브 어레이에 대한 Shift 연산 동작을 수행하는, 인메모리 컴퓨팅.
  17. 제13항에 있어서,
    상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 중간 비트가 1에 대응되는 제어 신호에 기초하여, 상기 제2 및 제3 서브 어레이에 대한 컬럼별 ADD-Shift 연산 동작을 수행하는, 인메모리 컴퓨팅.
  18. 제13항에 있어서,
    상기 복수의 컬럼 주변 유닛들은 상기 승수 데이터의 최하위 비트에 대응되는 제어 신호에 기초하여, 상기 제2 및 제3 서브 어레이에 대한 ADD 연산 동작을 수행하는, 인메모리 컴퓨팅.
  19. 제13항에 있어서,
    상기 복수의 컬럼 주변 유닛들 각각은 하위 비트 측으로부터 제1 캐리값을 출력받는 제1 멀티플렉서;
    상기 하위 비트 측으로부터 제1 합산값을 출력받는 시프트 플립플롭;
    상기 제1 캐리값, 상기 제1 합산값 및 감지증폭 및 라이트부를 통해 감지된 비트와이즈 데이터에 기초하여, 제2 캐리값과 제2 합산값을 연산하는 전가산기 로직;
    상기 제2 합산값을 출력받아 상위 비트측으로 전달하는 제2 멀티플렉서; 및
    상기 제1 캐리값, 상기 제1 합산값, 상기 제2 합산값 및 상기 비트와이즈 데이터 중 적어도 하나를 출력받는 제3 멀티플렉서를 포함하는, 인메모리 컴퓨팅.
  20. 제19항에 있어서,
    상기 전가산기 로직은 상기 제1 멀티플렉서로부터 전송받는 선택 신호에 따라 스위칭되는 전송 게이트 기반의 회로로 구현된, 인메모리 컴퓨팅.




KR1020200137802A 2020-07-21 2020-10-22 산술 연산을 지원하는 인메모리 컴퓨팅 KR102342994B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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