KR20210113761A - 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 - Google Patents
인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 Download PDFInfo
- Publication number
- KR20210113761A KR20210113761A KR1020200028900A KR20200028900A KR20210113761A KR 20210113761 A KR20210113761 A KR 20210113761A KR 1020200028900 A KR1020200028900 A KR 1020200028900A KR 20200028900 A KR20200028900 A KR 20200028900A KR 20210113761 A KR20210113761 A KR 20210113761A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data
- protocol
- threads
- internal
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 161
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012546 transfer Methods 0.000 title claims abstract description 13
- 238000013473 artificial intelligence Methods 0.000 claims abstract description 31
- 238000013507 mapping Methods 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 12
- 238000010977 unit operation Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 239000004065 semiconductor Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000032258 transport Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002547 new drug Substances 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
인공지능 연산기가 메모리 제어기를 통해서 외부 메모리로 데이터를 이동시키되, 각 데이터 이동 프로토콜을 연산 종류별로 특화하여 정의하고, 정의된 연산 종류별 프로토콜에 따라 데이터를 운반하는, 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 관한 것으로서, (a) 연산 종류에 따른 전송 프로토콜이 매핑 데이터로 사전에 저장되는 단계; (b) 상기 메인 연산기는 명령어를 분석하여 상기 내부 메모리와 상기 외부 메모리 간의 운반 명령인지를 판단하고, 운반 명령이면 연산 종류를 파악하는 단계; (c) 상기 메인 연산기는 상기 매핑 데이터를 참조하여 상기 연산 종류에 따른 전송 프로토콜을 검색하고, 검색된 프로토콜에 따른 운반 명령을 상기 메모리 제어기로 전달하는 단계; 및, (d) 상기 메모리 제어기는 검색된 프로토콜에 따라 메모리에 저장된 데이터를 운반시키는 단계를 포함하는 구성을 마련한다.
상기와 같은 방법에 의하여, 각 인공지능 연산에 특화된 프로토콜에 따라 내외부 메모리 간의 데이터를 운반함으로써, 연산 데이터의 연산량을 감소시키고, 엔드투엔드(End to End)의 최적화된 경로로 데이터를 운송하여 이동속도를 높일 수 있다.
상기와 같은 방법에 의하여, 각 인공지능 연산에 특화된 프로토콜에 따라 내외부 메모리 간의 데이터를 운반함으로써, 연산 데이터의 연산량을 감소시키고, 엔드투엔드(End to End)의 최적화된 경로로 데이터를 운송하여 이동속도를 높일 수 있다.
Description
본 발명은 인공지능 연산기가 메모리 제어기를 통해서 외부 메모리로 데이터를 이동시키되, 각 데이터 이동 프로토콜을 연산 종류별로 특화하여 정의하고, 정의된 연산 종류별 프로토콜에 따라 데이터를 운반하는, 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 관한 것이다.
최근 4차 산업혁명으로 인하여 반도체 산업은 인공지능, IoT, 클라우드, 빅데이터, 가상현실, 자율주행 등의 수요가 반영되는 지능형 반도체 중심으로 성장하고 기술이 발전할 전망이다. 즉, 인터넷, 스마트 폰을 통한 데이터 수가 급격히 증가하고, 이를 수집/분석하기 위한 빅데이터 처리 환경이 발전하고 있다. 또한, 딥러닝 등 기계학습 알고리즘 기술의 진화로 인하여 인공지능의 정확도가 급격히 향상되고 있으며 자율주행차, IoT 등 타 산업의 적용이 확대되고 있다.
이런 전망에 따라, 인공지능, IoT, 클라우드, 빅데이터, 가상현실, 자율주행 등의 4차 산업혁명을 구현할 수 있는 새로운 패러다임의 반도체 기술이 필요하다. 특히 로봇, 자동차, PC, 서버, 스마트폰, 가전 등 모든 사물(제품)에는 인공지능 서비스를 구현할 수 있도록 지능형 반도체가 탑재될 전망이다. 지능형 반도체 또는 인공지능 반도체는 인식, 추론, 학습, 판단 등 인공지능 서비스에 최적화(지능화, 저전력화, 안정화)된 소프트웨어와 시스템 반도체가 융합된 반도체를 말한다.
이러한 인공지능 반도체는 개인형 인공지능 디바이스, 자율이동체, 지능형 헬스케어, 빅데이터 처리, 차세대 통신 서비스, 스마트 시티, 증강현실, 인간형 지능로봇, 신약 개발, 에너지 등 사회, 경제, 국방 등 전 분야에 응용될 수 있다. 또한, 4차 산업혁명의 구현을 위한 인공지능 반도체는 기존 메모리 및 시스템 반도체를 능가하는 기술적인 요구사항을 충족시킬 전망이다.
인공지능 반도체는 학습, 추론 등 인공지능 구현에 요구되는 대규모 데이터 처리를 위한 기존 반도체의 한계점을 극복하기 위해 고성능, 저전력 기술 중심으로 발전되고 있다. 다양한 인공지능 SW가 개발되고 있으나, 기존 반도체에서 이를 실행시키기 위해서는 대규모, 대용량 연산 장치가 필요하고, 에너지 소비 과다 등 문제가 발생할 수 있다.
특히, 데이터 입력 순서에 따라 순차적으로 처리하는 기존 반도체(CPU)는 기계학습, 추론과 같은 대규모 데이터를 처리하기에는 연산 속도 및 전력 등의 한계가 존재한다. 특히, CPU 등 메인 프로세서가 중앙에서 모든 데이터를 처리, 제어하므로 연산량이 많아질수록 CPU와 메모리 사이의 병목현상이 발생하여 대규모 데이터를 처리 할 경우 속도 저하 및 막대한 전력 소모 발생한다.
전영득 외 1인, "저전력 메모리 인터페이스 구현을 위한 옵셋 및 feedback coefficient 조절 가능한 DFE 설계", 대한전자공학회 학술 대회 (추계) 2019.11, pp.132-133.
조민형 외 1인, "고속 메모리 인터페이스를 위한 6.4Gbps Low Voltage-Swing Terminated Logic 구동 회로 설계", 대한전자공학회 학술 대회 (추계) 2019, pp.136-137.
Youngbog Yoon, Chulwoo Kim, "An Area-efficient and Wide-range Inter-signal Skew Compensation Scheme with the Embedded Bypass Control Register Operating as a Binary Search Algorithm for DRAM Applications", IEEE Transactions on Circuits and Systems II: Express Briefs, 1 - 1, 12 November 2019.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 인공지능 연산기가 메모리 제어기를 통해서 외부 메모리로 데이터를 이동시키되, 각 데이터 이동 프로토콜을 연산 종류별로 특화하여 정의하고, 정의된 연산 종류별 프로토콜에 따라 데이터를 운반하는, 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 외부 메모리; 내부 메모리; 빅데이터를 다수의 쓰레드로 분할하여 연산을 수행시키는 메인 연산기; 및, 상기 메인 연산기의 명령에 따라, 상기 메모리에 저장된 쓰레드 데이터의 처리를 수행하는 메모리 제어기를 포함하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 관한 것으로서, (a) 연산 종류에 따른 전송 프로토콜이 매핑 데이터로 사전에 저장되는 단계; (b) 상기 메인 연산기는 명령어를 분석하여 상기 내부 메모리와 상기 외부 메모리 간의 운반 명령인지를 판단하고, 운반 명령이면 연산 종류를 파악하는 단계; (c) 상기 메인 연산기는 상기 매핑 데이터를 참조하여 상기 연산 종류에 따른 전송 프로토콜을 검색하고, 검색된 프로토콜에 따른 운반 명령을 상기 메모리 제어기로 전달하는 단계; 및, (d) 상기 메모리 제어기는 검색된 프로토콜에 따라 메모리에 저장된 데이터를 운반시키는 단계를 포함하는 것을 특징으로 한다.
또, 본 발명은 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 있어서, 상기 메모리는 3세대 고대역폭메모리(HBM3) 규격에 의해 설계되는 것을 특징으로 한다.
또, 본 발명은 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 있어서, 상기 메모리 서브 시스템은, 하나의 쓰레드를 처리하는 스트림 프로세서(SP)를 다수 구비하고, 하나의 공유메모리를 구비한 다수의 스트림 멀티프로세서(SM); 및, 상기 SM이 공유하는 하나의 상수메모리를 포함하고, 상기 메인 제어기는 상기 단위 연산을 하나의 쓰레드로 정하여 상기 메모리 서브 시스템으로 하여금 병렬 연산을 수행하게 하는 것을 특징으로 한다.
또, 본 발명은 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 있어서, 상기 메인 제어기는, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정하는 것을 특징으로 한다.
또, 본 발명은 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 있어서, 상기 쓰레드의 개수는 SM당 할당한 쓰레드와 상기 메모리 서브 시스템 내의 총 SM의 개수의 곱으로 구하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 의하면, 각 인공지능 연산에 특화된 프로토콜에 따라 내외부 메모리 간의 데이터를 운반함으로써, 연산 데이터의 연산량을 감소시키고, 엔드투엔드(End to End)의 최적화된 경로로 데이터를 운송하여 이동속도를 높일 수 있는 효과가 얻어진다.
도 1은 본 발명의 일실시예에 따른 연산 특성에 기반하여 내부와 외부 메모리 간의 데이터 전송을 위한 인공지능 연산기에 대한 구성도.
도 2는 본 발명의 일실시예에 따른 메인 제어기의 구성도.
도 3은 본 발명의 일실시예에 따라 처리되는 연산 단위의 예시도.
도 4는 본 발명의 일실시예에 따른 워프의 실행 스케쥴의 예시도.
도 5는 본 발명의 일실시예에 따른 블록당 쓰레드 할당 방법의 예시도.
도 6은 본 발명의 일실시예에 따른 블록당 레지스터 할당 방법의 예시도.
도 7은 본 발명의 일실시예에 따른 블록당 쓰레드 할당에 의한 SM 연산 스케쥴링의 예시도.
도 8은 본 발명의 일실시예에 따른 메모리 서브 시스템의 메모리에 저장되는 데이터 형태로서, (a) 일반적인 형태, (b) 구조체를 이용한 벡터화의 예시도.
도 9는 본 발명의 일실시예에 따른 멀티 쓰레딩 기법을 이용한 다중 메모리 서브 시스템 제어 방법의 예시도.
도 10은 본 발명의 일실시예에 따른 단일 쓰레드로 다중 메모리 서브 시스템 제어 방법의 예시도.
도 2는 본 발명의 일실시예에 따른 메인 제어기의 구성도.
도 3은 본 발명의 일실시예에 따라 처리되는 연산 단위의 예시도.
도 4는 본 발명의 일실시예에 따른 워프의 실행 스케쥴의 예시도.
도 5는 본 발명의 일실시예에 따른 블록당 쓰레드 할당 방법의 예시도.
도 6은 본 발명의 일실시예에 따른 블록당 레지스터 할당 방법의 예시도.
도 7은 본 발명의 일실시예에 따른 블록당 쓰레드 할당에 의한 SM 연산 스케쥴링의 예시도.
도 8은 본 발명의 일실시예에 따른 메모리 서브 시스템의 메모리에 저장되는 데이터 형태로서, (a) 일반적인 형태, (b) 구조체를 이용한 벡터화의 예시도.
도 9는 본 발명의 일실시예에 따른 멀티 쓰레딩 기법을 이용한 다중 메모리 서브 시스템 제어 방법의 예시도.
도 10은 본 발명의 일실시예에 따른 단일 쓰레드로 다중 메모리 서브 시스템 제어 방법의 예시도.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명의 일실시예에 따른 연산 특성에 기반하여 내부와 외부 메모리 간의 데이터 전송을 위한 인공지능 연산기의 구성에 대하여 도 1을 참조하여 설명한다.
도 1에서 보는 바와 같이, 본 발명의 일실시예에 따른 연산 특성에 기반하여 내부와 외부 메모리 간의 데이터 전송을 위한 인공지능 연산기(1)는 메인 연산기(30) 및 적어도 하나의 메모리 서브 시스템(40)으로 구성된다.
메모리 서브 시스템(40)은 하나의 분할 데이터를 저장하고 처리하는 메모리들을 다수 구비하여, 다수의 데이터 쓰레드를 처리하는 통상의 메모리 제어기이다.
메인 연산기(30)는 빅데이터를 입력받아 범용 CPU를 통해 인공지능 연산 처리를 위한 데이터를 처리한다. 빅데이터 생성 수식은 빅데이터 영상의 한 화소의 강도를 구하는 수식으로서, 빅데이터 화소의 강도는 모든 광원 각각에 대한 연산을 누적하여 계산한다. 이때, 각 광원에 대한 연산을 단위 연산, 단위 빅데이터 연산 등이라 부르기로 한다.
메인 연산기(30)는 단위 연산을 하나의 빅데이터 쓰레드로 정하여 메모리 서브 시스템(40)에게 처리하도록 한다. 이때, 메인 연산기(30)는 빅데이터 생성 수식을 처리하기 위한 많은 수의 단위 연산들을 각각 다수의 빅데이터 쓰레드에 할당하여, 병렬로 처리하게 한다.
또한, 메인 연산기(30)는 입출력의 양이 최소가 되고, 전체 연산이 효율적으로 처리되도록, 단위 연산들에 필요한 상수, 변수값들을 메모리 서브 시스템(40)의 메모리에 입출력하게 하거나, 단위 연산들을 블록의 쓰레드로 할당하는 등의 병렬 연산을 위한 스케쥴링을 수행한다.
다음으로, 본 발명에 사용되는 메모리 서브 시스템의 구성을 도 2를 참조하여 설명한다.
먼저, 메모리 서브 시스템의 구조에 대하여 도 2를 참조하여 설명한다.
고성능 제어기와 적은 ALU(Arithmetic and Logic Unit)을 가지는 CPU의 구조와는 달리 서브 시스템은 작은 컨트롤 유닛과 다수의 ALU를 포함하고 있어 연산 능력에서 병렬 화에 유리한 구조를 가진다.
즉, 도 2와 같이 하나의 메모리 서브 시스템 내에는 하나의 DRAM(Global Memory, 전역 메모리)과 여러 개의 SM(Streaming Multiprocessor) 및 Load/Store 유닛 등을 가지고 있다. 하나의 SM은 여러 개의 SP(Streaming Processor)와 캐시메모리 등으로 이루어져 있으며, SP에서는 하나의 데이터의 연산을 처리할 수 있는 능력을 가지게 된다.
서브 시스템 내의 DRAM은 저장할 수 있는 데이터량은 크지만 여러 SM에서 동시 접근에 대한 병목 현상 및 접근에 대한 대기지연 등의 이유로 접근 속도는 느리다. 하지만 캐시 형태로 되어 있는 상수메모리(Constant Memory)나 SM 내부의 공유 메모리(Shared Memory, Parallel Data Cache)는 저장할 수 있는 데이터 량은 적지만 접근 속도가 빠르다. 따라서 일반적으로 많이 사용되는 파라미터는 상수 메모리나 공유 메모리를 사용하는 것이 유리하다.
다음으로, 범용 메모리 서브 시스템의 동작에 대하여 도 3과 도 4를 참조하여 설명한다.
병렬 프로그래밍을 위해, 앞에서 설명한 메모리 서브 시스템내의 연산 단위인 SP 또는 SM을 할당하는 단위로 쓰레드(thread)와 블록(block), 및 그리드(grid)로 나눈다. 이때, 바람직하게는, 메모리 서브 시스템의 커널 코드의 변수를 설정할 수 있는 CUDA 등과 같은 프로그래밍 도구를 이용할 수 있다.
도 3과 같이 하나의 블록은 3차원의 쓰레드로 이루어져 있고, 또한 하나의 그리드는 3차원의 블록으로 이루어진다. 각 쓰레드는 메모리 서브 시스템내의 SP에 맵핑되며 연산하는 최소 단위로 하나의 블록내의 최대 쓰레드의 개수는 메모리 서브 시스템의 성능에 따라 결정된다. 또한 블록은 하나의 스트림 멀티프로세서(SM 또는 MP)에서만 구성된다. 즉, 하나의 블록이 동시에 2개 이상의 SM에서 구성될 수 없다.
또한 각 쓰레드는 블록 내에서의 인덱스를 가지게 되며 도 4와 같이 워프(Warp) 단위로 동시에 실행된다. 따라서 모든 쓰레드를 효율적으로 실행시키기 위해서는 블록당 쓰레드의 개수를 워프의 배수로 하는 것이 유리하다. 또한 예외처리가 필요한 부분에서는 워프 단위 내에서는 같은 조건으로 예외 처리하는 것이 동시 실행의 병렬성을 유지할 수 있다.
워프는 동시에 스트림 프로세서(SP)가 동작할 수 있는 단위이다. 예를 들어, 워프의 단위가 4이면, 5개의 쓰레드를 동작시키기 위해서는 2개의 워프가 동작을 하게 된다. 그런데, 워프는 동시에 동작할 수 있는 스트림 프로세서(SP)의 단위이기 때문에, 블록당 쓰레드의 개수를 워프의 배수로 해야 최대 SP의 효율을 나타낼 수 있다.
예를 들어, 메모리 서브 시스템의 특성이 SM 내에 SP의 개수가 12개이고 워프 단위가 4일 때 블록당 쓰레드를 8개로 할당하는 경우를 살펴보자, 이때, 하나의 스트림 멀티프로세서(SM)는 하나의 블록을 처리하기 때문에, 하나의 SM에 8개의 쓰레드가 배정된다. 그리고 8개의 쓰레드에 대하여 2개의 워프로 수행되고, 각 워프는 각각 4개의 SP를 사용한다. 따라서 SM 내에 나머지 4개의 SP는 사용되지 않고 낭비된다.
이 경우, 블록당 쓰레드의 개수를 4개로 할당하는 것이 유리하다.
앞서의 예에서, 블록당 쓰레드를 8개로 설정하고 3개의 블록을 동작할 경우 하나의 SM내에 8개씩 SP가 동작을 하게 되고 3개의 SM을 동작하게 된다. 만약 SM이 1개 있는 메모리 서브 시스템일 경우에는 8개씩 3번의 동작을 하게 된다. 반면 블록당 쓰레드를 4개로 하고 6개의 블록을 설정하면 하나의 SM내에 SP 12개 모두 동작을 하며 2번의 반복 동작만 하면 된다.
따라서 현재 장착되어 있는 메모리 서브 시스템의 HW적인 특성(SM,SP 등)을 확인 후 최대 효율을 낼 수 있는 블록과 쓰레드의 개수를 설정해야 한다.
또한, 각 블록은 블록 내의 쓰레드에 따라서 하나 혹은 그 이상의 블록이 하나의 SM으로 맵핑되어 동작한다. 블록 내의 모든 쓰레드 내에 할당된 레지스터의 개수가 SM 내의 총 레지스터의 개수 이하로 될 경우 최대의 블록으로 할당할 수 있다. 즉, SM내에 구성되어 있는 SP의 개수를 확인하여 블록당 쓰레드의 개수를 결정하여 하나의 SM내에 구성할 수 있는 최대 블록을 할당한다.
또한 블록도 쓰레드와 같이 인덱스를 가지게 되며 모든 SM에 할당된 블록의 개수가 그리드당 총 블록의 수보다 적을 경우 모든 할당된 블록의 동작이 끝난 뒤 남은 블록들이 동작이 이루어진다.
다음으로, 본 발명에 따른 제어기에 의해 범용 메모리 서브 시스템에서 자원 할당 방법에 대하여 도 5 및 도 6을 참조하여 설명한다.
효율적인 메모리 서브 시스템의 동작을 하기 위해서는 메모리 서브 시스템의 적절한 자원을 할당하여 동작하여야 한다. 자원을 할당하기 위해서는 동작하는 메모리 서브 시스템의 특성 확인을 해야 한다. 효율적인 동작을 위해서는 블록당 쓰레드, 쓰레드당 레지스터의 수 그리고 블록당 공유 메모리의 크기를 할당해야 한다.
첫째로 쓰레드를 할당하기 위해서는 메모리 서브 시스템 특성을 통해서 블록당 최대 쓰레드의 개수와 SM당 최대 쓰레드의 개수를 확인하여야 한다. 만약 블록당 최대 쓰레드 개수가 16개이고 SM당 최대 쓰레드는 24개일 경우 도 5와 같이 블록당 쓰레드를 16개로 할당하는 것보다 8개로 할당하는 것이 유리하다. 16개로 할당하면 8개의 할당할 수 있는 쓰레드는 낭비하게 된다. 따라서 블록당 쓰레드를 SM당 최대 쓰레드에 맞추어 8개로 해야 한다. 도 6에 블록당 쓰레드의 할당에 따른 스케쥴링 나타내었다.
SM당 최대 쓰레드의 개수(SP의 개수)가 K개이고 블록당 최대 쓰레드의 개수는 L이라고 할 때, 설정할 블록당 쓰레드의 개수 S는 다음 조건을 만족해야 한다.
S <= L
K=nS (K는 S의 최소의 정수배)
즉, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정한다.
둘째로 쓰레드당 레지스터 할당하기 위해서는 메모리 서브 시스템 특성에서 SM당 32비트 레지스터의 수를 확인해야 한다. 블록당 쓰레드 할당을 통하여 SM당 블록의 수를 확인을 할 수 있다. SM당 블록과 레지스터의 수를 통해서 하나의 블록당 레지스터의 최대 개수를 구할 수 있다. 만약 하나의 블록에 모든 쓰레드 내의 레지스터가 최대 개수보다 많을 경우 SM당 블록의 개수를 줄여야 한다. 따라서 도 7과 같이 블록 내에 최대 개수보다 적도록 쓰레드당 레지스터를 결정해야 한다.
메모리 서브 시스템 커널 코드에서 정수형 변수를 선언하게 되면 이것이 하나의 레지스터를 할당하게 된다. 불필요한 레지스터는 최대한 줄이는 것이 유리하다.
마지막으로 메모리 접근 속도를 높이기 위해서는 공유 메모리 혹은 상수 메모리를 사용하는 것이 유리하다. 공유 메모리의 경우 SM당 저장할 수 있는 데이터량이 정해져 있기 때문에 공유 메모리를 효율적으로 사용하기 위해서는 적절히 할당해야 한다. 공유 메모리를 할당하기 위해서는 메모리 서브 시스템의 특성에서 SM당 공유메모리의 크기를 확인해야 한다. 공유 메모리는 블록내의 쓰레드간의 공유할 수 있는 특성을 가지기 때문에 앞의 두 방법으로 SM당 블록의 수를 정한 뒤에 SM당 공유메모리의 최대 크기를 구할 수 있다. 두 번째 할당 방법과 같이 SM내의 모든 블록의 공유 메모리의 크기가 SM당 공유 메모리보다 클 경우 SM당 블록의 수를 줄여 동작을 하게 된다.
상수 메모리는 캐시 형태의 메모리로써 모든 SM에서 접근이 가능한 메모리이다. 캐시 형태로 되어있어 전역 메모리로의 접근에 비하여 매우 빠른 접근 속도를 가진다. 하지만 전역 메모리에 비하여 적은 양의 데이터를 저장할 수 있다. 따라서 적은 양의 데이터나 파라미터 및 행렬 값과 같이 적은 값을 저장하고 반복 연산을 수행하기위한 데이터를 저장하는 것이 효율적이다.
다음으로, 범용 메모리 서브 시스템의 메모리 접근에 대하여 도 8을 참조하여 설명한다.
전역 메모리는 DRAM으로 이루어져있다. 따라서 전역 메모리로 접근을 할 경우 지연시간이 발생한다. 따라서 하나의 쓰레드에서 전역 메모리에 접근 할 때 순차적인 메모리 주소를 접근하는 것이 레이턴시를 줄이는 것에 유리하다. 도 8은 하나의 쓰레드에서 전역 메모리에서 데이터를 불러올 때 데이터의 형태를 나타내었다. 한 번의 연산을 위해 전역 메모리에서 불러와야 하는 데이터가 두 개 이상일 경우 이에 해당하는 데이터는 구조체의 배열 형태로 전역메모리로 저장해 놓고 커널에서는 접근 할 때 순차적인 주소로 데이터를 읽어 올 수 있다.
전역 메모리 접근 대역폭 대비 부동 소수점 연산의 비는 CGMA(Compute to Global Memory Access)로 정의되며 장착된 메모리 서브 시스템의 DRAM(전역 메모리)의 클록 주파수와 메모리의 대역폭과 부동소수점 연산 능력을 확인할 수 있다. 수학식 1을 통해서 초당 전역 메모리의 접근 대역폭을 구할 수 있다. TAccessMemory/s는 초당 전역 메모리의 접근 대역폭이고 NMemoryBandwidth메모리의 대역폭 그리고 fMemoryClockFreq.는 메모리의 동작 주파수에 해당한다.
또한 메모리 서브 시스템의 계산능력은 수학식 2를 통해서 초당 부동 소수점 연산능력을 구할 수 있다. Flops는 초당 부동소수점 연산능력이고 NSP는 총 SP의 개수, NOP/Cycle은 1 cycle당 하나의 SP가 연산할 수 있는 능력이고 fClockFreq.은 메모리 서브 시스템의 동작 주파수이다.
다음으로, 다중 범용 메모리 서브 시스템에 대하여 도 9와 도 10을 참조하여 설명한다.
단일 메모리 서브 시스템으로도 처리하기 힘든 알고리즘이 있을 경우 2대 이상의 메모리 서브 시스템을 연결하여 다중 메모리 서브 시스템을 이용하여 데이터를 처리하여 속도를 높일 수 있다. 다중 메모리 서브 시스템을 구동하기 위한 방법은 CPU의 멀티 쓰레드를 이용하여 다중 메모리 서브 시스템 각각을 제어하는 방법과 하나의 쓰레드를 이용하여 메모리 서브 시스템과 CPU의 동작을 독립적으로 나누어 제어하는 방법 그리고 위 둘을 동시에 사용하는 방법이 있다.
CPU의 멀티 쓰레딩 기법을 이용하여 각각의 메모리 서브 시스템을 제어하는 방법은 도 9에 나타내었다. 각각의 CPU의 쓰레드에서 메모리 서브 시스템의 전역메모리에 데이터를 전송하고 커널을 실행시키고 커널이 종료되면 메모리 서브 시스템의 전역메모리에서 DRAM(Host)로 데이터를 받아오게 된다.
많은 CPU의 쓰레드를 할당하기 어려울 경우 하나의 쓰레드를 이용하여 다중 메모리 서브 시스템을 제어할 수 있다. 도 10에 호스트와 메모리 서브 시스템간 독립적인 동작을 하는 타이밍도를 나타내었다. 호스트에서 첫 번째 메모리 서브 시스템에 데이터를 전송하고 커널을 개시한 뒤 다음 메모리 서브 시스템에 데이터를 전송하고 커널을 개시한다. N개의 메모리 서브 시스템에 데이터 전송 및 커널을 개시한 뒤에 다시 처음 메모리 서브 시스템부터 N번째 메모리 서브 시스템까지 출력 데이터를 호스트의 DRAM으로 데이터를 받는다.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 빅데이터 30 : 메인 프로세서
40 : 메모리 서브 시스템
40 : 메모리 서브 시스템
Claims (5)
- 외부 메모리; 내부 메모리; 빅데이터를 다수의 쓰레드로 분할하여 연산을 수행시키는 메인 연산기; 및, 상기 메인 연산기의 명령에 따라, 상기 메모리에 저장된 쓰레드 데이터의 처리를 수행하는 메모리 제어기를 포함하는, 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법에 있어서,
(a) 연산 종류에 따른 전송 프로토콜이 매핑 데이터로 사전에 저장되는 단계;
(b) 상기 메인 연산기는 명령어를 분석하여 상기 내부 메모리와 상기 외부 메모리 간의 운반 명령인지를 판단하고, 운반 명령이면 연산 종류를 파악하는 단계;
(c) 상기 메인 연산기는 상기 매핑 데이터를 참조하여 상기 연산 종류에 따른 전송 프로토콜을 검색하고, 검색된 프로토콜에 따른 운반 명령을 상기 메모리 제어기로 전달하는 단계; 및,
(d) 상기 메모리 제어기는 검색된 프로토콜에 따라 메모리에 저장된 데이터를 운반시키는 단계를 포함하는 것을 특징으로 하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법.
- 제1항에 있어서,
상기 메모리는 3세대 고대역폭메모리(HBM3) 규격에 의해 설계되는 것을 특징으로 하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법.
- 제1항에 있어서,
상기 메모리 서브 시스템은, 하나의 쓰레드를 처리하는 스트림 프로세서(SP)를 다수 구비하고, 하나의 공유메모리를 구비한 다수의 스트림 멀티프로세서(SM); 및, 상기 SM이 공유하는 하나의 상수메모리를 포함하고, 상기 메인 제어기는 상기 단위 연산을 하나의 쓰레드로 정하여 상기 메모리 서브 시스템으로 하여금 병렬 연산을 수행하게 하는 것을 특징으로 하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법.
- 제1항에 있어서,
상기 메인 제어기는, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정하는 것을 특징으로 하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법.
- 제1항에 있어서,
상기 쓰레드의 개수는 SM당 할당한 쓰레드와 상기 메모리 서브 시스템 내의 총 SM의 개수의 곱으로 구하는 것을 특징으로 하는 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200028900A KR20210113761A (ko) | 2020-03-09 | 2020-03-09 | 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200028900A KR20210113761A (ko) | 2020-03-09 | 2020-03-09 | 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210113761A true KR20210113761A (ko) | 2021-09-17 |
Family
ID=77924148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200028900A Pending KR20210113761A (ko) | 2020-03-09 | 2020-03-09 | 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20210113761A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102453343B1 (ko) * | 2022-07-26 | 2022-10-11 | (주)나래데이터 | 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법 |
-
2020
- 2020-03-09 KR KR1020200028900A patent/KR20210113761A/ko active Pending
Non-Patent Citations (3)
Title |
---|
Youngbog Yoon, Chulwoo Kim, "An Area-efficient and Wide-range Inter-signal Skew Compensation Scheme with the Embedded Bypass Control Register Operating as a Binary Search Algorithm for DRAM Applications", IEEE Transactions on Circuits and Systems II: Express Briefs, 1 - 1, 12 November 2019. |
전영득 외 1인, "저전력 메모리 인터페이스 구현을 위한 옵셋 및 feedback coefficient 조절 가능한 DFE 설계", 대한전자공학회 학술 대회 (추계) 2019.11, pp.132-133. |
조민형 외 1인, "고속 메모리 인터페이스를 위한 6.4Gbps Low Voltage-Swing Terminated Logic 구동 회로 설계", 대한전자공학회 학술 대회 (추계) 2019, pp.136-137. |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102453343B1 (ko) * | 2022-07-26 | 2022-10-11 | (주)나래데이터 | 데이터 이관 작업에 대한 스케줄링을 통해 빠른 데이터 이관을 가능하게 하는 전자 장치 및 그 동작 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11562213B2 (en) | Methods and arrangements to manage memory in cascaded neural networks | |
KR102662211B1 (ko) | 칩에 상주하는 파라미터를 갖는 신경망 가속기 | |
EP4020209A1 (en) | Hardware offload circuitry | |
US10997273B2 (en) | Method and apparatus for distributed and cooperative computation in artificial neural networks | |
US11403104B2 (en) | Neural network processor, chip and electronic device | |
US20220043770A1 (en) | Neural network processor, chip and electronic device | |
WO2022142479A1 (zh) | 一种硬件加速器、数据处理方法、系统级芯片及介质 | |
Du et al. | Model parallelism optimization for distributed inference via decoupled CNN structure | |
Lee et al. | ComPEND: Computation pruning through early negative detection for ReLU in a deep neural network accelerator | |
US11403102B2 (en) | Technology to learn and offload common patterns of memory access and computation | |
CN114781632A (zh) | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 | |
CN116822600A (zh) | 一种基于risc-v架构的神经网络搜索芯片 | |
Chen et al. | fgSpMSpV: A fine-grained parallel SpMSpV framework on HPC platforms | |
George et al. | A unified programmable edge matrix processor for deep neural networks and matrix algebra | |
Vaithianathan et al. | High-Performance Computing with FPGA-Based Parallel Data Processing Systems | |
KR102767977B1 (ko) | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 | |
KR20210113761A (ko) | 인공지능 연산기에 의한 내부와 외부 메모리 간의 연산 특성 기반 데이터 전송 방법 | |
CN118761448B (zh) | Ai加速器架构及基于该架构的ai芯片 | |
KR20210113762A (ko) | 연산량에 따른 가변 데이터 동작 주파수 기반 인공지능 연산기 시스템 | |
CN114281543A (zh) | 一种基于固态存储实现存算一体化的系统及方法 | |
KR20220117433A (ko) | 인공지능 반도체에 최적화된 개방형 메모리 서브 시스템 | |
Li et al. | Dual buffer rotation four-stage pipeline for CPU–GPU cooperative computing | |
KR20210113760A (ko) | 메모리 제어기에서 연산 기능을 분담하는 인공지능 프로세서 시스템 | |
CN117436528A (zh) | 一种基于risc-v的ai网络模型推理单元及网络模型推理流水线技术 | |
KR102487617B1 (ko) | 저비용으로 다종의 데이터를 처리하는 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20200309 |
|
PG1501 | Laying open of application |