KR101952221B1 - 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치 - Google Patents

캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치 Download PDF

Info

Publication number
KR101952221B1
KR101952221B1 KR1020160126291A KR20160126291A KR101952221B1 KR 101952221 B1 KR101952221 B1 KR 101952221B1 KR 1020160126291 A KR1020160126291 A KR 1020160126291A KR 20160126291 A KR20160126291 A KR 20160126291A KR 101952221 B1 KR101952221 B1 KR 101952221B1
Authority
KR
South Korea
Prior art keywords
kernel
master
processing unit
cache
slave
Prior art date
Application number
KR1020160126291A
Other languages
English (en)
Other versions
KR20180036117A (ko
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 KR1020160126291A priority Critical patent/KR101952221B1/ko
Publication of KR20180036117A publication Critical patent/KR20180036117A/ko
Application granted granted Critical
Publication of KR101952221B1 publication Critical patent/KR101952221B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 캐시 부스팅(Cache-Boosting)과 경과시간 최소화를 통한 효율적인 GPU 멀티태스킹 아키텍처에 관한 것으로, 그래픽처리장치의 효율적인 자원분배를 위해 그래픽처리장치를 구성하는 프로세싱 유닛(Processing Unit) 내부의 자원을 활용하며, 경과시간(Latency)을 고려한 자원 스케줄링을 통해 자원을 효율적으로 이용하기 위한 기술에 관한 것이다. 보다 상세하게는 캐시 메모리를 포함하는 복수의 프로세싱 유닛, 하나 이상의 커널을 포함하는 복수의 어플리케이션 실행 명령을 수신하고, 상기 복수의 프로세싱 유닛 중 상기 각각의 커널을 실행할 하나 이상의 프로세싱 유닛을 할당하는 커널 스케줄러, 상기 커널 스케줄러에 포함되어, 상기 복수의 어플리케이션을 마스터 어플리케이션 포지션 또는 슬레이브 어플레케이션 포지션으로 구분하며, 상기 각각의 커널을 마스터 커널 포지션 또는 슬레이브 커널 포지션으로 구분하여 이를 기반으로 상기 프로세싱 유닛의 할당을 제어하는 튜너를 포함하는 멀티태스킹 그래픽처리장치에 관한 기술이다.

Description

캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치 {Efficient Multitasking GPU with Latency Minimization and Cache boosting}
본 발명은 캐시 부스팅(Cache-Boosting)과 경과시간 최소화를 통한 효율적인 그래픽처리장치(GPU; Graphical Processing Unit) 멀티태스킹 아키텍처에 관한것으로, 그래픽처리장치의 효율적인 자원분배를 위해 그래픽 처리장치를 구성하는 프로세싱 유닛(Processing Unit) 내부의 자원을 활용하며, 경과시간을 고려한 자원 스케줄링을 통해 자원을 효율적으로 이용하기 위한 기술에 관한 것이다.
현대의 그래픽처리장치(GPU)는 이종(Heterogeneous) 컴퓨팅 플랫폼에서 다수의 대규모 병렬 처리 프로그램들의 가속을 위해 여러 CPU들에 의해 공유되어 사용되는 것이 일반적이며, 따라서 다수의 프로그램이 효율적으로 그래픽처리장치를 사용하는 것이 갈수록 중요하다.
도 1은 종래 기술에 따른 멀티태스킹 그래픽처리장치의 일례를 도시한 도면이다.
멀티태스킹 그래픽처리장치는 이종 컴퓨팅 플랫폼에서 다수의 대규모 병렬 처리 프로그램들의 가속을 위해 여러 CPU들에 의해 공유되어 사용되는 것이 일반적이다. 따라서 다수의 프로그램이 효율적으로 그래픽처리장치를 사용하는 것이 갈수록 중요하다.
기본적인 그래픽처리장치(GPU)는 여러 개의 프로세싱 유닛(Processing Unit), 상호접속 네트워크(interconnection network), DRAM으로 구성된다. 프로세싱 유닛은 도면에서와 같이, SM(Streming Multiprocessor)이라고 부르기도 하는데, 모두 같은 형태를 가지며 각각의 내부에 개별 데이터 캐시(cache)를 가진다. 기본적인 공간적 멀티태스킹(Spatial Multitasking)은 이러한 프로세싱 유닛 단위로 각각 다른 프로그램의 커널에 자원을 할당하여 왔다. 이는 서로 다른 특성을 가지는 프로그램들이 상호접속 대역폭(interconnection bandwidth)과 DRAM 대역폭(bandwidth)을 효율적으로 사용할 수 있으며, 기존의 순차적인(sequential) 수행과 대비하여 자연을 할당 받지 못해 생기는 기아(Starvation)현상을 제거하는 효과를 가져왔다.
그러나 공간적 멀티태스킹(Spatial Multitasking) 프로세싱 유닛 단위의 분배 방법이기 때문에 프로세싱 유닛 내부의 자원을 효율적으로 활용하는데 있어서 한계를 가지며, 프로그램의 성격과 관계 없이 동시에 실행되는 프로그램 수에 따라서 프로세싱 유닛이 할당되도록 되어 있어, 대부분의 프로그램에서는 연산 유닛과 캐시의 필요량이 상이하기 때문에 자원을 효율적으로 이용할 수 있는 기술이 요구된다.
종래에는 한국등록특허 제10-1603711호 "그래픽처리장치의 동작을 위한 작업 할당 시스템 및 방법"은 중앙처리장치가 요청한 작업을 그래픽처리장치에 효율적으로 할당하는 그래픽처리장치에 관한 것으로, 메모리 접근이 빈번한 프로그램에서 메모리 응답 시간을 기준으로 최적화된 GPU 코어 개수를 계산하여 활용하는 방법을 개시하고 있다.
위 선행기술은 메모리 응답 시간을 기준으로 GPU 코어 개수를 계산하여 최적화된 개수의 GPU 코어만을 사용할 수 있는 구성을 포함하고 있는데, GPU 코어 자체의 개수를 계산하여 코어 단위의 분배를 하는 방법이기 때문에 GPU 코어 내부의 자원을 효율적으로 활용하는데 한계를 가진다.
코어 단위의 자원 분배의 대부분의 프로그램은 연산 유닛과 캐시(Cache)의 필요량이 상이하기 때문에 코어단위의 자원분배는 자원을 효율적으로 이용하는데 한계가 존재하며, 캐시의 용량에 따라 프로그램 성능에 큰 영향이 없어 캐시 용량을 연산 유닛에 사용하는 것이 불가능하였다.
따라서 캐시 용량에 따라 그래픽처리장치를 구성하는 복수의 프로세싱 유닛 내부의 연산 유닛을 더 효율적으로 사용하고 프로세싱 유닛 내부 캐시의 용량에 따라 프로세싱 유닛을 더 효율적으로 사용할 수 있는 그래픽처리장치가 필요하다.
한국등록특허 제10-163711호
본 발명은 그래픽처리장치(GPU)의 프로세싱 유닛 내부의 자원을 효율적으로 활용 할 수 있는 멀티태스킹 그래픽처리장치를 제공하는 것을 목적으로 한다.
본 발명은 그래픽처리장치(GPU)의 각각의 프로그램의 스케줄을 조정함으로써 시스템 전체 처리량 및 경과시간을 고려하여 자원을 스케줄링하여 원하는 시간에 프로그램을 종료 시켜 신속하고 효율적인 시간 관리를 할 수 있는 멀티태스킹 그래픽처리장치를 제공하는 것을 목적으로 한다.
본 발명은 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어하는 스케줄링 튜너를 포함함으로써 수행시간을 조정하고 경과시간(Latency)을 최소화 하여 자원을 효율적으로 이용할 수 있는 그래픽처리장치를 제공하는 것을 목적으로 한다.
본 발명은 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어하는 캐시 튜너를 포함함으로써 프로세싱 유닛 내부의 자원을 효율적으로 활용하는 그래픽처리장치를 제공하는 것을 목적으로 한다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 멀티태스킹 그래픽처리장치는 캐시 메모리를 포함하는 복수의 프로세싱 유닛, 하나 이상의 커널을 포함하는 복수의 어플리케이션 실행 명령을 수신하고, 상기 복수의 프로세싱 유닛 중 상기 각각의 커널을 실행할 하나 이상의 프로세싱 유닛을 할당하는 커널 스케줄러, 상기 커널 스케줄러에 포함되어, 상기 복수의 어플리케이션을 마스터 어플리케이션 포지션 또는 슬레이브 어플리케이션 포지션으로 구분하며, 상기 각각의 커널을 마스터 커널 포지션 또는 슬레이브 커널 포지션으로 구분하여 이를 기반으로 상기 프로세싱 유닛의 할당을 제어하는 튜너를 포함하여 구성된다.
또한, 상기 튜너는 상기 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어하는 스케줄링 튜너를 포함하여 구성될 수 있다.
또한, 상기 튜너는 상기 복수의 어플리케이션 중 필요 종료 시간(Deadline)이 짧은 어플리케이션을 마스터 어플리케이션 포지션으로 지정하고, 나머지 어플리케이션을 슬레이브 어플리케이션 포지션으로 지정하여 구성될 수 있다.
또한, 상기 튜너는 상기 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 상기 캐시 메모리를 사용하도록 제어하는 캐시 튜너를 포함하여 구성될 수 있다.
또한, 상기 튜너는 동시에 실행되는 커널 중 마스터 커널 포지션에 해당하는 커널이 높은 캐시 민감도를 가지는 커널이며, 슬레이브 커널 포지션에 해당하는 커널이 낮은 캐시 민감도를 가지는 커널인 경우에만 상기 마스터 커널 포지션에 해당하는 커널을 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어할 수 있다.
또한, 상기 튜너는 새로운 커널의 실행이 시작될때마다 동시에 실행되는 각각의 커널들을 마스터 커널 포지션 및 슬레이브 커널 포지션으로 재조정할 수 있다.
또한, 상기 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 메모리 주소를 기초로 데이터를 조회하는 경우, 해당 프로세싱 유닛의 캐시에서 미스가 발생되면, 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시에서 히트 또는 미스 여부를 확인하고, 히트가 발생되는 경우 해당 데이터를 상기 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛에 전달하도록 하는 캐시 관리 모듈을 더 포함하여 구성될 수 있다.
본 발명은 그래픽처리장치(GPU)의 프로세싱 유닛 내부의 자원을 효율적으로 활용 할 수 있다.
본 발명은 그래픽처리장치(GPU)의 각각의 프로그램의 스케줄을 조정함으로써 시스템 전체 처리량 및 경과시간을 고려하여 자원을 스케줄링하여 원하는 시간에 프로그램을 종료 시켜 신속하고 효율적인 시간 관리를 할 수 있다.
본 발명은 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어하는 스케줄링 튜너를 포함함으로써 수행시간을 조정하고 경과시간을 최소화 하여 자원을 효율적으로 이용할 수 있다.
본 발명은 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어하는 캐시 튜너를 포함함으로써 프로세싱 유닛 내부의 자원을 효율적으로 활용 할 수 있다.
도 1은 종래 기술에 따른 멀티태스킹 그래픽처리장치의 일례를 도시한 도면이다.
도 2는 어플리케이션들의 프로세싱 유닛 내부의 데이터 캐시웨이를 늘리는 방법으로 용량을 증가시키며 성능향상을 비교한 결과를 도시한 도면이다.
도 3은 어플리케이션들을 그래픽처리장치에서 멀티태스킹 하지 않았을 경우와 멀티태스킹 할 경우에 실행되는 경과시간의 비율을 도시한 도면이다.
도 4는 종래의 일반적인 그래픽처리장치의 구성에서 본 발명의 멀티태스킹 그래픽처리장치를 위해 추가되는 구성을 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 멀티태스킹 그래픽처리장치의 전체 구성도를 도시한 도면이다.
도 6는 본 발명의 일실시예에 따른 튜너의 순서도를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 마스터 포지션과 슬레이브 포지션 사슬을 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 멀티태스킹 그래픽 장치의 전체 처리량 분석을 도시한 도면이다.
도 9은 본 발명의 일실시예에 따른 캐시 관리 모듈을 도시한 도면이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하기로 한다. 또한 본 발명의 실시예들을 설명함에 있어 구체적인 수치는 실시예에 불과하며 이에 의하여 발명의 범위가 제한되지 아니한다.
본 발명은 효율적인 멀티태스킹을 수행하기 위한 그래픽처리장치(GPU; Graphical Processing Unit)에 관한 것으로, 본 발명의 그래픽처리장치는 도 1에 도시하였던, 기존의 그래픽처리장치와 같이 복수의 프로세싱 유닛(Processing Unit)을 포함하고 있으며, 상술한 바와 같이, 프로세싱 유닛은 Nvidia 등의 제조사에서는 SM(Streaming Multiprocessor)라고 부르기도 한다. 이는 중앙처리장치(CPU; Central Processing Unit)에서의 코어에 대응되는 개념으로, 여러 인스트럭션(Instruction)을 병렬처리 함으로써, 효율적인 연산이 이루저질 수 있도록 한다.
또한 본 발명에서는 그래픽처리장치(GPU)에서 실행될 하나의 응용 프로그램을 어플리케이션이라 부르며, 해당 어플리케이션 내에서 그래픽처리장치를 통해 동작되는 모듈을 커널(Kernel)이라 부른다. 중앙처리장치(CPU)에 비하여 그래픽처리장치(GPU)는 처리할 수 있는 인스트럭션(Instruction)의 종류가 적은데, 그래픽처리장치(GPU)에서 처리할 수 있는 모듈을 일반적으로 커널이라고 부른다. 본 발명에서의 커널은 이처럼 그래픽처리장치에서 실행되는 어플리케이션 내의 실행 모듈을 의미하는 개념으로, 운영체제(OS; Operation System)에서의 커널과는 다른 개념으로 사용되고, 어플리케이션을 구성하는 실행 모듈 단위를 의미하는 경우라면 어떤 경우에도 본 발명의 커널에 해당한다.
먼저 본격적으로 본 발명의 구성을 설명하기에 앞서, 기존의 그래픽처리장치(GPU)의 구조에서 몇 가지 실험을 진행하였다.
도 2는 어플리케이션들의 프로세싱 유닛 내부의 데이터 캐시웨이를 늘리는 방법으로 용량을 증가시키며 성능향상을 비교한 결과를 도시한 도면이다.
(a)의 경우에는 캐시 메모리의 용량에 따라 성능에 큰 영향이 없으나 (c)의 경우에는 성능에 큰 변화가 존재한다. 이는 (c)의 경우 프로세싱 유닛 내부 캐시 메모리의 용량에 따라 프로세싱 유닛 내부 연산 유닛을 더 효율적으로 사용할 수 있음을 의미하며, 결국 프로세싱 유닛에서 실행하는 커널의 성격에 따라서, 캐시 메모리의 용량을 일시적으로 증가시킴으로써, 보다 효율적인 연산이 이루어지도록 제어하는 것이 가능하다.
여기에서, (a)에 해당하는 커널은 캐시 민감도(Cache Sensitive)가 낮은 커널, (c)에 해당하는 커널은 캐시 민감도(Cache Sensitive)가 높은 커널로 정의할 수 있다.
도 3은 어플리케이션들을 그래픽처리장치에서 멀티태스킹 하지 않았을 경우와 멀티태스킹 할 경우에 실행되는 경과시간의 비율을 도시한 도면이다.
전체 커널의 68%가 멀티태스킹을 할 경우에 40%이상의 경과시간 증가량을 보이고 있음을 나타내며, 커널이 연산 중심의 프로그램을 처리한 경우에는 모든 커널이 60%이상의 경과시간 증가를 보이고 있다. 시스템 전체의 처리량은 증가할지 모르지만 멀티태스킹은 각각의 어플리케이션의 경우에 종료 시간(Deadline)을 만족시키지 못하는 경우를 야기할 수 있으므로 전체의 처리량뿐만 아니라 경과시간(Latency) 또한 그래픽처리장치의 멀티태스킹에서 고려해야 한다.
도 4는 종래의 일반적인 그래픽처리장치의 구성에서 본 발명의 멀티태스킹 그래픽처리장치를 위해 추가되는 구성을 설명하기 위한 도면이다.
도면에 도시한 바와 같이, 본 발명에 따르는 멀티태스킹 그래픽처리장치는 커널 스케줄러(Kernel Scheduler) 내부에 튜너(Fine Tuner)를 더 포함하도록 구성함으로써, 멀티태스킹의 효율을 높이도록 하고 있으며, 튜너는 스케줄링 튜너(Scheduling Tuner)와 캐시 튜너(Cache Tuner)를 더 포함하여 구성되도록 한다. 또한 프로세싱 유닛간의 캐시 메모리 교류를 위한 모듈(Cache Borrow)이 추가로 포함될 수 있다.
본 발명의 멀티태스킹 그래픽처리장치의 세부적인 구성은 아래 도 5에서 설명하도록 한다.
도 5는 본 발명의 일실시예에 따른 멀티태스킹 그래픽처리장치의 전체 구성도를 도시한 도면이다.
본 발명에 따른 멀티태스킹 그래픽처리장치는 프로세싱 유닛(530), 커널 스케줄러(510), 튜너(520)를 포함한다.
프로세싱 유닛(530)은 앞서 설명한 바와 같이, 그래픽처리장치를 이루는 세부 연산 유닛을 의미하며, 그 용어는 SM(Streaming Multiprocessor) 등과 같이 제조사에 따라 다양하게 사용된다. 상기 프로세싱 유닛(530)은 메인 메모리와의 데이터 송수신 시간을 줄여 빠른 연산이 이루어질 수 있도록 캐시 메모리(540)를 포함하여 구성되는데, 하나의 프로세싱 유닛(530) 당 정해진 크기의 하나의 캐시 메모리(540)가 포함되도록 구성될 수 있다.
커널 스케줄러(510)(Kernel Scheduler)는 하나 이상의 커널을 포함하는 복수의 어플리케이션에 대한 각각의 실행 명령을 수신하고, 복수의 프로세싱 유닛(530) 중 각각의 커널을 실행할 하나 이상의 프로세싱 유닛(530)을 할당한다. 그래픽처리장치에 많은 수의 프로세싱 유닛(530)이 구비되는 경우에도 커널 스케줄러(510)에서 효율적으로 각각의 커널을 적절한 개수의 프로세싱 유닛(530)에 할당하지 못한다면 연산의 효율성은 떨어질 수 잇다.
튜너(Tuner)(520)는 커널 스케줄러(510)에 포함되며, 복수의 어플리케이션을 마스터 어플리케이션 포지션(Master Application Position) 또는 슬레이브 어플리케이션 포지션(Slave Application Position)으로 구분하며, 각각의 커널을 마스터 커널 포지션(Master Kernel Position) 또는 슬레이브 커널 포지션(Slave Kernel Position)으로 구분하여 이를 기반으로 프로세싱 유닛(530)의 할당을 제어한다.
마스터/슬레이브 커널 포지션은 전반적인 튜너(520)의 동작에 있어서 사용되는 개념으로, 여러 커널들이 그래픽처리장치에 동시에 수행될 때 가장 먼저 들어온 커널을 마스터 커널 포지션으로 정한다. 그 외 나머지 모든 커널들은 개수에 상관없이 슬레이브 커널 포지션으로 정해진다. 커널들의 포지션은 하나의 커널이 끝날 경우 다시 갱신된다. 이러한 개념은 두가지 측면에서 존재 할 수 있다. 그중 하나는 스케줄링 튜너(521)의 동작을 위한 어플리케이션 레벨의 포지션이며, 스케줄링 튜너(521)는 중요한 경과시간(latency-critical)을 가진 어플리케이션을 위해 동작한다. 따라서 마스터 커널 포지션이 변함에도 불구하고 마스터 어플리케이션 포지션은 그대로 유지되며 스케줄링 튜너(521)는 이를 기준으로 종료 시간(deadline)을 갖는 어플리케이션의 수행이 완전히 종료될 때까지 유지되며 어플리케이션이 끝날 경우에 새로 갱신된다.
스케줄링 튜너(521)는 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어한다.
스케줄링 튜너(521)는 기존의 어떤 커널 스케줄링 정책(policy)을 사용하는 것과 관계없이 추가로 구성할 수 있으며, 오직 연산중심(compute-intensive)과 연산중심(compute-intensive)의 조합의 경우에만 스케줄링 방법으로 전환된다.
커널 스케줄러(510)의 스케줄링 튜너(521)는 기존의 기존의 정적인(static) 경우와 동적인(dynamic) 경우에도 동시에 사용될 수 있으며, 오직 연산중심(compute-intensive)의 커널들에 한해서만 동작한다. 연산중심(compute-intensive)의 커널들의 동시에 수행되는 경우에 마스터 어플리케이션에게 전체 그래픽처리장치의 프로세싱 유닛(530) 중 많은 비중(예, 75%)을 할당한다. 따라서 마스터는 멀티태스킹에 의한 경과시간의 증가가 감소된다. 하지만 전체 그래픽처리장치의 처리량은 변경되지 않는다.
스케줄링 튜너(521)는 연산중심과 연산중심의 조합이 아닐 경우에는 마스터 어플리케이션과 슬레이브 어플리케이션을 구분하지 않으며, 특정 커널에 더 많은 프로세싱 유닛이 할당되지 않고 동일한 프로세싱 유닛을 할당하여 작동한다.
이처럼, 튜너(520)는 복수의 어플리케이션 중 필요 종료 시간(Deadline)이 짧은 어플리케이션을 마스터 어플리케이션 포지션으로 지정하고, 나머지 어플리케이션을 슬레이브 어플리케이션 포지션으로 지정함으로써, 필요 종료 시간(Deadline)이 존재하는 어플리케이션의 경과시간을 감소시키는 효과를 얻을 수 있다.
마스터 어플리케이션 포지션으로 지정되면 어플리케이션의 종료 시간이 끝날때까지 유지되며, 마스터 어플리케이션 포지션의 종료 시간이 끝나면 다음 종료 시간이 짧은 어플리케이션을 마스터 어플리케이션 포지션으로 지정한다. 예를 들면, 세개의 어플리케이션이 있으면, 이 세개의 어플리케이션 중 필요 종료 시간(Deadline)이 가장 짧은 어플리케이션은 '앱1'이라고 하고, 종료 시간이 두번째로 짧은 어플리케이션은 '앱2', 종료 시간이 가장 긴 어플리케이션은 '앱3'이라고 한다. 튜너(520)는 종료 시간이 가장 짧은 '앱1'을 마스터 어플리케이션 포지션으로 정하고, '앱2'와 '앱3'은 슬레이브 어플리케이션 포지션으로 지정한다. '앱1'의 프로그램이 종료되면 다음으로 종료 시간이 짧은 '앱2'가 마스터 어플리케이션으로 지정되고, '앱3'은 그대로 슬레이브 어플리케이션 포지션으로 지정될 수 있다.
캐시 튜너(522)는 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)이 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)의 캐시 메모리(540)를 사용하도록 제어한다. 마스터 커널 포지션과 슬레이브 커널 포지션은 커널의 실행 순서에 따라 결정되도록 하는 것이 바람직하며, 먼저 실행되는 커널을 마스터 커널 포지션으로, 나중에 실행되는 커널을 슬레이브 커널 포지션으로 지정할 수 있다.
종래에는 하나의 커널에서 그 커널에 해당하는 캐시 메모리(540)만 사용할 수 있었으나 본 발명은 프로그램을 처리하는데 있어 마스터 커널 포지션은 슬레이브 커널 포지션에 해당하는 캐시 메모리(540)를 사용할 수 있다.
예를 들면, 프로그램을 처리하는데 마스터 커널 포지션의 캐시 메모리(540)가 부족하거나 추가 메모리가 필요할 경우 슬레이브 커널 포지션에 해당하는 커널의 캐시 메모리(540)를 마스터 커널 포지션의 프로세싱 유닛(530)이 사용할 수 있다. 이는 연산 중심의 프로그램을 처리하는데 있어 캐시 메모리(540)의 필요량이 많을 경우 프로세싱 유닛(530) 단위의 자원 분배를 좀더 효율적으로 이용할 수 있다.
튜너(520)는 동시에 실행되는 커널들의 캐시 동시에 실행되는 커널 중 마스터 커널 포지션에 해당하는 커널이 높은 캐시 민감도를 가지는 커널이며, 슬레이브 커널 포지션에 해당하는 커널이 낮은 캐시 민감도를 가지는 커널인 경우에만 상기 마스터 커널 포지션에 해당하는 커널을 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어한다. 캐시 민감도는 도 2에서 실험한 바와 같이, 캐시의 용량을 늘릴 경우 연산의 효율성이 얼마나 높아질 수 있는 커널인지에 따라서 결정되는 것으로, 커널의 성격에 따라 미리 정해질 수 있다. 캐시 민감도는 도 2에 도시된 바와 같이, (a), (b), (c)의 그룹으로 구분되어 지정될 수 있으며, 도 2의 (c)와 같이 캐시의 용량 증가에 따라 효율성이 매우 높아지는 커널이 마스터 커널 포지션에 해당하고, (a)와 같이 캐시의 용량이 효율성에 영향을 미치지 않는 커널이 슬레이브 커널 포지션에 해당하는 경우 마스터 커널 포지션에 해당하는 커널을 실행하는 프로세싱 유닛이 슬레이브 커널 포지션에 해당하는 커널을 실행하는 프로세싱 유닛의 캐시를 빌려(borrow) 사용할 수 있도록 함으로써 효율을 높일 수 있다.
캐시 튜너(522)는 커널의 캐시 민감도의 조합에 의하여 구현되며, 도 2의 (a)인 경우와 (c)의 경우의 조합에 의하여 캐시 메모리(540)의 크기를 튜닝한다. 이는 공유되는 자원의 분할(partition)과는 다르며 서로 분리된 타 프로세싱 유닛(530)의 데이터 캐시를 빌려오는 것이기 때문에 프로그램이 시작될 때 결정되어야 한다.
튜너(520)는 새로운 커널의 실행이 시작될 때마다 동시에 실행되는 각각의 커널들을 마스터 커널 포지션 및 슬레이브 커널 포지션으로 재조정한다.
프로그램의 새로운 커널이 수행될 때 각각의 커널의 포지션을 설정하며, 만약 연산중심(compute-intensive)과 연산중심(compute-intensive)의 조합일 경우에 스케줄러 튜너(520)는 커널 할당 정책(kernel allocation policy)을 변경한다. 그리고 각각 캐시 민감도를 체크한 후에 캐시 튜너(522)의 동작여부를 판단한다. 스케줄링 튜너(521)와 캐시 튜너(522) 둘다 추가적인 로직을 필요로하지만 스케줄링 튜너(521)의 경우 정적 시간(static time)에 정책(policy)이 결정되며, 캐시 튜너(522)의 경우에도 큰 단위(coarse-grain)의 빌려오는(borrow) 동작이기 대문에 하드웨어 복잡성(Hardware Complexity)는 크게 증가하지 않는다.
캐시 관리 모듈(550)은 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)이 메모리 주소를 기초로 데이터를 조회하는 경우, 해당 프로세싱 유닛(530)의 캐시에 미스가 발생되면, 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)의 캐시(540)에서 히트 또는 미스 여부를 확인하고, 히트가 발생되는 경우 해당 데이터를 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)에 전달하도록 한다.
프로세싱 유닛(530) 내부의 캐시 메모리(540) 자원에 대해서 프로그램들이 다른 특성을 가진다는 것은 도 2에서 확인할 수 있다. (c)가 마스터(Master)이고, (a)와 (c) 종류의 동시에 수행되는 경우라면 처음 커널이 시작될 때 캐시 관리 모듈(550)(cache borrow enable bit)이 슬레이브 커널을 처리하는 프로세싱 유닛(530)으로 전해진다.
도 8의 (a)는 슬레이브 커널을 처리하는 프로세싱 유닛(530)의 캐시를 마스터 커널을 처리하는 프로세싱 유닛(530) 의 메모리 어드레스 인덱스(Memory address index)로 접근하고, 도 8의 (b)는 마스터 커널을 처리하는 프로세싱 유닛(530)의 태그를 비교하고 히트(Hit)일 경우 데이터를 마스터 커널을 처리하는 프로세싱 유닛(530)으로 전달한다. 추가되는 로직은 캐시 접근(Cache access)를 선택하는 부분과 히트(hit)/미스(miss) 정보의 방향을 선택하는 부분이다. 각각의 프로세싱 유닛(530)의 포지션은 즉각적으로 변할 수 있으므로 하드웨어는 양방향으로 구성되어야 한다. 캐시 메모리(540)를 빌려오는(borrow) 마스터 커널을 실행하는 프로세싱 유닛(530)의 실행이 완료되었을 경우 슬레이브 커널을 실행하는 프로세싱 유닛(530)의 캐시 메모리(540)에 데이터가 남아있는 문제가 발생할 수 있지만, 기본적인 그래픽처리장치의 쓰기 정책(write policy)은 기록시 제거(wirte-evict)이므로, 일관성(consistency) 문제는 발생하지 않는다. 따라서 프로세싱 유닛(530) 내부의 자원을 간단한 하드웨어 추가만으로 효율적으로 사용할 수 있어 성능 향상을 기대할 수 있다.
도 6는 본 발명의 일실시예에 따른 튜너의 순서도를 도시한 도면이다.
캐시 튜너(522)는 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)이 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)의 캐시 메모리(540)를 사용하도록 제어한다.
튜너(520)는 동시에 실행되는 커널 중 마스터 커널 포지션에 해당하는 커널이 높은 캐시 민감도를 가지는 커널이며, 슬레이브 커널 포지션에 해당하는 커널이 낮은 캐시 민감도를 가지는 커널인 경우에만 상기 마스터 커널 포지션에 해당하는 커널을 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어한다.
프로그램의 새로운 커널이 수행될 때 각각의 커널의 포지션을 설정(S602)하며 만약 연산중심(compute-intensive)과 연산중심(compute-intensive)일 경우에 스케줄링 튜너(521)는 커널 분배 정책(kernel allocation policy)을 변경한다. 그리고 각각의 캐시 민감도(cache sensitive)를 체크한 후에 캐시 튜너(522)의 동작여부를 판단한다. 스케줄링 튜너(521)와 캐시 튜너(522) 둘다 추가적인 로직을 필요로 하지만 스케줄링 튜너(521)의 경우는 정적인 경우에 정책(policy)이 결정되며, 캐시 튜너(522)의 경우에도 큰 단위(coarse-grain)의 빌려오는(borrow) 동작이기 대문에 하드웨어 복잡성(Hardware Complexity)는 크게 증가하지 않는다.
도 6의 순서도를 보면 어플리케이션의 새로운 커널이 수행될 때 포지션을 마스터인지 슬레이이브 인지를 구분(S602)하여 연산중심(compute-intensive)과 연산중심(compute-intensive)인지의 여부를 판단(S603)한다. 연산중심(compute-intensive)과 연산중심(compute-intensive)일 경우에는 마스터 어플리케이션 포지션에 프로세싱 유닛(530)을 75%를 분배(S605)하고 슬레이브 어플리케이션 포지션에 프로세싱 유닛(530)을 25% 분배한다.
만약 연산중심(compute-intensive)과 연산중심(compute-intensive)이 아닐 경우에는 마스터 어플리케이션 포지션과 슬레이브 어플리케이션 포지션에 동일한 프로세싱 유닛(530)을 분배(S604)한다.
동시에 실행되는 커널 중 마스터 커널 포지션에 해당하는 커널이 높은 캐시 민감도를 가지는 커널이며, 슬레이브 커널 포지션에 해당하는 커널이 낮은 캐시 민감도를 가지는 커널인 경우에만 상기 마스터 커널 포지션에 해당하는 커널을 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어(S606)한다.
마스터 커널 포지션은 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)의 캐시 메모리(540)를 사용하여 캐시 메모리(540)를 확장(S607)할 수 있다.
도 7은 본 발명의 일실시예에 따른 마스터 포지션과 슬레이브 포지션 사슬을 도시한 도면이다.
스케줄링 튜너(521)는 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어한다.
또한, 튜너(520)는 복수의 어플리케이션 중 필요 종료 시간(Deadline)이 짧은 어플리케이션을 마스터 어플리케이션 포지션으로 지정하고, 나머지 어플리케이션을 슬레이브 어플리케이션 포지션으로 지정한다.
튜너(520)는 새로운 커널의 실행이 시작될 때마다 동시에 실행되는 각각의 커널들을 마스터 커널 포지션 및 슬레이브 커널 포지션으로 재조정한다.
마스터/슬레이브 커널 포지션은 전반적인 튜너(520)의 동작에 있어서 사용되는 개념으로, 여러 커널들이 GPU에 동시에 수행될 때 가장 먼저 들어온 커널을 마스터 커널 포지션으로 정한다. 그 외 나머지 모든 커널들은 개수에 상관없이 슬레이브 커널 포지션으로 정해진다. 커널들의 포지션은 하나의 커널이 끝날 경우 다시 갱신된다. 이러한 개념은 두가지 측면에서 존재 할 수 있다. 그중 하나는 스케줄링 튜너(521)의 동작을 위한 어플리케이션 레벨의 포지션이며, 스케줄링 튜너(521)는 중요한 경과시간(latency-critical)을 가진 어플리케이션을 위해 동작한다. 따라서 도 7 (가)의 (b)에서 보는것과 같이 마스터 커널 포지션이 변함에도 불구하고 마스터 어플리케이션 포지션은 그대로 유지되며 스케줄링 튜너(521)는 이를 기준으로 종료 시간(deadline)을 갖는 어플리케이션의 수행이 완전히 종료될 때까지 유지되며 어플리케이션이 끝날 경우에 새로 갱신된다.
다른 하나는 캐시 튜너(522)의 동작을 위한 컷이며 커널 레벨에서의 포지션(position)을 사용한다. 이는 도 7 (가)의 (a)에서 보는 것과 같이 매 커널의 수행이 끝날 때 마다 포지션이 갱신되며 이에 따라 마스터 커널 포지션을 가진 커널만이 캐시 메모리(540)를 사용하는 동작을 할 수 있으며, 이는 프로그램이 실시되는 시간(runtime)에 결정되며 계속하여 갱신되므로 추가적인 로직(logic)을 요구한다.
더 자세히 살펴보기 위해 도 7의 (나)를 보면 App-0과 App-1이라는 어플리케이션이 작동한다. App-0은 커널 1이 가장 먼저 들어온 커널이기 때문에 마스터 어플리케이션 포지션으로 지정하고, App-1은 이후에 들어온 커널이기 때문에 슬레이브 어플리케이션 포지션으로 지정된다.
커널 1의 경우 가장 처음 수행되었기 때문에 마스터 커널 포지션으로 지정되었으며, 이후 커널 2의 수행이 시작되고 커널 2는 슬레이브 커널 포지션으로 지정되었다. 커널 1의 수행이 끝나고 커널 2는 마스터 커널 포지션이 되었으며, 커널 3의 수행이 시작되어도 커널 2는 마스터 커널 포지션을 유지하고 커널 3은 슬레이브 커널 포지션으로 지정된다. 커널 2가 끝난 후에 커널 3이 마스터 커널 포지션으로 지정되고 커널 4의 수행이 시작되어도 마찬가지로 커널 3은 마스터 커널 포지션을 유지한다. 커널 3의 수행이 끝난 후에 커널 4는 마스터 커널 포지션으로 지정되고 이후 커널 5의 수행이 시작되었지만 커널 4의 수행이 끝나지 않았기 때문에 커널 5이 수행이 끝날때까지 커널 5는 슬레이브 커널 포지션으로 종료된다. 커널 4의 수행이 계속되고 커널 6의 수행이 시작되면서 슬레이브 커널 포지션으로 지정되었으며, 커널 4의 수행이 끝나고 커널 6은 마스터 커널 포지션으로 지정된다. 이때 커널 7의 수행이 시작되고 커널 6의 수행이 끝났을 때 APP-0의 모든 작업이 종료되면서 커널 7이 마스터 커널 포지션으로 지정되는 동시에 마스터 어플리케이션 포지션으로 함께 지정된다.
여러 커널들이 그래픽처리장치에 동시에 수행될 때 가장 먼저 들어온 커널을 마스터 포지션으로 정하고 다른 커널은 슬레이브 포지션으로 정하며, 마스터 포지션이 작업 수행을 마치면 다른 슬레이브 포지션이 마스터 포지션으로 구분된다.
도 7 (나)의 프로세싱 유닛(530) 비율과 연산 중심(Com)/메모리 중심(Memory) 여부를 보면, 전체 GPU를 100%로 보았을 때 각각의 어플리케이션 포지션에 프로세싱 유닛(530)이 할당되는 비율이다. 프로세싱 유닛(530) 비율은 각각의 커널이 연산 중심의 커널인지 여부에 따라 결정되며, 연산 중심의 커널인 경우는 Com으로 표시하였으며, 연산중심의 커널이 아닌 경우는 Memory로 표시하였다.
연산 중심 커널과 연산 중심 커널이 동시에 수행되는 경우에는 마스터 어플리케이션 포지션에게 프로세싱 유닛(530)을 전체 GPU의 75%를 분배하고, 연산 중심 커널과 연산 중심 커널이 동시에 수행되는 경우가 아니면 프로세싱 유닛(530)은 같은 비율로 분배된다.
도 7 (나)의 커널 1은 연산 중심 커널(Com)으로 표시되었으며, 커널 2가 수행되기 전에는 프로세싱 유닛(530)의 비율은 100%이다. 그러나 연산 중심 커널(Com)인 커널 2가 수행되고 커널 1의 프로세싱 유닛(530)의 비율은 75%, 커널 2의 프로세싱 유닛(530)은 25%로 분배되었다. 또한 커널 1의 수행이 끝나고 커널 3이 수행되기 전에 커널 2가 혼자 수행될 때는 다시 프로세싱 유닛(530)의 비율은 100%로 나타났으며, 커널 3의 시작되고 슬레이브 어플리케이션 포지션인 커널 2의 프로세싱 유닛(530) 비율은 25%, 마스터 어플리케이션 포지션인 커널 3의 프로세싱 유닛(530) 비율은 75%로 분배되었다.
그러나 연산 중심 커널(Com)인 커널 6이 연산 중심 커널이 아닌 커널 7과 작업이 동시에 수행될 때는 커널 6과 커널 7의 프로세싱 유닛(530) 비율은 각각 50%로 동일하게 분배되어 작업을 수행한다.
도 8은 본 발명의 일실시예에 따른 멀티태스킹 그래픽 장치의 전체 처리량 분석을 도시한 도면이다.
커널 스케줄러(510)의 스케줄링 튜너(521)는 기존의 기존의 정적인(static) 경우와 동적인(dynamic) 경우에도 동시에 사용될 수 있으며, 오직 연산중심(compute-intensive)의 커널들에 한해서만 동작한다. 연산중심(compute-intensive)의 커널들의 동시에 수행되는 경우에 마스터 어플리케이션에게 전체 그래픽처리장치 프로세싱 유닛(530) 중 다수(예, 75%)를 분배한다. 따라서 마스터는 멀티태스킹에 의한 경과시간의 증가가 감소된다. 하지만 전체 그래픽처리장치의 처리량은 변경되지 않는다.
도 8의 (a)는 는 두개의 다른 커널의 멀티태스킹하지 않을 경우의 시간을 나타내고 있으며, 각각 M과 N이다. 도 7의 (b)는 x:y의 비율로 자원을 분배 하였을 경우에 늘어난 수행시간을 나타내며 각각 M(x+y)/x, N(x+y)/y이다. 도 8의 (b)에서 늘어난 수행시간의 경우에 커널 A가 더 오래 걸리며, 그러므로 실제 동시에 수행되는 시간은 커널 B의 의 수행시간과 같다. 커널 A와 커널 B가 동시에 수행하는 시간이 지나면 커널 A만 수행되며 이때는 경과시간이 증가하지 않는다. 따라서 총 수행하는데 걸리는 시간은 N(x+y)/y +(M(x+y)/y - N(x+y)/x) * (x/(x+y)) = M+N이 된다. 도 8의 (c)의 경우에도 이 값은 변하지 않으며 결국 선형적(linear)인 형태의 성능(Performance) 증가를 보이는 프로그램이라면, 길이와 자원 분배 정도에 상관없이 항상 일정한 수행시간을 보인다. 따라서 스케줄링 튜너(521)는 마스터에게 더 많은 자원을 할당하여도 전체 시스템의 처리량은 변함이 없다.
도 9는 본 발명의 일실시예에 따른 캐시 관리 모듈(550)을 도시한 도면이다.
캐시 관리 모듈(550)은 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)이 메모리 주소를 기초로 데이터를 조회하는 경우, 해당 프로세싱 유닛(530)의 캐시 메모리(540)에 미스가 발생되면, 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)의 캐시 메모리(540)에서 히트 또는 미스 여부를 확인하고, 히트가 발생되는 경우 해당 데이터를 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛(530)에 전달하도록 한다.
도 9의 (a)는 슬레이브 커널을 실행하는 프로세싱 유닛(530)의 캐시 메모리(540)를 마스터 커널을 실행하는 프로세싱 유닛(530)의 메모리 어드레스 인덱스(Memory address index)로 접근하고, 도 9의 (b)는 마스터 커널을 실행하는 프로세싱 유닛(530)의 태그를 비교하고 히트(Hit)일 경우 데이터를 마스터 커널을 실행하는 프로세싱 유닛(530)으로 전달한다. 추가되는 로직은 캐시 접근(Cache access)를 선택하는 부분과 히트(hit)/미스(miss) 정보의 방향을 선택하는 부분이다. 각각의 프로세싱 유닛(530)의 포지션은 즉각적으로 변할 수 있으므로 하드웨어는 양방향으로 구성되어야 한다. 캐시 메모리(540)를 빌려오는(borrow) 마스터 커널을 처리하는 프로세싱 유닛(530)의 실행이 완료되었을 경우 슬레이브 커널을 실행하는 프로세싱 유닛(530)의 캐시 메모리(540)에 데이터가 남아있는 문제가 발생할 수 있지만, 기본적인 그래픽처리장치의 쓰기 정책(write policy)은 기록시 제거(wirte-evict)이므로, 일관성(consistency) 문제는 발생하지 않는다. 따라서 프로세싱 유닛(530) 내부의 자원을 간단한 하드웨어 추가만으로 효율적으로 사용할 수 있어 성능 향상을 기대할 수 있다.
510: 커널 스케줄러
520: 튜너 521: 스케줄링 튜너
522: 캐시 튜너 530: 프로세싱 유닛
540: 캐시 메모리 550: 캐시 관리 모듈

Claims (7)

  1. 캐시 메모리를 포함하는 복수의 프로세싱 유닛;
    하나 이상의 커널을 포함하는 복수의 어플리케이션에 대한 각각의 실행 명령을 수신하고, 상기 복수의 프로세싱 유닛 중 상기 각각의 커널을 실행할 하나 이상의 프로세싱 유닛을 할당하는 커널 스케줄러;
    상기 커널 스케줄러에 포함되어, 상기 복수의 어플리케이션을 마스터 어플리케이션 포지션 또는 슬레이브 어플리케이션 포지션으로 구분하며, 상기 각각의 커널을 마스터 커널 포지션 또는 슬레이브 커널 포지션으로 구분하여 이를 기반으로 상기 프로세싱 유닛의 할당을 제어하는 튜너를 포함하고,
    상기 튜너는
    상기 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 상기 캐시 메모리를 사용하도록 제어하는 캐시 튜너를 포함하고,
    상기 튜너는
    동시에 실행되는 커널 중 마스터 커널 포지션에 해당하는 커널이 높은 캐시 민감도를 가지는 커널이며, 슬레이브 커널 포지션에 해당하는 커널이 낮은 캐시 민감도를 가지는 커널인 경우에만 상기 마스터 커널 포지션에 해당하는 커널을 할당하는 프로세싱 유닛이 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시 메모리를 사용하도록 제어하는 것
    을 특징으로 하는 멀티태스킹 그래픽처리장치.
  2. 제1항에 있어서,
    상기 튜너는
    상기 각각의 커널이 연산 중심의 커널인지 여부를 판단하고, 동시에 실행되는 둘 이상의 커널이 모두 연산 중심의 커널인 경우, 마스터 어플리케이션 포지션에 해당하는 커널에 더 많은 프로세싱 유닛을 할당하도록 제어하는 스케줄링 튜너를 포함하는 것
    을 특징으로 하는 멀티태스킹 그래픽처리장치.
  3. 제2항에 있어서,
    상기 튜너는
    상기 복수의 어플리케이션 중 필요 종료 시간(Deadline)이 짧은 어플리케이션을 마스터 어플리케이션 포지션으로 지정하고, 나머지 어플리케이션을 슬레이브 어플리케이션 포지션으로 지정하는 것
    을 특징으로 하는 멀티태스킹 그래픽처리장치.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 튜너는
    새로운 커널의 실행이 시작될때마다 동시에 실행되는 각각의 커널들을 마스터 커널 포지션 및 슬레이브 커널 포지션으로 재조정하는 것
    을 특징으로 하는 멀티태스킹 그래픽처리장치.
  7. 제1항에 있어서,
    상기 마스터 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛이 메모리 주소를 기초로 데이터를 조회하는 경우, 해당 프로세싱 유닛의 캐시에서 미스가 발생되면, 상기 슬레이브 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛의 캐시에서 히트 또는 미스 여부를 확인하고, 히트가 발생되는 경우 해당 데이터를 상기 커널 포지션에 해당하는 커널에 할당하는 프로세싱 유닛에 전달하도록 하는 캐시 관리 모듈
    을 더 포함하는 것을 특징으로 하는 멀티태스킹 그래픽처리장치.
