KR20200070089A - 텐서 계산 데이터플로우 가속기 반도체 회로 - Google Patents

텐서 계산 데이터플로우 가속기 반도체 회로 Download PDF

Info

Publication number
KR20200070089A
KR20200070089A KR1020190126481A KR20190126481A KR20200070089A KR 20200070089 A KR20200070089 A KR 20200070089A KR 1020190126481 A KR1020190126481 A KR 1020190126481A KR 20190126481 A KR20190126481 A KR 20190126481A KR 20200070089 A KR20200070089 A KR 20200070089A
Authority
KR
South Korea
Prior art keywords
accelerator
ndp
processing
bank
units
Prior art date
Application number
KR1020190126481A
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 KR20200070089A publication Critical patent/KR20200070089A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/008Artificial life, i.e. computing arrangements simulating life based on physical entities controlled by simulated intelligence so as to replicate intelligent life forms, e.g. based on robots replicating pets or humans in their appearance or behaviour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/02Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers
    • H01L27/04Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body
    • H01L27/06Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers the substrate being a semiconductor body including a plurality of individual components in a non-repetitive configuration
    • H01L27/0688Integrated circuits having a three-dimensional layout
    • H01L27/108
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B12/00Dynamic random access memory [DRAM] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Robotics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)
  • Power Engineering (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)

Abstract

텐서 계산 데이터플로우 가속기 반도체 회로가 게시된다. 데이터플로우 가속기는 DRAM 뱅크 및 DRAM 뱅크에 인접하게 배치되는 곱셈-덧셈 유닛들의 주변 어레이를 포함한다. 곱셈-덧셈 유닛들의 주변 어레이는 곱셈-덧셈 유닛들의 어레이 중 하나의 곱셈-덧셈 유닛으로부터의 부분 출력 데이터가 데이터 누산을 위해 곱셈-덧셈 유닛들의 어레이 중 다른 곱셈-덧셈 유닛으로 입력되는 파이프라인 방식의 데이터플로우 체인을 형성하도록 구성된다. NDP-DF(Near-DRAM-processing dataflow) 가속기 유닛 다이들은 베이스 다이 위에 적층될 수 있다. 베이스 다이는 프로세서 또는 컨트롤러에 인접하여 패시브 실리콘 인터포저 상에 배치될 수 있다. NDP-DF 가속기 유닛들은 부분 행렬 출력 데이터를 병렬로 처리할 수 있다. 부분 행렬 출력 데이터는 순방향 또는 역방향으로 전파될 수 있다. 텐서 계산 데이터플로우 가속기는 부분 행렬 전치를 수행할 수 있다.

Description

텐서 계산 데이터플로우 가속기 반도체 회로{TENSOR COMPUTATION DATAFLOW ACCELERATOR SEMICONDUCTOR CIRCUIT}
본 발명은 딥러닝에 관한 것으로, 좀 더 구체적으로, 딥러닝(deep learning)에서 일반적인 행렬-행렬 곱셈 및 텐서 계산을 위한 데이터플로우 가속기 구조(architecture)에 관한 것이다.
심층 신경망(Deep neural networks; DNN)은 인공 지능을 실현하기 위한 유망한 접근법으로서 고려되고, 그리고 다수의 어플리케이션들에서 그것의 효과가 입증되었다. 심층 신경망 트레이닝(training; 훈련)은 효율적인 부동 소수점 연산들을 요구하는 높은 정확성(정확도)과 넓은 동적 범위 모두를 필요로 한다. 부동 소수점 연산들의 대다수를 포함하고 심층 신경망 트레이닝에서 최대 시간을 차지하는 텐서 계산(tensor computation)은 가속을 위한 핵심 기본 연산이다. 계산 성능은 메모리 대역폭 및 레이턴시(latency)보다 더 빠르게 스케일링되고, 그리고 오프-칩 데이터 이동은 부동 소수점 연산보다 두 자릿수가 더 큰 에너지를 소비하기 때문에, 텐서 계산을 위한 컴퓨팅 중심의 가속기들은 “메모리 벽(memory wall)” 문제를 겪는다.
텐서 계산은 딥러닝에서 광범위한 어플리케이션들에 걸쳐 중요한 역할을 한다. 메모리 모듈의 내부에서의 또는 메모리 모듈에 인접한 계산 능력을 가능하게 하는 PIM(Process-in-memory) 구조들은 그것의 큰 내부 대역폭, 데이터 이동의 감소, 및 대규모 메모리 병렬 처리(parallelism) 때문에 텐서 계산을 가속하는 잠재력이 증명되었다. 그러나, 종래의 PIM 접근법들은 감소된 정확성을 견딜 수 있지만, 복잡한 부동 소수점 트레이닝 작업(task)들도 할 수 없는 딥러닝 추론 어플리케이션들을 주로 탐구한다. NDP(Near-Data-Processing) 구조는 덜 침입적이고(intrusive) 그리고 복잡한 ALU(Arithmetic Logic Unit)들을 메모리 코어 뱅크의 외부에 배치한다. 그러나 ALU들의 개수는 면적 비용 때문에 엄격하게 제한되고, 그리고 NDP 접근법들은 또한 컴퓨팅 중심의 구조들과 비교하여 내부 대역폭의 상당한 양을 손실한다. 이들 단점들은 컴퓨팅 중심의 접근법들과 비교하여 NPD 구조들을 부동 소수점 성능에서 보다 덜 효과적이게 한다.
또한, 텐서 프로세싱의 계산의 요구들을 만족하기 위해 단순히 FPU(floating points unit)들을 추가하는 것은 상당하고 그리고 받아들일 수 없는 DRAM 다이(die) 내의 면적 오버헤드를 야기한다. 또한, 최근에 만들어진 불휘발성 메모리에 기반한 가속기들은 쓰기 집중적인 딥러닝 트레이닝 작업들에 적합하지 않은 좋지 못한 쓰기 내구성(endurance) 및 긴 쓰기 레이턴시를 겪는다. 또한, SRAM(static random-access memory) 기반 가속기들은 딥러닝 트레이닝에 필요한 모든 모델 파라미터들과 중간 결과들을 저장하는 충분한 온-칩 메모리 용량을 갖지 않는다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 텐서 계산 데이터플로우 가속기 반도체 회로를 제공할 수 있다.
본문에 게시된 본 발명은 텐서 계산 데이터플로우 가속기 반도체 회로를 포함한다. 데이터플로우 가속기는 DRAM 뱅크 및 DRAM 뱅크에 인접하게 배치되는 곱셈-덧셈 유닛들의 주변 어레이를 포함한다. 곱셈-덧셈 유닛들의 주변 어레이는 곱셈-덧셈 유닛들의 어레이 중 하나의 곱셈-덧셈 유닛으로부터의 부분 출력 데이터가 데이터 누산을 위해 곱셈-덧셈 유닛들의 어레이 중 다른 곱셈-덧셈 유닛으로 입력되는 파이프라인 방식의 데이터플로우 체인을 형성하도록 구성된다. NDP-DF(Near-DRAM-processing dataflow) 가속기 유닛 다이들은 베이스 다이 위에 적층될 수 있다. 베이스 다이는 프로세서 또는 컨트롤러에 인접하여 패시브(수동) 실리콘 인터포저 상에 배치될 수 있다. NDP-DF 가속기 유닛들은 부분 행렬 출력 데이터를 병렬로 처리할 수 있다. 부분 행렬 출력 데이터는 순방향 또는 역방향으로 전파될 수 있다. 텐서 계산 데이터플로우 가속기는 부분 행렬 전치를 수행할 수 있다.
본 발명은 딥러닝에서 GEMM 및 텐서 계산을 위한 데이터플로우(dataflow) 가속기 구조에 관한 것이다. 본문에서 게시된 실시 예들은 부동 소수점 스칼라-벡터 곱셈들을 DRAM 기반 룩업 테이블에서의 동시 룩업(검색) 동작들로 변형하고, 그리고 모든 주변 로직 지원을 DRAM 코어 뱅크의 외부에 추가한다. 따라서, 전적으로 FPU들을 추가하는 것과 비교하여 보다 작은 면적이 소비되고 보다 짧은 레이턴시가 달성된다.
본 발명의 원리들의 전술한 그리고 추가의 특징들과 장점들은 첨부된 도면들을 참조하여 이루어진 다음의 상세한 설명으로부터 쉽게 명백해질 것이다.
도 1은 본문에서 게시된 일부 실시 예들에 따른 룩업 테이블을 이용하는 스칼라 곱셈-누산 연산의 예시적인 블록도와 순서도이다.
도 2는 본문에서 게시된 일부 실시 예들에 따른 계산을 위해 전체 룩업 테이블과 관련된 입력 행렬들을 포함하는 로컬 DRAM 뱅크를 도시하는 예시적인 블록도이다.
도 3은 본문에서 게시된 일부 실시 예들에 따른 GEMM 데이터플로우 가속기의 예시적인 블록도이다.
도 4는 본문에서 게시된 일부 실시 예들에 따른 집적된 스택 데이터플로우 가속기의 측면도를 도시하는 예시적인 블록도이다.
도 5는 본문에서 게시된 일부 실시 예들에 따른 집적된(integrated) 스택 데이터플로우 가속기의 평면도를 도시하는 예시적인 블록도이다.
도 6은 본문에서 게시된 일부 실시 예들에 따른 별개의(개별, discrete) 스택 데이터플로우 가속기의 측면도를 도시하는 예시적인 블록도이다.
도 7은 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기의 평면도를 도시하는 예시적인 블록도이다.
도 8은 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기의 측면도를 도시하는 예시적인 블록도이다.
도 9는 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기의 평면도를 도시하는 예시적인 블록도이다.
도 10은 본문에서 게시된 일부 실시 예들에 따른 GEMM 데이터플로우 가속기들과 관련하여 사용될 수 있는 단일 NDP-DF 다이의 컨텐츠를 포함하는 예시적인 블록도이다.
도 11은 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기들과 관련하여 사용될 수 있는 단일 NDP-DF 다이의 컨텐츠를 포함하는 예시적인 블록도이다.
도 12는 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 예시적인 블록도이다.
도 13은 MAC 유닛의 예시적인 블록도이다.
도 14는 시스톨릭(systolic) MAC 어레이의 높이와 시스톨릭 어레이의 폭을 도시하는 예시적인 블록도이다.
도 15는 레이어 간 데이터 피딩(feeding) 및 타일링(tiling) 기술의 예시적인 블록도이다.
도 16은 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 PG의 마이크로구조의 예시적인 블록도이다.
도 17은 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 PG들의 큐브(cube)의 예시적인 측면도이다.
도 18은 본문에서 게시된 일부 실시 예들에 따른 PG들의 다수의 볼트들(vaults)을 포함하는 텐서 계산 데이터플로우 가속기의 PG들의 큐브의 예시적인 평면도이다.
도 19는 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 베이스 다이의 예시적인 도면이다.
도 20은 본문에서 게시된 일부 실시 예들에 따른 패시브 실리콘 인터포저, 및 그곳에 배치되는 다수의 큐브들을 포함하는 텐서 계산 데이터플로우 가속기의 예시적인 블록도이다.
도 21은 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 예시적인 블록도이다.
도 22는 본문에서 게시된 일부 실시 예들에 따른 순방향 전파 데이터 레이아웃 및 데이터플로우의 예시적인 블록도이다.
도 23은 본문에서 게시된 일부 실시 예들에 따른 서로 연결된 다수의 프로세싱 그룹들을 포함하는 계산 그룹의 예시적인 블록도이다.
도 24는 본문에서 게시된 일부 실시 예들에 따른 감소 동작이 어떻게 수행되는지 보여주는 텐서 계산 데이터플로우 가속기의 다수의 큐브들의 예시적인 블록도이다.
도 25 내지 도 27은 본문에서 게시된 일부 실시 예들에 따른 역방향 전파 데이터 레이아웃 및 데이터플로우의 예시적인 블록도들이다.
본 발명의 실시 예들이 상세하게 참조되며, 이들의 예시들은 첨부된 도면들에 도시된다. 다음의 상세한 설명에서, 다양한 특정한 세부 사항이 본 발명의 완전한 이해를 가능하게 하기 위해 제공된다. 그러나, 당업자는 이러한 특정한 세부 사항 없이도 본 발명을 구현할 수 있음이 이해되어야 한다. 다른 예시들에서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 및 네트워크들은 실시 예들의 양상들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
제 1, 제 2, 등의 용어들이 다양한 요소들을 설명하기 위해 본문에서 사용될 수 있지만, 이들 요소들은 이러한 용어들에 의해 한정되지 않아야 함이 이해될 것이다. 이들 용어들은 단지 하나의 요소를 다른 것과 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 범위로부터 벗어나지 않고, 제 1 스택(stack)은 제 2 스택으로 명명될 수 있고, 그리고, 유사하게, 제 2 스택은 제 1 스택으로 명명될 수 있다.
본 발명의 설명에서 사용된 용어는 단지 특정한 실시 예들을 설명하기 위한 목적이며 본 발명을 제한하려는 의도가 아니다. 본 발명의 설명 및 첨부된 청구항들에서 사용된 바와 같이, 맥락에서 명백하게 다르게 나타내지 않는 한, 단수 형태들은 복수의 형태들도 포함하는 것으로 간주된다. 본문에서 사용된 ”그리고/또는” 용어는 하나 이상의 관련된 열거된 항목들의 임의의 그리고 모든 가능한 조합들을 나타내고 포함하는 것이 또한 이해될 것이다.”포함” 및/또는” 포함하는” 용어들은, 본 명세서에서 사용될 때, 명시된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성 요소들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 및/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는 것이 더 이해될 것이다. 도면들의 구성 요소들 및 특징들은 반드시 일정한 비율로 도시되는 것은 아니다.
본 발명은 딥러닝에서 GEMM(general matrix-matrix multiplication) 및 텐서 계산(tensor computation)을 위한 데이터플로우(dataflow) 가속기 구조에 관한 것이다. 본문에서 게시된 실시 예들은 부동 소수점 스칼라-벡터 곱셈들을 DRAM(dynamic random access memory) 기반 룩업 테이블(lookup table)에서의 동시(병행; concurrent) 룩업(검색) 동작들로 변형하고, 그리고 모든 주변 로직 지원을 DRAM 코어 뱅크의 외부에 추가한다. 따라서, 전적으로 FPU(floating point multiplication unit)들을 추가하는 것과 비교하여 보다 작은 면적이 소비되고 보다 짧은 레이턴시가 달성된다. 본문에서 게시된 실시 예들은 메모리 감지 회로들의 상당한 수정을 요구하는 현위치의(제자리의, in-situ) 아날로그 PIM 유닛들보다 더 실용적이다. 테이블 검색 동안 로우 활성화 횟수를 감소시키기 위해, 주변 로직은 하나 이상의 룩업 테이블 버퍼들을 사용하여 검색 결과들을 캐시하고, 그리고 게시된 데이터 맵핑은 일괄 처리된(batched) 딥러닝 트레이닝 작업들에서 매우 높은 버퍼 히트 레이트(hit rate)를 산출한다. 게시된 맵핑은 또한 입력 텐서들이 로컬 DRAM 뱅크로부터 오는 것을 또한 보장하고, 따라서 읽기 트래픽(traffic)을 위해 뱅크 그대로의(raw) 내부 대역폭을 완전히 이용한다. 확장성 및 쓰기 트래픽을 향상시키기 위해, 시스톨릭(systolic) 어레이 데이터플로우 구조가 게시되며, 이것은 다수의 뱅크들 및 채널들에 걸쳐 텐서 계산들을 조정하여서, 인접 뱅크들 또는 채널들은 생성자-소비자(혹은 프로듀서-컨슈머(producer-consumer)) 파이프라인 방식으로 작동하고, 그리고 데이터는 최종 스테이지에서만 뱅크에 쓰여진다(기입된다). 적은(드문) 텐서 계산을 지원하기 위해, 제로 스킵 로직(zero-skipping logic)이 사용될 수 있다.
본문에서 게시된 실시 예들은 메모리 LUT(룩업 테이블)를 이용하는 곱셈기들을 구현하고, 여기서 승수(multiplier)는 로우 어드레스로서 사용될 수 있고, 그리고 피승수(multiplicand)는 컬럼 어드레스로서 사용될 수 있다. LUT의 폭은 뱅크 내에 포함될 수 있고, 그리고 DRAM 서브어레이들에 효과적으로 저장 및 접근될 수 있다. 전력 및 시간을 모두 소모하는 DRAM LUT 로우 활성화들을 감소시키기 위해, LUT 버퍼들이 뱅크 주변 회로에 추가될 수 있고, 그리고 GEMM(general matrix-multiplication) 타일링(tiling) 기술이 사용되어 LUT 버퍼들의 검색 결과들의 재사용이 증가할 수 있다. 처리량을 향상시키기 위해, 검색 기반 텐서 외적(outer-product) 프로세싱 엔진(processing engine; PE)가 사용될 수 있다. 각 버퍼는 몇몇의 세그먼트(segment)들로 나뉠 수 있고, 세그먼트들 각각은 하나의 독립적인 값 기반의 검색을 제공할 수 있다. 누산기(혹은 누적기; accumulator)들은 시분할(time-multiplexed) 기술에서 부분 합을 합치기 위해(또는 집계하기 위해) 또한 뱅크 주변에 포함될 수 있다. 부분 합들의 라이트 백(write-back) 및 다시 로드(re-load)를 회피하기 위해, 시스톨릭 데이터플로우 구조가 사용될 수 있고, 여기서 이전 뱅크의 누산기들은 그것들의 현재 부분 합을 다음 뱅크의 누산(혹은 누적)을 위해 전송할 수 있고, 그리고 마지막 뱅크는 그것의 결과들을 다른 채널들로 전달할 수 있다(relay). 3D 적층(stacking)에서의 실리콘 관통 전극(Through-silicon-via; TSV)들은 채널 간 높은 데이터 전송 대역폭을 제공하는데 사용될 수 있다. 게시된 GEMM 블록 맵핑 기술은 임의의 사이즈들의 입력 텐서들을 동일한 데이터플로우 그룹 내 모든 뱅크들에 걸쳐 분산시킬 수 있다. 입력 부분 텐서들 및 LUT는 모두 뱅크에 대하여 국부적이기 때문에, 텐서를 접근하는 넓은 뱅크 인터페이스(예를 들어, 256 비트)가 사용될 수 있고, 그리고 한번의 사이클에서 LUT의 전체 로우를 접근하는 로우-복제 인용(row-clone citation)이 사용될 수 있다.
따라서, DRAM 기반 룩업 테이블은 인접 메모리 데이터플로우 구조와 함께 사용될 수 있어 딥러닝에서 부동 소수점 텐서 계산을 가속할 수 있고, 그렇게 함으로써 컴퓨팅 중심의 접근법에 비해 대역폭 확장성 이점들을 증가시킨다. 메모리 내의 검색(Lookup-in-memory) 데이터플로우 텐서 계산이 지원된다. 뱅크 내부 대역폭을 이용하는 외적 기반 GEMM 블록 맵핑은 로우 활성화를 감소시키고 대역폭 확장성을 증가시킨다.
본문에서 게시된 실시 예들은 풍부한 온-칩 메모리 용량, 대칭적인 읽기/쓰기 성능을 갖고, 그리고 쓰기 내구성 문제들로부터 자유로운 3D 적층 DRAM 기반 가속기를 포함할 수 있다. 3D 적층은 메모리 및 계산의 밀도를 증가시킬 수 있고, 그리고 다이 간 통신의 고대역폭을 제공할 수 있다. 부동 소수점 곱셈기의 대부분 면적은 소수(소수점부, fraction) 곱셈기가 주로 차지하며, 전체 소수 곱셈 테이블은 무시해도 될 정도의 용량 오버헤드로 하나의 DRAM 뱅크에 저장될 수 있다. 병렬 곱셈들은 병렬 검색 계산들로 바뀔 수 있다. 하나의 뱅크는 각 뱅크 옆에 주변 회로를 더함으로써 하나의 PE로 변형될 수 있어 검색 오버헤드를 완화하고 그리고 PE의 성능을 증가시킬 수 있다. 게시된 데이터 맵핑 기술은 모든 읽기 트래픽이 각 뱅크에 대해 국부적임을 보장하여 데이터 이동 길이를 단축시키고, 그리고 또한 뱅크 레벨의 읽기 대역폭을 이용한다. 뱅크 레벨의 회로 및 마이크로구조 세부 사항이 본문에서 게시된다. 데이터를 다시 쓰기 전에 데이터 재사용을 증가시키기 위해, 시스톨릭 데이터플로우 구조가 채널 내의 다수의 뱅크들에 사용될 수 있고, 여기서 부분 결과들은 누산을 위해 이웃하는 뱅크들로 전파(propagate)된다. 원할한 데이터플로우를 유지하고 각 뱅크의 활용을 최대화하기 위해, 효율적인 데이터 피딩(feeding; 공급 또는 제공으로도 지칭될 수 있음) 기술이 신경망 내부 레이어 간의 데이터 이동에 사용될 수 있다. 좀 더 일반적인 신경망 트레이닝을 위해, 하나 이상의 범용 ALU들이 3D 스택(stack)의 베이스 다이(base die) 상에 배치될 수 있어 중요하지만 시간을 소비하지 않는 배치 정규화(batch-normalization), 활성화(activation), 및 풀링(pooling)과 같은 연산들을 실현할 수 있다. 다이 및 스택 레벨의 구조의 세부 사항들도 본문에서 게시된다. 또한 임의의 사이즈의 행렬 곱셈 및 컨볼루션 연산들을 벡터 외적 연산들로 공식화하고(수립하고), 파이프라인 병렬 처리 및 데이터 병렬 처리 프로그래밍을 이용하여 데이터 맵핑을 결정하고, 그리고 계산을 스케줄링(scheduling)하는 스케일러블(scalable) 기술이 게시된다. 또한, 가속기를 위한 새로운 구조 및 컨트롤러 설계가 게시된다. 컨트롤러, 계산 스케줄링, 전체 어플리케이션 데이터 맵핑, 및 시스템 집적 양상들이 또한 본문에서 게시된다.
도 1은 본문에서 게시된 일부 실시 예들에 따른 룩업 테이블을 이용하는 스칼라 부동 소수점 곱셈-누산 엔진(scalar floating point multiply-and-accumulate engine; 100)의 예시적인 블록도이다. 부동 소수점 곱셈 누산 엔진(100)은 룩업 테이블(105), 부호 비트 로직(110), 덧셈기(또는 가산기) 회로(115), 누산기(또는 누적기; 120)를 포함할 수 있다. 룩업 테이블(105)은 125에서 A-소수(소수점부, fraction)(155) 로우 어드레스와 130에서 B-소수(155) 컬럼 어드레스를 수신할 수 있다. 다시 말해, A-소수(155)의 값은 룩업 테이블(105)로의 로우 어드레스로서 사용되고, 그리고 B-소수(155)의 값은 룩업 테이블(105)로의 컬럼 어드레스로서 사용된다. 따라서, 통상적으로 사용되는 부분 곱 곱셈기는 더 이상 필요하지 않다. 다이 면적의 상당한 양이 그러므로 절약된다. 룩업 테이블(105)로부터의 출력(135)은 부호 비트 로직(110)에 의해 결정되는 A-부호 비트(145) 및 B-부호 비트(145)와 결합된다. 부호 비트들(예를 들어, A-부호 비트(145) 및 B-부호 비트(145))은 곱셈 결과의 부호를 나타낸다. 덧셈기 회로(115)는 A-소수 및 B-소수와 관련된 지수들(예를 들어, A-지수(150) 및 B-지수(150))을 더할 수 있다. 곱셈 연산의 곱(140)은 누산기(120)에 의해 누산될 수 있다. 일부 실시 예들에서, 곱(140)은 11개 비트 값이다. 룩업 테이블(105)은 DRAM 기반 룩업 테이블일 수 있다. DRAM 기반 룩업 테이블(105)은 벡터 외적을 구현하는데 사용될 수 있다. 일부 실시 예들에서, DRAM 기반 룩업 테이블(150)의 사이즈는 16Mb이다.
주변 로직은 DRAM 뱅크의 외부에 포함될 수 있어 DRAM 코어는 변경될 필요가 없다. DRAM 뱅크의 외부에 MAC(multiply-and-add 또는 multiply-and-accumulate) 유닛들을 사용하는 것과 비교하여, DRAM 기반 룩업 테이블(105)은 상당한 면적 및 프로세싱 오버헤드를 절약한다. 또한, 베이스 로직 다이 상의 NDP와 비교하여, DRAM 기반 룩업 테이블(105)은 보다 높은 내부 대역폭(예를 들어, 뱅크 레벨의 대역폭) 및 보다 높은 계산 성능을 제공한다. 따라서, 부동 소수점 텐서 곱셈은 룩업 테이블(105)을 이용하는 PIM(Process-in-Memory) 구조들에서 지원된다.
도 2는 본문에서 게시된 일부 실시 예들에 따른 전체 룩업 테이블(105)을 포함하는 로컬 DRAM 뱅크(202)를 도시하는 예시적인 블록도(200)이다. 룩업 테이블(105)은 2개 정수들의 모든 가능한 조합들의 곱셈 결과들을 포함할 수 있다. 2개 정수들은 부동 소수점 숫자의 소수(점) 부분의 길이와 같은 동일한 비트 길이를 갖는다. A-엔트리(255) 및 B-엔트리(230)는 로컬 DRAM 뱅크들(예를 들어, 202)에 저장될 수 있고, 그리고 C-엔트리(220)는 다른 PE들 간에서 전파 및 누산될 수 있다. 체인(chain)의 마지막 PE는 로컬 DRAM 뱅크(예를 들어, 202)로 다시 저장될 누산된 C-엔트리(220)를 야기할 수 있다. A-엔트리(225)는 로컬 DRAM 뱅크(202)로부터 직접적으로 스트리밍(streaming)될 수 있고, 그렇게 함으로써 DRAM 로우 버퍼 및 높은 뱅크 읽기 대역폭을 이용한다. B-엔트리(230)는 하나 이상의 가중치들을 포함할 수 있고, 그리고 로컬 뱅크(202)로부터 전체 룩업 테이블(105)을 접근하기 위한 로우 어드레스로서 사용될 수 있다. 후술하는 바와 같이, A-엔트리(225)가 로컬 DRAM 뱅크(202)로부터 스트리밍되는 동안, 전체 룩업 테이블(105)의 결과들은 룩업 테이블 버퍼(235)에 임시로 고정될 수 있다.
도 3은 본문에서 게시된 일부 실시 예들에 따른 GEMM 데이터플로우 가속기(300)의 예시적인 블록도이다. GEMM 데이터플로우 가속기(300)는 로컬 DRAM 뱅크(202), 다수의 룩업 테이블 버퍼들(예를 들어, 235a 및 235b)을 포함하는 룩업 테이블 버퍼 구역(335)을 포함할 수 있다. GEMM 데이터플로우 가속기(300)는 B-벡터 버퍼(305) 및 A-벡터 버퍼(310)를 더 포함할 수 있다. GEMM 데이터플로우 가속기(300)는 하나 이상의 덧셈기들(예를 들어, 315a 및 315b)을 더 포함할 수 있다. GEMM 데이터플로우 가속기(300)는 출력 버퍼(320)를 더 포함할 수 있다.
GEMM 데이터플로우 가속기(300)는 하나 이상의 외적 연산들을 수행할 수 있다. 원(1)에 의해 표시된 첫 번째 단계에서, B-벡터는 로컬 DRAM 뱅크(202)로부터 읽혀질 수 있고 B-벡터 버퍼(305)에 저장될 수 있다. 원(2)에서, B-벡터는 DRAM 로우 복제 동작에서 룩업 테이블 버퍼(235a)에 저장될 수 있다. 원(3)에 의해 표시된 세 번째 단계에서, A-벡터는 로컬 DRAM 뱅크(202)로부터 읽혀질 수 있고 A-벡터 버퍼(310)에 저장될 수 있다. 원(4)에서, A-벡터는 하나 이상의 룩업 테이블 버퍼들(예를 들어, 235a 및 235b)로 스트리밍될 수 있고, 그리고 곱(예를 들어, 도 1의 140)은 DRAM 뱅크(202)의 룩업 테이블(예를 들어, 도 1의 105)과 관련된 A-벡터 및 B-벡터 정보에 기초하여 결정될 수 있다. 다시 말해, 룩업 테이블 버퍼들(235a 및 235b)은 곱셈 동작을 수행하지 않고 곱을 결정할 수 있다. 원(5)에서, 덧셈 연산이 곱에 대해 수행될 수 있다(예를 들어, 도 1의 140). 덧셈 연산의 결과(340)는 출력 버퍼(320)에 저장될 수 있다. 다시 말해, 곱은 다른 곱에 더해질 수 있고, 합쳐진 곱들은 누산된다. 원(6)에서, 출력 버퍼(320)는 결과(340)를 룩업 테이블 어레이(325) 및/또는 데이터 어레이(330)로 전송할 수 있다.
단계들(원(1), 원(2), 및 원(3))은 뱅크 레벨의 고대역폭을 활용할 수 있다. 단계들(원(3), 원(4), 원(5), 및 원(6))에서 도시된 단계들은 단계들(원(1) 및 원(2))보다 여러 번, 그리고 몇 번이고 더 반복될 수 있다. 이것은 룩업 테이블 버퍼 구역(335)에 제공되는 다수의 룩업 테이블 버퍼들(예를 들어, 235a 및 235b)에 대한 높은 버퍼 히트 레이트(buffer hit rate)가 있을 수 있기 때문이다 따라서, 룩업 테이블 버퍼 구역(335)에서 많은 룩업 테이블 버퍼들(예를 들어, 235a 및 235b)을 제공함으로써, DRAM 뱅크(202)에 저장된 전체 룩업 테이블(예를 들어, 105)의 성능은 상당히 크게 증가된다. 예를 들어, 8, 16, 32, 64, 128, 256, 또는 더 많은 룩업 테이블 버퍼들이 사용될 수 있다.
도 4는 본문에서 게시된 일부 실시 예들에 따른 집적된 스택 데이터플로우 가속기(400)의 측면도를 도시하는 예시적인 블록도이다. 집적된 스택 데이터플로우 가속기(400)는 NDP-DF(near-DRAM-processing dataflow) 가속기 유닛들(410)의 다수의 레이어들(405)을 포함할 수 있다. 4개 NDP-DF 가속기 유닛들(410)이 도 4에서 도시되었으나, 임의의 적합한 개수의 NDP-DF 가속기 유닛들(410)이 차례로(하나가 다른 하나의 위에) 적층될 수 있는 것이 이해될 것이다. NDP-DF 가속기 유닛들(410)은 수직 방향으로 차례로 적층될 수 있다. NDP-DF 가속기 유닛들(410)은 베이스 다이(415) 상에 적층될 수 있다. 베이스 다이(415)는 컨트롤러, 버퍼, 프로세싱 로직 등을 포함할 수 있다. 베이스 다이(415)는 패시브 실리콘 인터포저(passive silicon interposer; 420) 상에 적층될 수 있다. 프로세서(예를 들어, xPU(425))는 베이스 다이(415)에 인접하여 패시브 실리콘 인터포저(420) 상에 적층될 수 있다. 프로세서는 CPU(central processing unit), GPU(graphical processing unit), 또는 다른 적합한 프로세서일 수 있다.
계산은 430에서 도시된 바와 같이 프로세서(425)에서 NDP-DF 가속기 유닛들(410)의 스택(405) 및 베이스 다이(415)로 오프로드(offload)될 수 있다(또는 넘어갈 수 있다). TSV(Through silicon via)들(435)은 하나 이상의 NDP-DF 가속기 유닛들(410)을 관통하여 배치될 수 있다. TSV들(435)은 NDP-DF 가속기 유닛들(410)과 베이스 다이(415)를 상호 연결할 수 있다. 그 대신에 또는 추가로, TSV들(435)은 베이스 다이(415)와 프로세서(425)를 상호 연결할 수 있다. TSV들(435)은 패시브 실리콘 인터포저(420)를 경유하여 베이스 다이(415)와 프로세서(425)를 상호 연결할 수 있다.
도 5는 본문에서 게시된 일부 실시 예들에 따른 집적된 스택 데이터플로우 가속기(400)의 평면도를 도시하는 예시적인 블록도이다. 집적된 스택 데이터플로우 가속기(400)는 NDP-DF 가속기 유닛들(410)의 다수의 스택들(405)을 포함할 수 있다. NDP-DF 가속기 유닛들(410)의 스택들 각각은 패시브 실리콘 인터포저(420)를 경유하여 프로세서(425)와 통신하도록 연결될 수 있다. 호스트(500)는 통신 링크(505)를 경유하여 집적된 스택 데이터플로우 가속기(400)와 통신하도록 연결될 수 있다. 통신 링크(505)는 유선 링크, 무선 링크, 카드, 포트 등일 수 있다.
도 6은 본문에서 게시된 일부 실시 예들에 따른 별개의(개별, discrete) 스택 데이터플로우 가속기(600)의 측면도를 도시하는 예시적인 블록도이다. 별개의 스택 데이터플로우 가속기(600)는 NDP-DF 가속기 유닛들(410)의 다수의 레이어들(405)을 포함할 수 있다. 4개 NDP-DF 가속기 유닛들(410)이 도 6에서 도시되었으나, 임의의 적합한 개수의 NDP-DF 가속기 유닛들(410)이 차례로 적층될 수 있는 것이 이해될 것이다. NDP-DF 가속기 유닛들(410)은 수직 방향으로 차례로 적층될 수 있다. NDP-DF 가속기 유닛들(410)은 베이스 다이(615) 상에 적층될 수 있다. 베이스 다이(615)는 컨트롤러, 버퍼, 프로세싱 로직 등을 포함할 수 있다. 베이스 다이(615)는 패시브 실리콘 인터포저(620) 상에 적층될 수 있다. 컨트롤러(625)는 베이스 다이(615)에 인접하여 패시브 실리콘 인터포저(620) 상에 적층될 수 있다.
TSV(Through silicon via)들(435)은 하나 이상의 NDP-DF 가속기 유닛들(410)을 관통하여 배치될 수 있다. TSV들(435)은 NDP-DF 가속기 유닛들(410)과 베이스 다이(615)를 상호 연결할 수 있다. 그 대신에 또는 추가로, TSV들(435)은 베이스 다이(615)와 컨트롤러(625)를 상호 연결할 수 있다. TSV들(435)은 패시브 실리콘 인터포저(620)를 경유하여 베이스 다이(615)와 컨트롤러(625)를 상호 연결할 수 있다.
도 7은 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기(600)의 평면도를 도시하는 예시적인 블록도이다. 별개의 스택 데이터플로우 가속기(600)는 NDP-DF 가속기 유닛들(410)의 다수의 스택들(405)을 포함할 수 있다. NDP-DF 가속기 유닛들(410)의 스택들 각각은 패시브 실리콘 인터포저(620)를 경유하여 컨트롤러(625)와 통신하도록 연결될 수 있다. 호스트(700)는 통신 링크(705)를 경유하여 별개의 스택 데이터플로우 가속기(600)와 통신하도록 연결될 수 있다. 통신 링크(705)는 유선 링크, 무선 링크, 카드, 포트 등일 수 있다. 계산은 730에서 도시된 바와 같이 호스트(700)에서 별개의 스택 데이터플로우 가속기(600)로 오프로드될 수 있다.
도 8은 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기(800)의 측면도를 도시하는 예시적인 블록도이다. 별개의 스택 데이터플로우 가속기(800)는 NDP-DF(near-DRAM-processing dataflow) 가속기 유닛들(410)의 다수의 레이어들(405)을 포함할 수 있다. 스택(405) 당 4개 NDP-DF 가속기 유닛들(410)이 도 8에서 도시되었으나, 임의의 적합한 개수의 NDP-DF 가속기 유닛들(410)이 차례로 적층될 수 있는 것이 이해될 것이다. NDP-DF 가속기 유닛들(410)은 수직 방향으로 차례로 적층될 수 있다. 각 스택(405)에서 NDP-DF 가속기 유닛들(410)은 해당 베이스 다이(예를 들어, 815) 상에 적층될 수 있다. 각 베이스 다이(815)는 컨트롤러, 버퍼, 프로세싱 로직 등을 포함할 수 있다. 각 베이스 다이(815)는 패시브 실리콘 인터포저(820) 상에 적층될 수 있다. 컨트롤러(625)는 베이스 다이들(815) 중 하나에 인접하여 패시브 실리콘 인터포저(820) 상에 적층될 수 있다.
TSV(Through silicon via)들(435)은 하나 이상의 NDP-DF 가속기 유닛들(410)을 관통하여 배치될 수 있다. TSV들(435)은 NDP-DF 가속기 유닛들(410)과 해당 베이스 다이(815)를 상호 연결할 수 있다. 그 대신에 또는 추가로, TSV들(435)은 각 베이스 다이(815)와 컨트롤러(825)를 상호 연결할 수 있다. TSV들(435)은 패시브 실리콘 인터포저(825)를 경유하여 각 베이스 다이(815)와 컨트롤러(825)를 상호 연결할 수 있다. 하나 이상의 스위치들(850)은 하나 이상의 베이스 다이(815)에 인접하여 패시브 실리콘 인터포저(820) 상에 배치될 수 있다. 일부 실시 예들에서, 컨트롤러(825)는 또한 스위치를 포함한다.
도 9는 본문에서 게시된 일부 실시 예들에 따른 별개의 스택 데이터플로우 가속기(800)의 평면도를 도시하는 예시적인 블록도이다. 별개의 스택 데이터플로우 가속기(800)는 NDP-DF 가속기 유닛들(410)의 다수의 스택들(405)을 포함할 수 있다. 일부 예시들에서, NDP-DF 가속기 유닛들(410)의 12개의 스택들(405)이 있다. 일부 예시들에서, 컨트롤러/스위치(825) 외에도 4개의 스위치들(850)이 있다. 각 스위치(820)는 NDP-DF 가속기 유닛들(410)의 4개 스택들(405)과 통신하도록 연결될 수 있다. NDP-DF 가속기 유닛들(410)의 스택들 각각은 스위치들(850) 및/또는 패시브 실리콘 인터포저(820)를 경유하여 컨트롤러(825)와 통신하도록 연결될 수 있다. 일부 실시 예들에서, 컨트롤러/스위치(825)는 그것의 양쪽 각각에 NDP-DF 가속기 유닛들(410)의 6개 스택들(405), 그리고 양쪽 각각에 2개의 스위치들(850)을 갖는 패시브 실리콘 인터포저(820)의 중심 영역에 배치된다.
호스트(900)는 통신 링크(905)를 경유하여 별개의 스택 데이터플로우 가속기(800)와 통신하도록 연결될 수 있다. 통신 링크(905)는 유선 링크, 무선 링크, 카드, 포트 등일 수 있다. 계산은 930에서 도시된 바와 같이 호스트(900)에서 별개의 스택 데이터플로우 가속기(800)로 오프로드될 수 있다.
도 10은 전술한 부동 소수점 곱셈-누산 엔진(100) 및/또는 GEMM 데이터플로우 가속기(300)와 관련하여 사용될 수 있는 단일 NDP-DF 다이(410)의 컨텐츠(contents)를 포함하는 예시적인 블록도(1000)이다. NDP-DF 다이(410)는 다수의 채널들(예를 들어, CH0, CH1)을 포함할 수 있다. 채널들(예를 들어, CH0, CH1) 각각은 다수의 스마트 뱅크 유닛들(예를 들어, B0, B1, …, B15)을 포함할 수 있다. 채널들(예를 들어, CH0, CH1)은 선(1005)에 의해 서로 연결될 수 있다. 예를 들어, 채널(CH0)의 스마트 뱅크 유닛(B12)의 출력은 채널(CH1)의 스마트 뱅크 유닛(B0)의 입력에 연결될 수 있다. TSV들(435)은 (예를 들어, 도 4 내지 도 9에서 도시된 바와 같이) 채널들(예를 들어, CH0, CH1)을 다른 NDP-DF 다이들(410)의 다른 채널들로 연결할 수 있다. 각 채널(예를 들어, CH1) 내의 실선들(1010)은 채널의 스마트 뱅크 유닛들 각각을 통한 시스톨릭 데이터플로우 방향을 나타낸다. 다시 말해, 시스톨릭 데이터플로우는 스마트 뱅크 유닛(B0)에서 시작하여, 그 다음 스마트 뱅크 유닛(B3)으로 이동(travel)하고, 그 다음 방향을 바꾸고 스마트 뱅크 유닛(B7)에서부터 스마트 뱅크 유닛(B4)으로 반대 방향으로 이동하고, 그 다음 방향을 다시 바꾸고, 이러한 식의 사형(또는 구불구불한; serpentine) 방식으로 스마트 뱅크 유닛들 각각을 통해 이동할 수 있다. 각 채널(예를 들어, CH1) 내의 점선들(1015)은 뱅크 데이터 I/O 경로를 나타낸다. 뱅크 데이터 I/O 경로는 그러므로 스마트 뱅크 유닛들을 통한 사형 데이터플로우를 가로질러 간다.
스마트 뱅크 유닛들 각각은(예를 들어, B0) DRAM 뱅크(예를 들어, 도 3의 202)를 포함할 수 있다. DRAM 뱅크들 각각은(예를 들어, 202) 전체 룩업 테이블(예를 들어, 도 1의 105)을 포함할 수 있다. RAM 뱅크들 각각은(예를 들어, 202) 다수의 룩업 테이블 버퍼들(예를 들어, 235a, 235b), 다수의 덧셈기들(예를 들어, 315a, 315b), 및 출력 버퍼(예를 들어, 320)와 관련될 수 있다. 룩업 테이블 버퍼들(예를 들어, 235a, 235b)은 전술하고 후술한 바와 같이, 전체 룩업 테이블(202)의 부분들을 임시로 저장할 수 있다. 일부 실시 예들에서, 모든 읽기 동작들은 각 DRAM 뱅크(예를 들어, 202)에 대해 국부적이고, 그리고 모든 쓰기 동작들은 다음 DRAM 뱅크로 전파된다. 룩업 테이블 버퍼들(예를 들어, 235a, 235b), 덧셈기들(예를 들어, 315a, 315b), 및 출력 버퍼들(예를 들어, 320)은 DRAM 뱅크들 각각(예를 들어, 202)에 대해 주변 로직, 장치, 회로 등일 수 있고, 그리고 이웃하는 뱅크들을 연결할 수 있다. 멀티플렉서(multiplexor; 미도시)들 및 디멀티플렉서(de-multiplexor; 미도시)들과 같은 다른 주변 로직이 또한 포함될 수 있다. 출력 버퍼로부터의 출력은 인접 뱅크로 입력(혹은 피드(feed))될 수 있다. 예를 들어, 하나의 뱅크의 출력 버퍼로부터의 출력은 인접 뱅크의 덧셈기로 입력될 수 있다. 병렬 처리는 공간적으로 그리고 일시적으로 달성될 수 있다. 다시 말해, 다수의 임시의 프로세싱 사이클들 중 주어진 프로세싱 사이클을 위해, 행렬 데이터는 다수의 뱅크들에 의해 병렬로(혹은 동시에) 처리될 수 있다. 각 새로운 프로세싱 사이클은 다수의 상이한 뱅크들에 의해 병렬로 처리되는 행렬 데이터를 가질 수 있다. 따라서, 본문에서 게시된 GEMM 데이터플로우 가속기들의 성능은 증가될 수 있다.
도 11은 후술하는 텐서 계산 데이터플로우 가속기들과 관련하여 사용될 수 있는 단일 NDP-DF 다이(410)의 컨텐츠를 포함하는 예시적인 블록도(1100)이다. NDP-DF 다이(410)는 다수의 채널들(예를 들어, CH0, CH1)을 포함할 수 있다. 채널들(예를 들어, CH0, CH1) 각각은 다수의 스마트 뱅크 유닛들(예를 들어, B0, B1, …, B15)을 포함할 수 있다. 채널들(예를 들어, CH0, CH1)은 선(1005)에 의해 서로 연결될 수 있다. 예를 들어, 채널(CH0)의 스마트 뱅크 유닛(B12)의 출력은 채널(CH1)의 스마트 뱅크 유닛(B0)의 입력에 연결될 수 있다. TSV들(435)은 채널들(예를 들어, CH0, CH1)을 다른 NDP-DF 다이들(410; 예를 들어 도 4 내지 도 9에서 도시된 바와 같이)의 다른 채널들로 연결할 수 있다. 각 채널(예를 들어, CH1) 내의 실선들(1010)은 채널의 스마트 뱅크 유닛들 각각을 통한 시스톨릭 데이터플로우 방향을 나타낸다. 다시 말해, 시스톨릭 데이터플로우는 스마트 뱅크 유닛(B0)에서 시작하여, 그 다음 스마트 뱅크 유닛(B3)으로 이동하고, 그 다음 방향을 바꾸고 스마트 뱅크 유닛(B7)에서부터 스마트 뱅크 유닛(B4)으로 반대 방향으로 이동하고, 그 다음 방향을 다시 바꾸고, 이러한 식의 사형 방식으로 스마트 뱅크 유닛들 각각을 통해 이동할 수 있다. 각 채널(예를 들어, CH1) 내의 점선들(1015)은 뱅크 데이터 I/O 경로를 나타낸다. 뱅크 데이터 I/O 경로는 그러므로 스마트 뱅크 유닛들을 통한 사형 데이터플로우를 가로질러 간다.
스마트 뱅크 유닛들 각각(예를 들어, B0) 은 DRAM 뱅크(예를 들어, 도 3의 202)를 포함할 수 있다. DRAM 뱅크들 각각은(예를 들어, 202) 입력 버퍼(예를 들어, 1105), 시스톨릭 곱셈 및 누산(MAC) 어레이(1110), 및 출력 버퍼(예를 들어, 320)와 관련될 수 있다. 일부 실시 예들에서, 모든 읽기 동작들은 각 DRAM 뱅크(예를 들어, 202)에 대해 국부적이고, 그리고 모든 쓰기 동작들은 다음 DRAM 뱅크로 전파된다. 입력 버퍼들(예를 들어, 1105), MAC 어레이들(예를 들어, 1110), 및 출력 버퍼들(예를 들어, 320)은 DRAM 뱅크들(예를 들어, 202) 각각에 대해 주변 로직, 장치, 회로 등일 수 있고, 그리고 이웃하는 뱅크들을 연결할 수 있다. 멀티플렉서(미도시)들 및 디멀티플렉서(미도시)들과 같은 다른 주변 로직이 또한 포함될 수 있다. 출력 버퍼로부터의 출력은 인접 뱅크로 입력될 수 있다. 예를 들어, 하나의 뱅크의 출력 버퍼로부터의 출력은 인접 뱅크의 시스톨릭 MAC 어레이로 입력될 수 있다. 병렬 처리는 공간적으로 그리고 일시적으로 달성될 수 있다. 다시 말해, 다수의 임시의 프로세싱 사이클들 중 주어진 프로세싱 사이클을 위해, 행렬 데이터는 다수의 뱅크들에 의해 병렬로(동시에) 처리될 수 있다. 각 새로운 프로세싱 사이클은 다수의 상이한 뱅크들에 의해 병렬로 처리되는 행렬 데이터를 가질 수 있다. 따라서, 본문에서 게시된 텐서 계산 데이터플로우 가속기들의 성능은 증가될 수 있다.
도 12는 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기(1200)의 예시적인 블록도이다. 도 13은 MAC 유닛(1210)의 예시적인 블록도(1300)이다. 이제 도 12 및 도 13을 참조할 것이다.
텐서 계산 데이터플로우 가속기(1200)는 로컬 DRAM 뱅크(202), 하나 이상의 입력 버퍼들(예를 들어, 1105), 시스톨릭 MAC 어레이(1110), 및 출력 버퍼(320)를 포함할 수 있다. 시스톨릭 MAC 어레이(1110)는 다수의 PE들(예를 들어, 1215)을 포함할 수 있다. 일부 실시 예들에서, 입력 버퍼들(1105)은 더블 버퍼(1205)를 형성한다. 각 PE(1215)는 입력 버퍼(1220), MAC 유닛(1210), 가중치 버퍼(1225), 및 부분 합 버퍼(1230)를 포함할 수 있다. PE(1215) 내의 수직 점선(1235)은 데이터의 입력 방향을 도시한다. PE(1215) 내의 수평의 실선들(1240)은 데이터의 부분 합 방향을 보여준다. 가중치 버퍼(1225)는 가중치 값을 MAC 유닛(1210)으로 입력한다. MAC 유닛(1210)은 도 13에서 도시된 바와 같이 곱셈기 회로(1305) 및 덧셈기 회로(1310)를 포함한다.
텐서 계산 데이터플로우 가속기(1200)는 하나의 PE로부터의 입력과 시스톨릭 MAC 어레이(1110) 내의 다음 PE로의 부분 결과들을 이용하여 스칼라 벡터 곱셈 연산들을 수행할 수 있다. 후술하는 바와 같이, 가중치들은 곱셈 및 누산 연산 동작들을 수행하기 위한 준비로 각 PE(예를 들어, 1215)의 로컬 쓰기 버퍼(1225)에 사전에 결정 및 저장될 수 있다.
도 14는 시스톨릭 MAC 어레이(1110)의 높이(1405)와 시스톨릭 MAC 어레이(1110)의 폭(1410)를 도시하는 예시적인 블록도이다. 시스톨릭 MAC 어레이(1110)는 임의의 적합한 개수의 PE들(1215), 임의의 적합한 높이(1405), 및 임의의 적합한 폭(1410)을 가질 수 있다.
도 15는 레이어 간 데이터 피딩 및 타일링 기술의 예시적인 블록도(2000)이다. 기술은 뱅크들의 다수의 레이어들(예를 들어, 레이어 1 및 레이어 2)을 포함할 수 있다. 레이어들 각각은 다수의 뱅크들(예를 들어, 뱅크 1 내지 뱅크 N)을 포함할 수 있다. 제 1 입력 텐서는 2005에서 제공될 수 있다. 제 1 가중치 텐서는 2010에서 제공될 수 있다. 제 2 입력 텐서는 2015에서 제공될 수 있다. 제 2 가중치 텐서는 2020에서 제공될 수 있다. 입력 텐서들의 제 1 타일링 그룹(2025)(예를 들어, T1 내지 TN)은 레이어 1의 다수의 뱅크들(예를 들어, 뱅크 1 내지 뱅크 N)과 관련될 수 있다. 가중치 텐서들의 제 2 타일링 그룹(2030)(예를 들어, W1 내지 WN)은 레이어 1의 다수의 뱅크들(예를 들어, 뱅크 1 내지 뱅크 N)과 관련될 수 있다. 입력 텐서들의 제 3 타일링 그룹(2035)(예를 들어, T1 내지 TM)은 레이어 2의 다수의 뱅크들(예를 들어, 뱅크 1 내지 뱅크 N)과 관련될 수 있다. 가중치 텐서들의 제 4 타일링 그룹(2040)(예를 들어, W1 내지 WM)은 레이어 2의 다수의 뱅크들(예를 들어, 뱅크 1 내지 뱅크 N)과 관련될 수 있다. 데이터 피드(data feed; 2045)는 레이어 1 뱅크들과 제 3 타일링 그룹(2035) 간에 제공될 수 있다.
도 16은 본문에서 게시된 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 프로세싱 그룹(processing group(PG); 2105)의 마이크로구조의 예시적인 블록도이다. PG(2105)는 다수의 PE들(예를 들어, PE[1] 내지 PE[8])을 포함할 수 있다. PE들은 서로 연결될 수 있고 공유된 데이터 버스(2110)를 경유하여 TSV들(2115)에 연결될 수 있다. PG(2105)는 TSV들(2115)과 TSV들(2120)을 경유하여 스위치(2130)에 연결될 수 있다. 컨트롤러(2125)는 스위치(2130) 및/또는 PG(2105)와 통신하도록 연결될 수 있고, 그리고 스위치(2130) 및/또는 PG(2105)를 제어할 수 있다.
도 17은 본문에서 게시된 일부 실시 예들에 따른 다수의 PG들(예를 들어, PG[1] 내지 PG[8])이 다수의 스택들(예를 들어, 2210 및 2215)에서 차례로 적층되어 PG들의 큐브(cube)를 형성하는 텐서 계산 데이터플로우 가속기의 PG들의 큐브(2205)의 예시적인 측면도이다. TSV들(2140)은 각 스택의 PG들을 상호 연결할 수 있다.
도 18은 PG들의 다수의 볼트들(vaults; 예를 들어, Vault[1] 내지 Vault[8])을 포함하는 텐서 계산 데이터플로우 가속기의 PG들의 큐브(2205)의 예시적인 평면도이다. 예를 들어, 볼트는 PG들의 수직의 그룹핑(grouping)을 포함할 수 있다.
도 19는 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기의 베이스 다이(2405)의 예시적인 도면이다. 베이스 다이(2405)는 네트워크 인터페이스(2410) 및 프로그래머블 코어(2415)를 포함할 수 있다. 베이스 다이(2405)는 다수의 볼트 주변 로직들, 장치들, 또는 회로들(2420)을 더 포함할 수 있다. 각 볼트 주변 (로직)(2420)은 버퍼(2425), 하나 이상의 ALU들(2430), 스위치(210), 컨트롤러(2125), 및/또는 하나 이상의 TSV들(2120)을 포함할 수 있다. 볼트 주변 (로직)들 각각은(예를 들어, 2420) 해당 볼트(예를 들어, 도 18의 Vault[1])와 관련될 수 있고, 그리고 지원하는 버퍼링, 프로세싱, 및 스위칭 서비스들을 해당 볼트에 제공할 수 있다.
도 20은 패시브 실리콘 인터포저(2505), 및 그곳에 배치되는 다수의 큐브들(예를 들어, 2205)을 포함하는 텐서 계산 데이터플로우 가속기(2500)의 예시적인 블록도이다. 큐브들(예를 들어, 2205)은 교차하는(crisscrossing; 또는 십자형) 화살표들에 의해 도시된 바와 같이, 서로 통신할 수 있다.
도 21은 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기(2600)의 예시적인 블록도이다. 텐서 계산 데이터플로우 가속기(2600)는 DRAM 뱅크(2605), 데이터 버퍼(2610), 제 1 피승수 버퍼(2615), 멀티플렉서와 같은 선택기(2620), 입력 FIFO(first-in-first-out; 2625), 제 2 피승수 버퍼(2630), 다수의 MAC들(예를 들어, 2635), 및 출력 FIFO(2640)를 포함할 수 있다.
텐서 계산 데이터플로우 가속기(2600)는 하나 이상의 계산 맵핑 연산들(동작들)을 수행할 수 있다. 원(1)에 의해 표시된 첫 번째 단계에서, A-벡터는 로컬 DRAM 뱅크(2605)로부터 읽혀질 수 있고 데이터 버퍼(2610)에 저장될 수 있다. 원(2)에서, A-벡터는 피승수 버퍼(2630)에 복사 및 저장될 수 있다. 원(3)에 의해 표시된 세 번째 단계에서, B-벡터는 로컬 DRAM 뱅크(2605)로부터 읽힐 수 있고 데이터 버퍼(2610)에 저장될 수 있다. 원(4)에서, B-벡터는 피승수 버퍼(2615)에 복사 및 저장될 수 있다. 원(5)에서, 스칼라-벡터 곱셈은 주어진 PE로부터 오는 입력, 그리고 다음 PE로 전달되는 부분 결과들 등들을 이용하여, MAC들(예를 들어, 2635)을 이용하여 여러 번 수행될 수 있다. 수직 점선들(예를 들어, 2650)은 멀티플렉서(2620)를 경유하여 피승수 버퍼(2615)로부터 수신되는 행렬 데이터의 입력 방향을 나타낸다. 수직 실선들(예를 들어, 2655)은 부분 합들이 MAC들(예를 들어, 2635)에 걸쳐 전파되고 누산됨에 따른 부분 합들의 플로우 방향을 나타낸다. MAC들(2635)의 어레이는 임의의 적합한 높이 및 폭을 가질 수 있음이 이해될 것이다.
도 22는 본문에서 게시된 일부 실시 예들에 따른 순방향(forward) 전파 데이터 레이아웃 및 데이터플로우(2700)의 예시적인 블록도이다. 데이터 레이아웃 및 데이터플로우(2700)는 출력 행렬(2705)을 포함할 수 있다. 출력 행렬(2705)은 예시적인 부분 벡터(2710) 및 부분 벡터(2715), 그리고 관련된 외적 연산(2720)을 도시한다. 다수의 PG들(PG[1], PG[2] 등)을 포함할 수 있는 입력 행렬(2725)이 도시된다. PG들 각각은 다수의 PE들(PE[1], PE[2] 등)을 포함할 수 있다. 가중치 행렬(2730)이 또한 도시된다. 가중치 행렬(2730)은 다수의 PG들(PG[1], PG[2] 등)을 포함할 수 있다. 가중치 행렬(2730)은 각각이 다수의 PG들을 포함하는 하나 이상의 계산 그룹들(예를 들어, CG[1])을 포함할 수 있다. PG들 각각은 다수의 PE들(PE[1], PE[2] 등)을 포함할 수 있다. 일부 실시 예들에서, PG 당 8개의 PE들이 있다. 연산들의 출력 순서(2735)가 도시된다. 예를 들어, 외적 연산들(2720)로부터의 출력들은 출력 행렬(2705)을 통해 사형 방식으로 전파할 수 있다. CG가 최종 결과의 타일(예를 들어, 칸(2740))을를 생성한 이후에, 최종 결과의 타일은 최종 감소를 위해 베이스 다이(예를 들어, 도 19의 2405)로 스트리밍될 수 있다. 모든 부분 결과들이 동일한 채널에서 감소된 이후에, 부분 결과들은 후술하는 바와 같이, 채널들에 걸쳐 결합될 수 있다.
도 23은 본문에서 게시된 일부 실시 예들에 따른 서로 연결된 다수의 프로세싱 그룹들(예를 들어, PG[1], PG[2])을 포함하는 계산 그룹(예를 들어, CG[1])의 예시적인 블록도이다. 예를 들어, 각 PG는 다수의 PE들(PE[1] 내지 PE[8])을 포함할 수 있다. 하나의 PG(예를 들어, PG[1])로부터 하나의 PE(예를 들어, PE[8])의 출력은 다른 PG(예를 들어, PG[2])의 다른 PE(예를 들어, PE[1])의 입력으로 입력(제공)될 수 있다. 따라서, 행렬 데이터는 처리 및 누산될 수 있다.
도 24는 본문에서 게시된 일부 실시 예들에 따른 텐서 계산 데이터플로우 가속기(예를 들어, 도 21의 2600)의 다수의 큐브들(예를 들어, CUBE[1], CUBE[2])의 예시적인 블록도이다. 각 큐브(예를 들어, CUBE[1], CUBE[2])는 다수의 계산 그룹들(예를 들어, CG[1], CG[2] 등)을 포함할 수 있다. 각 계산 그룹은 행렬 데이터를 볼트(예를 들어, Vault[1], Vault[2] 등)에 입력하여 원(1)에서 도시된 바와 같이, 행렬 데이터가 해당 볼트로의 감소 동작에서 감소된다. 원(2)에서, 행렬 데이터는 하나의 볼트(예를 들어, Vault[1])에서 다른 볼트(예를 들어, Vault[2])로 합쳐지고 감소된다. 원(3)에서, 행렬 데이터는 큐브 교차(cross-cube) 누산 동작에서 CUBE[2]로부터의 볼트(예를 들어, Vault[4])로 합쳐지고 감소된다. 이것은 O(log2(numberCG)) 감소 라운드(round)들의 최대 레이턴시를 갖고, 그리고 이 프로세스는 최종 결과들 의 출력 타일들이 점진적으로 생성됨에 따라 최종 결과들의 출력 타일들과 완전히 파이프라인화되기 때문에, 성능 오버헤드는 최소이고 실질적으로 무시될 수 있다.
도 25 내지 도 27은 본문에 게시된 일부 실시 예들에 따른 역방향 전파 데이터 레이아웃 및 데이터플로우(3000)의 예시적인 블록도들이다. 역방향 전파 데이터 레이아웃 및 데이터플로우(3000)는 다수의 입력 데이터 DRAM 뱅크들(예를 들어, Input Data Bank[1], Input Data Bank[2] 등)을 포함할 수 있다. 역방향 전파 데이터 레이아웃 및 데이터플로우(3000)는 출력 데이터 뱅크(3015)를 더 포함할 수 있다. 역방향 전파 데이터 레이아웃 및 데이터플로우(3000)는 다수의 PG들(예를 들어, PG[1] 및 PG[2])을 더 포함할 수 있고, 각 PG는 다수의 PE들(예를 들어, PE[1], PE[2] 등)을 포함한다. 점선들(3005)은 부분 결과 누산을 나타내고, 그리고 실선들(3010)은 입력 데이터 브로드캐스팅(broadcasting)을 나타낸다. 다시 말해, 입력 행렬 데이터는 입력 데이터 뱅크들(예를 들어, Input Data Bank[1], Input Data Bank[2] 등)로부터 선들(3010)을 경유하여 수신될 수 있고 PE들(예를 들어, PE[1], PE[2] 등)로 제공될 수 있다. PE들은 입력 행렬 데이터를 이용할 수 있어 곱셈 및 덧셈 연산들을 수행할 수 있고, 그 다음 부분 결과들은 선들(3005)을 따라 누산(누적)될 수 있다.
다음은 본문에서 게시된 일부 실시 예들에 따른 순방향 데이터 레이아웃 소프트웨어 분할 기술의 의사 코드 예시이다.
Figure pat00001
다음은 본문에서 게시된 일부 실시 예들에 따른 역방향 데이터 레이아웃의 의사 코드 예시이다.
Figure pat00002
다음은 본문에서 게시된 일부 실시 예들에 따른 순방향 계산 스케줄링 소프트웨어 스케줄링 기술의 의사 코드 예시이다.
Figure pat00003
다음은 본문에서 게시된 일부 실시 예들에 따른 역방향 계산 스케줄링의 의사 코드 예시이다.
Figure pat00004
병렬 처리는 공간적으로 그리고 일시적으로 달성될 수 있다. 다시 말해, 다수의 임시의 프로세싱 사이클들 중 주어진 프로세싱 사이클을 위해, 행렬 데이터는 다수의 뱅크들에 의해 병렬로(동시에) 처리될 수 있다. 각 새로운 프로세싱 사이클은 다수의 상이한 뱅크들에 의해 병렬로 처리되는 행렬 데이터를 가질 수 있다. 따라서, 본문에서 게시된 텐서 계산 데이터플로우 가속기들의 성능은 증가될 수 있다.
따라서, 계산 로직은 각 DRAM 뱅크의 주변에 추가될 수 있고, 보통 패시브 구성 요소에서 스마트 프로세싱 엔진으로 전환한다. 각 볼트에서 베이스 로직 다이의 컨트롤러는 데이터 접근 및 계산 스케줄링을 제어할 수 있다. 주 계산 자원들(예를 들어, MAC 어레이)은 DRAM 뱅크에 대해 주변 사이드 로직(peripheral side logic)으로서 DRAM 다이 상에 배치될 수 있다. PE들을 이용하는 시스톨릭 MAC 어레이는 처리 및 누산될 행렬 데이터를 야기한다. 전치(transpose) 엔진은 역방향 경로들에 사용될 수 있다. 계산 로직(예를 들어, MAC 어레이)은 DRAM 뱅크에 인접하기 때문에, 메모리는 분산되고, 그리고 역방향에 적합한 메모리 레이아웃 및 부분 전치 레이아웃이 가능해진다. 3D 적층 DRAM 기술은 병렬 처리를 향상시키는데 사용될 수 있다.
본문에서 게시된 실시 예들은 메모리 제약적(memory-bound)이고 계산 집약적(compute-intensive)인 커널들을 대상으로 한 강한 계산 능력을 갖는다. 따라서 MAC 어레이 및 관련된 구성 요소들은 예를 들어, GPU 계산 구역으로부터 분리된, DRAM 뱅크 옆에 집적된 계산 로직을 갖는 PIM(processing-in-memory) 3D 적층 구조 내에 임베디드(embedded)될 수 있다. 행렬 곱셈 및 다른 프로세싱은 외부에서 일어나지만 DRAM 뱅크에 인접하고, 그렇게 함으로써 모든 읽기가 로컬 DRAM 뱅크로부터인 뱅크 레벨의 내부 고대역폭을 사용하게 한다. 본문에서 게시된 본 발명의 실시 예들은 부동 소수점 연산을 지원하고, 그리고 예를 들어, 인공 신경망 및 관련된 트레이닝에 특별히 유용하다.
본문에서 게시된 실시 예들은 딥러닝 트레이닝에서 대역폭 제한적인 부동 소수점 GEMM 연산들을 목표로 한다. 누산 차원(예를 들어, GEMM[M, K, N]에서 K 차원)에 대한 타일링을 수반하는 기술로, 동일한 뱅크에 대한 라이트 백이 필요하지 않고 읽기-쓰기 충돌이 발생하지 않는다. 모든 쓰기 동작들은 데이터플로우 파이프라인에서 다음 레벨로 전파된다. 모든 이전 레이어들의 출력은 다음 레이어들의 입력 뱅크이며, 이는 전체 행렬 데이터 이동을 감소시킨다. 본문에서 게시된 일부 실시 예들은 역전파 프로세스를 가능하게 하는 행렬 전치를 위한 데이터 레이아웃 및 하드웨어 지원을 포함한다.
본문에서 게시된 바와 같이, 로직 레이어들은 TSV들을 이용하여 서로 수직으로 통신하는 DRAM 다이들 사이에 또는 인접하여 적층될 수 있다. 하드웨어 효율(성)은 부동 소수점 곱셈 유닛들의 개수를 최소화함으로써 향상된다. 본문에서 게시된 PIM 구조는 부분 결과들이 시스톨릭 방식으로 PE들 간에서 전파되는 외적 프로세싱 엔진을 위한 분할 방법을 사용한다. DRAM 기반 룩업 테이블들은 부동 소수점 유닛들의 면적 오버헤드를 줄이는데 사용될 수 있다. 계층적 구조는 룩업 테이블 기반의 부동 소수점 유닛의 레이턴시를 감소시키는데 사용된다. 외적 계산 기술은 PE당 사용된다. 분할 및 스케줄링 알고리즘은 임의의 사이즈의 GEMM 연산들에 사용되어 성능 및 에너지 효율을 향상시킬 수 있다. 따라서, 부동 소수점 텐서 곱셈이 PIM 구조에서 제공된다. A DRAM 기반 룩업 테이블은 벡터 외적들을 구현하는데 사용될 수 있다. 시스톨릭 어레이 파이프라인 방식의 구조는 뱅크 간 연결에 사용될 수 있다. 주변 로직은 DRAM 뱅크들 외부에 그러나 인접하여 배치될 수 있어, DRAM 코어 로직이 변경될 필요는 없고, 그렇게 함으로써 본문에서 게시된 실시 예들은 구현하기에 매우 실질적이게 될 수 있다. DRAM 뱅크의 외부에 MAC 유닛들을 직접적으로 추가하는 것과 비교하여, DRAM 기반의 룩업 테이블은 상당한 면적 오버헤드를 절감할 수 있다. 베이스 로직 다이 상의 NDP 기술과 비교하여, 본문에서 게시된 실시 예들은 보다 높은 (TSV 레벨보다는 뱅크 레벨의) 내부 대역폭 및 보다 높은 계산 성능을 제공한다. 다수의 룩업 테이블 버퍼들은 긴 행 활성화 레이턴시 및 에너지 소모를 감소시키는데 사용될 수 있다.
전술한 방법들의 다양한 동작들(연산들)은 다양한 동작들(연산들)을 수행할 수 있는, 다양한 하드웨어 및/또는 소프트웨어 구성 요소(들), 회로들, 및/또는 모듈(들)과 같은 임의의 적합한 수단들에 의해 수행될 수 있다.
일부 실시 예들은 텐서 계산 데이터플로우 가속기 반도체 회로를 포함한다. 텐서 계산 데이터플로우 가속기 반도체 회로는 메모리 뱅크, 및 메모리 뱅크에 인접하게 배치되는 곱셈-덧셈 유닛들의 주변 어레이를 포함할 수 있다. 일부 실시 예들에서, 곱셈-덧셈 유닛들의 주변 어레이는 데이터 누산을 위해 곱셈-덧셈 유닛들의 어레이 중 하나의 곱셈-덧셈 유닛으로부터의 부분 출력 데이터가 곱셈-덧셈 유닛들의 어레이 중 다른 곱셈-덧셈 유닛으로 입력되는 파이프라인 방식의 데이터플로우 체인을 형성하도록 구성된다.
일부 실시 예들에서, 텐서 계산 데이터플로우 가속기 반도체 회로는 각각이 곱셈-덧셈 유닛들의 주변 어레이 중 곱셈-덧셈 유닛을 포함하는 프로세싱 엔진들의 주변 어레이를 포함할 수 있다. 일부 실시 예들에서, 프로세싱 엔진들 각각은 입력 버퍼, 부분 합 버퍼, 및 가중치 버퍼를 포함한다. 일부 실시 예들에서, 프로세싱 엔진들 각각의 가중치 버퍼는 초기화된 상태에서 가중치 행렬 벡터를 저장하도록 구성된다. 일부 실시 예들에서, 프로세싱 엔진들의 주변 어레이 중 프로세싱 엔진의 입력 버퍼는 스트리밍 방식으로 메모리 뱅크로부터 입력 행렬 벡터를 수신하도록 구성된다. 일부 실시 예들에서, 프로세싱 엔진의 곱셈-덧셈 유닛은 입력 행렬 벡터와 프로세싱 엔진의 가중치 버퍼에 저장된 가중치 행렬 벡터의 곱을 계산하도록 구성된다.
일부 실시 예들에서, 프로세싱 엔진들의 주변 어레이는 사형 방식으로 부분 합들을 전파하도록 구성되는 시스톨릭 어레이다. 일부 실시 예들에서, 프로세싱 엔진들의 주변 어레이는 스트리밍 방식으로 복수의 입력 행렬 벡터들을 수신하고, 그리고 부분 합들의 데이터플로우 방향에 수직인 방향으로 복수의 입력 행렬 벡터들을 전파시키도록 구성된다.
일부 실시 예들에서, 메모리 뱅크는 DRAM 메모리 뱅크이다. 회로는 복수의 채널들을 포함하는 NDP-DF(near-DRAM-processing dataflow) 가속기 유닛 다이를 더 포함한다. 일부 실시 예들에서, 채널들 각각은 사형 방식으로 배열되는 복수의 스마트 뱅크 유닛들을 포함한다. 일부 실시 예들에서, 스마트 뱅크 유닛들 각각은 DRAM 뱅크, 입력 버퍼, 시스톨릭 MAC 어레이, 및 출력 버퍼를 포함한다.
일부 실시 예들에서, 시스톨릭 MAC 어레이는 곱셈-덧셈 유닛들의 주변 어레이를 포함한다. 일부 실시 예들에서, NDP-DF 가속기 유닛 다이는 차례로 적층되는 복수의 NDP-DF 가속기 유닛 다이들 중 하나이다.
일부 실시 예들에서, 텐서 계산 데이터플로우 가속기 반도체 회로는 패시브 실리콘 인터포저, 패시브 실리콘 인터포저 상에 배치되는 프로세서, 및 프로세서에 인접하여 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 더 포함할 수 있다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들은 베이스 다이 위에 적층된다. 일부 실시 예들에서, 텐서 계산 데이터플로우 가속기 반도체 회로는 복수의 NDP-DF 가속기 유닛 다이들 및 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함한다. 일부 실시 예들에서, 하나 이상의 TSV들은 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를, 그리고 베이스 다이와 프로세서를 상호 연결하도록 구성된다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이는 프로세서로부터 계산을 오프로드(offload)하도록 구성된다.
일부 실시 예들에서, 텐서 계산 데이터플로우 가속기 반도체 회로는 패시브 실리콘 인터포저, 패시브 실리콘 인터포저 상에 배치되는 컨트롤러, 및 컨트롤러에 인접하여 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 더 포함할 수 있다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들은 베이스 다이 위에 적층된다. 일부 실시 예들에서, 텐서 계산 데이터플로우 가속기 반도체 회로는 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함한다. 일부 실시 예들에서, 하나 이상의 TSV들은 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를, 그리고 베이스 다이와 컨트롤러를 상호 연결하도록 구성된다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이는 텐서 계산 데이터플로우 가속기 반도체 회로로부터 분리된 호스트로부터 계산을 오프로드하도록 구성된다.
일부 실시 예들에 있어서, 복수의 적층된 NDP-DF 가속기 유닛 다이들과 베이스 다이는 병렬로 부분 출력 데이터를 처리하도록 구성된다. 일부 실시 예들에서, 복수의 적층된 NDP-DF 가속기 유닛 다이들과 베이스 다이는 역방향으로 부분 출력 데이터를 전파시키도록 구성된다. 일부 실시 예들에서, 복수의 적층된 NDP-DF 가속기 유닛 다이들과 베이스 다이는 부분 행렬 전치를 수행하도록 구성된다.
본문에서 게시된 일부 실시 예들은 GEMM 데이터플로우 가속기 반도체 회로를 포함한다. GEMM 데이터플로우 가속기 반도체 회로는 메모리 뱅크, 메모리 뱅크에 저장된 주변 룩업 테이블, 그리고 룩업 테이블로의 로우 어드레스로서 사용되는 제 1 벡터를 저장하도록 구성되는 제 1 벡터 버퍼를 포함할 수 있다. GEMM 데이터플로우 가속기 반도체 회로는 룩업 테이블로의 컬럼 어드레스로서 사용되는 제 2 벡터를 저장하도록 구성되는 제 2 벡터 버퍼를 더 포함할 수 있다. GEMM 데이터플로우 가속기 반도체 회로는 하나 이상의 룩업 테이블 엔트리들을 수신하도록 구성되는 하나 이상의 룩업 테이블 버퍼들을 더 포함할 수 있다. 일부 실시 예들에서, 제 2 벡터 버퍼는 제 2 벡터를 하나 이상의 룩업 테이블 버퍼들로 스트리밍하도록 구성되고, 그리고 하나 이상의 룩업 테이블 버퍼들은 룩업 테이블로부터 하나 이상의 룩업 테이블 엔트리들을 저장하도록 구성된다. 일부 실시 예들에서, 하나 이상의 룩업 테이블 버퍼들은 곱셈 연산을 수행하지 않고 제 1 벡터와 제 2 벡터의 곱을 결정하도록 구성된다.
일부 실시 예들에서, 곱은 제 1 곱이고, 그리고 GEMM 회로는 제 1 곱과 제 2 곱을 더하도록 구성되는 하나 이상의 덧셈기들, 그리고 제 1 곱과 제 2 곱의 합의 결과를 저장하도록 구성되는 출력 버퍼를 더 포함한다. 일부 실시 예들에서, 하나 이상의 룩업 테이블 버퍼들은 곱셈 연산을 수행하지 않고, 룩업 테이블로의, 각각, 컬럼 어드레스 및 로우 어드레스로서, 제 1 벡터의 값과 제 2 벡터의 값을 이용하여 제 1 곱을 결정하도록 구성된다. 일부 실시 예들에서, 하나 이상의 룩업 테이블 버퍼들은 곱셈 연산을 수행하지 않고, 룩업 테이블로의, 각각, 컬럼 어드레스 및 로우 어드레스로서, 제 3 벡터의 값과 제 4 벡터의 값을 이용하여 제 2 곱을 결정하도록 구성된다.
일부 실시 예들에서, 메모리 뱅크, 주변 룩업 테이블, 제 1 벡터 버퍼, 하나 이상의 룩업 테이블 버퍼들, 및 제 2 벡터 버퍼는 계층적 룩업 구조를 형성하여 레이턴시를 감소시킨다. 일부 실시 예들에서, GEMM 데이터플로우 가속기 반도체 회로는 하나 이상의 룩업 테이블 버퍼들을 포함하는 복수의 룩업 테이블 버퍼들을 더 포함한다. 일부 실시 예들에서, 복수의 룩업 테이블 버퍼들은 해당 복수의 행렬 벡터들을 저장하여 메모리 뱅크에 저장된 룩업 테이블을 접근하지 않고 그리고 곱셈 연산을 수행하지 않으면서 복수의 행렬 벡터들의 복수의 곱들을 결정하도록 구성된다.
일부 실시 예들에서, GEMM 데이터플로우 가속기 반도체 회로는 스마트 뱅크 유닛들의 주변 어레이를 더 포함한다. 일부 실시 예들에서, 스마트 뱅크 유닛들의 주변 어레이는 데이터 누산을 위해 스마트 뱅크 유닛들의 어레이 중 하나의 스마트 뱅크 유닛으로부터의 부분 출력 데이터가 스마트 뱅크 유닛들의 어레이 중 다른 스마트 뱅크 유닛으로 입력되는 파이프라인 방식의 데이터플로우 체인을 형성하도록 구성된다.
일부 실시 예들에서, 스마트 뱅크 유닛들 각각은 메모리 뱅크, 룩업 테이블, 복수의 룩업 테이블 버퍼들, 하나 이상의 덧셈기들, 및 출력 버퍼를 포함한다. 일부 실시 예들에서, 복수의 스마트 뱅크 유닛들 중 제 1 스마트 뱅크 유닛은 제 1 스마트 뱅크 유닛에 인접한 제 2 스마트 뱅크 유닛으로 곱을 출력하도록 구성된다. 일부 실시 예들에서, 제 2 스마트 뱅크 유닛은 제 1 스마트 뱅크 유닛으로부터 수신된 곱을 저장하도록 구성된다.
일부 실시 예들에서, 곱은 제 1 곱이고, 그리고 제 2 스마트 뱅크 유닛은 스트리밍 방식으로 메모리 뱅크로부터 제 3 벡터를 수신하도록 구성된다. 일부 실시 예들에서, 제 2 스마트 뱅크 유닛의 하나 이상의 룩업 테이블 버퍼들은 곱셈 연산을 수행하지 않고 룩업 테이블을 이용하여 제 3 벡터에 기초하여 제 2 곱을 결정하도록 구성된다. 일부 실시 예들에서, 제 2 스마트 뱅크 유닛의 하나 이상의 덧셈기들은 제 1 곱과 제 2 곱의 합을 계산하도록 구성된다. 일부 실시 예들에서, 제 2 스마트 뱅크 유닛의 출력 버퍼는 제 1 곱과 제 2 곱의 합을 저장하도록 구성된다.
일부 실시 예들에서, 제 2 스마트 뱅크 유닛은 제 1 곱과 제 2 곱의 합을 스마트 뱅크 유닛들의 주변 어레이 중 제 3 스마트 뱅크 유닛으로 출력하도록 구성된다. 일부 실시 예들에서, 제 3 스마트 뱅크 유닛은 제 2 스마트 뱅크 유닛에 인접하다. 일부 실시 예들에서, 제 3 스마트 뱅크 유닛은 합을 저장하도록 구성된다.
일부 실시 예들에서, 스마트 뱅크 유닛들의 주변 어레이는 사형 방식으로 부분 합들을 전파하도록 구성된다. 일부 실시 예들에서, 스마트 뱅크 유닛들의 주변 어레이는 스트리밍 방식으로 복수의 입력 행렬 벡터들을 수신하고, 그리고 부분 합들의 데이터플로우 방향에 수직한 방향으로 복수의 입력 행렬 벡터들을 전파하도록 구성된다.
일부 실시 예들에서, 메모리 뱅크는 DRAM 메모리 뱅크이고, 회로는 복수의 채널들을 포함하는 NDP-DF(near-DRAM-processing dataflow) 가속기 유닛 다이를 더 포함한다. 일부 실시 예들에서, 채널들 각각은 사형 방식으로 배열되는 스마트 뱅크 유닛들의 주변 어레이를 포함한다. 일부 실시 예들에서, 스마트 뱅크 유닛들 각각은 DRAM 뱅크, 룩업 테이블, 복수의 룩업 테이블 버퍼들, 하나 이상의 덧셈기들, 및 출력 버퍼를 포함한다.
일부 실시 예들에서, NDP-DF 가속기 유닛 다이는 차례로 적층되는 복수의 NDP-DF 가속기 유닛 다이들 중 하나이다. 일부 실시 예들에서, GEMM 회로는 패시브 실리콘 인터포저, 패시브 실리콘 인터포저 상에 배치되는 프로세서, 및 프로세서에 인접하여 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 더 포함한다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들은 베이스 다이 위에 적층된다.
일부 실시 예들에서, GEMM 회로는 복수의 NDP-DF 가속기 유닛 다이들 및 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함한다. 일부 실시 예들에서, 하나 이상의 TSV들은 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를, 그리고 베이스 다이와 프로세서를 상호 연결하도록 구성된다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이는 프로세서로부터 계산을 오프로드하도록 구성된다.
일부 실시 예들에서, GEMM 데이터플로우 가속기 반도체 회로는 패시브 실리콘 인터포저, 패시브 실리콘 인터포저 상에 배치되는 컨트롤러, 및 컨트롤러에 인접하여 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 더 포함한다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들은 베이스 다이 위에 적층된다.
일부 실시 예들에서, GEMM 데이터플로우 가속기 반도체 회로는 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함한다. 일부 실시 예들에서, 하나 이상의 TSV들은 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이를, 그리고 베이스 다이와 컨트롤러를 상호 연결하도록 구성된다. 일부 실시 예들에서, 복수의 NDP-DF 가속기 유닛 다이들과 베이스 다이는 텐서 계산 데이터플로우 가속기 반도체 회로로부터 분리된 호스트로부터 계산을 오프로드하도록 구성된다. 일부 실시 예들에서, 복수의 적층된 NDP-DF 가속기 유닛 다이들과 베이스 다이는 병렬로 부분 출력 데이터를 처리하도록 구성된다.
본문에서 게시된 실시 예들과 관련하여 설명된 방법 또는 알고리즘 및 기능들의 블록들 또는 단계들은 하드웨어 방식, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들 둘 간의 조합으로 직접적으로 구현될 수 있다. 소프트웨어로 구현되면, 기능들은 실재의(tangible), 비일시적(non-transitory) 컴퓨터 읽기 가능 매체 상의 하나 이상의 명령어들 또는 코드로서 저장되거나 전송될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 이동식 디스크(removable disk), CD ROM, 또는 기술 분야에 알려진 임의의 다른 형태의 저장 매체에 위치할 수 있다.
다음 논의는 본 발명의 특정한 양상들이 구현될 수 있는 적합한 기계 또는 기계들의 간단하고, 일반적인 설명을 제공하도록 의도된다. 보통, 머신 또는 머신들은 프로세서들, 메모리, 예를 들어, RAM, ROM, 또는 다른 상태 보존 매체, 저장 장치들, 비디오 인터페이스, 및 입력/출력 인터페이스 포트들이 부착된 시스템 버스를 포함한다. 기계 또는 기계들은 적어도 일부는 다른 기계로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐만 아니라 키보드들, 마우스 등과 같은 종래의 입력 장치들로부터의 입력에 의해 제어될 수 있다. 본문에서 사용되는 바와 같이, "기계" 용어는 단일 기계, 가상 기계, 또는 기계들, 가상 기계들, 또는 함께 동작하는 장치들과 통신하도록 연결된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예를 들어 자동차들, 기차들, 택시들 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐만 아니라, 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블(portable) 컴퓨터들, 핸드헬드(handheld) 장치들, 전화들, 태블릿들(tablets) 등과 같은 컴퓨팅 장치들을 포함한다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 로직 장치들 또는 어레이들, ASIC(Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 연결을 통해서와 같이 하나 이상의 원격 기계들에 대한 하나 이상의 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN(local area networks), WAN(wide area networks) 등과 같은 물리적 및/또는 논리적 네트워크를 경유하여 상호 연결될 수 있다. 당업자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 545.11, Bluetooth®, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용할 수 있음을 이해할 것이다.
본 발명의 실시 예들은 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 유형들 또는 저레벨 하드웨어 컨텍스트들을 정의하는 것을 야기하는 함수들, 절차들, 데이터 구조들, 어플리케이션 프로그램들 등을 포함하는 관련된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 관련된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 저장 장치들, 그리고 하드 드라이브들, 플로피 디스크들, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 관련된 저장 매체에 저장될 수 있다. 관련된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전파된 신호들 등의 형태로 전달되고, 압축되거나 암호화된 포맷으로 사용될 수 있다. 관련된 데이터는 분산된 환경에서 사용될 수 있으며, 기계 액세스에 대해 국부적 그리고/또는 원격으로 저장될 수 있다.
도시된 실시 예들을 참조하여 설명되고 도시된 본 발명의 원리들을 가지면, 도시된 실시 예들이 이러한 원리들로부터 벗어나지 않으면서 배열 및 세부 사항에서 수정될 수 있고 임의의 원하는 방식으로 결합될 수 있음이 이해될 것이다. 그리고 비록 앞선 논의가 특정한 실시 예들에 집중하였지만, 다른 구성들이 고려된다 구체적으로, "본 발명의 실시 예에 따른"과 같은 표현들 또는 본문에서 사용된 유사한 표현들에도 불구하고, 이들 문구들은 일반적으로의 실시 예 가능성들인 것으로 여겨지며, 본 발명을 구체적인 실시 예 구성들로 제한하는 것으로 의도되지 않는다. 본문에서 사용된 바와 같이, 이들 용어들은 다른 실시 예들로 결합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
본 발명의 실시 예들은 하나 이상의 프로세서들에 의해 실행 가능한 명령어들을 포함하는 비일시적 기계 읽기 가능한 매체를 포함할 수 있고, 명령어들은 본문에서 게시된 본 발명의 요소들을 수행하는 명령어들을 포함한다.
전술한 예시적인 실시 예들은 본 발명을 제한하려는 것으로 해석되지 않는다. 비록 몇 가지 실시 예들이 설명되었으나, 당업자는 본 게시의 신규한 교시들과 장점들로부터 실질적으로 벗어나지 않으면서 이들 실시 예들에 대한 많은 수정들이 가능하다는 것을 손쉽게 이해할 것이다. 따라서, 모든 이러한 수정들은 청구항들에서 정의되는 본 발명의 범위 이내에 포함되는 것으로 의도된다.

Claims (20)

  1. 메모리 뱅크; 및
    상기 메모리 뱅크와 통신하는 프로세싱 유닛들의 주변 어레이를 포함하되,
    상기 프로세싱 유닛들의 주변 어레이는 데이터 누산을 위해 상기 프로세싱 유닛들의 주변 어레이 중 제 1 프로세싱 유닛으로부터의 부분 출력 데이터가 상기 프로세싱 유닛들의 주변 어레이 중 다른 프로세싱 유닛으로 입력되는 파이프라인 방식의 데이터플로우 체인(chain)을 형성하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  2. 제 1 항에 있어서,
    상기 프로세싱 유닛들의 주변 어레이는 곱셈-덧셈 유닛들의 어레이를 포함하고;
    상기 제 1 프로세싱 유닛은 제 1 곱셈-덧셈 유닛이고;
    상기 제 2 프로세싱 유닛은 제 2 곱셈-덧셈 유닛이고;
    상기 곱셈-덧셈 유닛들의 어레이는 상기 메모리 뱅크에 인접하게 배치되고; 그리고
    상기 텐서 계산 데이터플로우 가속기 반도체 회로는 각각이 상기 곱셈-덧셈 유닛들의 어레이 중 곱셈-덧셈 유닛을 포함하는 프로세싱 엔진들의 주변 어레이를 더 포함하는 텐서 계산 데이터플로우 가속기 반도체 회로.
  3. 제 2 항에 있어서,
    상기 프로세싱 엔진들 각각은:
    입력 버퍼;
    부분 합 버퍼; 및
    가중치 버퍼를 포함하는 텐서 계산 데이터플로우 가속기 반도체 회로.
  4. 제 3 항에 있어서,
    상기 프로세싱 엔진들 각각의 상기 가중치 버퍼는 초기화된 상태에서 가중치 행렬 벡터를 저장하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  5. 제 4 항에 있어서,
    상기 프로세싱 엔진들의 주변 어레이 중 프로세싱 엔진의 상기 입력 버퍼는 스트리밍 방식으로 상기 메모리 뱅크로부터 입력 행렬 벡터를 수신하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  6. 제 5 항에 있어서,
    상기 프로세싱 엔진의 상기 곱셈-덧셈 유닛은 상기 입력 행렬 벡터 및 상기 프로세싱 엔진의 상기 가중치 버퍼에 저장된 상기 가중치 행렬 벡터의 곱을 계산하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  7. 제 6 항에 있어서,
    상기 프로세싱 엔진은 제 1 프로세싱 엔진이고; 그리고
    상기 제 1 프로세싱 엔진은 상기 제 1 프로세싱 엔진에 인접한 제 2 프로세싱 엔진으로 상기 곱을 출력하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  8. 제 7 항에 있어서,
    상기 제 2 프로세싱 엔진은 상기 제 2 프로세싱 엔진의 상기 부분 합 버퍼에 상기 곱을 저장하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  9. 제 8 항에 있어서,
    상기 입력 행렬 벡터는 제 1 입력 행렬 벡터이고;
    상기 곱은 제 1 곱이고;
    상기 제 2 프로세싱 엔진의 상기 입력 버퍼는 상기 스트리밍 방식으로 상기 메모리 뱅크로부터 제 2 입력 행렬 벡터를 수신하도록 구성되고;
    상기 제 2 프로세싱 엔진의 상기 곱셈-덧셈 유닛은 상기 제 2 입력 행렬 벡터 및 상기 제 2 프로세싱 엔진의 상기 가중치 버퍼에 저장된 상기 가중치 행렬 벡터의 제 2 곱을 계산하도록 구성되고; 그리고
    상기 제 2 프로세싱 엔진의 상기 곱셈-덧셈 유닛은 상기 제 1 곱과 상기 제 2 곱의 합을 계산하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  10. 제 9 항에 있어서,
    상기 제 2 프로세싱 엔진은 상기 제 1 곱과 상기 제 2 곱의 상기 합을 상기 프로세싱 엔진들의 주변 어레이 중 상기 제 2 프로세싱 엔진에 인접하는 제 3 프로세싱 엔진으로 출력하도록 구성되고; 그리고
    상기 제 3 프로세싱 엔진은 상기 합을 상기 제 3 프로세싱 엔진의 상기 부분 합 버퍼에 저장하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  11. 제 10 항에 있어서,
    상기 프로세싱 엔진들의 주변 어레이는 사형 방식으로 부분 합들을 전파하도록 구성되는 시스톨릭 어레이고; 그리고
    상기 프로세싱 엔진들의 주변 어레이는 스트리밍 방식으로 복수의 입력 행렬 벡터들을 수신하고, 그리고 상기 부분 합들의 데이터 플로우 방향과 수직한 방향으로 상기 복수의 입력 행렬 벡터들을 전파시키도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  12. 제 3 항에 있어서,
    상기 메모리 뱅크는 DRAM 메모리 뱅크이고, 상기 회로는:
    복수의 채널들을 포함하는 NDP-DF(near-DRAM-processing dataflow) 가속기 유닛 다이를 포함하고;
    상기 채널들 각각은 사형으로 배열되는 복수의 스마트 뱅크 유닛들을 포함하고; 그리고
    상기 스마트 뱅크 유닛들 각각은 DRAM 뱅크, 입력 버퍼, 시스톨릭 MAC 어레이, 및 출력 버퍼를 포함하는 텐서 계산 데이터플로우 가속기 반도체 회로.
  13. 제 12 항에 있어서,
    상기 시스톨릭 MAC 어레이는 상기 곱셈-덧셈 유닛들의 어레이를 포함하고; 그리고
    상기 NDP-DF 가속기 유닛 다이는 차례로 적층된 복수의 NDP-DF 가속기 유닛 다이들 중 하나인 텐서 계산 데이터플로우 가속기 반도체 회로.
  14. 제 13 항에 있어서,
    패시브 실리콘 인터포저;
    패시브 실리콘 인터포저 상에 배치되는 프로세서; 및
    상기 프로세서에 인접하여 상기 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 더 포함하고,
    상기 복수의 NDP-DF 가속기 유닛 다이들은 상기 베이스 다이 위에 적층되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  15. 제 14 항에 있어서:
    상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함하고,
    상기 하나 이상의 TSV들은 상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이를, 그리고 상기 베이스 다이와 상기 프로세서를 상호 연결하도록 구성되고; 그리고
    상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이는 상기 프로세서로부터 계산을 오프로드하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  16. 제 13 항에 있어서,
    패시브 실리콘 인터포저;
    상기 패시브 실리콘 인터포저 상에 배치되는 컨트롤러; 및
    상기 컨트롤러에 인접하여 상기 패시브 실리콘 인터포저 상에 배치되는 베이스 다이를 포함하고,
    상기 복수의 NDP-DF 가속기 유닛 다이들은 상기 베이스 다이 위에 적층되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  17. 제 16 항에 있어서,
    상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이를 관통하여 배치되는 하나 이상의 TSV(through silicon via)들을 더 포함하고,
    상기 하나 이상의 TSV들은 상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이를, 그리고 상기 베이스 다이와 상기 컨트롤러를 상호 연결하도록 구성되고; 그리고
    상기 복수의 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이는 상기 텐서 계산 데이터플로우 가속기 반도체 회로로부터 분리된 호스트로부터 계산을 오프로드하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  18. 제 13 항에 있어서,
    상기 복수의 적층된 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이는 상기 부분 출력 데이터를 병렬로 처리하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  19. 제 13 항에 있어서,
    상기 복수의 적층된 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이는 부분 출력 데이터를 역방향으로 전파하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
  20. 제 13 항에 있어서,
    상기 복수의 적층된 NDP-DF 가속기 유닛 다이들과 상기 베이스 다이는 부분 행렬 전치를 수행하도록 구성되는 텐서 계산 데이터플로우 가속기 반도체 회로.
KR1020190126481A 2018-12-07 2019-10-11 텐서 계산 데이터플로우 가속기 반도체 회로 KR20200070089A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862777046P 2018-12-07 2018-12-07
US62/777,046 2018-12-07
US16/388,863 2019-04-18
US16/388,863 US20200183837A1 (en) 2018-12-07 2019-04-18 Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning

Publications (1)

Publication Number Publication Date
KR20200070089A true KR20200070089A (ko) 2020-06-17

Family

ID=70971724

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190126481A KR20200070089A (ko) 2018-12-07 2019-10-11 텐서 계산 데이터플로우 가속기 반도체 회로
KR1020190126467A KR102511911B1 (ko) 2018-12-07 2019-10-11 Gemm 데이터플로우 가속기 반도체 회로

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020190126467A KR102511911B1 (ko) 2018-12-07 2019-10-11 Gemm 데이터플로우 가속기 반도체 회로

Country Status (5)

Country Link
US (3) US11100193B2 (ko)
JP (2) JP7209616B2 (ko)
KR (2) KR20200070089A (ko)
CN (2) CN111291859B (ko)
TW (2) TWI789547B (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200070088A (ko) * 2018-12-07 2020-06-17 삼성전자주식회사 Gemm 데이터플로우 가속기 반도체 회로
KR20230014614A (ko) * 2021-07-21 2023-01-30 고려대학교 산학협력단 인메모리 연산을 수행하는 메모리 장치 및 그 방법
WO2023075146A1 (ko) * 2021-10-28 2023-05-04 주식회사 사피온코리아 컴퓨팅 시스템 및 이를 위한 전치 방법
US12032829B2 (en) 2021-07-21 2024-07-09 Samsung Electronics Co., Ltd. Memory device performing in-memory operation and method thereof
US12102451B2 (en) 2020-10-21 2024-10-01 Skaichips Co., Ltd. Biosignal processing apparatus based on intelligent control

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061738B2 (en) * 2019-02-28 2021-07-13 Movidius Limited Methods and apparatus to store and access multi dimensional data
KR102425909B1 (ko) * 2019-07-30 2022-07-29 한국과학기술원 뉴럴 네트워크 가속기 시스템 및 그것의 동작 방법
US11947959B2 (en) * 2019-09-10 2024-04-02 Micron Technology, Inc. Re-using processing elements of an artificial intelligence processor
US11841792B1 (en) 2019-12-09 2023-12-12 Amazon Technologies, Inc. Instructions with multiple memory access modes
US11334358B2 (en) * 2019-12-09 2022-05-17 Amazon Technologies, Inc. Hardware accelerator having reconfigurable instruction set and reconfigurable decoder
US11429310B2 (en) * 2020-03-06 2022-08-30 Samsung Electronics Co., Ltd. Adjustable function-in-memory computation system
CN113362878A (zh) 2020-03-06 2021-09-07 三星电子株式会社 用于存储器内计算的方法和用于计算的系统
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11887647B2 (en) 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
US11461651B2 (en) * 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11687336B2 (en) * 2020-05-08 2023-06-27 Black Sesame Technologies Inc. Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
WO2021241048A1 (ja) * 2020-05-28 2021-12-02 パナソニックIpマネジメント株式会社 Aiチップ
WO2022000101A1 (en) * 2020-06-28 2022-01-06 Huawei Technologies Co., Ltd. Method to avoid memory bank conflicts and pipeline conflicts in tensor memory layout
US20220019407A1 (en) * 2020-07-14 2022-01-20 Taiwan Semiconductor Manufacturing Company, Ltd. In-memory computation circuit and method
US11403111B2 (en) * 2020-07-17 2022-08-02 Micron Technology, Inc. Reconfigurable processing-in-memory logic using look-up tables
US20220044101A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Collaborative sensor data processing by deep learning accelerators with integrated random access memory
US11755523B2 (en) * 2020-08-20 2023-09-12 Rambus Inc. Stacked device system
US11960438B2 (en) 2020-09-08 2024-04-16 Rambus Inc. Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture
US11355170B1 (en) 2020-12-16 2022-06-07 Micron Technology, Inc. Reconfigurable processing-in-memory logic
US20210150328A1 (en) * 2021-01-27 2021-05-20 Intel Corporation Hierarchical Hybrid Network on Chip Architecture for Compute-in-memory Probabilistic Machine Learning Accelerator
US11748062B2 (en) 2021-01-28 2023-09-05 Macronix International Co., Ltd. Multiplication and addition operation device and control method for multiplication and addition operation thereof
US20220308833A1 (en) * 2021-03-24 2022-09-29 Intel Corporation Multiplication circuit based on constituent partial product lookup table
US11656909B2 (en) 2021-04-15 2023-05-23 National Taiwan University Tensor accelerator capable of increasing efficiency of data sharing
US11693796B2 (en) * 2021-05-31 2023-07-04 Arm Limited Multi-dimensional data path architecture
US20220405556A1 (en) * 2021-06-17 2022-12-22 International Business Machines Corporation Single function to perform combined matrix multiplication and bias add operations
CN117501250A (zh) * 2021-09-22 2024-02-02 华为技术有限公司 用于矩阵计算加速的方法和装置
CN114356840A (zh) * 2021-12-15 2022-04-15 北京苹芯科技有限公司 具有存内/近存计算模块的SoC系统
US11630605B1 (en) * 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests
KR20240083233A (ko) * 2022-12-02 2024-06-12 삼성전자주식회사 메모리 장치 및 그 동작 방법
CN115860079B (zh) * 2023-01-30 2023-05-12 深圳市九天睿芯科技有限公司 神经网络加速装置、方法、芯片、电子设备及存储介质
KR20240136078A (ko) * 2023-03-06 2024-09-13 주식회사 사피온코리아 벡터 프로세서 및 그의 동작 방법
CN118332239B (zh) * 2024-04-16 2024-10-15 大连理工大学 基于循环优化技术的通用卷积运算加速器架构的设计与实现方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2698675B2 (ja) * 1989-12-11 1998-01-19 大日本印刷株式会社 カラー画像情報の符号化及び再生方法
JP3182171B2 (ja) 1991-08-29 2001-07-03 富士通株式会社 光モジュール
JPH07248841A (ja) * 1994-03-09 1995-09-26 Mitsubishi Electric Corp 非線形関数発生装置およびフォーマット変換装置
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
WO2003021423A2 (en) * 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
WO2007057033A1 (en) * 2005-11-15 2007-05-24 Telefonaktiebolaget L M Ericsson (Publ) Table lookup multiplier
US7532785B1 (en) * 2007-10-23 2009-05-12 Hewlett-Packard Development Company, L.P. Photonic interconnects for computer system devices
US20140207794A1 (en) * 2010-08-30 2014-07-24 Nokia Corporation Method and apparatus for conducting a search based on context
JP2012064087A (ja) 2010-09-17 2012-03-29 Keio Gijuku 生活習慣病の診断予測装置、生活習慣病の診断予測方法及びプログラム
US20140289445A1 (en) 2013-03-22 2014-09-25 Antony Savich Hardware accelerator system and method
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
JP2017098711A (ja) * 2015-11-20 2017-06-01 富士通株式会社 歪補償装置および歪補償方法
EP3286638A4 (en) 2016-03-31 2018-09-05 Hewlett-Packard Enterprise Development LP Logical operations
US11501131B2 (en) 2016-09-09 2022-11-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
KR102635791B1 (ko) * 2016-12-21 2024-02-08 인텔 코포레이션 무선 통신 기술, 장치 및 방법
US20190392297A1 (en) * 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US11373266B2 (en) * 2017-05-05 2022-06-28 Intel Corporation Data parallelism and halo exchange for distributed machine learning
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives
US11501152B2 (en) * 2017-05-05 2022-11-15 Intel Corporation Efficient learning and using of topologies of neural networks in machine learning
US10628295B2 (en) * 2017-12-26 2020-04-21 Samsung Electronics Co., Ltd. Computing mechanisms using lookup tables stored on memory
US10761850B2 (en) * 2017-12-28 2020-09-01 Texas Instruments Incorporated Look up table with data element promotion
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11164074B2 (en) * 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Multi-core systolic processor system for neural network processing
US10346093B1 (en) * 2018-03-16 2019-07-09 Xilinx, Inc. Memory arrangement for tensor data
US11188814B2 (en) * 2018-04-05 2021-11-30 Arm Limited Systolic convolutional neural network
US10599429B2 (en) * 2018-06-08 2020-03-24 Intel Corporation Variable format, variable sparsity matrix multiplication instruction
US11348909B2 (en) * 2018-09-28 2022-05-31 Intel Corporation Multi-die packages with efficient memory storage
CN111144545B (zh) * 2018-11-02 2022-02-22 深圳云天励飞技术股份有限公司 用于实现卷积运算的处理元件、装置和方法
US11100193B2 (en) * 2018-12-07 2021-08-24 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200070088A (ko) * 2018-12-07 2020-06-17 삼성전자주식회사 Gemm 데이터플로우 가속기 반도체 회로
US12102451B2 (en) 2020-10-21 2024-10-01 Skaichips Co., Ltd. Biosignal processing apparatus based on intelligent control
KR20230014614A (ko) * 2021-07-21 2023-01-30 고려대학교 산학협력단 인메모리 연산을 수행하는 메모리 장치 및 그 방법
US12032829B2 (en) 2021-07-21 2024-07-09 Samsung Electronics Co., Ltd. Memory device performing in-memory operation and method thereof
WO2023075146A1 (ko) * 2021-10-28 2023-05-04 주식회사 사피온코리아 컴퓨팅 시스템 및 이를 위한 전치 방법

Also Published As

Publication number Publication date
US20210374210A1 (en) 2021-12-02
US11100193B2 (en) 2021-08-24
CN111291859A (zh) 2020-06-16
KR20200070088A (ko) 2020-06-17
TW202038099A (zh) 2020-10-16
JP7209616B2 (ja) 2023-01-20
TWI789547B (zh) 2023-01-11
TWI811450B (zh) 2023-08-11
US20200184001A1 (en) 2020-06-11
JP7474586B2 (ja) 2024-04-25
CN111291859B (zh) 2022-06-14
JP2020091853A (ja) 2020-06-11
TW202024960A (zh) 2020-07-01
KR102511911B1 (ko) 2023-03-20
CN111291858A (zh) 2020-06-16
JP2020091861A (ja) 2020-06-11
US20200183837A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
KR102511911B1 (ko) Gemm 데이터플로우 가속기 반도체 회로
Zhou et al. Transpim: A memory-based acceleration via software-hardware co-design for transformer
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
Zhang et al. Frequency domain acceleration of convolutional neural networks on CPU-FPGA shared memory system
Choi et al. An energy-efficient deep convolutional neural network training accelerator for in situ personalization on smart devices
KR20190010642A (ko) 심층 신경망용 가속기
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
Tao et al. Lw-gcn: A lightweight fpga-based graph convolutional network accelerator
Liu et al. Addressing the issue of processing element under-utilization in general-purpose systolic deep learning accelerators
Que et al. Recurrent neural networks with column-wise matrix–vector multiplication on FPGAs
Cappello et al. A practical measure of FPGA floating point acceleration for High Performance Computing
Wang et al. TAICHI: A tiled architecture for in-memory computing and heterogeneous integration
Li et al. Fsa: A fine-grained systolic accelerator for sparse cnns
KR102601034B1 (ko) 하드웨어에서의 희소 행렬 곱셈
Cho et al. FARNN: FPGA-GPU hybrid acceleration platform for recurrent neural networks
CN109615061B (zh) 一种卷积运算方法及装置
Han et al. EGCN: An efficient GCN accelerator for minimizing off-chip memory access
EP4423631A2 (en) One-dimensional computational unit for an integrated circuit
Park et al. TMA: Tera‐MACs/W neural hardware inference accelerator with a multiplier‐less massive parallel processor
Que Reconfigurable acceleration of recurrent neural networks
Qiu et al. An FPGA‐Based Convolutional Neural Network Coprocessor
Chen et al. Optimal dynamic data layouts for 2D FFT on 3D memory integrated FPGA
Li et al. A sparse matrix vector multiplication accelerator based on high-bandwidth memory
Choi et al. A Power-Efficient Hybrid Architecture Design for Image Recognition Using CNNs
Singh et al. An Overlap-and-Add Based Time Domain Acceleration of CNNs on FPGA-CPU Systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal