KR20240035999A - 뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처 - Google Patents

뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처 Download PDF

Info

Publication number
KR20240035999A
KR20240035999A KR1020247001639A KR20247001639A KR20240035999A KR 20240035999 A KR20240035999 A KR 20240035999A KR 1020247001639 A KR1020247001639 A KR 1020247001639A KR 20247001639 A KR20247001639 A KR 20247001639A KR 20240035999 A KR20240035999 A KR 20240035999A
Authority
KR
South Korea
Prior art keywords
pes
neural network
npu
cim
data
Prior art date
Application number
KR1020247001639A
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 퀄컴 인코포레이티드
Priority claimed from PCT/US2022/073979 external-priority patent/WO2023004374A1/en
Publication of KR20240035999A publication Critical patent/KR20240035999A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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

Abstract

머신 러닝 태스크들을 수행하기 위한 방법들 및 장치, 및 특히, 뉴럴 프로세싱 유닛 (NPU) 및 컴퓨트-인-메모리 (CIM) 엘리먼트들 양쪽 모두를 포함하는 하이브리드 아키텍처가 개시된다. 하나의 예의 뉴럴-네트워크-프로세싱 회로는 일반적으로 복수의 CIM 프로세싱 엘리먼트들 (PEs), 복수의 뉴럴 프로세싱 유닛 (NPU) PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함한다. 뉴럴 네트워크 프로세싱을 위한 하나의 예의 방법은 일반적으로 뉴럴 네트워크 프로세싱 회로에서 데이터를 프로세싱하는 단계로서, 뉴럴 네트워크 프로세싱 회로는: 복수의 CIM PE들, 복수의 NPU PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함하는, 데이터를 프로세싱하는 단계; 및 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하는 단계를 포함한다.

Description

뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처
관련 출원(들)에 대한 상호-참조
본 출원은 2021년 7월 21일자로 가출원된 미국 출원 제 63/224,155 호의 이익 및 이에 대한 우선권을 주장하는, 2022년 7월 20일자로 출원된 미국 정규출원 제 17/813,834 호에 대해 우선권을 주장하며, 이 출원들은 아래 충분하게 설명된 바와 같이 모든 적용가능한 목적으로 본 명세서에 그 전체가 참조로서 명백하게 포함된다.
기술분야
본 개시의 양태들은 머신 러닝에 관한 것이고, 특히, NPU (neural processing unit) 및 CIM (compute-in-memory) 기법들에 관한 것이다.
머신 러닝은 일반적으로 트레이닝된 모델 (예를 들어, 인공 뉴럴 네트워크, 트리, 또는 다른 구조들) 을 생성하는 프로세스이며, 이는 선험적으로 알려진 트레이닝 데이터의 세트에 대한 일반화 피트(fit)를 나타낸다. 트레이닝된 모델을 새로운 데이터에 적용하는 것은 추론들을 생성하며, 이는 새로운 데이터에 대한 통찰력들을 얻는데 사용될 수도 있다. 일부 경우들에서, 모델을 새로운 데이터에 적용하는 것은 새로운 데이터에 대해 "추론을 실행하는 것" 으로서 설명된다.
머신 러닝의 사용이 여러 머신 러닝 (또는 인공 지능) 태스크들을 가능하게 하기 위해 확산함에 따라, 머신 러닝 모델의 더 효율적인 프로세싱에 대한 요구가 커지고 있다. 일부 경우들에, 전용 하드웨어, 이를 테면, 머신 러닝 가속기들은 머신 러닝 모델 데이터를 프로세싱하기 위해 프로세싱 시스템 용량을 강화하는데 사용될 수도 있다. 그러나, 이러한 하드웨어는 공간 및 전력을 요구하며 이는 프로세싱 디바이스 상에서 항상 이용가능한 것이 아니다. 예를 들어, "에지 프로세싱" 디바이스들, 이를 테면, 모바일 디바이스들, 상시-온 디바이스들, 사물 인터넷 (IoT) 디바이스들 등등은 통상적으로 전력 및 패키징 구속요건들과 프로세싱 능력들을 밸런싱해야 한다. 또한, 가속기들은 공통 데이터 버스들에 걸쳐 데이터를 이동시킬 수도 있고, 이는 데이터 버스를 공유하는 다른 프로세스들에 레이턴시를 도입하는 상당한 전력 사용량을 야기할 수 있다. 결과적으로, 프로세싱 시스템의 다른 양태들이 머신 러닝 모델 데이터를 프로세싱하기 위하여 고려되고 있다.
메모리 디바이스들은 "인-메모리 컴퓨테이션"으로 또한 지칭될 수 있는, 소위 컴퓨트-인-메모리 (CIM) 프로세스들을 통하여 머신 러닝 모델 데이터를 수행하기 위하여 활용될 수도 있는 프로세싱 시스템의 다른 양태의 하나의 예이다. 통상적인 CIM 프로세스들은 아날로그 신호들을 사용하여 계산을 수행하며, 이는 계산 결과들의 부정확성을 초래하여 뉴럴 네트워크 계산들에 악영향을 미칠 수 있다. 따라서, 증가된 정확도로 컴퓨테이션-인-메모리를 수행하기 위한 기법들 및 장치가 요구된다.
본 개시의 시스템들, 방법들 및 디바이스들은 각각 여러 양태들을 가지며, 이들 중 단 하나만이 단독으로 그의 바람직한 속성들을 전적으로 담당하지 않는다. 뒤이어지는 청구항들에 의해 표현된 바와 같이 본 개시의 범위를 한정하지 않고도, 일부 특징들이 하기에서 간략하게 논의된다. 이 논의를 고려한 이후, 특히, "상세한 설명" 이라는 제목의 섹션을 읽은 후, 본 명세서에서 설명된 이점들을 본 개시의 특징부들이 어떻게 제공하는지를 이해할 것이다.
본 개시의 특정 양태들은 뉴럴-네트워크-프로세싱 회로에 관한 것이다. 뉴럴-네트워크-프로세싱 회로는 일반적으로 복수의 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PEs), 복수의 뉴럴 프로세싱 유닛 (NPU) PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함한다.
본 개시의 특정 양태들은 뉴럴 네트워크 프로세싱을 위한 방법에 관한 것이다. 본 방법은 일반적으로 복수의 CIM PE들, 복수의 NPU PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함하는 뉴럴 네트워크 프로세싱 회로에서 데이터를 프로세싱하는 단계; 및 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하는 단계를 포함한다.
본 개시의 특정 양태들은 프로세싱 시스템에 관한 것이다. 프로세싱 시스템은 일반적으로 복수의 CIM PE들, 복수의 NPU PE들, 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스, 컴퓨터-실행가능 명령들이 저장된 메모리, 및 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서들은 상부에 저장된 컴퓨터 실행가능 명령들을 실행시켜, 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하도록 구성된다.
다른 양태들은 전술한 방법 및 여기에 설명된 것들을 수행하도록 구성된 프로세싱 시스템; 프로세싱 시스템의 하나 이상의 프로세서에 의해 실행될 때, 프로세싱 시스템으로 하여금 전술한 방법 및 여기에 설명된 것들을 수행하게 하는 명령들을 포함하는 비일시적 컴퓨터 판독 가능 매체; 전술한 방법 및 여기에 추가로 설명된 것들을 수행하기 위한 코드를 포함하는 컴퓨터 판독 가능 저장 매체에 구체화된 컴퓨터 프로그램 제품; 및 전술한 방법 및 여기에 추가로 설명된 것들을 수행하는 수단을 포함하는 프로세싱 시스템을 제공한다.
전술한 그리고 관련된 목적들의 달성을 위해 하나 이상의 양태들은, 이하에서 충분히 설명되고 특히 청구항들에서 적시되는 특징들을 포함한다. 다음의 설명 및 첨부된 도면들은 하나 이상의 양태들의 특정한 예시적인 특징들을 상세히 제시한다. 하지만, 이들 특징들은 다양한 양태들의 원리들이 채용될 수도 있는 다양한 방식들 중 몇 가지만을 나타낸다.
본 개시의 상기 언급된 피처들이 상세히 이해될 수 있도록, 위에서 간략하게 요약된 보다 구체적인 설명은 양태들을 참조하여 이루어질 수도 있으며, 그 양태들 중 일부는 첨부된 도면들에 예시된다. 그러나, 첨부된 도면들은 본 개시의 소정의 통상적인 양태들만을 예시할 뿐이고, 따라서, 본 설명은 다른 동일하게 효과적인 양태들을 인정할 수도 있으므로, 그 범위의 한정으로 간주되어서는 안된다는 것에 유의해야 한다.
도 1a-1d 는 본 개시의 양태들에 의해 구현될 수 있는 다양한 타입들의 뉴럴 네트워크들의 예들을 도시한다.
도 2 는 본 개시의 양태들에 의해 구현될 수 있는 통상적인 컨볼루션 동작의 일 예를 도시한다.
도 3a 및 3b 는 본 개시의 양태들에 의해 구현될 수 있는 깊이별 분리가능 컨볼루션 동작의 예들을 도시한다.
도 4 는 본 개시의 다양한 양태들에 따른 예시적인 디지털 컴퓨트-인-메모리 (DCIM) 아키텍처의 블록 다이어그램이다.
도 5 는 8-트랜지스터 (8T) 정적 랜덤 액세스 메모리 (SRAM) 셀로서 구현되는, 도 4 의 DCIM 아키텍처에 대한 예시적인 컴퓨트-인-메모리 (CIM) 셀을 예시한다.
도 6 은 본 개시의 다양한 양태들에 따른 예시적인 뉴럴 프로세싱 유닛 (NPU) 아키텍처의 블록 다이어그램이다.
도 7a 는 본 개시의 특정 양태들에 따른 예시적인 데이터플로우 시퀀스를 예시한, 리소스들을 공유하는 DCIM 프로세싱 엘리먼트들 (PEs) 및 NPU PE들을 갖는 예시적인 하이브리드 아키텍처의 블록 다이어그램이다.
도 7b 는 본 개시의 특정 양태들에 따른, 리소스들을 공유하는 DCIM PE들 및 NPU PE들을 갖는 그리고 데이터 교환을 가능하게 하기 위한 선입선출(FIFO) 회로들을 갖는 예시적인 하이브리드 아키텍처의 블록 다이어그램이다.
도 8 은 본 개시의 특정 양태들에 따른, 경질 입력 대 중질 입력, 깊이, 및 커널들의 상이한 조합들에 대하여 DCIM 및 NPU를 비교하는 테이블이다.
도 9 는 본 개시의 특정 양태들에 따라, 하이브리드 아키텍처에서 예시적인 DCIM PE 와 예시적인 NPU PE 사이의 데이터 교환들의 블록 다이어그램이다.
도 10 은 본 개시의 특정 양태들에 따른 NPU PE들에 대한 예시적인 출력-고정 맵핑을 예시한다.
도 11 은 본 개시의 특정 양태들에 따른, DCIM PE들에 대한 예시적인 의사-가중치-고정 맵핑을 예시한다.
도 12 는 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 예시적인 동작들을 예시하는 플로우 다이어그램이다.
도 13 은 본 개시의 특정 양태들에 따라, 머신 러닝 태스크들을 수행하도록 구성되는 하이브리드 아키텍처를 갖는 예시적인 전자 디바이스를 예시하는 블록 다이어그램이다.
이해를 용이하게 하기 위해, 동일한 참조 번호들은, 가능한 경우, 도면들에 대해 공통적인 동일한 엘리먼트들을 지정하도록 사용되었다. 일 양태의 엘리먼트들 및 피처들은 추가 기재없이도 다른 양태들에 유익하게 통합될 수도 있음이 고려된다.
본 개시의 양태들은 데이터-집약적 프로세싱을 수행하기 위한, 이를 테면, 머신 러닝 모델들을 구현하기 위한 장치, 방법, 프로세싱 시스템 및 컴퓨터 판독가능 매체를 제공한다. 일부 양태들은 CIM (compute-in-memory) 및 NPU (neural processing unit) 프로세싱 엘리먼트들(PE들) 양쪽 모두를 사용하는 하이브리드 뉴럴 네트워크 아키텍처를 제공하며, 여기서 CIM PE들 및 NPU PE들은 리소스들 (예를 들어, 메모리) 을 공유할 수 있고, 동시에 동작할 수 있고, 동일한 뉴럴 네트워크 계층 내에서 또는 상이한 뉴럴 네트워크 계층들 (예를 들어, 인접한 계층들) 에서 하나의 타입의 PE로부터 다른 타입의 PE로 데이터를 전송할 수 있다. 예를 들어, CIM 및 NPU PE들은 가중치들, 활성화 입력들, 및/또는 출력들을 전송하기 위해 동일한 TCM (tightly coupled memory) 버스에 커플링될 수도 있다. 본 명세서에 제시된 바와 같은 하이브리드 아키텍처는 단지 NPU PE들 또는 단지 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) 은 (도 3b 에 도시된 바와 같이) 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) 에서) 피처들을 식별하는 컨볼루션 뉴럴 네트워크의 능력을 개선할 수 있다.
예시적인 CIM (Compute-in-Memory) 아키텍처
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 (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) 은 뉴럴 네트워크의 가중치 비트들로 로딩될 수 있다. 활성화 입력들은 입력 매트릭스 (예를 들어, 32-로우 x 8-컬럼 매트릭스) 로서 CIM 어레이 (401) 에, 한 번에 하나의 벡터로서, 또는 컬럼들에 걸쳐 공유되는 입력 벡터 (예를 들어, 8개의 컬럼들에 걸쳐 공유되거나 하드와이어링되는 32-로우 x 1-컬럼 벡터) 로서 제공될 수 있다. 도 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 셀 (402) 은 수신된 활성화 입력 비트와 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) 에 저장되며, 이는 최종 누산 결과를 다른 컴포넌트 (예를 들어, 후술되는 바와 같이, 출력 TCM 또는 디지털 포스트-프로세싱 로직) 에 전송하기 위한 레지스터로서 사용될 수 있다.
도 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 게이트 동작을 효과적으로 구현한다.
예시적인 뉴럴 프로세싱 유닛 (NPU) 아키텍처
도 6 은 본 개시의 다양한 양태들에 따른 예시적인 뉴럴 프로세싱 유닛 (NPU) 아키텍처 (600) 의 블록 다이어그램이다. NPU 는 뉴럴 네트워크 신호 프로세서 (NSP) 로도 지칭될 수 있으나, 일관성을 위해 본 발명은 용어 "NPU"를 사용한다. NPU 아키텍처 (600) 는 가중 TCM (tightly coupled memory) 버스 (602), 활성화 TCM 버스 (604), 출력 TCM 버스 (610), 디지털 포스트-프로세싱 로직 (608), 및 다수의 NPU 프로세싱 엘리먼트들 (PE들)(606) 을 가질 수 있다. NPU PE들 (606) 각각은 도시된 바와 같이, 다수의 곱셈-및-누산 (MAC) 유닛들 (612), 가산기 트리 (614), 및 누산기 레지스터 (616) 를 포함할 수 있다. 디지털 포스트-프로세싱 로직 (608) 은 바이어싱, 배치 정규화 (BN), 선형/비선형 임계화, 양자화 등과 같은, NPU PE들로부터의 누산 결과에 대한 다양한 적절한 디지털 프로세싱 동작들 중 임의의 것을 수행할 수 있다.
도 6 의 NPU 아키텍처 (600) 는 활성화 입력들 및 가중치들 둘 모두에 대한 병렬 MAC 동작을 제공하고, 단일 계산 사이클이 누산 결과를 생성할 수 있다. NPU PE들 (606) 은 누산기를 재사용하기 위해 출력-고정 아키텍처를 사용할 수 있다. 본 명세서에서 사용되는 바와 같이, 용어 "출력-고정"은 일반적으로, 계산 결과들이 동작 동안 고정 상태로 유지되지만 입력들 및 가중치들이 아키텍처를 통해 반대 방향들로 이동하는 재사용 아키텍처를 지칭한다. 즉, NPU 아키텍처 (600) 는 데이터 (예를 들어, 활성화 입력들 및/또는 가중치들) 를 공급하기 위한 TCM 대역폭에 의해 제한될 수 있고, 출력-고정 아키텍처는 각각의 사이클에서 가중치 로딩에 대해 비교적 큰 에너지 페널티를 가질 수 있다. 또한, 각각의 MAC 유닛 (612) 은 비교적 큰 영역을 점유할 수 있어서, NPU 아키텍처 (600) 는 많은 공간을 차지할 수 있다.
예시적인 하이브리드 아키텍처들 및 데이터플로우
전술한 바와 같이, CIM (compute-in-memory) 기술은 메모리 및 프로세싱 시스템 (예를 들어, 중앙 프로세싱 유닛 (CPU)) 으로부터 데이터를 이동함으로써 발생하는 에너지 및 속도 병목 현상을 해결하고 있다. CIM 은 가중치-고정 사용 사례에서 에너지 효율성 및 상당히 더 적은 메모리 액세스들 (예를 들어, 글로벌 메모리 액세스들) 을 제공한다. 위에 설명된 바와 같이, 용어 "가중치-고정"은 일반적으로 뉴럴 네트워크 가중치들이 동작 동안(예를 들어, 초기에 로딩된 후에) 고정 상태로 유지되고 입력들이 스트리밍되는 재사용 아키텍처를 지칭한다. 가중치-고정 맵핑은 동작 동안 가중치 업데이트 시간의 오버헤드를 감소시키기 위해 CIM 에서 사용될 수 있다.
이들 이점들에도 불구하고, CIM 및 다른 가중치-고정 맵핑 방식들은 특정 애플리케이션들에서 일부 도전과제들을 가질 수 있다. 예를 들어, 일부 뉴럴 네트워크 프로세싱 회로들 (예를 들어, DCIM PE들) 의 가중치-고정 동작은 이들 회로들로 하여금 최종 누산을 위해 부분 누산 결과들을 메모리 (예를 들어, 출력 TCM) 에 오프로드하고 재로딩 (예를 들어, 기록 및 판독) 하게 할 수 있다. "부분 합 (partial sum)"으로도 지칭되는, 부분 누산 결과는 최종 데이터가 아니거나, 또는 다시 말해, 다음 계층에 대한 활성화 입력으로 될 (또는 결과가 되기 전에 디지털 포스트-프로세싱 로직으로 전송될) 또는 계층의 최종 결과로서 출력 TCM 에 저장될 데이터가 될 준비가 아직 되지 않았다. 오히려, 부분 합들은 출력 TCM에 일시적으로 저장될 수 있고, 최종 누산 출력이 준비될 때까지 하나 이상의 사이클들에서 추가 프로세싱을 위해 DCIM PE들로 다시 판독될 수 있다. 이들 부분 합들은 최종 출력들이 (예를 들어, 디지털 포스트-프로세싱 로직에 의해) 프로세싱될 준비가 될 때 폐기될 수 있다.
일부 경우들에서, 가중치-고정 맵핑은 부분 누산 결과들이 버퍼 메모리에 기록되게 하고 후속 입력 피처 곱셈-및-누산 (MAC) 동작을 위해 버퍼 메모리로부터 다시 판독되게 할 수 있으며, 이는 이러한 판독/기록이 동일한 MAC 사이클에서 프로세싱될 수 없는 경우 에너지 및 성능 페널티의 관점에서 (예를 들어, 더 낮은 TOPS (lower tera-operations per second) 의 관점에서) 오버헤드를 생성할 수 있다. 또한, CIM 은, 예를 들어, 낮은 수의 커널들 및/또는 낮은 깊이 (예를 들어, 낮은 수의 뉴럴 네트워크 계층들) 를 갖는 워크로드들에 맵핑할 때 감소된 유연성을 가질 수 있다. CIM 은 또한 특히 적은 수의 커널들 및 많은 수의 입력들을 갖는 워크로드들에서 제한된 활용도를 가질 수 있다. 또한, CIM 은 동작 동안 CIM 셀들에 CIM 가중치들을 로우-바이-로우로 로딩하기 때문에, 출력-고정 워크로드들에서 성능 패널티 (예를 들어, 감소된 TOPS) 를 겪을 가능성이 클 수 있다. 위에 설명된 바와 같이, 용어 "출력-고정"은 일반적으로, 계산 결과들이 동작 동안 고정 상태로 유지되지만 입력들 및 가중치들이 아키텍처를 통해 반대 방향들로 이동하는 재사용 아키텍처를 지칭한다.
대조적으로, NPU들은 출력-고정 맵핑들 및/또는 큰 정도의 입력 피처 병렬성을 선호하는 워크로드들에 매우 적합하다. 그러나, NPU들은 많은 수의 커널들에 대한 확장성, 가중치 저장 및 곱셈으로 인한 큰 영역 점유, 및 메모리 대역폭에 대한 성능의 강한 의존성 (예를 들어, TOPS) 을 겪을 수 있다. 또한, NPU들은 누적 당 낮은 수의 로우들로 제한될 수 있고; 그렇지 않으면, 속도 및 면적 페널티가 있을 수 있다.
다시 말해서, CIM 유닛들은 일반적으로 에너지 효율성의 관점에서 NPU들보다 더 양호한 반면, NPU들은 일반적으로 깊이별 컨볼루션을 위해 CIM 유닛들보다 더 양호하다. 비트-직렬 동작에 기인하여, 디지털 컴퓨트-인-메모리 (DCIM) 유닛들은 NPU들보다 (예를 들어, TOPS/mm2의 관점에서) 주어진 영역에 대해 더 낮은 TOPS를 가질 수 있지만, 대등하거나 더 양호한 성능을 가질 수 있다. 위에서 제시된 이러한 다양한 장점들 및 단점들에 기인하여, CIM 유닛들만을 또는 NPU들만을 사용하는 뉴럴 네트워크 아키텍처는 특정 애플리케이션들에 이상적이지 않을 수 있다.
본 개시의 특정 양태들은 최상의 또는 적어도 더 나은 에너지 및 속도 트레이드 오프를 위해 DCIM 및 NPU를 사용하는 하이브리드 아키텍처를 제공한다. 이러한 하이브리드 아키텍처에서, DCIM 및 NPU 프로세싱 엘리먼트들 (PE들) 은 공유 메모리 리소스들을 사용할 수 있고, 동시에 동작할 수 있고, 하나의 컴퓨트 유닛 (예를 들어, NPU/DCIM) 으로부터 다른 컴퓨트 유닛 (예를 들어, DCIM/NPU) 으로 데이터를 전송할 수 있으며, 이는 뉴럴 네트워크의 동일한 계층 또는 연속적인 계층들 내에서 캐스케이드하는 것을 허용한다. 또한, DCIM 및 NPU PE들이 동일한 계층 내에서 데이터 트래픽을 파이프라인할 수 있도록, DCIM PE들은 의사 가중치 고정 맵핑으로 구현될 수 있고, NPU PE들은 출력 고정 맵핑으로 구현될 수 있다.
도 7a 는 본 개시의 특정 양태들에 따른 예시적인 데이터플로우 시퀀스를 예시한, 리소스들을 공유하는 DCIM PE들 (702) 및 NPU PE들 (703) 을 갖는 예시적인 하이브리드 아키텍처 (700) 의 블록 다이어그램이다. DCIM PE들 (702) 은 도 4 의 DCIM 회로 (400) 와 같은 다양한 적합한 DCIM 회로들 중 임의의 것으로 구현될 수 있다. NPU PE들 (703) 은 도 6 에 대하여 설명된 NPU PE들 (606) 과 같은 다양한 적합한 NPU 회로들 중 임의의 것으로 구현될 수 있다. 하이브리드 아키텍처 (700) 는 또한 글로벌 메모리 (704), 가중 TCM (tightly coupled memory) (706), 활성화 TCM (708), 출력 TCM (710), 버스 중재 로직 (712), 디지털 포스트-프로세싱 로직 (713), 메모리 버스 (714), 및 PE 버스 (716) (예를 들어, FIFO를 갖는 공통 버스) 를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, "TCM"은 일반적으로 PE들 (702, 703) 과 같은 프로세서(들)로부터의 전용 연결에 의해 액세스되는 메모리를 지칭한다. 별개의 TCM들로서 도시되지만, 가중 TCM (706), 활성화 TCM (708), 및/또는 출력 TCM (710) 은 커플링될 수 있다. 메모리 버스 (714) 는 글로벌 메모리 (704) 를 가중 TCM (706), 활성화 TCM (708) 및 출력 TCM (710) 에 커플링할 수 있다. PE 버스 (716) 는 DCIM PE들 (702), NPU PE들 (703), 및 디지털 포스트-프로세싱 로직 (713) 을 함께 커플링할 수 있다. 이러한 방식으로, DCIM PE들 (702) 및 NPU PE들 (703)은 메모리 리소스들(예를 들어, 가중 TCM, 활성화 TCM 및 출력 TCM) 을 공유할 수 있다.
도시된 데이터플로우 시퀀스에서, 가중치들은 글로벌 메모리 (704) 로부터 가중 TCM (706) 으로 로딩될 수 있다. 그 다음, 가중치들은 가중 TCM (706) 으로부터 PE 가중치 어레이들로 (예를 들어, DCIM PE들 (702)의 CIM 셀들에서 및/또는 NPU PE들 (703) 의 가중치 레지스터들에서) 로딩될 수 있다. 활성화 입력들은 메모리 버스 (714) 를 통해 글로벌 메모리 (704) 로부터 활성화 TCM (708) 으로 로딩될 수 있다. 그 다음, 활성화 입력들은 활성화 TCM (708) 으로부터 PE 버스 (716)(또는 활성화 버스로서 동작하는 PE 버스의 적어도 일부) 로 로딩될 수 있다. 가중치들이 PE들에 로딩되고 활성화들이 활성화 버스 상에서 준비된 후, DCIM PE들 (702) 및 NPU PE들 (703) 은 최종 누산 결과들을 생성하기 위해 다수의 계산 사이클들에 걸쳐 계산들 (예를 들어, MAC 동작들) 을 수행할 수 있다. 최종 누산 결과는 디지털 포스트-프로세싱 로직 (713) 에 의해 프로세싱될 수 있고, 프로세싱된 결과는 버스 중재 로직 (712) 에 의해 제어되는 바와 같이 출력 TCM (710) 에 기록될 수 있다. 출력 TCM (710) 으로부터, 프로세싱된 결과는 메모리 버스 (714) 를 통해 글로벌 메모리 (704) 에 로딩될 수 있다.
도 7b 는 본 개시의 특정 양태들에 따른, 리소스들을 공유하는 DCIM PE들 (702) 및 NPU PE들 (703) 을 갖는 그리고 데이터 교환을 가능하게 하기 위한 선입선출 (FIFO) 회로들을 갖는 다른 예의 하이브리드 아키텍처 (750) 의 블록 다이어그램이다. DCIM PE들 (702) 은 도 4 의 DCIM 회로 (400) 와 같은 다양한 적합한 DCIM 회로들 중 임의의 것으로 구현될 수 있다. NPU PE들 (703) 은 도 6 에 대하여 설명된 NPU PE들 (606) 와 같은 다양한 적합한 NPU 회로들 중 임의의 것으로 구현될 수 있다. 하이브리드 아키텍처 (750) 는 또한 글로벌 메모리 (704), (가중치들, 활성화 입력들, 및/또는 출력들을 저장하기 위한) 하나 이상의 TCM들 (718), 가중 버퍼 (720), 버스 중재 로직 (712), 디지털 포스트-프로세싱 로직 (713), DCIM PE 타일 맵퍼 (722), NPU PE 타일 맵퍼 (724), 비트-직렬 인터리버 (726), DCIM PE 활성화 FIFO (728), NPU PE 활성화 FIFO (730), 및 메모리 버스 (714) ("TCM 버스"라고도 지칭됨) 를 포함할 수 있다. 메모리 버스 (714) 는 글로벌 메모리 (704) 를 하나 이상의 TCM들 (718) 에 그리고 버스 중재 로직 (712) 에 커플링할 수 있다. 메모리 버스 (714) 는 또한 하나 이상의 TCM들 (718) 을 가중 버퍼 (720) 의 입력에 및 버스 중재 로직 (712) 에 커플링할 수 있다. 메모리 버스 (714) 는 또한 가중치 버퍼 (720) 의 출력을 버스 중재 로직 (712) 에 커플링할 수 있다. 버스 중재 로직 (712) 은 가중치들을 DCIM PE들 (702) 및 NPU PE들 (703) 에 라우팅할 수 있고 활성화 입력들을 상이한 활성화 FIFO들 (예를 들어, 728, 730) 에 라우팅할 수 있다. 버스 중재 로직 (712) 은 또한 디지털 포스트-프로세싱 로직 (713) 으로부터 출력들 (예를 들어, 최종 누산 결과들 또는 부분 합들) 을 수신할 수 있다. 이러한 방식으로, DCIM PE들 (702) 및 NPU PE들 (703) 은 메모리 리소스들 (예를 들어, 하나 이상의 TCM들 (718)) 을 공유할 수 있다. 하이브리드 아키텍처 (750) 에 대한 데이터플로우 시퀀스는 하이브리드 아키텍처 (700) 에 대해 위에서 설명된 데이터플로우 시퀀스와 유사할 수 있다.
하이브리드 아키텍처들 (700, 750) 에 대해, 디지털 포스트-프로세싱 로직 (713) 은 바이어싱, 배치 정규화, 선형/비선형 임계화, 양자화 등과 같은 기능들로 출력 데이터를 프로세싱할 수도 있다. 활성화 입력들은 DCIM PE들 (702) 및 NPU PE들 (703) 의 어느 일방 또는 양방에 대한 활성화 입력들을 준비하고 그리고 활성화 입력들을 대응하는 활성화 FIFO (728 또는 730) 에 기록하기 위해 다음의 어느 것: (1) (데이터가 실제 비디오, 오디오 또는 다른 센서 입력으로부터 기원할 수 있는 경우, 통상적으로 네트워크의 제 1 계층에 대한) TCM(들) (718) 로부터 직접 판독된 활성화 데이터; 또는 (2) (DCIM 및/또는 NPU PE들로부터의 누산기 출력들이 프로세싱되는 경우, 통상적으로 네트워크의 중간 계층들에 대한) 디지털 포스트-프로세싱 로직 (713) 으로부터 판독되는 활성화 데이터를 선택할 수 있는 버스 중재 로직 (712) 으로부터 수신될 수도 있다. 활성화 FIFO들 (728 또는 730) 각각은 플롭들의 어레이, 듀얼-포트 SRAM 메모리, 또는 하나의 기록 포트 및 판독 포트를 갖는 레지스터 파일을 사용하여 구현될 수 있다. 버스 중재 로직 (712) 은 입력 데이터를 다수의 목적지들에 라우팅하는 (디)멀티플렉서들로 구성된 조합 회로에 의해 구현될 수 있다. 데이터 목적지는, 계층 워크로드에 기초하여 목적지 결정들을 행할 수도 있는 맵퍼 모듈에 의해 제어될 수도 있다.
DCIM PE들 (702) 의 의사-가중치-고정 데이터플로우는 부분합 누산기 결과들을 생성한다. 부분 합들은 최종 데이터가 아니며, 즉, 아직 다음 계층에 대한 활성화 입력이 될 준비가 되지 않았거나 계층의 최종 결과로서 출력 TCM에 저장될 데이터도 아니다. 오히려, 부분 합들은 출력 TCM에 일시적으로 저장될 수 있고, 최종 출력이 준비될 때까지 하나 이상의 사이클들에서 추가 프로세싱을 위해 DCIM PE들 (702) 로 다시 판독될 수 있다. 이들 부분 합들은 최종 출력들이 디지털 포스트-프로세싱 로직 (713) 에 의해 프로세싱될 준비가 될 때 폐기될 수 있다.
부분 합 출력들은 버스 중재 로직 (712) 을 통해 라우팅되고, 출력 TCM으로 전송되고, 다시 판독되고, 이어서 버스 중재 로직 (712) 을 통해 DCIM PE들 (702) 로 다시 전송될 수 있다. DCIM PE들 (702) 로부터의 누산기 출력들은 프로세싱을 위해 디지털 포스트-프로세싱 로직 (713) 에 전송된 다음 버스 중재 로직 (712) 에 전송될 수 있다. 부분 합들의 경우, 디지털 포스트-프로세싱 로직 (713) 으로 가는 누산기 출력은 이를 통해 (예를 들어, 디지털 포스트-프로세싱 로직에 의해 프로세싱되지 않고) 공급될 수 있다. 누산기 출력이 최종 누산기 결과이면, 누산기 출력은 디지털 포스트-프로세싱 로직 (713) 에 의해 프로세싱된다. 디지털 포스트-프로세싱 로직은 이 프로세싱된 출력을 버스 중재 로직 (712) 으로 전송하고, 이어서 버스 중재 로직 (712) 은 이 데이터를 출력 TCM 에 또는 다른 네트워크 계층의 활성화 입력으로서 전송한다.
가중치 판독들에 대해, DCIM PE들 (702) 은 의사-가중치-고정식이고, 빈번한 가중치 기록을 가질 필요가 없고, 가중치 브로드캐스트 방식을 갖지 않을 수 있다. DCIM PE들 (702) 에서의 이러한 의사-가중치-고정 아키텍처 및 덜-빈번한 가중치 기록들 때문에, MAC 스톨들의 양은 상당히 감소될 수 있다. 대조적으로, NPU PE들 (703) 은 빈번한 가중치 기록 및 병렬 입력들에 걸쳐 가중치 공유를 허용하는 가중치 브로드캐스트 방식을 갖는 출력-고정 상태이다.
입력 판독들에 대해, DCIM PE들 (702) 은 많은 수의 맵핑된 커널들 (예를 들어, 병렬로 실행되는 32개의 커널들) 에 의해 인에이블되는 더 낮은 커널 사이클들 때문에 더 적은 활성화 판독들을 갖는다. 대조적으로, NPU PE들 (703) 의 빈번한 가중치 액세스는 공간적으로 맵핑된 입력 피처들의 페어링뿐만 아니라, 공간적으로 맵핑된 커널들의 페어링 (예를 들어, 병렬로 실행되는 8개의 입력 피처들 뿐만 아니라, 병렬로 실행되는 8개의 커널들) 을 야기할 수 있다. 그렇지 않으면, 입력 피처들의 전체 세트를 완료하기 위한 사이클들의 수가 증가하면 반복된 가중치 판독들로 인해 상당한 가중치 액세스 패널티가 있을 수 있다.
도 8 은 본 개시의 특정 양태들에 따른, 경질 입력 대 중질 입력, 깊이, 및 커널들의 상이한 조합들에 대하여 DCIM 및 NPU를 비교하는 테이블 (800) 이다. 예를 들어, 테이블 (800) 에서 010 은 경질 입력, 중질 깊이 및 경질 커널을 나타내는 반면, 101 은 중질 입력, 경질 깊이 및 중질 커널을 나타낸다. 테이블 (800) 로부터, DCIM이 일반적으로 에너지 효율의 관점에서 NPU보다 더 양호하다고 결정할 수 있다. 그러나, 예를 들어, NPU는 깊이별 컨볼루션 (depth-wise convolution) 에서 DCIM보다 양호하다.
도 9 는 본 개시의 특정 양태들에 따라, 적절한 활성화 FIFO 및 디지털 포스트-프로세싱 (DPP) 로직 (906, 908) 을 사용하는 하이브리드 아키텍처에서 예시적인 DCIM PE (902) 와 예시적인 NPU PE (904) 사이의 데이터 교환들의 블록 다이어그램 (900) 이다. 예를 들어, DCIM PE (902) 는 CWD x FDD x IBD 사이클들 후에 제1 출력 배치 (HWD 출력들) 를 생성할 수 있고, 여기서 HWD 는 DCIM PE (902) 에 대한 병렬 하드웨어에 의해 생성된 출력 바이트들의 수이고, CWD는 DCIM PE (902) 에 대한 컨볼루션 윈도우이고, FDD는 DCIM PE (902) 에 대한 필터 깊이이고, IBD는 DCIM PE (902) 에 대한 입력 배치 사이즈이다. 즉, 하드웨어 리소스들은 병렬 입력들, 병렬 커널들, 필터 깊이, 및 컨볼루션 윈도우의 공간 맵핑이다. 하드웨어 자원들에 맞지 않는 루프들은 순차적인 클록 사이클들에서 실행될 수 있다.
마찬가지로, NPU PE (904) 는 CWN x FDN 사이클들 후에 제 1 출력 배치 (HWN 출력들) 를 생성할 수 있고, 여기서 HWN 은 NPU PE (904) 에 대한 병렬 하드웨어에 의해 생성된 출력 바이트들의 수이고, CWN 은 NPU PE (904) 에 대한 컨볼루션 윈도우이고, FDN 은 NPU PE (904) 에 대한 필터 깊이이다. 특정 양태들의 경우, DCIM PE (예를 들어, 도 4 의 회로 (400) 의 경우) 가 누산당 32개 초과의 활성화들을 갖는 반면, NPU PE (904) 는 누산당 4개의 활성화들을 갖기 때문에, CWN x FDN은 8 x CWD x FDD 미만일 수 있다. 일부 경우들에서, DCIM PE (902) 에 대한 입력 배치 사이즈는 출력 레이턴시를 감소시키고 따라서 활성화 FIFO 사이즈를 감소시키기에 충분히 작지만 (예를 들어, IBD ≤ 32), 가중치 로딩 시간을 분할하고 가중치 재사용 팩터를 높게 유지하기에 충분히 크도록 (예를 들어, IBD ≥ 7) 선택된다.
도 10 은 본 개시의 특정 양태들에 따른, NPU PE들 (예를 들어, NPU PE들 (606)) 에 대한 데이터플로우 타이밍을 갖는 예시적인 출력-고정 맵핑 방식 (1000) 을 예시한다. 이 예에서, 깊이-제 1 구현은 출력-고정 맵핑 방식을 가능하게 할 수 있다. 부분 합들 (예를 들어, "PS1" 및 "PS2"로 라벨링된 부분 합들) 은 각각의 NPU PE 내의 누산기에 의해 재사용될 수 있다. 특정 양태들에 대해, 병렬로 실행되는 다수의 입력들 (예를 들어, "입력1" 및 "입력2"로 라벨링된 입력들) 이 존재할 수 있다. 2개의 입력들만이 도시되지만, NPU PE들의 수에 따라 2개 보다 많은 입력들이 존재할 수 있다. 각각의 클록 사이클에 대해, 깊이 사이클이 실행될 것이다.
각각의 깊이 사이클은 낮은 가중치 사용 팩터 및 에너지 페널티를 초래할 수 있는 가중치 업데이트를 획득하는 것을 수반할 수 있다. 가중치 업데이트가 획득된 후, 업데이트된 가중치는 각각의 병렬 입력 (예를 들어, Input1 및 Input2) 에 브로드캐스트될 수 있다. 매 깊이 사이클마다, 깊이 Ni에서 하나의 슬라이스가 판독된다. 예를 들어, 제 1 깊이 사이클 동안, 깊이 N1의 슬라이스가 판독되고, 제 2 깊이 사이클 동안, 깊이 N2 의 제2 슬라이스가 판독되고, 각각의 깊이 Ni 에 대해 등등이다. 깊이 사이클들 동안의 누산은 최종 누산기 (예를 들어, 누산기 레지스터 (616)) 에서 출력들 (예를 들어, "OUT1" 및 "OUT2"로 라벨링된 출력들) 을 생성하기 위해 각각의 NPU PE 내의 누산기(들)에 의해 수행될 수 있다. 그 결과, 부분 합들 (예를 들어, PS1, PS2) 은 메모리 또는 레지스터 파일에 기록될 필요가 없고, 메모리에 대한 출력 트래픽이 감소될 수 있다. 깊이 사이클들이 완료될 때, 최종 누산기 값 (예를 들어, "OUTW1" 및 "OUTW2"로 라벨링된 값들) 은 - 일부 경우들에서 디지털 포스트-프로세싱 로직으로 전달된 후 - 메모리 (예를 들어, 출력 TCM) 에 기록될 수 있거나 또는 전술한 바와 같이 DCIM 에 직접 포팅될 수 있다. NPU PE에서의 입력 병렬성의 사용은 가중치 사용 팩터를 개선하고 성능 (예를 들어, TOPS) 을 개선한다.
도 11 은 본 개시의 특정 양태들에 따른, DCIM PE들 (예를 들어, DCIM PE들(702)) 에 대한 데이터플로우 타이밍을 갖는 예시적인 의사-가중치-고정 매핑 방식 (1100) 을 예시한다. 이러한 의사-가중치-고정 맵핑 방식은 입력-배치 구현이고 우선적으로 가중치 고정식이다. 의사-가중치-고정 방식은 다수의 깊이-사이클들 각각에 대한 입력 피처들의 배치(batch)를 프로세싱한다. 더 작은 배치 사이즈는 최종 출력 결과가 더 신속하게 생성될 수 있게 하는데, 그 이유는 깊이-사이클들을 통한 실행을 종료하는 사이클들의 총 수가, 출력 생성을 상당히 지연시키는, 모든 입력들이 깊이-사이클들 각각에 대해 프로세싱되는 경우에 비해 훨씬 더 낮아지기 때문이다. 이러한 의사 가중치 고정 구현에서, DCIM PE는 부분 합들 및 합리적인 출력 레이턴시를 저장하는 출력 TCM 사이즈를 유지하기 위해 전역적으로 입력 고정될 수 있다. 이것은 또한 DCIM PE로부터 생성된 최종 출력들의 양을 제한함으로써 NPU PE 활성화 FIFO의 깊이를 감소시킬 수 있다.
도시된 바와 같이, 가중치들은 입력 배치에 대해 재사용된다. 예를 들어, 가중치들은 도시된 바와 같이, 깊이-사이클의 시작에서 4-사이클 기간 동안 로딩될 수도 있다. 특정 양태들에서, 피처 맵의 전체가 하나의 깊이-사이클에서 완료되지 않을 수도 있고, 다수의 깊이-사이클들이 입력 피처 맵을 확장하기 위해 이용될 수도 있다. 예를 들어, 도시된 바와 같이, 깊이-사이클에서 입력 피처 맵을 확장하는데 사용되는 입력-사이클의 수는 32일 수 있다. 가중치들을 로딩하는데 사용되는 깊이-사이클들의 수 및 피처 맵을 확장하는데 사용되는 깊이-사이클들의 수는 깊이-사이클 내의 클록 사이클들의 수에 따라 설정될 수 있다. "PSW"는 출력 TCM에 기록된 부분 합 출력을 나타내고, "PSR"은 출력 TCM으로부터 다시 판독된 부분 합 출력을 나타낸다. 마지막 깊이-사이클에서, 최종 출력들 (예를 들어, OUTW1, OUTW2, ..., 및 OUTWN) 은 위에 설명된 바와 같이 출력 TCM - 일부 경우들에서, 디지털 포스트-프로세싱 로직으로 전송된 후에 - 또는 NPU와 DCIM 사이의 임시 메모리로 전송될 수 있다.
본 개시의 특정 양태들은 DCIM 및 NPU 기술들을 결합하는 하이브리드 뉴럴 네트워크 아키텍처 및 회로부를 제공하여, 뉴럴 네트워크를 구현할 때 최상의 (또는 적어도 더 양호한) 에너지 및 속도 트레이드오프를 허용한다. 이러한 하이브리드 아키텍처는 NPU 및 DCIM PE들 중 어느 하나 또는 둘 모두의 사용을 통해 최적화된 (또는 적어도 향상된) 에너지 및/또는 성능 (예를 들어, TOPS) 에 대한 워크로드 실행을 가능하게 할 수 있다. DCIM PE들 및 NPU PE들은 가중치, 활성화, 및 출력 중 임의의 것 또는 조합을 위해 공유 메모리 리소스들 (예를 들어, TCM(들)) 을 사용할 수 있다. 의사-가중치-고정 DCIM PE들 및 출력-고정 NPU PE들은 하나의 컴퓨팅 유닛 (예를 들어, NPU/DCIM) 으로부터 다른 컴퓨팅 유닛 (예를 들어, DCIM/NPU) 으로의 고속 데이터 포팅 (및 이러한 포팅에서 FIFO들의 감소된 깊이) 을 허용하여, DCIM 및 NPU PE들의 동시 동작을 허용한다. 이러한 방식으로, DCIM PE들 및 NPU PE들은 동일한 계층 내에서 데이터 트래픽을 파이프라인화할 수 있고/있거나 연속적인 계층들 사이에서 데이터를 캐스케이드할 수 있다.
하이브리드 아키텍처를 갖는 데이터 프로세싱을 위한 예시적인 동작들
도 12 는 본 개시의 특정 양태들에 따라, 뉴럴 네트워크 프로세싱을 위한 예시적인 동작들 (1200) 을 예시하는 플로우 다이어그램이다. 동작들 (1200) 은 각각 도 7a 또는 도 7b 와 관련하여 설명된 하이브리드 아키텍처 (700 또는 750) 와 같은 하이브리드 뉴럴 네트워크 회로에 의해 수행될 수 있다.
동작들 (1200) 은 회로가 데이터를 프로세싱하는 블록 (1205) 에서 시작할 수도 있다. 회로는 복수의 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PEs)(예를 들어, DCIM PE들 (702)), 복수의 뉴럴 프로세싱 유닛 (NPU) PE들 (예를 들어, NPU PE들 (703)), 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스 (예를 들어, PE 버스 (716)) 를 포함한다. 블록 (1210) 에서, 프로세싱 데이터는 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 전송된다.
특정 양태들에 따르면, 뉴럴 네트워크 회로는 글로벌 메모리 (예를 들어, 글로벌 메모리 (704)) 또는 TCM (tightly coupled memory)(예를 들어, 가중 TCM (706), 활성화 TCM (708), 출력 TCM (710), 또는 하나 이상의 TCM들 (718)) 중 적어도 하나를 더 포함한다. 이 경우, 블록 (1210) 에서의 전달은 프로세싱된 데이터를 글로벌 메모리 또는 TCM 중 적어도 하나에 기록하지 않고 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하는 것을 포함할 수 있다.
하이브리드 아키텍처를 갖는 예시적인 디바이스
도 13 은 예시적인 전자 디바이스 (1300) 를 나타낸다. 전자 디바이스 (1300) 는 도 12 와 관련하여 설명된 동작들 (1200) 을 포함하여, 본원에 설명된 방법들을 수행하도록 구성될 수 있다.
전자 디바이스 (1300) 는 일부 양태들에서 멀티 코어 CPU 일 수 있는 중앙 프로세싱 유닛 (CPU) (1302) 을 포함한다. CPU (1302) 에서 실행된 명령들은, 예를 들어, CPU (1302) 와 연관된 프로그램 메모리로부터 로딩될 수도 있거나, 또는 메모리 (1324) 로부터 로딩될 수도 있다.
전자 디바이스 (1300) 는 또한 그래픽 프로세싱 유닛 (GPU)(1304), 디지털 신호 프로세서 (DSP) (1306), 뉴럴 프로세싱 유닛 (NPU) 프로세싱 엘리먼트들 (PEs) (1308) 및 컴퓨트-인-메모리 (CIM) 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: 뉴럴 네트워크 회로는 복수의 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PEs), 복수의 뉴럴 프로세싱 유닛 (NPU) PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함한다.
항 2: 항 1 의 뉴럴 네트워크 회로는 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 하나 이상의 공유된 메모리 리소스들을 더 포함한다.
항 3: 항 2 의 뉴럴 네트워크 회로에서, 하나 이상의 공유된 메모리 리소스들은 TCM (tightly coupled memory) 을 포함한다.
항 4: 항 3 의 뉴럴 네트워크 회로에서, TCM은 활성화들, 가중치들, 또는 출력들 중 적어도 하나를 저장하도록 구성된다.
항 5: 항 3 또는 4 의 뉴럴 네트워크 회로에서, 복수의 CIM PE들 중 적어도 하나는 데이터를 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성된다.
항 6: 항 5 의 뉴럴 네트워크 회로에서, 복수의 CIM PE들 중 적어도 하나는 데이터가 TCM에 기록되거나 그로부터 판독되지 않고 데이터를 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성된다.
항 7: 항 3-6 의 어느 것의 뉴럴 네트워크 회로에서, 복수의 NPU PE들 중 적어도 하나는 데이터를 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성된다.
항 8: 항 7 의 뉴럴 네트워크 회로에서, 복수의 NPU PE들 중 적어도 하나는 데이터가 TCM에 기록되거나 그로부터 판독되지 않고 데이터를 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성된다.
항 9: 항 1-4 의 어느 것의 뉴럴 네트워크 회로에서, 복수의 CIM PE들 중 적어도 하나는 데이터를 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성된다.
항 10: 항 9 의 뉴럴 네트워크 회로는 글로벌 메모리를 더 포함하고, 복수의 CIM PE들 중 적어도 하나는 데이터가 글로벌 메모리에 기록되거나 그로부터 판독되지 않고 데이터를 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성된다.
항 11: 항 9 또는 10 의 뉴럴 네트워크 회로에서, 복수의 CIM PE들 중 적어도 하나는 복수의 NPU PE들 중 적어도 하나와 동일한 뉴럴 네트워크 계층에 있다.
항 12: 항 9 또는 10 의 뉴럴 네트워크 회로에서, 복수의 CIM PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층에 있고, 복수의 NPU PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층과 상이한 제 2 뉴럴 네트워크 계층에 있다.
항 13: 항 12 의 뉴럴 네트워크 회로에서, 제 2 뉴럴 네트워크 계층은 제 1 뉴럴 네트워크 계층에 인접한다.
항 14: 항 1-6 및 9 의 어느 것의 뉴럴 네트워크 회로에서, 복수의 NPU PE들 중 적어도 하나는 데이터를 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성된다.
항 15: 항 14 의 뉴럴 네트워크 회로는 글로벌 메모리를 더 포함하고, 복수의 NPU PE들 중 적어도 하나는 데이터가 글로벌 메모리에 기록되거나 그로부터 판독되지 않고 데이터를 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성된다.
항 16: 항 14 또는 15 의 뉴럴 네트워크 회로에서, 복수의 NPU PE들 중 적어도 하나는 복수의 CIM PE들 중 적어도 하나와 동일한 뉴럴 네트워크 계층에 있다.
항 17: 항 14 또는 15 의 뉴럴 네트워크 회로에서, 복수의 NPU PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층에 있고, 복수의 CIM PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층과 상이한 제 2 뉴럴 네트워크 계층에 있다.
항 18: 항 17 의 뉴럴 네트워크 회로에서, 제 2 뉴럴 네트워크 계층은 제 1 뉴럴 네트워크 계층에 인접한다.
항 19: 선행하는 항들의 어느 것의 뉴럴 네트워크 회로에서, 복수의 CIM PE들은 의사-가중치-고정-PE들로서 구성된다.
항 20: 선행하는 항들의 어느 것의 뉴럴 네트워크 회로에서, 복수의 CIM PE들은 디지털 DCIM (digital compute-in-memory) PE들로서 구성된다.
항 21: 선행하는 항들의 어느 것의 뉴럴 네트워크 회로에서, 복수의 NPU PE들은 출력-고정-PE들로서 구성된다.
항 22: 선행하는 항들의 어느 것의 뉴럴 네트워크 회로는, 버스와 복수의 CIM PE들 사이에 그리고 버스와 복수의 NPU PE들 사이에 커플링되는 버스 중재 로직을 더 포함한다.
항 23: 항 22 의 뉴럴 네트워크 회로는 버스 중재 로직과 복수의 CIM PE들 사이에 그리고 버스 중재 로직과 복수의 NPU PE들 사이에 커플링되는 디지털 프로세싱 회로를 더 포함한다.
항 24: 항 23 의 뉴럴 네트워크 회로는 디지털 프로세싱 회로와 복수의 CIM PE들 사이에 커플링된 제 1 FIFO (first first-in, first-out) 회로; 및 디지털 프로세싱 회로와 복수의 NPU PE들 사이에 커플링된 제 2 FIFO 회로를 더 포함한다.
항 25: 항 22 의 뉴럴 네트워크 회로는 버스 중재 로직과 복수의 CIM PE들 사이에 커플링된 제 1 FIFO (first first-in, first-out) 회로; 및 버스 중재 로직과 복수의 NPU PE들 사이에 커플링된 제 2 FIFO 회로를 더 포함한다.
항 26: 뉴럴 네트워크 프로세싱을 위한 방법은: 복수의 컴퓨트-인-메모리 (CIM) 프로세싱 엘리먼트들 (PEs), 복수의 뉴럴 프로세싱 유닛 (NPU) PE들, 및 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스를 포함하는 뉴럴 네트워크 회로에서 데이터를 프로세싱하는 단계; 및 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하는 단계를 포함한다.
항 27: 항 26 의 방법에서, 뉴럴 네트워크 회로는, 글로벌 메모리 또는 TCM (tightly coupled memory) 중 적어도 하나를 더 포함하고, 전송하는 단계는 프로세싱 데이터를 글로벌 메모리 또는 TCM 중 적어도 하나에 기록하지 않고 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하는 단계를 포함한다.
항 28: 예 26 또는 27 의 방법은, 버스를 통하여 프로세싱된 데이터를 전송하기 전에 디지털 프로세싱 회로에서 프로세싱된 데이터를 디지털식으로 포스트-프로세싱하는 단계를 더 포함한다.
항 29: 항 26-28 의 어느 것의 방법에서, 복수의 CIM PE들은 의사-가중치-고정-PE들로서 구성되고, 그리고 복수의 NPU PE들은 출력-고정-PE들로서 구성된다.
항 30: 프로세싱 시스템은: 복수의 CIM (compute-in-memory) PE들; 복수의 NPU (neural processing unit) PE들; 복수의 CIM PE들에 그리고 복수의 NPU PE들에 커플링된 버스; 컴퓨터-실행가능 명령들이 저장된 메모리; 및 하나 이상의 프로세서를 포함하고, 하나 이상의 프로세서들은 상부에 저장된 컴퓨터 실행가능 명령들을 실행시켜, 버스를 통해 복수의 CIM PE들 중 적어도 하나와 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하도록 구성된다.
부가 고려사항들
전술한 설명은 당업자로 하여금 본 명세서에서 설명된 다양한 양태들을 실시할 수 있게 하기 위해 제공된다. 본 명세서에서 논의된 예들은 청구항들에 기재된 범위, 적용가능성, 또는 양태들을 한정하지 않는다. 이들 양태들에 대한 다양한 수정들은 당업자에게 용이하게 자명할 것이며, 본 명세서에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수도 있다. 예를 들어, 본 개시의 범위로부터 일탈함 없이 논의된 엘리먼트들의 기능 및 배열에 있어서 변경들이 이루어질 수도 있다. 다양한 예들은 다양한 절차들 또는 컴포넌트들을 적절하게 생략, 치환, 또는 추가할 수도 있다. 예를 들어, 설명된 방법들은 설명된 것과 상이한 순서로 수행될 수도 있으며, 다양한 단계들이 추가, 생략, 또는 결합될 수도 있다. 또한, 일부 예들에 대하여 설명된 특징들은 일부 다른 예들에 결합될 수도 있다. 예를 들어, 본 명세서에 제시된 임의의 수의 양태들을 사용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 여기에 제시된 본 개시의 다양한 양태들 이외에 또는 이에 더하여 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 개시의 임의의 양태는 청구항의 하나 이상의 요소에 의해 구체화될 수도 있다는 것이 이해되어야 한다.
본 명세서에서 사용된 바와 같이, 단어 "예시적인" 은 "예, 실례, 또는 예시로서 작용함" 을 의미하도록 사용된다. 본 명세서에서 "예시적인" 것으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로서 해석되어야 하는 것은 아니다.
본원에 사용된, 항목들의 리스트 "중 적어도 하나" 를 나타내는 어구는, 단일 멤버들을 포함한 그러한 아이템들의 임의의 조합을 나타낸다. 일 예로서, "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. 뉴럴 네트워크 프로세싱 회로로서,
    복수의 CIM (compute-in-memory) PE들 (processing elements);
    복수의 NPU (neural processing unit) PE들; 및
    상기 복수의 CIM PE들에 그리고 상기 복수의 NPU PE들에 커플링된 버스를 포함하는, 뉴럴 네트워크 프로세싱 회로.
  2. 제 1 항에 있어서,
    상기 복수의 CIM PE들에 그리고 상기 복수의 NPU PE들에 커플링된 하나 이상의 공유된 메모리 리소스들을 더 포함하는, 뉴럴 네트워크 프로세싱 회로.
  3. 제 2 항에 있어서,
    상기 하나 이상의 공유된 메모리 리소스들은 TCM (tightly coupled memory) 을 포함하는, 뉴럴 네트워크 프로세싱 회로.
  4. 제 3 항에 있어서,
    상기 TCM 은 활성화들 (activations), 가중치들 (weights), 또는 출력들 중 적어도 하나를 저장하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  5. 제 3 항에 있어서,
    상기 복수의 CIM PE들 중 적어도 하나는 데이터를 상기 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  6. 제 5 항에 있어서,
    상기 복수의 CIM PE들 중 적어도 하나는 상기 데이터가 상기 TCM 에 기록되거나 상기 TCM 으로부터 판독되지 않고 상기 데이터를 상기 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  7. 제 3 항에 있어서,
    상기 복수의 NPU PE들 중 적어도 하나는 데이터를 상기 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  8. 제 7 항에 있어서,
    상기 복수의 NPU PE들 중 적어도 하나는 상기 데이터가 상기 TCM 에 기록되거나 상기 TCM 으로부터 판독되지 않고 상기 데이터를 상기 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  9. 제 1 항에 있어서,
    상기 복수의 CIM PE들 중 적어도 하나는 데이터를 상기 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  10. 제 9 항에 있어서,
    글로벌 메모리를 더 포함하고, 상기 복수의 CIM PE들 중 적어도 하나는 상기 데이터가 상기 글로벌 메모리에 기록되거나 상기 글로벌 메모리로부터 판독되지 않고 상기 데이터를 상기 복수의 NPU PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  11. 제 9 항에 있어서,
    상기 복수의 CIM PE들 중 적어도 하나는 복수의 NPU PE들 중 적어도 하나와 동일한 뉴럴 네트워크 계층에 있는, 뉴럴 네트워크 프로세싱 회로.
  12. 제 9 항에 있어서,
    상기 복수의 CIM PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층에 있고, 상기 복수의 NPU PE들 중 적어도 하나는 상기 제 1 뉴럴 네트워크 계층과 상이한 제 2 뉴럴 네트워크 계층에 있는, 뉴럴 네트워크 프로세싱 회로.
  13. 제 12 항에 있어서,
    상기 제 2 뉴럴 네트워크 계층은 상기 제 1 뉴럴 네트워크 계층에 인접하는, 뉴럴 네트워크 프로세싱 회로.
  14. 제 1 항에 있어서,
    상기 복수의 NPU PE들 중 적어도 하나는 데이터를 상기 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  15. 제 14 항에 있어서,
    글로벌 메모리를 더 포함하고, 상기 복수의 NPU PE들 중 적어도 하나는 상기 데이터가 상기 글로벌 메모리에 기록되거나 상기 글로벌 메모리로부터 판독되지 않고 상기 데이터를 상기 복수의 CIM PE들 중 적어도 하나에 전송하도록 구성되는, 뉴럴 네트워크 프로세싱 회로.
  16. 제 14 항에 있어서,
    상기 복수의 NPU PE들 중 적어도 하나는 상기 복수의 CIM PE들 중 적어도 하나와 동일한 뉴럴 네트워크 계층에 있는, 뉴럴 네트워크 프로세싱 회로.
  17. 제 14 항에 있어서,
    상기 복수의 NPU PE들 중 적어도 하나는 제 1 뉴럴 네트워크 계층에 있고, 상기 복수의 CIM PE들 중 적어도 하나는 상기 제 1 뉴럴 네트워크 계층과 상이한 제 2 뉴럴 네트워크 계층에 있는, 뉴럴 네트워크 프로세싱 회로.
  18. 제 17 항에 있어서,
    상기 제 2 뉴럴 네트워크 계층은 상기 제 1 뉴럴 네트워크 계층에 인접하는, 뉴럴 네트워크 프로세싱 회로.
  19. 제 1 항에 있어서,
    상기 복수의 CIM PE들은 의사-가중치-고정-PE들 (pseudo-weight-stationary PEs) 로서 구성되는, 뉴럴 네트워크 프로세싱 회로.
  20. 제 1 항에 있어서,
    상기 복수의 CIM PE들은 디지털 DCIM (digital compute-in-memory) PE들로서 구성되는, 뉴럴 네트워크 프로세싱 회로.
  21. 제 1 항에 있어서,
    상기 복수의 NPU PE들은 출력-고정-PE들 (output-stationary PEs) 로서 구성되는, 뉴럴 네트워크 프로세싱 회로.
  22. 제 1 항에 있어서,
    상기 버스와 상기 복수의 CIM PE들 사이에 그리고 상기 버스와 상기 복수의 NPU PE들 사이에 커플링되는 버스 중재 로직을 더 포함하는, 뉴럴 네트워크 프로세싱 회로.
  23. 제 22 항에 있어서,
    상기 버스 중재 로직과 상기 복수의 CIM PE들 사이에 그리고 상기 버스 중재 로직과 상기 복수의 NPU PE들 사이에 커플링되는 디지털 프로세싱 회로를 더 포함하는, 뉴럴 네트워크 프로세싱 회로.
  24. 제 23 항에 있어서,
    상기 디지털 프로세싱 회로와 상기 복수의 CIM PE들 사이에 커플링된 제 1 FIFO (first first-in, first-out) 회로; 및
    상기 디지털 프로세싱 회로와 상기 복수의 NPU PE들 사이에 커플링된 제 2 FIFO 회로를 더 포함하는, 뉴럴 네트워크 프로세싱 회로.
  25. 제 22 항에 있어서,
    상기 버스 중재 로직과 상기 복수의 CIM PE들 사이에 커플링된 제 1 FIFO (first first-in, first-out) 회로; 및
    상기 버스 중재 로직과 상기 복수의 NPU PE들 사이에 커플링된 제 2 FIFO 회로를 더 포함하는, 뉴럴 네트워크 프로세싱 회로.
  26. 뉴럴 네트워크 프로세싱을 위한 방법으로서,
    뉴럴 네트워크 프로세싱 회로에서 데이터를 프로세싱하는 단계로서, 상기 뉴럴 네트워크 프로세싱 회로는:
    복수의 CIM (compute-in-memory) PE들 (processing elements);
    복수의 NPU (neural processing unit) PE들; 및
    상기 복수의 CIM PE들에 그리고 상기 복수의 NPU PE들에 커플링된 버스를 포함하는, 상기 데이터를 프로세싱하는 단계; 및
    상기 버스를 통해 상기 복수의 CIM PE들 중 적어도 하나와 상기 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 상기 데이터를 전송하는 단계를 포함하는, 뉴럴 네트워크 프로세싱을 위한 방법.
  27. 제 26 항에 있어서,
    상기 뉴럴 네트워크 프로세싱 회로는, 글로벌 메모리 또는 TCM (tightly coupled memory) 중 적어도 하나를 더 포함하고, 상기 전송하는 단계는 상기 프로세싱된 데이터를 상기 글로벌 메모리 또는 상기 TCM 중 적어도 하나에 기록하지 않고 상기 버스를 통해 상기 복수의 CIM PE들 중 적어도 하나와 상기 복수의 NPU PE들 중 적어도 하나 사이에서 상기 프로세싱된 데이터를 전송하는 단계를 포함하는, 뉴럴 네트워크 프로세싱을 위한 방법.
  28. 제 26 항에 있어서,
    상기 버스를 통하여 상기 프로세싱된 데이터를 전송하기 전에 디지털 프로세싱 회로에서 상기 프로세싱된 데이터를 디지털식으로 포스트-프로세싱하는 단계를 더 포함하는, 뉴럴 네트워크 프로세싱을 위한 방법.
  29. 제 26 항에 있어서,
    상기 복수의 CIM PE들은 의사-가중치-고정-PE들로서 구성되고, 그리고 상기 복수의 NPU PE들은 출력-고정-PE들로서 구성되는, 뉴럴 네트워크 프로세싱을 위한 방법.
  30. 프로세싱 시스템으로서,
    복수의 CIM (compute-in-memory) PE들 (processing elements);
    복수의 NPU (neural processing unit) PE들;
    상기 복수의 CIM PE들에 그리고 상기 복수의 NPU PE들에 커플링된 버스;
    컴퓨터 실행가능한 명령들이 저장된 메모리; 및
    상기 컴퓨터 실행가능 명령들을 실행하여 상기 버스를 통해 상기 복수의 CIM PE들 중 적어도 하나와 상기 복수의 NPU PE들 중 적어도 하나 사이에서 프로세싱된 데이터를 전송하도록 구성되는 하나 이상의 프로세서들을 포함하는, 프로세싱 시스템.
KR1020247001639A 2021-07-21 2022-07-21 뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처 KR20240035999A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163224155P 2021-07-21 2021-07-21
US63/224,155 2021-07-21
US17/813,834 2022-07-20
US17/813,834 US20230025068A1 (en) 2021-07-21 2022-07-20 Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
PCT/US2022/073979 WO2023004374A1 (en) 2021-07-21 2022-07-21 Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements

Publications (1)

Publication Number Publication Date
KR20240035999A true KR20240035999A (ko) 2024-03-19

Family

ID=84976718

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247001639A KR20240035999A (ko) 2021-07-21 2022-07-21 뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처

Country Status (3)

Country Link
US (1) US20230025068A1 (ko)
KR (1) KR20240035999A (ko)
CN (1) CN117651953A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883564B (zh) * 2023-02-21 2023-05-23 青岛创新奇智科技集团股份有限公司 一种媒体流处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
US20230025068A1 (en) 2023-01-26
CN117651953A (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
US11080049B2 (en) Apparatus and methods for matrix multiplication
US10891353B2 (en) Apparatus and methods for matrix addition and subtraction
US20190147342A1 (en) Deep neural network processor with interleaved backpropagation
US20210125071A1 (en) Structured Pruning for Machine Learning Model
CN115423081A (zh) 一种基于fpga的cnn_lstm算法的神经网络加速器
CN117546178A (zh) 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
KR20240026450A (ko) 메모리-기반 기계 학습 가속기 아키텍처에서의 컴퓨팅
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
WO2022007265A1 (zh) 一种膨胀卷积加速计算方法及装置
US20230031841A1 (en) Folding column adder architecture for digital compute in memory
KR20240025540A (ko) 깊이별 콘볼루션을 위한 메모리 아키텍처에서의 컴퓨테이션
US20230065725A1 (en) Parallel depth-wise processing architectures for neural networks
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
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
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20230037054A1 (en) Digital compute in memory
Li et al. RAWAtten: Reconfigurable accelerator for window attention in hierarchical vision transformers
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
Shahan et al. FPGA based convolution and memory architecture for Convolutional Neural Network
US20240095492A1 (en) Memory management for mathematical operations in computing systems with heterogeneous memory architectures
US20230049323A1 (en) Sparsity-aware compute-in-memory
Sun et al. A 974gops/w multi-level parallel architecture for binary weight network acceleration
KR20240058084A (ko) 뉴럴 네트워크들에 대한 병렬 깊이별 프로세싱 아키텍처들