KR20240083094A - 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진 - Google Patents

딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진 Download PDF

Info

Publication number
KR20240083094A
KR20240083094A KR1020240070657A KR20240070657A KR20240083094A KR 20240083094 A KR20240083094 A KR 20240083094A KR 1020240070657 A KR1020240070657 A KR 1020240070657A KR 20240070657 A KR20240070657 A KR 20240070657A KR 20240083094 A KR20240083094 A KR 20240083094A
Authority
KR
South Korea
Prior art keywords
value
input feature
row
feature map
weight
Prior art date
Application number
KR1020240070657A
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 KR20240083094A publication Critical patent/KR20240083094A/ko

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

저장 장치 및 저장 장치를 제어하는 방법이 개시된다. 저장 장치는 호스트, 로직 다이, 및 메모리 다이를 포함하는 고 대역폭 메모리 스택을 포함한다. 계산 룩업 테이블은 메모리 다이의 메모리 어레이에 저장된다. 호스트는 커널 및 복수의 입력 특징 맵을 사용하는 연산을 수행하기 위한 명령을 전송하고, 커널의 가중치 및 다수의 입력 특징 맵의 값들의 곱을 찾는 것을 포함한다. 계산 룩업 테이블은 커널의 가중치에 대응하는 로우를 포함하고, 컬럼은 입력 특징 맵의 값에 대응한다. 로우 및 컬럼에 대응하는 위치에 저장된 결과 값은 로우에 대응하는 가중치 및 컬럼에 대응하는 값의 곱이다.

Description

딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진{HBM BASED MEMORY LOOKUP ENGINE FOR DEEP LEARNING ACCELERATOR}
본 발명은 메모리에 관한 것으로, 좀 더 상세하게는 딥러닝 가속기를 위한 고 대역폭 메모리에 관한 것이다.
심층 신경망을 포함하는 머신 러닝 어플리케이션들은 많은 양의 계산 또는 메모리 요건들을 포함하는 많은 수의 동작들을 포함할 수 있다. 따라서, 머신 러닝 어플리케이션들은 상이한 데이터 세트들을 훈련하기 위해 많은 양의 자원들을 필요로 하고, 정확하게 학습할 수 있다. 그래픽 알고리즘을 포함하는 다른 컴퓨팅 어플리케이션들은 증가하는 컴퓨터의 요건들 및 메모리 요건들을 야기한다. 메모리에서의 처리는, CPU(Central Processing Unit)가 아닌 메모리 블록들에서의 계산을 수행함으로써 이러한 몇몇 우려들을 다루는데 사용되어 왔다.
본 개시의 측면들에 따르면, 저장 장치가 제공된다.
본 개시의 측면들에 따르면, 저장 장치가 제공된다. 저장 장치는 커널과 복수의 입력 특징 맵을 사용하는 연산을 수행하기 위한 명령을 전송하는 호스트를 포함한다. 커널은 복수의 가중치를 포함하고, 입력 특징 맵들은 복수의 값들을 포함한다. 연산은 커널의 제 1 가중치와 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 복수의 값 중 제 1 값의 곱을 결정하는 단계를 포함한다. 저장 장치는 호스트에 결합되고 명령을 수신하도록 구성되는 로직 다이를 포함한다. 저장 장치는 또한 메모리 어레이를 포함하는 로직 다이에 결합되는 메모리 다이를 포함하는 고 대역폭 메모리(High Bandwidth Memory, HBM) 스택을 포함한다. 커널 및 복수의 입력 특징 맵은 메모리 어레이에 저장된다. 계산 룩업 테이블은 메모리 어레이에 저장되고, 계산 룩업 테이블은 메모리 어레이에 저장되고 복수의 로우 및 복수의 컬럼을 갖고, 복수의 로우 중 제 1 로우는 커널의 복수의 가중치 중 하나에 대응하고, 복수의 컬럼 중 제1 컬럼은 복수의 입력 특징 맵의 값들 중 하나에 대응한다. 제 1 결과 값은 계산 룩업 테이블의 제 1 위치에 저장되고, 제 1 위치는 제 1 로우 및 제 1 컬럼에 대응하고, 제 1 결과 값은 제 1 로우에 대응하는 복수의 가중치 중 하나와 제 1 컬럼에 대응하는 값들 중 하나의 곱이다.
몇몇의 실시 예들에서, 저장 장치는 제 1 로우 디코더 및 제 2 로우 디코더를 포함하되, 메모리 다이는, 제 1 가중치에 대응하는 계산 룩업 테이블의 제 1 로우를 로우 버퍼로 로딩하기 위해, 제 1 로우 디코더에 제 1 가중치를 입력하고, 메모리 다이는, 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 제 1 값을 중간 버퍼에 로딩하기 위해 제 1 가중치를 제 2 로우 디코더에 입력한다.
몇몇의 실시 예들에서, 컬럼 액세스 스케줄러 및 컬럼 디코더를 더 포함하되, 컬럼 액세스 스케줄러는, 중간 버퍼로부터의 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 제 1 값을 수신하고, 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 제 1 값에 대해, 제 1 값에 대응하는 제 1 컬럼에 대응하는 로우 버퍼의 위치의 제 1 결과 값에 접근하도록 컬럼 디코더를 제어하고, 제 1 결과 값을 읽기 버퍼로 출력하도록 구성된다.
몇몇의 실시 예들에서, 로직 다이는 처리 소자를 포함하되, 읽기 버퍼는 중간 버퍼의 제 1 값에 대한 제 1 결과 값을 수신할 때 제 1 값에 대한 제 1 결과 값을 로직 다이로 출력하고, 처리 소자는 제 1 값에 대한 제 1 결과 값을 처리하도록 구성된다.
몇몇의 실시 예들에서, 처리 소자는, 제 1 입력 특징 맵에 대응하는 제 1 값에 대응하는 제 1 결과 값을 수신하고, 제 1 입력 특징 맵에 대한 출력을 생성하기 위해 수신된 제 1 결과 값을 다른 수신된 결과 값들과 결합하도록 구성된다.
몇몇의 실시 예들에서, 호스트는 제 2 커널 및 제 2 복수의 입력 특징 맵을 사용하는 제 2 연산을 수행하기 위한 제 2 명령을 전송하고, 제 2 계산 룩업 테이블은 메모리 어레이에 저장되고, 제 2 계산 룩업 테이블은 복수의 로우를 갖고, 제 2 계산 룩업 테이블의 복수의 로우 중 제 2 로우는 제 2 커널의 복수의 가중치에 대응하고, 제 2 계산 룩업 테이블은 복수의 컬럼을 갖고, 제 2 계산 룩업 테이블의 복수의 컬럼 중 제 2 컬럼은 제 2 복수의 입력 특징 맵의 값들 중 하나에 대응하고, 제 2 결과 값은 제 2 계산 룩업 테이블의 제 2 위치에 저장되고, 제 2 위치는 복수의 로우 중 제 2 로우 및 제 2 계산 룩업 테이블의 복수의 컬럼 중 제 2 컬럼에 대응하고, 제 2 결과 값은 가중치의 곱이고 값은 제 2 컬럼에 대응한다.
몇몇의 실시 예들에서, 제 2 명령은, 제 2 커널을 제 2 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들과 콘볼빙(convolving)하는 콘볼루션 연산을 수행하기 위한 것이다.
몇몇의 실시 예들에서, 명령은, 커널을 입력을 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들과 곱하는 행렬 곱셈 연산을 수행하기 위한 것이다.
몇몇의 실시 예들에서, 저장 장치는, 메모리 어레이의 커널, 복수의 입력 특징 맵, 및 계산 룩업 데이블을 명령에 기초하여 저장하도록 구성된다.
몇몇의 실시 예들에서, 계산 룩업 테이블에 할단된 메모리 어레이의 비율은 명령에 의해 식별된 연산에 기초한다.
본 개시의 다른 측면에 따르면, 저장 장치를 제어하는 방법이 제공된다. 방법은 커널과 복수의 입력 특징 맵을 사용하는 연산을 수행하기 위한 로직 다이로 명령을 전송하되, 커널은 복수의 가중치를 포함하고, 복수의 입력 특징 맵은 복수의 값들을 포함하고, 연산은 커널의 제 1 가중치와 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들의 복수의 값들 중 제 1 값의 곱을 결정하는 단계를 포함하는 단계; 및 메모리 어레이에 커널과 복수의 입력 특징 맵을 저장하는 단계를 포함하되, 계산 룩업 테이블을 메모리 어레이에 저장하되, 계산 룩업 테이블은 복수의 로우 및 복수의 컬럼을 포함하고, 복수의 로우 중 제 1 로우는 커널의 복수의 가중치 중 하나에 대응하고, 복수의 컬럼 중 제 1 컬럼은 복수의 입력 특징 맵의 값들 중 하나에 대응하고, 제 1 결과 값은 계산 룩업 테이블의 제 1 위치에 저장되고, 제 1 위치는 제 1 로우 및 제 1 컬럼에 대응하고, 제 1 결과 값은 제 1 로우에 대응하는 가중치와 제 1 컬럼에 대응하는 값의 곱이다.
몇몇의 실시 예들에서, 제 1 가중치에 대응하는 계산 룩업 테이블의 제 1 로우를 로우 버퍼에 로딩하기 위해 제 1 로우 디코더에 제 1 가중치를 입력하는 단계, 및 복수의 입력 특징 맵 중 둘 이상의 제 1 값을 중간 버퍼에 로딩하기 위해 제 2 로우 디코더에 제 1 가중치를 입력하는 단계를 포함한다.
몇몇의 실시 예들에서, 중간 버퍼로부터의 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 제 1 값을 수신하는 단계, 복수의 입력 특징 맵 중 둘 이상의 입력 특징 맵들 각각의 제 1 값에 대해, 제 1 값에 대응하는 제 1 컬럼에 대응하는 로우 버퍼의 위치의 제 1 결과 값에 액세스하는 단계, 및 제 1 결과 값을 읽기 버퍼에 출력하는 단계를 포함한다.
몇몇의 실시 예들에서, 중간 버퍼의 제 1 값에 대해 제 1 결과 값을 수신할 때, 제 1 값에 대해 제 1 결과 값을 로직 다이에 출력하는 단계, 및 처리 소자에 의해 제 1 값에 대해 제 1 결과 값을 처리하는 단계를 포함한다.
몇몇의 실시 예들에서, 처리 소자에 의해 처리하는 단계는, 제 1 입력 특징 맵에 대응하는 제 1 값에 대응하는 제 1 결과 값을 수신하는 단계, 및 제 1 입력 특징 맵에 대한 출력 값을 생성하기 위해 수신되는 제 1 결과 값을 제 1 입력 특징 맵에 대한 다른 수신되는 결과 값들과 결합하는 단계이다.
몇몇의 실시 예들에서, 제 2 커널 및 제 2 복수의 입력 특징 맵을 사용하는 제 2 연산을 수행하기 위한 로직 다이로 제 2 명령을 전송하는 단계; 및 메모리 어레이에 제 2 계산 룩업 테이블을 저장하되, 제 2 계산 룩업 테이블은 복수의 로우 및 복수의 컬럼을 포함하고, 제 2 계산 룩업 테이블의 복수의 로우의 제 2 로우는 제 2 커널의 복수의 가중치 중 하나에 대응하고, 제 2 계산 룩업 테이블의 복수의 컬럼 중 제 2 컬럼은 제 2 복수의 입력 특징 맵의 값들 중 하나에 대응하고, 제 2 결과 값은 제 2 계산 룩업 테이블의 제 2 위치에 저장되되, 제 2 위치는 제 2 계산 룩업 테이블의 제 2 로우 및 제 2 컬럼에 대응하고, 제 2 결과 값은 제 2 로우에 대응하는 가중치와 제 2 컬럼에 대응하는 값의 곱이다.
몇몇의 실시 예들에서, 제 2 명령은, 제 2 복수의 입력 특징 맵 중 둘 이상을 제 2 커널과 콘볼빙하는 콘볼루션 연산을 수행하기 위한 것이다.
몇몇의 실시 예들에서, 명령은, 복수의 입력 특징 맵 중 둘 이상을 커널과 곱하는 곱셈 연산을 수행하기 위한 것이다.
몇몇의 실시 예들에서, 명령에 기초하여, 커널, 복수의 입력 특징 맵, 및 계산 룩업 테이블을 메모리 어레이에 저장하는 단계를 포함한다.
몇몇의 실시 예들에서, 계산 룩업 테이블에 할당된 메모리 어레이의 비율은 명령에 기초하여 식별되는 연산에 기초한다.
본 개시의 이상의 및 다른 측면들은, 첨부된 도면들을 참조하여 예시적인 실시 예들의 이하의 구체적인 설명으로부터 통상의 기술자에게 더 명확해질 것이다.
본 발명의 실시 예에 따르면, DRAM 다이 상에서의 메모리 룩업 계산 및 로직 다이에서의 누적 연산들은 완전하게 중복될 수 있으므로 하드웨어는 완전히 사용되고 전체 처리량이 높아질 수 있다
도 1은 본 개시의 실시 예들에 따른 가속기 카드를 보여준다.
도 2는 가속기 카드의 측면도를 도시하는 블록도 이다.
도 3은 본 개시의 실시 예들에 따른 DRAM 다이 및 로직 다이의 블록도 이다.
도 4는 본 개시의 실시 예들에 따른 처리 블록의 실시 예이다.
도 5는 본 개시의 실시 예들에 따른 배칭된 콘볼루션 연산을 보여준다.
도 6은 도 5의 배칭된 콘볼루션 연산의 출력을 보여준다.
도 7은 본 개시의 실시 예들에 따른 배칭된 행렬 곱셈 연산을 보여준다.
도 8은 본 개시의 실시 예들에 다른 점별 연산을 보여주는 블록도 이다.
이하 구체적인 설명에서, 예시를 통해 본 발명의 특정 실시 예들만이 보이고 설명된다. 통상의 기술자가 이해할 것과 같이, 발명이 많고 상이한 형태들로 구형되고 본 명세서에서 설명되는 실시 예들로 제한되는 것으로 이해되어서는 안 된다. 각각의 실시 예들 내의 특징들 또는 측면들의 설명들은, 다른 실시 예들의 다른 유사한 특징들 또는 측면들에 대해 이용 가능한 것으로 일반적으로 고려되어야 한다. 명세서 전반에 걸쳐 동일한 참조 번호들은 동일한 구성 요소들을 지칭한다.
도 1은 본 개시의 실시 예들에 따른 가속기 카드(100)(예컨대, 그래픽 카드)를 보여준다. 가속기 카드(100)는 HBM2와 같은 고 대역폭 메모리(High-Bandwidth Memory; HBM) 아키텍쳐를 사용할 수 있다. 가속기 카드(100)는 호스트(110) 및 복수의 메모리 스택(120A 내지 120D, 이하 DRAM(Dynamic Random Access Memory) 스택들)을 포함한다. 도 2는 가속기 카드(100)의 측면도를 도시하는 블록도 이다. 도 2의 블록도는 DRAM 스택들(120) 중 하나를 포함할 수 있다. DRAM 스택들(120)은 복수의 메모리 다이들(121A 내지 121D, 이하, DRAM 다이들) 및 로직 다이(123)를 포함한다. 몇몇 실시 예들에서, DRAM 스택(120)은 가속기 다이(125)를 포함할 수 있고, 가속기 다이(125)는 로직 다이(123)와 협력하여 또는 로직 다이(123)를 대신하여 연산들을 수행할 수 있다.
호스트(110)는 인터포저(130)를 통해 로직 다이(123)와 연결된다. 인터포저(130)는, HBM 아키텍쳐를 사용하여 호스트(110)가 복수의 DRAM 스택(120A 내지 120D)와 통신하도록 설계될 수 있다. 인터포저(130)는 호스트(110)와 외부 시스템들 사이의 인터페이스를 제공할 수 있는 패키지 기판(140)에 연결된다(예컨대, 패키지 기판(140)은 PCIe 커넥터를 포함할 수 있다).
도 3은 본 개시의 실시 예들에 따른 DRAM 다이(121) 및 로직 다이(1230)의 블록도 이다. DRAM 다이(121)는 쓰기 버퍼(240), 스케줄러(250), 요청/응답 큐(260), 및 읽기 버퍼(270)를 포함한다. DRAM 다이(121)는 하나 이상의 메모리 어레이에 모델 파라미터들(210), 중간 결과들(220), 및 하나 이상의 계산 룩업 테이블(230)을 포함할 수 있다. 쓰기 버퍼(240) 및 읽기 버퍼(270)는 DRAM 다이(121)를 위한 입력 및 출력 지점들로서의 역할을 하고, 스케줄러(250) 및 요청/응답 큐(260)는 DRAM 다이(121) 상에서 데이터 흐름을 제어한다.
로직 다이(123)는 출력 버퍼(310), 하나 이상의 처리 블록(320A 및 320B), 명령 큐(330), 입력 버퍼(340), 스케줄러(360), 및 컨트롤러(370)를 포함한다. 도 4는 본 개시의 실시 예들에 따른 처리 블록(320)의 실시 예이다. 도 4를 참조하면, 처리 블록(320)은, 점별 곱셈 결과들, 또는 콘볼루션 또는 행렬 곱셈 연산들의 부분적인 결과들과 같은 입력 값들을 일시적으로 저장하기 위한 입력 버퍼(321), 및 계산 결과들을 일시적으로 저장하기 위한 출력 버퍼(310)를 갖는다. 처리 블록(320)은 디스패처(325), 및 복수의 처리 소자들(327A 내지 327D)을 포함한다. 디스패처(325)는 입력 버퍼(321)의 데이터를 처리 소자들(327A 내지 327D)로 전송하고 처리 소자들(327A 내지 327D)로부터의 그 데이터를 출력 버퍼(323)로 전송하는 역할을 맡는다.
도 3을 다시 참조하면, 로직 다이(123)의 입력 버퍼(340) 및 출력 버퍼(310)는 로직 다이(123)에 대한 데이터를 저장한다. 컨트롤러(370)는 호스트(110)와 통신하는 역할을 맡고, 스케줄러(360)는 계산 작업들을 스케줄링하는 역할을 맡는다.
컨트롤러(370)는 호스트(110)로부터 명령들을 수신한다. 명령에 응답하여, 컨트롤러(370)는 명령의 내용에 기초하여 스케줄러(360)로 하여금 작업들을 스케줄링 하도록 지시할 수 있다. 스케줄러(360)는, 명령 큐(330)가 사전 계산 데이터를 DRAM 다이(121)로 전송하는 것을 요청할 수 있다. 몇몇의 실시 예들에서, 사전 계산 데이터는 명령과 함께 호스트(110)로부터 수신될 수 있다. 몇몇의 실시 예들에서, 사전 계산 데이터는 로직 다이(123)에 의해, 예컨대, 호스트(110)로부터의 명령에 기초하여 컨트롤러(270)에 의해, 계산된다. 사전 계산 데이터는 하나 이상의 커널에 대한 가중치들, 하나 이상의 입력 특징 맵(input feature map), 및/또는 하나 이상의 계산 룩업 테이블에 대한 값들을 포함할 수 있다. DRAM 다이(121)는 출력 버퍼(310)로부터 쓰기 버퍼(240)까지 사전 계산 데이터를 일시적으로 읽을 수 있고, 스케줄러(250)는 모델 파라미터 어레이(210) 또는 중간 결과 어레이(220)에 사전 계산 데이터를 저장할 수 있다. 하나 이상의 커널에 대한 가중치들은 모델 파라미터 어레이(210)에 저장될 수 있고, 복수의 입력 특징 맵들은 중간 결과 어레이(220)에 저장될 수 있다.
계산 룩업 테이블(230)에서, 값들은 열들 및 컬럼들에 대응하는 위치들에 저장된다. 각각의 로우 및 컬럼의 조합은 위치와 그 위치에 저장된 값을 갖는다. 몇몇의 실시 예들에서, 호스트(110)는 계산 룩업 테이블(230)의 내용들을 계산하고, 그 내용들을 가속기 카드(100)로 전송할 수 있다. 몇몇의 실시 예들에서, 계산 룩업 테이블은 호스트 메모리로부터 로딩될 수 있다. 몇몇의 실시 예들에서, 호스트(110)는 로직 다이(123)에서 프로그램을 시작할 수 있고, 이에 따라 로직 다이(123)는 계산 룩업 테이블의 내용들을 계산할 수 있다.
계산 룩업 테이블(230)은, 점별 곱셈과 같은 사전 구성 값들의 점별 처리를 지원하도록 구성될 수 있다. 계산 룩업 테이블(230)은 사전 구성 값들의 제 1 세트(예컨대, 커널들의 가중치들)에 대한 모든 가능한 값에 대응하는 로우를 포함하고, 사전 구성 값들의 제 2 세트(예컨대, 입력 특징 맵들의 값들)에 대한 모든 가능한 값에 대응하는 컴럼을 포함할 수 있다. 각각의 위치에 저장된 값은, 그 위치에 대해, 로우와 관련되는 값과 컬럼과 관련되는 값의 곱이다. 사전 구성 값들의 제 1 세트 중 하나와 제 2 사전 구성 값들 중 하나를 곱하기 위해, DRAM 다이(121)는, 사전 구성 값들의 제 1 세트의 하나의 값에 대응하는 로우를 찾고 로우 데이터를 로우 버퍼로 옮기기 위해 계산 룩업 테이블(230) 상에 룩업 동작을 수행할 수 있다. 그 후, DRAM 다이(121)는, 사전 구성 값들의 제 2 세트 중 하나의 값에 대응하는 컬럼에 대한 목록을 찾기 위해 로우 버퍼의 로우 데이터 상에 컬럼 룩업 동작을 수행할 수 있고, 그 동작에서의 값을 읽기 버퍼(270)로 출력할 수 있다.
점별 곱셈이 이상의 설명에서 실시 예로서 사용되더라도, 본 개시는 이에 한정되지 않고 다른 점별 연산들이 본 개시의 권리 범위 내에 있다는 것을 주의하라. 연산들은 산술(예컨대, 지수의) 연산들 및/또는 논리(예컨대, XOR) 연산들을 포함할 수 있다. 몇몇의 실시 예들에서, DRAM 다이(121)는 상이한 점별 연산들에 대응하는 다수의 계산 룩업 테이블들(230)을 포함한다(또는, 하나의 계산 룩업 테이블(230)에 각각의 점별 연산에 대한 각각의 값들에 대한 다수의 로우들을 포함한다). 예로서, 제 1 계산 룩업 테이블(230)에서 각각의 위치에서의 값은 그 위치에 대해 로우 및 컬럼에 대응하는 값들의 곱에 대응할 수 있고, 제 2 계산 룩업 테이블(230)에서 각각의 위치에서의 값은 그 위치에 대해 로우 및 컬럼에 대응하는 값들 사이의 나뉜 몫에 대응할 수 있다. 스케줄러(250)는, 점별 연산에 대응하는 계산 룩업 테이블(230)에서의 로우 및/또는 컬럼 접근 동작들을 스케줄링함으로써 어떤 점별 연산을 수행할 지 판별할 수 있다.
읽기 버퍼(270)의 내용들은 로직 다이(123)의 입력 버퍼(340)로 스트림 된다. 스케줄러(360)는 입력 버퍼(340)로부터 처리 블록(320)의 입력 버퍼(321)로 데이터를 복사할 수 있고, 처리 블록(320)의 처리 소자들(327A 내지 327D)은 데이터 상에서 추가적인 처리를 수행하고 그 데이터를 처리 블록(320)의 출력 버퍼(323)로 출력할 수 있다.
DRAM 다이(121) 상에서의 메모리 룩업 계산 및 로직 다이(123)에서의 누적 연산들은 완전하게 중복될 수 있으므로 하드웨어는 완전히 사용되고 전체 처리량이 높아질 수 있다.
몇몇의 실시 예들에서, 계산 룩업 테이블(230)로 구성된 메모리 어레이들 또는 하위 어레이들의 개수는 호스트(110)로부터 수신되는 명령의 유형에 기초할 수 있다. 계산 대 메모리 비율이 높은 명령들에 대해, 더 많은 하위 어레이들이 계산 룩업 테이블들로서 구성될 수 있고, 계산 대 메모리 비율이 낮은 명령들에 대해, 더 적은 하위 어레이들이 계산 룩업 테이블들로서 구성될 수 있다. 커널에 대한 계산 대 메모리 비율은 계산 룩업 테이블로부터 액세스된 소자 당 연산들(예컨대, 점별 연산)의 개수를 지칭할 수 있다. 계산 룩업 테이블을 포함하는 메모리 하위 어레이들의 비율은 “OPA*M/N”일 수 있고, 이때 “OPA”는 액세스된 소자당 수행된 점별 연산들의 수이고, “M”은 각각의 메모리 하위 어레이들이 각각의 싸이클에 제공할 수 있는 소자들의 개수이고, “N”은 각각의 계산 룩업 테이블이 각각의 싸이클에 제공할 수 있는 점별 연산들의 개수이다.
도 5는 본 개시의 실시 예들에 따른 배칭된(batched) 콘볼루션 연산을 보여준다. 도 6은 도 5의 배칭된 콘볼루션 연산의 출력을 보여준다. 도 5 및 도 6을 참조하면, 배칭된 콘볼루션 연산은 이상 설명된 DRAM 스택(120)에 의해 수행될 수 있다. 호스트(110)는, 복수의 입력 특징 맵들(510) 및 하나 이상의 커널들(520)을 사용하여 배치된 콘볼루션 연산을 수행하라고 지시하는 명령을 컨트롤러(370)로 전송할 수 있다. 복수의 입력 특징 맵들(510)은 중간 결과 메모리 어레이(220)에 저장될 수 있고, 하나 이상의 커널들(520)은 모델 파라미터 어레이(210)에 저장될 수 있다. 배치 사이즈는 입력 특징 맵들(510)의 개수로서 이해될 수 있다. 각각의 입력 특징 맵(510)은 폭, 높이, 및 깊이를 갖는 값들의 3차원 어레이일 수 있고, 입력 채널은 깊이로서 이해될 수 있다. 커널(520)은 입력 특징 맵 높이 보다 작은 커널 높이, 입력 특징 맵 폭 보다 작은 커널 폭, 및 입력 특징 맵 깊이와 동등한(즉, 입력 채널과 동등한) 깊이를 갖는 값들의 3차원 어레이일 수 있다.
커널(520)은 입력 특징 맵(510) 전반에 걸친 다수의 위치들에, 예컨대 반복적인 그리드 패턴에, 적용된다. 각각의 위치에서, 커널(520)의 가중치들은 입력 특징 맵(510)의 대응하는 값들에 곱해진다. 주어진 위치에서 각각의 가중치와 입력 특징 맵(510)의 대응하는 값들의 곱들은 그 입력 특징 맵의 그 위치에 대해 출력 값 “P1”“P2”및 “P3”를 얻기 위해 함께 더해지고, 주어진 입력 특징 맵(510)의 각각의 위치에 대한 값들은 그 입력 특징 맵과 커널 조합에 대한 출력 행렬(610)을 형성하기 위해 결합된다. 이러한 프로세스는 각각의 입력 특징 맵 및 각각의 커널에 대해 반복된다.
커널의 가중치는 “kj_wi”로 지칭될 수 있으며, 이때 “j”는 커널을 식별하고 “i”는 커널 내 가중치의 특정한 위치이고, 입력 특징 맵의 값은 “Ix_Py_wz”로 지칭될 수 있으며, 이때 “x”는 입력 특징 맵을 식별하고 “y”는 입력 특징 맵 상의 커널의 위치이고 “z”는 입력 특징 맵의 값의 (커널에 대한 “i”에 직접 대응하는) 특정한 위치이다. 도 5에 보이듯이, 가중치 “k1_w1”는 제 1 커널의 도시된 위치에 대응한다. 도 6의 출력을 생성하기 위해, 가중치 “k1_w1”는 각각의 값들 “I1_P1_w1”, “1_P2_w1”, “I1_P3_w1”, “I2_P1_w1”, “I2_P2_w1” “I2_P3_w1”, 및 각각의 입력 특징 맵(510)의 각각의 위치의 유사한 값들과 곱해진다.
도 7은 본 개시의 실시 예들에 따른 배칭된 행렬 곱셈 연산을 보여준다. 배칭된 행렬 곱셈 연산은 이상 설명된 DRAM 스택(120)에 의해 수행될 수 있다. 호스트(110)는, 복수의 입력 특징 맵들(710) 및 하나 이상의 커널(720)을 사용하여 배치된 행렬 곱셈 연산을 수행하라는 명령을 컨트롤러(370)로 전송할 수 있다. 복수의 입력 특징 맵들(710)은 중간 결과 메모리 어레이(220)에 저장될 수 있고, 하나 이상의 커널(720)은 모델 파라미터 어레이(210)에 저장될 수 있다. 배치 사이즈는 입력 특징 맵들(710)의 개수로 이해될 수 있다. 각각의 입력 특징 맵(710)은 폭과 높이를 갖는 값들의 2차원 행렬일 수 있고, 높이 방향으로 입력 로우들(712)로 나뉠 수 있다. 커널(720)은 폭과 높이를 갖는 가중치들의 2차원 어레이일 수 있고, 폭 방향으로 컬럼들로 나뉠 수 있다. 입력 특징 맵(710)의 높이(즉, 로우들의 개수)는 커널(720)의 폭(즉, 컬럼들의 개수)과 동등할 수 있다. 커널(720)에 대한 출력을 생성하기 위해, 커널(720)의 컬럼에서의 각각의 가중치는 각각의 입력 특징 맵(710)의 각각의 로우에서의 대응하는 값과 곱해질 수 있다. 예로서, 커널의 가중치는 “kj_wi”로 지칭되며, 이때 “j”는 가중치의 컬럼이고 “i”는 컬럼에서 가중치의 위치이고, 입력 특징 맵의 값은 “Ix_Py_wz”로 지칭되며, 이때 “x”는 입력 특징 맵을 식별하고 “y”는 값의 로우이고 “z”는 로우에서 값의 위치이다. 도 7에 보이듯이, 배치에서 입력 특징 맵(710) 각각에 대한 출력을 생성하기 위해, 가중치 “k1_w1”는 값들 “I1_P1_w1”, “I1_P2_w1”, “I1_P3_w1”, “I2_P1_w1”, “I2_P2_w1”, “I3_P3_w1”, “I3_P2_w1”, “I3_P3_w1” 의 각각 및 입력 특징 맵(710) 각각의 로우 각각에서 위치 각각의 유사한 값들과 곱해진다.
도 8은 본 개시의 실시 예들에 다른 점별 연산을 보여주는 블록도 이다. 도 8의 동작에서, 연산은 입력 특징 맵들의 커널 및 배치 상에서 수행된다. 예로서, 몇몇의 실시 예들에서, 입력 특징 맵들은 값들의 3차원 어레이들이고, 커널은 입력 특징 맵 보다 작은 높이 및 폭을 갖지만 동일한 깊이를 갖는 가중치들의 3차원 어레이이며, 연산은 커널을 입력 특징 맵들의 배치와 콘볼빙(convolving)한다. 몇몇의 실시 예들에서, 입력 특징 맵들은 값들의 2차원 행렬들이고, 커널은 가중치들의 2차원 행렬이고, 연산은 커널과 각각의 입력 특징 맵 행렬들을 곱하는 것이다.
도 8은 입력 특징 맵 테이블(810) 및 계산 룩업 테이블(820)을 포함한다. 계산 룩업 테이블(820)은 커널의 모든 가능한 가중치에 대응하는 로우를 포함할 수 있고, 입력 특징 맵들의 모든 가능한 값에 대응하는 컬럼을 포함할 수 있다. 위치 각각에 저장된 값은, 그 위치에 대해 로우와 관련되는 가중치와 컬럼과 관련되는 값의 곱이다. 입력 특징 맵 테이블(810)은 입력 특징 맵들의 배치의 값들을 포함한다. 커널의 동일한 가중치 위치와 점별로 곱해져야하는 입력 특징 맵 위치와 관련된 각각의 값은, 커널의 가중치 위치의 값에 의해 색인된 동일한 로우에 저장될 수 있다.
로직 다이(850)는 명령 큐, 입력 버퍼, 출력 버퍼, 몇몇의 가산기들(ADD) 및 레지터들을 갖는 것으로 도시된다. 이는 설명의 편의를 위해 단순화된 도면일 수 있고, 로직 다이(850)는 다른 구성요소들을 포함할 수 있고, 도시된 구성요소들은 묘사된 것보다 더 복잡할 수 있다. 예로서, 입력 버퍼, 출력 버퍼, 가산기들(ADD), 및 레지스터들은 로직 다이(850)의 하나의 처리 소자를 위한 것이고, 로직 다이(850)는 몇몇의 처리 소자들 및/또는 도시된 입력 버퍼 및 출력 버퍼로/로부터 정보를 전송하기 위한 분리된 입력/출력 버퍼들을 포함할 수 있다.
로직 다이(850)의 명령 큐는 커널의 주어진 가중치(예컨대, 도 8에 서 보이듯이 제 1 가중치 “k1_w1”에 대응하는 결과 값들에 대한 요청을 전송한다. 더 설명될 것과 같이, 커널의 주어진 가중치에 대한 결과 값들은 가중치를 상이한 입력 특징 맵들 및/또는 하나의 입력 특징맵의 상이한 위치들과 곱하여 생성되는 값들이다. 이에 응답하여, 요청 큐는 제 1 가중치에 대응하는 로우에 대한 룩업 요청을 기다린다. 일단 로우 액세스 스케줄러가 제 1 가중치에 대응하는 로우에 대한 룩업 요청이 실행되어야함을 나타내면, 제 1 가중치(또는 제 1 가중치에 대응하는 로우의 값)는 입력 특징 맵 테이블(810)에 대한 제 1 로우 디코더 및 계산 룩업 테이블(810)에 대한 제 2 로우 디코더로 전달된다. 제 1 로우 디코더는 입력 특징 맵 테이블(810)의 로우를 중간 버퍼로 출력한다. 제 1 가중치에 대응하는 입력 특징 맵 테이블의 로우의 값들은, 제 1 가중치와 곱해져야하는 입력 특징 맵들에서 다양한 위치들로부터 추출되는 값들이다. 예로서, 가중치가 “k1_w1”일 때, 값들은 “I1_P1_w1”, “I1_P2_w1”, “I1_P3_w1”일 수 있다. 제 2 로우 디코더는 계산 룩업 테이블(820)의 로우를 로우 버퍼로 출력한다. 제 1 가중치에 대응하는 계산 룩업 테이블의 로우의 값들은 제 1 가중치와 입력 특징 테이블의 값들의 모든 가능한 곱들이다.
컬럼 액세스 스케줄러는 입력 버퍼의 값 각각을 수신한다. 입력 버퍼의 값 각각은 계산 룩업 테이블(820)의 컬럼에 대응한다. 입력 버퍼의 값 각각에 대해, 컬럼 액세스 스케줄러는, 값(즉, 결과 값)에 대응하는 컬럼에 대한 로우 버퍼에 저장된 값을 출력 버퍼로 출력하기 위해 컬럼 디코더와 통신한다. 몇몇의 실시 예들에서, 컬럼 액세스 스케줄러는 연산을 병렬로 수행하기 위해 복수의 컬럼 디코더와 통신한다. 로우 버퍼에 저장된 결과 값들은 제 1 가중치와 입력 특징 맵 값들 각각의 곱들이기 때문에, 로우 버퍼의 값들에 대한 컬럼들은 입력 특징 맵 값들에 대응하고, 중간 버퍼의 값들은 입력 특징 맵 값들이고, 출력 버퍼로 출력되는 결과 값은 제 1 가중치와 입력 특징 맵 값의 곱이고, 그리고 이것은 메모리에서 예컨대 프로세서 자원을 사용하지 않고 결정된다.
중간 버퍼에 저장된 값들 각각은 제 1 가중치에 의해 곱해져야 한다. 로우 버퍼는 이미 제 1 가중치에 대한 로우 값들을 이미 포함하기 때문에, 컬럼 룩업 동작만이 입력 버퍼의 값 각각에 대한 결과 값을 얻기 위해 수행되어야 한다; 별도의 로우 룩업 동작들은 필요하지 않다. 결과적으로, 메모리 룩업은 높은 버퍼 히트율을 가질 수 있고(또는, 제 1 가중치 값에 대한 추가적인 로우 룩업 동작들을 수행하지 않을 수 있고), 이는 동작의 대기 시간을 상당히 감소시킬 수 있다.
몇몇의 실시 예들에서, 출력 버퍼는 중간 버퍼의 값 각각에 대한 결과 값을 수신할때까지 결과 값 각각을 저장할 수 있고, 그때 저장된 결과 값들을 로직 다이(850)의 입력 버퍼로 전송할 수 있다. 몇몇의 다른 실시 예들에서, 출력 버퍼는 더 작은 결과 값들의 세트들을 전송하거나 계속적으로 결과 값들을 로직 다이(850)의 입력 버퍼로 스트리밍할 수 있다.
로직 다이(850)는 연산에 대한 입력 특징 맵 각각의 출력을 생성하기 위해 결과 값들을 더 처리할 수 있다. 예로서, 입력 버퍼는 입력 특징 맵(이때 입력 특징 맵은 행렬이다)의 주어진 로우 또는 입력 특징 맵(이때 입력 특징 맵은 3차원 어레이 이다)의 주어진 위치에 대한 결과 값 각각을 얻고, 그 결과 값들을 별도의 가산기(ADD)로 전달할 수 있다. 따라서, 가산기는 레지스터에 저장된 값을 증가시킬 수 있다. 일단 입력 특징 맵에 대한 모든 값이 커널의 가중치들 각각에 대해 처리되면, 레지스터는 입력 특징 맵에 대한 출력 행렬의 하나의 목록의 값과 같은 각각의 입력 특징 맵에 대한 출력을 계산하기 위해 필요한 값을 포함할 수 있다. 레지스터는 이 값을 출력할 수 있고, 로직 다이 및/또는 호스트는 입력 특징 맵 각각에 대한 출력을 생성하기 위해 각각의 레지스터로부터의 출력을 결합하거나 더 처리 할 수 있다.
도면들에서, 구성 요소, 층 및 영역들의 상대적인 크기는 명확성을 위해 과장될 수 있다. 하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 “아래의”, “아래”, “낮은”, “특정 부분 아래”, “위에”, “상부”와 같은 공간적이고 상대적인 용어들이 여기에서 사용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 사용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의” 또는 “특정 부분 아래”로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 “위로” 맞춰지게 된다. 따라서, “아래의” 또는 “특정 부분 아래”의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 이에따라 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.
비록 여기에서 “제 1”, “제 2”, “제 3” 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 및/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 및/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭 할 수 있다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “구성되는”, “구성되고 있는”, “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들이 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 사용된 바와 같이, “그리고/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다.
본 명세서에서 사용된 바와 같이, "할 수 있다"의 사용은 본 발명의 실시 예들을 설명할 때 "본 발명의 하나 이상의 실시 예들"을 지칭한다. 본 명세서에서 사용된 바와 같이, “사용하다”, “사용하는”, 및 “사용된” 용어들은 “이용하다”, “이용하는”, 그리고 “이용된” 용어들의 동의어로 각각 간주 될 수 있다. 또한, "예시적인" 용어는 예시 또는 실시 예를 지칭하도록 의도된다.
본 명세서에서 설명되는 본 발명의 실시 예들에 따른 전자 또는 전기 장치들 및/또는 다른 관련된 장치들 및 구성요소들은, 임의의 적절한 하드웨어, 펌웨어(예컨대, 주문형 반도체(application-specific integrated circuit; ASIC)), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 조합을 사용하여 구현될 수 있다. 예로서, 이러한 장치들의 다양한 구성요소들은 하나의 IC(integrated circuit) 칩 또는 분리된 IC 칩들 상에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은 연성 인쇄 회로(flexible printed circuit; FPC) 필름, TCP(tape carrier package), 인쇄 회로 기판(printed circuit board; PCB) 상에 구현되거나 하나의 기판 상에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은, 본 명세서에서 설명되는 다양한 기능들을 수행하기 위해, 하나 이상의 프로세서들 상에서 실행되고, 하나 이상의 컴퓨팅 장치들에 있고, 컴퓨터 프로그램 명령들을 실행하고, 다른 시스템 구성요소들과 상호작용하는 프로세서 또는 스레드 일 수 있다. 컴퓨터 프로그램 명령들은, 예로서, RAM(random access memory)와 같은 표준 메모리 장치를 사용하여 컴퓨팅 장치 내에 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령들은, 예로서, CD-ROM, 플래시 드라이브 등과 같은 다른 비일시적인 컴퓨터 판독 가능 매체에 저장될 수도 있다. 또한, 해당 기술의 통상의 기술자는 다양한 컴퓨팅 장치들의 기능이 하나의 컴퓨팅 장치에 결합 또는 통합될 수 있거나, 특정 컴퓨팅 장치의 기능이 본 발명의 예시적이 실시 예들의 사상 및 범위로부터 벗어나지 않는 하나 이상의 다른 컴퓨팅 장치들 전반에 분배될 수 있다는 것을 인지해야 한다.
다르게 정의되지 않는 한, 본 명세서에서 사용되는 (기술적인 및 과학적인 용어들을 포함하는)모든 용어들은, 본 발명이 속하는 기술 분야의 통상의 기술자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전들에서 정의되는 용어들과 같은 용어들은, 본 명세서에서 명시적으로 정의되지 않는 한, 관련된 기술 및/또는 본 명세서의 맥락에서의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하고, 이상적이거나 지나치게 형식적인 의미로 해석되어서는 안 된다.

Claims (20)

  1. 스토리지 장치에 있어서,
    제1 가중치 및 제1 값의 곱인 제1 결과 값을 포함하는 제1 계산 룩업 테이블을 저장하는 메모리 장치; 및
    상기 제1 가중치 및 상기 제1 값과 연관된 제1 연산을 수행하기 위한 제1 명령에 기초하여 상기 제1 결과 값을 수신하도록 구성된 로직 장치를 포함하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 제1 가중치는 제1 커널과 연관되고, 상기 제1 값은 제1 입력 특징 맵과 연관되고; 그리고
    상기 메모리 장치는 상기 제1 커널, 상기 제1 입력 특징 맵, 및 상기 제1 계산 룩업 테이블을 저장하는 메모리 어레이를 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 제1 명령은 상기 제1 커널을 상기 제1 입력 특징 맵과 곱하는 행렬 곱 연산을 수행하기 위한 것인 스토리지 장치.
  4. 제 2 항에 있어서,
    상기 스토리지 장치는 상기 제1 명령을 호스트로부터 수신하도록 구성되고; 그리고
    상기 제1 연산은 상기 제1 가중치 및 상기 제1 값의 곱을 결정하는 것을 포함하는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 제1 계산 룩업 테이블은 상기 제1 가중치에 대응하는 제1 로우 및 상기 제1 값에 대응하는 제1 컬럼을 포함하고;
    상기 제1 결과 값은 상기 제1 로우 및 상기 제1 컬럼에 대응하고; 그리고
    상기 메모리 장치는:
    상기 제1 로우를 로우 버퍼에 로딩하기 위해 상기 제1 가중치를 제1 로우 디코더에 입력하고; 그리고
    상기 제1 값을 중간 버퍼에 로딩하기 위해 상기 제1 가중치를 제2 로우 디코더에 입력하는 스토리지 장치.
  6. 제 5 항에 있어서,
    컬럼 디코더; 및
    컬럼 액세스 스케줄러를 더 포함하고,
    상기 컬럼 액세스 스케줄러는:
    상기 중간 버퍼로부터 상기 제1 값을 수신하고;
    상기 제1 컬럼에 대응하는 상기 로우 버퍼의 위치의 제1 값에 액세스하기 위해 상기 컬럼 디코더를 제어하고; 그리고
    상기 제1 결과 값을 읽기 버퍼에 출력하도록 구성된 스토리지 장치.
  7. 제 6 항에 있어서,
    상기 읽기 버퍼는 상기 로직 장치의 처리 소자에 의한 처리를 위해 상기 제1 결과 값을 출력하도록 구성된 스토리지 장치.
  8. 제 7 항에 있어서,
    상기 처리 소자는:
    상기 제1 입력 특징 맵에 대한 제1 수신된 결과 값으로써 상기 제1 결과 값을 수신하고; 그리고
    상기 제1 입력 특징 맵에 대한 출력 값을 생성하기 위해, 상기 제1 수신된 결과 값을 상기 제1 입력 특징 맵에 대한 제2 수신된 결과 값과 결합하도록 구성된 스토리지 장치.
  9. 제 4 항에 있어서,
    상기 스토리지 장치는 제2 커널 및 제2 입력 특징 맵과 연관된 제2 연산을 수행하기 위한 제2 명령을 수신하도록 구성되되, 상기 제2 명령은 상기 제2 커널을 상기 제2 입력 특징 맵과 콘볼빙하는 콘볼루션 연산을 수행하기 위한 것이고;
    제2 계산 룩업 테이블은 상기 메모리 어레이에 저장되고, 상기 제2 커널의 제2 가중치에 대응하는 제2 로우, 및 상기 제2 입력 특징 맵의 제2 값에 대응하는 제2 컬럼을 포함하고; 그리고
    제2 결과 값은 상기 제2 계산 룩업 테이블 내에서 상기 제2 로우 및 상기 제2 컬럼에 대응하는 위치에 저장되고, 상기 제2 결과 값은 상기 제2 커널의 상기 제2 가중치 및 상기 제2 입력 특징 맵의 상기 제2 값의 곱인 스토리지 장치.
  10. 제 2 항에 있어서,
    상기 스토리지 장치는 상기 제1 커널, 상기 제1 입력 특징 맵, 및 상기 제1 계산 룩업 테이블을 상기 제1 명령에 기초하여 상기 메모리 어레이에 저장하도록 구성된 스토리지 장치.
  11. 제 10 항에 있어서,
    상기 메모리 어레이에 할당된 상기 제1 계산 룩업 테이블의 비율은 상기 제1 명령에 의해 식별된 상기 제1 연산에 기초하는 스토리지 장치.
  12. 연산 결과들을 획득하기 위한 방법에 있어서,
    메모리 장치에서, 가중치 및 제1 값의 곱인 결과 값을 포함하는 계산 룩업 테이블을 저장하는 단계; 및
    로직 장치에서, 상기 가중치 및 상기 제1 값과 연관된 연산을 수행하기 위한 명령에 기초하여 상기 결과 값을 저장하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 가중치는 커널과 연관되고, 그리고 상기 제1 값은 입력 특징 맵과 연관되고; 그리고
    상기 메모리 장치는 상기 커널, 상기 입력 특징 맵, 및 상기 계산 룩업 테이블을 저장하는 메모리 어레이를 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 명령은 상기 커널을 상기 입력 특징 맵과 곱하는 행렬 곱 연산을 수행하기 위한 것인 방법.
  15. 제 13 항에 있어서,
    상기 로직 장치는 호스트로부터 상기 명령을 수신하도록 구성되고; 그리고
    상기 연산은 상기 가중치 및 상기 제1 값의 곱을 결정하는 것을 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 계산 룩업 테이블은 상기 가중치에 대응하는 제1 로우 및 상기 제1 값에 대응하는 제1 컬럼을 포함하고;
    상기 결과 값은 상기 제1 로우 및 상기 제1 컬럼에 대응하고; 그리고
    상기 메모리 장치는:
    상기 제1 로우를 로우 버퍼에 로딩하기 위해 상기 가중치를 제1 로우 디코더에 입력하고; 그리고
    상기 제1 값을 중간 버퍼에 로딩하기 위해 상기 가중치를 제2 로우 디코더에 입력하는 방법.
  17. 제 16 항에 있어서,
    컬럼 어드레스 스케줄러에 의해, 상기 중간 버퍼로부터 상기 제1 값을 수신하는 단계;
    상기 제1 컬럼에 대응하는 상기 로우 버퍼의 위치의 상기 제1 값에 액세스하기 위해 컬럼 디코더를 제어하는 단계; 및
    상기 결과 값을 읽기 버퍼에 출력하는 단계를 더 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 읽기 버퍼에 의해, 상기 로직 장치의 처리 소자에 의한 처리를 위해 상기 결과 값을 출력하는 단계를 더 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 처리 소자에 의해, 상기 입력 특징 맵에 대한 제1 수신된 결과 값으로써 상기 결과 값을 수신하는 단계; 및
    상기 입력 특징 맵에 대한 출력 값을 생성하기 위해 상기 제1 수신된 결과 값을 상기 입력 특징 맵에 대한 제2 수신된 결과 값과 결합하는 단계를 더 포함하는 방법.
  20. 연산 결과들을 획득하기 위한 시스템에 있어서,
    프로세서; 및
    명령어들을 저장하는 메모리를 포함하고,
    상기 명령어들은 상기 프로세서에 의해 실행되는 것을 기반으로, 상기 프로세서가 수행하도록 초래하는 것은:
    가중치 및 제1 값의 곱인 결과 값을 포함하는 계산 룩업 테이블을 저장하는 것; 및
    상기 가중치 및 상기 제1 값과 연관된 연산을 수행하기 위한 명령을 기반으로 결과 값을 수신하는 것인 시스템.
KR1020240070657A 2017-12-15 2024-05-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진 KR20240083094A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762599534P 2017-12-15 2017-12-15
US62/599,534 2017-12-15
US15/916,228 US11119677B2 (en) 2017-12-15 2018-03-08 HBM based memory lookup engine for deep learning accelerator
US15/916,228 2018-03-08
KR1020180131348A KR102672941B1 (ko) 2017-12-15 2018-10-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020180131348A Division KR102672941B1 (ko) 2017-12-15 2018-10-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진

Publications (1)

Publication Number Publication Date
KR20240083094A true KR20240083094A (ko) 2024-06-11

Family

ID=66815998

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180131348A KR102672941B1 (ko) 2017-12-15 2018-10-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진
KR1020240070657A KR20240083094A (ko) 2017-12-15 2024-05-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020180131348A KR102672941B1 (ko) 2017-12-15 2018-10-30 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진

Country Status (5)

Country Link
US (3) US11119677B2 (ko)
JP (1) JP7232633B2 (ko)
KR (2) KR102672941B1 (ko)
CN (1) CN110058802B (ko)
TW (1) TWI739029B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687759B2 (en) * 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
CN112334915A (zh) * 2018-06-25 2021-02-05 奥林巴斯株式会社 运算处理装置
US11139270B2 (en) 2019-03-18 2021-10-05 Kepler Computing Inc. Artificial intelligence processor with three-dimensional stacked memory
US11836102B1 (en) * 2019-03-20 2023-12-05 Kepler Computing Inc. Low latency and high bandwidth artificial intelligence processor
US20200356836A1 (en) * 2019-05-07 2020-11-12 Apple Inc. Fast deep learning fully-connected column-major implementation
US11844223B1 (en) 2019-05-31 2023-12-12 Kepler Computing Inc. Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging
US11152343B1 (en) 2019-05-31 2021-10-19 Kepler Computing, Inc. 3D integrated ultra high-bandwidth multi-stacked memory
US12086410B1 (en) 2019-05-31 2024-09-10 Kepler Computing Inc. Ferroelectric memory chiplet in a multi-dimensional packaging with I/O switch embedded in a substrate or interposer
CN112684977B (zh) * 2019-10-18 2024-05-28 旺宏电子股份有限公司 存储器装置及其存储器内计算方法
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
TWI722797B (zh) 2020-02-17 2021-03-21 財團法人工業技術研究院 記憶體內運算器及其運算方法
KR20220034542A (ko) 2020-09-11 2022-03-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102430982B1 (ko) * 2021-06-10 2022-08-11 삼성전자주식회사 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법
CN115469800A (zh) 2021-06-10 2022-12-13 三星电子株式会社 数据处理系统以及用于访问异构存储器系统的方法
US11791233B1 (en) 2021-08-06 2023-10-17 Kepler Computing Inc. Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging
CN113408713B (zh) * 2021-08-18 2021-11-16 成都时识科技有限公司 消除数据副本的方法、神经网络处理器及电子产品

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083388A (ja) * 1996-05-20 1998-03-31 Matsushita Electric Ind Co Ltd 直交変換装置
US8890215B2 (en) 1997-10-08 2014-11-18 Pact Xpp Technologies Ag Reconfigurable elements
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7055018B1 (en) 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US8390035B2 (en) 2009-05-06 2013-03-05 Majid Bemanian Massively parallel interconnect fabric for complex semiconductor devices
US8885890B2 (en) * 2010-05-07 2014-11-11 Microsoft Corporation Depth map confidence filtering
US8405214B2 (en) 2011-08-12 2013-03-26 Nanya Technology Corp. Semiconductor package structure with common gold plated metal conductor on die and substrate
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9836277B2 (en) 2014-10-01 2017-12-05 Samsung Electronics Co., Ltd. In-memory popcount support for real time analytics
US9954533B2 (en) 2014-12-16 2018-04-24 Samsung Electronics Co., Ltd. DRAM-based reconfigurable logic
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
JP6658033B2 (ja) 2016-02-05 2020-03-04 富士通株式会社 演算処理回路、および情報処理装置
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법

Also Published As

Publication number Publication date
JP7232633B2 (ja) 2023-03-03
US12056379B2 (en) 2024-08-06
US20230289081A1 (en) 2023-09-14
US11119677B2 (en) 2021-09-14
CN110058802B (zh) 2024-03-15
CN110058802A (zh) 2019-07-26
KR102672941B1 (ko) 2024-06-07
KR20190072404A (ko) 2019-06-25
TWI739029B (zh) 2021-09-11
US20190187898A1 (en) 2019-06-20
TW201931124A (zh) 2019-08-01
US20210405877A1 (en) 2021-12-30
JP2019109886A (ja) 2019-07-04
US11681451B2 (en) 2023-06-20

Similar Documents

Publication Publication Date Title
KR102672941B1 (ko) 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진
US11947961B2 (en) Memory lookup computing mechanisms
JP2671120B2 (ja) データ処理セルおよびデータプロセッサ
US20210182025A1 (en) Accelerating 2d convolutional layer mapping on a dot product architecture
CN111340201A (zh) 卷积神经网络加速器及其执行卷积运算操作的方法
TWI848184B (zh) 記憶體模組以及用於在記憶體內進行計算的方法
US11074214B2 (en) Data processing
KR20200066538A (ko) 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기
US12032497B2 (en) Scale-out high bandwidth memory system
US20230041850A1 (en) Adaptive matrix multiplication accelerator for machine learning and deep learning applications
US11429310B2 (en) Adjustable function-in-memory computation system
KR102606207B1 (ko) 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
CN114662647A (zh) 处理用于神经网络的层的数据
JP7180751B2 (ja) ニューラルネットワーク回路
TWI850513B (zh) 用於記憶體內計算的方法及用於計算的系統
US20220413750A1 (en) Adjustable function-in-memory computation system
Pinhao et al. Sparse matrix multiplication on a reconfigurable many-core architecture

Legal Events

Date Code Title Description
A107 Divisional application of patent