KR102301230B1 - 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스 - Google Patents

가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스 Download PDF

Info

Publication number
KR102301230B1
KR102301230B1 KR1020140188642A KR20140188642A KR102301230B1 KR 102301230 B1 KR102301230 B1 KR 102301230B1 KR 1020140188642 A KR1020140188642 A KR 1020140188642A KR 20140188642 A KR20140188642 A KR 20140188642A KR 102301230 B1 KR102301230 B1 KR 102301230B1
Authority
KR
South Korea
Prior art keywords
vgpu
command
gpu
scheduling
mode
Prior art date
Application number
KR1020140188642A
Other languages
English (en)
Other versions
KR20160078029A (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 KR1020140188642A priority Critical patent/KR102301230B1/ko
Priority to US14/974,476 priority patent/US10235733B2/en
Publication of KR20160078029A publication Critical patent/KR20160078029A/ko
Application granted granted Critical
Publication of KR102301230B1 publication Critical patent/KR102301230B1/ko

Links

Images

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04803Split screen, i.e. subdividing the display area or the window area into separate subareas
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/20Details of the management of multiple sources of image data
    • 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/14Display of multiple viewports
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer Hardware Design (AREA)

Abstract

복수의 운영체제(OS:Operating System))들 각각으로부터 커맨드(command)들을 수신하는 복수의 vGPU들; 및 수신된 커맨드들이 GPU에 의해 처리되는 순서 및 시간을 스케줄링(scheduling)하는 vGPU 스케줄러를 포함하고, vGPU 스케줄러는 복수의 OS들 중 포어그라운드 OS(FG OS: Foreground OS)로부터의 커맨드가 우선적으로 처리되도록 순서 및 시간을 스케줄링하는, 디바이스 및 그에 따른 스케줄링을 수행하는 방법을 제공한다.

Description

가상화된 GPU들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스 {Device and Method for performing scheduling for virtualized GPUs}
본 개시는 물리적인 GPU로부터 구현된 복수의 가상화된 GPU들에 대한 스케줄링을 수행하는 방법 및 디바이스에 관한 것이다.
GPU(Graphic Processing Unit)는 다양한 컴퓨팅 태스크를 실행하기 위해 이용될 수 있다. 예를 들어, GPU는 스크린 상에 디스플레이될 픽셀들을 계산할 수 있고, 애니메이션 렌더링 및 일반적인 벡터 계산 등의 다른 집약적인 연산들을 수행할 수 있다.
최근에는 고해상도(HD) 영화나 게임, 3D 영상물 등의 수요가 높아지면서 GPU의 중요성이 커지고 있다. 또한, GPU는 그래픽 처리뿐 아니라 CPU를 대신해 고용량 연산을 담당하는 장치로서도 각광받고 있다.
이처럼 GPU가 중요한 역할을 수행하게 되면서, GPU에 가상화 기술을 적용하여 가상화된 GPU를 구현하는 기술들이 개발되고 있다. 가상화 기술은 한정된 하드웨어 자원을 추상화 하여 여러 개의 운영 체제들이 독립된 실행환경 속에서 작업을 수행할 수 있도록 해주는 것으로 시스템 구조나 하드웨어에 영향을 받지 않고 설치, 사용할 수 있도록 하는 기술이다.
따라서, 보다 효율적으로 GPU 또는 가상화된 GPU를 활용하는 방법에 대한 논의가 필요한 실정이다.
본 실시예들에 따르면, 복수의 운영 체제(OS:Operating system)들 중 포어그라운드 OS(Foreground OS)로부터 커맨드를 수신한 가상화된 GPU에 대해 우선적으로 스케줄링을 수행하는 디바이스 및 방법을 제공한다.
일 측면에 따른 디바이스는, 복수의 운영체제(OS:Operating System))들 각각으로부터 커맨드(command)들을 수신하는 복수의 vGPU(virtualized Graphics Processing Unit)들; 및 수신된 커맨드들이 GPU에 의해 처리되는 순서 및 시간을 스케줄링(scheduling)하는 vGPU 스케줄러를 포함하고, vGPU 스케줄러는, 복수의 OS들 중 포어그라운드 OS(FG OS: Foreground OS)로부터의 커맨드가 우선적으로 처리되도록 순서 및 시간을 스케줄링할 수 있다.
또한, 디바이스는, 복수의 vGPU들 중 제 1 vGPU가 복수의 OS들 중 백그라운드 OS(BG OS: Background OS)로부터 커맨드를 수신하는 경우, 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단하는 vGPU 모니터링부;를 더 포함할 수 있다.
또한, 디바이스는, vGPU 모니터링부가, 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상이라고 판단하는 경우, vGPU 스케줄러는, 제 1 vGPU가 수신한 커맨드가 GPU에 의해 처리되도록 순서 및 시간을 스케줄링할 수 있다.
또한, 디바이스는, 복수의 vGPU들 중 제 1 vGPU가 복수의 OS들 중 BG OS로부터 커맨드를 수신하는 경우, 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었는지 여부를 판단하는 타이머 모니터링부;를 더 포함할 수 있다.
또한, 디바이스는, 타이머 모니터링부가, 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었다고 판단하는 경우, 제 1 vGPU는 소정의 데이터량의 커맨드를 처리하였음을 BG OS에게 알려줄 수 있다.
또한, 디바이스는, FG OS가 호스트 OS(Host OS)인 경우, vGPU 스케줄러가 복수의 OS들 중 호스트 OS 이외의 OS들의 커맨드를 스케줄링의 대상에서 제외하도록 제어하는 정지 명령부;를 더 포함할 수 있다.
또한, 디바이스는, 호스트 OS의 커맨드를 제 1 vGPU가 수신하는 경우, 호스트 OS의 커맨드를 수신하는 대상을 제 1 vGPU에서 GPU로 변경하는 접근 모드 변경부;를 더 포함할 수 있다.
또한, 디바이스는, 순서 및 시간을 스케줄링하는 스케줄링 모드를 선택하기 위한 메뉴를 화면 상에 표시하도록 제어하는 제어부; 및 화면 상의 표시된 메뉴를 통해 상기 스케줄링 모드를 선택하는 사용자 입력을 수신하는 사용자 입력부;를 더 포함할 수 있다.
또한, GPU 스케줄러는, 사용자 입력에 의해 선택된 스케줄링 모드에 따라, 순서 및 시간을 스케줄링할 수 있다.
또한, 디바이스는, 복수의 OS들 중 제 1 OS가 제 1 vGPU의 메모리 내의 제 1 주소로 커맨드를 전달하는 경우, 제 1 주소를 GPU의 메모리에 접근하기 위한 제 2 주소로 변환하여, 전달된 커맨드를 GPU의 메모리의 제 2 주소에서 처리하도록 제어하는 주소 변환부를 더 포함할 수 있다.
다른 측면에 따른, 물리적인 GPU(Graphics Processing Unit)로부터 구현된 복수의 가상화된 GPU(vGPU:virtualized GPU)들에 대한 스케줄링을 수행하는 방법은, 복수의 운영체제(OS:Operating System)들 각각의 커맨드(command)들을 복수의 vGPU들이 수신하는 단계; 및 수신된 커맨드들이 GPU에 의해 처리되는 순서 및 시간을 스케줄링(scheduling)하는 단계;를 포함할 수 있고, 스케줄링하는 단계는, 복수의 OS들 중 포어그라운드 OS(FG OS: Foreground OS)로부터의 커맨드가 우선적으로 처리되도록 순서 및 시간을 스케줄링할 수 있다.
또 다른 측면에 따라, 전술한 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.
도 1 은 본 개시에 따른 디바이스를 도시한다.
도 2는 일 실시예에 따라 디바이스가 GPU로부터 구현된 복수의 vGPU들에 대한 스케줄링을 수행하는 방법을 나타낸다.
도 3은 본 개시에 따른 디바이스를 도시한다.
도 4은 일 실시예에 따라 타이머 모니터링부의 역할을 설명하기 위한 도면이다.
도 5는 디바이스가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 6는 디바이스가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 7은 본 개시에 따른 디바이스를 도시한다.
도 8은, 일 실시예에 따라, 접근 모드 변경부가 간접 접근하는 모드에서 직접 접근하는 모드로 변경하는 내용을 설명하기 위한 도면이다.
도 9는 디바이스가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 10은 일 실시예에 따라, 디바이스가 간접 접근 모드에서 직접 접근 모드로 변경하는 내용을 설명하기 위한 도면이다.
도 11은 본 개시에 따른 디바이스를 도시한다.
도 12는 디바이스가 화면 상에 스케줄링 모드를 선택하기 위한 메뉴를 표시하는 일 예시를 나타낸다.
도 13은 디바이스가 화면 상에 스케줄링 모드를 선택하기 위한 메뉴를 표시하는 일 예시를 나타낸다.
도 14는 본 개시에 따른 디바이스를 도시한다.
도 15는 디바이스가 주소 변환을 수행하는 일 실시예를 나타낸다.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예에 의해 발명을 상세히 설명하기로 한다. 하기 실시예는 발명을 구체화하기 위한 것일 뿐 발명의 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 발명이 속하는 기술분야의 전문가가 용이하게 유추할 수 있는 것은 발명의 권리범위에 속하는 것으로 해석된다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
한편, 일 실시예에 따르면, 디바이스(100,200,300,400, 및 500)는 다양한 형태로 구현될 수 있다. 예를 들어, 본 명세서에서 기술되는 디바이스(100,200,300,400, 및 500)는 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 태블릿 PC, 전자북 단말기, 디지털방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션, 스마트 TV, CE(Consumer Electronics) 기기(예컨대, 디스플레이 패널을 갖는 냉장고, 에어컨 등) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
이하에서는 도면을 참조하여 본 개시에 따른 실시 예들을 상세히 설명한다.
도 1은 본 개시에 따른 디바이스(100)를 나타내는 도면이다.
디바이스(100)는 일 실시예에 따라, 복수의 OS(operating system)들(111,113,115), GPU(Graphic Processing Unit)(140) 및 GPU 메디에이터(GPU mediator)(120)를 포함할 수 있다. 도 1 에 도시된 디바이스(100)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 도 1에서는 복수의 OS들(111,113,115) 및 복수의 vGPU(virtualized Graphics Processing Unit)들(121,123,125)은 설명의 편의상 3개로 표현되었지만, 다른 개수이어도 무방하다.
복수의 OS들(111,113,115)은 디바이스(100)내의 하드웨어 및 소프트웨어를 관리하는 시스템을 의미하는 바, 다양한 종류의 OS들로 구성될 수 있다. 예를 들어, 복수의 OS들(111,113,115)은, 안드로이드(Android) OS, 윈도우(Windows) OS, 리눅스(Linux) OS 및 타이젠(Tizen) OS 중 적어도 하나의 OS가 될 수 있다. 또한, 복수의 OS들(111,113,115)은 가상 머신(virtual machine) 상에서 실행되는 OS일 수 있다.
일 실시예에 따라, 복수의 OS들(111,113,115)은 포어그라운드(foreground) OS 또는 백그라운드(background) OS가 될 수 있다. 포어그라운드 OS는, 디바이스(100) 내에서 실행되는 OS 중에서, 디바이스(100) 내의 화면 상에서 사용자가 인식 가능한 OS를 의미한다. 또한, 백그라운드 OS는 디바이스(100) 내의 화면 상에서 사용자가 인식할 수 없는 OS를 의미한다. 예를 들어, 디바이스(100)가 안드로이드 OS, 윈도우 OS 및 타이젠 OS를 동시에 실행하고 있는 경우, 사용자가 디바이스(100) 내의 화면 상에서 안드로이드 OS를 이용하고 있다면, 안드로이드 OS는 포어그라운드 OS가 되고, 윈도우 OS 및 타이젠 OS는 백그라운드 OS가 될 수 있다. 다만, 사용자가 디바이스(100) 내의 분리된 화면 상에서 안드로이드 OS와 윈도우 OS를 동시에 이용하고 있다면, 안드로이드 OS와 윈도우 OS는 포어그라운드 OS가 되고, 타이젠 OS는 백그라운드 OS가 될 수 있다. 이하에서는 설명의 편의를 위해, 포어그라운드 OS는 FG OS로, 백그라운드 OS는 BG OS로 칭하기로 한다.
복수의 OS들(111,113,115)은 일 실시예에 따라 GPU(140)에 직접적으로 접근(access)할 수 있고, GPU 메디에이터(120)를 통해 간접적으로 GPU(140)로 접근할 수 있다. 도 1에서 도시된 화살표가 있는 실선은 복수의 OS들(111,113,115)의 직접 접근을 의미하고, 화살표가 있는 점선은 복수의 OS들(111,113,115)의 간접 접근을 의미한다. 복수의 OS들(111,113,115)이 GPU(140)에 직접 접근하는 일 예시로써, 복수의 OS들(111,113,115)은 GPU(140)에 직접 접근하여 GPU(140) 내의 메모리에 그래픽스 데이터(graphics data)를 저장할 수 있다. 또한, 복수의 OS들(111,113,115)이 GPU(140)에 간접 접근하는 일 예시로써, 복수의 OS들(111,113,115)은 소정의 커맨드(command)를 GPU 메디에이터(120)를 통해 GPU(140)에 전달할 수 있다. GPU(140)는 전달 받은 커맨드를 처리할 수 있다. 예를 들어, GPU(140)는 GPU(140) 내의 메모리에 저장된 그래픽스 데이터를 이용하여 렌더링을 수행할 수 있다.
GPU 메디에이터(120)는 일 실시예에 따라, 복수의 vGPU(virtualized GPU)들(121,123,125) 및 vGPU 스케줄러(vGPU scheduler)(130)를 포함할 수 있다.
디바이스(100)는 일 실시예에 따라, 물리적 하드웨어인 GPU(140)를 가상화하여 복수의 vGPU들(121,123,125)로 구현할 수 있다. 복수의 vGPU들(121,123,125)은 일 실시예에 따라, 복수의 OS들(111,113,115) 각각으로부터 커맨드들을 각각 수신할 수 있다. 또한, 복수의 vGPU들(121,123,125)은 수신된 커맨드들을 GPU(140)에 접근하여 전달할 수 있고, GPU(140)는 전달된 커맨드를 처리할 수 있다. 이하에서는, vGPU가 GPU에 접근한다는 내용은 GPU가 vGPU의 커맨드를 수신하여 처리한다는 내용을 포함하는 것으로 본다.
vGPU 스케줄러(130)는, 일 실시예에 따라, 복수의 vGPU들(121,123,125)이 GPU(140)에 접근하는 시간 및 순서를 스케줄링할 수 있다. 즉, vGPU 스케줄러(130)는, 복수의 vGPU들(121,123,125) 각각이 수신한 커맨드들이 GPU(140)에 의해 처리되는 순서 및 시간을 스케줄링할 수 있다. 예를 들어, 3개의 vGPU(제 1 vGPU, 제 2 vGPU, 제 3 vGPU)가 각각 3개의 OS로부터 커맨드를 수신하는 경우, vGPU 스케줄러(130)는 3개의 vGPU가 GPU(140)에 접근하는 순서 및 시간을, 제 1 vGPU, 제 2 vGPU, 제 3 vGPU 순으로 10msec씩 스케줄링할 수 있다. 따라서, GPU(140)는 제 1 vGPU의 커맨드, 제 2 vGPU의 커맨드, 제 3 vGPU의 커맨드를 10msec씩 처리하게 된다.
또한, vGPU 스케줄러(130)는 스케줄링된 순서 및 시간에 따라 복수의 vGPU들(121,123,125)에 대해 컨텍스트 스위칭(context switching)을 수행할 수 있다. 컨텍스트 스위칭이란, 스케줄링된 순서 및 시간에 따라, 복수의 vGPU들(121,123,125) 중 어느 하나의 vGPU가 GPU(140)에 접근하는 시간이 다 경과한 시점에서, 다음 순서의 vGPU가 GPU(140)에 접근하도록 제어하는 것이다. 예를 들어, 3개의 vGPU(제 1 vGPU, 제 2 vGPU, 제 3 vGPU)가 제 1 vGPU, 제 2 vGPU, 제 3 vGPU 순으로 10msec씩 스케줄링된 경우, 제 1 vGPU가 GPU(140)에 접근하는 10msec이 지난 후에, vGPU 스케줄러(130)는 GPU(140)에 접근하는 vGPU를 제 1 vGPU에서 제 2 vGPU로 컨텍스트 스위칭을 수행할 수 있다.
일 실시예에 따라, vGPU 스케줄러(130)는, 복수의 OS들(111,113,115) 중에 FG OS를 인식할 수 있다. 따라서, 복수의 OS들(111,113,115) 중 제 1 OS가 FG OS이고 제 1 OS로부터의 커맨드를 제 1 vGPU가 수신하는 경우, vGPU 스케줄러(130)는 제 1 OS로부터의 커맨드를 우선적으로 처리하도록 순서 및 시간을 결정할 수 있다. 즉, vGPU 스케줄러(130)는 제 1 vGPU가 GPU(140)에 접근하는 순서를 우선적으로 할당할 수 있고, 제 1 vGPU가 GPU(140)에 접근하는 시간을 다른 vGPU에 비해 더 많이 할당할 수 있다. 예를 들어, 3개의 vGPU(제 1 vGPU, 제 2 vGPU, 제 3 vGPU) 중 제 3 vGPU가 FG OS로부터 커맨드를 수신하는 경우, vGPU 스케줄러(130)는 제 3 vGPU, 제 1 vGPU, 제 2 vGPU 순으로 28msec, 1msec, 1msec씩 스케줄링할 수 있다. 또한, 일 실시예에 따라, vGPU 스케줄러(130)는 오직 FG OS로부터 커맨드를 수신하는 vGPU만이 GPU(140)에 접근하도록 스케줄링할 수 있다.
따라서, FG OS로부터 커맨드를 수신하는 vGPU가 우선적으로 GPU에 접근하여, FG OS로부터의 커맨드가 우선적으로 처리될 수 있으므로, 사용자는 FG OS에 대한 GPU 성능이 높아졌다고 인식할 수 있다.
도 2는 일 실시예에 따라, 디바이스(100)가 GPU로부터 구현된 복수의 vGPU들에 대한 스케줄링을 수행하는 방법을 나타낸다.
도 2에 도시된 방법은, 도 1의 디바이스(100)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s210에서, 디바이스(100) 내의 복수의 vGPU들은 복수의 OS들 각각의 커맨드들을 수신할 수 있다.
단계 s220에서, 디바이스(100)는 복수의 vGPU들 각각이 수신한 커맨드들이 GPU에 의해 처리되는 순서 및 시간을 스케줄링할 수 있다. 즉, 디바이스(100)는 복수의 vGPU들 각각이 GPU에 접근하는 순서 및 시간을 스케줄링할 수 있다. 일 실시예에 따라, 디바이스(100)는 복수의 OS들 중 FG OS를 인식할 수 있다. 따라서, 디바이스(100)는 복수의 OS들 중 FG OS로부터의 커맨드가 우선적으로 처리되도록 순서 및 시간을 결정할 수 있다. 즉, 디바이스(100)는 FG OS로부터의 커맨드를 수신한 vGPU가 GPU에 접근하는 순서를 우선적으로 할당할 수 있고, FG OS로부터의 커맨드를 수신한 vGPU가 GPU에 접근하는 시간을 다른 vGPU에 비해 더 많이 할당할 수 있다.
도 3은 본 개시에 따른 디바이스(200)를 나타내는 도면이다.
디바이스(200)는 일 실시예에 따라, 복수의 OS들(211,213,215), GPU(270) 및 GPU 메디에이터(230)를 포함할 수 있다. 도 3에 도시된 디바이스(200)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 3의 복수의 OS들(211,213,215), GPU(270) 및 GPU 메디에이터(230)는 도 1에서 설명한 내용을 포함하는 바, 중복되는 내용에 대해서는 설명을 생략하기로 한다.
도 3에 도시된 바와 같이, 복수의 OS들(211,213,215)은 1개의 호스트 OS(host OS)(211), 복수의 게스트 OS들(guest OS)(213,215)로 구성될 수 있다. 일 실시예에 따라, 디바이스(200)는 기본적인 1개의 호스트 OS(211) 이외에도 복수의 게스트 OS들(213,215)을 추가적으로 구현할 수 있다. 일 실시예에 따라, 복수의 게스트 OS들(211,213,215)은 디바이스(200) 내의 복수의 가상 머신(virtual machine) 내에서 각각 구동될 수 있다.
또한, 일 실시예에 따라, 도 1에서는 복수의 OS들(211,213,215)과 GPU 메디에이터(230)는 별개로 도시되었지만, 도 3에서와 같이, 호스트 OS(211)는 GPU 메디에이터(230)를 포함할 수 있다. 따라서, 본 발명에서는, 호스트 OS가 GPU 메디에이터를 포함하여 도시되는 내용은 복수의 OS들과 GPU 메디에이터가 별개로 도시되는 내용을 포함하는 것으로 본다.
호스트 OS 및 복수의 게스트 OS들(211,213,215)은 일 실시예에 따라 각각 GPU 드라이버(221,223,225)를 포함할 수 있다. GPU 드라이버(221,223,225)는 GPU(270)를 구동시키기 위한 소프트웨어로써, 일 실시예에 따라 vGPU(231,233,235)에 접근하여 커맨드를 vGPU(231,233,235)에 각각 전달할 수 있다. 또한, 일 실시예에 따라, 실선이 있는 화살표와 같이, GPU 드라이버(221,223,225)는 GPU(270)에 직접 접근할 수 있다. 이하에서는, 복수의 OS들(211,213,215)이 GPU(270) 또는 vGPU들(231,233,235)에 접근하거나 커맨드를 전달하는 내용은 GPU 드라이버(221,223,225)가 GPU(270) 또는 vGPU들(231,233,235)에 접근하거나 커맨드를 전달하는 내용을 포함하는 것으로 본다.
GPU 메디에이터(230)는 일 실시예에 따라, 복수의 vGPU들(231,233,235), vGPU 스케줄러(240), vGPU 모니터링부(250) 및 타이머 모니터링부(260)를 포함할 수 있다.
복수의 vGPU들(231,233,235)은 복수의 OS들(211,213,215)에 포함된 GPU 드라이버(221,223,225)로부터 커맨드를 각각 수신할 수 있다.
vGPU 모니터링부(250)는 일 실시예에 따라, 복수의 OS들(211,213,215) 중 BG OS로부터 커맨드를 수신하는 vGPU를 인식할 수 있다. 복수의 vGPU들(231,233,235) 중 BG OS로부터 커맨드를 수신하는 vGPU가 제 1 vGPU인 경우, vGPU 모니터링부(250)는 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단할 수 있다. 일 실시예에 따라, vGPU 모니터링부(250)는 제 1 vGPU의 커맨드 버퍼를 모니터링하여, 커맨드 버퍼 내에 저장된 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단할 수 있다. vGPU 모니터링부(250)가 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상이라고 판단하는 경우, vGPU 스케줄러(240)는 제 1 vGPU가 수신한 커맨드를 GPU(270)에 의해 처리되도록 컨텍스트 스위칭을 수행할 수 있다.
예를 들어, 복수의 vGPU들(231,233,235) 중 FG OS로부터 커맨드를 수신하는 vGPU가 제 1 vGPU이고 BG OS로부터 커맨드를 수신하는 vGPU가 제 2 vGPU인 경우, vGPU 스케줄러(240)는 제 1 vGPU의 커맨드가 우선적으로 처리되도록 스케줄링을 할 수 있다. 이어서, 제 1 vGPU의 커맨드가 GPU(270)에 의해 처리되는 동안, vGPU 모니터링부(250)는 제 2 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단할 수 있다. 따라서, vGPU 모니터링부(250)가 제 2 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상이라고 판단하는 경우, vGPU 스케줄러(240)는 GPU(270)에 접근하는 vGPU를 제 1 vGPU에서 제 2 vGPU로 변경하는 컨텍스트 스위칭을 수행할 수 있다. 이어서, 제 2 vGPU의 커맨드가 소정의 데이터량만큼 처리된 경우, vGPU 스케줄러(240)는 제 1 vGPU의 커맨드가 다시 처리되도록 컨텍스트 스위칭을 수행할 수 있다. 소정의 데이터량은 사용자의 설정에 따라 달라질 수 있다.
타이머 모니터링부(260)는, 일 실시예에 따라, 복수의 OS들(211,213,215) 중 BG OS로부터 커맨드를 수신하는 vGPU를 인식할 수 있다. 복수의 vGPU들(231,233,235) 중 BG OS로부터 커맨드를 수신하는 vGPU가 제 1 vGPU인 경우, 제 1 vGPU가 수신한 커맨드가 처리되지 않는 시간이 기 설정된 시간보다 경과되었는지 여부를 판단할 수 있다. 타이머 모니터링부(260)가 제 1 vGPU가 수신한 커맨드가 처리되지 않는 시간이 기 설정된 시간보다 경과되었다고 판단한 경우, 제 1 vGPU는 소정의 데이터량의 커맨드를 처리하였음을 BG OS에게 알릴 수 있다.
일 실시예에 따라, 복수의 OS들(211,213,215) 각각은 타이머를 포함할 수 있고, 타이머는 복수의 OS들(211,213,215) 각각의 커맨드가 처리되지 않는 시간을 카운트할 수 있다. 일 실시예에 따라, 타이머 모니터링부(260)는 BG OS의 타이머가 카운트한 시간이 기 설정된 시간보다 경과하였는지 여부를 판단할 수 있다. 따라서, 타이머 모니터링부(260)는 BG OS의 타이머가 카운트한 시간이 기 설정된 시간보다 경과되었다고 판단한 경우, BG OS로부터 커맨드를 수신한 vGPU는 BG OS에게 소정의 데이터량의 커맨드를 처리하였음을 알릴 수 있다. 이어서, BG OS의 타이머는 커맨드가 처리되지 않는 시간을 다시 카운트할 수 있다.
따라서, 디바이스(200)는 FG OS에 대응되는 vGPU가 GPU에 우선적으로 접근하도록 스케줄링을 수행하더라도, vGPU 모니터링부(230)를 구비함으로써, BG OS에 대응되는 vGPU의 커맨드 버퍼가 오버플로어(overflow)되는 현상을 방지할 수 있다.
또한, 디바이스(200)는 FG OS에 대응되는 vGPU가 GPU에 우선적으로 접근하도록 스케줄링을 수행하더라도, 타이머 모니터링부(260)를 구비함으로써, BG OS의 커맨드가 소정의 시간동안 처리되지 않아 BG OS가 GPU에 대해 리셋을 수행할 수 있는 현상을 방지할 수 있다.
도 4는 일 실시예에 따라, 타이머 모니터링부(260)의 역할을 설명하기 위한 도면이다.
도 4에서는, 설명의 편의를 위해, BG OS(410), GPU 메디에이터(230) 및 GPU(270)만이 도시되었다. 따라서, 도 4에서는 도 3에서의 구성요소들을 포함할 수 있다.
vGPU(420)는 일 실시예에 따라, 커맨드 버퍼로써의 v버퍼(virtual Buffer)(421) 및 s버퍼(shadow Buffer)(423)를 포함할 수 있다. 일 실시예에 따라, v버퍼(421)는 GPU 드라이버(411)로부터 커맨드를 수신하여 저장할 수 있다. 따라서, v버퍼(421)는, GPU 드라이버(411)가 인식하기 위한, GPU 드라이버(411)로부터 수신한 커맨드의 데이터량 또는 GPU(270)에 의해 처리된 커맨드의 데이터량을 나타낼 수 있다. 일 실시예에 따라, s버퍼(423)는, vGPU(420)가 인식하기 위한, GPU 드라이버(411)로부터 수신한 커맨드의 데이터량 또는 GPU(270)에 의해 처리된 커맨드의 데이터량을 나타낼 수 있다. 커맨드의 데이터량은, 도3의 영역(430)에 도시되어 있듯이, 헤드(H:Head)와 테일(T:Tail)간의 간격으로 나타낼 수 있다. 즉, 커맨드가 처리되어 커맨드의 데이터량이 줄어드는 경우에는, vGPU(420)는 헤드를 우측으로 이동하게끔 업데이트하고, GPU 드라이버(411)로부터 커맨드를 수신하는 경우에는, vGPU(420)는 테일을 우측으로 이동하게끔 업데이트한다. 일 실시예에 따라, v버퍼(421) 및 s버퍼(423)는 CPU와 GPU가 캐시 메모리 자원을 공유하고 데이터를 효율적으로 주고 받는 '링(ring)' 아키텍처가 적용된 링 버퍼(ring buffer)일 수 있다.
타이머 모니터링부(230)는, 일 실시예에 따라, BG OS(410)의 타이머가 카운트한 시간이 기 설정된 시간보다 경과하였는지 여부를 판단할 수 있다. 따라서, 타이머 모니터링부(230)가 BG OS(410)의 타이머가 카운트한 시간이 기 설정된 시간보다 경과되었다고 판단한 경우, vGPU(420)는 v버퍼(421)의 헤드가 기 설정된 양만큼 우측으로 이동하도록 업데이트할 수 있다.
일 실시예에 따라, vGPU(420)가 GPU(270)를 통해 모든 커맨드를 처리한 경우, 영역(430)에 도시된 바와 같이, vGPU(420)는 s버퍼(423)의 헤드를 테일의 위치로 이동하도록 업데이트할 수 있다. 또한, 타이머 모니터링부(230)가 BG OS의 타이머가 카운트한 시간이 기 설정된 시간보다 경과되었다고 판단한 경우, 영역(430)에 도시된 바와 같이, vGPU(420)는 v버퍼(421)의 헤드를 기 설정된 양만큼 우측으로 이동하도록 업데이트할 수 있다. 따라서, vGPU(420)는 실제 커맨드를 처리한 데이터량보다 더 적은 데이터량을 처리하였음을 BG OS(410)로 하여금 인식시킬 수 있다. 이에 따라, BG OS(410)는 GPU(270)의 성능이 낮다고 인식할 수 있다.
도 5는 일 실시예에 따라 디바이스(200)가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 5에 도시된 방법은, 도 3의 디바이스(200)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s510에서, 디바이스(200)는 FG OS에 대응되는 vGPU가 GPU에 우선적으로 접근하도록 스케줄링할 수 있다. 일 실시예에 따라, 디바이스(200)는, FG OS로부터 커맨드를 수신하는 vGPU만이 GPU에 접근하여 커맨드를 처리하도록 할 수 있다.
단계 s520에서, 디바이스(200)는 BG OS에 대응되는 vGPU가 저장한 커맨드의 데이터량이 소정의 임계치보다 큰지 여부를 판단할 수 있다. 디바이스(200)는 BG OS에 대응되는 vGPU의 커맨드 버퍼를 모니터링하여, 커맨드 버퍼 내에 저장된 커맨드의 데이터량이 소정의 임계치 이상인 지 여부를 판단할 수 있다.
s520에서, 디바이스(200)가 BG OS에 대응되는 vGPU가 저장한 커맨드의 데이터량이 소정의 임계치보다 적다고 판단한 경우, 디바이스(200)는 계속적으로 FG OS에 대응되는 vGPU가 GPU에 접근하도록 스케줄링한다.
s520에서, 디바이스(200)가 BG OS에 대응되는 vGPU가 저장한 커맨드의 데이터량이 소정의 임계치보다 크다고 판단한 경우, 디바이스(200)는 BG OS에 대응되는 vGPU가 GPU에 접근하도록 스케줄링할 수 있다.(s530) 일 실시예에 따라, 디바이스(200)는 컨텍스트 스위칭을 수행하여, GPU에 접근하는 vGPU를 FG OS에 대응되는 vGPU에서 BG OS에 대응되는 vGPU로 변경할 수 있다.
단계 s540에서, 디바이스(200)는 BG OS에 대응되는 vGPU의 커맨드를 소정의 데이터량만큼 처리할 수 있다. 소정의 데이터량은 사용자의 설정에 따라 달라질 수 있다.
단계 s550에서, 디바이스(200)는 FG OS에 대응되는 vGPU가 GPU에 다시 접근하도록 스케줄링을 수행할 수 있다. 즉, 디바이스(200)는 컨텍스트 스위칭을 수행하여, GPU에 접근하는 vGPU를, BG OS에 대응되는 vGPU에서 FG OS에 대응되는 vGPU로 변경할 수 있다.
일 실시예에 따라, 디바이스(200)는 s510 내지 s550을 반복적으로 수행할 수 있다.
도 6은 일 실시예에 따라, 디바이스(200)가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 6에 도시된 방법은, 도 3의 디바이스(200)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s610에서, 디바이스(200)는 일 실시예에 따라, BG OS의 커맨드가 소정의 시간 동안 처리되지 않는 지 여부를 판단할 수 있다. 일 실시예에 따라, 디바이스(200)는 BG OS의 타이머가 카운트한 시간이 기 설정된 시간보다 경과하였는지 여부를 판단할 수 있다. 타이머는 BG OS의 커맨드가 처리되지 않는 시간을 카운트한다. s610에서 디바이스(200)가 BG OS의 커맨드가 소정의 시간 내에 처리된 경우, 처리된 시점부터 카운트를 다시 시작할 수 있다.
s610에서 디바이스(200)가 BG OS의 커맨드가 소정의 시간 동안 처리되지 않는다고 판단한 경우, 디바이스(200)는 BG OS에 대응되는 vGPU로 하여금 소정의 데이터량의 커맨드를 처리하였다는 정보를 BG OS에게 전달하도록 할 수 있다.(s620) 소정의 데이터량은 vGPU가 실제로 커맨드를 처리한 데이터량보다 작게끔 설정될 수 있다.
도 7은 본 개시에 따른 디바이스(300)를 나타내는 도면이다.
디바이스(300)는 일 실시예에 따라, 복수의 OS들(711,713,715), GPU(770), GPU 메디에이터(730), 정지 명령부(760) 및 접근 모드 변경부(750)를 포함할 수 있다. 도 7 에 도시된 디바이스(300)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 7의 복수의 OS들(711,713,715), GPU(770) 및 GPU 메디에이터(730)는 도 3에서 설명한 내용을 포함하는 바, 중복되는 내용에 대해서는 설명을 생략하기로 한다.
정지 명령부(760)는 일 실시예에 따라, FG OS가 호스트 OS(711)인지 여부를 판단할 수 있다. FG OS가 호스트 OS(711)인 경우, 정지 명령부(760)는 게스트 OS들로부터 커맨드를 수신하는 vGPU들(733,735)을 스케줄링에서 제외하도록 vGPU 스케줄러(740)를 제어할 수 있다. 따라서, vGPU 스케줄러(740)는 정지 명령부(760)에 의해 호스트 OS에 대응되는 vGPU만을 스케줄링할 수 있다.
또한, 정지 명령부(760)는 일 실시예에 따라, 게스트 OS들(723,725)과 대응되는 vCPU(virtualized Central Processing unit)(미도시) 또한 정지되도록 제어할 수 있다.
접근 모드 변경부(750)는 일 실시예에 따라, 호스트 OS(711)의 커맨드를 수신하는 대상을 vGPU(731)에서 GPU(770)로 변경할 수 있다. 일 실시예에 따라, 접근 모드 변경부(750)는 GPU 드라이버(721)가 vGPU(731)로 전송하는 커맨드를 GPU(770)로 전송하게 제어할 수 있다. 즉, 접근 모드 변경부(750)는 호스트 OS(711)가 GPU 메디에이터(730)를 통해 GPU(770)로 간접 접근하는 모드를 호스트 OS가 GPU(770)로 직접 접근하는 모드로 변경할 수 있다. 또한, 일 실시예에 따라, 접근 모드 변경부(750)는 호스트 OS(711)가 GPU(770)로 직접 접근하는 모드를 호스트 OS(711)가 GPU 메디에이터(730)를 통해 GPU(770)로 간접 접근하는 모드로 변경할 수 있다.
따라서, 디바이스(300)는 정지 명령부(760)를 구비함으로써, FG OS인 호스트 OS(711)가 구동하는 GPU 성능을 네이티브 성능에 근접하게끔 내게 할 수 있다. 또한, 디바이스(300)는 접근 모드 변경부(750)를 구비함으로써, FG OS인 호스트 OS(711)가 구동하는 GPU 성능을 네이티브 성능과 동일한 정도로 내게 할 수 있다. 네이티브 성능은 디바이스(300) 내에 호스트 OS만이 존재하여, 호스트 OS가 단독으로 직접적으로 GPU를 구동할 때의 성능을 의미한다.
도 8은, 일 실시예에 따라, 접근 모드 변경부(750)가 간접 접근하는 모드에서 직접 접근하는 모드로 변경하는 내용을 설명하기 위한 도면이다.
일 실시예에 따라, 도 8(a)는 간접 접근 모드를, 도 8(b)는 직접 접근 모드를 나타낸다.
도 8(a)에서, GPU 드라이버(810)는 커맨드를 GPU 메디에이터(820)의 v버퍼(821)로 전송할 수 있다. 이어서, GPU 메디에이터(820)는 v버퍼(821)에 저장된 커맨드를 s버퍼(823)에 저장한 후에, s버퍼에 저장된 커맨드를 GPU(830)로 전송할 수 있다. 또한, GPU(830)는 인터럽트 신호를 GPU 메디에이터(820) 내의 인터럽트 핸들러(Interrupt handler)(825)로 전송할 수 있고, 이어서, GPU 메디에이터(820)는 인터럽스 신호를 GPU 드라이버(810) 내의 인터럽트 핸들러(811)에 전송할 수 있다.
도 8(b)에서, GPU 드라이버(840)는 커맨드를 GPU(850)로 곧바로 전송할 수 잇다. 또한, GPU(850)는 인터럽트 신호를 GPU 드라이버(840) 내의 인터럽트 핸들러(860)로 곧바로 전송할 수 있다.
도 9는, 디바이스(300)가 복수의 vGPU들에 대해 스케줄링을 수행하는 일 실시예를 나타낸다.
도 9에 도시된 방법은, 도 7의 디바이스(300)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s910에서, 디바이스(300)는 FG OS가 호스트 OS인지 여부를 판단할 수 있다.
s910에서, FG OS가 호스트 OS인 경우, 디바이스(300)는 게스트 OS들로부터 커맨드를 수신하는 vGPU들을 스케줄링 대상에서 제외하도록 제어할 수 있다.(s920) 즉, 디바이스(300)는 호스트 OS로부터 커맨드를 수신하는 vGPU만을 스케줄링 할 수 있다. 또한, 디바이스(300)는 일 실시예에 따라, 게스트 OS들과 대응되는 vCPU 또한 정지되도록 제어할 수 있다.
단계 s930에서, 디바이스(300)는 호스트 OS의 커맨드를 수신하는 대상을 vGPU에서 GPU로 변경할 수 있다. 일 실시예에 따라, 디바이스(300)는 GPU 드라이버가 vGPU로 전송하는 커맨드를 GPU로 전송하게 제어할 수 있다. 즉, 디바이스(300)는 호스트 OS가 GPU 메디에이터를 통해 GPU로 간접 접근하는 모드를 호스트 OS가 GPU로 직접 접근하는 모드로 변경할 수 있다. 또한, 일 실시예에 따라, 디바이스(300)는 호스트 OS가 GPU로 직접 접근하는 모드를 호스트 OS가 GPU 메디에이터를 통해 GPU로 간접 접근하는 모드로 변경할 수 있다.
도 10은 일 실시예에 따라, 디바이스(300)가 간접 접근 모드에서 직접 접근 모드로 변경하는 내용을 설명하기 위한 도면이다.
도 10에 도시된 방법은, 도 7의 디바이스(300)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s1010에서, 디바이스(300)는 FG OS가 커맨드를 vGPU로 전송중인지 여부를 판단할 수 있다.
s1010에서, FG OS가 커맨드를 vGPU로 전송중인 경우, 디바이스(300)는 일 실시예에 따라, vGPU에 기 저장된 커맨드를 GPU에 저장할 수 있다.(s1020)
단계 s1030에서, 디바이스(300)는 FG OS가 커맨드를 GPU에 직접적으로 전송하도록 제어할 수 있다. 또한, 디바이스(300)는 GPU의 인터럽트 신호를 GPU 드라이버가 수신하도록 제어할 수 있다.
도 11은, 본 개시에 다른 디바이스(400)를 설명하기 위한 도면이다.
디바이스(400)는 일 실시예에 따라, 복수의 OS들(1111,1113,1115), GPU(1130), GPU 메디에이터(1120), 정지 명령부(1150), 접근 모드 변경부(1140), 제어부(1170) 및 사용자 입력부(1160)를 포함할 수 있다. 도 11에 도시된 디바이스(400)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 11에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 11의 복수의 OS들(1111,1113,1115), GPU(1130), GPU 메디에이터(1120), 접근 모드 변경부(1140) 및 정지 명령부(1150)는 도 1, 3 및 7에서 설명한 내용을 포함하는 바, 중복되는 내용에 대해서는 설명을 생략하기로 한다.
제어부(1170)는 일 실시예에 따라, 복수의 vGPU들(1121,1123,1125) 각각이 GPU(1130)에 접근하는 순서 및 시간을 결정하는 스케줄링 모드에 대한 메뉴를 화면 상에 표시하도록 제어할 수 있다. 즉, 제어부(1170)는 일 실시예에 따라, 스케줄링 모드를 사용자가 선택하기 위한 메뉴를 화면 상에 표시하도록 제어할 수 있다. 일 실시예에 따라, 스케줄링 모드는, 기본값으로 설정된 일반 스케줄링 모드, FG OS로부터 커맨드를 수신하는 vGPU가 우선적으로 GPU(1130)에 접근하여 커맨드를 처리하도록 설정하는 FG 지향 모드, FG OS가 호스트 OS인 경우 BG OS에 대응되는 vGPU를 스케줄링의 대상에서 제외하도록 설정하는 BG 정지모드, FG OS로부터의 커맨드를 GPU(1130)로 곧바로 수신하도록 설정하는 직접 접근 모드, FG OS로부터의 커맨드를 GPU 메디에이터(1120)를 통해 GPU(1130)가 수신하도록 설정하는 간접 접근 모드 중 적어도 하나를 포함할 수 있다.
또한, 제어부(1170)는, 일 실시예에 따라, 화면이 복수의 영역들로 분할된 경우, 각 영역에서 실행되는 OS에 대한 스케줄링 모드를 선택하기 위한 메뉴를 화면 상에 표시하도록 제어할 수 있다. 예를 들어, 화면이 제 1 영역 및 제 2 영역으로 분할된 경우, 제어부(1170)는, 제 1 영역에서 실행되는 OS에 대응되는 vGPU와 제 2 영역에서 실행되는 OS에 대응되는 vGPU가 GPU(1130)에 접근하는 시간에 대한 비율을 선택하는 메뉴를 화면 상에 표시하도록 제어할 수 있다. 또한, 제어부(1170)는, 일 실시예에 따라, 제 1 영역 및 제 2 영역 각각에 대해 일반 스케줄링 모드, FG 지향 모드, BG 정지 모드, 직접 접근 모드, 간접 접근 모드를 선택하는 메뉴를 화면 상에 표시하도록 제어할 수 있다.
사용자 입력부(1160)는, 화면 상에 표시된 스케줄링 모드를 선택하는 사용자 입력을 수신할 수 있다. 사용자 입력부(1160)는, 외부로부터 소정의 입력을 인가 받기 위한 장치 등을 포함할 수 있다. 예를 들어, 사용자 입력부(1160)는 마이크로폰, 키보드, 마우스, 조이스틱, 터치 패드, 터치팬, 음성, 제스처 인식장치 등을 포함할 수 있다. 사용자 입력부(1160)가 스케줄링 모드를 선택하는 입력을 수신하는 경우, 제어부(1160)는 선택된 스케줄링 모드에 따라 디바이스(400)가 동작할 수 있도록 제어할 수 있다.
도 12는, 디바이스(400)가 화면 상에 스케줄링 모드를 선택하기 위한 메뉴를 표시하는 일 예시를 나타낸다.
도 12의 화면(1210) 상에 도시된 바와 같이, 디바이스(400)는 스케줄링 모드로써, 일반 스케줄링 모드, FG 지향 모드, BG 정지 모드, 직접 접근 모드, 간접 접근 모드, 자동 선택 모드 중 어느 하나의 모드를 선택 받기 위한 메뉴(1220)를 표시할 수 있다. 자동 선택 모드는 디바이스(400)가 기 설정된 대로 상황에 맞게 스케줄링 모드를 선택하는 것을 의미한다. 일 예로써, 자동 선택 모드는, 디바이스(400)의 배터리가 소정의 수치 이하일 때, 자동으로 FG 지향 모드 및 BG 정지 모드를 선택하게끔 설정될 수 있다. 따라서, 사용자 입력부(1160)는 화면(1210) 상에 도시된 스케줄링 모드 중에 어느 하나의 모드를 선택하는 입력을 수신할 수 있고, 제어부(1170)는 선택된 스케줄링 모드에 따라 디바이스(400)가 동작하도록 제어할 수 있다.
또한, 화면(1210) 상에 도시된 바와 같이, 디바이스(400)는 디바이스(400) 내의 화면이 멀티 윈도우 영역으로 나눠진 경우, 각 영역에서 실행되는 OS에 대응되는 각 vGPU 가 GPU에 접근하는 시간에 대한 비율을 선택하는 메뉴(1230)를 표시할 수 있다. 화면(1210) 상에 도시된 바와 같이, 사용자 입력부(1160)는 좌측 윈도우에는 30%, 우측 윈도우에는 70%로 GPU에 접근하는 시간에 대한 비율을 입력받을 수 있다. 제어부(1170)는 입력 받은 비율에 따라 디바이스(400)가 동작하도록 제어할 수 있다.
화면(1210) 상에 표시되는 메뉴(1220,1230)의 형태나 종류는 다른 방식으로 표현될 수도 있는 바, 도면에 도시된 바와 같이 한정되지 않는다.
도 13은 디바이스(400)가 화면 상에 스케줄링 모드를 선택하기 위한 메뉴를 표시하는 일 예시를 나타낸다.
도 13(a)에서, 사용자는 디바이스(400)의 화면(1310) 상에서 소정의 펜으로 더블 클릭하는 입력을 수행할 수 있다. 제어부(1170)는 더블 클릭하는 입력에 반응하여, 스케줄링 모드로써 FG 지향 모드 및 BG 정지 모드를 선택하기 위한 메뉴(1315)를 화면(1310) 상에 표시되도록 제어할 수 있다. 이어서, 사용자 입력부(1160)는 FG 지향 모드 또는 BG 정지 모드를 클릭과 같은 방식으로 선택하는 입력을 수신할 수 있고, 제어부(1170)는 선택된 입력에 따라 디바이스(400)가 동작하도록 제어할 수 있다. 사용자가 화면(1310) 상에 입력을 수행하는 방식, 제어부(1170)가 화면(1310) 상에 메뉴(1315)를 표시하는 방식은 도 13(a)와 같이 한정되지 않고, 다른 방식으로도 가능하다.
도 13(b)에서, 사용자는 디바이스(400)의 2개의 영역으로 분할된 화면(1320) 상에서 2개의 손가락으로 동시에 터치하는 입력을 수행할 수 있다. 제어부(1170)는 사용자의 입력에 반응하여, 멀티 윈도우 스케줄링으로써, 좌측 윈도우와 우측 윈도우 각각에서 실행되는 OS의 커맨드가 GPU에 의해 처리되는 시간에 대한 비율을 선택하는 메뉴(1325)를 표시할 수 있다. 이어서, 사용자 입력부(1160)는 좌측 윈도우와 우측 윈도우 각각의 비율을 사용자로부터 입력 받을 수 있다. 제어부(1170)는 입력된 비율에 따라 디바이스(400)가 동작하도록 제어할 수 있다. 사용자가 화면(1320) 상에 입력을 수행하는 방식, 제어부(1170)가 화면(1320) 상에 메뉴(1325)를 표시하는 방식은 도 13(b)와 같이 한정되지 않고, 다른 방식으로도 가능하다.
도 14는 본 개시에 따른 디바이스(500)를 나타낸다.
디바이스(500)는 일 실시예에 따라, 호스트 OS(1511), 게스트 OS(1513), GPU(1540) 및 GPU 메디에이터(1530)를 포함할 수 있다. 도 14 에 도시된 디바이스(500)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 14에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
또한, 도 14의 호스트 OS(1511), 게스트 OS(1513), GPU(1540) 및 GPU 메디에이터(1530)는 도 1 및 도 3에서 설명한 내용을 포함하는 바, 중복되는 내용에 대해서는 설명을 생략하기로 한다.
GPU(1540)는 일 실시예에 따라, 메모리(1545)를 포함할 수 있다. 메모리(1545)는 호스트 OS(1511) 및 게스트 OS(1513)의 개수에 따라 복수의 공간으로 분할될 수 있다. 즉, 디바이스(500) 내의 호스트 OS(1511)와 게스트 OS(1513)가 존재한다면, 메모리(1545)는 호스트 OS(1511)에 대한 메모리 공간(호스트 메모리)과 게스트 OS(1513)에 대한 메모리 공간(게스트 메모리)으로 나눠질 수 있다.
주소 변환부(1535)는, 일 실시예에 따라, 호스트 OS(1511) 또는 게스트 OS(1513)가 vGPU(1531,1532)의 메모리에 접근하는 주소값을 vGPU(1531,1532)가 GPU(1540)의 메모리(1545)에 접근하는 주소값으로 변환할 수 있다. 일 실시예에 따라, 주소 변환부(1535)는 호스트 OS(1511)가 vGPU(1531)의 메모리에 제 1 주소값으로 접근하는 경우, 제 1 주소값을, vGPU(1531)가 GPU(1540)의 메모리(1545)의 호스트 메모리 공간에 접근하기 위한 제 2 주소값으로 변환할 수 있다. 또한, 주소 변환부(1535)는 vGPU(1531)가 메모리(1545)의 제 2 주소값으로 접근하도록 제어할 수 있다.
주소 변환부(1535)는 일 실시예에 따라, GPU(1540)의 설정 정보를 통해 메모리(1545)의 크기를 읽어낼 수 있다. 설정 정보의 예로는 PCI(peripheral component interconnect) configuration의 BAR(Base Address Register) 크기를 들 수 있다. 또한, 주소 변환부(1535)는 메모리(1545)의 크기와 OS들의 개수에 기초하여, 각 OS 마다 할당되는 메모리의 크기를 계산할 수 있고, 계산된 메모리의 크기를 각 OS에게 제공할 수 있다. 예를 들어, 주소 변환부(1535)는 메모리(1545)의 크기가 100이라는 정보를 읽어낼 수 있고, 게스트 OS(1513) 및 호스트 OS(1511)에게 할당되는 메모리의 크기가 50이라는 정보를 게스트 OS(1513) 및 호스트 OS(1515)에게 제공할 수 있다. 또한, 일 실시예에 따라, 주소 변환부(1535)는 각 OS마다 할당되는 메모리의 크기를 소정의 버퍼에 저장할 수 있고, 각 OS는 소정의 버퍼에 저장된 메모리의 크기를 읽어낼 수 있다.
일 실시예에 따라, 주소 변환부(1535)는 테이블을 이용하여, 호스트 OS(1511) 또는 게스트 OS(1513)가 vGPU(1531,1532)의 메모리에 접근하는 주소값에 대응되는 vGPU(1531,1532)가 GPU(1540)의 메모리(1545)에 접근하는 주소값을 검색할 수 있다. 도 14의 영역(1550)에 도시된 바와 같이, 테이블(1555)은 vGPU 메모리의 공간과 GPU 메모리의 공간을 서로 매핑하는 역할을 수행한다. 예를 들어, 메모리(1545)가 0에서 99까지의 주소값을 갖고, 메모리(1545) 내의 호스트 메모리의 공간은 0에서 49까지의 주소값을 메모리(1545) 내의 게스트 메모리의 공간은 50에서 99까지의 주소값을 갖을 수 있다. 호스트 OS(1511) 및 게스트 OS(1513) 각각이 vGPU(1531,1532)의 메모리 공간을 주소값 0에서 49로 접근하고자 하는 경우, 주소 변환부(1535)는, 테이블(1555)을 이용하여, 호스트 OS(1511)는 메모리(1545)를 주소값 0에서 49로 접근하도록, 게스트 OS(1513)는 메모리(1545)를 주소값 50에서 99로 접근하도록 제어할 수 있다.
또한, 일 실시예에 따라, 주소 변환부(1535)는 호스트 OS(1511) 또는 게스트 OS(1513)가 기 정해진 범위 외의 주소값으로 접근하는지 여부를 판단할 수 있다. 기 정해진 범위는 vGPU(1531,1532) 각각이 할당된 메모리의 범위가 될 수 있다. 일 실시예에 따라, 주소 변환부(1535)는 호스트 OS(1511) 또는 게스트 OS(1513)가 기 정해진 범위 외의 주소값으로 접근하는 경우, 호스트 OS(1511) 또는 게스트 OS(1513)에게 접근 실패했음을 알릴 수 있다.
따라서, 디바이스(500)는 주소 변환부(1535)를 구비함으로써, GPU 드라이버의 코드 수정이 필요 하지 않는 전 가상화(full-virtualized)를 구현할 수 있다.
도 15는 디바이스(500)가 주소 변환을 수행하는 일 실시예를 나타낸다.
도 15에 도시된 방법은, 도 14의 디바이스(500)의 각 구성요소에 의해 수행될 수 있고, 중복되는 내용에 대해서는 설명을 생략한다.
단계 s1510에서, 디바이스(500)는 일 실시예에 따라, vGPU의 메모리의 제 1 주소로 커맨드 명령을 전송할 수 있다.
단계 s1520에서, 디바이스(500)는 일 실시예에 따라, 제 1 주소에 대응되는 GPU의 메모리의 제 2 주소를 검색할 수 있다. 디바이스(500)는, vGPU의 메모리 공간과 GPU 메모리 공간을 서로 매핑하는 테이블을 이용하여, 제 1 주소에 대응되는 GPU의 메모리의 제 2 주소를 검색할 수 있다.
단계 s1530에서, 디바이스(500)는 일 실시예에 따라, 제 2 주소값이 기 정해진 범위를 벗어났는지 여부를 판단할 수 있다. 기 정해진 범위는 vGPU에 해당하는 메모리의 범위가 될 수 있다.
S1530에서, 디바이스(500)가 제 2 주소값이 기 정해진 범위를 벗어나지 않았다고 판단한 경우, 디바이스(500)는 GPU의 메모리의 제 2 주소로 커맨드 명령을 전송할 수 있다.(s1540)
S1540에서, 디바이스(500)가 제 2 주소값이 기 정해진 범위를 벗어났다고 판단한 경우, 디바이스(500)는 vGPU에 대응되는 OS에게 접근 실패했음을 알릴 수 있다.(s1550)
상기 살펴 본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "수단", "알고리즘", "요소"와 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (21)

  1. 물리적인 GPU(Graphics Processing Unit)를 가상화된 GPU(vGPU:virtualized GPU)로 구현하는 디바이스에 있어서,
    복수의 운영체제(OS:Operating System)들 각각으로부터 커맨드(command)들을 수신하는 복수의 vGPU들;
    상기 수신된 커맨드들이 상기 GPU에 의해 처리되는 순서 및 시간을 스케줄링(scheduling)하는 vGPU 스케줄러; 및
    상기 순서 및 시간을 스케줄링하는 스케줄링 모드를 선택하기 위한 메뉴를 화면 상에 표시하도록 제어하는 제어부를 포함하고,
    상기 vGPU 스케줄러는,
    상기 복수의 OS들 중 포어그라운드 OS(FG OS: Foreground OS)로부터의 커맨드가 우선적으로 처리되도록 상기 순서 및 시간을 스케줄링하고,
    상기 스케줄링 모드는 일반 스케줄링 모드, FG 지향 모드, BG 정지 모드, 직접 접근 모드, 또는 간접 접근 모드 중 적어도 하나를 포함하는, 디바이스.
  2. 제 1 항에 있어서,
    상기 복수의 vGPU들 중 제 1 vGPU가 상기 복수의 OS들 중 백그라운드 OS(BG OS: Background OS)로부터 커맨드를 수신하는 경우, 상기 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단하는 vGPU 모니터링부;를 더 포함하는, 디바이스.
  3. 제 2 항에 있어서,
    상기 vGPU 모니터링부가,
    상기 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상이라고 판단하는 경우,
    상기 vGPU 스케줄러는,
    상기 제 1 vGPU가 수신한 커맨드가 상기 GPU에 의해 처리되도록 상기 순서 및 시간을 스케줄링하는, 디바이스.
  4. 제 1 항에 있어서,
    상기 복수의 vGPU들 중 제 1 vGPU가 상기 복수의 OS들 중 BG OS로부터 커맨드를 수신하는 경우, 상기 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었는지 여부를 판단하는 타이머 모니터링부;를 더 포함하는, 디바이스.
  5. 제 4 항에 있어서,
    상기 타이머 모니터링부가,
    상기 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었다고 판단하는 경우,
    상기 제 1 vGPU는 소정의 데이터량의 커맨드를 처리하였음을 상기 BG OS에게 알려주는, 디바이스
  6. 제 1 항에 있어서,
    상기 FG OS가 호스트 OS(Host OS)인 경우,
    상기 vGPU 스케줄러가 상기 복수의 OS들 중 상기 호스트 OS 이외의 OS들의 커맨드를 스케줄링의 대상에서 제외하도록 제어하는 정지 명령부;를 더 포함하는, 디바이스.
  7. 제 6 항에 있어서,
    상기 호스트 OS의 커맨드를 제 1 vGPU가 수신하는 경우,
    상기 호스트 OS의 커맨드를 수신하는 대상을 상기 제 1 vGPU에서 상기 GPU로 변경하는 접근 모드 변경부;를 더 포함하는, 디바이스.
  8. 제 1 항에 있어서,
    상기 화면 상의 표시된 메뉴를 통해 상기 스케줄링 모드를 선택하는 사용자 입력을 수신하는 사용자 입력부;를 더 포함하는, 디바이스.
  9. 제 8 항에 있어서,
    상기 vGPU 스케줄러는,
    상기 사용자 입력에 의해 선택된 스케줄링 모드에 따라, 상기 순서 및 시간을 스케줄링하는, 디바이스.
  10. 제 1 항에 있어서,
    상기 복수의 OS들 중 제 1 OS가 제 1 vGPU의 메모리 내의 제 1 주소로 커맨드를 전달하는 경우, 상기 제 1 주소를 상기 GPU의 메모리에 접근하기 위한 제 2 주소로 변환하여, 상기 전달된 커맨드를 상기 GPU의 메모리의 제 2 주소에서 처리하도록 제어하는 주소 변환부;를 더 포함하는, 디바이스.
  11. 디바이스가 물리적인 GPU(Graphics Processing Unit)로부터 구현된 복수의 가상화된 GPU(vGPU:virtualized GPU)들에 대한 스케줄링을 수행하는 방법에 있어서,
    복수의 운영체제(OS:Operating System)들 각각의 커맨드(command)들을 상기 복수의 vGPU들이 수신하는 단계;
    상기 수신된 커맨드들이 상기 GPU에 의해 처리되는 순서 및 시간을 스케줄링(scheduling)하는 단계; 및
    상기 순서 및 시간을 스케줄링하는 스케줄링 모드를 선택하기 위한 메뉴를 화면 상에 표시하는 단계;를 포함하고,
    상기 스케줄링하는 단계는,
    상기 복수의 OS들 중 포어그라운드 OS(FG OS: Foreground OS)로부터의 커맨드가 우선적으로 처리되도록 상기 순서 및 시간을 스케줄링하고,
    상기 스케줄링 모드는 일반 스케줄링 모드, FG 지향 모드, BG 정지 모드, 직접 접근 모드, 또는 간접 접근 모드 중 적어도 하나를 포함하는, 방법.
  12. 제 11 항에 있어서,
    상기 스케줄링하는 단계는,
    상기 복수의 vGPU들 중 제 1 vGPU가 상기 복수의 OS들 중 백그라운드 OS(BG OS: Background OS)로부터 커맨드를 수신하는 경우, 상기 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상인지 여부를 판단하는 단계; 및
    상기 판단 결과, 상기 제 1 vGPU가 수신한 커맨드의 데이터량이 소정의 임계치 이상이라고 판단하는 경우, 상기 제 1 vGPU가 수신한 커맨드가 상기 GPU에 의해 처리되도록 상기 순서 및 시간을 스케줄링하는 단계;를 포함하는, 방법.
  13. 제 11 항에 있어서,
    상기 스케줄링하는 단계는,
    상기 복수의 vGPU들 중 제 1 vGPU가 상기 복수의 OS들 중 BG OS로부터 커맨드를 수신하는 경우, 상기 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었는지 여부를 판단하는 단계; 및
    상기 판단 결과, 상기 제 1 vGPU가 수신한 커맨드가 처리되지 않은 시간이 기 설정된 시간보다 경과되었다고 판단하는 경우, 상기 제 1 vGPU는 소정의 데이터량의 커맨드를 처리하였음을 상기 BG OS에게 알려주는 단계를 포함하는, 방법.
  14. 제 11 항에 있어서,
    상기 스케줄링하는 단계는,
    상기 FG OS가 호스트 OS(Host OS)인 경우, 상기 복수의 OS들 중 상기 호스트 OS 이외의 OS들의 커맨드를 스케줄링의 대상에서 제외하도록 제어하는 단계;를 더 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 스케줄링하는 단계는,
    상기 호스트 OS의 커맨드를 제 1 vGPU가 수신하는 경우, 상기 호스트 OS의 커맨드를 수신하는 대상을 상기 제 1 vGPU에서 상기 GPU로 변경하는 단계를 더 포함하는, 방법.
  16. 제 11 항에 있어서,
    상기 화면 상의 표시된 메뉴를 통해 상기 스케줄링 모드를 선택하는 사용자 입력을 수신하는 단계;를 더 포함하는, 방법.
  17. 제 16 항에 있어서,
    상기 사용자 입력에 의해 선택된 스케줄링 모드에 따라, 상기 순서 및 시간을 스케줄링하는 단계를 더 포함하는, 방법.
  18. 제 11 항에 있어서,
    상기 복수의 OS들 중 제 1 OS가 제 1 vGPU의 메모리 내의 제 1 주소로 커맨드를 전달하는 경우, 상기 제 1 주소를 상기 GPU의 메모리에 접근하기 위한 제 2 주소로 변환하여, 상기 전달된 커맨드를 상기 GPU의 메모리의 제 2 주소에서 처리하도록 제어하는 단계;를 더 포함하는, 방법.
  19. 상기 제 11 항 내지 제 18 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  20. 제1항에 있어서,
    상기 일반 스케줄링 모드는 기본 모드로 설정되고,
    상기 FG 지향 모드는 FG OS로부터 커맨드를 수신하는 vGPU가 우선적으로 GPU에 접근하여 커맨드를 처리하도록 설정되고,
    상기 BG 정지 모드는 FG OS가 호스트 OS인 경우 BG OS에 대응되는 vGPU를 스케줄링의 대상에서 제외하도록 설정되고,
    상기 직접 접근 모드는 FG OS로부터의 커맨드를 GPU로 곧바로 수신하도록 설정되고,
    상기 간접 접근 모드는 FG OS로부터의 커맨드를 GPU 메디에이터를 통해 GPU가 수신하도록 설정되는 것인, 디바이스.
  21. 제11항에 있어서,
    상기 일반 스케줄링 모드는 기본 모드로 설정되고,
    상기 FG 지향 모드는 FG OS로부터 커맨드를 수신하는 vGPU가 우선적으로 GPU에 접근하여 커맨드를 처리하도록 설정되고,
    상기 BG 정지 모드는 FG OS가 호스트 OS인 경우 BG OS에 대응되는 vGPU를 스케줄링의 대상에서 제외하도록 설정되고,
    상기 직접 접근 모드는 FG OS로부터의 커맨드를 GPU로 곧바로 수신하도록 설정되고,
    상기 간접 접근 모드는 FG OS로부터의 커맨드를 GPU 메디에이터를 통해 GPU가 수신하도록 설정되는 것인, 방법.
KR1020140188642A 2014-12-24 2014-12-24 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스 KR102301230B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140188642A KR102301230B1 (ko) 2014-12-24 2014-12-24 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스
US14/974,476 US10235733B2 (en) 2014-12-24 2015-12-18 Device and method for performing scheduling for virtualized graphics processing units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140188642A KR102301230B1 (ko) 2014-12-24 2014-12-24 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스

Publications (2)

Publication Number Publication Date
KR20160078029A KR20160078029A (ko) 2016-07-04
KR102301230B1 true KR102301230B1 (ko) 2021-09-10

Family

ID=56164793

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140188642A KR102301230B1 (ko) 2014-12-24 2014-12-24 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스

Country Status (2)

Country Link
US (1) US10235733B2 (ko)
KR (1) KR102301230B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016145632A1 (en) * 2015-03-18 2016-09-22 Intel Corporation Apparatus and method for software-agnostic multi-gpu processing
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
JP6876235B2 (ja) * 2016-09-27 2021-05-26 富士フイルムビジネスイノベーション株式会社 電子装置及び画像処理装置
KR102092459B1 (ko) * 2018-06-20 2020-03-23 한국과학기술원 컨테이너 기반 가상화 환경에서 gpu 메모리 자원 관리 및 스케줄링 방법 및 시스템
JP7196439B2 (ja) * 2018-07-03 2022-12-27 株式会社デンソー 仮想化環境におけるデバイスへのアクセス方法
WO2020056620A1 (en) * 2018-09-19 2020-03-26 Intel Corporation Hybrid virtual gpu co-scheduling
US11113782B2 (en) * 2019-10-15 2021-09-07 Vmware, Inc. Dynamic kernel slicing for VGPU sharing in serverless computing systems
CN110930361B (zh) * 2019-10-22 2022-03-25 西安理工大学 一种虚实物体遮挡检测方法
US11934854B2 (en) * 2020-12-29 2024-03-19 VMware LLC Placing virtual graphics processing unit (GPU)-configured virtual machines on physical GPUs supporting multiple virtual GPU profiles

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130038614A1 (en) * 2011-08-12 2013-02-14 Microsoft Corporation Managing multiple gpu-based rendering contexts
US20140078144A1 (en) 2012-09-14 2014-03-20 Squee, Inc. Systems and methods for avatar creation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
US9164923B2 (en) 2011-07-01 2015-10-20 Intel Corporation Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform
US8941670B2 (en) 2012-01-17 2015-01-27 Microsoft Corporation Para-virtualized high-performance computing and GDI acceleration
US20140298347A1 (en) * 2013-03-13 2014-10-02 Samsung Electronics Co., Ltd. Computing system with resource management mechanism and method of operation thereof
US9390462B2 (en) 2013-03-15 2016-07-12 Intel Corporation Memory mapping for a graphics processing unit
US20140310484A1 (en) 2013-04-16 2014-10-16 Nvidia Corporation System and method for globally addressable gpu memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130038614A1 (en) * 2011-08-12 2013-02-14 Microsoft Corporation Managing multiple gpu-based rendering contexts
US20140078144A1 (en) 2012-09-14 2014-03-20 Squee, Inc. Systems and methods for avatar creation

