KR102664456B1 - 주문형 집적 회로의 이중 모드 동작 - Google Patents

주문형 집적 회로의 이중 모드 동작 Download PDF

Info

Publication number
KR102664456B1
KR102664456B1 KR1020227004412A KR20227004412A KR102664456B1 KR 102664456 B1 KR102664456 B1 KR 102664456B1 KR 1020227004412 A KR1020227004412 A KR 1020227004412A KR 20227004412 A KR20227004412 A KR 20227004412A KR 102664456 B1 KR102664456 B1 KR 102664456B1
Authority
KR
South Korea
Prior art keywords
integrated circuit
tiles
tile
operating
input data
Prior art date
Application number
KR1020227004412A
Other languages
English (en)
Other versions
KR20220032089A (ko
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 KR20220032089A publication Critical patent/KR20220032089A/ko
Application granted granted Critical
Publication of KR102664456B1 publication Critical patent/KR102664456B1/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • 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/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Advance Control (AREA)

Abstract

다수의 타일을 포함하는 집적 회로 칩을 동작시키는 방법은 계산의 실행을 위한 타일들에 대한 구성을 결정하는 단계를 포함한다. 타일들에 대한 구성이 제1 기준을 충족하는 경우, 집적 회로는 타일 각각에서 개별 입력 데이터를 동시에 수신하는 단계를 포함하는 제1 모드에서 동작한다. 타일들에 대한 구성이 제2 기준을 충족하는 경우, 집적 회로는 제1 시간에, 제1 타일 그룹의 각 타일에서 개별 제1 입력 데이터를 동시에 수신하는 단계와, 제1 시간에, 다수의 지연 레지스터 각각에 개별 제2 입력 데이터를 저장하는 단계와, 각 지연 레지스터는 제2 타일 그룹의 타일에 대응하고, 제2 시간에, 지연 레지스터들로부터 제2 입력 데이터를 해제하고 해제된 개별 제2 입력 데이터를 제2 타일 그룹의 각 타일에서 수신하는 단계를 포함하는 제2 모드에서 동작한다.

Description

주문형 집적 회로의 이중 모드 동작
본 출원은 2019년 8월 14일에 출원된 미국 특허 출원 번호 62/886,481에 대한 우선권을 주장하며, 전체 내용은 여기에 참조로 포함된다.
신경망은 하나 이상의 모델 계층을 사용하여 수신 입력에 대한 출력, 예를 들어, 분류를 생성하는 기계 학습 모델이다. 일부 신경망은 출력 계층이외에 하나 이상의 은닉 계층이 포함된다. 각 은닉 계층의 출력은 네트워크의 다음 계층, 즉 네트워크의 다음 은닉 계층 또는 출력 계층의 입력으로 사용된다. 네트워크의 각 계층은 개별 파라미터 세트의 현재 값에 따라 수신 입력으로부터 출력을 생성한다.
일부 신경망은 하나 이상의 컨볼루션 신경망 계층을 포함한다. 각 컨볼루션 신경망 계층에는 관련 커널 세트가 있다. 커널은 가중치 입력의 행렬 구조로 나타낼 수 있다. 각 컨볼루션 계층은 활성화 입력 세트도 처리할 수 있다. 활성화 입력 세트는 행렬 구조로 나타낼 수도 있다.
일부 기존 시스템은 소프트웨어로 주어진 컨볼루션 계층에 대한 계산을 수행한다. 예를 들어, 소프트웨어는 계층의 각 커널을 활성화 입력 세트에 적용할 수 있다. 즉, 각 커널에 대해, 소프트웨어는 다차원적으로 표시될 수 있는 활성화 입력의 제1 부분 위에 다차원적으로 표시될 수 있는 커널을 오버레이할 수 있다. 그런 다음 소프트웨어는 중첩된 요소에서 내적(dot product)을 계산할 수 있다. 내적은 단일 활성화 입력, 예를 들어 중첩된 다차원 공간에서 좌측 상단 위치를 갖는 활성화 입력 요소에 대응할 수 있다. 예를 들어, 슬라이딩 윈도우를 사용하여 소프트웨어는 활성화 입력의 제2 부분을 오버레이하도록 커널을 시프트하여 다른 활성화 입력에 해당하는 다른 내적을 계산할 수 있다. 소프트웨어는 각 활성화 입력이 대응하는 내적을 가질 때까지 이 프로세스를 반복적으로 수행할 수 있다. 일부 구현에서, 내적은 활성화 값을 생성하는 활성화 함수로 입력된다. 활성화 값들은 신경망의 후속 계층으로 전송되기 전에 결합, 예를 들어 풀링(pooled)될 수 있다.
본 명세서에서는 주어진 계산을 실행하기 위한 집적 회로의 구성에 기초하여 두 가지 모드 중 하나로 동작할 수 있는 주문형 집적 회로(ASIC)와 같은 집적 회로에 대해 설명한다. 집적 회로는 타일 어레이를 포함한다. 일 모드에서, 주어진 계산에 관련된 모든 타일은 서로 동일한 시간, 예를 들어 동일한 클럭 사이클로 처리할 입력 데이터를 수신한다. 다른 모드에서, 데이터 처리의 타이밍이 타일의 서브세트 사이에서 시차를 두도록 타일의 서브세트의 동작에 의도적으로 지연이 도입된다. 예를 들어, 제2 집적 회로의 동작은 집적 회로의 전력 소비 및 전류 변화율이 집적 회로의 설계 제약 내에서 유지되도록 함으로써 공격에 강한 집적 회로를 만들 수 있다.
일 양태에서, 다수의 타일을 포함하는 집적 회로 칩을 동작시키는 방법은 계산의 실행을 위해 집적 회로의 타일들에 대한 구성을 결정하는 단계를 포함한다. 방법은 타일들에 대한 구성이 제1 기준을 충족하는 경우 제1 모드에서 집적 회로를 동작시키는 단계를 포함하고 이는 집적 회로의 각각의 타일에서 계산하기 위한 개별 입력 데이터를 동시에 수신하는 단계를 포함한다. 방법은 타일들에 대한 구성이 제2 기준을 충족하는 경우 제2 모드에서 집적 회로를 동작시키는 단계를 포함하며, 이는 제1 시간에, 집적 회로의 제1 타일 그룹의 각 타일에서 계산하기 위한 개별 제1 입력 데이터를 동시에 수신하는 단계와; 제1 시간에, 다수의 지연 레지스터 각각에 계산을 위한 개별 제2 입력 데이터를 저장하는 단계와, 각 지연 레지스터는 집적 회로의 제2 타일 타일 그룹에 대응하고; 제2 시간에, 지연 레지스터들로부터 제2 입력 데이터를 해제하고 그 해제된 개별 제2 입력 데이터를 제2 타일 그룹의 각 타일에서 수신하는 단계를 포함한다.
실시예들은 다음 특징들 중 하나 또는 둘 이상의 임의의 조합을 포함할 수 있다.
계산의 실행을 위한 타일들에 대한 구성을 결정하는 단계는 계산을 실행하기 위해 동작 가능한 타일의 수 및 백분율 중 하나 이상을 결정하는 단계를 포함한다. 제1 기준은 임계수(threshold number) 또는 백분율미만인 계산을 실행하도록 동작 가능한 타일의 수 또는 백분율을 포함하고, 제2 기준은 임계수 또는 백분율보다 큰 계산을 실행하도록 동작 가능한 타일의 수 또는 백분율을 포함한다.
계산의 실행을 위한 타일들에 대한 구성을 결정하는 단계는 계산을 실행하기 위해 동작 가능한 타일의 열의 수를 결정하는 단계를 포함한다. 제1 기준은 임계수 또는 백분율미만인 계산을 실행하도록 동작 가능한 타일의 열의 수 또는 백분율을 포함하고, 제2 기준은 임계수 또는 백분율보다 큰 계산을 실행하도록 동작 가능한 타일의 열의 수 또는 백분율을 포함한다.
방법은 타일들에 대한 구성이 제1 기준 또는 제2 기준을 충족하는지 여부를 결정하는 단계를 포함한다.
제2 모드에서 집적 회로를 동작시키는 단계는 지연 레지스터들을 인에이블하도록 멀티플렉서를 동작시키는 단계를 포함한다. 제1 모드에서 집적 회로를 동작시키는 단계는 지연 레지스터들을 디스에이블하도록 멀티플렉서를 동작시키는 단계를 포함한다.
제1 시간은 제1 클럭 사이클이고 제2 시간은 다음 클럭 사이클이다.
제1 모드에서 개별 입력 데이터를 동시에 수신하는 단계는 각 타일에서 입력 데이터의 벡터를 수신하는 단계를 포함한다.
제1 모드에서 집적 회로를 동작시키는 단계는 개별 입력 데이터를 처리하기 위해 집적 회로의 타일들 각각을 동작시키는 단계를 포함한다.
제2 모드에서 집적 회로를 동작시키는 단계는 개별 제1 입력 데이터를 처리하기 위해 제1 그룹의 타일 각각을 동작시키는 단계; 및 지연 레지스터로부터 해제된 개별 제2 입력 데이터를 처리하기 위해 제2 그룹의 타일 각각을 동작시키는 단계를 포함한다.
방법은 컴파일러로부터 제1 기준 및 제2 기준의 표시를 수신하는 단계를 포함한다.
일 양태에서, 집적 회로는 대응하는 제1 버스 라인에 각각 연결된 다수의 지연 레지스터와; 제1 타일 그룹의 각 타일은 대응하는 제2 버스 라인에 연결되고, 제2 타일 그룹의 각 타일은 제1 버스 라인들 중 대응하는 하나에 연결된 다수의 타일과; 그리고 계산의 실행을 위해 제1 및 제2 타일 그룹의 구성을 결정하도록 구성된 컨트롤러를 포함한다. 타일들에 대한 구성이 제1 기준을 충족하는 경우, 컨트롤러는 계산을 위한 개별 입력 데이터가 제1 및 제2 버스 라인을 통해 다수의 타일 각각에서 동시에 수신되는 제1 모드에서 동작하도록 집적 회로를 제어하도록 구성된다. 타일들에 대한 구성이 제2 기준을 충족하는 경우, 컨트롤러는 제1 시간에 계산을 위한 개별 제1 입력 데이터가 제1 타일 그룹의 각 타일에서 동시에 수신되고; 제1 시간에 계산을 위한 제2 입력 데이터가 각각의 지연 레지스터에 저장되고; 그리고 제2 시간에, 제2 입력 데이터가 지연 레지스터들로부터 해제되되고 개별 제2 입력 데이터가 제2 타일 그룹의 각 타일에서 수신되는; 제2 모드에서 동작하도록 집적 회로를 제어하도록 구성된다.
실시예들은 다음 특징들 중 하나 또는 둘 이상의 임의의 조합을 포함할 수 있다.
집적 회로는 각각의 제2 버스 라인에 연결된 멀티플렉서를 포함한다.
타일들은 2차원 어레이로 배열된다.
집적 회로는 주문형 집적 회로(ASIC)를 포함한다.
각 타일은 다수의 계산 셀; 계산 셀들에 연결된 메모리; 및 타일로 또는 타일로부터 데이터를 전달하도록 구성된 제어 가능한 버스 라인들을 포함한다.
타일들 중 적어도 하나는 컨트롤러로서 작동하도록 구성된다.
집적회로는 통신 인터페이스를 포함한다.
제1 동시 모드 또는 제2 인터리빙 모드에서 ASIC과 같은 집적 회로의 동작은 다음 장점들 중 하나 이상을 가질 수 있다. 집적회로는 공격에 강건한 방식으로 운용될 수 있으며, 적절한 상황에서 신속한 처리를 위해 효율적인 방식으로 운용될 수도 있다. 동작 모드의 선택은 자동화되며, 예를 들어 계산별로 모드를 선택하기 위해 동적으로 이루어질 수 있다.
본 발명의 하나 이상의 실시예의 세부사항은 첨부 도면 및 하기 설명에 기재되어 있다. 다른 특징 및 이점은 설명, 도면 및 청구범위로부터 명백할 것이다.
도 1은 특수 목적 논리 회로의 예를 도시하는 개략도이다.
도 2a 및 2b는 타일 어레이에 대한 제1 및 제2 동작 모드를 예시하는 개략도이다.
도 3은 타일 어레이의 개략도이다.
도 4는 흐름도이다.
본 명세서에서는 주어진 계산을 실행하기 위한 집적 회로의 구성에 기초하여 두 가지 모드 중 하나로 작동할 수 있는 주문형 집적 회로(ASIC)와 같은 집적 회로에 대해 설명한다. 집적 회로는 타일 어레이를 포함한다. 일 모드에서, 주어진 계산에 관련된 모든 타일은 서로의 타일과 동일한 시간, 예를 들어 동일한 클럭 사이클에서 처리할 입력 데이터를 수신한다. 다른 모드에서, 데이터 처리의 타이밍이 타일의 서브세트 사이에서 시차를 두도록 타일의 서브세트의 동작에 의도적으로 지연이 도입된다. 예를 들어, 제2 집적 회로의 동작은 집적 회로의 전력 소비 및 전류 변화율이 집적 회로의 설계 제약 내에서 유지되도록 함으로써 공격에 대해 집적 회로를 강건하게 만들 수 있다.
도 1은 특수 목적 논리 회로, 특히 ASIC(100)의 예를 예시하는 개략도이다. ASIC(100)은 다수의 타일(102)을 포함하고, 타일들(102) 중 하나 이상은 입력 데이터에 기초하여, 예를 들어, 곱셈 및 덧셈 연산과 같은 연산을 수행하도록 구성된 특수 목적 회로를 포함한다. 특히, 각 타일(102)은 각 셀이 수학적 연산을 수행하도록 구성되는 셀의 계산 어레이를 포함할 수 있다. 일부 구현에서, 타일들(102)은 그리드(grid) 패턴으로 배열되고, 타일들(102)은 제1 차원(101)(예를 들어, 행)을 따라 그리고 제2 차원(103)(예를 들어, 열)을 따라 배열된다. 예를 들어, 도 1에 도시된 예에서, 타일들(102)은 4개의 상이한 섹션(110a, 110b, 110c, 110d)으로 분할되며, 각 섹션은 아래로 18 타일×가로로 16 타일의 그리드로 배열된 288개의 타일을 포함한다. 일부 구현에서, 도 1에 도시된 ASIC(100)은 개별 타일로 세분화/배열된 단일 시스톨릭 셀 어레이를 포함하는 것으로 이해될 수 있으며, 여기서 각 타일은 셀, 로컬 메모리 및 버스 라인의 서브세트/서브 어레이를 포함한다. 타일들(102)의 출력은 그 타일들(102)의 출력에 기초하여 벡터 계산 출력 값을 계산하는 벡터 처리 유닛(104)으로 제공된다. 벡터 처리 유닛(104) 및 ASIC(100)의 동작은 아래에서 더 논의된다.
ASIC(100)은 또한 벡터 처리 유닛(104)을 포함한다. 벡터 처리 유닛(104)은 타일들(102)로부터 출력을 수신하고 타일들(102)로부터 수신된 출력에 기초하여 벡터 계산 출력 값을 계산하도록 구성된 회로를 포함한다. 예를 들어, 일부 구현에서, 벡터 처리 유닛(104)은 타일들(102)로부터 수신된 출력에 대해 누적 연산을 수행하도록 구성된 회로(예를 들어, 곱셈 회로, 가산기 회로, 시프터, 및/또는 메모리)를 포함한다. 대안적으로 또는 추가로, 벡터 처리 유닛(104)은 타일들(102)의 출력에 비선형 함수를 적용하도록 구성된 회로를 포함한다. 대안적으로 또는 추가로, 벡터 처리 유닛(104)은 정규화된 값, 풀링된(pooled) 값 또는 둘 다를 생성한다. 벡터 처리 유닛의 벡터 계산 출력은 하나 이상의 타일에 저장될 수 있다. 예를 들어, 벡터 계산 출력은 타일(102)과 고유하게 연관된 메모리에 저장될 수 있다. 대안적으로 또는 추가로, 벡터 처리 유닛(104)의 벡터 계산 출력은 예를 들어 계산의 출력으로서 ASIC(100) 외부의 회로로 전달될 수 있다.
ASIC의 각 타일(102)은 로컬 메모리 및 메모리에 연결된 계산 어레이를 포함할 수 있다. 로컬 메모리는 물리적 메모리, 예를 들어 SRAM과 같은 랜덤 액세스 메모리(RAM)를 포함한다. 계산 어레이에는 다수의 셀이 포함된다. 계산 어레이의 각 셀은 셀에 대한 활성화 입력 및 가중치 입력과 같은 데이터 입력에 기초하여 계산(예를 들어, 곱셈 및 누산 연산)을 수행하도록 구성된 회로를 포함한다. 각 셀은 클럭 신호의 사이클에 대한 계산(예를 들어, 곱셈 및 누적 연산)을 수행할 수 있다. 각 타일에는 또한 타일 간에 데이터를 전송하도록 구성된 범용 제어 가능한 버스 라인이 포함된다. 범용 버스 라인은 제어 데이터, 활성화 입력 데이터, 통신 인터페이스로부터/로의 데이터, 벡터 처리 유닛으로부터/로의 데이터, 및 타일에 저장 및/또는 사용될 데이터(예를 들어, 가중치 입력)를 전달하도록 구성될 수 있다. 하나 이상의 제어 요소(예를 들어, 플립플롭 및 멀티플렉서)는 제어 가능한 버스 라인을 제어하도록 동작할 수 있으며, 이에 의해 타일로부터 및/또는 타일로 및/또는 타일의 SRAM으로부터 데이터를 라우팅할 수 있다.
일부 예에서, ASIC과 같은 집적 회로는, 단위 시간당 최대 전력 소비량 또는 집적 회로를 통한 최대 전류 속도(rate)에 대한 제약과 같은 동작 제약을 충족하기 위해 두 가지 모드 중 하나로 동작하도록 제어할 수 있다. 예를 들어, 집적 회로가 집적 회로에 대한 동작 제약을 초과하지 않는 방식으로 구성된 경우, 집적 회로는 제1 모드에서 동작하도록 제어될 수 있다. 집적 회로가 동작 제약을 초과할 수 있는 방식으로 동작하도록 구성된 경우, 예를 들어 다수의 타일 또는 타일 그룹이 입력 신호의 수신에 의해 완전히 활성화될 수 있는 경우, 집적 회로는 제2 모드에서 동작하도록 제어될 수 있다. 제2 모드에서, 집적 회로가 동작 제약을 초과하는 것을 방지하기 위해 집적 회로의 일부 타일의 동작에 지연이 도입된다.
도 2a는 예시적인 ASIC의 타일(202a-202d)(집합적으로 타일(202)로 지칭됨)의 어레이(200)의 단순화된 도면이다. 도 2a가 ASIC에 대해 설명되지만, 유사한 구성이 다른 유형의 집적 회로에 적용될 수 있다. 각각의 타일(202)은 다수의 메모리 유닛, 예를 들어 8개의 SRAM과 같은 SRAM(204), 및 셀(206)의 계산 어레이를 포함한다. 일부 예에서, 각 타일(202)은 활성화될 수 있고 어레이(200)의 각각의 다fms타일(202)는 독립적으로 동작 가능하다. 일부 예에서, 도 2a의 각각의 타일(202)은 다수의 타일들의 열을 나타낸다. 일부 예에서, ASIC은 적어도 4개의 열, 적어도 8개의 열, 적어도 16개의 열 또는 더 큰 어레이를 갖는 어레이와 같은 훨씬 더 큰 어레이(200)를 구현할 수 있다. 어레이(200)의 타일들(202)은 2개의 서브세트, 즉 타일(202a, 202c)을 포함하는 제1 서브세트 및 타일(202b, 202d)을 포함하는 제2 서브세트로 그룹화된다.
어레이(200)의 제1 동작 모드에서, 주어진 서브세트의 타일은 예를 들어 버스 라인으로부터, 타일의 메모리(예를 들어, SRAM)로부터 또는 다른 타일(예를 들어, 인접 타일)로부터 입력 데이터의 공통 벡터(208)를 수신한다. 예를 들어, 도 2a의 예에서, 제1 서브세트의 타일(202a, 202c)은 입력 데이터의 벡터(208a)를 수신하고 제2 서브세트의 타일(202b, 202d)은 입력 데이터의 벡터(208b)를 수신한다. 입력 데이터의 벡터는 예를 들어 타일(202)의 셀(206)의 계산 어레이에 의해 수행될 신경망 계산을 위한 가중치 데이터의 벡터일 수 있다. 벡터 전파는 ASIC의 클럭 사이클에 의해 제어된다. 예를 들어, 모든 타일(202)(예를 들어, 두 서브세트의 타일)은 동일한 클럭 사이클에서 주어진 벡터(208)를 수신할 수 있다.
버스 라인(210a, 210c)은 입력 데이터의 벡터(208a)를 제1 서브세트의 타일(202a, 202c)에 제공한다. 타일(202c)에 대응하는 지연 레지스터(212a)는 버스 라인(210c) 상에 존재한다. 버스 라인(210b, 210d)은 입력 데이터의 벡터(208b)를 제2 서브세트의 타일(202b, 202d)에 제공하고, 타일(202d)에 대응하는 지연 레지스터(212b)는 버스 라인(210d) 상에 존재한다. 그러나, 어레이(200)의 제1 동작 모드에서, 지연 레지스터(212a, 212b)는 사용되지 않으며(점선으로 표시됨), 입력 데이터의 벡터(208)는 타일(202) 각각에 직접, 그리고 동시에(예를 들어, 동일한 클럭 사이클에서) 제공된다.
입력 데이터의 각 벡터(208)는 벡터의 각 요소에 대한 값을 포함할 수 있다. 예를 들어, 벡터(208)가 이진 데이터를 운반할 때, 각 요소는 0의 값 또는 1의 값을 가질 수 있다. 타일(202)이 특정 값(예를 들어, 이진 데이터의 경우 값 1)의 요소를 갖는 벡터(208)를 수신하는 경우, 셀(208)의 계산 어레이에 의한 처리가 개시되고(예를 들어, 하나 이상의 곱셈기가 유휴 상태에서 활성 상태로 변경되고), SRAM(204) 중 적어도 하나로부터의 판독도 개시된다. 우리는 셀(208)의 계산 어레이에 의한 처리 및 타일(202)의 활성화에 따른 타일(202)의 SRAM(204)으로부터의 판독 개시의 프로세스를 참조한다. 어레이(200)의 모든 타일(202)이 계산을 개시하는 요소(예를 들어, 값 1의 요소)를 갖는 개별 벡터(208)를 수신할 때, 어레이(202)의 모든 타일이 활성화된다. 도 2a에 도시된 각 타일(202)이 다중 타일의 열을 나타내는 예에서, 값이 1인 모든 요소가 열의 모든 타일을 활성화하는 벡터이다.
일부 예에서, ASIC과 같은 집적 회로의 동작은 설계 제약을 받을 수 있다. 예를 들어, 단위 시간당 전력 소비는 ASIC의 열 설계 제약을 위반하지 않도록 임계 레벨 아래로 유지될 수 있다. 시간 경과에 따른 ASIC을 통한 전류 흐름의 변화율(예를 들어, di/dt, 전류 변화율이라고 지칭됨)은 동작 범위 위 또는 아래의 구동 전압과 같이 전압 임계값 위 또는 아래의 구동 전압을 피하기 위해 임계값 레벨 아래로 유지될 수 있다.
타일의 SRAM과 같은 메모리로부터의 판독은 전력 집약적인 프로세스일 수 있으며, SRAM 판독 프로세스의 개시는 많은 양의 전류를 소모할 수 있다. 높은 클럭 사이클에서, 큰 전류 소모는 높은 전류 변화율에 해당할 수 있다. 계산 어레이에 의한 계산 처리의 개시(예를 들어, 곱셈기의 상태를 유휴 상태에서 활성 상태로 변경)도 많은 양의 전류를 소모할 수 있으며 높은 클럭 사이클에서 높은 전류 변화율에 해당할 수 있다.
어레이(200)의 모든 타일(202)의 동시 활성화(예를 들어, 셀(206)의 계산 어레이에 의한 처리의 개시 및 SRAM(204)으로부터의 판독의 개시)는 많은 양의 전력 소비를 유발할 수 있고 높은 전류 변화율을 초래할 수 있다. 큰 전력 소비 및 높은 전류 변화율은 어레이의 각 타일(202)이 실제로 타일들의 열을 나타내고, 각 열의 각 타일이 예를 들어 값 1의 모든 요소를 각각 갖는 다중 벡터의 수신에 의해 활성화될 때 악화될 수 있다. 예를 들어, 이러한 벡터는 ASIC에 대한 공격에서 제공될 수 있다.
입력 벡터(208)에 의해 활성화된 타일(202)의 수가 임계값을 초과하는 경우와 같은 일부 예에서, 수신된 입력 벡터들(208)에 의한 이러한 타일(202)의 동시 활성화는 전력 소비, 전류 변화율 또는 둘 모두가 ASIC의 설계 제약을 초과하게 할 수 있다. 예를 들어, 동시에 활성화된 타일의 임계수(threshold number)는 총 타일 수의 25% 또는 총 타일 수의 50%일 수 있다. ASIC 설계 제약이 초과되는 것을 방지하기 위해, ASIC은 특정 조건하에서 제2 모드로 동작하도록 제어할 수 있다. 예를 들어, ASIC은 아래에서 더 자세히 논의되는 바와 같이 임의의 수의 관련 타일이 활성화되어야 하는 경우 처리 동작에 포함된 타일(또는 타일의 열)의 수가 설계 제약이 초과될 때 제2 모드에서 동작하도록 제어될 수 있다.
도 2b는 제2 동작 모드에서 동작하도록 구성된 타일 어레이(200)를 도시한다. 종종 인터리빙이라고 지칭되는 제2 동작 모드에서, 버스 라인(210)상에 존재하는 지연 레지스터들(212)이 활성화되어 지연 레지스터(212)를 포함하는 버스 라인(210) 상에 제공된 입력 데이터의 벡터가 지연된다. 예를 들어, 타일(202a, 202c)의 제1 서브세트에서, 두 버스 라인(210a, 210c)에 동시에 제공되는 입력 벡터(214a)는 타일(202a)에 직접 제공되지만 지연 레지스터(212a)에 유지된다. 입력 벡터(214a)는 지연 주기 후에 지연 레지스터(212a)로부터 해제되어 타일(202c)로 제공된다. 예를 들어, 지연 주기는 타일(202a)이 제1 클럭 사이클에서 입력 벡터(214a)를 수신하고 타일(202c)이 다음(또는 일부 다른 후속) 클럭 사이클에서 입력 벡터를 수신하도록 설정될 수 있다. 유사하게, 입력 벡터(214b)는 제1 클럭 사이클에서 타일(202b)에서 수신되지만 지연 레지스터(212b)에 저장되고, 다음(또는 일부 다른 후속) 클럭 사이클에서 타일(202d)로 해제된다.
제2 동작 모드에서, 지연의 의도적인 도입은 동일한 서브세트의 타일 활성화의 인터리빙, 예를 들어 스태거링(staggering)을 유발한다. 이 구성에서, 입력 벡터(214)의 요소의 값에 관계없이 타일의 절반 이상이 동시에 활성화될 수 없다. 그 결과, 모든 요소의 값이 1인 벡터의 공격을 받더라도, 단위 시간당 전력 소비와 전류 변화율은 ASIC의 설계 제약 내에서 안전하게 유지될 수 있다.
ASIC의 동작 모드는 주어진 계산에 대한 타일 어레이(또는 타일 열)의 구성에 기초하여, 예를 들어 계산 단위로 동적으로 선택될 수 있다. 예를 들어, 어레이의 구성은 주어진 계산을 실행하는데 사용될 독립적으로 동작 가능한 타일(또는 타일 열)의 수일 수 있다. ASIC의 동작 모드는 제1 또는 제2 기준을 충족하는 타일 어레이의 구성에 기초하여 선택될 수 있다. 예를 들어, 제1 기준은 독립적으로 동작 가능한 타일(또는 타일 열)의 수 또는 백분율이 임계값 아래로 떨어지는 것일 수 있으며, 제1 기준이 충족되는 경우 제1 동작 모드가 구현된다. 제2 기준은 독립적으로 동작 가능한 타일(또는 타일 열)의 수 또는 백분율이 임계값을 초과하는 것일 수 있으며, 제2 기준이 충족되는 경우 제2 작동 모드가 구현된다. 임계값은 타일의 수 또는 백분율일수 있으므로 모든 타일이 동시에 활성화되더라도 전력 소비 및 전류 변화율은 여전히 ASIC의 설계 제약 내에 속한다. 보다 일반적으로, 임계값 기준은 ASIC의 임계값 활용 및/또는 ASIC의 하드웨어/동작 제약과 관련될 수 있다.
일부 예에서, ASIC의 동작 모드는 컴파일러로부터의 명령에 기초하여 제어될 수 있다. 예를 들어, 컴파일러는 제1 기준 및 제2 기준을 나타내는 ASIC의 제어 회로, 예를 들어 제어 타일에 정보를 제공할 수 있다. ASIC의 제어 회로는 주어진 계산에 대해 해당 계산을 위한 타일의 구성이 제1 또는 제2 기준을 충족하는지 여부를 결정할 수 있고, 그 결정에 기초하여 어레이의 동작 모드를 제어할 수 있다. 예를 들어, 제2 기준이 충족되면(예를 들어, 주어진 계산에 사용 중인 독립적으로 동작 가능한 타일 또는 타일 열의 수가 임계값을 초과하는 경우), ASIC의 제어 회로는 제2 모드에서 동작하기 위해 지연 레지스터들을 활성화할 수 있다. 제1 기준이 충족되면(예를 들어, 주어진 계산에 사용 중인 독립적으로 동작 가능한 타일 또는 타일 열의 수가 임계값미만인 경우), ASIC의 제어 회로는 제1 모드에서 동작하기 위해 지연 레지스터들을 비활성화할 수 있다.
제1 모드와 제2 모드 사이의 전환은 지연 레지스터들이 회로 안팎으로 스위칭될 수 있도록 하는 멀티플렉서와 같은 스위칭 소자에 의해 제어될 수 있다. 멀티플렉서들은 ASIC의 제어 회로(예를 들어, 제어 타일)에 의해 제어될 수 있다.
일부 예에서, 임계값(예를 들어, 독립적으로 동작 가능한 타일 또는 타일 열의 임계수)은 임계값 구성을 결정한 ASIC의 사용자 또는 임계값 구성을 자동으로 결정한 외부 컴퓨터와 같은 외부 소스로부터 컴파일러에 제공될 수 있다.
도 2a 및 도 2b의 예에서, 각 서브세트는 제2 동작 모드에서 타일의 최대 절반이 동시에 활성화될 수 있도록 한 쌍의 타일(또는 타일 열)을 포함한다. 도 2a 및 2b에 도시된 것보다 더 큰 어레이의 경우, 일부 예에서 각각의 서브세트는 타일의 한 쌍을 계속 포함할 수 있고, 일부 예에서, 각 서브세트는 2개 이상의 타일을 포함할 수 있다. 예를 들어, 각 서브세트는 3개의 타일을 포함할 수 있으며, 그 중 2개는 지연 레지스터들에 연결되어 제2 동작 모드에서 타일의 최대 1/3이 동시에 활성화될 수 있다. 일부 예에서, 서브세트 내의 타일의 수는 타일 활성화의 추가 인터리빙을 도입하는 것과 관련된 처리시의 추가 지연과 타일의 작은 그룹만 동시에 활성화하려는 욕구와의 균형을 유지함으로써 결정될 수 있다.
일부 예에서, 지연 레지스터들은 예를 들어 대형 ASIC에 걸쳐 동작을 동기화하기 위해 제2 모드에서의 어레이의 동작외에도 ASIC의 다른 기능에서 역할을 수행할 수 있다. 예를 들어, 대형 ASIC에서, 전체 칩에 걸친 입력의 전파는 수십 클럭 사이클과 같은 다수의 클럭 사이클과 같이 오랜 시간이 걸릴 수 있다. 지연 레지스터들은 전파 시간과 클럭 사이클 간의 불일치가 있는 경우 동작을 동기화하는데 사용될 수 있다.
도 3을 참조하면, 일부 예에서, 제1 동시 모드 및 제2 인터리빙 모드에서 타일 어레이를 동작시키는 접근법이 타일의 2차원 어레이에 적용될 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 타일(302)의 2차원 어레이(300)는 x 방향으로 신호 전파(예를 들어, 입력 벡터(308)의 전파)의 인터리빙을 가능하게 하는 지연 레지스터들(304) 및 y 방향으로 신호 전파의 인터리빙을 가능하게 하는 지연 레지스터들(306)을 포함할 수 있다.
도 4를 참조하면, ASIC을 동작시키기 위한 예시적인 프로세스에서, 주어진 계산에 대해 ASIC의 타일 구성이 결정된다(400). 예를 들어, 계산 실행과 관련된 타일의 수 또는 백분율이 결정된다.
임계값이 예를 들어 ASIC의 제어 회로로부터 획득된다(402). 예를 들어 임계값은 이전에 컴파일러로부터 ASIC에 제공되었을 수 있다. 임계값은 ASIC/ASIC의 타일들의 임계값 활용 및/또는 ASIC의 작동/하드웨어 제약일 수 있다(또는 이와 관련될 수 있다). 임계값은 타일의 임계수 또는 백분율을 나타낼 수 있다. 다른 임계값 예에는 임계 에너지 사용량, 임계 메모리 사용량 및/또는 임계 입력 데이터 크기가 포함된다.
타일들의 구성이 제1 기준(404)을 충족하는지 여부, 예를 들어 계산 실행에 관련된 타일의 수 또는 백분율이 임계값 아래로 떨어지는지 여부에 대한 결정이 이루어진다. 그런 경우, ASIC은 제1 모드(406)에서 동작하고, 이는 ASIC(408)의 타일 각각에서 계산을 위한 입력 데이터(예를 들어, 입력 벡터)를 동시에 수신하는 것(408) 및 입력 데이터를 처리하기 위해 타일들을 동작시키는 것(410)을 포함한다(410).
그렇지 않은 경우, 타일들의 구성이 제2 기준을 충족하는지(412), 예를 들어, 계산 실행에 관련된 타일의 수 또는 백분율이 임계값을 초과하는지 여부에 대한 결정이 이루어진다. 그런 경우, ASIC은 제2 모드에서 동작한다(414). 제2 모드에서, 계산을 위한 제1 입력 데이터는 제1 클럭 사이클에서와 같은 제1 시간에 ASIC의 제1 타일 그룹의 각 타일에서 동시에 수신되고(416), 제1 타일 그룹의 타일들은 제1 입력 데이터(418)를 처리하도록 동작된다(418). 또한 제1 시간에, 개별 제2 입력 데이터는 다수의 지연 레지스터 각각에 저장되고(420), 각 지연 레지스터는 ASIC의 타일의 제2 타일 그룹에 대응한다. 다음 클럭 사이클에서와 같은 제2 시간에, 제2 입력 데이터는 지연 레지스터들에서 해제된다(422). 해제된 개별 제2 입력 데이터는 제2 그룹의 각 타일에서 수신되고(424), 제2 타일 그룹의 타일들은 제2 입력 데이터를 처리하도록 동작된다(426).
다시 도 1을 참조하면, 예시적인 ASIC(100)은 통신 인터페이스(108)(예를 들어, 인터페이스(108a, 108b))를 포함할 수 있다. 통신 인터페이스(108)는 직렬화기/역직렬화기(SerDes) 인터페이스 및 범용 입력/출력(GPIO) 인터페이스의 하나 이상의 세트를 포함한다. SerDes 인터페이스는 ASIC(100)에 대한 명령들(예를 들어, 아래에서 설명하는 제어 가능한 버스 라인들을 동작하기 위한 명령) 및/또는 입력 데이터를 수신하고 ASIC(100)에서 외부 회로로 데이터를 출력하도록 구성된다. 예를 들어, SerDes 인터페이스는 통신 인터페이스(108) 내에 포함된 SerDes 인터페이스 세트를 통해 32Gbps, 56Gbps 또는 임의의 적절한 데이터 속도로 명령 및/또는 입력 데이터를 전송하도록 구성될 수 있다. GPIO 인터페이스는 디버깅 및/또는 부트스트래핑을 위한 인터페이스를 제공하도록 구성된다. 예를 들어, ASIC(100)은 턴온될 때 부트 프로그램을 실행할 수 있다. 프로그램이 실패하면, 관리자는 GPIO 인터페이스를 사용하여 실패 원인을 디버깅할 수 있다.
ASIC(100)은 통신 인터페이스(108), 벡터 처리 유닛(104) 및 다수의 타일(102) 사이에서 데이터를 전달하도록 구성된 다수의 제어 가능한 버스 라인을 더 포함한다. 제어 가능한 버스 라인은 예를 들어 그리드의 제1 차원(101)(예를 들어, 행)과 그리드의 제2 차원(103)(예를 들어, 열) 모두를 따라 연장되는 와이어를 포함한다. 제1 차원(101)을 따라 연되하는 제어 가능한 버스 라인의 제1 서브세트는 제1 방향(예를 들어, 도 1의 우측)으로 데이터를 전송하도록 구성될 수 있다. 제1 차원(101)을 따라 연장되는 제어 가능한 버스 라인의 제2 서브세트는 데이터를 제2 방향(예를 들어, 도 1의 좌측)으로 전송하도록 구성될 수 있다. 제2 차원(103)을 따라 연장되는 제어 가능한 버스 라인의 제1 서브세트는 데이터를 제3 방향(예를 들어, 도 1의 상단으로)으로 전송하도록 구성될 수 있다. 제2 차원(103)을 따라 연장되는 제어 가능한 버스 라인의 제2 서브세트는 제4 방향(예를 들어, 도 1의 하단)으로 데이터를 전송하도록 구성될 수 있다.
각각의 제어 가능한 버스 라인은 클럭 신호에 따라 라인들을 따라 데이터를 전달하는데 사용되는 플립플롭과 같은 다수의 컨베이어 엘리먼트를 포함한다. 제어 가능한 버스 라인을 통해 데이터를 전송하는 것은 각 클럭 사이클에서, 제어 가능한 버스 라인의 제1 컨베이어 엘리먼트로부터 제어 가능한 버스 라인의 제2 인접 컨베이어 엘리먼트로 데이터를 시프팅하는 것을 포함할 수 있다. 일부 구현에서, 데이터는 클럭 사이클의 상승 또는 하강 에지에서 제어 가능한 버스 라인을 통해 전달된다. 예를 들어, 제1 클럭 사이클에서, 제어 가능한 버스 라인의 제1 컨베이어 엘리먼트(예를 들어, 플립플롭)에 존재하는 데이터는 제2 클럭 사이클에서 제어 가능한 버스 라인의 제2 컨베이어 엘리먼트(예를 들어, 플립플롭)로 전송될 수 있다. 일부 구현에서, 컨베이어 엘리먼트는 서로 고정된 거리로 주기적으로 이격될 수 있다. 예를 들어, 일부 경우, 각각의 제어 가능한 버스 라인은 다수의 컨베이어 엘리먼트를 포함하고, 각 컨베이어 엘리먼트는 대응하는 타일(102) 내에 또는 이에 근접하게 위치된다.
각각의 제어 가능한 버스 라인에는 또한 다수의 멀티플렉서 및/또는 디멀티플렉서가 포함된다. 제어 가능한 버스 라인의 멀티플렉서/디멀티플렉서는 버스 라인과 ASIC 칩(100)의 컴포넌트(구성요소) 사이에서 데이터를 전송하도록 구성된다. 예를 들어, 제어 가능한 버스 라인의 멀티플렉서/디멀티플렉서는 타일(102)로/로부터, 벡터 처리 유닛(104)으로/로부터, 또는 통신 인터페이스(108)로/로부터 데이터를 전달(transfer)하도록 구성될 수 있다. 타일들(102), 벡터 처리 유닛(104) 및 통신 인터페이스 사이에서 데이터를 전달하는 것은 발생하고자 하는 데이터 전달에 기초하여 멀티플렉서들에 제어 신호들을 전송하는 것을 포함할 수 있다. 제어 신호는 멀티플렉서 및/또는 디멀티플렉서에 직접 연결된 레지스터들에 저장될 수 있다. 그런 다음 제어 신호의 값은 예를 들어 어떤 데이터가 소스(예를 들어, 타일(102) 또는 벡터 처리 유닛(104) 내의 메모리)로부터 제어 가능한 버스 라인으로 전달되는지, 또는 대안적으로 어떤 데이터가 제어 가능한 버스 라인으로부터 싱크(예를 들어, 타일(102) 또는 벡터 처리 유닛(104) 내의 메모리)로 전달되는지를 결정할 수 있다.
제어 가능한 버스 라인들은 로컬 레벨에서 제어되도록 구성되며, 각 타일, 벡터 처리 유닛, 및/또는 통신 인터페이스는 해당 타일, 벡터 처리 유닛 및/또는 통신 인터페이스를 통과하는 제어 가능한 버스 라인들을 조작하기 위한 자체 제어 엘리먼트 세트를 포함한다. 예를 들어, 각각의 타일, 1D(1차원) 벡터 처리 유닛, 및 통신 인터페이스는 해당 타일 세트, 1D 벡터 처리 유닛 및 통신 인터페이스와의 데이터 전달을 제어하기 위한 컨베이어 엘리먼트, 멀티플렉서 및/또는 디멀티플렉서의 대응하는 세트를 포함할 수 있다.
ASIC 칩(100)의 동작과 관련된 대기시간(latency)를 최소화하기 위해, 타일(102) 및 벡터 처리 유닛(104)은 다양한 컴포넌트 사이에서 데이터가 이동하는 거리를 감소시키도록 위치될 수 있다. 특정 구현에서, 타일(102) 및 통신 인터페이스(108) 모두는 다수의 섹션으로 분리될 수 있으며, 타일 섹션들과 통신 인터페이스 섹션 모두는 타일과 통신 인터페이스 사이에서 데이터가 이동하는 최대 거리가 감소되도록 배열된다. 예를 들어, 일부 구현에서, 타일(102)의 제1 그룹은 통신 인터페이스(108)의 제1 측(side)상의 제1 섹션에 배열될 수 있고, 타일(102)의 제2 그룹은 통신 인터페이스의 제2 측상의 제2 섹션에 배열될 수 있다. 그 결과, 통신 인터페이스로부터 가장 먼 타일까지의 거리는 모든 타일(102)이 통신 인터페이스의 일측상의 단일 섹션에 배열되는 구성에 비해 절반으로 단축될 수 있다.
대안적으로, 타일들은 4개의 섹션과 같이 다른 수의 섹션에 배열될 수 있다. 예를 들어, 도 1에 도시된 예에서, ASIC(100)의 다수의 타일(102)은 다수의 섹션(110)(110a, 110b, 110c, 110d)에 배열된다. 각각의 섹션(110)은 그리드 패턴으로 배열된 유사한 수의 타일(102)을 포함한다(예를 들어, 각 섹션(110)은 16행 및 16열로 배열된 256개의 타일을 포함할 수 있다). 통신 인터페이스(108)는 또한 다수의 섹션으로 분할되는데, 제1 통신 인터페이스(108a) 및 제2 통신 인터페이스(108b)는 타일(102)의 섹션(110)의 양측에 배열된다. 제1 통신 인터페이스(108a)는 제어 가능한 버스 라인을 통해 ASIC 칩(100)의 좌측에 있는 2개의 타일 섹션(110a, 110c)에 연결될 수 있다. 제2 통신 인터페이스(108b)는 제어 가능한 버스 라인을 통해 ASIC 칩(100)의 우측에 있는 2개의 타일 섹션(110b, 110d)에 연결될 수 있다. 그 결과, 통신 인터페이스(108)로/로부터 데이터가 이동하는 최대 거리(및 이에 따른 데이터 전파와 관련된 대기시간)는 단일 통신 인터페이스만 사용할 수 있는 배열에 비해 절반으로 감소될 수 있다. 타일(102) 및 통신 인터페이스(108)의 다른 결합(coupling) 배열은 또한 데이터 대기시간을 감소시키는 것이 가능하다. 타일(102)과 통신 인터페이스(108)의 결합 배열은 제어 가능한 버스 라인의 컨베이어 엘리먼트 및 멀티플렉서에 제어 신호를 제공함으로써 프로그래밍될 수 있다.
일부 구현에서, 하나 이상의 타일(102)은 ASIC(100) 내의 제어 가능한 버스 라인 및/또는 다른 타일(본 명세서에서 "제어 타일"로 지칭됨)에 대한 판독 및 기록(writing) 동작을 개시하도록 구성된다. ASIC(100) 내의 나머지 타일은 (예를 들어, 계층 추론을 계산하기 위해) 입력 데이터에 기초하여 계산을 수행하도록 구성될 수 있다. 일부 구현에서, 제어 타일들은 ASIC(100) 내의 다른 타일과 동일한 컴포넌트 및 구성을 포함한다. 제어 타일들은 추가 타일 또는 타일, 추가 행 또는 ASIC(100)의 추가 열 또는 열로 추가될 수 있다. 예를 들어, 각 타일(102)이 입력 데이터에 대한 계산을 수행하도록 구성된 타일(102)의 대칭 그리드에 대해, 입력 데이터에 대한 계산을 수행하는 타일들(102)에 대한 판독 및 기록 동작을 처리하기 위해 제어 타일의 하나 이상의 추가 행이 포함될 수 있다. 예를 들어, 각 섹션(110)은 18행의 타일을 포함하고, 여기서 타일의 마지막 2행은 제어 타일을 포함할 수 있다. 별도의 제어 타일을 제공하면 일부 구현에서 계산을 수행하는데 사용되는 다른 타일에서 사용 가능한 메모리 양이 증가한다. 그러나 본 명세서에 설명된 바와같이 제어를 제공하기 위한 별도의 전용 타일은 필요하지 않으며 경우에 따라 별도의 제어 타일이 제공되지 않는다. 오히려, 각 타일은 해당 타일에 대한 판독 및 기록 작업을 시작하기 위한 명령을 로컬 메모리에 저장할 수 있다.
게다가, 도 1에 도시된 각 섹션(110)은 18행×16열로 배열된 타일들을 포함하지만, 타일(102)의 수 및 섹션 내의 그들의 배열은 상이할 수 있다. 예를 들어, 일부 경우에 섹션들(110)은 동일한 수의 행 및 열을 포함할 수 있다.
또한, 도 1에서는 4개의 섹션으로 나누어 도시하였지만, 타일들(102)은 다른 다른 상이한 그룹핑으로 분할될 수 있다. 예를 들어, 일부 구현에서, 타일들(102)은 벡터 처리 유닛(104) 위의 제1 섹션(예를 들어, 도 1에 도시된 페이지의 상단에 더 가까운) 및 벡터 처리 유닛(104) 아래의 제2 섹션(예를 들어, 도 1에 도시된 페이지의 하단에 더 가까운)과 같은 2개의 상이한 섹션으로 그룹화된다. 이러한 배열에서, 각 섹션은 예를 들어 (방향 103을 따라) 아래로 18개의 타일×(방향 101을 따라)가로로 32개의 타일의 그리드로 배열된 576개의 타일을 포함할 수 있다. 섹션에는 다른 총 타일 수가 포함될 수 있으며 다른 크기의 어레이로 배열될 수 있다. 일부 경우, 섹션 간의 분할은 ASIC 100의 하드웨어 기능에 따라 구분된다. 예를 들어, 도 1에 도시된 바와 같이, 섹션(110a, 110b)은 벡터 처리 유닛(104)에 의해 섹션(110c, 110d)으로부터 분리될 수 있다.
본 명세서에 설명된 바와 같이, 일부 구현에서, 타일들(102) 중 하나 이상은 제어 정보를 저장하는데 전용된다. 즉, 제어 정보를 저장하는 전용 타일(102)은 가중치 입력 및 활성화 입력과 같은 입력 데이터에 대한 계산을 수행하는데 참여하지 않는다. 제어 정보는 예를 들어 데이터가 ASIC 칩(100) 주위에서 이동될 수 있도록 ASIC 칩(100)의 동작 동안 제어 가능한 버스 라인을 구성하기 위한 제어 데이터를 포함할 수 있다. 제어 데이터는 제어 가능한 버스 라인의 컨베이어 엘리먼트 및 멀티플렉서를 제어하기 위한 제어 신호의 형태로 제어 가능한 버스 라인에 제공될 수 있다. 제어 데이터는 사전 결정된 스케줄에 따라 타일들 간에 데이터가 전송되도록 제어 가능한 버스 라인의 특정 컨베이어 엘리먼트가 데이터를 제어 가능한 버스 라인의 다음 컨베이어 엘리먼트로 전달할지 여부를 지정한다. 예를 들어, 제어 데이터는 버스 라인으로부터 메모리 및/또는 타일 내의 다른 회로로 데이터를 전달하도록 멀티플렉서에 지시하는 제어 신호를 포함할 수 있다. 다른 예에서, 제어 데이터는 타일 내의 메모리 및/또는 회로로부터 버스 라인으로 데이터를 전달하도록 멀티플렉서에 지시하는 제어 신호를 포함할 수 있다. 다른 예에서, 제어 데이터는 버스 라인과 통신 인터페이스(108) 사이 및/또는 버스 라인과 벡터 처리 유닛(104) 사이에서 데이터를 전송하도록 멀티플렉서에 지시하는 제어 신호를 포함할 수 있다. 대안적으로, 본 명세서에 개시된 바와 같이, 전용 제어 타일들은 사용되지 않는다. 오히려, 이러한 경우에 각 타일의 로컬 메모리는 해당 특정 타일에 대한 제어 정보를 저장한다.
본 명세서에 기술된 주제 및 기능적 동작의 실시예는 본 명세서에 개시된 구조 및 그의 구조적 등가물을 포함하는 디지털 전자 회로, 컴퓨터 하드웨어 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시예는 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의한 실행 또는 데이터 처리 장치의 동작을 제어하기 위해 유형의 비-일시적 프로그램 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로 구현될 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령은 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로 전송하기 위한 정보를 인코딩하도록 생성된 인공적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독 가능 저장 디바이스, 기계 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스 또는 이들 중 하나 이상의 조합일 수 있다.
"데이터 처리 장치"라는 용어는 예를 들어 프로그램 가능 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 기계를 포함한다. 장치는 FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC과 같은 특수 목적 논리 회로를 포함할 수 있다. 장치는 또한 하드웨어에 추가하여 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 또는 이들 중 하나의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에 설명된 프로세스 및 논리 흐름은 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA, ASIC 또는 GPGPU(범용 그래픽 처리 장치)와 같은 특수 목적 논리 회로에 의해 수행될 수 있고 장치는 또한 이들로 구현될 수 있다.
본 명세서가 많은 특정한 구현 세부사항을 포함하고 있지만, 이들은 임의의 발명 또는 청구될 수 있는 것의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정한 발명의 특정한 실시예에 특정할 수 있는 특징의 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다수의 실시예에서 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 초기에 그러한 것으로 청구될 수도 있지만, 청구된 조합의 하나 이상의 특징은 일부 경우에 조합에서 제거될 수 있으며 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에 특정 순서로 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 이러한 동작들이 표시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작들이 수행되어야 함을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트및 시스템은 일반적으로 단일 소프트웨어 제품 또는 여러 소프트웨어 제품으로 패키징될 수 있음을 이해해야 한다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 예를 들어, 버스 라인이 "제어 가능한"으로 설명되어 있지만 모든 버스 라인이 동일한 수준의 제어를 가질 필요는 없다. 예를 들어, 일부 버스 라인은 데이터를 소싱할 수 있거나 데이터를 전송할 수 있는 타일 수가 제한된 경우에만 일부 버스 라인을 제어할 수 있는 다양한 제어 가능성이 있을 수 있다. 다른 예에서, 일부 버스 라인은 본 명세서에 설명된 바와 같이 북쪽, 동쪽, 서쪽 또는 남쪽과 같은 단일 방향을 따라 데이터를 제공하기 위해 전용될 수 있다. 일부 경우, 청구범위에 인용된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일 예로서, 첨부 도면에 도시된 프로세스들은 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하지는 않는다. 특정 구현에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 다수의 타일을 포함하는 집적 회로 칩을 동작시키는 방법으로서, 방법은,
    계산의 실행을 위한 집적 회로의 타일들에 대한 구성을 결정하는 단계와;
    타일들에 대한 구성이 제1 기준을 충족하는 경우, 제1 모드에서 집적 회로를 동작시키는 단계와, 상기 제1 모드에서 집적 회로를 동작시키는 단계는 집적 회로의 각각의 타일에서 계산하기 위한 개별 입력 데이터를 동시에 수신하는 단계를 포함하고; 그리고
    타일들에 대한 구성이 제2 기준을 충족하는 경우, 제2 모드에서 집적 회로를 동작시키는 단계를 포함하고, 상기 제2 모드에서 집적 회로를 동작시키는 단계는,
    제1 시간에, 집적 회로의 제1 타일 그룹의 각 타일에서 계산하기 위한 개별(respective) 제1 입력 데이터를 동시에 수신하는 단계와;
    제1 시간에, 다수의 지연 레지스터 각각에 계산을 위한 개별 제2 입력 데이터를 저장하는 단계와, 각 지연 레지스터는 집적 회로의 제2 타일 타일 그룹의 타일에 대응하고;
    제2 시간에, 지연 레지스터들로부터 제2 입력 데이터를 해제(release)하고 해제된 개별 제2 입력 데이터를 제2 타일 그룹의 각 타일에서 수신하는 단계를 포함하며,
    제1 시간은 제1 클럭 사이클이고 제2 시간은 다음 클럭 사이클인 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  2. 제1항에 있어서,
    계산의 실행을 위한 타일들에 대한 구성을 결정하는 단계는,
    계산을 실행하도록 동작 가능한 타일의 수 및 백분율 중 하나 이상을 결정하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  3. 제2항에 있어서,
    제1 기준은 임계수(threshold number) 또는 백분율미만인 계산을 실행하기 위해 동작 가능한 타일의 수 또는 백분율을 포함하고, 그리고 제2 기준은 임계수 또는 백분율보다 큰 계산을 실행하기 위해 동작 가능한 타일의 수 또는 백분율을 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  4. 제1항에 있어서,
    계산의 실행을 위한 타일들에 대한 구성을 결정하는 단계는,
    계산을 실행하기 위해 동작 가능한 타일의 열의 수를 결정하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  5. 제4항에 있어서,
    제1 기준은 임계수 또는 백분율미만인 계산을 실행하기 위해 동작 가능한 타일의 열의 수 또는 백분율을 포함하고, 그리고
    제2 기준은 임계수 또는 백분율보다 큰 계산을 실행하기 위해 동작 가능한 타일의 열의 수 또는 백분율을 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  6. 제1항에 있어서,
    타일들에 대한 구성이 제1 기준 또는 제2 기준을 충족하는지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  7. 제1항에 있어서,
    제2 모드에서 집적 회로를 동작시키는 단계는,
    지연 레지스터들을 인에이블하도록 멀티플렉서를 동작시키는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  8. 제7항에 있어서,
    제1 모드에서 집적 회로를 동작시키는 단계는,
    지연 레지스터들을 디스에이블하도록 멀티플렉서를 동작시키는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  9. 삭제
  10. 제1항에 있어서,
    제1 모드에서 개별 입력 데이터를 동시에 수신하는 단계는,
    각 타일에서 입력 데이터의 벡터를 수신하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  11. 제1항에 있어서,
    제1 모드에서 집적 회로를 동작시키는 단계는,
    개별 입력 데이터를 처리하기 위해 집적 회로의 타일 각각을 동작시키는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  12. 제1항에 있어서,
    제2 모드에서 집적 회로를 동작시키는 단계는,
    개별 제1 입력 데이터를 처리하기 위해 제1 그룹의 타일 각각을 동작시키는 단계; 및
    지연 레지스터로부터 해제된 개별 제2 입력 데이터를 처리하기 위해 제2 그룹의 타일 각각을 동작시키는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  13. 제1항에 있어서,
    컴파일러로부터 제1 기준 및 제2 기준의 표시를 수신하는 단계를 포함하는 것을 특징으로 하는 집적 회로 칩을 동작시키는 방법.
  14. 집적 회로로서,
    대응하는 제1 버스 라인에 각각 연결된 다수의 지연 레지스터와;
    제1 타일 그룹의 각 타일은 대응하는 제2 버스 라인에 연결되고 제2 타일 그룹의 각 타일은 제1 버스 라인들 중 대응하는 하나에 각각 연결되는, 다수의 타일과; 그리고
    컨트롤러를 포함하고, 상기 컨트롤러는,
    계산의 실행을 위한 제1 및 제2 타일 그룹의 구성을 결정하고;
    타일들에 대한 구성이 제1 기준을 충족하는 경우, 계산을 위한 개별 입력 데이터가 제1 및 제2 버스 라인을 통해 다수의 타일 각각에서 동시에 수신되는, 제1 모드에서 동작하도록 집적 회로를 제어하고; 그리고
    타일들에 대한 구성이 제2 기준을 충족하는 경우:
    제1 시간에, 계산을 위한 개별 제1 입력 데이터가 제1 타일 그룹의 각 타일에서 동시에 수신되고;
    제1 시간에, 계산을 위한 제2 입력 데이터가 각각의 지연 레지스터에 저장되고; 그리고
    제2 시간에, 제2 입력 데이터가 지연 레지스터들로부터 해제되되고 개별 제2 입력 데이터가 제2 타일 그룹의 각 타일에서 수신되는, 제2 모드에서 동작하도록 집적 회로를 제어하도록 구성되며,
    제1 시간은 제1 클럭 사이클이고 제2 시간은 다음 클럭 사이클인 것을 특징으로 하는 집적 회로.
  15. 제14항에 있어서,
    각각의 제2 버스 라인에 연결된 멀티플렉서를 포함하는 것을 특징으로 하는 집적 회로.
  16. 제14항에 있어서,
    타일들은 2차원 어레이로 배열되는 것을 특징으로 하는 집적 회로.
  17. 제14항에 있어서,
    집적 회로는 주문형 집적 회로(ASIC)를 포함하는 것을 특징으로 하는 집적 회로.
  18. 제14항에 있어서,
    각 타일은,
    다수의 계산 셀;
    계산 셀들에 연결된 메모리; 및
    타일로 또는 타일로부터 데이터를 전달하도록 구성된 제어 가능한 버스 라인들을 포함하는 것을 특징으로 하는 집적 회로.
  19. 제14항에 있어서,
    타일들 중 적어도 하나는 컨트롤러로서 동작하도록 구성되는 것을 특징으로 하는 집적 회로.
  20. 제14항에 있어서,
    통신 인터페이스를 포함하는 것을 특징으로 하는 집적 회로.
KR1020227004412A 2019-08-14 2020-08-14 주문형 집적 회로의 이중 모드 동작 KR102664456B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962886481P 2019-08-14 2019-08-14
US62/886,481 2019-08-14
PCT/US2020/046287 WO2021030653A1 (en) 2019-08-14 2020-08-14 Dual-mode operation of application specific integrated circuits

Publications (2)

Publication Number Publication Date
KR20220032089A KR20220032089A (ko) 2022-03-15
KR102664456B1 true KR102664456B1 (ko) 2024-05-10

Family

ID=72243244

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004412A KR102664456B1 (ko) 2019-08-14 2020-08-14 주문형 집적 회로의 이중 모드 동작

Country Status (8)

Country Link
US (1) US11811401B2 (ko)
EP (1) EP3824554B1 (ko)
JP (1) JP7423755B2 (ko)
KR (1) KR102664456B1 (ko)
CN (1) CN114223000B (ko)
DK (1) DK3824554T3 (ko)
TW (1) TWI794636B (ko)
WO (1) WO2021030653A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194774A (ja) * 2011-03-16 2012-10-11 Ricoh Co Ltd Simd型マイクロプロセッサ

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3810419B2 (ja) 2004-12-07 2006-08-16 松下電器産業株式会社 再構成可能な信号処理プロセッサ
US7840914B1 (en) * 2005-05-13 2010-11-23 Massachusetts Institute Of Technology Distributing computations in a parallel processing environment
EP1933463A1 (en) 2005-10-05 2008-06-18 Matsushita Electric Industrial Co., Ltd. Reconfigurable semiconductor integrated circuit and its processing allocation method
JP4702159B2 (ja) 2006-04-25 2011-06-15 富士ゼロックス株式会社 集積回路装置
US8990651B2 (en) 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
CN101566972B (zh) * 2009-05-12 2010-12-08 苏州国芯科技有限公司 嵌入式系统用户多分区存储空间访问权限的安全控制方法
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US9660650B1 (en) * 2014-03-13 2017-05-23 Altera Corporation Integrated circuits with improved register circuitry
US9529947B1 (en) * 2014-10-28 2016-12-27 Altera Corporation Register retiming and verification of an integrated circuit design
US10152565B2 (en) * 2015-06-03 2018-12-11 Altera Corporation Methods for performing register retiming operations into synchronization regions interposed between circuits associated with different clock domains
US10324730B2 (en) * 2016-03-24 2019-06-18 Mediatek, Inc. Memory shuffle engine for efficient work execution in a parallel computing system
US10169518B1 (en) * 2016-11-03 2019-01-01 Intel Corporation Methods for delaying register reset for retimed circuits
US11360930B2 (en) 2017-12-19 2022-06-14 Samsung Electronics Co., Ltd. Neural processing accelerator
US11675588B2 (en) * 2021-08-20 2023-06-13 Micron Technology, Inc. Tile-based result buffering in memory-compute systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194774A (ja) * 2011-03-16 2012-10-11 Ricoh Co Ltd Simd型マイクロプロセッサ

Also Published As

Publication number Publication date
JP7423755B2 (ja) 2024-01-29
CN114223000B (zh) 2023-06-06
US11811401B2 (en) 2023-11-07
EP3824554A1 (en) 2021-05-26
TWI794636B (zh) 2023-03-01
KR20220032089A (ko) 2022-03-15
WO2021030653A1 (en) 2021-02-18
DK3824554T3 (da) 2022-10-24
EP3824554B1 (en) 2022-10-05
US20220286135A1 (en) 2022-09-08
JP2022544512A (ja) 2022-10-19
TW202107326A (zh) 2021-02-16
CN114223000A (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
US20230010315A1 (en) Application specific integrated circuit accelerators
US11645224B2 (en) Neural processing accelerator
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
US7595659B2 (en) Logic cell array and bus system
US9047440B2 (en) Logical cell array and bus system
US4507726A (en) Array processor architecture utilizing modular elemental processors
KR20200107295A (ko) 시스톨릭 어레이 및 프로세싱 시스템
US20090282213A1 (en) Semiconductor integrated circuit
CN110210615B (zh) 一种用于执行神经网络计算的脉动阵列系统
TWI771675B (zh) 控制流程屏障和可重組態的資料處理器
CN209766043U (zh) 存算一体芯片、存储单元阵列结构
WO1984000226A1 (en) Interconnecting plane for modular array processor
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
US4524428A (en) Modular input-programmable logic circuits for use in a modular array processor
US4543642A (en) Data Exchange Subsystem for use in a modular array processor
CN114781632A (zh) 基于动态可重构脉动张量运算引擎的深度神经网络加速器
JP2023107786A (ja) オンチップ動作の初期化
KR102664456B1 (ko) 주문형 집적 회로의 이중 모드 동작
US20230376563A1 (en) Computational memory
TW202301172A (zh) 在神經網路中傳播延遲減少之電腦實施方法
KR20240023534A (ko) 신경망 가속기
US9626325B2 (en) Array processor having a segmented bus system
CN114443146A (zh) 基于存算一体存储器的矢量处理器及其运行方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant