KR20210157624A - 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 - Google Patents

가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 Download PDF

Info

Publication number
KR20210157624A
KR20210157624A KR1020200075655A KR20200075655A KR20210157624A KR 20210157624 A KR20210157624 A KR 20210157624A KR 1020200075655 A KR1020200075655 A KR 1020200075655A KR 20200075655 A KR20200075655 A KR 20200075655A KR 20210157624 A KR20210157624 A KR 20210157624A
Authority
KR
South Korea
Prior art keywords
accelerator
memory
processing elements
level
data
Prior art date
Application number
KR1020200075655A
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 삼성전자주식회사
Priority to KR1020200075655A priority Critical patent/KR20210157624A/ko
Priority to US17/148,676 priority patent/US20210397557A1/en
Publication of KR20210157624A publication Critical patent/KR20210157624A/ko

Links

Images

Classifications

    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)

Abstract

가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템이 개시된다. 개시된 가속기는 호스트 프로세서로부터 수신된 명령어에 따른 연산을 수행하는 복수의 프로세싱 엘리먼트들, 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들 및 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치하는 보조 코어들을 포함한다.

Description

가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템{ACCELERATOR, METHOD FOR OPERATING THE SAME AND ACCELERATOR SYSTEM INCLUDING THE SAME}
아래 실시예들은 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술이 발전함에 따라 인공 지능만을 위한 독자적인 하드웨어의 필요성이 증가하고 있다. 인공 지능은 예를 들어, 특정한 연산을 통해 추론과 학습을 수행할 수 있다. 이와 같이 인공 지능을 구현하고 실행하기 위한 전용 하드웨어로서 다양한 장치들이 개발되고 있다.
인공 지능을 위한 전용 하드웨어는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit) 등에 의해 구현될 수도 있고, 용도 변경이 가능한 FPGA(Field Programmable Gate Array), 및 ASIC(Application Specific Integrated Circuit) 등에 의해 구현될 수도 있다.
일실시예에 따른 가속기는 호스트 프로세서로부터 수신된 명령어에 따른 연산을 수행하는 복수의 프로세싱 엘리먼트들; 상기 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들; 및 상기 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치(prefetch)하는 보조 코어들을 포함한다.
일실시예에 따른 가속기에서 상기 보조 코어들은 상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치를 수행할 수 있다.
일실시예에 따른 가속기에서 상기 보조 코어들은 상기 복수의 프로세싱 엘리먼트들과 독립적으로 프리패치를 수행할 수 있다.
일실시예에 따른 가속기에서 상기 복수의 프로세싱 엘리먼트들은 상기 보조 코어들에 의해 상기 계층적 메모리들에 프리패치된 데이터를 이용하여 상기 명령어에 따른 연산을 수행할 수 있다.
일실시예에 따른 가속기에서 상기 보조 코어들은 상기 계층적 메모리들의 구조에 기반하여 상기 연산과 관련된 데이터를 서로 협력(coordinate)하여 프리패치할 수 있다.
일실시예에 따른 가속기에서 상기 계층적 메모리들은 상기 복수의 프로세싱 엘리먼트들 중 어느 하나의 프로세싱 엘리먼트가 액세스 가능한 레벨0 메모리; 상기 복수의 프로세싱 엘리먼트들 중 일부가 액세스 가능한 레벨1 메모리; 및 상기 복수의 프로세싱 엘리먼트들이 액세스 가능한 레벨2 메모리 중 적어도 하나를 포함할 수 있다.
일실시예에 따른 가속기에서 상기 보조 코어들은 레벨에 따라 상이한 상기 계층적 메모리들의 액세스 비용에 기초하여 상기 연산과 관련된 데이터를 프리패치할 수 있다.
일실시예에 따른 가속기에서 상기 계층적 메모리들의 액세스 비용은 상기 계층적 메모리들 중에서 공유하는 프로세싱 엘리먼트의 개수가 많은 메모리일수록 커질 수 있다.
일실시예에 따른 가속기에서 상기 가속기는 명령어에 대응하는 뉴럴 네트워크를 통해 인식하고자 하는 데이터가 입력된 사용자 단말 또는 상기 사용자 단말로부터 상기 인식하고자 하는 데이터를 수신하는 서버에 포함될 수 있다.
일실시예에 따른 가속기에서 상기 보조 코어들에서 수행되는 프리패치는 상기 가속기의 하드웨어 리소스의 사용 정보에 기초하여 상기 보조 코어들의 협력으로 수행될 수 있다.
일실시예에 따른 가속기에서 상기 하드웨어 리소스의 사용 정보는 상기 복수의 프로세싱 엘리먼트들에 기반한 연산 리소스 및 상기 가속기 내 상기 계층적 메모리들 및/또는 상기 가속기의 오프-칩 메모리에 기반한 메모리 액세스 리소스에 대한 사용 정보를 포함할 수 있다.
일실시예에 따른 가속기의 동작 방법은 호스트 프로세서로부터 연산 수행을 위한 명령어를 수신하는 단계; 상기 명령어에 따른 연산 대상이 되는 데이터를 계층적 메모리에서 읽는 단계; 및 상기 명령어에 따른 연산을 상기 데이터에 기초하여 수행하는 단계를 포함하고, 상기 데이터는 상기 계층적 메모리들 각각에 대응하는 보조 코어들에 의해 상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치된다.
일실시예에 따른 가속기 시스템은 가속기로 명령어를 전달하는 호스트 프로세서; 및 상기 명령어에 따른 연산을 수행하는 복수의 프로세싱 엘리먼트들, 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들 및 상기 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치하는 보조 코어들을 포함하는 가속기를 포함하고, 상기 보조 코어들은 상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치 동작을 제어한다.
도 1은 일실시예에 따른 가속기 시스템을 설명하기 위한 도면이다.
도 2 및 도 3은 일실시예에 따른 가속기의 계층적 구조를 설명하기 위한 도면이다.
도 4는 일실시예에 따른 프리패치 동작을 설명하기 위한 도면이다.
도 5는 일실시예에 따른 가속기의 동작 방법을 나타낸 도면이다.
도 6 및 도 7은 일실시예에 따른 가속기 시스템의 예시들을 설명하기 위한 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 아래의 특정한 구조적 내지 기능적 설명들은 단지 실시예들을 설명하기 위한 목적으로 예시된 것으로, 실시예의 범위가 본문에 설명된 내용에 한정되는 것으로 해석되어서는 안된다. 관련 기술 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타내며, 공지된 기능 및 구조는 생략하도록 한다.
도 1은 일실시예에 따른 가속기 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 일실시예에 따른 가속기 시스템(100)은 호스트 프로세서(110), 오프-칩 메모리(off-chip memory)(120), 메모리 컨트롤러(130) 및 가속기(140)를 포함할 수 있다. 호스트 프로세서(110), 오프-칩 메모리(120), 메모리 컨트롤러(130) 및 가속기(140)는 버스(bus)를 통하여 서로 통신할 수 있다.
호스트 프로세서(110)는 가속기 시스템(100)에 포함된 컴포넌트들의 동작을 제어하는 장치로, 예를 들어, 중앙 처리 장치(CPU; Central Processing Unit)를 포함할 수 있다. 호스트 프로세서(110)는 뉴럴 네트워크에 기반한 추론 작업을 가속기(140)에서 처리하기 위한 요청을 수신하고, 해당 요청에 응답하여 명령어를 가속기(140)로 전달할 수 있다. 요청은 뉴럴 네트워크에 기반한 데이터 추론을 위한 것으로, 예를 들어, 음성 인식, 기계 번역, 기계 통역, 객체 인식, 패턴 인식, 컴퓨터 비전 등을 위해 가속기(140)로 하여금 뉴럴 네트워크를 실행하게 하여 데이터 추론 결과를 얻기 위한 것일 수 있다.
오프-칩 메모리(120)는 가속기(140)의 외부에 배치된 메모리로서, 예를 들어, 가속기 시스템(100)의 메인 메모리로 활용되는 DRAM(Dynamic Random Access Memory)일 수 있다. 오프-칩 메모리(120)는 메모리 컨트롤러(130)를 통해 액세스될 수 있다. 오프-칩 메모리(120)는 가속기(140)에서 실행할 명령어, 뉴럴 네트워크의 파라미터들, 추론하고자 하는 입력 데이터 중 적어도 하나를 저장할 수 있고, 가속기(140)에서 뉴럴 네트워크를 실행하는 데 가속기(140) 내부의 온-칩 메모리(on-chip memory)가 충분하지 않은 경우에 활용될 수도 있다.
오프-칩 메모리(120)는 가속기(140) 내부의 온-칩 메모리보다 큰 메모리 용량을 가지고 있으나, 뉴럴 네트워크 실행 시 가속기(140)가 오프-칩 메모리(120)로 액세스하는 비용이 내부의 온-칩 메모리로 액세스하는 비용보다 크다. 메모리 액세스 비용은 해당 메모리에 액세스하여 데이터를 읽거나 쓸 때 요구되는 전력 및/또는 처리시간을 이용하여 나타낼 수 있다.
가속기(140)는 호스트 프로세서(110)의 명령어에 따른 뉴럴 네트워크를 실행하여 입력되는 데이터를 추론하는 AI 가속기(Artificial Intelligence accelerator)로서, 호스트 프로세서(110)와 구별되는 별도의 프로세서일 수 있다. 예를 들어, 가속기(140)는 NPU(Neural Processing Unit), GPU, TPU(Tensor Processing Unit), CPU 등으로 구현될 수 있다.
뉴럴 네트워크는 복수의 레이어들을 포함한다. 일실시예에서, 뉴럴 네트워크는 입력 레이어, 복수의 히든 레이어들 및 출력 레이어를 포함한다. 각각의 레이어들은 인공 뉴런이라고도 불리는 복수의 노드들을 포함한다. 각 노드는 하나 이상의 입력 및 출력을 가지는 계산 단위를 나타내고, 노드들은 상호 연결될 수 있다. 노드들 간의 연결에는 가중치가 설정될 수 있으며, 이러한 가중치는 조정 또는 변경될 수 있다. 가중치는 연관된 데이터 값을 증폭, 감소 또는 유지시킴으로써 해당 데이터 값이 최종 결과에 미치는 영향도를 결정하는 파라미터일 수 있다. 출력 레이어에 포함된 각각의 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들이 입력될 수 있다. 가중된 데이터가 임의의 레이어로부터 다음 레이어로 입력되는 과정을 전파(propagation)라고 지칭할 수 있다.
가속기(140)는 뉴럴 네트워크에 따른 연산들의 특성 상 범용의 호스트 프로세서(110)에서 처리되기 보다는 별도의 전용 프로세서(다시 말해, 가속기(140))에서 처리되는 것이 보다 효율적인 작업들을 처리할 수 있다. 이때 가속기(140)에 포함된 하나 이상의 프로세싱 엘리먼트들(PEs; Processing Elements) 및 온-칩 메모리가 활용될 수 있다. 프로세싱 엘리먼트는 수신된 명령어에 따른 연산을 수행하는 장치로서, 예를 들어, 연산 유닛(예컨대, SM; streaming multiprocessor), FPU(floating point unit) 등을 포함할 수 있다. 온-칩 메모리는 가속기(140) 내부에 포함된 글로벌 쉐어드 버퍼(global shared buffer) 및 로컬 버퍼(local buffer)를 포함하는 장치로서, 가속기(140) 외부에 위치하는 오프-칩 메모리(120)와 구분될 수 있다. 예를 들어, 온-칩 메모리는 주소 공간(address space)을 통해 액세스 가능한 스크래치패드 메모리(scratchpad memory)로서, 예를 들어, SRAM(Static Random Access Memory)을 포함할 수 있다.
스크래치패드 메모리는 명시적으로 제어되는 고속의 저용량 메모리이다. 고속, 저용량이란 점에서 CPU의 L1 캐시와 유사하나 동작 측면에서 다음과 같은 차이점이 존재할 수 있다. 캐시는 데이터 이동에 대한 요청이 수신되면 캐시에 데이터가 이미 적재되어 있는지 확인하기 위하여 태그 비교를 수행하고 그 결과에 따라 데이터 이동을 수행함으로써 요청에 대한 응답을 수행할 수 있다. 스크래치패드 메모리는 데이터 이동을 프로그램이 명시적으로 명령하고, 요청에 대한 응답도 별도 과정 없이 바로 수행될 수 있다. 스크래치패드 메모리에서는 태그 저장 및 비교 등을 위한 하드웨어가 불필요하므로 에너지 효율, 하드웨어 면적 효율이 캐시보다 높을 수 있다. 데이터 이동을 효율적으로 명시한다면, 지역성이 부족한 데이터 접근 패턴에 대해서도 높은 성능이 기대될 수 있다. 경우에 따라 스크래치패드 메모리는 캐시 메모리와 혼합하여 사용될 수 있다.
프리패치는 근미래에 사용될 것으로 예측되는 데이터를 미리 하위 계층의 메모리에서 상위 계층의 메모리로 불러오기(fetch) 시작함으로써, 메모리 액세스 레이턴시를 줄이고 시스템 성능을 향상시킬 수 있다. 예를 들어, 프리패치를 통해, 스크래치패드 메모리에서 근미래에 발생할 요청이 예측되어 데이터 이동이 미리 수행될 수 있다. 캐시 메모리의 경우 데이터 이동이 요청에 종속적이므로, 예측한 요청을 미리 수행하여 데이터 이동을 미리 발생시킨 후 요청이 수신되면 데이터 이동 없이 응답이 즉시 발생될 수 있다. 또한, 요청 없는 데이터 이동을 지원하는 경우(예컨대, x86의 프리패치 명령)에는 스크래치패드 메모리와 유사하게 프리패치가 적용될 수 있다.
이처럼, 가속기(140)의 동작에 프리패치 기법 적용 시, 가속기(140)의 성능을 효과적으로 향상시킬 수 있다. 이하, 도면들을 참조하여 상세히 설명한다.
도 2 및 도 3은 일실시예에 따른 가속기의 계층적 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 일실시예에 따른 가속기(200)는 복수의 프로세싱 엘리먼트들 및 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들을 포함한다. 계층적 메모리들은 가속기(200) 내 레벨0 메모리(211), 레벨1 메모리(221), 레벨2 메모리(231)를 포함할 수 있다.
복수의 프로세싱 엘리먼트들 중 어느 하나인 프로세싱 엘리먼트(210)은 레벨0 메모리(211), 레벨0 DMA(213), MAC(Multiplier-Accumulator)(215), 레벨0 보조 코어(217)를 포함할 수 있다. 프로세싱 엘리먼트(210)은 가속기(200)의 메인 코어를 나타낼 수 있다.
레벨0 메모리(211)은 대응하는 프로세싱 엘리먼트(210)가 액세스 가능한 메모리일 수 있다. 달리 표현하면, 레벨0 메모리(211)는 가속기(200)에 포함된 복수의 프로세싱 엘리먼트들 중에서 하나의 프로세싱 엘리먼트(210)로부터만 액세스될 수 있다.
레벨0 DMA(213)은 레벨0 보조 코어(217)의 명령에 따라 레벨0 메모리(211)의 입력 데이터 및/또는 출력 데이터를 제어할 수 있다. 레벨0 DMA(213)는 레벨0 보조 코어(217)로부터의 명령에 포함된 출발지(source), 목적지(destination), 데이터 크기에 대한 정보에 따라 레벨0 메모리(211)에서 특정 데이터를 읽거나, 레벨0 메모리(211)에 특정 데이터를 쓸 수 있다.
이때, 레벨0 메모리(211)에 입력되거나 레벨0 메모리(211)에서 출력되는 데이터는 모니터링 및/또는 프로파일링될 수 있는데, 이러한 모니터링 및/또는 프로파일링 동작은 레벨0 DMA(213)에서 수행되거나, 또는 별도의 엘리먼트에서 수행될 수 있다. 모니터링 및/또는 프로파일링을 통해, 레벨0 메모리(211)의 액세스 비용, 레벨0 메모리(211)의 사용 정보, 레벨0 메모리(211)에 저장된 데이터 종류 등이 확인될 수 있다. 예를 들어, 레벨0 DMA(213)은 레벨0 메모리(211)의 사용 정보가 몇 퍼센트인지, 레벨0 메모리(211)에 저장된 데이터가 어떤 추론 작업에 관한 것인지 확인할 수 있다. 아래에서는 설명의 편의를 위해, 모니터링 및/또는 프로파일링 동작이 레벨0 DMA(213)에서 수행되는 경우를 기준으로 설명한다.
MAC(215)은 프로세싱 엘리먼트(210)에 할당된 추론 작업의 연산을 수행할 수 있다. 예를 들어, MAC(215)은 주어진 데이터에 대해 곱셈 누적 연산을 수행할 수 있다. 이때, 프로세싱 엘리먼트(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 DMA에서 레벨1 메모리(221)에 입력되거나 레벨1 메모리(221)에서 출력되는 데이터를 모니터링 및/또는 프로파일링할 수 있다. 또한, 레벨1 보조 코어도 별도로 존재하여 레벨1 메모리(221) 및 레벨1 DMA를 제어할 수 있다.
또한, 복수의 프로세싱 엘리먼트들 전체(230)는 레벨2 메모리(231)를 공유할 수 있다. 다시 말해, 레벨2 메모리(231)는 가속기(200)에 포함된 복수의 프로세싱 엘리먼트들에 의해 액세스될 수 있다. 예를 들어, 가속기(200)에 포함된 복수의 프로세싱 엘리먼트들 중 동일한 그룹으로 클러스터되지 않았지만 수행하는 연산에 필요한 데이터 일부가 공통되는 프로세싱 엘리먼트들이 존재할 수 있다. 이러한 프로세싱 엘리먼트들은 레벨1 메모리를 통해서는 해당 데이터를 공유하지 못하지만 레벨2 메모리(231)를 통해 공통되는 데이터를 효율적으로 공유하여 전체적인 연산 효율을 높일 수 있다. 마찬가지로 도 2에서는 미도시되었지만, 레벨2 메모리(231)의 데이터 입출력을 제어하는 레벨2 DMA에서 레벨2 메모리(231)에 입력되거나 레벨2 메모리(231)에서 출력되는 데이터를 모니터링 및/또는 프로파일링할 수 있다. 또한, 레벨2 메모리(231) 및 레벨2 DMA를 제어하는 레벨2 보조 코어도 별도로 존재할 수 있다.
정리하면, 각 프로세서 유닛들은 자신의 레벨0 메모리, 자신과 인접한 레벨1 메모리, 가속기(200)의 레벨2 메모리에 액세스할 수 있고, 할당된 추론 작업을 수행할 때 이러한 메모리들을 활용할 수 있다. 이처럼, 가속기(200)는 계층적 메모리들을 포함할 수 있으며, 레벨0 메모리, 레벨1 메모리, 레벨2 메모리는 외부 메모리인 DRAM보다 액세스 비용이 적은 스크래치패드 메모리일 수 있다.
또한, 가속기(200)에 포함된 보조 코어, DMA도 계층적 구조를 가질 수 있다.
도 2의 예시에서, 가속기(200)에 포함된 복수의 프로세싱 엘리먼트들은 4개의 추론 작업들을 동시에 수행할 수 있다. 예컨대, 연산량이 많은 추론 작업은 많은 수의 프로세싱 엘리먼트들에 할당되어 처리되고, 연산량이 상대적으로 적은 추론 작업은 적은 수의 프로세싱 엘리먼트들에 할당되어 처리될 수 있다.
도 2에서는 설명의 편의를 위해 64개의 프로세싱 엘리먼트들이 8개씩 클러스터링되어 4개의 추론 작업들이 수행될 때 3개 레벨 메모리들이 활용되는 것으로 도시되어 있으나, 이외에도 다양한 개수의 프로세싱 엘리먼트, 추론 작업, 레벨이 제한 없이 적용될 수 있다. 보조 코어는 계층적 메모리들에 프리패치를 수행하기 위한 별도의 명령어에 따라 동작하는 일반 프로세서(general processor)로서, 본 명세서에서 설명의 편의를 위하여 HC(helper core)로도 표현될 수 있다.
도 3을 참조하면, 일실시예에 따른 레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330), 외부 메모리(340)의 계층적 구조를 설명하기 위한 예시가 도시된다.
레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330)는 온-칩 메모리로서, 가속기 내부에 배치될 수 있다. 특히, 레벨2 메모리(330)는 가속기에 포함된 복수의 프로세싱 엘리먼트들에 의해 공유되는 메모리이고, 레벨1 메모리(320)는 복수의 프로세싱 엘리먼트들 중 일부에 의해 공유되는 메모리일 수 있다. 레벨0 메모리(310)는 각 프로세싱 엘리먼트에 포함되어 다른 프로세싱 엘리먼트와 공유되지 않는다. 가속기에서 레벨0 메모리(310)는 가속기에 포함된 프로세싱 엘리먼트들의 개수만큼, 레벨1 메모리(320)는 프로세싱 엘리먼트들의 클러스터링 개수만큼, 레벨2 메모리(330)는 1개 또는 가속기의 구조에 따라 레벨1 메모리(320) 개수보다 적게 존재할 수 있다.
외부 메모리(340)는 가속기 외부에 배치된 오프-칩 메모리로서, 예를 들어, DRAM, HBM(High Bandwidth Memory)와 같은 3D 메모리, PIM(Processing in Memory) 등을 포함할 수 있다. 설명의 편의를 위해, 외부 메모리(340)는 레벨3 메모리로도 지칭될 수 있다.
레벨0 메모리(310), 레벨1 메모리(320), 레벨2 메모리(330), 외부 메모리(340)는 프로세싱 엘리먼트에서 추론 작업을 수행할 때 활용될 수 있는데 레벨별로 메모리 액세스 비용이 상이하다. 이를테면, 메모리 액세스 비용은 레벨이 높아질수록 커질 수 있다. 달리 표현하면, 레벨0 메모리(310)의 액세스 비용이 가장 낮으며, 외부 메모리(340)의 액세스 비용이 가장 높을 수 있다.
계층적 메모리들은 프로세싱 엘리먼트에서 수행되는 연산과 관련되어 프리패치된 데이터를 저장할 수 있다. 프리패치 동작은 계층적 메모리들 각각에 대응하는 보조 코어들(311~341)에서 수행될 수 있다. 보조 코어들(311~341)은 프로세싱 엘리먼트에서 명령어에 따른 연산 수행 시 앞으로 수행할 연산에 필요한 데이터를 외부 메모리(340)에서 프로세싱 엘리먼트에 가까이 위치한 메모리로 이동시킴으로써 실제 연산 수행할 때 메모리 액세스 비용을 최소화시킬 수 있다. 다시 말해, 보조 코어들(311~341)은 프로세싱 엘리먼트에서 연산과 관련된 데이터를 로드하기 위한 메모리 액세스 비용이 최소화되도록 서로 협력하여 데이터를 프리패치할 수 있다.
또한, 프리패치 동작은 가속기의 하드웨어 리소스 상황을 고려하여 보조 코어들(311~341)의 협력으로 수행될 수 있다. 하드웨어 리소스는 가속기에 포함된 하나 이상의 프로세싱 엘리먼트들에 기반한 연산 리소스 및 가속기의 온-칩 메모리 및/또는 오프-칩 메모리에 기반한 메모리 액세스 리소스를 포함할 수 있다. 이를테면, 레벨0 메모리(311)의 가용 용량이 부족하다면 프로세싱 엘리먼트에서 수행될 연산과 관련된 데이터는 다음으로 메모리 액세스 비용으로 적은 레벨1 메모리(320)에 프리패치될 수 있다.
도 4는 일실시예에 따른 프리패치 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 일실시예에 따른 프리패치 동작을 설명하기 위해 가속기(400)에서 벡터 덧셈 연산이 수행되는 예시가 도시된다.
벡터 덧셈 연산은 복수의 프로세싱 엘리먼트들(411~414)에서 수행될 수 있다. 각 레벨의 메모리는 캐시 메모리와 스크래치패드 메모리를 포함할 수 있으며, 다른 레벨의 메모리와의 읽기/쓰기, 하위 레벨의 메모리로의 프리패치를 지원할 수 있다. 복수의 프로세싱 엘리먼트들(411~414)에서 실행되는 명령어에 기초하여 각 레벨에서 사용될 메모리를 예측하는 프리패치용 명령어가 생성될 수 있으며, 보조 코어들(421, 422, 430)은 프리패치용 명령어에 기반하여 프리패치 동작을 수행할 수 있다.
도 4의 예시에서, 4개의 프로세싱 엘리먼트들(411~414)이 길이가 16인 벡터들의 덧셈 연산을 나누어서 수행한다고 가정한다. 프로세싱 엘리먼트들(411~414) 각각에 대한 벡터 연산 명령어의 데이터 액세스 부분에 기초하여 보조 코어들(421, 422, 430)에 대한 프리패치용 명령어가 결정될 수 있다. 이를테면, 레벨2 보조 코어(430)는 복수의 프로세싱 엘리먼트들(411~414)에서 사용될 데이터 a[0]~a[15], b[0]~b[15]를 레벨2 메모리(431)에 프리패치할 수 있다. 레벨1 보조 코어(421)는 프로세싱 엘리먼트들 1, 2(411, 412)에서 사용될 데이터 a[0]~a[7], b[0]~b[7]를 레벨1 메모리(422)에 프리패치하고, 레벨1 보조 코어(423)는 프로세싱 엘리먼트들 3, 4(413, 414)에서 사용될 데이터 a[8]~a[15], b[8]~b[15]를 레벨1 메모리(424)에 프리패치할 수 있다. 또한, 도 4에서는 미도시되었으나, 프로세싱 엘리먼트들 1 내지 4(411 내지 414) 각각에 대응하는 레벨0 보조 코어는 대응하는 프로세싱 엘리먼트에서 사용될 데이터를 대응하는 레벨0 메모리에 프리패치할 수 있다. 그리고, 복수의 프로세싱 엘리먼트들(411~414)은 대응하는 레벨1 메모리에서 덧셈 연산에 필요한 데이터를 빠르게 액세스해서 할당된 벡터 연산을 수행할 수 있다.
도 5는 일실시예에 따른 가속기의 동작 방법을 나타낸 도면이다.
도 5를 참조하면, 일실시예에 따른 가속기의 동작 방법이 도시된다.
단계(510)에서, 가속기는 호스트 프로세서로부터 연산 수행을 위한 명령어를 수신한다.
단계(520)에서, 가속기는 명령어에 따른 연산 대상이 되는 데이터를 계층적 메모리에서 읽는다. 이때 데이터는 계층적 메모리들 각각에 대응하는 보조 코어들에 의해 명령어에서 연산을 위한 데이터 액세스 부분에 기초하여 프리패치된다. 보조 코어들은 복수의 프로세싱 엘리먼트들과 독립적으로 프리패치를 수행할 수 있다. 보조 코어들은 계층적 메모리들의 구조에 기반하여 연산과 관련된 데이터를 서로 협력하여 프리패치할 수 있다.
일실시예에서, 계층적 메모리들은 복수의 프로세싱 엘리먼트들 중 어느 하나의 프로세싱 엘리먼트가 액세스 가능한 레벨0 메모리, 복수의 프로세싱 엘리먼트들 중 일부가 액세스 가능한 레벨1 메모리 및 복수의 프로세싱 엘리먼트들이 액세스 가능한 레벨2 메모리 중 적어도 하나를 포함할 수 있다. 보조 코어들은 레벨에 따라 상이한 계층적 메모리들의 액세스 비용에 기초하여 연산과 관련된 데이터를 프리패치할 수 있다. 계층적 메모리들의 액세스 비용은 계층적 메모리들 중에서 공유하는 프로세싱 엘리먼트의 개수가 많은 메모리일수록 커질 수 있다.
단계(530)에서, 가속기는 명령어에 따른 연산을 데이터에 기초하여 수행한다.
앞서 설명한 가속기의 동작 방법을 통해 추론 작업 실행을 위한 메모리 로딩 시간 감소, 메인 코어에 해당하는 프로세싱 엘리먼트들의 워크로드를 보조 코어로 오프-로딩(off-loading)함으로써 시스템 성능이 향상될 수 있다. 딥 러닝 모델의 경우 주요 연산에서 메인 코어의 메모리 액세스 패턴이 입력 데이터에 의존되지 않기 때문에, 보조 코어용 명령어를 손쉽게 생성하여 활용할 수 있다.
도 5에 도시된 각 단계들에는 도 1 내지 도 4를 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
도 6 및 도 7은 일실시예에 따른 가속기 시스템의 예시들을 설명하기 위한 도면이다.
도 6을 참조하면, 일실시예에 따른 가속기 시스템은 서버(600)로 구현될 수 있다. 서버(600)는 사용자에 의해 제어되는 사용자 단말과 구분되는 별도의 장치로서, 유선 및/또는 무선 네트워크를 통해 하나 이상의 사용자 단말과 통신을 수행할 수 있다. 서버(600)는 다수의 사용자들이 각자 자신의 단말을 통해 동시다발적으로 전송하는 요청들을 수신할 수 있다. 가속기(620)는 요청에 응답하여 추론 작업을 수행하기 위해, 호스트 프로세서(610)에서 전달된 명령어에 따른 연산을 수행할 수 있다. 가속기(620)는 연산을 수행하는 복수의 프로세싱 엘리먼트들, 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들 및 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치하는 보조 코어들을 포함한다. 서버(600)는 추론 작업을 통해 생성된 추론 결과를 사용자 단말로 리턴할 수 있다. 예를 들어, 사용자 단말은 스마트폰, 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기 등을 포함할 수 있다.
도 7을 참조하면, 일실시예에 따른 가속기 시스템은 사용자 단말(700)로 구현될 수 있다. 도 7에서는 설명의 편의를 위해 사용자 단말(700)이 스마트 폰으로 도시되었지만, 이외에도 사용자에 의해 제어되는 기기라면 제한 없이 적용될 수 있다. 사용자 단말(700)은 직접 사용자로부터 요청을 획득하고, 앞선 설명처럼 가속기(720)가 호스트 프로세서(710)로부터 전달된 명령어에 따른 연산을 계층적 메모리들에 프리패치된 데이터에 기반하여 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (20)

  1. 호스트 프로세서로부터 수신된 명령어에 따른 연산을 수행하는 복수의 프로세싱 엘리먼트들;
    상기 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들; 및
    상기 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치(prefetch)하는 보조 코어들
    을 포함하는
    가속기.
  2. 제1항에 있어서,
    상기 보조 코어들은
    상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치를 수행하는,
    가속기.
  3. 제1항에 있어서,
    상기 보조 코어들은
    상기 복수의 프로세싱 엘리먼트들과 독립적으로 프리패치를 수행하는,
    가속기.
  4. 제1항에 있어서,
    상기 복수의 프로세싱 엘리먼트들은
    상기 보조 코어들에 의해 상기 계층적 메모리들에 프리패치된 데이터를 이용하여 상기 명령어에 따른 연산을 수행하는,
    가속기.
  5. 제1항에 있어서,
    상기 보조 코어들은
    상기 계층적 메모리들의 구조에 기반하여 상기 연산과 관련된 데이터를 서로 협력(coordinate)하여 프리패치하는,
    가속기.
  6. 제1항에 있어서,
    상기 계층적 메모리들은
    상기 복수의 프로세싱 엘리먼트들 중 어느 하나의 프로세싱 엘리먼트가 액세스 가능한 레벨0 메모리;
    상기 복수의 프로세싱 엘리먼트들 중 일부가 액세스 가능한 레벨1 메모리; 및
    상기 복수의 프로세싱 엘리먼트들이 액세스 가능한 레벨2 메모리
    중 적어도 하나를 포함하는,
    가속기.
  7. 제6항에 있어서,
    상기 보조 코어들은
    레벨에 따라 상이한 상기 계층적 메모리들의 액세스 비용에 기초하여 상기 연산과 관련된 데이터를 프리패치하는,
    가속기.
  8. 제6항에 있어서,
    상기 계층적 메모리들의 액세스 비용은 상기 계층적 메모리들 중에서 공유하는 프로세싱 엘리먼트의 개수가 많은 메모리일수록 커지는,
    가속기.
  9. 제1항에 있어서,
    상기 가속기는
    명령어에 대응하는 뉴럴 네트워크를 통해 인식하고자 하는 데이터가 입력된 사용자 단말 또는 상기 사용자 단말로부터 상기 인식하고자 하는 데이터를 수신하는 서버에 포함되는,
    가속기.
  10. 제1항에 있어서,
    상기 보조 코어들에서 수행되는 프리패치는 상기 가속기의 하드웨어 리소스의 사용 정보에 기초하여 상기 보조 코어들의 협력으로 수행되는,
    가속기.
  11. 제10항에 있어서,
    상기 하드웨어 리소스의 사용 정보는 상기 복수의 프로세싱 엘리먼트들에 기반한 연산 리소스 및 상기 가속기 내 상기 계층적 메모리들 및/또는 상기 가속기의 오프-칩 메모리에 기반한 메모리 액세스 리소스에 대한 사용 정보를 포함하는,
    가속기.
  12. 호스트 프로세서로부터 연산 수행을 위한 명령어를 수신하는 단계;
    상기 명령어에 따른 연산 대상이 되는 데이터를 계층적 메모리에서 읽는 단계; 및
    상기 명령어에 따른 연산을 상기 데이터에 기초하여 수행하는 단계
    를 포함하고,
    상기 데이터는
    상기 계층적 메모리들 각각에 대응하는 보조 코어들에 의해 상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치되는,
    가속기의 동작 방법.
  13. 제12항에 있어서,
    상기 보조 코어들은
    상기 가속기 내 복수의 프로세싱 엘리먼트들과 독립적으로 프리패치를 수행하는,
    가속기의 동작 방법.
  14. 제12항에 있어서,
    상기 보조 코어들은
    상기 계층적 메모리들의 구조에 기반하여 상기 연산과 관련된 데이터를 서로 협력하여 프리패치하는
    가속기의 동작 방법.
  15. 제12항에 있어서,
    상기 계층적 메모리들은
    상기 가속기 내 복수의 프로세싱 엘리먼트들 중 어느 하나의 프로세싱 엘리먼트가 액세스 가능한 레벨0 메모리;
    상기 복수의 프로세싱 엘리먼트들 중 일부가 액세스 가능한 레벨1 메모리; 및
    상기 복수의 프로세싱 엘리먼트들이 액세스 가능한 레벨2 메모리
    중 적어도 하나를 포함하는,
    가속기의 동작 방법.
  16. 제15항에 있어서,
    상기 보조 코어들은
    레벨에 따라 상이한 상기 계층적 메모리들의 액세스 비용에 기초하여 상기 연산과 관련된 데이터를 프리패치하는,
    가속기의 동작 방법.
  17. 제15항에 있어서,
    상기 계층적 메모리들의 액세스 비용은 상기 계층적 메모리들 중에서 공유하는 프로세싱 엘리먼트의 개수가 많은 메모리일수록 커지는,
    가속기의 동작 방법.
  18. 제12항 내지 제17항 중에서 어느 하나의 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 저장 매체.
  19. 가속기로 명령어를 전달하는 호스트 프로세서; 및
    상기 명령어에 따른 연산을 수행하는 복수의 프로세싱 엘리먼트들, 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 계층적 메모리들 및 상기 연산과 관련된 데이터를 대응하는 레벨의 메모리에 프리패치하는 보조 코어들을 포함하는 가속기
    를 포함하고,
    상기 보조 코어들은
    상기 명령어에서 상기 연산을 위한 데이터 액세스 부분에 기초하여 프리패치 동작을 제어하는,
    가속기 시스템.
  20. 제19항에 있어서,
    상기 보조 코어들은
    상기 복수의 프로세싱 엘리먼트들과 독립적으로 프리패치를 수행하는,
    가속기 시스템.