KR1020160126291A 2016-09-30 2016-09-30 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치 KR101952221B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160126291A KR101952221B1 (ko) 2016-09-30 2016-09-30 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160126291A KR101952221B1 (ko) 2016-09-30 2016-09-30 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치

Publications (2)

Publication Number Publication Date
KR20180036117A KR20180036117A (ko) 2018-04-09
KR101952221B1 true KR101952221B1 (ko) 2019-02-26

Family

ID=61977791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160126291A KR101952221B1 (ko) 2016-09-30 2016-09-30 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치

Country Status (1)

Country Link
KR (1) KR101952221B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102353036B1 (ko) 2021-08-30 2022-01-20 주식회사 페블 그래픽 메모리 기반의 2차원 그래픽 명령어를 처리하는 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016045059A1 (en) 2014-09-25 2016-03-31 Intel Corporation Multicore memory data recorder for kernel module

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0163711B1 (ko) 1992-10-01 1999-01-15 윤종용 광 디스크 시스템의 스핀들 모터 제어 회로

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016045059A1 (en) 2014-09-25 2016-03-31 Intel Corporation Multicore memory data recorder for kernel module

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Pattnaik, Ashutosh, et al. "Scheduling techniques for GPU architectures with processing-in-memory capabilities." Parallel Architecture and Compilation Techniques (PACT), 2016.9.11.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102353036B1 (ko) 2021-08-30 2022-01-20 주식회사 페블 그래픽 메모리 기반의 2차원 그래픽 명령어를 처리하는 장치 및 방법

Also Published As

Publication number Publication date
KR20180036117A (ko) 2018-04-09

Similar Documents

Publication Publication Date Title
US9959337B2 (en) Independent data processing environments within a big data cluster system
KR101572879B1 (ko) 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
US20150199214A1 (en) System for distributed processing of stream data and method thereof
KR20130087257A (ko) Gpu의 자원 할당을 위한 방법 및 장치
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US20180329753A1 (en) Scheduling heterogenous computation on multithreaded processors
CN114730276A (zh) 确定多核处理器复合体中每个核心的最佳线程数量
KR101140914B1 (ko) 컴퓨팅 자원들을 제어하는 기술
US20180239646A1 (en) Information processing device, information processing system, task processing method, and storage medium for storing program
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
KR20210002646A (ko) Gpu를 위한 피드백 기반 분할 작업 그룹 디스패치
KR102493859B1 (ko) 듀얼 모드 로컬 데이터 저장
US11907550B2 (en) Method for dynamically assigning memory bandwidth
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
US11144473B2 (en) Quality of service for input/output memory management unit
KR101557995B1 (ko) 다중 운영체제를 지원하는 단말기 및 그 단말기에 대한시스템 자원 할당 방법
KR101952221B1 (ko) 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치
US20150212859A1 (en) Graphics processing unit controller, host system, and methods
JP6201591B2 (ja) 情報処理装置および情報処理装置の制御方法
US11645124B2 (en) Program execution control method and vehicle control device
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
US20140223109A1 (en) Hardware prefetch management for partitioned environments
US11182183B2 (en) Workload placement using conflict cost
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant