KR20220154346A - 복제 비트-셀 기반의 mac 연산 장치 및 방법 - Google Patents
복제 비트-셀 기반의 mac 연산 장치 및 방법 Download PDFInfo
- Publication number
- KR20220154346A KR20220154346A KR1020210061753A KR20210061753A KR20220154346A KR 20220154346 A KR20220154346 A KR 20220154346A KR 1020210061753 A KR1020210061753 A KR 1020210061753A KR 20210061753 A KR20210061753 A KR 20210061753A KR 20220154346 A KR20220154346 A KR 20220154346A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- cell block
- duplicate
- cells
- mac operation
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 54
- 230000010076 replication Effects 0.000 abstract description 7
- 238000013528 artificial neural network Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 230000015572 biosynthetic process Effects 0.000 description 9
- 238000003786 synthesis reaction Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 239000002131 composite material Substances 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000003278 mimic effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000006386 memory function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
Abstract
복제 비트-셀 기반의 MAC(multiply-accumulate) 연산 장치 및 방법이 제공된다. 일 실시예에 따르면, MAC 연산 회로는 복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정하는 소스 비트-셀 블록; 상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록; 및 상기 복제 비트-셀 블록을 이용하여 상기 MAC 연산 결과의 디지털 값을 판독하는 판독 회로를 포함한다.
Description
아래 실시예들은 MAC 연산 장치 및 방법에 관한 것이다.
MAC(multiply-accumulate) 연산이라고도 알려져 있는 벡터 매트릭스 곱셈 연산은 다양한 분야에서 어플리케이션의 성능을 좌우할 수 있다. 예를 들어, 다중 레이어를 포함하는 뉴럴 네트워크(neural network)의 머신 러닝(machine learning) 및 인증 동작에 있어서, MAC 연산이 수행될 수 있다. 입력 신호는 입력 벡터를 형성하는 것으로 간주될 수 있으며, 이미지, 바이트 스트림 또는 기타 데이터 세트에 대한 데이터일 수 있다. 입력 신호에 웨이트(weight)가 곱해지고 누적된 MAC 연산의 결과로부터 출력 벡터가 구해지고, 이 출력 벡터는 다음 레이어에 대한 입력 벡터로 제공될 수 있다. 이와 같은 MAC 연산은 다수의 레이어에 대해 반복되기 때문에, 뉴럴 네트워크 처리 성능은 MAC 연산의 성능에 의존적일 수 있다.
일 실시예에 따르면, MAC(multiply-accumulate) 연산 회로는 복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정하는 소스 비트-셀 블록; 상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록; 및 상기 복제 비트-셀 블록을 이용하여 상기 MAC 연산 결과의 디지털 값을 판독하는 판독 회로를 포함한다.
상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하여 상기 MAC 연산 결과의 상기 디지털 값을 판독할 수 있다.
상기 복수의 소스 비트-셀들은 각각 부분 연산 결과를 나타내는 저항 값을 결정할 수 있고, 상기 소스 비트-셀 블록의 합성 저항 값은 상기 부분 연산 결과의 합에 대응하는 상기 MAC 연산 결과를 나타낼 수 있고, 상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 상기 복제 비트-셀 블록의 합성 저항 값을 상기 소스 비트-셀 블록의 상기 합성 저항 값에 매칭시킬 수 있다. 상기 매칭된 상기 복제 비트-셀 블록의 상기 합성 저항 값은 상기 MAC 연산 결과의 상기 디지털 값을 나타낼 수 있다.
상기 판독 회로는 상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록을 비교하는 비교기를 포함할 수 있고, 상기 비교기의 비교 결과에 기초하여 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절할 수 있다. 상기 복제 비트-셀 블록은 상기 소스 비트-셀 블록에 직렬로 연결될 수 있고, 상기 비교기는 상기 소스 비트-셀 블록에 걸리는 전압에 기초하여 상기 소스 비트-셀 블록의 합성 저항 값과 상기 복제 비트-셀 블록의 합성 저항 값을 비교할 수 있다.
상기 판독 회로는 바이너리 서치를 이용하여 상기 복제 비트-셀 블록들 중 적어도 일부의 상태를 조절할 수 있다. 첫 번째 스테이지에서의 상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록 간의 비교 결과에 기초하여 상기 복제 비트-셀 블록의 1/2에 해당하는 제1 그룹의 비트-셀들의 상태를 결정할 수 있고, 두 번째 스테이지에서의 상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록 간의 비교 결과에 기초하여 상기 복제 비트-셀 블록의 나머지 1/2의 1/2에 해당하는 제2 그룹의 비트-셀들의 상태를 결정할 수 있다. 상기 제1 그룹의 상기 비트-셀들의 상기 상태에 대응하여 상기 MAC 연산 결과의 상기 디지털 값의 첫 번째 비트가 결정될 수 있고, 상기 제2 그룹의 상기 비트-셀들의 상기 상태에 대응하여 상기 MAC 연산 결과의 상기 디지털 값의 두 번째 비트가 결정될 수 있다.
상기 복제 비트-셀 블록은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함할 수 있고, 상기 판독 회로는 상기 복수의 서브 블록들 중 상기 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 상기 검출된 서브 블록을 이용하여 상기 MAC 연산 결과의 상기 디지털 값을 판독할 수 있다.
다른 일 실시예에 따르면, MAC(multiply-accumulate) 연산 회로는 각각 복수의 소스 비트-셀들에 기초하여 입력 신호에 관한 MAC 연산을 수행하는 복수의 로컬 소스 비트-셀 블록들; 상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록; 및 상기 복제 비트-셀 블록을 이용하여 상기 복수의 로컬 소스 비트-셀 블록들의 각 개별 MAC 연산 결과의 디지털 값을 판독하는 판독 회로를 포함한다.
상기 복수의 로컬 소스 비트-셀 블록들은 상기 복제 비트-셀 블록 및 상기 판독 회로를 공유할 수 있다. 상기 판독 회로는 상기 복수의 로컬 소스 비트-셀 블록들의 각 개별 MAC 연산 결과를 순차적으로 판독할 수 있다.
상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하여 상기 개별 MAC 연산 결과의 상기 디지털 값을 결정할 수 있다. 상기 복수의 소스 비트-셀들은 각각 부분 연산 결과를 나타내는 저항 값을 결정할 수 있고, 상기 소스 비트-셀 블록의 합성 저항 값은 상기 부분 연산 결과의 합에 대응하는 상기 개별 MAC 연산 결과를 나타낼 수 있고, 상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 상기 복제 비트-셀 블록의 합성 저항 값을 상기 소스 비트-셀 블록의 상기 합성 저항 값에 매칭시킬 수 있다.
상기 복수의 로컬 소스 비트-셀 블록들과 상기 복제 비트-셀 블록을 비교하는 비교기를 포함할 수 있고, 상기 비교기의 비교 결과에 기초하여 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절할 수 있다. 상기 복제 비트-셀 블록은 상기 복수의 로컬 소스 비트-셀 블록들 중 타겟 비트-셀 블록에 직렬로 연결될 수 있고, 상기 비교기는 상기 소스 비트-셀 블록에 걸리는 전압에 기초하여 상기 타겟 비트-셀 블록의 합성 저항 값과 상기 복제 비트-셀 블록의 합성 저항 값을 비교할 수 있다.
상기 판독 회로는 바이너리 서치를 이용하여 상기 복제 비트-셀 블록들 중 적어도 일부의 상태를 조절할 수 있다. 상기 복수의 로컬 소스 비트-셀 블록들은 상기 입력 신호에 기초하여 제1 개별 MAC 연산 결과를 결정하는 제1 로컬 소스 비트-셀 블록을 포함하고, 상기 복제 비트-셀 블록은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함하고, 상기 판독 회로는 상기 복수의 서브 블록들 중 상기 제1 로컬 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 상기 검출된 서브 블록을 이용하여 상기 제1 개별 MAC 연산 결과의 제1 디지털 값을 판독할 수 있다.
일 실시예에 따르면, 컴퓨팅 방법은 복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정하는 단계; 및 상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록을 이용하여 상기 MAC 연산 결과의 디지털 값을 판독하는 단계를 포함한다.
도 1은 일 실시예에 따른 MAC 연산 회로의 개략적인 구성을 나타낸다.
도 2는 일 실시예에 따른 비트-셀 어레이의 구조를 나타낸다.
도 3은 일 실시예에 따른 컬럼 쌍들의 기반의 MAC 연산 회로의 구조를 나타낸다.
도 4는 일 실시예에 따른 컬럼 쌍의 상세 구조를 나타낸다.
도 5는 일 실시예에 따른 비트-셀의 상세 구조를 나타낸다.
도 6은 일 실시예에 따른 비교기의 비교 동작을 나타낸다.
도 7a 내지 도 7e는 일 실시예에 따른 MAC 연산 결과의 디지털 값을 판독하는 스테이지들을 나타낸다.
도 8은 일 실시예에 따른 로컬-글로벌 공유 기반의 MAC 연산 회로의 구조를 나타낸다.
도 9는 일 실시예에 따른 복제 비트-셀 블록의 서브 블록들을 이용한 판독 구조를 나타낸다.
도 10은 일 실시예에 따른 컴퓨팅 동작을 나타낸 동작 흐름도이다.
도 11은 일 실시예에 따른 상태 조절 기반의 판독 동작을 나타낸 동작 흐름도이다.
도 12는 일 실시예에 따른 MAC 연산 회로에 의해 구현될 수 있는 뉴럴 네트워크 연산의 예시를 나타낸다.
도 12는 일 실시예에 따른 전자 장치를 나타낸 블록도이다.
도 2는 일 실시예에 따른 비트-셀 어레이의 구조를 나타낸다.
도 3은 일 실시예에 따른 컬럼 쌍들의 기반의 MAC 연산 회로의 구조를 나타낸다.
도 4는 일 실시예에 따른 컬럼 쌍의 상세 구조를 나타낸다.
도 5는 일 실시예에 따른 비트-셀의 상세 구조를 나타낸다.
도 6은 일 실시예에 따른 비교기의 비교 동작을 나타낸다.
도 7a 내지 도 7e는 일 실시예에 따른 MAC 연산 결과의 디지털 값을 판독하는 스테이지들을 나타낸다.
도 8은 일 실시예에 따른 로컬-글로벌 공유 기반의 MAC 연산 회로의 구조를 나타낸다.
도 9는 일 실시예에 따른 복제 비트-셀 블록의 서브 블록들을 이용한 판독 구조를 나타낸다.
도 10은 일 실시예에 따른 컴퓨팅 동작을 나타낸 동작 흐름도이다.
도 11은 일 실시예에 따른 상태 조절 기반의 판독 동작을 나타낸 동작 흐름도이다.
도 12는 일 실시예에 따른 MAC 연산 회로에 의해 구현될 수 있는 뉴럴 네트워크 연산의 예시를 나타낸다.
도 12는 일 실시예에 따른 전자 장치를 나타낸 블록도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 MAC 연산 회로의 개략적인 구성을 나타낸다. 도 1을 참조하면, MAC 연산 회로(multiply-accumulate operation circuit, 100)는 소스 비트-셀 회로(source bit-cell circuit, 110) 및 복제 비트-셀 회로(replica bit-cell circuit, 120)를 포함한다. 소스 비트-셀 회로(110)는 소스 비트-셀 블록(111)을 포함할 수 있고, 복제 비트-셀 회로(120)는 복제 비트-셀 블록(121)을 포함할 수 있다. 소스 비트-셀 블록(111)은 입력 신호의 MAC 연산 결과를 결정할 수 있고, 판독 회로(readout circuit, 130)는 복제 비트-셀 블록(121)을 이용하여 MAC 연산 결과의 디지털 값을 판독할 수 있다.
소스 비트-셀 블록(111) 및 복제 비트-셀 블록(121)은 각각 복수의 비트-셀들을 포함할 수 있다. 소스 비트-셀 블록(111)의 비트-셀은 소스 비트-셀로 지칭될 수 있고, 복제 비트-셀 블록(121)의 비트-셀은 복제 비트-셀로 지칭될 수 있다. 비트-셀들은 웨이트(weight)를 저장하는 메모리 기능 및 입력 값과 웨이트 값 간의 MAC 연산을 수행하는 연산 기능을 수행할 수 있다. 비트-셀은 저항 소자 및/또는 메모리 소자를 포함할 수 있다. 예를 들어, 비트-셀은 저항성 메모리 소자에 해당할 수 있다. 비트-셀 어레이(290)는 웨이트 값을 저장하는 메모리 기능을 가지므로 메모리 어레이에 해당할 수 있고, MAC 연산에 특화된 연산 기능을 수행하므로 가속기에 해당할 수 있다.
소스 비트-셀 회로(110)는 복수의 소스 비트-셀들을 어레이 형태로 포함할 수 있다. 어레이의 각 로(row)은 입력 라인을 형성할 수 있고, 각 컬럼(column)은 출력 라인을 형성할 수 있다. 소스 비트-셀 블록(111)은 어레이의 컬럼에 해당할 수 있다. 소스 비트-셀 블록(111)의 각 소스 비트-셀은 웨이트 값을 저장할 수 있고, 입력 신호에 응답하여 입력 값과 웨이트 값 간의 곱셈 결과를 나타내는 저항 값을 결정할 수 있다. 곱셈 결과는 MAC 연산의 부분 연산 결과에 해당할 수 있다. 예를 들어, 입력 값은 입력 신호의 전압 값을 통해 결정될 수 있고, 웨이트 값은 소스 비트-셀의 저항기 배치(resistor arrangement)를 통해 결정될 수 있다. 입력 신호의 전압 값을 통해 소스 비트-셀의 저항기 배치에 따른 저항 값이 결정되면, 해당 저항 값은 입력 값과 웨이트 값 간의 곱셈 결과를 나타낼 수 있고, 이러한 곱셈 결과들이 누적되어 MAC 연산 결과를 나타낼 수 있다. 일 실시예에 따르면, 소스 비트-셀들은 서로 직렬 연결될 수 있고, 소스 비트-셀들의 합성 저항 값은 MAC 연산 결과를 나타낼 수 있다.
판독 회로(130)는 복제 비트-셀 블록(121)을 이용하여 소스 비트-셀 블록(111)의 합성 저항 값을 결정하고, 합성 저항 값에 기초하여 MAC 연산 결과의 디지털 값을 판독할 수 있다. 판독 회로(130)는 다양한 실시예들을 통해 MAC 연산 결과의 디지털 값을 판독할 수 있다. 일 실시예에 따르면, 복제 비트-셀 블록(121)은 소스 비트-셀 블록(111)의 대응 구조를 가질 수 있고, 판독 회로(130)는 복제 비트-셀 블록(121)의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 복제 비트-셀 블록(121)의 합성 저항 값을 소스 비트-셀 블록(111)의 합성 저항 값에 매칭시킬 수 있다. 예를 들어, 판독 회로(130)는 바이너리 서치에 기초하여 복제 비트-셀 블록(121)을 조절할 수 있다. 이렇게 매칭된 복제 비트-셀 블록의 합성 저항 값은 MAC 연산 결과의 디지털 값을 나타낼 수 있다. 다른 일 실시예에 따르면, 복제 비트-셀 블록(121)은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함할 수 있고, 판독 회로(130)는 복수의 서브 블록들 중 소스 비트-셀 블록(111)의 합성 저항 값에 대응하는 서브 블록을 이용하여 디지털 값을 판독할 수 있다.
소스 비트-셀 회로(110)는 복수의 소스 비트-셀 블록들을 포함할 수 있다. 예를 들어, 소스 비트-셀 회로(110)가 m*n의 비트-셀 어레이를 포함하는 경우, 소스 비트-셀 블록들의 수는 m개일 수 있다. 이때, 복제 비트-셀 회로(110)는 복수의 소스 비트-셀 블록들과 동일한 수(예: m개)의 복제 비트-셀 블록들을 포함할 수 있다. 이 경우, 각 소스 비트-셀 블록은 전용 복제 비트-셀 블록을 가질 수 있다. 이와 달리, 복제 비트-셀 회로(110)는 복수의 소스 비트-셀 블록들에 비해 적은 수(예: k개)의 복제 비트-셀 블록들을 포함할 수 있다. 이 경우, m/k개의 소스 비트-셀 블록들은 어느 복제 비트-셀 블록을 공유할 수 있다.
복제 비트-셀 회로(120)를 이용한 판독 방식은 MAC 연산 회로(100)에서 판독을 위한 주변 회로(peripheral circuit)를 감소시키고, 비트-셀들의 비중을 높일 수 있다. 예를 들어, 주변 회로는 읽기/쓰기 드라이버(write/read driver), 레벨 쉬프터(level shifter), 타이밍 생성기(timing generator), 증폭기(amplifier), 및 ADC(analog to digital converter)를 포함할 수 있다. 비트-셀들의 비중이 높아짐에 따라 MAC 연산 회로(100)에서 메모리 소자 영역과 다른 소자 영역 간의 균형이 맞을 수 있다. 또한, 주변 회로의 면적이 줄어듦에 따라 MAC 연산 회로(100)의 면적 및 전력 효율이 향상될 수 있다.
도 2는 일 실시예에 따른 비트-셀 어레이의 구조를 나타낸다. 도 2를 참조하면, 비트-셀 어레이(290)는 개별적으로 입력 신호를 수신 가능한 복수의 입력 라인들 및 개별적으로 출력 신호를 출력하는 복수의 출력 라인들을 포함할 수 있다. 일 실시예에 따르면, 도 1의 소스 비트-셀 회로(110)는 비트-셀 어레이(290)를 포함할 수 있고, 소스 비트-셀 블록(111)은 비트-셀 어레이(290)의 어느 하나의 컬럼일 수 있다. 입력 신호는 입력 전압들(V1 내지 Vn)을 통해 입력될 수 있고, 출력 신호는 출력 전류들(I1 내지 Im)을 통해 출력될 수 있다.
복수의 출력 라인들 각각은 복수의 비트-셀들을 포함할 수 있다. 복수의 입력 라인들의 각 입력 라인은 복수의 출력 라인들에 교차할 수 있다. 입력 라인 및 출력 라인은 서로에 대해 수직으로 교차하는 것으로 도시되었으나, 이로 한정하는 것은 아니다. 예를 들어, 비트-셀 어레이(290)는 m개의 입력 라인들 및 n개의 출력 라인들을 포함할 수 있다. 복수의 비트-셀들은 복수의 출력 라인들 및 복수의 입력 라인들을 따라 배치될 수 있다. 복수의 비트-셀들은 출력 라인을 따라 복수의 입력 라인들마다 배치될 수 있다. 복수의 비트-셀들 각각은 복수의 입력 라인들 중 자신이 배치된 입력 라인을 통해 전압을 수신하도록 구성될 수 있다. 예를 들어, 제j 입력 라인(291)을 따라 배치된 비트-셀들은 입력 전압(Vj)을 입력 신호로 수신할 수 있다. 입력 전압들(V1 내지 Vn)은 바이너리 값을 지시하는 전압 값을 가질 수 있다. 예를 들어, 1의 비트 값을 지시하는 입력 전압 신호는 정해진 전압을 나타낼 수 있고, 0의 비트 값을 지시하는 입력 전압 신호는 플로팅 전압(floating voltage)을 나타낼 수 있다.
제i 출력 라인(292)의 제i 출력 전류(Ii)는 제i 출력 라인(292)에 인가되는 전압 값들(V1 내지 Vn)과 제i 출력 라인(292)에 속하는 비트-셀들의 저항 값들 간의 MAC 연산 결과에 대응할 수 있다. 예를 들어, 제i 출력 라인(292)에 인가되는 전압 값들(V1 내지 Vn)은 입력 값에 해당할 수 있고, 비트-셀들의 저항기 배치(resistor arrangement)는 웨이트 값을 결정할 수 있다. 전압 값들(V1 내지 Vn)을 통해 비트-셀의 저항기 배치에 따른 저항 값이 결정되면, 해당 저항 값은 입력 값과 웨이트 값 간의 곱셈 결과를 나타낼 수 있다. 이러한 곱셈 결과들이 제i 출력 라인(292)을 따라 누적되어 제i 출력 라인(292)의 MAC 연산 결과를 나타낼 수 있다. 일 실시예에 따르면, 소스 비트-셀들은 서로 직렬 연결될 수 있고, 제i 출력 라인(292)의 비트-셀들의 합성 저항 값은 제i 출력 라인(292)의 MAC 연산 결과를 나타낼 수 있다.
도 3은 일 실시예에 따른 컬럼 쌍들의 기반의 MAC 연산 회로의 구조를 나타낸다. 도 3을 참조하면, MAC 연산 회로(300)는 제1 소스 비트-셀 블록(311) 및 제1 복제 비트-셀 블록(321)을 포함하는 제1 컬럼 쌍, 제2 소스 비트-셀 블록(312) 및 제2 복제 비트-셀 블록(322)을 포함하는 제2 컬럼 쌍, 제3 소스 비트-셀 블록(313) 및 제3 복제 비트-셀 블록(323)을 포함하는 제3 컬럼 쌍, ..., 제N 소스 비트-셀 블록(314) 및 제N 복제 비트-셀 블록(324)을 포함하는 제N 컬럼 쌍을 포함한다. 컬럼 쌍들은 제1 컬럼 내지 제N 컬럼에 대응할 수 있다. 복제 비트-셀 블록들(321 내지 324)은 소스 비트-셀 블록들(311 내지 314)에 일대일로 매핑되므로, 소스 비트-셀 블록들(311 내지 314)은 각각 전용 복제 비트-셀 블록을 가질 수 있다. 다만, 반드시 여기에 한정되는 것은 아니고, 추후 도 8을 통해 설명할 것처럼, 복수의 소스 비트-셀 블록들이 하나의 복제 비트-셀 블록을 공유하는 구조도 가능하다.
제1 판독 회로(331)는 제1 SAR 로직(successive-approximation logic, 3311) 및 제1 비교기(comparator, 3312)를 포함할 수 있다. 제1 SAR 로직(3311)은 제1 소스 비트-셀 블록(311)에 기초하여 제1 복제 비트-셀 블록(321)의 복제 비트-셀들의 상태를 조절할 수 있다. 보다 구체적으로, 제1 SAR 로직(3311)은 제1 소스 비트-셀 블록(311)의 합성 저항 값을 모방하도록 복제 비트-셀들의 상태를 조절할 수 있다. 상태 조절은 저항 값의 조절을 포함할 수 있다. 예를 들어, 비트-셀이 입력 값에 따라 다른 저항 값을 가진다면, 제1 SAR 로직(3311)은 비트-셀의 입력 값을 조절하여 비트-셀의 저항 값을 조절할 수 있다. 제1 비교기(3312)는 제1 소스 비트-셀 블록(311)과 제1 복제 비트-셀 블록(321)을 비교할 수 있다. 제1 SAR 로직(3311)은 비교 결과를 참조하면서 복제 비트-셀들의 상태를 조절할 수 있고, 조절 결과는 제1 소스 비트-셀 블록(311)의 MAC 연산 결과의 디지털 값(D1[5:0])을 나타낼 수 있다.
나머지 판독 회로들(332 내지 334)도 SAR 로직 및 비교기를 각각 포함할 수 있고, 복제 비트-셀 블록들(322 내지 324)을 조절하여 소스 비트-셀 블록들(312 내지 314)의 MAC 연산 결과의 디지털 값들(D2[5:0] 내지 DN[5:0])을 판독할 수 있다. 도 3은 디지털 값이 6-비트인 예시를 나타내지만, 디지털 값은 다른 비트 정밀도(bit precision)를 가질 수 있다.
도 4는 일 실시예에 따른 컬럼 쌍의 상세 구조를 나타낸다. 도 4를 참조하면, 소스 비트-셀 블록(410)은 복수의 소스 비트-셀들을 포함할 수 있다. 소스 비트-셀은 WSi,j로 나타낼 수 있다. i는 컬럼(column) 인덱스, j는 로(row) 인덱스를 나타낼 수 있다. 도 4에는 컬럼이 64개인 예시가 도시되어 있으나, 컬럼 수는 다른 값을 가질 수도 있다. 소스 비트-셀(WSi,j)에는 입력 신호(INi)가 인가될 수 있다. 소스 비트-셀(WSi,j)은 웨이트 값에 대응하는 저항기 배치를 가질 수 있다. 다시 말해, 소스 비트-셀(WSi,j)은 자신의 웨이트 값에 따라 다른 저항기 배치를 가질 수 있다. 소스 비트-셀(WSi,j)은 입력 신호(INi) 및 저항기 배치에 기초하여 부분 연산 결과(예: 곱셈 결과)를 결정할 수 있다. 부분 연산 결과는 소스 비트-셀(WSi,j)의 저항 값을 통해 나타날 수 있다. 동일 출력 라인의 소스 비트-셀들(WSi,j)의 곱셈 결과들은 누적되어 해당 출력 라인의 MAC 연산 결과를 나타낼 수 있다. MAC 연산 결과는 합성 저항 값을 통해 나타날 수 있다.
도 5는 일 실시예에 따른 비트-셀의 상세 구조를 나타낸다. 도 5를 참조하면, 비트-셀(500)은 저항기들(R1, R2) 및 트랜지스터들(501, 502)을 포함할 수 있다. 비트-셀(500)에 기록하려는 웨이트 값에 따라 저항기들(R1, R2)의 저항기 배치가 결정될 수 있다. 제1 웨이트 값의 경우 제1 저항기(R1)에 제1 저항 값을 부여하고, 제2 저항기(R2)에 제2 저항 값을 부여하는 제1 저항기 배치가 적용될 수 있다. 예를 들어, 제1 저항기(R1)와 같은 굵은 선은 제1 저항 값을 나타낼 수 있고, 제2 저항기(R2)와 같은 점선은 제2 저항 값을 나타낼 수 있다. 제1 저항 값은 제2 저항 값에 비해 매우 큰 값일 수 있다. 제1 저항 값은 RH로, 제2 저항 값은 RL로 나타낼 수 있다. 이와 달리, 제2 웨이트 값의 경우 제1 저항기(R1)에 제2 저항 값을 부여하고, 제2 저항기(R2)에 제1 저항 값을 부여하는 제2 저항기 배치가 적용될 수 있다. 예를 들어, 저항기들(R1, R2)로 자기 터널 접합(magnetic tunnel junction)이 이용될 수 있고, 비트-셀(500)은 MRAM(magnetic random access memory)에 해당할 수 있다.
입력 신호들(IN, INB)에 따라 저항기들(R1, R2) 중 어느 하나가 선택될 수 있다. 제1 입력 신호(IN)와 제2 입력 신호(INB)는 서로 반대 값을 가질 수 있다. 제1 입력 신호(IN)가 1이고 제2 입력 신호(INB)가 0인 경우 트랜지스터들(501, 502)을 통해 제1 저항기(R1)가 선택될 수 있고, 제2 입력 신호(IN)가 0이고 제2 입력 신호(INB)가 1인 경우 트랜지스터들(501, 502)을 통해 제2 저항기(R2)가 선택될 수 있다. 이때, 저항기들(R1, R2)의 저항기 배치에 따라 비트-셀(500)의 저항 값이 다르게 나타날 수 있다. 따라서, 입력 신호 및 저항기 배치를 이용한 연산이 가능할 수 있다. 예를 들어, 비트-셀(500)은 아래 표 1의 진리표(truth-table)와 같은 XNOR 연산을 수행할 수 있다.
IN(INB) | R1(R2) | 선택된 저항기 | 저항 값 | XNOR 결과 |
0(1) | 0(1) | R2 | RH | 1 |
0(1) | 1(0) | R2 | RL | 0 |
1(0) | 0(1) | R1 | RL | 0 |
1(0) | 1(0) | R1 | RH | 1 |
다시 도 4를 참조하면, 복제 비트-셀 블록(420)은 복수의 복제 비트-셀들을 포함할 수 있다. 복제 비트-셀은 WRi,j로 나타낼 수 있다. 소스 비트-셀 블록(410)이 입력 신호들(IN1 내지 IN64) 및 소스 비트-셀들(WS1,1 내지 WS64,1)에 기초하여 MAC 연산 결과를 나타내는 소스 비트-셀 블록(410)의 합성 저항 값(RTOTAL)을 결정하면, 판독 회로(430)는 복제 비트-셀 블록(420)을 이용하여 소스 비트-셀 블록(410)의 합성 저항 값을 모방할 수 있다. 판독 회로(430)는 복제 비트-셀들(WR1,1 내지 WR64,1)의 상태를 조절하면서 복제 비트-셀 블록(420)의 합성 저항 값(RSAR)을 소스 비트-셀 블록(410)의 합성 저항 값(RTOTAL)에 매칭시킬 수 있고, 이 과정에서 MAC 연산 결과의 디지털 값을 판독할 수 있다.판독 회로(430)는 SAR 로직(431)을 통해 복제 비트-셀들(WR1,1 내지 WR64,1)의 상태를 조절할 수 있고, 비교기(432)의 비교 결과에 기초하여 MAC 연산 결과의 디지털 값을 결정할 수 있다. 제1 노드(401)에 구동 전압(VDD)이 공급된다면, 합성 저항 값(RTOTAL)과 합성 저항 값(RSAR)의 비율에 따라 구동 전압(VDD)이 소스 비트-셀 블록(410)과 복제 비트-셀 블록(420)에 분배되어 감지 전압(VSENCE)이 결정될 수 있다. 판독 회로(430)는 바이너리 서치를 이용할 수 있다. 예를 들어, 도 6과 같이, 기준 전압(VREF)은 구동 전압(VDD)의 1/2로 설정될 수 있다. 일례로, 구동 전압(VDD)은 1[V], 기준 전압(VREF)은 0.5[V]일 수 있다. 제2 노드(402)의 전압은 0[V]로 설정될 수 있다. 복제 비트-셀 블록(420)은 소스 비트-셀 블록(410)에 직렬로 연결될 수 있고, 비교기(432)는 감지 전압(VSENCE)과 기준 전압(VREF)을 통해 합성 저항 값(RTOTAL)과 합성 저항 값(RSAR)을 비교할 수 있다.
복제 비트-셀들(WR1,1 내지 WR64,1)은 그룹들(421 내지 426)로 구분될 수 있고, 그룹들(421 내지 426) 각각의 상태에 대응하여 디지털 값의 각 비트가 결정될 수 있다. 예를 들어, 복제 비트-셀들(WR1,1 내지 WR32,1)을 포함하는 제1 그룹(421)의 상태에 기초하여 디지털 값의 첫 번째 비트, 다시 말해 MSB(most significant bit)가 결정될 수 있다. 제2 그룹(422)의 상태는 두 번째 비트를, 제6 그룹(426)의 상태는 여섯 번째 비트를 결정할 수 있다. 도 4에는 컬럼이 64개이고, 디지털 값이 6-비트인 예시가 도시되어 있으나, 컬럼 수 및 비트 수는 다른 값을 가질 수도 있다. 컬럼 수는 디지털 값의 비트 수에 의존적일 수 있다. 예를 들어, p-비트의 비트 정밀도를 얻기 위해 2^p개의 컬럼들이 이용될 수 있다.
도 7a 내지 도 7e는 일 실시예에 따른 MAC 연산 결과의 디지털 값을 판독하는 스테이지들을 나타낸다. 도 7a 내지 도 7e를 참조하면, 입력 신호들(IN1 내지 IN64)에 기초하여 소스 비트-셀 블록(710)의 소스 비트-셀들(W1,1 내지 W64,1)의 각 저항 값이 결정될 수 있다. 합성 저항 값(RTOTAL)은 소스 비트-셀들(W1,1 내지 W64,1)의 저항 값들에 대응할 수 있다. 예를 들어, 소스 비트-셀들(W1,1 내지 W64,1)은 직렬로 연결될 수 있고, 합성 저항 값(RTOTAL)은 소스 비트-셀들(W1,1 내지 W64,1)의 저항 값들의 합계에 해당할 수 있다. 판독 회로(730)는 SAR 로직(731)을 통해 복제 비트-셀 블록(720)의 복제 비트-셀들(W1,1 내지 W64,1)의 상태를 조절할 수 있고, 비교기(732)의 비교 결과에 기초하여 MAC 연산 결과의 디지털 값을 결정할 수 있다. 예를 들어, 제p 스테이지에서 디지털 값의 p번째 비트가 결정될 수 있다.
도 7a는 첫 번째 스테이지를 나타낸다. 도 7a에서 SAR 로직(731)은 제1 저항 값(RH)을 나타내도록 제1 그룹(721)의 복제 비트-셀들(W1,1 내지 W32,1)을 조절할 수 있다. 예를 들어, 복제 비트-셀들(W1,1 내지 W32,1)에 제1 저항 값(RH)을 갖는 저항기를 선택하는 입력 신호가 인가될 수 있다. 일례로, 복제 비트-셀들(W1,1 내지 W32,1)이 도 5와 같은 구조를 갖는 경우, 제1 저항기(R1)에 제1 저항 값(RH)을 부여하고, 제2 저항기(R2)에 제2 저항 값(RL)을 부여하는 제1 저항기 배치가 복제 비트-셀들(W1,1 내지 W32,1)에 적용될 수 있고, 1의 입력 신호(IN)가 복제 비트-셀들(W1,1 내지 W32,1)에 인가될 수 있다. 나머지 복제 비트-셀들(W33,1 내지 W64,1)은 제2 저항 값(RL)을 갖도록 조절될 수 있다. 예를 들어, 복제 비트-셀들(W33,1 내지 W64,1)에 제2 저항 값(RL)을 갖는 저항기를 선택하는 입력 신호가 인가될 수 있다. 이처럼 판독 회로(730)는 합성 저항 값(RSAR)을 현재 스테이지의 전체 복제 비트 셀들(W1,1 내지 W64,1)의 저항 값의 중간 값으로 설정할 수 있고, 중간 값 기준으로 바이너리 서치를 수행할 수 있다.
비교기(732)는 감지 전압(VSENCE)과 기준 전압(VREF)을 비교할 수 있다. 감지 전압(VSENCE)이 기준 전압(VREF)보다 큰 경우, 제1 그룹(421)의 상태는 제1 저항 값(RH)이 나타나는 상태로 유지될 수 있고, 디지털 값(D[5:0])의 첫 번째 비트는 1로 결정될 수 있다. 감지 전압(VSENCE)이 기준 전압(VREF)보다 작은 경우, 제1 그룹(421)의 상태는 도 7b와 같이 제2 저항 값(RL)이 나타나는 상태로 조절될 수 있다. 예를 들어, 0의 입력 신호(IN)가 복제 비트-셀들(W1,1 내지 W32,1)에 인가될 수 있다. 이 경우, 디지털 값(D[5:0])의 첫 번째 비트는 0으로 결정될 수 있다. 복제 비트-셀들(W1,1 내지 W32,1)에 제1 저항기 배치가 적용되면, 디지털 값(D[5:0])의 각 비트는 입력 신호(IN)에 대응하도록 결정될 수 있다. 이하, 첫 번째 비트는 1인 것을 가정한다. 또한, 입력 신호(IN)의 초기 값이 1인 것을 가정하고 설명했지만, 초기 값은 0일 수도 있다. 이 경우, 복제 비트-셀들(W1,1 내지 W32,1)의 상태는 제2 저항 값(RL)에서 제1 저항 값(RH)으로 조절될 수 있다.
다음 스테이지들에서도 유사 동작이 수행될 수 있다. 도 7c의 두 번째 스테이지에서, 판독 회로(730)는 제2 그룹(722)의 상태를 조절하고, 감지 전압(VSENCE)을 기준 전압(VREF)과 비교할 수 있다. 제2 그룹(722)의 복제 비트-셀들(W33,1 내지 W48,1)에 1의 입력 신호(IN)가 인가되고, 나머지 복제 비트-셀들(W49,1 내지 W64,1)에 0의 입력 신호(IN)가 인가될 수 있고, 이에 따라 합성 저항 값(RSAR)이 현재 스테이지의 전체 복제 비트 셀들(W33,1 내지 W64,1)의 저항 값의 중간 값으로 설정될 수 있다. 감지 전압(VSENCE)이 기준 전압(VREF)보다 크다면 제2 그룹(722)의 저항 값은 제1 저항 값(RH)으로 결정될 수 있다. 감지 전압(VSENCE)이 기준 전압(VREF)보다 작다면, 제2 그룹(722)은 제2 저항 값(RL)을 나타내는 상태, 예를 들어 0의 입력 신호(IN)가 인가되는 상태로 조절될 수 있고, 제2 그룹(722)의 저항 값은 제2 저항 값(RL)으로 결정될 수 있다. 도 7c는 두 번째 비트가 0인 것을 나타낸다.
도 7d의 세 번째 스테이지에서 제3 그룹(723)의 상태 조절을 통해 디지털 값(D[5:0])의 세 번째 비트는 1로 결정될 수 있다. 도 7e의 p번째 스테이지까지 제4 그룹(724) 내지 제p 그룹(726)의 상태 조절을 통해 디지털 값(D[5:0])의 네 번째 비트 내지 p번째 비트가 결정될 수 있다. 도 7e은 p=6인 실시예를 나타내지만, p는 다른 값을 가질 수 있다. 예를 들어, p번째 스테이지의 종료로 인해 디지털 값(D[5:0])은 101101로 판독될 수 있다.
도 8은 일 실시예에 따른 로컬-글로벌 공유 기반의 MAC 연산 회로의 구조를 나타낸다. 도 8을 참조하면, MAC 연산 회로(800)는 복수의 로컬 비트-셀 블록들(811 내지 814), 복제 비트-셀 블록(820), 및 판독 회로(830)를 포함한다. 복수의 로컬 비트-셀 블록들(811 내지 814)은 각각 복수의 소스 비트-셀들에 기초하여 입력 신호에 관한 MAC 연산을 수행할 수 있다. 복제 비트-셀 블록(820)은 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함할 수 있다. 판독 회로(830)는 복제 비트-셀 블록을 이용하여 로컬 소스 비트-셀 블록들(811 내지 814)의 각 개별 MAC 연산 결과의 디지털 값을 판독할 수 있다.
로컬 비트-셀 블록들(811 내지 814)은 복제 비트-셀 블록(820) 및 판독 회로(830)를 공유할 수 있다. 하나의 복제 비트-셀 블록(820) 및 하나의 판독 회로(830)가 복수의 로컬 비트-셀 블록들(811 내지 814)의 디지털 비트 판독에 이용될 수 있다. 복제 비트-셀 블록(820) 및 판독 회로(830)는 로컬 비트-셀 블록들(811 내지 814)의 각 개별 MAC 연산 결과의 디지털 값을 순차적으로 판독할 수 있다. 예를 들어, 판독 회로(830)는 로컬 소스 비트-셀 블록들(811 내지 814) 중 타겟 비트-셀 블록(예: 제2 로컬 소스 비트-셀 블록(812))을 선택하고, 복제 비트-셀 블록(820)을 이용하여 타겟 비트-셀 블록의 MAC 연산 결과를 판독할 수 있다.
판독 회로(830)는 다양한 실시예들을 통해 MAC 연산 결과의 디지털 값을 판독할 수 있다. 일 실시예에 따르면, 복제 비트-셀 블록(820)은 로컬 소스 비트-셀 블록들(811 내지 814)의 대응 구조를 가질 수 있고, 판독 회로(830)는 로컬 소스 비트-셀 블록들(811 내지 814) 중 타겟 비트-셀 블록의 합성 저항 값을 모방하도록 복제 비트-셀 블록(820)을 조절하면서 디지털 값을 판독할 수 있다. 이러한 판독 동작에 도 3 내지 도 7의 설명이 적용될 수 있다. 다른 일 실시예에 따르면, 복제 비트-셀 블록(820)은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함할 수 있고, 판독 회로(830)는 복수의 서브 블록들 중 타겟 비트-셀의 합성 저항 값에 대응하는 서브 블록을 이용하여 디지털 값을 판독할 수 있다. 이러한 판독 동작에 도 9의 설명이 적용될 수 있다. 그 밖에, MAC 연산 회로(800)에는 도 1 내지 도 7 및 도 9 내지 도 13의 설명이 적용될 수 있다.
도 9는 일 실시예에 따른 복제 비트-셀 블록의 서브 블록들을 이용한 판독 구조를 나타낸다. 도 9를 참조하면, 복제 비트-셀 블록(920)은 복수의 서브 블록들(921 내지 925)을 포함한다. 서브 블록들(921 내지 925)은 각각 서로 다른 기준 저항 값에 대응할 수 있다. 예를 들어, 제1 서브 블록(921)은 제1 기준 저항 값(RREF_1)을 가질 수 있고, 제2 서브 블록(922)은 제2 기준 저항 값(RREF_2)을 가질 수 있고, 제63 서브 블록(925)은 제63 기준 저항 값(RREF_63)을 가질 수 있다.
기준 저항 값들(RREF_1 내지 RREF_63) 각각은 서브 블록들(921 내지 925) 각각의 합성 저항 값을 나타낼 수 있다. 기준 저항 값들(RREF_1 내지 RREF_63)은 입력 신호들(IN1 내지 IN64)에 기초하여 결정될 수 있다. 예를 들어, 제1 비트-셀(W1,1)에 1의 입력 신호(IN1)가 인가되고, 나머지 비트-셀들(W2,1 내지 W64,1)에 0의 입력 신호(IN0)가 인가되어, 제1 기준 저항 값(RREF_1)이 유도될 수 있다. 복제 비트-셀 블록(920)은 p-비트의 디지털 값의 판독을 위해 2^p-1개의 서브 블록들을 포함할 수 있다. 도 9는 p=6인 실시예를 나타내지만, p는 다른 값을 가질 수 있다.
소스 비트-셀 블록(910)은 입력 신호들(IN1 내지 IN64)에 기초하여 MAC 연산을 수행할 수 있고, MAC 연산 결과는 합성 저항 값(RTOTAL)에 반영될 수 있다. 구동 전압(VDD)은 합성 저항 값(RTOTAL)과 기준 저항 값(RREF)에 기초하여 소스 비트-셀 블록(910)에 분배될 수 있고, 감지 전압(VSENSE)은 소스 비트-셀 블록(910)에 분배된 전압을 나타낼 수 있다. 서브 블록들(921 내지 925)에도 기준 저항 값들(RREF_1 내지 RREF_63)에 기초한 기준 전압들(VREF_1 내지 VREF_63)이 인가될 수 있다.
판독 회로는 서브 블록들(921 내지 925) 중 소스 비트-셀 블록(910)의 합성 저항 값에 대응하는 서브 블록을 검출하고, 검출된 서브 블록을 이용하여 MAC 연산 결과의 디지털 값을 판독할 수 있다. 판독 회로는 비교기를 통해 감지 전압(VSENSE)과 기준 전압들(VREF_1 내지 VREF_63)을 비교할 수 있고, 비교 결과에 기초하여 MAC 연산 결과의 디지털 값을 결정할 수 있다. 예를 들어, 서브 블록들(921 내지 925)에는 기준 저항 값들(RREF_1 내지 RREF_63) 및/또는 기준 전압들(VREF_1 내지 VREF_63)에 따라 서로 다른 디지털 값이 할당될 수 있고, 판독 회로는 비교 결과에 따라 검출된 서브 블록의 디지털 값에 기초하여 MAC 연산 결과의 디지털 값을 결정할 수 있다.
일 실시예에 따르면, 도 8의 MAC 연산 회로 구조에 도 9의 판독 구조가 적용될 수 있다. 도 8의 서브 비트-셀 블록(820)은 서로 다른 기준 저항 값에 대응하는 서브 블록들(921 내지 925)을 포함할 수 있고, 판독 회로(830)는 감지 전압(VSENSE)과 기준 전압들(VREF_1 내지 VREF_63)을 비교하여 로컬 소스 비트-셀 블록들(811 내지 814)의 개별 MAC 연산 결과의 디지털 값을 판독할 수 있다. 예를 들어, 제1 로컬 소스 비트-셀 블록(811)가 입력 신호에 기초하여 제1 개별 MAC 연산 결과를 결정하면, 판독 회로(830)는 서브 블록들(921 내지 925) 중 제1 로컬 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 검출된 서브 블록을 이용하여 제1 개별 MAC 연산 결과의 제1 디지털 값을 판독할 수 있다. 그 밖에, MAC 연산 회로(900)에는 도 1 내지 도 8 및 도 10 내지 도 13의 설명이 적용될 수 있다.
도 10은 일 실시예에 따른 컴퓨팅 동작을 나타낸 동작 흐름도이다. 도 10을 참조하면, 단계(1010)에서 MAC 연산 회로는 복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정한다. 복수의 소스 비트-셀들은 입력 신호에 기초하여 각각 부분 연산 결과(예: 곱셈 결과)를 나타내는 저항 값을 결정할 수 있고, 소스 비트-셀 블록의 합성 저항 값은 부분 연산 결과의 합에 대응하는 MAC 연산 결과를 나타낼 수 있다. MAC 연산 회로는 복수의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 복제 비트-셀 블록의 합성 저항 값을 소스 비트-셀 블록의 합성 저항 값에 매칭시킬 수 있다. 예를 들어, MAC 연산 회로는 바이너리 서치를 위한 그룹 별로 저항 값을 조절할 수 있다. 이때, 매칭된 복제 비트-셀 블록의 합성 저항 값은 MAC 연산 결과의 디지털 값을 나타낼 수 있다.
단계(1020)에서 MAC 연산 회로는 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록을 이용하여 MAC 연산 결과의 디지털 값을 판독한다.
일 실시예에 따르면, MAC 연산 회로는 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하여 MAC 연산 결과의 디지털 값을 판독할 수 있다. MAC 연산 회로는 소스 비트-셀 블록과 복제 비트-셀 블록을 비교하는 비교기의 비교 결과에 기초하여 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절할 수 있다. 예를 들어, 복제 비트-셀 블록은 소스 비트-셀 블록에 직렬로 연결될 수 있고, 비교기는 소스 비트-셀 블록에 걸리는 전압에 기초하여 소스 비트-셀 블록의 합성 저항 값과 복제 비트-셀 블록의 합성 저항 값을 비교할 수 있다.
MAC 연산 회로는 바이너리 서치를 이용하여 복제 비트-셀 블록들 중 적어도 일부의 상태를 조절할 수 있다. 예를 들어, MAC 연산 회로는 첫 번째 스테이지에서의 소스 비트-셀 블록과 복제 비트-셀 블록 간의 비교 결과에 기초하여 복제 비트-셀 블록의 1/2에 해당하는 제1 그룹의 비트-셀들의 상태를 결정할 수 있고, 두 번째 스테이지에서의 소스 비트-셀 블록과 복제 비트-셀 블록 간의 비교 결과에 기초하여 복제 비트-셀 블록의 나머지 1/2의 1/2에 해당하는 제2 그룹의 비트-셀들의 상태를 결정할 수 있다. 이때, 제1 그룹의 비트-셀들의 상태에 대응하여 MAC 연산 결과의 디지털 값의 첫 번째 비트가 결정될 수 있고, 제2 그룹의 비트-셀들의 상태에 대응하여 MAC 연산 결과의 디지털 값의 두 번째 비트가 결정될 수 있다.
다른 일 실시예에 따르면, MAC 연산 회로는 복제 비트-셀 블록의 복수의 서브 블록들을 이용하여 MAC 연산 결과의 디지털 값을 판독할 수 있다. 복제 비트-셀 블록은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함할 수 있고, MAC 연산 회로는 복수의 서브 블록들 중 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 검출된 서브 블록을 이용하여 MAC 연산 결과의 디지털 값을 판독할 수 있다.
도 11은 일 실시예에 따른 상태 조절 기반의 판독 동작을 나타낸 동작 흐름도이다. 도 11을 참조하면, 단계(1101)에서 MAC 연산 회로는 소스 비트-셀 블록을 통해 MAC 연산 결과를 결정한다. MAC 연산 회로는 소스 비트-셀 블록에 입력 신호를 인가할 수 있고, 입력 신호의 입력 값과 각 소스 비트-셀의 웨이트 값 간의 부분 연산에 기초하여 MAC 연산 결과가 결정될 수 있다. MAC 연산 결과는 소스 비트-셀 블록의 합성 저항 값에 반영될 수 있다.
단계(1102)에서 MAC 연산 회로는 복제 비트-셀 블록 및 비트 인덱스(x)를 초기화한다. 복제 비트-셀은 웨이트 값에 대응하는 저항기 배치를 가질 수 있고, 입력 신호에 응답하여 연산 결과에 대응하는 저항 값을 나타낼 수 있다. 복제 비트-셀들은 미리 정해진 저항기 배치로 초기화될 수 있고, MAC 연산 회로는 입력 신호를 통해 복제 비트-셀의 저항 값을 결정할 수 있다. 예를 들어, 복제 비트-셀이 도 5와 같은 구조를 갖는 경우, 복제 비트-셀은 제1 저항기(R1)에 제1 저항 값(RH)을 부여하고, 제2 저항기(R2)에 제2 저항 값(RL)을 부여하는 제1 저항기 배치로 초기화될 수 있다. 이 경우, MAC 연산 회로는 1의 입력 신호를 통해 복제 비트-셀의 저항 값을 제1 저항 값(RH)으로 만들 수 있고, 0의 입력 신호를 통해 복제 비트-셀의 저항 값을 제2 저항 값(RL)으로 만들 수 있다. 비트 인덱스(x)는 목표 비트 정밀도에 기초하여 초기화될 수 있다. 예를 들어, 목표 비트 정밀도가 p-비트(예: p=6)라면, 비트 인덱스(x)는 p-1(예: x=5)로 초기화될 수 있다.
단계(1103)에서 MAC 연산 회로는 복제 비트-셀 블록을 소스 비트-셀 블록에 연결할 수 있다. 예를 들어, 직렬 연결이 적용될 수 있다. MAC 연산 회로는 소스 비트-셀 블록 및 복제 비트-셀 블록의 양단에 구동 전압을 인가할 수 있다. 구동 전압은 소스 비트-셀 블록의 합성 저항(이하, 소스 합성 저항으로 지칭) 및 복제 비트-셀 블록의 합성 저항(이하, 복제 합성 저항으로 지칭)에 따라 소스 비트-셀 블록 및 복제 비트-셀 블록에 분배될 수 있다.
단계(1104)에서 MAC 연산 회로는 소스 합성 저항 값(RTOTAL)과 복제 합성 저항 값(RSAR)을 비교한다. MAC 연산 회로는 바이너리 서치를 통해 소스 합성 저항 값(RTOTAL)을 찾을 수 있다. 이하 바이너리 서치를 통해 소스 합성 저항 값(RTOTAL)을 찾는 것을 설명하지만, 소스 합성 저항 값(RTOTAL)을 찾는데 다른 다양한 방식이 이용될 수 있다. 첫 번째 스테이지에서 MAC 연산 회로는 복제 비트-셀 회로의 1/2에 해당하는 제1 그룹의 복제 비트-셀들을 제1 저항 값(RH)으로 만들고, 나머지 1/2의 복제 비트-셀들을 제2 저항 값(RL)으로 만들 수 있다.
MAC 연산 회로는 소스 비트-셀 블록에 걸리는 전압과 복제 비트-셀 블록에 걸리는 전압에 기초하여 소스 합성 저항(RTOTAL)과 복제 합성 저항(RSAR)을 비교할 수 있다. MAC 연산 회로는 감지 전압과 기준 전압을 비교하는 비교기를 이용할 수 있다. 감지 전압은 구동 전압 중 소스 비트-셀 블록에 걸리는 전압일 수 있고, 기준 전압은 감지 전압의 1/2일 수 있다. 이러한 구성에 따르면, 소스 합성 저항(RTOTAL)이 복제 합성 저항(RSAR)보다 큰 경우, 감지 전압이 기준 전압보다 크게 나타날 수 있다. 따라서, 감지 전압 및 기준 전압을 통해 소스 합성 저항(RTOTAL)과 복제 합성 저항(RSAR)이 비교될 수 있다.
MAC 연산 회로는 첫 번째 스테이지에서의 소스 비트-셀 블록과 복제 비트-셀 블록 간의 비교 결과에 기초하여 제1 그룹의 비트-셀들의 상태를 결정할 수 있다. 또한, MAC 연산 회로는 제1 그룹의 비트-셀들의 상태에 대응하여 MAC 연산 결과의 디지털 값의 첫 번째 비트를 결정할 수 있다. 소스 합성 저항(RTOTAL)이 복제 합성 저항(RSAR)보다 크다면 제1 그룹의 저항 값을 제1 저항 값(RH)으로 결정할 수 있다. 이 경우, 단계(1105)에서 MAC 연산 회로는 첫 번째 스테이지의 비트 값(D[x])을 1로 결정할 수 있다. 예를 들어, x=5일 수 있고, D[5]는 MSB에 해당할 수 있다. 소스 합성 저항(RTOTAL)이 복제 합성 저항(RSAR)보다 작다면 제1 그룹의 저항 값을 제2 저항 값(RL)으로 결정할 수 있다. 이 경우, 단계(1106)에서 MAC 연산 회로는 현재 비트 값(D[x])을 0으로 결정할 수 있다.
MAC 연산 회로는 두 번째 스테이지에서 복제 비트-셀 블록에서 제1 그룹을 제외한 나머지의 1/2에 해당하는 제2 그룹의 비트-셀들의 상태를 결정할 수 있다. 제2 그룹의 비트-셀들의 상태는 MAC 연산 결과의 디지털 값의 두 번째 비트를 결정할 수 있다. 단계(1107)에서 MAC 연산 회로는 복제 합성 저항 값(RSAR)을 조절할 수 있다. MAC 연산 회로는 제2 그룹의 1/2의 복제 비트-셀들을 제1 저항 값(RH)으로 만들고, 나머지 1/2의 복제 비트-셀들을 제2 저항 값(RL)으로 만들 수 있다. MAC 연산 회로는 x 값을 1만큼 감소시키고, 단계(1104)를 다시 수행할 수 있다. 단계(1140)의 비교 결과에 따라 두 번째 비트 값이 결정될 수 있다. x 값이 0이 될 때까지 이러한 동작들이 반복될 수 있고, 단계(1109)에서 x가 0보다 작은 것으로 결정되면, 단계(1110)에서 MAC 연산 회로는 디지털 값(D[m:0])을 출력할 수 있다.
도 12는 일 실시예에 따른 MAC 연산 회로에 의해 구현될 수 있는 뉴럴 네트워크 연산의 예시를 나타낸다. 뉴럴 네트워크(1200)는 딥 뉴럴 네트워크(DNN, deep neural network)의 예시에 해당할 수 있다. DNN은 완전 연결 네트워크(fully connected network), 딥 컨볼루셔널 네트워크(deep convolutional network) 및 리커런트 뉴럴 네트워크(recurrent neural network) 등을 포함할 수 있다. 뉴럴 네트워크(1200)는 딥 러닝에 기반하여 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 객체 분류, 객체 인식, 음성 인식 및 이미지 인식 등을 수행할 수 있다. 딥 러닝은 빅 데이터 세트로부터 이미지 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법으로 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 입력 데이터 및 출력 데이터를 서로 매핑할 수 있다.
도 12에는 설명의 편의를 위해 히든 레이어가 2개의 레이어를 포함하는 것으로 도시되었나, 히든 레이어는 다양한 수의 레이어들을 포함할 수 있다. 또한, 도 12에서 뉴럴 네트워크(1200)는 입력 데이터를 수신하기 위한 별도의 입력 레이어(1210)를 포함하는 것으로 도시되었으나, 입력 데이터가 히든 레이어에 직접 입력될 수 있다. 뉴럴 네트워크(1200)에서 출력 레이어를 제외한 레이어들의 인공 노드들은 출력 신호를 전송하기 위한 링크들을 통해 다음 레이어의 인공 노드들과 연결될 수 있다. 링크들의 수는 다음 레이어에 포함된 인공 노드들의 수에 대응할 수 있다.
히든 레이어에 포함된 각각의 인공 노드에는 이전 레이어에 포함된 인공 노드들의 출력이 가중된 형태로 입력될 수 있다. 가중된 형태의 입력은 가중된 입력(weighted input)이라 불릴 수 있으며, 이는 이전 레이어에 포함된 인공 노드들의 출력에 가중치(weight)가 곱해진 것이다. 가중치는 뉴럴 네트워크(1200)의 파라미터로 지칭될 수 있다. 이런 가중된 입력들의 합에 활성 함수(activation function)가 적용되어 다음 레이어로 출력될 수 있다. 활성 함수는 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent; tanh) 및 렐루(rectified linear unit; ReLU)를 포함할 수 있고, 활성 함수에 의해 뉴럴 네트워크(1200)에 비선형성이 형성될 수 있다. 출력 레이어에 포함된 각각의 인공 노드에는 이전 레이어에 포함된 인공 노드들의 출력이 가중된 형태로서 가중된 입력들이 입력될 수 있다.
딥러닝 알고리즘 구동을 위한 인메모리 연산(In memory computing)에 도 1 내지 도 13을 통해 설명한 MAC 연산 회로가 이용될 수 있다. 예를 들어, 뉴럴 네트워크(1200)의 노드(1221) 간에 전달되는 가중된 입력의 산출은 곱셉과 덧셈을 반복하는 MAC 연산으로 구성될 수 있다. 뉴럴 네트워크(1200)의 임의의 한 노드(1221)의 출력은 아래 수학식과 같이 나타낼 수 있다.
위의 수학식은 임의의 레이어에서 m개의 가중된 입력 값들에 대한 i번째 노드(1221)의 출력 값 yi를 나타낼 수 있다. xj는 이전 레이어의 j번째 출력 값(예를 들어, 노드 값)을 나타낼 수 있고, wj,i는 이전 레이어의 j번째 출력 값 및 i번째 노드(1221)에 적용되는 가중치를 나타낼 수 있다. wj,ixj는 해당 레이어의 i번째 노드(1221)에 있어서 m개의 가중된 입력 값들 중 j번째 가중된 입력을 나타낼 수 있고, f()는 활성화 함수를 나타낼 수 있다. 수학식 7에 나타난 바와 같이, 활성화 함수에 대해, 노드 값 xj 및 가중치 wj,i의 곱셈 누적 결과가 사용될 수 있다. 다시 말해, 원하는 시점에 적절한 노드 값 xj 및 가중치 wj,i을 로드(load)해야 하는 메모리 접근 동작(memory access operation)과 이들을 곱하고 더하는 MAC연산이 반복될 수 있다.
일 실시예에 따르면 MAC 연산 회로의 비트-셀들은, 복수의 노드들을 포함하는 레이어를 포함하는 뉴럴 네트워크(1200)에서, 복수의 노드들을 연결하는 연결선의 연결 가중치에 대응하는 저항(resistance)을 가질 수 있다. 복수의 비트-셀들이 배치된 입력 라인들을 따라 제공되는 입력 전압 신호는, 노드 값 xj에 대응하는 값을 나타낼 수 있다. 따라서, MAC 연산 회로는, 뉴럴 네트워크(1200)의 실행에 요구되는 연산들 중 적어도 일부를 수행할 수 있다. MAC 연산 회로에서 비트-셀들의 저항 값들은 고정되는 것은 아니고, 상술한 바와 같이 메모리에 저장된 가중치 값에 대응하는 저항 값으로 변경될 수도 있다.
다만, 일 실시예에 따른 MAC 연산 회로의 적용을 이로 한정하는 것은 아니고, 이외에도 아날로그 회로 특성을 사용한 복수 입력 데이터를 저전력으로 빠르게 처리해야하는 연산 동작에도 활용될 수 있다.
도 13은 일 실시예에 따른 전자 장치를 나타낸 블록도이다. 도 13을 참조하면, 전자 장치(1300)는 프로세서(1310), 메모리(1320), 카메라(1330), 저장 장치(1340), 입력 장치(1350), 출력 장치(1360) 및 네트워크 인터페이스(1370)를 포함할 수 있으며, 이들은 통신 버스(1380)를 통해 서로 통신할 수 있다. 예를 들어, 전자 장치(1300)는 이동 전화, 스마트 폰, PDA, 넷북, 태블릿 컴퓨터, 랩톱 컴퓨터 등과 같은 모바일 장치, 스마트 워치, 스마트 밴드, 스마트 안경 등과 같은 웨어러블 디바이스, 데스크탑, 서버 등과 같은 컴퓨팅 장치, 텔레비전, 스마트 텔레비전, 냉장고 등과 같은 가전 제품, 도어 락 등과 같은 보안 장치, 자율주행 차량, 스마트 차량 등과 같은 차량의 적어도 일부로 구현될 수 있다. 전자 장치(1300)는 MAC 연산 회로(100, 500, 700, 1200)를 구조적 및/또는 기능적으로 포함할 수 있다. 예를 들어, MAC 연산 회로(100, 500, 700, 1200)는 프로세서(1310) 및/또는 메모리(1320)의 일부로 구현되거나, 혹은 전자 장치(1300)의 가속기(accelerator, 미도시)의 일부로 구현될 수 있다.
프로세서(1310)는 전자 장치(1300) 내에서 실행하기 위한 기능 및 명령어들을 실행한다. 예를 들어, 프로세서(1310)는 메모리(1320) 또는 저장 장치(1340)에 저장된 명령어들을 처리할 수 있다. 프로세서(1310)는 도 1 내지 도 12를 통하여 설명된 하나 이상의 동작을 수행할 수 있다. 메모리(1320)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함할 수 있다. 메모리(1320)는 프로세서(1310)에 의해 실행하기 위한 명령어들을 저장할 수 있고, 전자 장치(1300)에 의해 소프트웨어 및/또는 애플리케이션이 실행되는 동안 관련 정보를 저장할 수 있다.
카메라(1330)는 사진 및/또는 비디오를 촬영할 수 있다. 저장 장치(1340)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함한다. 저장 장치(1340)는 메모리(1320)보다 더 많은 양의 정보를 저장하고, 정보를 장기간 저장할 수 있다. 예를 들어, 저장 장치(1340)는 자기 하드 디스크, 광 디스크, 플래쉬 메모리, 플로피 디스크 또는 이 기술 분야에서 알려진 다른 형태의 비휘발성 메모리를 포함할 수 있다.
입력 장치(1350)는 키보드 및 마우스를 통한 전통적인 입력 방식, 및 터치 입력, 음성 입력, 및 이미지 입력과 같은 새로운 입력 방식을 통해 사용자로부터 입력을 수신할 수 있다. 예를 들어, 입력 장치(1350)는 키보드, 마우스, 터치 스크린, 마이크로폰, 또는 사용자로부터 입력을 검출하고, 검출된 입력을 전자 장치(1300)에 전달할 수 있는 임의의 다른 장치를 포함할 수 있다. 출력 장치(1360)는 시각적, 청각적 또는 촉각적인 채널을 통해 사용자에게 전자 장치(1300)의 출력을 제공할 수 있다. 출력 장치(1360)는 예를 들어, 디스플레이, 터치 스크린, 스피커, 진동 발생 장치 또는 사용자에게 출력을 제공할 수 있는 임의의 다른 장치를 포함할 수 있다. 네트워크 인터페이스(1370)는 유선 또는 무선 네트워크를 통해 외부 장치와 통신할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (20)
- MAC(multiply-accumulate) 연산 회로에 있어서,
복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정하는 소스 비트-셀 블록;
상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록; 및
상기 복제 비트-셀 블록을 이용하여 상기 MAC 연산 결과의 디지털 값을 판독하는 판독 회로
를 포함하는 MAC 연산 회로. - 제1항에 있어서,
상기 판독 회로는
상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하여 상기 MAC 연산 결과의 상기 디지털 값을 판독하는,
MAC 연산 회로. - 제1항에 있어서,
상기 복수의 소스 비트-셀들은 각각 부분 연산 결과를 나타내는 저항 값을 결정하고,
상기 소스 비트-셀 블록의 합성 저항 값은 상기 부분 연산 결과의 합에 대응하는 상기 MAC 연산 결과를 나타내고,
상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 상기 복제 비트-셀 블록의 합성 저항 값을 상기 소스 비트-셀 블록의 상기 합성 저항 값에 매칭시키는,
MAC 연산 회로. - 제3항에 있어서,
상기 매칭된 상기 복제 비트-셀 블록의 상기 합성 저항 값은 상기 MAC 연산 결과의 상기 디지털 값을 나타내는,
MAC 연산 회로. - 제1항에 있어서,
상기 판독 회로는
상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록을 비교하는 비교기를 포함하고,
상기 비교기의 비교 결과에 기초하여 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하는,
MAC 연산 회로. - 제5항에 있어서,
상기 복제 비트-셀 블록은 상기 소스 비트-셀 블록에 직렬로 연결되고,
상기 비교기는 상기 소스 비트-셀 블록에 걸리는 전압에 기초하여 상기 소스 비트-셀 블록의 합성 저항 값과 상기 복제 비트-셀 블록의 합성 저항 값을 비교하는,
MAC 연산 회로. - 제1항에 있어서,
상기 판독 회로는
바이너리 서치를 이용하여 상기 복제 비트-셀 블록들 중 적어도 일부의 상태를 조절하는,
MAC 연산 회로. - 제1항에 있어서,
상기 판독 회로는
첫 번째 스테이지에서의 상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록 간의 비교 결과에 기초하여 상기 복제 비트-셀 블록의 1/2에 해당하는 제1 그룹의 비트-셀들의 상태를 결정하고,
두 번째 스테이지에서의 상기 소스 비트-셀 블록과 상기 복제 비트-셀 블록 간의 비교 결과에 기초하여 상기 복제 비트-셀 블록의 나머지 1/2의 1/2에 해당하는 제2 그룹의 비트-셀들의 상태를 결정하는,
MAC 연산 회로. - 제8항에 있어서,
상기 제1 그룹의 상기 비트-셀들의 상기 상태에 대응하여 상기 MAC 연산 결과의 상기 디지털 값의 첫 번째 비트가 결정되고,
상기 제2 그룹의 상기 비트-셀들의 상기 상태에 대응하여 상기 MAC 연산 결과의 상기 디지털 값의 두 번째 비트가 결정되는,
MAC 연산 회로. - 제1항에 있어서,
상기 복제 비트-셀 블록은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함하고,
상기 판독 회로는 상기 복수의 서브 블록들 중 상기 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 상기 검출된 서브 블록을 이용하여 상기 MAC 연산 결과의 상기 디지털 값을 판독하는,
MAC 연산 회로. - MAC(multiply-accumulate) 연산 회로에 있어서,
각각 복수의 소스 비트-셀들에 기초하여 입력 신호에 관한 MAC 연산을 수행하는 복수의 로컬 소스 비트-셀 블록들;
상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록; 및
상기 복제 비트-셀 블록을 이용하여 상기 복수의 로컬 소스 비트-셀 블록들의 각 개별 MAC 연산 결과의 디지털 값을 판독하는 판독 회로
를 포함하는 MAC 연산 회로. - 제11항에 있어서,
상기 복수의 로컬 소스 비트-셀 블록들은
상기 복제 비트-셀 블록 및 상기 판독 회로를 공유하는,
MAC 연산 회로. - 제11항에 있어서,
상기 판독 회로는
상기 복수의 로컬 소스 비트-셀 블록들의 각 개별 MAC 연산 결과를 순차적으로 판독하는,
MAC 연산 회로. - 제11항에 있어서,
상기 판독 회로는
상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하여 상기 개별 MAC 연산 결과의 상기 디지털 값을 결정하는,
MAC 연산 회로. - 제11항에 있어서,
상기 복수의 소스 비트-셀들은 각각 부분 연산 결과를 나타내는 저항 값을 결정하고,
상기 소스 비트-셀 블록의 합성 저항 값은 상기 부분 연산 결과의 합에 대응하는 상기 개별 MAC 연산 결과를 나타내고,
상기 판독 회로는 상기 복수의 복제 비트-셀들 중 적어도 일부의 저항 값을 조절하여 상기 복제 비트-셀 블록의 합성 저항 값을 상기 소스 비트-셀 블록의 상기 합성 저항 값에 매칭시키는,
MAC 연산 회로. - 제11항에 있어서,
상기 판독 회로는
상기 복수의 로컬 소스 비트-셀 블록들과 상기 복제 비트-셀 블록을 비교하는 비교기를 포함하고,
상기 비교기의 비교 결과에 기초하여 상기 복수의 복제 비트-셀들 중 적어도 일부의 상태를 조절하는,
MAC 연산 회로. - 제16항에 있어서,
상기 복제 비트-셀 블록은 상기 복수의 로컬 소스 비트-셀 블록들 중 타겟 비트-셀 블록에 직렬로 연결되고,
상기 비교기는 상기 소스 비트-셀 블록에 걸리는 전압에 기초하여 상기 타겟 비트-셀 블록의 합성 저항 값과 상기 복제 비트-셀 블록의 합성 저항 값을 비교하는,
MAC 연산 회로. - 제11항에 있어서,
상기 판독 회로는
바이너리 서치를 이용하여 상기 복제 비트-셀 블록들 중 적어도 일부의 상태를 조절하는,
MAC 연산 회로. - 제11항에 있어서,
상기 복수의 로컬 소스 비트-셀 블록들은 상기 입력 신호에 기초하여 제1 개별 MAC 연산 결과를 결정하는 제1 로컬 소스 비트-셀 블록을 포함하고,
상기 복제 비트-셀 블록은 서로 다른 기준 저항 값에 대응하는 복수의 서브 블록들을 포함하고,
상기 판독 회로는 상기 복수의 서브 블록들 중 상기 제1 로컬 소스 비트-셀 블록의 합성 저항 값에 대응하는 서브 블록을 검출하고, 상기 검출된 서브 블록을 이용하여 상기 제1 개별 MAC 연산 결과의 제1 디지털 값을 판독하는,
MAC 연산 회로. - 복수의 소스 비트-셀들에 기초하여 입력 신호의 MAC 연산 결과를 결정하는 단계; 및
상기 복수의 소스 비트-셀들에 대응하는 복수의 복제 비트-셀들을 포함하는 복제 비트-셀 블록을 이용하여 상기 MAC 연산 결과의 디지털 값을 판독하는 단계
를 포함하는, 컴퓨팅 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210061753A KR20220154346A (ko) | 2021-05-13 | 2021-05-13 | 복제 비트-셀 기반의 mac 연산 장치 및 방법 |
US17/542,833 US20220365752A1 (en) | 2021-05-13 | 2021-12-06 | Apparatus and method with multiply-accumulate operation |
EP22151759.2A EP4089524A1 (en) | 2021-05-13 | 2022-01-17 | Apparatus and method with multiply-accumulate operation |
CN202210117541.7A CN115344233A (zh) | 2021-05-13 | 2022-02-08 | 具有乘法累加运算的设备和方法 |
JP2022042284A JP2022176082A (ja) | 2021-05-13 | 2022-03-17 | 複製ビットセル基盤のmac演算装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210061753A KR20220154346A (ko) | 2021-05-13 | 2021-05-13 | 복제 비트-셀 기반의 mac 연산 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220154346A true KR20220154346A (ko) | 2022-11-22 |
Family
ID=79687029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210061753A KR20220154346A (ko) | 2021-05-13 | 2021-05-13 | 복제 비트-셀 기반의 mac 연산 장치 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220365752A1 (ko) |
EP (1) | EP4089524A1 (ko) |
JP (1) | JP2022176082A (ko) |
KR (1) | KR20220154346A (ko) |
CN (1) | CN115344233A (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10735753B2 (en) * | 2017-10-27 | 2020-08-04 | Khalifa University of Science and Technology | Data compression using memristive crossbar |
US11429850B2 (en) * | 2018-07-19 | 2022-08-30 | Xilinx, Inc. | Performing consecutive mac operations on a set of data using different kernels in a MAC circuit |
US11694076B2 (en) * | 2019-10-14 | 2023-07-04 | Micron Technology, Inc. | Memory sub-system with internal logic to perform a machine learning operation |
-
2021
- 2021-05-13 KR KR1020210061753A patent/KR20220154346A/ko active Search and Examination
- 2021-12-06 US US17/542,833 patent/US20220365752A1/en active Pending
-
2022
- 2022-01-17 EP EP22151759.2A patent/EP4089524A1/en active Pending
- 2022-02-08 CN CN202210117541.7A patent/CN115344233A/zh active Pending
- 2022-03-17 JP JP2022042284A patent/JP2022176082A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115344233A (zh) | 2022-11-15 |
US20220365752A1 (en) | 2022-11-17 |
EP4089524A1 (en) | 2022-11-16 |
JP2022176082A (ja) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11615165B2 (en) | Systems and methods for mapping matrix calculations to a matrix multiply accelerator | |
US10853721B2 (en) | Multiplier accumulator, network unit, and network apparatus | |
EP3742351B1 (en) | Control circuit for multiply accumulate circuit of neural network system | |
TWI793277B (zh) | 用於混合訊號運算的系統與方法 | |
CN109146070B (zh) | 一种支撑基于rram的神经网络训练的外围电路及系统 | |
US10748064B2 (en) | Deep neural network training with native devices | |
JP4620943B2 (ja) | 積和演算回路及びその方法 | |
KR20220097961A (ko) | 인코딩된 데이터를 디코딩하기 위한 순환 신경망 및 시스템 | |
KR102542532B1 (ko) | 혼합-신호 연산 시스템 및 방법 | |
Ma et al. | Go unary: A novel synapse coding and mapping scheme for reliable ReRAM-based neuromorphic computing | |
CN110291501A (zh) | 计算中的错误校正 | |
CN101828233A (zh) | 利用两个选通晶体管的多值存储器存储 | |
US20230005529A1 (en) | Neuromorphic device and electronic device including the same | |
US11189339B1 (en) | Performing in-memory computing based on multiply-accumulate operations using non-volatile memory arrays | |
KR20220154346A (ko) | 복제 비트-셀 기반의 mac 연산 장치 및 방법 | |
KR101939359B1 (ko) | 내부 연산 구조를 포함하는 mtj 메모리 장치 | |
KR20210028063A (ko) | 곱셉 누적기 회로를 이용한 컴퓨팅 장치 및 방법 | |
WO2022150939A1 (zh) | 用于差分输出电压的模数转换器以及模数转换方法 | |
CN115796252A (zh) | 权重写入方法及装置、电子设备和存储介质 | |
Khodabandehloo et al. | Resistive-type CVNS distributed neural networks with improved noise-to-signal ratio | |
JP2022008142A (ja) | 回路を利用して所定の演算を遂行する装置及び方法 | |
KR20220151292A (ko) | 하이브리드 adc 기반의 mac 연산 장치 및 방법 | |
KR20230027453A (ko) | 저항성 소자를 사용하는 용량성 커플링 기반 인메모리 컴퓨팅 장치 및 방법 | |
CN115796250A (zh) | 权重部署方法及装置、电子设备和存储介质 | |
KR20230096905A (ko) | 디퍼런셜 값을 이용하는 시스톨릭 어레이 구조 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |