KR20210025114A - Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행 - Google Patents

Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행 Download PDF

Info

Publication number
KR20210025114A
KR20210025114A KR1020217004172A KR20217004172A KR20210025114A KR 20210025114 A KR20210025114 A KR 20210025114A KR 1020217004172 A KR1020217004172 A KR 1020217004172A KR 20217004172 A KR20217004172 A KR 20217004172A KR 20210025114 A KR20210025114 A KR 20210025114A
Authority
KR
South Korea
Prior art keywords
mac
address
kernel
circuits
cycle
Prior art date
Application number
KR1020217004172A
Other languages
English (en)
Inventor
시아오치안 장
에프렘 씨. 우
데이비드 버만
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20210025114A publication Critical patent/KR20210025114A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Neurology (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

회로 어레인지먼트는 MAC 회로들(200-0, 200-1, 200-2, 200-15, 200-n, 201-0, 201-1, 201-2, 201-15, 201-n, 202-0, 202-1, 202-2, 202-15, 202-n, 231-0, 231-1, 231-2, 231-15, 231-n)의 어레이(106)를 포함하며, 여기서 각각의 MAC 회로는 복수의 커널들의 저장을 위해 구성된 캐시(332)를 포함한다. MAC 회로들은 제1 레이트로 IFM의 데이터 엘리먼트들의 제1 세트(718)를 수신하도록 구성된다. MAC 회로들은 제1 MAC 사이클(710) 동안 데이터 엘리먼트들의 제1 세트 및 제1 OFM 깊이 인덱스와 연관된 커널들 중 제1 커널에 대해 제1 MAC 연산들을 수행하도록 구성되며, 여기서 MAC 사이클들의 레이트는 제1 레이트보다 빠르다. MAC 회로들은, 연속적으로 제1 MAC 사이클을 뒤따르는 제2 MAC 사이클(710) 동안 데이터 엘리먼트들의 제1 세트 및 제2 OFM 깊이 인덱스와 연관된 커널들 중 제2 커널에 대해 제2 MAC 연산들을 수행하도록 구성된다.

Description

MAC 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 MAC 연산들의 수행
본 개시내용은 일반적으로 MAC(multiply-and-accumulate) 회로들의 어레이의 연속적인 MAC 사이클들 동안 상이한 커널들을 사용하여 데이터의 세트에 대해 MAC 연산들을 수행하는 것에 관한 것이다.
뉴럴 네트워크들과 같은 프로세싱 회로는 다양한 상이한 문제들에 대한 솔루션들을 제공한다. 예컨대, CNN(convolutional neural network)들은 이미지 프로세싱에 사용될 수 있다. CNN들은 GPU(Graphics Processing Unit)들을 사용하여 구현될 수 있고 배치 프로세싱 접근법(batch processing approach)을 사용하여 다수의 유사한 작업들을 그룹화하고 작업들의 그룹을 배치로서 컴퓨팅함으로써 계산 비용들을 감소시킬 수 있다. 작업들의 배치들은 확장 가능한 수의 SM(streaming multiprocessor)들 내부의 다중 SP(streaming processor) 코어들을 병렬로 사용함으로써 컴퓨팅될 수 있다. GPU의 제어기의 구현 비용들은 다수의 작업들에 걸쳐 상각될 수 있지만, CNN의 레이턴시는, CNN의 계산 효율성을 유지하기 위해 배치 모드에서 작업들을 함께 프로세싱하기 전에 모든 작업들이 준비될 때까지 GPU가 기다려야 하기 때문에 배치 크기가 증가함에 따라 증가할 것이다.
DSP(digital signal processor)들, 범용 컴퓨터 프로세서들, 프로그래밍 가능 집적 회로들, PLD(programmable logic device)들, 및 SoC(System on Chip) 디바이스들을 포함(그러나 이에 제한되지 않음)하는 CNN들을 구현할 수 있는 다양한 상이한 회로들이 존재한다. PLD들은 특정된 로직 기능들을 수행하도록 프로그래밍될 수 있는 프로그래밍 가능 IC(integrated circuit)의 유형이다. 하나의 유형의 PLD, 즉 FPGA(field programmable gate array)는 프로그래밍 가능 타일들의 어레이를 포함할 수 있다. 이들 프로그래밍 가능 타일들은, 예컨대, IOB(input/output block)들, CLB(configurable logic block)들, 전용 BRAM(block random access memory), 멀티플라이어(multiplier)들, DSP(digital signal processing) 블록들, 프로세서들, 클록 관리자들, DLL(delay locked loop)들, 버스 또는 네트워크 인터페이스들, 이를테면 PCI(Peripheral Component Interconnect), PCIe(PCI Express), 이더넷 등을 포함할 수 있는 다양한 유형들의 로직 블록들을 포함한다. 일부 디바이스들은 단일 IC 칩 상에서 전체 컴퓨터 시스템으로서 효과적으로 기능하기에 충분한 컴포넌트들 및 기능을 포함한다. 그러한 기능을 갖는 디바이스들은 종종 SoC들로서 지칭된다. 일부 SoC 디바이스들은, 다양한 PLD들에 의해 제공되는 프로그래밍 가능 로직과 유사한 프로그래밍 가능 로직을 포함할 수 있다.
종래 구현들은 종종, 프로세싱 유닛들과 메모리 사이에 병목현상들을 겪는다. 따라서 데이터는 프로세싱 회로들을 완전히 이용할 만큼 충분히 빠르게 제공되지 않을 수 있다.
회로 어레인지먼트는 MAC(multiply-and-accumulate) 회로들의 어레이를 포함하며, 여기서 각각의 MAC 회로는 복수의 커널들의 저장을 위해 구성된 캐시를 포함한다. MAC 회로들은 제1 레이트로 IFM(input feature map)의 데이터 엘리먼트들의 제1 세트를 수신하도록 구성된다. MAC 회로들은 제1 MAC 사이클 동안 데이터 엘리먼트들의 제1 세트 및 제1 OFM(output feature map) 깊이 인덱스(d2)와 연관된 커널들(H) 중 제1 커널에 대해 제1 MAC 연산들을 수행하도록 구성되며, MAC 사이클들의 레이트는 제1 레이트보다 빠르다. MAC 회로들은, 연속적으로 제1 MAC 사이클을 뒤따르는 제2 MAC 사이클 동안 데이터 엘리먼트들의 제1 세트 및 제2 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제2 커널에 대해 제2 MAC 연산들을 수행하도록 구성된다.
회로 어레인지먼트는 어레이에 커플링된 제어 회로를 포함할 수 있다. 제어 회로는, 캐시에서 제1 커널의 제1 어드레스를 수신하고, 제1 어드레스에 기초하여 캐시에서 제2 커널의 제2 어드레스를 생성하고, 제1 MAC 사이클 동안 MAC 회로들에 제1 어드레스를 제공하고, 제2 MAC 사이클 동안 MAC 회로들에 제2 어드레스를 제공하도록 구성된다.
제어 회로는 또한 제1 어드레스가 블록 데이터 전달의 시작 어드레스에 매핑되는 것에 대한 응답으로, 제2 어드레스를 생성하기 위해 고정 값만큼 제1 어드레스를 증가시키도록 구성될 수 있다.
제어 회로는 또한 제1 어드레스가 블록 데이터 전달의 종료 어드레스에 매핑되는 것에 대한 응답으로, 제2 어드레스를 생성하기 위해 고정 값만큼 제1 어드레스를 감소시키도록 구성될 수 있다.
어레이의 MAC 회로들은, 연속적으로 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 데이터 엘리먼트들의 제1 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하도록 구성될 수 있다.
제1 제어 회로는 어레이에 커플링될 수 있다. 제1 제어 회로는, 캐시에서 커널들 중 제1 커널의 제1 어드레스를 수신하고, 제1 어드레스에 기초하여 캐시에서 커널들 중 제2 커널의 제2 어드레스를 생성하고, 제1 어드레스에 기초하여 캐시에서 커널들 중 제3 커널의 제3 어드레스를 생성하고, 제1 MAC 사이클 동안 MAC 회로들에 제1 어드레스를 제공하고, 제2 MAC 사이클 동안 MAC 회로들에 제2 어드레스를 제공하고, 제3 MAC 사이클 동안 MAC 회로들에 제3 어드레스를 제공하도록 구성된다.
제1 제어 회로는 또한 제2 어드레스를 생성하기 위해 고정 값만큼 제1 어드레스를 증가시키고 제3 어드레스를 생성하기 위해 고정 값만큼 제2 어드레스를 증가시키도록 구성될 수 있다.
회로 어레인지먼트는 어레이에 커플링된 제2 제어 회로를 포함할 수 있다. 제2 제어 회로는, 제1 레이트와 동일한 또는 제1 레이트보다 빠른 입력 레이트로 IFM의 데이터 엘리먼트들의 제1 세트 및 IFM의 데이터 엘리먼트들의 제2 세트를 수신하고, 입력 제어 신호들에 대한 응답으로, 데이터 엘리먼트들의 제2 세트를 MAC 회로들에 적어도 MAC 사이클만큼 지연시켜 제공하도록 구성된다.
어레이의 MAC 회로들은, 제1 레이트보다 느린 제2 레이트로 IFM의 데이터 엘리먼트들의 제2 세트를 수신하고, 연속적으로 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 데이터 엘리먼트들의 제2 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하고, 연속적으로 제3 MAC 사이클을 뒤따르는 제4 MAC 사이클 동안 데이터 엘리먼트들의 제2 세트 및 제4 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제4 커널에 대해 제4 MAC 연산들을 수행하고, 연속적으로 제4 MAC 사이클을 뒤따르는 제5 MAC 사이클 동안 데이터 엘리먼트들의 제2 세트 및 제5 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제5 커널에 대해 제5 MAC 연산들을 수행하도록 구성될 수 있다.
회로 어레인지먼트의 어레이는 어레이의 MAC 회로들의 각각의 열에 커플링된 복수의 콘텍스트 스위칭 누산기들을 포함할 수 있다. 복수의 콘텍스트 스위칭 누산기들은, 누산기들에 직접 커플링된 MAC 회로의 출력과 저장된 값을 누산하고, 누산기들에 직접 커플링된 MAC 회로의 출력으로 초기화하도록 구성된다.
방법은 IFM(input feature map)의 데이터 엘리먼트의 제1 세트를 제1 레이트로 MAC(multiply-and-accumulate) 회로들의 어레이에 입력하는 단계를 포함한다. 방법은 제1 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제1 세트 및 MAC 회로들의 캐시에 저장된 제1 커널(H)에 대해 제1 MAC 연산들을 수행하는 단계를 포함하고, 제1 커널은 제1 OFM(output feature map) 깊이 인덱스(d2)와 연관되고, MAC 사이클들의 레이트는 제1 레이트보다 빠르다. 방법은 제1 MAC 사이클을 연속적으로 뒤따르는 제2 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제1 세트 및 MAC 회로들의 캐시에 저장된 제2 커널(H)에 대해 제2 MAC 연산들을 수행하는 단계를 포함하며, 여기서 제2 커널은 제2 OFM 깊이 인덱스(d2)와 관련된다.
방법은, 어레이에 커플링된 제어 회로에 캐시의 제1 커널의 제1 어드레스를 입력하는 단계, 제어 회로에 의해, 제1 어드레스에 기초하여 캐시에서 제2 커널의 제2 어드레스를 생성하는 단계, 제1 MAC 사이클 동안 MAC 회로들에 제1 어드레스를 입력하는 단계, 및 제2 MAC 사이클 동안 MAC 회로들에 제2 어드레스를 입력하는 단계를 포함할 수 있다.
제2 어드레스를 생성하는 단계는 제1 어드레스가 데이터 블록 전달의 시작 어드레스에 매핑되는 것에 대한 응답으로, 고정 값만큼 제1 어드레스를 증가시키는 단계를 포함할 수 있다.
제2 어드레스를 생성하는 단계는 제1 어드레스가 데이터 블록 전달의 종료 어드레스에 매핑되는 것에 대한 응답으로 고정 값만큼 제1 어드레스를 감소시키는 단계를 포함할 수 있다.
방법은, 연속적으로 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제1 세트 및 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계를 포함할 수 있으며, 여기서 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관된다.
방법은, 어레이에 커플링된 제1 제어 회로에 캐시의 커널들 중 제1 커널의 제1 어드레스를 입력하는 단계, 제1 제어 회로에 의해, 제1 어드레스에 기초하여 캐시에서 제2 커널의 제2 어드레스를 생성하는 단계, 제1 제어 회로에 의해, 제1 어드레스에 기초하여 캐시에서 제3 커널의 제3 어드레스를 생성하는 단계, 제1 MAC 사이클 동안 MAC 회로들에 제1 어드레스를 입력하는 단계, 제2 MAC 사이클 동안 MAC 회로들에 제2 어드레스를 입력하는 단계, 및 제3 MAC 사이클 동안 MAC 회로들에 제3 어드레스를 입력하는 단계를 포함할 수 있다.
제2 어드레스의 생성하는 단계는 고정 값만큼 제1 어드레스를 증가시키고 고정 값만큼 제2 어드레스를 증가시키는 단계를 포함할 수 있다.
방법은, 제1 레이트와 동일한 또는 제1 레이트보다 빠른 입력 레이트로 어레이에 커플링된 제2 제어 회로에 IFM의 데이터 엘리먼트들의 제1 세트 및 IFM의 데이터 엘리먼트들의 제2 세트를 입력하는 단계, 및 제2 제어 회로에 의해, 제2 제어 회로에 대한 입력 제어 신호들에 대한 응답으로, 데이터 엘리먼트들의 제2 세트를 MAC 회로들에 적어도 MAC 사이클만큼 지연시켜 입력하는 단계를 포함할 수 있다.
방법은, 제1 레이트보다 느린 제2 레이트로 어레이의 MAC 회로들에 IFM의 데이터 엘리먼트들의 제2 세트를 입력하는 단계, 및 연속적으로 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제2 세트 및 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계 ― 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관됨 ― ; 연속적으로 제3 MAC 사이클을 뒤따르는 제4 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제2 세트 및 MAC 회로들의 캐시에 저장된 제4 커널(H)에 대해 제4 MAC 연산들을 수행하는 단계를 포함할 수 있다. 제4 커널은 제4 OFM 깊이 인덱스(d2)와 연관된다. 방법은, 연속적으로 제4 MAC 사이클을 뒤따르는 제5 MAC 사이클 동안, MAC 회로들에 의해, 데이터 엘리먼트들의 제2 세트 및 MAC 회로들의 캐시에 저장된 제5 커널(H)에 대해 제5 MAC 연산들을 수행하는 단계를 포함할 수 있으며, 여기서 제5 커널은 제5 OFM 깊이 인덱스(d2)와 연관된다.
방법은, 어레이의 MAC 회로들의 각각의 열에 커플링된 복수의 콘텍스트 스위칭 누산기들에 의해, 누산기들에 직접 커플링된 MAC 회로의 출력과 저장된 값을 누산하는 단계, 및 누산기들에 직접 커플링된 MAC 회로의 출력으로 누산기들을 초기화하는 단계를 포함할 수 있다.
다른 특징들은 하기의 상세한 설명 및 청구항들을 고려하여 인지될 것이다.
회로, 어레인지먼트 및 방법의 다양한 양상들 및 특징들은 다음의 상세한 설명의 검토 시에 그리고 도면들을 참조할 시에 자명해질 것이다.
도 1은 제어기, 제어 기어박스, 데이터 기어박스 및 MAC 회로들의 어레이를 포함하는 예시적인 회로 어레인지먼트의 블록도를 도시한다.
도 2는 MAC 회로들의 예시적인 어레이의 블록도를 도시한다.
도 3은 도 2의 MAC 회로들의 어레이의 예시적인 MAC 회로의 블록도를 도시한다.
도 4는 예시적인 OFM 깊이 분할을 활용하는 도 2의 어레이의 블록도를 도시한다.
도 5a는 커널의 행 및 열 인덱스들(u, v)에 의해 반복되는 제1 OFM 패스(po = 0)에 대한 하부 좌측 MAC 회로의 곱셈 출력 값 MUL 시퀀스를 도시한다.
도 5b는 IFM 위상 인덱스(ni)에 의해 반복되는 제1 OFM 패스(po = 0)에 대한 하부 좌측 MAC 회로의 곱셈 출력 값 MUL 시퀀스를 도시한다.
도 5c는 커널의 행 및 열 인덱스들(u, v)에 의해 반복되는 제1 OFM 패스(po = 0)의 상부 좌측 MAC 회로에 대한 누산 출력 값 MAC 시퀀스를 도시한다.
도 5d는 IFM 위상 인덱스(ni)에 의해 반복되는 제1 OFM 패스(po = 0)의 상부 좌측 MAC 회로에 대한 누산 출력 값 MAC 시퀀스를 도시한다.
도 6a는 OFM의 행 및 열 인덱스들(r, c)에 의해 반복되는 최좌측 누산기들의 OFM 출력 시퀀스를 도시한다.
도 6b는 OFM 깊이 인덱스(d2)에 의해 반복되는 최좌측 누산기들의 OFM 출력 시퀀스를 도시한다.
도 7은 예시적인 제어 기어박스의 블록도를 도시한다.
도 8은 MAC 회로들에서 커널 캐시들의 예시적인 레이아웃을 도시한다.
도 9는 예시적인 데이터 기어박스의 블록도를 도시한다.
도 10은 OFM 패스들이 2개의 OFM 위상들을 포함하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다.
도 11은 OFM 패스들이 3개의 OFM 위상들을 포함하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다.
도 12는 OFM이 3개의 OFM 위상들을 포함하는 것으로부터 2개의 OFM 위상들을 포함하는 것으로 스위칭하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다.
도 13은 예시적인 IAFU(input activation function unit)들을 도시한다.
도 14는 개시된 회로들 및 프로세스들이 구현될 수 있는 프로그래밍 가능 IC(integrated circuit)를 도시한다.
다음의 설명에서, 다수의 특정한 세부사항들이 본 명세서에 제시되는 특정한 예들을 설명하기 위해 기재된다. 그러나 하나 이상의 다른 예들 및/또는 이들 예들의 변동들이 이하에 주어진 모든 특정한 세부사항들 없이 실시될 수 있다는 것이 당업자에게 자명해져야 한다. 다른 경우들에서, 잘 알려진 특징들은 본원의 예들의 설명을 모호하게 하지 않기 위해, 상세히 설명되지 않는다. 예시의 용이함을 위해, 동일한 엘리먼트들 또는 동일한 엘리먼트의 부가적인 인스턴스들을 지칭하도록 동일한 참조 번호들이 상이한 도면들에서 사용될 수 있다.
CNN(convolutional neural network)과 같은 뉴럴 네트워크의 계산 효율성을 개선하는 것은 증가된 계산 복잡성 및 계산 속도에 의해 달성될 수 있다. 계산 효율성은 뉴럴 네트워크의 MAC(multiply-and-accumulate) 회로들의 계산 속도와 동일한 주파수로 동작하는 제어기를 사용함으로써 개선될 수 있으며, 이는 MAC 회로들이 가능한 한 바쁜 상태(busy)로 유지되는 것을 가능하게 한다. 그러나 MAC 회로들의 속도를 수용하기 위해, 제어기는 MAC 회로들의 계산 복잡성에 비례하는 어드레스 생성의 복잡성을 처리할 수 있어야 한다. 제어기의 로직 복잡성 및 속도 둘 모두를 증가시키는 것은 구현의 비용을 기하급수적으로 증가시킨다. 그러나 제어 회로의 로직이 MAC 레이트로 동작하더라도, 제어기에 의해 MAC 회로들로 데이터가 제공되는 레이트는 메모리와 같은 다른 회로들에 의해 제한될 수 있다.
개시된 회로 어레인지먼트들 및 방법들은, MAC 회로들의 제어기의 더 느린 동작 주파수를 유지하면서 MAC 프로세싱 주파수(이하, MAC 레이트로서 지칭됨)로 동작하는 동안, CNN의 MAC 회로들의 어레이를 가능한 한 바쁜 상태로 유지하기 위한 접근법을 제공한다. MAC 레이트는 MAC 회로들에 제공되는 클록 신호에 기초할 수 있다. CNN의 콘볼루셔널(CONV) 및 완전 연결(FC) 층들은 MAC 연산들을 수행한다. CNN의 다른 층들에서 ReLU(rectified linear unit), 풀링 및 정규화와 같은 다양한 다른 산술 연산들이 수행될 수 있다. 본원에서 사용되는 바와 같은 "MAC 회로들"은 곱셈기 회로, 누산기 회로 및 MAC 연산들에 사용될 커널들의 저장을 위해 구성된 캐시의 조합을 지칭한다. 콘볼루션 연산들은 병렬로 수행될 수 있기 때문에, 콘볼루션 연산들을 병렬로 수행하고 CNN의 계산 속도를 증가시키기 위해 MAC 회로들의 어레이가 사용될 수 있다. 어레이의 쓰루풋을 최대화하기 위해, MAC 회로들의 프로세싱 사이클들(이하, MAC 사이클들로서 지칭됨)이 완전히 활용되고 MAC 레이트가 최대화된다.
개시된 접근법들의 증가된 계산 효율성은 MAC 회로들에 제공되는 어드레스 및 제어 패턴들의 복잡성을 증가시킨다. 개시된 접근법들의 구현들은 어레이가 MAC 회로들의 글로벌 메모리 및/또는 캐시에 데이터를 기록하고 그리고/또는 이로부터 데이터를 판독하기 위한 특수 어드레스 패턴들을 생성하는 하나 이상의 제어 회로(들)를 포함한다. 제어 회로들은 MAC 회로들의 데이터 및 타이밍 동작들을 어드레싱하기 위한 특수 제어 패턴들을 생성한다.
활성화 특징 깊이(activation feature depth)를 분할함으로써 각각의 MAC 회로에서 다수(M)의 병렬 스레드들을 시분할 멀티플렉싱하는 접근법들이 개시된다. 제어 회로(또는 "제어기")는 MAC 레이트로 M개의 스레드들에 대한 어드레스 및 제어 패턴들을 생성한다. 본원에서 사용된 바와 같은 "스레드"는 출력 특징 맵의 깊이 인덱스에서의 값의 컴퓨테이션(computation)을 지칭한다. 어드레스 및 제어 패턴들은 이하, 제어 기어박스로서 지칭되는 다른 제어 회로에 의해, MAC 회로의 캐시에 직접 매핑된 메모리 어드레스(들)로 변환되고, 어드레스 및 제어 패턴은 MAC 회로의 매 프로세싱 사이클마다 업데이트된다. 이하, 데이터 기어박스로서 지칭되는 다른 제어 회로는 메모리로부터 데이터가 판독되는 레이트를, 데이터가 MAC 회로들에 제공되는 다른 레이트로 적응시킨다. 일부 경우들에서, 데이터 기어박스는 데이터가 판독되는 레이트보다 느린 레이트로 MAC 회로에 데이터를 제공한다. 일부 경우들에서, 제어 기어박스 및 데이터 기어박스가 MAC 회로들에 제어 워드들, 어드레스들 및 데이터를 제공하는 레이트는, 주어진 시점에서 MAC 회로들에서 인터리빙된 병렬 스레드들의 수(M)에 의존하여 동적으로 변한다. 예컨대, 개시된 접근법들은 MAC 회로들에서 2개의 병렬 스레드들을 인터리빙하는 것으로부터 MAC 회로들에서 3개의 병렬 스레드들을 인터리빙하는 것으로 스위칭할 수 있고 그 반대의 경우도 가능하다.
다수의 커널들에 대한 어드레스들은 MAC 회로들 각각의 캐시에 인터리빙된 채로 저장되어서, 연속적인 MAC 사이클들 동안 데이터 엘리먼트들의 세트에 대해 다수의 연속적인 MAC 연산들이 수행된다. MAC 연산들은 데이터, 제어 워드들 및 어드레스들이 MAC 회로들에 제공되는 레이트보다 빠른 레이트로 수행되지만, 제어기의 동작 주파수는 일정하게 유지된다. 제어기는 MAC 레이트에 정비례하는 주파수(예컨대, 1/M)에서 동작한다.
개시된 접근법들은 균형잡힌 파이프라인들을 제공하고 리타이밍(retiming)을 용이하게 하기 위해 레이턴시(예컨대, 사이클 시간 트레이드오프)로부터 제어 회로에 대한 초기 로직 깊이를 추정한다.
도 1은 제어기(108), 제어 기어박스(110), 데이터 기어박스(104) 및 MAC 회로들의 어레이(106)를 포함하는 예시적인 회로 어레인지먼트(100)의 블록도를 도시한다. 제어기(108)는 글로벌 메모리(102)로부터의 그리고 글로벌 메모리(102)로의 데이터 액세스를 위한 어드레스 패턴을 생성한다. 데이터 기어박스(104)는 글로벌 메모리(102) 및 MAC 회로들의 어레이(106)에 커플링된다. 데이터 기어박스(104)는 글로벌 메모리(102)로부터 판독된 데이터에 대해 제어기(108)와 어레이(106) 사이의 레이트 적응을 수행한다. 제어 기어박스(110)는 제어기(108) 및 어레이(106)에 커플링된다. 제어 기어박스(110)는 제어기(108)로부터의 제어 워드들 및 어드레스들에 대해 제어기(108)와 어레이(106) 사이의 레이트 적응을 수행한다. 어레이(106)로부터 출력된 데이터는 글로벌 메모리(102)에 기록된다. 데이터 기어박스(104), 제어 기어박스(110) 및 어레이(106)의 예시적인 동작은 아래에서 도 4 내지 도 12와 관련하여 설명된다.
도 2는 MAC 회로들의 예시적인 어레이의 블록도를 도시한다. 도 2에 예시된 어레이는 도 1에 예시된 어레이(106)와 유사할 수 있다. 어레이(106)는 m+1개의 행들 및 n+1개의 열들로 배열된 MAC 회로들을 포함한다. 어레이(106)의 행 0은 MAC 회로들(200-0, 200-1, 200-2, ... 200-n)을 포함하고; 어레이(106)의 행 1은 MAC 회로들(201-0, 201-1, 201-2, ... 201-n)을 포함하고; 어레이(106)의 행 m은 MAC 회로들(231-0, 231-1, 231-2, ... 231-n)을 포함한다.
본 개시내용의 적어도 하나의 구현에서, 어레이(106)의 각각의 열은 M개의 시분할 멀티플렉싱된 스레드들에 전용되는, 열의 개개의 최상위 MAC 회로에 커플링된 M개의 콘텍스트 스위칭 병렬 누산기들을 포함한다. 누산기들(222-0)은 어레이(106)의 열 0의 MAC 회로(231-0)에 커플링되고; 누산기들(222-1)은 열 1의 MAC 회로(231-1)에 커플링되고; 누산기들(222-2)은 열 2의 MAC 회로(231-2)에 커플링되고; 누산기들(222-n)은 열 n의 MAC 회로(231-n)에 커플링된다. 각각의 누산기는 어레이(106)로부터의 각각의 스레드에 대한 각각의 누산된 부분 내적 값을 함께 저장 및 합산하여 각각의 스레드에 대한 최종 내적 값을 구한다.
적어도 하나의 구현에서, OAFU(output activation function unit)는 어레이(106)의 각각의 열의 누산기들에 커플링된다. OAFU(224-0)는 누산기들(222-0)에 커플링되고; OAFU(224-1)는 누산기들(222-1)에 커플링되고; OAFU(224-2)는 누산기들(222-2)에 커플링되고; OAFU(224-n)는 누산기들(222-n)에 커플링된다. 각각의 OAFU는 ReLU, 풀링 및 정규화와 같은 하나 이상의 활성화 함수들을 누산기들로부터 출력된 값들에 적용한다. OAFU들의 출력은 도 1에 예시된 글로벌 메모리(102)와 같은 글로벌 메모리로 전달될 수 있다.
적어도 하나의 구현에서, 어레이(106)의 각각의 행은 행의 최좌측 MAC 회로에 커플링된 IAFU(input activation function unit)을 포함한다. IAFU(220-0)는 어레이의 행 0의 MAC 회로(200-0)에 커플링되고; IAFU(220-1)는 행 1의 MAC 회로(201-0)에 커플링되고; IAFU(220-m)는 행 m의 MAC 회로(231-0)에 커플링된다. 각각의 IAFU는 글로벌 메모리(102)로부터 판독된 데이터에 하나 이상의 활성화 함수들을 적용한다. 데이터는 도 1에 예시된 데이터 기어박스(104)에 의해 IAFU에 제공되는 IFM 데이터일 수 있다. IAFU들은, OAFU들이 우회되거나 풀링 동작들이 MAC 회로들에 입력되는 데이터와 MAC 회로들로부터 출력되는 데이터 둘 모두에 적용될 때 인에이블될 수 있다. IAFU들로부터의 출력들은 MAC 회로들에 직접 전달되거나 글로벌 메모리(102)로 역으로 전달(예컨대, 루핑)될 수 있다. 글로벌 메모리(102)로의 루프 백은 아래의 도 13과 관련하여 추가로 논의된다. IAFU들이 우회되는 경우, 입력 데이터는 MAC 회로들에 직접 공급된다.
도 2에 도시된 바와 같이, 어레이(106)에 입력된 데이터는 행의 각각의 MAC 회로로 좌측으로부터 우측으로 수평으로 시프트된다. MAC 회로들로부터 출력되는 누산된 값들은 열의 MAC 회로들을 통해 아래로부터 위로 수직으로 시프트된다.
제어 기어박스(110)와 같은 제어 기어박스는 어드레스 및 제어(101)를 어레이에 제공하여 각각의 스레드에 대한 커널 액세스 및 MAC 연산들을 수행한다. 어드레스 및 제어(101)는 모든 MAC 회로들에 의해 공유되고 각각의 MAC 사이클마다 아래로부터 위로, 그리고 좌측으로부터 우측으로 시프트된다. 어드레스 및 제어(103)는 각각의 MAC 사이클마다 아래로부터 위로 수직으로 시프트되고 모든 IAFU들에 의해 공유된다. 어드레스 및 제어(105)는 각각의 MAC 사이클마다 좌측으로부터 우측으로 수평으로 시프트되고 M개의 병렬 누산기들 사이의 콘텍스트 스위칭을 제어하기 위해 모든 누산기들에 의해 공유된다. 어드레스 및 제어(107)는 각각의 MAC 사이클마다 좌측으로부터 우측으로 수평으로 시프트되고 모든 OAFU들에 의해 공유된다.
도 2에 예시된 블록도 및 그의 컴포넌트들의 어레인지먼트 및 크기는 어레이(106)의 물리적 컴포넌트들의 어레인지먼트 또는 크기를 제한하지 않는다. 도 2는 좌측으로부터 우측으로 그리고 아래로부터 위로 데이터 흐름을 예시하지만, 본 개시내용의 구현들은 그러한 것으로 제한되지 않는다.
도 3은 도 2의 MAC 회로들의 어레이의 예시적인 MAC 회로의 블록도를 도시한다. 도 3은 어레이(106)의 MAC 회로(201-0)를 예시하지만, 도 3에 예시된 구조는 어레이(106)의 각각의 MAC 회로에 적용 가능하다. MAC 회로(201-0)는 곱셈 회로(330), 합산 회로(334) 및 커널 캐시(332)를 포함한다. 곱셈 회로(330) 및 합산 회로(334)는 협력하여 MAC 연산을 수행한다. 곱셈 회로(330)는 커널 캐시(332)로부터 판독된 커널(H) 및 MAC 회로(201-0)에 대한 데이터 입력(X)의 곱셈 출력 값(MUL)을 출력한다. 데이터(X)는 글로벌 메모리(102)로부터의 데이터 또는 IAFU(220-1)의 출력이다. 데이터(X)는 행 1의 우측-인접 MAC 회로(예컨대, 201-1)로 시프트된다. 커널(H)은 특정 MAC 연산에 대한 가중치들을 포함한다. 어드레스 및 제어(103)는 커널 캐시(332)로부터 커널(H)을 판독하기 위해 제어 기어박스(110)에 의해 MAC 회로(201-1)에 제공된다.
합산 회로(334)는 곱셈 출력 값(MUL) 및 최하부-인접 MAC 회로(예컨대, 200-0)로부터의 누산된 값의 합을 출력한다. 합산 회로(334)의 출력은 상부-인접 MAC 회로(예컨대, 201-0)의 합산 회로에 입력된다. 행 0의 MAC 회로들에 대해, 합산 회로에 입력된 누산된 값들은 0 또는 바이어스 값으로서 초기화될 수 있다. 최상위 행 m의 MAC 회로들에 대해, 행 m의 MAC 회로들 위에 MAC 회로들이 없기 때문에, 합산 회로의 출력이 글로벌 메모리(102), 누산기들(예컨대, 222-0) 또는 OAFU(예컨대, 224-0)로 출력된다.
어레이(106)는, 어레이(106)의 MAC 회로들에 입력된 데이터(X)가 IFM(input feature map)의 데이터일 수 있고 어레이(106)로부터 출력된 데이터가 OFM(output feature map)의 데이터일 수 있도록 CNN의 부분일 수 있다. 특정 OFM 깊이 인덱스(d2)에 대한 어레이(106)의 출력은 수학식 1과 같이 기록될 수 있다:
Figure pct00001
(1)
여기서: D1은 활성화 입력 특징 차원의 깊이(예컨대, IFM들의 수)이고; D2는 활성화 출력 특성 차원의 깊이(예컨대, OFM들의 수)이고; X는 X [r, c, d1]로서 인덱싱된 랭크-3 활성화 입력이고 여기서 d1 ∈ [0, D1-1]은 IFM 깊이 인덱스이고, r ∈ [0, H1-1] 및 c ∈ [0,W1-1]은 각각 2-차원(2D) IFM의 행 및 열 인덱스들이고; H는 H[u, v, d1, d2]로서 인덱싱된 랭크-4 가중치들 입력이며, 여기서 (d1, d2)는 IFM 깊이 인덱스(d1) 및 OFM 깊이(d2)의 교차점에 있는 커널을 가리키고, u ∈ [0, Fy-1] 및 v ∈ [0, Fx-1]은 각각 2D 커널의 행 및 열 인덱스들이며, 여기서 Fy는 커널의 높이이고 Fx는 커널의 폭이고; Sx는 열들에 따른 스트라이드(stride)이고; Sy는 행들에 따른 스트라이드이고; Y는 Y[r, c, d2]로서 인덱싱된 랭크-3 활성화 출력이며, 여기서 d2 ∈ [0, D2-1]은 OFM 깊이 인덱스이고 r ∈ [0, H2-1] 및 c ∈ [0, W2-1]은 각각 2D OFM의 행 및 열 인덱스들이고; conv2d()는 2D 콘볼루션 연산자이다. 콘볼루션 연산은 수학식 2에 설명된 바와 같은 내적 연산들을 수행한다:
Figure pct00002
(2)
특정 행 및 열 인덱스들(r, c)에 대한 OFM은 수학식 4로서 설명된다:
Figure pct00003
(3)
IFM 깊이(D1)는 다수의 IFM 위상들로 분할될 수 있어서, IFM 깊이 인덱스(d1)는 수학식 4로서 표현될 수 있다:
Figure pct00004
(4)
여기서: N1은 MAC 회로들의 어레이의 높이(예컨대, 어레이의 각각의 열에서의 MAC 회로들의 수)이고; ni는 IFM 위상 인덱스
Figure pct00005
이고;
Figure pct00006
는 어레이의 행 인덱스이다. IFM 깊이(D1) 또는 OFM 깊이(D2)를 초과하는 커널의 가중치들은 수학식 5에서 도시된 바와 같이 0이되도록 제한된다:
Figure pct00007
(5)
따라서, 수학식 3은 수학식 6으로 재작성될 수 있다:
Figure pct00008
(6)
여기서: MAC은 MAC [r, c, u, v, d2, ni]로서 인덱싱된 하나의 열을 따라 N1개의 MAC 회로들에 걸쳐 한 번에 누산된 랭크-6 값이고; (d2, ni)는 IFM [niN1, niN1 + N1-1]과 OFM 깊이 인덱스(d2)의 교차점의 모든 커널들을 가리키고; u ∈ [0, Fy-1] 및 v ∈ [0, Fx-1]은 각각 2D 커널의 행 및 열 인덱스들이고; r ∈ [0, H2-1] 및 c ∈ [0, W2-1]은 각각 2D OFM의 행 및 열 인덱스들이며, 여기서 H2는 OFM의 높이이고 W2는 OFM의 폭이다. MAC은 수학식 7에 도시된 바와 같이 표현될 수 있다:
Figure pct00009
(7)
여기서 MUL은 한 번의 MAC 회로의 곱셈 회로의 출력이다. MUL은
Figure pct00010
로서 인덱싱된 랭크-7 값이며, 여기서
Figure pct00011
는 IFM 깊이 인덱스(d1) 및 OFM 깊이 인덱스(d2)의 교차점에서의 커널을 가리킨다. MUL은 수학식 8에 도시된 바와 같이 표현될 수 있다:
Figure pct00012
(8)
다시 도 2 및 3을 참조하면, 어드레스 및 제어(101)는 인덱스
Figure pct00013
에서 커널 캐시(332)로부터 커널(H)에 액세스하는 데 사용된다. 커널(H)은 IFM 데이터(X)와 곱해져서 곱셈 출력 값
Figure pct00014
을 생성한다. 각각의 행으로부터의 모든 곱셈 출력 값들
Figure pct00015
이 어레이(106)의 MAC 회로들의 열(예컨대, 200-0, 201-0, ..., 231-0)의 합산 캐스케이드 체인을 따라 누산된 후에, 최상위 MAC 회로(예컨대, 231-0)는 그의 합산 출력에서 MAC[r, c, u, v, d2, ni]를 생성한다. 그 후, 누산기들(예컨대, 220-0)은 MAC을 저장하고
Figure pct00016
를 수행하여, OFM의 특정 행 및 열 인덱스들(r, c)에 대한 최종 내적 값을 구한다.
매 MAC 사이클마다 상이한 OFM 깊이 인덱스에 대한 곱셈 연산들을 수행함으로써, M개의 병렬 스레드들은 타이밍 공유에 의해 하나의 MAC 회로 내에서 그룹화될 수 있다. 곱셈 출력 값
Figure pct00017
는 상이한 OFM 깊이 인덱스(d2)에 대해 매 MAC 사이클마다 순차적으로 업데이트된다. OFM 깊이(D2)은 다수의 OFM 위상들로 분할되어서, OFM 깊이 인덱스(d2)는 수학식 9에서 도시된 바와 같이 표현될 수 있다:
Figure pct00018
(9)
여기서: N2는 MAC 회로들의 어레이의 폭(예컨대, 어레이의 각각의 행에서의 MAC 회로들의 수)이고; no는 OFM 위상 인덱스
Figure pct00019
이고;
Figure pct00020
는 어레이의 열 인덱스이다.
상이한 OFM 깊이 인덱스들(d2)이 동일한 열 인덱스(
Figure pct00021
)를 갖는 경우, 이는 열 인덱스(
Figure pct00022
)의 MAC 회로들에 의해 상이한 OFM 깊이 인덱스들(d2)에 대응하는 상이한 OFM 위상들에서 MAC 연산들이 수행됨을 의미한다. OFM 위상들의 서브세트는 OFM 패스로서 함께 그룹화된다. 다수의 OFM 위상들은 함께 시분할 멀티플렉싱된다. 1보다 큰 임의의 정수는 2 또는 3으로 균등하게 나눠질 수 있기 때문에, 다수의 OFM 위상 인덱스들(no)은 수학식 10에 설명된 바와 같이 OFM 패스 인덱스(po)로서 함께 그룹화될 수 있다.
Figure pct00023
일부 구현들에서, OFM 패스는 2개의 OFM 위상들 및/또는 3개의 OFM 위상들을 포함한다.
Figure pct00024
이 홀수 정수인 경우, 모든 OFM 패스들은 2개의 OFM 위상들을 포함한다.
Figure pct00025
이 1보다 큰 짝수 정수인 경우, 마지막 OFM 패스를 제외한 모든 OFM 패스들은 2개의 OFM 위상들을 포함하고 마지막 OFM 패스는 3개의 OFM 위상들을 포함한다.
도 4는 예시적인 OFM 깊이 분할을 활용하는 도 2의 어레이(106)의 블록도를 도시한다. 다음 예는 아래 표 1의 파라미터들에 기초한다.
파라미터들 설명
Figure pct00026
IFM들의 수 128
Figure pct00027
OFM들의 수 208
Figure pct00028
MAC 회로들의 어레이의 높이 32
Figure pct00029
MAC 회로들의 어레이의 폭 16
IFM 위상들의 수는 D1/N1이어서, 4개의 IFM 위상들이 존재한다(ni ∈ [0,3]). OFM 위상들의 수는 D2/N2이어서, 13개의 OFM 위상들이 존재한다(no ∈ [0,12]). 13개의 OFM 위상들은 6개의 OFM 패스들(po ∈ [0,5])로 분할된다.
Figure pct00030
은 1보다 큰 짝수 정수(12)이기 때문에, 처음 5개의 OFM 패스들(po ∈ [0,4]) 각각은 처음 10개의 OFM 위상들(no ∈ [0, 9]) 중 2개를 포함한다. 제6 및 마지막 OFM 패스(po = 5)는 3개의 OFM 위상들(no ∈ [10,12])을 포함한다. 따라서, 2개 또는 3개의 스레드들은 MAC 회로들에서 인터리빙된다.
각각의 MAC 회로는 한 번에 하나의 OFM 패스(po)에서 상이한 OFM 깊이 인덱스(d2)에 대한 곱셈 출력 값
Figure pct00031
를 생성한다. 예컨대, 최좌측 MAC 회로들(예컨대, 200-0(0,0), 201-0(1,0), 202-0(2,0), 231-0(31,0))은 매 2개의 MAC 사이클들마다 패턴
Figure pct00032
을 반복함으로써 제1 OFM 패스(po=0)에서 OFM 깊이 인덱스들(d2 = 0,16)에 대한 곱셈 출력 값들 MUL을 생성한다.
Figure pct00033
는 2개의 MAC 사이클들 중 제1 MAC 사이클 동안 수행되고
Figure pct00034
는 2개의 MAC 사이클들 중 제2 MAC 사이클 동안 수행된다.
상부 좌측 코너 MAC 회로(231-0)(31,0)는 단일 열을 따라 곱셈 출력 값들 MUL을 합산하고 매 2개의 MAC마다 패턴 MAC[r,c,u,v,0,ni], MAC[r,c,u,v,16,ni]를 반복함으로써 제1 OFM 패스(po = 0)에서 OFM 깊이 인덱스들(d2 =0,16)에 대한 MAC 출력 값들을 생성한다. MAC [r, c, u, v, 0, ni]는 2개의 MAC 사이클들 중 제1 MAC 사이클 동안 수행되고 MAC [r, c, u, v, 16, ni]는 2개의 MAC 사이클들 중 제2 MAC 사이클 동안 수행된다. 다수의 MAC 사이클들에 걸쳐, 상부 좌측 코너 누산기들(예컨대, 222-0)은 시간 인터리빙 방식으로 OFM의 특정 행 및 열 인덱스들(r, c)에 대해
Figure pct00035
Figure pct00036
를 수행함으로써 2개의 연속적인 MAC 사이클들의 버스트의 제1 OFM 패스(po = 0)에서 OFM 깊이 인덱스들(d2 = 0,16)에 대한 최종 내적들(Y[r, c, 0], Y[r, c, 16])을 생성한다.
Figure pct00037
의 시퀀싱은, 내부 루프가 커널의 행 및 열 인덱스들(u, v) 또는 IFM 위상 인덱스(ni)에 의해 반복되는지에 의존한다. 3x3 커널을 갖는 도 4의 예를 계속하면, 도 5a는 커널의 행 및 열 인덱스들(u, v)에 의해 반복되는 제1 OFM 패스(po = 0)에 대한 하부 좌측 MAC 회로(200-0)(0,0)의 곱셈 출력 값 MUL 시퀀스를 도시한다. 대조적으로, 도 5b는 IFM 위상 인덱스(ni)에 의해 반복되는 제1 OFM 패스(po = 0)에 대한 하부 좌측 MAC 회로(200-0)(0,0)의 곱셈 출력 값 MUL 시퀀스를 도시한다. 도 5c는 커널의 행 및 열 인덱스들(u, v)에 의해 반복되는 제1 OFM 패스(po = 0)의 상부 좌측 MAC 회로(231 0)(31,0)에 대한 누산 출력 값 MAC 시퀀스를 도시한다. 대조적으로, 도 5d는 IFM 위상 인덱스(ni)에 의해 반복되는 제1 OFM 패스(po = 0)의 상부 좌측 MAC 회로(231-0)(31,0)에 대한 누산 출력 값 MAC 시퀀스를 도시한다.
커널의 치수들이 1보다 크거나(Fy> 1 및 Fx> 1) 입력 활성화가 1보다 크기 때문에(
Figure pct00038
), OFM의 특정 행 및 열 인덱스들(r, c)에 대한 최종 내적 Y[r, c, d2]를 생성하기 위해 최상위 누산기들에 대해 다수의 MAC 사이클들이 필요할 수 있다. 출력 유효 시퀀스는 버스트 길이가 OFM 패스에서 OFM 위상들의 수와 동일한 버스트에서 출력된다. OFM 출력 시퀀스
Figure pct00039
는 내부 루프가 OFM의 행 및 열 인덱스들(r, c) 또는 OFM 깊이 인덱스(d2)에 의해 반복되는 위치에 의존한다. 7x7 OFM을 갖는 도 4의 예를 계속하면, 도 6a는 OFM의 행 및 열 인덱스들(r, c)에 의해 반복되는 최좌측 누산기들(222-0)의 OFM 출력 시퀀스를 도시한다. 대조적으로, 도 6b는 OFM 깊이 인덱스(d2)에 의해 반복되는 최좌측 누산기들(222-0)의 OFM 출력 시퀀스를 도시한다.
도 4의 예는 2개의 OFM 위상들을 포함하는 5개의 OFM 패스들 및 3개의 OFM 위상들을 포함하는 제6 OFM 패스를 보여주지만, 본 개시 내용의 구현들은 그러한 것으로 제한되지 않는다. OFM 패스들은 OFM 위상들의 임의의 크기의 그룹들의 임의의 조합을 포함할 수 있다. 그러나 MAC 사이클들의 활용은 최대화되지 않을 수 있다. 일 구현에서, 도 4의 예에서 13개의 OFM 위상들은 7개의 OFM 패스들(po ∈ [0,6])로 분할될 수 있으며, 각각의 OFM 패스는 2개의 OFM 위상들을 포함한다. 2개의 스레드들은 하나의 MAC 회로에서 인터리빙된다. MAC 사이클들은 처음 6개의 OFM 패스들(po ∈ [0,5]) 동안 완전히 활용되지만, 활용 비는 마지막 OFM 패스들(po = 6) 동안 50 %이다. 즉, 2개의 스레드들 중 단 하나만이 마지막 OFM 패스에서 사용된다. 다른 구현에서, 13개의 OFM 위상들은 4개의 OFM 패스들(po ∈ [0,3])로 분할되며, 각각의 OFM 패스는 4개의 OFM 위상들을 포함한다. 제어기(108)는 MAC 레이트의 1/4인 레이트로 동작한다. 4개의 스레드들은 하나의 MAC 회로에서 인터리빙된다. MAC 사이클들은 처음 3개의 OFM 패스들(po ∈ [0,2]) 동안 완전히 활용되지만, 활용 비는 마지막 OFM 패스들(po = 3) 동안 25 %이다. 즉, 마지막 OFM 패스에서 4개의 스레드들 중 단 하나만이 사용된다.
도 7은 예시적인 제어 기어박스(110)의 블록도를 도시한다. 제어 기어박스(110)는 제어기(108) 및 어레이(106)에 커플링된 제어 회로이다. 제어 기어박스(110)는 어레이(106)에 대해 제어기(108)로부터 수신된 제어 워드들(720) 및 어레이(106)의 MAC 회로들의 캐시에 저장된 커널들에 대한 어드레스들(722)을 제공한다. 제어 워드(720) 및/또는 커널 어드레스가 제어기(108)로부터 출력될 때와 어레이(106)의 MAC 회로들이 제어 워드(720) 및/또는 커널 어드레스(722)에 대해 준비될 때 사이의 잠재적인 미스매치로 인해, 적어도 하나의 구현은 제어기(108)와 어레이(106) 사이의 레이트 적응을 수행하기 위한 제어 기어박스(110)를 포함한다. 제어 기어박스(110)는 제어기(108)의 동작 주파수를 나타내는 신호(708), MAC 레이트를 나타내는 다른 신호(710), 및 제어 워드(720) 및/또는 커널 어드레스(722)를 어레이(106)에 제공할 때를 표시하는, 제어기(108)로부터의 입력 제어 신호들(예컨대, phase_update_vld(702), phase_update_id(704), phase_update_en(706))을 수신한다.
다시 도 4의 예를 참조하면, 제어기(108)의 동작 주파수는 MAC 레이트의 절반이다. OFM 패스가 2개의 OFM 위상들을 포함하는 경우, MAC 회로들은 매 2개의 MAC 사이클들마다 업데이트된 제어 워드들(720)에 대해 준비된다. OFM 패스가 3개의 OFM 위상들을 포함하는 경우, MAC 회로는 매 3개의 MAC 사이클들마다 업데이트된 제어 워드(720)에 대해 준비된다. 다수의 스레드들이 OFM 패스 동안 각각의 MAC 회로에서 인터리빙되고 스레드들이 MAC 레이트로 특정 동작에 대해 순차적으로 프로세싱되기 때문에, 특정 동작에 대한 제어 워드들(예컨대, 기록 인에이블 또는 판독 인에이블)은 다수의 MAC 사이클들 동안 유효하게 유지된다(예컨대, 다수의 엘리먼트들은 MAC 레이트로 순차적으로 판독되거나 기록됨).
개시된 접근법들은 다수의 MAC 사이클들(예컨대, 2개 또는 3개의 MAC 사이클들)의 동작 기간을 갖는 원자적 동작으로서 제어 워드(720)를 MAC 회로들에 제공하는 것을 포함한다. 예컨대, 2개 또는 3개의 스레드들이 MAC 레이트로 MAC 회로들에서 인터리빙되는 경우, 제어 워드(720)는 매 2개 또는 3개의 MAC 사이클들마다 업데이트된다. 그러나, 제어기(108)의 동작 주파수로 제어 기어박스(108)에 제어 워드들(714)을 제공하는 제어기(108)는 MAC 회로들에 의해 필요로 될 때 제어 기어박스(110)가 어레이(106)에 제어 워드들(720)을 제공하기에 충분하다.
도 7은 제어 기어박스(110)의 3-와이어 제어 인터페이스를 예시한다. 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))은 디지털 신호들일 수 있다. 제어 신호(phase_update_id(704))는 클록 신호(710)의 클록 사이클을 식별하는 신호이다. (아래에서 추가로 설명되는) 도 10 내지 도 12의 타이밍도들에 예시된 바와 같이, 클록 신호(710)의 짝수 클록 사이클은 제어 신호(phase_update_id(704))에서 "a"로 표시되고 홀수 사이클은 "b"로 표시된다. 제어 신호(phase_update_id(704))는 MAC 사이클들(710)이 짝수 및 홀수 MAC 사이클들 사이에서 교호함에 따라 "a"와 "b" 사이에서 교호한다. 제어 워드들에 대한 제어 기어박스(110)의 동작은 아래의 의사 코드로 설명될 수 있다:
Figure pct00040
"디폴트 값"은 제어 기어박스(110)에 입력되지 않은 제어 기어박스의 디폴트 내부 값을 지칭한다. 의사 코드는 아래의 도 10 내지 도 12와 관련하여 추가로 논의된다.
홀수 개의 스레드들이 MAC 레이트로 MAC 회로들에서 인터리빙되는 경우, 제어 기어박스(110)는 원자적 동작 기간 이후 교호적으로 짝수 또는 홀수 MAC 사이클에서 제어 워드들(720)을 업데이트할 수 있다. 때로는, 제어 워드들(720)은 짝수 MAC 사이클에서 업데이트되고(예컨대, phase_update_id(704)는 "a"임), 때로는, 제어 워드들(720)은 홀수 MAC 사이클에서 업데이트된다(예컨대, phase_update_id(704)는 "b"임). 짝수 개의 스레드들이 인터리빙되는 경우, 제어 워드들(720)은 짝수 MAC 사이클(예컨대, phase_update_id(704)가 "a"로 유지됨) 또는 홀수 MAC 사이클(예컨대, phase_update_id(704)는 "b"로 유지됨)에서 연속적으로 업데이트된다.
스레드들의 인터리빙으로 인해, MAC 회로들은 매 MAC 사이클마다 상이한 커널에 대한 어드레스에 대해 준비된다(예컨대, MAC 레이트로 연속 어드레스에 기록되거나 이로부터 판독됨). 그러나, 제어기(108)는 제어기(108)의 동작 주파수로 하나의 커널에 대한 기본 어드레스를 출력한다. 매 MAC 사이클마다 커널에 대한 어드레스를 MAC 회로들에 제공하기 위해, 제어 기어박스(110)는, 기본 어드레스가 커널 캐시(332)의 물리적 어드레스에 어떻게 매핑되는지에 의존하여 고정 값만큼 제어기(108)로부터 수신된 기본 어드레스를 증가 또는 감소시킨다. 예컨대, 기본 어드레스가 블록 데이터 전달의 시작 어드레스에 매핑된 경우, 기본 어드레스는 고정 값만큼 증가된다. 기본 어드레스가 블록 데이터 전달의 종료 어드레스에 매핑되는 경우, 기본 어드레스는 고정 값만큼 감소된다. 커널들의 어드레스들은 MAC 회로들의 커널 캐시(332)에 인터리빙된 채로 저장된다. 제어기(108)는 제어기(108)의 동작 주파수로 기본 어드레스를 생성한다.
도 8은 MAC 회로들에서 커널 캐시들의 예시적인 레이아웃을 도시한다. 커널들의 엘리먼트들은 도 3에 예시된 커널 캐시(332)와 같은 MAC 회로들의 캐시들의 연속적인 메모리 공간에서 인터리빙된 채로 저장된다. 도 8은 도 4의 예의 OFM 깊이 인덱스들(d2 = 0,16)에 대응하는 커널들의 엘리먼트들의 저장을 위한 캐시 레이아웃을 예시한다. H[u, v, d1, d2]는 IFM 깊이 인덱스(d1)와 OFM 깊이(d2)의 교차점(d1, d2)에서 2-차원(2D) 커널의 행 인덱스(u) 및 열 인덱스(v)의 커널 엘리먼트를 가리킨다. 예컨대, H(0,0,0,0)은 IFM 깊이 인덱스 0과 OFM 깊이 인덱스 0의 교차점에서 커널의 행 인덱스 0과 열 인덱스 0의 커널 엘리먼트를 가리킨다. 제1 커널의 제1 엘리먼트(H(0,0,0,0))는 커널 캐시 어드레스 0에 저장되고, 제2 커널의 제1 엘리먼트(H(0,0,0,16))는 커널 캐시 어드레스 1에 저장되고, 제1 커널의 제2 엘리먼트(H(0,1,0,0))는 커널 캐시 어드레스 2에 저장되고, 제2 커널의 제2 엘리먼트(H(0,1,0,16))는 커널 캐시 어드레스 3에 저장되는 식이다. 커널 캐시 어드레스들은 도 7의 어드레스들(722)에 대응한다. OFM 깊이 인덱스들(d2 = 0,16)에 대응하는 OFM 위상들은 제1 OFM 패스(po = 0) 동안 각각의 MAC 회로에서 인터리빙된다. 2개의 상이한 커널들은 2개의 연속적인 MAC 사이클들 동안 개개의 MAC 연산을 위해 사용되는 이들 2개의 OFM 깊이 인덱스들(
Figure pct00041
Figure pct00042
)에 대응한다. 그러나, 제어기(108)는 MAC 레이트로 MAC 회로들을 따라잡기 위해 매 MAC 사이클마다 커널의 캐시 어드레스를 생성하지 않는다. 오히려, 제어기(108)는 제어기(108)의 동작 주파수(예컨대, MAC 레이트의 절반)에서 기본 어드레스를 생성한다. 제어 기어박스(110)는 제어기(108)로부터 수신된 기본 어드레스에 기초하여 매 MAC 사이클마다 커널의 직접 매핑된 캐시 어드레스를 생성한다. 3개의 OFM 위상들을 포함하는 마지막 OFM 패스(po = 5)에 대해, 기본 어드레스는 매 3개의 MAC 사이클들마다 업데이트된다. 그러나, 제어기(108)의 동작 주파수는 변하지 않고; 제어기(108)는 여전히 MAC 레이트의 절반에서 동작한다.
예컨대, 도 8에 도시된 바와 같이, 제어 기어박스(110)는 제어기(108)로부터 제1 커널의 제1 엘리먼트(H(0,0,0,0))에 대한 기본 어드레스 0을 수신한다. 기본 어드레스 0은 커널 캐시 어드레스 0에 매핑된다. 제어기(108)로부터 제1 커널의 제2 엘리먼트(H(0,1,0,0))에 대한 기본 어드레스 1을 수신하기 전에, 제어 기어박스(110)는 제2 커널의 제1 엘리먼트(H(0,0,0,16))에 대한 커널 캐시 어드레스 1을 생성하기 위해 고정 값만큼 기본 어드레스 0을 증가시킨다. 여기서, 고정 값은 1이다. 그 후, 제어 기어박스(110)는, 제어기(108)로부터 제1 커널의 제2 엘리먼트(H(0,1,0,0))에 대한 기본 어드레스 1을 수신하며, 이 기본 어드레스 1은 커널 캐시 어드레스 2에 매핑된다. 제어 기어박스(110)는 제어기(108)로부터 수신된 각각의 기본 어드레스에 대해 증가를 반복한다. 제어 기어박스(110)는 제어기(108)의 동작 레이트로 기본 어드레스들을 수신하지만, 제어 기어박스(110)는 MAC 레이트로 커널 캐시 어드레스들을 출력한다. 제어 기어박스(110)는 제어기(108)의 동작 주파수가 증가하지 않고 MAC 레이트가 감소하지 않도록 하나 이상의 다른 커널들의 엘리먼트들에 대한 어드레스들을 생성한다.
도 8에 도시되지 않았지만, 제어 기어박스(110)는 단일의 기본 어드레스로부터 다수의 커널들의 엘리먼트들의 다수의 커널 캐시 어드레스들을 생성할 수 있다. 예컨대, 마지막 OFM 패스(po = 5)에서, 제어 기어박스(110)는 제어기(108)로부터 제1 커널의 제1 엘리먼트(H(0,0,0,160))의 제1 기본 어드레스를 수신한다. 제1 커널의 제2 엘리먼트(H(0,1,0,160))의 제2 기본 어드레스를 수신하기 전에, 제어 기어박스(110)는 고정 값만큼 제1 기본 어드레스를 증가시켜 제2 커널의 제1 엘리먼트(H(0,0,0,176))의 제1 커널 캐시 어드레스를 생성한다. 또한, 제2 기본 어드레스를 수신하기 전에, 제어 기어박스(110)는 제1 커널 캐시 어드레스를 고정 값만큼 증가시켜 제3 커널의 제1 엘리먼트(H(0,0,0,192))의 제2 커널 캐시 어드레스를 생성한다. 제어기(108)로부터 다음 기본 어드레스가 수신되기 전에, 커널 캐시 어드레스들이 제어 기어박스(110)에 의해 생성되지만, 다음 기본 어드레스는 제어 기어박스(110)가 이전 기본 어드레스로부터 생성된 커널 캐시 어드레스를 출력하기 전에 제어 기어박스(110)에 의해 수신될 수 있다.
도 9는 예시적인 데이터 기어박스(104)의 블록도를 도시한다. 도 1에 도시된 바와 같이, 데이터 기어박스(104)는 제어기(108), 글로벌 메모리(102) 및 어레이(106)에 커플링된 제어 회로이다. 데이터 기어박스(104)는 글로벌 메모리(102)로부터 수신된 데이터(예컨대, IFM 데이터(718))를 어레이(106)의 MAC 회로들에 제공한다. IFM 데이터(712)가 글로벌 메모리(102)로부터 출력될 때와 어레이(106)의 MAC 회로들이 IFM 데이터(718)에 대해 준비될 때 사이의 잠재적인 미스매치로 인해, 적어도 하나의 구현은 제어기(108), 글로벌 메모리(102), 및 어레이(106) 사이의 레이트 적응을 수행하기 위한 데이터 기어박스(104)를 포함한다. 데이터 기어박스(104)는 제어기(108) 및/또는 글로벌 메모리(102)의 동작 주파수를 나타내는 신호(708), MAC 레이트를 나타내는 신호(710), 및 IFM 데이터(718)를 어레이(106)에 제공할 때를 결정하기 위한 제어기(108)로부터의 입력 제어 신호들(예컨대, phase_update_vld(702), phase_update_id(704), phase_update_en(706))을 수신한다.
다시 도 4의 예를 참조하면, 제어기(108)의 동작 주파수는 MAC 레이트의 절반이다. OFM 패스가 2개의 OFM 위상들을 포함하는 경우, MAC 회로들은 매 2개의 MAC 사이클들마다 업데이트된 IFM 데이터(718)에 대해 준비된다. OFM 패스가 3개의 OFM 위상들을 포함하는 경우, MAC 회로들은 매 3개의 MAC 사이클마다 업데이트된 IFM 데이터(718)에 대해 준비된다. 다수의 스레드들이 OFM 패스 동안 각각의 MAC 회로에서 인터리빙되고 스레드들이 MAC 레이트에서 특정 동작에 대해 순차적으로 프로세싱되기 때문에, 특정 MAC 연산에 대한 IFM 데이터(718)는 다수의 MAC 사이클들 동안 유효하게 유지된다.
개시된 접근법들은 다수의 MAC 사이클들(예컨대, 2개 또는 3개의 MAC 사이클들)의 동작 기간을 갖는 원자적 동작으로서 IFM 데이터(718)를 MAC 회로들에 제공하는 것을 포함한다. 예컨대, 2개 또는 3개의 스레드들이 MAC 레이트로 MAC 회로들에서 인터리빙될 때, IFM 데이터(718)는 매 2개 또는 3개의 MAC 사이클들마다 업데이트된다. 그러나, 제어기(108)의 동작 주파수로 데이터 기어박스(104)에 IFM 데이터(712)를 제공하는 글로벌 메모리(102)는 데이터 기어박스(104)가 MAC 회로들에 의해 필요로 될 때 어레이(106)에 IFM 데이터(718)를 제공하기에 충분하다.
도 9는 데이터 기어박스(104)의 3-와이어 제어 인터페이스를 예시한다. 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))은 디지털 신호들일 수 있다. 제어 신호(phase_update_id(704))는 클록 신호(710)의 클록 사이클을 식별하는 신호이다. (아래에서 추가로 설명되는) 도 10 내지 도 12의 타이밍도들에 예시된 바와 같이, 클록 신호(710)의 짝수 클록 사이클은 제어 신호(phase_update_id(704))에서 "a"로 표시되고 홀수 사이클은 "b"로 표시된다. 제어 신호(phase_update_id(704))는 MAC 사이클(710)이 짝수 및 홀수 MAC 사이클들 사이에서 교호함에 따라 "a"와 "b" 사이에서 교호한다. 데이터 기어박스(104)의 동작은 아래의 의사 코드로 설명될 수 있다:
Figure pct00043
"디폴트 값"은 데이터 기어박스(104)에 입력되지 않는 디폴트 내부 값을 지칭한다. 의사 코드는 아래의 도 10 내지 도 12와 관련하여 추가로 논의된다.
홀수 개의 스레드들이 MAC 레이트로 MAC 회로들에서 인터리빙되는 경우, 데이터 기어박스(104)는 원자적 동작 기간 이후 교호적으로 짝수 또는 홀수 MAC 사이클에서 IFM 데이터(718)를 업데이트할 수 있다. 때로는, IFM 데이터(718)는 짝수 MAC 사이클에서 업데이트되고(예컨대, phase_update_id(704)는 "a"임), 때로는, IFM 데이터(718)는 홀수 MAC 사이클에서 업데이트된다(예컨대, phase_update_id(704)는 "b"임). 짝수 개의 스레드들이 인터리빙되는 경우, IFM 데이터(718)는 짝수 MAC 사이클(예컨대, phase_update_id(704)가 "a"로 유지됨) 또는 홀수 MAC 사이클(예컨대, phase_update_id(704)는 "b"로 유지됨)에서 연속적으로 업데이트된다.
도 10은 OFM 패스들이 2개의 OFM 위상들을 포함하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다. 제어기(108)의 동작 주파수(708)는 MAC 레이트(710)의 절반이다. IFM 데이터(712)는 글로벌 메모리(102)로부터 판독되고 동작 주파수(708)로 데이터 기어박스(104)에 입력된다. 제어 워드(714)는 제어기(108)에 의해 출력되고 동작 주파수(708)로 제어 기어박스(110)에 입력된다.
제어 기어박스(110) 및 데이터 기어박스(104)에 대한 위의 의사 코드에 따르면, 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))이 하이일 때, MAC 사이클(710)과 연관된 식별자(phase_id(716))가 제어 신호(phase_update_id(704))와 매칭되는 경우, IFM 데이터(718) 및 제어 워드들(720)이 데이터 기어박스(104) 및 제어 기어박스(110)로부터 각각 출력된다. 도 10에서, 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))은 하이(예컨대, 로직 "1")이고, 제어 신호(phase_update_id(704))는 연속적으로 "a"(예컨대, 짝수 MAC 사이클들)를 표시한다. 따라서, IFM 데이터(718) 및 제어 워드들(720)은 "a"와 연관된 MAC 사이클(710) 동안 각각 데이터 기어박스(104) 및 제어 기어박스(110)로부터 출력된다.
도 10의 OFM 패스들은 2개의 OFM 위상들을 포함하기 때문에, 2개의 커널들에 대한 어드레스들(722)이 각각의 OFM 패스에 대해 필요로 된다. 커널 어드레스(A0)는 커널 캐시 어드레스(예컨대, 도 8에 예시된 커널 캐시 어드레스 0)이며, 이는 제어기(108)에 의해 생성된 기본 어드레스(예컨대, 기본 어드레스 0)와 동일할 수 있다. 커널 어드레스(A1)는 제어 기어박스(110)에 의해, 커널 어드레스(A0)에 대응하는 기본 어드레스로부터 생성된 커널 캐시 어드레스이다.
커널 어드레스(A0)는 제1 OFM 패스의 제1 OFM 깊이 인덱스에 대한 제1 커널의 것이고, 커널 어드레스(A1)는 제1 OFM 패스의 제2 OFM 깊이 인덱스에 대한 제2 커널의 것이며, 이들은 제1 OFM 패스 동안 IFM 데이터(A)에 대해 수행된 MAC 연산들에 대해 사용된다. 커널 어드레스(B0)는 제2 OFM 패스의 제1 OFM 깊이 인덱스에 대한 제3 커널의 것이고, 커널 어드레스(B1)는 제2 OFM 패스의 제2 OFM 깊이 인덱스에 대한 커널의 것이며, 이들은 제2 OFM 패스 동안 IFM 데이터(B)에 대한 MAC 연산들에 대해 사용된다.
도 11은 OFM 패스들이 3개의 OFM 위상들을 포함하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다. 제어 기어박스(110) 및 데이터 기어박스(104)에 대한 위의 의사 코드에 따르면, 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))이 하이이면, MAC 사이클(710)과 연관된 식별자(phase_id(716))가 제어 신호(phase_update_id(704))와 매칭되는 경우, IFM 데이터(718) 및 제어 워드들(720)이 데이터 기어박스(104) 및 제어 기어박스(110)로부터 각각 출력된다.
도 11에서, 제어 신호들(phase_update_vld(702) 및 phase_update_en(706))은 초기에 하이(예컨대, 로직 "1")이다. 제어 신호(phase_update_id(704))는 초기에 "a"(예컨대, 짝수 MAC 사이클)를 표시하고, 그 후 "b"(예컨대, 홀수 MAC 사이클)를 표시하며, 이후에는 상관하지 않음(do not care)이다. OFM 패스들이 3개의 OFM 위상들을 포함하기 때문에, 제어기(108)는 제어기(108)의 2개의 연속적인 동작 사이클들(708) 동안 IFM 데이터(712)가 글로벌 메모리(102)로부터 판독되게 하고 그 후 일 사이클 동안 유지한다. 제어 신호(phase_update_id(704))는 초기에 "a"를 표시하기 때문에, IFM 데이터(A) 및 제어 워드(A)는 각각, "a"와 연관된 MAC 사이클(710) 동안 데이터 기어박스(104) 및 제어 기어박스(110)로부터 출력된다. 도 10과 대조적으로, 제어 신호(phase_update_id(704))는 그 후 "b"를 표시하기 때문에, IFM 데이터(B) 및 제어 워드(B)는 각각, "b"와 연관된 MAC 사이클(710) 동안 데이터 기어박스(104) 및 제어 기어박스(110)로부터 출력된다. 그 결과, IFM 데이터(A) 및 제어 워드(A)는 도 10에 도시된 바와 같이 2개의 클록 사이클들 대신 3개의 MAC 사이클들(710) 동안 유효하게 유지되는데, 그 이유는 IFM 데이터(B) 및 제어 워드(B)를 출력하는 것은 MAC 사이클(710)의 식별자가 "b"가 될 때까지 지연되기 때문이다. IFM 데이터(C) 및 제어 워드(C)는 "a"와 연관된 MAC 사이클(710) 동안 출력되고 IFM 데이터(D) 및 제어 워드(D)는 "b"와 연관된 MAC(710) 동안 출력된다.
도 11의 OFM 패스들은 3개의 OFM 위상들을 포함하기 때문에, 3개의 커널들에 대한 어드레스들은 각각의 OFM 패스에 대해 필요로 된다. 커널 어드레스(A0)는 커널 캐시 어드레스(예컨대, 도 8에 예시된 커널 캐시 어드레스 0)이며, 이는 제어기(108)에 의해 생성된 기본 어드레스(예컨대, 기본 어드레스 0)와 동일할 수 있다. 커널 어드레스들(A1 및 A2)은 제어 기어박스(110)에 의해, 커널 어드레스(A0)에 대응하는 기본 어드레스로부터 생성된 커널 캐시 어드레스들이다.
커널 어드레스(A0)는 제1 OFM 패스의 제1 OFM 깊이 인덱스에 대한 제1 커널의 것이고, 커널 어드레스(A1)는 제1 OFM 패스의 제2 OFM 깊이 인덱스에 대한 제2 커널의 것이고, 커널 어드레스(A2)는 제1 OFM 패스의 제3 OFM 깊이 인덱스에 대한 제3 커널의 것이며, 이들은 제1 OFM 패스 동안 IFM 데이터(A)에 대해 수행된 MAC 연산들에 대해 사용된다. 커널 어드레스(B0)는 제2 OFM 패스의 제1 OFM 깊이 인덱스에 대한 제1 커널의 것이고, 커널 어드레스(B1)는 제2 OFM 패스의 제2 OFM 깊이 인덱스에 대한 제2 커널의 것이고, 커널 어드레스(B2)는 제2 OFM 패스의 제3 OFM 깊이 인덱스에 대한 제3 커널의 것이며, 이들은 제2 OFM 패스 동안 IFM 데이터(B)에 대한 MAC 연산들에 대해 사용된다.
제어 신호들(phase_update_vld(702) 및 phase_update_en(706))이 로우(예컨대, 로직 "0")일 때, 디폴트 데이터는 데이터 기어박스(104) 및 제어 기어박스(110)에 의해 출력된다.
도 12는 OFM이 3개의 OFM 위상들을 포함하는 것으로부터 2개의 OFM 위상들을 포함하는 것으로 스위칭하는 도 1의 회로 어레인지먼트의 예시적인 타이밍도를 도시한다. 처음 3개의 OFM 패스들은 3개의 OFM 위상들을 포함한다. IFM 데이터(A) 및 제어 워드(A)는 각각, "a"와 연관된 MAC 사이클(710) 동안 데이터 기어박스(104) 및 제어 기어박스(110)로부터 출력된다. IFM 데이터(B) 및 제어 워드(B)는 각각, "b"와 연관된 MAC 사이클(710) 동안 데이터 기어박스(104) 및 제어 기어박스(110)로부터 출력된다. IFM 데이터(C) 및 제어 워드(C)는 "a"와 관련된 MAC(710) 동안 출력된다.
마지막 4개의 OFM 패스들은 2개의 OFM 위상들을 포함한다. 따라서, IFM 데이터(D) 및 제어 워드(D)가 데이터 기어박스(104)와 제어 기어박스(110)에 각각 입력될 때, 데이터 기어박스(104) 및 제어 기어박스(110)에 각각 입력된 IFM 데이터(712) 및 제어 워드들(714)의 패턴은, 제어기(108)의 2개의 동작 사이클들(708) 동안 판독/생성되고 그 후 한 사이클 동안 유지되는 것으로부터 제어기(108)의 매 동작 사이클(708)마다 판독/생성되는 것으로 변경된다. 유사하게, 제어 신호(phase_update_id(704))의 패턴은 3개의 OFM 위상들을 포함하는 OFM 패스들과 연관된 "a, b, 상관하지 않음" 패턴으로부터 2개의 OFM 위상들을 포함하는 OFM 패스들과 연관된 일정한 "b" 패턴으로 변경된다. 제어 신호(phase_update_id(704))는 IFM 데이터(D) 및 제어 워드(D)가 데이터 기어박스(104) 및 제어 기어박스(110)에 각각 입력되었을 때, 제어 신호(phase_update_id(704))가 "b"를 표시했기 때문에, 일정하게 "b"를 표시한다.
도 13은 예시적인 IAFU(input activation function unit)들을 도시한다. IAFU로부터의 출력이 어레이(106)의 MAC 회로들에 직접 입력되는 경우, 활성화 입력(
Figure pct00044
)은 매 2개 또는 3개의 MAC 사이클들마다 업데이트되기 때문에, 어레이의 각각의 행의 IAFU 내부에 단 하나의 스레드만이 존재한다. IAFU로부터의 출력이 글로벌 메모리(102)로 루프-백되는 경우, 스레드들은 어레이의 MAC 회로들과 유사한 인터리빙 방식에 따라 인터리빙될 수 있다. 도 13은 도 4의 예의 파라미터들에 기초한 IAFU들에 대한 깊이 분할 예를 도시한다. 4개의 IFM 위상들(ni [0,3])이 존재하며, 4개의 IFM 위상들은 2개의 IFM 패스들(pi ∈ [0,1])로 분할된다. 각각의 IFM 패스(po ∈ [0,1])는 2개의 IFM 위상들을 포함하여서, 2개의 IFM 위상들이 하나의 IAFU에서 인터리빙된다. 각각의 IAFU는 한 번에 하나의 IFM 패스(pi)에서 상이한 IFM 깊이 인덱스(d1)에 대한 활성화 함수 출력을 생성한다. 활성화 함수가 적용된 후 활성화 깊이가 변경되지 않기 때문에, IFM 입력 깊이 시퀀스는 OFM 출력 깊이 시퀀스와 동일하다.
도 14는 개시된 회로들 및 프로세스들이 구현될 수 있는 프로그래밍 가능 IC(integrated circuit)(800)를 도시한다. 프로그래밍 가능 IC는 또한, 다른 프로그래밍 가능 자원들과 함께 필드 프로그래밍 가능 게이트 어레이 로직(FPGA)을 포함하는 SOC(System On Chip)로서 지칭될 수 있다. FPGA 로직은 어레이에서 수개의 상이한 유형들의 프로그래밍 가능 로직 블록들을 포함할 수 있다. 예컨대, 도 14는, 멀티-기가비트 트랜시버(MGT)들(801), 구성 가능한 로직 블록(CLB)들(802), 랜덤 액세스 메모리 블록(BRAM)들(803), 입력/출력 블록(IOB)들(804), 구성 및 클록킹 로직(CONFIG/CLOCKS)(805), 디지털 신호 프로세싱 블록(DSP)들(806), 특수화된 입력/출력 블록들(I/O)(807), 예컨대, 클록 포트들, 및 다른 프로그래밍 가능 로직(808), 이를테면 디지털 클록 관리자들, 아날로그-디지털 변환기들, 시스템 모니터링 로직 등을 포함하는 많은 수의 상이한 프로그래밍 가능 타일들을 포함하는 프로그래밍 가능 IC(800)를 예시한다. FPGA 로직을 갖는 일부 프로그래밍 가능 IC는 또한, 전용 프로세서 블록들(PROC)(810) 및 내부 및 외부 재구성 포트들(도시되지 않음)을 포함한다.
일부 FPGA 로직에서, 각각의 프로그래밍 가능 타일은, 각각의 인접한 타일의 대응하는 상호연결 엘리먼트로의 그리고 상호연결 엘리먼트로부터의 표준화된 연결들을 갖는 프로그래밍 가능 상호연결 엘리먼트(INT)(811)를 포함한다. 따라서, 함께 취해진 프로그래밍 가능 상호연결 엘리먼트들은 예시된 FPGA 로직에 대한 프로그래밍 가능 상호연결 구조를 구현한다. 프로그래밍 가능 상호연결 엘리먼트(INT)(811)는 또한 도 14의 최상부에 포함된 예들에 의해 도시된 바와 같이, 동일한 타일 내의 프로그래밍 가능 로직 엘리먼트로의 그리고 이로부터의 연결들을 포함한다.
예컨대, CLB(802)는 단일 프로그래밍 가능 상호연결 엘리먼트(INT)(811)에 더하여, 사용자 로직을 구현하도록 프로그래밍될 수 있는 구성 가능한 로직 엘리먼트(CLE)(812)를 포함할 수 있다. BRAM(803)은 하나 이상의 프로그래밍 가능 상호연결 엘리먼트들 외에도, BRAM 로직 엘리먼트(BRL)(813)를 포함할 수 있다. 통상적으로, 타일에 포함된 상호연결 엘리먼트들의 수는 타일의 높이에 의존한다. 예시된 BRAM 타일은 5개의 CLB들과 동일한 높이를 갖지만, 다른 수들(예컨대, 4개)이 또한 사용될 수 있다. DSP 타일(806)은 적절한 수의 프로그래밍 가능 상호연결 엘리먼트들 외에도, DSP 로직 엘리먼트(DSPL)(814)를 포함할 수 있다. IOB(804)는 예컨대, 프로그래밍 가능 상호연결 엘리먼트(INT)(811)의 하나의 인스턴스 외에도, 입력/출력 로직 엘리먼트(IOL)(815)의 2개의 인스턴스들을 포함할 수 있다. 당업자들에게 자명할 바와 같이, 예컨대, I/O 로직 엘리먼트(815)에 연결된 실제 I/O 본드(bond) 패드들은 다양한 예시된 로직 블록들 위에 계층화된 금속을 사용하여 제조되며, 통상적으로, 입력/출력 로직 엘리먼트(815)의 영역으로 한정되지 않는다.
(도 14에서 음영으로 도시된) 다이의 중심 근방의 원주형(columnar) 영역은 구성, 클록 및 다른 제어 로직에 대해 사용된다. 이러한 열(column)로부터 연장되는 수평 영역들(809)은 프로그래밍 가능 IC의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는 데 사용된다. "원주형" 및 "수평" 영역들에 대한 참조들이 세로 배향(portrait orientation)으로 도면을 보는 것에 관한 것임을 유의한다.
도 14에 예시된 아키텍처를 이용하는 일부 프로그래밍 가능 IC들은 프로그래밍 가능 IC의 많은 부분을 구성하는 일반적인 열 구조를 방해하는 부가적인 로직 블록들을 포함한다. 부가적인 로직 블록들은 프로그래밍 가능 블록들 및/또는 전용 로직일 수 있다. 예컨대, 도 14에 도시된 프로세서 블록(PROC)(810)은 CLB들 및 BRAM들의 수개의 열들에 걸쳐 있다.
도 14는 예시적인 프로그래밍 가능 IC 아키텍처만을 예시하도록 의도된다는 것에 주의한다. 열에서 로직 블록들의 수들, 열들의 상대적인 폭들, 열들의 수 및 순서, 열들에 포함된 로직 블록들의 유형들, 로직 블록들의 상대적 크기들 및 도 14의 최상부에 포함된 상호연결/로직 구현들은 순전히 예시적이다. 예컨대, 실제 프로그래밍 가능 IC에서, CLB들의 1개 초과의 인접 열은 통상적으로, 사용자 로직의 효율적인 구현을 용이하게 하기 위해, CLB들이 나타나는 곳마다 포함된다.
일부 경우들에서, 양상들 및 특징들이 개별 도면들에서 설명될 수 있지만, 조합이 명시적으로 도시되지 않거나 또는 조합으로서 명시적으로 설명되지 않더라도, 하나의 도면으로부터의 특징들이 다른 도면의 특징들과 조합될 수 있다는 것이 인지될 것이다.
회로들 및 방법들은 콘볼루션 연산들을 수행하기 위해 데이터를 포맷팅하기 위한 다양한 시스템들에 적용 가능한 것으로 간주된다. 다른 양상들 및 특징들은 본 명세서를 고려할 시에 당업자들에게 자명할 것이다. 회로들 및 방법들은, 소프트웨어를 실행하도록 구성된 하나 이상의 프로세서들, ASIC(application specific integrated circuit), 또는 프로그래밍 가능 로직 디바이스 상의 로직으로서 구현될 수 있다. 본 명세서 및 도면들은 단지 예들로서만 고려되며, 본 발명의 실제 범위는 다음의 청구항들에 의해 표시된다는 것이 의도된다.

Claims (15)

  1. MAC(multiply-and-accumulate) 회로들의 어레이를 포함하고,
    각각의 MAC 회로는 복수의 커널(kernel)들의 저장을 위해 구성된 캐시를 포함하고, 상기 MAC 회로들은,
    제1 레이트(rate)로 IFM(input feature map)의 데이터 엘리먼트들의 제1 세트를 수신하고;
    제1 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제1 OFM(output feature map) 깊이 인덱스(d2)와 연관된 커널들(H) 중 제1 커널에 대해 제1 MAC 연산들을 수행하고 ― MAC 사이클들의 레이트는 상기 제1 레이트보다 빠름 ― ; 및
    연속적으로 상기 제1 MAC 사이클을 뒤따르는 제2 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제2 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제2 커널에 대해 제2 MAC 연산들을 수행하도록 구성되는,
    회로 어레인지먼트(circuit arrangement).
  2. 제1 항에 있어서,
    상기 어레이에 커플링되는 제어 회로를 더 포함하고, 상기 제어 회로는,
    상기 캐시에서 상기 제1 커널의 제1 어드레스를 수신하고;
    상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제2 커널의 제2 어드레스를 생성하고;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 제공하고; 그리고
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 제공하도록 구성되는,
    회로 어레인지먼트.
  3. 제2 항에 있어서,
    상기 제어 회로는 상기 제1 어드레스가 블록 데이터 전달의 시작 어드레스에 매핑되는 것에 대한 응답으로, 상기 제2 어드레스를 생성하기 위해 고정 값만큼 상기 제1 어드레스를 증가시키도록 구성되고; 그리고
    상기 제어 회로는 상기 제1 어드레스가 블록 데이터 전달의 종료 어드레스에 매핑되는 것에 대한 응답으로, 상기 제2 어드레스를 생성하기 위해 고정 값만큼 상기 제1 어드레스를 감소시키도록 구성되는,
    회로 어레인지먼트.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 어레이의 MAC 회로들은, 연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하도록 구성되는,
    회로 어레인지먼트.
  5. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 어레이의 MAC 회로들은, 연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하도록 구성되고,
    상기 회로 어레인지먼트는 상기 어레이에 커플링된 제1 제어 회로를 더 포함하고, 상기 제1 제어 회로는,
    상기 캐시에서 상기 커널들 중 제1 커널의 제1 어드레스를 수신하고;
    상기 제1 어드레스에 기초하여 상기 캐시에서 상기 커널들 중 제2 커널의 제2 어드레스를 생성하고;
    상기 제1 어드레스에 기초하여 상기 캐시에서 상기 커널들 중 제3 커널의 제3 어드레스를 생성하고;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 제공하고;
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 제공하고; 그리고
    상기 제3 MAC 사이클 동안 상기 MAC 회로들에 상기 제3 어드레스를 제공하도록 구성되는,
    회로 어레인지먼트.
  6. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 어레이의 MAC 회로들은, 연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하도록 구성되고,
    상기 회로 어레인지먼트는 상기 어레이에 커플링된 제1 제어 회로를 더 포함하고, 상기 제1 제어 회로는,
    상기 캐시에서 상기 커널들 중 제1 커널의 제1 어드레스를 수신하고;
    제2 어드레스를 생성하기 위해 고정 값만큼 상기 제1 어드레스를 증가시키고; 그리고
    제3 어드레스를 생성하기 위해 상기 고정 값만큼 상기 제2 어드레스를 증가시키고;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 제공하고;
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 제공하고;
    상기 제3 MAC 사이클 동안 상기 MAC 회로들에 상기 제3 어드레스를 제공하도록 구성되는,
    회로 어레인지먼트.
  7. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 어레이의 MAC 회로들은, 연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 상기 데이터 엘리먼트들의 제1 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하도록 구성되고, 상기 회로 어레인지먼트는, 상기 어레이에 커플링된 제1 제어 회로 및 상기 어레이에 커플링된 제2 제어 회로를 더 포함하고,
    상기 제1 제어 회로는,
    상기 캐시에서 상기 커널들 중 제1 커널의 제1 어드레스를 수신하고;
    제2 어드레스를 생성하기 위해 고정 값만큼 상기 제1 어드레스를 증가시키고; 그리고
    제3 어드레스를 생성하기 위해 상기 고정 값만큼 상기 제2 어드레스를 증가시키고;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 제공하고;
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 제공하고; 그리고
    상기 제3 MAC 사이클 동안 상기 MAC 회로들에 상기 제3 어드레스를 제공하도록 구성되고; 그리고
    상기 제2 제어 회로는,
    상기 제1 레이트와 동일한 또는 상기 제1 레이트보다 빠른 입력 레이트로 상기 IFM의 데이터 엘리먼트들의 제1 세트 및 상기 IFM의 데이터 엘리먼트들의 제2 세트를 수신하고; 그리고
    입력 제어 신호들에 대한 응답으로, 상기 데이터 엘리먼트들의 제2 세트를 상기 MAC 회로들에 적어도 MAC 사이클만큼 지연시켜 제공(delay providing)하도록 구성되는,
    회로 어레인지먼트.
  8. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 어레이의 MAC 회로들은,
    상기 제1 레이트보다 느린 제2 레이트로 상기 IFM의 데이터 엘리먼트들의 제2 세트를 수신하고;
    연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안 상기 데이터 엘리먼트들의 제2 세트 및 제3 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제3 커널에 대해 제3 MAC 연산들을 수행하고;
    연속적으로 상기 제3 MAC 사이클을 뒤따르는 제4 MAC 사이클 동안 상기 데이터 엘리먼트들의 제2 세트 및 제4 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제4 커널에 대해 제4 MAC 연산들을 수행하고; 그리고
    연속적으로 상기 제4 MAC 사이클을 뒤따르는 제5 MAC 사이클 동안 상기 데이터 엘리먼트들의 제2 세트 및 제5 OFM 깊이 인덱스(d2)와 연관된 커널들(H) 중 제5 커널에 대해 제5 MAC 연산들을 수행하도록 구성되는,
    회로 어레인지먼트.
  9. IFM(input feature map)의 데이터 엘리먼트들의 제1 세트를 제1 레이트로 MAC(multiply-and-accumulate) 회로들의 어레이에 입력하는 단계;
    제1 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제1 세트 및 상기 MAC 회로들의 캐시에 저장된 제1 커널(H)에 대해 제1 MAC 연산들을 수행하는 단계 ― 상기 제1 커널은 제1 OFM(output feature map) 깊이 인덱스(d2)와 연관되고, MAC 사이클들의 레이트는 상기 제1 레이트보다 빠름 ― ; 및
    연속적으로 상기 제1 MAC 사이클을 뒤따르는 제2 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제1 세트 및 상기 MAC 회로들의 캐시에 저장된 제2 커널(H)에 대해 제2 MAC 연산들을 수행하는 단계를 포함하고,
    상기 제2 커널은 제2 OFM 깊이 인덱스(d2)와 연관되는,
    방법.
  10. 제9 항에 있어서,
    상기 어레이에 커플링된 제어 회로에 상기 캐시의 상기 제1 커널의 제1 어드레스를 입력하는 단계;
    상기 제어 회로에 의해, 상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제2 커널의 제2 어드레스를 생성하는 단계;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 입력하는 단계; 및
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 입력하는 단계를 더 포함하는,
    방법.
  11. 제10 항에 있어서,
    상기 제2 어드레스를 생성하는 단계는 상기 제1 어드레스가 데이터 블록 전달의 시작 어드레스에 매핑되는 것에 대한 응답으로, 고정 값만큼 상기 제1 어드레스를 증가시키는 단계를 포함하고; 그리고
    상기 제2 어드레스를 생성하는 단계는 상기 제1 어드레스가 데이터 블록 전달의 종료 어드레스에 매핑되는 것에 대한 응답으로 고정 값만큼 상기 제1 어드레스를 감소시키는 단계를 포함하는,
    방법.
  12. 제9 항 내지 제11 항 중 어느 한 항에 있어서,
    연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제1 세트 및 상기 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계를 더 포함하고,
    상기 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관되는,
    방법.
  13. 제9 항 내지 제11 항 중 어느 한 항에 있어서,
    연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제1 세트 및 상기 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계 ― 상기 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관됨 ― ;
    상기 어레이에 커플링된 제1 제어 회로에 상기 캐시의 상기 커널들 중 제1 커널의 제1 어드레스를 입력하는 단계;
    상기 제1 제어 회로에 의해, 상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제2 커널의 제2 어드레스를 생성하는 단계;
    상기 제1 제어 회로에 의해, 상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제3 커널의 제3 어드레스를 생성하는 단계;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 입력하는 단계;
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 입력하는 단계; 및
    상기 제3 MAC 사이클 동안 상기 MAC 회로들에 상기 제3 어드레스를 입력하는 단계를 더 포함하는,
    방법.
  14. 제9 항 내지 제11 항 중 어느 한 항에 있어서,
    연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제1 세트 및 상기 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계 ― 상기 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관됨 ― ;
    상기 어레이에 커플링된 제1 제어 회로에 상기 캐시의 상기 커널들 중 제1 커널의 제1 어드레스를 입력하는 단계;
    상기 제1 제어 회로에 의해, 상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제2 커널의 제2 어드레스를 생성하는 단계;
    상기 제1 제어 회로에 의해, 상기 제1 어드레스에 기초하여 상기 캐시에서 상기 제3 커널의 제3 어드레스를 생성하는 단계;
    상기 제1 MAC 사이클 동안 상기 MAC 회로들에 상기 제1 어드레스를 입력하는 단계;
    상기 제2 MAC 사이클 동안 상기 MAC 회로들에 상기 제2 어드레스를 입력하는 단계;
    상기 제3 MAC 사이클 동안 상기 MAC 회로들에 상기 제3 어드레스를 입력하는 단계;
    상기 제1 레이트와 동일한 또는 상기 제1 레이트보다 빠른 입력 레이트로 상기 어레이에 커플링된 제2 제어 회로에 상기 IFM의 데이터 엘리먼트들의 제1 세트 및 상기 IFM의 데이터 엘리먼트들의 제2 세트를 입력하는 단계; 및
    상기 제2 제어 회로에 의해, 상기 제2 제어 회로에 대한 입력 제어 신호들에 대한 응답으로, 상기 데이터 엘리먼트들의 제2 세트를 상기 MAC 회로들에 적어도 MAC 사이클만큼 지연시켜 입력하는 단계를 더 포함하는,
    방법.
  15. 제9 항 내지 제11 항 중 어느 한 항에 있어서,
    상기 제1 레이트보다 느린 제2 레이트로 상기 어레이의 MAC 회로들에 상기 IFM의 데이터 엘리먼트들의 제2 세트를 입력하는 단계;
    연속적으로 상기 제2 MAC 사이클을 뒤따르는 제3 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제2 세트 및 상기 MAC 회로들의 캐시에 저장된 제3 커널(H)에 대해 제3 MAC 연산들을 수행하는 단계 ― 상기 제3 커널은 제3 OFM 깊이 인덱스(d2)와 연관됨 ― ;
    연속적으로 상기 제3 MAC 사이클을 뒤따르는 제4 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제2 세트 및 상기 MAC 회로들의 캐시에 저장된 제4 커널(H)에 대해 제4 MAC 연산들을 수행하는 단계 ― 상기 제4 커널은 제4 OFM 깊이 인덱스(d2)와 연관됨 ― ; 및
    연속적으로 상기 제4 MAC 사이클을 뒤따르는 제5 MAC 사이클 동안, 상기 MAC 회로들에 의해, 상기 데이터 엘리먼트들의 제2 세트 및 상기 MAC 회로들의 캐시에 저장된 제5 커널(H)에 대해 제5 MAC 연산들을 수행하는 단계를 더 포함하고,
    상기 제5 커널은 제5 OFM 깊이 인덱스(d2)와 연관되는,
    방법.
KR1020217004172A 2018-07-19 2019-07-12 Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행 KR20210025114A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/040,357 2018-07-19
US16/040,357 US11429850B2 (en) 2018-07-19 2018-07-19 Performing consecutive mac operations on a set of data using different kernels in a MAC circuit
PCT/US2019/041586 WO2020018369A1 (en) 2018-07-19 2019-07-12 Performing consecutive mac operations on a set of data using different kernels in a mac circuit

Publications (1)

Publication Number Publication Date
KR20210025114A true KR20210025114A (ko) 2021-03-08

Family

ID=67480366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004172A KR20210025114A (ko) 2018-07-19 2019-07-12 Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행

Country Status (6)

Country Link
US (1) US11429850B2 (ko)
EP (1) EP3791261B1 (ko)
JP (1) JP7495924B2 (ko)
KR (1) KR20210025114A (ko)
CN (1) CN112424745B (ko)
WO (1) WO2020018369A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210105053A (ko) * 2020-02-18 2021-08-26 에스케이하이닉스 주식회사 연산 회로 및 그것을 포함하는 딥 러닝 시스템
KR20220154346A (ko) * 2021-05-13 2022-11-22 삼성전자주식회사 복제 비트-셀 기반의 mac 연산 장치 및 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20160210550A1 (en) * 2015-01-20 2016-07-21 Nomizo, Inc. Cloud-based neural networks
US10614354B2 (en) * 2015-10-07 2020-04-07 Altera Corporation Method and apparatus for implementing layers on a convolutional neural network accelerator
CN108701236B (zh) 2016-01-29 2022-01-21 快图有限公司 卷积神经网络
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US9779786B1 (en) 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
JP6945987B2 (ja) 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
US10402527B2 (en) 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
US11086967B2 (en) * 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)

Also Published As

Publication number Publication date
CN112424745B (zh) 2024-01-26
US20200026989A1 (en) 2020-01-23
CN112424745A (zh) 2021-02-26
JP7495924B2 (ja) 2024-06-05
EP3791261A1 (en) 2021-03-17
EP3791261B1 (en) 2023-01-11
WO2020018369A1 (en) 2020-01-23
JP2021531572A (ja) 2021-11-18
US11429850B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
US11886536B2 (en) Methods and systems for implementing a convolution transpose layer of a neural network
US11809514B2 (en) Expanded kernel generation
EP3513357B1 (en) Tensor operations and acceleration
US10572225B1 (en) Circuit arrangements and methods for performing multiply-and-accumulate operations
US8051124B2 (en) High speed and efficient matrix multiplication hardware module
JP7279064B2 (ja) テンソルデータ用のメモリ構成
US10411709B1 (en) Circuit arrangements and methods for dividing a three-dimensional input feature map
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
US9875330B2 (en) Folding duplicate instances of modules in a circuit design
US10936311B1 (en) Sparse matrix processing circuitry
US11106968B1 (en) Circuit arrangements and methods for traversing input feature maps
KR20210025114A (ko) Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행
CN112884137A (zh) 神经网络的硬件实现方式
US20210173617A1 (en) Logarithmic Addition-Accumulator Circuitry, Processing Pipeline including Same, and Methods of Operation
US11194490B1 (en) Data formatter for convolution
Cain et al. Convolution processing unit featuring adaptive precision using dynamic reconfiguration
US11429851B1 (en) Neural network controller
CN112119459B (zh) 用于张量数据的存储器布置
KR102680573B1 (ko) 텐서 데이터를 위한 메모리 어레인지먼트
Warrier et al. Reconfigurable DSP block design for dynamically reconfigurable architecture
US9043739B1 (en) Placement based arithmetic operator selection
Javadi et al. An area-efficient hardware implementation for real-time window-based image filtering

Legal Events

Date Code Title Description
E902 Notification of reason for refusal