KR102774724B1 - 컴퓨트 인 메모리 - Google Patents
컴퓨트 인 메모리 Download PDFInfo
- Publication number
- KR102774724B1 KR102774724B1 KR1020220007269A KR20220007269A KR102774724B1 KR 102774724 B1 KR102774724 B1 KR 102774724B1 KR 1020220007269 A KR1020220007269 A KR 1020220007269A KR 20220007269 A KR20220007269 A KR 20220007269A KR 102774724 B1 KR102774724 B1 KR 102774724B1
- Authority
- KR
- South Korea
- Prior art keywords
- signal
- adder
- memory
- bit
- weight
- Prior art date
Links
- 241001442055 Vipera berus Species 0.000 claims description 211
- 238000000034 method Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 20
- 230000000295 complement effect Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 101000739577 Homo sapiens Selenocysteine-specific elongation factor Proteins 0.000 description 3
- 102100037498 Selenocysteine-specific elongation factor Human genes 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
Abstract
컴퓨트 인 메모리(CIM; compute-in-memory) 디바이스는, 행과 열로 배열된 복수의 메모리 셀들을 구비한 메모리 어레이를 갖는다. 상기 복수의 메모리 셀들은 상기 메모리 어레이의 제1 행 및 제1 열에 있는 제1 메모리 셀 및 상기 메모리 어레이의 상기 제1 행 및 제2 열에 있는 제2 메모리 셀을 포함한다. 상기 제1 및 제2 메모리 셀은 각자의 제1 및 제2 가중치 신호를 저장하도록 구성된다. 입력 드라이버는 복수의 입력 신호들을 제공한다. 제1 로직 회로가 상기 입력 드라이버로부터의 제1 입력 신호 및 상기 제1 가중치 신호에 기초하여 제1 출력 신호를 제공하도록 상기 제1 메모리 셀에 커플링된다. 제2 로직 회로가 상기 입력 드라이버로부터의 제2 입력 신호 및 상기 제2 가중치 신호에 기초하여 제2 출력 신호를 제공하도록 상기 제2 메모리 셀에 커플링된다.
Description
관련 출원에 대한 상호참조
본 출원은 2021년 1월 29일 출원된 미국 가특허 출원 번호 제63/143,467호의 이익을 주장하며, 이 출원의 내용은 그 전체가 참조에 의해 여기에 포함된다.
본 개시는 일반적으로 인 메모리 컴퓨팅 또는 컴퓨트 인 메모리(“CIM”, compute-in-memory)에 관한 것이고, 또한 곱셈 누산(“MAC”, multiply-accumulate) 연산과 같은 데이터 프로세싱에 사용되는 메모리 어레이에 관한 것이다. 컴퓨트 인 메모리 또는 인 메모리 컴퓨팅 시스템은, 각각의 계산 단계에 대하여 컴퓨터의 메인 랜덤-액세스 메모리(RAM; random-access memory)과 데이터 저장공간 사이에 많은 양의 데이터를 이동하는 것이 아니라, 메인 RAM에 정보를 저장하고 메모리 셀 레벨에서 계산을 수행한다. 저장된 데이터는 RAM에 저장될 때 훨씬 더 빠르게 액세스되기 때문에, 컴퓨트 인 메모리는 데이터가 실시간으로 분석될 수 있게 해주며, 비지니스 및 머신 러닝 애플리케이션에서 더 빠른 리포팅 및 의사결정을 가능하게 한다. 컴퓨트 인 메모리 시스테의 성능을 개선하기 위한 노력이 계속되고 있다.
컴퓨트 인 메모리(CIM) 디바이스는, 행과 열로 배열된 복수의 메모리 셀들을 구비한 메모리 어레이를 갖는다. 상기 복수의 메모리 셀들은 상기 메모리 어레이의 제1 행 및 제1 열에 있는 제1 메모리 셀 및 상기 메모리 어레이의 상기 제1 행 및 제2 열에 있는 제2 메모리 셀을 포함한다. 상기 제1 및 제2 메모리 셀은 각자의 제1 및 제2 가중치 신호를 저장하도록 구성된다. 입력 드라이버는 복수의 입력 신호들을 제공한다. 제1 로직 회로가 상기 입력 드라이버로부터의 제1 입력 신호 및 상기 제1 가중치 신호에 기초하여 제1 출력 신호를 제공하도록 상기 제1 메모리 셀에 커플링된다. 제2 로직 회로가 상기 입력 드라이버로부터의 제2 입력 신호 및 상기 제2 가중치 신호에 기초하여 제2 출력 신호를 제공하도록 상기 제2 메모리 셀에 커플링된다.
본 개시의 양상은 다음의 상세한 설명으로부터 첨부 도면과 함께 볼 때 가장 잘 이해된다. 산업계에서의 표준 실시에 따라 다양한 특징부들이 실축척대로 도시되지 않은 것을 유의하여야 한다. 사실상, 다양한 특징부들의 치수는 설명을 명확하게 하기 위해 임의로 증가되거나 감소되었을 수 있다. 또한, 도면은 본 발명의 실시예의 예로서 설명을 위한 것이며, 한정하고자 하는 것이 아니다.
도 1은 일부 실시예에 따른 컴퓨트 인 메모리(CIM) 디바이스의 예를 예시한 블록도이다.
도 2는 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 SRAM 메모리 셀의 예를 예시한 개략도이다.
도 3은 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 메모리 셀 및 NOR 게이트의 예를 예시한 개략도이다.
도 4는 일부 실시예에 따라 도 1의 CIM 디바이스에서 SRAM 메모리 셀 및 메모리 셀에 커플링되는 NOR 게이트의 예를 예시한 개략도이다.
도 5는 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 메모리 셀 및 AND 게이트의 예를 예시한 개략도이다.
도 6은 일부 실시예에 따라 도 1의 CIM 디바이스에서 SRAM 메모리 셀 및 메모리 셀에 커플링되는 AND 게이트의 예를 예시한 개략도이다.
도 7은 일부 실시예에 따른 CIM 메모리 어레이의 예를 예시한 개략도이다.
도 8은 일부 실시예에 따른 가산기 트리의 예를 예시한 흐름도이다.
도 9는 일부 실시예에 따른 누산기의 예를 예시한 흐름도이다.
도 10은 일부 실시예에 따라 CIM 출력 계산을 위한 타이밍을 예시한 타이밍도이다.
도 11은 일부 실시예에 따라 복수의 가중치 열들이 조합되는 CIM 메모리 어레이의 부분들을 예시한 블록도이다.
도 12는 일부 실시예에 따라 부호있는(signed)/부호없는(unsigned) 가중치 포맷과 조합된 가산기 회로를 예시한 블록도이다.
도 13은 일부 실시예에 따른 이진 가산기 회로를 예시한 블록도이다.
도 14는 일부 실시예에 따른 2의 보수 가산기 회로를 예시한 블록도이다.
도 15는 일부 실시예에 따른 가산기 회로 구성을 예시한 블록도이다.
도 16은 일부 실시예에 따른 전가산기 회로에 대한 진리표이다.
도 17은 개시된 실시예에 따른 단순화된 가산기 회로의 예를 예시한 개략도이다.
도 18은 개시된 실시예에 따른 전가산기의 예를 예시한 개략도이다.
도 19는 개시된 실시예에 따른 수정된 전가산기의 예를 예시한 개략도이다.
도 20은 개시된 실시예에 따른 CIM 방법을 예시한 흐름도이다.
도 1은 일부 실시예에 따른 컴퓨트 인 메모리(CIM) 디바이스의 예를 예시한 블록도이다.
도 2는 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 SRAM 메모리 셀의 예를 예시한 개략도이다.
도 3은 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 메모리 셀 및 NOR 게이트의 예를 예시한 개략도이다.
도 4는 일부 실시예에 따라 도 1의 CIM 디바이스에서 SRAM 메모리 셀 및 메모리 셀에 커플링되는 NOR 게이트의 예를 예시한 개략도이다.
도 5는 일부 실시예에 따라 도 1의 CIM 디바이스에 사용되는 메모리 셀 및 AND 게이트의 예를 예시한 개략도이다.
도 6은 일부 실시예에 따라 도 1의 CIM 디바이스에서 SRAM 메모리 셀 및 메모리 셀에 커플링되는 AND 게이트의 예를 예시한 개략도이다.
도 7은 일부 실시예에 따른 CIM 메모리 어레이의 예를 예시한 개략도이다.
도 8은 일부 실시예에 따른 가산기 트리의 예를 예시한 흐름도이다.
도 9는 일부 실시예에 따른 누산기의 예를 예시한 흐름도이다.
도 10은 일부 실시예에 따라 CIM 출력 계산을 위한 타이밍을 예시한 타이밍도이다.
도 11은 일부 실시예에 따라 복수의 가중치 열들이 조합되는 CIM 메모리 어레이의 부분들을 예시한 블록도이다.
도 12는 일부 실시예에 따라 부호있는(signed)/부호없는(unsigned) 가중치 포맷과 조합된 가산기 회로를 예시한 블록도이다.
도 13은 일부 실시예에 따른 이진 가산기 회로를 예시한 블록도이다.
도 14는 일부 실시예에 따른 2의 보수 가산기 회로를 예시한 블록도이다.
도 15는 일부 실시예에 따른 가산기 회로 구성을 예시한 블록도이다.
도 16은 일부 실시예에 따른 전가산기 회로에 대한 진리표이다.
도 17은 개시된 실시예에 따른 단순화된 가산기 회로의 예를 예시한 개략도이다.
도 18은 개시된 실시예에 따른 전가산기의 예를 예시한 개략도이다.
도 19는 개시된 실시예에 따른 수정된 전가산기의 예를 예시한 개략도이다.
도 20은 개시된 실시예에 따른 CIM 방법을 예시한 흐름도이다.
다음의 개시는 제공되는 주제의 상이한 특징들을 구현하기 위한 많은 다양한 실시예 또는 예를 제공한다. 컴포넌트 및 구성의 구체적 예가 본 개시를 단순화하도록 아래에 기재된다. 이들은 물론 단지 예일 뿐이며 한정하고자 하는 것이 아니다. 예를 들어, 이어지는 다음 기재에 있어서 제2 특징부 상에 또는 위에 제1 특징부를 형성하는 것은, 제1 및 제2 특징부가 직접 접촉하여 형성되는 실시예를 포함할 수 있고, 제1 및 제2 특징부가 직접 접촉하지 않도록 제1 특징부와 제2 특징부 사이에 추가의 특징부가 형성될 수 있는 실시예도 또한 포함할 수 있다. 또한, 본 개시는 다양한 예에서 참조 번호 및/또는 문자를 반복할 수 있다. 이 반복은 단순하고 명확하게 하기 위한 목적인 것이며, 그 자체가 설명되는 다양한 실시예 및/또는 구성 간의 관계를 지시하는 것은 아니다.
또한, “밑에”, “아래에”, “하부”, “위에”, “상부” 등과 같은 공간적으로 상대적인 용어는 도면에 예시된 바와 같이 하나의 구성요소 또는 특징부의 또다른 구성요소(들) 또는 특징부(들)에 대한 관계를 기재하고자 설명을 쉽게 하기 위해 여기에서 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시된 배향에 더하여 사용중이거나 동작중인 디바이스의 상이한 배향들을 망라하도록 의도된다. 장치는 달리 배향될 수 있고(90도 회전되거나 또는 다른 배향으로), 여기에서 사용된 공간적으로 상대적인 기술자는 마찬가지로 그에 따라 해석될 수 있다.
본 개시는 일반적으로 컴퓨팅 인 메모리(“CIM”)에 관한 것이다. CIM의 응용의 일 예는 곱셈-누산(“MAC”) 연산이다. 컴퓨터 인공 지능(“AI”, artificial intelligence)은 딥 러닝 기술을 사용하며, 여기서 컴퓨팅 시스템은 신경망으로서 조직화될 수 있다. 신경망은 예를 들어 데이터의 분석을 가능하게 하는 복수의 상호접속된 프로세싱 노드들을 지칭한다. 신경망은 새로운 입력 데이터에 대한 계산을 수행하도록 “가중치(weight)”를 계산한다. 신경망은 복수 층의 계산 노드를 사용하며, 여기서 더 깊은 층은 상위 계층에 의해 수행된 계산의 결과에 기초하여 계산을 수행한다.
CIM 회로는 호스트 프로세서에 데이터를 보내야 할 필요 없이 메모리 내에서 국부적으로 동작을 수행한다. 이는 메모리와 호스트 프로세서 사이에 전달되는 데이터의 양을 감소시킬 수 있으며, 따라서 더 높은 쓰루풋 및 성능을 가능하게 할 수 있다. 데이터 이동의 감소는 또한 컴퓨팅 디바이스 내의 전체 데이터 이동의 에너지 소비를 감소시킨다.
일부 개시된 실시예에 따르면, CIM 디바이스는 행과 열로 배열된 메모리 셀들을 갖는 메모리 어레이를 포함한다. 메모리 셀은 가중치 신호를 저장하도록 구성되고, 입력 드라이버가 입력 신호를 제공한다. 메모리 셀들의 각각은 곱셈 회로와 같은 각자의 제1 로직 회로에 커플링되며, 이는 입력 드라이버로부터의 입력 신호 및 대응하는 메모리 셀에 저장된 가중치 신호에 기초하여 출력 신호를 제공한다. 로직 셀의 출력이 누산되거나 가산되어 시스템 출력 값을 획득한다.
MAC 연산의 수학적 설명의 예가 아래에 나타나 있다.
(1)
상기의 식 (1)에서, AI는 제I 입력이고, WIJ는 제I 입력 및 제J 가중치 열에 대응하는 가중치이다. OJ는 제J 가중치 열의 MAC 출력이고, h는 누산된 수이다.
도 1은 본 개시에 따른 예시적인 CIM 디바이스(100)를 예시한 블록도이다. CIM 메모리 어레이(110)는 가중치 신호(W)를 저장하도록 구성된 복수의 메모리 셀들(112)을 포함한다. CIM은 정적 랜덤 액세스 메모리(“SRAM”, static random-access memory)를 포함하는 다양한 메모리 디바이스들로 구현될 수 있다. 통상의 SRAM 디바이스에서, 하나 이상의 워드라인(“WL”)으로부터의 인에이블 신호에 의해 SRAM 셀 내의 하나 이상의 액세스 트랜지스터가 활성화되면 데이터는 하나 이상의 비트라인(“BL”)을 통해 SRAM 셀에 기록되거나 SRAM 셀로부터 판독된다.
도 2는 일부 실시예에 따른 예시적인 메모리 셀(112)을 예시한 회로도이다. 메모리 셀(112)은 6-트랜지스터(6T) SRAM 셀(212)을 포함하지만 이에 한정되는 것은 아니다. 일부 실시예에서, 6개보다 더 많거나 더 적은 트랜지스터가 SRAM 셀(212)을 구현하는데 사용될 수 있다. 예를 들어, 일부 실시예에서 SRAM 셀(212)은 4T, 8T 또는 10T SRAM 구조를 사용할 수 있고, 다른 실시예에서 메모리형 비트 셀 또는 빌딩 유닛을 포함할 수 있다. SRAM 셀(212)은 NMOS/PMOS 트랜지스터 쌍(M1 및 M2)에 의해 형성된 제1 인버터, 및 NMOS/PMOS 트랜지스터 쌍(M3 및 M4)에 의해 형성된 제2 인버터, 및 액세스 트랜지스터/패스 게이트(M5 및 M6)를 포함한다.
전원이 인버터들의 각각에 공급되는데, 예를 들어 트랜지스터(M2 및 M4) 각각의 제1 단자는 전원 공급 VDD에 커플링되며, 트랜지스터(M1 및 M3) 각각의 제1 단자는 기준 전압 VSS, 예를 들어 접지에 커플링된다. 데이터의 비트가 노드 Q에서의 전압 레벨로서 SRAM 셀(212)에 저장되고, 비트 라인(BL)을 통해 회로부에 의해 판독될 수 있다. 노드 Q에의 액세스는 패스 게이트 트랜지스터(M5)에 의해 제어된다. 노드 Qbar(QB)는 Q에서의 값에 대한 보수를 저장하며, 예컨대 Q가 “하이”인 경우 QB는 “로우”일 것이고, 비트 라인 BLbar(BLB)를 통해 회로부에 의해 판독될 수 있다. QB에의 액세스는 패스 게이트 트랜지스터(M6)에 의해 제어된다.
패스 게이트 트랜지스터(M5)의 게이트는 워드 라인(WL)에 커플링된다. 패스 게이트 트랜지스터(M5)의 제1 소스/드레인(S/D) 단자는 비트 라인(BL)에 커플링되고, 패스 게이트 트랜지스터(M5)의 제2 S/D 단자는 노드 Q에서 트랜지스터(M1 및 M2)의 제2 단자에 커플링된다. 마찬가지로, 패스 게이트 트랜지스터(M6)의 게이트는 워드 라인(WL)에 커플링된다. 패스 게이트 트랜지스터(M6)의 제1 S/D 단자는 상보 비트 라인(BLB)에 커플링되고, 패스 게이트 트랜지스터(M6)의 제2 S/D 단자는 노드 QB에서 트랜지스터(M3 및 M4)의 제2 단자에 커플링된다.
도 1로 돌아가서, CIM 디바이스(100)는 입력 드라이버(102) 및 WL 드라이버(104)를 더 포함한다. 입력 드라이버(102)는 로직 회로(114)에 입력 신호(A)를 구동시킨다. WL 드라이버는 메모리 셀(110)의 원하는 행 i를 활성화하도록 WL 신호를 출력하며, 따라서 저장된 가중치 신호(W)를 로직 회로(114)에 제공한다. 메모리 컨트롤러(120)는 제어 입력을 수신하고, 제어 신호를, 메모리 어레이(110)의 비트라인(BL, BLB)에 접속된 SRAM 판독/기록 회로(122)에 제공하여, 저장된 가중치(W)에 대응하는 적합한 비트라인(BL, BLB)(즉, 열)을 선택한다. 예시된 예에서, 4비트 가중치 W[0:3]가 채용되고, 그리하여 4개 열의 메모리 셀(100) 및 로직 회로가 다양한 가중치 값을 저장하는데 사용된다. 따라서, w 비트를 갖는 가중치 값은 w개 열의 메모리 셀(100) 및 대응하는 로직 회로를 사용한다. 로직 회로(114)로부터의 출력 신호가 가산기 회로(116)에 제공되며, 이는 다양한 로직 회로(114)의 출력을 가산한다. 누산기 회로가 가산기 회로(116)에 커플링되고, MAC 출력(OJ)을 제공하도록 구성된다.
상기에 언급된 바와 같이, 일부 실시예에서, 로직 회로(114)는 상기에 나타낸 식 1의 AI x WIJ 부분을 계산하도록 구성된 곱셈기 회로이다. 도 3은 로직 회로(114)가 NOR 게이트(214)인 일 예를 예시하며, 그의 대응하는 메모리 셀(112)로부터 가중치 신호(W)를, 반전된 선택 신호(SELB) 형태의 입력 신호(A)와 함께 수신하여, 가중치 신호(W)와 선택 신호(SELB)의 곱(P)을 출력한다. 도 4는 개시된 실시예의 부가의 양상을 예시하며, 여기서 메모리 셀은 도 2에 도시되고 상기에 설명된 바와 같은 6T SRAM 셀(212)이고 곱셈기 회로(114)는 2 입력 NOR 게이트(214)를 포함한다. NOR 게이트(214)의 하나의 입력은 반전된 가중치 신호를 수신하도록 SRAM 셀(212)의 노드 QB에 커플링되며, NOR 게이트(214)의 다른 입력은 SELB 신호를 수신한다.
도 5는 곱셈기 회로(114)가 AND 게이트(215)인 다른 예를 예시하며, 그의 대응하는 메모리 셀(112)로부터 가중치 신호(W)를, 선택 신호(SEL) 형태의 입력 신호(A)와 함께 수신하여, 가중치 신호(W)와 선택 신호(SEL)의 곱(P)을 출력한다. 도 6은 개시된 실시예의 부가의 양상을 예시하며, 여기서 메모리 셀은 도 2에 도시되고 상기에 설명된 바와 같은 6T SRAM 셀(212)이고 곱셈기 회로(114)는 2 입력 AND 게이트(215)를 포함한다. AND 게이트(215)의 하나의 입력은 가중치 신호를 수신하도록 SRAM 셀(212)의 노드 Q에 커플링되며, AND 게이트(215)의 다른 입력은 SEL 신호를 수신한다.
도 7은 예시적인 CIM 메모리 어레이(110)의 양상을 예시한다. 메모리 셀(112)은 상기에 설명된 SRAM 회로(212) 또는 다른 적합한 메모리 회로를 포함할 수 있다. 곱셈기 회로(114)는 NOR 게이트(214)에 의해 구현되지만, AND 게이트(215)와 같은 다른 로직 회로가 곱셈기 회로에 사용될 수 있다. 도 7에서, 메모리 셀(112)의 각각은 일 비트의 가중치 신호(W)를 저장한다. 이 예에서, 4비트 입력(A) 및 4비트 가중치(W)가 사용되며, 그래서 4개 열 j의 메모리 셀(112) 및 연관된 NOR 게이트(214)(즉, 곱셈기 회로)가 각각의 입력 행 i에 4비트 가중치를 저장하도록 사용된다. 다르게 말하자면, 가중치 신호는 w비트 가중치이며, 여기서 w=4이다. 따라서 어레이(110)의 예시된 부분은 4비트 가중치 값의 하나의 가중치 열 J을 나타내는 “곱셈” 섹션(130)을 포함하며, 여기서 메모리 셀(112)에 저장된 가중치(W)는 NOR 게이트(214)(또는 다른 적합한 로직 회로)를 사용하여 수신된 입력(A)과 곱해진다. 다르게 말하자면, 가중치 열 J은 w 열(j)의 메모리 셀(112) 및 대응하는 NOR 게이트(214)를 갖는다.
본 개시에서, 메모리 셀(112)의 열 및 연관된 로직 회로(214)는 소문자 “j”로 지정된다는 것을 유의하자. 상기에 언급된 바와 같이, 4비트 가중치 W[0:3]를 갖는 예시된 예에서, 4개 열(j)의 메모리 셀을 갖는 CIM 또는 “가중치 열”(즉, 곱셈 섹션(130))은 대문자 J로 지정된다. “누산” 섹션(132)은 곱셈 섹션(130)으로부터의 곱을 수신하여, 아래에 더 설명되는 바와 같이 수신된 곱을 시프트 및 가산한다. 그리하여, 도 7은 다음과 같이 표현되는 MAC 연산을 구현한다.
(2)
여기서, AI는 제I 입력이고, WI는 예시된 열에서의 제I 입력에 대응하는 가중치이고, O는 가산기 트리(116)의 출력이고, h는 누산된 수이다. 예시된 예에서, 멀티사이클 “비트별(bit-wise)” 곱셈이 사용되며, 여기서 4비트 가중치 신호 W[0:3]의 각각의 비트는 차례로 입력 신호(A)의 각각의 비트와 곱해져 부분 합을 제공한다.
예시된 예에서, 인접한 행 i로부터의 NOR 게이트(214)의 곱 출력은 라인(218 및 219)에 의해 가산기 회로(116)에 커플링된다. 보다 구체적으로, 제1 행(i-1)의 NOR 게이트(214)의 곱 출력이 라인(218)에서 수신되고 가산기 트리(116)에 전송되며, 인접한 행(i-2)에서의 NOR 게이트(214)의 곱 출력이 라인(219)으로 가산기 트리(116)에 전송된다.
도 8은 가산기 회로(116)의 가산기 트리(220)의 예의 양상을 예시한다. 가산기 트리(220)는 어레이(110)의 2개의 인접한 행들의 곱 출력들을 가산하는 “sum 2” 브랜치(222)를 포함하는 8개의 가산기 트리 브랜치를 포함한다. 상기에 언급된 바와 같이, 곱 값은 가중치 W[3:0] 및 입력 활성화 드라이버(102)에 의해 제공되는 입력 곱셈기를 포함한다. 도 8에서, 입력 값은 A0...A255(즉, h-1)로 표기된다. sum 2 브랜치(222)의 5비트 가산기(224)는 각각 곱셈기 회로(214)의 2개의 인접한 행들의 2개의 곱 출력들을 가산한다. 따라서, 제1 입력(A0) 및 가중치 W[3:0]의 곱은, 가산기 트리(116)의 sum 2 브랜치(222)에서 최상위 5비트 가산기(224)에 의해, 제2 입력(A1) 및 대응하는 가중치 W[3:0]의 곱에 가산된다.
가산기 트리는 6비트 가산기 회로(228)를 갖는 “sum 4” 브랜치(226), 7비트 가산기 회로(232)를 갖는 “sum 8” 브랜치(230), 8비트 가산기 회로(236)를 갖는 “sum 16” 브랜치(234), 9비트 가산기 회로(240)를 갖는 “sum 32” 브랜치(238), 10비트 가산기 회로(244)를 갖는 “sum 64” 브랜치(242), 11비트 가산기 회로(248)를 갖는 “sum 128” 브랜치(246), 및 12비트 가산기 회로(252)를 갖는 “sum 256” 브랜치(250)를 더 포함한다.
sum 4 브랜치(226)의 6비트 가산기 회로(228)의 각각은 sum 2 브랜치(222)의 2개의 인접한 5비트 가산기(224)의 출력을 수신하고, sum 8 브랜치(230)의 7비트 가산기 회로(232)의 각각은 sum 4 브랜치(226)의 2개의 인접한 6비트 가산기(228)의 출력을 수신하고, sum 16 브랜치(234)의 8비트 가산기 회로(236)의 각각은 sum 8 브랜치(230)의 2개의 인접한 7비트 가산기(232)의 출력을 수신하고, sum 32 브랜치(238)의 9비트 가산기 회로(240)의 각각은 sum 16 브랜치(234)의 2개의 인접한 8비트 가산기(236)의 출력을 수신하고, sum 64 브랜치(242)의 10비트 가산기 회로(244)의 각각은 sum 32 브랜치(238)의 2개의 인접한 9비트 가산기(240)의 출력을 수신하고, sum 128 브랜치(246)의 11비트 가산기 회로(248)의 각각은 sum 64 브랜치(242)의 2개의 인접한 10비트 가산기(244)의 출력을 수신하고, sum 256 브랜치(250)의 12비트 가산기 회로(252)는 sum 128 브랜치(246)의 인접한 11비트 가산기(248)의 출력을 수신한다.
12비트 가산기 회로(252)에 의해 출력되는 12비트 부분 합 PSUM[11:0]은 누산기(124)에 제공되며, 이는 예시된 예에서 부분 합 가산기 및 시프터를 포함한다. 아래에 더 설명되는 바와 같이, 곱 출력에 추가하여, 가산기 회로의 각각은 가중치가 부호있는지(signed)(즉, 음수) 아니면 부호없는지(unsigned) 표시하는 가중치 부호 비트(WS)를 수신한다. 따라서, 예를 들어 입력(AI)과 곱해진 4비트 가중치 W[3:0]는 5비트 가산기(224)에 의해 대응하는 가중치 부호 비트(WS)와 함께 수신된다. 가중치 부호(WS)는 예를 들어 CIM 메모리 어레이(110)와 연관된 레지스터에 저장될 수 있다.
일부 개시된 예에서, 멀티사이클 “비트별” 곱셈이 구성가능(configurable) n비트 부호있는/부호없는 입력에 대하여 사용된다. 아래에 설명되는 바와 같이, 계산은 비트별로 입력을 시프트함으로써 구현된다. 다음은 4비트 입력(A) 및 4비트 가중치(W)를 갖는 예를 예시한다.
(2)
상기 식 2는 다음과 같이 다시 서술될 수 있다.
부호있는 입력의 경우, 2의 보수 가산기 구성이 채용될 수 있다. 따라서, 가중치 입력이 부호있는 경우(WS=1), 최상위 비트(MSB; most significant bit) 계산 결과는 음수로 변경된다(즉, 결과를 반전하고 1을 더함).
도 9는 누산기(124)의 부가의 양상을 포함하는 CIM 디바이스(100)의 예를 예시한다. 앞서 언급된 바와 같이, CIM 메모리 어레이(110)는 가중치 부호 W를 저장하도록 구성된 메모리 셀(112)의 어레이를 포함한다. 입력 신호(Ai)는 입력 레지스터(312)에 저장되고 어레이(110)에 저장된 가중치 W[0:3]와 곱해지고, 가산기 트리(116)는 도 7에 도시된 바와 같이 12비트 부분 합 PSUM[11:0]을 제공한다. WL 드라이버(104)는 메모리 어레이(110)를 활성화하도록 WL 신호를 출력하고, 메모리 컨트롤러(120)는 제어 입력을 수신하며 메모리 어레이(110)의 비트라인에 접속된 SRAM 판독/기록 회로(122)에 제어 신호를 제공한다. 로직 회로 어레이(110)로부터의 출력 신호가 가산기 회로(116)에 제공되고, 누산기 회로(124)는 가산기 회로(116)에 커플링되며 MAC 출력(OJ)을 제공하도록 구성된다.
가산기 트리(116)로부터의 부분 합은 부분 합 회로(310)의 제1 레지스터(314)에 출력된다. 제1 MUX(316)는 부분 합 출력 PSUM[11:0] 및 그의 역을 수신하고, 가중치 부호 입력(WS) 및 최상위 가중치 비트의 곱 SIGNED*MSB에 기초하여 선택된 입력을 출력한다. 따라서, PSUM 입력의 MSB가 부호있는 경우(즉, WS=1), MSB 계산 결과는 결과를 반전하고 1을 더함으로써 음수로 변경된다. 이 부분 합(318)은 20 비트 가산기(310)의 하나의 입력에 제공된다.
20 비트 가산기(310)의 출력은 제2 부분 합 레지스터(320)에 의해 수신되며, 이의 출력은 시프터(322)에 의해 수신되고 1 비트 좌측 시프트되며(즉, 21와 곱해짐), 20 비트 가산기(310)의 제2 입력에서 수신되고 다음 부분 합(318)과 합산된다. 출력 레지스터(330)는 그의 D 입력에서 20비트 가산기(310)의 출력을 수신하고 그의 Q 출력 단자에서 누산기의 출력 Q[19:0]를 제공한다.
도 10은 가산기 트리(116) 및 누산기(124)에 대한 동작을 예시하는 타이밍도이다. 상기에 설명된 예에서, 4비트 가중치 W[0:3]가 나타나 있지만, 다른 가중치 구성이 본 개시의 범위 내에 속한다. 도 10은 5사이클 연산을 예시한다. 입력은 클록 신호 CLK, 5사이클 연산의 시작과 끝을 마킹하는 IMCEN 신호, 및 입력 신호 A[1023:0]를 포함한다. 4비트 입력 신호 A[3:0]의 각각의 비트는 가중치 신호 W[3:0]와 곱해진다. 제1 연산 사이클(350) 동안, 입력 A의 MSB는 CIM 어레이(110)의 로직 회로(114)에 의해 가중치 W[3:0]의 각각의 비트와 곱해지며 가산기 트리(116)에 의해 가산되는 부분 곱을 생성하여 12비트 부분 합 S3이 된다.
제2 연산 사이클(352) 동안, 입력 A의 제2 MSB는 CIM 어레이(110)의 로직 회로(114)에 의해 가중치 W[3:0]의 각각의 비트와 곱해지며 가산기 트리(116)에 의해 가산되는 부분 곱을 생성하여 12비트 부분 합 S2이 된다. 제3 연산 사이클(354) 동안, 입력 A의 제3 MSB는 CIM 어레이(110)의 로직 회로(114)에 의해 가중치 W[3:0]의 각각의 비트와 곱해지며 가산기 트리(116)에 의해 가산되는 부분 곱을 생성하여 12비트 부분 합 S1이 되고, 제4 연산 사이클(356) 동안, 입력 A의 LSB는 CIM 어레이(110)의 로직 회로(114)에 의해 가중치 W[3:0]의 각각의 비트와 곱해지며 가산기 트리(116)에 의해 가산되는 부분 곱을 생성하여 12비트 부분 합 S0이 된다.
부분 합 PSUM[11:0] 출력 S3, S2, S1 및 S0은 한 사이클 지연되며, 그리하여 각각 제2(352), 제3(354), 제4(356) 및 제5(358) 연산 사이클 동안 제1 부분 합 레지스터(314)에 출력된다. 따라서, 제1 연산 사이클(350)에서는, 제1 부분 합 레지스터(314)로부터 20비트 가산기(310)에의 부분 합 입력이 없다. 가산기(310)로부터 레지스터(320) 및 시프터(322)에의 출력도 없으며, 결과적으로 제2 연산 사이클(352)에서 SUM[15:0]=0이다.
상기에 언급된 바와 같이, 제2 연산 사이클(352)에서, S3 부분 합이 제1 레지스터(314)에 제공되고 가산기(310)의 제1 입력에 입력된다. 가산기(314)의 이전 출력(즉, Sum=0)이 제2 레지스터(320)에 의해 수신되고, 시프터(322)에 의해 1비트 좌측 시프트되며, 가산기(310)의 제2 입력에 입력된다. 따라서 제3 연산 사이클(354) 동안 가산기(314)에 의해 출력되는 SUM[15:0]은 S3 부분 합이다. 제3 연산 사이클(354)에서, 제2 MSB에 대한 제2 부분 합 S2이 가산기 트리(116)에 의해 출력되고 제1 레지스터(314)에 의해 수신되며 가산기(310)에 입력된다. 제3 연산 사이클(354) 동안 가산기(314)에 의해 출력되는 합(즉, S3 부분 합)은 레지스터(320)에 의해 출력되고 시프터(322)에 의해 좌측 시프트된다. 제4 연산 사이클(356) 동안, 시프트된 합은 따라서 S2 부분 합에 가산된다.
제4 연산 사이클(356)에서, 제3 MSB에 대한 다음 부분 합 S1이 가산기 트리(116)에 의해 출력되고 제1 레지스터(314)에 의해 수신되며 가산기(310)에 입력된다. 제4 연산 사이클(356) 동안 가산기(314)에 의해 출력되는 합은 레지스터(320)에 의해 출력되고 시프터(322)에 의해 좌측 시프트된다. 제5 연산 사이클(358) 동안, 시프트된 합은 따라서 S1 부분 합에 가산된다.
제5 연산 사이클(358)에서, LSB에 대한 다음 부분 합 S0이 가산기 트리(116)에 의해 출력되고 제1 레지스터(314)에 의해 수신되며 가산기(310)에 입력된다. 제5 연산 사이클(358) 동안 가산기(314)에 의해 출력되는 합은 레지스터(320)에 의해 출력되고 시프터(322)에 의해 좌측 시프트된다. 다음 연산의 제1 연산 사이클(360) 동안, 시프트된 합은 따라서 S0 부분 합에 가산된다. 이 사이클 동안 SRDY 신호가 어서트되고, 이에 응답하여 최종 합 Q[19:0]이 출력 레지스터(330)에 의해 출력된다.
상기에 개시된 프로그램가능 부호있는/부호없는 가중치가 구성가능 n비트 가중치를 지원하도록 사용될 수 있다. 다르게 말하자면, 복수의 CIM 또는 가중치 열 J가 원하는 수 n의 가중치 비트를 저장하도록 조합될 수 있다. 다시 도 7을 참조하면, 예시된 어레이(100)는 4비트 가중치 열 J를 포함한다. 그리하여, 가중치 열 J는 4비트 가중치 값의 각각의 비트를 저장하도록 4개 열의 메모리 셀(112) 및 연관된 NOR 게이트(214)를 갖는다. 더 큰 가중치 값을 원하는 경우, 복수의 가중치 열 J가 조합될 수 있다. 예를 들어, 2개의 4비트 가중치 열 J가 조합되어 8비트 가중치 값을 제공할 수 있다. 부호있는 MSB를 갖는 8비트 가중치의 예가 아래에 나타나 있다.
이러한 8비트 부호있는 가중치는 아래에 나타낸 바와 같이 4비트 부호있는 가중치와 4비트 부호없는 가중치로 분리될 수 있다(16은 첫 번째 4비트 가중치에서 제외됨).
따라서 MAC 연산은 다음과 같이 표현될 수 있다.
(4)
도 11은 예시적인 CIM 메모리 어레이(111)를 예시하며, 여기서 4개의 4비트 가중치 열(J-1, J-2, J-3, J-4)이 16비트 부호있는 가중치 값을 제공하도록 조합된다. 도 11에 도시된 가중치 열(J-1, J-2, J-3, J-4)의 각각은 도 7에 나타낸 예에서와 같이 4비트 가중치를 저장하기 위한 4개의 메모리 어레이 열(j)을 갖는다. 제1 가중치 열(J-1)은 부호있는 반면에, 가중치 값의 MSB만 부호가 있으므로 나머지 가중치 열(J-2, J-3 및 J-4)은 부호가 없다. 입력 드라이버(102)는 가중치 값과 곱해진 입력 신호(AI)의 활성화를 제어한다. 가중치 열(J-1, J-2, J-3, J-4)의 곱 출력은 가중치 열(J)의 각각과 연관된 트리(116)에 의해 부분적으로 합산되고, 부분 합이 시프트/가산 연산을 위해 누산기(124)에 제공되어 최종 CIM 출력을 계산한다.
도 12는 가산기 트리(220)의 sum 2 브랜치(222)의 5비트 가산기 회로(224)의 예를 예시한다. 상기에 언급된 바와 같이, 예시된 예에서, 어레이의 인접한 행들로부터의 4비트 곱 출력은 가산기 트리(116)의 5비트 가산기 회로(224)에 출력된다. 도 8에서, 인접한 행들(218, 219)의 곱 출력은 5비트 가산기(224)에 의해 수신된다. 도 12에서, 인접한 행들(218, 219)의 이들 입력은 각각 A 및 B로 표기된다. 예를 들어, 행 i-1의 NOR 게이트(214)의 4비트 출력은 도 12에서 A[3:0]으로 표기되며, 행 i-2의 NOR 게이트(214)의 4비트 출력은 B[3:0]으로 표기된다.
5비트 가산기 회로(224)는, 제1 출력 비트 A[0] 및 B[0]를 수신하고 제1 캐리 출력 C[1]과 함께 비트 0 합 출력 S[0]을 제공하는 반가산기 회로 HA0를 포함한다. 5비트 가산기 회로(224)는 4개의 전가산기 회로 FA1, FA2, FA3 및 FA4를 더 포함한다. 제1 전가산기 FA1는, 반가산기 HA0로부터 제1 캐리 출력 C[1]과 함께 비트 1 NOR 게이트의 출력 A[1] 및 B[1]을 수신한다. 제1 전가산기 FA1는 입력 A[1] 및 B[1]을 가산하고, 제2 캐리 출력 C[2]과 함께 비트 1 합 출력 S[1]을 제공한다. 제2 전가산기 FA2는, 제1 전가산기 FA1로부터 제2 캐리 출력 C[2]과 함께 비트 2 NOR 게이트의 비트 2 출력을 수신한다. 제2 전가산기 FA2는 입력 A[2] 및 B[2]을 가산하고, 제3 캐리 출력 C[3]과 함께 비트 2 합 출력 S[2]을 제공한다. 제3 전가산기 FA3는, 제2 전가산기 FA2로부터 제3 캐리 출력 C[3]과 함께 비트 3 NOR 게이트(214)의 출력 A[3] 및 B[3]을 수신한다. 제3 전가산기 FA3는 비트 3 입력 A[3] 및 B[3]을 가산하고, 제4 캐리 출력 C[4]과 함께 비트 3 합 출력 S[3]을 제공한다.
제4 전가산기 FA4는, 제3 전가산기 FA3로부터 제4 캐리 출력 C[4]과 함께 2개의 AND 게이트(270 및 272)의 출력을 수신한다. AND 게이트(270)는 그의 입력에서 A[3] 신호 및 A 입력에 대한 가중치 부호(WSA)를 수신하며, AND 게이트(272)는 그의 입력에서 B[3] 신호 및 B 입력에 대한 가중치 부호(WSB)를 수신한다. 가중치 부호 표시자(WS)를 수신하도록 구성된 AND 게이트(270 및 272)를 제공함으로써, 가산기 회로(224)는 아래에 더 설명되는 바와 같이 부호있는 그리고 부호없는 가중치 포맷에 대하여 “전환가능(switchable)”하게 된다.
보다 구체적으로, 가중치가 부호없는 경우, 도 13에 도시된 바와 같이 4비트 이진 가산기(224a)를 사용하여 4비트 가중치 값이 가산될 수 있다. 이진 가산기(224a)는, 제1 출력 비트 A[0] 및 B[0]를 수신하고 제1 캐리 출력 C[1]과 함께 비트 0 합 출력 S[0]을 제공하는 반가산기 회로 HA0를 포함한다. 그러나, 이진 가산기(224a)는 3개의 전가산기 회로 FA1, FA2 및 FA3만 사용한다. 3개의 전가산기 회로 FA1, FA2, FA3는 반가산기 HA0와 함께, 부호없는 4비트 입력 A3[3:0] 및 부호없는 4비트 B[3:0] 입력을 가산할 수 있다.
부호있는 가중치 입력으로써, 2의 보수 가산기 회로(224b)가 도 14에 도시된 바와 같이 가중치 부호 확장(WS)으로 표시된 음의 값의 추가를 위해 사용된다. 2의 보수 가산기(224b)는, 제1 출력 비트 A[0] 및 B[0]를 수신하고 제1 캐리 출력 C[1]과 함께 비트 0 합 출력 S[0]을 제공하는 반가산기 회로 HA0를 포함한다. 5비트 가산기 회로(224)는 4개의 전가산기 회로 FA1, FA2, FA3 및 FA4를 더 포함한다. 제1 전가산기 FA1는, 반가산기 HA0로부터 제1 캐리 출력 C[1]과 함께 비트 1 NOR 게이트의 출력 A[1] 및 B[1]을 수신한다. 제1 전가산기 FA1는 입력 A[1] 및 B[1]을 가산하고, 제2 캐리 출력 C[2]과 함께 비트 1 합 출력 S[1]을 제공한다. 제2 전가산기 FA2는, 제1 전가산기 FA1로부터 제2 캐리 출력 C[2]과 함께 비트 2 NOR 게이트의 비트 2 출력을 수신한다. 제2 전가산기 FA2는 입력 A[2] 및 B[2]을 가산하고, 제3 캐리 출력 C[3]과 함께 비트 2 합 출력 S[2]을 제공한다. 제3 전가산기 FA3는, 제2 전가산기 FA2로부터 제3 캐리 출력 C[3]과 함께 비트 3 NOR 게이트(214)의 출력 A[3] 및 B[3]을 수신한다. 제3 전가산기 FA3는 비트 3 입력 A[3] 및 B[3]을 가산하고, 제4 캐리 출력 C[4]과 함께 비트 3 합 출력 S[3]을 제공한다.
제4 전가산기 FA4는, 제3 전가산기 FA3로부터 제4 캐리 출력 C[4]과 함께 비트 3 NOR 게이트(214)의 출력 A[3] 및 B[3]을 수신한다. 제3 전가산기 FA3는 비트 3 입력 A[3] 및 B[3]을 가산하고, 제4 캐리 출력 C[4]과 함께 비트 3 합 출력 S[3]을 제공한다.
도 12로 돌아가서, AND 게이트(270 및 272)의 추가는 가산기(224)를 “전환가능”하게 하며, 그리하여 MSB 가중치 입력 A[3], B[3]의 어느 것도 부호있지 않다면, AND 게이트(270 및 272)는 둘 다 0을 출력하고 제4 전가산기 FA4는 효과적으로 회로에서 제거되며, 제4 캐리 출력 C[4]이 제5 합 비트 S[4]를 제공한다. 대안으로서, 가중치 입력 A[3], B[3]의 어느 하나가 부호있다면, AND 게이트(270, 272)는 MSB 가중치 입력 A[3], B[3]에 기초하여 출력을 제공한다. 제4 전가산기 FA4의 S[4] 출력은 합 출력 S[3]에 부호 확장을 제공한다.
도 12에 도시된 5비트 가산기(224)가 도 8에 도시된 가산기 트리(220)의 sum 2 브랜치(222)에 사용된다. 5비트 가산기(224)의 5비트 출력 S[4:0]는 가산기 트리(220)의 sum 4 브랜치(226)의 6비트 가산기(228)에 의해 수신된다. 도 15는 가산기 트리(220)에 사용된 가산기의 일반 형태(225)를 예시한다. 가산기의 각각은 각자의 곱 비트 A[0:n] 및 B[0:n]를 수신하고, MSB 가산기 n은 1비트 가중치 부호(WS)를 더 수신한다. 예를 들어, 5비트 가산기(224)는 4 비트 곱 신호 A[0:3] 및 B[0:3] 뿐만 아니라 1비트 가중치 부호 확장(WS)을 수신한다. 그리하여, 5비트 가산기(224)는 1개의 반가산기 HA 및 4개의 전가산기 FA1-FA4를 채용한다.
따라서, 도 15에 도시된 일반 가산기 회로(225)는 n 합 출력을 제공하는 n개 가산기를 갖는다. n개 가산기는, A[0] 및 B[0] 곱 입력을 수신하고 S[0] 합 출력을 출력하는 반가산기 Adder0를 포함한다. n개 가산기는 n-1개 전가산기를 더 포함한다. 제1 전가산기 Adder1는 A1 및 B1 입력 뿐만 아니라, 반가산기 adder0로부터 캐리 출력 Co도 수신한다. 전가산기의 각각은, 이전 가산기로부터 적합한 A 및 B 입력 뿐만 아니라 캐리 인 비트 Ci도 수신하고, 대응하는 합 출력 및 캐리 출력 비트 Co를 출력한다.
제n 가산기(전가산기)는 n-1 가산기로부터 부호 확장 WS 및 캐리 인 비트 뿐만 아니라 An 및 Bn 입력도 수신하고, Adder n은 캐리 아웃 비트 Co 및 S[n] 합 비트를 출력하며, 이는 WS 비트이다. 예시된 예에서, Adder n은 그의 캐리 인 입력에서 Adder n-1의 캐리 아웃 비트의 역을 수신한다(즉, Carry in Bar(CiB)).
도 16은 도 15에 도시된 가산기 회로(225)의 제n 가산기에 대한 진리표를 예시한다. 도 12와 함께 설명된 바와 같이, 제n 가산기(즉, FA4)는 C[4] 캐리 인 비트(Ci) 및 AND 게이트(270 및 272)의 출력을 수신한다. AND 게이트(270 및 272)는 MSB 곱 비트 A[3] 및 B[3]을 각각, 대응하는 가중치 부호 확장 비트 WSA 및 WSB와 함께 수신한다. 도 16은 A, B 및 Ci의 다양한 입력 조합에 대응하는 부호없는 가중치(WS=0) 및 부호있는 가중치(WS=1)의 합 출력을 예시한다.
WS 비트가 1인 경우, 즉 가중치가 부호있는 경우, A=B=0, Ci=1 및 A=B=1, Ci=0인 경우는 제n 가산기(도 12에서 FA4)에 대하여 일어나지 않을 것인데, AND 게이트(270, 272)의 출력이 A 및 B 입력을 따를 것이기 때문이다. 예를 들어, 도 12를 참조하면, FA3 및 FA4 전가산기(즉, 제n-1 및 제n 가산기)는 둘 다, WSA 및 WSB 확장이 1일 때(부호있는 가중치) A[3] 및 B[3] 입력을 수신한다. A[3]=B[3]=0인 경우, FA3 가산기의 캐리 아웃 비트 Co는 0일 것이다. 따라서, FA4 가산기에 대하여 A=B=0, Ci=1의 경우는 일어나지 않을 것이다. 마찬가지로, A[3]=B[3]=1인 경우, FA3 가산기의 캐리 아웃 비트 Co는 1일 것이고, FA4 가산기에 대하여 A=B=1, Ci=0의 경우도 또한 일어나지 않을 것이다. 또한, 제n 가산기의 오버플로우(즉, 캐리)는 드롭된다. 따라서, 제n 가산기 회로의 회로는 단순화될 수 있으며, 따라서 이 전가산기를 구현하는데 사용되는 트랜지스터의 수를 감소시킬 수 있다.
도 17은 도 12에 도시된 5비트 가산기(224)의 전가산기 FA4와 같은, 제n 가산기에 사용되는 가산기 회로(280)의 예를 예시한다. 2개의 AND 게이트(270, 272)를 조합하는 것을 종래의 전가산기 회로와 비교해 보면, 도 17에 도시된 회로는 일부 예에서 22 트랜지스터 만큼 트랜지스터 카운트를 감소시킨다. 도 17의 가산기 회로(280)는, A 및 B 입력 비트 및 CiB 신호(즉, n-1 가산기로부터 수신되는 반전된 Ci 신호)를 수신하도록 구성되는 입력 회로(282)를 구현하는 10개의 트랜지스터를 사용한다. 이들 입력에 기초하여, 중간 신호가 노드(284)에서 제공된다. 노드(284)는 출력 회로(286)에의 입력이며, 출력 회로(286)는 또한 CiB 신호를 SIGN 확장 신호 및 그의 역 SIGNB와 함께 수신하여, Sn 합 출력을 제공한다.
상기에 언급된 바와 같이, 단순화된 가산기 회로(280)는 이전 전가산기(n-1 가산기)로부터 캐리 아웃 신호(Co)의 역을 수신한다. 따라서, n-1 가산기는 Co 신호의 역을 출력하도록 수정된다(즉, CiB 신호). 도 18은 도 15에 도시된 Adder1 전가산기와 같은, 전가산기 회로의 예를 예시한 개략도이다. 예시된 Adder1 회로는 캐리 아웃 단자(292)에서 캐리 아웃 신호 Co를 제공하는 인버터(290)를 포함한다. 캐리 아웃 비트 Co는 후속 가산기의 캐리 인 단자 Ci에 출력된다.
그러나, 마지막 전가산기 Adder n은 이전 가산기 Adder n-1로부터 캐리 아웃 비트 Co의 역을 수신한다. 도 19는 Adder n-1의 예를 예시하며, 여기서 캐리 아웃 신호의 역이 캐리 출력 단자(292)에서 출력되도록 인버터(290)는 제거되고, 캐리 출력 단자(292)는 반전된 캐리 입력 CiB를 최종 전가산기 Adder n에 제공한다. 앞서 설명된 바와 같이, 최종 가산기 Adder n의 예는 도 17의 단순화된 가산기 회로(280)에 도시되어 있다.
도 20은 개시된 실시예에 따른 CIM 방법의 예를 예시한 흐름도이다. 도 7 및 도 8을 더 참조하여, 방법(400)은 동작 410에서 복수의 메모리 셀(112)에 복수의 가중치 신호 W[3:0]을 저장하는 것을 포함한다. 메모리 셀(112)의 각각은 w비트 가중치 신호의 일 비트를 저장한다. 동작 412에서 복수의 로직 회로(214)가 제공되며, 이는 복수의 메모리 셀 중의 각자의 메모리 셀에 접속된다. 동작 414에서 입력 신호 AI가 복수의 로직 회로(214)에 제공된다. 동작 416에서 로직 회로(214)는 복수의 곱 신호를 제공하기 위해 가중치 신호 W[3:0]를 입력 신호 AI와 곱하도록 구성된다. 동작 418에서, 복수의 곱 신호가 복수의 로직 회로(214)로부터 가산기 트리(220)에 출력된다. 동작 420에서 가중치 부호 신호(WS)가 제공된다. 가중치 부호 신호(WS)는 가중치 신호가 부호있는지 부호없는지 표시하도록 구성된다. 동작 422에서, 곱 신호 및 가중치 부호 신호에 기초하여 부분 합 신호가 가산기 트리(220)에 의해 출력된다.
따라서, 본 개시는, CIM 가중치를 저장하기 위한 메모리 셀을 포함하며 곱셈 회로가 메모리 셀의 각각에 커플링되어 있는 CIM 시스템을 제공한다. 개시된 시스템은 멀티사이클 입력을 사용하여 입력 신호를 열 기반의(column-based) 저장된 가중치와 곱하도록 구성된다. 입력 신호 및/또는 가중치 신호는 부호있거나 부호없을 수 있고, 곱셈 회로의 곱 출력은 가산기 트리 및 누산기에 의해 누산된다.
개시된 실시예는, 행과 열로 배열된 복수의 메모리 셀들을 구비한 메모리 어레이를 갖는 CIM 디바이스를 포함한다. 상기 복수의 메모리 셀들은 상기 메모리 어레이의 제1 행 및 제1 열에 있는 제1 메모리 셀 및 상기 메모리 어레이의 상기 제1 행 및 제2 열에 있는 제2 메모리 셀을 포함한다. 상기 제1 및 제2 메모리 셀은 각자의 제1 및 제2 가중치 신호를 저장하도록 구성된다. 입력 드라이버가 복수의 입력 신호들을 제공하도록 구성되고, 제1 로직 회로가 상기 입력 드라이버로부터의 제1 입력 신호 및 상기 제1 가중치 신호에 기초하여 제1 출력 신호를 제공하도록 상기 제1 메모리 셀에 커플링된다. 제2 로직 회로가 상기 제2 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제2 입력 신호 및 상기 제2 가중치 신호에 기초하여 제2 출력 신호를 제공한다.
부가의 실시예에 따르면, CIM 디바이스는 행과 열로 배열된 복수의 메모리 셀들을 구비한 메모리 어레이를 포함한다. 상기 복수의 메모리 셀들은 w 비트를 갖는 가중치 신호를 저장하며, w는 양의 정수이다. 상기 메모리 어레이는 w 열을 가지며, 상기 메모리 셀들의 각각은 상기 가중치 신호의 일 비트를 저장하도록 구성된다. 상기 메모리 셀들의 각각은 대응하는 곱셈 회로에 커플링되며, 곱셈 회로는 수신된 입력 신호 및 대응하는 메모리 셀에 저장된 상기 가중치 신호에 기초하여 곱 신호를 제공하도록 구성된다. 가산기 회로는 상기 곱 신호를 가산하고 부분 합 신호를 출력하도록 구성된다.
또 부가의 실시예에 따르면, CIM 방법은 복수의 메모리 셀들에 복수의 가중치 신호들을 저장하는 단계를 포함하며, 상기 가중치 신호들의 각각은 w 비트(w는 양의 정수임)를 갖는다. 상기 메모리 셀들의 각각은 상기 w 비트 가중치 신호의 일 비트를 저장한다. 복수의 로직 회로들이 상기 복수의 메모리 셀들 중의 각자의 메모리 셀에 접속된다. 상기 복수의 로직 회로들에 입력 신호가 제공되어, 상기 가중치 신호를 상기 입력 신호와 곱하여 복수의 곱 신호들을 제공한다. 상기 복수의 곱 신호들은 상기 복수의 로직 회로들로부터 가산기 트리에 출력된다. 가중치 부호 신호가 상기 가중치 신호가 부호있는지 여부를 표시한다. 상기 곱 신호들 및 상기 가중치 부호 신호에 기초하여 상기 가산기 트리에 의해 부분 합 신호가 출력된다.
본 개시는 당해 기술 분야에서의 숙련자들이 본 개시의 양상을 보다 잘 이해할 수 있도록 다양한 실시예들의 특징을 나타낸 것이다. 당해 기술 분야에서의 숙련자라면, 여기에서 소개된 실시예와 동일한 목적을 수행하고/하거나 동일한 이점을 달성하기 위해 다른 프로세스 및 구조를 설계 또는 수정하기 위한 기반으로서 본 개시를 용이하게 사용할 수 있다는 것을 알아야 한다. 당해 기술 분야에서의 숙련자는 또한, 이러한 등가의 구성이 본 개시의 진정한 의미 및 범위로부터 벗어나지 않으며, 본 개시의 진정한 의미 및 범위에서 벗어나지 않고서 다양한 변경, 치환 및 대안을 행할 수 있다는 것을 알아야 한다.
실시예
실시예 1. 컴퓨트 인 메모리(CIM; compute-in-memory) 디바이스에 있어서,
행과 열로 배열된 복수의 메모리 셀들을 포함하는 메모리 어레이 - 상기 복수의 메모리 셀들은 상기 메모리 어레이의 제1 행 및 제1 열에 있는 제1 메모리 셀 및 상기 메모리 어레이의 상기 제1 행 및 제2 열에 있는 제2 메모리 셀을 포함하고, 상기 제1 및 제2 메모리 셀은 각자의 제1 및 제2 가중치 신호를 저장하도록 구성됨 - ;
복수의 입력 신호들을 제공하도록 구성된 입력 드라이버;
상기 제1 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제1 입력 신호 및 상기 제1 가중치 신호에 기초하여 제1 출력 신호를 제공하도록 구성된 제1 로직 회로; 및
상기 제2 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제2 입력 신호 및 상기 제2 가중치 신호에 기초하여 제2 출력 신호를 제공하도록 구성된 제2 로직 회로
를 포함하는, CIM 디바이스.
실시예 2. 실시예 1에 있어서,
상기 제1 및 제2 로직 회로는 각각 곱셈 회로를 포함하는 것인, CIM 디바이스.
실시예 3. 실시예 2에 있어서,
상기 곱셈 회로는 NOR 게이트를 포함하는 것인, CIM 디바이스.
실시예 4. 실시예 2에 있어서,
상기 곱셈 회로는 AND 게이트를 포함하는 것인, CIM 디바이스.
실시예 5. 실시예 1에 있어서,
상기 제1 및 제2 메모리 셀은 각각 SRAM 셀을 포함하는 것인, CIM 디바이스.
실시예 6. 실시예 1에 있어서,
상기 제1 및 제2 가중치 신호 중의 적어도 하나는 부호있는(signed) 가중치인 것인, CIM 디바이스.
실시예 7. 실시예 1에 있어서,
상기 메모리 어레이의 제2 행 및 상기 제1 열에 있는 제3 메모리 셀 및 상기 메모리 어레이의 상기 제2 행 및 상기 제2 열에 있는 제4 메모리 셀 - 상기 제3 및 제4 메모리 셀은 각자의 제3 및 제4 가중치 신호를 저장하도록 구성됨 - ;
상기 제3 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제3 입력 신호 및 상기 제3 가중치 신호에 기초하여 제3 출력 신호를 제공하도록 구성된 제3 로직 회로; 및
상기 제4 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제4 입력 신호 및 상기 제4 가중치 신호에 기초하여 제4 출력 신호를 제공하도록 구성된 제4 로직 회로
를 더 포함하는, CIM 디바이스.
실시예 8. 실시예 7에 있어서,
상기 제1, 제2, 제3 및 제4 출력 신호를 가산하도록 구성된 가산기 회로를 더 포함하는, CIM 디바이스.
실시예 9. 실시예 8에 있어서,
상기 가산기 회로는 상기 제1, 제2, 제3 및 제4 가중치 신호와 연관된 가중치 부호 신호를 가산하도록 구성되는 것인, CIM 디바이스.
실시예 10. 컴퓨트 인 메모리(CIM) 디바이스에 있어서,
행과 열로 배열된 복수의 메모리 셀들을 포함하는 메모리 어레이 - 상기 복수의 메모리 셀들은 w 비트를 갖는 가중치 신호를 저장하도록 구성되며, w는 양의 정수이고, 상기 메모리 어레이는 w 열을 포함하며, 상기 메모리 셀들의 각각은 상기 가중치 신호의 일 비트를 저장하도록 구성됨 - ;
복수의 곱셈 회로들 - 상기 메모리 셀들의 각각은 상기 곱셈 회로들 중의 대응하는 곱셈 회로에 커플링되고, 수신된 입력 신호 및 대응하는 메모리 셀에 저장된 상기 가중치 신호에 기초하여 곱 신호를 제공하도록 구성됨 - ; 및
상기 곱 신호를 가산하고 부분 합 신호를 출력하도록 구성된 가산기 회로
를 포함하는, CIM 디바이스.
실시예 11. 실시예 10에 있어서,
상기 가중치 신호의 w 비트를 저장한 메모리 셀들은 상기 메모리 어레이의 하나의 행에 있는 것인, CIM 디바이스.
실시예 12. 실시예 10에 있어서,
상기 메모리 셀들은 복수의 가중치 신호들을 저장하도록 구성되고, 상기 복수의 가중치 신호들의 w 비트를 저장한 메모리 셀들 및 대응하는 곱셈 회로들은 상기 메모리 어레이의 각자의 복수의 행들에 있는 것인, CIM 디바이스.
실시예 13. 실시예 12에 있어서,
상기 가산기 회로는 각각 상기 메모리 어레이의 2개의 행들로부터 상기 곱 신호를 수신하도록 구성되는 것인, CIM 디바이스.
실시예 14. 실시예 13에 있어서,
상기 가산기 회로는 각각 상기 가중치 신호에 대응하는 가중치 부호를 수신하도록 구성되는 것인, CIM 디바이스.
실시예 15. 실시예 13에 있어서,
상기 가산기 회로는 각각 하나의 반가산기 회로 및 w개의 전가산기 회로를 포함하는 것인, CIM 디바이스.
실시예 16. 실시예 10에 있어서,
CIM 출력을 생성하기 위해 상기 부분 합 신호를 시프트 및 가산하도록 구성된 누산 회로를 더 포함하는, CIM 디바이스.
실시예 17. 컴퓨트 인 메모리(CIM) 방법에 있어서,
복수의 메모리 셀들에 복수의 가중치 신호들을 저장하는 단계 - 상기 가중치 신호들의 각각은 w 비트(w는 양의 정수임)를 가지며, 상기 메모리 셀들의 각각은 상기 w 비트 가중치 신호의 일 비트를 저장함 - ;
상기 복수의 메모리 셀들 중의 각자의 메모리 셀에 접속된 복수의 로직 회로들을 제공하는 단계;
상기 가중치 신호를 입력 신호와 곱하여 복수의 곱 신호들을 제공하도록 상기 복수의 로직 회로들에 상기 입력 신호를 제공하는 단계;
상기 복수의 로직 회로들로부터 가산기 트리에 상기 복수의 곱 신호들을 출력하는 단계;
상기 가중치 신호가 부호있는지 여부를 표시하도록 구성된 가중치 부호 신호를 제공하는 단계; 및
상기 곱 신호들 및 상기 가중치 부호 신호에 기초하여 상기 가산기 트리에 의해 부분 합 신호를 출력하는 단계
를 포함하는, CIM 방법.
실시예 18. 실시예 17에 있어서,
CIM 출력을 생성하도록 누산기에 의해 상기 부분 합 신호를 시프트 및 가산하는 단계를 더 포함하는, CIM 방법.
실시예 19. 실시예 17에 있어서,
상기 메모리 셀들은 행과 열의 행렬로 배열되고, 상기 가산기 트리는 복수의 가산기 회로들을 포함하고, 상기 복수의 로직 회로들로부터 상기 복수의 곱 신호들을 출력하는 단계는 인접한 행들로부터 상기 가산기 회로들의 각각에 상기 곱 신호들을 출력하는 단계를 포함하는 것인, CIM 방법.
실시예 20. 실시예 17에 있어서,
복수의 w 비트 가중치 신호들을 조합하는 단계를 더 포함하는, CIM 방법.
Claims (10)
- 컴퓨트 인 메모리(CIM; compute-in-memory) 디바이스에 있어서,
행과 열로 배열된 복수의 메모리 셀들을 포함하는 메모리 어레이 - 상기 복수의 메모리 셀들은 상기 메모리 어레이의 제1 행 및 제1 열에 있는 제1 메모리 셀 및 상기 메모리 어레이의 상기 제1 행 및 제2 열에 있는 제2 메모리 셀을 포함하고, 상기 제1 및 제2 메모리 셀은 각자의 제1 및 제2 가중치 신호를 저장하도록 구성됨 - ;
복수의 입력 신호들을 제공하도록 구성된 입력 드라이버;
상기 제1 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제1 입력 신호 및 상기 제1 가중치 신호에 기초하여 제1 출력 신호를 제공하도록 구성된 제1 로직 회로;
상기 제2 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제2 입력 신호 및 상기 제2 가중치 신호에 기초하여 제2 출력 신호를 제공하도록 구성된 제2 로직 회로; 및
상기 제1 및 제2 출력 신호를 가산하도록 구성된 가산기 회로
를 포함하고,
상기 가산기 회로는 상기 메모리 어레이와 연관된 레지스터로부터 상기 제1 가중치 신호의 부호를 표시하는 제1 가중치 부호 신호와, 상기 제2 가중치 신호의 부호를 표시하는 제2 가중치 부호 신호를 수신하도록 구성되는, CIM 디바이스. - 청구항 1에 있어서,
상기 제1 및 제2 로직 회로는 각각 곱셈 회로를 포함하는 것인, CIM 디바이스. - 청구항 2에 있어서,
상기 곱셈 회로는 NOR 게이트를 포함하는 것인, CIM 디바이스. - 청구항 2에 있어서,
상기 곱셈 회로는 AND 게이트를 포함하는 것인, CIM 디바이스. - 청구항 1에 있어서,
상기 제1 및 제2 메모리 셀은 각각 SRAM 셀을 포함하는 것인, CIM 디바이스. - 청구항 1에 있어서,
상기 제1 및 제2 가중치 신호 중의 적어도 하나는 부호있는(signed) 가중치인 것인, CIM 디바이스. - 청구항 1에 있어서,
상기 메모리 어레이의 제2 행 및 상기 제1 열에 있는 제3 메모리 셀 및 상기 메모리 어레이의 상기 제2 행 및 상기 제2 열에 있는 제4 메모리 셀 - 상기 제3 및 제4 메모리 셀은 각자의 제3 및 제4 가중치 신호를 저장하도록 구성됨 - ;
상기 제3 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제3 입력 신호 및 상기 제3 가중치 신호에 기초하여 제3 출력 신호를 제공하도록 구성된 제3 로직 회로; 및
상기 제4 메모리 셀에 커플링되고, 상기 입력 드라이버로부터의 제4 입력 신호 및 상기 제4 가중치 신호에 기초하여 제4 출력 신호를 제공하도록 구성된 제4 로직 회로
를 더 포함하는, CIM 디바이스. - 청구항 7에 있어서,
상기 가산기 회로는 제1, 제2, 제3 및 제4 출력 신호를 가산하도록 구성된 것인, CIM 디바이스. - 컴퓨트 인 메모리(CIM) 디바이스에 있어서,
행과 열로 배열된 복수의 메모리 셀들을 포함하는 메모리 어레이 - 상기 복수의 메모리 셀들은 w 비트를 갖는 가중치 신호를 저장하도록 구성되며, w는 양의 정수이고, 상기 메모리 어레이는 w 열을 포함하며, 상기 메모리 셀들의 각각은 상기 가중치 신호의 일 비트를 저장하도록 구성됨 - ;
복수의 곱셈 회로들 - 상기 메모리 셀들의 각각은 상기 곱셈 회로들 중의 대응하는 곱셈 회로에 커플링되고, 수신된 입력 신호 및 대응하는 메모리 셀에 저장된 상기 가중치 신호에 기초하여 곱 신호를 제공하도록 구성됨 - ; 및
상기 곱 신호를 가산하고 부분 합 신호를 출력하도록 구성된 가산기 회로
를 포함하고,
상기 가산기 회로는 상기 가중치 신호의 부호를 표시하는 가중치 부호 신호를, 상기 메모리 어레이와 연관된 레지스터로부터 수신하도록 구성되는, CIM 디바이스. - 컴퓨트 인 메모리(CIM) 방법에 있어서,
복수의 메모리 셀들에 복수의 가중치 신호들을 저장하는 단계 - 상기 가중치 신호들의 각각은 w 비트(w는 양의 정수임)를 가지며, 상기 메모리 셀들의 각각은 상기 w 비트 가중치 신호의 일 비트를 저장함 - ;
상기 복수의 메모리 셀들 중의 각자의 메모리 셀에 접속된 복수의 로직 회로들을 제공하는 단계;
상기 가중치 신호를 입력 신호와 곱하여 복수의 곱 신호들을 제공하도록 상기 복수의 로직 회로들에 상기 입력 신호를 제공하는 단계;
상기 복수의 로직 회로들로부터 가산기 트리에 상기 복수의 곱 신호들을 출력하는 단계;
상기 복수의 메모리 셀들을 포함하는 메모리 어레이에 연관된 레지스터로부터, 가중치 부호 신호를 제공하는 단계로서, 상기 가중치 부호 신호는 상기 가중치 신호가 부호있는지 여부를 표시하도록 구성된 것인, 상기 가중치 부호 신호를 제공하는 단계; 및
상기 곱 신호들 및 상기 가중치 부호 신호에 기초하여 상기 가산기 트리에 의해 부분 합 신호를 출력하는 단계
를 포함하는, CIM 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163143467P | 2021-01-29 | 2021-01-29 | |
US63/143,467 | 2021-01-29 | ||
US17/387,598 US12147784B2 (en) | 2021-01-29 | 2021-07-28 | Compute in memory |
US17/387,598 | 2021-07-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220110090A KR20220110090A (ko) | 2022-08-05 |
KR102774724B1 true KR102774724B1 (ko) | 2025-02-27 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12147784B2 (en) | Compute in memory | |
US10748603B2 (en) | In-memory multiply and accumulate with global charge-sharing | |
Jain et al. | TiM-DNN: Ternary in-memory accelerator for deep neural networks | |
US20220269483A1 (en) | Compute in memory accumulator | |
CN114830136B (zh) | 功率高效的近存储器模拟乘法和累加(mac) | |
CN114072876B (zh) | 存储器处理单元和计算点积的方法 | |
US11966714B2 (en) | Ternary in-memory accelerator | |
US11996137B2 (en) | Compute in memory (CIM) memory array | |
US12164882B2 (en) | In-memory computation circuit and method | |
KR102774724B1 (ko) | 컴퓨트 인 메모리 | |
US10853066B1 (en) | Memory processing units and methods of computing DOT products including zero bit skipping | |
KR20240011596A (ko) | 인메모리 컴퓨팅을 위한 메모리 장치 및 그 동작 방법 | |
CN115424645A (zh) | 计算器件、存储器控制器和执行存储器中计算的方法 | |
CN115629734A (zh) | 并行向量乘加器的存内计算装置和电子设备 | |
CN116543808A (zh) | 一种基于sram单元的全数字域存内近似计算电路 | |
US20230418557A1 (en) | Data computation circuit and method | |
CN114816327B (zh) | 一种加法器及全数字存内计算装置 | |
US20240385802A1 (en) | System and methods for performing mac operations on floating point numbers | |
CN115658011B (zh) | 向量乘加器的sram存内计算装置和电子设备 | |
US20240094943A1 (en) | Data sequencing circuit and method | |
JP2024013205A (ja) | インメモリコンピューティングのためのメモリ装置及びその動作方法 | |
CN117521734A (zh) | 一种用于实现高能效乘法运算的存内计算电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20220118 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20240122 Patent event code: PE09021S01D |
|
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20241129 |