KR1020200075655A 2020-06-22 2020-06-22 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 KR20210157624A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200075655A KR20210157624A (ko) 2020-06-22 2020-06-22 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US17/148,676 US20210397557A1 (en) 2020-06-22 2021-01-14 Method and apparatus with accelerator processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200075655A KR20210157624A (ko) 2020-06-22 2020-06-22 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템

Publications (1)

Publication Number Publication Date
KR20210157624A true KR20210157624A (ko) 2021-12-29

Family

ID=79022397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200075655A KR20210157624A (ko) 2020-06-22 2020-06-22 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템

Country Status (2)

Country Link
US (1) US20210397557A1 (ko)
KR (1) KR20210157624A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657059B2 (en) * 2017-09-12 2020-05-19 International Business Machines Corporation Controlling a rate of prefetching based on bus bandwidth
BR112021016111A2 (pt) * 2019-03-15 2021-11-09 Intel Corp Dispositivo de computação, unidade de processamento paralelo, núcleo de unidade de processamento gráfico de propósito geral e multiprocessador gráfico
US11599798B2 (en) * 2019-03-18 2023-03-07 University Of Notre Dame Du Lac Methods of operating a graphics processing unit (GPU) to train a deep neural network using a GPU local memory and related articles of manufacture
US11327810B2 (en) * 2019-06-24 2022-05-10 Red Hat, Inc. Managing virtual machine memory balloon using time series predictive data

