KR102411681B1 - 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 - Google Patents
시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 Download PDFInfo
- Publication number
- KR102411681B1 KR102411681B1 KR1020210186930A KR20210186930A KR102411681B1 KR 102411681 B1 KR102411681 B1 KR 102411681B1 KR 1020210186930 A KR1020210186930 A KR 1020210186930A KR 20210186930 A KR20210186930 A KR 20210186930A KR 102411681 B1 KR102411681 B1 KR 102411681B1
- Authority
- KR
- South Korea
- Prior art keywords
- task
- core
- hardware accelerator
- software framework
- queue
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000001133 acceleration Effects 0.000 title description 6
- 238000012544 monitoring process Methods 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 15
- 230000007958 sleep Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 description 18
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000013527 convolutional neural network Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000004622 sleep time Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013136 deep learning model Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000007704 transition Effects 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5044—Allocation 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 hardware capabilities
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
본 문서에 개시된 일 실시예에 따른 하나 이상의 코어를 포함하고 시간 결정적인 태스크를 프로그래밍 가능한 하드웨어 가속기 및 하드웨어 가속기에 연결되는 소프트웨어 프레임워크를 포함하는 하드웨어 가속기 제어 장치에서 수행되는 하드웨어 가속기 제어 방법으로서, 소프트웨어 프레임워크에서, 소프트웨어 프레임워크에서 제공되는 작업 관리 단위인 태스크 포스를 어플리케이션에서 인스턴스화하는 단계; 인스턴스화된 태스크 포스를 이용하여 메타데이터를 어플리케이션에서 구성하는 단계; 및 어플리케이션에 의해, 구성된 태스크 포스를 소프트웨어 프레임워크에 등록하는 단계를 포함할 수 있다.
Description
본 문서에 개시된 실시예들은 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 SW 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치에 관한 것이다.
컴퓨팅 시스템에서 하드웨어를 가속하기 위한 기술로서 CPU(Central Processing Unit)를 대신하여 다량의 복잡한 연산들(이하, 태스크(task)라 함)을 빠른 시간 내에 처리해 주는 하드웨어 가속기가 사용되고 있다. 예를 들어, CPU를 대신하여 그래픽 연산에 특화된 하드웨어 가속 기능을 제공하는 GPU(Graphic Processing Unit), 딥러닝(Deep Learning) 모델 연산에 특화된 하드웨어 가속 기능을 제공하는 NPU(Neural Processing Unit) 등 여러 하드웨어 가속기가 사용되고 있다.
컴퓨팅 시스템 속에서 하드웨어 가속기를 이용한 태스크의 시작 및 종료를 포함하는 모든 제반 관리를 위해서 하드웨어를 구현하는 소프트웨어의 지원이 요구된다. 하드웨어 가속기의 제반 동작을 관리하기 위한 소프트웨어 일체를 소프트웨어 프레임워크(Software Framework)라 하며, 사용자는 하드웨어 가속기를 추상화한 소프트웨어 프레임워크를 통해 원하는 동작을 수행할 수 있고, 특히 태스크의 시작과 종료의 관점에서 통상적으로 인터럽트 방식(interrupt method) 또는 폴링 방식(polling method)을 이용하여 가속기의 상태를 감지 및 감시하여 사용자가 원하는 동작을 수행할 수 있다.
태스크 상태 감시 방식으로서, 폴링 방식 및 인터럽트 방식이 이용된다. 폴링 방식을 이용할 경우, 태스크가 완료될 때까지 끊임없이 코어의 상태를 모니터링할 필요성이 있다. 따라서, 불필요한 CPU 사이클의 소모가 발생될 수 있으며, 이로 인해 시스템 단위에서 효율이 떨어지게 되는 문제점이 발생될 수 있다. 더욱이, 최근 들어 단일의 코어(single core)가 아닌, 수십개 내지 수백개 이상의 다수의 코어를 가지고 있는 하드웨어 가속기가 요구되는 경우가 있는데, 이런 경우 개별 코어들을 모두 감시해야 하기 때문에 세심한 조치 없이 각각의 코어를 일일이 감시하게 되면 운영체제의 기초 작업 단위 중 하나인 스레드(Thread)의 개수 증가로 인한 시스템 성능이 저하될 수 있다.
특히, 차량용 NPU와 같이 저전력 및 고성능이 요구되는 코어 환경에서 시스템 효율은 매우 중요한 요소이다.
하드웨어 가속기를 지원하는 소프트웨어 프레임워크에서 폴링 방식을 이용함으로써 발생될 수 있는 불필요한 CPU 사이클 소모를 줄일 수 있는 방법이 요구되며, 스레드로 대표되는 최소한의 시스템 자원을 이용하여 하드웨어 가속기를 충분히 조작할 수 있는 방법이 필요하다. 동시에 소프트웨어 프레임워크는 하드웨어 가속기의 추상화된 형상으로 사용자에게 제공되기 때문에 하드웨어 가속기의 태스크를 사용자가 직관적으로 이용하기 편리한 모습으로 구성되어야 한다.
하드웨어 가속기 중 처리할 태스크가 언제 종료되는지 알 수 있는 시간 결정적인 태스크를 위한 가속기는 폴링 방식을 이용할 때 예상 종료 시간을 활용하여 전체 시스템의 성능을 향상시킬 수 있다. 또한 위와 같은 특징을 가진 일반적인 하드웨어 가속기의 고유한 동작을 추상화하여 사용자에게 직관적으로 편리한 소프트웨어 프레임워크를 제공할 수 있게 된다.
본 문서에 개시된 일 실시예에 따른 하나 이상의 코어를 포함하고 시간 결정적인 태스크를 프로그래밍할 수 있는 하드웨어 가속기 및 하드웨어 가속기에 연결되고 코어 모니터를 포함하는 소프트웨어 프레임워크를 포함하는 하드웨어 가속기 제어 장치에서 수행되는 하드웨어 가속기 제어 방법은, 소프트웨어 프레임워크에서, 소프트웨어 프레임워크에서 제공되는 작업 관리 단위인 태스크 포스를 어플리케이션을 통해 인스턴스화하는 단계; 인스턴스화된 태스크 포스를 이용하여 메타데이터를 구성하는 단계; 및 어플리케이션에 의해, 구성된 태스크 포스를 소프트웨어 프레임워크에 등록하는 단계를 포함할 수 있다.
일 실시예에서, 소프트웨어 프레임워크는 등록 요청이 온 태스크 포스의 메타데이터에 포함된 가속기 코어 설정에 기초하여 하드웨어 가속기를 프로그래밍하도록 구성될 수 있다.
일 실시예에서, 어플리케이션에 의해, 소프트웨어 프레임워크에 등록된 인스턴스화된 태스크 포스를 통해 소프트웨어 프레임워크 및 하드웨어 가속기에 태스크 처리를 요청하는 단계; 수신한 태스크를 태스크 큐에 추가하여 수신된 태스크를 관리하는 단계; 및 신규 태스크가 태스크 큐에 추가되면, 태스크 포스에 의해 코어 모니터에 신규 태스크가 추가되었다는 신호를 통지하는 단계를 더 포함할 수 있다.
일 실시예에서, 코어 모니터에 의해, 하드웨어 가속기에 포함되는 하나 이상의 코어를 모니터링하는 단계; 모니터링 중에 처리해야 하는 태스크가 있는 경우, 하나 이상의 코어 중 가용한 코어가 있는지 확인하는 단계; 및 가용한 코어가 발견되면 태스크 포스의 태스크 큐에서 태스크를 제거하고 하드웨어 가속기의 코어에 태스크를 할당하는 단계를 더 포함할 수 있다.
일 실시예에서, 시간 결정적인 태스크를 처리하는 프로그래밍가능한 하드웨어 가속기에서 태스크를 처리하는 시간은 프로그래밍된 태스크포스 내부 개별 명령어의 하드웨어적인 지연 시간의 총합이고, 해당 지연 시간을 태스크 수행 시 폴링 전 슬립 시간이자 도달 예정 시간(ETA; Estimated Time Arrival)으로 사용하는 단계를 포함할 수 있다.
일 실시예에서, 시간 결정적인 태스크는 동일한 수준의 지연 시간을 가지므로 가속기 코어를 설정한 후 임의의 입력에 대해 가속 처리를 수행한 뒤 폴링 방식으로 소요 시간을 기록하여 그 시간을 태스크 수행 시 폴링 전 슬립 시간이자 도달 예정 시간(ETA; Estimated Time Arrival)으로 사용하는 단계를 포함할 수 있다.
일 실시예에서, 코어 모니터에 의해, 모니터링 큐의 가장 앞을 모니터링하는 단계; 태스크가 할당된 코어의 이용 정보를, 코어 모니터링 큐에 ETA(Estimated Time Arrival) 기준으로 우선순위를 매겨 추가하는 단계 - ETA가 짧을수록 우선순위가 높아짐 -; 및 태스크 할당이 완료되면 코어 모니터링 큐의 가장 앞에 있는 코어의 ETA만큼 폴링(Polling) 작업을 슬립(Sleep)을 이용하여 펜딩(Pending)시키는 단계를 더 포함하고, 모니터링 큐의 가장 앞에 있는 코어는 ETA가 가장 작은 코어이고, 하나 이상의 코어는 하나의 스레드를 통해 제어될 수 있다.
본 문서에 개시된 일 실시예에 따른 하드웨어 가속기 및 그 제어 장치는 하나 이상의 코어를 포함하고 시간 결정적인 태스크를 프로그래밍할 수 있는 하드웨어 가속기; 및 프로그래밍가능 하드웨어 가속기에 연결되는 소프트웨어 프레임워크를 포함하고, 소프트웨어 프레임워크는, 소프트웨어 프레임워크에서 제공되는 작업 관리 단위인 태스크 포스를 어플리케이션을 통해 인스턴스화하고, 인스턴스화된 태스크 포스를 이용하여 메타데이터가 구성하며, 어플리케이션에 의해, 구성된 태스크 포스를 소프트웨어 프레임워크에 등록하도록 구성될 수 있다.
일 실시예에서, 소프트웨어 프레임워크는 등록 요청이 온 태스크 포스의 메타데이터에 포함된 가속기 코어 설정에 기초하여 하드웨어 가속기를 프로그래밍하도록 구성될 수 있다.
일 실시예에서, 어플리케이션은, 소프트웨어 프레임워크에 등록된 인스턴스화된 태스크 포스를 통해 소프트웨어 프레임워크 및 하드웨어 가속기에 태스크 처리를 요청하고, 수신한 태스크를 태스크 큐에 추가하여 수신된 태스크를 관리하며, 신규 태스크가 태스크 큐에 추가되면, 태스크 포스에 의해 코어 모니터에 신규 태스크가 추가되었다는 신호를 통지하도록 더 구성될 수 있다.
일 실시예에서, 코어 모니터는, 하드웨어 가속기에 포함되는 하나 이상의 코어를 모니터링하도록 구성되고, 모니터링 중에 처리해야 하는 태스크가 있는 경우, 하나 이상의 코어 중 가용한 코어가 있는지 확인하며, 가용한 코어가 발견되면 태스크 포스의 태스크 큐에서 태스크를 제거하고 하드웨어 가속기의 코어에 태스크를 할당하도록 더 구성될 수 있다.
일 실시예에서, 코어 모니터는, 모니터링 큐의 가장 앞을 모니터링하고, 태스크가 할당된 코어의 이용 정보를, 코어 모니터링 큐에 ETA(Estimated Time Arrival) 기준으로 우선순위를 매겨 추가하며, 태스크 할당이 완료되면 코어 모니터링 큐의 가장 앞에 있는 코어의 ETA만큼 폴링(Polling) 작업을 슬립(Sleep)을 이용하여 펜딩(Pending)시키도록 더 구성되고, 모니터링 큐의 가장 앞에 있는 코어는 ETA가 가장 작은 코어이고, 하나 이상의 코어는 하나의 스레드를 통해 제어되도록 구성될 수 있다.
시간 결정적인 가속기가 수행하는 태스크의 속성에 부합하는 최소한의 추상화(태스크 포스)를 제공하여 동일한 태스크를 수행하는 코어들을 그룹화하고, 스케줄링하며, 태스크 관리 방법론을 중앙화하여 관리하는 등 의미론적인 사용자 편의를 도모할 수 있다.
또한, 다중 코어를 감시하는 스레드의 개수를 최소한으로 유지하여 시스템 자원의 낭비를 막고 시간 결정적인 태스크를 수행하는 것을 통해 하드웨어 가속기에서 불필요한 소요시간만큼의 폴링을 배제하여 전체 시스템 성능이 향상될 수 있다.
도 1은 브루트 포스(Brute Force) 구조를 설명한다.
도 2는 본 발명에 따른 다양한 실시예들에 따른 시스템 구조를 나타낸다.
도 3a는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 프로그래밍하기 위한 블록도를 나타낸다.
도 3b는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 코어를 설정하기 위한 블록도를 나타낸다.
도 4는 본 발명에 따른 다양한 실시예들에 따라 태스크(Task) 처리 요청 전달 및 태스크 포스(Task Force) 단위로 집중된 태스크 스케줄링하기 위한 블록도를 나타낸다.
도 5는 본 발명에 따른 도 2에 도시된 하드웨어 가속기 제어 장치의 구성을 개략적으로 나타낸 도면이다.
도 6은 인공 신경망의 기본적인 개념을 간단히 나타낸 도면이다.
도 2는 본 발명에 따른 다양한 실시예들에 따른 시스템 구조를 나타낸다.
도 3a는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 프로그래밍하기 위한 블록도를 나타낸다.
도 3b는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 코어를 설정하기 위한 블록도를 나타낸다.
도 4는 본 발명에 따른 다양한 실시예들에 따라 태스크(Task) 처리 요청 전달 및 태스크 포스(Task Force) 단위로 집중된 태스크 스케줄링하기 위한 블록도를 나타낸다.
도 5는 본 발명에 따른 도 2에 도시된 하드웨어 가속기 제어 장치의 구성을 개략적으로 나타낸 도면이다.
도 6은 인공 신경망의 기본적인 개념을 간단히 나타낸 도면이다.
이하, 본 발명의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 할 수 있다.
본 문서에서 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A또는 B", "A및 B 중 적어도 하나","A또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나" 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예컨대, 중요성 또는 순서)에서 한정하지 않는다. 어떤(예컨대, 제 1) 구성요소가 다른(예컨대, 제 2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예컨대, 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미할 수 있다.
본 문서에서 설명되는 구성요소들의 각각의 구성요소(예컨대, 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예컨대, 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
본 문서에서 사용되는 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다. 본 문서에서 사용되는 용어 "소프트웨어 프레임워크", "코어 매니저" 등은 소프트웨어로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine) 의해 읽을 수 있는 저장 매체(storage medium)(예컨대, 메모리)에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예컨대, 프로그램 또는 애플리케이션)로서 구현될 수 있다. 예를 들면, 기기의 프로세서는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 할 수 있다. 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예컨대, 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 사이에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예컨대, compact disc read only memory(CD-ROM))의 형태로 배포되거나, 또는 애플리케이션 스토어를 통해 또는 두 개의 사용자 장치들(예컨대, 스마트폰들) 사이에 직접, 온라인으로 배포(예컨대, 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 애플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
본 문서에 개시된 다양한 실시예들에 따르면, 소프트웨어를 통해 프로그래밍가능 하드웨어 가속기 내 다수의 코어(예컨대, NPU)가 존재할 수 있으며, 폴링 방식으로 코어의 상태를 감지 및 감시할 수 있다. 본 문서에 개시된 다양한 실시예들에서 다루는 태스크는 예측 가능 지연 시간을 가질 수 있다. 예를 들어, 하드웨어 가속기의 일례로서 딥러닝 모델(Deep Learning Model)은 예측 가능 지연 시간을 가진다는 점에서 시간결정적인 태스크이며, 동일한 딥러닝 모델로 동일한 가속기 아키텍처를 사용하는 코어에서 처리할 경우 동일한 지연 시간을 가질 수 있다.
도 1은 브루트 포스(Brute Force) 구조를 설명한다.
브루트 포스 구조는 프로그래밍가능 하드웨어 가속기(programmable hardware accelerator)(110) 및 하드웨어 가속기(110) 내의 코어(111) 각각에 대응하는 코어 매니저들(120)을 포함한다. 각각의 코어 매너저(120)는 코어 모니터를 포함하고, 이러한 코어 모니터는 어플리케이션(130-1, 130-2)으로부터 관리된다. 예를 들어, 어플리케이션 #1(130-1)은 "태스크 ①"를 수행하기 위해 코어 #1 내지 코어 #3을 이용하고, 어플리케이션 #2(130-2)는 "태스크 ②"를 수행하기 위해 코어 #4를 이용할 수 있다.
브루트 포스 구조는 각 가속기 내의 코어(111) 별로 감시 스레드를 두어 수행할 수 있다. 이러한 브루트 포스 구조는 성능 측면에서 코어 수가 증가함에 따라 스레드 수가 그에 비례하여 증가하게 되므로, 불필요한 컴퓨팅 자원이 낭비될 수 있다. 브루트 포스 구조는 사용자 편의성 측면에서 다수의 코어를 이용한 태스크 처리 시나리오(예컨대, 4개의 코어를 가지는 NPU에서 SSD-MobileNet v1을 3개의 코어를 이용하여 1개를 가속하는 한편, ResNet50을 1개의 코어를 이용하여 1개를 가속시키고 싶을 경우와 같은 시나리오)에 효과적으로 대응이 불가할 수 있다.
또한, 동일한 태스크를 처리하는 코어들을 의미적으로 잘 그룹화하지 않으면, 사용자가 직접 적절한 코어 각각에 ① 처리할 태스크를 프로그래밍해야 하고, ② 태스크 스케줄링을 하며, ③ 태스크 처리 요청을 전달해야 하기 때문에 불편하고 에러의 가능성이 높아지는 문제점이 있다.
이러한 문제점을 해결하기 위해, 태스크 포스 단위로 가속기 동작을 관리하여, 의미론적인 사용자 편의를 도모할 수 있으며, 컴퓨팅 자원의 낭비도 방지할 수 있는 소프트웨어 아키텍처의 도입이 요구된다.
도 2는 본 발명에 따른 다양한 실시예들에 따른 시스템 구조를 나타낸다.
본 발명에 따른 시스템(200)은 프로그래밍가능 하드웨어 가속기(210) 및 소프트웨어 프레임워크(220)를 포함할 수 있다.
본 발명에 따른 프로그래밍가능 하드웨어 가속기(210)는 하나 이상의 코어(211)를 포함할 수 있다.
본 발명에 따른 소프트웨어 프레임워크(220)는 코어 모니터(221) 및 하나 이상의 태스크 포스(222)를 포함하고, 이러한 코어 모니터(221)는 어플리케이션(230-1, 230-2)으로부터 소프트웨어 프레임워크(220)를 통해 관리될 수 있으며, 태스크 포스(222)는 최소 처리해야 할 태스크의 리스트를 담고 있는 태스크 큐(222-1) 및 코어 설정을 위한 메타데이터(metadata)를 포함하는 코어 세팅부(222-2)를 포함할 수 있다. 예를 들어, 어플리케이션 #1(230-1)은 "태스크 ①"를 수행하기 위해 코어 #1 내지 코어 #3을 이용하고, 어플리케이션 #2(230-2)는 "태스크 ②"를 수행하기 위해 코어 #4를 이용할 수 있다. 한편, 코어 모니터(221)는 코어 모니터링 큐(ETA에 의해 주문된 우선순위 큐)를 포함할 수 있다.
또한, 소프트웨어 프레임워크(220)는 코어 모니터(221)를 통해 각 코어에 폴링을 수행할 수 있다.
하드웨어 가속기(210) 내부에 코어 4개가 존재할 때, 총 4개의 스레드가 존재하여 각 코어를 하나의 스레드 전담하여 폴링(Polling) 할 수 있으나, 코어 수가 늘어나게 되면 코어 수만큼 스레드가 늘어나게 되어 추가되는 스레드에 따른 부담이 커지고, 해당 스레드에서 일어나는 폴링으로 인해 성능상의 문제가 생길 수 있다.
본 발명의 일 실시예에 의하면, 하나의 스레드로 4개의 코어의 폴링 작업을 제어할 수 있다. 즉, 코어 모니터(221) 내의 코어 모니터링 큐는 각 코어들(211)의 정보들을 포함하고(예컨대, 4개의 코어인 경우 큐 내부에 4개의 데이터가 존재함), 코어의 연산 완료까지 남은 시간인 ETA를 우선순위로 하여 ETA가 가장 빠른 코어(즉, 연산 완료까지 가장 얼마 남지 않은 코어)를 큐의 가장 앞에 배치하게 되고, 코어 모니터(221)는 코어 모니터링 큐의 가장 앞을 모니터링하는데, 이 때 아직 ETA가 도래하지 않았을 경우에 폴링을 하는 것은 비효율적이므로 ETA 시간만큼 잠시 폴링을 중단시키고, 즉 슬립(sleep) 상태로 전환하고 ETA가 도래하게 되면 해당 코어의 폴링을 시작하게 되고 모니터링 큐의 마지막으로 해당 코어를 옮기게 될 수 있다. 즉, ETA가 짧을수록 우선순위가 높아질 수 있다.
다양한 실시예들에 따른 시스템 구조에 의하면, ① 태스크 포스를 통해 동일한 태스크를 수행하는 코어들을 그룹화하고 스케줄링 등 태스크 관리 방법론을 태스크 포스 단위로 중앙화하여 관리할 수 있으며, ② 스레드 개수를 1개로 축소하고, 예측 가능 지연 시간이 있다는 점을 활용하여, 폴링(Polling) 시점을 조정하고 예측 가능 지연 시간에 기반한 코어 연산 결과의 ETA를 기준으로 유지하는 우선순위 큐를 참고하여 컴퓨팅 자원 낭비를 최소화할 수 있다.
도 3a는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 프로그래밍하기 위한 블록도를 나타낸다.
태스크 포스 구성
S310 단계에서, 유저 응용 프로그램(230-1)(예컨대, 어플리케이션)은 소프트웨어 프레임워크에서 제공하는 추상화된 작업 관리 단위인 태스크 포스를 인스턴스화할 수 있다.
S320 단계에서, 유저 응용 프로그램(230)(예컨대, 어플리케이션(230-1, 230-2))은 인스턴스화된 태스크 포스를 이용하여 필요한 메타데이터를 구성할 수 있다.
태스크 포스에 필요한 정보는 최소 처리해야 할 태스크의 리스트를 담고 있는 태스크 큐(222-1), 코어 설정을 위한 메타데이터를 포함하는 코어 세팅부(222-2)일 수 있다.
태스크 포스 등록
S330 단계에서, 어플리케이션(230)은 구성된 태스크 포스를 소프트웨어 프레임워크(220)에 등록할 수 있다. 소프트웨어 프레임워크는 등록 요청이 온 태스크 포스의 메타데이터에 포함된 가속기 코어 설정에 기초하여 하드웨어 가속기를 프로그래밍하고 이외 메타데이터에 따른 소프트웨어 프레임워크 내부 데이터를 설정할 수 있다.
태스크 포스 이용 가능
어플리케이션(230)은 등록된 태스크 포스 인스턴스를 이용하여 같은 종류의 태스크를 일관되게 처리할 수 있다.
다양한 실시예에 따른 하드웨어 가속기 프로그래밍에 의하면, 사전에 등록된 태스크 포스 인스턴스를 이용하여 일관되게 태스크를 처리할 수 있다.
도 3b는 본 발명에 따른 다양한 실시예들에 따라 하드웨어 가속기 코어를 설정하기 위한 블록도를 나타낸다.
S341 단계에서, 소프트웨어 프레임워크(220)에서 가속기 코어를 설정하는 동작을 시작한다.
테스트 태스크 수행
S342 단계에서, 테스트 태스크를 수행한다. 테스트 태스크는 연산 결과를 도출하고자 하는 태스크가 아닌 더미(dummy) 태스크이다. 테스트 태스크를 통해 특정 태스크의 지연 시간을 획득할 수 있다.
S343 단계에서, 태스크 완료 상태를 폴링한다.
태스크의 지연 시간 획득
S344 단계에서, 코어 모니터(221)는 태스크를 수행한 시점부터 태스크 완료 시점까지의 시간을 해당 태스크의 지연 시간으로 획득한다. 일 실시예에서, 시간 결정적인 태스크는 동일한 수준의 지연 시간을 가지므로 가속기 코어를 설정한 후 임의의 입력에 대해 가속 처리를 수행한 뒤 폴링 방식으로 소요 시간을 기록하여 그 시간을 태스크 수행 시 폴링 전 슬립 시간이자 도달 예정 시간(ETA; Estimated Time Arrival)으로 사용하는 단계를 포함할 수 있다.
S345 단계에서, 해당 지연 시간을 해당 태스크 포스의 기본 ETA으로 설정한다. 일 실시예에서, 시간 결정적인 태스크를 처리하는 프로그래밍가능한 하드웨어 가속기에서 태스크를 처리하는 시간은 프로그래밍된 태스크포스 내부 개별 명령어의 하드웨어적인 지연 시간의 총합이고, 해당 지연 시간을 태스크 수행 시 폴링 전 슬립 시간이자 도달 예정 시간(ETA; Estimated Time Arrival)으로 사용할 수 있다.
도 4는 본 발명에 따른 다양한 실시예들에 따라 태스크(Task) 처리 요청 전달 및 태스크 포스(Task Force) 단위로 집중된 태스크 스케줄링하기 위한 블록도를 나타낸다.
태스크 생성
S410 단계에서, 어플리케이션(230)(예컨대, 어플리케이션(230-1, 230-2))은 소프트웨어 프레임워크(220)에서 처리해야 할 태스크를 생성할 수 있다.
태스크 포스에 요청
S420 단계에서, 어플리케이션(230)은 소프트웨어 프레임워크(220)에 성공적으로 등록된 태스크 포스 인스턴스(task force instance)를 통해 소프트웨어 프레임워크(220) 및 하드웨어 가속기(210)에 태스크 처리를 요청할 수 있다.
태스크 큐에 태스크 추가 및 코어 모니터에 신호
S430 단계에서, 수신한 태스크를 태스크 큐(222-1)에 추가하여 수신된 태스크를 모두 관리할 수 있다. 신규 태스크가 태스크 큐에 추가되면 태스크 포스(222)는 코어 모니터(221)에 신규 태스크가 추가되었다는 신호를 통지하여 코어 모니터(221)의 슬립 상태를 일시 해제하여 모니터링을 다시 재개하게 만들 수 있다.
가용한 코어 확인 및 태스크 할당
S440 단계에서, 코어 모니터(221)는 가속기(210)가 가지고 있는 모든 코어(211)를 지속적으로 모니터링할 수 있다.
S450 단계에서, 처리해야 하는 태스크가 있을 시 가용한 코어가 있는지 확인하고 가용한 코어가 발견되면 태스크 포스의 태스크 큐에서 태스크를 제거하고 하드웨어 가속기의 코어에 태스크를 할당한다. 태스크가 할당된 코어의 이용 정보는 코어 모니터링 큐에 ETA(Estimated Time Arrival) 기준으로 우선순위를 매겨 추가된다. 태스크 할당이 완료되면 코어 모니터링 큐의 가장 앞에 있는 (ETA가 가장 작은) 코어의 ETA만큼 폴링(Polling) 작업을 슬립(Sleep)을 이용하여 펜딩(Pending)시킬 수 있다.
예를 들어, 4개의 코어의 폴링 작업을 하나의 스레드로 제어할 수 있다. 즉, 코어 모니터(221) 내의 코어 모니터링 큐는 각 코어들(211)의 정보들을 포함한다. 예를 들어, 4개의 코어인 경우 큐 내부에 4개의 데이터가 존재할 수 있다. 코어의 연산 완료까지 남은 시간인 ETA를 우선순위로 하여 ETA가 가장 빠른 코어(즉, 연산 완료까지 가장 얼마 남지 않은 코어)를 큐의 가장 앞에 배치할 수 있다. 이러한 경우, 코어 모니터(221)는 코어 모니터링 큐의 가장 앞을 모니터링하고, 아직 ETA가 도래하지 않았을 경우에 폴링을 하는 것은 비효율적이므로 ETA시간만큼 잠시 폴링을 중단시키고, 즉 폴링(Polling) 작업을 슬립(sleep) 상태로 전환하고 ETA가 도래하게 되면 해당 코어의 폴링을 시작하게 되고 모니터링 큐의 마지막으로 해당 코어를 옮기게 될 수 있다.
태스크 완료
S460 단계에서, 코어 모니터(221)가 ETA 만료로 인해 슬립(Sleep) 상태에서 깨어나게 되면 폴링(Polling) 방식으로 코어를 감시하여 태스크가 완료되기까지 기다릴 수 있다. 코어의 상태가 완료 상태로 변경되면 태스크 완료 신호를 어플리케이션(230)에 전달할 수 있다.
도 5는 본 발명에 따른 도 2에 도시된 하드웨어 가속기 제어 장치의 구성을 개략적으로 나타낸 도면이다.
본 발명에 따른 하드웨어 가속기 제어 장치(500)는 프로그래밍가능 하드웨어 가속기부(510) 및 소프트웨어 프레임워크부(520)를 포함할 수 있다.
소프트웨어 프레임워크부(520)는 코어 모니터부(521) 및 태스크 포스(522)를 포함할 수 있다. 코어 모니터부(521)는 코어 모니터링 큐를 포함할 수 있다.
태스크 포스(522)는 어플리케이션에 의해 구성된 태스크 포스를 소프트웨어 프레임워크부(520)에 등록될 수 있다.
본 발명에 적용 가능 딥러닝 알고리즘에 대해 설명하면 다음과 같다.
딥러닝 알고리즘은 머신 러닝(machine learning) 알고리즘의 하나로 인간의 신경망을 본딴 인공 신경망에서 발전된 모델링 기법을 의미한다. 인공 신경망은 도 6에 도시된 바와 같이 다층 계층 구조로 구성될 수 있다.
도 6은 인공 신경망의 기본적인 개념을 간단히 나타낸 도면이다.
도 6에 도시된 바와 같이, 인공 신경망(artificial neural network; ANN)은 입력 층, 출력 층, 그리고 위 입력 층과 출력 층 사이에 적어도 하나 이상의 중간 층(또는 은닉 층, hidden layer)을 포함하는 계층 구조로 구성될 수 있다. 딥러닝 알고리즘은, 이와 같은 다중 계층 구조에 기반하여, 층간 활성화 함수(activation function)의 가중치를 최적화(optimization)하는 학습을 통해 결과적으로 신뢰성 높은 결과를 도출할 수 있다.
본 발명에 적용 가능 딥러닝 알고리즘은, 심층 신경망(deep neural network; DNN), 합성곱 신경망(convolutional neural network; CNN), 순환 신경망(recurrent neural network; RNN) 등을 포함할 수 있다.
심층 신경망(deep neural network; DNN)은 기본적으로 기존 ANN 모델 내 중간 층(또는 은닉 층)을 많이 늘려서 학습의 결과를 향상시키는 것을 특징으로 한다. 일 예로, 위 DNN은 2개 이상의 중간 층을 이용하여 학습 과정을 수행하는 것을 특징으로 한다.
이에 따라, 컴퓨터는 스스로 분류 레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분하는 과정을 반복하여 최적의 출력 값을 도출할 수 있다.
컨볼루션 신경망(convolutional neural network; CNN)은, 기존의 데이터에서 지식을 추출하여 학습 과정이 수행되는 기법과 달리, 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조를 갖는 것을 특징으로 한다. 위 CNN은 컨볼루션(convolution) 과정과 풀링(pooling) 과정을 통해 수행될 수 있다. 다시 말해, 위 CNN은 컨볼루션 층과 풀링 층이 복합적으로 구성된 알고리즘을 포함할 수 있다. 여기서, 컨볼루션 층에서는 데이터의 특징을 추출하는 과정(일명, 컨볼루션 과정)이 수행된다. 위 컨볼루션 과정은 데이터에 각 성분의 인접 성분들을 조사해 특징을 파악하고 파악한 특징을 한 장으로 도출하는 과정으로써, 하나의 압축 과정으로써 파라미터의 개수를 효과적으로 줄일 수 있다. 풀링 층에서 컨볼루션 과정을 거친 레이어의 사이즈를 줄여주는 과정(일명, 풀링 과정)이 수행된다. 위 풀링 과정은 데이터의 사이즈를 줄이고 노이즈를 상쇄시키고 미세한 부분에서 일관적인 특징을 제공할 수 있다. 일 예로, 위 CNN은 정보 추출, 문장 분류, 얼굴 인식 등 여러 분야에 활용될 수 있다.
순환 신경망(recurrent neural network; RNN)은 반복적이고 순차적인 데이터(sequential data) 학습에 특화된 인공 신경망의 한 종류로써 내부에 순환구조를 갖는 것을 특징으로 한다. 위 RNN은 위 순환 구조를 이용하여 과거의 학습 내용에 가중치를 적용하여 현재 학습에 반영함으로써, 현재의 학습과 과거의 학습 간 연결을 가능하게 하고 시간에 종속된다는 특징을 갖는다. 위 RNN은 기존의 지속적이고 반복적이며 순차적인 데이터 학습의 한계를 해결한 알고리즘으로써, 음성 웨이브폼을 파악하거나 텍스트의 앞 뒤 성분을 파악하는 등에 활용될 수 있다.
다만, 이는 본 발명에 적용 가능 구체적인 딥러닝 기법의 일 예시들에 불과하며, 실시예에 따라 다른 딥러닝 기법이 본 발명에 적용될 수도 있다.
추가적으로, 본 발명에 따른 컴퓨터 프로그램은, 컴퓨터와 결합하여, 앞서 상술한 다양한 하드웨어 가속기 제어 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장될 수 있다.
전술한 프로그램은, 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 위 방법들을 실행시키기 위하여, 컴퓨터의 프로세서(CPU)가 위 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 위 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 위 기능들을 위 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 위 기능들을 위 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 위 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 위 컴퓨터의 프로세서가 위 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 위 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.
따라서, 본 문서에 개시된 실시예들은 본 문서에 개시된 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 문서에 개시된 기술 사상의 범위가 한정되는 것은 아니다. 본 문서에 개시된 기술 사상의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 문서의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
Claims (10)
- 하나 이상의 코어를 포함하고 시간 결정적인 태스크를 프로그래밍할 수 있는 하드웨어 가속기 및 상기 하드웨어 가속기에 연결되고 코어 모니터를 포함하는 소프트웨어 프레임워크를 포함하는 하드웨어 가속기 제어 장치에서 수행되는 하드웨어 가속기 제어 방법으로서,
상기 소프트웨어 프레임워크에서, 상기 소프트웨어 프레임워크에서 제공되는 작업 관리 단위인 태스크 포스를 어플리케이션을 통해 인스턴스화하는 단계;
상기 어플리케이션에 의해, 인스턴스화된 상기 태스크 포스를 이용하여, 상기 하나 이상의 코어의 설정을 위한 메타데이터를 구성하는 단계; 및
상기 어플리케이션에 의해, 구성된 상기 태스크 포스를 상기 소프트웨어 프레임워크에 등록하는 단계
를 포함하는 하드웨어 가속기 제어 방법. - 제1항에 있어서,
상기 소프트웨어 프레임워크는 등록 요청이 온 태스크 포스의 상기 메타데이터에 포함된 가속기 코어 설정에 기초하여 하드웨어 가속기를 프로그래밍하도록 구성되는, 하드웨어 가속기 제어 방법. - 제2항에 있어서,
상기 어플리케이션에 의해, 상기 소프트웨어 프레임워크에 등록된 인스턴스화된 상기 태스크 포스를 통해 상기 소프트웨어 프레임워크 및 상기 하드웨어 가속기에 태스크 처리를 요청하는 단계;
수신한 태스크를 태스크 큐에 추가하여 수신된 태스크를 관리하는 단계; 및
신규 태스크가 태스크 큐에 추가되면, 상기 태스크 포스에 의해 코어 모니터에 신규 태스크가 추가되었다는 신호를 통지하는 단계
를 더 포함하는 하드웨어 가속기 제어 방법. - 제3항에 있어서,
상기 코어 모니터에 의해, 상기 하드웨어 가속기에 포함되는 하나 이상의 코어를 모니터링하는 단계;
상기 모니터링 중에 처리해야 하는 태스크가 있는 경우, 상기 하나 이상의 코어 중 가용한 코어가 있는지 확인하는 단계; 및
가용한 코어가 발견되면 태스크 포스의 태스크 큐에서 태스크를 제거하고 상기 하드웨어 가속기의 코어에 태스크를 할당하는 단계
를 더 포함하는 하드웨어 가속기 제어 방법. - 제4항에 있어서,
상기 코어 모니터는 코어 모니터링 큐를 포함하고,
상기 방법은,
상기 코어 모니터에 의해, 상기 코어 모니터링 큐의 가장 앞을 모니터링하는 단계;
태스크가 할당된 코어의 이용 정보를, 상기 코어 모니터링 큐에 ETA(Estimated Time Arrival) 기준으로 우선순위를 매겨 추가하는 단계 - 상기 ETA가 짧을수록 상기 우선순위가 높아짐 - ; 및
상기 태스크의 할당이 완료되면 상기 코어 모니터링 큐의 가장 앞에 있는 코어의 ETA만큼 폴링(Polling) 작업을 슬립(Sleep)을 이용하여 펜딩(Pending)시키는 단계
를 더 포함하고,
상기 모니터링 큐의 가장 앞에 있는 코어는 ETA가 가장 작은 코어이고,
상기 하나 이상의 코어는 하나의 스레드를 통해 제어되는, 하드웨어 가속기 제어 방법. - 하드웨어 가속기 제어 장치로서,
하나 이상의 코어를 포함하고 시간 결정적인 태스크를 프로그래밍 가능한 하드웨어 가속기; 및
시간 결정적인 태스크를 프로그래밍 가능한 하드웨어 가속기에 연결되는 소프트웨어 프레임워크
를 포함하고,
상기 소프트웨어 프레임워크는,
상기 소프트웨어 프레임워크에서 제공되는 작업 관리 단위인 태스크 포스를 어플리케이션을 통해 인스턴스화하고,
상기 어플리케이션에 의해, 인스턴스화된 상기 태스크 포스를 이용하여, 상기 하나 이상의 코어의 설정을 위한 메타데이터가 구성하며,
상기 어플리케이션에 의해, 구성된 상기 태스크 포스를 상기 소프트웨어 프레임워크에 등록하도록 구성되는, 하드웨어 가속기 제어 장치. - 제6항에 있어서,
상기 소프트웨어 프레임워크는 등록 요청이 온 태스크 포스의 상기 메타데이터에 포함된 가속기 코어 설정에 기초하여 하드웨어 가속기를 프로그래밍하도록 구성되는, 하드웨어 가속기 제어 장치. - 제7항에 있어서,
상기 어플리케이션은,
상기 소프트웨어 프레임워크에 등록된 인스턴스화된 상기 태스크 포스를 통해 상기 소프트웨어 프레임워크 및 상기 하드웨어 가속기에 태스크 처리를 요청하고,
수신한 태스크를 태스크 큐에 추가하여 수신된 태스크를 관리하며,
신규 태스크가 태스크 큐에 추가되면, 상기 태스크 포스에 의해 코어 모니터에 신규 태스크가 추가되었다는 신호를 통지하도록 더 구성되는, 하드웨어 가속기 제어 장치. - 제8항에 있어서,
상기 코어 모니터는,
상기 하드웨어 가속기에 포함되는 하나 이상의 코어를 모니터링하도록 구성되고,
상기 모니터링 중에 처리해야 하는 태스크가 있는 경우, 상기 하나 이상의 코어 중 가용한 코어가 있는지 확인하며,
가용한 코어가 발견되면 태스크 포스의 태스크 큐에서 태스크를 제거하고 상기 하드웨어 가속기의 코어에 태스크를 할당하도록 더 구성되는, 하드웨어 가속기 제어 장치. - 제9항에 있어서,
상기 코어 모니터는,
코어 모니터링 큐를 포함하고,
상기 코어 모니터는,
상기 코어 모니터링 큐의 가장 앞을 모니터링하고,
태스크가 할당된 코어의 이용 정보를, 상기 코어 모니터링 큐에 ETA(Estimated Time Arrival) 기준으로 우선순위를 매겨 추가하며 단계 - 상기 ETA가 짧을수록 상기 우선순위가 높아짐 -,
상기 태스크의 할당이 완료되면 상기 코어 모니터링 큐의 가장 앞에 있는 코어의 ETA만큼 폴링(Polling) 작업을 슬립(Sleep)을 이용하여 펜딩(Pending)시키도록 더 구성되고,
상기 모니터링 큐의 가장 앞에 있는 코어는 ETA가 가장 작은 코어이고,
상기 하나 이상의 코어는 하나의 스레드를 통해 제어되도록 구성되는, 하드웨어 가속기 제어 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210186930A KR102411681B1 (ko) | 2021-12-24 | 2021-12-24 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
PCT/KR2022/008120 WO2023120836A1 (ko) | 2021-12-24 | 2022-06-09 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
US18/343,626 US20230342211A1 (en) | 2021-12-24 | 2023-06-28 | Method and device for controlling hardware accelerator by using sw framework structure homogeneous multi-core accelerator for supporting acceleration of time-critical task |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210186930A KR102411681B1 (ko) | 2021-12-24 | 2021-12-24 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102411681B1 true KR102411681B1 (ko) | 2022-06-22 |
Family
ID=82217119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210186930A KR102411681B1 (ko) | 2021-12-24 | 2021-12-24 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230342211A1 (ko) |
KR (1) | KR102411681B1 (ko) |
WO (1) | WO2023120836A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118277067B (zh) * | 2024-06-03 | 2024-09-03 | 济南浪潮数据技术有限公司 | 轮询器管理方法、设备、介质及计算机程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110075295A (ko) * | 2009-12-28 | 2011-07-06 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US20110307890A1 (en) * | 2010-06-09 | 2011-12-15 | International Business Machines Corporation | Utilization of special purpose accelerators using general purpose processors |
KR20190050988A (ko) | 2016-09-19 | 2019-05-14 | 퀄컴 인코포레이티드 | 동적 입력/출력 코히어런시 |
JP2020173622A (ja) * | 2019-04-11 | 2020-10-22 | 株式会社 日立産業制御ソリューションズ | 並列タスクスケジューリング方法 |
KR20210007417A (ko) * | 2019-07-11 | 2021-01-20 | 삼성전자주식회사 | 멀티-코어 시스템 및 그 동작 제어 방법 |
KR20210013723A (ko) | 2018-06-27 | 2021-02-05 | 아마존 테크놀로지스, 인크. | 부착된 가속기 기반 추론 서비스 |
KR102271324B1 (ko) | 2020-12-21 | 2021-06-30 | 주식회사 모빌린트 | 하드웨어 가속기 제어 방법 및 장치 |
KR20210101071A (ko) * | 2020-02-07 | 2021-08-18 | 삼성전자주식회사 | 이종의 다중-프로세서에 기반하여 스케줄링을 수행하기 위한 전자 장치 및 그의 동작 방법 |
-
2021
- 2021-12-24 KR KR1020210186930A patent/KR102411681B1/ko active IP Right Grant
-
2022
- 2022-06-09 WO PCT/KR2022/008120 patent/WO2023120836A1/ko unknown
-
2023
- 2023-06-28 US US18/343,626 patent/US20230342211A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110075295A (ko) * | 2009-12-28 | 2011-07-06 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US20110307890A1 (en) * | 2010-06-09 | 2011-12-15 | International Business Machines Corporation | Utilization of special purpose accelerators using general purpose processors |
KR20190050988A (ko) | 2016-09-19 | 2019-05-14 | 퀄컴 인코포레이티드 | 동적 입력/출력 코히어런시 |
KR20210013723A (ko) | 2018-06-27 | 2021-02-05 | 아마존 테크놀로지스, 인크. | 부착된 가속기 기반 추론 서비스 |
JP2020173622A (ja) * | 2019-04-11 | 2020-10-22 | 株式会社 日立産業制御ソリューションズ | 並列タスクスケジューリング方法 |
KR20210007417A (ko) * | 2019-07-11 | 2021-01-20 | 삼성전자주식회사 | 멀티-코어 시스템 및 그 동작 제어 방법 |
KR20210101071A (ko) * | 2020-02-07 | 2021-08-18 | 삼성전자주식회사 | 이종의 다중-프로세서에 기반하여 스케줄링을 수행하기 위한 전자 장치 및 그의 동작 방법 |
KR102271324B1 (ko) | 2020-12-21 | 2021-06-30 | 주식회사 모빌린트 | 하드웨어 가속기 제어 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2023120836A1 (ko) | 2023-06-29 |
US20230342211A1 (en) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10783436B2 (en) | Deep learning application distribution | |
US20210166693A1 (en) | Man- machine interaction system and multi-task processing method in the man-machine interaction system | |
US20180240010A1 (en) | Technologies for optimized machine learning training | |
US20200097333A1 (en) | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
CN108290704B (zh) | 用于为至少一个电梯确定分配决策的方法和设备 | |
US11302303B2 (en) | Method and device for training an acoustic model | |
WO2021000758A1 (zh) | 机器人资源任务周期管控方法及装置 | |
CN105378668B (zh) | 多处理器系统中的操作系统管理的中断引导 | |
KR102411681B1 (ko) | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 | |
WO2023082575A1 (zh) | 一种面向神经网络模型计算的图执行流水并行方法和装置 | |
CN109977209A (zh) | 多轮人机交互方法、系统、计算机及介质 | |
CN116702907B (zh) | 一种服务器无感知的大语言模型推理系统、方法和设备 | |
CN113157411A (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
US11775344B1 (en) | Training task queuing cause analysis method and system, device and medium | |
CN114675975A (zh) | 一种基于强化学习的作业调度方法、装置及设备 | |
CN111124708A (zh) | 面向微服务的批推理方法、服务器和计算机可读存储介质 | |
KR20210001864A (ko) | 전자 장치 및 그 제어 방법 | |
US20210224593A1 (en) | Automatic selection of request handler using trained classification model | |
CN113886199B (zh) | 一种数据处理方法及装置 | |
US20230153565A1 (en) | Method and system of dnn modularization for optimal loading | |
US11467971B2 (en) | Systems and methods for accelerating data computation | |
CN115688893B (zh) | 内存调度方法及装置、电子设备和存储介质 | |
KR20210001905A (ko) | 전자 장치 및 그 제어 방법 | |
CN103914348A (zh) | 在实时处理器线程之间分配处理器加载的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |