KR20240071391A - 디지털 메모리-내-컴퓨테이션 아키텍처들에 대한 누산기 - Google Patents

디지털 메모리-내-컴퓨테이션 아키텍처들에 대한 누산기 Download PDF

Info

Publication number
KR20240071391A
KR20240071391A KR1020247011245A KR20247011245A KR20240071391A KR 20240071391 A KR20240071391 A KR 20240071391A KR 1020247011245 A KR1020247011245 A KR 1020247011245A KR 20247011245 A KR20247011245 A KR 20247011245A KR 20240071391 A KR20240071391 A KR 20240071391A
Authority
KR
South Korea
Prior art keywords
memory
circuit
columns
memory cells
output signals
Prior art date
Application number
KR1020247011245A
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 KR20240071391A publication Critical patent/KR20240071391A/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • 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/481Counters performing arithmetic operations

Abstract

특정 양태들은 머신 학습 태스크들을 수행하기 위한, 구체적으로는, 메모리-내-컴퓨테이션(CIM) 아키텍처들에 대한 장치를 제공한다. 하나의 양태는 메모리-내-컴퓨테이션을 위한 방법을 제공한다. 본 방법은 대체적으로, 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들을 누산하는 단계로서, 복수의 메모리 셀들은 다수의 열들 각각 상에 있고, 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 다수의 열들 각각의 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 대응하는, 상기 단계; 가산기 회로를 통해, 복수의 디지털 카운터들의 출력 신호들을 가산하는 단계; 및 누산기를 통해, 가산기 회로의 출력 신호들을 누산하는 단계를 포함한다.

Description