Also Published As

Publication number Publication date
US20210397557A1 (en) 2021-12-23

Similar Documents

Publication Publication Date Title
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US20210373944A1 (en) Scheduler, method of operating the same, and accelerator apparatus including the same
KR20210108749A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US11609792B2 (en) Maximizing resource utilization of neural network computing system
JP7451614B2 (ja) オンチップの計算ネットワーク
US11694075B2 (en) Partitioning control dependency edge in computation graph
US20210200584A1 (en) Multi-processor system, multi-core processing device, and method of operating the same
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20220030106A (ko) 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
JP2022068110A (ja) データ処理方法、データ処理装置及びデータ処理装置を含む電子装置
KR20220001821A (ko) 텐서 처리 방법, 가속기 및 이를 포함한 가속기 시스템
US11995472B2 (en) Memory sharing for machine learning processing
US12014202B2 (en) Method and apparatus with accelerator
KR20220028899A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20240007354A (ko) 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법
KR20210157624A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
KR20210106635A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
KR20210157636A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US20190318229A1 (en) Method and system for hardware mapping inference pipelines
KR20220049325A (ko) 가속기 및 이를 포함한 전자 장치
KR20230068709A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
KR20230063791A (ko) 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
KR20210156554A (ko) 텐서 처리 방법, 가속기 및 이를 포함한 전자 장치
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
KR20220033314A (ko) 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치