KR20210106635A - 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 - Google Patents
가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 Download PDFInfo
- Publication number
- KR20210106635A KR20210106635A KR1020200021334A KR20200021334A KR20210106635A KR 20210106635 A KR20210106635 A KR 20210106635A KR 1020200021334 A KR1020200021334 A KR 1020200021334A KR 20200021334 A KR20200021334 A KR 20200021334A KR 20210106635 A KR20210106635 A KR 20210106635A
- Authority
- KR
- South Korea
- Prior art keywords
- accelerator
- memory
- level
- internal memory
- data
- Prior art date
Links
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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템이 개시된다. 개시된 가속기의 동작 방법은 메인 프로세서로부터 하나 이상의 워크로드들을 할당 받는 단계, 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 가속기의 내부 메모리 또는 내부 메모리에 입력되거나 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행하는 단계 및 하나 이상의 연산의 수행 결과를 제공하는 단계를 포함한다.
Description
아래 실시예들은 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술이 발전함에 따라 인공 지능만을 위한 독자적인 하드웨어의 필요성이 증가하고 있다. 인공 지능은 예를 들어, 특정한 연산을 통해 추론과 학습을 수행할 수 있다. 이와 같이 인공 지능을 구현 하고 실행하기 위한 전용 하드웨어로서 다양한 장치들이 개발되고 있다.
인공 지능을 위한 전용 하드웨어는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit) 등에 의해 구현될 수도 있고, 용도 변경이 가능한 FPGA(Field Programmable Gate Array), 및 ASIC(Application Specific Integrated Circuit) 등에 의해 구현될 수도 있다.
일실시예에 따른 가속기의 동작 방법은 메인 프로세서로부터 하나 이상의 워크로드들(workloads)을 할당 받는 단계; 상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA(Direct Memory Access)에서 수행하는 단계; 및 상기 하나 이상의 연산의 수행 결과를 제공하는 단계를 포함한다.
일실시예에 따른 가속기의 동작 방법에서 상기 연산들 중 하나 이상을 수행하는 단계는 상기 연산들 중 하나 이상의 감산 연산(reduction operation)을 수행할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 감산 연산은 연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 연산일 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 감산 연산은 내적(inner product), MAX 함수(Maximum function), MIN 함수(Minimum function), AVG 함수(Average function), 덧셈, 곱셈, 집계(aggregation) 중 어느 하나의 연산일 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 연산들 중 하나 이상을 수행하는 단계는 상기 내부 메모리에 배치된 연산기에서, 상기 내부 메모리에 저장된 데이터에 상기 하나 이상의 연산을 수행할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 연산들 중 하나 이상을 수행하는 단계는 상기 DMA에 배치된 연산기에서, 상기 DMA에 의해 상기 내부 메모리로부터 읽힌 데이터에 상기 하나 이상의 연산을 수행할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 수행 결과를 제공하는 단계는 상기 하나 이상의 연산의 수행 결과를 상기 가속기에 포함되어 상기 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들 중 적어도 하나 또는 상기 내부 메모리로 제공할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 내부 메모리는 상기 복수의 프로세싱 유닛들 중 어느 하나의 프로세싱 유닛이 액세스 가능한 레벨0 메모리; 상기 복수의 프로세싱 유닛들 중 일부가 액세스 가능한 레벨1 메모리; 및 상기 복수의 프로세싱 유닛들이 액세스 가능한 레벨2 메모리 중 어느 하나 또는 이들의 조합을 포함할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 연산들 중 하나 이상을 수행하는 단계는 상기 내부 메모리 및/또는 상기 DMA에 오프-로딩된 확장을 통해 상기 연산들 중 하나 이상을 수행할 수 있다.
일실시예에 따른 가속기의 동작 방법에서 상기 가속기는 워크로드에 따른 뉴럴 네트워크를 이용하여 인식하고자 하는 데이터가 입력된 사용자 단말 또는 상기 사용자 단말로부터 상기 인식하고자 하는 데이터를 수신하는 서버에 포함될 수 있다.
일실시예에 따른 가속기는 메인 프로세서로부터 할당된 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들; 및 복수의 프로세싱 유닛들 중 적어도 하나가 액세스 가능한 멀티레벨 메모리를 포함하고, 상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상은 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행된다.
일실시예에 따른 가속기 시스템은 하나 이상의 워크로드를 수행하는 복수의 프로세싱 유닛들 및 액세스 비용이 상이한 멀티레벨 메모리를 포함하는 가속기; 및 상기 가속기로 상기 하나 이상의 워크로드를 할당하는 메인 프로세서를 포함하고, 상기 가속기는 상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행한다.
도 1은 일실시예에 따른 가속기 시스템을 설명하기 위한 도면이다.
도 2는 일실시예에 따른 가속기를 설명하기 위한 도면이다.
도 3은 일실시예에 따라 멀티레벨 메모리 및 메인 메모리를 설명하기 위한 도면이다.
도 4는 일실시예에 따라 내부 메모리 및/또는 DMA의 확장(extension)에서 감산 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 가속기 시스템에 포함된 컴포넌트들을 설명하기 위한 도면이다.
도 6 및 도 7은 일실시예에 따른 가속기 시스템의 예시들을 설명하기 위한 도면이다.
도 8은 일실시예에 따른 가속기의 동작 방법을 나타낸 도면이다.
도 2는 일실시예에 따른 가속기를 설명하기 위한 도면이다.
도 3은 일실시예에 따라 멀티레벨 메모리 및 메인 메모리를 설명하기 위한 도면이다.
도 4는 일실시예에 따라 내부 메모리 및/또는 DMA의 확장(extension)에서 감산 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 가속기 시스템에 포함된 컴포넌트들을 설명하기 위한 도면이다.
도 6 및 도 7은 일실시예에 따른 가속기 시스템의 예시들을 설명하기 위한 도면이다.
도 8은 일실시예에 따른 가속기의 동작 방법을 나타낸 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 아래의 특정한 구조적 내지 기능적 설명들은 단지 실시예들을 설명하기 위한 목적으로 예시된 것으로, 실시예의 범위가 본문에 설명된 내용에 한정되는 것으로 해석되어서는 안된다. 관련 기술 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타내며, 공지된 기능 및 구조는 생략하도록 한다.
도 1은 일실시예에 따른 가속기 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 일실시예에 따른 가속기 시스템(100)은 메인 프로세서(110), 메인 메모리(120) 및 가속기(130)를 포함할 수 있다. 메인 프로세서(110), 메인 메모리(120) 및 가속기(130)는 버스(bus)(140)를 통하여 서로 통신할 수 있다.
메인 프로세서(110)는 가속기 시스템(100)에 포함된 컴포넌트들의 동작을 제어하는 장치로, 예를 들어, 중앙 처리 장치(CPU; Central Processing Unit)를 포함할 수 있다. 메인 프로세서(110)는 가속기(130)로 하나 이상의 워크로드들을 할당할 수 있다. 워크로드는 객체 인식, 음성 인식, 패턴 인식, 컴퓨터 비전, 기계 번역 등을 위해 가속기(130)로 하여금 뉴럴 네트워크를 실행하도록 하는 명령을 나타낼 수 있다. 메인 프로세서(110)는 요청되는 하나 이상의 작업에 따라 하나 이상의 워크로드들을 가속기(130)에 할당할 수 있다.
메인 메모리(120)는 가속기(130)의 외부에 배치된 메모리로서, 예를 들어, DRAM일 수 있다. 가속기(130)에서 하나 이상의 워크로드들을 수행하는 데 가속기(130) 내부에 존재하는 메모리가 충분하지 않은 경우에 메인 메모리(120)가 활용될 수 있다.
메인 메모리(120)는 가속기(130) 내부의 멀티레벨 메모리보다 큰 용량을 가지나, 가속기(130)에서 메인 메모리(120)로 액세스하는 비용이 내부의 멀티레벨 메모리로 액세스하는 비용보다 크다. 액세스 비용은 해당 메모리에 액세스하여 데이터를 읽거나 쓸 때 소요되는 전력 및/또는 시간을 나타낼 수 있다. 본 명세서에서 멀티레벨 메모리는 가속기(130) 내부에 포함되는 메모리로서, 설명의 편의를 위해 내부 메모리라고도 표현될 수 있다.
가속기(130)는 할당된 워크로드에 따른 뉴럴 네트워크를 실행하여 입력되는 데이터를 추론하는 AI 가속기(Artificial Intelligence accelerator)로서, 메인 프로세서(110)와 구별되는 별도의 프로세서일 수 있다. 달리 표현하면, 가속기(130)는 메인 프로세서(110)에서 할당된 하나 또는 복수의 워크로드들을 동시에 수행할 수 있다. 가속기(130)는 범용의 메인 프로세서(110)에서 처리되기 보다는 별도의 전용 프로세서에서 처리되는 것이 보다 효율적인 워크로드를 처리할 수 있다.
뉴럴 네트워크는 복수의 레이어들을 포함한다. 일실시예에서, 뉴럴 네트워크는 입력 레이어, 복수의 히든 레이어들 및 출력 레이어를 포함한다. 각각의 레이어들은 인공 뉴런이라고도 불리는 복수의 노드들을 포함한다. 각 노드는 하나 이상의 입력 및 출력을 가지는 계산 단위를 나타내고, 노드들은 상호 연결될 수 있다. 노드들 간의 연결에는 가중치가 설정될 수 있으며, 이러한 가중치는 조정 또는 변경될 수 있다. 가중치는 연관된 데이터 값을 증폭, 감소 또는 유지시킴으로써 해당 데이터 값이 최종 결과에 미치는 영향도를 결정할 수 있다. 출력 레이어에 포함된 각각의 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들이 입력될 수 있다. 가중된 데이터가 임의의 레이어로부터 다음 레이어로 입력되는 과정을 전파(propagation)라고 지칭할 수 있다.
이러한 뉴럴 네트워크에 따른 연산들이 가속기(130)에서 수행될 수 있으며, 이때 가속기(130)에 포함된 복수의 프로세싱 유닛들 및 멀티레벨 메모리가 활용될 수 있다. 멀티레벨 메모리는 복수의 프로세싱 유닛들 중 적어도 하나가 액세스 가능한 메모리로서, 예를 들어, SRAM(Static Random Access Memory)일 수 있다. SRAM은 메모리 용량이 DRAM에 비하여 크지 않지만, 액세스 비용이 DRAM보다 작은 메모리일 수 있다.
앞서 설명한 뉴럴 네트워크의 특성에 따라 대량의 데이터에 대해 비교적 간단한 연산이 빈번하게 수행되게 된다. 이러한 단순 연산은 프로세싱 유닛에서 쉽게 수행될 수 있지만, 연산을 위해 대량의 데이터를 프로세싱 유닛으로 가져오는 비용이 상당하여 전체 시스템적으로는 비효율적이게 된다.
일실시예에서, 단순 연산은 연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 감산 연산일 수 있다. 감산 연산은 예를 들어 내적, MAX 함수, MIN 함수, AVG 함수, 덧셈, 곱셈, 집계 등의 연산을 포함할 수 있다.
이를테면, MAX 함수 연산은 주어진 데이터 중에 가장 큰 값을 출력하는 연산으로, 주어진 데이터량이 아무리 많더라도 출력되는 데이터는 1개이다. 이러한 MAX 함수 연산이 프로세싱 유닛에서 수행된다면, 정작 연산 자체는 빠르게 수행되더라도 가속기(130)의 내부 메모리에 저장된 많은 양의 데이터를 프로세싱 유닛으로 가져오는데 상당한 시간이 소요되어 전체적인 연산 효율이 떨어진다. 따라서, 해당 데이터들이 이미 저장된 내부 메모리에서 MAX 함수 연산을 수행한 후 그 결과 데이터 1개만을 프로세싱 유닛으로 전달하는 편이 더 효율적일 수 있다.
이하, 실시예들을 보다 상세히 설명한다.
도 2는 일실시예에 따른 가속기를 설명하기 위한 도면이다.
도 2를 참조하면, 일실시예에 따른 가속기(200)는 복수의 프로세싱 유닛들 및 복수의 프로세싱 유닛들 중 적어도 하나가 액세스 가능한 멀티레벨 메모리를 포함한다. 멀티레벨 메모리는 가속기(200) 내 레벨0 메모리(211), 레벨1 메모리(221), 레벨2 메모리(231)를 통칭하는 표현이다.
복수의 프로세싱 유닛들 중 어느 하나인 프로세싱 유닛(210)은 레벨0 메모리(211), 레벨0 DMA(213), MAC(Multiplier-Accumulator)(215), 레벨0 컨트롤러(217)를 포함할 수 있다. 프로세싱 유닛(210)은 NPU(Neural Processing Unit), GPU(Graphics Processing Unit), TPU(Tensor Processing Unit) 등일 수 있다.
레벨0 메모리(211)은 대응하는 프로세싱 유닛(210)이 액세스 가능한 메모리일 수 있다. 달리 표현하면, 레벨0 메모리(211)는 가속기(200)에 포함된 복수의 프로세싱 유닛들 중에서 하나의 프로세싱 유닛(210)으로부터만 액세스될 수 있다.
레벨0 DMA(213)은 레벨0 메모리(211)에 입력되거나 레벨0 메모리(211)에서 출력되는 데이터를 모니터링 및/또는 프로파일링할 수 있다. 레벨0 DMA(213)은 레벨0 컨트롤러(217)로부터의 명령에 따라 레벨0 컨트롤러(217)를 대신하여 레벨0 메모리(211)의 입력 데이터 및/또는 출력 데이터를 제어할 수 있다. 레벨0 DMA(213)는 레벨0 컨트롤러(217)로부터의 명령에 포함된 출발지(source), 목적지(destination), 데이터 크기에 대한 정보에 따라 레벨0 메모리(211)에서 특정 데이터를 읽거나, 레벨0 메모리(211)에 특정 데이터를 쓸 수 있다.
레벨0 DMA(213)는 레벨0 메모리(211)에 입력되거나 레벨0 메모리(211)에서 출력되는 데이터를 모니터링 및/또는 프로파일링함으로써, 레벨0 메모리(211)의 액세스 비용, 레벨0 메모리(211)의 사용 정보, 레벨0 메모리(211)에 저장된 데이터 종류 등을 확인할 수 있다. 예를 들어, 레벨0 DMA(213)은 레벨0 메모리(211)의 사용 정보가 몇 퍼센트인지, 레벨0 메모리(211)에 저장된 데이터가 어떤 워크로드에 관한 것인지 확인할 수 있다.
MAC(215)은 프로세싱 유닛(210)에 할당된 워크로드의 연산을 수행할 수 있다. 예를 들어, MAC(215)은 주어진 데이터에 대해 곱셈 누적 연산을 수행할 수 있다. 또한, MAC(215)은 주어진 데이터에 대해 활성 함수(activation function)를 적용시킬 수 있다. 활성 함수는 예를 들어 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent; tanh) 또는 렐루(rectified linear unit; ReLU)에 해당할 수 있다.
레벨0 컨트롤러(217)는 프로세싱 유닛(210)에 포함된 컴포넌트들을 제어하는 장치로서, 예를 들어, 레벨0 메모리(211), 레벨0 DMA(213) 및 MAC(215)를 제어할 수 있다.
앞선 프로세싱 유닛(120)에 대한 설명은 가속기(200)에 포함된 복수의 프로세싱 유닛들 각각에 그대로 적용될 수 있다. 다시 말해, 가속기(200)는 각각이 독자적으로 연산을 수행할 수 있는 복수의 프로세싱 유닛들을 포함할 수 있다.
일실시예에서, 복수의 프로세싱 유닛들은 n개의 프로세싱 유닛들마다 클러스터링될 수 있다. 여기서, n은 1보다는 크고, 가속기(200)에 포함된 프로세싱 유닛들 개수 보다는 작은 자연수일 수 있다. 달리 표현하면, 가속기(200)에 포함된 복수의 프로세싱 유닛들 중 일부가 클러스터링될 수 있으며, 이에 대해서는 클러스터링된 프로세싱 유닛들(220)을 기준으로 설명한다.
클러스터링된 프로세싱 유닛들(220)은 하나의 레벨1 메모리(221)를 공유할 수 있다. 다시 말해, 레벨1 메모리(221)는 클러스터링된 프로세싱 유닛들(220)에 의해 액세스될 수 있다. 예를 들어, 클러스터링된 프로세싱 유닛들(220) 중 제1 프로세싱 유닛과 제2 프로세싱 유닛 각각에서 수행되는 연산들이 서로 상이하더라도 해당 연산에 필요한 데이터 일부는 공통될 수 있다. 이러한 공통되는 데이터를 제1 프로세싱 유닛과 제2 프로세싱 유닛 각각이 포함하는 레벨0 메모리에 각자 저장하기 보다는 레벨1 메모리(221)에 저장하여 제1 프로세싱 유닛과 제2 프로세싱 유닛이 공유함으로써, 전체 시스템적으로 연산 효율을 높일 수도 있다. 도 2에 도시된 개념적 예시에서, 프로세싱 유닛들 각각은 자신과 인접한 레벨1 메모리에 액세스할 수 있다.
도 2에서는 미도시되었지만, 레벨1 메모리(221)에 입력되거나 레벨1 메모리(221)에서 출력되는 데이터를 모니터링 및/또는 프로파일링하는 레벨1 DMA가 존재하여 레벨1 메모리(221)의 입력 데이터 및/또는 출력 데이터를 제어할 수 있다. 또한, 레벨1 컨트롤러도 존재하여 레벨1 메모리(221) 및 레벨1 DMA를 제어할 수 있다.
또한, 복수의 프로세싱 유닛들 전체(230)는 레벨2 메모리(231)를 공유할 수 있다. 다시 말해, 레벨2 메모리(231)는 가속기(200)에 포함된 복수의 프로세싱 유닛들에 의해 액세스될 수 있다. 예를 들어, 가속기(200)에 포함된 복수의 프로세싱 유닛들 중 동일한 그룹으로 클러스터되지 않았지만 수행하는 연산에 필요한 데이터 일부가 공통되는 프로세싱 유닛들이 존재할 수 있다. 이러한 프로세싱 유닛들은 레벨1 메모리를 통해서는 해당 데이터를 공유하지 못하지만 레벨2 메모리(231)를 통해 공통되는 데이터를 효율적으로 공유하여 전체적인 연산 효율을 높일 수 있다. 마찬가지로 도 2에서는 미도시되었지만, 레벨2 메모리(231)에 입력되거나 레벨2 메모리(231)에서 출력되는 데이터를 모니터링 및/또는 프로파일링하는 레벨2 DMA가 존재할 수 있다. 또한, 레벨2 메모리(231) 및 레벨2 DMA를 제어하는 레벨2 컨트롤러도 존재할 수 있다.
정리하면, 각 프로세서 유닛들은 자신의 레벨0 메모리, 자신과 인접한 레벨1 메모리, 가속기(200)의 레벨2 메모리에 액세스할 수 있고, 할당된 워크로드를 수행할 때 이러한 메모리들을 활용할 수 있다. 이처럼, 가속기(200)는 멀티레벨 메모리를 포함할 수 있으며, 포함된 메모리들은 계층적(hierarchy)일 수 있다. 일실시예에서, 레벨0 메모리, 레벨1 메모리, 2 메모리는 SRAM일 수 있다. SRAM은 메인 메모리인 DRAM보다 액세스 비용이 적다.
또한, 가속기(200)에 포함된 DMA, 컨트롤러도 계층적 멀티레벨을 가질 수 있다.
도 2의 예시에서, 가속기(200)에 포함된 복수의 프로세싱 유닛들은 4개의 워크로드들을 동시에 수행할 수 있다. 예컨대, 연산량이 많은 워크로드는 많은 수의 프로세싱 유닛들에 할당되어 처리되고, 연산량이 상대적으로 적은 워크로드는 적은 수의 프로세싱 유닛들에 할당되어 처리될 수 있다.
도 2에서는 설명의 편의를 위해 64개의 프로세싱 유닛들이 8개씩 클러스터링되어 4개의 워크로드들이 수행될 때 3개 레벨 메모리들이 활용되는 것으로 도시되어 있으나, 이외에도 다양한 개수의 프로세싱 유닛, 워크로드, 레벨이 제한 없이 적용될 수 있다.
도 3은 일실시예에 따라 멀티레벨 메모리 및 메인 메모리를 설명하기 위한 도면이다.
도 3을 참조하면, 일실시예에 따른 레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330), 메인 메모리(340), DMA(350)가 설명의 편의를 위해 기능적으로 도시될 수 있다.
레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330)는 GLB(global buffer)로서, 가속기 내부에 배치될 수 있다. 특히, 레벨2 메모리(330)는 가속기에 포함된 복수의 프로세싱 유닛들에 의해 공유되는 메모리이고, 레벨1 메모리(320)는 복수의 프로세싱 유닛들 중 일부에 의해 공유되는 메모리일 수 있다. 레벨0 메모리(310)는 임의의 프로세싱 유닛 내부에 포함되어 다른 프로세싱 유닛과 공유되지 않는다. 가속기에서 레벨0 메모리(310)는 가속기에 포함된 프로세싱 유닛들의 개수만큼, 레벨1 메모리(320)는 프로세싱 유닛들의 클러스터링 개수만큼, 레벨2 메모리(330)는 1개 있을 수 있다.
메인 메모리(340)는 가속기 외부에 배치된 오프-칩(off-chip) 메모리로서, 예를 들어, DRAM, HBM(High Bandwidth Memory)와 같은 3D 메모리, PIM(Processing in Memory) 등을 포함할 수 있다. 설명의 편의를 위해, 메인 메모리(340)는 레벨3 메모리로도 지칭될 수 있다.
레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330), 메인 메모리(340)는 프로세싱 유닛에서 워크로드를 수행할 때 활용될 수 있는데 레벨별로 메모리 액세스 비용이 상이하다. 이를테면, 메모리 액세스 비용은 레벨이 높아질수록 커질 수 있다. 달리 표현하면, 레벨0 메모리(310)의 액세스 비용이 가장 낮으며, 메인 메모리(340)의 액세스 비용이 가장 높을 수 있다.
도 3에 도시된 DMA(350)은 기능적으로 도시된 것으로, 레벨마다 DMA가 별도로 구비되어 해당 레벨 메모리에 데이터를 쓰거나 읽을 수 있다. 이를테면, 레벨0 메모리(310)의 입력 데이터 및/또는 출력 데이터를 제어하는 레벨0 DMA, 레벨1 메모리(320)의 입력 데이터 및/또는 출력 데이터를 제어하는 레벨1 DMA, 레벨2 메모리(330)의 입력 데이터 및/또는 출력 데이터를 제어하는 레벨2 DMA, 메인 메모리(340)의 입력 데이터 및/또는 출력 데이터를 제어하는 레벨3 DMA가 별도로 존재할 수 있다. 레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330), 메인 메모리(340)는 레벨마다 구비된 DMA를 통해 상호 간 데이터를 주고 받을 수 있다.
도 4는 일실시예에 따라 내부 메모리 및/또는 DMA의 확장에서 감산 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 일실시예에 따른 내부 메모리 및/또는 DMA(450)의 확장을 통해 감산 연산을 수행하는 예시가 도시된다. 여기서, 내부 메모리는 레벨0 메모리(410), 레벨1 메모리(420), 레벨2 메모리(430)를 지칭할 수 있다.
일실시예에서, 확장은 감산 연산 수행이 내부 메모리 또는 DMA(450)에 오프-로딩(off-loading)된 것을 나타낼 수 있다. 감산 연산은 비교적 간단한 연산으로, 연산 전 데이터량보다 연산 후 데이터량이 적은 연산일 수 있다. 다시 말해, 감산 연산은 연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 연산으로, 예를 들어, 내적(inner product), MAX 함수, MIN 함수, AVG 함수, 덧셈, 곱셈, 집계 등의 연산을 포함할 수 있다. 이러한 감산 연산 수행을 위해 간단한 연산기가 내부 메모리 또는 DMA(450)에 배치될 수 있다. 예를 들어, 연산기는 내적, MAX 함수, MIN 함수, AVG 함수, 덧셈, 곱셈, 집계 등의 연산들 중 어느 하나를 수행하는 연산 회로로 구현될 수 있다.
예를 들어, 레벨2 메모리(430)에 저장된 데이터에 감산 연산을 수행한 후 그 결과를 레벨1 메모리(420)로 이동시키는 상황을 가정한다. 도 4에 도시된 레벨2 메모리(430)의 확장이 없다면, 감산 연산 수행을 위해 레벨2 메모리(430)에 저장된 대량의 데이터가 DMA(450)를 통해 프로세싱 유닛으로 이동되어야 하고, 이때 이동되는 데이터의 많은 양으로 인해 효율 저하가 발생된다. 프로세싱 유닛에서 연산된 결과는 예를 들어 1개의 데이터로 프로세싱 유닛에서 레벨1 메모리(420)로는 낮은 비용으로 전달될 수 있다. 반면, 레벨2 메모리(430)의 확장이 있다면, 대량의 데이터를 레벨2 메모리(430)에서 프로세싱 유닛으로 옮길 필요 없이 감산 연산이 레벨2 메모리(430)에서 바로 수행되고, 그 결과 데이터만 DMA(450)를 통해 레벨2 메모리(430)에서 레벨1 메모리(420)로 전달하면 되므로, 전체 시스템 비용을 상당히 낮출 수 있다.
앞선 설명에서는 내부 메모리의 확장에서 감산 연산이 수행되는 상황을 가정하였으나, 실시예에 따라서는 DMA(450)의 확장에서 감산 연산이 수행될 수도 있다. 확장이 없는 경우에 프로세싱 유닛에서 감산 연산 결과를 활용하기 위해서는 우선 내부 메모리에 저장된 대량의 데이터를 DMA(450)를 통해 프로세싱 유닛으로 전달하여 프로세싱 유닛에서 감산 연산을 수행해야 한다. 이 경우 전술한 바와 같이 데이터 이동 비용이 상당하며 전체 시스템 효율 저하로 이어지기 때문에 대량의 데이터 이동을 최소화시킬 필요가 있다. 만약 DMA(450)의 확장에서 감산 연산이 수행되고, 그 연산 결과만 DMA(450)에서 프로세싱 유닛으로 전달된다면, DMA(450)에서 프로세싱 유닛으로의 대량 데이터 이동을 방지할 수 있어 시스템 효율을 향상 시킬 수 있다.
이처럼, 감산 연산에 따라 저장 데이터에 대한 읽기(read), 수정(modify), 쓰기(write)를 수행하는 확장은 레벨0 메모리(410), 레벨1 메모리(420), 레벨2 메모리(430)를 나타내는 내부 메모리 및/또는 DMA에 구현될 수 있다. 일실시예에서, 감산 연산에 따른 데이터 이동은 일반적인 DMA(450)에서 처리되는 데이터 단위보다 작은 단위에 대해 수행될 수 있으며, 이러한 감산 연산은 더 이상 나누어지지 않는 단순 연산일 수 있다. 또한, 데이터 저장에 최적화된 DRAM에서는 높은 연산 효율을 기대하기 어려우므로 DRAM에 해당하는 메인 메모리(440)에는 확장이 구현되지 않으며, SRAM에 해당하는 내부 메모리에 대해서 확장이 구현될 수 있다.
일실시예에서, 메인 프로세서로부터 하나 이상의 워크로드들이 가속기에 할당되면, 하나 이상의 워크로드들에 따른 연산들이 가속기에서 수행될 수 있다. 이러한 연산들 중에서는 제곱근 연산(square root operation)처럼 복잡한 연산도 있고, 덧셈 연산처럼 간단한 연산도 존재할 수 있다. 연산의 복잡도는 연산을 위해 필요한 데이터를 연산을 수행하는 데까지 읽어오는 비용, 해당 연산을 실제 수행하는 소용되는 비용(예컨대, 시간, 소모전력 등)에 기초하여 결정될 수 있다. 복잡한 연산은 프로세싱 유닛에서 수행되어야 하겠지만, 간단한 연산은 내부 메모리 및/또는 DMA(450)의 확장에서 수행되는 것이 보다 효율적일 수 있다.
내부 메모리 및/또는 DMA(450)의 확장에서 수행된 감산 연산의 결과는 후속 처리를 위해 프로세싱 유닛으로 전달될 수 있다. 또는, 감산 연산의 결과는 해당 내부 메모리에 다시 저장되거나, 다른 레벨의 메모리 또는 메인 메모리(440)로 전달될 수도 있다.
도 5는 일실시예에 따른 가속기 시스템에 포함된 컴포넌트들을 설명하기 위한 도면이다.
도 5를 참조하면, 일실시예에 따른 가속기 시스템은 메인 프로세서(510), 가속기(520), DMA 엔진(DMA engine)(530), 메모리 컨트롤러(540), 메인 메모리(550)를 포함할 수 있다.
앞서 설명한 감산 연산은 가속기(520) 내 스크래치패드 메모리(scratchpad memory)에서 수행될 수 있다. 스크래치패드 메모리는 가속기(520) 내부에 포함되는 온 칩 메모리로서, 예를 들어, 주소 공간(address space)을 통해 액세스 가능한 SRAM일 수 있다.
메인 프로세서(510)도 내부에 캐시(cache)를 포함하고 있으나, 캐시는 별도의 주소 공간이 존재하지 않으므로 특정 데이터가 캐시에 포함되어 있다는 것을 보장할 수 없고, 캐시 히트/미스(hit/miss)에 대한 우려가 존재하기에 전술한 감산 연산을 수행하기에 적법하지 않을 수 있다.
DMA 엔진(530)은 도 2 및 도 3에서 설명한 DMA의 동작을 수행하는 블록이고, 메모리 컨트롤러(540)는 메인 메모리(550)에 액세스하기 위한 블록을 나타낼 수 있다. 메인 메모리(550)는 가속기(520) 외부에 존재하는 메모리로서, DRAM일 수 있다.
도 6 및 도 7은 일실시예에 따른 가속기 시스템의 예시들을 설명하기 위한 도면이다.
도 6을 참조하면, 일실시예에 따른 서버(600)는 메인 프로세서(610), 메인 메모리(620) 및 가속기(630)를 포함할 수 있다. 메인 프로세서(610)는 하나 이상의 워크로드들을 가속기(630)에 할당한다. 가속기(630)는 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 가속기의 내부 메모리 또는 내부 메모리에 입력되거나 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행하고, 하나 이상의 연산의 수행 결과를 제공한다. 일실시예에서, 서버(600)는 가속기 시스템에 해당할 수 있다.
도 7을 참조하면, 일실시예에 따른 사용자 단말(700)은 중앙 처리 장치(710), 메인 메모리(720) 및 가속기(730)를 포함하며, 각 컴포넌트들은 앞서 설명한 동작들을 수행할 수 있다. 도 7에서는 설명의 편의를 위해 사용자 단말(700)이 스마트폰으로 도시되었지만, 이외에도 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기 등이 제한 없이 적용될 수 있다.
이처럼, 가속기(630, 730)는 워크로드에 따른 뉴럴 네트워크를 이용하여 인식하고자 하는 데이터가 입력된 사용자 단말(700) 또는 사용자 단말로부터 인식하고자 하는 데이터를 수신하는 서버(600)에 포함될 수 있다.
도 8은 일실시예에 따른 가속기의 동작 방법을 나타낸 도면이다.
도 8을 참조하면, 일실시예에 따른 가속기에서 수행되는 동작 방법이 도시된다.
단계(810)에서, 가속기는 메인 프로세서로부터 하나 이상의 워크로드들을 할당 받는다.
단계(820)에서, 가속기는 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 가속기의 내부 메모리 또는 내부 메모리에 입력되거나 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행한다. 가속기는 연산들 중 하나 이상의 감산 연산을 수행할 수 있다. 감산 연산은 연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 연산일 수 있다. 감산 연산은 내적, MAX 함수, MIN 함수, AVG 함수, 덧셈, 곱셈, 집계 중 어느 하나의 연산일 수 있다.
일실시예에서, 내부 메모리에 배치된 연산기에서 내부 메모리에 저장된 데이터에 하나 이상의 연산이 수행되거나, 또는 DMA에 배치된 연산기에서 DMA에 의해 내부 메모리로부터 읽힌 데이터에 하나 이상의 연산이 수행될 수 있다.
단계(830)에서, 가속기는 하나 이상의 연산의 수행 결과를 제공한다. 가속기는 하나 이상의 연산의 수행 결과를 가속기에 포함되어 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들 중 적어도 하나 또는 내부 메모리로 제공할 수 있다.
도 8에 도시된 각 단계들에는 도 1 내지 도 7을 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
Claims (18)
- 가속기의 동작 방법에 있어서,
메인 프로세서로부터 하나 이상의 워크로드들을 할당 받는 단계;
상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA(Direct Memory Access)에서 수행하는 단계; 및
상기 하나 이상의 연산의 수행 결과를 제공하는 단계
를 포함하는
가속기의 동작 방법.
- 제1항에 있어서,
상기 연산들 중 하나 이상을 수행하는 단계는
상기 연산들 중 하나 이상의 감산 연산(reduction operation)을 수행하는,
가속기의 동작 방법.
- 제2항에 있어서,
상기 감산 연산은
연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 연산인,
가속기의 동작 방법.
- 제2항에 있어서,
상기 감산 연산은
내적, MAX 함수, MIN 함수, AVG 함수, 덧셈, 곱셈, 집계 중 어느 하나의 연산인,
가속기의 동작 방법.
- 제1항에 있어서,
상기 연산들 중 하나 이상을 수행하는 단계는
상기 내부 메모리에 배치된 연산기에서, 상기 내부 메모리에 저장된 데이터에 상기 하나 이상의 연산을 수행하는,
가속기의 동작 방법.
- 제1항에 있어서,
상기 연산들 중 하나 이상을 수행하는 단계는
상기 DMA에 배치된 연산기에서, 상기 DMA에 의해 상기 내부 메모리로부터 읽힌 데이터에 상기 하나 이상의 연산을 수행하는,
가속기의 동작 방법.
- 제1항에 있어서,
상기 수행 결과를 제공하는 단계는
상기 하나 이상의 연산의 수행 결과를 상기 가속기에 포함되어 상기 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들 중 적어도 하나 또는 상기 내부 메모리로 제공하는,
가속기의 동작 방법.
- 제1항에 있어서,
상기 내부 메모리는
상기 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들 중 어느 하나의 프로세싱 유닛이 액세스 가능한 레벨0 메모리;
상기 복수의 프로세싱 유닛들 중 일부가 액세스 가능한 레벨1 메모리; 및
상기 복수의 프로세싱 유닛들이 액세스 가능한 레벨2 메모리
중 어느 하나 또는 이들의 조합을 포함하는,
가속기의 동작 방법.
- 제1항에 있어서,
상기 연산들 중 하나 이상을 수행하는 단계는
상기 내부 메모리 및/또는 상기 DMA에 오프-로딩된 확장(extension)을 통해 상기 연산들 중 하나 이상을 수행하는,
가속기의 동작 방법.
- 제1항에 있어서,
상기 가속기는
워크로드에 따른 뉴럴 네트워크를 이용하여 인식하고자 하는 데이터가 입력된 사용자 단말 또는 상기 사용자 단말로부터 상기 인식하고자 하는 데이터를 수신하는 서버에 포함되는,
가속기의 동작 방법.
- 제1항 내지 제10항 중에서 어느 하나의 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 저장 매체.
- 가속기에 있어서,
메인 프로세서로부터 할당된 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들; 및
복수의 프로세싱 유닛들 중 적어도 하나가 액세스 가능한 멀티레벨 메모리
를 포함하고,
상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상은 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행되는,
가속기.
- 제12항에 있어서,
상기 수행되는 하나 이상의 연산들은 연산을 위해 필요한 데이터량보다 연산 결과의 데이터량이 적은 연산인,
가속기.
- 제12항에 있어서,
상기 연산들 중 하나 이상은
상기 내부 메모리에 배치된 연산기에서 상기 내부 메모리에 저장된 데이터에 대해 수행되는,
가속기.
- 제12항에 있어서,
상기 연산들 중 하나 이상은
상기 DMA에 배치된 연산기에서 상기 DMA에 의해 상기 내부 메모리로부터 읽힌 데이터에 대해 수행되는,
가속기.
- 제12항에 있어서,
상기 하나 이상의 연산의 수행 결과는
상기 가속기에 포함되어 상기 하나 이상의 워크로드들을 수행하는 복수의 프로세싱 유닛들 중 적어도 하나 또는 상기 내부 메모리로 제공되는,
가속기.
- 제12항에 있어서,
상기 내부 메모리는
상기 복수의 프로세싱 유닛들 중 어느 하나의 프로세싱 유닛이 액세스 가능한 레벨0 메모리;
상기 복수의 프로세싱 유닛들 중 일부가 액세스 가능한 레벨1 메모리; 및
상기 복수의 프로세싱 유닛들이 액세스 가능한 레벨2 메모리
중 어느 하나 또는 이들의 조합을 포함하는,
가속기.
- 하나 이상의 워크로드를 수행하는 복수의 프로세싱 유닛들 및 액세스 비용이 상이한 멀티레벨 메모리를 포함하는 가속기; 및
상기 가속기로 상기 하나 이상의 워크로드를 할당하는 메인 프로세서
를 포함하고,
상기 가속기는
상기 하나 이상의 워크로드들에 따른 연산들 중 하나 이상을 상기 가속기의 내부 메모리 또는 상기 내부 메모리에 입력되거나 상기 내부 메모리에서 출력되는 데이터를 제어하는 DMA에서 수행하는,
가속기 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200021334A KR20210106635A (ko) | 2020-02-21 | 2020-02-21 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
US17/143,539 US20210263870A1 (en) | 2020-02-21 | 2021-01-07 | Accelerator, operation method of the accelerator, and an apparatus including the accelerator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200021334A KR20210106635A (ko) | 2020-02-21 | 2020-02-21 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210106635A true KR20210106635A (ko) | 2021-08-31 |
Family
ID=77366050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200021334A KR20210106635A (ko) | 2020-02-21 | 2020-02-21 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210263870A1 (ko) |
KR (1) | KR20210106635A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230078847A (ko) * | 2021-11-26 | 2023-06-05 | 건국대학교 산학협력단 | 신경망 가속기의 통신 특성을 동적으로 재구성하는 프로세서 장치, 및 그의 구동 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210108749A (ko) * | 2020-02-26 | 2021-09-03 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452744B2 (en) * | 2017-03-27 | 2019-10-22 | Oracle International Corporation | Memory management for sparse matrix multiplication |
-
2020
- 2020-02-21 KR KR1020200021334A patent/KR20210106635A/ko unknown
-
2021
- 2021-01-07 US US17/143,539 patent/US20210263870A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230078847A (ko) * | 2021-11-26 | 2023-06-05 | 건국대학교 산학협력단 | 신경망 가속기의 통신 특성을 동적으로 재구성하는 프로세서 장치, 및 그의 구동 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20210263870A1 (en) | 2021-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US9104581B2 (en) | eDRAM refresh in a high performance cache architecture | |
KR20210108749A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 | |
KR20210148586A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
CN108647155B (zh) | 一种基于深度学习的多级cache共享的方法和装置 | |
US11914903B2 (en) | Systems, methods, and devices for accelerators with virtualization and tiered memory | |
JP7126136B2 (ja) | 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 | |
KR20210106635A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 | |
KR20220030106A (ko) | 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치 | |
US12056382B2 (en) | Inference in memory | |
US10978134B1 (en) | Method and device for refreshing memory | |
KR20240007354A (ko) | 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법 | |
KR20220049294A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 | |
KR20220033314A (ko) | 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치 | |
KR20220049325A (ko) | 가속기 및 이를 포함한 전자 장치 | |
KR20210157636A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 | |
US12124882B2 (en) | Method and apparatus for lightweight and parallelization of accelerator task scheduling | |
US20220147398A1 (en) | Method and apparatus for lightweight and parallelization of accelerator task scheduling | |
KR20210113762A (ko) | 연산량에 따른 가변 데이터 동작 주파수 기반 인공지능 연산기 시스템 | |
KR20210157624A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 | |
US12093806B1 (en) | Static memory allocation for neural network inference | |
US20210209462A1 (en) | Method and system for processing a neural network | |
KR20240029502A (ko) | 메모리 어드레스 공간 확장을 이용한 메모리 요청을 처리하는 전자 장치 및 그 동작 방법 | |
KR20230043565A (ko) | 모델들을 공동 배치하는 전자 장치 및 그 동작 방법 |