Also Published As

Publication number Publication date
US20160189332A1 (en) 2016-06-30
KR20160078029A (ko) 2016-07-04
US10235733B2 (en) 2019-03-19

Similar Documents

Publication Publication Date Title
KR102301230B1 (ko) 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스
US10628216B2 (en) I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status
KR101399161B1 (ko) 멀티-환경 운영 체제를 개시하기 위한 시스템 및 방법
KR101702728B1 (ko) 멀티-환경 운영 체제
US8868899B2 (en) System and method for switching between environments in a multi-environment operating system
EP2475204B1 (en) Apparatus and method for adaptively operating an application program
EP3040804B1 (en) Electronic device for controlling power and method therefor
US20160048412A1 (en) Method and apparatus for switching applications
US10522111B2 (en) Method and electronic apparatus for providing composition screen by composing execution windows of plurality of operating systems
KR20090115131A (ko) 미디어 장치에서의 다중 운영 체제의 지원
EP3133481B1 (en) Terminal device display method and terminal device
KR20140027353A (ko) 이머시브 애플리케이션으로서의 데스크탑
WO2018045934A1 (zh) 应用进程的管理方法和终端设备
EP3495950A1 (en) Method and device for managing background applications of terminal
US10101875B2 (en) Computer system and control method thereof capable of changing performance mode using dedicated button
CN108241527B (zh) 一种任务调度方法及电子设备
KR102282365B1 (ko) Os들의 화면을 통합하여 표시하는 방법 및 장치
KR20140043360A (ko) 이머시브 쉘 및 애플리케이션 쉘의 디스플레이
US10467023B2 (en) System and method of interactive splash screen in embedded environments
WO2013035246A1 (ja) 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路
KR20140076185A (ko) 복수의 운영체제 동시구동이 가능한 모바일 디바이스와 그 구동방법
CN113535251A (zh) 一种线程管理方法及装置
CN108762838B (zh) 应用程序预加载方法、装置、存储介质及终端
CN111290837B (zh) 一种构建轻量级虚拟化系统的方法
CN111857902B (zh) 应用的显示方法、装置、设备和可读存储介质

Legal Events

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