KR20240037233A - 뉴럴 네트워크 가속기에서의 데이터-재사용을 위한 활성화 버퍼 아키텍처 - Google Patents
뉴럴 네트워크 가속기에서의 데이터-재사용을 위한 활성화 버퍼 아키텍처 Download PDFInfo
- Publication number
- KR20240037233A KR20240037233A KR1020247001171A KR20247001171A KR20240037233A KR 20240037233 A KR20240037233 A KR 20240037233A KR 1020247001171 A KR1020247001171 A KR 1020247001171A KR 20247001171 A KR20247001171 A KR 20247001171A KR 20240037233 A KR20240037233 A KR 20240037233A
- Authority
- KR
- South Korea
- Prior art keywords
- buffer
- data
- activation
- segments
- input
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 460
- 230000004913 activation Effects 0.000 title claims abstract description 210
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 99
- 238000000034 method Methods 0.000 claims description 59
- 230000015654 memory Effects 0.000 claims description 52
- 230000006870 function Effects 0.000 claims description 28
- 230000008878 coupling Effects 0.000 claims description 25
- 238000010168 coupling process Methods 0.000 claims description 25
- 238000005859 coupling reaction Methods 0.000 claims description 25
- 238000012856 packing Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000001994 activation Methods 0.000 description 166
- 238000010801 machine learning Methods 0.000 description 22
- 238000013527 convolutional neural network Methods 0.000 description 12
- 238000013135 deep learning Methods 0.000 description 9
- 230000004927 fusion Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000008521 reorganization Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000003062 neural network model Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000035508 accumulation Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치를 제공한다. 장치는 일반적으로, 콘볼루션 연산(convolution operation)을 수행하도록 구성된 컴퓨테이션 회로부(computation circuitry) ― 컴퓨테이션 회로부는 다수의 입력 행(row)들을 가짐 ―, 및 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼를 포함한다. 일부 양상들에서, 다수의 버퍼 세그먼트들 각각은 복수의 멀티플렉서 입력들을 갖는 제1 멀티플렉서를 포함하고, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 제1 멀티플렉서들 중 하나의 제1 멀티플렉서의 복수의 멀티플렉서 입력들 각각은 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링된다.
Description
[0001] 본 개시내용의 양상들은 머신 러닝 태스크들을 수행하는 것에 관한 것으로, 특히, 개선된 머신 러닝 프로세싱 효율을 위한 데이터의 조직화에 관한 것이다.
[0002] 머신 러닝은 일반적으로, 한 세트의 트레이닝 데이터에 대한 일반화된 피팅(fit)을 표현하는 트레이닝된 모델(예를 들어, 인공 뉴럴 네트워크, 트리 또는 다른 구조들)을 생성하는 프로세스이다. 트레이닝된 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대한 통찰력들을 얻기 위해 사용될 수 있는 추론들을 생성한다. 일부 경우들에서, 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대해 "추론을 실행하는 것"으로 설명된다.
[0003] 다양한 머신 러닝(또는 인공 지능) 태스크들을 가능하게 하기 위해 머신 러닝의 사용이 확산됨에 따라, 머신 러닝 모델 데이터의 더 효율적인 프로세싱에 대한 필요성이 발생했다. 일부 경우들에서, 머신 러닝 모델 데이터를 프로세싱하기 위한 프로세싱 시스템의 용량을 향상시키기 위해 전용 하드웨어가 사용될 수 있다. 그러나, 그러한 하드웨어는 공간 및 전력을 요구하며, 이는 프로세싱 디바이스 상에서 항상 이용가능한 것은 아니다. 따라서, 전력 효율 연관된 뉴럴 네트워크 시스템들을 개선하기 위한 시스템들 및 방법들이 필요하다.
[0004] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치를 제공한다. 장치는 일반적으로, 콘볼루션 연산(convolution operation)을 수행하도록 구성된 컴퓨테이션 회로부(computation circuitry) ― 컴퓨테이션 회로부는 다수의 입력 행(row)들을 가짐 ―, 및 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼를 포함한다. 일부 양상들에서, 다수의 버퍼 세그먼트들 각각은 복수의 멀티플렉서 입력들을 갖는 제1 멀티플렉서를 포함하고, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 제1 멀티플렉서들 중 하나의 제1 멀티플렉서의 복수의 멀티플렉서 입력들 각각은 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링된다.
[0005] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치를 제공한다. 장치는 일반적으로, 콘볼루션 연산을 수행하도록 구성된 컴퓨테이션 회로부 ― 컴퓨테이션 회로부는 다수의 입력 행들을 가짐 ―, 및 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼를 포함한다. 일부 양상들에서, 활성화 버퍼는, 다수의 버퍼 세그먼트들의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 다수의 버퍼 세그먼트들의 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함한다. 멀티플렉서는, 다수의 버퍼 세그먼트들 사이에서 데이터 시프트를 수행하기 위해, 다수의 입력 노드들 중, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하도록 구성될 수 있고, 그리고 활성화 버퍼는 추가로, 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋을 저장하도록 구성될 수 있다.
[0006] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법을 제공한다. 방법은 일반적으로, 컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 데이터 출력들로부터 제1 복수의 활성화 입력 신호들을 수신하는 단계를 포함하고, 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는다. 방법은 또한, 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계, 및 활성화 버퍼를 통해, 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅하는 단계를 포함하고, 데이터를 시프팅하는 단계는, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 멀티플렉서의 복수의 멀티플렉서 입력들 각각을 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 선택적으로 커플링하는 단계를 포함한다. 방법은 또한, 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 데이터 출력들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계; 및 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계를 포함할 수 있다.
[0007] 특정 양상들은 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법을 제공한다. 방법은 일반적으로, 컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 다수의 출력 노드들로부터 복수의 활성화 입력 신호들을 수신하는 단계를 포함하고, 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는다. 방법은 또한, 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계를 포함할 수 있고, 활성화 버퍼는, 다수의 버퍼 세그먼트들 상의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함한다. 방법은 또한, 활성화 버퍼의 멀티플렉서를 통해, 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 다수의 출력 노드들에 저장된 데이터를 시프팅하는 단계를 포함할 수 있고, 시프팅하는 단계는, 다수의 입력 노드들 중, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하는 단계, 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 다수의 출력 노드들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계, 및 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계를 포함한다.
[0008] 다른 양상들은, 전술된 방법들 뿐만 아니라 본원에 설명된 방법들을 수행하도록 구성된 프로세싱 시스템들; 및 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템로 하여금 전술된 방법들 뿐만 아니라 본원에 설명된 방법들을 수행하게 하는 명령들을 포함하는 비-일시적인 컴퓨터-판독가능 매체; 전술된 방법들 뿐만 아니라 본원에 추가로 설명된 방법들을 수행하기 위한 코드를 포함하는 컴퓨터 판독가능 저장 매체 상에 구현된 컴퓨터 프로그램 제품; 및 전술된 방법들 뿐만 아니라 본원에 추가로 설명된 방법들을 수행하기 위한 수단을 포함하는 프로세싱 시스템을 제공한다.
[0009] 다음의 설명 및 관련된 도면들은 하나 이상의 양상들의 특정 예시적인 특징들을 상세히 제시한다.
[0010] 첨부된 도면들은 본 개시내용의 일부 양상들을 묘사하며, 따라서 본 개시내용의 범위를 제한하는 것으로 간주되지 않아야 한다.
[0011] 도 1a 내지 도 1d는 다양한 타입들의 뉴럴 네트워크들의 예들을 묘사한다.
[0012] 도 2는 종래의 콘볼루션 연산(convolution operation)의 예를 묘사한다.
[0013] 도 3a 및 도 3b는 깊이별 분리가능 콘볼루션 연산들의 예들을 묘사한다.
[0014] 도 4는 머신 러닝 모델 컴퓨테이션들을 수행하도록 구성된 예시적인 CIM(computation in memory) 어레이를 예시한다.
[0015] 도 5는 본 개시내용의 특정 양상들에 따른, 데이터 재사용을 위한 회로부를 갖는 프로세싱 시스템을 예시한다.
[0016] 도 6은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0017] 도 7a 및 도 7b는 본 개시내용의 특정 양상들에 따른, 멀티플렉서를 사용하여 데이터 행들 사이에서 데이터의 시프트를 수행하도록 구성된 활성화 버퍼를 갖는 뉴럴 네트워크 시스템을 예시한다.
[0018] 도 8은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0019] 도 9a 및 도 9b는 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 예시적인 활성화 입력들을 예시한다.
[0020] 도 9c는 본 개시내용의 특정 양상들에 따른 패킹 변환 회로부(packing conversion circuitry)를 갖는 활성화 버퍼를 예시한다.
[0021] 도 10은 본 개시내용의 특정 양상들에 따른 예시적인 전자 디바이스를 예시한다.
[0022] 이해를 용이하게 하기 위해, 도면들에 대해 공통인 동일한 엘리먼트들을 지정하기 위해 가능한 경우 동일한 참조 번호들이 사용되었다. 일 실시예의 엘리먼트들 및 특징들이 추가적인 언급 없이 다른 실시예들에 유익하게 통합될 수 있는 것으로 고려된다.
[0011] 도 1a 내지 도 1d는 다양한 타입들의 뉴럴 네트워크들의 예들을 묘사한다.
[0012] 도 2는 종래의 콘볼루션 연산(convolution operation)의 예를 묘사한다.
[0013] 도 3a 및 도 3b는 깊이별 분리가능 콘볼루션 연산들의 예들을 묘사한다.
[0014] 도 4는 머신 러닝 모델 컴퓨테이션들을 수행하도록 구성된 예시적인 CIM(computation in memory) 어레이를 예시한다.
[0015] 도 5는 본 개시내용의 특정 양상들에 따른, 데이터 재사용을 위한 회로부를 갖는 프로세싱 시스템을 예시한다.
[0016] 도 6은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0017] 도 7a 및 도 7b는 본 개시내용의 특정 양상들에 따른, 멀티플렉서를 사용하여 데이터 행들 사이에서 데이터의 시프트를 수행하도록 구성된 활성화 버퍼를 갖는 뉴럴 네트워크 시스템을 예시한다.
[0018] 도 8은 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크에서의 신호 프로세싱을 위한 예시적인 동작들을 예시하는 흐름도이다.
[0019] 도 9a 및 도 9b는 본 개시내용의 특정 양상들에 따른, 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 예시적인 활성화 입력들을 예시한다.
[0020] 도 9c는 본 개시내용의 특정 양상들에 따른 패킹 변환 회로부(packing conversion circuitry)를 갖는 활성화 버퍼를 예시한다.
[0021] 도 10은 본 개시내용의 특정 양상들에 따른 예시적인 전자 디바이스를 예시한다.
[0022] 이해를 용이하게 하기 위해, 도면들에 대해 공통인 동일한 엘리먼트들을 지정하기 위해 가능한 경우 동일한 참조 번호들이 사용되었다. 일 실시예의 엘리먼트들 및 특징들이 추가적인 언급 없이 다른 실시예들에 유익하게 통합될 수 있는 것으로 고려된다.
[0023] 본 개시내용의 양상들은 활성화 버퍼에서의 데이터 재사용을 구현하기 위한 장치들 및 기법들을 제공한다. 예를 들어, 뉴럴 네트워크의 하나의 콘볼루션 윈도우 동안 프로세싱될 데이터는 뉴럴 네트워크의 다른 콘볼루션 윈도우 동안 프로세싱될 데이터와 공통일 수 있다. 활성화 버퍼는 프로세싱될 데이터를 저장하기 위해 사용될 수 있다. 본 개시내용의 일부 양상들에서, 활성화 버퍼는, 하나의 콘볼루션 윈도우 동안 프로세싱을 위해 활성화 버퍼에 이전에 저장된 동일한 데이터가 후속 콘볼루션 윈도우에 대해 재사용될 수 있도록, 활성화 버퍼에 저장된 데이터가 콘볼루션 윈도우들 사이에서 재조직화될 수 있게 할 수 있다.
[0024] 본원에서 설명되는 양상들은 데이터 재사용을 구현하지 않는 종래의 시스템들과 비교할 때 메모리 액세스 비용 및 전력을 감소시킨다. 데이터 재사용을 구현하는 것은 메모리 버스가 좁은 비트-폭(예를 들어, 일부 구현들에서, 32-비트 버스)으로 구현될 수 있게 하여, 뉴럴 네트워크 시스템의 전력 소비를 감소시킬 수 있다. 다시 말해서, 특정 구현들은 활성화 버퍼 내의 멀티플렉서들을 사용하여 데이터가 재사용(예를 들어, 재정렬)될 수 있게 하여, 상이한 순서의 데이터 입력들에 대한 신호 경로들이 필요하지 않을 수 있기 때문에 비교적 더 좁은 비트-폭이 구현될 수 있게 한다. 본 개시내용의 양상들은 또한, 본원에서 더 상세히 설명되는 바와 같이, 다양한 커널 사이즈들 및 모델 채널 카운트들을 구현하는 것을 가능하게 한다.
[0025] 본 개시내용의 일부 양상들은 CIM(compute-in-memory)-기반 ML(machine learning) 회로부를 위해 구현될 수 있다. CIM-기반 ML/AI(artificial intelligence) 태스크 가속기들은 이미지 및 오디오 프로세싱을 포함하는 매우 다양한 태스크들에 사용될 수 있다. 추가로, CIM은 다양한 타입들의 메모리 아키텍처, 이를테면 DRAM(dynamic random-access memory), SRAM(static random-access memory), MRAM(magnetoresistive random-access memory), 및 ReRAM(resistive random-access memory)에 기반할 수 있고, CPU(central processor unit)들, DSP(digital signal processor)들, GPU(graphical processor unit)들, FPGA(field-programmable gate array)들, AI 가속기들 및 다른 것들을 포함하는 다양한 타입들의 프로세싱 유닛들에 부착될 수 있다. 일반적으로, CIM은 유익하게, 메모리 안팎으로의 데이터의 이동이 데이터의 컴퓨테이션보다 더 많은 전력을 소비하는 경우인 "메모리 벽" 문제를 감소시킬 수 있다. 따라서, 메모리에서 컴퓨테이션을 수행함으로써, 상당한 전력 절감들이 실현될 수 있다. 이는 특히, 다양한 타입들의 전자 디바이스들, 이를테면, 저전력 에지 프로세싱 디바이스들, 모바일 디바이스들 등에 유용하다.
[0026] 예를 들어, 모바일 디바이스는 데이터 및 컴퓨트-인-메모리(compute-in-memory) 동작들을 저장하도록 구성된 메모리 디바이스를 포함할 수 있다. 모바일 디바이스는 모바일 디바이스에 의해 생성된 데이터, 이를테면 모바일 디바이스의 카메라 센서에 의해 생성된 이미지 데이터에 기반하여 ML/AI 동작을 수행하도록 구성될 수 있다. 따라서, 모바일 디바이스의 MCU(memory controller unit)는 다른 온-보드 메모리(예를 들어, 플래시 또는 RAM)로부터 메모리 디바이스의 CIM 어레이로 가중치들을 로딩하고, 입력 특징 버퍼들 및 출력(예를 들어, 활성화) 버퍼들을 할당할 수 있다. 그 다음, 프로세싱 디바이스는, 예를 들어, 입력 버퍼에 계층을 로딩하고 CIM 어레이로 로딩된 가중치들을 이용하여 계층을 프로세싱함으로써, 이미지 데이터의 프로세싱을 시작할 수 있다. 이러한 프로세싱은 이미지 데이터의 각각의 계층에 대해 반복될 수 있고, 출력(예를 들어, 활성화들)은 출력 버퍼들에 저장되고, 그 다음, ML/AI 태스크, 이를테면, 얼굴 인식을 위해 모바일 디바이스에 의해 사용될 수 있다.
뉴럴 네트워크들, 딥 뉴럴 네트워크들, 및 딥 러닝에 대한 간단한 배경
[0027] 뉴럴 네트워크들은 상호연결된 노드들의 계층들로 조직화된다(organized). 일반적으로, 노드(또는 뉴런)는 컴퓨테이션이 발생하는 곳이다. 예를 들어, 노드는, 입력 데이터를 증폭 또는 감쇠시키는 가중치들(또는 계수들)의 세트와 입력 데이터를 결합할 수 있다. 따라서, 입력 신호들의 증폭 또는 감쇠는 네트워크가 학습하려고 시도하는 태스크와 관련하여 다양한 입력들에 대한 상대적인 유의도(significance)들의 배정으로 간주될 수 있다. 일반적으로, 입력-가중치 곱들이 합산(또는 누산)되고, 그 다음, 그 신호가 네트워크를 통해 추가로 진행되어야 하는지 여부 및 그 신호가 네트워크를 통해 어느 정도까지 진행되어야 하는지를 결정하기 위해, 합이 노드의 활성화 함수를 통해 전달된다.
[0028] 가장 기본적인 구현에서, 뉴럴 네트워크는 입력 계층, 은닉 계층 및 출력 계층을 가질 수 있다. "딥(deep)" 뉴럴 네트워크들은 일반적으로, 하나 초과의 은닉 계층을 갖는다.
[0029] 딥 러닝은 딥 뉴럴 네트워크들을 트레이닝하는 방법이다. 일반적으로, 딥 러닝은, 네트워크에 대한 입력들을 네트워크로부터의 출력들에 매핑하고, 그에 따라, 딥 러닝이 임의의 입력 x와 임의의 출력 y 사이에서 미지 함수 f(x) = y를 근사화하도록 학습할 수 있기 때문에 때때로 "보편적 근사화기(universal approximator)"로 지칭된다. 다시 말해서, 딥 러닝은 x를 y로 트랜스포밍하기 위한 올바른 f를 발견한다.
[0030] 더 구체적으로, 딥 러닝은 이전 계층으로부터의 출력인 특징들의 별도의 세트에 기반하여 노드들의 각각의 계층을 트레이닝한다. 따라서, 딥 뉴럴 네트워크의 각각의 연속적인 층에 대해, 특징들은 더 복잡하게 된다. 따라서, 딥 러닝이, 각각의 계층에서 연속적으로 더 높은 추상화(abstraction) 레벨들로 입력들을 표현하도록 학습함으로써, 입력 데이터로부터 더 높은 레벨의 특징들을 점진적으로 추출하고 오브젝트 인식과 같은 복잡한 태스크들을 수행하여, 이로써 입력 데이터의 유용한 특징 표현을 구축할 수 있기 때문에, 딥 러닝은 강력하다.
[0031] 예를 들어, 시각 데이터로 제시되면, 딥 뉴럴 네트워크의 제1 계층은 입력 데이터에서 에지들과 같은 비교적 간단한 특징들을 인식하도록 학습할 수 있다. 다른 예에서, 청각 데이터로 제시되면, 딥 뉴럴 네트워크의 제1 계층은 입력 데이터에서 특정 주파수들의 스펙트럼 전력을 인식하도록 학습할 수 있다. 그 다음, 딥 뉴럴 네트워크의 제2 계층은 제1 계층의 출력에 기반하여, 시각 데이터에 대한 단순한 형상들 또는 청각 데이터에 대한 사운드들의 조합들과 같은 특징들의 조합들을 인식하도록 학습할 수 있다. 그 다음, 상위 계층들은 시각 데이터의 복잡한 형상들 또는 청각 데이터의 단어들을 인식하도록 학습할 수 있다. 더 상위 계층들은 공통 시각적 오브젝트들 또는 발화된 어구들을 인식하도록 학습할 수 있다. 따라서, 딥 러닝 아키텍처들은 자연스러운 계층적 구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수 있다.
뉴럴 네트워크들에서의 계층 연결성
[0032] 딥 뉴럴 네트워크들과 같은 뉴럴 네트워크들은 계층들 사이의 다양한 연결성 패턴들로 설계될 수 있다.
[0033] 도 1a는 완전 연결 뉴럴 네트워크(fully connected neural network)(102)의 예를 예시한다. 완전 연결 뉴럴 네트워크(102)에서, 제1 계층의 노드는 자신의 출력을 제2 계층의 매 노드에 통신하며, 따라서 제2 계층의 각각의 노드는 제1 계층의 매 노드로부터 입력을 수신할 것이다.
[0034] 도 1b는 로컬 연결 뉴럴 네트워크(104)의 예를 예시한다. 로컬 연결 뉴럴 네트워크(104)에서, 제1 계층의 노드는 제2 계층의 제한된 수의 노드들에 연결될 수 있다. 더 일반적으로, 로컬 연결 뉴럴 네트워크(104)의 로컬 연결 계층은, 계층의 각각의 노드가 동일하거나 유사한 연결성 패턴을 가질 것이지만, 상이한 값들(예를 들어, 110, 112, 114 및 116)을 가질 수 있는 연결 강도들(또는 가중치들)을 갖도록 구성될 수 있다. 로컬 연결 연결성 패턴은 상위 계층에서 공간적으로 별도의 수신 필드(receptive field)들을 발생시킬 수 있는데, 그 이유는 주어진 구역의 상위 계층 노드들이 네트워크에 대한 총 입력의 제약된 부분의 특성들로 트레이닝을 통해 튜닝되는 입력들을 수신할 수 있기 때문이다.
[0035] 로컬 연결 뉴럴 네트워크의 일 타입은 콘볼루셔널(convolutional) 뉴럴 네트워크이다. 도 1c는 콘볼루셔널 뉴럴 네트워크(106)의 예를 예시한다. 콘볼루셔널 뉴럴 네트워크(106)는 제2 계층의 각각의 노드에 대한 입력들과 연관된 연결 강도들이 공유되도록 구성될 수 있다(예를 들어, 108). 콘볼루셔널 뉴럴 네트워크들은 입력들의 공간적 위치가 의미있는 문제들에 매우 적합하다.
[0036] 콘볼루셔널 뉴럴 네트워크의 일 타입은 딥 콘볼루셔널 네트워크(DCN: deep convolutional network)이다. 딥 콘볼루셔널 네트워크들은, 예를 들어 풀링(pooling) 및 정규화 계층들로 추가로 구성될 수 있는 다수의 콘볼루셔널 계층들의 네트워크들이다.
[0037] 도 1d는 이미지 캡처 디바이스(130)에 의해 생성된 이미지(126)에서 시각적 특징들을 인식하도록 설계된 DCN(100)의 예를 예시한다. 예를 들어, 이미지 캡처 디바이스(130)가 차량에 장착된 카메라인 경우, DCN(100)은 교통 표지판 및 심지어 교통 표지판 상의 넘버를 식별하기 위해 다양한 지도(supervised) 학습 기법들로 트레이닝될 수 있다. DCN(100)은 마찬가지로, 차선 표시들을 식별하는 것 또는 신호등들을 식별하는 것과 같은 다른 태스크들을 위해 트레이닝될 수 있다. 이들은 단지 일부 예시적인 태스크들이며, 많은 다른 태스크들이 가능하다.
[0038] 이러한 예에서, DCN(100)은 특징 추출 섹션 및 분류 섹션을 포함한다. 이미지(126)를 수신할 시에, 콘볼루셔널 계층(132)은 제1 세트의 특징 맵들(또는 중간 활성화들)(118)을 생성하기 위해 (예를 들어, 도 2에 묘사되고 설명된 바와 같은) 콘볼루셔널 커널들을 이미지(126)에 적용한다. 일반적으로, "커널" 또는 "필터"는 입력 데이터 채널의 상이한 양상들을 강조하도록 설계된 가중치들의 다차원 어레이를 포함한다. 다양한 예들에서, "커널" 및 "필터"는 콘볼루셔널 뉴럴 네트워크에서 적용된 가중치들의 세트들을 지칭하기 위해 상호교환가능하게 사용될 수 있다.
[0039] 그 다음, 제1 세트의 특징 맵들(118)은 제2 세트의 특징 맵들(120)을 생성하기 위해 풀링 계층(예를 들어, 최대 풀링 계층(max pooling layer)(도시되지 않음)에 의해 서브샘플링될 수 있다. 풀링 계층은 모델 성능을 개선하기 위해 대부분의 정보를 유지하면서 제1 세트의 특징 맵들(118)의 사이즈를 감소시킬 수 있다. 예를 들어, 제2 세트의 특징 맵들(120)은 풀링 계층에 의해 28x28로부터 14x14로 다운-샘플링될 수 있다.
[0040] 이 프로세스는 많은 계층들을 통해 반복될 수 있다. 다시 말해서, 제2 세트의 특징 맵들(120)은 하나 이상의 후속 콘볼루셔널 계층들(도시되지 않음)을 통해 추가로 콘볼빙(convolve)되어, 하나 이상의 후속 세트들의 특징 맵들(도시되지 않음)을 생성할 수 있다.
[0041] 도 1d의 예에서, 제2 세트의 특징 맵들(120)은 완전 연결 계층(124)에 제공되고, 이는 차례로, 출력 특징 벡터(128)를 생성한다. 출력 특징 벡터(128)의 각각의 특징은 이미지(126)의 가능한 특징에 대응하는 수, 이를테면 "사인(sign)", "60" 및 "100"을 포함할 수 있다. 일부 경우들에서, 소프트맥스 함수(softmax function)(도시되지 않음)는 출력 특징 벡터(128)의 수들을 확률로 변환할 수 있다. 이러한 경우들에서, DCN(100)의 출력(122)은 이미지(126)가 하나 이상의 특징들을 포함할 확률이다.
[0042] 소프트맥스 함수(도시되지 않음)는 출력 특징 벡터(128)의 개별적인 엘리먼트들을, DCN(100)의 출력(122)이 입력 이미지(126)에서와 같이 그 위에 넘버들 "60"이 있는 사인과 같은 하나 이상의 특징들을 포함하는 이미지(126)의 하나 이상의 확률들이 되도록 하기 위한 확률로 변환할 수 있다. 따라서, 본 예에서, "사인" 및 "60"에 대한 출력(122)의 확률들은 "30", "40", "50", "70", "80", "90" 및 "100"과 같이 출력(122)의 다른 것들의 확률들보다 더 높아야 한다.
[0043] DCN(100)을 트레이닝하기 이전에, DCN(100)에 의해 생성된 출력(122)은 부정확할 수 있다. 따라서, 출력(122)과 선험적인 알려진 타깃 출력 사이의 에러가 계산될 수 있다. 예를 들어, 여기서 타깃 출력은 이미지(126)가 "사인" 및 넘버 "60"을 포함한다는 표시이다. 그 다음, 알려진 타깃 출력을 활용하여, DCN(100)의 후속 출력(122)이 타깃 출력을 달성하도록, DCN(100)의 가중치들이 트레이닝을 통해 조정될 수 있다.
[0044] DCN(100)의 가중치들을 조정하기 위해, 학습 알고리즘은 가중치들에 대한 기울기 벡터(gradient vector)를 컴퓨팅할 수 있다. 기울기는, 가중치가 특정 방식으로 조정된 경우 에러가 증가하거나 감소할 양을 표시할 수 있다. 그 다음, 가중치들은 에러를 감소시키도록 조정될 수 있다. 가중치들을 조정하는 이러한 방식은, 그것이 DCN(100)의 계층들을 통한 "역방향 전달(backward pass)"을 수반하기 때문에, "역전파(back propagation)"로 지칭될 수 있다.
[0045] 실제로, 가중치들의 에러 기울기는 적은 수의 예들에 걸쳐 계산될 수 있으며, 따라서 계산된 기울기는 실제 에러 기울기(true error gradient)에 근사한다. 이러한 근사화 방법은 확률적 기울기 하강(stochastic gradient descent)으로 지칭될 수 있다. 전체 시스템의 달성가능한 에러 레이트가 감소하기를 정지할 때까지 또는 에러 레이트가 타깃 레벨에 도달할 때까지 확률적 기울기 하강이 반복될 수 있다.
[0046] 트레이닝 후에, DCN(100)에는 새로운 이미지들이 제공될 수 있고, DCN(100)은 새로운 이미지에 다양한 특징들이 있을 확률들 또는 분류들과 같은 추론들을 생성할 수 있다.
콘볼루셔널 뉴럴 네트워크들에 대한 콘볼루션 기법들
[0047] 콘볼루션은 일반적으로, 입력 데이터 세트로부터 유용한 특징들을 추출하기 위해 사용된다. 예를 들어, 위에서 설명된 바와 같은 콘볼루셔널 뉴럴 네트워크들에서, 콘볼루션은, 트레이닝 동안 그 가중치들이 자동으로 학습되는 커널들 및/또는 필터들을 사용하여 상이한 특징들의 추출을 가능하게 한다. 그 다음, 추출된 특징들은 추론들을 수행하기 위해 결합된다.
[0048] 활성화 함수는 콘볼루셔널 뉴럴 네트워크의 각각의 계층 이전에 및/또는 이후에 적용될 수 있다. 활성화 함수들은 일반적으로, 뉴럴 네트워크의 노드의 출력을 결정하는 수학 함수들(예를 들어, 방정식들)이다. 따라서, 활성화 함수는, 노드의 입력이 모델의 예측과 관련이 있는지 여부에 기반하여, 노드가 정보를 전달해야 하는지 여부를 결정한다. 일 예에서, y = conv(x)(즉, y = x의 콘볼루션)인 경우, x 및 y 둘 모두는 일반적으로 "활성화들"로서 간주될 수 있다. 그러나, 특정 콘볼루션 연산의 관점에서, x는 또한, 특정 콘볼루션 이전에 존재하기 때문에 "사전-활성화들" 또는 "입력 활성화들"로 지칭될 수 있고, y는 출력 활성화들 또는 특징 맵으로 지칭될 수 있다.
[0049] 도 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 픽셀) 변경할 수 있다.
[0050] 콘볼루셔널 계층들을 포함하는 뉴럴 네트워크와 연관된 넘버 파라미터(number parameter)들 및 (예를 들어, FLOP(floating point operations per second)에서 측정된) 컴퓨테이셔널 부담을 감소시키기 위한 하나의 방식은 콘볼루션 계층들을 인수분해(factorize)하는 것이다. 예를 들어, 도 2에 묘사된 바와 같은 공간 분리가능 콘볼루션은 2 개의 컴포넌트들로 인수분해될 수 있다: (1) 각각의 공간 채널이 깊이별 콘볼루션에 의해 독립적으로 콘볼빙되는 깊이별 콘볼루션(예를 들어, 공간 융합); 및 (2) 모든 공간 채널들이 선형적으로 결합되는 포인트별 콘볼루션(pointwise convolution)(예를 들어, 채널 융합). 깊이별 분리가능 콘볼루션의 예들이 도 3a 및 도 3b에 묘사된다. 일반적으로, 공간 융합 동안, 네트워크는 공간 평면들로부터 특징들을 학습하고, 채널 융합 동안, 네트워크는 채널들에 걸쳐 이러한 특징들 사이의 관계들을 학습한다.
[0051] 일 예에서, 분리가능 깊이별 콘볼루션들은 공간 융합을 위한 3 × 3 커널들 및 채널 융합을 위한 1 × 1 커널들을 사용하여 구현될 수 있다. 특히, 채널 융합은 깊이 d의 입력 이미지에서 매 단일 포인트를 통해 반복되는 1 × 1 × d 커널을 사용할 수 있으며, 여기서 커널의 깊이 d는 일반적으로 입력 이미지의 채널들의 수와 매칭한다. 포인트별 콘볼루션을 통한 채널 융합은 효율적인 컴퓨테이션들을 위한 차원성 감소에 유용하다. 1 x 1 x d 커널들을 적용하고 커널 이후에 활성화 계층을 부가하는 것은 네트워크 부가 깊이를 제공할 수 있으며, 이는 네트워크의 성능을 증가시킬 수 있다.
[0052] 도 3a 및 도 3b는 깊이별 분리가능 콘볼루션 연산의 예를 묘사한다.
[0053] 특히, 도 3a에서, 12 픽셀 x 12 픽셀 x 3 채널 입력 이미지(302)는 각각이 5 x 5 x 1 차원성을 갖는 3 개의 별개의 커널들(304A-C)을 포함하는 필터로 콘볼빙되어, 8 픽셀 x 8 픽셀 x 3 채널의 특징 맵(306)을 생성하며, 여기서 각각의 채널은 304A-C 사이의 개별적인 커널에 의해 생성된다.
[0054] 그 다음, 특징 맵(306)은 8 픽셀 × 8 픽셀 × 1 채널의 특징 맵(310)을 생성하기 위해 커널(308)(예를 들어, 커널)이 차원성 1 × 1 × 3을 갖는 포인트별 콘볼루션 연산을 사용하여 추가로 콘볼빙된다. 이 예에 묘사된 바와 같이, 특징 맵(310)은 감소된 차원성(1 채널 대 3)을 가지며, 이는 특징 맵(310)을 이용한 더 효율적인 컴퓨테이션들을 가능하게 한다. 본 개시내용의 일부 양상들에서, 커널들(304A-C) 및 커널(308)은 본원에서 더 상세히 설명된 바와 같이, 동일한 CIM(computation-in-memory) 어레이를 사용하여 구현될 수 있다.
[0055] 도 3a 및 도 3b의 깊이별 분리가능 콘볼루션의 결과가 도 2의 종래의 콘볼루션과 실질적으로 유사하지만, 컴퓨테이션들의 수가 상당히 감소되고, 따라서 깊이별 분리가능 콘볼루션은 네트워크 설계가 허용하는 경우 상당한 효율 이득을 제공한다.
[0056] 도 3b에 묘사되지는 않았지만, 다수(예를 들어, m 개)의 포인트별 콘볼루션 커널들(308)(예를 들어, 필터의 개별적인 컴포넌트들)은 콘볼루션 출력의 채널 차원성을 증가시키기 위해 사용될 수 있다. 따라서, 예를 들어, m = 256 개의 1x1x3 커널들(308)이 생성될 수 있고, 이들 각각은 8 픽셀 x 8 픽셀 x 1 채널 특징 맵(예를 들어, 310)을 출력하고, 이러한 특징 맵들은 8 픽셀 x 8 픽셀 x 256 채널의 결과적인 특징 맵을 획득하기 위해 스택(stack)될 수 있다. 채널 차원성의 결과적인 증가는 트레이닝을 위한 더 많은 파라미터들을 제공하며, 이는 (예를 들어, 입력 이미지(302)에서) 특징들을 식별하는 콘볼루셔널 뉴럴 네트워크의 능력을 개선할 수 있다.
메모리에서의 콘볼루션 프로세싱의 예
[0057] 도 4는 CIM(compute-in-memory) 어레이(408)에 의해 구현되는 예시적인 콘볼루셔널 계층 아키텍처(400)를 묘사한다. 콘볼루셔널 계층 아키텍처(400)는 (예를 들어, 도 1d에 대해 위에서 설명된 바와 같이) 콘볼루셔널 뉴럴 네트워크의 일부일 수 있고, 다차원 데이터, 이를테면, 텐서 데이터를 프로세싱하도록 설계될 수 있다.
[0058] 묘사된 예에서, 콘볼루셔널 계층 아키텍처(400)에 대한 입력(402)은 38(높이) x 11(폭) x 1(깊이)의 차원들을 갖는다. 콘볼루셔널 계층의 출력(404)은 34x10x64 차원들을 가지며, 이는 콘볼루션 프로세스의 일부로서 적용된 필터 텐서(414)의 64 개의 커널들에 대응하는 64 개의 출력 채널들을 포함한다. 추가로, 이러한 예에서, 필터 텐서(414)의 64 개의 커널들의 각각의 커널(예를 들어, 예시적인 커널(412))은 5x2x1의 차원들을 갖는다(모두 함께, 필터 텐서(414)의 커널들은 하나의 5x2x64 필터와 동등하다).
[0059] 콘볼루션 프로세스 동안, 각각의 5x2x1 커널은 출력(404)의 하나의 34x10x1 계층을 생성하기 위해 입력(402)과 콘볼빙된다. 콘볼루션 동안, 필터 텐서(414)(5x2x64)의 640 개의 가중치들은 CIM(compute-in-memory) 어레이(408)에 저장될 수 있으며, 이 CIM(compute-in-memory) 어레이(408)는 이러한 예에서 각각의 커널에 대한 열(column)(즉, 64 개의 열들)을 포함한다. 그 다음, 5x2 수신 필드들(예를 들어, 수신 필드 입력(406)) 각각의 활성화들은 워드 라인들, 예를 들어 416을 사용하여 CIM 어레이(408)에 입력되고, 1x1x64 출력 텐서(예를 들어, 출력 텐서(410))를 생성하기 위해 대응하는 가중치들과 곱해진다. 출력 텐서들(404)은 입력(402)의 수신 필드들(예를 들어, 수신 필드 입력(406)) 전부에 대한 1x1x64의 개별적인 출력 텐서들의 누적을 표현한다. 단순화를 위해, 도 4의 CIM 어레이(408)는 CIM 어레이(408)의 입력 및 출력에 대한 몇몇 예시적인 라인들만을 도시한다.
[0060] 묘사된 예에서, CIM 어레이(408)는, CIM 어레이(408)가 수신 필드들(예를 들어, 수신 필드 입력(406))을 수신하는 워드라인들(416)뿐만 아니라 (CIM 어레이(408)의 열들에 대응하는) 비트라인들(418)을 포함한다. 묘사되지 않았지만, CIM 어레이(408)는 또한 PCWL(precharge wordline)들 및 RWL(read word line)들을 포함할 수 있다.
[0061] 이 예에서, 워드라인들(416)은 초기 가중치 정의에 사용된다. 그러나, 일단 초기 가중치 정의가 발생하면, 활성화 입력은 MAC 연산을 수행하기 위해 CIM 비트셀에서 특수하게 설계된 라인을 활성화한다. 따라서, 비트라인(418)과 워드라인(416)의 각각의 교차점은 필터 가중치 값을 표현하며, 이 필터 가중치 값은 워드라인(416)에 대한 입력 활성화와 곱해져 곱을 생성한다. 그 다음, 각각의 비트라인(418)에 따른 개별적인 곱들은 합산되어, 출력 텐서(410)의 대응하는 출력 값들을 생성한다. 합산된 값은 전하, 전류 또는 전압일 수 있다. 이 예에서, 콘볼루셔널 계층의 전체 입력(402)을 프로세싱한 이후의 출력 텐서(404)의 차원들은 34x10x64이지만, CIM 어레이(408)에 의해 64 개의 필터 출력들만이 한번에 생성된다. 따라서, 전체 입력(402)의 프로세싱은 34x10 또는 340 사이클들에서 완료될 수 있다.
활성화 버퍼의 각각의 행 상에서 멀티플렉서를 사용하는 데이터 재사용 아키텍처
[0062] 곱셈 및 누산(MAC: multiply and accumulate) 컴퓨테이션들은 딥 뉴럴 네트워크(DNN: deep neural network)들의 프로세싱을 포함하는 머신 러닝 프로세싱에서 빈번한 연산이다. 딥 뉴럴 네트워크 모델을 프로세싱할 때, 각각의 계층의 출력의 컴퓨테이션에서 많은 곱셈 및 누산들이 수행될 수 있다. 하드웨어 MAC 엔진 사이즈가 증가함에 따라, SRAM(static random access memory)와 같은 호스트 프로세싱 시스템 메모리로부터 MAC 엔진으로 입력 활성화 데이터를 전송하는 데 필요한 메모리 대역폭은 상당한 효율 고려사항이 된다.
[0063] CIM(compute-in-memory)은 대규모 병렬 MAC 엔진을 지원할 수 있다. 예를 들어, 1024 x 256 CIM 어레이는 256,000 개 초과의 1-비트 MAC 연산들을 병렬로 수행하여, 메모리 대역폭 문제를 CIM과 특히 관련되게 할 수 있다. 본 개시내용의 특정 양상들은, 머신 러닝 모델을 프로세싱하는 전력 소비를 유리하게 감소시키기 위해, 머신 러닝 동작들에 걸쳐, 이를테면 콘볼루션 윈도우들에 걸쳐 활성화 버퍼에 저장된 데이터의 재사용을 가능하게 하는 활성화 버퍼 아키텍처들에 관한 것이다.
[0064] 어떠한 데이터 재사용도 없이, CIM 어레이(1024 x 256 CIM 어레이)마다 그리고 MAC 어레이 컴퓨테이션마다 1K 바이트의 입력 활성화 데이터가 요구되어, 머신 러닝 모델의 성능이 제한될 수 있다. 본 개시내용의 특정 양상들은, 모델 프로세싱에서의 순환(recurrent) 동작들에 기반하여 입력 데이터를 재조직화함으로써, 이를테면 딥 뉴럴 네트워크 모델에 대한 머신 러닝 모델 MAC 컴퓨테이션들에서의 데이터-재사용을 위한 기법들을 제공한다. 예를 들어, 이전 데이터가 재사용될 수 있는 방식으로 콘볼루션 윈도우가 스트라이드될 때, 데이터는 재사용될 수 있으며, 이는 작은 스트라이드 세팅들에서 빈번하다. 따라서, 예를 들어, MAC 연산은 콘볼루션 윈도우 내에 뉴럴 네트워크 상에서 수행될 수 있다. 후속 콘볼루션 윈도우의 경우, 입력 데이터의 일부는 이전 콘볼루션 윈도우와 공통이지만, 단지 상이한 가중치들과 곱해질 수 있다. 활성화 버퍼에서의 데이터의 재조직화는 프리로딩된 데이터가 콘볼루션 윈도우들에 걸쳐 재사용될 수 있게 하여, 그에 따라, 프로세싱 효율을 개선하고, 필요한 메모리 대역폭을 감소시키고, 프로세싱 시간 및 프로세싱 전력을 절약하는 등을 한다.
[0065] 도 5는 본 개시내용의 특정 양상들에 따른, 데이터 재사용을 위한 회로부를 갖는 프로세싱 시스템(500)의 양상들을 예시한다. 예시된 바와 같이, 프로세싱 시스템(500)은 DMAC(digital multiply and accumulate) 회로(506)에 데이터 입력들을 제공하기 위해 (예를 들어, 활성화 버퍼 어드레스(Abuf_addr) 및 활성화 버퍼 데이터(Abuf_data)를 통해) 활성화 버퍼(504)를 제어하기 위한 DMA(direct memory access) 회로(502)를 포함할 수 있다. 예를 들어, 활성화 버퍼(504)는 DMAC 회로(506)(컴퓨테이션 회로부로 또한 지칭됨)에 입력될 (버퍼) 데이터를 저장할 수 있다. 즉, 활성화 버퍼(504)는 행들(a1 내지 am)(예를 들어, D 플립-플롭(flip-flop)들)(컴퓨테이션 회로부에 대한 입력 행들로 또한 지칭됨) 각각에 대한 플립-플롭들(5301 내지 530m)을 포함할 수 있으며, 이는 개개의 행 상에서 DMAC 회로(506)에 입력될 데이터를 저장하기 위해 사용될 수 있다. 예시된 바와 같이, 뉴럴 네트워크 시스템은 또한, DMA(502), 활성화 버퍼(504) 및 DMAC 회로(506)를 위한 명령 레지스터들 및 디코더 회로부(508)를 포함할 수 있다.
[0066] 도시된 바와 같이, 프로세싱 시스템(500)은 DMAC 및 CIM 구현들 둘 모두에 대한 이해를 용이하게 하기 위해 DMAC 회로 및 CIM 회로 둘 모두를 포함하지만, 본원에서 설명되는 양상들은 DMAC 회로 또는 CIM 회로를 갖는 프로세싱 시스템들에 적용될 수 있다. 일부 양상들에서, 유사한 아키텍처가 CIM 회로(511)에 사용될 수 있다. 예를 들어, 프로세싱 시스템(500)은 데이터 입력들을 CIM 회로(511)(컴퓨테이션 회로부로 또한 지칭됨)에 제공하기 위해 활성화 버퍼(514)를 제어하기 위한 DMA 회로(513)를 포함할 수 있다. 활성화 버퍼(514)는 CIM 회로(511)에 입력될(버퍼) 데이터를 저장할 수 있다. 즉, 활성화 버퍼(514)는 CIM 회로(511)에 입력될 데이터를 저장하기 위해 사용될 수 있는 행들(a0 내지 an) 각각 상에 플립-플롭(5241 내지 524n)(예를 들어, D 플립-플롭들)을 포함할 수 있으며, n은 양의 정수(예를 들어, 1023)이다. 뉴럴 네트워크 시스템은 또한, DMA(513), 활성화 버퍼(514) 및 CIM 회로(511)를 위한 명령 레지스터들 및 디코더 회로부(516)를 포함할 수 있다.
[0067] 활성화 버퍼들(504, 514) 각각은, 이를테면 콘볼루셔널 뉴럴 네트워크 모델의 콘볼루션 윈도우에 대해 머신 러닝 학습 모델을 프로세싱하는 것의 일부로서 MAC 연산이 수행된 후에 데이터의 재조직화를 허용함으로써 데이터 재사용을 가능하게 하도록 구현될 수 있다. 예를 들어, 활성화 버퍼(504)는 데이터 출력들(5101 내지 510m)(Do1 내지 Dom)(총괄적으로 데이터 출력들(510)로 지칭됨)이 재조직화될 수 있게 할 수 있다. 유사하게, 활성화 버퍼(514)는 데이터 출력들(5121 내지 512n)(Do1 내지 Don)(총괄적으로 데이터 출력들(512)로 지칭됨)이 재조직화될 수 있게 할 수 있다. 데이터 출력들(510, 512) 각각은 데이터의 바이트를 저장하기 위한 8 개의 비트-라인들을 포함할 수 있다.
[0068] 활성화 버퍼들(504, 514) 각각은 본원에서 설명되는 데이터 재사용을 가능하게 하기 위해 멀티플렉서들을 포함할 수 있다. 예를 들어, 활성화 버퍼(504)는 멀티플렉서들(5321 내지 532m)을 포함할 수 있고, 활성화 버퍼(514)는 멀티플렉서들(5221 내지 522n)을 포함할 수 있으며, 여기서 n 및 m은 1보다 큰 정수들이다. 데이터 재사용을 가능하게 하기 위해, 활성화 버퍼의 각각의 멀티플렉서의 입력들은 활성화 버퍼의 다른 멀티플렉서의 출력(예를 들어, 다른 멀티플렉서의 출력에 커플링된 플립-플롭의 출력)에 커플링될 수 있다. 예를 들어, 활성화 버퍼(514)는 개개의 플립-플롭들(5241 내지 524n)에 커플링된 출력들을 갖는 멀티플렉서들(5221 내지 522n)(총괄적으로 멀티플렉서들(522)로 지칭됨)을 포함할 수 있다. 예시된 바와 같이, 멀티플렉서들(522)의 각각의 입력은 데이터 출력들(512) 중 하나에 커플링되어, 멀티플렉서들(522)을 제어함으로써 데이터의 재조직화를 가능하게 할 수 있다. 예를 들어, 예시된 바와 같이, 멀티플렉서(522n)의 입력들은 데이터 출력들(Don-1 및 Don+1, Don-4, Don+4, Don-8, Don+8)에 커플링되어, 1 개, 4 개 및 8 개의 행들만큼의 데이터 출력들의 시프팅을 가능하게 할 수 있다. 예를 들어, 멀티플렉서(5220)의 입력들은 데이터 출력들(5122, 5125, 5129)(Do2, Do5, Do9)에 커플링될 수 있고, 멀티플렉서(5228)의 입력들은 데이터 출력들(5127, 5129, 5124, 51212, 5120, 51216)(Do7, Do9, Do4, Do12, Do0, Do16)에 커플링될 수 있는 등이다.
[0069] 멀티플렉서(5221)가 멀티플렉서들(522) 중 제1 멀티플렉서(예를 들어, 최상부 또는 초기 행(a0)에 대한 멀티플렉서)이기 때문에, 멀티플렉서(5221)의 일부 입력들(NC(no connect)로 라벨링됨)은 어떠한 데이터 출력들에도 연결되지 않을 수 있다. NC로 라벨링된 입력들은 접지될 수 있다. 게다가, 행(an)이 활성화 버퍼(514)의 마지막 행이면(예를 들어, 활성화 버퍼가 1024 개의 행들을 갖고, n이 1024와 동일하면), 데이터 출력들(Don+1, Don+4, Don+8)은 NC일 수 있다. 유사하게, 행(am)이 활성화 버퍼(504)의 마지막 행이면(예를 들어, 활성화 버퍼(504)가 9 개의 행들을 갖고, m이 9와 동일하면), 멀티플렉서(532m)의 일부 입력들은 NC일 수 있다. 멀티플렉서들(532, 522) 각각의 입력(Din으로 라벨링됨)은 활성화 버퍼에 저장될 새로운 데이터의 수신을 위해 구성될 수 있다.
[0070] 일부 양상들에서, 각각의 데이터 출력에 저장된 데이터의 바이트의 각각의 비트는 DMAC 회로 또는 CIM 회로에 의해 개별적으로 프로세싱될 수 있다. 예를 들어, 예시된 바와 같이, 활성화 버퍼들(504)은, 선택 신호(sel_bit)에 기반하여, 프로세싱을 위해 DMAC 회로(506)에 입력될 데이터 출력들(510)의 개개의 데이터 출력(510) 상에 저장된 데이터의 바이트의 각각의 비트를 선택하도록 구성된 멀티플렉서들(5381 내지 538m)을 포함할 수 있다. 유사하게, 활성화 버퍼들(514)은, 선택 신호(sel_bit)에 기반하여, 프로세싱을 위해 CIM 회로(511)에 입력될 데이터 출력들(512)의 개개의 데이터 출력(512) 상에 저장된 데이터의 바이트의 각각의 비트를 선택하도록 구성된 멀티플렉서들(5401 내지 540n)(총괄적으로 멀티플렉서들(540)로 지칭됨)을 포함할 수 있다.
[0071] 데이터 재사용을 구현하기 위해 데이터 출력들에서 데이터 신호들을 재조직화하는 것은, 설명된 바와 같이, 데이터 출력들(510, 512)에서의 데이터 신호들이 시프팅되는(예를 들어, 1 개, 2 개, 4 개, 8 개, 또는 16 개(또는 그 초과)의 행들만큼 시프팅되는) 것을 수반할 수 있다. 예를 들어, 제1 콘볼루션 윈도우 동안 데이터 출력(5121)에서의 디지털 신호는 후속 콘볼루션 윈도우 동안 데이터 출력(5128)에 제공되어 데이터 출력(5128)에 저장될 수 있다. 다시 말해서, 데이터는 단일 로그-스텝 시프트-레지스터로서 조직화될 수 있으며, 여기서 행-데이터는, 로그-스텝 함수(예를 들어, 로그 함수)를 따르는 행들의 수량만큼 단일 사이클에서 위 또는 아래로 시프팅될 수 있다.
데이터 재사용을 위한 예시적인 신호 프로세싱 흐름
[0072] 도 6은 본 개시내용의 특정 양상들에 따른, 딥 뉴럴 네트워크 모델과 같은 머신 러닝 모델에서의 신호 프로세싱을 위한 예시적인 동작들(600)을 예시하는 흐름도이다. 동작들(600)은 프로세싱 시스템, 이를테면, 도 5에 대해 설명된 바와 같은 프로세싱 시스템(500)에 의해 수행될 수 있다.
[0073] 동작들(600)은 블록(605)에서, 프로세싱 시스템이, 컴퓨테이션 회로부의 다수의 입력 행들(예를 들어, 도 5의 행들(a1 내지 an))에서, 활성화 버퍼(예를 들어, 도 5의 활성화 버퍼(514))의 데이터 출력들(예를 들어, 도 5의 데이터 출력들(512))로부터 제1 복수의 활성화 입력 신호들을 수신하는 것으로 시작한다. 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 포함할 수 있다.
[0074] 블록(610)에서, 프로세싱 시스템은, 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행할 수 있다.
[0075] 블록(615)에서, 프로세싱 시스템은, 활성화 버퍼를 통해, 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅할 수 있다. 예를 들어, 데이터를 시프팅하는 것은, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 멀티플렉서(예를 들어, 도 5의 멀티플렉서들(522) 각각)의 복수의 멀티플렉서 입력들 각각을 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 선택적으로 커플링하는 것을 포함할 수 있다.
[0076] 블록(620)에서, 프로세싱 시스템은, 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 데이터 출력들로부터 제2 복수의 활성화 입력 신호들을 수신할 수 있다.
[0077] 블록(625)에서, 프로세싱 시스템은, 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행할 수 있다.
[0078] 일부 양상들에서, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 및 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트는 일정 수량의 버퍼 세그먼트들에 의해 분리될 수 있다. 버퍼 세그먼트들의 수량은 본원에서 설명되는 바와 같이 로그-스텝 함수에 따를 수 있다.
[0079] 일부 양상들에서, 선택적으로 커플링하는 것은, 블록(615)에서, 다수의 버퍼 세그먼트들 상의 복수의 멀티플렉서 입력들 중 제1 멀티플렉서 입력(예를 들어, Do7에 커플링된 멀티플렉서(5228)의 입력(예를 들어, 데이터 출력(5127)))을 다수의 버퍼 세그먼트들 중 제2 버퍼 세그먼트(예를 들어, 도 5의 행(a7)) 상의 활성화 버퍼의 데이터 출력(예를 들어, 도 5의 데이터 출력(Do7))에 커플링하는 것, 및 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제2 멀티플렉서 입력(예를 들어, Do9에 커플링된 멀티플렉서(5228)의 입력(예를 들어, 데이터 출력(5129)))을 다수의 버퍼 세그먼트들 중 제3 버퍼 세그먼트(예를 들어, 도 5의 행(a9)) 상의 활성화 버퍼의 데이터 출력에 커플링하는 것을 포함할 수 있다. 일부 양상들에서, 제1 버퍼 세그먼트 및 제2 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제1 수량의 버퍼 세그먼트들에 의해 분리되고, 제1 버퍼 세그먼트 및 제3 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제1 수량의 버퍼 세그먼트들에 의해 분리된다. 제1 수량은 로그-스텝 함수를 따를 수 있다. 예를 들어, 제1 수량은 1, 2, 4, 8, 16 등일 수 있다.
활성화 버퍼의 행들에 대해 멀티플렉서를 사용하는 데이터 재사용 아키텍처
[0080] 본 개시내용의 특정 양상들은 활성화 버퍼의 행들 사이에서 데이터를 시프팅 업 또는 다운하기 위한 멀티플렉서 회로를 사용하여 구현된 데이터 재사용 아키텍처를 제공한다. 도 7a 및 도 7b에 대해 더 상세히 설명되는 바와 같이, 멀티플렉서에 의해 현재 활성인 데이터 시프트들의 수량을 추적하기 위해 버퍼 오프셋 표시자가 저장될 수 있다.
[0081] 도 7a 및 도 7b는 본 개시내용의 특정 양상들에 따른, 멀티플렉서 어레이(702)를 사용하여 데이터 행들 사이에서 데이터의 시프트들을 수행하도록 구성된 활성화 버퍼(701)를 갖는 프로세싱 시스템(700)을 예시한다. 도 7a에 예시된 바와 같이, 활성화 버퍼(701)는 다수의 버퍼 행들(예를 들어, "버퍼 세그먼트들"로 또한 지칭되는 버퍼 행들(0-1023))을 포함할 수 있다. 도시된 바와 같이, 활성화 버퍼(701)의 버퍼 행들(예를 들어, 버퍼 세그먼트들) 각각은 본원에서 입력 행 또는 입력 노드로 지칭되는, 멀티플렉서 어레이(702)의 입력 측에 있는 행을 포함하고, 본원에서 출력 행 또는 출력 노드로 지칭되는, 멀티플렉서 어레이(702)의 출력 측에 있는 행을 포함할 수 있다.
[0082] 멀티플렉서 어레이(702)는 버퍼 오프셋(buf_offset) 표시자에 기반하여 입력 행들(1-1024) 각각을 출력 행들(1-1024) 중 하나에 선택적으로 커플링할 수 있다. 예를 들어, 멀티플렉서 어레이(702)는 하나의 행의 시프트 업을 효과적으로 구현하기 위해 입력 행들(1-1023)을 입력 행들(2-1024)에 각각 커플링할 수 있다. 예시된 바와 같이, 각각의 행은 컴퓨테이션 회로부(720)(예를 들어, CIM 또는 DMAC 회로부)에 입력들을 제공하기 위한 저장 및 프로세싱 회로부(7501 내지 7501024)(총괄적으로 저장 및 프로세싱 회로부(750)로 지칭됨)를 포함할 수 있다. 예를 들어, 저장 및 프로세싱 회로부(750) 각각은 플립-플롭(예를 들어, 플립-플롭들(524)에 대응함) 뿐만 아니라 멀티플렉서(예를 들어, 멀티플렉서들(540)에 대응함)를 포함할 수 있다.
[0083] 멀티플렉서 어레이(702)는 도 7b에 대해 더 상세히 설명되는 바와 같이, 다양한 구성들을 구현하도록 구성될 수 있다. 예를 들어, 구성(710)에서, 입력 행들(704)(예를 들어, 도 7a에 도시된 입력 행들(1-1024))에서의 신호들은 1 행만큼 시프팅 다운될 수 있다. 다시 말해서, 입력 행들(704)의 행 2(입력 행 2로 라벨링됨)의 신호는 출력 행들(708)의 행 1(출력 행 1로 라벨링됨)에 전기적으로 커플링될 수 있다. 다시 말해서, 예시된 바와 같이, 출력 행 1은 입력 행 2의 신호를 포함할 수 있다. 따라서, 구성(710)의 경우, 버퍼 오프셋 표시자는 +1의 값을 가질 수 있으며, 이는 입력 행들(704)의 활성화 버퍼들에 저장된 데이터가 출력 행들(708)에 저장된 데이터로부터 포지티브 1 행만큼 오프셋됨을 표시한다.
[0084] 도 7b에 묘사된 바와 같은 구성(712)에서, 입력 행들(704)의 데이터는 2 개의 행들만큼 위로 시프팅될 수 있다. 따라서, 구성(712)의 경우, 버퍼 오프셋 표시자는 네거티브 2의 값을 가질 수 있으며, 이는 입력 행들(704)의 활성화 버퍼들에 저장된 값들이 출력 행들(708)에 저장된 데이터로부터 네거티브 2 행들만큼 오프셋됨을 표시한다.
[0085] 일부 양상들에서, 활성화 버퍼의 출력 행에 저장된 데이터가 데이터 시프트로 인해 0이 되어야 하는지 여부를 표시하는 마스크 비트(mask bit)가 입력 행들 각각에 대해 저장될 수 있다. 다시 말해서, 예시된 바와 같이, 구성(710)의 경우, 행들의 단일 시프트 업이 있으면, 입력 행들(704)의 최상부 행(행 1)은 출력 행들(708)의 최하부 행(예를 들어, 행(1024))에 커플링될 수 있다. 게다가, 입력 행 1이 초기 행(최상부 행)이기 때문에, 입력 행 1에 대한 마스크 비트는 0으로 세팅될 수 있으며, 이는 입력 행 1의 데이터가 0이 됨을 표시한다. 다시 말해서, 블록(714)에 의해 도시된 바와 같이, 출력 행(1024)은 0으로 세팅된 마스크 비트로 입력 행 1에 커플링될 수 있으며, 이는 출력 행(1024) 상의 데이터가 0이 됨을 표시한다. 마스크 비트는 임의의 행들이 최상부 행 임계치에 걸쳐 시프트되었는지 또는 최하부 행 임계치에 걸쳐 시프트되었는지를 추적하여, 이러한 행들에 0 값이 세팅되게 한다.
[0086] 예를 들어, 초기 버퍼 행(행 1)이 하나의 콘볼루션 윈도우 이후 하향으로 시프팅된 다음, 후속 콘볼루션 윈도우 이후 상향으로 시프팅되면, 행 1의 데이터는 대응하는 마스크 비트에 의해 추적되는 바와 같이 0의 데이터 값을 가져야 한다. 유사하게, 최종 버퍼 행(행(1024))이 상향으로 한 번 시프팅된 다음, 하향으로 한 번 시프팅되면, 최종 버퍼 행(행(1024))의 데이터는 대응하는 마스크 비트에 의해 추적되는 바와 같이 0의 데이터 값을 가져야 한다. 따라서, 마스크 비트는, 특정 버퍼 행(예를 들어, 행 1)이 행 임계치에 걸쳐 시프팅되었는지 여부 및 행 임계치에 걸친 시프트로 인해 데이터 값이 0 값을 가져야 하는지 여부를 추적한다.
[0087] 도 8은 본 개시내용의 특정 양상들에 따른, 딥 뉴럴 네트워크 모델과 같은 머신 러닝 모델에서의 신호 프로세싱을 위한 예시적인 동작들(800)을 예시하는 흐름도이다. 동작들(800)은 프로세싱 시스템, 이를테면, 도 7a 및 도 7b에 대해 설명된 프로세싱 시스템(700)에 의해 수행될 수 있다.
[0088] 동작들(800)은, 블록(805)에서, 프로세싱 시스템이, 컴퓨테이션 회로부(예를 들어, 컴퓨테이션 회로부(720))의 다수의 입력 행들(예를 들어, 도 7a에 도시된 행들(a1 - a1024))에서, 활성화 버퍼(예를 들어, 활성화 버퍼(701))의 다수의 출력 노드들(예를 들어, 출력 행들(708))로부터 복수의 활성화 입력 신호들을 수신하는 것으로 시작한다. 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 포함할 수 있다.
[0089] 블록(810)에서, 프로세싱 시스템은, 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행할 수 있다. 일부 양상들에서, 활성화 버퍼는 다수의 버퍼 세그먼트들 상의 (예를 들어, 입력 행들(704)에서) 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서(예를 들어, 멀티플렉서 어레이(702))를 포함할 수 있다.
[0090] 블록(815)에서, 프로세싱 시스템은, 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋(예를 들어, buf_offset 표시자)에 기반하여 다수의 출력 노드들에 저장된 데이터를 활성화 버퍼의 멀티플렉서를 통해 시프팅할 수 있다. 블록(815)에서의 시프팅은, 다수의 입력 노드들 중, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드(예를 들어, 도 7a의 입력 행 1)를 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나(예를 들어, 도 7a의 출력 행 0)에 선택적으로 커플링하는 것을 포함할 수 있다.
[0091] 블록(820)에서, 프로세싱 시스템은, 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 다수의 출력 노드들로부터 제2 복수의 활성화 입력 신호들을 수신할 수 있다.
[0092] 블록(825)에서, 뉴럴 네트워크 시스템은, 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행할 수 있다.
[0093] 일부 양상들에서, 뉴럴 네트워크 시스템은 또한, 다수의 버퍼 세그먼트들의 각각의 버퍼 세그먼트에 대한 마스크 비트를 저장할 수 있다. 마스크 비트는 버퍼 세그먼트와 연관된 데이터 값이 데이터 시프트 후에 0이 되어야 하는지 여부를 표시할 수 있다.
[0094] 일부 양상들에서, 블록(815)에서, 시프팅하는 것은, 멀티플렉서를 통해, 다수의 버퍼 세그먼트들 사이에 적용될 데이터 시프트들의 수량의 표시를 수신하는 것, 및 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 데이터 시프트들의 수량을 적용하기 위해 다수의 입력 노드들 각각(예를 들어, 도 7a의 입력 행 2)을 다수의 출력 노드들 중 하나(예를 들어, 도 7a의 출력 행 1)에 선택적으로 커플링하는 것을 포함할 수 있다.
데이터 재사용을 가능하게 하는 예시적인 데이터 재조직화
[0095] 본원에서 설명되는 바와 같이, MAC 연산은 뉴럴 네트워크 모델과 같은 머신 러닝 모델을 프로세싱하는 것의 일부로서 수행될 수 있다. 일 예에서, 제1 콘볼루션 윈도우가 프로세싱된 후에 제2 후속 콘볼루션 윈도우가 프로세싱될 수 있다. 후속 콘볼루션 윈도우에 대해 프로세싱된 입력 데이터(예를 들어, 입력 데이터 패치)는, 이를테면, 콘볼루션 윈도우들 사이에 작은 스트라이드가 사용되는 경우, 이전 콘볼루션 윈도우에 대해 프로세싱된 데이터와 상당히 중첩될 수 있다. 이 예에서 콘볼루션 윈도우들에 걸친 데이터 사이의 공통성은 활성화 버퍼 내에서의 데이터 재사용을 가능하게 한다. 콘볼루션 윈도우들에 걸친 데이터의 이러한 공통성은 도 9a 및 도 9b에 대해 설명된 방식으로 입력 데이터를 조직화함으로써 가능하게 될 수 있다.
[0096] 도 9a 및 도 9b는 본 개시내용의 특정 양상들에 따른, 모델 입력의 x 및 y 차원들과 연관된 예시적인 입력 데이터를 예시한다. 도 9a에 예시된 바와 같이, 입력 프레임(904)의 사이즈는 x 차원에서 124이고 y 차원에서 40일 수 있다. 게다가, 도 9a에 도시되지 않았지만, 입력 프레임 사이즈는 z 차원에 대해 3 개의 채널들을 가질 수 있다.
[0097] 콘볼루션 커널(예를 들어, 커널(902))의 사이즈는 x 차원에서 21이고 y 차원에서 9일 수 있다. 따라서, MAC 연산은 21 x 8의 사이즈를 갖는 커널 상에서 수행될 수 있다. MAC 연산을 수행하기 위해, 커널은 활성화 버퍼(예를 들어, 도 5의 활성화 버퍼(504, 514) 또는 도 7a의 활성화 버퍼(701))에 저장될 수 있다. 일부 양상들에서, 데이터는 먼저 y 방향으로 저장될 수 있다. 예를 들어, X21까지(예를 들어, 마지막 세트의 데이터(910)가 X21에 대한 Y1 내지 Y8에 대한 데이터를 가질 때까지), 제1 세트의 데이터(906)는 X1에 대한 Y1 내지 Y8에 대한 데이터를 포함할 수 있고, 제2 세트의 데이터(908)는 X2에 대한 Y1 내지 Y8에 대한 데이터를 포함할 수 있는 등이다. 이러한 프로세스는 3 개의 채널들 각각에 대해 수행될 수 있다. 따라서, 총 21 x 8 x 3 바이트들의 데이터가 커널(902)에 대한 활성화 버퍼에 저장될 수 있다.
[0098] 데이터가 활성화 버퍼에 저장되고 MAC 연산이 수행된 후에, 스트라이드가 1과 동일하면, 콘볼루션 윈도우는 x 차원에서 단일 유닛만큼 입력 프레임(904) 내에서 우측으로 슬라이딩할 수 있다. 스트라이드는 일반적으로, 각각의 콘볼루션 연산 후에 콘볼루션 윈도우가 슬라이딩할 수 있는 차원 유닛들의 수를 지칭한다. 따라서, X1 차원 데이터(예를 들어, 제1 세트의 데이터(906))는 폐기될 수 있다. X2 내지 X21 차원 데이터(예를 들어, 제2 세트의 데이터(908) 내지 마지막 세트의 데이터(910))는 8 개의 행들만큼 시프팅 업될 수 있다.
[0099] 예를 들어, 제2 세트의 데이터(908)는 화살표(912)로 도시된 바와 같이 8 개의 행들만큼 시프팅 업될 수 있고, 따라서 제2 세트의 데이터(908)는 이제, 행들 1-8과 연관된 가중치들(예를 들어, 행들 1-8 상의 CIM 셀에 저장됨)로 곱해진다. 이러한 방식으로, x 차원 및 y 차원 데이터는 활성화 버퍼에서 함께 패킹될 수 있는 한편, z 차원 데이터는 정적 SRAM과 같은 다른 메모리에 함께 패킹될 수 있다.
[0100] 도 9c는 본 개시내용의 특정 양상들에 따른 패킹 변환 회로부(982)를 갖는 활성화 버퍼를 예시한다. 일부 구현들에서, 콘볼루션 입력들은 Z 차원 패킹을 사용하여 메모리(예를 들어, SRAM(980))에 저장될 수 있다. 다시 말해서, Z 차원 데이터는 SRAM(980)에 함께 저장될 수 있다.
[0101] 활성화 버퍼에 x 차원 및 y 차원 데이터를 패킹하는 것은, 설명된 바와 같이, 데이터가 상이한 콘볼루션 윈도우들에 걸쳐 재사용되는 것을 가능하게 한다. 예시된 바와 같이, 활성화 버퍼는 z 차원 패킹된 데이터를 x/y-차원 패킹된 데이터로 변환하는 패킹 변환 회로부를 포함할 수 있다. 예를 들어, 활성화 버퍼(514)는, 도 9a에 대해 설명된 바와 같이, SRAM(980)에 저장된 z 차원 데이터를 언패킹하고, 후속하여, x/y 차원 데이터가 함께 있도록 데이터를 패킹하는 패킹 변환 회로부(982)를 포함할 수 있다. x/y 차원 패킹된 데이터는, 도 5에 대해 설명된 바와 같이, 활성화 버퍼에 저장되도록 멀티플렉서들(예를 들어, 멀티플렉서들(522))의 Din 입력들에 제공될 수 있다.
[0102] SRAM에서의 Z 차원 패킹은 효율적인 연속 판독들을 가능하게 하는 한편, 활성화 버퍼에서의 x/y 차원 패킹은 로그-스텝 시프트와 함께 임의의 커널/스트라이드 사이즈 지원을 가능하게 한다. 다시 말해서, 본원에서 설명되는 예시적인 활성화 버퍼들에 의해 가능하게 되는 바와 같이, 도 9a에 대해 설명된 예시적인 커널 사이즈에 대해, 1의 스트라이드 사이즈는 콘볼루션 윈도우들 사이에서 (예를 들어, 커널의 8 개의 Y 차원 유닛들로 인해) 8 개의 행들만큼 데이터를 시프팅함으로써 구현될 수 있거나, 또는 2의 스트라이드 사이즈는 16 개의 행들만큼 데이터를 시프팅함으로써 구현될 수 있다. 더욱이, 본원에서 설명되는 예시적인 활성화 버퍼들은, 데이터 재사용이 여전히 발생할 수 있게 하면서, 다양한 커널 사이즈들에 대해 데이터가 저장될 수 있게 한다. 효율적인 DMA 명령 세트는 명령 세트를 메모리(예를 들어, SRAM)로부터 활성화 버퍼로 이동시킬 때 데이터 재조직화를 가능하게 한다.
위상 선택적 콘볼루션을 수행하기 위한 예시적인 프로세싱 시스템들
[0103] 도 10은 예시적인 전자 디바이스(1000)를 예시한다. 전자 디바이스(1000)는 도 6 및 도 8에 대해 설명된 동작들(600, 800)을 포함하여, 본원에서 설명되는 방법들을 수행하도록 구성될 수 있다.
[0104] 전자 디바이스(1000)는, 일부 예들에서 멀티-코어 CPU일 수 있는 CPU(central processing unit)(1002)을 포함한다. CPU(1002)에서 실행되는 명령들은 예를 들어 CPU(1002)와 연관된 프로그램 메모리로부터 로딩될 수 있거나 또는 메모리(1024)로부터 로딩될 수 있다.
[0105] 전자 디바이스(1000)는 또한, 특정 기능들에 맞춤화된 부가적인 프로세싱 블록들, 이를테면, GPU(graphics processing unit)(1004), DSP(digital signal processor)(1006), NPU(neural processing unit)(1008), 멀티미디어 프로세싱 블록(1010), 멀티미디어 프로세싱 블록(1010) 및 무선 연결성 프로세싱 블록(1012)을 포함한다. 일 구현에서, NPU(1008)는 CPU(1002), GPU(1004) 및/또는 DSP(1006) 중 하나 이상으로 구현된다.
[0106] 일부 실시예들에서, 무선 연결성 프로세싱 블록(1012)은 예를 들어, 3세대(3G) 연결성, 4세대(4G) 연결성(예를 들어, 4G LTE), 5세대 연결성(예를 들어, 5G 또는 NR), Wi-Fi 연결성, 블루투스 연결성, 및 무선 데이터 송신 표준들을 위한 컴포넌트들을 포함할 수 있다. 무선 연결성 프로세싱 블록(1012)은 추가로, 무선 통신을 가능하게 하기 위해 하나 이상의 안테나들(1014)에 연결된다.
[0107] 전자 디바이스(1000)는 또한, 임의의 방식의 센서와 연관된 하나 이상의 센서 프로세서들(1016), 임의의 방식의 이미지 센서와 연관된 하나 이상의 ISP(image signal processor)들(1018), 및/또는 위성-기반 포지셔닝 시스템 컴포넌트들(예를 들어, GPS 또는 GLONASS) 뿐만 아니라 관성 포지셔닝 시스템 컴포넌트들을 포함할 수 있는 내비게이션 프로세서(1020)를 포함할 수 있다.
[0108] 전자 디바이스(1000)는 또한, 하나 이상의 입력 및/또는 출력 디바이스들(1022), 이를테면, 스크린들, 터치-감응 표면들(터치-감응 디스플레이들을 포함함), 물리적 버튼들, 스피커들, 마이크로폰들 등을 포함할 수 있다. 일부 양상들에서, 전자 디바이스(1000)의 프로세서들 중 하나 이상은 ARM 명령 세트에 기반할 수 있다.
[0109] 전자 디바이스(1000)는 또한, 하나 이상의 정적 및/또는 동적 메모리들, 이를테면 동적 랜덤 액세스 메모리, 플래시-기반 정적 메모리 등을 나타내는 메모리(1024)를 포함한다. 이 예에서, 메모리(1024)는, 제어기(1032) 또는 전자 디바이스(1000)의 전술된 프로세서들 중 하나 이상에 의해 실행될 수 있는 컴퓨터 실행가능 컴포넌트들을 포함한다. 예를 들어, 전자 디바이스(1000)는 본원에서 설명되는 바와 같은 컴퓨테이션 회로(1026)를 포함할 수 있다. 컴퓨테이션 회로(1026)는 제어기(1032)를 통해 제어될 수 있다. 예를 들어, 일부 양상들에서, 메모리(1024)는, 수신(예를 들어, 활성화 입력 신호들을 수신)하기 위한 코드(1024A), 콘볼루션을 수행하기 위한 코드(1024B), 및 시프팅(예를 들어, 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅)하기 위한 코드(1024C)를 포함할 수 있다. 예시된 바와 같이, 제어기(1032)는 수신(예를 들어, 활성화 입력 신호들을 수신)하기 위한 회로(1028A), 콘볼루션을 수행하기 위한 회로(1028B), 및 시프팅(예를 들어, 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅)하기 위한 코드(1028C)를 포함할 수 있다. 묘사된 컴포넌트들 및 묘사되지 않은 다른 컴포넌트들은 본원에 설명된 방법들의 다양한 양상들을 수행하도록 구성될 수 있다.
[0110] 전자 디바이스(1000)가 서버 디바이스인 경우와 같은 일부 양상들에서, 도 6 및 도 8에 묘사된 양상들로부터의 다양한 양상들, 이를테면 멀티미디어 프로세싱 블록(1010), 무선 연결성 컴포넌트(1012), 안테나(1014), 센서 프로세서들(1016), ISP들(1018) 또는 내비게이션(1020) 중 하나 이상은 생략될 수 있다.
예시적인 조항들
[0111] 조항 1.
장치로서, 콘볼루션 연산을 수행하도록 구성된 컴퓨테이션 회로부 ― 컴퓨테이션 회로부는 다수의 입력 행들을 가짐 ―; 및 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼를 포함하고, 다수의 버퍼 세그먼트들 각각은 복수의 멀티플렉서 입력들을 갖는 제1 멀티플렉서를 포함하고; 그리고 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 제1 멀티플렉서들 중 하나의 제1 멀티플렉서의 복수의 멀티플렉서 입력들 각각은 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링된다.
[0112] 조항 2.
조항 1의 장치에 있어서, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 및 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트는 일정 수량의 버퍼 세그먼트들에 의해 분리되고, 버퍼 세그먼트들의 수량은 로그-스텝 함수(log-step function)에 따른다.
[0113] 조항 3.
조항 1 또는 조항 2의 장치에 있어서, 다수의 버퍼 세그먼트들 중 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제1 멀티플렉서 입력은 다수의 버퍼 세그먼트들 중 제2 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고; 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제2 멀티플렉서 입력은 다수의 버퍼 세그먼트들 중 제3 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고; 제1 버퍼 세그먼트 및 제2 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제1 수량의 버퍼 세그먼트들에 의해 분리되고; 그리고 제1 버퍼 세그먼트 및 제3 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제1 수량의 버퍼 세그먼트들에 의해 분리된다.
[0114] 조항 4.
조항 3의 장치에 있어서, 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제3 멀티플렉서 입력은 다수의 버퍼 세그먼트들 중 제4 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고; 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제4 멀티플렉서 입력은 다수의 버퍼 세그먼트들 중 제5 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고; 제1 버퍼 세그먼트 및 제4 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제2 수량의 버퍼 세그먼트들에 의해 분리되고; 그리고 제1 버퍼 세그먼트 및 제5 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제2 수량의 버퍼 세그먼트들에 의해 분리된다.
[0115] 조항 5.
조항 4의 장치에 있어서, 버퍼 세그먼트들의 제1 수량은 로그-스텝 함수에 따르고; 그리고 버퍼 세그먼트들의 제2 수량은 로그-스텝 함수에 따른다.
[0116] 조항 6.
조항 1 내지 조항 5 중 어느 한 조항의 장치에 있어서, 활성화 버퍼는 활성화 버퍼의 데이터 출력들 각각과 제1 멀티플렉서들 각각의 출력 사이에 커플링된 플립-플롭을 포함한다.
[0117] 조항 7.
조항 6의 장치에 있어서, 플립-플롭은 D 플립-플롭을 포함한다.
[0118] 조항 8.
조항 1 내지 조항 7 중 어느 한 조항의 장치에 있어서, 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들의 개개의 입력 행과 데이터 출력들 각각 사이에 커플링된 제2 멀티플렉서를 더 포함한다.
[0119] 조항 9.
조항 8의 장치에 있어서, 데이터 출력들 각각은 복수의 비트들을 저장하도록 구성되고, 제2 멀티플렉서는 복수의 비트들 각각을 컴퓨테이션 회로부의 다수의 입력 행들의 개개의 입력 행에 선택적으로 커플링하도록 구성된다.
[0120] 조항 10.
조항 1 내지 조항 9 중 어느 한 조항의 장치에 있어서, 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함한다.
[0121] 조항 11.
조항 1 내지 조항 10 중 어느 한 조항의 장치에 있어서, 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함한다.
[0122] 조항 12.
조항 1 내지 조항 11 중 어느 한 조항의 장치에 있어서, 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터는 활성화 버퍼의 데이터 출력들에 함께 저장된다.
[0123] 조항 13.
조항 12의 장치에 있어서, 메모리를 더 포함하고, 뉴럴 네트워크 입력의 z 차원과 연관된 데이터는 메모리에 함께 저장되며, 활성화 버퍼는 패킹 변환 회로부를 더 포함하고, 패킹 변환 회로부는, 메모리에 저장된 데이터를 수신하고; 그리고 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터가 활성화 버퍼의 데이터 출력들에 함께 저장되도록, 메모리에 저장된 데이터를 조직화하도록 구성된다.
[0124] 조항 14.
뉴럴 네트워크에서의 신호 프로세싱을 위한 장치로서, 콘볼루션 연산을 수행하도록 구성된 컴퓨테이션 회로부 ― 컴퓨테이션 회로부는 다수의 입력 행들을 가짐 ―; 및 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼를 포함하고, 활성화 버퍼는, 다수의 버퍼 세그먼트들의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 다수의 버퍼 세그먼트들의 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함하고; 멀티플렉서는, 다수의 버퍼 세그먼트들 사이에서 데이터 시프트를 수행하기 위해, 다수의 입력 노드들 중, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하도록 구성되고; 그리고 활성화 버퍼는 추가로, 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋을 저장하도록 구성된다.
[0125] 조항 15.
조항 14의 장치에 있어서, 활성화 버퍼는 추가로, 다수의 버퍼 세그먼트들의 각각의 버퍼 세그먼트에 대한 마스크 비트를 저장하도록 구성되고, 마스크 비트는, 버퍼 세그먼트와 연관된 데이터 값이 데이터 시프트 후에 0이 되어야 하는지 여부를 표시한다.
[0126] 조항 16.
조항 14 또는 조항 15의 장치에 있어서, 멀티플렉서는, 다수의 버퍼 세그먼트들 사이에 적용될 데이터 시프트들의 수량의 표시를 수신하고; 그리고 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 데이터 시프트들의 수량을 적용하기 위해 다수의 입력 노드들 각각을 다수의 출력 노드들 중 하나에 선택적으로 커플링하도록 구성된다.
[0127] 조항 17.
조항 14 내지 조항 16 중 어느 한 조항의 장치에 있어서, 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함한다.
[0128] 조항 18.
조항 14 내지 조항 17 중 어느 한 조항의 장치에 있어서, 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함한다.
[0129] 조항 19.
조항 14 내지 조항 18 중 어느 한 조항의 장치에 있어서, 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터는 활성화 버퍼의 다수의 출력 노드들에 함께 저장된다.
[0130] 조항 20.
조항 19의 장치에 있어서, 메모리를 더 포함하고, 뉴럴 네트워크 입력의 z 차원과 연관된 데이터는 메모리에 함께 저장되며, 활성화 버퍼는 패킹 변환 회로부를 더 포함하고, 패킹 변환 회로부는, 메모리에 저장된 데이터를 수신하고; 그리고 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터가 활성화 버퍼의 데이터 출력들에 함께 저장되도록, 메모리에 저장된 데이터를 조직화하도록 구성된다.
[0131] 조항 21.
뉴럴 네트워크에서의 신호 프로세싱을 위한 방법으로서, 컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 데이터 출력들로부터 제1 복수의 활성화 입력 신호들을 수신하는 단계 ― 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 가짐 ―; 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계; 활성화 버퍼를 통해, 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅하는 단계 ― 데이터를 시프팅하는 단계는, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 멀티플렉서의 복수의 멀티플렉서 입력들 각각을 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 선택적으로 커플링하는 단계를 포함함 ―; 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 데이터 출력들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계; 및 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계를 포함한다.
[0132] 조항 22.
조항 21의 방법에 있어서, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 및 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트는 일정 수량의 버퍼 세그먼트들에 의해 분리되고, 버퍼 세그먼트들의 수량은 로그-스텝 함수에 따른다.
[0133] 조항 23.
조항 21 또는 조항 22의 방법에 있어서, 선택적으로 커플링하는 단계는, 다수의 버퍼 세그먼트들 중 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제1 멀티플렉서 입력을 다수의 버퍼 세그먼트들 중 제2 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계; 및 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제2 멀티플렉서 입력을 다수의 버퍼 세그먼트들 중 제3 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계를 포함하고, 제1 버퍼 세그먼트 및 제2 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제1 수량의 버퍼 세그먼트들에 의해 분리되고, 그리고 제1 버퍼 세그먼트 및 제3 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제1 수량의 버퍼 세그먼트들에 의해 분리된다.
[0134] 조항 24.
조항 23의 방법에 있어서, 선택적으로 커플링하는 단계는, 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제3 멀티플렉서 입력을 다수의 버퍼 세그먼트들 중 제4 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계; 및 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제4 멀티플렉서 입력을 다수의 버퍼 세그먼트들 중 제5 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계를 더 포함하고, 제1 버퍼 세그먼트 및 제4 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제2 수량의 버퍼 세그먼트들에 의해 분리되고, 그리고 제1 버퍼 세그먼트 및 제5 버퍼 세그먼트는 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제2 수량의 버퍼 세그먼트들에 의해 분리된다.
[0135] 조항 25.
조항 24의 방법에 있어서, 버퍼 세그먼트들의 제1 수량은 로그-스텝 함수에 따르고; 그리고 버퍼 세그먼트들의 제2 수량은 로그-스텝 함수에 따른다.
[0136] 조항 26.
조항 21 내지 조항 25 중 어느 한 조항의 방법에 있어서, 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함한다.
[0137] 조항 27.
조항 21 내지 조항 26 중 어느 한 조항의 방법에 있어서, 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함한다.
[0138] 조항 28.
뉴럴 네트워크에서의 신호 프로세싱을 위한 방법으로서, 컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 다수의 출력 노드들로부터 제1 복수의 활성화 입력 신호들을 수신하는 단계 ― 활성화 버퍼는 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 가짐 ―; 컴퓨테이션 회로부를 통해, 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계 ― 활성화 버퍼는, 다수의 버퍼 세그먼트들 상의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함함 ―; 활성화 버퍼의 멀티플렉서를 통해, 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 다수의 출력 노드들에 저장된 데이터를 시프팅하는 단계 ― 시프팅하는 단계는, 다수의 입력 노드들 중, 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하는 단계를 포함함 ―; 컴퓨테이션 회로부의 다수의 입력 행들에서, 데이터의 시프팅 후에 다수의 출력 노드들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계; 및 컴퓨테이션 회로부를 통해, 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계를 포함한다.
[0139] 조항 29.
조항 28의 방법에 있어서, 다수의 버퍼 세그먼트들의 각각의 버퍼 세그먼트에 대한 마스크 비트를 저장하는 단계를 더 포함하고, 마스크 비트는, 버퍼 세그먼트와 연관된 데이터 값이 데이터 시프트 후에 0이 되어야 하는지 여부를 표시한다.
[0140] 조항 30.
조항 28 또는 조항 29의 방법에 있어서, 시프팅하는 단계는, 멀티플렉서를 통해, 다수의 버퍼 세그먼트들 사이에 적용될 데이터 시프트들의 수량의 표시를 수신하는 단계; 및 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 데이터 시프트들의 수량을 적용하기 위해 다수의 입력 노드들 각각을 다수의 출력 노드들 중 하나에 선택적으로 커플링하는 단계를 더 포함한다.
부가적인 고려사항들
[0141] 전술된 설명은 당업자가 본원에서 설명되는 다양한 양상들을 실시하는 것을 가능하게 하기 위해 제공된다. 본원에서 논의된 예들은 청구항들에서 제시된 범위, 적용가능성 또는 양상들의 제한이 아니다. 이들 양상들에 대한 다양한 수정들은 당업자들에게 용이하게 자명할 것이며, 본원에서 정의되는 일반적인 원리들은 다른 양상들에 적용될 수 있다. 예를 들어, 본 개시내용의 범위를 벗어나지 않으면서, 논의되는 엘리먼트들의 기능 및 어레인지먼트(arrangement)에서 변경들이 행해질 수 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절한 경우 생략, 치환 또는 부가할 수 있다. 예를 들어, 설명되는 방법들은 설명되는 순서와 상이한 순서로 수행될 수 있으며, 다양한 단계들이 부가, 생략 또는 조합될 수 있다. 또한, 일부 예들과 관련하여 설명되는 특징들은 일부 다른 예들에 조합될 수 있다. 예를 들어, 본원에서 제시되는 임의의 수의 양상들을 사용하여 장치가 구현될 수 있거나 또는 방법이 실시될 수 있다. 부가하여, 본 개시내용의 범위는, 본원에서 제시되는 개시내용의 다양한 양상들에 부가하여 또는 이러한 다양한 양상들 이외의 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 실시되는 장치 또는 방법을 커버하는 것으로 의도된다. 본원에서 개시되는 개시내용의 임의의 양상이 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수 있다는 것이 이해되어야 한다.
[0142] 본원에서 사용되는 바와 같이, "예시적인" 것이란 단어는 "예, 사례 또는 예시로서의 역할을 하는" 것을 의미한다. "예시적인" 것으로서 본원에서 설명되는 임의의 양상이 반드시 다른 양상들보다 바람직하거나 또는 유리한 것으로 해석되어서는 안된다.
[0143] 본원에서 사용되는 바와 같이, 아이템들의 리스트 "중 적어도 하나"를 지칭하는 문구는, 단일 멤버들을 포함하여, 그러한 아이템들의 임의의 조합을 지칭한다. 예로서, "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의 임의의 다른 순서화)을 커버하는 것으로 의도된다.
[0144] 본원에서 사용되는 바와 같이, "결정"하는 것이란 용어는 매우 다양한 액션들을 포함한다. 예를 들어, "결정"하는 것은 계산, 컴퓨팅, 프로세싱, 도출, 조사, 룩업(예를 들어, 표, 데이터베이스 또는 다른 데이터 구조를 룩업), 확인 등을 포함할 수 있다. 또한, "결정"하는 것은 수신하는 것(예를 들어, 정보를 수신하는 것), 액세스하는 것(예를 들어, 메모리 내의 데이터에 액세스하는 것) 등을 포함할 수 있다. 또한, "결정"하는 것은 해결, 선택, 선정, 설정 등을 포함할 수 있다.
[0145] 본원에서 개시되는 방법들은 방법들을 달성하기 위한 하나 이상의 단계들 또는 액션들을 포함한다. 방법 단계들 및/또는 액션들은, 청구항들의 범위를 벗어나지 않으면서, 서로 상호교환될 수 있다. 다시 말해서, 단계들 또는 액션들의 특정 순서가 특정되지 않는 한, 특정 단계들 및/또는 액션들의 순서 및/또는 사용(use)은 청구항들의 범위를 벗어나지 않으면서 수정될 수 있다. 추가로, 위에서 설명된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적절한 수단에 의해 수행될 수 있다. 수단은 회로, ASIC(application specific integrated circuit) 또는 프로세서를 포함(그러나, 이에 제한되지 않음)하는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수 있다. 일반적으로, 도면들에서 예시되는 동작들이 있을 경우, 그러한 동작들은 유사한 넘버링을 갖는 대응하는 상대측 수단-및-기능(means-plus-function) 컴포넌트들을 가질 수 있다.
[0146] 다음의 청구항들은 본원에 도시된 양상들로 제한되도록 의도되는 것이 아니라, 청구항들의 언어와 일치하는 전체 범위에 부합될 것이다. 청구항 내에서, 단수로 엘리먼트에 대한 참조는, 구체적으로 그렇게 진술되지 않는 한, "하나 및 단 하나"를 의미하도록 의도되는 것이 아니라, "하나 이상"을 의미하도록 의도된다. 구체적으로 달리 진술되지 않는 한, "일부"란 용어는 하나 이상을 지칭한다. 어떤 청구항 엘리먼트도, 그 엘리먼트가 명시적으로 "~하기 위한 수단"이란 문구를 사용하여 언급되거나 또는 방법 청구항의 경우 그 엘리먼트가 "~하기 위한 단계"라는 문구를 사용하여 언급되지 않는 한, 35 U.S.C. §112(f)의 규정들 하에서 해석되지 않아야 한다. 당업자들에게 알려져 있거나 또는 나중에 알려지게 될, 본 개시내용 전반에 걸쳐 설명되는 다양한 양상들의 엘리먼트들에 대한 모든 구조적 및 기능적 등가물들은, 인용에 의해 본원에 명시적으로 포함되고, 그리고 청구항들에 의해 포함되는 것으로 의도된다. 게다가, 본원에서 개시되는 아무것도, 그러한 개시내용이 청구항들에서 명시적으로 언급되는지 여부에 관계없이, 공중에 전용되는 것으로 의도되지 않는다.
Claims (30)
- 장치로서,
콘볼루션 연산(convolution operation)을 수행하도록 구성된 컴퓨테이션 회로부(computation circuitry) ― 상기 컴퓨테이션 회로부는 다수의 입력 행(row)들을 가짐 ―; 및
상기 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼
를 포함하고,
상기 다수의 버퍼 세그먼트들 각각은 복수의 멀티플렉서 입력들을 갖는 제1 멀티플렉서를 포함하고; 그리고
상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 제1 멀티플렉서들 중 하나의 제1 멀티플렉서의 복수의 멀티플렉서 입력들 각각은 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되는, 장치. - 제1 항에 있어서,
상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 및 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트는 일정 수량의 버퍼 세그먼트들에 의해 분리되고, 상기 버퍼 세그먼트들의 수량은 로그-스텝 함수(log-step function)에 따르는, 장치. - 제1 항에 있어서,
상기 다수의 버퍼 세그먼트들 중 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제1 멀티플렉서 입력은 상기 다수의 버퍼 세그먼트들 중 제2 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고;
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제2 멀티플렉서 입력은 상기 다수의 버퍼 세그먼트들 중 제3 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고;
상기 제1 버퍼 세그먼트 및 상기 제2 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제1 수량의 버퍼 세그먼트들에 의해 분리되고; 그리고
상기 제1 버퍼 세그먼트 및 상기 제3 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제1 수량의 버퍼 세그먼트들에 의해 분리되는, 장치. - 제3 항에 있어서,
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제3 멀티플렉서 입력은 상기 다수의 버퍼 세그먼트들 중 제4 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고;
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제4 멀티플렉서 입력은 상기 다수의 버퍼 세그먼트들 중 제5 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링되고;
상기 제1 버퍼 세그먼트 및 상기 제4 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제2 수량의 버퍼 세그먼트들에 의해 분리되고; 그리고
상기 제1 버퍼 세그먼트 및 상기 제5 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제2 수량의 버퍼 세그먼트들에 의해 분리되는, 장치. - 제4 항에 있어서,
상기 버퍼 세그먼트들의 제1 수량은 로그-스텝 함수에 따르고; 그리고
상기 버퍼 세그먼트들의 제2 수량은 상기 로그-스텝 함수에 따르는, 장치. - 제1 항에 있어서,
상기 활성화 버퍼는 상기 활성화 버퍼의 데이터 출력들 각각과 상기 제1 멀티플렉서들 각각의 출력 사이에 커플링된 플립-플롭(flip-flop)을 포함하는, 장치. - 제6 항에 있어서,
상기 플립-플롭은 D 플립-플롭을 포함하는, 장치. - 제1 항에 있어서,
상기 활성화 버퍼는 상기 컴퓨테이션 회로부의 다수의 입력 행들의 개개의 입력 행과 데이터 출력들 각각 사이에 커플링된 제2 멀티플렉서를 더 포함하는, 장치. - 제8 항에 있어서,
상기 데이터 출력들 각각은 복수의 비트들을 저장하도록 구성되고, 상기 제2 멀티플렉서는 상기 복수의 비트들 각각을 상기 컴퓨테이션 회로부의 다수의 입력 행들의 개개의 입력 행에 선택적으로 커플링하도록 구성되는, 장치. - 제1 항에 있어서,
상기 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함하는, 장치. - 제1 항에 있어서,
상기 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함하는, 장치. - 제1 항에 있어서,
뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터는 상기 활성화 버퍼의 데이터 출력들에 함께 저장되는, 장치. - 제12 항에 있어서,
메모리를 더 포함하고,
상기 뉴럴 네트워크 입력의 z 차원과 연관된 데이터는 상기 메모리에 함께 저장되며, 상기 활성화 버퍼는 패킹 변환 회로부(packing conversion circuitry)를 더 포함하고,
상기 패킹 변환 회로부는,
상기 메모리에 저장된 데이터를 수신하고; 그리고
상기 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터가 상기 활성화 버퍼의 데이터 출력들에 함께 저장되도록, 상기 메모리에 저장된 데이터를 조직화하도록(organize)
구성되는, 장치. - 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치로서,
콘볼루션 연산을 수행하도록 구성된 컴퓨테이션 회로부 ― 상기 컴퓨테이션 회로부는 다수의 입력 행들을 가짐 ―; 및
상기 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 갖는 활성화 버퍼
를 포함하고,
상기 활성화 버퍼는, 상기 다수의 버퍼 세그먼트들의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 상기 다수의 버퍼 세그먼트들의 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함하고;
상기 멀티플렉서는, 상기 다수의 버퍼 세그먼트들 사이에서 데이터 시프트를 수행하기 위해, 상기 다수의 입력 노드들 중, 상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하도록 구성되고; 그리고
상기 활성화 버퍼는 추가로, 상기 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋을 저장하도록 구성되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제14 항에 있어서,
상기 활성화 버퍼는 추가로, 상기 다수의 버퍼 세그먼트들의 각각의 버퍼 세그먼트에 대한 마스크 비트(mask bit)를 저장하도록 구성되고, 상기 마스크 비트는, 상기 버퍼 세그먼트와 연관된 데이터 값이 상기 데이터 시프트 후에 0이 되어야 하는지 여부를 표시하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제14 항에 있어서,
상기 멀티플렉서는,
상기 다수의 버퍼 세그먼트들 사이에 적용될 데이터 시프트들의 수량의 표시를 수신하고; 그리고
상기 현재 활성 데이터 시프트들의 수량을 표시하는 상기 버퍼 오프셋에 기반하여 상기 데이터 시프트들의 수량을 적용하기 위해 상기 다수의 입력 노드들 각각을 상기 다수의 출력 노드들 중 하나에 선택적으로 커플링하도록
구성되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제14 항에 있어서,
상기 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제14 항에 있어서,
상기 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제14 항에 있어서,
뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터는 상기 활성화 버퍼의 상기 다수의 출력 노드들에 함께 저장되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 제19 항에 있어서,
메모리를 더 포함하고,
상기 뉴럴 네트워크 입력의 z 차원과 연관된 데이터는 상기 메모리에 함께 저장되며, 상기 활성화 버퍼는 패킹 변환 회로부를 더 포함하고,
상기 패킹 변환 회로부는,
상기 메모리에 저장된 데이터를 수신하고; 그리고
상기 뉴럴 네트워크 입력의 x 및 y 차원들과 연관된 데이터가 상기 활성화 버퍼의 데이터 출력들에 함께 저장되도록, 상기 메모리에 저장된 데이터를 조직화하도록
구성되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 장치. - 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법으로서,
컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 데이터 출력들로부터 제1 복수의 활성화 입력 신호들을 수신하는 단계 ― 상기 활성화 버퍼는 상기 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 가짐 ―;
상기 컴퓨테이션 회로부를 통해, 상기 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계;
상기 활성화 버퍼를 통해, 상기 활성화 버퍼의 데이터 출력들에 저장된 데이터를 시프팅하는 단계 ― 상기 데이터를 시프팅하는 단계는, 상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 멀티플렉서의 복수의 멀티플렉서 입력들 각각을 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 선택적으로 커플링하는 단계를 포함함 ―;
상기 컴퓨테이션 회로부의 다수의 입력 행들에서, 상기 데이터의 시프팅 후에 상기 데이터 출력들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계; 및
상기 컴퓨테이션 회로부를 통해, 상기 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계
를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제21 항에 있어서,
상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 및 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트는 일정 수량의 버퍼 세그먼트들에 의해 분리되고, 상기 버퍼 세그먼트들의 수량은 로그-스텝 함수에 따르는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제21 항에 있어서,
상기 선택적으로 커플링하는 단계는,
상기 다수의 버퍼 세그먼트들 중 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제1 멀티플렉서 입력을 상기 다수의 버퍼 세그먼트들 중 제2 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계; 및
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제2 멀티플렉서 입력을 상기 다수의 버퍼 세그먼트들 중 제3 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계
를 포함하고,
상기 제1 버퍼 세그먼트 및 상기 제2 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제1 수량의 버퍼 세그먼트들에 의해 분리되고, 그리고
상기 제1 버퍼 세그먼트 및 상기 제3 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제1 수량의 버퍼 세그먼트들에 의해 분리되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제23 항에 있어서,
상기 선택적으로 커플링하는 단계는,
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제3 멀티플렉서 입력을 상기 다수의 버퍼 세그먼트들 중 제4 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계; 및
상기 제1 버퍼 세그먼트 상의 복수의 멀티플렉서 입력들 중 제4 멀티플렉서 입력을 상기 다수의 버퍼 세그먼트들 중 제5 버퍼 세그먼트 상의 활성화 버퍼의 데이터 출력에 커플링하는 단계
를 더 포함하고,
상기 제1 버퍼 세그먼트 및 상기 제4 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 초기 버퍼 세그먼트를 향해 제2 수량의 버퍼 세그먼트들에 의해 분리되고, 그리고
상기 제1 버퍼 세그먼트 및 상기 제5 버퍼 세그먼트는 상기 다수의 버퍼 세그먼트들 중 최종 버퍼 세그먼트를 향해 동일한 제2 수량의 버퍼 세그먼트들에 의해 분리되는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제24 항에 있어서,
상기 버퍼 세그먼트들의 제1 수량은 로그-스텝 함수에 따르고; 그리고
상기 버퍼 세그먼트들의 제2 수량은 상기 로그-스텝 함수에 따르는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제21 항에 있어서,
상기 컴퓨테이션 회로부는 CIM(computation in memory) 회로를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제21 항에 있어서,
상기 컴퓨테이션 회로부는 DMAC(digital multiply and accumulate) 회로를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법으로서,
컴퓨테이션 회로부의 다수의 입력 행들에서, 활성화 버퍼의 다수의 출력 노드들로부터 제1 복수의 활성화 입력 신호들을 수신하는 단계 ― 상기 활성화 버퍼는 상기 컴퓨테이션 회로부의 다수의 입력 행들에 각각 커플링된 다수의 버퍼 세그먼트들을 가짐 ―;
상기 컴퓨테이션 회로부를 통해, 상기 제1 복수의 활성화 입력 신호들에 기반하여 제1 콘볼루션 연산을 수행하는 단계 ― 상기 활성화 버퍼는, 상기 다수의 버퍼 세그먼트들 상의 다수의 입력 노드들에 커플링된 멀티플렉서 입력들 및 상기 다수의 출력 노드들에 커플링된 멀티플렉서 출력들을 갖는 멀티플렉서를 포함함 ―;
상기 활성화 버퍼의 상기 멀티플렉서를 통해, 상기 멀티플렉서와 연관된 현재 활성 데이터 시프트들의 수량을 표시하는 버퍼 오프셋에 기반하여 상기 다수의 출력 노드들에 저장된 데이터를 시프팅하는 단계 ― 상기 시프팅하는 단계는, 상기 다수의 입력 노드들 중, 상기 다수의 버퍼 세그먼트들 중 하나의 버퍼 세그먼트 상의 각각의 입력 노드를 상기 다수의 버퍼 세그먼트들 중 다른 하나의 버퍼 세그먼트 상의 다수의 출력 노드들 중 하나에 선택적으로 커플링하는 단계를 포함함 ―;
상기 컴퓨테이션 회로부의 다수의 입력 행들에서, 상기 데이터의 시프팅 후에 상기 다수의 출력 노드들로부터 제2 복수의 활성화 입력 신호들을 수신하는 단계; 및
상기 컴퓨테이션 회로부를 통해, 상기 제2 복수의 활성화 입력 신호들에 기반하여 제2 콘볼루션 연산을 수행하는 단계
를 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제28 항에 있어서,
상기 다수의 버퍼 세그먼트들의 각각의 버퍼 세그먼트에 대한 마스크 비트를 저장하는 단계를 더 포함하고, 상기 마스크 비트는, 상기 버퍼 세그먼트와 연관된 데이터 값이 상기 데이터 시프트 후에 0이 되어야 하는지 여부를 표시하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법. - 제28 항에 있어서,
상기 시프팅하는 단계는,
상기 멀티플렉서를 통해, 상기 다수의 버퍼 세그먼트들 사이에 적용될 데이터 시프트들의 수량의 표시를 수신하는 단계; 및
상기 현재 활성 데이터 시프트들의 수량을 표시하는 상기 버퍼 오프셋에 기반하여 상기 데이터 시프트들의 수량을 적용하기 위해 상기 다수의 입력 노드들 각각을 상기 다수의 출력 노드들 중 하나에 선택적으로 커플링하는 단계
를 더 포함하는, 뉴럴 네트워크에서의 신호 프로세싱을 위한 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/108594 WO2023004570A1 (en) | 2021-07-27 | 2021-07-27 | Activation buffer architecture for data-reuse in a neural network accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240037233A true KR20240037233A (ko) | 2024-03-21 |
Family
ID=85086117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020247001171A KR20240037233A (ko) | 2021-07-27 | 2021-07-27 | 뉴럴 네트워크 가속기에서의 데이터-재사용을 위한 활성화 버퍼 아키텍처 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20240256827A1 (ko) |
EP (1) | EP4377841A1 (ko) |
JP (1) | JP2024528690A (ko) |
KR (1) | KR20240037233A (ko) |
CN (1) | CN117677955A (ko) |
WO (1) | WO2023004570A1 (ko) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528864B2 (en) * | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
US10521488B1 (en) * | 2016-12-30 | 2019-12-31 | X Development Llc | Dynamic partitioning |
US20210004668A1 (en) * | 2018-02-16 | 2021-01-07 | The Governing Council Of The University Of Toronto | Neural network accelerator |
US12099912B2 (en) * | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
US11586417B2 (en) * | 2018-09-28 | 2023-02-21 | Qualcomm Incorporated | Exploiting activation sparsity in deep neural networks |
CN113158132A (zh) * | 2021-04-27 | 2021-07-23 | 南京风兴科技有限公司 | 一种基于非结构化稀疏的卷积神经网络加速系统 |
-
2021
- 2021-07-27 WO PCT/CN2021/108594 patent/WO2023004570A1/en active Application Filing
- 2021-07-27 EP EP21951187.0A patent/EP4377841A1/en active Pending
- 2021-07-27 US US18/565,414 patent/US20240256827A1/en active Pending
- 2021-07-27 KR KR1020247001171A patent/KR20240037233A/ko active Search and Examination
- 2021-07-27 CN CN202180100833.3A patent/CN117677955A/zh active Pending
- 2021-07-27 JP JP2024503713A patent/JP2024528690A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2024528690A (ja) | 2024-07-30 |
EP4377841A1 (en) | 2024-06-05 |
CN117677955A (zh) | 2024-03-08 |
US20240256827A1 (en) | 2024-08-01 |
WO2023004570A1 (en) | 2023-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019109895A (ja) | ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
US20220414444A1 (en) | Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn) | |
KR20240035492A (ko) | 메모리 내 디지털 컴퓨팅을 위한 폴딩 열 가산기 아키텍처 | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
KR20240058084A (ko) | 뉴럴 네트워크들에 대한 병렬 깊이별 프로세싱 아키텍처들 | |
KR20240025540A (ko) | 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션 | |
KR20240037233A (ko) | 뉴럴 네트워크 가속기에서의 데이터-재사용을 위한 활성화 버퍼 아키텍처 | |
US12019905B2 (en) | Digital compute in memory | |
US12056459B2 (en) | Compute in memory architecture and dataflows for depth-wise separable convolution | |
WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
WO2023015167A1 (en) | Digital compute in memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |