KR20240025523A - 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름 - Google Patents

깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름 Download PDF

Info

Publication number
KR20240025523A
KR20240025523A KR1020237043714A KR20237043714A KR20240025523A KR 20240025523 A KR20240025523 A KR 20240025523A KR 1020237043714 A KR1020237043714 A KR 1020237043714A KR 20237043714 A KR20237043714 A KR 20237043714A KR 20240025523 A KR20240025523 A KR 20240025523A
Authority
KR
South Korea
Prior art keywords
cim
columns
cells
rows
neural network
Prior art date
Application number
KR1020237043714A
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 KR20240025523A publication Critical patent/KR20240025523A/ko

Links

Classifications

    • 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/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
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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/045Combinations of networks
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/34Analogue value compared with reference values
    • H03M1/36Analogue value compared with reference values simultaneously only, i.e. parallel type
    • 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)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)

Abstract

특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치를 제공한다. 장치는 일반적으로, 뉴럴 네트워크 컴퓨테이션을 위한 제1 커널로서 구성된 제1 세트의 CIM(computation in memory) 셀들 ― 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―; 및 뉴럴 네트워크 컴퓨테이션을 위한 제2 커널로서 구성된 제2 세트의 CIM 셀들 ― 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함함 ― 을 포함한다. 일부 양상들에서, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이하고, 그리고 제1 복수의 행들은 제2 복수의 행들과 상이하다.

Description

깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름
[0001] 본 출원은 2021년 6월 29일자로 출원된 미국 출원 제17/361,784호를 우선권으로 주장하며, 이 출원은 본 출원의 양수인에게 양도되고 그 전체가 인용에 의해 본 명세서에 포함된다.
[0002] 본 개시내용의 양상들은 머신 러닝 태스크들을 수행하는 것에 관한 것으로, 특히 CIM(computation in memory) 아키텍처들 및 데이터 흐름들에 관한 것이다.
[0003] 머신 러닝은 일반적으로 선험적으로 알려진 일 세트의 트레이닝 데이터에 대한 일반화된 피팅(generalized fit)을 표현하는 트레이닝된 모델(예를 들어, 인공 뉴럴 네트워크, 트리 또는 다른 구조들)을 생성하는 프로세스이다. 트레이닝된 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대한 통찰력들을 얻는 데 사용될 수 있는 추론들을 생성한다. 일부 경우들에서, 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대해 "추론을 실행하는 것"으로서 설명된다.
[0004] 다양한 머신 러닝(또는 인공 지능) 태스크들을 가능하게 하기 위해 머신 러닝의 사용이 확산됨에 따라, 머신 러닝 모델 데이터를 보다 효율적으로 프로세싱해야 할 필요성이 제기되었다. 일부 경우들에서, 머신 러닝 모델 데이터를 프로세싱하기 위한 프로세싱 시스템의 능력을 향상시키기 위해 전용 하드웨어, 이를테면 머신 러닝 가속기들이 사용될 수 있다. 그러나, 이러한 하드웨어는 공간과 전력을 필요로 하며, 이는 프로세싱 디바이스에서 항상 이용할 수 있는 것은 아니다. 예를 들어, 모바일 디바이스들, 상시 작동(always on) 디바이스들, IoT(internet of things) 디바이스들 등과 같은 "에지 프로세싱" 디바이스들은 프로세싱 능력들과 전력 및 패키징 제약 조건들의 균형을 맞춰야 한다. 또한, 가속기들은 공통 데이터 버스들에 걸쳐 데이터를 이동시킬 필요가 있을 수 있으며, 이로 인해 상당한 전력 사용량이 발생하고 데이터 버스를 공유하는 다른 프로세스들에 레이턴시가 발생할 수 있다. 결과적으로, 머신 러닝 모델 데이터를 프로세싱하기 위해 프로세싱 시스템의 다른 양상들이 고려되고 있다.
[0005] 메모리 디바이스들은 소위 CIM(computation in memory) 프로세스들을 통해 머신 러닝 모델 데이터의 프로세싱을 수행하는 데 활용될 수 있는 프로세싱 시스템의 다른 양상의 일 예이다. 불행하게도, 종래의 CIM 프로세스들은 DMAC(digital multiply-and-accumulate circuit)들 및 관련 주변 기기들과 같은 부가적인 하드웨어 엘리먼트들 없이는 깊이별 분리 가능한 콘볼루션 뉴럴 네트워크(depthwise separable convolutional neural network)들과 같은 복잡한 모델 아키텍처들의 프로세싱을 수행할 수 없을 수 있다. 이러한 부가적인 하드웨어 엘리먼트들은 그들의 구현에서 부가적인 공간, 전력 및 복잡성을 사용하며, 이는 부가적인 컴퓨팅 리소스로서 메모리 디바이스를 활용하는 이점들을 감소시키는 경향이 있다. 프로세싱 시스템의 보조적 양상들이, 메모리에서 직접 수행될 수 없는 프로세싱을 수행하기 위해 이용 가능한 DMAC들을 갖는 경우에도, 이러한 보조적 양상들로 그리고 이들로부터 데이터를 이동시키는 것은 시간과 전력을 필요로 하며, 따라서 CIM 프로세스의 이점들을 완화시킨다.
[0006] 따라서, 깊이별 분리 가능한 콘볼루션 뉴럴 네트워크들과 같은 더 광범위한 머신 러닝 모델 아키텍처들의 CIM(computation in memory)을 수행하기 위한 시스템들 및 방법들이 필요하다.
[0007] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치를 제공한다. 이 장치는 일반적으로, 뉴럴 네트워크 컴퓨테이션(neural network computation)을 위한 제1 커널(kernel)로서 구성되는 제1 세트의 CIM(computation in memory) 셀들 ― 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열(column)들 및 제1 복수의 행(row)들을 포함함 ―, 및 뉴럴 네트워크 컴퓨테이션을 위한 제2 커널로서 구성된 제2 세트의 CIM 셀들 ― 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함함 ― 을 포함한다. 일부 양상들에서, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이하고, 그리고제1 복수의 행들은 제2 복수의 행들과 상이하다.
[0008] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법을 제공한다. 이 방법은 일반적으로, 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM 셀들을 로딩하는 단계를 포함하고, 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함한다. 이 방법은 또한 하나 이상의 제2 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널에 대한 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계를 포함할 수 있으며, 여기서 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함한다. 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이할 수 있고, 그리고 제1 복수의 행들은 제2 복수의 행들과 상이할 수 있다. 이 방법은 또한, 제1 활성화 입력들을 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 제2 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행하는 단계를 포함할 수 있다.
[0009] 특정 양상들은, 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행되는 경우, 프로세싱 시스템으로 하여금, 뉴럴 네트워크에서의 신호 프로세싱 방법을 수행하게 하는 명령어들을 포함하는 비일시적 컴퓨터 판독 가능 매체를 제공한다. 이 방법은 일반적으로, 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM 셀들을 로딩하는 단계를 포함하고, 여기서 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함한다. 이 방법은 또한, 하나 이상의 제2 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널의 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계를 포함할 수 있으며, 여기서 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함한다. 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이할 수 있고, 그리고 제1 복수의 행들은 제2 복수의 행들과 상이할 수 있다. 이 방법은 또한, 제1 활성화 입력들을 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 제2 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행하는 단계를 포함할 수 있다.
[0010] 다른 양상들은 전술한 방법들뿐만 아니라 본 명세서에 설명된 방법들을 수행하도록 구성된 프로세싱 시스템들; 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행되는 경우, 프로세싱 시스템으로 하여금, 전술한 방법들뿐만 아니라 본 명세서에 설명된 방법들을 수행하게 하는 명령어를 포함하는 비일시적 컴퓨터 판독 가능 매체; 전술한 방법들뿐만 아니라 본 명세서에서 더 설명된 방법들을 수행하기 위한 코드를 포함하는 컴퓨터 판독 가능 저장 매체 상에 구현된 컴퓨터 프로그램 제품; 및 전술한 방법들뿐만 아니라 본 명세서에서 더 설명된 방법들을 수행하기 위한 수단을 포함하는 프로세싱 시스템을 제공한다.
[0011] 다음의 설명 및 관련된 도면들은 하나 이상의 양상들의 특정 예시적 특징들을 상세히 기술한다.
[0012] 첨부된 도면들은 하나 이상의 양상들의 특정 양상들을 도시하며, 따라서 본 개시내용의 범위를 제한하는 것으로 간주되지 않아야 한다.
[0013] 도 1a 내지 도 1d는 다양한 타입들의 뉴럴 네트워크들의 예들을 도시한다.
[0014] 도 2는 종래의 콘볼루션 동작의 예를 도시한다.
[0015] 도 3a 및 도 3b는 깊이별 분리 가능한 콘볼루션 동작들의 예들을 도시한다.
[0016] 도 4는 머신 러닝 모델 컴퓨테이션들을 수행하기 위해 구성된 예시적인 CIM(computation in memory) 어레이를 예시한다.
[0017] 도 5a 내지 도 5b는 도 4의 비트셀들을 나타낼 수 있는 예시적인 비트셀의 추가적인 세부사항들을 도시한다.
[0018] 도 6은 CIM(compute-in-memory) 어레이 동작 동안의 다양한 신호들의 예시적인 타이밍도를 도시한다.
[0019] 도 7은 CIM(compute-in-memory) 어레이에 의해 구현된 예시적인 콘볼루션 계층 아키텍처를 도시한다.
[0020] 도 8은 본 개시내용의 특정 양상들에 따른, 다수의 CIM 어레이들을 포함하는 CIM 아키텍처를 예시한다.
[0021] 도 9는 본 개시내용의 특정 양상들에 따른, CIM 아키텍처를 통해 프로세싱을 시그널링하기 위한 예시적인 동작들을 예시한다.
[0022] 도 10은 본 개시내용의 특정 양상들에 따른, 전력을 절감하기 위해 서브-뱅크들로 분할된 CIM 어레이를 예시한다.
[0023] 도 11은 본 개시내용의 특정 양상들에 따른, 대각선으로 스택된 커널들을 갖는 CIM 어레이를 예시한다.
[0024] 도 12는 본 개시내용의 특정 양상들에 따른, 반복되는 커널들로 구현된 CIM 어레이를 예시한다.
[0025] 도 13은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0026] 도 14는 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 동작들을 수행하도록 구성된 예시적인 전자 디바이스를 예시한다.
[0027] 이해를 용이하게 하기 위하여, 도면들에 공통적인 동일한 엘리먼트들을 지정하기 위해서 가능한 경우 동일한 참조 번호들이 사용되었다. 일 양상의 엘리먼트들 및 특징들은 추가적인 언급이 없더라도 다른 양상들에 유익하게 포함될 수 있다는 것이 고려된다.
[0028] 본 개시내용의 양상들은 깊이별 분리 가능한 콘볼루션 뉴럴 네트워크들을 포함하는 머신 러닝 모델들의 CIM(computation in memory)을 수행하기 위한 장치들, 방법들, 프로세싱 시스템들, 및 컴퓨터 판독 가능 매체들을 제공한다. 특정 양상들은 상이한 커널들에 대해 구성된 CIM 어레이의 CIM 셀들에 관한 것이며, 여기서 CIM 셀들은 CIM 어레이의 상이한 행들 및 열들 상에 구현되어, 제1 커널 및 제2 커널의 병렬 동작을 가능하게 한다. 예를 들어, 제1 커널은 CIM 어레이의 제1 행들 및 열들 상에서 구현될 수 있고, 제2 커널은 CIM 어레이의 제2 행들 및 열들 상에 구현될 수 있으며, 여기서 제1 행들 및 열들은 제2 행들 및 열들과는 상이하다. 상이한 행들 및 열들 상에 구현된 커널들 각각은 ADC(analog-to-digital)에 커플링되어, 커널들을 통한 병렬 DW(depth-wise) 컴퓨테이션들 및 아날로그-디지털 변환들을 허용할 수 있다. DW 컴퓨테이션들의 결과들은, 본 명세서에서 보다 상세히 설명되는 바와 같이, 추가적인 프로세싱을 위해 비선형 활성화 회로에 입력될 수 있고, 포인트별 컴퓨테이션들을 위해 다른 CIM 어레이에 입력될 수 있다.
[0029] CIM 기반 ML(machine learning)/AI(artificial intelligence) 태스크 가속기들은 이미지 및 오디오 프로세싱을 포함하는 다양한 태스크들에 사용될 수 있다. 또한, CIM은 DRAM, SRAM(예를 들어, 도 5에서와 같은 SRAM 셀에 기반함), MRAM 및 ReRAM과 같은 다양한 타입들의 메모리 아키텍처에 기반할 수 있으며, CPU(central processor unit)들, DSP(digital signal processor)들, GPU(graphical processor unit)들, FPGA(field-programmable gate array)들, AI 가속기들 등을 포함하는 다양한 타입들의 프로세싱 유닛들에 부착될 수 있다. 일반적으로, CIM은 메모리 안팎으로의 데이터 이동이 데이터 컴퓨테이션보다 더 많은 전력을 소모하는 "메모리 벽(memory wall)" 문제를 유리하게 감소시킬 수 있다. 따라서, CIM(computation in memory)을 수행함으로써, 상당한 전력 절감들이 실현될 수 있다. 이것은 특히, 저전력 에지 프로세싱 디바이스들, 모바일 디바이스들 등과 같은 다양한 타입들의 전자 디바이스들에 유용하다.
[0030] 예를 들어, 모바일 디바이스는 데이터 저장 및 CIM(compute-in-memory) 동작들을 위해 구성된 메모리 디바이스를 포함할 수 있다. 모바일 디바이스는, 모바일 디바이스의 카메라 센서에 의해 생성된 이미지 데이터와 같은, 모바일 디바이스에 의해 생성된 데이터에 기반하여, ML/AI 동작을 수행하도록 구성될 수 있다. 따라서, 모바일 디바이스의 MCU(memory controller unit)는 다른 온-보드 메모리(예를 들어, 플래시 또는 RAM)로부터 메모리 디바이스의 CIM 어레이로 가중치들을 로딩하고, 입력 특징 버퍼들 및 출력(예를 들어, 활성화) 버퍼들을 할당할 수 있다. 이어서, 프로세싱 디바이스는 예를 들어, 입력 버퍼에 계층을 로딩하고 CIM어레이에 로딩된 가중치들을 갖는 계층을 프로세싱함으로써 이미지 데이터의 프로세싱을 시작할 수 있다. 이러한 프로세싱은 이미지 데이터 각각의 계층에 대해 반복될 수 있으며, 출력(예를 들어, 활성화들)은 출력 버퍼들에 저장된 다음, 얼굴 인식과 같은 ML/AI 태스크를 위해 모바일 디바이스에 의해 사용될 수 있다.
뉴럴 네트워크(Neural Network)들, 딥 뉴럴 네트워크(Deep Neural Network)들, 및 딥러닝(Deep Learning)에 대한 간략한 배경
[0031] 뉴럴 네트워크들은 상호 연결된 노드들의 계층들로 조직화된다. 일반적으로 노드(또는 뉴런)는 컴퓨테이션이 발생하는 곳이다. 예를 들어, 노드는 입력 데이터를 증폭하거나 감쇠시키는 가중치들(또는 계수들)의 세트와 입력 데이터를 결합할 수 있다. 따라서, 입력 신호들의 증폭 또는 감쇠는 네트워크가 학습하려고 하는 태스크와 관련하여 다양한 입력들에 상대적 유의도(significance)들을 할당하는 것으로 간주될 수 있다. 일반적으로, 입력-가중치 프로덕트들을 합산(또는 누산)한 다음, 그 합계를 노드의 활성화 함수를 통해 전달하여 그 신호가 네트워크를 통해 추가로 진행되어야 하는지 여부와 그 신호가 네트워크를 통해 어느 정도까지 진행되어야 하는지를 결정하도록 한다.
[0032] 가장 기본적인 구현에서, 뉴럴 네트워크는 입력층, 은닉층 및 출력층을 가질 수 있다. "딥" 뉴럴 네트워크들은 일반적으로 하나 초과의 은닉층을 갖는다.
[0033] 딥러닝은 딥 뉴럴 네트워크들을 트레이닝하는 방법이다. 일반적으로, 딥러닝은 네트워크의 입력들을 네트워크의 출력들에 매핑하며, 임의의 입력 x와 임의의 출력 y 사이의 미지(unknown) 함수 f(x) = y를 근사화하도록 학습할 수 있기 때문에 '범용 근사기(universal approximator)'라고도 한다. 즉, 딥러닝은 x를 y로 변환하는 데 적합한 f를 찾아낸다.
[0034] 보다 구체적으로, 딥러닝은 이전 계층의 출력인, 개별 세트의 특징들에 기반하여 노드들의 각각의 계층을 트레이닝한다. 따라서, 딥 뉴럴 네트워크의 각각의 연속적인 계층으로, 특징들은 더욱 복잡해진다. 따라서, 딥러닝은 입력 데이터로부터 더 높은 레벨의 특징들을 점진적으로 추출하고 각각의 계층에서 연속적으로 더 높은 추상화 레벨들로 입력들을 표현하도록 학습하여 객체 인식과 같은 복잡한 태스크들을 수행할 수 있으며, 이에 의해 입력 데이터의 유용한 특징 표현을 구축할 수 있기 때문에 강력하다.
[0035] 예를 들어, 시각 데이터가 제공되는 경우, 딥 뉴럴 네트워크의 제1 계층은 입력 데이터에서 에지들과 같은 비교적 간단한 특징들을 인식하도록 학습할 수 있다. 다른 예에서, 청각 데이터가 제공되는 경우, 딥 뉴럴 네트워크의 제1 계층은 입력 데이터 내의 특정 주파수들에서 스펙트럼 전력을 인식하도록 학습할 수 있다. 이어서, 딥 뉴럴 네트워크의 제2 계층은 제1 계층의 출력에 기반하여, 시각 데이터에 대한 단순한 형상들 또는 청각 데이터에 대한 사운드들의 조합들과 같은 특징들의 조합들을 인식하도록 학습할 수 있다. 그 다음, 상위 계층들은 시각 데이터의 복잡한 형상들 또는 청각 데이터의 단어들을 인식하도록 학습할 수 있다. 더 상위 계층들은 공통 시각 객체들 또는 발화된 어구(spoken phrase)들을 인식하도록 학습할 수 있다. 따라서, 딥러닝 아키텍처들은 자연스러운 계층적 구조를 갖는 문제들에 적용되는 경우에 특히 잘 수행될 수 있다.
뉴럴 네트워크들에서의 계층 연결
[0036] 딥 뉴럴 네트워크들과 같은 뉴럴 네트워크들은 계층들 사이의 다양한 연결 패턴들로 설계될 수 있다.
[0037] 도 1a는 완전 연결 뉴럴 네트워크(102)의 예를 예시한다. 완전 연결 뉴럴 네트워크(102)에서, 제1 계층의 노드는 제2 계층의 모든 각각의 노드에 자신의 출력을 통신할 있으며, 이에 따라 제2 계층의 각각의 노드는 제1 계층의 모든 각각의 노드로부터 입력을 수신하게 된다.
[0038] 도 1b는 로컬 연결 뉴럴 네트워크(104)의 예를 예시한다. 로컬 연결 뉴럴 네트워크(104)에서, 제1 계층의 노드는 제2 계층의 제한된 수의 노드들에 연결될 수 있다. 더 일반적으로, 로컬 연결 뉴럴 네트워크(104)의 로컬 연결 계층은, 계층 내의 각각의 노드가 동일하거나 유사한 연결 패턴을 갖지만, 상이한 값들(예를 들어, 110, 112, 114, 및 116)을 가질 수 있는 연결 강도들(또는 가중치들)을 갖도록 구성될 수 있다. 로컬로 연결된 연결 패턴은 상위 계층에서 공간적으로 개별적인 수용 필드(receptive field)들을 발생시킬 수 있으며, 그 이유는 주어진 영역의 상위 계층 노드들이 네트워크에 대한 전체 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 튜닝되는 입력들을 수신할 수 있기 때문이다.
[0039] 로컬 연결 뉴럴 네트워크의 일 타입은 콘볼루션 뉴럴 네트워크이다. 도 1c는 콘볼루션 뉴럴 네트워크(106)의 예를 예시한다. 콘볼루션 뉴럴 네트워크(106)는 제2 계층의 각각의 노드에 대한 입력들과 연관된 연결 강도들이 공유되도록(예를 들어, 108) 구성될 수 있다. 콘볼루션 뉴럴 네트워크들은 입력들의 공간적 위치가 의미 있는 문제들에 대해 매우 적합하다.
[0040] 콘볼루션 뉴럴 네트워크의 일 타입은 DCN(deep convolutional network)이다. 딥 콘볼루션 네트워크들은 예를 들어 풀링(pooling) 및 정규화 계층들을 이용하여 추가로 구성될 수 있는 다수의 콘볼루션 계층들의 네트워크들이다.
[0041] 도 1d는 이미지 캡쳐 디바이스(130)에 의해 생성된 이미지(126)에서 시각적 특징들을 인식하도록 설계된 DCN(100)의 예를 예시한다. 예를 들어, 이미지 캡쳐 디바이스(130)가 차량에 장착된 카메라인 경우, DCN(100)은 교통 표지판은 물론 교통 표지판 상의 숫자까지 식별하기 위해 다양한 지도 학습 기술들로 트레이닝될 수 있다. DCN(100)은 마찬가지로 차선 표시들을 식별하거나 신호등들을 식별하는 것과 같은 다른 태스크들에 대해서도 트레이닝될 수 있다. 이들은 단지 일부 예시적인 태스크들이며, 다른 많은 태스크들이 가능하다.
[0042] 이러한 예에서 DCN(100)은 특징 추출 섹션 및 분류 섹션을 포함한다. 이미지(126) 수신 시에, 콘볼루션 계층(132)은 콘볼루션 커널들을 이미지(126)에 적용하여(예를 들어, 도 2에 도시되고 설명된 바와 같이), 제1 세트의 특징 맵들(또는 중간 활성화들)(118)을 생성한다. 일반적으로 "커널" 또는 "필터"는 입력 데이터 채널의 상이한 양상들을 강조하도록 설계된 가중치들의 다차원 어레이를 포함한다. 다양한 예들에서, "커널"과 "필터"는 콘볼루션 뉴럴 네트워크에 적용된 가중치들의 세트들을 지칭하기 위해 상호 교환적으로 사용될 수 있다.
[0043] 이어서, 제1 세트의 특징 맵들(118)은 풀링 계층(예를 들어, 도시되지 않은 최대 풀링 계층)에 의해 서브샘플링되어, 제2 세트의 특징 맵들(120)을 생성할 수 있다. 풀링 계층은 모델 성능을 향상시키기 위해 많은 정보를 유지하면서 제1 세트의 특징 맵들(118)의 크기를 감소시킬 수 있다. 예를 들어, 제2 세트의 특징 맵들(120)은 풀링 계층에 의해 28x28로부터 14x14로 다운 샘플링될 수 있다.
[0044] 이 프로세스가 다수의 계층들을 통해 반복될 수 있다. 다시 말해, 제2 세트의 특징 맵들(120)이 하나 이상의 후속 콘볼루션 계층들(도시되지 않음)을 통해 추가로 콘볼빙되어 하나 이상의 후속 특징 맵들의 세트들(도시되지 않음)을 생성할 수 있다.
[0045] 도 1d의 예에서는, 제2 세트의 특징 맵들(120)이 완전 연결 계층(124)에 제공되며, 이 완전 연결 계층(124)이 궁극적으로 출력 특징 벡터(128)를 생성한다. 출력 특징 벡터(128)의 각각의 특징은 "표지판(sign)", "60" 및 "100"과 같은, 이미지(126)의 가능한 특징에 대응하는 숫자를 포함할 수 있다. 일부 경우들에서는, 소프트맥스 함수(도시되지 않음)가 출력 특징 벡터(128) 내의 숫자들을 확률로 변환할 수 있다. 이러한 경우들에서, DCN(100)의 출력(122)은 이미지(126)가 하나 이상의 특징들을 포함할 확률이다.
[0046] 소프트맥스 함수(도시되지 않음)는 출력 특징 벡터(128)의 개별 엘리먼트들을 확률로 변환함으로써, DCN(100)의 출력(122)이 입력 이미지(126)에서와 같이, 숫자 "60"을 갖는 표지판과 같은 하나 이상의 특징들을 포함하는 이미지(126)의 하나 이상의 확률들이 되도록 할 수 있다. 따라서, 본 예에서, 출력(122)에서 "표지판" 및 "60"에 대한 확률들은 출력(122)의 다른 것들, 이를테면 "30", "40", "50", "70", "80", "90", 및 "100"의 확률들보다 더 높아야 한다.
[0047] DCN(100)을 트레이닝하기 전에, DCN(100)에 의해 생성된 출력(122)은 부정확할 수 있다. 따라서, 출력(122)과 선험적으로 알려진 타겟 출력 사이에서 오차가 계산될 수 있다. 예를 들어, 여기서 타겟 출력은 이미지(126)가 "표지판"과 숫자 "60"을 포함한다는 표시이다. 이어서, 공지된 타겟 출력을 활용하여, DCN(100)의 가중치들이 DCN(100)의 후속 출력(122)이 타겟 출력을 달성하도록 트레이닝을 통해 조정될 수 있다.
[0048] DCN(100)의 가중치들을 조정하기 위해, 학습 알고리즘이 가중치들에 대한 기울기 벡터를 컴퓨팅할 수 있다. 기울기는 가중치가 특정 방식으로 조정되는 경우 오차가 증가하거나 감소하는 양을 나타낼 수 있다. 이어서, 오차를 줄이기 위해 가중치들이 조정될 수 있다. 이러한 가중치들을 조정하는 방식은 이것이 DCN(100)의 계층들을 통한 "역방향 패스(backward pass)"를 수반하기 때문에 "역전파(back propagation)"로 지칭될 수도 있다.
[0049] 실제로, 가중치들의 오차 기울기가 적은 수의 예들을 통해 계산될 수 있으므로, 계산되는 기울기는 실제 오차 기울기에 근사화된다. 이러한 근사화 바법은 확률적 기울기 하강법(stochastic gradient descent)으로 지칭될 수 있다. 확률적 기울기 하강법은 전체 시스템의 달성 가능한 오차 레이트가 감소하는 것을 중단할 때까지 또는 오차 레이트가 목표 레벨에 도달할 때까지 반복될 수 있다.
[0050] 트레이닝 이후에, DCN(100)에 새로운 이미지들이 제공될 수 있으며, DCN(100)은 새로운 이미지에 있는 다양한 특징들의 분류들, 또는 확률들과 같은 추론들을 생성할 수 있다.
콘볼루션 뉴럴 네트워크들에 대한 콘볼루션 기술들
[0051] 콘볼루션은 일반적으로 입력 데이터 세트로부터 유용한 특징들을 추출하는 데 사용된다. 예를 들어, 앞서 설명한 바와 같은 콘볼루션 뉴럴 네트워크들에서, 콘볼루션은 트레이닝 동안 가중치들이 자동으로 학습되는 커널들 및/또는 필터들을 사용하여 상이한 특징들의 추출을 가능하게 한다. 그 후에, 추출된 특징들이 결합되어 추론들을 생성한다.
[0052] 활성화 함수는 콘볼루션 뉴럴 네트워크의 각각의 계층 이전 및/또는 이후에 적용될 수 있다. 활성화 함수들은 일반적으로 뉴럴 네트워크 노드의 출력을 결정하는 수학적 함수들(예를 들어, 방정식)이다. 따라서, 활성화 함수는 노드의 입력이 모델의 예측과 관련이 있는지 여부에 기반하여, 노드가 정보를 전달해야 하는지 여부를 결정한다. 일 예에서, y = conv(x)(즉, y = x의 콘볼루션)인 경우, x 및 y 모두가 일반적으로 "활성화들"로 간주될 수 있다. 그러나, 특정 콘볼루션 동작의 관점에서, x는 또한 이것이 특정 콘볼루션 이전에 존재하기 때문에 "사전 활성화들" 또는 "입력 활성화들"로 지칭될 수 있고, y는 출력 활성화들 또는 특징 맵으로 지칭될 수 있다.
[0053] 도 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의 픽셀로)와 비교하여 입력 데이터의 차원을 변경할 수 있다.
[0054] 콘볼루션 계층들을 포함하는 뉴럴 네트워크와 연관된 수 파라미터들 및 컴퓨테이셔널 부담(예를 들어, FLOP(Floating Point Operations Per Second)들에서 측정된)을 감소시키기 위한 하나의 방식은 콘볼루션 계층들을 인수분해(factorize)하는 것이다. 예를 들어, 도 2에 도시된 바와 같은 공간 분리 가능한 콘볼루션은 다음과 같은 두 개의 컴포넌트들로 인수분해될 수 있다: (1) 각각의 공간 채널이 깊이별 콘볼루션에 의해 독립적으로 콘볼빙되는 깊이별 콘볼루션(예를 들어, 공간 융합), 및 (2) 모든 공간 채널들이 선형적으로 결합되는 포인트별 콘볼루션(예를 들어, 채널 융합). 깊이별 분리 가능한 콘볼루션의 예들이 도 3a 및 도 3b에 도시되어 있다. 일반적으로, 공간 융합 동안, 네트워크는 공간 평면들로부터 특징들을 학습하고, 채널 융합 동안, 네트워크는 채널들에 걸쳐 이러한 특징들 간의 관계들을 학습한다.
[0055] 일 예에서, 분리 가능한 깊이별 콘볼루션들은 공간 융합을 위한 3x3 커널들, 및 채널 융합을 위한 1x1 커널들을 사용하여 구현될 수 있다. 특히, 채널 융합은 깊이 d의 입력 이미지에서 모든 단일 포인트를 통해 반복하는 1x1xd 커널을 사용할 수 있으며, 여기서 커널의 깊이 d는 일반적으로 입력 이미지의 채널들의 수와 매칭된다. 포인트별 콘볼루션을 통한 채널 융합은 효율적인 컴퓨테이션들을 위한 차원 감소에 유용하다. 1x1xd 커널들을 적용하고 커널 후에 활성화 계층을 추가하면 네트워크 추가 깊이를 제공할 수 있으며, 이를 통해 그 성능을 증가시킬 수 있다.
[0056] 도 3a 및 도 3b는 깊이별 분리 가능한 콘볼루션 동작의 예를 도시한다.
[0057] 특히, 도 3a에서, 12픽셀 x 12픽셀 x 3채널 입력 이미지(302)는 각각 5 x 5 x 1 차원을 갖는, 3개의 개별 커널들(304A-304C)을 포함하는 필터와 콘볼빙되어, 8픽셀 x 8픽셀 x 3채널의 특징 맵(306)을 생성하며, 여기서 각각의 채널은 개별 커널(304A-304C)에 의해 생성된다.
[0058] 이어서, 특징 맵(306)이 1 x 1 x 3 차원을 갖는 커널(308)(예를 들어, 커널)에서 포인트별 콘볼루션 동작을 사용하여 추가로 콘볼빙됨으로써 8픽셀 x 8픽셀 x 1채널의 특징 맵(310)을 생성한다. 이 예에 도시된 바와 같이, 특징 맵(310)은 감소된 차원(1채널 대 3)을 가지며, 이를 통해 특징 맵(310)을 이용한 보다 효율적인 컴퓨테이션들을 가능하게 한다.
[0059] 도 3a 및 도 3b의 깊이별 분리 가능한 콘볼루션의 결과는 도 2의 종래의 콘볼루션과 실질적으로 유사하지만, 컴퓨테이션들의 횟수가 상당히 줄어들기 때문에, 깊이별 분리 가능한 콘볼루션은 네트워크 설계가 허용하는 경우 상당한 효율 이득을 제공한다.
[0060] 도 3b에 도시되어 있지는 않지만, 다수(예를 들어, m개)의 포인트별 콘볼루션 커널들(308)(예를 들어, 필터의 개별 컴포넌트들)이 콘볼루션 출력의 채널 차원을 증가시키는 데 사용될 수 있다. 따라서, 예를 들어, 각각 8픽셀 x 8픽셀 x 1채널 특징 맵(예를 들어, 310)을 출력하며, 이러한 특징 맵들이 스택되어 8픽셀 x 8픽셀 x 256채널들의 결과 특징 맵을 획득할 수 있는, m = 256 1x1x3 커널들(308)이 생성될 수 있다. 결과적인 채널 차원 증가는 트레이닝을 위한 더 많은 파라미터들을 제공하며, 이것은 특징들(예를 들어, 입력 이미지(302)에서)을 식별하는 콘볼루션 뉴럴 네트워크의 능력을 개선할 수 있다.
예시적인 CIM(Compute in Memory) 아키텍처
[0061] 도 4는 본 개시내용의 양상들에 따른, 머신 러닝 모델 컴퓨테이션들을 수행하도록 구성된 예시적인 CIM(compute-in-memory) 어레이(400)를 예시한다. 이 예에서, CIM 어레이(400)는 인공 뉴럴 네트워크에 대해 혼합된 아날로그/디지털 동작들을 사용하여 MAC 동작들을 시뮬레이팅하도록 구성된다. 따라서, 본 명세서에서 사용되는 바와 같이, 곱셈 및 덧셈이라는 용어들은 이러한 시뮬레이팅된 동작들을 지칭할 수 있다. CIM 어레이(400)는 본 명세서에 설명된 프로세싱 기술들의 양상들을 구현하는 데 사용될 수 있다.
[0062] 도시된 양상에서, CIM 어레이(400)는 PCWL(precharge word line)들(425a, 425b 및 425c)(총괄적으로 425), RWL(read word line)들(427a, 427b, 및 427c)(총괄적으로 427), ADC(analog-to-digital converter)들(410a, 410b 및 410c)(총괄적으로 410), 디지털 프로세싱 유닛(413), 비트라인들(418a, 418b, 및 418c)(총괄적으로 418), PMOS 트랜지스터들(411a 내지 111i)(총괄적으로 411), NMOS 트랜지스터들(413a 내지 413i)(총괄적으로 413), 및 커패시터들(423a 내지 423i)(총괄적으로 423)을 포함한다.
[0063] 뉴럴 네트워크 계층과 연관된 가중치들은 CIM 어레이(400)의 SRAM 셀들에 저장될 수 있다. 이 예에서는, 이진 가중치들이 CIM 어레이(400)의 SRAM 비트셀들(405a 내지 405i)에 도시되어 있다. 입력 활성화들(예를 들어, 입력 벡터일 수 있는 입력 값들)이 PCWL들(425a 내지 425c) 상에 제공된다.
[0064] 곱셈은 비트라인과 연관된 CIM 어레이(400)의 각각의 비트셀(405a 내지 405i)에서 발생하고, 모든 비트셀 곱셈 결과들의 누산(합산)이 하나의 열에 대한 동일한 비트라인에서 발생한다. 각각의 비트셀(405a 내지 405i)에서의 곱셈은 대응하는 활성화 및 가중치의 AND 연산과 동등한 연산의 형태이며, 여기서 결과는 대응하는 커패시터(423) 상에 전하로서 저장된다. 예를 들어, 1의 프로덕트, 및 결과적으로 커패시터(423) 상의 전하는, 활성화가 1이고(여기서는, PMOS가 사용되기 때문에, PCWL은 1의 활성화에 대해 0임) 가중치가 1인 경우에만 생성된다.
[0065] 예를 들어, 누산 스테이지에서, RWL들(427)이 하이(high)로 스위칭됨으로써 커패시터들(423) 상의 임의의 전하들(대응하는 비트셀(가중치) 및 PCWL(활성화) 값들에 기반함)이 대응하는 비트라인들(418) 상에 누산될 수 있다. 이어서, 누산된 전하들의 전압 값들이 ADC들(410)에 의해 디지털 값들로 변환된다(예를 들어, 출력 값들은 총 전하가 기준 전압보다 큰지 여부를 나타내는 이진값일 수 있음). 이러한 디지털 값들(출력들)이 다음 계층과 같은 머신 러닝 모델의 다른 양상에 대한 입력으로서 제공될 수 있다.
[0066] PCWL(precharge word line)들(425a, 425b 및 425c)에서의 활성화들이 예를 들어, 1, 0, 1인 경우, 비트라인들(418a-c)의 합들은 각각 0+0+1=1, 1+0+0=1, 및 1+0+1=2에 대응한다. ADC들(410a, 410b, 및 410c)의 출력은 추가적인 프로세싱을 위해 디지털 프로세싱 유닛(413)으로 전달된다. 예를 들어, CIM(100)이 멀티-비트 가중치 값들을 프로세싱하고 있는 경우, ADC들(110)의 디지털 출력들이 합산되어 최종 출력을 생성할 수 있다.
[0067] 예시적인 3x3 CIM 회로(400)가, 예를 들어, 3-엘리먼트 커널들(또는 필터들)에 대한 효율적인 3-채널 콘볼루션을 수행하기 위해 사용될 수 있으며, 여기서 각각의 커널의 가중치들은 3개의 열들 각각의 엘리먼트들에 대응하고, 따라서 주어진 3-엘리먼트 수용 필드(또는 입력 데이터 패치)에 있어서, 3개의 채널들 각각에 대한 출력들이 병렬적으로로 계산된다.
[0068] 특히, 도 4가 SRAM 셀들을 사용하는 CIM의 예를 설명하고 있지만, 다른 메모리 타입들이 사용될 수도 있다. 예를 들어, 동적 랜덤 액세스 메모리(DRAM), 자기저항성 랜덤 액세스 메모리(MRAM), 및 저항성 랜덤 액세스 메모리(ReRAM 또는 RRAM)가 마찬가지로 다른 실시예들에서 사용될 수 있다.
[0069] 도 5a는 예시적인 비트셀(500)의 추가적인 세부사항들을 도시한다.
[0070] 도 5a의 양상들은 도 4의 양상의 예시이거나 아니면 이와 관련될 수 있다. 특히, 비트라인(521)은 비트라인(418a)과 유사하고, 커패시터(523)는 도 4의 커패시터(423)와 유사하며, 판독 워드 라인(527)은 도 4의 판독 워드 라인(427a)과 유사하고, 사전 충전 워드 라인(525)은 도 4의 사전 충전 워드 라인(425a)과 유사하며, PMOS 트랜지스터(511)는 도 1의 PMOS 트랜지스터(411a)와 유사하고, NMOS 트랜지스터(513)는 도 1의 NMOS 트랜지스터(413)와 유사하다.
[0071] 비트셀(500)은 도 4의 SRAM 비트셀들(405a)을 나타낼 수 있는 SRAM(static random access memory)셀(501)뿐만 아니라 트랜지스터(511)(예를 들어, PMOS 트랜지스터), 및 트랜지스터(513)(예를 들어, NMOS 트랜지스터) 및 접지에 커플링된 커패시터(523)를 포함한다. PMOS 트랜지스터가 트랜지스터(511)에 사용되고 있지만, 다른 트랜지스터들(예를 들어, NMOS 트랜지스터)이 PMOS 트랜지스터 대신에 사용될 수 있으며, 이들 각각의 제어 신호들의 대응하는 조정(예를 들어, 반전)이 있을 수 있다. 본 명세서에서 설명된 다른 트랜지스터들에도 동일하게 적용된다. 추가적인 트랜지스터들(511 및 513)이 본 개시내용의 양상들에 따라 CIM(compute-in-memory) 어레이를 구현하도록 포함된다. 일 양상에서, SRAM셀(501)은 종래의 6T(six transistor) SRAM 셀이다.
[0072] 비트셀에서의 가중치들의 프로그래밍은 다수의 활성화들에 대해 한 번 수행될 수 있다. 예를 들어, 동작 시에, SRAM셀(501)은 기록 워드 라인(Write Word Line, WWL)(516)을 통해 노드들(517 및 519)에서 단 1 비트의 정보만을 수신한다. 예를 들어, 기록 동안(WWL(216)이 하이일 때), 기록 비트 라인(WBL)(229)이 하이(예를 들어, "1")이면, 노드(217)가 하이로 설정되고 노드(219)는 로우(low)(예를 들어, "0")로 설정되며; 또는 WBL(229)이 로우이면, 노드(217)가 로우로 설정되고 노드(219)는 하이로 설정된다. 반대로, 기록 동안(WWL(216)이 하이일 때), WBBL(write bit bar line)(231)이 하이이면, 노드(217)가 로우로 설정되고 노드(219)는 하이로 설정되며; 또는 WBBL(229)이 로우이면, 노드(217)가 하이로 설정되고 노드(219)는 로우로 설정된다.
[0073] 가중치들의 프로그래밍 다음에, 대응하는 프로덕트들에 따라 커패시터들을 충전하기 위한 활성화 입력 및 곱셈 단계가 뒤따를 수 있다. 예를 들어, 트랜지스터(511)가 CIM(compute-in-memory) 어레이의 사전 충전 워드 라인(pre-charge word line, PCWL)(525)을 통해 활성화 신호(PCWL 신호)에 의해 활성화되어 곱셈 단계를 수행한다. 이어서, 트랜지스터(513)가 CIM(compute-in-memory) 어레이의 다른 워드 라인(예를 들어, RWL(read word line)(527))을 통한 신호에 의해 활성화되어, 도 4와 관련하여 전술한 바와 같이, 어레이의 다른 비트셀들과 함께 비트셀(500)로부터의 곱셈값의 누산을 수행한다.
[0074] 노드(517)가 "0"이면(예를 들어, 저장된 가중치 값이 "0"일 때), 낮은 PCWL이 트랜지스터(511)의 게이트에서 "1"의 활성화를 나타낼 경우에 커패시터(523)가 충전되지 않을 것이다. 따라서, 비트라인(521)에 전하가 제공되지 않는다. 그러나, 가중치 값에 대응하는 노드(517)가 "1"이고, PCWL이 로우로 설정되면(예를 들어, 활성화 입력이 하이일 때), 이것은 단락으로 작용하는 PMOS 트랜지스터(511)를 턴 온하여, 커패시터(523)가 충전될 수 있게 한다. 커패시터(523)가 충전된 이후에, 트랜지스터(511)가 턴 오프되어 커패시터(523)에 전하가 저장된다. 커패시터(523)로부터 비트라인(521)으로 전하를 이동시키기 위해, NMOS 트랜지스터(513)가 RWL(527)에 의해 턴 온됨으로써 NMOS 트랜지스터(513)가 단락으로서 작용하게 한다.
[0075] 표 1은, 예를 들어, 도 5a의 비트셀(500)에 의해 구현될 수 있는, AND 연산 세팅에 따른 CIM(compute-in-memory) 어레이 동작들의 예를 예시한다.
표 1: AND 연산
[0076] 표 1의 제1 열(활성화)은 인입 활성화 신호의 가능한 값들을 포함한다.
[0077] 표 1의 제2 열(PCWL)은 본 개시내용의 양상들에 따라 CIM(compute-in-memory) 기능들을 구현하도록 설계된 트랜지스터들을 활성화시키는 PCWL 값들을 포함한다. 이 예에서의 트랜지스터(511)는 PMOS 트랜지스터이기 때문에, PCWL 값들은 활성화 값들의 역들이다. 예를 들어, CIM(compute-in-memory) 어레이는 사전 충전 워드 라인(PCWL)(525)을 통한 활성화 신호(PCWL 신호)에 의해 활성화되는 트랜지스터(511)를 포함한다.
[0078] 표 1의 제3 열(셀 노드)은 SRAM셀 노드에 저장된 가중치 값들을 포함하고, 예를 들어, 콘볼루션 동작들에서 사용될 수 있는 가중치 텐서(weight tensor)에서의 가중치들에 대응한다.
[0079] 표 1의 제4 열(커패시터 노드)은 커패시터 상에 전하로서 저장될 결과 프로덕터들을 도시한다. 예를 들어, 전하는 커패시터(523)의 노드 또는 커패시터(423a-423i) 중 하나의 노드에 저장될 수 있다. 커패시터(523)로부터의 전하는 트랜지스터(513)가 활성화되는 경우 비트라인(521)으로 이동된다. 예를 들어, 트랜지스터(511)를 참조하면, 셀 노드(517)에서의 가중치가 "1"(예를 들어, 하이 전압)이고, 입력 활성화가 "1"(따라서 PCWL이 "0"임)이면, 커패시터(523)가 충전된다(예를 들어, 커패시터의 노드가 "1"임). 다른 모든 조합들에 대해, 커패시터 노드는 0의 값을 가질 것이다.
[0080] 도 5b는 다른 예시적인 비트셀(550)의 추가적인 세부사항들을 도시한다.
[0081] 비트셀(550)은 도 5a의 비트셀(500)과 상이하며, 주로 추가적인 트랜지스터(554)에 커플링되는 추가적인 사전 충전 워드 라인(552)을 포함한 것에 기반한다.
[0082] 표 2는, 예를 들어, 도 5b에서 비트셀(550)에 의해 구현될 수 있는, XNOR 동작 세팅에 따른 것을 제외하고 표 1과 유사한 CIM(compute-in-memory) 어레이 동작들의 예를 예시한다.
표 2: XNOR 연산
[0083] 표 2의 제1 열(활성화)은 인입 활성화 신호의 가능한 값들을 포함한다.
[0084] 표 2의 제2 열(PCWL1)은 본 개시내용의 양상들에 따라 CIM(compute-in-memory) 기능들을 구현하도록 설계된 트랜지스터들을 활성화시키는 PCWL1 값들을 포함한다. 여기서도, 트랜지스터(511)는 PMOS 트랜지스터이고, PCWL1 값들은 활성화 값들의 역들이다.
[0085] 표 2의 제3 열(PCWL2)은 본 개시내용의 양상들에 따라 CIM(compute-in-memory) 기능들을 구현하도록 설계된 추가적인 트랜지스터들을 활성화시키는 PCWL2 값들을 포함한다.
[0086] 표 2의 제4 열(셀 노드)은 SRAM 셀 노드에 저장된 가중치 값들을 포함하고, 예를 들어, 콘볼루션 동작들에 사용될 수 있는 가중치 텐서에서의 가중치들에 대응한다.
[0087] 표 2의 제5 열(커패시터 노드)은 커패시터(523)와 같은 커패시터 상에 전하로서 저장될 결과 프로덕트들을 도시한다.
[0088] 도 6은 CIM(compute-in-memory) 어레이 동작 동안의 다양한 신호들의 예시적인 타이밍도(600)를 도시한다.
[0089] 도시된 예에서, 타이밍도(600)의 제1 행은 사전 충전 워드 라인(PCWL)(예를 들어, 도 4의 425a 또는 도 5a의 525)이 로우로 되는 것을 도시한다. 이 예에서, 로우 PCWL은 "1"의 활성화를 나타낸다. PMOS 트랜지스터는 PCWL이 로우일 때 턴 온되며, 이를 통해 커패시터의 충전을 허용한다(가중치가 "1"인 경우). 제2 행은 판독 워드 라인(RWL)(예를 들어, 도 4의 판독 워드 라인(427a) 또는 도 5a의 판독 원드 라인(527))을 도시한다. 제3 행은 판독 비트라인(RBL)(예를 들어, 도 4의 418 또는 도 5a의 521)을 도시하고, 제4 행은 ADC(analog-to-digital converter) 판독 신호를 도시하며, 또한 제5 행은 리셋 신호를 도시한다.
[0090] 예를 들어, 도 5a의 트랜지스터(511)를 참조하면, 판독 워드 라인(RWL)이 하이일 때, 커패시터(523)로부터의 전하가 점진적으로 판독 비트라인(RBL)으로 전달된다.
[0091] 합산된 전하/전류/전압(예를 들어, 도 4의 403 또는 도 5a의 비트라인(521)으로부터 합산된 전하들)은 비교기 또는 ADC(예를 들어, 도 4의 ADC(411))로 전달되며, 여기서 합산된 전하가 디지털 출력(예를 들어, 디지털 신호/숫자)으로 변환된다. 전하의 합산은 타이밍도(600)의 누산 영역에서 발생할 수 있으며, ADC로부터의 판독은 타이밍도(600)의 ADC 판독 영역과 연관될 수 있다. ADC 판독이 획득된 후, 리셋 신호는 다음 세트의 활성화 입력들을 프로세싱하기 위한 준비로 모든 커패시터들(예를 들어, 커패시터들(423a-423i))을 방전시킨다.
[0092] 본 개시내용의 병렬 프로세싱 기술들은 인공 뉴럴 네트워킹을 수반하는 임의의 타입의 에지 컴퓨팅에 도움이 될 수 있다. 이 기술들은 뉴럴 네트워크 프로세싱의 추론 스테이지 또는 임의의 다른 스테이지에서 적용 가능성을 갖는다. 도시된 예가 높은 정확도가 필요하지 않을 때 사용될 수 있는 이진 네트워크에 기반하고 하지만, 멀티비트 가중치들을 사용하는 네트워크들에도 동일한 개념들이 적용된다.
메모리에서의 콘볼루션 프로세싱의 예
[0093] 도 7은 CIM(compute-in-memory) 어레이(708)에 의해 구현되는 예시적인 콘볼루션 계층 아키텍처(700)를 도시한다. 콘볼루션 계층 아키텍처(700)는 콘볼루션 뉴럴 네트워크(예를 들어, 도 1d와 관련하여 상술한 바와 같이)의 일부일 수 있으며, 텐서 데이터와 같은 다차원 데이터를 프로세싱하도록 설계될 수 있다.
[0094] 도시된 예에서, 콘볼루션 계층 아키텍처(700)에 대한 입력(702)은 38(높이) x 11(폭) x 1(깊이)의 치수들을 갖는다. 콘볼루션 계층의 출력(704)은 34x10x64의 치수들을 가지며, 이것은 콘볼루션 프로세스의 일부로서 적용된 필터 텐서(714)의 64개의 커널들에 대응하는 64개의 출력 채널들을 포함한다. 추가로 이 예에서, 필터 텐서(714)의 64개 커널들의 각각의 커널(예를 들어, 예시적인 커널(712))은 5x2x1의 치수들을 갖는다(모두 함께, 필터 텐서(714)의 커널들은 하나의 5x2x64 필터와 동등함).
[0095] 콘볼루션 프로세스 동안, 각각의 5x2x1 커널은 입력(702)과 콘볼빙되어 하나의 34x10x1 계층의 출력(704)을 생성한다. 콘볼루션 동안, 필터 텐서(714)(5x2x64)의 640개의 가중치들은 CIM(compute-in-memory) 어레이(708)에 저장될 수 있으며, 이 어레이는 이 예에서 각각의 커널에 대한 열(즉, 64개의 열들)을 포함한다. 그 후에, 각각의 5x2 수용 필드들(예를 들어, 수용 필드 입력(706))의 활성화들이 워드 라인들(예를 들어, 716)을 사용하여 CIM 어레이(708)에 입력되고, 대응하는 가중치들이 곱해져서 1x1x64 출력 텐서(예를 들어, 출력 텐서(710))를 생성한다. 출력 텐서들(704)은 입력(702)의 모든 수용 필드들(예를 들어, 수용 필드 입력(706))에 대한 1x1x64 개별 출력 텐서들의 누산을 나타낸다. 단순화를 위해, 도 7의 CIM 어레이(708)는 CIM 어레이(708)의 입력 및 출력에 대한 몇 개의 예시적인 라인들만을 도시한다.
[0096] 도시된 예에서, CIM 어레이(708)는, CIM 어레이(708)가 수용 필드들(예를 들어, 수용 필드 입력(706))을 수신하는 워드 라인들(716)뿐만 아니라 비트라인들(718)(CIM 어레이(708)의 열들에 대응함)을 포함한다. 도시되지는 않았지만, CIM 어레이(708)는 또한 사전 충전 워드 라인(PCWL)들 및 판독 워드 라인(RWL)들을 포함할 수 있다(도 4 및 도 5에 관하여 상술한 바와 같음).
[0097] 이 예에서는, 워드 라인들(716)이 초기 가중치 정의를 위해 사용된다. 그러나, 일단 초기 가중치 정의가 발생하면, 활성화 입력은 CIM 비트셀에서 특수하게 설계된 라인을 활성화하여 MAC 동작을 수행한다. 따라서, 비트라인(718)과 워드 라인(716)의 각각의 교차점은 필터 가중치 값을 나타내며, 이 값이 워드 라인(716) 상의 입력 활성화에 의해 곱해져서 프로덕트를 생성한다. 그 후에, 각각의 비트라인(718)을 따른 개별적인 프로덕트들이 합산되어 출력 텐서(710)의 대응하는 출력 값들을 생성한다. 합산된 값은 전하, 전류 또는 전압일 수 있다. 이 예에서는, 콘볼루션 계층의 전체 입력(702)을 프로세싱한 후, 출력 텐서(704)의 치수들이 34x10x64이지만, CIM 어레이(708)에 의해 한 번에 64개의 필터 출력들만이 생성된다. 따라서, 전체 입력(702)의 프로세싱은 34x10 또는 340 사이클들에서 완료될 수 있다.
깊이별 분리 가능한 콘볼루션을 위한 CIM 아키텍처들
[0098] CIM(computation in memory) 기반 AI(artificial intelligence) 하드웨어(HW) 가속기가 이미지, 센서 및 오디오 프로세싱 AI 태스크들을 포함하는 다양한 태스크들에 사용될 수 있다. CIM은 메모리에서 데이터를 이동할 때 전력 소모와 관련된 문제를 줄이는 데 도움이 될 수 있다. 일부 경우들에서, 데이터 이동은 컴퓨테이션보다 더 많은 전력을 소모할 수 있다. CIM을 사용하면 CIM의 가중치 고정 특성으로 인해 전력이 절감될 수 있다. 다시 말해, 뉴럴 네트워크 컴퓨테이션들에 대한 가중치들이, 예를 들어, SRAM(static random access memory) 메모리 셀들과 같은 RAM(random access memory)에 저장되어, 컴퓨테이션들이 메모리 내에서 수행되게 함으로써 전력 소모를 감소시킬 수 있다.
[0099] CIM 아키텍처들을 위해 메모리에 구현되는 벡터-행렬 곱셈 블록들은 종래의 콘볼루션 뉴럴 네트워크 프로세싱을 일반적으로 양호하게 수행할 수 있지만, 다수의 최신 머신 러닝 아키텍처들에서 볼 수 있는 깊이별 분리 가능한 콘볼루션 뉴럴 네트워크들을 지원하는 데는 효율적이지가 않다. 예를 들어, 기존의 CIM 아키텍처들은 일반적으로 각각의 다차원 필터가 서로 다른 입력 채널들을 사용하기 때문에 하나의 위상에서 깊이별 분리 가능한 콘볼루션 뉴럴 네트워크 프로세싱을 수행할 수 없다. 따라서, 동일한 행의 필터 가중치들은 상이한 채널들에 대해 동일한 활성화 입력을 공유하지 않을 수 있다. 결과적으로, 하나의 위상 사이클에서 깊이별 분리 가능한 콘볼루션 프로세싱을 지원하기 위해 행렬-행렬 곱셈(MxM) 아키텍처들이 일반적으로 필요하다.
[0100] 이러한 단점을 해결하기 위한 종래의 솔루션들은 분리 가능한 콘볼루션의 깊이별 부분에 대한 프로세싱을 처리하기 위해 별도의 디지털 MAC 블록을 추가하는 한편, CIM 어레이가 분리 가능한 콘볼루션의 포인트별 부분을 처리할 수 있는 것을 포함한다. 그러나, 이러한 하이브리드 접근 방식은 데이터 이동을 증가시켜, CIM 아키텍처의 메모리 효율적인 이점을 상쇄할 수 있다. 또한, 이 하이브리드 접근 방식은 일반적으로 공간 및 전력 수요를 증가시키고, 프로세싱 레이턴시를 증가시키는 추가적인 하드웨어(예를 들어, DMAC(digital multiply-and-accumulate) 엘리먼트)를 수반한다. 또한 DMAC들을 사용하면 프로세싱 동작들의 타이밍에 영향을 미쳐서 모델 출력 타이밍 제약 조건들(또는 다른 종속성들)이 오버런될 수 있다. 이 문제를 해결하기 위해, 인입 데이터의 프레임 레이트를 감소시키는 것, 프로세싱 시스템 엘리먼트들(CIM 어레이 포함)의 클럭 레이트를 증가시키는 것, 입력 특징 크기를 감소시키는 것 등과 같은 다양한 절충안들이 필요할 수 있다.
[0101] 본 명세서에 설명된 CIM 아키텍처들은 깊이별 분리 가능한 콘볼루션들에 대한 프로세싱 동작들의 타이밍 성능을 개선한다. 이러한 개선들은 깊이별로 분리 가능한 콘볼루션 동작들의 사이클 시간을 단축하고 더 많은 하드웨어(예를 들어, DMAC들) 및/또는 더 많은 데이터 이동을 사용하는 종래의 아키텍처들에 비해, 프로세싱 전력의 더 높은 와트당 TOPS(total operation per second)(즉, TOPS/W)를 달성한다.
[0102] 도 8은 본 개시내용의 특정 양상들에 따른, 다수의 CIM 어레이들을 포함하는 CIM 시스템(800)을 예시한다.
[0103] 예시된 바와 같이, CIM 시스템(800)은 DW(depthwise) 콘볼루션을 위해 구성된 CIM 어레이(802) 및 PW(pointwise) 콘볼루션을 위해 구성된 CIM 어레이(804)를 포함한다. 일부 양상들에서, 커널들(예를 들어, 3x3 커널들)은 CIM 어레이(802)의 상이한 열들 상에 대각선 방식으로 구현될 수 있다. 예를 들어, 커널(806)이 열들(810, 812)(예를 들어, 비트-라인들) 및 9개의 행들(814-1, 814-2 내지 814-8, 및 814-9)(예를 들어, 워드-라인들(WL들), 총괄적으로 행들(814)로 지칭됨) 상에서 CIM 셀들을 사용하여 구현됨으로써, 2-비트 가중치 파라미터들을 갖는 3x3 필터를 구현할 수 있다. 다른 커널(808)이 열들(816, 818) 및 9개의 행들(820-1 내지 820-9)(총괄적으로 행들(820)로 지칭됨) 상에 구현되어 다른 3x3 필터를 구현할 수 있다. 따라서, 커널들(806 및 808)은 DW에 대한 병렬 콘볼루션 동작들을 가능하게 하기 위해 상이한 행들 및 열들 상에 구현된다. 즉, 커널들(806, 808) 중 하나에 대한 행들 및 열들을 활성화하는 것은 커널들(806, 808) 중 다른 하나의 행들 및 열들에 영향을 미치지 않는다. 상이한 활성화 입력들이 커널들(806, 808) 각각에 제공됨으로써, 커널들(806, 808)이 병렬적으로 동작될 수 있게 한다.
[0104] 각각의 커널의 입력 활성화 버퍼는 이전 계층들로부터의 대응하는 출력 채널 패치들로 채워질 수(예를 들어, 저장될 수) 있다. 예를 들어, 커널(806)에 대한 행들(예를 들어, 행들(814))은 활성화 버퍼들(830-1, 830-2 내지 830-8, 및 830-9)(총괄적으로 활성화 버퍼들(830)로 지칭됨)에 커플링될 수 있고, 커널(808)에 대한 행들(예를 들어, 행들(820))은 활성화 버퍼들(832-1 내지 832-9)(총괄적으로 활성화 버퍼(832)로 지칭됨)에 커플링될 수 있다.
[0105] 커널(806)의 출력들(예를 들어, 열들(810, 812)에서의)은 ADC(analog-to-digital converter)(840)에 커플링될 수 있고, 커널(808)의 출력들(예를 들어, 열들(816, 818)에서의)은 ADC(842)에 커플링될 수 있다. 예를 들어, ADC(840)의 각각의 입력은 열들(810, 812) 각각으로부터의 행들(814)의 누산된 전하를 수신할 수 있고, ADC(842)의 각각의 입력은 열들(816, 818) 각각으로부터의 행들(820)의 누산된 전하를 수신할 수 있으며, 이에 기반하여 ADC들(840, 842) 각각은 디지털 출력 신호를 생성하게 된다. ADC(840)는 열들(810, 812)로부터의 신호들을 입력으로서 취하고, 열(812)에 저장된 비트들이 열(810)에 저장된 비트들보다 각각의 가중치들에서 더 낮은 유의도를 나타낸다는 것을 고려하여, 신호들의 디지털 표현을 생성한다. 유사하게, ADC(842)는 열들(816, 818)로부터의 신호들을 입력으로서 취하고, 열(818)에 저장된 비트들이 열(816)에 저장된 비트들보다 개개의 가중치들에서 더 낮은 유의도를 나타낸다는 것을 고려하여, 신호들의 디지털 표현을 생성한다.
[0106] ADC들(840, 842)이 2-비트 가중치 파라미터들을 갖는 커널들에 대한 아날로그-디지털 변환을 가능하게 하기 위해 2개의 열들로부터 신호들을 수신하도록 구현되는 반면, 본 명세서에 설명되는 양상들은 임의의 수의 열들(예를 들어, 3-비트 가중치 파라미터들을 갖는 커널들에 대한 아날로그-디지털 변환을 수행하기 위한 3개의 열들)로부터 신호들을 수신하도록 구성된 ADC들에 대해 구현될 수 있다.
[0107] ADC(840, 842)의 출력들은 비선형 동작 회로(850)(및 버퍼)에 커플링되며 이에 따라 예를 들어 정류된 선형 유닛(ReLU) 및 평균 풀링(AvePool)과 같은 비선형 동작을 구현할 수 있다. 비선형 동작들을 사용하면 입력들과 출력들 간에 복잡한 매핑들을 생성할 수 있으므로 이미지들, 비디오, 오디오 및 비선형 또는 고차원을 가진 데이터 세트들과 같은 복잡한 데이터를 학습하고 모델링할 수 있다. 비선형 동작 회로(850)의 출력은 PW 콘볼루션을 위해 구성된 CIM 어레이(804)를 위한 입력 활성화 버퍼들(860)에 커플링될 수 있다. 예시된 바와 같이, CIM 어레이(804)의 출력들은 ADC(870)에 커플링될 수 있고, ADC(870)의 출력들은 비선형 동작 회로(880)에 제공될 수 있다. 단일 ADC(870)가 도시되어 있지만, CIM 어레이(804)의 상이한 열들에 대해 다수의 ADC들이 구현될 수도 있다.
[0108] 커널들(806, 808) 각각은 2개의 열들을 포함하여, 커널의 각각의 행에 2-비트 가중치가 저장될 수 있도록 하는 반면, 커널들(806, 808)은 임의의 수의 적절한 열들, 예를 들어 1-비트, 이진 가중치에 대한 하나의 열 또는 멀티비트 가중치들에 대한 2개 이상의 열들을 사용하여 구현될 수 있다. 예를 들어, 커널들(806, 808) 각각은 3-비트 가중치 파라미터가 커널의 각각의 행에 저장될 수 있게 하기 위해 3개의 열들을 사용하여 구현될 수 있거나, 또는 1-비트 가중치가 커널의 각각의 행에 저장될 수 있게 하기 위해 단일 열을 사용하여 구현될 수 있다. 또한, 커널들(806, 808) 각각이 이해를 용이하게 하기 위해 3x3 커널에 대해 9개의 행들로 구현되어 있지만, 커널들(806, 808)은 적절한 커널 크기를 구현하기 위해 임의의 수의 행들로 구현될 수 있다. 또한, 2개 초과의 커널들이 CIM 어레이의 셀들의 서브세트를 사용하여 구현될 수 있다. 예를 들어, CIM 어레이(802)는 하나 이상의 다른 커널들을 포함할 수 있으며, 여기서 CIM 어레이(802)의 커널들은 모두 병렬 콘볼루션 동작들을 가능하게 하기 위해 상이한 행들 및 열들 상에 구현된다. 예를 들어, 커널(806)은 도 3a와 관련하여 설명된 커널(304A)에 대응할 수 있고, 커널(808)은 도 3a와 관련하여 설명된 커널(304B)에 대응할 수 있다. 커널(304C)에 대응하는 다른 커널(도 8에 도시되지 않음)은 또한 커널들(806, 808)과 상이한 행들 및 열들 상에서 구현될 수 있다.
[0109] 도 9는 본 개시내용의 특정 양상들에 따른, 도 8의 CIM 시스템(800)을 통한 신호 프로세싱을 위한 예시적인 동작들(900)을 예시한다. 동작들(900)은 DW-CNN 계층의 프로세싱으로 시작할 수 있다. 예를 들어, 블록(904)에서, DW 콘볼루션 가중치들은 본 명세서에서 설명된 바와 같이, CIM 어레이(예를 들어, 커널들(806, 808))의 CIM 셀들에 로딩될 수 있다. 예를 들어, 블록(904)에서, DW 3x3 커널 가중치들이 그룹화되어 도 8의 CIM 어레이(802)에 기록될 수 있다. 즉, 2-비트 커널 가중치가 열들(810, 812)에 제공될 수 있으며, 메모리 셀들(예를 들어, 도 8에 도시된 메모리 셀들(b01 및 b11))의 패스 게이트 스위치들이 메모리 셀들에 2-비트 커널 가중치들을 저장하기 위해 폐쇄될 수 있다. 필터 가중치는 유사한 방식으로 커널(806, 808) 각각에 대한 CIM 셀들의 각각의 행에 저장될 수 있다.
[0110] 동일한 열들 상의 그러나 활성 커널과는 상이한 행들 상의 메모리 셀들에 이전에 저장되었을 수 있는 가중치들은 제로화될(zeroed out) 수 있다. 예를 들어, 로직 제로가 열들(816, 818) 및 행들(820)의 메모리 셀들(도시되지 않음)에 저장될 수 있을 뿐만 아니라, 열들(810, 812) 및 행들(814)의 메모리 셀들에 저장될 수도 있다. 일부 경우들에서, CIM 어레이(802)는 커널들(806 및 808)에 대한 가중치들을 저장하기 전에 먼저 제로화될 수 있다.
[0111] 일부 구현들에서, CIM 어레이는 타일(tile)들로 파티셔닝될 수 있다. 예를 들어, 활성 커널과 동일한 열에 있는 타일들은 3 상태(tristate) 모드로 구성될 수 있다. 3 상태 모드에서, 타일의 메모리 셀의 출력은 상대적으로 높은 임피던스를 갖도록 구성될 수 있으며, 이에 따라 출력에 대한 셀의 영향을 효과적으로 제거할 수 있다. 본 명세서에 설명된 바와 같이, DW 콘볼루션 커널들은 상이한 열들 및 행들에 스택될 수 있다. DW 콘볼루션 및 PW 콘볼루션 가중치들 모두가 후속 계층들 각각에 대해 업데이트될 수 있다.
[0112] 블록(906)에서, DW 콘볼루션 활성화 입력(예를 들어, 활성화 버퍼들(830, 832)에서)이 동일한 사이클 동안 커널들(806, 808)의 행들의 각각의 그룹에 대해 적용되어, 두 커널들을 모두 사용하여 병렬적으로 DW 콘볼루션 출력을 생성할 수 있다.
[0113] 블록(908)에서, ADC들(840, 842)이 커널들(806, 808)의 콘볼루션 출력(예를 들어, 열들(810, 812) 및 열들(816, 818)에서)을 아날로그 도메인으로부터 디지털 도메인으로 변환할 수 있다. DW 콘볼루션을 위한 ADC들(840, 842)의 출력들에 기반하여 비선형 동작이 비선형 동작 회로(850)를 통해 수행될 수 있다.
[0114] 블록(910)에서, 비선형 동작 회로(850)로부터의 출력은 CIM 어레이(804)가 PW 콘볼루션을 수행하도록 PW 입력(예를 들어, 입력 활성화 버퍼들(860)에 저장됨)에 적용될 수 있다. 블록(912)에서, ADC(870)는 CIM 어레이(804)로부터의 PW 콘볼루션 출력을 아날로그 도메인으로부터 디지털 도메인으로 변환할 수 있다. PW 콘볼루션을 위한 ADC(870)의 출력들에 기반하는 비선형 동작 회로(880)를 통해 비선형 동작이 수행될 수 있다.
[0115] 상이한 행들 및 열들에 커널들을 구현함으로써, 콘볼루션 동작들이 병렬적으로 수행되어, 종래 구현들에 비해 더 빠른 프로세싱 시간 및 더 낮은 동적 전력을 가능하게 할 수 있다. 즉, 병렬 콘볼루션 동작들을 수행하면 각각의 필터를 상이한 사이클에서 프로세싱하는 것과는 달리, 한 사이클에서 여러 필터들의 프로세싱을 허용하여, 프로세싱 시간을 절감하고 동적 전력을 낮출 수 있다. 일부 양상들에서, 본 명세서에서 더 상세히 설명된 바와 같이, 각각의 커널은 행 활용도를 증가시키고 ADC 범위 압축을 감소시키기 위해 여러 번 반복될 수 있다.
전력 소모를 감소시키고 CIM 어레이 활용도를 증가시키는 기술들
[0116] 도 10은 본 개시내용의 특정 양상들에 따른, 전력을 절감하기 위해 타일들(또한 서브-뱅크들이라고도 함)로 분할된 CIM 어레이(1000)를 예시한다. CIM 어레이(1000)는 일 예로서, 1024개의 행들과 256개의 열들을 가질 수 있다. 행들 및 열들의 개별 타일(예를 들어, 서브-뱅크들)은 활성화되거나 비활성화될 수 있다. 예를 들어, 타일에는 128개의 행들과 23개의 열들이 포함될 수 있다. 일 예로서, 타일 어레이(1002)(예를 들어, 타일(1004)과 같은 다수의 타일들을 포함함)는 DW-CNN 콘볼루션에 대해 활성화될 수 있는 반면, 나머지 타일들은 비활성화될 수 있다. 다시 말해, 나머지 타일들은 3 상태 모드로 구성될 수 있다.
[0117] 일부 구현들에서, 행 및 열 필러 셀(filler cell)들이 CIM 어레이(1000)에서 구현될 수 있다. 필러 회로들(예를 들어, 버퍼들 또는 스위치들)은 전력을 절감하기 위해 CIM 어레이의 타일들을 활성화 또는 비활성화하는 데 사용될 수 있다. 열 필러 셀은 AND 게이팅 로직일 수 있고, 행 필러 셀은 WBL(Write Bit-Line) 상의 버퍼 및 RBL(Read Bit-Line) 상의 송신 스위치일 수 있다. 송신 스위치의 크기 및 타입은 선형성 규격들에 기반하여 구성될 수 있다.
[0118] DW 콘볼루션은 상대적으로 작은 커널 치수들(3x3, 5x5, ...)을 사용할 수 있으며, CIM 어레이의 활용도가 낮으면 범위 압축(예를 들어, 비선형 활성화로 인해 작은 범위 내에서 분포되는 뉴럴 네트워크의 출력)으로 인해 출력 신호 대 잡음비(signal to noise ratio, SNR)에 영향을 미칠 수 있다. 본 개시내용의 특정 양상들은 SNR을 개선하기 위한 기술들에 대한 것이다. 예를 들어, 세밀한(fine-grained) 타일링 설계는 도 11과 관련하여 본 명세서에서 보다 상세히 설명되는 바와 같이, SNR에 대한 영향을 완화하기 위해 사용될 수 있다.
[0119] 도 11은 본 개시내용의 특정 양상들에 따른, 대각선으로 스택된 커널들을 갖는 CIM 어레이(802)를 예시한다. 다양한 대각선으로 스택된 커널들이 CIM 어레이(802)에서 구현될 수 있다. 예를 들어, CIM 어레이(802)는 도 8과 관련하여 논의된 바와 같은, 커널들(806 및 808)에 대한 CIM 셀들뿐만 아니라, 커널들(1108, 1110, 1112, 1114, 1116)을 위한 CIM 셀들을 포함할 수 있으며, 각각은 CIM 어레이(802)의 상이한 행들 및 열들 상에 구현된다. 예시된 바와 같이, CIM 어레이(802)는 타일들(1104, 1106)과 같은 타일들로 파티셔닝될 수 있다. 커널의 적어도 일부를 포함하지 않는 CIM 어레이의 타일들 각각(예를 들어, 타일(1106))은 전력을 절감하기 위해 비활성화될 수 있다.
[0120] 일부 양상들에서, 상대적으로 작은 타일 크기가 DW 콘볼루션(예를 들어, 16 행들 및 32 열들)을 실행하는 CIM 뱅크에 사용(예를 들어, 칩-설계 동안에 선택되는)되어 CIM 어레이 활용을 증가시키고 전력을 절감할 수 있다. 더 작은 타일 크기를 사용하는 것은 활성 CIM 셀들의 활용도를 증가시키며, 활성 CIM 셀들은 비활성화된 타일의 일부가 아닌 셀들이다.
[0121] 일 예로서, 3개의 CIM 셀 그룹들은 역 병복(inverse bottleneck) 뉴럴 네트워크 아키텍처를 실행하도록 설계될 수 있다. 역 병목 동작들은 일반적으로 입력 특징들을 확장하는 데 사용되는 동작들을 지칭한다(그 후에 DW 콘볼루션과 PW 콘볼루션을 통한 DW 출력 차원의 감소가 뒤따름). 제1 CIM 셀 그룹(CIM1)이 병목 동작을 위해 사용될 수 있고, 제2 CIM 셀 그룹(CIM2)이 DW 콘볼루션 동작을 위해 사용될 수 있으며, 제3 CIM 셀 그룹(CIM3)이 병목 동작을 위해 사용될 수 있다. 일부 양상들에서, DW 콘볼루션에 대한 CIM2는 CIM 어레이 활용 및 전력 절감을 향상시키기 위해 더 미세한 타일링 배열(예를 들어, 3x3 커널을 구현하기 위한 16개의 행들, 또는 5x5 커널을 구현하기 위한 32개의 행들)을 가질 수 있는 반면, CIM1 및 CIM3은 비-DW 콘볼루션 동작들(예를 들어, CIM 어레이에 더 작은 타일을 사용하는 것은 CIM 어레이에 대해 더 많은 수의 필러 셀들을 초래하기 때문에)에 대한 필러 셀들의 영향을 피하기 위해 성긴 그레인(coarse grain) 타일링(예를 들어, 64 또는 128 행들)을 가질 수 있다. 이러한 방식으로, CIM 어레이 라이브러리의 재사용성은 DW 및 비-DW 동작들에 대해 두 배가 될 수 있다.
[0122] 일 예로서, 성긴 그레인 타일링(예를 들어, 각각의 타일이 1024개의 행들을 갖는 CIM 어레이의 64개 행들과 32개의 열들을 사용하는 경우)을 활용한 평균(예를 들어, 근사) CIM 활용도는 3x3 커널들의 경우 13.08%이고, 5x5 커널들의 경우 31.44%일 수 있다. 다시 말해, CIM 어레이 내의 활성 메모리 셀들 중 13.08%만이 3x3 커널들에 대해 활용될 수 있고, CIM 어레이 중 31.44%의 활성 메모리 셀들이 5x5 커널들에 대해 활용될 수 있다. 반면, 타일당 16개의 행들과 32개의 열들을 사용하는 미세 그레인(fine grain) 타일링 및 1024개의 행들이 있는 CIM 어레이의 평균 CIM 활용도는 3x3 커널들의 경우 40.46%, 5x5 커널들의 경우 47.64%일 수 있다. 1024개의 행들이 있는 CIM 어레이의 타일당 32개의 행들과 32개의 열들을 사용하는 미세 그레인 타일링을 사용한 평균 CIM 활용도는 3x3 커널들의 경우 24.18%이고, 5x5 커널들의 경우 47.64%일 수 있다. 따라서, 미세 타일링은 더 작은 커널 크기 필터들(예를 들어, DW 콘볼루션)에 대한 CIM 어레이 활용도를 개선한다. CIM 어레이 활용도를 개선하는 것은 활성 메모리 셀들의 더 높은 퍼센티지를 활용하여, 활용되지 않는 활성 메모리 셀들로 인해 발생할 수 있는 전력 손실을 감소시킨다.
[0123] 일부 양상들에서, 활용도는 커널 크기에 더 가까운 타일링 크기를 선택함으로써 향상될 수 있다. 예를 들어, 도 11에 예시된 바와 같이, 타일 크기 16(예를 들어, 타일(1104)에 대해 도시된 바와 같이)이 커널 크기 9(예를 들어, 커널(806)에 대해 도시된 바와 같이, 9개의 행들)에 사용될 수 있다. 타일 크기는 상이한 뉴럴 네트워크 모델들을 처리하기 위한 유연성을 개선하기 위해 커널 크기보다 큰 2의 거듭제곱(로그 스케일)일 수 있다. 일부 양상들에서, 도 12와 관련하여 보다 상세히 설명되는 바와 같이, 행 활용도를 개선하고 ADC SNR을 개선하기 위해 커널들이 반복될 수 있다.
[0124] 도 12는 본 개시내용의 특정 양상들에 따른, 반복되는 커널들로 구현된 CIM 어레이를 예시한다.
[0125] 예시된 바와 같이, 다수의 커널들이 반복되어 커널 그룹을 형성할 수 있다. 예를 들어, 다수의 커널들, 커널들(806, 1204) 또는 커널들(808, 1208)과 같은, 동일한 열들 상에 구현될 수 있다. 동일한 가중치 파라미터들이 동일한 열 상의 커널 그룹의 반복된 커널들(예를 들어, 커널들(806, 1204))에 저장될 수 있고, 동일한 활성화 입력들이 반복된 커널들에 제공될 수 있다. 따라서 반복된 커널들은 각각의 열(출력)에서 결합되는 동일한 출력 신호들을 생성할 수 있으며, 그 결과 반복된 커널들에 대한 출력에서 동적 범위가 증가할 수 있다. 예를 들어, 두 개의 반복된 커널들을 사용하는 것은 ADC(예를 들어, ADC(840))에 제공되는 반복된 커널들의 출력에서 동적 범위의 배가 되는 결과를 초래할 수 있다. 커널들의 출력에서 동적 범위를 늘리면 더 넓은 범위의 ADC를 활용할 수 있으므로 더 높은 정확도로 아날로그에서 디지털로의 변환이 가능하다. 즉, ADC 입력의 전체 범위를 사용하면 ADC의 디지털 출력이 ADC의 아날로그 입력을 보다 정확하게 식별하고 ADC의 SNR을 향상시킬 수 있게 한다.
[0126] 일부 경우들에서, CIM 어레이에서 구현될 수 있는 DW 콘볼루션 채널들의 수는 CIM 어레이의 차원들에 의해 제한될 수 있다. 예를 들어, 3x3 필터들을 구현하는 경우 1024개의 행들(예를 들어, 113 x 9가 1024보다 작기 때문에)을 갖는 CIM 어레이에 대해 113개의 채널들이 구현될 수 있다. 즉, DW 콘볼루션에 대한 DW 커널들은 CIM 어레이와 관련된 행 또는 열 수 제한들로 인해 하나의 CIM 어레이에 피팅되지 않을 수 있다. 따라서, 입력 활성화 및 DW 콘볼루션 가중치들은 부분적인 DW 콘볼루션 채널 합들이 계산될 수 있도록 시퀀서에 의해 배열될 수 있다.
[0127] 일부 경우들에서, CIM 어레이에서 구현될 수 있는 최대 커널들의 수가 모든 채널들의 총 커널들의 수보다 작을 수 있다. 최대 커널들의 수는 CIM 어레이에서 구현될 수 있다. 그런 다음 모든 해당 채널 입력들을 프로세싱하여 부분 채널 출력들을 생성할 수 있다. 그런 다음 어레이는 다음 커널들의 배치와 함께 로딩될 수 있으며 모든 커널들이 프로세싱될 때까지 부분 출력들이 프로세싱될 수 있다. 또 다른 예로서, DW 콘볼루션 입력 배치 크기는 후속 PW 계층 차원 정보에 기반하여 결정될 수 있다. 커널은 입력 배치 크기를 프로세싱하기 위해 여러번 로딩될 수 있다. 그런 다음 부분 DW 출력이 다음 PW 콘볼루션 계층에 공급되어 부분 병목 출력을 생성할 수 있다.
CIM 어레이에서 뉴럴 네트워크 프로세싱을 수행하기 위한 예시적인 동작들
[0128] 도 13은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들(1300)을 예시하는 흐름도이다. 동작들(1300)은 도 14와 관련하여 설명되는 바와 같은 CIM 제어기(1432)와 같은 제어기에 의해 수행될 수 있다.
[0129] 동작들(1300)은 제어기가 하나 이상의 제1 열들(예를 들어, 도 8의 (810, 812))을 통해, 뉴럴 네트워크 컴퓨테이션(예를 들어, DW 뉴럴 네트워크 컴퓨테이션)을 수행하기 위한 제1 커널(예를 들어, 도 8의 커널(806))에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM(compute-in memory) 셀들을 로딩하는 블록(1305)에서 시작하며, 여기서 제1 세트의 CIM 셀들은 CIM 어레이(예를 들어, 도 8의 CIM 어레이(802))의 하나 이상의 제1 열들 및 제1 복수의 행들(예를 들어, 도 8의 행들(814))을 갖는다. 블록(1310)에서, 제어기는 하나 이상의 제2 열들(예를 들어, 도 8의 열들(816, 818))을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널(예를 들어, 도 8의 커널(808))의 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하며, 여기서 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들(예를 들어, 도 8의 행들(820))을 갖는다. 예를 들어, 제1 세트의 CIM 셀들은 CIM 어레이의 셀들의 서브세트를 포함할 수 있고, 제2 세트의 CIM 셀들은 CIM 어레이의 셀들의 또 다른 서브세트를 포함한다. 일부의 양상들에서, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이할 수 있고, 제1 복수의 행들은 제2 복수의 행들과 상이할 수 있다. 블록(1315)에서, 제어기는 제1 활성화 입력들을 제1 복수의 행들에 적용하고, 제2 활성화 입력들을 제2 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행할 수 있다.
[0130] 일부 양상들에서, 동작들(1300)은 또한 포인트별 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널에 대한 제3 복수의 가중치들을 가진 다른 CIM 어레이(예를 들어, 도 8의 CIM 어레이(804))를 로딩하는 것을 포함할 수 있다. 제어기는 또한 깊이별 뉴럴 네트워크 컴퓨테이션으로부터의 출력 신호들에 기반하여 제2 CIM 어레이에 대한 입력 신호들(예를 들어, 도 8의 입력 활성화 버퍼들(860)을 통해 제공됨)을 생성할 수 있다.
[0131] 일부 양상들에서, 동작들(1300)은 또한 하나 이상의 제1 열들에서의 전압을 아날로그 도메인으로부터 디지털 도메인으로 변환함으로써, 제1 디지털 신호(예를 들어, 도 8의 ADC(840)를 통해)를 생성하는 것, 그리고 하나 이상의 제2 열들에서의 전압을 아날로그 도메인으로부터 디지털 도메인으로 변환함으로써 제2 디지털(예를 들어, 도 8의 ADC(842)) 신호를 생성하는 것을 포함할 수 있다. 동작들(1300)은 또한 제1 디지털 신호 및 제2 디지털 신호에 기반하여 비선형 활성화 동작(예를 들어, 비선형 활성화 회로(850)를 통해)을 수행하는 것을 포함할 수 있다.
[0132] 일부 양상들에서, 커널들은 CIM 어레이 활용도를 향상시키고 ADC들에 대한 입력 범위 압축을 증가시키기 위해 반복될 수 있다. 예를 들어, 제어기는 또한 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널(예를 들어, 도 12의 커널(1204))에 대한 제1 복수의 가중치 파라미터들을 갖는 제3 CIM 셀들을 로딩할 수 있다. 제3 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제3 복수의 행들 상에 있을 수 있다. 제어기는 적어도 제1 활성화 입력들(예를 들어, 제1 커널에 제공되는 동일한 활성화 입력들)을 적어도 제3 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행할 수 있다. 본 명세서에서 설명된 바와 같이, 가중치 파라미터의 각각의 비트는 커널의 열을 통해 저장될 수 있다. 예를 들어, 하나 이상의 제1 열들의 수량은 제1 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관될 수 있고, 하나 이상의 제2 열들의 수량은 제2 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관될 수 있다.
위상 선택적 콘볼루션(Phase Selective Convolution)을 수행하기 위한 예시적인 프로세싱 시스템들
[0133] 도 14는 예시적인 전자 디바이스(1400)를 예시한다. 전자 디바이스(1400)는, 도 13에 관하여 설명된 동작들(1300)을 포함하여, 본 명세서에서 설명된 방법들을 수행하도록 구성될 수 있다.
[0134] 전자 디바이스(1400)는 일부 양상들에서 멀티-코어 CPU(central processing unit)일 수 있는 CPU(1402)를 포함한다. CPU(1402)에서 실행되는 명령어들은, 예를 들면, CPU(1402)와 연관된 프로그램 메모리로부터 로딩될 수 있거나, 또는 메모리(1424)로부터 로딩될 수 있다.
[0135] 전자 디바이스(1400)는 또한 GPU(graphics processing unit)(1404), DSP(digital signal processor)(1406), NPU(neural processing unit)(1408), 멀티미디어 프로세싱 블록(1410), 멀티미디어 프로세싱 블록(1410) 및 무선 연결 프로세싱 블록(1412)과 같은 특정 기능들에 맞는 추가 프로세싱 블록들을 포함한다. 일 구현에서, NPU(1408)는 CPU(1402), GPU(1404) 및/또는 DSP(1406) 중 하나 이상에서 구현된다.
[0136] 일부 양상들에서, 무선 연결 프로세싱 블록(1412)은, 예를 들면, 3세대(3G) 연결, 4세대(4G) 연결(예를 들어, 4G LTE), 5세대 연결(예를 들어, 5G 또는 NR), Wi-Fi 연결, 블루투스 연결, 및 무선 데이터 송신 표준들을 위한 컴포넌트들을 포함할 수 있다. 무선 연결 프로세싱 블록(1412)은 추가로 무선 통신을 가능하게 하기 위해 하나 이상의 안테나들(1414)에 연결된다.
[0137] 전자 디바이스(1400)는 또한 임의의 방식의 센서와 관련된 하나 이상의 센서 프로세서들(1416), 임의의 방식의 이미지 센서와 관련된 하나 이상의 ISP(image signal processor)들(1418), 및/또는 내비게이션 프로세서(1420)를 포함할 수 있으며, 내비게이션 프로세서(1420)는 관성 포지셔닝 시스템 컴포넌트들뿐만 아니라 위성 기반 포지셔닝 시스템 컴포넌트들(예를 들어, GPS 또는 GLONASS)을 포함한다.
[0138] 전자 디바이스(1400)는 또한 스크린, 터치-감응 표면들(터치-감응 디스플레이들을 포함함), 물리적 버튼들, 스피커들, 마이크로폰들 등과 같은 하나 이상의 입력 및/또는 출력 디바이스들(1422)을 포함할 수 있다. 일부 양상들에서, 전자 디바이스(1400)의 프로세서들 중 하나 이상은 ARM 명령어 세트에 기반할 수 있다.
[0139] 전자 디바이스(1400)는 또한 메모리(1424)를 포함하고, 메모리(1424)는 동적 랜덤 액세스 메모리, 플래시 기반 정적 메모리 등과 같은 하나 이상의 정적 및/또는 동적 메모리들을 대표한다. 이 예에서, 메모리(1424)는 컴퓨터 실행 가능 컴포넌트들을 포함하고, 이는 전자 디바이스(1400) 또는 CIM 제어기(1432)의 전술한 프로세서들 중 하나 이상에 의해 실행될 수 있다. 예를 들어, 전자 디바이스(1400)는, 본 명세서에서 설명된 바와 같이, CIM 어레이(802) 및 CIM 어레이(804)와 같은 하나 이상의 CIM 어레이들을 포함하는 CIM 회로(1426)를 포함할 수 있다. CIM 회로(1426)는 CIM 제어기(1432)를 통해 제어될 수 있다. 예를 들어, 일부 양상들에서, 메모리(1424)는 로딩(예를 들어, 가중치 파라미터들을 갖는 CIM 셀들의 로딩)하기 위한 코드(1424A), 컴퓨팅(예를 들어, 활성화 입력들을 적용함으로써 뉴럴 네트워크 컴퓨테이션을 수행)하기 위한 위한 코드(1424B)를 포함할 수 있다. 예시된 바와 같이, CIM 제어기(1432)는 로딩(예를 들어, 가중치 파라미터들을 갖는 CIM 셀들의 로딩)하기 위한 회로(1428A) 및 컴퓨팅(예를 들어, 활성화 입력들을 적용하여 뉴럴 네트워크 컴퓨테이션을 수행)하기 위한 회로(1428B)를 포함할 수 있다. 도시된 컴포넌트들, 및 도시되지 않은 다른 컴포넌트들은 본 명세서에 설명된 방법들의 다양한 양상들을 수행하도록 구성될 수 있다.
[0140] 전자 디바이스(1400)가 서버 디바이스인 경우와 같은 일부 양상들에서, 멀티미디어 컴포넌트(1410), 무선 연결 컴포넌트(1412), 안테나(1414), 센서들(1416), ISP들(1418), 또는 내비게이션(1420) 중 하나 이상과 같은 다양한 양상들이 도 14에 도시된 양상으로부터 생략될 수 있다.
예시적인 조항들
[0141] 양상 1. 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치로서, 뉴럴 네트워크 컴퓨테이션을 위한 제1 커널로 구성되는 제1 세트의 CIM(computation in memory) 셀들 ― 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―; 및 뉴럴 네트워크 컴퓨테이션을 위한 제2 커널로서 구성된 제2 세트의 CIM 셀들 ― 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함함 ― 을 포함하고, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이하고, 그리고 제1 복수의 행들은 제2 복수의 행들과 상이하다.
[0142] 양상 2. 양상 1의 장치에 있어서, 제1 세트의 CIM 셀들은 CIM 어레이의 셀들의 서브세트를 포함하고, 그리고 제2 세트의 CIM 셀들은 CIM 어레이의 셀들의 다른 서브세트를 포함한다.
[0143] 양상 3. 양상 1 또는 양상 2의 장치에 있어서, 뉴럴 네트워크 컴퓨테이션은 DW(depth-wise) 뉴럴 네트워크 컴퓨테이션을 포함한다.
[0144] 양상 4. 양상 3의 장치에 있어서, PW(pointwise) 뉴럴 네트워크 컴퓨테이션을 위한 제3 커널로서 구성된 다른 CIM 어레이를 더 포함하고, 다른 CIM 어레이에 대한 입력 신호들은 CIM 어레이로부터의 출력 신호들에 기반하여 생성된다.
[0145] 양상 5. 양상 1 내지 양상 4 중 어느 한 양상의 장치에 있어서, 하나 이상의 제1 열들에 커플링되는 제1 ADC(analog-to-digital converter); 및 하나 이상의 제2 열들에 커플링되는 제2 ADC를 더 포함한다.
[0146] 양상 6. 양상 5의 장치에 있어서, 제1 ADC 및 제2 ADC의 출력들에 커플링되는 비선형 활성화 회로를 더 포함한다.
[0147] 양상 7. 양상 1 내지 양상 6 중 어느 한 양상의 장치에 있어서, 뉴럴 네트워크 컴퓨테이션을 위한 제3 커널로서 구성된 제3 세트의 CIM 셀들을 더 포함하고, 제3 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제3 복수의 행들 상에 존재한다.
[0148] 양상 8. 양상 7의 장치에 있어서, 동일한 가중치 파라미터들이 제1 세트의 CIM 셀들 및 제3 세트의 CIM 셀들에 저장되도록 구성된다.
[0149] 양상 9. 양상 1 내지 양상 8 중 어느 한 양상의 장치에 있어서, 제1 복수의 행들의 각각의 행 상의 제1 세트의 CIM 셀들 중 하나 이상이 제1 가중치 파라미터를 저장하도록 구성되고; 그리고 제2 복수의 행들의 각각의 행 상의 제2 세트의 CIM 셀들 중 하나 이상이 제2 가중치 파라미터를 저장하도록 구성된다.
[0150] 양상 10. 양상 9의 장치에 있어서, 하나 이상의 제1 열들의 수량이 제1 가중치 파라미터의 하나 이상의 비트들의 수량과 연관되고; 그리고 하나 이상의 제2 열들의 수량이 제2 가중치 파라미터의 하나 이상의 비트들의 수량과 연관된다.
[0151] 양상 11. 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법으로서, 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM(computation in memory) 셀들을 로딩하는 단계 ― 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―; 하나 이상의 제2 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널에 대한 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계 ― 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함하고, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이하고, 그리고 제1 복수의 행들은 제2 복수의 행들과 상이함 ―; 및 제1 활성화 입력들을 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 제2 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행하는 단계를 포함한다.
[0152] 양상 12. 양상 11의 방법에 있어서, 제1 세트의 CIM 셀들은 CIM 어레이의 셀들의 서브세트를 포함하고, 그리고 제2 세트의 CIM 셀들은 CIM 어레이의 셀들의 다른 서브세트를 포함한다.
[0153] 양상 13. 양상 11 또는 양상 12의 방법에 있어서, 뉴럴 네트워크 컴퓨테이션은 DW(depth-wise) 뉴럴 네트워크 컴퓨테이션을 포함한다.
[0154] 양상 14. 양상 13의 방법에 있어서, PW(pointwise) 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널에 대한 제3 복수의 가중치들을 갖는 다른 CIM 어레이를 로딩하는 단계; 및 DW 뉴럴 네트워크 컴퓨테이션으로부터의 출력 신호들에 기반하여 다른 CIM 어레이에 대한 입력 신호들을 생성하는 단계를 더 포함한다.
[0155] 양상 15. 양상 11 내지 양상 14 중 어느 한 양상의 방법에 있어서, 하나 이상의 제1 열들에서의 전압을 아날로그 도메인으로부터 디지털 도메인으로 변환함으로써 제1 디지털 신호를 생성하는 단계; 및 하나 이상의 제2 열들에서의 전압을 아날로그 도메인으로부터 디지털 도메인으로 변환함으로써 제2 디지털 신호를 생성하는 단계를 더 포함한다.
[0156] 양상 16. 양상 15의 방법에 있어서, 제1 디지털 신호 및 제2 디지털 신호에 기반하여 비선형 활성화 동작을 수행하는 단계를 더 포함한다.
[0157] 양상 17. 양상 11 내지 양상 16 중 어느 한 양상의 방법에 있어서, 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제3 세트의 CIM 셀들을 로딩하는 단계 ― 제3 세트의 CIM 셀들은 메모리의 하나 이상의 제1 열들 및 제3 복수의 행들 상에 존재함 ―를 더 포함하고, 뉴럴 네트워크 컴퓨테이션을 수행하는 단계는 제1 활성화 입력들을 제3 복수의 행들에 적용하는 단계를 더 포함한다.
[0158] 양상 18. 양상 11 내지 양상 17 중 어느 한 양상의 방법에 있어서, 하나 이상의 제1 열들의 수량은 제1 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관되고; 그리고 하나 이상의 제2 열들의 수량은 제2 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관된다.
[0159] 양상 19. 비일시적 컴퓨터 판독 가능 매체로서, 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템으로 하여금, 뉴럴 네트워크에서의 신호 프로세싱 방법을 수행하게 하는 명령어들을 포함하고, 이 방법은, 하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM(computation in memory) 셀들을 로딩하는 단계 ― 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―; 하나 이상의 제2 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널에 대한 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계 ― 제2 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함하고, 하나 이상의 제1 열들은 하나 이상의 제2 열들과 상이하고 그리고 제1 복수의 행들은 제2 복수의 행들과 상이함 ―; 및 제1 활성화 입력들을 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 제2 복수의 행들에 적용함으로써, 뉴럴 네트워크 컴퓨테이션을 수행하는 단계를 포함한다.
추가 고려 사항들
[0160] 상기의 설명은 임의의 당업자가 본 명세서에 설명된 다양한 양상들을 실시할 수 있게 하도록 제공된다. 본 명세서에서 논의된 예들은 청구항들에 제시된 범위, 적용 가능성 또는 양상들을 제한하지 않는다. 이러한 양상들에 대한 다양한 변형들이 당업자들에게 쉽게 명백할 것이며, 본 명세서에 정의된 일반적 원리들은 다른 양상들에 적용될 수 있다. 예를 들어, 본 개시내용의 범위를 벗어나지 않으면서 논의되는 엘리먼트들의 기능 및 배열에 변경들이 이루어질 수 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절히 생략, 치환 또는 추가할 수 있다. 예를 들어, 설명된 방법들은 설명되는 것과 상이한 순서로 수행될 수 있고, 다양한 단계들이 추가, 생략 또는 결합될 수 있다. 또한, 일부 예들에 관하여 설명되는 특징들은 일부 다른 예들에서 결합될 수 있다. 예를 들어, 본 명세서에서 기술된 임의의 수의 양상들을 사용하여 장치가 구현될 수 있거나 방법이 실시될 수 있다. 또한, 본 개시내용의 범위는 본 명세서에 기재된 본 개시내용의 다양한 양상들에 추가하여 또는 그 다양한 양상들 이외의 다른 구조, 기능, 또는 구조 및 기능을 사용하여 실시되는 이러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에서 개시되는 본 개시내용의 임의의 양상은 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수 있음을 이해해야 한다.
[0161] 본 명세서에서 사용되는 바와 같이, “예시적인” 이라는 단어는 “예, 사례, 또는 예시로서 기능하는 것”을 의미한다. 본 명세서에서 설명되는 임의의 양상이 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다.
[0162] 본 명세서에서 사용되는 바와 같이, 아이템들의 리스트 "중 적어도 하나"로 지칭되는 구문은 단일 멤버들을 포함하여 그 아이템들의 임의의 조합을 지칭한다. 예를 들어, "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의 임의의 다른 순서화)을 커버하는 것으로 의도된다.
[0163] 본 명세서에서 사용되는 용어 "결정"은 광범위한 동작들을 포함한다. 예를 들어, "결정"은 계산, 컴퓨팅, 프로세싱, 유도, 검사, 검색(예를 들어, 표, 데이터베이스 또는 다른 데이터 구조에서의 검색), 확인 등을 포함할 수 있다. 또한, "결정"은 수신(예를 들어, 정보 수신), 액세스(예를 들어, 메모리 내의 데이터에 액세스) 등을 포함할 수 있다. 또한, "결정"은 해결, 선택, 선정, 설정 등을 포함할 수 있다.
[0164] 본 명세서에 개시된 방법들은 방법들을 달성하기 위한 하나 이상의 단계들 또는 동작들을 포함한다. 방법 단계들 및/또는 동작들은 청구항들의 범위를 벗어나지 않고 서로 교환될 수 있다. 즉, 단계들 또는 동작들의 특정한 순서가 규정되지 않으면, 특정 단계들 및/또는 동작들의 순서 및/또는 사용은 청구항들의 범위를 벗어나지 않고 변형될 수 있다. 또한, 위에서 설명된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적합한 수단에 의해 수행될 수 있다. 이 수단은, 회로, ASIC(application specific integrated circuit) 또는 프로세서를 포함하는(그러나, 이에 제한되지는 않는) 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에 도시된 동작들이 존재하는 경우, 이 동작들은 유사한 넘버링을 갖는 상응하는 대응 수단-및-기능(means-plus-function) 컴포넌트들을 가질 수 있다.
[0165] 아래의 청구항들은 본 명세서에서 도시된 실시예들로 제한되도록 의도되는 것이 아니라, 청구항들의 언어와 일치하는 최대 범위에 부합할 것이다. 청구항 내에서, 단수로 엘리먼트에 대한 참조는, 구체적으로 그렇게 언급되지 않는 한, “하나 및 단 하나”를 의미하는 것으로 의도되는 것이 아니라, “하나 이상”을 의미하도록 의도된다. 구체적으로 달리 언급되지 않는 한, 용어 “일부”는 하나 이상을 나타낸다. 어떤 청구항 엘리먼트도, 그 엘리먼트가 “하기 위한 수단”이라는 어구를 사용하여 명시적으로 언급되지 않거나 또는 방법 청구항의 경우에서는 그 엘리먼트가 “하는 단계”라는 어구를 사용하여 언급되지 않으면, 35 U.S.C.§112(f)의 규정들 하에서 해석되지 않아야 한다. 본 기술분야의 당업자들에게 공지되거나 추후 공지될 본 개시내용 전반에 걸쳐 설명되는 다양한 양상들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들은 본 명세서에 참조로 명백하게 통합되어 있고 청구항들에 의해 포함되는 것으로 의도된다. 또한, 본 명세서에 개시된 어떠한 것도, 이러한 개시내용이 청구항들에 명시적으로 인용되었는지 여부와 무관하게 대중에게 제공되도록 의도되지 않는다.

Claims (19)

  1. 장치로서,
    뉴럴 네트워크 컴퓨테이션(neural network computation)을 위한 제1 커널(kernel)로서 구성되는 제1 세트의 CIM(computation in memory) 셀들 ― 상기 제1 세트의 CIM 셀들은 CIM 어레이의 하나 이상의 제1 열(column)들 및 제1 복수의 행(row)들을 포함함 ―; 및
    상기 뉴럴 네트워크 컴퓨테이션을 위한 제2 커널로서 구성된 제2 세트의 CIM 셀들 ― 상기 제2 세트의 CIM 셀들은 상기 CIM 어레이의 하나 이상의 제2 열들 및 제2 복수의 행들을 포함함 ―
    을 포함하고, 상기 하나 이상의 제1 열들은 상기 하나 이상의 제2 열들과 상이하고, 그리고
    상기 제1 복수의 행들은 상기 제2 복수의 행들과 상이한, 장치.
  2. 제1항에 있어서,
    상기 제1 세트의 CIM 셀들은 상기 CIM 어레이의 셀들의 서브세트를 포함하고, 그리고 상기 제2 세트의 CIM 셀들은 상기 CIM 어레이의 셀들의 다른 서브세트를 포함하는, 장치.
  3. 제1항에 있어서,
    상기 뉴럴 네트워크 컴퓨테이션은 DW(depth-wise) 뉴럴 네트워크 컴퓨테이션을 포함하는, 장치.
  4. 제3항에 있어서,
    PW(pointwise) 뉴럴 네트워크 컴퓨테이션을 위한 제3 커널로서 구성된 다른 CIM 어레이를 더 포함하고,
    상기 다른 CIM 어레이에 대한 입력 신호들은 상기 CIM 어레이로부터의 출력 신호들에 기반하여 생성되는, 장치.
  5. 제1항에 있어서,
    상기 하나 이상의 제1 열들에 커플링되는 제1 ADC(analog-to-digital converter); 및
    상기 하나 이상의 제2 열들에 커플링되는 제2 ADC
    를 더 포함하는, 장치.
  6. 제5항에 있어서,
    상기 제1 ADC 및 상기 제2 ADC의 출력들에 커플링되는 비선형 활성화 회로를 더 포함하는, 장치.
  7. 제1항에 있어서,
    상기 뉴럴 네트워크 컴퓨테이션을 위한 제3 커널로서 구성된 제3 세트의 CIM 셀들을 더 포함하고, 상기 제3 세트의 CIM 셀들은 상기 CIM 어레이의 상기 하나 이상의 제1 열들 및 제3 복수의 행들 상에 존재하는, 장치.
  8. 제7항에 있어서,
    동일한 가중치 파라미터들이 상기 제1 세트의 CIM 셀들 및 상기 제3 세트의 CIM 셀들에 저장되도록 구성되는, 장치.
  9. 제1항에 있어서,
    상기 제1 복수의 행들의 각각의 행 상의 상기 제1 세트의 CIM 셀들 중 하나 이상이 제1 가중치 파라미터를 저장하도록 구성되고; 그리고
    상기 제2 복수의 행들의 각각의 행 상의 상기 제2 세트의 CIM 셀들 중 하나 이상이 제2 가중치 파라미터를 저장하도록 구성되는, 장치.
  10. 제9항에 있어서,
    상기 하나 이상의 제1 열들의 수량이 상기 제1 가중치 파라미터의 하나 이상의 비트들의 수량과 연관되고; 그리고
    상기 하나 이상의 제2 열들의 수량이 상기 제2 가중치 파라미터의 하나 이상의 비트들의 수량과 연관되는, 장치.
  11. 방법으로서,
    하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM(computation in memory) 셀들을 로딩하는 단계 ― 상기 제1 세트의 CIM 셀들은 CIM 어레이의 상기 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―;
    하나 이상의 제2 열들을 통해, 상기 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널에 대한 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계 ― 상기 제2 세트의 CIM 셀들은 상기 CIM 어레이의 상기 하나 이상의 제2 열들 및 제2 복수의 행들을 포함하고, 상기 하나 이상의 제1 열들은 상기 하나 이상의 제2 열들과 상이하고, 그리고 상기 제1 복수의 행들은 상기 제2 복수의 행들과 상이함 ―; 및
    제1 활성화 입력들을 상기 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 상기 제2 복수의 행들에 적용함으로써, 상기 뉴럴 네트워크 컴퓨테이션을 수행하는 단계
    를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제1 세트의 CIM 셀들은 상기 CIM 어레이의 셀들의 서브세트를 포함하고, 그리고 상기 제2 세트의 CIM 셀들은 상기 CIM 어레이의 셀들의 다른 서브세트를 포함하는, 방법.
  13. 제11항에 있어서,
    상기 뉴럴 네트워크 컴퓨테이션은 DW(depth-wise) 뉴럴 네트워크 컴퓨테이션을 포함하는, 방법.
  14. 제13항에 있어서,
    PW(pointwise) 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널에 대한 제3 복수의 가중치들을 갖는 다른 CIM 어레이를 로딩하는 단계; 및
    상기 DW 뉴럴 네트워크 컴퓨테이션으로부터의 출력 신호들에 기반하여 상기 다른 CIM 어레이에 대한 입력 신호들을 생성하는 단계
    를 더 포함하는, 방법.
  15. 제11항에 있어서,
    상기 하나 이상의 제1 열들에서의 전압을 아날로그 도메인으로부터 디지털 도메인으로 변환함으로써 제1 디지털 신호를 생성하는 단계; 및
    상기 하나 이상의 제2 열들에서의 전압을 상기 아날로그 도메인으로부터 상기 디지털 도메인으로 변환함으로써 제2 디지털 신호를 생성하는 단계
    를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 제1 디지털 신호 및 상기 제2 디지털 신호에 기반하여 비선형 활성화 동작을 수행하는 단계를 더 포함하는, 방법.
  17. 제11항에 있어서,
    상기 하나 이상의 제1 열들을 통해, 상기 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제3 커널에 대한 상기 제1 복수의 가중치 파라미터들을 갖는 제3 세트의 CIM 셀들을 로딩하는 단계 ― 상기 제3 세트의 CIM 셀들은 상기 메모리의 상기 하나 이상의 제1 열들 및 제3 복수의 행들 상에 존재함 ―를 더 포함하고,
    상기 뉴럴 네트워크 컴퓨테이션을 수행하는 단계는 상기 제1 활성화 입력들을 상기 제3 복수의 행들에 적용하는 단계를 더 포함하는, 방법.
  18. 제11항에 있어서,
    상기 하나 이상의 제1 열들의 수량은 상기 제1 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관되고; 그리고
    상기 하나 이상의 제2 열들의 수량은 상기 제2 복수의 가중치 파라미터들 각각의 하나 이상의 비트들의 수량과 연관되는, 방법.
  19. 비일시적 컴퓨터 판독 가능 저장 매체로서,
    프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행되는 경우, 상기 프로세싱 시스템으로 하여금, 방법을 수행하게 하는 명령어들을 포함하고,
    상기 방법은,
    하나 이상의 제1 열들을 통해, 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제1 커널에 대한 제1 복수의 가중치 파라미터들을 갖는 제1 세트의 CIM(computation in memory) 셀들을 로딩하는 단계 ― 상기 제1 세트의 CIM 셀들은 CIM 어레이의 상기 하나 이상의 제1 열들 및 제1 복수의 행들을 포함함 ―;
    하나 이상의 제2 열들을 통해, 상기 뉴럴 네트워크 컴퓨테이션을 수행하기 위한 제2 커널에 대한 제2 복수의 가중치 파라미터들을 갖는 제2 세트의 CIM 셀들을 로딩하는 단계 ― 상기 제2 세트의 CIM 셀들은 상기 CIM 어레이의 상기 하나 이상의 제2 열들 및 제2 복수의 행들을 포함하고, 상기 하나 이상의 제1 열들은 상기 하나 이상의 제2 열들과 상이하고, 그리고 상기 제1 복수의 행들은 상기 제2 복수의 행들과 상이함 ―; 및
    제1 활성화 입력들을 상기 제1 복수의 행들에 적용하고 그리고 제2 활성화 입력들을 상기 제2 복수의 행들에 적용함으로써, 상기 뉴럴 네트워크 컴퓨테이션을 수행하는 단계
    를 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020237043714A 2021-06-29 2022-06-28 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름 KR20240025523A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/361,784 2021-06-29
US17/361,784 US20220414444A1 (en) 2021-06-29 2021-06-29 Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn)
PCT/US2022/073230 WO2023279002A1 (en) 2021-06-29 2022-06-28 Computation in memory (cim) architecture and dataflow supporting a depth- wise convolutional neural network (cnn)

Publications (1)

Publication Number Publication Date
KR20240025523A true KR20240025523A (ko) 2024-02-27

Family

ID=82701682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237043714A KR20240025523A (ko) 2021-06-29 2022-06-28 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름

Country Status (7)

Country Link
US (1) US20220414444A1 (ko)
EP (1) EP4364047A1 (ko)
KR (1) KR20240025523A (ko)
CN (1) CN117546178A (ko)
BR (1) BR112023026704A2 (ko)
TW (1) TW202324210A (ko)
WO (1) WO2023279002A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114298297A (zh) * 2021-11-04 2022-04-08 清华大学 存内计算装置、芯片及电子设备
US11935586B2 (en) * 2022-02-11 2024-03-19 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device and method for computing-in-memory (CIM)
CN117494651A (zh) * 2023-11-14 2024-02-02 合芯科技(苏州)有限公司 基于机器学习的sram位单元的优化设计方法、装置、介质及终端

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220164639A1 (en) * 2019-03-28 2022-05-26 Agency For Science, Technology And Research A system for mapping a neural network architecture onto a computing core and a method of mapping a neural network architecture onto a computing core
CN114341884A (zh) * 2019-09-09 2022-04-12 高通股份有限公司 用于针对二进制处理应用来修改神经网络的系统和方法
US11562205B2 (en) * 2019-09-19 2023-01-24 Qualcomm Incorporated Parallel processing of a convolutional layer of a neural network with compute-in-memory array

Also Published As

Publication number Publication date
BR112023026704A2 (pt) 2024-03-12
CN117546178A (zh) 2024-02-09
EP4364047A1 (en) 2024-05-08
WO2023279002A1 (en) 2023-01-05
US20220414444A1 (en) 2022-12-29
TW202324210A (zh) 2023-06-16

Similar Documents

Publication Publication Date Title
KR20240025523A (ko) 깊이별 CNN(convolutional neural network)을 지원하는 CIM(computation in memory) 아키텍처 및 데이터 흐름
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20230031841A1 (en) Folding column adder architecture for digital compute in memory
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
JP2024525333A (ja) 深さ方向畳み込みのためのメモリ内計算アーキテクチャ
JP2024525332A (ja) 深さ方向畳み込みニューラルネットワーク(cnn)をサポートするメモリ内計算(cim)アーキテクチャ及びデータフロー
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
US20230049323A1 (en) Sparsity-aware compute-in-memory
US20230037054A1 (en) Digital compute in memory
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
CN118103811A (zh) 用于数字存储器中计算架构的累加器