디지털 메모리-내-컴퓨테이션 아키텍처들에 대한 누산기
관련 출원들에 대한 상호 참조
본 출원은 2021년 10월 13일자로 출원된 미국 출원 제17/450,815호에 대한 우선권을 주장하며, 그 출원은, 본 출원의 양수인에게 양도되고 그 전체가 본 명세서에 참조로 포함된다.
본 개시내용의 양태들은 머신 학습 태스크들을 수행하는 것에 관한 것으로, 구체적으로는, 메모리-내-컴퓨테이션(computation-in-memory, CIM) 아키텍처들에 관한 것이다.
머신 학습은 대체적으로 트레이닝된 모델(예컨대, 인공 뉴럴 네트워크, 트리 또는 다른 구조들)을 생성하는 프로세스이며, 이는 선험적으로 알려져 있는 한 세트의 트레이닝 데이터에 대한 일반화된 적합성(generalized fit)을 표현한다. 트레이닝된 모델을 새로운 데이터에 적용하는 것은 추론들을 생성하며, 그 추론들은 새로운 데이터에 대한 통찰력들을 얻는 데 사용될 수 있다. 일부 경우들에서, 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대해 "추론을 실행하는 것"으로서 설명된다.
다양한 머신 학습(또는 인공 지능) 태스크들을 가능하게 하기 위해 머신 학습의 사용이 급증함에 따라, 머신 학습 모델 데이터의 더 효율적인 프로세싱에 대한 필요성이 발생하였다. 일부 경우들에서, 머신 학습 가속도계들과 같은 전용 하드웨어가 머신 학습 모델 데이터를 프로세싱하기 위한 프로세싱 시스템의 용량을 향상시키는 데 사용될 수 있다. 그러나, 그러한 하드웨어는 공간 및 전력을 요구하며, 이는 프로세싱 디바이스 상에서 항상 이용가능한 것은 아니다. 예를 들어, 모바일 디바이스들, 올웨이즈 온 디바이스(always-on device)들, 사물 인터넷(internet of thing, IoT) 디바이스들 등과 같은 "에지 프로세싱(edge processing)" 디바이스들은 전형적으로 전력 및 패키징 제약들을 갖는 프로세싱 능력들을 균형화해야 한다. 또한, 가속도계들은 공통 데이터 버스들에 걸쳐 데이터를 이동시킬 수 있으며, 이는 상당한 전력 사용량을 야기하고 데이터 버스를 공유하는 다른 프로세스들로 레이턴시를 도입할 수 있다. 결과적으로, 머신 학습 모델 데이터를 프로세싱하기 위해 프로세싱 시스템의 다른 양태들이 고려되고 있다.
메모리 디바이스들은 소위 메모리-내-컴퓨테이션(CIM) 프로세스들을 통해 머신 학습 모델 데이터의 프로세싱을 수행하기 위해 레버리징(leveraging)될 수 있는 프로세싱 시스템의 다른 양태의 일례이다. 종래의 CIM 프로세스들은 아날로그 신호들을 사용하여 컴퓨테이션을 수행하고, 이는 컴퓨테이션 결과들의 부정확성을 초래하여, 뉴럴 네트워크 컴퓨테이션들에 악영향을 미칠 수 있다. 따라서, 증가된 정확성으로 메모리-내-컴퓨테이션을 수행하기 위한 시스템들 및 방법들이 필요하다.
특정 양태들은 머신 학습 태스크들을 수행하기 위한, 구체적으로는, 메모리-내-컴퓨테이션 아키텍처들에 대한 장치 및 기법들을 제공한다.
하나의 양태는 메모리-내-컴퓨테이션을 위한 회로를 제공한다. 회로는 대체적으로, 다수의 열(colum)들을 갖는 메모리; 메모리의 각각의 열 상의 복수의 메모리 셀들 - 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 다수의 열들 각각의 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 대응함 -; 복수의 디지털 카운터들 - 복수의 디지털 카운터들의 각각의 디지털 카운터는 메모리의 다수의 열들의 각자의 열에 커플링됨 -; 복수의 디지털 카운터들의 출력부들에 커플링된 가산기 회로; 및 가산기 회로의 출력부에 커플링된 누산기를 포함한다.
하나의 양태는 메모리-내-컴퓨테이션을 위한 방법을 제공한다. 본 방법은 대체적으로, 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들을 누산하는 단계 - 복수의 메모리 셀들은 다수의 열들 각각 상에 있고, 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 다수의 열들 각각의 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 대응함 -; 가산기 회로를 통해, 복수의 디지털 카운터들의 출력 신호들을 가산하는 단계; 및 누산기를 통해, 가산기 회로의 출력 신호들을 누산하는 단계를 포함한다.
하나의 양태는 메모리-내-컴퓨테이션을 위한 장치를 제공한다. 장치는 대체적으로, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들의 로직 하이들의 양을 카운팅하기 위한 수단 - 복수의 메모리 셀들은 다수의 열들 각각 상에 있고, 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 다수의 열들 각각의 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 대응함 -; 복수의 디지털 카운터들의 출력 신호들을 가산하기 위한 수단; 및 가산하기 위한 수단의 출력 신호들을 누산하기 위한 수단을 포함한다.
다른 양태들은 전술한 방법들뿐만 아니라 본 명세서에 설명된 것들을 수행하도록 구성된 프로세싱 시스템들; 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템으로 하여금, 전술한 방법들뿐만 아니라 본 명세서에 설명된 것들을 수행하게 하는 명령들을 포함하는 비일시적 컴퓨터 판독가능 매체들; 전술한 방법들뿐만 아니라 본 명세서에 추가로 설명된 것들을 수행하기 위한 코드를 포함하는 컴퓨터 판독가능 저장 매체 상에 구현되는 컴퓨터 프로그램 제품; 및 전술한 방법들뿐만 아니라 본 명세서에 추가로 설명된 것들을 수행하기 위한 수단을 포함하는 프로세싱 시스템을 제공한다.
아래의 설명 및 관련된 도면들은 하나 이상의 양태들의 특정 예시적인 특징들을 상세히 기재한다.
본 개시내용의 위에서 언급된 특징들이 상세히 이해될 수 있는 방식으로, 위에서 간략하게 요약된 더 구체적인 설명이 양태들을 참조하여 이루어질 수 있는데, 이러한 양태들 중 일부는 첨부된 도면들에 예시되어 있다. 그러나, 첨부된 도면들은 단지 본 개시내용의 소정의 전형적인 양태들만을 예시하는 것이고 따라서 본 개시내용의 범주를 제한하는 것으로 간주되지 않아야 한다는 것이 주목되어야 하는데, 이는 본 설명이 다른 균등하게 유효한 양태들을 허용할 수 있기 때문이다.
도 1a 내지 도 1d 본 개시내용의 양태들에 의해 구현될 수 있는 다양한 타입들의 뉴럴 네트워크들의 예들을 묘사한다.
도 2 본 개시내용의 양태들에 의해 구현될 수 있는 전통적인 콘볼루션 연산의 일례를 묘사한다.
도 3a 도 3b 본 개시내용의 양태들에 의해 구현될 수 있는 깊이별 분리가능 콘볼루션 연산들의 예들을 묘사한다.
도 4는 메모리-내-컴퓨테이션(CIM) 회로를 위한 8-트랜지스터(8T) 정적 랜덤 액세스 메모리(static random access memory, SRAM) 셀로서 구현된 예시적인 메모리 셀을 예시한다.
도 5는 본 개시내용의 특정 양태들에 따른 CIM용 회로를 예시한다.
도 6은 본 개시내용의 특정 양태들에 따른, 펄스 생성기 및 디지털 카운터를 사용하여 구현된 누산기를 갖는 디지털 CIM(digital CIM, DCIM) 회로부를 예시한다.
도 7은 본 개시내용의 특정 양태들에 따른, 전자기 간섭(electromagnetic interference, EMI)을 감소시키기 위한 지연 회로부를 사용하여 구현된 CIM 회로부를 예시하는 블록도이다.
도 8a는 본 개시내용의 특정 양태들에 따른, 주파수 컨버터의 예시적인 구현을 도시하는 블록도이다.
도 8b는 본 개시내용의 특정 양태들에 따른, 에지-펄스 컨버터(edge-to-pulse converter)의 입력 신호 및 출력 신호를 나타내는 그래프이다.
도 9a도 9b는 본 개시내용의 특정 양태들에 따른, DCIM 회로를 구현하기 위한 집적 회로(integrated circuit, IC) 레이아웃을 예시한다.
도 10은 본 개시내용의 특정 양태들에 따른, 가산기 트리 및 누산기의 재사용을 용이하게 하기 위해 다중화기를 사용하여 구현된 DCIM 회로를 예시한다.
도 11은 본 개시내용의 특정 양태들에 따른, 메모리-내-컴퓨테이션에 대한 예시적인 동작들을 예시하는 흐름도이다.
도 12는 본 개시내용의 특정 양태들에 따른, 뉴럴 네트워크에서 신호 프로세싱을 위한 동작들을 수행하도록 구성된 예시적인 전자 디바이스를 예시한다.
이해를 용이하게 하기 위하여, 도면들에 공통적인 동일한 엘리먼트들을 지정하기 위해 가능한 경우 동일한 참조 번호들이 사용되었다. 일 양태의 엘리먼트들 및 특징들은 추가 기재 없이도 다른 양태들에 유익하게 통합될 수 있음이 고려된다.
본 개시내용의 양태들은 머신 학습 모델들을 구현하는 것과 같은, 데이터 집약적 프로세싱을 처리하기 위해 메모리-내-컴퓨테이션(CIM)을 수행하기 위한 장치들, 방법들, 프로세싱 시스템들, 및 컴퓨터 판독가능 매체들을 제공한다. 일부 양태들은 디지털 카운터들을 사용하여 디지털 CIM(DCIM)을 수행하기 위한 기법들을 제공하며, 각각의 디지털 카운터는 메모리의 다수의 열들의 각자의 열에 출력 신호들을 누산한다. 본 명세서에 사용되는 바와 같이, "누산기"는 대체적으로 다수의 사이클들에 걸친 출력 신호들을 누산하는 데 사용되는 회로부를 지칭한다. "가산기 회로" 또는 "가산기 트리"는 대체적으로 다수의 메모리 셀들(예컨대, 워드 라인들 또는 열들에 걸친 메모리 셀들)의 출력 신호들을 가산하는 데 사용되는 디지털 가산기들을 지칭한다.
본 명세서에 설명된 양태들은 디지털 CIM 애플리케이션들을 위한 고속 및 에너지 효율적 누산기를 제공한다. CIM 회로부의 워드 라인들은 순차적으로 활성화될 수 있고, 워드 라인들 중 2개 이상의 워드 라인이 순차적으로 활성화된 후, 디지털 카운터를 사용하여 누산을 수행하고 누산 결과를 제공할 수 있다. 예를 들어, 디지털 카운터를 사용하여, 다수의 컴퓨테이션 사이클들 후, 메모리의 열 상에 생성된 로직 하이들의 양을 카운트할 수 있다.
본 명세서에 제공된 DCIM 회로부는 메모리 어레이의 활성화 행(row)들의 수로 스케일링되지 않는 비트당 에너지 소비를 가지므로, 종래의 구현들에 비해 DCIM 회로부의 총 에너지 소비를 감소시킬 수 있다. 본 명세서에 설명된 양태들은 또한 다수의 가중치 열 그룹들에 대해 가산기 트리 및 누산기를 재사용함으로써 종래의 구현들에 비해 전체 CIM 시스템에 대한 면적 소비를 낮출 수 있다. 게다가, 본 명세서에 제공된 DCIM 회로부는, 디지털 카운터들이, 클록 신호를 사용하는 것과는 대조적으로, 각자의 열들 상의 신호들을 사용하여 타이밍을 맞춤에 따라 고속 동작을 가능하게 하는 자가 타이밍 동작(self-timed operation)을 갖는다. 디지털 카운터들로부터의 부분 합들은 글로벌 누산기 상에서 누산될 수 있으며, 이는 더 느린 클록에서 동작되며, 그 결과 CIM 시스템의 에너지 효율이 더 높아진다. 일부 양태들에서, 본 명세서에 더 상세히 설명되는 바와 같이, 전자기 간섭(EMI)은 DCIM 회로부 내에서의 자가 타이밍 동작 및 로컬 클록의 위상 시프트에 의해 감소된다.
CIM 기반 머신 학습(machine learning, ML)/인공 지능(artificial intelligence, AI)은 이미지 및 오디오 프로세싱, 그리고 (예컨대, 처리량 및 신호 품질을 최적화하거나 또는 적어도 증가시키도록) 무선 통신 결정들을 내리는 것을 포함하는 매우 다양한 태스크들에 사용될 수 있다. 또한, CIM은 다양한 타입들의 메모리 아키텍처, 예컨대, 동적 랜덤 액세스 메모리(dynamic random-access memory, DRAM), 정적 랜덤 액세스 메모리(SRAM)(예컨대, 도 4에서와 같은 SRAM 셀에 기초함), 자기저항 랜덤 액세스 메모리(magnetoresistive random-access memory, MRAM), 및 저항성 랜덤 액세스 메모리(resistive random-access memory, ReRAM 또는 RRAM)에 기초할 수 있고, 중앙 처리 장치(central processing unit, CPU)들, 디지털 신호 프로세서(digital signal processor, DSP)들, 그래픽 처리 장치(graphics processing unit, GPU)들, 필드 프로그래밍가능 게이트 어레이(field-programmable gate array, FPGA)들, AI 가속기들 등을 포함하는 다양한 타입들의 처리 장치들에 어태치(attach)될 수 있다. 대체적으로, CIM은 유리하게는, 메모리 내로의 그리고 메모리 밖으로의 데이터의 이동이 데이터의 컴퓨테이션보다 더 많은 전력을 소비하는 경우인 "메모리 벽" 문제를 감소시킬 수 있다. 따라서, 메모리 내 컴퓨테이션을 수행함으로써, 상당한 전력 절감들이 실현될 수 있다. 이것은 특히, 더 낮은 전력 에지 프로세싱 디바이스들, 모바일 디바이스들 등과 같은 다양한 타입들의 전자 디바이스들에 유용하다.
예를 들어, 모바일 디바이스는 데이터를 저장하도록 그리고 메모리-내-컴퓨테이션 연산들("메모리 내 컴퓨트" 연산들로도 지칭됨)을 수행하도록 구성된 메모리 디바이스를 포함할 수 있다. 모바일 디바이스는 모바일 디바이스에 의해 생성된 데이터, 예컨대 모바일 디바이스의 카메라 센서에 의해 생성된 이미지 데이터에 기초하여 ML/AI 동작을 수행하도록 구성될 수 있다. 따라서, 모바일 디바이스의 메모리 제어기 유닛(memory controller unit, MCU)은 다른 온보드 메모리(on-board memory)(예컨대, 플래시 또는 RAM)로부터의 가중치들을 메모리 디바이스의 CIM 어레이에 로딩하고, 입력 특징 버퍼들 및 출력(예컨대, 출력 활성화) 버퍼들을 배정할 수 있다. 이어서, 프로세싱 디바이스는, 예를 들어, 일정 계층을 입력 버퍼 내에 로딩하고 CIM 어레이에 로딩된 가중치들로 그 계층을 프로세싱함으로써 이미지 데이터의 프로세싱을 시작할 수 있다. 이러한 프로세싱은 이미지 데이터의 각각의 채널에 대해 반복될 수 있고, 출력들(예컨대, 출력 활성화들)은 출력 버퍼들에 저장되고, 이어서 안면 인식과 같은 ML/AI 태스크를 위해 모바일 디바이스에 의해 사용될 수 있다.
뉴럴 네트워크들, 심층 뉴럴 네트워크들, 및 심층 학습에 대한 간략한 배경
뉴럴 네트워크들은 상호연결된 노드들의 계층들로 조직화된다. 대체적으로, 노드(또는 뉴런)는 컴퓨테이션이 발생하는 곳이다. 예컨대, 노드는 입력 데이터를 증폭시키거나 감쇠시키는 일 세트의 가중치들(또는 계수들)과 입력 데이터를 조합할 수 있다. 따라서, 입력 신호들의 증폭 또는 감쇠(dampening)는, 네트워크가 학습하려고 시도하고 있는 작업과 관련되는 다양한 입력들에 상대적 중요성들을 할당하는 것으로 간주될 수 있다. 대체적으로, 입력-가중치 곱들이 합산(또는 누산)되고, 이어서 그 합이 노드의 활성화 함수를 통과하여, 해당 신호가 네트워크를 통해 추가로 진행되어야 하는지 여부와 그 정도가 결정된다.
가장 기본적인 구현에서, 뉴럴 네트워크는 입력 계층, 은닉 계층, 및 출력 계층을 가질 수 있다. "심층" 뉴럴 네트워크들은 대체적으로 하나 초과의 은닉 계층을 갖는다.
심층 학습은 심층 뉴럴 네트워크들을 트레이닝시키는 방법이다. 대체적으로, 심층 학습은 네트워크로의 입력들을 네트워크로부터의 출력들에 맵핑하고, 따라서 심층 학습이 임의의 입력 x와 출력 y 사이의 미지의 함수(unknown function) 를 근사화하기 위해 학습할 수 있기 때문에 때때로 "보편적 근사기"로 지칭된다. 다시 말해서, 심층 학습은 xy로 변환하기 위해 올바른 를 찾는다.
더 특별하게는, 심층 학습은 이전 계층으로부터의 출력인 고유 세트의 특징들에 기초하여 노드들의 각각의 계층을 트레이닝시킨다. 따라서, 심층 뉴럴 네트워크의 각각의 연속 계층으로 인해, 특징들은 더 복잡해진다. 따라서, 심층 학습은, 입력 데이터로부터 더 높은 레벨의 특징들을 점진적으로 추출하고, 각각의 계층에서 연속적으로 더 높은 추상 레벨들에서의 입력들을 나타내도록 학습하고 그에 의해 입력 데이터의 유용한 특징 표현을 구축함으로써, 객체 인식과 같은 복잡한 태스크들을 수행할 수 있기 때문에 강력하다.
예컨대, 시각 데이터가 제공되는 경우, 심층 뉴럴 네트워크의 제1 계층은 입력 데이터에서 에지들과 같은 비교적 단순한 특징들을 인식하기 위해 학습할 수 있다. 다른 예에서, 청각 데이터가 제공되는 경우, 심층 뉴럴 네트워크의 제1 계층은 입력 데이터에서 특정 주파수들의 스펙트럼 전력을 인식하도록 학습할 수 있다. 이어서, 심층 뉴럴 네트워크의 제2 계층은, 제1 계층의 출력에 기초하여, 시각 데이터에 대한 단순한 형상들과 같은 특징들의 조합들 또는 청각 데이터에 대한 사운드들의 조합들을 인식하도록 학습할 수 있다. 이어서, 상위 계층들은 시각 데이터로 복잡한 형상들을 또는 청각 데이터로 단어들을 인식하도록 학습할 수 있다. 더 상위 계층들은 일반적인 시각 객체들 또는 구어(spoken phrase)들을 인식하기 위해 학습할 수 있다. 따라서, 심층 학습 아키텍처들은 자연스러운 계층형 구조를 갖는 문제들에 적용될 때 특히 잘 수행될 수 있다.
뉴럴 네트워크들에서의 계층 연결
심층 뉴럴 네트워크(deep neural network, DNN)들과 같은 뉴럴 네트워크들은 계층들 사이의 다양한 연결 패턴들로 설계될 수 있다.
도 1a는 완전히 연결된 뉴럴 네트워크(102)의 일례를 예시한다. 완전히 연결된 뉴럴 네트워크(102)에서, 제1 계층의 각각의 노드가 제2 계층의 모든 노드에 그의 출력을 통신할 수 있어서, 제2 계층의 각각의 노드는 제1 계층의 모든 노드로부터 입력을 수신할 것이다.
도 1b는 국부적으로 연결된 뉴럴 네트워크(104)의 일례를 예시한다. 국부적으로 연결된 뉴럴 네트워크(104)에서, 제1 계층의 노드는 제2 계층의 제한된 수의 노드들에 연결될 수 있다. 더 대체적으로, 국부적으로 연결된 뉴럴 네트워크(104)의 국부적으로 연결된 계층은, 계층의 각각의 노드가 동일한 또는 유사한 연결 패턴을 갖지만 상이한 값들(예컨대, 제1 계층 노드들의 로컬 영역들(110, 112, 114, 116)과 연관된 값들)을 가질 수 있는 연결 강도들(또는 가중치들)을 갖도록 구성될 수 있다. 국부적으로 연결된 연결 패턴은 상위 계층에서 공간적으로 별개인 수용 필드들을 발생시킬 수 있는데, 이는 주어진 영역 내의 상위 계층 노드들이 네트워크에 대한 전체 입력의 제한된 부분의 속성들에 대한 트레이닝을 통해 튜닝되는 입력들을 수신할 수 있기 때문이다.
국부적으로 연결된 뉴럴 네트워크의 하나의 타입은 콘볼루셔널 뉴럴 네트워크(convolutional neural network, CNN)이다. 도 1c는 콘볼루셔널 뉴럴 네트워크(106)의 일례를 예시한다. 콘볼루셔널 뉴럴 네트워크(106)는 (예컨대, 제1 계층 노드들의 다른 로컬 영역과 중첩하는 로컬 영역(108)에 대해) 제2 계층의 각각의 노드에 대한 입력들과 연관된 연결 강도들이 공유되도록 구성될 수 있다. 콘볼루셔널 뉴럴 네트워크들은, 입력들의 공간적 위치들이 의미가 있는 문제들에 대해 매우 적합할 수 있다.
일 타입의 콘볼루셔널 뉴럴 네트워크는 심층 콘볼루셔널 네트워크(deep convolutional network, DCN)이다. 심층 콘볼루셔널 네트워크들은 다수의 콘볼루셔널 계층들의 네트워크들이며, 이는 예를 들어, 풀링 및 정규화 계층들로 추가로 구성될 수 있다.
도 1d는 이미지 캡처 디바이스(130)에 의해 생성된 이미지(126) 내의 시각 특징들을 인식하도록 설계된 DCN(100)의 일례를 예시한다. 예를 들어, 이미지 캡처 디바이스(130)가 차량 내에 또는 상에 탑재된(또는 달리 그와 함께 이동하는) 카메라인 경우, DCN(100)은 교통 표지판 및 심지어 교통 표지판 상의 숫자를 식별하기 위해 다양한 지도형 학습 기법(supervised learning technique)들로 트레이닝될 수 있다. 마찬가지로 DCN(100)은 차선 표시들을 식별하거나 또는 신호등들을 식별하는 것과 같은 다른 작업들을 위해 트레이닝될 수 있다. 이것들은 단지 일부 예시적인 작업들이며, 다른 많은 작업들이 가능하다.
도 1d의 예에서, DCN(100)은 특징 추출 섹션 및 분류 섹션을 포함한다. 이미지(126)를 수신할 시에, 콘볼루셔널 계층(132)은 콘볼루셔널 커널(예컨대, 도 2에 묘사되고 설명된 바와 같음)을 이미지(126)에 적용하여, 제1 세트의 특징 맵들(118)(또는 중간 활성화들)을 생성한다. 대체적으로, "커널" 또는 "필터"는 입력 데이터 채널의 상이한 양태들을 강조하도록 설계된 가중치들의 다차원 어레이를 포함한다. 다양한 예들에서, "커널" 및 "필터"는 콘볼루셔널 뉴럴 네트워크에서 적용된 가중치들의 세트들을 지칭하기 위해 상호교환가능하게 사용될 수 있다.
제1 세트의 특징 맵들(118)은 이어서, 제2 세트의 특징 맵들(120)을 생성하기 위해 풀링 계층(예컨대, 최대 풀링 계층, 도시되지 않음)에 의해 서브샘플링될 수 있다. 풀링 계층은 모델 성능을 개선하기 위해 많은 정보를 유지하면서 제1 세트의 특징 맵들(118)의 크기를 감소시킬 수 있다. 예를 들어, 제2 세트의 특징 맵들(120)은 풀링 계층에 의해 28 x 28 매트릭스로부터 14 x 14 매트릭스로 다운샘플링될 수 있다.
이러한 프로세스는 많은 계층들을 통해 반복될 수 있다. 다시 말하면, 제2 세트의 특징 맵들(120)은 하나 이상의 후속 세트들의 특징 맵들(도시되지 않음)을 생성하기 위해 하나 이상의 후속 콘볼루셔널 계층들(도시되지 않음)을 통해 추가로 콘볼빙(convolving)될 수 있다.
도 1d의 예에서, 제2 세트의 특징 맵들(120)은 완전히 연결된 계층(124)에 제공되고, 이는 이어서 출력 특징 벡터(128)를 생성한다. 출력 특징 벡터(128)의 각각의 특징은, "표지판", "60" 및 "100"과 같은, 이미지(126)의 가능한 특징에 대응하는 수를 포함할 수 있다. 일부 경우들에서, 소프트맥스(softmax) 함수(도시되지 않음)가 출력 특징 벡터(128)에서의 숫자들을 확률로 컨버팅(converting)할 수 있다. 그러한 경우들에서, DCN(100)의 출력(122)은 이미지(126)가 하나 이상의 특징들을 포함하는 확률이다.
소프트맥스 함수(도시되지 않음)는 출력 특징 벡터(128)의 개별 엘리먼트들을, DCN(100)의 출력(122)이 이미지(126)에서와 같이, 그 위에 숫자 "60"을 갖는 표지판과 같은 하나 이상의 특징들을 포함하는 이미지(126)의 하나 이상의 확률들이 되도록, 확률로 컨버팅할 수 있다. 따라서, 본 예에서, "표지판" 및 "60"에 대한 출력(122)에서의 확률들은 "30", "40", "50", "70", "80", "90", 및 "100"과 같은, 출력(122)의 다른 엘리먼트들의 확률들보다 더 높아야 한다.
DCN(100)을 트레이닝하기 전에, DCN(100)에 의해 생성된 출력(122)은 부정확할 수 있다. 따라서, 출력(122)과 선험적으로 알려진 타깃 출력 사이의 오차가 계산될 수 있다. 예를 들어, 여기서 타깃 출력은, 이미지(126)가 "표지판" 및 숫자 "60"을 포함한다는 표시이다 이어서, 알려진 타깃 출력을 이용하여, DCN(100)의 가중치들은 트레이닝을 통해 조정될 수 있어서, DCN(100)의 후속 출력(122)이 타깃 출력(높은 확률들을 가짐)을 달성하도록 한다.
DCN(100)의 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 기울기 벡터를 컴퓨팅할 수 있다. 기울기 벡터는, 가중치가 특정 방식으로 조정된 경우, 오차가 증가하거나 또는 감소할 양을 표시할 수 있다. 이어서, 오차를 줄이기 위해 가중치들이 조정될 수 있다. 가중치들을 조정하는 이러한 방식은, 이러한 조정 프로세스가 DCN(100)의 계층들을 통한 "역방향 통과"를 수반하기 때문에 "역전파"로 지칭될 수 있다.
실제로, 가중치들의 오차 기울기가 작은 수의 예들에 걸쳐 계산될 수 있으므로, 계산되는 기울기는 실제 오차 기울기에 접근한다. 이러한 접근 방법은 "확률적 기울기 하강법(stochastic gradient descent)"으로 지칭될 수 있다. 확률적 기울기 하강법은, 전체 시스템의 달성가능한 오차 레이트가 감소하는 것을 중단할 때까지 또는 오차 레이트가 타깃 레벨에 도달할 때까지, 반복될 수 있다.
트레이닝 후에, DCN(100)에 새로운 이미지들이 제시될 수 있고, DCN(100)은 분류들, 또는 새로운 이미지에 있는 다양한 특징들의 확률들과 같은 추론들을 생성할 수 있다.
콘볼루셔널 뉴럴 네트워크들을 위한 콘볼루션 기법들
콘볼루션은 대체적으로 입력 데이터 세트로부터 유용한 특징들을 추출하는 데 사용된다. 예를 들어, 전술된 바와 같은 콘볼루셔널 뉴럴 네트워크에서, 콘볼루션은 트레이닝 동안 가중치들이 자동으로 학습되는 커널들 및/또는 필터들을 사용하여 상이한 특징들의 추출을 가능하게 한다. 이어서, 추출된 특징들을 조합하여 추론들을 행한다.
활성화 함수는, 콘볼루셔널 뉴럴 네트워크의 각각의 계층 전에 그리고/또는 그 후에 적용될 수 있다. 활성화 함수들은 대체적으로 뉴럴 네트워크의 노드의 출력을 결정하는 수학적 함수들이다. 따라서, 활성화 함수는, 노드의 입력이 모델의 예측과 관련되는지 여부에 기초하여, 노드가 정보를 통과시켜야 하는지 또는 아닌지 여부를 결정한다. 하나의 예에서, (즉, yx의 콘볼루션임)인 경우, x y 둘 모두는 대체적으로 "활성화들"로 간주될 수 있다 그러나, 특정 콘볼루션 연산의 관점에서, x는 또한, "사전 활성화들" 또는 "입력 활성화들"로 지칭될 수 있는데, 이는 x가 특정 콘볼루션 전에 존재하기 때문이고, y는 "출력 활성화들" 또는 "특징 맵"으로 지칭될 수 있다.
도 2는 12 픽셀 x 12 픽셀 x 3 채널 입력 이미지가 5 x 5 x 3 콘볼루션 커널(204) 및 1의 스트라이드(또는 스텝 크기)를 사용하여 콘볼빙되는 전통적인 콘볼루션의 일례를 묘사한다. 결과적인 특징 맵(206)은 8 픽셀 x 8 픽셀 x 1 채널이다. 이러한 예에서 알 수 있는 바와 같이, 전통적인 콘볼루션은 채널 차원수(여기서, 3개의 채널들 내지 1개의 채널)를 포함하여, 출력 데이터(여기서, 12 x 12 내지 8 x 8 픽셀들)에 비해 입력 데이터의 차원수를 변경할 수 있다.
(예컨대, 초당 부동 소수점 연산(floating-point operations per second, FLOP)들에서 측정된) 컴퓨테이션 부담 및 콘볼루셔널 계층들을 포함한 뉴럴 네트워크와 연관된 파라미터들의 수를 감소시키기 위한 하나의 방식은 콘볼루셔널 계층들을 인자화(factorize)하는 것이다. 예를 들어, 도 2에 묘사된 바와 같은, 공간 분리가능 콘볼루션은 2개의 컴포넌트들로 인자화될 수 있다: (1) 깊이별 콘볼루션, 여기서 각각의 공간 채널은 깊이별 콘볼루션(예컨대, 공간 융합)에 의해 독립적으로 콘볼빙됨; 및 (2) 포인트별 콘볼루션, 여기서 모든 공간 채널들은 선형적으로 조합됨(예컨대, 채널 융합). 깊이별 분리가능 콘볼루션의 일례가 도 3a 도 3b에 묘사된다. 대체적으로, 공간 융합 동안, 네트워크는 공간 평면들로부터 특징들을 학습하고, 채널 융합 동안, 네트워크는 채널들에 걸쳐 이들 특징들 사이의 관계들을 학습한다.
하나의 예에서, 깊이별 분리가능 콘볼루션은 공간 융합에 대해 5x5 커널들을, 그리고 채널 융합에 대해 1x1 커널들을 사용하여 구현될 수 있다. 특히, 채널 융합은 깊이 d의 입력 이미지에서의 모든 단일 포인트를 통해 반복되는 1x1xd 커널을 사용할 수 있고, 여기서 커널의 깊이 d는 대체적으로 입력 이미지의 채널들의 수와 매칭된다. 포인트별 콘볼루션을 통한 채널 융합은 효율적인 컴퓨테이션들을 위한 차원수 감소에 유용하다. 1x1xd 커널들을 적용하고, 커널 후에 활성화 계층을 추가하는 것은 네트워크에 추가된 깊이를 제공할 수 있으며, 이는 네트워크의 성능을 증가시킬 수 있다.
특히, 도 3a에서, 12 픽셀 x 12 픽셀 x 3 채널 입력 이미지(302)는, 각각이 5 x 5 x 1 차원수를 갖는 3개의 별개의 커널들(304A 내지 304C)을 포함하는 필터와 콘볼빙되어, 8 픽셀 x 8 픽셀 x 3 채널의 특징 맵(306)을 생성하며, 여기서 각각의 채널은 커널들(304A 내지 304C) 중의 개별 커널에 의해 생성된다.
이어서, 특징 맵(306)은 차원수 1 x 1 x 3을 갖는 커널과의 포인트별 콘볼루션 연산을 사용하여 추가로 콘볼빙되어, 8 픽셀 x 8 픽셀 x 1 채널의 특징 맵(310)을 생성한다. 이러한 예에 묘사된 바와 같이, 특징 맵(310)은 감소된 차원수(1개의 채널 대 3개의 채널들)를 가지며, 이는 그것과의 컴퓨테이션들을 더 효율적이게 한다.
도 3a 도 3b에서의 깊이별 분리가능 콘볼루션의 결과가 도 2에서의 전통적인 콘볼루션과 실질적으로 유사하지만, 컴퓨테이션들의 수는 상당히 감소되고, 따라서 깊이별 분리가능 콘볼루션은 네트워크 설계가 그것을 허용하는 경우 상당한 효율성 이득을 제공한다.
도 3b에 묘사되지 않았지만, 다수의(예컨대, m개의) 포인트별 콘볼루션 커널들(308)(예컨대, 필터의 개별 컴포넌트들)이 콘볼루션 출력의 채널 차원수를 증가시키는 데 사용될 수 있다. 따라서, 예를 들어, m = 256개의 1 x 1 x 3 커널들(308)이 생성될 수 있으며, 여기서 각각의 출력은 8 픽셀 x 8 픽셀 x 1 채널 특징 맵(예컨대, 특징 맵(310))이고, 이들 특징 맵들은 적층되어 8 픽셀 x 8 픽셀 x 256 채널의 결과적인 특징 맵을 얻을 수 있다. 채널 차원수에서의 결과적인 증가는 트레이닝에 대한 더 많은 파라미터들을 제공하며, 이는 (예컨대, 입력 이미지(302)에서) 특징들을 식별하기 위한 콘볼루셔널 뉴럴 네트워크의 능력을 개선할 수 있다.
예시적인 메모리-내-컴퓨테이션(CIM) 아키텍처
논리 연산들을 위해 처리 장치와 메모리 사이에서 데이터를 이동시킴으로써 발생하는 에너지 및 속도 병목들을 해결하는 데 디지털 메모리-내-컴퓨테이션(CIM)이 사용된다. 예를 들어, 디지털 CIM은 비트 병렬/비트 직렬 로직 연산들(예컨대, AND 연산)과 같은 로직 연산을 메모리에서 수행하는 데 사용될 수 있다. 그러나, 머신 학습 작업부하들은 메모리 어레이 외부의 회로부를 사용하여 수행될 수 있는 최종 누산을 여전히 수반한다. 메모리 내의 각각의 행이 순차적으로 판독되기 때문에, 더 양호한 성능을 달성하기(예컨대, 초당 테라 연산(tera-operations per second, TOPS)을 증가시키기) 위해, 고속 및 에너지 효율적 누산기가 메모리 근처에 구현될 수 있다.
도 4는 CIM 어레이에 구현될 수 있는, 정적 랜덤 액세스 메모리(SRAM)의 예시적인 메모리 셀(400)을 예시한다. 메모리 셀(400)이 8개의 트랜지스터들로 구현됨에 따라, 메모리 셀(400)은 "8-트랜지스터(8T) SRAM 셀"로 지칭될 수 있다.
도시된 바와 같이, 메모리 셀(400)은 출력부(414) 및 출력부(416)를 갖는 교차 커플링된 인버터 쌍(424)을 포함할 수 있다. 도시된 바와 같이, 교차 커플링된 인버터 쌍 출력부(414)는 통과 게이트 트랜지스터(402)를 통해 기입 비트 라인(write bit-line, WBL)(406)에 선택적으로 커플링되고, 교차 커플링된 인버터 쌍 출력부(416)는 통과 게이트 트랜지스터(418)를 통해 상보적 기입 비트 라인(WBLB)(420)에 선택적으로 커플링된다. WBL(406) 및 WBLB(420)는 교차 커플링된 인버터 쌍(424)에 기입(예컨대, 저장)될 상보적 디지털 신호들을 제공하도록 구성된다. WBL 및 WBLB를 사용하여 메모리 셀(400)에 뉴럴 네트워크 가중치에 대한 비트를 저장할 수 있다. 도시된 바와 같이, 통과 게이트 트랜지스터들(402, 418)의 게이트들은 기입 워드 라인(write word-line, WWL)(404)에 커플링될 수 있다. 예를 들어, 기입될 디지털 신호는 WBL에 제공될 수 있다(그리고 디지털 신호의 보완물은 WBLB에 제공됨). 이어서, 통과 게이트 트랜지스터들(402, 418)(이는 여기서 n형 전계 효과 트랜지스터(n-type field-effect transistor, NFET)들로서 구현됨)이 로직 하이 신호를 WWL(404)에 제공함으로써 턴온(turn on)되고, 그 결과 디지털 신호가 교차 커플링된 인버터 쌍(424)에 저장된다.
도시된 바와 같이, 교차 커플링된 인버터 쌍 출력부(414)는 트랜지스터(410)의 게이트에 커플링될 수 있다. 트랜지스터(410)의 소스는 기준 전위 노드(VSS 또는 전기 접지)에 커플링될 수 있고, 트랜지스터(410)의 드레인은 트랜지스터(412)의 소스에 커플링될 수 있다. 도시된 바와 같이, 트랜지스터(412)의 드레인은 판독 비트 라인(read bit-line, RBL)(422)에 커플링될 수 있다. 트랜지스터(412)의 게이트는 판독 워드 라인(read word-line, RWL)(408)를 통해 제어될 수 있다. RWL(408)은 활성화 입력 신호를 통해 제어될 수 있다.
판독 사이클 동안, RBL(422)은 로직 하이로 사전 충전될 수 있다. RWL(408) 상의 활성화 입력 및 교차 커플링된 인버터 쌍 출력부(414)에 저장된 가중치 비트 둘 모두가 로직 하이인 경우, 트랜지스터들(410, 412)은 둘 모두가 턴온되어, RBL(422)이 트랜지스터(410)의 소스에서 VSS에 전기적으로 커플링되고 RBL(422)이 로직 로우로 방전된다. RWL(408) 상의 활성화 입력 또는 교차 커플링된 인버터 쌍 출력부(414)에 저장된 가중치 중 어느 하나가 로직 로우인 경우, 트랜지스터들(410, 412) 중 적어도 하나가 턴오프(turn off)될 것이며, 이에 따라 RBL(422)은 로직 하이로 유지되게 된다. 따라서, RBL(422)에서의 메모리 셀(400)의 출력은 가중치 비트 및 활성화 입력 둘 모두가 로직 하이일 때에만 로직 로우이고, 그렇지 않은 때에는 로직 하이이므로, NAND 게이트 동작을 효과적으로 구현한다.
도 5는 본 개시내용의 특정 양태들에 따른 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)의 교차점들에 구현된다.
메모리 셀들(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 비트를 표현할 수 있다.
도시된 바와 같이, 열들(506) 각각은 감지 증폭기(sense amplifier, SA)(5030 내지 5037)에 커플링된다. 감지 증폭기들(5030, 5031 내지 5037)은 집합적으로 "감지 증폭기들(503)"로 지칭된다. 도시된 바와 같이, 감지 증폭기들(503) 각각의 입력부는 각자의 열 상의 메모리 셀들의 출력부들에 커플링될 수 있다.
감지 증폭기들(503)의 출력부들은 열 누산기 회로(553)에 커플링된다. 예를 들어, 감지 증폭기들(503) 각각의 출력부들은 열 누산기 회로(553)의 누산기들(5070, 5071 내지 5077)(집합적으로 "누산기들(507)"로 지칭됨) 중 하나의 누산기에 커플링된다. 누산기들(507) 각각은 다수의 컴퓨테이션 사이클들에 걸친 감지 증폭기들(503)의 각자의 감지 증폭기의 출력 신호들의 누산을 수행한다. 예를 들어, 각각의 컴퓨테이션 사이클 동안, 단일 워드 라인에 대해 컴퓨테이션이 수행되고, 워드 라인에 대한 컴퓨테이션의 출력 신호는 누산기들(507)의 각자의 누산기를 사용하는 다른 컴퓨테이션 사이클들 동안의 출력 신호들과 누산된다. 다수의 컴퓨테이션 사이클들(예컨대, 32개의 워드 라인들에 대한 32개의 사이클들) 후, 누산기들(507) 각각은 누산 결과를 제공한다.
회로(500)의 동작 동안, 활성화 회로부(590)는 제1 활성화 사이클 동안의 컴퓨테이션을 위해 제1 세트(599)의 활성화 입력들 a(0,0) 내지 a(31,0)을 메모리 셀들(502)에 제공한다. 활성화 입력들 a(0,0) 내지 a(31,0)은 한 번에 하나의 행에 제공되고, 각각의 행에 대한 각각의 컴퓨테이션의 출력들은 설명된 바와 같이 누산기들(507)의 각자의 누산기를 사용하여 누산된다. 동일한 동작이, 후속 활성화 사이클들 동안 활성화 파라미터들의 제2 최상위 비트(most significant bit, MSB)들을 표현하는 활성화 입력들 a(0,1) 내지 a(31,1) 등과 같은, 다른 세트들의 활성화 입력들에 대해, 활성화 파라미터들의 최하위 비트(least significant bit, LSB)들을 표현하는 활성화 입력들이 프로세싱될 때까지, 수행된다.
일단 다수의 컴퓨테이션 사이클들이 각각의 활성화 사이클 동안 완료되었으면, 누산기들(507)의 출력들은 열들에 걸친 가산을 위해 가중치 시프트 가산기 트리 회로(512)에 제공되고, 가중치 시프트 가산기 트리 회로(512)의 출력은 활성화 사이클들에 걸친 누산을 위해 활성화 시프트 누산기 회로(516)에 제공된다. 다시 말하면, 활성화 시프트 누산기 회로(516)는 활성화 사이클들이 완료된 후에 컴퓨테이션 결과들을 누산한다.
가중치 시프트 가산기 트리 회로(512)는, 비트 시프트 및 가산 동작의 수행을 용이하게 하기 위해 각각이 비트 시프트 및 가산 회로를 포함하는, 다수의 가중치 시프트 가산기들(예컨대, 가중치 시프트 가산기(514))을 포함한다. 다시 말하면, 열(5060) 상의 메모리 셀들은 각자의 가중치들에 대한 최상위 비트(MSB)들을 저장할 수 있고, 열(5067) 상의 메모리 셀들은 각자의 가중치들에 대한 최하위 비트(LSB)들을 저장할 수 있다. 따라서, 열들(506)에 걸쳐 가산을 수행할 때, 연관된 열 상의 비트들의 중요성을 고려하기 위해 비트들을 시프트하도록 비트 시프트 동작이 수행된다. 다시 말하면, 일단 다수의 컴퓨테이션 사이클들에 걸쳐 누산기들(507) 각각에서 비트별 누산이 발생하면, 가중치 시프트 가산기 트리 회로(512)는 8개의 열들의 가중된 합들(예컨대, 각각의 활성화 사이클 동안 주어진 활성화 비트 포지션에 대한 누산 결과를 제공함)을 조합하고, 활성화 시프트 누산기 회로(516)는 다수(예컨대, 8개)의 활성화 사이클들로부터의 결과들을 조합하여 최종 누산 결과를 출력한다.
설명된 바와 같이, 가중치 시프트 가산기 트리 회로(512)의 출력은 활성화 시프트 누산기 회로(516)에 제공된다. 활성화 시프트 누산기 회로(516)는 비트 시프트 회로(518) 및 누산기(520)를 포함한다. 비트 시프트 회로(518)는 활성화 사이클에 기초하여 비트 시프트 동작을 수행한다. 예를 들어, 8개의 활성화 사이클들을 사용하여 프로세싱되는 8 비트 활성화 파라미터에 대해, 비트 시프트 회로는 제1 활성화 사이클 동안 8 비트 시프트를, 제2 활성화 사이클 동안 7 비트 시프트를 수행할 수 있는 등이다. 활성화 사이클들 후, 비트 시프트 회로(518)의 출력들은 누산기(520)를 사용하여 누산되어 DCIM 출력 신호를 생성한다.
일부 양태들에서, CIM 어레이(501), 활성화 회로부(590) 및 열 누산기 회로(553)는 가중치 시프트 가산기 트리 회로(512) 및 활성화 시프트 누산기 회로(516)보다 더 높은 주파수(예컨대, 8배 이상)에서 동작한다. 도시된 바와 같이, 하프 래치 회로들(5090, 5091 내지 5097)(집합적으로 "하프 래치 회로들(509)"로 지칭됨)은 누산기들(507)의 각자의 출력부들에 커플링될 수 있다. 각각의 하프 래치 회로는 누산기들(507)의 각자의 누산기의 출력을 보유하고, 일단 다수의 컴퓨테이션 사이클들이 완료되었으면, 가중치 시프트 가산기 트리 회로(512)의 각자의 입력부에 출력을 제공한다. 다시 말하면, 하프 래치 회로는 대체적으로, 클록 사이클의 시작 시에 디지털 입력(예컨대, 누산기들(507) 중 하나의 누산기의 출력)을 보유하고 클록 사이클의 종료 시에 디지털 입력을 래치 회로의 출력부에 제공하는 래치 회로를 지칭한다. 하프 래치 회로들(509)은 열 누산기 회로(553)의 더 높은 주파수 동작으로부터 가중치 시프트 가산기 트리 회로(512)의 더 낮은 주파수 동작으로의 전이를 용이하게 한다. 하프 래치 회로들(509)은 다른 컴포넌트들(예컨대, 여분의 버퍼들)을 사용하지 않으면서 클록 도메인들 사이를 동기화하게 할 수 있다.
특정 양태들은, 도 6에 관련하여 더 상세하게 설명된 바와 같이, 무 가산기(adder-free) 부분 합 생성을 가능하게 하는 디지털 카운터(예컨대, 시간 도메인에서 로직 하이들의 양을 카운트하도록 구성된 1 카운터(ones counter))를 제공한다. 다시 말하면, 누산기들(507) 각각은 감지 증폭기들(503)의 각자의 감지 증폭기의 출력부에 제공되는 로직 하이들의 양을 카운트하는 디지털 카운터를 사용하여 구현될 수 있다.
도 6은 본 개시내용의 특정 양태들에 따른, 펄스 생성기(602) 및 디지털 카운터(604)를 사용하여 구현된 누산기(예컨대, 누산기들(507) 중 하나의 누산기)를 갖는 DCIM 회로부를 예시한다. 도시된 바와 같이, 도 6에 NAND 게이트로서 도시된 메모리 셀(5020-0)과 같은 메모리 셀은 활성화 입력 및 저장된 가중치 비트에 기초하여 컴퓨테이션 결과를 제공할 수 있다. 활성화 입력 및 저장된 가중치 비트 각각은 50% 토글링 확률을 가질 수 있다. 다시 말하면, 활성화 입력은 로직 하이일 50% 확률 및 로직 로우일 50% 확률을 가질 수 있다. 유사하게, 저장된 가중치 비트는 로직 하이일 50% 확률 및 로직 로우일 50% 확률을 가질 수 있다. 그 결과, NAND 게이트의 출력은 NAND 연산으로 인해 25% 토글링 확률(예컨대, 로직 하이일 25% 확률 및 로직 로우일 75% 확률)을 가질 수 있다.
펄스 생성기(602)는 연관된 감지 증폭기의 각각의 로직 하이 출력에 대해 펄스를 생성한다. 예를 들어, 제1 컴퓨테이션 사이클 동안, 메모리 셀(5020-0)의 출력이 로직 하이인 경우, 펄스 생성기(602)는 펄스를 생성하고, 제2 컴퓨테이션 사이클 동안, 메모리 셀(5020-1)의 출력이 로직 하이인 경우, 펄스 생성기(602)는 펄스를 생성하는 등이다. 펄스 생성기(602)의 출력은 디지털 카운터(604)에 제공된다. 디지털 카운터는 펄스 생성기(602)에 의해 생성된 펄스들의 수를 카운트하고, 디지털 카운터 출력 신호(예컨대, 비트들 q(0) 내지 q(5)를 포함하는 6 비트 디지털 신호)를 생성한다.
도시된 바와 같이, 디지털 카운터(604)는 플립플롭들(6060 내지 6065)(집합적으로 "플립플롭들(606)"로 지칭됨)을 포함하며, 여기서 펄스 생성기(602)의 출력은 플립플롭(606)의 클록(CLK) 입력부에 제공된다. 각각의 플립플롭의 상보적 출력( )은 그 플립플롭의 데이터(D) 입력부로 피드백되고, 각각의 플립플롭의 출력(Q)은 플립플롭 체인 내의 후속 플립플롭의 CLK에 제공된다.
도시된 바와 같이, 플립플롭(6060)은 플립플롭들(606) 중 최고 에너지 소비를 갖고, 플립플롭(6065)은 플립플롭들(606) 중 최저 에너지 소비를 갖는다. 예를 들어, 펄스 생성기(602)가 스텝당(예컨대, 컴퓨테이션 사이클당) 0.5 펨토줄(femtojoule, fJ)을 소비하는 경우, 플립플롭(6060)은 0.8 fJ/스텝을 소비하고, 플립플롭(6061)은 0.4 fJ/스텝을 소비하고, 플립플롭(6062)은 0.2 fJ/스텝을 소비하고, 플립플롭(6063)은 0.1 fJ/스텝을 소비하고, 플립플롭(6064)은 0.05 fJ/스텝을 소비하고, 플립플롭(6065)은 0.025 fJ/스텝을 소비한다. 다시 말하면, 플립플롭(6060)은 디지털 카운터 출력 신호의 최하위 비트(LSB) q(0)을 생성하고, 플립플롭(6065)은 디지털 카운터 출력 신호의 최상위 비트(MSB) q(5)를 생성한다. 플립플롭(6061)의 출력이 플립플롭(6060)의 출력에 비해 절반의 토클링 확률을 가지므로, 플립플롭(6060)의 에너지 소비는 플립플롭(6061)의 에너지 소비의 2배이다. 유사하게, 플립플롭(6062)의 출력이 플립플롭(6061)의 출력에 비해 절반의 토클링 확률을 가지므로, 플립플롭(6061)의 에너지 소비는 플립플롭(6062)의 에너지 소비의 2 배인 등이다.
디지털 카운터(604)의 각각의 스테이지는 사실상 나누기 2 주파수 분할기(divide-by-two frequency divider)이며, 이때, 하나의 플립플롭 스테이지의 토글링은 선행 플립플롭 스테이지의 출력 신호에 의해 제어된다. 디지털 카운터에 대한 추가 스테이지들을 구현하는 것(예컨대, 디지털 카운터 출력 신호의 비트 수를 증가시키는 것)은 DCIM 회로부의 에너지 소비에 거의 영향을 미치지 않는데, 그 이유는, 추가 스테이지들에 의해, 에너지 소비가 점근적으로 증가하기 때문이다. 하프 래치 회로부가, 카운터의 출력을 느린 클록 도메인(DCIM 클록)에 동기화하기 위해 각각의 열에 대해 디지털 카운터의 출력부에 커플링될 수 있다. 다시 말하면, 비트들 q(0) 내지 q(5) 각각은 하프 래치 회로(예컨대, 하프 래치 회로들(509) 중 하나의 하프 래치 회로)에 제공될 수 있다. 일부 양태들에서, 도 7에 더 상세히 설명된 바와 같이, 메모리의 열들 사이의 간섭을 감소시키는 데 지연 회로부가 사용될 수 있다.
도 7은 본 개시내용의 특정 양태들에 따른, 전자기 간섭(EMI)을 감소시키기 위한 지연 회로부를 사용하여 구현된 CIM 회로부를 예시하는 블록도이다. 예를 들어, 도시된 바와 같이, 8 비트 가중치들이 메모리 셀들(502)에 저장되고, 감지 증폭기들(503), 열 누산기들(507), 가중치 시프트 가산기 트리 회로(512), 및 활성화 시프트 누산기 회로(516)를 사용하여 프로세싱될 수 있는데, 이는 본 명세서에 설명된 바와 같다. 지연 회로들(750)(예컨대, 상이한 지연들과 연관됨)이 감지 증폭기들(503)과 열 누산기들(507) 사이에서 구현되어, 열 누산기들(507)에 제공되는 신호들의 위상에 대해 오프셋을 구현할 수 있다. 예를 들어, 단일 지연 엘리먼트("1D"로 라벨링됨)가 감지 증폭기(5030)와 열 누산기(5070) 사이에 커플링될 수 있고, 2개의 지연 엘리먼트들("2D"로 라벨링됨)이 감지 증폭기(5031)와 열 누산기(5071) 사이에 커플링될 수 있는 등이다. 이러한 방식으로, 열 누산기들(507)에 제공되는 신호들의 하강/상승 에지들이 오프셋되어, 열들 사이에서 EMI를 감소시킨다. 다시 말하면, (예컨대, 하나 이상의 지연 셀을 통한) 스큐가 디지털 카운터(604)의 입력에 추가되어, 그렇지 않으면 동시 스위칭 노이즈일 것으로 인한 EMI를 감소시킨다.
도시된 바와 같이, 클록 생성기 회로(770)가 DCIM 클록 및 로컬 클록을 생성하는 데 사용될 수 있다. 예를 들어, 클록 생성기 회로(770)는 DCIM 클록을 생성하도록 구성된 클록 생성기(771)를 포함할 수 있다. 클록 생성기(771)는 위상 잠금 루프(phase-locked loop, PLL) 또는 링 오실레이터(ring oscillator, RO)와 같은 임의의 적합한 클록 생성 회로를 사용하여 구현될 수 있다. 가중치 시프트 가산기 트리 회로(512)는 DCIM 클록을 수신하여 그 상에서 동작할 수 있다. 특정 양태들에 대해, 클록 생성기 회로(770)는, 활성화 회로부(590)가 동작하는 것에 기초하여, DCIM 클록으로부터 로컬 클록을 생성하는 데 사용될 수 있는 주파수 컨버터(702)를 포함할 수 있다. 주파수 컨버터(702)가 클록 생성기 회로(770)의 일부인 것으로 도시되어 있지만, 일부 구현들에서, 주파수 컨버터(702)는 클록 생성기 회로(770)와는 별개일 수 있다. 주파수 컨버터는 대체적으로 제1 주파수를 갖는 클록 신호를 수신하고 제2의 상이한 주파수를 갖는 제2 클록 신호를 생성하는 임의의 회로를 지칭한다.
주파수 컨버터는 임의의 적합한 기법을 사용하여 구현될 수 있다. 예를 들어, 주파수 컨버터는 시스템 클록 타이밍에 의해 변조된(예컨대, DCIM 클록을 사용하여 변조된) 링 오실레이터(RO)로서 구현될 수 있거나 시스템 클록의 상승 또는 하강 에지들로부터 펄스들을 생성함으로써 구현될 수 있으며, 이는 도 8a 도 8b에 관련하여 더 상세하게 설명된 바와 같다. 이러한 방식으로, 로컬 클록은 DCIM 클록과 동기화된 상승 에지를 가질 수 있다.
도 8a는 본 개시내용의 특정 양태들에 따른, 주파수 컨버터(702)의 예시적인 구현을 도시하는 블록도이다. 도 8b는 에지-펄스 컨버터의 입력 신호(840) 및 출력 신호(842)를 나타내는 그래프이다. 주파수 컨버터(702)는 하나 또는 다수의 에지-펄스 컨버터들(8021, 8022 내지 802n)(집합적으로 "에지-펄스 컨버터들(802)"로 지칭됨)을 포함할 수 있다. 에지-펄스 컨버터들(802) 각각은 에지-펄스 컨버터에 제시된 입력 신호의 각각의 상승 에지 및 각각의 하강 에지에서 펄스를 생성한다. 예를 들어, 도 8b에 도시된 바와 같이, 에지-펄스 컨버터(8021)는 입력 신호(840)의 상승 에지(820)를 검출한 후 펄스(822)를 생성하고, 입력 신호(840)의 하강 에지(824)를 검출한 후 다른 펄스(826)를 생성한다. 이러한 방식으로, 에지-펄스 컨버터의 출력 신호(842)는 에지-펄스 컨버터의 입력 신호(840)의 주파수의 2배이다. 도 7에 관련하여 설명된 바와 같이, 다수의 에지-펄스 컨버터들을 직렬로 사용하는 것은 로컬 클록을 생성하기 위해 DCIM 클록의 주파수를 업컨버전할 수 있게 한다. 에지-펄스 컨버터들이 주파수 컨버터의 하나의 예로서 제공되어 있지만, 임의의 적합한 타입의 주파수 컨버터가 사용될 수 있다.
도 9a도 9b는 본 개시내용의 특정 양태들에 따른, DCIM 회로를 구현하기 위한 집적 회로(IC) 레이아웃(900)을 예시한다. 도 9a에 도시된 바와 같이, 각각의 SRAM 열은 (예컨대, 핀 전계 효과 트랜지스터(fin field-effect transistor, FinFET)들을 구현하기 위해) 핀들을 사용하여 구현될 수 있고, 10 내지 14 nm 핀 피치들을 가질 수 있다. 핀 피치는 하나의 핀에서부터 인접 핀까지의 거리를 지칭한다. 본 명세서에 설명된 바와 같이, SRAM 열의 메모리 셀들은 감지 증폭기에 커플링된다. 도시된 바와 같이, 감지 증폭기의 출력부는 핀들을 갖는 각각의 열을 따라 캐스케이딩(cascadeding)된 플립플롭들을 사용하여 구현된 디지털 카운터에 커플링된다. 카운터 설계는 10 내지 12 nm 핀 피치들을 가질 수 있다.
도 9b에 도시된 바와 같이, 각각의 열은 8-트랜지스터(8T) SRAM 열(예컨대, 메모리 셀들의 열, 각각의 셀은 8개의 트랜지스터들을 사용하여 구현됨), 단일 종단 감지 증폭기(예컨대, 감지 증폭기(5030)), 펄스 생성기(예컨대, 펄스 생성기(602)), 도 6에 도시된 바와 같이 비트들 q(0) 내지 q(5) 각각을 생성하기 위한 1 카운터 회로부(one's counter circuitry)(예컨대, 플립플롭들(606)의 각자의 플립플롭), 및 비트들 q(0) 내지 q(5) 각각에 대한 래치 회로를 포함할 수 있다. 도시된 바와 같이, 이진 가산기 트리(예컨대, 가중치 시프트 가산기 트리 회로(512)) 및 누산기(예컨대, 활성화 시프트 누산기 회로(516))는 또한 래치 회로들의 출력부에 커플링된다. 일부 양태들에서, 도 10에 관련하여 보다 상세하게 설명된 바와 같이, 가산기 트리 회로(512) 및 누산기 회로(516)의 재사용을 용이하게 하는 데 다중화기가 사용될 수 있다.
도 10은 본 개시내용의 특정 양태들에 따른, 가산기 트리 및 누산기의 재사용을 용이하게 하기 위해 다중화기(1004)를 사용하여 구현된 DCIM 회로(1000)를 예시한다. 도시된 바와 같이, CIM 어레이(501)(예컨대, 8T SRAM 셀들을 포함함)는 다수의 가중치 열 그룹들을 포함할 수 있고, 각각의 가중치 열 그룹은 다수의 비트들을 갖는 가중치 파라미터와 연관된 한 세트의 열들을 갖는다. 예를 들어, 가중치 열 그룹(1002)은 각각의 행 상에 8 비트 가중치들을 저장하는 열들(506)을 지칭할 수 있다. 도시된 바와 같이, 각각의 가중치 열 그룹은, 본 명세서에 설명된 바와 같이, 8개의 누산기들(예컨대, 디지털 카운터들) 및 (예컨대, 8개의 누산기들 x 누산기당 6 비트들에 대해) 48개의 하프 래치 회로들에 커플링될 수 있다.
일부 양태들에서, 부분 합 연산이 가중치 열 그룹들에 걸친 공유 누산기(예컨대, 누산기 회로(516))를 사용하여 구현되어, 각각의 승산-누산(multiply-and-accumulate, MAC) 사이클의 끝에서 하나의 누산 결과를 제공할 수 있다. 이진 가산기 트리(예컨대, 가중치 시프트 가산기 트리 회로(512)) 및 21 비트 누산기(예컨대, 누산기 회로(516))는 DCIM 회로부의 총면적의 상당한 부분을 소비한다. 따라서, 다수의 가중치 열 그룹들에 걸쳐 이진 가산기 트리 및 활성화 시프트 누산기를 공유하는 것은 DCIM 회로부의 총면적 소비를 감소시킨다.
도시된 바와 같이, 8개의 활성화 사이클들(10200 내지 10207)(집합적으로 "활성화 사이클들(1020)"로 지칭됨) 각각 동안, 32개의 컴퓨테이션 사이클들이 발생하고(C00 내지 C031), 32개의 행들 각각에 대한 하나의 컴퓨테이션 사이클은 도 5에 도시된 바와 같다. 활성화 사이클들(1020) 후, 가중치 열 그룹들에 대한 컴퓨테이션 출력들은 하프 래치 회로들의 출력부들에서 이용가능하다.
다중화기(1004)는 가산기 트리 회로(512) 및 누산기 회로(516)를 사용하여 프로세싱할 각각의 가중치 열 그룹을 개별적으로 선택하는 데 사용될 수 있다. 예를 들어, 제1 가중치 사이클 동안, 제1 가중치 열 그룹(예컨대, 가중치 열 그룹(1002)) 상의 하프 래치 출력(예컨대, 6 비트 출력)이 다중화기(1004)에 의해 선택되고, 도 5에 대해 설명된 바와 같이 프로세싱하기 위해 가산기 트리 회로(512) 및 누산기 회로(516)에 제공될 수 있다.
제2 가중치 사이클 동안, 제2 가중치 열 그룹 상의 하프 래치 출력(예컨대, 6 비트 출력)이 다중화기에 의해 선택되고, 프로세싱하기 위해 가산기 트리 회로(512) 및 누산기 회로(516)에 제공될 수 있는 등이다. 래칭된 부분 합들의 시간 다중화는 가산기 트리 회로(512) 및 누산기 회로(516)의 재사용을 가능하게 한다. 새로운 가중치 열 그룹을 선택하기 위해, (예컨대, 도 7에 도시된 DCIM 클록의) 2개의 클록 사이클들마다 다중화기 선택 신호가 생성될 수 있다. 다시 말하면, 매 2개의 클록 사이클들 후, 각각의 열에 대한 하나의 21 비트 누산 결과가 누산기 회로(516)에 의해 제공되며, 하나의 클록 사이클은 가산기 트리 회로(512)를 통해 가산을 수행하기 위한 것이고, 다른 클록 사이클은 누산기 회로(516)를 통한 누산을 위한 것이다. 일부 양태들에서, 나누기 2 버전의 DCIM 클록이 다중화기(1004), 가산기 트리 회로(512), 및 누산기 회로(516)를 동작시키는 데 사용될 수 있어, 가중치 열 그룹들에 대한 가산 및 누산 연산들의 처리량을 증가시킬 수 있다.
본 개시내용의 양태들은 임의의 DCIM 곱을 위한 고속 및 에너지 효율적 누산을 가능하게 하는 혁신적인 회로 및 물리 설계를 제공한다. 설명된 양태들은 부분 합들을 생성하기 위해 클록 신호를 라우팅하는 것을 수반하지 않고, 사실상 완전히 자가 타이밍되어, 고속 연산을 할 수 있게 한다. 다시 말하면, 누산기들(507)을 구현하는 데 사용되는 디지털 카운터들은 클록 신호 대신 연관된 감지 증폭기들(503)의 출력을 사용하여 타이밍된다. 데이터 분할된 클록(예컨대, 도 7에 도시된 로컬 클록)으로 인해, 본 개시내용의 양태들은, 디지털 카운터의 에너지 소비가 점근적으로 증가함에 따라, DCIM 회로부의 낮은 에너지 구현을 제공하며, 각각의 가중치 열 그룹에 대한 누산은 빠른 토글링 부분 합 컴포넌트들을 사용하지 않으면서 분할된 클록과 연관된 레이트로 수행된다. 본 명세서에 제공된 양태들은 또한 가중치 열 그룹들에 걸쳐 누산기(예컨대, 누산기 회로(516)) 및 이진 가산기 트리(예컨대, 가산기 트리 회로(512))를 공유할 수 있게 하여, DCIM 시스템 레벨에서 면적을 감소시킬 수 있게 한다. 본 명세서에 설명된 DCIM 회로부는 또한 덜 복잡한 설계를 제공하여(예컨대, 어떠한 풀 가산기 셀(full-adder cell)들도 포함하지 않거나 종래의 구현들에서 사용되는 생성 셀들도 갖지 않기 때문임), 콤팩트한 구현을 허용한다. 본 명세서에 설명된 양태들은 또한 CIM 애플리케이션에 사용되는 SRAM 어레이에 대한 수정들 없이 구현될 수 있다. 도 9a도 9b에 관련하여 설명된 바와 같이, 회로들은 SRAM 어레이에 열-매칭되어 전체 어레이 효율을 제공한다. 본 명세서에 설명된 바와 같이, 상이한 열들의 프로세싱 사이의 자가 타이밍 클록킹 및 스큐(예컨대, 위상 오프셋)는 동시 스위칭 노이즈에 의해 야기되는 EMI를 감소시킨다.
디지털 메모리-내-컴퓨테이션(DCIM)에 대한 예시적인 동작들
도 11은 본 개시내용의 특정 양태들에 따른, 메모리-내-컴퓨테이션에 대한 예시적인 동작들(1100)을 예시하는 흐름도이다. 동작들(1100)은 도 5, 도 6, 도 7, 도 8a, 도 8b, 도 9a, 도 9b 도 10에 관련하여 설명된 회로(500)와 같은 CIM용 회로에 의해 수행될 수 있다.
블록(1101)에서, 회로는 메모리의 다수의 열들 각각 상의 복수의 메모리 셀들(예컨대, 메모리 셀들(502))에서 활성화 입력들을 수신할 수 있다. 블록(1105)에서, 회로는, 복수의 디지털 카운터들(예컨대, 디지털 카운터(604))의 각각의 디지털 카운터를 통해, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들을 누산한다. 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 다수의 열들 각각의 복수의 메모리 셀들은 메모리의 상이한 워드 라인들(예컨대, 워드 라인들(504))에 대응한다. 일부 양태들에서, 회로는, 디지털 카운터를 통해, 다수의 열들의 각자의 열 상의 출력 신호들의 특정 로직 값들(예컨대, 로직 하이들)의 양을 카운트한다. 일부 양태들에서, 회로는, 다수의 열의 각각의 열에 커플링된 펄스 생성기를 통해, 열 상의 복수의 메모리 셀들의 출력 신호들에 기초하여 하나 이상의 펄스들을 생성하며, 여기서 디지털 카운터를 통해 출력 신호들을 누산하는 것은 하나 이상의 펄스들에 기초한다.
블록(1110)에서, 회로는, 가산기 회로(예컨대, 가산기 트리 회로(512))를 통해, 복수의 디지털 카운터들의 출력 신호들을 가산한다. 블록(1115)에서, 회로는, 누산기(예컨대, 누산기 회로(516))를 통해, 가산기 회로의 출력 신호들을 누산한다. 블록(1120)에서, 회로는 가산기 회로의 출력 신호들의 누산에 기초하여 DCIM 출력 신호를 생성할 수 있다. 일부 양태들에서, 회로는, 다수의 열들 각각의 복수의 메모리 셀들을 통해, 다수의 컴퓨테이션 사이클들 동안 출력 신호들을 생성하고, 디지털 카운터는 디지털 출력 신호들의 로직 하이들의 양을 카운트하도록 구성된다.
일부 양태들에서, 디지털 카운터는 한 세트의 플립플롭들(예컨대, 플립플롭들(606))을 포함하며, 여기서 그 세트의 플립플롭들 중 제1 플립플롭(예컨대, 플립플롭(6060))의 클록 입력부는 열에 커플링되고, 여기서 제1 플립플롭의 출력부는 그 세트의 플립플롭들 중 제2 플립플롭(예컨대, 플립플롭(6061))의 클록 입력부에 커플링된다. 일부 양태에서, 회로는, 그 세트의 플립플롭들 각각을 통해, 디지털 카운터에 의해 생성된 출력 신호의 비트를 생성한다. 하프 래치 회로는 그 세트의 플립플롭들 각각의 출력부에 커플링될 수 있다.
일부 양태들에서, 회로는 다수의 열들 중 제1 열 상의 복수의 메모리 셀들에 의해 생성된 출력 신호들에 (예컨대, 지연 회로들(750) 중 하나의 지연 회로를 통해) 제1 지연을 적용하고, 다수의 열들 중 제2 열 상의 복수의 메모리 셀들에 의해 생성된 출력 신호들에 (예컨대, 지연 회로들(750) 중 다른 하나의 지연 회로를 통해) 제2 지연을 적용한다. 제1 지연은 제2 지연과는 상이할 수 있다.
특정 양태들에서, 회로는, 다른 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 메모리의 다수의 다른 열들의 각자의 열 상의 출력 신호들을 누산하고, 여기서 다른 복수의 메모리 셀들은 다수의 다른 열들 각각 상에 있고, 다른 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 여기서 다수의 다른 열들 각각의 다른 복수의 메모리 셀들은 메모리의 상이한 워드 라인들에 대응한다. 회로는, 다중화기(예컨대, 다중화기(1004))를 통해, 제1 가중치 사이클 동안 복수의 디지털 카운터들로부터의 출력 신호들을 선택할 수 있고, 출력 신호들은 출력 신호들의 선택에 기초하여 가산기 회로를 통해 가산된다. 회로는 또한, 다중화기를 통해, 제2 가중치 사이클 동안 다른 복수의 디지털 카운터들로부터의 다른 출력 신호들을 선택할 수 있고, 가산기 회로를 통해, 다른 출력 신호들의 선택에 기초하여 다른 출력 신호들을 가산할 수 있다.
메모리-내-컴퓨테이션을 위한 예시적인 프로세싱 시스템들
도 12는 예시적인 전자 디바이스(1200)를 예시한다. 전자 디바이스(1200)는 도 11에 관련하여 설명된 동작들(1100)을 포함한, 본 명세서에 설명된 방법들을 수행하도록 구성될 수 있다.
전자 디바이스(1200)는, 일부 양태들에서 다중 코어 CPU일 수 있는 중앙 처리 장치(CPU)(1202)를 포함한다. CPU(1202)에서 실행된 명령들은, 예를 들어, CPU(1202)와 연관된 프로그램 메모리로부터 로딩될 수 있거나, 또는 메모리(1224)로부터 로딩될 수 있다.
전자 디바이스(1200)는 또한 특정 기능들에 맞춤된 추가적인 프로세싱 블록들, 예컨대 그래픽 처리 장치(GPU)(1204), 디지털 신호 프로세서(DSP)(1206), 뉴럴 처리 장치(neural processing unit, NPU)(1208), 멀티미디어 프로세싱 블록(1210), 멀티미디어 프로세싱 블록(1210), 및 무선 연결 프로세싱 블록(1212)을 포함한다. 하나의 구현에서, NPU(1208)는 CPU(1202), GPU(1204), 및/또는 DSP(1206) 중 하나 이상에서 구현된다.
일부 양태들에서, 무선 연결 프로세싱 블록(1212)은, 예를 들어, 3세대(3G) 연결, 4세대(4G) 연결(예컨대, 4G LTE), 5세대 연결(예컨대, 5G 또는 NR), Wi-Fi 연결, 블루투스 연결, 및 무선 데이터 송신 표준들을 위한 컴포넌트들을 포함할 수 있다. 무선 연결 프로세싱 블록(1212)은 무선 통신을 용이하게 하기 위해 하나 이상의 안테나들(1214)에 추가로 연결된다.
전자 디바이스(1200)는 또한 임의의 방식의 센서와 연관된 하나 이상의 센서 프로세서들(1216), 임의의 방식의 이미지 센서와 연관된 하나 이상의 ISP(image signal processor)들(1218), 및/또는 위성 기반 포지셔닝 시스템 컴포넌트들(예컨대, GPS(Global Positioning System) 또는 GLONASS(Global Navigation Satellite System))뿐만 아니라 관성 포지셔닝 시스템 컴포넌트들을 포함할 수 있는 내비게이션 프로세서(1220)를 포함할 수 있다.
전자 디바이스(1200)는 또한 하나 이상의 입력 및/또는 출력 디바이스들(1222), 예컨대 스크린들, 터치 감응 표면들(터치 감응 디스플레이들을 포함함), 물리 버튼들, 스피커들, 마이크로폰들 등을 포함할 수 있다. 일부 양태들에서, 전자 디바이스(1200)의 프로세서들 중 하나 이상은 ARM(advanced RISC(reduced instruction set computing) machine) 명령 세트에 기초할 수 있다.
전자 디바이스(1200)는 또한 하나 이상의 정적 및/또는 동적 메모리들, 예컨대 동적 랜덤 액세스 메모리, 플래시 기반 정적 메모리 등을 표현하는 메모리(1224)를 포함한다. 이러한 예에서, 메모리(1224)는 전자 디바이스(1200) 또는 CIM 제어기(1232)("제어 회로부"로도 지칭됨)의 상기 언급된 프로세서들 중 하나 이상에 의해 실행될 수 있는 컴퓨터 실행가능 컴포넌트들을 포함한다. 예를 들어, 전자 디바이스(1200)는, 본 명세서에 설명된 바와 같은, 회로(500)와 같은 CIM 회로(1226)를 포함할 수 있다. CIM 회로(1226)는 CIM 제어기(1232)를 통해 제어될 수 있다. 예를 들어, 일부 양태들에서, 메모리(1224)는 저장(예컨대, 메모리 셀들에 가중치들을 저장)을 위한 코드(1224A), 및 컴퓨팅(예컨대, 활성화 입력들을 적용함으로써 뉴럴 네트워크 컴퓨테이션을 수행)을 위한 코드(1224B)를 포함할 수 있다. 예시된 바와 같이, CIM 제어기(1232)는 저장(예컨대, 메모리 셀들에 가중치들을 저장)을 위한 회로(1228A), 및 컴퓨팅(예컨대, 활성화 입력들을 적용함으로써 뉴럴 네트워크 컴퓨테이션을 수행)을 위한 회로(1228B)를 포함할 수 있다. 묘사된 컴포넌트들, 및 묘사되지 않은 다른 것들은 본 명세서에 설명된 방법들의 다양한 양태들을 수행하도록 구성될 수 있다.
전자 디바이스(1200)가 서버 디바이스인 경우와 같은 일부 양태들에서, 도 12에 묘사된 예로부터, 멀티미디어 프로세싱 블록(1210), 무선 연결 프로세싱 블록(1212), 안테나(1214), 센서 프로세서들(1216), ISP들(1218), 또는 내비게이션 프로세서(1220) 중 하나 이상과 같은 다양한 양태들이 생략될 수 있다.
예시적인 조항들
조항 1. 메모리-내-컴퓨테이션을 위한 회로로서, 다수의 열들을 갖는 메모리; 상기 메모리의 각각의 열 상의 복수의 메모리 셀들 - 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 열들 각각 상의 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들 상에 있음 -; 복수의 디지털 카운터들 - 상기 복수의 디지털 카운터들의 각각의 디지털 카운터는 상기 메모리의 다수의 열들의 각자의 열에 커플링됨 -; 상기 복수의 디지털 카운터들의 출력부들에 커플링된 가산기 회로; 및 상기 가산기 회로의 출력부에 커플링된 누산기를 포함하는, 회로.
조항 2. 조항 1에 있어서, 상기 각자의 열에 커플링된 입력부를 갖는 펄스 생성기를 추가로 포함하고, 상기 펄스 생성기의 출력부는 상기 디지털 카운터의 입력부에 커플링되는, 회로.
조항 3. 조항 1 또는 조항 2에 있어서, 상기 다수의 열들 각각 상의 복수의 메모리 셀들은 다수의 컴퓨테이션 사이클들 동안 디지털 출력 신호들을 생성하도록 구성되고, 상기 디지털 카운터는 상기 디지털 출력 신호들의 로직 하이들의 양을 카운트하도록 구성되는, 회로.
조항 4. 조항 1 내지 조항 3 중 어느 한 조항에 있어서, 상기 디지털 카운터는 1 카운터 회로를 포함하는, 회로.
조항 5. 조항 1 내지 조항 4 중 어느 한 조항에 있어서, 상기 디지털 카운터는 한 세트의 플립플롭들을 포함하고, 상기 세트의 플립플롭들 중 제1 플립플롭의 클록 입력부는 상기 열에 커플링되고, 상기 제1 플립플롭의 출력부는 상기 세트의 플립플롭들 중 제2 플립플롭의 클록 입력부에 커플링되는, 회로.
조항 6. 조항 5에 있어서, 상기 세트의 플립플롭들 각각의 출력은 상기 디지털 카운터에 의해 생성된 디지털 신호의 비트를 제공하는, 회로.
조항 7. 조항 5 또는 조항 6에 있어서, 상기 세트의 플립플롭들의 각자의 플립플롭의 출력부에 커플링된 하프 래치 회로를 추가로 포함하는, 회로.
조항 8. 조항 1 내지 조항 7 중 어느 한 조항에 있어서, 지연 회로들을 추가로 포함하고, 각각의 지연 회로는 상기 다수의 열들의 각자의 열 상의 복수의 메모리 셀들과 상기 복수의 디지털 카운터들의 각자의 디지털 카운터 사이에 커플링되는, 회로.
조항 9. 조항 8에 있어서, 상기 다수의 열들 상의 지연 회로들은 상이한 지연들을 갖는, 회로.
조항 10. 조항 1 내지 조항 9 중 어느 한 조항에 있어서, 상기 메모리의 다수의 다른 열들 각각 상의 다른 복수의 메모리 셀들 - 상기 다른 복수의 메모리 셀들은 상기 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 다른 열들 각각 상의 다른 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들 상에 있음 -; 다른 복수의 디지털 카운터들 - 상기 다른 복수의 디지털 카운터들의 각각의 디지털 카운터는 상기 메모리의 다수의 다른 열들의 각자의 열에 커플링됨 -; 및 상기 복수의 디지털 카운터들의 출력부들 및 상기 다른 복수의 디지털 카운터들의 출력부들에 커플링된 다중화기를 추가로 포함하는, 회로.
조항 11. 조항 10에 있어서, 상기 다중화기는, 제1 가중치 사이클 동안 상기 복수의 디지털 카운터들의 출력 신호들을 상기 가산기 회로에 제공하도록; 그리고 제2 가중치 사이클 동안 상기 다른 복수의 디지털 카운터들의 출력 신호들을 상기 가산기 회로에 제공하도록 구성되는, 회로.
조항 12. 조항 1 내지 조항 11 중 어느 한 조항에 있어서, 상기 가산기 회로는 상기 복수의 디지털 카운터들의 출력 신호들을 가산하도록 구성된 가산기 트리를 포함하는, 회로.
조항 13. 조항 12에 있어서, 상기 가산기 트리의 하나 이상의 가산기들은 비트 시프트 및 가산 회로를 포함하는, 회로.
조항 14. 조항 1 내지 조항 13 중 어느 한 조항에 있어서, 제1 클록 신호를 출력하도록 구성된 제1 출력부를 갖고 제2 클록 신호를 출력하도록 구성된 제2 출력부를 갖는 클록 생성기 회로; 및 상기 복수의 메모리 셀들에 활성화 신호들을 제공하도록 구성된 활성화 회로를 추가로 포함하고, 상기 활성화 회로는 상기 클록 생성기 회로의 제1 출력부에 커플링되고, 상기 제1 클록 신호에 기초하여 동작하도록 구성되고, 상기 가산기 회로는 상기 클록 생성기 회로의 제2 출력부에 커플링되고, 상기 제2 클록 신호에 기초하여 동작하도록 구성되고, 상기 제2 클록 신호는 상기 제1 클록 신호와는 상이한 주파수를 갖는, 회로.
조항 15. 조항 14에 있어서, 상기 클록 생성기 회로는 상기 제2 클록 신호의 에지를 검출하는 것에 기초하여 펄스를 생성함으로써 상기 제1 클록 신호를 생성하도록 구성된 에지-펄스 컨버터를 포함하는, 회로.
조항 16. 조항 15에 있어서, 상기 에지는 상승 에지를 포함하는, 회로.
조항 17. 조항 1 내지 조항 16 중 어느 한 조항에 있어서, 상기 각자의 열과 상기 디지털 카운터 사이에 커플링된 감지 증폭기를 추가로 포함하는, 회로.
조항 18. 조항 1 내지 조항 17 중 어느 한 조항에 있어서, 상기 복수의 메모리 셀들은 상이한 활성화 입력들에 기초하여 순차적으로 활성화되도록 구성되고, 상기 디지털 카운터는, 상기 복수의 메모리 셀들이 순차적으로 활성화된 후, 상기 복수의 메모리 셀들로부터의 출력 신호들을 누산하도록 구성되는, 회로.
조항 19. 메모리-내-컴퓨테이션을 위한 방법으로서, 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들을 누산하는 단계 - 복수의 메모리 셀들은 상기 다수의 열들 각각 상에 있고, 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 상기 다수의 열들 각각 상의 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들 상에 있음 -; 가산기 회로를 통해, 상기 복수의 디지털 카운터들의 출력 신호들을 가산하는 단계; 및 누산기를 통해, 상기 가산기 회로의 출력 신호들을 누산하는 단계를 포함하는, 방법.
조항 20. 조항 19에 있어서, 상기 다수의 열의 각각의 열에 커플링된 펄스 생성기를 통해, 상기 열 상의 복수의 메모리 셀들의 출력 신호들에 기초하여 하나 이상의 펄스들을 생성하는 단계를 추가로 포함하고, 상기 디지털 카운터를 통해 상기 출력 신호들을 누산하는 단계는 상기 하나 이상의 펄스들에 기초하는, 방법.
조항 21. 조항 19 또는 조항 20에 있어서, 상기 디지털 카운터를 통해, 상기 다수의 열들의 각자의 열 상의 상기 출력 신호들의 특정 로직 값들의 양을 카운트하는 단계를 추가로 포함하는, 방법.
조항 22. 조항 19 내지 조항 21 중 어느 한 조항에 있어서, 상기 다수의 열들 각각 상의 복수의 메모리 셀들을 통해, 다수의 컴퓨테이션 사이클들 동안 출력 신호들을 생성하는 단계를 추가로 포함하고, 상기 디지털 카운터는 상기 디지털 출력 신호들의 로직 하이들의 양을 카운트하도록 구성되는, 방법.
조항 23. 조항 19 내지 조항 22 중 어느 한 조항에 있어서, 상기 디지털 카운터는 1 카운터 회로를 포함하는, 방법.
조항 24. 조항 19 내지 조항 23 중 어느 한 조항에 있어서, 상기 디지털 카운터는 한 세트의 플립플롭들을 포함하고, 상기 세트의 플립플롭들 중 제1 플립플롭의 클록 입력부는 상기 열에 커플링되고, 상기 제1 플립플롭의 출력부는 상기 세트의 플립플롭들 중 제2 플립플롭의 클록 입력부에 커플링되는, 방법.
조항 25. 조항 24에 있어서, 상기 세트의 플립플롭들의 각각의 플립플롭을 통해, 상기 디지털 카운터에 의해 생성된 상기 출력 신호의 비트를 생성하는 단계를 추가로 포함하는, 방법.
조항 26. 조항 24 또는 조항 25에 있어서, 하프 래치 회로를 통해, 상기 세트의 플립플롭들의 각각의 각자의 플립플롭의 출력 신호를 래칭하는 단계를 추가로 포함하는, 방법.
조항 27. 조항 19 내지 조항 26 중 어느 한 조항에 있어서, 상기 다수의 열들 중 제1 열 상의 복수의 메모리 셀들에 의해 생성된 상기 출력 신호들에 제1 지연을 적용하는 단계; 및 상기 다수의 열들 중 제2 열 상의 복수의 메모리 셀들에 의해 생성된 상기 출력 신호들에 제2 지연을 적용하는 단계를 추가로 포함하는, 방법.
조항 28. 조항 27에 있어서, 상기 제1 지연은 상기 제2 지연과는 상이한, 방법.
조항 29. 조항 19 내지 조항 28 중 어느 한 조항에 있어서, 다른 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 상기 메모리의 다수의 다른 열들의 각자의 열 상의 출력 신호들을 누산하는 단계 - 다른 복수의 메모리 셀들은 상기 다수의 다른 열들 각각 상에 있고, 상기 다른 복수의 메모리 셀들은 상기 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 상기 다수의 다른 열들 각각 상의 다른 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들 상에 있음 -; 다중화기를 통해, 제1 가중치 사이클 동안 상기 복수의 디지털 카운터들로부터의 상기 출력 신호들을 선택하는 단계 - 상기 출력 신호들은 상기 출력 신호들의 선택에 기초하여 상기 가산기 회로를 통해 가산됨 -; 상기 다중화기를 통해, 제2 가중치 사이클 동안 상기 다른 복수의 디지털 카운터들로부터의 다른 출력 신호들을 선택하는 단계; 및 상기 가산기 회로를 통해, 상기 다른 출력 신호들의 선택에 기초하여 상기 다른 출력 신호들을 가산하는 단계를 추가로 포함하는, 방법.
조항 30. 메모리-내-컴퓨테이션을 위한 장치로서, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들의 특정 로직 값들의 양을 카운팅하기 위한 수단 - 복수의 메모리 셀들은 상기 다수의 열들 각각 상에 있고, 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 열들 각각 상의 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들 상에 있음 -; 상기 복수의 디지털 카운터들의 출력 신호들을 가산하기 위한 수단; 및 상기 가산하기 위한 수단의 출력 신호들을 누산하기 위한 수단을 포함하는, 장치.
추가적인 고려사항들
이전의 설명은 당업자가 본 명세서에서 설명된 다양한 기능들을 실시하는 것을 가능하게 하기 위해 제공된다. 본 명세서에서 논의된 예들은 청구항들에 기재된 범주, 적용가능성, 또는 양태들을 한정하는 것은 아니다. 이러한 양태들에 대한 다양한 수정들이 당업자들에게 쉽게 자명할 것이며, 본 명세서에서 정의된 일반적 원리들은 다른 양태들에 적용될 수 있다. 예를 들어, 본 개시내용의 범주를 벗어나지 않으면서, 논의되는 엘리먼트들의 기능 및 배열에 있어서 변경이 이루어질 수 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절히 생략, 대체, 또는 추가할 수 있다. 예를 들어, 설명된 방법들은 설명된 것과는 상이한 순서로 수행될 수 있고, 다양한 단계들이 추가, 생략 또는 조합될 수 있다. 또한, 일부 예들과 관련하여 설명된 특징들은 일부 다른 예들에서 조합될 수 있다. 예컨대, 본 명세서에서 기재된 양태들 중 임의의 수의 양태들을 사용하여, 장치가 구현될 수 있거나 방법이 실시될 수 있다. 추가적으로, 본 개시내용의 범주는, 본 명세서에 기재된 본 개시내용의 다양한 양태들에 더하여 또는 그 이외의 다른 구조, 기능, 또는 구조 및 기능을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 본 개시내용의 임의의 양태가 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수 있다는 것이 이해되어야 한다.
본 명세서에서 사용된 바와 같이, 단어 "예시적인"은 "예, 예증, 또는 예시로서 역할을 함"을 의미한다. "예시적인" 것으로서 본 명세서에서 설명된 임의의 양태는 다른 양태들에 비해 반드시 바람직하다거나 이로운 것으로서 해석되지는 않아야 한다.
본 명세서에서 사용된 바와 같이, 아이템들의 리스트 "중 적어도 하나"를 지칭하는 어구는 단일 멤버들을 포함한, 그 아이템들의 임의의 조합을 지칭한다. 예로서, "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의 임의의 다른 순서화)을 커버하도록 의도된다.
본 명세서에서 사용된 바와 같이, 용어 "결정하는 것"은 매우 다양한 액션들을 포괄한다. 예를 들어, "결정"은 계산, 컴퓨팅, 프로세싱, 유도, 검사, 검색(예를 들어, 표, 데이터베이스 또는 다른 데이터 구조에서의 검색), 확인 등을 포함할 수 있다. 또한, "결정하는"은 수신(예컨대, 정보를 수신), 액세싱(예컨대, 메모리 내의 데이터에 액세싱) 등을 포함할 수 있다. 또한, "결정"은 해결, 선택, 선정, 설정 등을 포함할 수 있다.
본 명세서에 개시된 방법들은 그 방법들을 달성하기 위한 하나 이상의 단계들 또는 액션들을 포함한다. 방법 단계들 및/또는 액션들은 청구항들의 범주를 벗어나지 않으면서 서로 상호교환될 수 있다. 다시 말해서, 단계들 또는 액션들의 특정 순서가 특정되지 않으면, 특정 단계들 및/또는 액션들의 순서 및/또는 사용은 청구항들의 범주를 벗어나지 않으면서 수정될 수 있다. 또한, 위에서 설명된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적합한 수단에 의해 수행될 수 있다. 이 수단은, 회로, ASIC(application specific integrated circuit) 또는 프로세서를 포함하지만, 이에 제한되지 않는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 예시된 동작들이 존재하는 경우, 그러한 동작들은 유사한 넘버링을 갖는 대응하는 상대 수단-플러스-기능(counterpart means-plus-function) 컴포넌트들을 가질 수 있다. 예를 들어, 가산하기 위한 수단은 가산기 트리들(510) 또는 가중치 시프트 가산기 트리(512)와 같은 가산기 트리, 또는 누산기들(606)과 같은 누산기를 포함할 수 있다. 누산하기 위한 수단은 활성화 시프트 누산기(516)와 같은 누산기를 포함할 수 있다. 감지하기 위한 수단은 SA들(602)과 같은 SA를 포함할 수 있다.
다음의 청구항들은 본 명세서에 나타낸 양태들에 제한되도록 의도되지 않으며, 청구항들의 표현과 일치하는 전체 범위에 따라야 한다. 청구항 내에서, 단수의 엘리먼트에 대한 언급은 특별히 그렇게 언급되지 않는 한 "하나 및 하나만"을 의미하는 것이 아니라 오히려 "하나 이상"을 의미하도록 의도된다. 달리 특정하게 언급되지 않으면, 용어 "일부"는 하나 이상을 지칭한다. 어떠한 청구항 엘리먼트도 그 엘리먼트가 어구 "~하는 수단"을 사용하여 명백하게 기재되지 않는다면, 또는 방법 청구항의 경우, 그 엘리먼트가 어구 "~하는 단계"를 사용하여 기재되지 않는다면, 35 U.S.C.§112(f)의 규정 하에서 해석되지 않아야 한다. 당업자들에게 알려진 또는 나중에 알려지게 될 본 개시내용 전반에 걸쳐 설명된 다양한 양태들의 엘리먼트들에 대한 모든 구조적 그리고 기능적 등가물들은 인용에 의해 본 명세서에 명백히 포함되며, 청구항들에 의해 포괄되는 것으로 의도된다. 게다가, 본 명세서에 개시된 어떠한 것도, 그러한 개시내용이 청구항들에 명시적으로 인용되는지 여부에 관계없이 공중에 전용되도록 의도되지 않는다.

Claims (30)

  1. 메모리-내-컴퓨테이션을 위한 회로로서,
    다수의 열들을 갖는 메모리;
    상기 메모리의 각각의 열 상의 복수의 메모리 셀들로서, 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 열들 각각의 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 대응하는, 상기 메모리의 각각의 열 상의 복수의 메모리 셀들;
    복수의 디지털 카운터들로서, 상기 복수의 디지털 카운터들의 각각의 디지털 카운터는 상기 메모리의 다수의 열들의 각자의 열에 커플링되는, 상기 복수의 디지털 카운터들;
    상기 복수의 디지털 카운터들의 출력부들에 커플링된 가산기 회로; 및
    상기 가산기 회로의 출력부에 커플링된 누산기를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  2. 제1항에 있어서, 상기 각자의 열에 커플링된 입력부를 갖는 펄스 생성기를 추가로 포함하고, 상기 펄스 생성기의 출력부는 상기 디지털 카운터의 입력부에 커플링되는, 메모리-내-컴퓨테이션을 위한 회로.
  3. 제1항에 있어서, 상기 다수의 열들 각각의 상기 복수의 메모리 셀들은 다수의 컴퓨테이션 사이클들 동안 디지털 출력 신호들을 생성하도록 구성되고, 상기 디지털 카운터는 상기 디지털 출력 신호들의 로직 하이들의 양을 카운트하도록 구성되는, 메모리-내-컴퓨테이션을 위한 회로.
  4. 제1항에 있어서, 상기 디지털 카운터는 1 카운터 회로(one's counter circuit)를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  5. 제1항에 있어서, 상기 디지털 카운터는 한 세트의 플립플롭들을 포함하고, 상기 세트의 플립플롭들 중 제1 플립플롭의 클록 입력부는 상기 열에 커플링되고, 상기 제1 플립플롭의 출력부는 상기 세트의 플립플롭들 중 제2 플립플롭의 클록 입력부에 커플링되는, 메모리-내-컴퓨테이션을 위한 회로.
  6. 제5항에 있어서, 상기 세트의 플립플롭들 각각의 출력은 상기 디지털 카운터에 의해 생성된 디지털 신호의 비트를 제공하는, 메모리-내-컴퓨테이션을 위한 회로.
  7. 제5항에 있어서, 상기 세트의 플립플롭들의 각자의 플립플롭의 출력부에 커플링된 하프 래치 회로를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  8. 제1항에 있어서, 지연 회로들을 추가로 포함하고, 각각의 지연 회로는 상기 다수의 열들의 각자의 열의 상기 복수의 메모리 셀들과 상기 복수의 디지털 카운터들의 각자의 디지털 카운터 사이에 커플링되는, 메모리-내-컴퓨테이션을 위한 회로.
  9. 제8항에 있어서, 상기 다수의 열들의 지연 회로들은 상이한 지연들을 갖는, 메모리-내-컴퓨테이션을 위한 회로.
  10. 제1항에 있어서,
    상기 메모리의 다수의 다른 열들 각각 상의 다른 복수의 메모리 셀들로서, 상기 다른 복수의 메모리 셀들은 상기 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 다른 열들 각각의 상기 다른 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 대응하는, 상기 메모리의 다수의 다른 열들 각각 상의 다른 복수의 메모리셀들;
    다른 복수의 디지털 카운터들로서, 상기 다른 복수의 디지털 카운터들의 각각의 디지털 카운터는 상기 메모리의 다수의 다른 열들의 각자의 열에 커플링되는, 상기 다른 복수의 디지털 카운터들; 및
    상기 복수의 디지털 카운터들의 출력부들 및 상기 다른 복수의 디지털 카운터들의 출력부들에 커플링된 다중화기를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  11. 제10항에 있어서, 상기 다중화기는,
    제1 가중치 사이클 동안 상기 복수의 디지털 카운터들의 출력 신호들을 상기 가산기 회로에 제공하도록; 그리고
    제2 가중치 사이클 동안 상기 다른 복수의 디지털 카운터들의 출력 신호들을 상기 가산기 회로에 제공하도록 구성되는, 메모리-내-컴퓨테이션을 위한 회로.
  12. 제1항에 있어서, 상기 가산기 회로는 상기 복수의 디지털 카운터들의 출력 신호들을 가산하도록 구성된 가산기 트리를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  13. 제12항에 있어서, 상기 가산기 트리의 하나 이상의 가산기들은 비트 시프트 및 가산 회로를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  14. 제1항에 있어서,
    제1 클록 신호를 출력하도록 구성된 제1 출력부를 갖고 제2 클록 신호를 출력하도록 구성된 제2 출력부를 갖는 클록 생성기 회로; 및
    상기 복수의 메모리 셀들에 활성화 신호들을 제공하도록 구성된 활성화 회로를 추가로 포함하고,
    상기 활성화 회로는 상기 클록 생성기 회로의 제1 출력부에 커플링되
    고, 상기 제1 클록 신호에 기초하여 동작하도록 구성되고, 그리고
    상기 가산기 회로는 상기 클록 생성기 회로의 제2 출력부에 커플링되
    고, 상기 제2 클록 신호에 기초하여 동작하도록 구성되고, 상기 제2 클록 신
    호는 상기 제1 클록 신호와는 상이한 주파수를 갖는, 메모리-내-컴퓨테이션
    을 위한 회로.
  15. 제14항에 있어서, 상기 클록 생성기 회로는 상기 제2 클록 신호의 에지를 검출하는 것에 기초하여 펄스를 생성함으로써 상기 제1 클록 신호를 생성하도록 구성된 에지-펄스 컨버터(edge-to-pulse converter)를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  16. 제15항에 있어서, 상기 에지는 상승 에지를 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  17. 제1항에 있어서, 상기 각자의 열과 상기 디지털 카운터 사이에 커플링된 감지 증폭기를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 회로.
  18. 제1항에 있어서,
    상기 복수의 메모리 셀들은 상이한 활성화 입력들에 기초하여 순차적으로 활성화되도록 구성되고, 그리고
    상기 디지털 카운터는, 상기 복수의 메모리 셀들이 순차적으로 활성화된 후, 상기 복수의 메모리 셀들로부터의 출력 신호들을 누산하도록 구성되는, 메모리-내-컴퓨테이션을 위한 회로.
  19. 메모리-내-컴퓨테이션을 위한 방법으로서,
    복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 메모리의 다수의 열들의 각자의 열 상의 출력 신호들을 누산하는 단계로서, 복수의 메모리 셀들은 상기 다수의 열들 각각 상에 있고, 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 상기 다수의 열들 각각의 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 대응하는, 상기 단계;
    가산기 회로를 통해, 상기 복수의 디지털 카운터들의 출력 신호들을 가산하는 단계; 및
    누산기를 통해, 상기 가산기 회로의 출력 신호들을 누산하는 단계를 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  20. 제19항에 있어서, 상기 다수의 열들의 각각의 열에 커플링된 펄스 생성기를 통해, 상기 열의 상기 복수의 메모리 셀들의 상기 출력 신호들에 기초하여 하나 이상의 펄스들을 생성하는 단계를 추가로 포함하고, 상기 디지털 카운터를 통해 상기 출력 신호들을 누산하는 단계는 상기 하나 이상의 펄스들에 기초하는, 메모리-내-컴퓨테이션을 위한 방법.
  21. 제19항에 있어서, 상기 디지털 카운터를 통해, 상기 다수의 열들의 각자의 열 상의 상기 출력 신호들의 특정 로직 값들의 양을 카운트하는 단계를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  22. 제19항에 있어서, 상기 다수의 열들 각각의 상기 복수의 메모리 셀들을 통해, 다수의 컴퓨테이션 사이클들 동안 출력 신호들을 생성하는 단계를 추가로 포함하고, 상기 디지털 카운터는 상기 디지털 출력 신호들의 로직 하이들의 양을 카운트하도록 구성되는, 메모리-내-컴퓨테이션을 위한 방법.
  23. 제19항에 있어서, 상기 디지털 카운터는 1 카운터 회로를 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  24. 제19항에 있어서, 상기 디지털 카운터는 한 세트의 플립플롭들을 포함하고, 상기 세트의 플립플롭들 중 제1 플립플롭의 클록 입력부는 상기 열에 커플링되고, 상기 제1 플립플롭의 출력부는 상기 세트의 플립플롭들 중 제2 플립플롭의 클록 입력부에 커플링되는, 메모리-내-컴퓨테이션을 위한 방법.
  25. 제24항에 있어서, 상기 세트의 플립플롭들의 각각의 플립플롭을 통해, 상기 디지털 카운터에 의해 생성된 상기 출력 신호의 비트를 생성하는 단계를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  26. 제24항에 있어서, 하프 래치 회로를 통해, 상기 세트의 플립플롭들의 각각의 각자의 플립플롭의 출력 신호를 래칭하는 단계를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  27. 제19항에 있어서,
    상기 다수의 열들 중 제1 열의 상기 복수의 메모리 셀들에 의해 생성된 상기 출력 신호들에 제1 지연을 적용하는 단계; 및
    상기 다수의 열들 중 제2 열의 상기 복수의 메모리 셀들에 의해 생성된 상기 출력 신호들에 제2 지연을 적용하는 단계를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  28. 제27항에 있어서, 상기 제1 지연은 상기 제2 지연과는 상이한, 메모리-내-컴퓨테이션을 위한 방법.
  29. 제19항에 있어서,
    다른 복수의 디지털 카운터들의 각각의 디지털 카운터를 통해, 상기 메모리의 다수의 다른 열들의 각자의 열 상의 출력 신호들을 누산하는 단계로서, 다른 복수의 메모리 셀들은 상기 다수의 다른 열들 각각 상에 있고, 상기 다른 복수의 메모리 셀들은 상기 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하고, 상기 다수의 다른 열들 각각의 다른 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 대응하는, 상기 단계;
    다중화기를 통해, 제1 가중치 사이클 동안 상기 복수의 디지털 카운터들로부터의 상기 출력 신호들을 선택하는 단계로서, 상기 출력 신호들은 상기 출력 신호들의 선택에 기초하여 상기 가산기 회로를 통해 가산되는, 상기 단계;
    상기 다중화기를 통해, 제2 가중치 사이클 동안 상기 다른 복수의 디지털 카운터들로부터의 다른 출력 신호들을 선택하는 단계; 및
    상기 가산기 회로를 통해, 상기 다른 출력 신호들의 선택에 기초하여 상기 다른 출력 신호들을 가산하는 단계를 추가로 포함하는, 메모리-내-컴퓨테이션을 위한 방법.
  30. 메모리-내-컴퓨테이션을 위한 장치로서,
    메모리의 다수의 열들의 각자의 열 상의 출력 신호들의 특정 로직 값들의 양을 카운팅하기 위한 수단으로서, 복수의 메모리 셀들은 상기 다수의 열들 각각 상에 있고, 상기 복수의 메모리 셀들은 뉴럴 네트워크의 가중치들을 표현하는 다수의 비트들을 저장하도록 구성되고, 상기 다수의 열들 각각의 상기 복수의 메모리 셀들은 상기 메모리의 상이한 워드 라인들에 대응하는, 상기 수단;
    상기 복수의 디지털 카운터들의 출력 신호들을 가산하기 위한 수단; 및
    상기 가산하기 위한 수단의 출력 신호들을 누산하기 위한 수단을 포함하는, 메모리-내-컴퓨테이션을 위한 장치.
KR1020247011245A 2021-10-13 2022-10-12 디지털 메모리-내-컴퓨테이션 아키텍처들에 대한 누산기 KR20240071391A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US17/450,815 2021-10-13

Publications (1)

Publication Number Publication Date
KR20240071391A true KR20240071391A (ko) 2024-05-22

Family

ID=

Similar Documents

Publication Publication Date Title
Kang et al. An in-memory VLSI architecture for convolutional neural networks
Kang et al. A 19.4-nJ/decision, 364-K decisions/s, in-memory random forest multi-class inference accelerator
Giacomin et al. A robust digital RRAM-based convolutional block for low-power image processing and learning applications
Agrawal et al. CASH-RAM: Enabling in-memory computations for edge inference using charge accumulation and sharing in standard 8T-SRAM arrays
Andri et al. Chewbaccann: A flexible 223 tops/w bnn accelerator
CN117546178A (zh) 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流
Angizi et al. Pisa: A binary-weight processing-in-sensor accelerator for edge image processing
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
KR20240035492A (ko) 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
KR20240071391A (ko) 디지털 메모리-내-컴퓨테이션 아키텍처들에 대한 누산기
US20230115373A1 (en) Accumulator for digital computation-in-memory architectures
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20240086153A1 (en) Multi-bit accumulator and in-memory computing processor with same
EP4381376A1 (en) Folding column adder architecture for digital compute in memory
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
US20230037054A1 (en) Digital compute in memory
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20230004350A1 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
Yin et al. Cramming More Weight Data Onto Compute-in-Memory Macros for High Task-Level Energy Efficiency Using Custom ROM With 3984-kb/mm $^{2} $ Density in 65-nm CMOS
Chen Low-Power Mixed-Signal Time-Domain Hardware Accelerator Design for Edge Computing and Machine Learning
Kang et al. Mapping Inference Algorithms to DIMA
Kang Deep in-memory computing