KR20240036594A - 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 - Google Patents

인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 Download PDF

Info

Publication number
KR20240036594A
KR20240036594A KR1020247004107A KR20247004107A KR20240036594A KR 20240036594 A KR20240036594 A KR 20240036594A KR 1020247004107 A KR1020247004107 A KR 1020247004107A KR 20247004107 A KR20247004107 A KR 20247004107A KR 20240036594 A KR20240036594 A KR 20240036594A
Authority
KR
South Korea
Prior art keywords
circuit
output
circuits
coupled
input
Prior art date
Application number
KR1020247004107A
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 KR20240036594A publication Critical patent/KR20240036594A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3816Accepting numbers of variable word length
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

머신 러닝 태스크들을 수행하기 위한 방법들 및 장치, 특히, 부분 누산의 개선된 처리를 위한 뉴럴 네트워크 프로세싱 아키텍처 및 회로들은 가중-고정 동작들, 이를 테면, 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PE들) 에서 발생하는 동작들을 초래한다. 머신 러닝을 위한 하나의 예시적인 PE 회로는 일반적으로 누산기 회로, 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭 어레이, 및 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함한다.

Description

인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
관련 출원(들)에 대한 상호참조
본 출원은 2021년 8월 10일자로 출원된 미국 출원 번호 제17/398,791호에 대한 우선권을 주장하며, 이는 본 출원의 양수인에게 양도되고 그 전체가 본 명세서에 참조에 의해 포함된다.
기술 분야
본 개시의 양태들은 머신 러닝에 관한 것이며, 보다 구체적으로, 컴퓨트-인-메모리 (compute-in-memory; CIM) 기술에서와 같이, 가중치-고정 방식들에서 부분 합들을 처리하기 위한 회로들, 뉴럴-네트워크-프로세싱 아키텍처들, 및 기법들에 관한 것이다.
머신 러닝은 일반적으로 트레이닝된 모델 (예를 들어, 인공 뉴럴 네트워크, 트리, 또는 다른 구조들) 을 생성하는 프로세스이며, 이는 선험적으로 알려진 트레이닝 데이터의 세트에 대한 일반화 피트(fit)를 나타낸다. 트레이닝된 모델을 새로운 데이터에 적용하는 것은 추론들을 생성하며, 이는 새로운 데이터에 대한 통찰력들을 얻는데 사용될 수도 있다. 일부 경우들에서, 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대해 "추론을 실행하는 것" 으로서 설명된다.
머신 러닝의 사용이 여러 머신 러닝 (또는 인공 지능) 태스크들을 가능하게 하기 위해 확산함에 따라, 머신 러닝 모델의 더 효율적인 프로세싱에 대한 요구가 커지고 있다. 일부 경우들에, 전용 하드웨어, 이를 테면, 머신 러닝 가속기들은 머신 러닝 모델 데이터를 프로세싱하기 위해 프로세싱 시스템 용량을 강화하는데 사용될 수도 있다. 그러나, 이러한 하드웨어는 공간 및 전력을 요구하며 이는 프로세싱 디바이스 상에서 항상 이용가능한 것이 아니다. 예를 들어, "에지 프로세싱" 디바이스들, 이를 테면, 모바일 디바이스들, 상시-온 디바이스들, 사물 인터넷 (IoT) 디바이스들 등등은 통상적으로 전력 및 패키징 구속요건들과 프로세싱 능력들을 밸런싱해야 한다. 또한, 가속기들은 공통 데이터 버스들에 걸쳐 데이터를 이동시킬 수도 있고, 이는 데이터 버스를 공유하는 다른 프로세스들에 레이턴시를 도입하는 상당한 전력 사용량을 야기할 수 있다.
결과적으로, 프로세싱 시스템의 다른 양태들이 머신 러닝 모델 데이터를 프로세싱하기 위하여 고려되고 있다. 메모리 디바이스들은 "인-메모리 연산"으로 또한 지칭되는, 소위 컴퓨트-인-메모리 (compute-in-memory; CIM) 프로세스들을 통하여 머신 러닝 모델 데이터를 수행하기 위하여 활용될 수도 있는 프로세싱 시스템의 다른 양태의 하나의 예이다.
본 개시의 시스템들, 방법들 및 디바이스들은 각각 여러 양태들을 가지며, 이들 중 단 하나만이 단독으로 그의 바람직한 속성들을 전적으로 담당하지 않는다. 뒤이어지는 청구항들에 의해 표현된 바와 같이 본 개시의 범위를 한정하지 않고도, 일부 특징들이 하기에서 간략하게 논의된다. 이 논의를 고려한 이후, 특히, "상세한 설명" 이라는 제목의 섹션을 읽은 후, 본 명세서에서 설명된 이점들을 본 개시의 특징부들이 어떻게 제공하는지를 이해할 것이다.
본 개시의 특정 양태들은 머신 러닝을 위한 프로세싱 엘리먼트 (PE) 에 관한 것이다. PE 회로는 일반적으로, 제 1 누산기 회로; 제 1 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭 어레이; 기록 레지스터; 및 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함한다.
본 개시의 특정 양태들은 복수의 PE 회로들을 포함하는 뉴럴 네트워크 회로에 관한 것이며, 여기서 복수의 PE 회로들 중 적어도 하나는 본 명세서에 설명된 PE 회로를 포함한다. 뉴럴 네트워크 회로는 기록 버스에 그리고 판독 버스에 커플링된 밀착 결합 메모리 및 판독 버스에 커플링된 글로벌 메모리를 더 포함하고, 복수의 PE 회로들 중 다른 하나는 제 1 누산기 회로의 제 2 입력에 커플링된 출력을 갖는다.
본 개시의 특정 양태들은 뉴럴 네트워크 회로에 관한 것이다. 뉴럴 네트워크 회로는 일반적으로 캐스케이드된 PE 회로들의 제 1 세트를 포함하며, 여기서 제 1 세트에서의 제 1 PE 회로의 출력은 제 1 세트에서의 제 2 PE 회로의 입력에 커플링되고, 제 1 글로벌 누산기 회로는 캐스케이드된 PE 회로들의 제 1 세트의 출력에 커플링된 입력을 갖는다. 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는 곱셈-및-누산 (multiply-and-accumulate; MAC) 회로, MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함한다.
본 개시의 특정 양태들은 뉴럴 네트워크 프로세싱의 방법에 관한 것이다. 본 방법은 일반적으로 멀티플렉서의 제 1 입력에서, 기록 레지스터로부터 제 1 데이터를 수신하는 단계; 멀티플렉서의 제 2 입력에서, 플립-플롭 어레이로부터 제 2 데이터를 수신하는 단계; 누산기 회로에서, PE 회로로부터 제 3 데이터를 수신하는 단계; 멀티플렉서에 의해, 제 1 데이터와 제 2 데이터 사이에서 누산기 회로에 출력할 데이터를 선택하는 단계; 및 누산된 데이터를 생성하기 위해, 누산기 회로에 의해, 멀티플렉서로부터 선택된 출력 데이터 및 PE 회로로부터 수신된 제 3 데이터를 누산하는 단계를 포함한다.
본 개시의 특정 양태들은 뉴럴 네트워크 프로세싱의 방법에 관한 것이다. 본 방법은 일반적으로 캐스케이드된 PE 회로들의 세트에서의 각각의 PE 회로에서 MAC 동작을 수행하는 단계로서, 캐스케이드된 PE 회로들의 세트에서의 제 1 PE 회로의 출력은 캐스케이드된 PE 회로들의 세트에서의 제 2 PE 회로의 입력에 커플링되고, 캐스케이드된 PE 회로들의 세트에서의 각각의 PE 회로는: MAC 회로, MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, MAC 동작을 수행하는 단계; 캐스케이드된 PE 회로들의 세트에서 PE 회로로부터 다음 PE 회로로 또는 글로벌 누산기 회로로 값을 시프트하기 위해 각각의 PE 회로에서의 플립-플롭들의 세트로 시프트 동작을 수행하는 단계로서, 각각의 PE 회로에서, 시프트 동작은 MAC 동작의 수행과 동시에 수행되는, 시프트 동작을 수행하는 단계; 및 누산된 데이터를 생성하기 위해, 글로벌 누산기 회로에 의해, 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로로부터 시프트된 값들을 누산하는 단계를 포함한다.
다른 양태들은 본 명세서에 설명된 것 뿐만 아니라 상술한 방법들을 수행하도록 구성된 프로세싱 시스템들; 프로세싱 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템으로 하여금 본 명세서에 설명된 것 뿐만 아니라 상술한 방법들을 수행하게 하는 명령들을 포함하는 비일시적인 컴퓨터 판독가능 매체; 본 명세서에 추가로 설명된 것 뿐만 아니라 상술한 방법들을 수행하기 위한 코드를 포함하는 컴퓨터 판독가능 저장 매체 상에서 구현되는 컴퓨터 프로그램 제품; 및 본 명세서에 추가로 설명된 것 뿐만 아니라 상술한 방법들을 수행하기 위한 수단을 포함하는 프로세싱 시스템을 제공한다.
전술한 그리고 관련된 목적들의 달성을 위해 하나 이상의 양태들은, 이하에서 충분히 설명되고 특히 청구항들에서 적시되는 특징들을 포함한다. 다음의 설명 및 첨부된 도면들은 하나 이상의 양태들의 특정한 예시적인 특징들을 상세히 제시한다. 하지만, 이들 특징들은 다양한 양태들의 원리들이 채용될 수도 있는 다양한 방식들 중 몇 가지만을 나타낸다.
본 개시의 위에서 언급된 피처들이 상세히 이해될 수 있도록, 위에서 간략하게 요약된 보다 구체적인 설명이 양태들을 참조하여 이루어질 수도 있으며, 그 양태들 중 일부는 첨부된 도면들에 예시된다. 그러나, 첨부된 도면들은 본 개시의 소정의 통상적인 양태들만을 예시할 뿐이고, 따라서, 본 설명은 다른 동일하게 효과적인 양태들을 허용할 수도 있으므로, 그 범위의 한정으로 간주되어서는 안된다는 것에 유의해야 한다.
도 1a 내지 도 1d 는 본 개시의 양태들에 의해 구현될 수 있는 다양한 타입들의 뉴럴 네트워크들의 예들을 도시한다.
도 2 는 본 개시의 양태들에 의해 구현될 수 있는 통상적인 컨볼루션 동작의 일 예를 도시한다.
도 3a 및 도 3b 는 본 개시의 양태들에 의해 구현될 수 있는 깊이별 분리가능 컨볼루션 동작의 예들을 도시한다.
도 4 는 본 개시의 다양한 양태들에 따른 예시적인 디지털 컴퓨트-인-메모리 (DCIM) 아키텍처의 블록 다이어그램이다.
도 5 는 8-트랜지스터 (8T) 정적 랜덤 액세스 메모리 (SRAM) 셀로서 구현되는, 도 4 의 DCIM 아키텍처에 대한 예시적인 컴퓨트-인-메모리 (CIM) 셀을 예시한다.
도 6 은 본 개시의 특정 양태들이 구현될 수도 있는 예시적인 데이터 플로우 시퀀스를 예시하는 밀착 결합 메모리 (TCM) 및 프로세싱 엘리먼트들 (PEs) 을 갖는 예시적인 뉴럴-네트워크-프로세싱 아키텍처의 블록 다이어그램이다.
도 7 은 본 개시의 특정 양태들에 따라, 동시 시프트 및 곱셈-및-누산(MAC) 동작들을 위해 상이한 PE들을 연결하기 위한 시스톨릭 플로우 아키텍처의 블록 다이어그램이다.
도 8a 내지 도 8c 는 본 개시의 특정 양태들에 따라, 글로벌 메모리, 출력 TCM 및 PE와의 연결들 및 글로벌 누산기 회로의 상이한 예시적인 구현들의 블록 다이어그램들이다.
도 9a 는 본 개시의 특정 양태들에 따라, 도 7 의 예시적인 시스톨릭 플로우 아키텍처에 대한 사이클별 시스톨릭 동작 (cycle-by-cycle systolic operation) 을 예시한다.
도 9b 는 본 개시의 특정 양태들에 따라, 활성화-입력-비트 사이클들보다 더 많은 PE들을 갖는 예시적인 시스톨릭 플로우 아키텍처에 대한 더미 사이클들을 갖는 사이클별 시스톨릭 동작을 예시한다.
도 10 은 본 개시의 특정 양태들에 따라 하나 보다 많은 로우를 갖는 예시적인 시스톨릭 아키텍처의 블록 다이어그램이다.
도 11 은 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 예시적인 동작들을 예시하는 플로우 다이어그램이다.
도 12 는 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 예시적인 동작들을 예시하는 플로우 다이어그램이다.
도 13 은 본 개시의 특정 양태들에 따라, 머신 러닝 태스크들을 수행하도록 구성되고 시스톨릭 플로우 아키텍처를 구현하는 뉴럴-네트워크-프로세싱 회로를 갖는 예시적인 전자 디바이스를 예시하는 블록 다이어그램이다.
이해를 용이하게 하기 위해, 동일한 참조 번호들은, 가능한 경우, 도면들에 대해 공통적인 동일한 엘리먼트들을 지정하도록 사용되었다. 일 양태의 엘리먼트들 및 피처들은 추가 기재없이도 다른 양태들에 유익하게 통합될 수도 있음이 고려된다.
본 개시의 양태들은 데이터-집약적 프로세싱을 수행하기 위한, 이를 테면, 머신 러닝 모델들을 구현하기 위한 장치들, 방법들, 프로세싱 시스템들 및 컴퓨터 판독가능 매체들을 제공한다. 일부 양태들은 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PE들) 에서 발생하는 동작들과 같은 가중치-고정 동작들을 초래하는 부분 누산 결과들의 개선된 처리를 위한 뉴럴-네트워크-프로세싱 아키텍처 및 회로들을 제공한다.
뉴럴 네트워크, 딥 뉴럴 네트워크 및 딥 러닝에 대한 간단한 소개
뉴럴 네트워크들은 상호연결된 노드들의 계층들로 조직화된다. 일반적으로, 노드 (또는 뉴런) 는 연산이 발생하는 곳이다. 예를 들어, 노드는 입력 데이터를, 입력 데이터를 증폭 또는 감쇠시키는 가중치들 (또는 계수들) 의 세트와 조합할 수 있다. 따라서, 입력 신호들의 증폭 또는 감쇠는 네트워크가 러닝하려고 하는 태스크에 관한 다양한 입력들에 대한 상대적인 중요도들의 할당으로 고려될 수 있다. 일반적으로, 입력-가중치 곱들은 합산 (또는 누적) 되고, 그 합은 그 신호가 네트워크를 통해 더 진행되어야 하는지의 여부 및 정도를 결정하기 위해 노드의 활성화 함수를 통과한다.
가장 기본적인 구현에서, 뉴럴 네트워크는 입력 계층, 은닉 계층, 및 출력 계층을 가질 수 있다. "딥" 뉴럴 네트워크들은 일반적으로 하나 보다 많은 은닉 계층을 갖는다.
딥 러닝은 딥 뉴럴 네트워크들을 트레이닝시키는 방법이다. 일반적으로, 딥 러닝은 네트워크로의 입력들을 네트워크로부터의 출력들에 맵핑하고, 따라서 때때로 "범용 근사기"로 지칭되며, 이는 딥 러닝이 임의의 입력 x와 임의의 출력 y 사이의 미지의 함수 f(x) = y를 근사화하는 것을 러닝할 수 있기 때문이다. 즉, 딥 러닝은 x 를 y 로 변환할 수 있는 정확한 f 를 찾는다.
보다 구체적으로, 딥 러닝은 이전 계층으로부터의 출력인 피처들의 별개의 세트에 기초하여 각각의 노드 층을 트레이닝한다. 따라서, 딥 뉴럴 네트워크의 각각의 연속적인 계층에 의해, 피처들이 더욱 복잡해진다. 따라서, 딥 러닝은 딥러닝이 각각의 계층에서 연속적으로 더 높은 추상화 레벨들로 입력들을 표현하도록 러닝하여, 이에 의해, 입력 데이터의 유용한 피처 표현을 빌드업함으로써 입력 데이터로부터 더 높은 레벨 피처들을 점진적으로 추출할 수도 있고 복잡한 태스크들, 이를 테면, 오브젝트 인식을 수행할 수 있기 때문에 강력하다.
예를 들어, 시각적 데이터가 제시되면, 딥 러닝 네트워크의 제 1 계층은 입력 데이터에서 비교적 간단한 피처들, 이를 테면, 에지들을 인식하도록 러닝할 수도 있다. 다른 예에서, 청각적 데이터가 제시되면, 딥 러닝 네트워크의 제 1 계층은 입력 데이터에서 특정 주파수들에서의 스펙트럼 전력을 인식하는 것을 러닝할 수도 있다. 딥 뉴럴 네트워크의 제 2 계층은 그 다음, 제 1 계층의 출력에 기초하여, 피처들의 조합들, 이를 테면, 시각적 데이터에 대한 간단한 형상들 또는 청각적 데이터에 대한 사운드들의 조합들을 인식하도록 러닝할 수도 있다. 상위 계층들은 그 다음 시각적 데이터에서의 복잡한 형상들 또는 청각적 데이터에서의 단어들을 인식하도록 러닝할 수도 있다. 더 상위의 계층들은 공통 시각적 객체들 또는 발화된 어구들을 인식하는 것을 러닝할 수도 있다. 딥 러닝 아키텍처들은 자연스러운 계층 구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수도 있다.
뉴럴 네트워크에서의 계층 연결성
뉴럴 네트워크들, 이를 테면, 딥 뉴럴 네트워크들 (DNN들) 은 계층들 간의 다양한 연결성 패턴들로 설계될 수 있다.
도 1a 는 전체 연결된 뉴럴 네트워크 (102) 의 일 예를 예시한다. 전체 연결된 뉴럴 네트워크 (102) 에서, 제 1 계층에서의 각각의 노드는 그 출력을 제 2 계층에서의 모든 노드에 통신하여, 제 2 계층에서의 각각의 노드가 제 1 계층에서의 모든 노드로부터 입력을 수신할 것이다.
도 1b 는 국부 연결된 뉴럴 네트워크 (104) 의 예를 예시한다. 국부 연결된 뉴럴 네트워크 (104) 에서, 제 1 계층에서의 노드는 제 2 계층에서의 제한된 수의 노드들에 연결될 수도 있다. 보다 일반적으로, 국부 연결된 뉴럴 네트워크 (104) 의 국부 연결된 계층은 계층에서의 각각의 노드가 동일 또는 유사한 연결성 패턴을 갖도록 구성될 수도 있지만, 상이한 값들 (예를 들어, 제 1 계층 노드들의 국부 영역들 (110, 112, 114, 및 116) 과 연관된 값들) 을 가질 수도 있는 연결 강도들 (또는 가중치들) 을 갖는다. 국부 연결된 접속 패턴은 상위 계층에서 공간적으로 별개의 수용 필드들을 발생시킬 수도 있는데, 이는 주어진 영역에서 상위 계층 노드들이 네트워크에 대한 총 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 튜닝되는 입력들을 수신할 수도 있기 때문이다.
국부 연결된 뉴럴 네트워크의 하나의 타입은 컨볼루션 뉴럴 네트워크 (CNN) 이다. 도 1c 는 컨볼루션 뉴럴 네트워크 (106) 의 예를 도시한다. 컨볼루션 뉴럴 네트워크 (106) 는, (예를 들어, 제 1 계층 노드들의 다른 국부 영역들과 오버랩하는 국부 영역 (108) 에 대해) 제 2 계층에서 각각의 노드에 대한 입력들과 연관된 연결 강도들이 공유되도록 구성될 수도 있다. 컨볼루션 뉴럴 네트워크들은 입력들의 공간적 위치들이 의미있는 문제들에 매우 적합하다.
컨볼루션 뉴럴 네트워크의 하나의 타입은 딥 컨볼루션 네트워크 (DCN) 이다. 딥 컨볼루션 네트워크들은 다수의 컨볼루션 계층들의 네트워크들이며, 이는 예를 들어 풀링 및 정규화 계층들로 추가로 구성될 수 있다.
도 1d 는 이미지 캡처링 디바이스 (130) 에 의해 생성된 이미지 (126) 에서 시각적 피처들을 인식하도록 설계된 DCN (100) 의 일 예를 도시한다. 예를 들어, 이미지 캡처링 디바이스 (130) 가 차량에 또는 차량 위에 탑재된 (또는 달리 차량과 함께 이동하는) 카메라이면, DCN (100) 은 교통 표지판 및 심지어 교통 표지판의 숫자를 식별하도록 여러 지도 러닝 기법으로 트레이닝될 수 있다. 이와 마찬가지로, DCN (100) 은 차선 마킹들을 식별하거나 신호등들을 식별하는 것과 같은 다른 태스크들을 위해 트레이닝될 수도 있다. 이들은 단지 일부 예의 태스크들일 뿐이고, 많은 다른 것들이 가능하다.
도 1d 의 예에서, DCN (100) 은 피처 추출 섹션 및 분류 섹션을 포함한다. 이미지 (126) 를 수신시, 컨볼루션 계층 (132) 은 피처 맵들 (또는 중간 활성화들)(118) 의 제 1 세트를 생성하기 위해 이미지 (126) 에 컨볼루션 커널들 (예를 들어, 도 2 에 도시되고 설명된 바와 같음) 을 적용한다. 일반적으로, "커널" 또는 "필터"는 입력 데이터 채널의 상이한 양태들을 강조하도록 설계된 가중치들의 다차원 어레이를 포함한다. 다양한 예들에서, "커널" 및 "필터"는 컨볼루션 뉴럴 네트워크에서 적용되는 가중치들의 세트들을 지칭하기 위해 상호 교환적으로 사용될 수 있다.
피처 맵들의 제 1 세트 (118) 는 피처 맵들의 제 2 세트 (120) 를 생성하기 위해 풀링 계층 (예를 들어, 최대 풀링 계층, 미도시) 에 의해 서브샘플링될 수도 있다. 풀링 계층은 모델 성능을 향상시키기 위해 많은 정보를 유지하면서 피처 맵들의 제 1 세트 (118) 의 사이즈를 감소시킬 수 있다. 예를 들어, 피처 맵들의 제 2 세트 (120) 는 풀링 계층에 의해 28x28 매트릭스로부터 14x14 매트릭스로 다운샘플링될 수 있다.
이 프로세스는 많은 계층들을 통하여 반복될 수도 있다. 즉, 피처 맵들의 제 2 세트 (120) 는 추가로, 피처 맵들의 하나 이상의 후속 세트 (미도시) 를 생성하기 위해 하나 이상의 후속 컨볼루션 계층 (미도시) 을 통해 컨볼루션될 수도 있다.
도 1d 의 예에서, 피처 맵들의 제 2 세트 (120) 가 전체 연결된 계층 (124) 에 제공되고 이 계층은 이어서 출력 피처 벡터 (128) 를 생성한다. 출력 피처 벡터 (128) 의 각각의 피처는, "표지판", "60" 및 "100"과 같은, 이미지 (126) 의 가능한 피처에 대응하는 수를 포함할 수도 있다. 일부 경우들에서, 소프트맥스 함수 (미도시) 는 출력 피처 벡터 (128) 에서의 수들을 확률로 컨버팅할 수도 있다. 이러한 경우들에, DCN (100) 의 출력 (122) 은 하나 이상의 피처들을 포함하는 이미지 (126) 의 확률이다.
소프트맥스 함수 (미도시) 는 DCN (100) 의 출력 (122) 이 하나 이상의 피처들, 이를 테면, 이미지 (126) 로서 그 위에 숫자 "60" 를 갖는 표지판을 포함하는 이미지 (126) 의 하나 이상의 확률들이도록 하기 위해 출력 피처 벡터 (128) 의 개별 엘리먼트들을 확률로 컨버팅할 수 있다. 따라서, 본 예에서, "표지판" 및 "60"에 대한 출력(122)의 확률들은, "30", "40", "50", "70", "80", "90" 및 "100"과 같은 출력(122)의 다른 엘리먼트들의 확률들보다 높아야 한다.
DCN (100) 을 트레이닝하기 전에, DCN (100) 에 의해 생성된 출력 (122) 은 부정확할 수 있다. 따라서, 출력 (122) 과 선험적으로 알려진 타겟 출력 사이에 에러가 연산될 수도 있다. 예를 들어, 여기서 타겟 출력은 이미지 (126)가 "표지판" 및 숫자 "60"을 포함한다는 표시이다. 그 다음, 알려진 타겟 출력을 사용하여, DCN (100) 의 가중치들은 트레이닝을 통해 조정될 수 있어서, DCN (100) 의 후속 출력 (122) 은 (높은 확률들을 갖는) 타겟 출력을 달성한다.
DCN (100) 의 가중치들을 조정하기 위해, 러닝 알고리즘은 가중치들에 대한 그래디언트 벡터를 연산할 수도 있다. 그래디언트 벡터는, 가중치가 특정 방식으로 조정되었을 경우 에러가 증가하거나 감소할 양을 표시할 수도 있다. 그 후 가중치들은 에러를 감소시키도록 조정된다. 가중치들을 조정하는 이 방식은 이 조정 프로세스는 DCN (100) 의 계층들을 통하는 "백워드 패스"를 수반하기 때문에, "역전파"로서 지칭될 수도 있다.
실제로, 가중치들의 에러 그래디언트는 소수의 예들에 걸쳐 연산될 수도 있어서, 연산된 그래디언트는 트루 (true) 에러 그래디언트에 근사한다. 이러한 근사화는 확률적 그래디언트 하강법 (stochastic gradient descent) 으로 지칭될 수도 있다. 확률적 그래디언트 하강법은, 전체 시스템의 달성가능한 에러율이 감소하는 것을 멈출 때까지 또는 에러율이 타겟 레벨에 도달할 때까지 반복될 수도 있다.
트레이닝 후에, DCN (100) 에는 새로운 이미지들이 제시될 수 있고, DCN (100) 은 새로운 이미지에 있는 다양한 피처들의 분류들 또는 확률들과 같은 추론들을 생성할 수 있다.
컨볼루션 뉴럴 네트워크에 대한 컨볼루션 기법
컨볼루션은 일반적으로 입력 데이터 세트로부터 유용한 피처들을 추출하는 데 사용된다. 예를 들어, 전술한 바와 같은 컨볼루션 뉴럴 네트워크들에서, 컨볼루션은 가중치들이 트레이닝 동안 자동으로 러닝되는 커널들 및/또는 필터들을 사용하여 상이한 피처들의 추출을 가능하게 한다. 추출된 피처들은 추론을 하기 위해 결합된다.
활성화 함수는 컨볼루션 뉴럴 네트워크의 각각의 계층 이전 및/또는 이후에 적용될 수 있다. 활성화 함수들은 일반적으로 뉴럴 네트워크의 노드의 출력을 결정하는 수학적 함수들이다. 따라서, 활성화 함수는 노드의 입력이 모델의 예측과 관련되는지 여부에 기초하여 노드가 정보를 전달해야 하는지 여부를 결정한다. 일 예에서, y = conv(x)(즉, y는 x의 컨볼루션임)인 경우, x 및 y 둘 모두는 일반적으로 "활성화들"로서 간주될 수 있다. 그러나, 특정 컨볼루션 동작 관점에서, x는 또한 x가 특정 컨볼루션 이전에 존재함에 따라 "사전 활성화들" 또는 "입력 활성화들"로 지칭될 수 있고, y는 출력 활성화들 또는 피처 맵으로 지칭될 수 있다.
도 2 는 12-픽셀 x 12-픽셀 x 3-채널 입력 이미지 (202) 가 5 x 5 x 3 컨볼루션 커널 (204) 및 1 의 스트라이드 (또는 스텝 사이즈) 를 사용하여 컨볼루션되는 통상적인 컨볼루션의 예를 도시한다. 결과적인 피처 맵 (206) 은 8 픽셀 x 8 픽셀 x 1 채널이다. 이 예에 도시된 바와 같이, 통상적인 컨볼루션은 채널 차원 (여기서는 3 개의 채널들로부터 1 개의 채널까지) 을 포함한, 출력 데이터 (여기서는, 12 x 12 로부터 8 x 8 픽셀들까지) 에 비교된 입력 데이터의 차원을 변경할 수도 있다. 컨볼루션 커널 (204) 은 피처 맵 (206) 의 단일 엘리먼트를 생성하기 위해 커널이 컨볼루션되는 입력 이미지 (202) 의 일부에 대응하는 것으로 도시된다. 일반적으로, 이 예에서와 같이, 커널 (204) 의 깊이 (d = 3) 는 입력 이미지 (202) 의 채널들의 수와 매칭된다.
(예를 들어, FLOPs (floating-point operations per second) 에서 측정된) 연산적 부담 및 컨불루션 계층들을 포함한 뉴럴 네트워크와 연관된 파라미터들의 수를 감소시키기 위한 방법은 컨볼루션 계층들을 인수분해하는 것이다. 예를 들어, 도 2 에 도시된 바와 같은 공간 분리가능 컨볼루션은 2 개의 성분들: (1) 각각의 공간 채널이 깊이별 컨볼루션에 의해 독립적으로 컨볼브되는 깊이별 컨볼루션 (예를 들어, 공간 융합); 및 (2) 모든 공간 채널이 선형으로 결합되는 경우인 포인트별 컨볼루션 (예를 들어, 채널 융합) 으로 인수분해된다. 깊이별 분리가능 컨벌루션의 일 예가 도 3a 및 도 3b 에 도시되어 있다. 일반적으로, 공간 융합 동안, 네트워크는 공간 평면들로부터 피처들을 러닝하고, 채널 융합 동안, 네트워크는 채널들에 걸쳐 이들 피처들 사이의 관계들을 러닝한다.
일 예에서, 깊이별 분리가능 컨볼루션은 공간 융합에 대해 5x5 커널들 및 채널 융합에 대해 1x1 커널들을 사용하여 구현될 수 있다. 특히, 채널 융합은 깊이 d 의 입력 이미지에서 모든 단일 포인트를 통해 반복되는 1x1xd 커널을 사용할 수 있으며, 여기서 커널의 깊이 d는 일반적으로 입력 이미지의 채널들의 수와 매칭한다. 포인트별 컨볼루션을 통한 채널 융합은 효율적인 연산을 위한 차원 감소에 유용하다. 1x1xd 커널을 적용하고 커널 뒤에 활성화 계층을 추가하는 것은 네트워크 추가 깊이를 제공하며 이는 네트워크 성능을 증가시킬 수도 있다.
특히, 도 3a 에서, 12-픽셀 x 12-픽셀 x 3-채널 입력 이미지 (302) 는 각각 5 x 5 x 1 차원을 갖는 3개의 별개의 커널들 (304A-C) 을 포함하는 필터와 컨벌루션되어, 8 픽셀 x 8 픽셀 x 3 채널의 피처 맵 (306) 을 생성하고, 여기서 각각의 채널은 도 3a 에서 대응하는 음영을 갖는 커널들 (304A-C) 중 개별 커널에 의해 생성된다. 각각의 컨볼루션 커널 (304A-C) 은 피처 맵 (306) 의 단일 엘리먼트를 생성하기 위해 커널이 컨볼루션되는 입력 이미지 (302) 의 일부에 대응하는 것으로 도시된다. 여기서 커널들 (304A-C) 의 결합된 깊이(d = 3)는 입력 이미지 (302) 의 채널들의 수와 매칭한다.
그 다음, 피처 맵 (306) 은 8 픽셀 x 8 픽셀 x 1 채널의 피처 맵 (310) 을 생성하기 위해 차원 1 x 1 x 3 을 갖는 커널 (308) 과 포인트별 컨벌루션 동작을 사용하여 추가로 컨볼루션된다. 이 예에 도시된 바와 같이, 피처 맵 (310) 은 감소된 차원 (1 채널 대 3 채널) 을 가지며, 이는 이들로 더 효율적인 연산을 허용한다.
도 3a 및 3b 의 깊이별 분리가능 컨볼루션의 결과는 도 2의 통상적인 컨볼루션과 실질적으로 유사하지만, 연산들의 수는 상당히 감소되고, 따라서 깊이별 분리가능 컨볼루션은 네트워크 설계가 허용하는 경우 상당한 효율 이득을 제공한다.
도 3b 에 도시되지 않았지만, 다수의 (예를 들어, m개의) 포인트별 컨볼루션 커널들 (308)(예를 들어, 필터의 개별 컴포넌트들) 이 컨볼루션 출력의 채널 차원을 증가시키는 데 사용될 수 있다. 따라서, 예를 들어, m = 256 의 1x1x3 커널들 (308) 이 생성될 수 있으며, 여기서 각각의 출력은 8-픽셀 x 8-픽셀 x 1-채널 피처 맵 (예를 들어, 피처 맵(310)) 이고, 이들 피처 맵들은 8 픽셀 x 8 픽셀 x 256 채널의 결과적인 피처 맵을 얻기 위해 적층될 수 있다. 채널 차원에서의 결과적인 증가는 트레이닝을 위한 더 많은 파라미터들을 제공하며, 이는 (예를 들어, 입력 이미지 (302) 에서) 피처들을 식별하는 컨볼루션 뉴럴 네트워크의 능력을 개선할 수 있다.
예시적인 컴퓨트-인-메모리(compute-in-memory; CIM) 아키텍처
CIM-기반 머신 러닝 (ML)/인공 지능 (AI) 은 (예를 들어, 스루풋 및 신호 품질을 최적화하거나 또는 적어도 증가시키기 위해) 이미지 및 오디오 프로세싱 및 무선 통신 결정을 행하는 것을 포함한 폭넓은 태스크들에 사용될 수 있다. 또한, CIM 은 여러 타입들의 메모리 아키텍처들, 이를 테면, DRAM (dynamic random-access memory), (예를 들어, 도 5 에서와 같은 SRAM 셀에 기초한) SRAM (static random-access memory), MRAM (magnetoresistive random-access memory), 및 저항성 랜덤-액세스 메모리 (ReRAM 또는 RRAM) 에 기초할 수도 있고, CPU들 (central processing units), DSP들 (digital signal processors), GPU들 (graphics processing units), FPGA들 (field-programmable gate arrays), AI 기속기들, 및 그 외의 것들을 포함한 여러 타입들의 프로세싱 유닛들에 연결될 수도 있다. 일반적으로, CIM 은 유리하게 메모리 외 또는 메모리 내에 데이터의 이동이 데이터의 연산보다는 더 많은 전력을 소모하는 것인 "메모리 웰" 문제를 감소시킬 수도 있다. 따라서, 메모리에서 연산을 수행함으로써, 상당한 전력 절감들이 실현될 수 있다. 이것은 특히 저전력 에지 프로세싱 디바이스들, 모바일 디바이스들 등과 같은 다양한 타입들의 전자 디바이스들에 유용하다.
예를 들어, 모바일 디바이스는 데이터를 저장하고 CIM 동작들을 수행하도록 구성된 메모리 디바이스를 포함할 수 있다. 모바일 디바이스는 모바일 디바이스의 카메라 센서에 의해 생성된 이미지 데이터와 같은 모바일 디바이스에 의해 생성된 데이터에 기초하여 ML/AI 동작을 수행하도록 구성될 수 있다. 따라서, 모바일 디바이스의 메모리 제어기 유닛 (MCU) 은 다른 온보드 메모리 (예를 들어, 플래시 또는 RAM) 로부터 메모리 디바이스의 CIM 어레이로 가중치들을 로딩하고 입력 피처 버퍼들 및 출력 (예를 들어, 출력 활성화) 버퍼들을 할당할 수 있다. 그 다음, 프로세싱 디바이스는, 예를 들어, 입력 버퍼에 계층을 로딩하고 CIM 어레이에 로딩된 가중치들로 계층을 프로세싱함으로써 이미지 데이터의 프로세싱을 시작할 수 있다. 이러한 프로세싱은 이미지 데이터의 각각의 계층에 대해 반복될 수 있고, 출력들 (예를 들어, 출력 활성화들) 은 출력 버퍼들에 저장되고, 이어서 얼굴 인식과 같은 ML/AI 태스크를 위해 모바일 디바이스에 의해 사용될 수 있다.
위에 설명된 바와 같이, 통상적인 CIM 프로세스들은 아날로그 신호들을 사용하여 연산을 수행할 수도 있고, 이는 연산 결과들의 부정확성을 초래하여 뉴럴 네트워크 연산들에 악영향을 미칠 수 있다. 아날로그 CIM 방식들에 대한 하나의 새로운 솔루션은 DCIM (digital compute-in-memory) 방식들이고, 여기서 연산들은 디지털 신호들을 사용하여 수행된다. 본 명세서에서 사용되는 바와 같이, 용어 "CIM"은 아날로그 CIM만을 의미하거나 디지털 CIM만을 의미하는 것이 문맥으로부터 명확하지 않는 한, 아날로그 CIM 및 디지털 CIM 중 어느 하나 또는 둘 모두를 지칭할 수 있다.
도 4 는 본 개시의 특정 양태들에 따른, 일 예의 DCIM 회로 (400) 의 블록 다이어그램이다. 다수의 프로세싱 엘리먼트들을 포함하는 뉴럴 네트워크 아키텍처에서, DCIM 회로 (400) 는 단일 DCIM 프로세싱 엘리먼트 (PE) 로서 기능할 수 있다.
도 4 의 예에서, DCIM 회로 (400) 는 32개의 워드 라인들 (4040 내지 40431)(로우들로도 또한 지칭됨) 및 8개의 컬럼들 (4060 내지 4067) 을 갖는 CIM 어레이 (401)(예를 들어, DCIM 어레이) 를 포함한다 (예를 들어, 각각의 컬럼은 다수의 비트라인들, 이를 테면, 32개의 비트 라인들로 구성될 수 있다). 워드 라인들 (4040 내지 40431) 은 집합적으로 "워드 라인들(WL들)(404)"로 지칭되고, 컬럼들 (4060 내지 4067) 은 집합적으로 "컬럼들 (406)" 로 지칭된다. CIM 어레이 (401) 가 이해를 용이하게 하기 위해 32개의 워드-라인들 및 8개의 컬럼들로 구현되지만, CIM 어레이는 임의의 수의 워드-라인들 및 임의의 수의 컬럼들로 구현될 수 있다. 도시된 바와 같이, CIM 셀들 (4020-0 내지 40231-7)(집합적으로 "CIM 셀들 (402)"로 지칭됨) 은 WL들 (404) 과 컬럼들 (406) 의 교차부들에서 구현된다.
CIM 셀들 (402) 각각은 예를 들어, 도 5 와 관련하여 아래에서 설명되는 CIM 셀 아키텍처를 사용하여 구현될 수 있다.
CIM 셀들 (402) 은 뉴럴 네트워크의 가중치 비트들로 로딩될 수 있다. 활성화 입력들은 한 번에 하나의 벡터씩, CIM 어레이 (401) 에 입력 매트릭스 (예를 들어, 32-로우 x 8-컬럼 매트릭스) 로서 제공될 수 있다. 도 4 에 도시된 바와 같이, 활성화 입력 비트들 a(0,0) 내지 a(31,0)(예를 들어, 제 1 벡터) 는 개별적인 워드 라인들 (404) 에 제공될 수 있고, CIM 셀들 (402) 은 예를 들어, 뉴럴 네트워크의 가중치들 w(0,0) 내지 w(31,7) 을 저장할 수 있다. 이 경우, CIM 셀들 (4020-0 내지 4020-7) 은 가중치 비트들 w(0,0) 내지 w(0,7) 을 저장할 수 있고, CIM 셀들 (4021-0 내지 4021-7) 은 가중치 비트들 w(1,0) 내지 w(1,7) 을 저장할 수 있는 등등이다. 각각의 워드라인은 멀티비트 가중치를 저장할 수 있다. 예를 들어, 가중치 비트들 w(0,0) 내지 w(0,7) 은 뉴럴 네트워크의 가중치의 8 비트 (예를 들어, 8-비트 가중치) 를 나타낼 수 있다. 각각의 CIM 셀은 수신된 활성화 입력 비트와 CIM 셀에 저장된 가중치 비트의 비트별 곱셈을 수행하고 결과를 CIM 셀의 출력 (예를 들어, 도 5와 관련하여 설명된 바와 같은 판독 비트 라인 (RBL)) 에 전달할 수 있다.
도시된 바와 같이, DCIM 회로 (400) 는 8개의 가산기 트리들 (4100 내지 4107)(집합적으로 "가산기 트리들(410)"로 지칭됨) 을 포함할 수 있는 비트-컬럼 가산기 트리 (409) 를 포함할 수 있으며, 각각의 가산기 트리는 컬럼들 (406) 의 각각의 하나에 대해 구현된다. 가산기 트리들 (410) 각각은 로우들 (406) 중 각각의 컬럼 상의 CIM 셀들 (402) 로부터의 출력 신호들을 가산하고, 가산기 트리들 (410) 은 병렬로 (예를 들어, 동시에) 동작할 수 있다. 가산기 트리들 (410) 의 출력들은 도시된 바와 같이 가중치 시프트 가산기 트리 회로 (412) 에 커플링될 수 있다. 가중치-시프트 가산기 트리 회로 (412) 는 다수의 가중치-시프트 가산기들 (414) 을 포함하며, 이들 각각은 비트-시프트-및-가산 연산의 수행을 용이하게 하기 위해 비트-시프트-및-가산 회로를 포함한다. 즉, 컬럼 (4060) 상의 CIM 셀들은 각각의 워드 라인 (404) 상의 각각의 가중치들에 대한 최상위 비트들 (MSBs) 을 저장할 수 있고, 컬럼 (4067) 상의 CIM 셀들은 각각의 워드 라인 상의 각각의 가중치들에 대한 최하위 비트들 (LSBs) 을 저장할 수 있다. 따라서, 컬럼들 (406) 에 걸쳐 가산을 수행할 때, 연관된 컬럼 상의 비트들의 유의성을 설명하기 위해 비트들을 시프트하도록 비트 시프트 동작이 수행된다.
가중치-시프트 가산기 트리 회로 (412) 의 출력은 활성화-시프트 누산기 회로 (416) 에 제공된다. 활성화-시프트 누산기 회로 (416) 는 비트-시프트 회로 (418), 직렬 누산기 (420), 및 플립-플롭 (FF) 어레이 (422) 를 포함한다. 예를 들어, FF 어레이 (422) 는 레지스터를 구현하는 데 사용될 수 있다.
특정 양태들에 대해, 도 4 의 DCIM 회로 (400) 의 다양한 엘리먼트들은 (라벨 "시스템 주파수 x 1"에 의해 표시된 바와 같이) 공통 클록 주파수로 동작될 수 있다.
DCIM 회로 (400) 의 동작 동안, 활성화 회로부 (490) 는 제 1 활성화 사이클 동안 연산을 위해 CIM 셀 (402) 에 활성화 입력 비트 a(0,0) 내지 a(31,0) 의 제 1 세트 (예를 들어, 32개의 활성화 입력 피처들의 배치의 제 1 벡터) 를 제공한다. 활성화 입력 비트들 a(0,0) 내지 a(31,0) 의 제 1 세트는, 활성화 입력들의 최상위 비트들을 나타낼 수 있다. 각각의 로우 (406) 상의 연산들의 출력들은 가산기 트리들 (410) 중 개별적인 하나를 사용하여 가산된다. 가산기 트리들 (410) 의 출력들은 가중치-시프트 가산기 트리 회로 (412) 를 사용하여 가산되고, 그 결과들은 활성화-시프트 누산기 회로 (416) 에 제공된다. 활성화 입력들의 최하위 비트들을 나타내는 활성화 입력 비트들이 프로세싱될 때까지, 활성화 입력들의 제 2 최상위 비트들을 나타낼 수 있는 활성화 입력 비트들 a(0,1) 내지 a(31,1)(예를 들어, 제 2 벡터) 등등과 같은 후속 활성화 사이클들 동안 활성화 입력 비트들의 다른 세트들 (배치에서의 다른 입력 벡터들) 에 대해 동일한 동작이 수행된다. 비트 시프트 회로 (418) 는 활성화 사이클에 기초하여 비트 시프트 동작을 수행한다. 예를 들어, 8 개의 활성화 사이클을 사용하여 프로세싱된 8-비트 활성화 입력에 대해, 비트-시프트 회로 (418) 는 제 1 활성화 사이클에 대해 8-비트 시프트, 제 2 활성화 사이클에 대해 7-비트 시프트 등등을 수행할 수도 있다. 활성화 사이클들 후에, 비트-시프트 회로 (418) 의 출력들은 직렬 누산기 (420) 를 사용하여 누산되고, FF 어레이 (422) 에 저장되며, FF 어레이는 최종 누산 결과를 다른 컴포넌트 (예를 들어, 아래 설명된 바와 같이 출력 시스톨릭 플로우 아키텍처에서와 같이 출력 TCM 또는 DCIM 회로) 에 전송하기 위한 레지스터로서 사용될 수 있다.
도 4 의 DCIM 회로 (400) 는 비트별 저장 및 비트별 곱셈을 제공한다. 가산기 트리들 (410) 은 컬럼들 (406) 에 대한 모집단 카운트 가산을 수행한다. 즉, 가산기 트리들 (410) 각각은 (예를 들어, 컬럼당 모든 32개의 로우들을 가산하여) 컬럼에 대한 CIM 셀들의 출력 신호들을 가산한다. (예를 들어, 8개의 컬럼들에 대해 도시된 바와 같은 3개의 스테이지들을 갖는) 가중치 시프트 가산기 트리 회로 (412) 는 (예를 들어, 활성화 사이클 동안 주어진 활성화 입력 비트 포지션에 대한 누산 결과를 제공하여) 8개의 컬럼들에 대해 생성된 가중된 합을 결합한다. 활성화-시프트 누산기 회로 (416) 는 다수의 (예를 들어, 8개의) 활성화 사이클들로부터의 결과들을 결합하고 최종 누산 결과를 출력한다. 예를 들어, 비트-시프트 회로 (418) 는 연관된 활성화 사이클에 기초하여 가중치-시프트 가산기 트리 회로 (412) 의 출력에서 비트들을 시프트한다. 직렬 누산기 (420) 는 비트-시프트 회로 (418) 에 의해 생성된 시프트된 가산기 출력을 누산한다. FF 어레이 (422) 를 사용하여 구현된 전달 레지스터는 최종 활성화 사이클 동안의 연산이 완료된 후에 직렬 누산기 (420) 의 출력을 복사한다.
DCIM 회로 (400) 는 활성화 입력들 및/또는 가중치들의 상이한 비트 사이즈들을 사용하여 연산들에 걸쳐 선형 에너지 스케일링을 제공한다. 즉, 가산기 트리들 (410) 및 가중치-시프트 가산기 트리 회로 (412) 를 사용하는 것은 비트-사이즈 구성능력을 제공하여, m-비트 가중치 누산과 함께 n-비트 활성화 입력을 허용하며, n 및 m은 양의 정수이다. DCIM 회로 (400) 와 연관된 에너지 소비는 활성화 입력들 및 가중치들에 대해 구성된 비트-사이즈에 기초하여 선형적으로 스케일링될 수 있다.
도 4 의 예시적인 DCIM 회로 (400) 는 비교적 콤팩트할 수 있고 (점유된 면적의 관점에서) 비교적 낮은 에너지를 소비할 수 있다. 그러나, DCIM 회로 (400) 및 그 내부에 사용되는 "의사-가중치-고정 맵핑"은 아래 논의된 부분 합 누산과의 일부 도전과제들을 가질 수도 있다. 본 명세서에 사용된 바와 같이, "의사-가중치-고정 맵핑"은 일반적으로, 가능한 한 신속하게 최종 출력들을 생성하기 위한 노력으로, 다수의 깊이-사이클들 각각에 대한 입력 피처들의 배치 (batch) 를 프로세싱하는 가중치-고정 재사용 방식을 지칭한다. 예를 들어, DCIM 회로 (400) 는 의사-가중치-고정 방식을 가능하게 하며, 여기서 32개의 활성화 입력 피처들의 배치가 동시에 프로세싱될 수 있다. 더 작은 배치 사이즈 (예를 들어, 32 대 256 피처들) 는 최종 출력 결과가 더 신속하게 생성될 수 있게 하는데, 그 이유는 깊이-사이클들을 통한 실행을 종료하는 사이클들의 총 수가, 출력 생성을 상당히 지연시키는 경우인 모든 입력들이 깊이-사이클들 각각에 대해 프로세싱되는 경우에 비해 훨씬 더 적어지게 되기 때문이다. 도시된 바와 같이, 가중치들은 입력 배치에서 활성화 입력 비트들의 상이한 세트들에 대해 재사용된다. 마지막 사이클에서, 최종 출력들은 후술되는 바와 같이 메모리 (예를 들어, 출력 TCM) 로 전송될 수 있다.
도 5 는 도 4 의 DCIM 회로 (400)에서의 CIM 어레이 (401) 와 같은 CIM 어레이에서 구현될 수 있는 정적 랜덤 액세스 메모리 (SRAM) 의 예시적인 CIM 셀 (500) 을 예시한다. CIM 셀 (500) 은 CIM 셀이 8개의 트랜지스터로 구현되기 때문에 8-트랜지스터 (8T) SRAM 셀로 지칭될 수 있다.
도시된 바와 같이, CIM 셀 (500) 은 출력 (514) 및 출력 (516) 을 갖는 크로스 커플링된 인버터 쌍 (524) 을 포함할 수 있다. 도시된 바와 같이, 크로스커플링된 인버터 쌍 출력 (514) 은 패스 게이트 트랜지스터 (502) 를 통해 기록 비트 라인 (WBL)(506) 에 선택적으로 커플링되고, 크로스커플링된 인버터 쌍 출력 (516) 은 패스 게이트 트랜지스터 (518) 를 통해 상보적 기록 비트 라인 (WBLB)(520)에 선택적으로 커플링된다. WBL (506) 및 WBLB (520) 는 크로스커플링된 인버터 쌍 (524) 에 기록 (예를 들어, 저장) 될 상보적 디지털 신호들을 제공하도록 구성된다. WBL 및 WBLB 는 CIM 셀 (500) 에서 뉴럴 네트워크 가중치에 대한 비트를 저장하는 데 사용될 수 있다. 패스 게이트 트랜지스터들 (502, 518) 의 게이트들은 도시된 바와 같이 기록 워드 라인 (WWL)(504) 에 커플링될 수 있다. 예를 들어, 기록될 디지털 신호는 WBL 에 제공될 수 있다 (그리고 상보성의 디지털 신호가 WBLB 에 제공된다). 패스 게이트 트랜지스터들 (502, 518) ― 이는 여기서는 n-형-전계 효과 트랜지스터들 (NFETs) 로서 구현됨 ― 은 그 후, WWL (504) 에 로직 하이 신호를 제공하는 것에 의해 턴온되어, 디지털 신호가 크로스커플링된 인버터 쌍(524) 에 저장되게 한다.
도시된 바와 같이, 크로스커플링된 인버터 쌍 출력 (514) 은 트랜지스터 (510) 의 게이트에 커플링될 수 있다. 트랜지스터 (510) 의 소스는 기준 전위 노드 (Vss 또는 전기 접지) 에 커플링될 수 있고, 트랜지스터 (510) 의 드레인은 트랜지스터 (512) 의 소스에 커플링될 수 있다. 트랜지스터 (512) 의 드레인은 도시된 바와 같이 판독 비트 라인 (RBL)(522) 에 커플링될 수 있다. 트랜지스터 (512) 의 게이트는 판독 워드 라인 (RWL)(508) 을 통해 제어될 수 있다. RWL (508) 은 활성화 입력 신호를 통해 제어될 수 있다.
판독 사이클 동안, RBL (522) 은 로직 하이로 프리차지될 수 있다. 크로스커플링된 인버터 쌍 출력(514)에 저장된 활성화 입력 비트 및 가중치 비트 모두가 로직 하이이면, 트랜지스터 (510, 512) 는 모두 턴 온되어, RBL (522) 을 트랜지스터 (510) 의 소스에서의 기준 전위 노드에 전기적으로 커플링하고 RBL (522) 을 로직 로우로 방전한다. 크로스커플링된 인버터 쌍 출력 (514) 에 저장된 활성화 입력 비트 또는 가중치 비트가 로직 로우이면, 트랜지스터 (510, 512) 중 적어도 하나는 턴 오프되어, RBL (522) 은 로직 하이로 유지된다. 따라서, RBL (522) 에서의 CIM 셀 (500) 의 출력은 가중치 비트 및 활성화 입력 비트 둘 모두가 로직 하이일 때만 로직 로우이고, 그렇지 않으면 로직 하이로 되어, NAND 게이트 동작을 효과적으로 구현한다.
예시적인 뉴럴-네트워크-프로세싱-아키텍처들 및 데이터플로우
도 6 은 본 개시의 특정 양태들이 구현될 수 있는 예시적인 데이터플로우 시퀀스를 예시하는 예시적인 뉴럴-네트워크-프로세싱-아키텍처들 (600) 의 블록 다이어그램이다. 뉴럴-네트워크-프로세싱-아키텍처들 (600) 은 데이터 연산 (예를 들어, 곱셈-및-누산 (MAC) 동작들) 및 다른 동작들을 수행하기 위한 복수의 프로세싱 엘리먼트들 (PE들)(602) 을 포함할 수 있다. PE들 (602) 은 도 4 의 DCIM 회로 (400) 와 같은 다양한 적합한 회로들 중 임의의 것으로 구현될 수도 있다. 아키텍처 (600) 는 또한 글로벌 메모리 (604)("글로벌 버퍼"로 라벨링됨), 가중 밀착 결합 메모리 (TCM) (606), 활성화 TCM (608), 출력 TCM (610), PE-맵퍼 로직 (612)(이는 또한 버스 중재 로직 (미도시) 및/또는 디저털 포스트-프로세싱 로직 (미도시) 을 포함할 수도 있음), 메모리 버스 (614), 및 PE 버스 (616) 를 포함할 수도 있다. 본 명세서에서 사용되는 바와 같이, TCM은 일반적으로 PE들 (602) 과 같은 프로세서(들)로부터의 전용 연결에 의해 액세스되는 메모리를 지칭한다. 별개의 TCM들로서 도시되지만, 가중 TCM (606), 활성화 TCM (608), 및/또는 출력 TCM (610) 은 커플링될 수 있다. 메모리 버스 (614) 는 글로벌 메모리 (604) 를 가중 TCM (606), 활성화 TCM (608) 및 출력 TCM (610) 에 커플링할 수 있다. PE 버스 (616) 는 PE들 (602) 및 PE-맵퍼 로직 (612) 을 함께 커플링할 수 있다. 이러한 방식으로, PE들 (602) 은 메모리 리소스들 (예를 들어, 가중 TCM, 활성화 TCM 및 출력 TCM) 에 액세스할 수 있다.
도시된 데이터플로우 시퀀스에서, 가중치들은 글로벌 메모리로부터 가중 TCM (606) 으로 로딩될 수 있다. 그 다음, 가중치들은 가중 TCM (606) 으로부터 PE 가중치 어레이들로 (예를 들어, PE들의 CIM 셀들에서) 로딩될 수 있다. 활성화 입력들은 글로벌 메모리 (604) 로부터 활성화 TCM (608) 으로 로딩될 수 있다. 그 다음, 활성화 입력들은 활성화 TCM (608) 으로부터 PE 버스 (616)(또는 활성화 버스로서 동작하는 PE 버스의 적어도 일부) 로 로딩될 수 있다. 가중치들이 PE들 (602) 에 로딩되고 활성화들이 활성화 버스 상에서 준비된 후, PE들 (602) 은 최종 누산 결과들을 생성하기 위해 다수의 연산 사이클들에 걸쳐 연산들 (예를 들어, MAC 동작들) 을 수행할 수 있다. 최종 누산 결과들은 (예를 들어, PE-맵퍼 로직 (612) 에 의해, 또는 더 구체적으로 특정 경우들에 대해, 디지털 포스트-프로세싱 로직에 의해) 프로세싱될 수 있고, 프로세싱된 결과들은 출력 TCM (610) 에 기록될 수 있다. 출력 TCM (610) 으로부터, 프로세싱된 누산 결과들은 메모리 버스 (614) 를 통해 글로벌 메모리 (604) 에 로딩될 수 있다.
예시적인 재구성가능 시스톨릭 플로우 아키텍처 및 부분 합 관리
위에 설명된 바와 같이, 컴퓨트-인-메모리 (compute-in-memory; CIM) 기술은 메모리 및 프로세싱 시스템 (예를 들어, 중앙 프로세싱 유닛 (CPU)) 으로부터 데이터를 이동함으로써 발생하는 에너지 및 속도 병목 현상을 해결하고 있다. CIM 은 가중치-고정 사용 사례들에서 에너지 효율성 및 상당히 적은 메모리 액세스들을 제공한다. 본 명세서에서 사용되는 바와 같이, 용어 "가중치-고정"은 일반적으로 뉴럴 네트워크 가중치들이 동작 동안 (예를 들어, 초기에 로딩된 후에) 고정 상태로 유지되고 입력들이 스트리밍되는 재사용 아키텍처를 지칭한다. 가중치-고정 맵핑은 동작 동안 가중치 업데이트 시간의 오버헤드를 감소시키기 위해 CIM 에서 사용될 수 있다.
이들 이점들에도 불구하고, CIM 및 다른 가중치-고정 맵핑 방식들은 특정 애플리케이션들에서 일부 도전과제들을 가질 수 있다. 예를 들어, 일부 뉴럴 네트워크 프로세싱 회로들 (예를 들어, DCIM PE들) 의 가중치-고정 동작은 이들 회로들로 하여금 최종 누산을 위해 부분 누산 결과들을 메모리 (예를 들어, 출력 TCM) 에 오프로드하고 재로딩 (예를 들어, 기록 및 판독) 하게 할 수 있다. "부분 합 (partial sum)"으로도 지칭되는, 부분 누산 결과는 최종 데이터가 아니고, 또는 다시 말해서, 다음 계층에 대한 활성화 입력 또는 계층의 최종 결과로서 출력 TCM 에 저장될 데이터가 될 (또는 결과가 되기 전에 디지털 포스트-프로세싱 로직으로 전송될) 준비가 아직 되지 않았다. 오히려, 부분 합들은 출력 TCM에 일시적으로 저장될 수 있고, 최종 누산 출력이 준비될 때까지 하나 이상의 사이클들에서 추가 프로세싱을 위해 DCIM PE들로 다시 판독될 수 있다. 이들 부분 합들은 최종 출력들이 (예를 들어, 디지털 포스트-프로세싱 로직에 의해) 프로세싱될 준비가 될 때 폐기될 수 있다.
일부 경우들에서, 가중치-고정 맵핑은 후속 입력 피처 곱셈-및-누산 (MAC) 동작을 위하여 부분 누산 결과들이 버퍼 메모리에 기록되고 버퍼 메모리로부터 다시 판독되도록 강제할 수 있으며, 이는 이 판독/기록이 동일한 MAC 사이클에서 처리될 수 없다면 에너지 및 성능 패널티의 관점에서 (예를 들어, 더 낮은 TOPS (tera-operations per second) 의 관점에서) 오버헤드를 생성할 수 있다. 즉, 이들 부분 누산 결과들을 저장하고 재로딩해야 하는 것은 뉴럴-네트워크-프로세싱 아키텍처에서 저장 영역, 대역폭 및 스루풋 (예를 들어, TOPS) 페널티들을 초래한다. 일부 경우에, 부분 합을 처리하기 위한 회로 오버헤드는 다른 뉴럴 네트워크 프로세싱 솔루션 (예를 들어, 뉴럴 프로세스 유닛들 (NPU들)) 에 비해 DCIM 솔루션의 영역 이점을 감소시킬 수 있다. 이 오프로딩 및 재로딩은 또한 일부 경우들에서 상당한 레이턴시 페널티를 도입할 수 있다.
본 개시의 특정 양태들은 스루풋 페널티 없이 부분 합들을 처리하기 위한 뉴럴-네트워크-프로세싱 아키텍처 및 회로들을 제공하며, 이에 의해 메모리로부터 전후로 기록 및 판독하는 병목 현상을 감소시킨다. 회로들은 동시 곱셈-및-누산 (MAC) 및 부분 합 저장 및 재로드 회로들로 지칭될 수 있다. 아키텍처는 "재구성가능 시스톨릭 플로우 아키텍처"로 지칭될 수 있다. 아키텍처 및 회로들 둘 모두가 아래에서 설명된다.
도 7 은 본 개시의 특정 양태들에 따른, 예시적인 시스톨릭 플로우 아키텍처 (700) 의 블록 다이어그램이다. 시스톨릭 플로우 아키텍처 (700) 는 PE 회로들 (7021 내지 7028)(집합적으로 "PE 회로들 (702)"로 지칭됨) 의 캐스케이드된 시리즈들 (701) 및 글로벌 누산기 회로 (710)(또한 "팻 (fat) 누산기 회로"로 지칭됨) 를 포함할 수도 있다. 8개의 PE 회로들 (702) 이 예시적인 시스톨릭 플로우 아키텍처 (700) 에서 표현되지만, 독자는 시리즈 (701) 가 임의의 수의 캐스케이드된 PE 회로들을 포함할 수 있다는 것을 이해해야 한다.
PE 회로들 (702) 은 도 4 의 DCIM 회로 (400) 와 같은 다양한 적합한 PE 회로들 또는 다른 가중치-고정 맵핑 PE 회로들 중 임의의 것에 의해 구현될 수 있다. PE 회로들 (702) 은 도 6 의 아키텍처 (600) 에서의 PE들 (602) 과 같은 뉴럴 네트워크 아키텍처에서의 PE 회로들 중 적어도 일부를 대체할 수 있다. 도 7 에 예시된 바와 같이, PE 회로들 (702) 각각은 곱셈-및-누산 (MAC) 가산기 트리 (704) 및 로컬 누산기 (706)("경질 누산기"라고도 지칭됨) 를 포함한다. MAC 가산기 트리 (704) 는, CIM 어레이 (401)(예를 들어, 32개의 로우들 및 8개의 컬럼을 가짐), 비트-컬럼 가산기 트리 (409), 및 도 4 의 가중치-시프트 가산기 트리 회로 (412) 와 같은, MAC 동작들을 수행하기 위한 다양한 적합한 회로들 중 임의의 것에 의해 표현되거나 구현될 수 있다. 각각의 PE 회로 (702) 의 로컬 누산기 (706) 는 도 4 의 416 의 활성화-시프트 누산기 회로를 나타내거나 그에 의해 구현될 수 있다. 글로벌 누산기 회로 (710) 는 대형 누산기 (711)(또한 "팻 (fat) 누산기"로 지칭됨) 를 포함할 수 있으며, 대형 누산기는 로컬 누산기들 (706) 의 비트-사이즈 (예를 들어, 21 비트) 에 비해 더 많은 수의 비트들 (예를 들어, 32 비트들) 을 가질 수 있고 이에 따라 도 7 에 음영 표시로 도시된다. 더 작은 비트 사이즈의 로컬 누산기들 (706) 을 갖는 PE 회로들을 설계하는 것에 의해, 캐스케이드된 시리즈 (701) 는 PE 회로들 각각이 더 높은 비트 사이즈의 큰 누산기 (711) 를 갖는 경우보다 더 작은 면적을 점유할 수 있다.
PE 회로들 (702) 은 하나의 PE 회로 (예를 들어, PE 회로 (7021)) 로부터의 로컬 누산기 (706) 의 출력이 후속 PE 회로 (예를 들어, PE 회로 (7022)) 의 MAC 가산기 트리 (704) 에 부분 누산 결과로서 입력되도록 시스톨릭으로 연결될 수 있다. 이 방식으로, 각각의 PE 회로 (702) 로부터의 부분 누산 결과들은 저장되고 이어서 재로딩될 필요가 없다. 개별적인 PE 회로들 대신에, 글로벌 누산기 회로 (710) 는 누산 결과들을 출력 TCM (예를 들어, 출력 TCM (610)) 에 기록할 수 있다. 또한, 각각의 PE 회로 (702) 는 MAC 사이클 동안 동시 시프트 및 MAC 동작들을 수행할 수 있다. 다시 말해서, PE 회로 (702) 가 (예를 들어, 다음 PE 회로로 또는 글로벌 누산기 회로 (710) 로) 데이터를 시프트 아웃하는 동안 동시에, MAC 가산기 트리 (704) 는 입력 데이터로 연산중일 수 있고, 로컬 누산기 (706) 는 실행중일 수 있다. 이러한 동시 시프트 및 MAC 동작은 시프트 레지스터로서 동작하는 로컬 누산기 (706) 에서의 플립-플롭들 (예를 들어, FF 어레이 (422)) 에 기인하여 가능하다.
시스톨릭 플로우 아키텍처 (700) 의 깊이별 공간 타일링은, 깊이-헤비 워크로드들 (depth-heavy workloads) 에서, 최종 결과들을 달성하기 위해 MAC 사이클들의 전체 수를 감소시키고, 부분 합 기입들 및 판독들의 수를 감소시킨다. 또한, 이러한 시스톨릭 구현은 뉴럴 프로세싱 유닛 (NPU) 솔루션과 같은 다른 솔루션들에 비해 더 적은 타이밍 오버헤드를 갖는다. 예를 들어, 8개의 PE 회로들 (702) 의 결과들의 합을 생성하기 위해 단일 MAC 사이클이 소요될 수 있으며, 여기서 8개의 비트-시리얼 클록 사이클들은 하나의 MAC 사이클과 동일하다. 동등한 NPU 솔루션은 동일한 연산을 위해 8개의 MAC 사이클들이 걸릴 수 있다.
8개의 32-로우 PE 회로들 (702) 의 예시적인 방식으로, 시스톨릭 플로우 아키텍처 (700) 는 기본적으로 (단일 PE 회로에 대해 32개의 로우들 대신에) 256개의 로우들을 갖는 메모리 어레이를 에뮬레이트하고 있다. 그러나, 단일, 직접 256-로우 메모리 어레이는 일부 워크로드에 효율적으로 맵핑되지 않을 수 있다. 각각의 PE 회로 (702) 는 가중치들을 병렬로 로딩할 수 있으며, 이는 특히 256-로우 메모리 어레이에 대해 로우별로 가중치들을 로딩하는 것에 비해 가중치-로딩 시간을 감소시킨다. 각각의 PE 회로 (702) 는 또한 깊이-헤비 워크로드가 아닌 워크로드들에 대해 독립적으로 누산할 수 있다. 이는 유연성을 가능하게 하고, 따라서 연산을 위한 PE 할당에 대한 더 나은 이용 효율을 가능하게 한다.
뉴럴 네트워크 회로 내에서, 시스톨릭 플로우 아키텍처 (700) 는, 시리즈로 캐스케이드되는 PE 회로들 (702) 의 수와 같이, 아키텍처의 양태들이 변경될 수 있도록 재구성가능할 수 있다. 뉴럴 네트워크를 위한 컴파일러는 초기 컴포넌트들을 선택하고 임의의 재구성들을 행하는 데 사용될 수 있다.
도 8a 내지 도 8c 는 본 개시의 특정 양태들에 따라, 콘텍스트에 대한 다른 컴포넌트들을 도시하는, 글로벌 누산기 회로 (710) 의 상이한 예시적인 구현들의 블록 다이어그램들이다. 이러한 다른 컴포넌트들은, 예를 들어, 글로벌 메모리, 출력 TCM, 및/또는 PE 회로를 포함할 수 있다.
도 8a 는 예시적인 글로벌 누산기 회로 (800)("팻 (fat) 누산기 모듈"로도 지칭됨) 의 블록 다이어그램을 포함하고, 도 6 의 글로벌 메모리 (604)("시스템 메모리"로 라벨링됨), 도 6 의 출력 TCM (610), 디지털 포스트-프로세싱 로직 (801), 및 도 7 의 PE 회로 (702) 와의 연결들을 예시한다. 글로벌 누산기 회로 (800) 는 대형 누산기 (711), 플립-플롭 어레이 (802)("플롭 어레이"로 라벨링됨), 기록 레지스터 (804), 및 멀티플렉서 (806) 를 포함한다. 기록 레지스터 (804) 는 예를 들어 24 비트에 대해 사이징될 수도 있다. 글로벌 누산기 회로 (710) 는 또한 판독 레지스터 (808), 출력 TCM 기록 버스 (812), 및 출력 TCM 판독 버스 (810) 를 포함할 수 있다. 판독 레지스터 (808) 는 기록 레지스터 (804) 와 유사하게 사이징될 수도 있다 (예를 들어, 24 비트).
출력 TCM 판독 버스 (810) 는 예를 들어, 출력 TCM 으로부터 저장된 데이터 (예를 들어, 부분 합) 를 판독하고 이 판독 데이터를 기록 레지스터에 로딩하기 위해 기록 레지스터 (804) 와 출력 TCM (610) 사이에 커플링될 수 있다. 출력 TCM 판독 버스 (810) 는 또한, 예를 들어, 출력 TCM 으로부터 저장된 데이터 (예를 들어, 최종 결과들) 를 판독하고 이 판독 데이터를 글로벌 메모리 (604) 에 기록하기 위해, 출력 TCM (610) 과 글로벌 메모리 (604) 사이에 커플링될 수 있다. 출력 TCM 기록 버스 (812) 는 예를 들어 판독 레지스터로부터 출력 TCM으로 데이터 (예를 들어, 부분 합) 를 로딩하기 위해 판독 레지스터 (808) 와 출력 TCM (610) 사이에 커플링될 수 있다. 디지털 포스트-프로세싱 로직 (801)("DPP"로 라벨링됨) 은 예를 들어, 이 데이터가 출력 TCM 기록 버스 (812) 를 통해 출력 TCM (610) 에 기록되기 전에 판독 레지스터 (808) 로부터의 데이터 (예를 들어, 최종 누산 결과) 를 프로세싱하기 위해 판독 레지스터 (808) 와 출력 TCM 기록 버스 (812) 사이에 커플링될 수 있다.
멀티플렉서 (806) 는 기록 레지스터 (804) 의 출력에 커플링된 제 1 데이터 입력 및 플립-플롭 어레이 (802) 의 출력에 커플링된 제 2 데이터 입력을 갖는다. 멀티플렉서 (806) 의 출력은 대형 누산기 (711) 의 제 1 입력에 커플링된다. 멀티플렉서 (806) 의 제어 입력은 멀티플렉서가 기록 레지스터 (804) 로부터 재로딩된 데이터를 출력하도록 선택할지 또는 플립-플롭 어레이 (802) 로부터의 대형 누산기 (711) 의 이전 값을 출력하도록 선택할지를 선택하도록 구성된 제어 신호 ("재로드/누산"으로 라벨링됨) 를 수신할 수 있다. PE 회로 (702) 의 출력은 대형 누산기 (711) 의 제 2 입력에 커플링되고, 대형 누산기의 출력은 기록 레지스터 (804)(및 판독 레지스터 (808)) 와 유사한 비트 사이즈를 가질 수 있는 플립-플롭 어레이 (802) 의 입력에 커플링된다. 플립-플롭 어레이의 출력은 판독 레지스터 (808) 의 입력에 커플링될 수 있다.
시스톨릭 플로우 아키텍처 (700) 에 대한 부분 합 재로드 회로부로서 동작하는 경우, 기록 레지스터 (804) 는 임의의 활성화-입력-비트 (액트-비트; Act-Bit) 사이클 동안 로딩될 수 있다. 판독 레지스터 (808) 는 부분 합 저장 회로부로서 동작하고, 현재 MAC 사이클의 종료 시에(예를 들어, 마지막 액트-비트 사이클에 후속하는 제 1 사이클 후에) 출력 TCM 기록 버스 (812) 를 통해 출력 TCM (610) 에 그의 값을 기록할 수 있다. 기록 레지스터 (804) 및 판독 레지스터 (808) 는 액트-비트 사이클들을 기다릴 필요 없이 출력 TCM 기록 및 판독 버스들의 이용을 최대화하기 (또는 적어도 증가시키기) 위해 사용될 수 있다.
동작 동안, 이전에 저장된 부분 합 값은 출력 TCM (610) 으로부터 판독되고 기록 레지스터 (804) 에 로딩될 수 있다. 멀티플렉서 (806) 는 선택 제어 신호에 따라, (A1) 기록 레지스터 (804) 로부터 재로딩된 데이터 또는 (A2) 플립-플롭 어레이 (802) 로부터 대형 누산기 (711) 의 이전 값 중 어느 하나를 선택할 수 있다. 대형 누산기 (711) 는 (B) 이전의 PE 회로 (702) 로부터의 누산 결과 (예를 들어, 로컬 누산기 (706) 에서의 시프트 레지스터의 컨텐츠들) 와 선택 (A1 또는 A2) 을 누산할 수 있다. 마지막 액트-비트 사이클로부터의 누산 결과는 판독 레지스터 (808) 에 로딩될 수 있다. 판독 레지스터 (808) 에서의 값은, 출력 TCM 기록 버스 (812) 가 이용가능할 때마다, MAC 사이클에서의 액트-비트 사이클들 중 임의의 하나 (예를 들어, 다음 8개의 액트-비트 사이클들 중 제 1 사이클) 에서 출력 TCM (610) 으로 전달될 수 있다.
2:1 멀티플렉서 (806) 의 지연 추가가 상당히 작고 (예를 들어, 하나의 로직 게이트 지연) 그리고 시스톨릭 플로우 아키텍처 (700) 에 대한 속도-임계 경로에 있지 않기 때문에, 아키텍처의 동작 주파수에 대한 패널티가 존재하지 않아야 한다. 또한, 이 솔루션은 MAC 사이클 내의 액트-비트 사이클들 중 (예를 들어, 8개의 액트-비트 사이클들 중) 하나의 플롭 사이클의 제한된 에너지 페널티를 갖는다.
부분 합 저장 및 재로드 회로부 (기록 레지스터 (804), 판독 레지스터 (808), 및 멀티플렉서 (806)) 를 갖는 글로벌 누산기 회로 (800) 가 PE 회로들 (702) 의 캐스케이드 시리즈 (701) 의 출력에 커플링될 때, PE 회로들은 부분 합 저장 및 재로드 회로부를 포함하지 않을 수 있고, 출력 TCM 판독 버스 (810) 또는 출력 TCM 기록 버스 (812) 에 대한 연결들을 갖지 않을 수 있다. 예를 들어, PE 회로들 (702) 은 기록 레지스터, 판독 레지스터, 또는 멀티플렉서를 포함하지 않을 수 있거나, 또는 적어도 이들 회로들은 출력 TCM 기록 및 판독 버스들에 커플링될 필요가 없다. 이 구성은 부분 합 저장 및 재로드 회로의 영역 오버헤드를 PE 어레이 (예를 들어, 도 6 의 PE들 (602) 의 어레이 또는 도 7 의 PE 회로들 (702) 의 캐스케이드된 시리즈 (701)) 의 전체 영역으로 제한한다.
도 8b 는 본 개시의 특정 양태들에 따른, 부분 누산 저장 및 재로드 회로부를 갖는 예시적인 PE 회로 (820) 의 블록 다이어그램을 포함한다. PE 회로 (820) 는 캐스케이드 시리즈 (701) 및/또는 글로벌 누산기 회로 (710) 에서 PE 회로들 (702) 을 구현하는 데 사용될 수 있다. 이러한 방식으로, 단일 PE 회로 (820) 는 복제되고, 원한다면, 시스톨릭 플로우 아키텍처 (700) 에서의 모든 블록들을 구현하는 데 사용될 수 있다. 이러한 경우, 부분 합 저장 및 재로드 회로부는 PE 회로들 (702) 의 캐스케이드된 시리즈 (701) 를 구현중인 PE 회로들 (820) 에 대해 디스에이블될 수 있지만, 글로벌 누산기 회로 (710) 를 구현하는 PE 회로 (820) 에 대해 인에이블될 수 있다. 도 8a 의 글로벌 누산기 회로 (800) 와 달리, 출력 TCM 기록 버스 (812) 및 출력 TCM 판독 버스 (810) 는 도 8b 의 PE 회로들 (820) 외부에 있다. PE 회로들 (820) 은 CIM 회로 (예를 들어, DCIM 회로(400)) 를 도 8a 의 글로벌 누산기 회로 (800) 의 다른 컴포넌트들 (예를 들어, 비-버스 컴포넌트들) 에 추가한다. 예를 들어, PE 회로 (820) 는 MAC 가산기 트리 (822)(예를 들어, DCIM 가산기 트리 또는 다른 가산기 회로) 및 누산기-및-시프터 회로 (824)(예를 들어, 활성화-시프트 누산기 회로 (416)) 를 가산한다. MAC 가산기 트리 (822) 는 MAC 가산기 트리 (704) 에 의해 구현될 수 있고, 누산기-및-시프터 회로 (824) 는 도 7 의 로컬 누산기 (706) 에 의해 구현될 수 있다.
도 8c 는 본 개시의 특정 양태들에 따른, 부분 누산 저장 및 재로드 회로부 및 추가적인 멀티플렉서 (828) 를 갖는 예시적인 글로벌 누산기 회로 (830) 의 블록 다이어그램을 포함한다. 또한, 글로벌 누산기 회로 (830) 는 멀티플렉서 (806) 의 출력에 커플링된 제 1 입력을 갖고 추가적인 멀티플렉서 (828) 의 제 1 입력에 커플링된 출력을 갖는 누산기 (826) 를 포함할 수도 있다. PE 회로 (702) 의 출력은 추가적인 멀티플렉서 (828) 의 제 2 입력에 커플링될 수 있다. 특정 양태들에 대해, 글로벌 누산기 회로 (830) 는, 도 8b 와 관련하여 위에서 설명된 바와 같이, 선택적인 MAC 가산기 트리 (822) 및 선택적인 누산기-및-시프터 회로 (824) 를 포함한다. 이 경우, 글로벌 누산기 회로 (830) 는 PE 회로 및 글로벌 누산기 회로 둘 모두로서 기능할 수 있고, 따라서, 캐스케이드 시리즈 (701) 의 마지막 PE 회로 (예를 들어, PE 회로 (7028)) 및 시스톨릭 플로우 아키텍처의 글로벌 누산기 회로 (710) 둘 모두를 대체할 수 있다. 추가적인 멀티플렉서 (828) 는 누산기 (826) 로부터의 누산된 데이터 또는 캐스케이드 시리즈에서 이전 PE 회로 (예를 들어, PE 회로 (7027)) 로부터의 출력 사이에서 선택하도록 구성된 선택 신호 ("시프트/누산"으로 라벨링됨) 를 수신하는 제어 입력을 갖는다.
도 9a 는 본 개시의 특정 양태들에 따라, 도 7 의 시스톨릭 플로우 아키텍처 (700) 에 대한 예시적인 사이클별 시스톨릭 동작을 예시하는 타이밍 다이어그램 (900) 이다. 이 예에서, 캐스케이드된 시리즈 (701) 는 8개의 PE 회로들 (702)("PE1" 내지 "PE8"로 라벨링됨) 을 갖고, 각각의 깊이 사이클 (예를 들어, 각각의 MAC 사이클) 은 최종 누산을 완료하기 위해 8개의 액트-비트 사이클들을 포함한다. 각각의 PE 회로 (7021 내지 7028) 는 각각 플롭 어레이 (9021 내지 9028)(집합적으로 "플롭 어레이들 (902)"로 지칭됨) 를 포함하며, 이 플롭 어레이는 시프트 레지스터를 구현하는 복수의 플립-플롭들을 나타낼 수 있다 (예를 들어, 도 4 의 FF 어레이 (422) 와 유사함). 위에 설명된 바와 같이, 각각의 PE 회로 (702) 에서의 플롭 어레이들 (902) 은 로컬 누산기 (706) 로부터 비트들 (부분 누산 결과들을 나타냄) 을 카피하고, (부분 합들이 DCIM PE들로부터 병렬로 전달되었던 다른 DCIM 솔루션들에서 행해진 바와 같이) 카피된 비트들을 출력 TCM 대신에 직렬로 다음 PE 회로 (702) 에 (그리고 더 구체적으로 다음 PE 회로에서의 플롭에) 전달한다. 따라서, 플롭 어레이들 (902) 은 "카피 레지스터들"로 지칭될 수 있다. 플롭 어레이들 (902) 은 로컬 누산기들 (706) 로부터 독립적으로 실행될 수 있고, 각각의 액트-비트 사이클에서 그들의 컨텐츠들을 전달할 수 있다. 또한, 위에서 설명된 바와 같이, MAC 가산기 트리 (704) 및 로컬 누산기 (706) 는 플롭 어레이들 (902) 의 시프트 동작과 병행하여 실행될 수 있다.
제 1 깊이 사이클 ("깊이 사이클-1" 및 "Act-Bit8 사이클"로 라벨링됨) 의 마지막 비트-직렬 사이클의 종료에서 좌측으로부터 시작하여, 최종 누산 결과는 글로벌 누산기 회로 (710) 에 의해 생성될 수 있고, 특정 양태들에 대해, 위에서 설명된 바와 같이 판독 레지스터 (808) 에 저장될 수 있다. 다음 깊이 사이클 ("깊이 사이클-2"로 라벨링됨) 동안의 일부 시간에, 글로벌 누산기 회로 (710) 는 (예를 들어, 출력 TCM 기록 버스 (812) 를 통하여) 최종 누산 결과를 출력 TCM (610) 에 기록할 수 있다. 다음 깊이 사이클 ("Depth2, Act-Bit1 사이클"로 라벨링됨) 의 제 1 비트-시리즈 사이클에서, MAC 동작들은 각각의 PE 회로의 MAC 가산기 트리 (704) 에서 수행될 수 있고, MAC 동작들과 동시에, 플롭 어레이 (9021) 의 컨텐츠들은 PE 회로 (7022) 로 시프트될 수 있고, 플롭 어레이 (9022)의 콘텐츠들은 PE 회로(7023)로 시프트될 수 있는 등등으로 되어 플롭 어레이 (9028) 의 컨텐츠들이 글로벌 누산기 회로 (710) 로 시프트된다. 깊이 사이클-2에 대한 최종 누산 결과가 마지막 비트-시리얼 사이클 ("깊이 2, Act-Bit8 사이클"로 라벨링됨) 에서 글로벌 누산기 회로 (710) 에 의해 생성될 때까지, 유사한 동작들이 깊이 사이클-2의 각각의 비트-시리얼 사이클에서 수행된다. 시스톨릭 동작은 깊이 사이클-3의 제 1 비트-시리얼 사이클 등으로 시작하여, 모든 깊이 사이클들이 완료될 때까지 반복된다.
도 9a 의 예에서, PE 회로들 (702) 의 수는 활성화-입력-비트 사이클들 (예를 들어, 8개의 PE 회로들) 의 수와 매칭하였다. 일부 경우들에서, 활성화-입력-비트 사이클들의 수보다 더 많은 수의 PE 회로들을 갖는 캐스케이드된 시리즈를 사용하는 것이 가능할 수 있다. 이는, 예를 들어, 뉴럴 네트워크 워크로드가 다수의 PE 회로들을 호출할 때이지만, 이 수가 표준 시스톨릭 플로우 구성에 맞지 않을 때, 또는 컴파일러가 뉴럴 네트워크 설계를 필요한 것보다 더 많은 수의 캐스케이드된 PE 회로들을 포함하는 시스톨릭 플로우 구성에 피트할 때 발생할 수 있다. 예를 들어, 워크로드가 10개의 PE 회로들에 대해 호출되었지만 시스톨릭 맵핑이 8개의 PE 회로들에 대한 것이었다면, 하나의 솔루션은 제 1 MAC 사이클에서 PE 회로들의 하나의 세트 (예를 들어, 5개의 PE 회로들) 를 그리고 제 2 MAC 사이클에서 PE 회로들의 다른 세트 (예를 들어, 동일한 5개의 PE 회로들일 수 있는 5개의 PE 회로들) 를 사용하는 것일 것이다. 그러나, 이 솔루션은 2개의 MAC 사이클들을 취하여, 이에 의해 스루풋 (예를 들어, 단일 MAC 사이클에 대한 TOPS의 절반) 에 부정적인 영향을 미친다. 대신에, MAC 사이클 길이는 각각의 여분의 PE 회로에 대해 더미 사이클을 사용함으로써 증가될 수 있다. 더미 사이클들에서, 모든 활성화 입력들은 0이지만, 플롭 어레이들 (902) 의 컨텐츠들은 각각의 더미 사이클 동안 글로벌 누산기 회로 및 시리즈에서 다음 PE 회로들에 여전히 전달될 수 있다. 모든 활성화 입력들이 0 과 같으면, 새로운 MAC 연산들이 수행되지 않고, 시스톨릭 플로우 아키텍처에서 적어도 MAC 회로들에 의해 에너지가 소비되지 않는다. 위의 예를 계속하면, 2개의 더미 사이클들이 여분의 2개의 PE 회로들에 대해 사용될 수 있어서, 8개의 활성화-입력-비트 사이클들 및 2개의 더미 사이클들을 포함하는 단일 MAC 사이클이 사용될 수 있다. 따라서, 스루풋에 대한 영향은 2-MAC-사이클 솔루션에서 50% 페널티보다는 단지 20% 페널티 (예를 들어, 단일 MAC 사이클에 대한 TOPS * 8/10) 이다.
예를 들어, 도 9b 는 본 개시의 특정 양태들에 따른, 10개의 PE 회로들 (702) 및 8개의 활성화-입력-비트 사이클들을 갖는 예시적인 시스톨릭 플로우 아키텍처에 대한 더미 사이클들을 갖는 사이클-바이-사이클 시스톨릭 동작을 예시하는 타이밍 다이어그램 (950) 이다. 따라서, 시스톨릭 동작은 각각의 깊이 사이클에서 Act-Bit1 내지 Act-Bit8 사이클들 후에 2개의 더미 사이클들 ("더미 사이클-1" 및 "더미 사이클-2"로 라벨링됨) 을 포함한다. 더미 사이클-1 및 더미 사이클-2 에서, 모든 활성화 입력들은 0이지만, 플롭 어레이들 (902) 의 컨텐츠들은 각각의 더미 사이클 동안 글로벌 누산기 회로 (710) 및 시리즈에서 다음 PE 회로들에 여전히 전달될 수 있다.
도 9b 의 타이밍 다이어그램 (950) 에서 연속적인 사이클들로서 종료시 도시되지만, 더미 사이클들은 깊이 사이클의 시작, 중간 및/또는 종료에서 발생할 수 있다. 또한, 다수의 더미 사이클들의 경우, 더미 사이클들 중 적어도 일부는 연속적인 활성화-입력-비트 사이클들일 수 있거나 시간적으로 분리될 수 있다 (예를 들어, 비-연속적인 활성화 입력-비트 사이클들).
도 10 은 본 개시의 특정 양태들에 따른, 하나보다 많은 로우 (예를 들어, 하나보다 많은 캐스케이드된 시리즈의 PE 회로들 및 글로벌 누산기 회로) 를 갖는 예시적인 확장된 시스톨릭 플로우 아키텍처 (1000) 의 블록 다이어그램이다. 이러한 방식으로, 시스톨릭 플로우 아키텍처는 임의의 수의 로우들 ("채널들"이라고도 지칭됨) 로 확장될 수 있어서, (각각의 캐스케이드된 시리즈에서의 PE 회로들의 수의 유연성에 부가하여) 누산당 임의의 수의 캐스케이드된 시리즈들을 허용한다.
예를 들어, 확장된 시스톨릭 플로우 아키텍처 (1000) 는 각각의 로우에서 8개의 PE 회로들 (7021 내지 7028)("PE1" 내지 "PE8"로 라벨링되고 도 7과 관련하여 설명된 바와 같음) 의 캐스케이드된 시리즈 (10011 내지 10018)(집합적으로 "캐스케이드된 시리즈 (1001") 로 지칭됨) 를 갖는 8개의 로우들을 포함할 수 있다. 이 예를 확장하기 위해, 각각의 PE 회로 (702) 가 32개의 입력들을 포함하면, 확장된 시스톨릭 플로우 아키텍처 (1000) 는 누산당 2048개의 입력들 (= 32개의 입력들 x 8개의 PE 회로들 x 8개의 로우들) 을 갖는 CIM 회로로서 효과적으로 동작한다. 확장된 시스톨릭 플로우 아키텍처 (1000) 는 8개보다 많거나 적은 로우들을 포함할 수 있고, 각각의 캐스케이드된 시리즈 (1001) 는 8개보다 많거나 적은 PE 회로들 (702) 을 포함할 수 있다는 것이 이해되어야 한다. 각각의 컬럼은 또한 각각의 캐스케이드 직렬(10011 내지 10018) 에서 마지막 PE 회로에 커플링된 글로벌 누산기 회로 (10101 내지 10108)(집합적으로 "글로벌 누산기 회로들 (1010)" 로 지칭됨) 를 포함할 수 있다. 글로벌 누산기 회로들 (1010) 은 각각 대형 누산기 (711) 및 대형 누산기의 출력에 커플링된 카피-플롭 (1012) 을 포함할 수 있다. 카피-플롭 (1012) 은 시프트 레지스터를 나타내거나 시프트 레지스터로서 구현될 수 있고, 누산된 데이터를 하나의 로우로부터 다음 후속 로우로 (그리고 더 구체적으로, 다음 후속 로우의 글로벌 누산기 회로 (1010) 로) 전달하는 데 사용될 수 있다.
확장된 시스톨릭 플로우 아키텍처 (1000) 는 또한 슈퍼 글로벌 누산기 회로 (1020) 를 가질 수 있다. 슈퍼 글로벌 누산기 회로 (1020) 는 마지막 로우의 글로벌 누산기 회로 (10108) 에 커플링된 입력 및 (예를 들어, 슈퍼 글로벌 누산기 회로의 내부에 있을 수 있는 출력 TCM 기록 버스를 통해) 도 6 의 출력 TCM (610) 에 커플링된 출력을 가질 수 있다. 슈퍼 글로벌 누산기 회로 (1020) 는 확장된 시스톨릭 플로우 아키텍처 (1000)에 대한 최종 글로벌 누산 결과를 생성 및 처리하기 위해 임의의 적합한 비트-사이즈 (예를 들어, 8 개의 로우들이 있을 때 48 비트들, 각각은 32 비트의 비트-사이즈를 갖는 대형 누산기 (711) 를 가짐) 를 가질 수도 있다.
확장된 시스톨릭 플로우 아키텍처 (1000) 는 2개의 네스팅된 누산들로서 동작할 수 있고, 여기서 내부 루프는 각각의 글로벌 누산기 회로 (1010) 의 출력에서 최종 누산 결과를 생성하고 (시스톨릭 플로우 아키텍처(700)와 유사함), 외부 루프는 슈퍼 글로벌 누산기 회로 (1020) 의 출력에서 최종 글로벌 누산 결과를 생성한다. 도 9a 의 예에서와 같이, 각각의 로우에서의 최종 누산 결과는 (각각의 캐스케이드된 시리즈 (1001) 에서의 8개의 PE 회로들 (702) 을 갖는) 8개의 활성화-입력-비트 사이클들 후에 준비될 수 있다. 그러나, 다음 MAC 사이클에서 각각의 로우로부터 출력 TCM 으로 최종 누산 결과 - 이는 여전히 워크로드에 대한 부분 합임 - 를 전달하기보다는, 각각의 로우의 카피-플롭 (1012) 은 다음 MAC 사이클 동안 임의의 시간에 다음 후속 로우에서 글로벌 누산기 회로 (101) 에 최종 누산 결과를 전달할 수 있다. 실제로, 확장된 시스톨릭 플로우 아키텍처 (1000) 에서, 로우들의 수가 주어진 워크로드에 대해 충분히 증가될 때 부분 합 판독들 및 기록들에 대한 필요가 없을 수 있다. N개의 MAC 사이클들의 종료시 (여기서, N 은 로우들의 수임 (여기서, N = 8)), 최종 글로벌 누산 결과는 수퍼 글로벌 누산기 회로 (1020) 에서 생성될 수 있고, 다음 N개의 MAC 사이클들 동안 임의의 시간에 (예를 들어, 디지털 포스트-프로세싱 로직을 통해) 출력 TCM으로 전달될 수 있다.
예시적인 동작들
도 11 는 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 일 예의 동작들 (1100) 을 예시하는 플로우 다이어그램이다. 동작들 (1100) 은, 예를 들어, 도 8a 및 도 8c의 글로벌 누산기 회로 (800 또는 830) 또는 도 8b 의 PE 회로 (820) 와 같은 PE (processing element) 회로에 의해 수행될 수 있다.
동작들 (1100) 은 블록 (1105) 에서 멀티플렉서 (예를 들어, 멀티플렉서 (806)) 의 제 1 입력이 기록 레지스터 (예를 들어, 기록 레지스터 (804)) 로부터 제 1 데이터를 수신하는 것으로써 시작할 수 있다. 블록 (1110) 에서, 멀티플렉서의 제 2 입력은 플립-플롭 어레이 (예를 들어, 플립-플롭 어레이 (802)) 로부터 제 2 데이터를 수신한다. 블록 (1115) 에서, 누산기 회로 (예를 들어, 대형 누산기(711)) 는 프로세싱 엘리먼트 (PE) 회로 (예를 들어, PE 회로 (702), 보다 구체적으로 일부 경우들에서, PE 회로 (7028) 와 같은 캐스케이드된 시리즈의 마지막 PE 회로) 로부터 제 3 데이터를 수신한다. 블록 (1120) 에서 멀티플렉서는, 제 1 데이터와 제 2 데이터 사이에서, 누산기 회로에 출력할 데이터를 선택한다. 블록 (1125) 에서, 누산기 회로는 누산된 데이터 (예를 들어, 부분 합 또는 최종 누산 결과) 를 생성하기 위해 멀티플렉서로부터 선택된 출력 데이터 및 PE 회로로부터 수신된 제 3 데이터를 누산한다.
특정 양태들에 따르면, 동작들 (1100) 은 누산된 데이터를 플립-플롭 어레이에 출력하는 것; 플립-플롭 어레이에 의해, 누산된 데이터를 판독 레지스터 (예를 들어, 판독 레지스터 (808)) 로 시프트하는 것; 및 기록 버스 (예를 들어, 출력 TCM 기록 버스 (812)) 를 통해 판독 레지스터로부터 밀착 결합 메모리 (TCM)(예를 들어, 출력 TCM (610)) 에 누산된 데이터를 기록하는 것을 더 포함한다. 이 경우, 예를 들어, 누산된 데이터는 부분 누산 결과일 수 있다.
특정 양태들에 따르면, 동작들 (1100) 은 누산된 데이터를 플립-플롭 어레이에 출력하는 것; 플립-플롭 어레이에 의해, 누산된 데이터를 판독 레지스터로 시프트하는 것; 및 디지털 포스트-프로세싱 로직 (예를 들어, 디지털 포스트-프로세싱 로직 (801)) 으로 판독 레지스터로부터의 누산된 데이터를 프로세싱하는 것; 및 디지털 포스트-프로세싱 로직과 TCM 사이에 커플링된 기록 버스를 통해 TCM에 프로세싱되어진 누산된 데이터를 기록하는 것을 더 수반한다. 이 경우, 예를 들어, 누산된 데이터는 최종 누산 결과일 수 있다.
도 12 는 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 일 예의 동작들 (1200) 을 예시하는 플로우 다이어그램이다. 동작들 (1200) 은 (재구성가능한) 시스톨릭 플로우 아키텍처 (예를 들어, 도 7 의 시스톨릭 플로우 아키텍처 (700) 또는 도 10 의 확장된 시스톨릭 플로우 아키텍처 (1000)) 를 갖는 뉴럴 네트워크 회로에 의해 수행될 수 있다.
동작들 (1200) 은 블록 (1205) 에서, 캐스케이드된 PE 회로들 (예를 들어, 캐스케이드된 시리즈 (701 또는 1001)) 의 세트에서의 각각의 프로세싱 엘리먼트 (PE) 회로 (예를 들어, 각각의 PE 회로 (702)) 가 곱셈-및-누산 (MAC) 동작을 수행하는 것으로서 시작할 수 있다. 캐스케이드된 PE 회로들의 세트에서의 제 1 PE 회로 (예를 들어, PE 회로 (7021)) 의 출력은 캐스케이드된 PE 회로들의 세트에서의 제 2 PE 회로 (예를 들어, PE 회로 (7022)) 의 입력에 커플링된다. 캐스케이드된 PE 회로들의 세트에서의 각각의 PE 회로는 MAC 회로 (예를 들어, MAC 가산기 트리 (704)), MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로 (예를 들어, 로컬 누산기 (706) 또는 직렬 누산기 (420)), 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트 (예를 들어, 플롭 어레이 (902) 또는 FF 어레이 (422))를 포함할 수 있다.
블록 (1210) 에서, 각각의 PE 회로에서의 플립-플롭들의 세트는 PE 회로로부터 캐스케이드된 PE 회로들의 세트에서의 다음 PE 회로로 또는 글로벌 누산기 회로 (예를 들어, 글로벌 누산기 회로 (710)) 로 값 (예를 들어, 부분 합) 을 시프트하기 위해 시프트 동작을 수행할 수 있다. 각각의 PE 회로에서, 시프트 동작은 블록 (1205) 에서 MAC 동작의 수행과 동시에 수행될 수 있다.
블록 (1215) 에서, 글로벌 누산기 회로는 누산된 데이터 (예를 들어, 최종 누산 결과 또는 부분 누산 결과) 를 생성하기 위해 캐스케이드된 PE 회로들의 세트에서의 최종 PE 회로 (예를 들어, PE 회로 (7028)) 로부터의 시프트된 값들을 누산할 수 있다.
특정 양태들에 따르면, 동작들 (1200) 은 가중치들로 각각의 PE 회로에서 MAC 동작을 수행하기 전에 캐스케이드된 PE 회로들의 세트에 병렬로 가중치들을 로딩하는 것을 더 수반한다.
특정 양태들에 따르면, 블록 (1215) 에서 누산하는 것은, 글로벌 누산기 회로를 이용하여, 부분 합들을 메모리 (예를 들어, 출력 TCM (610)) 에 기록하는 것을 포함한다. 특정 양태들에 대해, 블록 (1215) 에서 누산하는 것은 또한, 글로벌 누산기 회로를 이용하여, 메모리로부터 부분 합들을 판독하는 것을 포함한다. 캐스케이드된 PE 회로들의 세트는 메모리에 부분 합들을 기록하거나 메모리로부터 부분 합들을 판독하지 않을 수 있다.
특정 양태들에 따르면, 누산하는 것은 글로벌 누산기 회로에서의 멀티플렉서 (예를 들어, 멀티플렉서 (806)) 의 제1 입력에서, 글로벌 누산기 회로의 기록 레지스터 (예를 들어, 기록 레지스터 (804)) 로부터 제 1 데이터를 수신하는 것; 멀티플렉서의 제 2 입력에서, 글로벌 누산기 회로에서 플립-플롭 어레이 (예를 들어, 플립-플롭 어레이 (802)) 로부터 제 2 데이터를 수신하는 것; 글로벌 누산기 회로에서의 다른 누산기 회로 (예를 들어, 대형 누산기 (711)) 에서, 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로 (예를 들어, PE 회로 (7028)) 로부터 제 3 데이터를 수신하는 것; 멀티플렉서에 의해, 제 1 데이터와 제 2 데이터 사이에서, 다른 누산기 회로에 출력할 데이터를 선택하는 것; 및 누산된 데이터를 생성하기 위해, 다른 누산기 회로에 의해, 멀티플렉서로부터 선택된 출력 데이터 및 제 3 데이터를 누산하는 것을 수반한다.
시스톨릭 플로우 아키텍처 및/또는 부분 합 관리를 갖는 예시적인 디바이스
도 13 은 예시적인 전자 디바이스 (1300) 를 나타낸다. 전자 디바이스 (1300) 는 도 11 및 도 12 와 관련하여 설명된 동작들 (1100 및/또는 1200) 을 포함하여, 본원에 설명된 방법들을 수행하도록 구성될 수 있다.
전자 디바이스 (1300) 는 일부 양태들에서 멀티 코어 CPU 일 수 있는 중앙 프로세싱 유닛 (CPU) (1302) 을 포함한다. CPU (1302) 에서 실행된 명령들은, 예를 들어, CPU (1302) 와 연관된 프로그램 메모리로부터 로딩될 수도 있거나, 또는 메모리 (1324) 로부터 로딩될 수도 있다.
전자 디바이스 (1300) 는 또한 그래픽 프로세싱 유닛 (GPU)(1304), 디지털 신호 프로세서 (DSP) (1306), (재구성가능) 시스톨릭 플로우 아키텍처를 구현하는 캐스케이드된 PE들의 세트 (1309), 를 갖는 뉴럴 네트워크 회로 (1307), 멀티미디어 프로세싱 블록 (1310), 및 무선 접속성 프로세싱 블록 (1312) 과 같은 특정 기능들에 맞추어진 추가적인 프로세싱 블록들을 포함한다. 하나의 구현에서, 뉴럴 네트워크 회로 (1307) 는 CPU (1302), GPU (1304) 및/또는 DSP (1306) 중 하나 이상에서 구현된다.
일부 양태들에서, 무선 연결 프로세싱 블록 (1312) 은 예를 들어, 3세대 (3G) 연결, 4세대 (4G) 연결 (예를 들어, 4G LTE), 5세대 연결 (예를 들어, 5G 또는 NR), Wi-Fi 연결, Bluetooth 연결 및 무선 데이터 송신 표준을 위한 컴포넌트를 포함할 수도 있다. 무선 연결 프로세싱 블록 (1312) 은 무선 통신을 용이하게 하기 위해 하나 이상의 안테나 (1314) 에 추가로 연결된다.
전자 디바이스 (1300) 는 또한, 임의의 방식의 센서와 연관된 하나 이상의 센서 프로세서들 (1316), 임의의 방식의 이미지 센서와 연관된 하나 이상의 이미지 신호 프로세서들 (ISP들) (1318), 및/또는 위성 기반 포지셔닝 시스템 컴포넌트들 (예를 들어, GPS (Global Positioning System) 또는 GLONASS (Global Navigation Satellite System)) 뿐만 아니라 관성 포지셔닝 시스템 컴포넌트들을 포함할 수도 있는 내비게이션 프로세서 (1320) 를 포함할 수도 있다.
전자 디바이스 (1300) 는 또한 스크린들, 터치 감응형 표면들 (터치 감응형 디스플레이들을 포함함), 물리적 버튼들, 스피커들, 마이크로폰들 등과 같은 하나 이상의 입력 및/또는 출력 디바이스들 (1322) 을 포함할 수 있다. 일부 양태들에서, 전자 디바이스(1300) 의 프로세서들 중 하나 이상은 ARM (Advanced RISC Machines) 명령 세트에 기초할 수 있으며, 여기서 RISC는 "감소된 명령어 세트 연산 (reduced instruction set computing)"을 나타낸다.
전자 디바이스 (1300) 는 또한 DRAM (dynamic random access memory), 플래시-기반 정적 메모리 등과 같은 하나 이상의 정적 및/또는 동적 메모리들을 나타내는 메모리 (1324) 를 포함한다. 이 예에서, 메모리 (1324) 는 뉴럴 네트워크 회로 (1307) 를 포함한, 전자 디바이스 (1300) 의 전술한 프로세서들 중 하나 이상에 의해 실행될 수 있는 컴퓨터 실행가능 컴포넌트들을 포함한다. 도시된 컴포넌트들 및 도시되지 않은 다른 컴포넌트들은 본 명세서에서 설명된 방법들의 다양한 양태들을 수행하도록 구성될 수도 있다.
전자 디바이스 (1300) 가 서버 디바이스인 경우와 같은 일부 양태들에서, 멀티미디어 프로세싱 블록 (1310), 무선 접속성 프로세싱 블록 (1312), 안테나(들) (1314), 센서 프로세서들 (1316), ISP들 (1318), 또는 내비게이션 프로세서 (1320) 중 하나 이상과 같은 다양한 양태들이 도 13 에 도시된 예로부터 생략될 수도 있다.
예시의 조항들
위에서 설명된 다양한 양태들에 더하여, 양태들의 특정 조합들은 본 개시의 범위 내에 있으며, 그 중 일부는 아래의 항들에서 상세히 설명된다:
항 1: 머신 러닝을 위한 프로세싱 엘리먼트 (PE) 회로로서, PE 회로는: 제 1 누산기 회로, 제 1 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭 어레이, 기록 레지스터, 및 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함한다.
항 2: 항 1 의 PE 회로는, 플립-플롭 어레이의 출력에 커플링된 입력을 갖는 판독 레지스터를 더 포함한다. 특정 양태들에 대해, 판독 레지스터는 플립-플롭 어레이로부터 수신된 데이터를 저장하도록 구성된다.
항 3: 항 2 의 PE 회로는, 판독 레지스터의 출력에 커플링된 기록 버스를 더 포함한다. 특정 양태들에 대해, 판독 레지스터는 저장된 데이터를 기록 버스에 기록하도록 구성된다. 일부 경우들에, 기록 버스는 데이터를 메모리로 전달하도록 구성될 수 있다.
항 4: 항 2 또는 항 3 의 PE 회로는, 기록 레지스터의 입력에 커플링된 판독 버스를 더 포함한다. 특정 양태들에서, 판독 버스는 데이터를 기록 레지스터에 전달하도록 구성되고, 기록 레지스터는 데이터를 저장하도록 구성될 수 있다.
항 5: 복수의 PE 회로들을 포함하는 뉴럴 네트워크 회로로서, 복수의 PE 회로들 중 적어도 하나는 항 4 의 어느 하나의 PE 회로를 포함하고, 뉴럴 네트워크 회로는: 기록 버스에 그리고 판독 버스에 커플링된 밀착 결합 메모리 및 판독 버스에 커플링된 글로벌 메모리를 더 포함하고, 복수의 PE 회로들 중 다른 하나는 제 1 누산기 회로의 제 2 입력에 커플링된 출력을 갖는다. 특정 양태들에서, 밀착 결합 메모리는 기록 버스를 통해 전달되는 판독 레지스터로부터의 제 1 데이터를 저장하고/하거나 판독 버스를 통해 기록 레지스터에 제 2 데이터를 기록하도록 구성된다. 특정 양태들에서, 글로벌 메모리는 판독 버스를 통해 밀착 결합 메모리로부터 수신된 데이터를 저장하도록 구성된다. 특정 양태들에서, 제 1 누산기 회로는 복수의 PE 회로들 중 다른 하나 및/또는 제1 멀티플렉서로부터 수신된 데이터를 누산하도록 구성된다.
항 6: 항 5 의 뉴럴 네트워크 회로에서, 복수의 PE 회로들 중 다른 하나는 기록 레지스터를 포함하지 않는다.
항 7: 항 1 내지 항 3 의 어느 하나의 PE 회로는, 기록 레지스터의 입력에 커플링된 판독 버스를 더 포함하고, 판독 버스는 PE 회로 외부에, 밀착 결합 메모리 또는 글로벌 메모리 중 적어도 하나에 커플링하도록 구성된다. 특정 양태들에서, 판독 버스는 데이터를 기록 레지스터에 전달하도록 구성되고, 기록 레지스터는 데이터를 저장하도록 구성될 수 있다.
항 8: 항 1 내지 항 3 및 항 7 의 어느 하나의 PE 회로는, 가산기 회로; 및 가산기 회로의 출력에 커플링된 입력을 갖고, 제 1 누산기 회로의 제 2 입력에 커플링된 출력을 갖는 누산기-및-시프터 회로를 더 포함한다.
항 9. 항 1 내지 항 3 및 항 7 내지 항 8 의 어느 하나의 PE 회로는, 제 2 누산기 회로; 및 제 2 누산기 회로의 출력에 커플링된 입력을 갖고, 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 2 멀티플렉서를 더 포함한다.
항 10: 항 1 내지 항 3 및 항 7 내지 항 9 의 어느 하나의 PE 회로에서, PE 회로는 디지털 컴퓨트-인-메모리 (DCIM) PE 회로이고, 그리고 PE 회로는: DCIM 어레이; DCIM 어레이에 커플링된 비트-컬럼 가산기 트리 회로; 및 비트-컬럼 가산기 트리 회로에 커플링된 가중치-시프트 가산기 트리 회로를 더 포함한다.
항 11: 항 10 의 PE 회로에서, DCIM 어레이는 복수의 컴퓨트-인-메모리 셀들을 포함하고, 컴퓨트-인-메모리 셀들 중 적어도 하나는 8-트랜지스터 (8T) 정적 랜덤-액세스 메모리 (SRAM) 셀을 포함한다.
항 12: 뉴럴 네트워크 회로는, 캐스케이드된 프로세싱 엘리먼트 (PE) 회로들의 제 1 세트로서, 제 1 세트에서의 제 1 PE 회로의 출력은 제 1 세트에서의 제 2 PE 회로의 입력에 커플링되고, 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는: 곱셈-및-누산 (MAC) 회로, MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, 캐스케이드된 PE 회로들의 제 1 세트; 및 캐스케이드된 PE 회로들의 제 1 세트의 출력에 커플링된 입력을 갖는 제 1 글로벌 누산기 회로를 포함한다.
항 13: 항 12 의 뉴럴 네트워크 회로에서, 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는, 캐스케이드된 PE 회로들의 제 1 세트에서 PE 회로로부터 다음 PE 회로로 또는 제 1 글로벌 누산기 회로로 값을 시프트하기 위해, MAC 회로에 의한 MAC 동작 및 플립-플롭들의 세트에 의한 시프트 동작을 동시에 수행하도록 구성된다.
항 14: 항 12 또는 13 의 뉴럴 네트워크 회로는, 메모리를 더 포함하고, 제 1 글로벌 누산기 회로는 메모리에 부분 합들을 기록하고 메모리로부터 부분 합들을 판독하도록 구성되고; 캐스케이드된 PE 회로들의 제 1 세트는 메모리에 부분 합들을 기록하거나 메모리로부터 부분 합들을 판독하도록 구성되지 않는다.
항 15: 항 12 내지 항 14 의 어느 하나의 뉴럴 네트워크 회로에서, 제 1 글로벌 누산기 회로는: 제 1 누산기, 제 1 누산기의 출력에 커플링된 입력을 갖는 플립-플롭 어레이, 기록 레지스터, 및 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 제 1 누산기의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함한다.
항 16: 항 15 의 뉴럴 네트워크 회로에서, 제 1 글로벌 누산기 회로는 플립-플롭 어레이의 출력에 커플링된 입력을 갖는 판독 레지스터를 더 포함한다.
항 17: 항 16 의 뉴럴 네트워크 회로는 밀착 결합 메모리를 더 포함하고, 제 1 글로벌 누산기 회로는: 판독 레지스터의 출력과 밀착 결합 메모리 사이에 커플링된 기록 버스; 및 밀착 결합 메모리와 기록 레지스터의 입력 사이에 커플링된 판독 버스를 더 포함한다.
항 18: 항 17 의 뉴럴 네트워크 회로는, 제 1 글로벌 누산기 회로의 판독 버스에 커플링된 글로벌 메모리를 더 포함한다.
항 19: 항 12 내지 항 18 의 어느 하나의 뉴럴 네트워크 회로에서, 캐스케이드된 PE 회로들의 제 1 세트는 가중치들이 캐스케이드된 PE 회로들의 제 1 세트로 병렬로 로딩되도록 구성된다.
항 20: 항 12 내지 항 19 의 어느 하나의 뉴럴 네트워크 회로에서, 캐스케이드된 PE 회로들의 제 1 세트는 다수의 캐스케이드된 PE 회로들을 포함하여, 제 1 글로벌 누산기 회로가, 다수의 활성화-입력-비트 사이클들이 발생한 후에, 캐스케이드된 PE 회로들의 수에 매칭하는 제 1 세트에서의 모든 PE 회로들을 통해 제 1 PE 회로로부터 부분 합을 수신하도록 구성되게 한다.
항 21: 항 12 내지 항 19 의 어느 하나의 뉴럴 네트워크 회로에서, 제 1 글로벌 누산기 회로가, 다수의 활성화-입력-비트 사이클들이 발생한 후에 제 1 세트에서의 모든 PE 회로들을 통해 제 1 PE 회로로부터 부분 합을 수신하도록 구성되고; 그리고 제 1 세트에서의 캐스케이드된 PE 회로들의 수는 활성화-입력-비트 사이클들의 수보다 크거나 같다.
항 22: 항 12 내지 항 21 의 어느 하나의 뉴럴 네트워크 회로에서, 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는 디지털 컴퓨트-인-메모리 (DCIM) PE 회로이고, 각각의 PE 회로에서의 MAC 회로는 DCIM 어레이를 포함하고, DCIM 어레이는 복수의 컴퓨트-인-메모리 셀들을 포함하고, 컴퓨트-인-메모리 셀들 중 적어도 하나는 8-트랜지스터 (8T) 정적 랜덤-액세스 메모리 (SRAM) 셀을 포함한다.
항 23: 항 12 내지 항 22 의 어느 하나의 뉴럴 네트워크 회로는, 캐스케이드된 PE 회로들의 제 2 세트를 더 포함하고, 제 2 세트에서의 제 1 PE 회로의 출력은 제 2 세트에서의 제 2 PE 회로의 입력에 커플링되고, 캐스케이드된 PE 회로들의 제 2 세트에서의 각각의 PE 회로는: 곱셈-및-누산(multiply-and-accumulate; MAC) 회로, MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트; 캐스케이드된 PE 회로들의 제 2 세트의 출력에 커플링된 입력을 갖는 제 2 글로벌 누산기 회로; 제 1 글로벌 누산기 회로의 출력에 커플링된 입력을 갖는 제 1 카피-플롭 어레이; 제 2 글로벌 누산기 회로의 출력에 커플링된 제 1 입력을 갖고 제 1 카피-플롭의 출력에 커플링된 제 2 입력을 갖는 제 2 카피-플롭; 및 제 2 카피-플롭의 출력에 커플링된 입력을 갖는 슈퍼 글로벌 누산기 회로를 포함한다.
항 24: 뉴럴 네트워크 프로세싱의 방법은, 멀티플렉서의 제 1 입력에서, 기록 레지스터로부터 제 1 데이터를 수신하는 단계; 멀티플렉서의 제 2 입력에서, 플립-플롭 어레이로부터 제 2 데이터를 수신하는 단계; 누산기 회로에서, 프로세싱 엘리먼트 (PE) 회로로부터 제 3 데이터를 수신하는 단계; 멀티플렉서에 의해, 제 1 데이터와 제 2 데이터 사이에서 누산기 회로에 출력할 데이터를 선택하는 단계; 및 누산된 데이터를 생성하기 위해, 누산기 회로에 의해, 멀티플렉서로부터 선택된 출력 데이터 및 PE 회로로부터 수신된 제 3 데이터를 누산하는 단계를 포함한다.
항 25: 항 24 의 방법은: 누산된 데이터를 플립-플롭 어레이에 출력하는 단계; 플립-플롭 어레이에 의해, 누산된 데이터를 판독 레지스터로 시프트하는 단계; 및 기록 버스를 통해 판독 레지스터로부터 밀착 결합 메모리 (TCM) 에 누산된 데이터를 기록하는 단계를 더 포함한다.
항 26: 항 24 의 방법은: 누산된 데이터를 플립-플롭 어레이에 출력하는 단계; 플립-플롭 어레이에 의해, 누산된 데이터를 판독 레지스터로 시프트하는 단계; 및 디지털 포스트-프로세싱 로직에 의해, 판독 레지스터로부터의 누산된 데이터를 프로세싱하는 단계; 및 디지털 포스트-프로세싱 로직과 밀착 결합 메모리 (TCM) 사이에 커플링된 기록 버스를 통해 TCM 에 프로세싱되어진 누산된 데이터를 기록하는 단계를 더 포함한다.
항 27: 뉴럴 네트워크 프로세싱의 방법으로서, 캐스케이드된 PE 회로들의 세트에서의 각각의 프로세싱 엘리먼트 (PE) 회로에서 곱셈-및-누산 (MAC) 동작을 수행하는 단계로서, 캐스케이드된 PE 회로들의 세트에서의 제 1 PE 회로의 출력은 캐스케이드된 PE 회로들의 세트에서의 제 2 PE 회로의 입력에 커플링되고, 그리고 캐스케이드된 PE 회로들의 세트에서의 각각의 PE 회로는: MAC 회로, MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, MAC 동작을 수행하는 단계; 캐스케이드된 PE 회로들의 세트에서 PE 회로로부터 다음 PE 회로로 또는 글로벌 누산기 회로로 값을 시프트하기 위해 각각의 PE 회로에서의 플립-플롭들의 세트로 시프트 동작을 수행하는 단계로서, 각각의 PE 회로에서, 시프트 동작은 MAC 동작의 수행과 동시에 수행되는, 시프트 동작을 수행하는 단계; 및 누산된 데이터를 생성하기 위해, 글로벌 누산기 회로로, 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로로부터 시프트된 값들을 누산하는 단계를 포함한다.
항 28: 항 27 의 방법은: 가중치들로 각각의 PE 회로에서 MAC 동작을 수행하기 전에 캐스케이드된 PE 회로들의 세트에 병렬로 가중치들을 로딩하는 단계를 더 포함한다.
항 29: 항 27 또는 항 28 의 방법에서, 누산하는 단계는: 글로벌 누산기 회로에 의해, 메모리에 부분 합들을 기록하는 단계; 및 글로벌 누산기 회로에 의해, 메모리로부터 부분 합들을 판독하는 단계를 포함하고, 캐스케이드된 PE 회로들의 세트는 메모리에 부분 합들을 기록하거나 메모리로부터 부분 합들을 판독하지 않는다.
항 30: 항 27-29 의 어느 것의 방법에서, 누산하는 단계는: 글로벌 누산기 회로에서의 멀티플렉서의 제 1 입력에서, 글로벌 누산기 회로의 기록 레지스터로부터 제 1 데이터를 수신하는 단계; 멀티플렉서의 제 2 입력에서, 글로벌 누산기 회로에서 플립-플롭 어레이로부터 제 2 데이터를 수신하는 단계; 글로벌 누산기 회로에서의 다른 누산기 회로에서, 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로로부터 제 3 데이터를 수신하는 단계; 멀티플렉서에 의해, 제 1 데이터와 제 2 데이터 사이에서, 다른 누산기 회로에 출력할 데이터를 선택하는 단계; 및 누산된 데이터를 생성하기 위해, 다른 누산기 회로에 의해, 멀티플렉서로부터 선택된 출력 데이터 및 제 3 데이터를 누산하는 단계를 포함한다.
부가 고려사항들
전술한 설명은 당업자로 하여금 본 명세서에서 설명된 다양한 양태들을 실시할 수 있게 하기 위해 제공된다. 본 명세서에서 논의된 예들은 청구항들에 기재된 범위, 적용가능성, 또는 양태들을 한정하지 않는다. 이들 양태들에 대한 다양한 수정들은 당업자에게 용이하게 자명할 것이며, 본 명세서에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수도 있다. 예를 들어, 본 개시의 범위로부터 일탈함 없이 논의된 엘리먼트들의 기능 및 배열에 있어서 변경들이 이루어질 수도 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절하게 생략, 치환, 또는 추가할 수도 있다. 예를 들어, 설명된 방법들은 설명된 것과 상이한 순서로 수행될 수도 있으며, 다양한 단계들이 추가, 생략, 또는 결합될 수도 있다. 또한, 일부 예들에 관하여 설명된 특징들은 기타 예들에서 결합될 수도 있다. 예를 들어, 본 명세서에 제시된 임의의 수의 양태들을 사용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 본 명세서에 기술된 개시의 다양한 양태들에 부가하여 또는 그 외에 다른 구조, 기능성, 또는 구조 및 기능성을 이용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 개시의 임의의 양태는 청구항의 하나 이상의 엘리먼트에 의해 구체화될 수도 있다는 것이 이해되어야 한다.
본 명세서에서 사용된 바와 같이, 단어 "예시적인" 은 예, 예증, 또는 예시로서 작용함을 의미하도록 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로서 해석되어야 하는 것은 아니다.
본원에 사용된, 항목들의 리스트 "중 적어도 하나" 를 나타내는 어구는, 단일 멤버들을 포함한 그러한 아이템들의 임의의 조합을 나타낸다. 일 예로서, "a, b, 또는 c 중 적어도 하나" 는 a, b, c, a-b, a-c, b-c, 및 a-b-c 뿐 아니라 동일한 엘리먼트의 배수들과의 임의의 조합 (예를들어, a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, 및 c-c-c 또는 a, b, 및 c 의 임의의 다른 오더링) 을 커버하도록 의도된다.
본원에서 이용되는 바와 같이, 용어 "결정하는" 은 매우 다양한 액션들을 망라한다. 예를 들어, "결정하는 것" 은 계산하는 것, 연산하는 것, 프로세싱하는 것, 도출하는 것, 조사하는 것, 검색하는 것 (예를 들어, 표, 데이터베이스, 또는 다른 데이터 구조에서 검색하는 것), 확인하는 것 등을 포함할 수도 있다. 또한, "결정하는 것" 은 수신하는 것 (예를 들어, 정보를 수신하는 것), 액세스하는 것 (예를 들어, 메모리 내 데이터에 액세스하는 것) 등을 포함할 수도 있다. 또한, "결정하는 것" 은 해결하는 것, 선택하는 것, 선출하는 것, 확립하는 것 등을 포함할 수도 있다.
본 명세서에 개시된 방법들은 그 방법들을 달성하기 위한 하나 이상의 단계 또는 액션들을 포함한다. 그 방법 단계들 및/또는 액션들은 청구항들의 범위로부터 일탈함 없이 서로 상호교환될 수도 있다. 즉, 단계들 또는 액션들의 특정 순서가 명시되지 않으면, 특정 단계들 및/또는 액션들의 순서 및/또는 사용은 청구항들의 범위로부터 일탈함이 없이 수정될 수도 있다. 또한, 설명된 다양한 방법 동작들은 대응하는 기능들을 수행 가능한 임의의 적합한 수단에 의해 수행될 수도 있다. 그 수단들은 회로, 주문형 집적 회로 (ASIC), 또는 프로세서를 포함하지만 이에 한정되지 않는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수도 있다. 일반적으로, 도면들에 예시된 동작들이 있는 경우에, 그 동작들은 유사한 넘버링을 가진 대응하는 상대의 기능식 (means-plus-function) 컴포넌트들을 가질 수도 있다.
다음의 청구항들은 본 명세서에 나타낸 양태들로 한정되도록 의도되지 않지만, 청구항들의 언어와 부합하는 전체 범위를 부여받아야 한다. 청구항 내에서, 단수의 엘리먼트에 대한 언급은 특별히 언급되지 않는 한 "하나 및 하나만" 을 의미하는 것이 아니라 오히려 "하나 이상" 을 의미하는 것으로 의도된다. 구체적으로 달리 언급되지 않으면, 용어 "일부"는 하나 이상을 나타낸다. 어떠한 청구항 엘리먼트도 그 엘리먼트가 어구 "~하는 수단" 을 사용하여 명백하게 기재되지 않는다면, 또는 방법 청구항의 경우, 그 엘리먼트가 어구 "~하는 단계" 를 사용하여 기재되지 않는다면, 35 U.S.C.§112(f) 의 규정 하에서 해석되지 않아야 한다. 당업자에게 알려진 또는 추후 알려질 본 개시 전반에 걸쳐 설명된 다양한 양태들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들은 본원에 참조에 의해 명백히 통합되며 청구항들에 의해 포괄되도록 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도 그러한 개시가 청구항들에서 명시적으로 언급되는지 여부에 상관없이 대중에게 전용되도록 의도되지 않는다.

Claims (30)

  1. 프로세싱 엘리먼트 (processing element; PE) 회로로서,
    제 1 누산기 회로;
    상기 제 1 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭 어레이;
    기록 레지스터; 및
    상기 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 상기 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 상기 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함하는, 프로세싱 엘리먼트 회로.
  2. 제 1 항에 있어서,
    상기 플립-플롭 어레이의 상기 출력에 커플링된 입력을 갖는 판독 레지스터를 더 포함하는, 프로세싱 엘리먼트 회로.
  3. 제 2 항에 있어서,
    상기 판독 레지스터의 출력에 커플링된 기록 버스를 더 포함하는, 프로세싱 엘리먼트 회로.
  4. 제 3 항에 있어서,
    상기 기록 레지스터의 입력에 커플링된 판독 버스를 더 포함하는, 프로세싱 엘리먼트 회로.
  5. 복수의 프로세싱 엘리먼트 (PE) 회로들을 포함하는 뉴럴 네트워크 회로로서,
    상기 복수의 PE 회로들 중 적어도 하나는 제 4 항의 PE 회로를 포함하고,
    상기 뉴럴 네트워크 회로는:
    상기 기록 버스에 그리고 상기 판독 버스에 커플링된 밀착 결합 메모리 (tightly coupled memory); 및
    상기 판독 버스에 커플링된 글로벌 메모리를 더 포함하고, 상기 복수의 PE 회로들 중 다른 하나는 상기 제 1 누산기 회로의 제 2 입력에 커플링된 출력을 갖는, 복수의 프로세싱 엘리먼트 회로들을 포함하는 뉴럴 네트워크 회로.
  6. 제 5 항에 있어서,
    상기 복수의 PE 회로들 중 다른 하나는 기록 레지스터를 포함하지 않는, 복수의 프로세싱 엘리먼트 회로들을 포함하는 뉴럴 네트워크 회로.
  7. 제 1 항에 있어서,
    상기 기록 레지스터의 입력에 커플링된 판독 버스를 더 포함하고, 상기 판독 버스는 상기 PE 회로 외부에, 밀착 결합 메모리 또는 글로벌 메모리 중 적어도 하나에 커플링하도록 구성되는, 프로세싱 엘리먼트 회로.
  8. 제 1 항에 있어서,
    가산기 회로; 및
    상기 가산기 회로의 출력에 커플링된 입력을 갖고, 제 1 누산기 회로의 제 2 입력에 커플링된 출력을 갖는 누산기-및-시프터 회로를 더 포함하는, 프로세싱 엘리먼트 회로.
  9. 제 8 항에 있어서,
    제 2 누산기 회로; 및
    상기 제 2 누산기 회로의 출력에 커플링된 제 1 입력을 갖고, 상기 제 1 누산기 회로의 제 1 입력에 커플링된 출력을 갖는 제 2 멀티플렉서를 더 포함하는, 프로세싱 엘리먼트 회로.
  10. 제 1 항에 있어서,
    상기 PE 회로는 디지털 컴퓨트-인-메모리 (DCIM) PE 회로이고, 그리고 상기 PE 회로는:
    DCIM 어레이;
    상기 DCIM 어레이에 커플링된 비트-컬럼 가산기 트리 회로; 및
    비트-컬럼 가산기 트리 회로에 커플링된 가중치-시프트 가산기 트리 회로를 더 포함하는, 프로세싱 엘리먼트 회로.
  11. 제 10 항에 있어서,
    상기 DCIM 어레이는 복수의 컴퓨트-인-메모리 셀들을 포함하고, 상기 컴퓨트-인-메모리 셀들 중 적어도 하나는 8-트랜지스터 (8T) 정적 랜덤-액세스 메모리 (SRAM) 셀을 포함하는, 프로세싱 엘리먼트 회로.
  12. 뉴럴 네트워크 회로로서,
    캐스케이드된 프로세싱 엘리먼트 (PE) 회로들의 제 1 세트로서, 상기 제 1 세트에서의 제 1 PE 회로의 출력은 상기 제 1 세트에서의 제 2 PE 회로의 입력에 커플링되고, 상기 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는:
    곱셈-및-누산 (MAC) 회로,
    상기 MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및
    상기 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, 상기 캐스케이드된 PE 회로들의 제 1 세트; 및
    상기 캐스케이드된 PE 회로들의 제 1 세트의 출력에 커플링된 입력을 갖는 제 1 글로벌 누산기 회로를 포함하는, 뉴럴 네트워크 회로.
  13. 제 12 항에 있어서,
    상기 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는, 상기 캐스케이드된 PE 회로들의 제 1 세트에서 상기 PE 회로로부터 다음 PE 회로로 또는 제 1 글로벌 누산기 회로로 값을 시프트하기 위해, 상기 MAC 회로에 의한 MAC 동작 및 상기 플립-플롭들의 세트에 의한 시프트 동작을 동시에 수행하도록 구성되는, 뉴럴 네트워크 회로.
  14. 제 12 항에 있어서,
    상기 제 1 글로벌 누산기 회로는 메모리에 부분 합들을 기록하고 상기 메모리로부터 상기 부분 합들을 판독하도록 구성되고;
    상기 캐스케이드된 PE 회로들의 제 1 세트는 상기 메모리에 상기 부분 합들을 기록하거나 상기 메모리로부터 상기 부분 합들을 판독하도록 구성되지 않는, 뉴럴 네트워크 회로.
  15. 제 12 항에 있어서,
    상기 제 1 글로벌 누산기 회로는:
    제 1 누산기,
    상기 제 1 누산기의 출력에 커플링된 입력을 갖는 플립-플롭 어레이;
    기록 레지스터; 및
    상기 기록 레지스터의 출력에 커플링된 제 1 입력을 갖고, 플립-플롭 어레이의 출력에 커플링된 제 2 입력을 갖고, 그리고 제 1 누산기의 제 1 입력에 커플링된 출력을 갖는 제 1 멀티플렉서를 포함하는, 뉴럴 네트워크 회로.
  16. 제 15 항에 있어서,
    상기 제 1 글로벌 누산기 회로는 상기 플립-플롭 어레이의 출력에 커플링된 입력을 갖는 판독 레지스터를 더 포함하는, 뉴럴 네트워크 회로.
  17. 제 16 항에 있어서,
    밀착 결합 메모리를 더 포함하고, 상기 제 1 글로벌 누산기 회로는:
    판독 레지스터의 출력과 밀착 결합 메모리 사이에 커플링된 기록 버스; 및
    밀착 결합 메모리와 기록 레지스터의 입력 사이에 커플링된 판독 버스를 더 포함하는, 뉴럴 네트워크 회로.
  18. 제 17 항에 있어서,
    상기 제 1 글로벌 누산기 회로의 상기 판독 버스에 커플링된 글로벌 메모리를 더 포함하는, 뉴럴 네트워크 회로.
  19. 제 12 항에 있어서,
    상기 캐스케이드된 PE 회로들의 제 1 세트는 가중치들이 상기 캐스케이드된 PE 회로들의 제 1 세트로 병렬로 로딩되도록 구성되는, 뉴럴 네트워크 회로.
  20. 제 12 항에 있어서,
    상기 캐스케이드된 PE 회로들의 제 1 세트는 다수의 캐스케이드된 PE 회로들을 포함하여, 상기 제 1 글로벌 누산기 회로가, 다수의 활성화-입력-비트 사이클들이 발생한 후에, 상기 다수의 캐스케이드된 PE 회로들에 매칭하는 상기 제 1 세트에서의 모든 PE 회로들을 통해 제 1 PE 회로로부터 부분 합을 수신하도록 구성되는, 뉴럴 네트워크 회로.
  21. 제 12 항에 있어서,
    상기 제 1 글로벌 누산기 회로는, 다수의 활성화-입력-비트 사이클들이 발생한 후에 상기 제 1 세트에서의 모든 PE 회로들을 통해 제 1 PE 회로로부터 부분 합을 수신하도록 구성되고; 그리고
    상기 제 1 세트에서의 캐스케이드된 PE 회로들의 수는 활성화-입력-비트 사이클들의 수보다 크거나 같은, 뉴럴 네트워크 회로.
  22. 제 12 항에 있어서,
    상기 캐스케이드된 PE 회로들의 제 1 세트에서의 각각의 PE 회로는 디지털 컴퓨트-인-메모리 (DCIM) PE 회로이고, 각각의 PE 회로에서의 상기 MAC 회로는 DCIM 어레이를 포함하고, 상기 DCIM 어레이는 복수의 컴퓨트-인-메모리 셀들을 포함하고, 컴퓨트-인-메모리 셀들 중 적어도 하나는 8-트랜지스터 (8T) 정적 랜덤-액세스 메모리 (SRAM) 셀을 포함하는, 뉴럴 네트워크 회로.
  23. 제 12 항에 있어서,
    캐스케이드된 PE 회로들의 제 2 세트로서, 상기 제 2 세트에서의 제 1 PE 회로의 출력은 상기 제 2 세트에서의 제 2 PE 회로의 입력에 커플링되고, 상기 캐스케이드된 PE 회로들의 제 2 세트에서의 각각의 PE 회로는:
    곱셈-및-누산 (MAC) 회로,
    상기 MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로, 및
    상기 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, 상기 캐스케이드된 PE 회로들의 제 2 세트;
    상기 캐스케이드된 PE 회로들의 제 2 세트의 출력에 커플링된 입력을 갖는 제 2 글로벌 누산기 회로;
    상기 제 1 글로벌 누산기 회로의 출력에 커플링된 입력을 갖는 제 1 카피-플롭;
    상기 제 2 글로벌 누산기 회로의 출력에 커플링된 제 1 입력을 갖고 상기 제 1 카피-플롭의 출력에 커플링된 제 2 입력을 갖는 제 2 카피-플롭; 및
    상기 제 2 카피-플롭의 출력에 커플링된 입력을 갖는 슈퍼 글로벌 누산기 회로를 포함하는, 뉴럴 네트워크 회로.
  24. 뉴럴 네트워크 프로세싱의 방법으로서,
    멀티플렉서의 제 1 입력에서, 기록 레지스터로부터 제 1 데이터를 수신하는 단계;
    상기 멀티플렉서의 제 2 입력에서, 플립-플롭 어레이로부터 제 2 데이터를 수신하는 단계;
    누산기 회로에서, 프로세싱 엘리먼트 (PE) 회로로부터 제 3 데이터를 수신하는 단계;
    상기 멀티플렉서에 의해, 상기 제 1 데이터와 상기 제 2 데이터 사이에서 상기 누산기 회로에 출력할 데이터를 선택하는 단계; 및
    누산된 데이터를 생성하기 위해, 상기 누산기 회로에 의해, 상기 멀티플렉서로부터 선택된 출력 데이터 및 PE 회로로부터 수신된 상기 제 3 데이터를 누산하는 단계를 포함하는, 뉴럴 네트워크 프로세싱의 방법.
  25. 제 24 항에 있어서,
    상기 누산된 데이터를 플립-플롭 어레이에 출력하는 단계;
    상기 플립-플롭 어레이에 의해, 상기 누산된 데이터를 판독 레지스터로 시프트하는 단계; 및
    기록 버스를 통해 상기 판독 레지스터로부터 밀착 결합 메모리 (TCM) 에 상기 누산된 데이터를 기록하는 단계를 더 포함하는, 뉴럴 네트워크 프로세싱의 방법.
  26. 제 24 항에 있어서,
    상기 누산된 데이터를 플립-플롭 어레이에 출력하는 단계;
    상기 플립-플롭 어레이에 의해, 상기 누산된 데이터를 판독 레지스터로 시프트하는 것; 및
    디지털 포스트-프로세싱 로직에 의해, 상기 판독 레지스터로부터의 상기 누산된 데이터를 프로세싱하는 단계; 및
    상기 디지털 포스트-프로세싱 로직과 밀착 결합 메모리 (TCM) 사이에 커플링된 기록 버스를 통해 TCM 에 프로세싱되어진 상기 누산된 데이터를 기록하는 단계를 더 포함하는, 뉴럴 네트워크 프로세싱의 방법.
  27. 뉴럴 네트워크 프로세싱의 방법으로서,
    캐스케이드된 (processing element; PE) 회로들의 세트에서의 각각의 PE 회로에서 곱셈-및-누산 (multiply-and-accumulate; MAC) 동작을 수행하는 단계로서, 상기 캐스케이드된 PE 회로들의 세트에서의 제 1 PE 회로의 출력은 상기 캐스케이드된 PE 회로들의 세트에서의 제 2 PE 회로의 입력에 커플링되고, 상기 캐스케이드된 PE 회로들의 세트에서의 각각의 PE 회로는:
    MAC 회로;
    상기 MAC 회로의 출력에 커플링된 입력을 갖는 로컬 누산기 회로; 및
    상기 로컬 누산기 회로의 출력에 커플링된 입력을 갖는 플립-플롭들의 세트를 포함하는, 상기 MAC 동작을 수행하는 단계;
    상기 캐스케이드된 PE 회로들의 세트에서 상기 PE 회로로부터 다음 PE 회로로 또는 글로벌 누산기 회로로 값을 시프트하기 위해 각각의 PE 회로에서의 상기 플립-플롭들의 세트에 의해 시프트 동작을 수행하는 단계로서, 각각의 PE 회로에서, 상기 시프트 동작은 상기 MAC 동작의 수행과 동시에 수행되는, 상기 시프트 동작을 수행하는 단계; 및
    누산된 데이터를 생성하기 위해, 상기 글로벌 누산기 회로에 의해, 상기 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로로부터 시프트된 값들을 누산하는 단계를 포함하는, 뉴럴 네트워크 프로세싱의 방법.
  28. 제 27 항에 있어서,
    가중치들로 각각의 PE 회로에서 상기 MAC 동작을 수행하기 전에 상기 캐스케이드된 PE 회로들의 세트에 병렬로 가중치들을 로딩하는 단계를 더 포함하는, 뉴럴 네트워크 프로세싱의 방법.
  29. 제 27 항에 있어서,
    상기 누산하는 단계는:
    상기 글로벌 누산기 회로에 의해, 메모리에 부분 합들을 기록하는 단계; 및
    상기 글로벌 누산기 회로에 의해, 상기 메모리로부터 상기 부분 합들을 판독하는 단계를 포함하고, 상기 캐스케이드된 PE 회로들의 세트는 상기 메모리에 상기 부분 합들을 기록하거나 상기 메모리로부터 상기 부분 합들을 판독하지 않는, 뉴럴 네트워크 프로세싱의 방법.
  30. 제 27 항에 있어서,
    상기 누산하는 단계는:
    상기 글로벌 누산기 회로에서의 멀티플렉서의 제 1 입력에서, 상기 글로벌 누산기 회로의 기록 레지스터로부터 제 1 데이터를 수신하는 단계;
    상기 멀티플렉서의 제 2 입력에서, 상기 글로벌 누산기 회로에서 플립-플롭 어레이로부터 제 2 데이터를 수신하는 단계;
    상기 글로벌 누산기 회로에서의 다른 누산기 회로에서, 상기 캐스케이드된 PE 회로들의 세트에서 마지막 PE 회로로부터 제 3 데이터를 수신하는 단계;
    상기 멀티플렉서에 의해, 상기 제 1 데이터와 상기 제 2 데이터 사이에서, 상기 다른 누산기 회로에 출력할 데이터를 선택하는 단계; 및
    누산된 데이터를 생성하기 위해, 상기 다른 누산기 회로에 의해, 상기 멀티플렉서로부터 선택된 출력 데이터 및 상기 제 3 데이터를 누산하는 단계를 포함하는, 뉴럴 네트워크 프로세싱의 방법.
KR1020247004107A 2021-08-10 2022-08-08 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 KR20240036594A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/398,791 US20230047364A1 (en) 2021-08-10 2021-08-10 Partial sum management and reconfigurable systolic flow architectures for in-memory computation
US17/398,791 2021-08-10
PCT/US2022/074658 WO2023019103A1 (en) 2021-08-10 2022-08-08 Partial sum management and reconfigurable systolic flow architectures for in-memory computation

Publications (1)

Publication Number Publication Date
KR20240036594A true KR20240036594A (ko) 2024-03-20

Family

ID=83149587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247004107A KR20240036594A (ko) 2021-08-10 2022-08-08 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들

Country Status (5)

Country Link
US (1) US20230047364A1 (ko)
EP (1) EP4384899A1 (ko)
KR (1) KR20240036594A (ko)
CN (1) CN117795473A (ko)
WO (1) WO2023019103A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11908545B2 (en) * 2022-02-24 2024-02-20 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device and operating method for computing-in-memory

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7196708B2 (en) * 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
US10146506B2 (en) * 2014-11-11 2018-12-04 Texas Instruments Incorporated Efficient implementation of a multiplier/accumulator with load

Also Published As

Publication number Publication date
WO2023019103A1 (en) 2023-02-16
US20230047364A1 (en) 2023-02-16
EP4384899A1 (en) 2024-06-19
CN117795473A (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
CN117546178A (zh) 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
US20230031841A1 (en) Folding column adder architecture for digital compute in memory
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20230115373A1 (en) Accumulator for digital computation-in-memory architectures
US12056459B2 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
US20240086153A1 (en) Multi-bit accumulator and in-memory computing processor with same
US20240256827A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
US12019905B2 (en) Digital compute in memory
US20220414454A1 (en) Computation in memory architecture for phased depth-wise convolutional
US20240095492A1 (en) Memory management for mathematical operations in computing systems with heterogeneous memory architectures
CN118364883A (zh) 一种支持深度卷积通道全并行计算的存算一体计算系统、方法及存算一体芯片