KR20240035492A - 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처 - Google Patents

메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처 Download PDF

Info

Publication number
KR20240035492A
KR20240035492A KR1020247003030A KR20247003030A KR20240035492A KR 20240035492 A KR20240035492 A KR 20240035492A KR 1020247003030 A KR1020247003030 A KR 1020247003030A KR 20247003030 A KR20247003030 A KR 20247003030A KR 20240035492 A KR20240035492 A KR 20240035492A
Authority
KR
South Korea
Prior art keywords
circuit
columns
memory
adder
memory cells
Prior art date
Application number
KR1020247003030A
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 퀄컴 인코포레이티드
Publication of KR20240035492A publication Critical patent/KR20240035492A/ko

Links

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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/4076Timing 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/408Address circuits
    • G11C11/4085Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4814Non-logic devices, e.g. operational amplifiers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (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)
  • Image Analysis (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)

Abstract

소정 양태들은 기계 학습 태스크들을 수행하기 위한 장치, 특히 메모리 내 컴퓨팅 아키텍처들을 제공한다. 일 양태는 메모리 내 컴퓨팅을 위한 회로를 제공한다. 회로는 일반적으로, 메모리의 다수의 열들 각각에 있는 복수의 메모리 셀들 ― 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하도록 구성되고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 다수의 열들 중 개개의 열에 각각 결합되는 다수의 가산 회로들; 다수의 가산 회로들 중 적어도 2 개의 출력들에 결합된 제1 가산기 회로; 및 제1 가산기 회로의 출력에 결합된 누산기를 포함한다.

Description

메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처
[0001] 본 출원은 2021년 8월 2일에 출원된 미국 출원 번호 제17/391,718에 대한 우선권을 주장하고, 이 출원은 본 양수인에게 양도되었고 그 전체가 본원에 참조로 포함된다.
[0002] 본 개시내용의 양태들은 기계 학습 태스크들을 수행하는 것에 관한 것이고, 특히 메모리 내 컴퓨팅 아키텍처에 관한 것이다.
[0003] 기계 학습은 일반적으로 사전에 알려진 훈련 데이터의 세트에 대한 일반화된 적합성을 나타내는 훈련된 모델(예를 들어, 인공 신경망, 나무, 또는 다른 구조들)을 생성하는 프로세스이다. 훈련된 모델을 새로운 데이터에 적용하는 것은 추론들을 생성하고, 이는 새로운 데이터에 대한 통찰력들을 획득하는 데 사용될 수 있다. 일부 경우들에서, 새로운 데이터에 모델을 적용하는 것은 새로운 데이터에 대한 "추론 실행"으로 설명된다.
[0004] 기계 학습의 사용이 다양한 기계학습(또는 인공지능) 태스크들을 가능하게 하기 위해 급증됨에 따라, 기계학습 모델 데이터의 보다 효율적인 프로세싱 필요성이 발생하였다. 일부 경우들에서, 기계 학습 가속기들과 같은 전용 하드웨어는 기계 학습 모델 데이터를 프로세싱하는 프로세싱 시스템의 용량을 향상시키는 데 사용될 수 있다. 그러나, 이러한 하드웨어는 공간과 전력을 요구하고, 이는 프로세싱 디바이스에서 항상 이용 가능하지 않다. 예를 들어, 모바일 디바이스들, 상시 작동 디바이스들, 사물 인터넷(IoT) 디바이스들 등과 같은 "에지 프로세싱" 디바이스들은 일반적으로 프로세싱 능력들과 전력 및 패키징 제약들의 균형을 맞춰야 한다. 추가로, 가속기들은 공통 데이터 버스를 통해 데이터를 이동할 수 있고, 이는 상당한 전력 사용량을 유발하고 데이터 버스를 공유하는 다른 프로세스들에 대기시간을 도입할 수 있다. 결과적으로, 기계 학습 모델 데이터를 프로세싱하기 위해 프로세싱 시스템의 다른 양태들이 고려되고 있다.
[0005] 메모리 디바이스들은 소위 메모리 내 컴퓨팅(CIM) 프로세스들을 통해 기계 학습 모델 데이터의 프로세싱을 수행하기 위해 활용될 수 있는 프로세싱 시스템의 다른 양태의 일 예이다. 기존 CIM 프로세스는 아날로그 신호들을 사용하여 컴퓨팅을 수행하고, 이는 컴퓨팅 결과의 부정확성을 초래할 수 있어, 신경망 컴퓨팅들에 부정적인 영향을 미칠 수 있다. 따라서, 증가된 정확도로 메모리 내 컴퓨팅을 수행하기 위한 시스템들 및 방법들이 필요하다.
[0006] 소정 양태들은 기계 학습 태스크들을 수행하기 위한 장치 및 기법들, 특히 메모리 내 컴퓨팅 아키텍처들에 관한 것이다.
[0007] 하나의 양태들은 메모리 내 컴퓨팅을 위한 회로를 제공한다. 회로는 일반적으로, 메모리의 다수의 열들 각각에 있는 복수의 메모리 셀들 ― 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하도록 구성되고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 다수의 열들 중 개개의 열에 각각 결합되는 다수의 가산 회로들; 다수의 가산 회로들 중 적어도 2 개의 출력들에 결합된 제1 가산기 회로; 및 제1 가산기 회로의 출력에 결합된 누산기를 포함한다
[0008] 일 양태들은 메모리 내 컴퓨팅을 위한 방법을 제공한다. 방법은 일반적으로, 다수의 가산 회로들 각각을 통해, 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 단계 ― 복수의 메모리 셀들은 다수의 열들 각각에 있고, 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 제1 가산 회로를 통해, 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하는 단계; 및 누산기를 통해, 제1 가산기 회로의 출력 신호들을 누산하는 단계를 포함한다.
[0009] 일 양태는 메모리 내 컴퓨팅을 위한 장치를 제공한다. 장치는 일반적으로, 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하기 위한 제1 수단 ― 복수의 메모리 셀은 다수의 열들 각각에 있고, 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 가산하기 위한 제1 수단 중 적어도 2 개의 출력 신호들을 가산하기 위한 제2 수단; 및 가산하기 위한 제2 수단의 출력 신호들을 누산하기 위한 수단을 포함한다.
[0010] 다른 양태들은 전술한 방법들 뿐만 아니라 본원에 설명된 방법들을 수행하도록 구성된 프로세싱 시스템들; 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템이 전술한 방법들 뿐만 아니라 본원에 설명된 방법들을 수행하게 하는 명령들을 포함하는 비일시적 컴퓨터-판독가능 매체; 전술한 방법들 뿐만 아니라 본원에 추가로 설명된 방법들을 수행하기 위한 코드를 포함하는 컴퓨터 판독가능 저장 매체에 구현된 컴퓨터 프로그램 제품; 및 전술한 방법들 뿐만 아니라 본원에 추가로 설명된 방법들을 수행하기 위한 수단을 포함하는 프로세싱 시스템을 제공한다.
[0011] 다음 설명 및 관련 도면들은 하나 이상의 양태들의 소정 예시적 특징들을 상세히 설명한다.
[0001] 본 개시내용의 위에서 언급된 특징이 상세하게 이해될 수 있는 방식으로, 위에서 간략히 요약된 보다 구체적인 설명은 양태를 참조하여 이루어질 수 있고, 그 중 일부는 첨부된 도면에 예시된다. 그러나, 첨부된 도면들이 본 개시내용의 소정 전형적인 양태들만을 예시하고 그러므로 그 범위를 제한하는 것으로 간주되어서는 안 된다는 것이 유의되어야 하는데, 이는 그 설명이 다른 동등하게 유효한 양태들을 허용할 수 있기 때문이다.
[0012] 도 1a-도 1d는 본 개시내용의 양태들에 의해 구현될 수 있는 다양한 유형들의 신경망들의 예들을 묘사한다.
[0013] 도 2는 본 개시내용의 양태들에 의해 구현될 수 있는 종래의 콘볼루션 연산의 예를 묘사한다.
[0014] 도 3a 및 도 3b는 본 개시내용의 양태들에 의해 구현될 수 있는 깊이별 분리 가능한 콘볼루션 연산들의 예들을 묘사한다.
[0015] 도 4는 메모리 내 컴퓨팅(CIM) 회로를 위한 8-트랜지스터(8T) SRAM(Static Random Access Memory) 셀로 구현된 예시적인 메모리 셀을 예시한다.
[0016] 도 5a는 본 개시내용의 소정 양태들에 따른 CIM용 회로를 예시한다.
[0017] 도 5b는 가산기 회로의 예시적인 구현들을 예시한다.
[0018] 도 5c는 누산기의 예시적인 구현을 예시한다.
[0019] 도 6은 본 개시내용의 소정 양태들에 따라 비트 열 가산기 트리를 사용하여 구현된 CIM용 회로를 예시한다.
[0020] 도 7은 본 개시내용의 소정 양태들에 따라 도 6의 회로와 연관된 신호들을 예시하는 타이밍도이다.
[0021] 도 8a, 도 8b 및 도 8c는 본 개시내용의 소정 양태들에 따라 구성 가능한 비트 크기의 가중치들을 갖는 CIM 회로를 예시하는 블록도들이다.
[0022] 도 9는 본 개시내용의 소정 양태들에 따른 메모리 내 컴퓨팅을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0023] 도 10은 본 개시내용의 소정 양태들에 따라 신경망에서 신호 프로세싱을 위한 동작을 수행하도록 구성된 예시적인 전자 디바이스를 예시한다.
[0024] 이해를 용이하게 하기 위해, 동일한 참조 번호들은 가능하면 도면들에 공통되는 동일한 요소들을 표시하기 위해 사용되었다. 일 양태의 요소들 및 특징들이 추가 설명 없이 다른 양태들에 유리하게 통합될 수 있다는 것이 고려된다.
[0025] 본 개시내용의 양태들은 기계 학습 모델들을 구현하는 것과 같은 데이터 집약적인 프로세싱을 핸들링하기 위해 메모리 내 컴퓨팅(CIM)을 수행하기 위한 장치들, 방법들, 프로세싱 시스템들, 및 컴퓨터 판독가능 매체들을 제공한다. 일부 양태들은 가산 회로들을 사용하여 디지털 CIM을 수행하기 위한 기법들을 제공하고, 각각의 가산 회로는 다수의 컴퓨팅 사이클(computation cycle)들 후에 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산(예를 들어, 누산)한다. 본원에서 사용된 바와 같이, "가산 회로"는 일반적으로 열 상의 메모리 셀들의 출력 신호들을 가산(또는 순차적 컴퓨팅 사이클들에 걸쳐 누산)하는 임의의 회로를 지칭한다. 일부 경우들에서, 가산 회로가 누산기일 수 있다. 누산기는 일반적으로 다수의 사이클들에 걸쳐 출력 신호들을 누산하는 데 사용되는 회로를 지칭한다. 다른 경우들에서, 가산 회로는 가산기 트리일 수 있다. "가산기 회로" 또는 "가산기 트리"는 일반적으로 다수의 메모리 셀들(예를 들어, 워드 라인들 또는 열들에 걸친 메모리 셀들)의 출력 신호들을 가산하는 데 사용되는 디지털 가산기들을 지칭한다. 가산기 회로의 예시적인 구현은 도 5b와 관련하여 본원에 설명되고, 누산기의 예시적인 구현은 도 5c와 관련하여 본원에서 설명된다. 가산 회로는 다수의 가산기 회로들을 갖는 가산기 트리, 또는 누산기로 구현될 수 있다. 일부 양태들에서, CIM 회로의 워드 라인들은 순차적으로 활성화되고, 누산기들은 동시에 누산을 수행하여, 2 개 이상의 워드 라인들이 순차적으로 활성화된 후에 누산 결과를 제공한다.
[0026] 소정 양태들은 컴퓨팅에 사용되는 가중치들의 비트 크기의 구성 가능성(configurability)을 허용하는 폴딩 아키텍처(folding architecture)를 제공한다. 예를 들어, CIM 아키텍처의 하나 이상의 프로세싱 경로들(또한 "윙(wing)들"로 지칭됨)은 사용되는 가중치들의 비트 크기를 조정하기 위해 디스에이블될 수 있다. 예를 들어, 8 개의 프로세싱 경로들(예를 들어, 열들 및 연관된 프로세싱 회로를 포함)은 8 비트 가중치들을 구현하는 데 사용될 수 있거나, 4 개의 프로세싱 경로들은 4 비트 가중치들을 구현하는 데 사용될 수 있다(다른 4 개의 프로세싱 경로들은 일시적으로 디스에이블됨).
[0027] CIM 기반 기계 학습(ML)/인공 지능(AI)은 이미지 및 오디오 프로세싱을 포함하고 무선 통신을 판정(예를 들어, 적어도 처리량 및 신호 품질의 최적화 또는 적어도 증가를 위함)하게 하는 매우 다양한 태스크들에 사용될 수 있다. 추가로, CIM은 DRAM(dynamic random-access memory), SRAM(static random-access memory)(예를 들어, 도 4의 SRAM 셀 기반), 자기 저항 랜덤 액세스 메모리(MRAM) 및 저항성 랜덤 액세스 메모리(ReRAM 또는 RRAM) 같은 다양한 유형들의 메모리 아키텍처들에 기반할 수 있고, 중앙 프로세싱 유닛(CPU)들, 디지털 신호 프로세서(DSP)들, 그래픽 프로세싱 유닛(GPU)들, FPGA(field-programmable gate array)들, AI 가속기들 등을 포함한 다양한 유형들의 프로세싱 유닛들에 부착될 수 있다. 일반적으로, CIM은 메모리 안팎으로 데이터의 이동이 데이터 컴퓨팅보다 더 많은 전력을 소비하는 "메모리 벽" 문제를 효과적으로 줄일 수 있다. 따라서, 메모리에서 컴퓨팅을 수행함으로써, 상당한 전력 절감들이 실현될 수 있다. 이는 저전력 에지 프로세싱 디바이스들, 모바일 디바이스들 등과 같은 다양한 유형들의 전자 디바이스들에 특히 유용하다.
[0028] 예를 들어, 모바일 디바이스는 데이터를 저장하고 메모리 내 컴퓨팅 동작들을 수행하도록 구성된 메모리 디바이스를 포함할 수 있다. 모바일 디바이스는 모바일 디바이스의 카메라 센서에 의해 생성된 이미지 데이터와 같은, 모바일 디바이스에 의해 생성된 데이터에 기반한 ML/AI 연산을 수행하도록 구성될 수 있다. 따라서, 모바일 디바이스의 메모리 제어기 유닛(MCU)은 다른 온보드 메모리(예를 들어, 플래시 또는 RAM)로부터 메모리 디바이스의 CIM 어레이로 가중치들을 로드하고 입력 특징 버퍼들 및 출력(예를 들어, 출력 활성화) 버퍼들을 할당할 수 있다. 이어서, 프로세싱 디바이스는 예를 들어 입력 버퍼에 층을 로드하고 CIM 어레이에 로드된 가중치들을 사용하여 층을 프로세싱함으로써 이미지 데이터의 프로세싱을 시작할 수 있다. 이 프로세싱은 이미지 데이터의 각각의 층에 대해 반복될 수 있고, 출력들(예를 들어, 출력 활성화들)은 출력 버퍼들에 저장되고 이어서 얼굴 인식과 같은 ML/AI 태스크를 위해 모바일 디바이스에 의해 사용될 수 있다.
신경망들, 심층 신경망들 및 심층 학습에 대한 간략한 배경
[0029] 신경망들은 상호연결된 노드들의 층들로 조직된다. 일반적으로, 노드(또는 뉴런)는 컴퓨팅이 발생하는 곳이다. 예를 들어, 노드는 입력 데이터를 증폭하거나 약화시키는 가중치들(또는 계수들)의 세트와 입력 데이터를 결합할 수 있다. 따라서 입력 신호들의 증폭 또는 감쇠는 네트워크가 학습하려는 태스크와 관련하여 다양한 입력들에 상대적 중요성을 할당하는 것으로 간주될 수 있다. 일반적으로, 입력 가중치 곱들은 합산(또는 누산)되고 이어서 합은 신호가 네트워크를 통해 더 진행되어야 하는지 여부와 그 정도를 결정하기 위해 노드의 활성화 함수에 전달된다.
[0030] 가장 기본적인 구현에서, 신경망은 입력 층, 숨겨진 층 및 출력 층을 가질 수 있다. "심층" 신경망들은 일반적으로 하나 초과의 숨겨진 층을 가진다.
[0031] 심층 학습은 심층 신경망들을 훈련시키는 방법이다. 일반적으로, 심층 학습은 네트워크에 대한 입력을 네트워크로부터의 출력들에 매핑하고 따라서 심층 학습이 입력(x)과 출력(y) 사이의 알려지지 않은 함수()를 근사화하기 위해 학습할 수 있기 때문에 때때로 "보편적 근사화기"로 지칭된다. 즉, 심층 학습은 x를 y로 변환하기 위한 권리()를 찾는 것이다.
[0032] 보다 특히, 심층 학습은 이전 층의 출력인 고유한 특징들의 세트에 기반하여 각각의 노드들의 층을 훈련시킨다. 따라서, 심층 신경망의 각각의 연속 층마다, 특징들은 더 복잡해진다. 심층 학습은 각각의 층에서 연속적으로 더 높은 레벨들의 추상화에서 입력들을 표현하도록 학습하고, 이에 의해 입력 데이터의 유용한 특징 표현을 구축함으로써, 입력 데이터에서 더 높은 레벨의 특징들을 점진적으로 추출하고 객체 인식과 같은 복잡한 태스크들을 수행할 수 있기 때문에 강력하다.
[0033] 예를 들어, 시각적 데이터가 제시되면, 심층 신경망의 제1 층은 입력 데이터에서 에지들과 같은 상대적으로 간단한 특징들을 인식하도록 학습할 수 있다. 다른 예에서, 청각 데이터가 제시되면, 심층 신경망의 제1 층은 입력 데이터의 특정 주파수들에서 스펙트럼 출력을 인식하도록 학습할 수 있다. 이어서 심층 신경망의 제2 층은 제1 층의 출력에 기반하여, 시각적 데이터의 단순한 형상들 또는 청각 데이터의 사운드들의 조합과 같은 특징들의 조합들을 인식하도록 학습할 수 있다. 이어서 상위 층들은 시각적 데이터의 복잡한 형상들이나 청각 데이터의 단어를 인식하도록 학습할 수 있다. 여전히 상위 층들은 일반적인 시각적 객체들이나 음성 문구들을 인식하도록 학습할 수 있다. 따라서, 심층 학습 아키텍처들은 자연스러운 계층적 구조를 가진 문제들에 적용될 때 특히 잘 수행될 수 있다.
신경망들의 층 연결성
[0034] 심층 신경망(DNN)들과 같은 신경망들은 층들 간 다양한 연결 패턴들로 설계될 수 있다.
[0035] 도 1a는 완전 연결된 신경망(102)의 예를 예시한다. 완전 연결된 신경망(102)에서, 제1 층의 각각의 노드는 자신의 출력을 제2 층의 모든 노드에 통신하므로, 제2 층의 각각의 노드는 제1 층의 모든 노드로부터의 입력을 수신할 것이다.
[0036] 도 1b는 로컬적으로 연결된 신경망(104)의 예를 예시한다. 로컬적으로 연결된 신경망(104)에서, 제1 층의 노드는 제2 층의 제한된 개수의 노드들에 연결될 수 있다. 더 일반적으로, 로컬적으로 연결된 신경망(104)의 로컬적으로 연결된 층은, 층의 각각의 노드가 동일하거나 유사한 연결 패턴을 가지지만, 연결 강도(또는 가중치들)이 상이한 값들(예를 들어, 제1 층 노드들의 로컬 영역들(110, 112, 114, 및 116)과 연관된 값들)을 가지도록 구성될 수 있다. 로컬적으로 연결된 연결 패턴은 상위 층에서 공간적으로 별개의 수용 필드들을 발생시킬 수 있는 데, 그 이유는 주어진 지역의 상위 층 노드가 네트워크에 대한 전체 입력 중 제한된 부분의 속성들에 대한 훈련을 통해 튜닝된 입력을 수신할 수 있기 때문이다.
[0037] 로컬적으로 연결된 신경망의 일 유형은 콘볼루션 신경망(CNN: Convolutional Neural Network)이다. 도 1c는 콘볼루션 신경망(106)의 예를 예시한다. 콘볼루션 신경망(106)은 제2 층의 각각의 노드에 대한 입력들과 연관된 연결 강도들이 공유되도록(예를 들어, 제1 층 노드들의 다른 로컬 영역과 겹치는 로컬 영역(108)에 대해) 구성될 수 있다. 콘볼루션 신경망들은 입력들의 공간적 위치들이 의미 있는 문제에 매우 적합하다.
[0038] 콘볼루션 신경망의 일 유형은 심층 콘볼루션 네트워크(DCN)이다. 심층 콘볼루션 네트워크들은 다수의 콘볼루션 층들의 네트워크이고, 이는 추가로 예를 들어 풀링(pooling) 및 정규화 층들로 구성될 수 있다.
[0039] 도 1d는 이미지 캡처링 디바이스(130)에 의해 생성된 이미지(126)의 시각적 특징들을 인식하도록 설계된 DCN(100)의 예를 예시한다. 예를 들어, 이미지 캡처링 디바이스(130)가 차량에 또는 그 위에 장착된(또는 차량과 함께 이동하는) 카메라인 경우, DCN(100)은 교통 표지판 및 심지어 교통 표지판 상의 번호를 식별하기 위해 다양한 지도 학습 기법들로 훈련될 수 있다. 마찬가지로 DCN(100)은 차선 표시들 식별이나 신호등들 식별과 같은 다른 태스크들을 위해 훈련될 수 있다. 이들은 단지 몇 가지 예시 태스크들이고, 다른 많은 태스크들이 가능하다.
[0040] 도 1d의 예에서, DCN(100)은 특징 추출 섹션과 분류 섹션을 포함한다. 이미지(126)를 수신하면, 콘볼루션 층(132)은 이미지(126)에 콘볼루션 커널들(예를 들어, 도 2에 묘사되고 설명된 바와 같은)을 적용하여 제1 특징 맵들의 세트(또는 중간 활성화들)(118)를 생성한다. 일반적으로, "커널" 또는 "필터"는 입력 데이터 채널의 다양한 양태들을 강조하도록 설계된 다차원 가중치들의 어레이를 포함한다. 다양한 예들에서, "커널" 및 "필터"는 콘볼루션 신경망에 적용되는 가중치들의 세트를 지칭하기 위해 상호교환적으로 사용될 수 있다.
[0041] 이어서, 제1 특징 맵들의 세트(118)는 풀링 층(예를 들어, 최대 풀링 층, 도시되지 않음)에 의해 서브샘플링되어 제2 특징 맵들의 세트(120)를 생성할 수 있다. 풀링 층은 모델 성능을 개선하기 위해 많은 정보를 유지하면서 제1 특징 맵들의 세트(118)의 크기를 줄일 수 있다. 예를 들어, 제2 특징 맵들의 세트(120)는 풀링 층에 의해 28x28 행렬에서 14x14 행렬로 다운샘플링될 수 있다.
[0042] 이 프로세스는 많은 층들을 통해 반복될 수 있다. 즉, 제2 특징 맵들의 세트(120)는 하나 이상의 후속 콘볼루션 층(도시되지 않음)을 통해 추가로 콘볼루션되어 하나 이상의 후속 특징 맵들의 세트(도시되지 않음)를 생성할 수 있다.
[0043] 도 1d의 예에서, 제2 특징 맵들의 세트(120)는 완전 연결 층(124)에 제공되고, 이는 차례로 출력 특징 벡터(128)를 생성한다. 출력 특징 벡터(128)의 각각의 특징은 "부호", "60" 및 "100"과 같이 이미지(126)의 가능한 특징에 대응하는 숫자를 포함할 수 있다. 일부 경우들에서, 소프트맥스 함수(도시되지 않음)는 출력 특징 벡터(128)의 숫자들을 확률로 변환할 수 있다. 이러한 경우들에서, DCN(100)의 출력(122)은 이미지(126)가 하나 이상의 특징들을 포함하는 확률이다.
[0044] 소프트맥스 함수(도시되지 않음)는 DCN(100)의 출력(122)이 이미지(126)에서와 같이, 숫자("60")를 갖는 부호와 같은 하나 이상의 특징들을 포함하는 이미지(126)의 하나 이상의 확률들이도록 출력 특징 벡터(128)의 개별 요소들을 확률로 변환할 수 있다. 따라서, 본 예에서, "부호" 및 "60"에 대한 출력(122)의 확률들은 "30", "40", "50", "70", "80", "90", 및 "100"과 같은 출력(122)의 다른 요소들의 확률보다 더 높아야 한다.
[0045] DCN(100)을 훈련하기 전에, DCN(100)에 의해 생성된 출력(122)은 올바르지 않을 수 있다. 따라서, 에러는 출력(122)과 선험적으로 알려진 타겟 출력 사이에서 계산될 수 있다. 예를 들어, 여기서 타겟 출력은 이미지(126)가 "부호"와 숫자 "60"을 포함한다는 표시이다. 알려진 타겟 출력을 활용하여, DCN(100)의 가중치들은, DCN(100)의 후속 출력(122)이 (높은 확률들로) 타겟 출력을 달성하도록 훈련을 통해 조정될 수 있다.
[0046] DCN(100)의 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 기울기 벡터를 컴퓨팅할 수 있다. 기울기 벡터는 가중치가 특정 방식으로 조정되면 에러가 증가하거나 감소하는 양을 나타낼 수 있다. 이어서, 가중치들은 에러를 줄이기 위해 조정될 수 있다. 가중치들을 조정하는 이러한 방식은 이 조정 프로세스가 DCN(100)의 층을 통한 "역방향 전파"를 포함하기 때문에 "역전파"로 지칭될 수 있다.
[0047] 실제로, 가중치들의 에러 기울기는 소수의 예들을 통해 계산될 수 있으므로, 계산된 기울기들은 실제 에러 기울기에 가깝다. 이 근사화 방법은 확률적 경사하강법(stochastic Gradient Descent)으로 지칭될 수 있다. 확률적 경사하강법은 전체 시스템의 달성 가능한 에러율이 더 이상 감소하지 않거나 에러율이 타겟 레벨에 도달할 때까지 반복될 수 있다.
[0048] 훈련 후에, DCN(100)은 새로운 이미지들이 제시될 수 있고, DCN(100)은 새로운 이미지에 있는 다양한 특징들의 분류들 또는 확률들과 같은 추론들을 생성할 수 있다.
콘볼루션 신경망들을 위한 콘볼루션 기법들
[0049] 콘볼루션은 일반적으로 입력 데이터 세트에서 유용한 특징들을 추출하는 데 사용된다. 예를 들어, 위에서 설명된 것과 같은 콘볼루션 신경망들에서, 콘볼루션은 가중치들이 훈련 동안 자동으로 학습되는 커널들 및/또는 필터들을 사용하여 상이한 특징들의 추출을 가능하게 한다. 이어서, 추출된 특징들은 추론들을 위해 결합된다.
[0050] 활성화 함수는 콘볼루션 신경망의 각각의 층 이전 및/또는 이후에 적용될 수 있다. 활성화 함수들은 일반적으로 신경망 노드의 출력을 결정하는 수학적 함수들이다. 따라서, 활성화 함수는 노드의 입력이 모델의 예측과 관련이 있는지 여부에 기반하여, 노드가 정보를 전달해야 하는지 여부를 결정한다. (즉, y는 x의 콘볼루션임)인 일 예에서, x와 y 둘 모두는 일반적으로 "활성화"로 간주될 수 있다. 그러나, 특정 콘볼루션 연산의 관점에서, x는 특정 콘볼루션 이전에 존재하므로 x는 또한 "사전 활성화들" 또는 "입력 활성화들"로 지칭될 수 있고, y는 출력 활성화들 또는 특징 맵으로 지칭될 수 있다.
[0051] 도 2는 12 픽셀 x 12 픽셀 x 3 채널 입력 이미지가 5 x 5 x 3 콘볼루션 커널(204)과 1의 스트라이드(stride)(또는 단계 크기)를 사용하여 콘볼루션되는 기존의 콘볼루션의 예를 묘사한다. 결과적인 특징 맵(206)은 8 픽셀 x 8 픽셀 x 1 채널이다. 이 예에서 볼 수 있듯이, 기존 콘볼루션은 채널 차원(여기서, 3 채널 내지 1 채널로)을 포함하여, 출력 데이터(여기서, 12 x 12 내지 8 x 8 픽셀)와 비교하여 입력 데이터의 차원을 변경할 수 있다.
[0052] 컴퓨팅 부담(예를 들어, 초당 부동 소수점 연산들(FLOP)으로 측정됨)과 콘볼루션 층들을 포함하는 신경망과 관련된 파라미터들 개수를 줄이는 하나의 방식은 콘볼루션 층들을 인수분해하는 것이다. 예를 들어, 도 2에 묘사된 바와 같은 공간 분리 가능한 콘볼루션은 2 개의 성분들로 인수분해될 수 있다: (1) 각각의 공간 채널이 깊이별 콘볼루션(예를 들어, 공간 융합)에 의해 독립적으로 콘볼루션되는 깊이별 콘볼루션; (2) 모든 공간 채널들이 선형적으로 결합되는 점별 콘볼루션(예를 들어, 채널 융합). 깊이별 분리 가능한 콘볼루션의 예는 도 3a 및 도 3b에 묘사된다. 일반적으로, 공간 융합 동안, 네트워크는 공간 평면들에서 특징들을 학습하고, 채널 융합 동안, 네트워크는 채널들 전체에서 이러한 특징들 간의 관계들을 학습한다.
[0053] 일 예에서, 깊이별 분리 가능한 콘볼루션은 공간 융합을 위한 5x5 커널들, 및 채널 융합을 위한 1x1 커널을 사용하여 구현될 수 있다. 특히, 채널 융합은 깊이(d)의 입력 이미지의 모든 단일 지점을 반복하는 1x1xd 커널을 사용할 수 있고, 여기서 커널의 깊이(d)는 일반적으로 입력 이미지의 채널 개수와 매칭한다. 점별 콘볼루션을 통한 채널 융합은 효율적인 컴퓨팅들을 위한 차원 축소에 유용하다. 1x1xd 커널들을 적용하고 커널 뒤에 활성화 층을 추가하는 것은 네트워크에 깊이가 추가되고, 이는 네트워크 성능을 증가시킬 수 있다.
[0054] 특히, 도 3a에서, 12 픽셀 x 12 픽셀 x 3 채널 입력 이미지(302)는 각각 5 x 5 x 1 차원을 갖는 3 개의 개별 커널들(304A-C)을 포함하는 필터로 콘볼루션되어, 8 픽셀 x 8 픽셀 x 3 채널들의 특징 맵(306)을 생성하고, 여기서 각각의 채널은 커널들(304A-C) 중 개별 커널에 의해 생성된다.
[0055] 이어서, 특징 맵(306)은 8 픽셀 x 8 픽셀 x 1 채널의 특징 맵(310)을 생성하기 위해 1 x 1 x 3 차원을 갖는 커널(308)과의 점별 콘볼루션 연산을 사용하여 추가로 콘볼루션된다. 이 예에 묘사된 바와 같이, 특징 맵(310)은 감소된 차원(1 채널 대 3 채널들)을 가지며, 이는 이를 통해 더 효율적인 컴퓨팅들을 가능하게 한다.
[0056] 도 3a 및 도 3b에서 깊이별 분리 가능한 콘볼루션의 결과가 도 2의 기존 콘볼루션과 실질적으로 유사하지만, 컴퓨팅들의 횟수는 크게 줄어들고, 따라서 깊이별 분리 가능 콘볼루션은 네트워크 설계가 허용하는 경우 상당한 효율성 이득을 제공한다.
[0057] 도 3b에 묘사되지는 않았지만, 다수의(예를 들어, m 개) 점별 콘볼루션 커널(308)(예를 들어, 필터의 개별 구성요소들)은 콘볼루션 출력의 채널 차원을 증가시키는 데 사용될 수 있다. 따라서, 예를 들어, m = 256 1x1x3 커널들(308)이 생성될 수 있고, 여기서 각각의 출력은 8 픽셀 x 8 픽셀 x 1 채널 특징 맵(예를 들어, 특징 맵(310))이고, 이러한 특징 맵들은 8 픽셀 x 8 픽셀 x 256 채널들의 결과 특징 맵을 얻도록 적층될 수 있다. 채널 차원의 결과적인 증가는 훈련을 위한 더 많은 파라미터들을 제공하고, 이는 (예를 들어, 입력 이미지(302)에서) 특징들을 식별하는 콘볼루션 신경망의 능력을 개선시킬 수 있다.
예시적인 메모리 내 컴퓨팅(CIM) 아키텍처
[0058] 도 4는 CIM 어레이로 구현될 수 있는 SRAM(Static Random Access Memory)의 예시적인 메모리 셀(400)을 예시한다. 메모리 셀(400)은 메모리 셀(400)이 8 개의 트랜지스터들로 구현되므로 8-트랜지스터(8T) SRAM 셀로 지칭될 수 있다.
[0059] 도시된 바와 같이, 메모리 셀(400)은 출력(414) 및 출력(416)을 갖는 교차 결합된 인버터 쌍(424)을 포함할 수 있다. 도시된 바와 같이, 교차 결합된 인버터 쌍 출력(414)은 패스 게이트 트랜지스터(pass-gate transistor)(402)를 통해 쓰기 비트 라인(WBL)(406)에 선택적으로 결합되고, 교차 결합된 인버터 쌍 출력(416)은 패스 게이트 트랜지스터(418)를 통해 상보적 쓰기 비트 라인(WBLB)(420)에 선택적으로 결합된다. WBL(406) 및 WBLB(420)는 교차 결합된 인버터 쌍(424)에 쓰여질(예를 들어, 저장되는) 상보적 디지털 신호들을 제공하도록 구성된다. WBL 및 WBLB는 메모리 셀(400)에 신경망 가중치에 대한 비트를 저장하는 데 사용될 수 있다. 패스 게이트 트랜지스터들(402, 418)의 게이트들은 도시된 바와 같이 쓰기 워드 라인(WWL)(404)에 결합될 수 있다. 예를 들어, 쓰여질 디지털 신호는 WBL에 제공될 수 있다(그리고 디지털 신호의 보수는 WBLB에 제공됨). 이어서, 여기서 n 형 전계 효과 트랜지스터(NFET)들로 구현된 패스 게이트 트랜지스터들(402, 418)은 논리 하이 신호를 WWL(404)에 제공함으로써 턴온되어, 디지털 신호가 교차 결합된 인버터 쌍(424)에 저장되게 한다.
[0060] 도시된 바와 같이, 교차 결합된 인버터 쌍 출력(414)은 트랜지스터(410)의 게이트에 결합될 수 있다. 트랜지스터(410)의 소스는 기준 전위 노드(VSS 또는 전기 접지)에 결합될 수 있고, 트랜지스터(410)의 드레인은 트랜지스터(412)의 소스에 결합될 수 있다. 도시된 바와 같이, 트랜지스터(412)의 드레인은 읽기 비트 라인(RBL)(422)에 결합될 수 있다. 트랜지스터(412)의 게이트는 읽기 워드 라인(RWL)(408)을 통해 제어될 수 있다. RWL(408)은 활성화 입력 신호를 통해 제어될 수 있다.
[0061] 읽기 사이클 동안, RBL(422)은 논리 하이로 사전충전될 수 있다. 활성화 입력 및 교차 결합된 인버터 쌍 출력(414)에 저장된 가중치 비트 둘 모두가 논리 하이인 경우, 트랜지스터들(410, 412)은 둘 모두 턴온되어, RBL(422)을 트랜지스터(410)의 소스의 VSS에 전기적으로 결합하고 RBL(422)을 논리 로우로 방전시킨다. 활성화 입력 또는 교차 결합된 인버터 쌍 출력(414)에 저장된 가중치가 논리 로우이면, 트랜지스터들(410, 412) 중 적어도 하나는 턴오프되어, RBL(422)은 논리 하이를 유지한다. 따라서, RBL(422)에서 메모리 셀(400)의 출력은 가중치 비트와 활성화 입력 둘 모두가 논리 하이인 경우에만 논리 로우이고, 그렇지 않은 경우 논리 하이이며, NAND 게이트 연산을 효과적으로 구현한다.
[0062] 도 5a는 본 개시내용의 소정 양태들에 따른 CIM을 위한 회로(500)를 예시한다. 회로(500)는 워드 라인들(5040 내지 50431)(또한 행들로 지칭됨) 및 열들(5060 내지 5067)을 갖는 CIM 어레이(501)를 포함한다. 워드 라인들(5040 내지 50431)은 워드 라인(WL)(504)들로 통칭되고, 열들(5060 내지 5067)은 열들(506)로 통칭된다. 도시된 바와 같이, CIM 어레이(501)는 활성화 신호들을 워드 라인들(504)에 제공하도록 구성된 활성화 회로(590)를 포함할 수 있다. CIM 어레이(501)는 이해를 돕기 위해 32 개의 워드 라인들과 8 개의 열들로 구현되었지만, CIM 어레이는 임의의 개수의 워드 라인들이나 열들로 구현될 수 있다. 도시된 바와 같이, 메모리 셀들(5020-0 내지 50231-7)(통칭하여 메모리 셀들(502)로 지칭됨)은 WL들(504)과 열들(506)의 교차점들에 구현된다.
[0063] 메모리 셀들(502) 각각은 도 4와 관련하여 설명된 메모리 셀 아키텍처를 사용하여 구현될 수 있다. 도시된 바와 같이, 활성화 입력들(a(0,0) 내지 a(31,0))은 개개의 워드 라인들(504)에 제공될 수 있고, 메모리 셀들(502)은 신경망 가중치들(w(0,0) 내지 w(31,7))을 저장할 수 있다. 예를 들어, 메모리 셀들(5020-0 내지 5020-7)은 가중치 비트들(w(0,0) 내지 w(0,7))을 저장할 수 있고, 메모리 셀들(5021-0 내지 5021-7)은 가중치 비트들(w(1,0) 내지 w(1,7))을 저장할 수 있는 등일 수 있다. 각각의 워드 라인은 다수의 비트 가중치를 저장할 수 있다. 예를 들어, 가중치 비트들(w(0,0) 내지 w(0,7))은 신경망 가중치의 8 비트를 나타낸다.
[0064] 도시된 바와 같이, 회로(500)는 가산기 트리(5100 내지 5107)(통합적으로 가산기 트리(510)로 지칭됨)를 포함할 수 있으며, 가산기 트리 각각은 열들(506) 중 개개의 열에 대해 구현된다. 가산기 트리들(510) 각각은 메모리 셀들(502)로부터의 출력 신호들을 열들(506) 중 개개의 열에 가산한다. 각각의 가산기 트리는 가산기 회로(511)와 같은 가산기 회로들의 트리를 사용하여 구현된다. 가산기 트리들(510)의 출력들은 도시된 바와 같이 가중치 시프트 가산기 트리 회로(512)에 결합된다. 가중치 시프트 가산기 트리 회로(512)는 다수의 가중치 시프트 가산기들(예를 들어, 가중치 시프트 가산기(514))를 포함하고, 가중치 시프트 가산기들 각각은 비트 시프트 및 가산 연산의 수행을 용이하게 하기 위해 비트 시프트 및 가산 회로를 포함한다. 즉, 열(5060)의 메모리 셀들은 개개의 가중치들에 대한 최상위 비트(MSB)들을 저장할 수 있고, 열(5067)의 메모리 셀들은 개개의 가중치들에 대한 최하위 비트(LSB)들을 저장할 수 있다. 그러므로, 열들(506)에 걸쳐 가산을 수행할 때, 비트 시프트 연산은 연관된 열의 비트들의 중요성을 설명하기 위해 비트들을 시프트하도록 수행된다.
[0065] 가중치 시프트 가산기 트리 회로(512)의 출력은 활성화 시프트 누산기 회로(516)에 제공된다. 활성화 시프트 누산기 회로(516)는 비트 시프트 회로(518)와 누산기(520)를 포함한다. 활성화 시프트 누산기 회로(516)는 또한 플립플롭(FF)(522) 및 FF(591)를 포함할 수 있다.
[0066] 회로(500)의 연산 동안, 활성화 회로(590)는 제1 활성화 사이클 동안 컴퓨팅을 위해 활성화 입력들(a(0,0) 내지 a(31,0))의 제1 세트(599)를 메모리 셀(502)에 제공한다. 제1 활성화 입력들의 세트(a(0,0) 내지 a(31,0))는 활성화 파라미터들의 최상위 비트들을 나타낸다. 각각의 열의 컴퓨팅들의 출력들은 가산기 트리(510) 중 개개의 가산기 트리를 사용하여 가산된다. 가산기 트리들(510)의 출력들은 가중치 시프트 가산기 트리 회로(512)를 사용하여 가산되고, 그 결과는 활성화 시프트 누산기에 제공된다. 동일한 연산은 활성화 파라미터들의 제2 최상위 비트들을 나타내는 활성화 입력들(a(0,1) 내지 a(31,1)) 같은 후속 활성화 사이클들 동안 다른 활성화 입력들의 세트들에 대해 수행되고, 활성화 파라미터들의 최하위 비트들을 나타내는 활성화 입력들이 프로세싱될 때까지 계속된다. 비트 시프트 회로(518)는 활성화 사이클에 기반하여 비트 시프트 동작을 수행한다. 예를 들어, 8 개의 활성화 사이클들을 사용하여 프로세싱된 8 비트 활성화 파라미터의 경우, 비트 시프트 회로는 제1 활성화 사이클에 대해 8 비트 시프트를 수행하고, 제2 활성화 사이클에 대해 7 비트 시프트를 수행할 수 있는 등이다. 활성화 사이클들 후에, 비트 시프트 회로(518)의 출력들은 누산기(520)를 사용하여 누산되고 전송 레지스터를 구현할 수 있는 FF들(522, 591)에 저장된다.
[0067] 회로(500)의 아키텍처는 가중치 시프트 가산기 트리 회로(512)와 같은 프로세싱 회로의 대칭 구조로 인해 "폴딩(folding)" 아키텍처로 지칭된다. 폴딩 아키텍처는 컴퓨팅 동안 사용되는 가중치들과 연관된 비트들의 개수의 구성 가능성을 허용한다. 예를 들어, 8 비트 가중치들을 사용하는 컴퓨팅 대신에, 4 비트 가중치들을 사용하는 컴퓨팅은 본원에 더 상세히 설명된 바와 같이, 열들(506) 중 4 개를 비활성화함으로써 구현될 수 있다.
[0068] 도 5a와 관련하여 설명된 양태들은 비트별 저장 및 비트별 곱셈을 제공한다. 가산기 트리(510)는 열들(506)에 대한 모집단 카운트 가산을 수행한다. 즉, 가산기 트리들(510) 각각은 열에 대한 메모리 셀들의 출력 신호들을 가산한다. 가중치 시프트 가산기 트리 회로(512)(예를 들어, 8 개의 열들에 대해 도시된 바와 같이 3 개의 스테이지들을 가짐)는 8 개의 열들에 대해 생성된 가중 합을 결합한다(예를 들어, 활성화 사이클 동안 주어진 활성화 비트 포지션에 대한 누산 결과를 제공). 활성화 시프트 누산기 회로(516)는 다수(예를 들어, 8 개)의 활성화 사이클들로부터의 결과들을 결합하고 최종 누산 결과를 출력한다. 예를 들어, 비트 시프트 회로(518)는 연관된 활성화 사이클에 기반하여 가중치 시프트 가산기 트리 회로(512)의 출력에서 비트들을 시프트한다. 직렬 누산기(520)는 비트 시프트 회로(518)에 의해 생성된 시프트된 가산기 출력을 누산한다. FF들(522, 591)을 사용하여 구현된 전송 레지스터는 마지막 활성화 사이클에 대한 컴퓨팅이 완료된 후 직렬 누산기(520)의 출력을 복사한다.
[0069] 열들 전체에 걸친 병렬 가산은 회로(500)와 연관된 프로세싱 성능(TOPS(초당 테라 연산) 측면에서)을 증가시키고, 더 컴팩트한 전가산기 셀을 제공하고, 가산기들이 비트 곱셈 메모리 셀들 옆에 구현되므로 기생 페널티들을 줄이고, 더 적은 수의 메모리 행들이 기존 구현들에 비해 높은 활성화 진폭을 갖기 때문에 스위칭 활동을 줄이고, 셀들이 가산기 트리의 실현을 위해 인접 구성으로 나란히 배치되어 쉽게 매크로 생성을 가능하게 하는 쉬운 타일링을 제공한다. 도 5a와 관련하여 설명된 양태들은 단일 클록 주파수로 구현될 수 있다.
[0070] 회로(500)는 상이한 비트 크기들의 활성화 또는 가중치 파라미터들을 사용하여 컴퓨팅에 걸쳐 선형 에너지 스케일링을 제공한다. 즉, 가산기 트리들(510) 및 가중치 시프트 가산기 트리 회로(512)를 사용하는 것은 비트 크기 구성 가능성을 제공하고, 이는 본원에 설명된 바와 같이 m 비트 가중치 누산으로 n 비트 활성화를 허용하고, n 및 m은 양의 정수들이다. 회로(500)와 연관된 에너지 소비는 활성화 파라미터들 및 가중치들에 대해 구성된 비트 크기에 기반하여 선형적으로 스케일링된다.
[0071] 도 5b는 가산 연산을 수행하도록 구성된 가산기 회로(585)의 예시적인 구현을 예시한다. 가산기 회로(585)는 가산기 회로(511)와 같이, 본원에 설명된 임의의 가산기 회로들에 대응할 수 있다. 도시된 바와 같이, 가산기 회로는 입력들(570, 571)(A 및 B로 표시됨)을 수신하는 배타적 OR(XOR) 게이트(573)를 포함한다. XOR 게이트(573)의 출력은 XOR 게이트(574)의 입력에 제공되고, XOR 게이트(574)의 다른 입력은 캐리 입력(carry input)(Cin) 신호(572)를 수신한다. XOR 게이트(574)의 출력은 가산기 회로의 출력(SUM으로 표시됨)을 제공한다. 도시된 바와 같이, 가산기 회로는 Cin 신호(572)를 수신하고 XOR 게이트(573)의 출력을 수신하는 AND 게이트(575)를 또한 포함할 수 있다. AND 게이트(576)는 입력들(570, 571)을 수신한다. AND 게이트들(575, 576)의 출력들은 가산 연산을 위한 캐리아웃 신호를 생성하는 OR 게이트(578)의 입력들에 제공된다. 도 5b는 이해를 용이하게 하기 위해 가산기 회로의 하나의 예시적인 구현을 예시하지만, 본원에 설명된 양태들은 임의의 적합한 가산기 회로 아키텍처를 사용하여 구현될 수 있다.
[0072] 도 5c는 누산기(587)의 예시적인 구현이다. 누산기(587)는 누산기(520)와 같이 본원에 설명된 임의의 누산기들에 대응할 수 있다. 도시된 바와 같이, 누산기(520)는 도시된 바와 같이 입력 신호를 수신하는 가산기 회로(580)를 포함한다. 가산기 회로(580)의 출력은 레지스터(581)에 제공되는 클록 신호의 각각의 사이클마다 가산기 회로의 출력을 저장하도록 구성된 레지스터에 제공된다. 레지스터(581)의 출력(582)은 도시된 바와 같이 누산기(587)의 출력으로 사용되고, 가산기 회로(580)의 입력으로 피드백된다. 도 5c는 이해를 용이하게 하기 위해 누산기의 하나의 예시적인 구현을 예시하지만, 본원에 설명된 양태들은 임의의 적합한 누산기 아키텍처를 사용하여 구현될 수 있다.
[0073] 도 6은 본 개시내용의 소정 양태들에 따라 비트 열 가산기 트리 회로(650) 및 열 누산기 회로(652)를 사용하여 구현된 CIM용 회로(600)를 예시한다. 비트 열 가산기 트리 회로(650)는 다수의 열들(506)에 연결되는 다수의 감지 증폭기들(6020, 6021 내지 6027)의 출력들에 결합된 입력들을 가지며, 여기서 각각의 열은 다수의 비트 라인들(예를 들어, RBL)을 갖는다. 예를 들어, 열들(506) 각각은 4 개의 비트 라인들을 가질 수 있고, 각각의 비트 라인은 4 개의 감지 증폭기들(예를 들어, 감지 증폭기들(6020)) 중 하나의 입력에 결합된다. CIM 어레이(501)의 워드 라인들은 다수의 워드 라인 그룹들(예를 들어, 8 개의 그룹들)을 포함할 수 있고, 각각의 그룹은 4 개의 워드 라인들을 갖는다. 4 개의 워드 라인들의 각각의 그룹의 각각의 워드 라인은 각각의 열의 4 개의 비트 라인들 중 개개의 비트 라인에 결합된다. 4 개의 워드 라인들의 각각의 그룹은 주어진 컴퓨팅 사이클에서 대응 활성화 신호들에 의해 활성화되는 반면, 나머지 워드 라인 그룹들의 활성화 신호들은 논리 로우로 설정된다. 워드 라인 그룹들(예를 들어, 이 예에서 총 32 개의 워드 라인들에 대한 8 개의 워드 라인 그룹들)은 총 8 개의 클록 사이클들에서 프로세싱된다. 감지 증폭기들(6020, 6021 내지 6027)은 통칭하여 감지 증폭기들(602)로 지칭된다. 다수의 감지 증폭기들(예를 들어, 4 개)은 열들(506) 각각에 포함되어, 다수의 열들이 동시에 감지되게 한다. 예를 들어, 감지 증폭기들(6020)은 열(5060)의 개개의 메모리 셀들(5020-0 내지 5023-0)의 출력들을 동시에 감지하고, 감지 증폭기들(6021)은 열(5061)의 개개의 메모리 셀들(5020-1 내지 5023-1)의 출력들을 동시에 감지하고 열(5067)의 개개의 메모리 셀들(5020-7 내지 5023-7)의 출력들을 동시에 감지하는 감지 증폭기들(6027)까지 계속된다. 각각의 열에 대한 감지 증폭기들의 출력들은 가산기 트리(예를 들어, 가산기 트리들(6040, 6041 내지 6047), 통칭하여 가산기 트리들(604))에 결합된다. 가산기 트리들(604)들을 구현하는 데 사용되는 가산기 회로들 각각은 도 5b와 관련하여 설명된 바와 같이 구현될 수 있다.
[0074] 단순화를 위해, 감지 증폭기들(602) 각각은 단일 메모리 셀의 출력에 결합된 입력을 갖는 것으로 도시된다. 그러나, 감지 증폭기들(602) 각각의 입력은 순차적 방식으로 활성화될 수 있는 다수의 메모리 셀들의 출력에 결합될 수 있다. 즉, 각각의 열에 4 개의 감지 증폭기들을 사용하여, 4 개의 워드 라인들은 각각의 열에서 한 번에 활성화될 수 있다. 예로서, 감지 증폭기들(6020)의 입력들은 도시된 바와 같이 제1 워드 라인들의 그룹(예를 들어, 워드 라인들(5040 내지 5043))에 대한 개개의 메모리 셀들의 출력들에 결합될 수 있지만, 또한 제2 워드 라인들의 그룹(예를 들어, 워드 라인들(5044 내지 5047))에 대한 개개의 메모리 셀들의 출력들에 결합되고, 제3 워드 라인들의 그룹(예를 들어, 워드 라인(5048 내지 50411))에 대한 개개의 메모리 셀들의 출력들에 결합되고, 마지막 워드 라인들의 그룹(예를 들어, 워드 라인들(50428 내지 50431)까지 계속된다. 따라서, 32 개의 워드 라인들과 열당 4 개의 감지 증폭기들에 대해, 8 개의 컴퓨팅 사이클들은 활성화 입력들의 세트(예를 들어, 활성화 입력들(a(0,0) 내지 a(31,0))에 대한 컴퓨팅들을 완료하는 데 사용될 수 있다.
[0075] 설명된 바와 같이, 가산기 트리들(604)의 출력들은 열 누산기 회로(652)에 결합된다. 예를 들어, 가산기 트리들(604) 각각의 출력들은 열 누산기 회로(652)의 누산기들(6060, 6061, 내지 6067)(통칭하여 누산기들(606)) 중 하나에 결합된다. 누산기들(606) 각각은 도 5c와 관련하여 설명된 바와 같이 구현될 수 있다. 누산기들(606) 각각은 다수의 컴퓨팅 사이클들에 걸쳐 가산기 트리들(604) 개개의 가산기 트리의 출력 신호들의 누산을 수행한다. 예를 들어, 각각의 컴퓨팅 사이클 동안, 컴퓨팅은 4 개의 워드 라인들에 대해 수행되고, 4 개의 워드 라인들에 대한 컴퓨팅들의 출력 신호들은 비트 열 가산기 트리 회로(650)의 가산기 트리들(604)을 사용하여 가산된다. 다수의 컴퓨팅 사이클들(예를 들어, 4 개의 감지 증폭기들을 사용할 때 32 개의 워드 라인들에 대한 8 개의 사이클들) 후에, 누산기들(606) 각각은 가산기 트리들(604) 중 개개의 가산기 트리의 출력 신호들의 누산을 수행한다.
[0076] 다수의 컴퓨팅 사이클들이 완료되면, 누산기들(606)의 출력들은 열들에 걸쳐 가산을 위해 가중치 시프트 가산기 트리 회로(512)에 제공되고, 가중치 시프트 가산기 트리 회로(512)의 출력은 활성화 사이클들에 걸친 누산을 위해 활성화 시프트 누산기 회로(516)에 제공되고, 이는 도 5a에 관하여 설명된 바와 같다. 즉, 비트 단위 누산은 다수의 컴퓨팅 사이클들(예를 들어, 8 개의 컴퓨팅 사이클들, 각각의 컴퓨팅 사이클은 32 개의 워드 라인들에 대한 컴퓨팅이 완료될 때까지 4 개의 워드 라인들에 대한 것임)에 걸쳐 누산기들(606) 각각에서 발생한다. 가중치 시프트 가산기 트리 회로(512)는 가중 합들의 8 개 열들을 결합하고(예를 들어, 각각의 활성화 사이클 동안 주어진 활성화 비트 포지션에 대한 누산 결과 제공), 활성화 시프트 누산기 회로(516)는 다수(예를 들어, 8)의 활성화 사이클들로부터의 결과들을 결합하여 최종 누산 결과를 출력한다. 일부 양태들에서, CIM 어레이(501), 비트 열 가산기 트리 회로(650) 및 열 누산기 회로(652)는 가중치 시프트 가산기 트리 회로(512) 및 활성화 시프트 누산기 회로(516)보다 더 높은 주파수(예를 들어, 8 개의 컴퓨팅 사이클들을 사용하여 구현될 때 8 배, 또는 여전히 8 개의 컴퓨팅 사이클들을 사용하면서 임계 경로 지연의 한계에 의해 결정되는 8 배 미만)에서 동작한다. 도시된 바와 같이, 하프 래치 회로들(6080, 6081 내지 6087)(통칭하여 하프 래치 회로(608)로 지칭됨)은 누산기들(606)의 개개의 출력들에 결합될 수 있다. 각각의 하프 래치 회로는 누산기들(606) 중 개개의 누산기의 출력을 보유하고, 다수의 컴퓨팅 사이클들이 완료되면 가중치 시프트 가산기 트리 회로(512)의 개개의 입력에 출력을 제공한다. 즉, 하프 래치 회로는 일반적으로 클록 사이클의 시작에서 디지털 입력(예를 들어, 누산기들(606) 중 하나의 출력)을 유지하고 클록 사이클의 끝에서 디지털 입력을 클록 사이클의 출력에 제공하는 래치 회로를 지칭한다. 하프 래치 회로들(608)은 열 누산기 회로(652)의 더 높은 주파수 동작(예를 들어, 도시된 바와 같이 8x)에서 가중치 시프트 가산기 트리 회로(512)의 더 낮은 주파수 동작(예를 들어, 도시된 바와 같이 1x)으로의 전이를 가능하게 한다.
[0077] 도 7은 본 개시내용의 소정 양태들에 따라 회로(600)와 연관된 신호들을 예시하는 타이밍도(700)이다. 회로(600)는 디지털 메모리 내 컴퓨터(DCIM) 클록에서 동작할 수 있다. DCIM 클럭은 회로들(500, 600)이 동작하는 메인 클럭으로 사용될 수 있다. DCIM 클록의 8 개의 사이클들 후에, 최종 누산 출력은 8 비트 활성화 입력들과 가중치들의 곱셈을 위해 제공될 수 있다. 도시된 바와 같이, 로컬 클록으로 지칭되는 더 높은 주파수 클록 신호는 더 낮은 주파수 DCIM 클록으로부터 생성될 수 있다. 예를 들어, 로컬 클록은 DCIM 클록의 주파수보다 8 배 더 큰 주파수를 가질 수 있다.
[0078] 도시된 바와 같이, 활성화 입력들 각각의 1 비트는 DCIM 클록의 8 개의 사이클들의 각각 동안 제공된다. 예를 들어, 비트들(a(0,0) 내지 a(31,0))(예를 들어, 상이한 활성화 입력들의 MSB들)은 제1 활성화 사이클(예를 들어, DCIM 클록의 제1 사이클) 동안 메모리 셀들에 제공되고, 비트들(a(0,1) 내지 a(31,1))(예를 들어, 상이한 활성화 입력들의 제2 MSB(MSB-1)들)은 제2 활성화 사이클(예를 들어, DCIM 클록의 제2 사이클) 동안 메모리 셀들에 제공되는 식이다.
[0079] 로컬 클록의 각각의 사이클 동안, 감지 증폭기들(602)의 출력들("SA Out"으로 표시됨)과 가산기 트리들(604)의 출력들("Col Add Out"으로 표시됨)은 컴퓨팅 사이클을 위해 제공된다. 로컬 클록의 각각의 사이클 동안, SA Out 및 Col Add Out은 워드 라인들(504)의 서브세트의 메모리 셀들에 대한 출력을 제공한다(예를 들어, 도 6과 관련하여 설명된 예에서 4 개의 워드 라인들에 대해). 예를 들어, 로컬 클록의 제1 사이클 동안, 가산기 트리(6040)에 대한 Col Add Out은 메모리 셀들(5020-0내지 5023-0)에 의해 수행되는 컴퓨팅들을 위해 제공되고, 로컬 클록의 제2 사이클 동안, Col Add Out은 메모리 셀들(5024-0 내지 5027-0)에 의해 수행되는 컴퓨팅들을 위해 제공되고, Col Add Out이 메모리 셀들(50228-0 내지 50231-0)에 의해 수행되는 컴퓨팅들을 위해 제공될 때까지 계속된다(여기서 로컬 클록의 8 개의 사이클들 이후).
[0080] 도시된 바와 같이, 열 누산기 회로(652)의 출력("Col Acc Latch"로 표시됨)과 가중치 시프트 가산기 트리 회로(512)의 출력("Weight Shift Add Out"으로 표시됨)은 8 개의 로컬 클록 사이클들(예를 들어, 단일 DCIM 클록 사이클 이후) 이후 제공된다. 활성화 시프트 누산기 회로(516)는 8 개의 DCIM 클록 사이클들에 걸쳐 Weight Shift Add Out을 누산하고, 8 개의 DCIM 클록 사이클들 끝에 출력("Acc Out"으로 표시됨)을 제공한다.
[0081] 일부 양태들에서, 활성화 입력들 및/또는 가중치들과 연관된 비트들의 개수는 구성가능할 수 있다. 비트 열 가산기 트리 회로(650)는 단일 비트까지의 가중치들에 대한 비트들의 개수의 구성 가능성을 허용한다. 예를 들어, 4 비트 가중치들을 구현하기 위해, 본원에 더 상세히 설명된 바와 같이, 열들(5064, 5065, 5066, 5067)과 연관된 회로는 비활성화될 수 있다.
[0082] 도 8a, 도 8b 및 도 8c는 본 개시내용의 소정 양태들에 따라 구성 가능한 비트 크기의 가중치들을 갖는 CIM 회로를 예시하는 블록도들이다. 예를 들어, 도 8a에 도시된 바와 같이, 8 비트 가중치들은 메모리 셀들(502)에 저장될 수 있고, 본원에 설명된 바와 같이 비트 열 가산기 트리 회로(650), 열 누산기 회로(652), 가중치 시프트 가산기 트리 회로(512) 및 활성화 시프트 누산기 회로(516)를 사용하여 프로세싱될 수 있다.
[0083] 도시된 바와 같이, 클록 생성기 회로(870)는 DCIM 클록을 생성하도록 구성된 클록 생성기(871)를 포함할 수 있다. 클록 생성기(871)는 위상 고정 루프(PLL) 또는 링 발진기와 같은 임의의 적합한 클록 생성 회로를 사용하여 구현될 수 있다. 가중치 시프트 가산기 트리 회로(512)는 도 7과 관련하여 설명된 DCIM 클록을 수신하여 동작할 수 있다. 소정 양태들에 대해, 클록 생성기 회로(870)는 활성화 회로(590), 비트 열 가산기 트리 회로(650) 및 열 누산기 회로(652)가 동작하는 것에 기반하여, 로컬 클록을 생성하는 데 사용될 수 있는 주파수 승산기(802)를 포함할 수 있다. 주파수 승산기(802)가 클록 생성기 회로(870)의 일부인 것으로 도시되어 있지만, 주파수 승산기(802)는 일부 구현들에서 클록 생성기(871)로부터 분리될 수 있다. 주파수 승산기는 일반적으로 제1 주파수를 갖는 클록 신호를 수신하고, 제2의 상이한 주파수를 갖는 제2 클록 신호를 생성하는 임의의 회로를 지칭하고, 여기서 제2 주파수는 제1 주파수의 배수이다.
[0084] 일부 양태들은 도 8b 및 도 8c와 관련하여 설명된 바와 같이 윙-직렬 동작(wing-serial operation)을 사용하는 컴퓨팅 기법들을 제공한다. 본원에 사용된 바와 같이, CIM 회로의 경우, "윙-직렬 동작(wing-serial operation)"은 일반적으로 하나의 윙(CIM 회로의 하나의 프로세싱 경로)에서 동작하고 이어서 다른 윙(CIM 회로의 다른 프로세싱 경로)에서 동작하는 것을 지칭한다. 예를 들어, 4 비트 가중치들은 제1 4 비트 가중치 컴퓨팅을 수행하는 데 사용될 4개의 열들의 세트(예를 들어, 열들(5064, 5065, 5066, 5067))의 메모리 셀들에 저장될 수 있고, 4 비트 가중치들은 제2 4 비트 가중치 컴퓨팅을 수행하는 데 사용될 다른 4 개의 열들의 세트(예를 들어, 열들(5060, 5061, 5062, 5063))의 메모리 셀들에 저장될 수 있다. 4 개의 열들의 2 개의 세트들은 분리된 세트들일 수 있다. 제공된 예에서, 4 비트 가중치 컴퓨팅이 열들(5060, 5061, 5062, 5063)에 대해 수행되기 전에 4 개의 열들(5064, 5065, 5066, 5067)에 대해 수행되지만, 컴퓨팅들은 역순으로 수행될 수 있다. 예를 들어, 4 비트 가중치 컴퓨팅은 4 비트 가중치 컴퓨팅이 열들(5064, 5065, 5066, 5067)에 대해 수행되기 전에 열들(5060, 5061, 5062, 5063)에 대해 수행될 수 있다.
[0085] 도 8b는 제1 4 비트 가중치 컴퓨팅이 수행되는 제1 사이클을 나타낸다. 제1 사이클 동안, 열들(5064, 5065, 5066, 5067)에 대한 신호들을 프로세싱하는 데 사용되는 비트 열 가산기 트리 회로(650)와 열 누산기 회로(652)의 회로는 비활성화된다. 예를 들어, 클록 게이팅 회로(804)는 전력 소비를 줄이기 위해 제1 사이클 동안 누산기들(6064, 6065, 6066, 6067)에 제공된 클록들을 비활성화하는 데 사용될 수 있다. 본원에 사용된 바와 같이, 클록 게이팅 회로는 일반적으로 클록 신호(예를 들어, 클록 신호를 수신하는 제1 입력을 갖는 AND 게이트)를 수신하고, 제어 신호에 응답하여 클록 신호를 회로의 출력에 제공하는 임의의 회로를 지칭한다(예를 들어 AND 게이트의 제2 입력에 제공되는 제어 신호는 논리 하이임). 제1 사이클의 끝에서, 활성화 시프트 누산기 회로(516)는 제1 4비트 가중치 컴퓨팅에 대한 결과들을 제공한다.
[0086] 도 8c는 제2 4비트 가중치 컴퓨팅이 수행되는 제2 사이클을 도시한다. 제2 사이클 동안, 열들(5060, 5061, 5062, 5063)에 대한 신호들을 프로세싱하는 데 사용되는 비트 열 가산기 트리 회로(650)와 열 누산기 회로(652)의 회로는 비활성화된다. 예를 들어, 클록 게이팅 회로(804)는 전력 소비를 줄이기 위해 제2 사이클 동안 누산기들(6060, 6061, 6062, 6063)에 제공된 클록들을 비활성화하는 데 사용될 수 있다. 클록 게이팅 기법은 이해를 용이하게 하기 위해 열 누산기 회로(652)에 대한 클록 신호들에 대해서만 도시되지만, 클록 게이팅 기법은 비트 열 가산기 트리의 회로와 같이 사용되지 않는 다른 회로들에 대한 클록 신호들을 비활성화하는 데 사용될 수 있다.
메모리 내 디지털 컴퓨팅(CIM)에 대한 예시 동작들
[0087] 도 9는 본 개시내용의 소정 양태들에 따른 메모리 내 컴퓨팅을 위한 예시적인 동작들(900)을 예시하는 흐름도이다. 동작들(900)은 도 5a와 관련하여 설명된 회로(500)와 같은 CIM용 회로 또는 도 6과 관련하여 설명된 회로(600)에 의해 수행될 수 있다.
[0088] 동작들(900)은 회로가, 다수의 가산 회로들(예를 들어, 가산기 트리들(510) 또는 누산기들(606)) 각각을 통해, 메모리의 다수의 열들(예를 들어, 열들(506)) 중 개개의 열의 출력 신호들을 가산함으로써 블록(905)에서 시작된다. 복수의 메모리 셀들은 다수의 열들 각각에 있고, 복수의 메모리 셀들은 신경망의 가중치들(예를 들어, 도 5a에 도시된 w(0,0) 내지 w(31,7))를 나타내는 다수의 비트들을 저장한다. 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들(예를 들어, 워드 라인들(504))에 있다.
[0089] 블록(910)에서, 회로는, 제1 가산기 회로(예를 들어, 가중치 시프트 가산기 트리 회로(512))를 통해, 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산한다. 블록(915)에서, 회로는 누산기(예를 들어, 누산기(520) 또는 활성화 시프트 누산기 회로(516))를 통해, 제1 가산기 회로의 출력 신호들을 누산한다. 일부 양태들에서, 회로는 가중치들 각각과 연관된 비트들의 개수에 기반하여 다수의 가산 회로들 중 하나 이상의 및/또는 제1 가산기 회로의 하나 이상의 부분들을 선택적으로 디스에이블한다.
[0090] 일부 양태들에서, 다수의 열들 중 개개의 열의 출력 신호들을 가산하는 것은 워드 라인들 중 2 개 이상이 순차적으로 활성화된 후 다수의 열들 중 개개의 열 상의 메모리 셀들의 출력 신호들을 (예를 들어, 누산기들(606)을 통해) 누산하는 것을 포함할 수 있다. 일부 양태들에서, 회로는 다수의 가산 회로들 각각과 다수의 열들 중 개개의 열 사이에 결합된 제2 가산기 회로(예를 들어, 가산기 트리들(604) 각각)를 통해, 다수의 열들 중 개개의 열과 워드 라인들 중 2 개 이상에 있는 메모리 셀들의 출력 신호들을 가산한다. 일부 양태들에서, 회로는 제2 가산기 회로와 다수의 열들 중 개개의 열 사이에 결합된 감지 증폭기(예를 들어, 감지 증폭기들(602))를 통해, 다수의 열들 중 개개의 열과 워드 라인들의 2 개 이상에 있는 메모리 셀들의 출력 신호들을 감지한다. 이 경우, 제2 가산기 회로를 통한 가산은 감지된 출력 신호들에 기반한다.
[0091] 일부 양태들에서, 회로는 제1 컴퓨팅 사이클 동안 제1 가산기 회로의 제1 부분 및/또는 가산 회로들 중 적어도 하나를 디스에이블하고, 제2 컴퓨팅 사이클 동안 제1 가산기 회로의 제2 부분과 가산 회로들 중 적어도 다른 하나를 디스에이블한다.
[0092] 일부 양태들에서, 회로는 워드 라인들 중 2 개 이상을 순차적으로 활성화한다. 이 경우, 다수의 가산 회로들 각각을 통해, 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 것은 다수의 가산 회로들(예를 들어 누산기들(606)) 각각을 통해, 워드 라인들 중 2 개 이상이 순차적으로 활성화된 후 다수의 열들 중 개개의 열의 메모리 셀들의 출력 신호들을 누산하는 것을 포함한다.
[0093] 일부 양태들에서, 다수의 가산 회로들 중 적어도 2 개의 출력 신호들의 가산은 다수의 가산 회로들 중 적어도 2 개에 대해 비트 시프트 및 가산 연산을 수행하는 것을 포함한다. 일부 양태들에서, 회로는 제1 클록 신호를 생성하고, 여기서 다수의 가산 회로들은 제1 클록 신호(예를 들어, 도 7에 도시된 로컬 클록)에 기반하여 동작하고, 회로는 제2 클록 신호를 생성하고, 여기서 제1 가산기 회로는 제2 클록 신호(예를 들어, 도 7에 도시된 DCIM 클록)에 기반하여 동작하고, 제2 클록 신호는 제1 클록 신호와 다른 주파수를 갖는다. 일부 양태들에서, 회로는 주파수 승산기(예를 들어, 주파수 승산기(802))를 통해, 제1 클록 신호에 기반하여 제2 클록 신호를 생성한다.
[0094] 일부 양태들에서, 회로는 상이한 활성화 입력들에 기반하여 복수의 메모리 셀들을 순차적으로 활성화하고, 제1 가산기 회로의 출력 신호들의 누산은 복수의 메모리 셀들이 순차적으로 활성화된 후에 발생한다. 예를 들어, 복수의 메모리 셀들을 순차적으로 활성화하는 것은 제1 활성화 사이클 동안 제1 활성화 입력들의 세트(예를 들어, 활성화 입력들(a(0,0) 내지 a(31,0))를 수신하고, 제2 활성화 사이클 동안 제2 활성화 입력들의 세트(예를 들어, 제2 활성화 입력들의 세트(a(0,1) 내지 a(31,1))를 수신하는 것을 포함하고, 여기서 제1 가산기 회로의 출력 신호들을 누산하는 것은 제1 활성화 사이클 및 제2 활성화 사이클 후에 발생한다.
[0095] 일부 양태들에서, 다수의 열들은 다수의 열들의 제1 서브세트(예를 들어, 열들(5060 내지 5063)) 및 다수의 열들의 제2 서브세트(예를 들어, 열들(5064 내지 5067))을 포함한다. 제1 서브세트는 제1 컴퓨팅 사이클(예를 들어, 도 8b에 도시된 사이클 1) 동안 활성화될 수 있다. 제2 서브세트는 제2 컴퓨팅 사이클(예를 들어, 도 8c에 도시된 사이클 2) 동안 활성화될 수 있고, 제2 컴퓨팅 사이클은 제1 컴퓨팅 사이클 이후에 있다.
[0096] 일부 양태들에서, 워드 라인들 각각의 메모리 셀들은 신경망의 가중치들 중 하나를 저장하도록 구성되고, 다수의 열들 중 제1 서브세트의 수량(예를 들어, 도 8b에 도시된 예에서 4 개)은 가중치들 중 하나의 비트들의 수량과 연관된다. 일부 양태들에서, 회로는 클록 게이팅 회로(예를 들어, 클록 게이팅 회로(804))를 통해, 다수의 열들의 제2 서브세트로부터의 신호들을 프로세싱하는 것과 연관된 클록 신호를 비활성화한다.
메모리 내 컴퓨팅을 위한 예시적인 프로세싱 시스템들
[0097] 도 10은 예시적인 전자 디바이스(1000)를 예시한다. 전자 디바이스(1000)는 도 9와 관련하여 설명된 동작들(900)을 포함하여, 본원에 설명된 방법들을 수행하도록 구성될 수 있다.
[0098] 전자 디바이스(1000)는 중앙 프로세싱 유닛(CPU)(1002)을 포함하며, 이는 일부 양태들에서 멀티 코어 CPU일 수 있다. CPU(1002)에서 실행되는 명령들은 예를 들어 CPU(1002)와 연관된 프로그램 메모리로부터 로드될 수 있거나 메모리(1024)로부터 로드될 수 있다.
[0099] 전자 디바이스(1000)는 또한 그래픽 프로세싱 유닛(GPU)(1004), 디지털 신호 프로세서(DSP)(1006), 신경 프로세싱 유닛(NPU)(1008), 멀티미디어 프로세싱 블록(1010), 멀티미디어 프로세싱 블록(1010) 및 무선 연결 프로세싱 블록(1012)과 같은 특정 기능들에 맞춰진 추가 프로세싱 블록들을 포함한다. 일 구현에서, NPU(1008)는 CPU(1002), GPU(1004) 및/또는 DSP(1006) 중 하나 이상에서 구현된다.
[0100] 일부 양태들에서, 무선 연결 프로세싱 블록(1012)은 예를 들어, 3세대(3G) 연결, 4세대(4G) 연결(예를 들어, 4G LTE), 5세대 연결(예를 들어, 5G 또는 NR), Wi-Fi 연결성, 블루투스 연결성, 및 무선 데이터 송신 표준들을 위한 구성요소들을 포함할 수 있다. 무선 연결 프로세싱 블록(1012)은 하나 이상의 안테나(1014)에 추가로 연결되어 무선 통신을 가능하게 한다.
[0101] 전자 디바이스(1000)는 또한 임의의 방식의 센서와 연관된 하나 이상의 센서 프로세서들(1016), 임의의 방식의 이미지 센서와 연관된 하나 이상의 이미지 신호 프로세서들(ISP)(1018), 및/또는 위성 기반 포지셔닝 확인 시스템 구성요소들(예를 들어, GPS 또는 GLONASS) 및 관성 포지셔닝 시스템 구성요소들을 포함할 수 있는 네비게이션 프로세서(1020)를 포함할 수 있다.
[0102] 전자 디바이스(1000)는 또한 스크린들, 터치 감지 표면들(터치 감지 디스플레이들을 포함), 물리적 버튼들, 스피커들, 마이크들 등과 같은 하나 이상의 입력 및/또는 출력 디바이스들(1022)을 포함할 수 있다. 일부 양태들에서, 전자 디바이스(1000)의 프로세서들 중 하나 이상은 ARM 명령 세트에 기반할 수 있다.
[0103] 전자 디바이스(1000)는 또한 동적 랜덤 액세스 메모리, 플래시 기반 정적 메모리 등과 같은 하나 이상의 정적 및/또는 동적 메모리들을 나타내는 메모리(1024)를 포함한다. 이 예에서, 메모리(1024)는 전자 디바이스(1000)의 전술한 프로세서들 중 하나 이상 또는 CIM 제어기(1032)(또한 제어 회로로 지칭됨)에 의해 실행될 수 있는 컴퓨터 실행가능 구성요소들을 포함한다. 예를 들어, 전자 디바이스(1000)는 본원에 설명된 바와 같은 회로(500)와 같은 CIM 회로(1026)를 포함할 수 있다. CIM 회로(1026)는 CIM 제어기(1032)를 통해 제어될 수 있다. 예를 들어, 일부 양태들에서, 메모리(1024)는 저장(예를 들어, 메모리 셀들에 가중치들을 저장)하기 위한 코드(1024A), 컴퓨팅(예를 들어, 활성화 입력들을 적용하여 신경망 컴퓨팅을 수행함)을 위한 코드(1024B)를 포함할 수 있다. 예시된 바와 같이, CIM 제어기(1032)는 저장(예를 들어, 메모리 셀들에 가중치들을 저장)을 위한 회로(1028A) 및 컴퓨팅(예를 들어, 활성화 입력들을 적용하여 신경망 컴퓨팅을 수행함)을 위한 회로(1028B)를 포함할 수 있다. 묘사된 구성요소들, 및 묘사되지 않은 다른 구성요소들은 본원에 설명된 방법들의 다양한 양태들을 수행하도록 구성될 수 있다.
[0104] 전자 디바이스(1000)가 서버 디바이스인 경우 같은 일부 양태들에서, 멀티미디어 프로세싱 블록(1010), 무선 연결 프로세싱 블록(1012), 안테나(1014), 센서 프로세서들(1016), ISP들(1018) 또는 네비게이션 프로세서(1020) 중 하나 이상과 같은 다양한 양태들은 도 10에 묘사된 예에서 생략될 수 있다.
예시적인 조항들
[0105] 조항 1. 메모리 내 컴퓨팅을 위한 회로로서, 메모리의 다수의 열들 각각에 있는 복수의 메모리 셀들 ― 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하도록 구성되고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 다수의 열들 중 개개의 열에 각각 결합되는 다수의 가산 회로들; 다수의 가산 회로들 중 적어도 2 개의 출력들에 결합된 제1 가산기 회로; 및 제1 가산기 회로의 출력에 결합된 누산기를 포함한다.
[0106] 조항 2. 조항 1에 있어서, 제1 가산기 회로의 하나 이상의 부분들은 선택적으로 디스에이블되도록 구성된다.
[0107] 조항 3. 조항 1 또는 조항 2에 있어서, 다수의 가산 회로들 각각은 다수의 열들 중 개개의 열에 있는 복수의 메모리 셀들에 결합된 가산기 트리를 포함한다.
[0108] 조항 4. 조항 1 내지 조항 3 중 어느 한 조항에 있어서, 다수의 가산 회로들 각각은 다른 누산기를 포함한다.
[0109] 조항 5. 조항 1 내지 조항 4 중 어느 한 조항에 있어서, 제1 가산기 회로의 제1 부분은 제1 컴퓨팅 사이클 동안 선택적으로 디스에이블되도록 구성되고, 제1 가산기 회로의 제2 부분은 제2 컴퓨팅 사이클 동안 선택적으로 디스에이블되도록 구성된다.
[0110] 조항 6. 조항 1 내지 조항 5 중 어느 한 조항에 있어서, 다수의 가산 회로들 각각과 다수의 열들 중 개개의 열 사이에 결합된 제2 가산기 회로를 더 포함한다.
[0111] 조항 7. 조항 6에 있어서, 제2 가산기 회로는 워드 라인들 중 2 개 이상에 결합된 가산기 트리를 포함한다.
[0112] 조항 8. 조항 7에 있어서, 가산기 트리는 다수의 열들 중 개개의 열과 워드 라인들 중 2 개 이상에 있는 메모리 셀들의 출력 신호들을 가산하도록 구성된다.
[0113] 조항 9. 조항 6에 있어서, 제2 가산기 회로와 다수의 열들 중 개개의 열 사이에 결합된 감지 증폭기를 더 포함한다.
[0114] 조항 10. 조항 1 내지 조항 9 중 어느 한 조항에 있어서, 제1 가산기 회로는 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하도록 구성된 가산기 트리를 포함한다.
[0115] 조항 11. 조항 10에 있어서, 가산기 트리의 하나 이상의 가산기들은 비트 시프트 및 가산 회로를 포함한다.
[0116] 조항 12. 조항 1 내지 조항 11 중 어느 한 조항에 있어서, 제1 클록 신호를 출력하도록 구성된 제1 출력과 제2 클록 신호를 출력하도록 구성된 제2 출력을 갖는 클록 생성기 회로를 더 포함하고, 다수의 가산 회로들은 클록 생성기의 제1 출력에 결합되고 제1 클록 신호에 기반하여 동작하도록 구성되고; 제1 가산기 회로는 클록 생성기의 제2 출력에 결합되고 제2 클록 신호에 기반하여 동작하도록 구성되고, 제2 클록 신호는 제1 클록 신호와 상이한 주파수를 갖는다.
[0117] 조항 13. 조항 12에 있어서, 클록 생성기 회로는 제1 클록 신호에 기반하여 제2 클록 신호를 생성하도록 구성된 주파수 승산기를 포함한다.
[0118] 조항 14. 조항 1 내지 조항 13 중 어느 한 조항에 있어서, 복수의 하프 래치 회로들을 더 포함하고, 각각의 하프 래치 회로는 제1 가산기 회로와 다수의 가산 회로들 중 하나 사이에 결합된다.
[0119] 조항 15. 조항 1 내지 조항 14 중 어느 한 조항에 있어서, 복수의 메모리 셀들은 상이한 활성화 입력들에 기반하여 순차적으로 활성화되도록 구성되고; 누산기는 복수의 메모리 셀들이 순차적으로 활성화된 후 제1 가산기 회로의 출력 신호들을 누산하도록 구성된다.
[0120] 조항 16. 조항 1 내지 조항 15 중 어느 한 조항에 있어서, 누산기는 제1 가산기 회로의 출력에 결합된 유일한 누산기이다.
[0121] 조항 17. 조항 1 내지 조항 16 중 어느 한 조항에 있어서, 다수의 열들은 다수의 열들의 제1 서브세트 및 다수의 열들의 제2 서브세트를 포함하고; 제1 서브세트는 제1 컴퓨팅 사이클 동안 활성화된다.
[0122] 조항 18. 조항 17에 있어서, 제2 서브세트는 제2 컴퓨팅 사이클 동안 활성화되고, 제2 컴퓨팅 사이클은 제1 컴퓨팅 사이클 이후에 존재한다.
[0123] 조항 19. 조항 17 또는 조항 18에 있어서, 워드 라인들 각각의 메모리 셀들의 적어도 일부는 신경망의 가중치들 중 하나를 저장하도록 구성되고, 다수의 열들 중 제1 서브세트의 수량은 가중치들 중 하나의 비트들의 수량과 연관된다.
[0124] 조항 20. 조항 17 내지 조항 19 중 어느 한 조항에 있어서, 다수의 가산 회로들에 결합되고 다수의 열들의 제2 서브세트로부터의 신호들을 프로세싱하는 것과 연관된 클록 신호를 비활성화하도록 구성된 출력들을 갖는 클록 게이팅 회로를 더 포함한다.
[0125] 조항 21. 메모리 내 컴퓨팅을 위한 방법은, 다수의 가산 회로들 각각을 통해, 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 단계 ― 복수의 메모리 셀들은 다수의 열들 각각에 있고, 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 제1 가산 회로를 통해, 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하는 단계; 및 누산기를 통해, 제1 가산기 회로의 출력 신호들을 누산하는 단계를 포함한다.
[0126] 조항 22. 조항 21에 있어서, 가중치들 각각과 연관된 비트들의 개수에 기반하여 제1 가산기 회로의 하나 이상의 부분들을 선택적으로 디스에이블하는 단계를 더 포함한다.
[0127] 조항 23. 조항 21 또는 조항 22에 있어서, 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 단계는 워드 라인들 중 2 개 이상이 순차적으로 활성화된 후 다수의 열들 중 개개의 열에 있는 메모리 셀들의 출력 신호들을 누산하는 단계를 포함한다.
[0128] 조항 24. 조항 23에 있어서, 다수의 가산 회로들 각각과 다수의 열들 중 개개의 열 사이에 결합된 제2 가산기 회로를 통해, 다수의 열들 중 개개의 열과 워드 라인들 중 2 개 이상에 있는 메모리 셀들의 출력 신호들을 가산하는 단계를 더 포함한다.
[0129] 조항 25. 조항 24에 있어서, 제2 가산기 회로와 다수의 열들 중 개개의 열 사이에 결합된 감지 증폭기를 통해, 다수의 열들 중 개개의 열과 워드 라인들 중 2 개 이상에 있는 메모리 셀들의 출력 신호들을 감지하는 단계를 더 포함하고, 제2 가산기 회로를 통한 가산은 감지된 출력 신호들에 기반한다.
[0130] 조항 26. 조항 21 내지 조항 25 중 어느 한 조항에 있어서, 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하는 단계는 다수의 가산 회로들 중 적어도 2 개에서 비트 시프트 및 가산 연산을 수행하는 단계를 포함한다.
[0131] 조항 27. 조항 21 내지 조항 26 중 어느 한 조항에 있어서, 제1 클록 신호를 생성하는 단계 ― 다수의 가산 회로들은 제1 클록 신호에 기반하여 동작함 ―; 및 제2 클록 신호를 생성하는 단계를 더 포함하고, 제1 가산기 회로는 제2 클록 신호에 기반하여 동작하고, 제2 클록 신호는 제1 클록 신호와 상이한 주파수를 갖는다.
[0132] 조항 28. 조항 21 내지 조항 27 중 어느 한 조항에 있어서, 상이한 활성화 입력들에 기반하여 복수의 메모리 셀들을 순차적으로 활성화하는 단계를 더 포함하고, 제1 가산기 회로의 출력 신호들을 누산하는 단계는 복수의 메모리 셀들이 순차적으로 활성화된 후에 발생한다.
[0133] 조항 29. 조항 28에 있어서, 복수의 메모리 셀을 순차적으로 활성화하는 단계는: 제1 활성화 사이클 동안 제1 활성화 입력들의 세트를 수신하는 단계; 및 제2 활성화 사이클 동안 제2 활성화 입력들의 세트를 수신하는 단계를 포함하고, 제1 가산기 회로의 출력 신호들을 누산하는 단계는 제1 활성화 사이클 및 제2 활성화 사이클 후에 발생한다.
[0134] 조항 30. 메모리 내 컴퓨팅을 위한 장치로서, 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하기 위한 제1 수단 ― 복수의 메모리 셀은 다수의 열들 각각에 있고, 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 다수의 열들 각각에 있는 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 있음 ―; 가산하기 위한 제1 수단 중 적어도 2 개의 출력 신호들을 가산하기 위한 제2 수단; 및 가산하기 위한 제2 수단의 출력 신호들을 누산하기 위한 수단을 포함한다.
추가 고려사항들
[0135] 이전 설명은 통상의 기술자가 본원에 설명된 다양한 양태들을 실시할 수 있도록 제공된다. 본원에 논의된 예들은 청구범위에서 설명된 범위, 적용성, 또는 양태들을 제한하지 않는다. 이들 양태들에 대한 다양한 수정들은 통상의 기술자들에게 쉽게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수 있다. 예를 들어, 변화들은 본 개시내용의 범위를 본 개시내용을 벗어나지 않고 논의된 요소들의 기능 및 배열에서 이루어질 수 있다. 다양한 예들은 다양한 절차들 또는 구성요소들을 적절하게 생략, 대체 또는 추가할 수 있다. 예를 들어, 설명된 방법들은 설명된 것과 다른 순서로 수행될 수 있고, 다양한 단계들은 추가, 생략 또는 조합될 수 있다. 또한, 일부 예들에 대해 설명된 특징들은 일부 다른 예들에서 결합될 수 있다. 예를 들어, 장치가 구현될 수 있거나 방법이 본원에서 설명된 임의의 수의 양태들을 사용하여 실시될 수 있다. 게다가, 본 개시내용의 범위는 본원에 개시된 개시내용의 다양한 양태들에 더하여 또는 그 외의 다른 구조, 기능, 또는 구조 및 기능을 사용하여 실시되는 그러한 장치 또는 방법을 포함하도록 의도된다. 본원에 개시된 본 개시내용의 임의의 양태가 청구항의 하나 이상의 요소들에 의해 실현될 수 있음이 이해되어야 한다.
[0136] 본원에 사용된 바와 같이, "예시적인"이라는 단어는 "예시적인 역할을 하는, 사례, 또는 예시"를 의미한다. 본원에서 "예시적인" 것으로 설명된 임의의 양태가 반드시 다른 양태들에 비해 바람직하거나 유리한 것으로 해석되지 않는다.
[0137] 본원에서 사용되는 바와 같이, 항목들의 목록의 "적어도 하나"를 언급하는 문구는 단일 멤버들을 포함하여 이러한 항목들의 임의의 조합을 지칭한다. 예로서, "a, b 또는 c 중 적어도 하나"는 a, b, c, a-b, a-c, b-c 및 a-b-c뿐만 아니라, 동일한 요소의 배수들(예를 들어, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, 및 c-c-c 또는 a, b 및 c의 다른 순서)와의 임의의 조합을 커버하도록 의도된다.
[0138] 본원에서 사용되는 바와 같이, "결정하는"이라는 용어는 매우 다양한 동작들을 포함한다. 예를 들어, "결정하는 것"은 계산, 컴퓨팅, 프로세싱, 도출, 조사, 조회(예를 들어, 테이블, 데이터베이스 또는 다른 데이터 구조에서 조회), 확인 등을 포함할 수 있다. 또한 "결정하는 것"은 수신(예를 들어, 정보 수신), 액세스(예를 들어, 메모리의 데이터 액세스) 등을 포함할 수 있다. 또한, "결정하는 것"은 해결, 선택, 선정, 확립 등을 포함할 수 있다.
[0139] 본원에 개시된 방법들은 방법들을 달성하기 위한 하나 이상의 단계들 또는 동작들을 포함한다. 방법 단계들 및/또는 동작들은 청구범위의 범위를 벗어나지 않고 서로 교환될 수 있다. 즉, 단계들 또는 동작들의 특정 순서가 지정되지 않는 한, 특정 단계들 및/또는 동작들의 순서 및/또는 사용은 청구범위에서 벗어나지 않고 수정될 수 있다. 추가로, 위에서 설명된 방법들의 다양한 동작들은 대응 기능들을 수행할 수 있는 임의의 적합한 수단에 의해 수행될 수 있다. 수단은 회로, ASIC(Application Specific Integrated Circuit) 또는 프로세서를 포함(그러나 이에 제한되지 않음)하는 다양한 하드웨어 및/또는 소프트웨어 구성요소(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 예시된 동작들이 있는 경우, 이들 동작들은 유사한 번호가 지정된 상응하는 대응-수단-기능 구성요소들을 가질 수 있다. 예를 들어, 가산을 위한 수단은 가산기 트리들(510) 또는 가중치 시프트 가산기 트리(512)와 같은 가산기 트리, 또는 누산기들(606)과 같은 누산기를 포함할 수 있다. 누산하기 위한 수단은 활성화 시프트 누산기(516)와 같은 누산기를 포함할 수 있다. 감지하기 위한 수단은 SA들(602) 같은 SA를 포함할 수 있다.
[0140] 다음 청구범위는 본원에 도시된 양태들로 제한되는 것이 아니라, 청구범위의 언어와 일치하는 전체 범위에 따라야 한다. 청구범위 내에서, 단수의 요소에 대한 참조는 구체적으로 언급되지 않는 한 "하나뿐임"을 의미하는 것이 아니라, "하나 이상"을 의미하도록 의도된다. 달리 구체적으로 언급하지 않는 한, "일부"라는 용어는 하나 이상을 의미한다. 어떠한 청구 요소도 "~을 위한 수단"이라는 문구를 사용하여 명시적으로 언급되지 않는 한, 또는 방법 청구의 경우, 요소가 "~를 위한 단계"라는 문구를 사용하여 언급되지 않는 한, 이 청구 요소가 35 U.S.C. §112(F)의 조항 하에서 해석되지 않아야 한다. 통상의 기술자들에게 알려지거나 나중에 알려지게 되는, 본 개시내용 전반에 걸쳐 설명된 다양한 양태들의 요소들에 대한 모든 구조적 및 기능적 등가물들은 명백히 참조로 본원에 포함되고 청구범위에 포함되도록 의도된다. 더욱이, 본원에 개시된 어떤 것도 그러한 개시내용이 청구범위에 명시적으로 인용되었는지 여부에 관계없이 대중에게 헌정되도록 의도되지 않는다.

Claims (30)

  1. 메모리 내 컴퓨팅(in-memory computation)을 위한 회로로서,
    메모리의 다수의 열들 각각에 있는 복수의 메모리 셀들 ― 상기 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 열들 각각에 있는 상기 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 있음 ―;
    상기 다수의 열들 중 개개의 열에 각각 결합되는 다수의 가산 회로들;
    상기 다수의 가산 회로들 중 적어도 2 개의 출력들에 결합된 제1 가산기 회로; 및
    상기 제1 가산기 회로의 출력에 결합된 누산기를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  2. 제1 항에 있어서,
    상기 제1 가산기 회로의 하나 이상의 부분들은 선택적으로 디스에이블되도록 구성되는, 메모리 내 컴퓨팅을 위한 회로.
  3. 제1 항에 있어서,
    상기 다수의 가산 회로들 각각은 상기 다수의 열들 중 개개의 열에 있는 상기 복수의 메모리 셀들에 결합된 가산기 트리를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  4. 제1 항에 있어서,
    상기 다수의 가산 회로들 각각은 다른 누산기를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  5. 제1 항에 있어서,
    상기 제1 가산기 회로의 제1 부분은 제1 컴퓨팅 사이클(computation cycle) 동안 선택적으로 디스에이블되도록 구성되고, 상기 제1 가산기 회로의 제2 부분은 제2 컴퓨팅 사이클 동안 선택적으로 디스에이블되도록 구성되는, 메모리 내 컴퓨팅을 위한 회로.
  6. 제1 항에 있어서,
    상기 다수의 가산 회로들 각각과 상기 다수의 열들 중 개개의 열 사이에 결합된 제2 가산기 회로를 더 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  7. 제6 항에 있어서,
    상기 제2 가산기 회로는 상기 워드 라인들 중 2 개 이상에 결합된 가산기 트리를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  8. 제7 항에 있어서,
    상기 가산기 트리는 상기 다수의 열들 중 개개의 열과 상기 워드 라인들 중 2 개 이상에 있는 상기 메모리 셀들의 출력 신호들을 가산하도록 구성되는, 메모리 내 컴퓨팅을 위한 회로.
  9. 제6 항에 있어서,
    상기 제2 가산기 회로와 상기 다수의 열들 중 개개의 열 사이에 결합된 감지 증폭기를 더 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  10. 제1 항에 있어서,
    상기 제1 가산기 회로는 상기 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하도록 구성된 가산기 트리를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  11. 제10 항에 있어서,
    상기 가산기 트리의 하나 이상의 가산기들은 비트 시프트 및 가산 회로를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  12. 제1 항에 있어서,
    제1 클록 신호를 출력하도록 구성된 제1 출력과 제2 클록 신호를 출력하도록 구성된 제2 출력을 갖는 클록 생성기 회로를 더 포함하고,
    상기 다수의 가산 회로들은 상기 클록 생성기의 제1 출력에 결합되고 상기 제1 클록 신호에 기반하여 동작하도록 구성되고; 그리고
    상기 제1 가산기 회로는 상기 클록 생성기의 제2 출력에 결합되고 상기 제2 클록 신호에 기반하여 동작하도록 구성되고, 상기 제2 클록 신호는 상기 제1 클록 신호와 상이한 주파수를 갖는, 메모리 내 컴퓨팅을 위한 회로.
  13. 제12 항에 있어서,
    상기 클록 생성기 회로는 상기 제1 클록 신호에 기반하여 상기 제2 클록 신호를 생성하도록 구성된 주파수 승산기를 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  14. 제1 항에 있어서,
    복수의 하프 래치 회로(half latch circuit)들을 더 포함하고, 각각의 하프 래치 회로는 상기 제1 가산기 회로와 상기 다수의 가산 회로들 중 하나 사이에 결합되는, 메모리 내 컴퓨팅을 위한 회로.
  15. 제1 항에 있어서,
    상기 복수의 메모리 셀들은 상이한 활성화 입력들에 기반하여 순차적으로 활성화되도록 구성되고; 그리고
    상기 누산기는 상기 복수의 메모리 셀들이 순차적으로 활성화된 후 상기 제1 가산기 회로의 출력 신호들을 누산하도록 구성되는, 메모리 내 컴퓨팅을 위한 회로.
  16. 제1 항에 있어서,
    상기 누산기는 상기 제1 가산기 회로의 출력에 결합된 유일한 누산기인, 메모리 내 컴퓨팅을 위한 회로.
  17. 제1 항에 있어서,
    상기 다수의 열들은 상기 다수의 열들의 제1 서브세트 및 상기 다수의 열들의 제2 서브세트를 포함하고; 그리고
    상기 제1 서브세트는 제1 컴퓨팅 사이클 동안 활성화되는, 메모리 내 컴퓨팅을 위한 회로.
  18. 제17 항에 있어서,
    상기 제2 서브세트는 제2 컴퓨팅 사이클 동안 활성화되고, 상기 제2 컴퓨팅 사이클은 상기 제1 컴퓨팅 사이클 이후에 존재하는, 메모리 내 컴퓨팅을 위한 회로.
  19. 제17 항에 있어서,
    상기 워드 라인들 각각의 상기 메모리 셀들의 적어도 일부는 상기 신경망의 가중치들 중 하나를 저장하도록 구성되고; 그리고
    상기 다수의 열들 중 제1 서브세트의 수량은 상기 가중치들 중 하나의 비트들의 수량과 연관되는, 메모리 내 컴퓨팅을 위한 회로.
  20. 제17 항에 있어서,
    상기 다수의 열들의 제2 서브세트로부터의 신호들을 프로세싱하는 것과 연관된 클록 신호를 비활성화하도록 구성되고 상기 다수의 가산 회로들에 결합된 출력들을 갖는 클록 게이팅 회로를 더 포함하는, 메모리 내 컴퓨팅을 위한 회로.
  21. 메모리 내 컴퓨팅을 위한 방법으로서,
    다수의 가산 회로들 각각을 통해, 메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 단계 ― 복수의 메모리 셀들은 상기 다수의 열들 각각에 있고, 상기 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 상기 다수의 열들 각각에 있는 상기 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 있음 ―;
    제1 가산기 회로를 통해, 상기 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하는 단계; 및
    누산기를 통해, 상기 제1 가산기 회로의 출력 신호들을 누산하는 단계를 포함하는, 메모리 내 컴퓨팅을 위한 방법.
  22. 제21 항에 있어서,
    상기 가중치들 각각과 연관된 비트들의 개수에 기반하여 상기 제1 가산기 회로의 하나 이상의 부분들을 선택적으로 디스에이블하는 단계를 더 포함하는, 메모리 내 컴퓨팅을 위한 방법.
  23. 제21 항에 있어서,
    상기 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하는 단계는 상기 워드 라인들 중 2 개 이상이 순차적으로 활성화된 후 상기 다수의 열들 중 개개의 열에 있는 상기 메모리 셀들의 출력 신호들을 누산하는 단계를 포함하는, 메모리 내 컴퓨팅을 위한 방법.
  24. 제23 항에 있어서,
    상기 다수의 가산 회로들 각각과 상기 다수의 열들 중 개개의 열 사이에 결합된 제2 가산기 회로를 통해, 상기 다수의 열들 중 개개의 열과 상기 워드 라인들 중 2 개 이상에 있는 상기 메모리 셀들의 출력 신호들을 가산하는 단계를 더 포함하는, 메모리 내 컴퓨팅을 위한 방법.
  25. 제24 항에 있어서,
    상기 제2 가산기 회로와 상기 다수의 열들 중 개개의 열 사이에 결합된 감지 증폭기를 통해, 상기 다수의 열들 중 개개의 열과 상기 워드 라인들 중 2 개 이상에 있는 상기 메모리 셀들의 출력 신호들을 감지하는 단계를 더 포함하고, 상기 제2 가산기 회로를 통한 가산은 상기 감지된 출력 신호들에 기반하는, 메모리 내 컴퓨팅을 위한 방법.
  26. 제21 항에 있어서,
    상기 다수의 가산 회로들 중 적어도 2 개의 출력 신호들을 가산하는 단계는 상기 다수의 가산 회로들 중 적어도 2 개에서 비트 시프트 및 가산 연산을 수행하는 단계를 포함하는, 메모리 내 컴퓨팅을 위한 방법.
  27. 제21 항에 있어서,
    제1 클록 신호를 생성하는 단계 ― 상기 다수의 가산 회로들은 상기 제1 클록 신호에 기반하여 동작함 ―; 및
    제2 클록 신호를 생성하는 단계를 포함하고, 상기 제1 가산기 회로는 상기 제2 클록 신호에 기반하여 동작하고, 상기 제2 클록 신호는 상기 제1 클록 신호와 상이한 주파수를 갖는, 메모리 내 컴퓨팅을 위한 방법.
  28. 제21 항에 있어서,
    상이한 활성화 입력들에 기반하여 상기 복수의 메모리 셀들을 순차적으로 활성화하는 단계를 더 포함하고, 상기 제1 가산기 회로의 출력 신호들을 누산하는 단계는 상기 복수의 메모리 셀들이 순차적으로 활성화된 후에 발생하는, 메모리 내 컴퓨팅을 위한 방법.
  29. 제28 항에 있어서,
    상기 복수의 메모리 셀들을 순차적으로 활성화하는 단계는,
    제1 활성화 사이클 동안 제1 활성화 입력들의 세트를 수신하는 단계; 및
    제2 활성화 사이클 동안 제2 활성화 입력들의 세트를 수신하는 단계를 포함하고, 상기 제1 가산기 회로의 출력 신호들을 누산하는 단계는 상기 제1 활성화 사이클 및 상기 제2 활성화 사이클 후에 발생하는, 메모리 내 컴퓨팅을 위한 방법.
  30. 메모리 내 컴퓨팅을 위한 장치로서,
    메모리의 다수의 열들 중 개개의 열 상의 출력 신호들을 가산하기 위한 제1 수단 ― 복수의 메모리 셀들은 상기 다수의 열들 각각에 있고, 상기 복수의 메모리 셀들은 신경망의 가중치들을 나타내는 다수의 비트들을 저장하고, 상기 다수의 열들 각각에 있는 상기 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 있음 ―;
    상기 가산하기 위한 제1 수단 중 적어도 2 개의 출력 신호들을 가산하기 위한 제2 수단; 및
    상기 가산하기 위한 제2 수단의 출력 신호들을 누산하기 위한 수단을 포함하는, 메모리 내 컴퓨팅을 위한 장치.
KR1020247003030A 2021-08-02 2022-07-18 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처 KR20240035492A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/391,718 US20230031841A1 (en) 2021-08-02 2021-08-02 Folding column adder architecture for digital compute in memory
US17/391,718 2021-08-02
PCT/US2022/073856 WO2023015105A1 (en) 2021-08-02 2022-07-18 Folding column adder architecture for digital compute in memory

Publications (1)

Publication Number Publication Date
KR20240035492A true KR20240035492A (ko) 2024-03-15

Family

ID=82932405

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247003030A KR20240035492A (ko) 2021-08-02 2022-07-18 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처

Country Status (6)

Country Link
US (1) US20230031841A1 (ko)
EP (1) EP4381376A1 (ko)
KR (1) KR20240035492A (ko)
CN (1) CN117751346A (ko)
TW (1) TW202324075A (ko)
WO (1) WO2023015105A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11942185B2 (en) * 2021-11-22 2024-03-26 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10867239B2 (en) * 2017-12-29 2020-12-15 Spero Devices, Inc. Digital architecture supporting analog co-processor
US11157237B2 (en) * 2018-11-13 2021-10-26 Hewlett Packard Enterprise Development Lp Memristive dot product circuit based floating point computations
US20200349106A1 (en) * 2019-05-01 2020-11-05 Samsung Electronics Co., Ltd. Mixed-precision neural-processing unit tile

Also Published As

Publication number Publication date
TW202324075A (zh) 2023-06-16
CN117751346A (zh) 2024-03-22
EP4381376A1 (en) 2024-06-12
US20230031841A1 (en) 2023-02-02
WO2023015105A1 (en) 2023-02-09

Similar Documents

Publication Publication Date Title
Kang et al. An in-memory VLSI architecture for convolutional neural networks
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
US20220269483A1 (en) Compute in memory accumulator
Agrawal et al. CASH-RAM: Enabling in-memory computations for edge inference using charge accumulation and sharing in standard 8T-SRAM arrays
CN117546178A (zh) 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流
Angizi et al. Pisa: A binary-weight processing-in-sensor accelerator for edge image processing
US11996137B2 (en) Compute in memory (CIM) memory array
KR20240035492A (ko) 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
US20230115373A1 (en) Accumulator for digital computation-in-memory architectures
US12019905B2 (en) Digital compute in memory
US20230004350A1 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
JP2024525333A (ja) 深さ方向畳み込みのためのメモリ内計算アーキテクチャ
US20240086153A1 (en) Multi-bit accumulator and in-memory computing processor with same
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
JP2024525332A (ja) 深さ方向畳み込みニューラルネットワーク(cnn)をサポートするメモリ内計算(cim)アーキテクチャ及びデータフロー
WO2023015167A1 (en) Digital compute in memory