KR101634500B1 - 미디어 작업부하 스케줄러 - Google Patents

미디어 작업부하 스케줄러 Download PDF

Info

Publication number
KR101634500B1
KR101634500B1 KR1020150111226A KR20150111226A KR101634500B1 KR 101634500 B1 KR101634500 B1 KR 101634500B1 KR 1020150111226 A KR1020150111226 A KR 1020150111226A KR 20150111226 A KR20150111226 A KR 20150111226A KR 101634500 B1 KR101634500 B1 KR 101634500B1
Authority
KR
South Korea
Prior art keywords
media
gpu
workload
media workload
feature
Prior art date
Application number
KR1020150111226A
Other languages
English (en)
Other versions
KR20150096639A (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 인텔 코포레이션
Publication of KR20150096639A publication Critical patent/KR20150096639A/ko
Application granted granted Critical
Publication of KR101634500B1 publication Critical patent/KR101634500B1/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42607Internal components of the client ; Characteristics thereof for processing the incoming bitstream
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42653Internal components of the client ; Characteristics thereof for processing graphics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Debugging And Monitoring (AREA)

Abstract

미디어 작업부하를 스케줄링하는 방법 및 시스템이 개시된다. 상기 방법은 상기 미디어 작업부하의 특징을 모델링하는 단계를 포함한다. 상기 미디어 작업부하의 GPU 이용율 및 메모리 대역폭이 결정될 수 있다. 또한, 상기 GPU 이용율 및 메모리 대역폭을 조절하기 위해 상기 미디어 작업부하의 특징을 변경함으로써 상기 미디어 작업부하가 스케줄링될 수 있다.

Description

미디어 작업부하 스케줄러{MEDIA WORKLOAD SCHEDULER}
본 발명은 일반적으로 작업부하(workload)를 조절하는데 관한 것이다. 특히, 본 발명은 그래픽 처리 유닛(graphics processing unit (GPU))에서 미디어 작업부하를 조절하는데 관한 것이다.
미디어 작업부하는 비교적 크며 전적으로 GPU 시간 및 메모리 대역폭을 이용할 수 있다. 미디어 작업부하는 카메라 또는 비디어 플레이어와 같은 전자 기기의 미디어 컴포넌트들로부터 미디어 애플리케이션에 의해 획득된 하나 이상의 데이터 스트림을 포함한다. 본 명세서에서 사용된 바와 같이, 미디어는 GPU에 의해 처리된 모든 데이터를 지칭한다. 예를 들면, 태블릿 및 스마트폰은 비디오 캡처를 지원하기 위해 적어도 하나의 전방 카메라와 적어도 하나의 후방 카메라의 두 대 이상의 카메라를 가질 수 있다. 카메라들은 동시에 사용될 수 있다. 각각의 카메라는 자체의 데이터 스트림을 가지며, 각 데이터 스트림마다 데이터 스트림을 인코딩하고 디코딩하는 처리를 포함한다. 예를 들면, 컴퓨팅 디바이스는 다수의 참가자들과 화상 회의를 위해 사용될 수 있으며, 이때 각각의 참가자는 인코드되고 디코드되는 자신의 데이터 스트림을 갖는다.
도 1은 본 발명에 따라서 작업부하를 스케줄링하는데 사용될 수 있는 컴퓨팅 디바이스의 블록도이다.
도 2는 본 발명에 따라서 미디어 작업부하를 스케줄링하는데 사용될 수 있는 시스템의 개략도이다.
도 3은 본 발명에 따라서 미디어 작업부하를 스케줄링하기 위한 방법을 도시하는 프로세스 흐름도이다.
도 4a는 본 발명에 따라서 미디어 작업부하를 스케줄링하기 위한 방법을 도시하는 프로세스 흐름도이다.
도 4b는 본 발명에 따라서 특징(features)을 조절하기 위한 방법을 도시하는 프로세스 흐름도이다.
도 5는 본 발명에 따라서 미디어 작업부하를 스케줄링하기 위한 코드를 저장하는 유형의 비실행 컴퓨터-판독가능 매체를 도시하는 블록도이다.
도 6은 공유된 물리적 메모리를 구현하기 위한 예시적인 실시예의 블록도이다.
도 7은 도 6의 시스템이 구현될 수 있는 소형 폼 팩터 다비이스(700)의 개략도이다.
명세서와 도면 전체에서 유사한 컴포넌트 및 특징을 참조하기 위해 동일한 참조부호가 사용된다. 100번대 번호는 본래 도 1에 도시된 특징들을 지칭하며 200번대 번호는 본래 도 2에 도시된 특징들을 지칭하며, 나머지도 그러하다.
GPU는 미디어 재생 및 3D 애플리케이션과 같은 각종 미디어 기능을 위해 사용될 수 있다. GPU의 많은 용도는 다수의 데이터 스트림을 인코딩하고 디코딩하는 것을 포함한다. 본 명세서에서 사용된 바와 같이, 미디어는 온라인 비디오 브로드캐스트 또는 화상 회의 이미지와 같은 각종 데이터 스트림으로 구성된 모든 그래픽 콘텐츠를 지칭한다. 전술한 바와 같이, GPU의 미디어 작업부하는 비교적 많을 수 있다. 미디어 작업부하가 소정 임계치를 초과할 때, 병목 현상이 발생할 수 있다. 임계치는 GPU의 최대 처리 용량을 포함할 수 있다. 병목 현상은 GPU에서 데이터 처리의 중단을 유발할 수 있고, 미디어 기능이 저하되는 결과를 가져온다. 예를 들면, 비디오의 재생은 훼손될 수 있으며 비디오 재생의 뒤처짐(lag), 또는 재생 중 여러 번 시작과 중단을 포함할 수 있다. 따라서, 본 명세서에서 기술된 실시예는 미디어 작업부하의 스케줄링에 관련한다. 미디어 작업부하는 GPU 이용율 및 메모리 대역폭에 따라 자동 조절될 수 있다.
MPEG(Moving Picture Experts Group) 및 H.264에 의한 표준과 같은 비디오 표준은 비디오 스트림을 프레임별로 처리함으로써 비디오 스트림을 압축한다. 프레임은 화상(picture)과 유사한 비디오의 정지 이미지이다. 각각의 프레임은 매크로블록으로 세분될 수 있으며, 매크로블록은 또 다시 슬라이스로 나뉘어질 수 있다. 매크로블록은 전형적으로 픽셀들의 블록이다. 예를 들면, H.264 표준에서, 매크로블록은 16x16 픽셀 크기이다. 슬라이스는 독립적으로 인코딩될 수 있고 또는 디코딩될 수 있는 프레임 내 데이터 단위이다. 그래서, 만일 프레임의 한 슬라이스가 유실되더라도, 그 프레임의 다른 슬라이스들은 여전히 디코딩가능하다. 실시예에서, 슬라이스들은 이들이 화상 내 다른 슬라이스들과 독립적인 것처럼 인코딩 및 디코딩을 병행하여 사용될 수 있다. 슬라이스 헤더는 프레임 내 슬라이스들의 적어도 일부분에 대한 어드레스 정보를 포함할 수 있다. 이 어드레스 정보는 슬라이스들의 시작 위치의 식별을 가능하게 한다. 슬라이스 헤더에는 슬라이스와 연관된 어떤 필터 정보뿐만 아니라 MPEG 또는 H.264와 같은 슬라이스의 코딩 방식을 포함하는 다른 정보가 포함될 수 있다.
하기 설명과 청구범위에서, 용어 "결합된(coupled)" 및 "연결된(connected)"과 함께 이들의 파생어가 사용될 수 있다. 이러한 용어는 서로의 동의어로서 의도하려는 것이 아님을 이해하여야 한다. 그 보다는 특정 실시예에서, "연결된"은 둘 이상의 구성요소가 서로와 직접적인 물리적 또는 전기적 접촉을 하고 있다는 것을 나타내는데 사용될 수 있다. "결합된"은 둘 이상의 구성요소들이 직접적인 물리적 또는 전기적 접촉하고 있다는 것을 의미할 수 있다. 그러나, "결합된"은 또한 둘 이상의 구성요소들이 서로와 직접 접촉하고 있지 않지만 그래도 여전히 서로와 협동 또는 상호작용하고 있다는 것을 의미할 수도 있다.
일부 실시예는 하드웨어, 펌웨어 및 소프트웨어 단독으로 또는 이들의 조합으로 구현될 수 있다. 일부 실시예는 본 명세서에서 기술된 동작을 수행하도록 컴퓨팅 플랫폼에 의해 판독되고 실행될 수 있는 머신-판독가능 매체에 저장된 명령어로서 구현될 수도 있다. 머신-판독가능 매체는 정보를 머신, 예를 들면, 컴퓨터에 의해 판독가능한 형태로 저장 또는 전송하기 위한 모든 메커니즘을 포함할 수 있다. 예를 들면, 머신-판독가능 매체는 그 중에서 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 소자, 또는 전기, 광학, 음향 또는 다른 형태의 전파된 신호, 예를 들면, 반송파(carrier waves), 적외선 신호, 디지털 신호, 또는 신호를 전송 및/또는 수신하는 인터페이스를 포함할 수 있다.
실시예는 구현예 또는 일예이다. 명세서에서 "실시예", "일 실시예", "일부 실시예", "여러 실시예" 또는 다른 실시예"라는 언급은 실시예들과 관련하여 기술된 특정한 특징, 구조 또는 특성이 적어도 일부 실시예에 포함되어 있지만, 반드시 본 발명의 모든 실시예에 포함된 것은 아니라는 것을 의미한다. "실시예", "일 실시예", 또는 "일부 실시예"가 여러번 나타난다 하여도 반드시 동일한 실시예를 언급하는 것은 아니다. 실시예의 구성요소 또는 양태는 다른 실시예의 구성요소 또는 양태와 조합될 수 있다.
본 명세서에 기술되고 예시된 컴포넌트, 특징, 구조, 특성들 모두가 특정 실시예 또는 실시예들에 포함되어야 하는 것은 아니다. 명세서에서, 예를 들면, 하나의 컴포넌트, 특징, 구조 또는 특성이 "포함될 수도 있다(may)", "포함될지도 모른다(might)", "포함될 수 있다(can)", 또는 "될 수도 있다(could)"라고 언급하는 경우, 그 특정 컴포넌트, 특징, 구조, 또는 특성은 포함되어야 하는 것은 아니다. 만일 명세서 또는 청구범위에서 "한" 또는 "하나의" 구성요소를 언급하는 경우, 이것은 단지 하나의 구성요소만이 있음을 의미하지 않는다. 명세서 또는 청구범위에서 "추가의" 구성요소를 언급하는 경우, 이것은 부가적인 구성요소가 하나 보다 많이 있음을 배제하지 않는다.
비록 일부 실시예가 특정 구현예를 참조하여 기술될지라도, 일부 실시예에 따라서 다른 구현예가 가능함을 주목할 필요가 있다. 그 외에, 도면에 예시된 및/또는 본 명세서에서 기술된 회로 구성요소 또는 다른 특징의 배열 및/또는 순서는 예시되고 기술된 특정 방법으로 배열될 필요는 없다. 일부 실시예에 따라서 다른 많은 배열이 가능하다.
도면에 도시된 각각의 시스템에서, 일부 사례의 구성요소들은 제시된 구성요소가 상이한 및/또는 유사할 수도 있음을 시사하기 위해 각기 동일한 참조부호 또는 다른 참조부호를 가질 수도 있다. 그러나, 구성요소는 융통성 있게 상이한 구현예를 능히 가질 수 있으며 본 명세서에 도시되고 기술된 일부 또는 모든 시스템들과 더불어 작동할 수 있다. 도면에 도시된 각종 구성요소는 동일할 수도 또는 상이할 수도 있다. 어느 하나는 제1 구성요소로서 지칭되며 제2 구성요소라 불리는 것은 임의적이다.
도 1은 본 발명의 실시예에 따라서 작업부하를 스케줄링하는데 사용될 수 있는 컴퓨팅 디바이스(100)의 블록도이다. 컴퓨팅 디바이스(100)는, 예를 들면, 그 중에서도 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 모바일 디바이스, 서버, 또는 셀룰러 폰을 포함할 수 있다. 컴퓨팅 디바이스(100)는 저장된 명령어를 실행하도록 구성된 중앙 처리 유닛(CPU)(102)과 CPU(102)에 의해 실행가능한 명령어를 저장하는 메모리 디바이스(104)를 포함한다. CPU(102)는 싱글 코어 프로세서, 멀티 코어 프로세서, 컴퓨팅 클러스터, 또는 어떤 개수의 다른 구성일 수 있다. 더욱이, 컴퓨팅 디바이스(100)는 하나 보다 많은 CPU(102)를 포함할 수 있다. CPU(102)에 의해 실행되는 명령어는 미디어 작업부하를 스케줄링하는데 사용될 수 있다.
컴퓨팅 디바이스(100)는 또한 그래픽 처리 유닛(GPU)(104)을 포함할 수 있다. 도시된 바와 같이, CPU(102)는 버스(106)를 통해 GPU(104)에 연결될 수 있다. 그러나, 일부 실시예에서, CPU(102) 및 GPU(104)는 동일한 다이(die)에 배치된다. GPU(104)는 컴퓨팅 디바이스(100) 내에서 몇 가지 그래픽 동작이더라도 수행하도록 구성될 수 있다. 예를 들면, GPU(104)는 그래픽 이미지, 그래픽 프레임, 또는 비디오 등을 렌더링 또는 조작하여 컴퓨팅 디바이스(100)의 사용자에게 디스플레이되도록 구성될 수 있다.
GPU(104)는 또한 샘플링 엔진(108), 3D 엔진(110), 및 미디어 엔진(112)을 포함할 수 있다. 엔진은 GPU(104)에 전달된 데이터의 병행 처리를 위해 사용될 수 있는 GPU(104)의 컴포넌트이다. 비록 세개의 GPU 엔진이 도시되어 있을 지라도, GPU는 몇 개의 엔진이라도 포함할 수 있다. 예를 들면, GPU(104)는 렌더링 엔진 및 멀티-포맷 코덱(CODEC(MFX)) 엔진을 포함할 수 있다. 컴퓨팅 디바이스(100)에서 도시된 바와 같이, 3D 엔진(110)은 다른 형태의 미디어를 처리하는 미디어 엔진(112)과 병행하여 3D 이미지 데이터를 처리할 수 있다. 샘플링 엔진(108)은 GPU 카운터(114)로부터 데이터를 수집할 수 있다. 부가적으로, 실시예에서, 렌더링 엔진은 3D 이미지 데이터를 처리할 수 있는 반면 MFX 엔진은 GPU(104)에 전송된 데이터를 디코드한다. GPU 카운터(114)는 GPU(104)와 관련된 성능 데이터(performance data)를 수집할 수 있다. 특히, GPU 카운터(114)는 GPU(104)의 부하 및 처리량을 측정할 수 있다. 샘플링 엔진(108)은 GPU 카운터(114)로부터 GPU 성능 데이터를 커널 모드 드라이버(kernel mode driver (KMD(116))에 전송할 수 있다. KMD(116)는 GPU 카운터(114)로부터의 데이터에 기반하여 GPU 이용율 및 메모리 대역폭을 계산할 수 있다.
컴퓨팅 디바이스(100)는 하나 이상의 카메라(118)를 포함한다. 전술한 바와 같이, 셀룰러 폰은 두대의 전방 카메라와 하나의 후방 카메라를 가질 수 있다. 다수의 카메라는 비디오를 캡처하는데 사용될 수 있다. 또한, 컴퓨팅 디바이스(100)는 메모리 디바이스(120)를 포함할 수 있다. 메모리 디바이스(120)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 어떤 다른 적합한 메모리 시스템을 포함할 수 있다. 예를 들면, 메모리 디바이스(120)는 다이나믹 랜덤 액세스 메모리(DRAM)를 포함할 수도 있다.
메모리 디바이스(120)는 미디어 특징 모델링 데이터베이스(media feature modeling database)(122)를 포함한다. 미디어 특징 모델링 데이터베이스(122)는 실시예에 따라서 미디어 작업부하의 GPU 이용율 및 메모리 대역폭을 조절하기 위하여 변경될 수 있는 일련의 특징을 포함한다. 미디어 특징 모델링 데이터베이스(122)는 오프라인에서 또는 실시간으로 모델링될 수 있다.
미디어 특징 모델링 데이터베이스(122)에는 여러 특징들이 포함될 수 있다. 각각의 특징은 디코딩, 비디오 처리, 인코딩, 또는 메모리 액세스와 같은 미디어 작업부하의 일부 양상을 변경할 수 있다. 실시예에서, 미디어 작업부하는 CODEC을 이용하여 디코드되고 인코드될 수 있다. 따라서, 디코딩 특징 또는 인코딩 특징은 해당하는 CODEC을 변경함으로써 변경될 수 있다.
일예에서, 미디어 작업부하의 디코딩 양상은 슬라이스 헤더를 이용한 인-루프 디-블록킹(disabling in-loop de-blocking)을 디스에이블함으로써 또는 디코딩 동안 양방향 예측(bi-predicted) 프레임(B-프레임) 또는 예측 프레임(P-프레임)을 스킵함으로써 변경될 수 있다. 인-루프 디-블록킹은 블록 코딩 기술이 사용될 때 슬라이스들 사이에서 만들어질 수 있는 선명한 에지들을 스무딩 처리(smoothing)함으로써 비디오의 비주얼 품질 및 예측 성능을 개선시키기 위해 미디어 재생을 디코딩할 때 각 슬라이스에 적용되는 비디오 필터이다. 전술한 바와 같이, 슬라이스는 인코드 또는 디코드되는 각 프레임 내 데이터 단위이다. 각 슬라이스는 슬라이스에 관한 정보, 이를 테면, 그 중에서도 그 슬라이스의 인코딩 또는 디코딩 포맷을 가진 헤더를 포함할 수 있다. 인-루프 디-블록킹은 각 슬라이스의 헤더에 포함된 디-블록킹 필터 정보를 제거함으로써 디스에이블될 수 있다. 이러한 특징을 디스에이블함으로써, 디코딩에 사용된 미디어 작업부하의 일부분이 줄어들 수 있다.
디코딩하는데 사용된 미디어 작업부하의 부분은 또한 미디어 작업부하의 비디오를 디코딩하는 동안 B-프레임 또는 P-프레임을 스킵함으로써 줄어들 수 있다. 전술한 바와 같이, 각각의 프레임은 다른 프레임들과 연속하여 디스플레이되어 전체 비디오를 렌더링하는 정지 화상이다. 예측된 화상 프레임(P-프레임) 및 양방향 예측된 프레임(B-프레임)을 포함하여 전체 비디오를 압축하기 위하여 각종 프레임 형태가 사용될 수 있다. P-프레임은 이전 프레임과 비교하여 발생하는 이미지 내 변동을 인코드한다. 그러므로, 비디오가 정지 배경을 가로질러 반동하는 공(ball)인 경우, 정지 배경을 인코딩하지 않고 그 공의 움직임이 인코딩된다. 그래서 인코딩된 파일의 크기는 정지 배경을 포함하는 전체 프레임을 인코딩하는 것과 비교할 볼 때 줄어든다. B-프레임은 현재 프레임과 이전 프레임을 비교하고, 비디오 정보를 가지고 인코딩하기 위하여 두 프레임들 간의 변동을 인코딩한다. 그래서, 비디오가 정지 배경을 가로지르는 공일 때, 정지 배경을 인코딩하지 않고 그 공의 변동된 위치가 인코딩된다. P-프레임 또는 B-프레임을 이용하여 비디오가 인코딩될 때, 미디어 작업부하를 줄이기 위하여 비디오를 디코딩할 때 여러 P-프레임 또는 B-프레임이 스킵될 수 있다. 비디오를 디코딩할 때 비순차적인 여러 P-프레임 또는 B-프레임은 미디어 작업부하의 GPU 이용을 줄일 수 있으며 대체로 사람의 눈에는 검출가능하지 않다.
이것으로 제한되지는 않지만 고해상도 재생, WiDi 재생을 포함하는 각종 사용 중에 또는 화상 회의 중에 디코딩이 발생할 수도 있다. 또한, 예에서, 인-루프 디-블록킹은 디코딩 동안 B-프레임 또는 P-프레임을 스킵하기 전에 디스에이블된다. 인-루프 디-블록킹이 디스에이블될 때, 비디오 품질의 저하는 디코딩 중에 B-프레임 또는 P-프레임을 스킵할 때 발생하는 비디오 품질의 저하에 비교하면 전형적으로 매우 작다. 따라서, 일차로 인-루프 디-블록킹을 디스에이블하는 것이 디코딩 중에 B-프레임 또는 P-프레임을 스킵할 때의 비디오 품질의 저하와 비교할 때 비디오 품질에 적은 영향을 미치기 때문에 바람직할 수 있다.
미디어 작업부하를 조절하기 위하여 하나 이상의 비디오 처리 특징, 이를 테면, 이미지 안정화(image stabilization), 프레임 레이트 변환, 감마 보정 향상(gamma correction enhancement), 스킨 톤 향상(skin tone enhancement), 프레임 레이트 저감, 및 프레임 크기가 또한 변경될 수 있다. 예를 들면, 데이터의 프레임 레이트 또는 프레임 크기를 줄임으로써, GPU 이용율이 줄어들 수 있고, 그럼으로써 GPU가 사용자에 의해 인식되는 미디어 재생의 저하 없이 데이터 스트림을 처리하는 것이 가능해진다. 이것으로 제한되지 않지만 고해상도 재생, WiDi 재생을 포함하는 각종 사용 중에 또는 화상 회의 중에 비디오 처리가 발생한다. 예에서, 비디오 처리 특징이 변경될 때, 다른 비디오 처리 특징을 디스에이블하기 전에 프레임 레이트가 디스에이블될 수 있다. 이것은 전형적으로 GPU 파이프라인 내에서 지루한 과정이기 때문이다. 프레임 레이트 변환이 디스에이블된 이후, 이미지 안정화가 디스에이블되어 미디어 작업부하를 더 줄여줄 수 있다. 이미지 안정화 또한 GPU 시간의 많은 부분을 차지할 수 있다. 이미지 안정화가 디스에이블된 후 감마 보정 증대 및 스킨 톤 증대가 디스에이블될 수 있다. 마지막으로, 예에서, 프레임 레이트 저감 및 프레임 크기와 같은 나머지 특징들이 디스에이블될 수 있다. 전술한 순서대로 비디오 처리 특징들을 디스에이블함으로써, 특징들은 GPU 이용율을 줄이면서도 이미지 품질에는 최소한의 영향을 미치는 방식으로 디스에이블될 수 있다.
비트 레이트, 움직임 추정, 및 매크로블록 형태와 같은 인코딩 특징들은 비디오 신호를 인코드하는데 사용된 미디어 작업부하의 부분을 조절하기 위하여 변경될 수 있다. 상세히 말해서, 인코딩함으로써 처리되는 데이터의 비트 레이트와 같은 특징은 줄어들 수 있는 한편, 플래시 미디어 인코딩(flash media encoding (FME)) 및 계층적 움직임 추정(hierarchical motion estimation (HME))과 같은 움직임 추정 기술은 인코딩으로 인한 높은 GPU 이용에 대응하여 턴온 또는 턴오프될 수 있다. 매크로블록 형태가 또한 변경될 수 있다. 예를 들면, 매크로블록은 16x16 픽셀 또는 8x8 픽셀처럼 상이한 크기를 가질 수 있다.
예에서, 인코딩 동안, 비디오 레이트는 미디어 작업부하의 다른 특징들을 조절하기 전에 낮추어질 수 있다. 비트 레이트는 다량의 GPU 시간을 소모할 수 있으며, 비트 레이트를 낮추면 인코딩하는데 사용된 GPU 시간을 감소시킬 수 있다. 예에서, 비트 레이트가 낮추어진 후, 움직임 추정 복잡도가 낮추어질 수 있고, 그럼으로써 움직임 추정에 사용된 GPU 시간을 줄일 수 있다. 마지막으로, 예에서, 움직임 추정 복잡도가 낮추어진 후, 미디어 작업부하를 변경하기 위하여 매크로블록 형태가 변경될 수 있다. 비디오 처리 특징들과 유사하게, 전술한 순서대로 인코딩 특징들을 디스에이블함으로써, 특징들은 GPU 이용율을 줄이면서 이미지 품질에는 최소의 영향을 미치는 방식으로 디스에이블될 수 있다.
메모리 대역폭 또한 미디어 작업부하의 특징들을 변경함으로써 줄어들 수 있다. 예를 들면, 일부의 작업부하는 메모리의 대부분을 사용할 수 있는 반면, 다른 작업부하는 메모리를 덜 사용한다. 작업부하는 데이터가 메모리로부터 검색될 때 이용가능한 메모리의 대역폭에 의해 제한될 수 있다. 따라서, GPU에서 실행 단위 쓰레드들의 개수를 줄임으로써, 미디어 작업부하가 줄어듦므로 제한된 메모리 대역폭의 결과로서의 어떤 지터, 뒤처짐(lag) 또는 GPU 성능의 프리즈(freeze)를 방지할 수 있다. 메모리 대역폭에 영향을 미치는 다른 특징들 또한 변경될 수 있다. 예에서, 메모리 대역폭에 영향을 미치는 특징들은 대부분의 메모리 대역폭을 사용하는 특징들이 나머지 특징들에 앞서 디스에이블되는 순서로 변경될 수 있다.
메모리 디바이스(120)는 또한 GPU 및 메모리 입력에 따라 작업부하를 조절하는 작업부하 스케줄러(124)를 포함할 수 있다. 실시예에서, 작업부하 스케줄러(124)는 미디어 작업부하의 어느 특징을 실시간으로 변경할지를 결정하기 위해 샘플링 엔진(108) 및 미디어 특징 모델링 데이터베이스(122)와 통신할 수 있다. 이러한 방식으로, 사용자에 의해 인식되는 GPU의 성능을 훼손시키지 않고 GPU의 사용을 극대화시킬 수 있는 GPU 이용율 및 메모리 대역폭이 성취된다. 작업부하는 작업부하 스케줄러(124)로부터 전달되어 도 2에서 설명되는 바와 같이 처리되고 그런 다음 GPU(104)에 전달된다.
컴퓨팅 디바이스(100)는 스토리지(126)를 포함할 수 있다. 스토리지(126)는 하드 드라이브, 광 드라이브, 썸드라이브(thumbdrive), 드라이브 어레이, 또는 이들의 모든 조합과 같은 물리적 메모리이다. 스토리지(126)는 또한 원격 스토리지 드라이브를 포함할 수 있다. 스토리지는 또한 하나 이상의 미디어 애플리케이션(128)을 포함할 수 있다.
CPU(102)는 또한 버스(106)를 통해 컴퓨팅 디바이스(100)를 하나 이상의 I/O 디바이스(132)에 연결하도록 구성된 입/출력(I/O) 디바이스(132)에 연결될 수 있다. I/O 디바이스(132)는, 예를 들면, 키보드 및 포인팅 디바이스를 포함할 수 있고, 포인팅 디바이스는 그 중에서도 터치패드 또는 터치스크린을 포함할 수 있다. I/O 디바이스(132)는 컴퓨팅 디바이스(100)의 빌트-인 컴포넌트일 수 있거나 외부에서 컴퓨팅 디바이스(100)에 연결된 다바이스일 수 있다.
CPU(102)는 또한 버스(106)를 통해 컴퓨팅 디바이스(100)를 디스플레이 디바이스(136)에 연결하도록 구성된 디스플레이 인터페이스(134)에 링크될 수 있다. 디스플레이 디바이스(136)는 컴퓨팅 디바이스(100)의 빌트-인 컴포넌트인 디스플레이 스크린을 포함할 수 있다. 디스플레이 디바이스(136)는 또한 그 중에서도 외부에서 컴퓨팅 디바이스(100)에 연결된 컴퓨터 모니터, 텔레비전, 또는 프로젝터를 포함할 수 있다. 네트워크 인터페이스 컨트롤러(NIC)(138)는 버스(106)를 통해 컴퓨팅 디바이스(100)를 네트워크(140)에 연결하도록 구성될 수 있다. 네트워크(140)는 유선 네트워크, 무선 네트워크, 또는 셀룰러 네트워크일 수 있다. 네트워크(140)는 그 중에서도 어떤 광대역 네트워크(WAN), 또는 어떤 근거리 네트워크(LAN) 또는 인터넷일 수 있다. 예를 들면, 네트워크(140)는 3GPP LTE 네트워크 또는 WiFi 네트워크일 수 있다.
도 1의 블록도는 컴퓨팅 디바이스(100)가 도 1에 도시된 모든 컴포넌트들을 포함하는 것으로 표시하려는 것은 아니다. 또한, 컴퓨팅 디바이스(100)는 특정 구현예의 세부사항에 따라서 도 1에 도시되지 않은 부가적인 컴포넌트를 몇 개라도 포함할 수 있다.
도 2는 본 발명의 실시예에 따라서 미디어 작업부하를 스케줄링 하는데 사용될 수 있는 시스템(200)의 개략도이다. 유사한 참조번호를 갖는 항목은 도 1에 관해 기술된 바와 같다. 시스템(200)은 미디어 애플리케이션(128)을 포함할 수 있다. 미디어 애플리케이션(128)은 그 중에서도 영화를 상연하는 애플리케이션, 화상 회의 소프트웨어, 또는 카메라 소프트웨어를 포함할 수 있다. 미디어 애플리케이션(128)에서 생긴 작업부하는 스케줄링 컴포넌트(200)에 전달될 수 있다. 스케줄링 컴포넌트(200)는 미디어 특징 모델링 데이터베이스(122), 샘플링 엔진(108), 작업부하 스케줄러(124), 및 비교기(204)를 포함한다. 도 1에 관해 기술한 바와 같이, 작업부하 스케줄러(124)는 GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 어느 특징을 실시간으로 변경할지를 결정하도록 샘플링 엔진(108) 및 미디어 특징 모델링 데이터베이스(122)와 통신할 수 있다. 만일 GPU 이용율 또는 메모리 대역폭이 임계치보다 낮으면, 비교기(204)는 애플리케이션(128)으로부터 아무 미디어 작업부하의 변경이 발생하지 않아야 한다는 메시지를 작업부하 스케줄러(124)에 전송할 것이다. GPU 이용율 또는 메모리 대역폭이 임계치를 넘으면, 비교기(204)는 미디어 작업부하가 변경되어야 한다는 메시지를 작업부하 스케줄러(124)에 전송할 것이다. 예를 들면, GPU 이용율이 임계치 95%를 상회하면, 미디어 작업부하는 변경될 수 있다. 마찬가지로, 메모리 대역폭의 퍼센티지가 초과할 때, 대역폭이 임계치로서 사용될 수 있다. 따라서, 초당 5 기가바이트의 임계치가 초과될 때, 미디어 작업부하가 변경될 수 있다.
작업부하는 스케줄링 컴포넌트(200)에서 CODEC(206)으로 전해질 수 있다. CODEC은 미디어 작업부하를 GPU에 의해 처리될 수 있는 포맷으로 변환할 수 있는 컴퓨팅 디바이스의 소프트웨어 또는 하드웨어 컴포넌트이다. 변환된 작업부하는 미디어 드라이버(208)에 전해진다. 실시예에서, 미디어 드라이버(208)는 변환된 작업부하를 버퍼에 배치한다. AKMD(116)는 변환된 작업부하의 GPU 이용율(210)뿐 만 아니라 메모리 대역폭(212)을 계산하는데 사용될 수 있다. 또한, GPU(104)와 같은 하드웨어는 버퍼로부터 변환된 작업부하를 처리할 수 있다.
AKMD(116)는 또한 계산된 GPU 이용율(210)뿐 만아니라 메모리 대역폭(212)을 피드백(214)으로서 스케줄링 컴포넌트(200)에 전달한다. 피드백(214)은 GPU 이용율(210) 또는 메모리 대역폭(212)이 특정 임계치를 넘는지 또는 그 아래인지를 결정하기 위하여 비교기(204)에 의해 사용된다. 전술한 바와 같이, 작업부하 스케줄러는 비교기(204)의 결과에 따라 미디어 작업부하를 변경할 수 있다.
도 3은 본 발명에 따라서 미디어 작업부하를 스케줄링하기 위한 방법(300)을 도시하는 프로세스 흐름도이다. 여러 실시예에서, 방법(300)은 컴퓨팅 디바이스(100)와 같은 컴퓨팅 디바이스에서 실행될 수 있다. 다른 실시예에서, 방법(300)은 도 2에 관해 앞에서 설명된 시스템(200)과 같은 시스템을 이용하여 실행될 수 있다.
방법은 블록(302)에서 미디어 작업부하의 특징을 모델링함으로써 시작한다. 실시예에서, 특징은 GPU의 데이터 처리 병목을 방지 또는 해결하기 위해 조절될 수 있는 GPU에 의해 또는 GPU 엔진들 중 어느 엔진에 의해 처리된 작업부하의 어떤 양상이다. 데이터 처리 병목은 GPU 이용율이 임계치보다 높을 때 또는 메모리 대역폭이 임계치보다 높을 때 발생할 수 있다. 더욱이, 실시예에서, 특징들은 미디어 특징 모델링 데이터베이스에 저장될 수 있다.
블록(304)에서, 미디어 작업부하의 GPU 이용율 및 메모리 대역폭이 결정될 수 있다. 전술한 바와 같이, GPU 이용율 및 메모리 대역폭은 커널 모드 드라이버를 이용하여 결정될 수 있다. 블록(306)에서, GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 특징을 변경함으로써 미디어 작업부하가 스케줄링될 수 있다. 실시예에서, GPU 이용율 및 메모리 대역폭을 조절하는 것은 미디어 작업부하의 동적 제어를 제공하기, 미디어의 인코딩 및 디코딩을 조절하기, 비디오 재생을 조절하기, 및 화상 회의, 카메라 기능 또는 무선 디스플레이 기능의 파라미터를 조절하기를 포함한다. 또한, 실시예에서, 특징들은 미디어 작업부하로부터 제거될 수 있다.
도 4a는 본 발명에 따라서 미디어 작업부하를 스케줄링하기 위한 방법(400)을 도시하는 프로세스 흐름도이다. 블록(402)에서, 미디어 스케줄러는 사용 모델의 각각의 형태의 디폴트 설정에 따라 작업부하를 스케줄링할 것이다. 사용 모델은 작업부하에 의해 수행된 작업들의 형태를 나타낸다. 사용 모델의 디폴트 설정은 사용 모델의 작업을 가능하게 하는 설정을 포함한다. 예를 들면, 비디오 재생 작업은 사용 모델의 한가지 형태이다. 비디오 재생 작업의 디폴트 설정은 비디오 처리 특징을 가능하게 하기, 이미지 안정화 수행하기, 및 프레임 레이트 변환을 제공하기를 포함하지만, 이것으로 제한되지 않는다. 블록(404)에서, GPU 카운터로부터의 정보가 획득된다. 실시예에서, 새로운 작업부하가 GPU에 보내진 후, 스케줄링 컴포넌트는 GPU 이용율 및 메모리 대역폭이 계산될 수 있도록 GPU 카운터로부터 피드백을 수집할 수 있다. 또한, 실시예에서, GPU 이용율이 각 GPU 엔진마다 계산될 수 있다. 블록(406)에서, 방법은 GPU 또는 GPU 엔진이 과부하인지 결정한다. 만일 어떤 GPU 또는 GPU 엔진이 과부하이면, 프로세스 흐름은 블록(408)으로 진행한다. 만일 어떤 GPU 또는 GPU 엔진이 과부하가 아니면, 프로세스 흐름은 블록(410)으로 이어진다.
블록(408)에서, GPU 이용율을 줄이기 위해 미디어 작업부하의 특징이 변경된다. 예를 들면, 3D 엔진의 이용율이 기결정된 임계치를 넘도록 GPU의 3D 엔진이 과부하인 경우, 3D 엔진의 이용율을 줄이는 특징들이 변경된다. 그 다음 프로세스 흐름은 블록(402)으로 리턴하du 작업부하를 스케줄링한다. 도 4b는 실시예에 따라서 특징들을 조절하기 위한 방법을 추가로 기술한다.
블록(412)에서, 메모리가 제한된 대역폭인지 결정된다. 메모리 대역폭이 제한되어 있다면, 프로세스 흐름은 블록(414)으로 이어진다. 메모리 대역폭이 제한되어 있지 않으면, 프로세스 흐름은 블록(402)으로 리턴하여 작업부하를 스케줄링한다.
블록(414)에서, 메모리 대역폭을 줄이기 위해 특징들이 변경될 수 있다. 실시예에서, 최대 메모리 대역폭이 초과되도록 미디어 엔진이 과부하이면, 메모리 대역폭을 줄이는 특징들이 변경될 수 있다. 프로세스 흐름은 블록(402)으로 리턴하여 작업부하를 스케줄링한다.
도 4b는 실시예에 따라서 미디어 작업부하의 특징을 변경하기 위한 방법(420)을 도시하는 프로세스 흐름도이다. 블록(422)에서, 렌더링 엔진이 과부하인지 결정된다. 예에서, 렌더링 엔진은 3D 이미지를 렌더링하는 GPU의 엔진일 수 있다. 렌더링 엔진의 이용율이 기결정된 임계치를 넘도록 GPU의 렌더링 엔진이 과부하라면, 프로세스 흐름은 블록(424)으로 이어진다.
블록(424)에서, 렌더링 엔진의 이용율을 줄이는 특징들이 변경된다. 블록(426)에서, MFX 엔진이 과부하인지 결정된다. 예에서, MFX 엔진은 각종 데이터 스트림을 디코딩하는 GPU의 엔진이다. MFX 엔진이 과부하인 경우, 프로세스 흐름은 블록(428)으로 진행한다.
블록(428)에서, MFX 엔진의 이용율을 줄이는 CODEC 특징들이 변경된다. 전술한 바와 같이, CODEC은 미디어 작업부하를 GPU에 의해 처리될 수 있는 포맷으로 변환할 수 있는 컴퓨팅 디바이스의 소프트웨어 또는 하드웨어 컴포넌트이다. 실시예에서, CODEC은 CODEC(206)일 수 있다(도 2 참조). 또한, 실시예에서, CODEC은 MFX 엔진 또는 GPU 카운터(114)(도 1 참조)와 같은 GPU 엔진의 컴포넌트 일 수 있다. MFX 엔진의 이용율을 줄이기 위해 CODEC의 여러 양상이 변경될 수 있다. 프로세스 흐름은 블록(402)으로 리턴하여 작업부하를 스케줄링한다.
도 3, 도 4a 및 4b의 프로세스 흐름도는 방법(300) 및 방법(400)의 블록들이 어떤 특정 순서로 실행된다거나 또는 그 블록들 모두가 모든 사례에 포함된다고 표시하려는 것은 아니다. 또한, 특정 구현의 세부사항에 따라 추가 블록이 몇개 라도 방법(300 및 400)에 포함될 수 있다.
도 5는 실시예에 따라서 미디어 작업부하를 스케줄링하기 위한 코드를 저장하는 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)를 도시하는 블록도이다. 따라서, 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체는 실시예에 따라서 미디어 작업부하를 스케줄링하기 위한 코드를 저장할 수 있다. 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)는 컴퓨터 버스(504)를 통해 프로세서(502)에 의해 액세스될 수 있다. 또한, 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)는 프로세서(502)에게 지시하여 본 명세서에 기술된 방법들을 수행하도록 구성된 코드를 포함할 수 있다.
본 명세서에서 기술된 여러 소프트웨어 컴포넌트들은 도 5에 도시된 바와 같은 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)에 저장될 수 있다. 예를 들면, 모델링 모듈(506)은 미디어 작업부하의 특징을 모델링하도록 구성될 수 있다. 이용 모듈(508)은 미디어 작업부하의 GPU 이용율 및 메모리 대역폭을 결정하도록 구성될 수 있다. 또한, 스케줄링 모듈(510)은 GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 특징을 변경함으로써 미디어 작업부하를 스케줄링하도록 구성될 수 있다.
도 5의 블록도는 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)가 도 5에 도시된 모든 컴포넌트들을 포함한다고 표시하려는 것은 아니다. 또한, 하나 이상의 유형의 비 일시적 컴퓨터 판독가능 매체(500)는 특정 구현의 세부사항에 따라서 도 5에 도시되지 않은 부가적인 컴포넌트를 몇 개라도 포함할 수 있다.
도 6은 공유된 물리 메모리를 구현하기 위한 예시적인 시스템(600)의 블록도이다. 유사한 참조부호를 갖는 항목은 도 1 및 도 2에 관해 기술된 바와 같다. 일부 실시예에서, 시스템(600)은 미디어 시스템이다. 또한, 시스템(600)은 퍼스널 컴퓨터(PC), 랩탑 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, 개인휴대단말(PDA), 셀룰러 텔레폰, 겸용 셀룰러 텔레폰/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시지 디바이스, 또는 데이터 통신 디바이스 등에 포함될 수 있다.
여러 실시예에서, 시스템(600)은 디스플레이(604)에 결합된 플랫폼(602)을 포함한다. 플랫폼(602)은 콘텐츠 서비스 디바이스(들)(606) 또는 콘텐츠 전달 디바이스(들)(608), 또는 다른 유사한 콘텐츠 소스와 같은 콘텐츠 디바이스로부터 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 특징을 포함하는 네비게이션 컨트롤러(610)는, 예를 들면, 플랫폼(602) 및/또는 디스플레이(604)와 상호작용하는데 사용될 수 있다. 이들 컴포넌트는 각기 아래에서 더욱 상세히 설명된다.
플랫폼(602)은 칩셋(612), 중앙 처리 유닛(CPU)(102), 메모리 디바이스(120), 스토리지 디바이스(126), 그래픽 서브시스템(614), 애플리케이션(128), 및 라디오(616)의 어떤 조합을 포함할 수 있다. 칩셋(612)은 CPU(102), 메모리 디바이스(120), 스토리지 디바이스(126), 그래픽 서브시스템(614), 애플리케이션(128), 및 라디오(616) 간의 상호통신을 제공할 수 있다. 예를 들면, 칩셋(612)은 스토리지 디바이스(126)와 상호통신을 제공할 수 있는 스토리지 어댑터(도시되지 않음)를 포함할 수 있다.
CPU(102)는 복합 명령어 세트 컴퓨터(Complex Instruction Set Computer (CISC)) 또는 축소 명령어 세트 컴퓨터(Reduced Instruction Set Computer (RISC)) 프로세서, x86 명령어 세트 호환 프로세서(x86 instruction set compatible processors), 멀티 코어 또는 어떤 다른 마이크로프로세서 또는 중앙 처리 유닛(CPU)으로서 구현될 수 있다. 일부 실시예에서, CPU(102)는 듀얼코어 프로세서(들) 또는 듀얼코어 모바일 프로세서(들) 등을 포함한다.
메모리 디바이스(120)는 휘발성 메모리 디바이스, 이를 테면, 랜덤 액세스 메모리(RAM), 다이나믹 랜덤 액세스 메모리(DRAM), 또는 스태틱 RAM(SRAM)으로서 구현될 수 있지만, 이것으로 제한되지 않는다. 스토리지 디바이스(126)는 비휘발성 스토리지 디바이스, 이를 테면, 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 스토리지 디바이스, 어태치드 스토리지 디바이스(attached storage device), 플래시 메모리, 배터리 백업 SDRAM(동기 DRAM), 및/또는 네트워크 액세스가능 스토리지 디바이스로서 구현될 수 있지만, 이것으로 제한되지 않는다. 일부 실시예에서, 스토리지 디바이스(126)는, 예를 들면, 다중 하드 드라이브가 포함될 때 고가 디지털 미디어의 스토리지 성능 개선 보호를 증가시키는 기술을 포함한다.
그래픽 서브시스템(614)은 디스플레이하기 위한 정지 또는 비디오와 같은 이미지의 처리기능을 포함할 수 있다. 그래픽 서브시스템(614)은 예를 들면, GPU(104)(도 1 참조) 또는 비주얼 처리 유닛(VPU)과 같은 그래픽 처리 유닛(GPU)을 포함할 수 있다. 아날로그 또는 디지털 인터페이스는 통신을 통해 그래픽 서브시스템(614) 및 디스플레이(604)를 결합하는데 사용될 수 있다. 예를 들면, 인터페이스는 고선명 멀티미디어 인터페이스, 디스플레이포트, 무선 HDMI 및/또는 무선 HD 대응 기술(HD compliant techniques) 중 어느 것일 수 있다. 그래픽 서브시스템(614)은 CPU(102) 또는 칩셋(612)으로 통합될 수 있다. 대안으로, 그래픽 서브시스템(614)은 통신을 통해 칩셋(612)에 결합된 스탠드-얼론 카드일 수 있다.
본 명세서에 기술된 그래픽 및/또는 비디오 처리 기술은 각종 하드웨어 아키텍처로 구현될 수 있다. 예를 들면, 그래픽 및/또는 비디오 기능은 칩셋(612) 내에 통합될 수 있다. 대안으로, 이산적인 그래픽 및/또는 비디오 프로세서가 사용될 수도 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능은 멀티코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 또 다른 실시예에서, 기능들은 컨슈머 전자 기기에서 구현될 수 있다.
라디오(616)는 각종 적합한 무선 통신 기술을 이용하여 신호를 전송하고 수신할 수 있는 하나 이상의 라디오를 포함할 수 있다. 그러한 기술은 하나 이상의 무선 네트워크 전체에서 통신을 수반할 수 있다. 예시적인 무선 네트워크는 무선 근거리 네트워크(WLANs), 무선 개인 영역 네트워크(WPANs), 무선 대도시 네트워크(metropolitan area network (WMANs)), 셀룰러 네트워크, 또는 위성 네트워크 등을 포함한다. 그러한 네트워크 전체에서 통신할 때, 라디오(616)는 어느 버전에서건 하나 이상의 적용 기준에 따라서 동작할 수 있다.
디스플레이(604)는 모든 텔레비전 형태의 모니터 또는 디스플레이를 포함할 수 있다. 예를 들면, 디스플레이(604)는 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 또는 텔레비전 등을 포함할 수 있다. 디스플레이(604)는 디지털 및/또는 아날로그일 수 있다. 일부 실시예에서, 디스플레이(604)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(604)는 비주얼 프로젝션을 받아들일 수 있는 투명 표면일 수 있다. 그러한 투사는 다양한 형태의 정보, 이미지, 또는 객체 등을 전할 수 있다. 예를 들면, 그러한 투사는 모바일 증강 현실(mobile augmented reality (MAR)) 애플리케이션을 위한 비주얼 오버레이일 수 있다. 하나 이상의 애플리케이션(128)의 제어하에, 플랫폼(602)은 디스플레이(604)에 사용자 인터페이스(618)를 디스플레이할 수 있다.
콘텐츠 서비스 디바이스(들)(606)는 국가적, 세계적 또는 독자적 서비스에서 호스트 역할을 할 수 있으며, 이렇게 하여 예를 들면 인터넷을 매개로 하여 플랫폼(602)에 액세스될 수 있다. 콘텐츠 서비스 디바이스(들)(606)는 플랫폼(602) 및/또는 디스플레이(604)에 결합될 수 있다. 플랫폼(602) 및/또는 콘텐츠 서비스 디바이스(들)(606)는 네트워크(140)에 결합되어 미디어 정보를 네트워크(140)로 및 네트워크로부터 통신(예를 들면, 송신 및/또는 수신)할 수 있다. 콘텐츠 전달 디바이스(들)(608)는 플랫폼(602) 및/또는 디스플레이(604)에 결합될 수 있다.
콘텐츠 서비스 디바이스(들)(606)는 케이블 텔레비전 박스, 퍼스널 컴퓨터, 네트워크, 텔레폰, 또는 디지털 정보를 전달할 수 있는 인터넷-가능 디바이스를 포함할 수 있다. 또한, 콘텐츠 서비스 디바이스(들)(606)는 콘텐츠 프로바이더와 플랫폼(602) 또는 디스플레이(604)와의 사이에서 네트워크(140)를 통해 또는 직접적으로 콘텐츠를 단방향 또는 양방향으로 통신할 수 있는 어떤 다른 유사 디바이스를 포함할 수 있다. 콘텐츠는 네트워크(140)를 통하여 시스템(600)내 컴포넌트 및 콘텐츠 프로바이더 중 어느 것으로 및 그 어느 것으로부터 단방향 및/또는 양방향으로 통신될 수 있다. 콘텐츠의 일예는, 예를 들면, 비디오, 뮤직, 의료 및 게임 정보 등을 포함하는 어떤 미디어 정보라도 포함할 수 있다.
콘텐츠 서비스 디바이스(들)(606)는 미디어 정보, 디지털 정보 또는 기타 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 콘텐츠 프로바이더의 일예는 그 중에서도 어떤 케이블 또는 위성 텔레비전 또는 라디오 또는 인터넷 콘텐츠 프로바이더라도 포함할 수 있다.
일부 실시예에서, 플랫폼(602)은 네비게이션 컨트롤러(610)로부터 하나 이상의 네비게이션 특징을 포함하는 제어 신호를 수신한다. 네비게이션 컨트롤러(610)의 네비게이션 특징은, 예를 들면, 사용자 인터페이스(618)와 상호작용하도록 사용될 수 있다. 네비게이션 컨트롤러(610)는 사용자에게 공간(예를 들면, 지속적이면서 다차원적) 데이터를 컴퓨터에 입력하게 해주는 컴퓨터 하드웨어 컴포넌트(특히 휴먼 인터페이스 디바이스)일 수 있는 포인팅 디바이스일 수 있다. 그래픽 사용자 인터페이스(GUI), 텔레비전 및 모니터와 같은 많은 시스템은 사용자로 하여금 신체적인 제스처를 이용하여 데이터를 제어하여 컴퓨터 또는 텔레비전에 제공하게 해준다. 신체적인 제스처는 얼굴 표정, 얼굴 움직임, 여러 팔다리 움직임, 신체 움직임, 신체 언어 또는 이들의 어떤 조합을 포함하지만, 이것으로 제한되지 않는다. 그러한 신체적 제스처는 명령어 또는 지령으로 인식되고 번역될 수 있다.
네비게이션 컨트롤러(610)의 네비게이션 특징들의 움직임은 디스플레이(604)에 디스플레이된 포인터, 커서, 포커스 링, 또는 기타 비주얼 인디케이터에 의해 디스플레이(604)에서 반향될 수 있다. 예를 들면, 애플리케이션(128)의 제어 하에, 네비게이션 컨트롤러(610)에 배치된 네비게이션 특징은 사용자 인터페이스(618)에 디스플레이된 가상 네비게이션 특징에 맵핑될 수 있다. 일부 실시예에서, 네비게이션 컨트롤러(610)는 개별 컴포넌트가 아닐지도 모르지만, 그 보다는 플랫폼(602) 및/또는 디스플레이(604)에 통합될 수 있다.
예를 들면, 시스템(600)은 인에이블될 때, 초기 부트업 후 버튼의 터치에 따라 사용자가 플랫폼(602)을 즉각 턴온 또는 턴오프할 수 있게 해주는 기술을 포함하는 드라이버(도시되지 않음)를 포함할 수 있다. 프로그램 로직은 플랫폼이 턴 "오프"될 때 플랫폼(602)으로 하여금 콘텐츠를 미디어 어댑터 또는 기타 콘텐츠 서비스 디바이스(들)(606) 또는 콘텐츠 전달 디바이스(들)(608)에 스트림하게 해 줄 수 있다. 그 밖에, 칩셋(612)은, 예를 들면, 5.1 서라운드 사운드 오디오 및/또는 고선명 7.1 서라운드 사운드 오디오용 하드웨어 및/또는 소프트웨어 서포트를 포함할 수 있다. 드라이버는 통합 그래픽 플랫폼용 그래픽 드라이버를 포함할 수 있다. 일부 실시예에서, 그래픽 드라이버는 PCIe(peripheral component interconnect express) 그래픽 카드를 포함한다.
여러 실시예에서, 시스템(600)에서 도시된 컴포넌트들 중 어느 하나 이상의 컴포넌트가 통합될 수 있다. 예를 들면, 플랫폼(602) 및 콘텐츠 서비스 디바이스(들)(606)가 통합될 수 있고, 플랫폼(602) 및 콘텐츠 전달 디바이스(들)(608)가 통합될 수 있고, 또는 플랫폼(602), 콘텐츠 서비스 디바이스(들)(606) 및 콘텐츠 전달 디바이스(들)(608)가 통합될 수 있다. 일부 실시예에서, 플랫폼(602) 및 디스플레이(604)는 통합된 유닛이다. 예를 들어, 디스플레이(604) 및 콘텐츠 서비스 디바이스(들)(606)가 통합될 수 있고, 또는 디스플레이(604) 및 콘텐츠 전달 디바이스(들)(608)가 통합될 수 있다.
시스템(600)은 무선 시스템 또는 유선 시스템으로서 구현될 수 있다. 무선 시스템으로 구현될 때, 시스템(600)은 무선 공유 미디어, 이를 테면 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 및 제어 로직 등을 통해 통신하는데 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 무선 공유 미디어의 일예는 RF 스펙트럼과 같은 무선 스펙트럼의 일부분을 포함할 수 있다. 유선 시스템으로서 구현될 때, 시스템(600)은 유선 통신 미디어, 이를 테면, 입/출력 (I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체에 연결하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 컨트롤러, 비디오 컨트롤러, 또는 오디오 컨트롤러 등을 통해 통신하는데 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 유선 통신 매체의 일예는 와이어, 케이블, 금속 리드, 인쇄 회로 기판(PCB), 백플레인, 스위치 패브릭, 반도체 물질, 트위스트-페어 와이어, 동축 케이블, 또는 광섬유 등을 포함할 수 있다.
플랫폼(602)은 정보를 전달하는 하나 이상의 논리적 또는 물리적 채널을 확립할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보는 사용자를 위해 만들어진 콘텐츠를 나타내는 모든 데이터를 지칭할 수 있다. 콘텐츠의 일예는, 예를 들면, 음성 대화 데이터(data from a voice conversation), 화상회의, 스트리밍 비디오, 전자 메일(이메일) 메시지, 음성 메일 메시지, 영숫자 심볼, 그래픽, 이미지, 비디오, 및 텍스트 등을 포함할 수 있다. 음성 대화 데이터는, 예를 들면, 음성 정보, 묵음 주기, 배경 잡음, 편안한 잡음(comfort noise), 및 톤 등을 포함할 수 있다. 제어 정보는 명령어, 지령어 또는 자동화 시스템용으로 만들어진 제어 워드를 나타내는 모든 데이터를 지칭할 수 있다. 예를 들면, 제어 정보는 시스템을 통해 미디어 정보를 라우트하는데 사용될 수 있거나 또는 노드에 지시하여 기결정된 방식으로 미디어 저오를 처리하도록 하는데 사용될 수 있다. 그러나, 실시예는 도 6에 도시되고 기술된 구성요소 또는 상황으로 제한되지 않는다.
도 7은 도 6의 시스템(600)이 구현될 수 있는 소형 폼 팩터 디바이스(small form factor device)(700)의 개략도이다. 유사한 참조부호를 갖는 항목은 도 6에 관해 기술된 바와 같다. 일부 실시예에서, 예를 들면, 디바이스(700)는 무선 역량을 갖는 모바일 컴퓨팅 디바이스로서 구현된다. 모바일 컴퓨팅 디바이스는 프로세싱 시스템 및, 예를 들면, 하나 이상의 배터리와 같은 모바일 전원 또는 파워 서플라이를 갖는 모든 디바이스를 지칭할 수 있다.
전술한 바와 같이, 모바일 컴퓨팅 디바이스의 일예는 퍼스널 컴퓨터(PC), 랩탑 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, 개인휴대단말(PDA), 셀룰러 텔레폰, 겸용 셀룰러 텔레폰/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시지 디바이스, 또는 데이터 통신 디바이스 등을 포함할 수 있다.
모바일 컴퓨팅 디바이스의 일예는 또한 사람이 착용하도록 구성된 컴퓨터, 이를 테면, 손목 컴퓨터, 손가락 컴퓨터, 링 컴퓨터, 안경 컴퓨터, 벨트-클립 컴퓨터, 암-밴드 컴퓨터, 신발 컴퓨터, 의류 컴퓨터 또는 착용 컴퓨터의 기타 적절한 형태를 포함할 수 있다. 예를 들면, 모바일 컴퓨팅 디바이스는 컴퓨터 애플리케이션뿐 만 아니라 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트 폰으로서 구현될 수 있다. 비록 일부 실시예가 예로서 스마트 폰으로서 구현된 모바일 컴퓨팅 디바이스에 대해 기술될 수 있을 지라도 다른 무선 모바일 컴퓨팅 디바이스를 이용하여 다른 실시예가 또한 구현될 수 있음이 인식될 수 있다.
도 7에 도시된 바와 같이, 디바이스(700)는 하우징(702), 디스플레이(704), 입/출력(I/O) 디바이스(706) 및 안테나(708)를 포함할 수 있다. 디바이스(700)는 또한 네비게이션 특징(710)을 포함할 수 있다. 디스플레이(704)는 모바일 컴퓨팅 디바이스에 적절한 정보를 디스플레이하는데 적합한 모든 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(706)는 정보를 모바일 컴퓨팅 디바이스에 입력하는데 적절한 적합한 모든 I/O 디바이스를 포함할 수 있다. 예를 들면, I/O 디바이스(706)는 영숫자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 로커 스위치(rocker switches), 마이크로폰, 스피커, 또는 음성 인식 디바이스 및 소프트웨어 등을 포함할 수 있다. 정보는 또한 마이크로폰을 통해 디바이스(700)에 입력될 수 있다. 그러한 정보는 음성 인식 디바이스에 의해 디지털화될 수 있다.
실시예 1
컴퓨팅 디바이스의 미디어 작업부하를 스케줄링하기 위한 방법이 여기 기술된다. 이 방법은 미디어 작업부하의 특징을 모델링하는 것을 포함한다. 미디어 작업부하의 GPU 이용율 및 메모리 대역폭이 결정될 수 있다. 이 방법은 또한 GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 특징을 변경함으로써 미디어 작업부하를 스케줄링하는 것을 포함한다.
미디어 작업부하의 특징은 미디어 특징 모델링 데이터베이스에서 모델링될 수 있다. 미디어 작업부하는 CODEC을 이용하여 다른 포맷으로 변환될 수 있다. 또한, 커널 모드 드라이브, GPU, 및 메모리 카운터가 GPU 이용율 및 메모리 대역폭을 결정하는데 사용될 수 있다. GPU 이용율은 GPU의 각 엔진마다 결정될 수 있다. 미디어 작업부하는 GPU 이용율 또는 메모리 대역폭이 임계치를 넘을 때 스케줄링될 수 있다. GPU 이용율 및 메모리 대역폭의 조절은 미디어의 인코딩 및 디코딩을 조절하고 비디오 재생을 조정하는 미디어 작업부하의 동적 제어를 제공한다.
실시예 2
컴퓨팅 디바이스가 여기 기술된다. 컴퓨팅 디바이스는 저장된 명령어를 실행하도록 구성된 중앙 처리 유닛(CPU) 및 명령어를 저장하는 스토리지 디바이스를 포함한다. 스토리지 디바이스는 CPU에 의해 실행될 때 미디어 특징 모델링 데이터베이스를 이용하여 미디어 작업부하의 특징을 모델링하도록 구성된 프로세서 실행 CODEC을 포함한다. 미디어 작업부하의 GPU 이용율 및 메모리 대역폭은 그래픽 처리 유닛(GPU) 카운터를 이용하여 결정될 수 있다. 미디어 작업부하는 GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 특징을 변경함으로써 스케줄링될 수 있다.
컴퓨팅 디바이스는 카메라, 비디오 채팅 애플리케이션, 또는 화상 회의 애플리케이션을 포함할 수 있다. 프로세서 실행 코드는 GPU 이용율 또는 메모리 대역폭이 임계치를 넘거나 그보다 낮은지를 결정하는 비교기를 이용하여 미디어 작업부하를 스케줄링하도록 구성될 수 있다. 이용율은 GPU의 각 GPU 엔진마다 결정될 수 있다. 또한, CODEC은 미디어 작업부하를 GPU에 의해 처리하기 위한 다른 포맷으로 변환하는데 사용될 수 있다. 더욱이, 커널 모드 드라이브 및 GPU 카운터를 갖는 GPU는 GPU 이용율 및 메모리 대역폭을 결정하는데 사용될 수 있다. GPU 이용율 및 메모리 대역폭의 조절은 미디어 작업부하에서 특징들을 제거하는 것을 포함할 수 있다. 미디어 작업부하의 특징은 컴퓨팅 디바이스의 미디어 특징 모델링 데이터베이스에서 모델링될 수 있다. 청구범위의 제9항의 컴퓨팅 디바이스는 또한 라디오 및 디스플레이를 포함하며, 라디오 및 디스플레이는 적어도 중앙 처리 유닛에 통신 가능하게 결합될 수 있다.
실시예 3
명령어가 저장된 적어도 하나의 비 일시적 머신 판독가능 매체가 여기 기술된다. 컴퓨팅 디바이스에서 실행되는데 응답하여, 명령어는 컴퓨팅 디바이스로 하여금 미디어 작업부하의 특징을 모델링하게 한다. 미디어 작업부하의 GPU 이용율 및 메모리 대역폭이 결정될 수 있다. 미디어 작업부하는 GPU 이용율 및 메모리 대역폭을 조절하기 위해 미디어 작업부하의 특징을 변경함으로써 스케줄링될 수 있다.
미디어 작업부하는 GPU 이용율 또는 메모리 대역폭이 임계치를 넘을 때 스케줄링될 수 있다. 더욱이, 미디어 작업부하는 CODEC을 이용하여 다른 포맷으로 변환될 수 있다. 미디어 작업부하의 특징은 미디어 특징 모델링 데이터베이스에서 모델링될 수 있다. 또한, GPU 이용율은 GPU의 각 엔진마다 결정될 수 있다.
전술한 예들의 세부 내용은 하나 이상의 실시예의 어디에서건 사용될 수 있음은 물론이다. 예를 들어, 전술한 컴퓨팅 디바이스의 모든 선택사양의 특징들은 또한 본 명세서에서 기술된 방법 또는 컴퓨터 판독가능 매체에 대해 구현될 수 있다. 더욱이, 실시예를 설명하기 위해 본 명세서에서 흐름도 및/또는 상태도가 사용되었을 지라도, 본 발명은 이들 도면 또는 상응하는 설명으로 제한되지 않는다. 예를 들면, 각각의 예시된 박스 또는 상태를 통해 또는 본 명세서에서 예시되고 기술된 바와 정확히 동일한 순서대로 흐름이 이동할 필요는 없다.
본 발명은 본 명세서에서 열거한 특정 세부사항으로 국한되지 않는다. 정말로, 본 개시내용의 혜택을 받는 본 기술에서 통상의 지식을 가진 자들이라면 전술한 설명과 도면으로부터 다른 많은 변경이 본 발명의 범주 내에서 이루어질 수 있다고 인식할 것이다. 따라서, 하기 청구범위에는 본 발명의 범주를 정의하는 모든 보정 사항이 포함된다.

Claims (18)

  1. 미디어 작업부하를 스케줄링하는 방법으로서,
    프로세서에 의하여, 상기 미디어 작업부하의 특징(feature)을 모델링하는 단계 -상기 특징은 상기 미디어 작업부하의 변경 가능한 처리 양상임- 와,
    상기 프로세서에 의하여, 디폴트 설정에 따라 상기 미디어 작업부하를 스케줄링하는 단계와,
    상기 프로세서에 의하여, 커널 모드 드라이버, GPU 및 메모리 카운터를 이용하여, 상기 디폴트 설정에 따른 상기 미디어 작업부하의 처리에 기초하여 상기 미디어 작업부하의 GPU 이용율 및 메모리 대역폭을 결정하는 단계와,
    상기 프로세서에 의하여, 상기 미디어 작업부하의 특징을 변경하는 단계와,
    상기 프로세서에 의하여, 상기 GPU 이용율 또는 상기 메모리 대역폭을 조절하기 위해 상기 변경된 특징에 따라 상기 미디어 작업부하를 스케줄링하는 단계를 포함하는
    미디어 작업부하 스케줄링 방법.
  2. 제1항에 있어서,
    상기 변경된 특징에 따른 상기 미디어 작업부하는 상기 GPU 이용율 또는 상기 메모리 대역폭이 임계치를 넘을 때 스케줄링되는
    미디어 작업부하 스케줄링 방법.
  3. 제1항에 있어서,
    상기 GPU 이용율 및 상기 메모리 대역폭을 조절하는 것은 상기 미디어 작업부하의 동적 제어를 제공하는 것, 상기 미디어의 인코딩 및 디코딩을 조절하는 것, 비디오 재생을 조절하는 것, 및 화상 회의, 카메라 기능 또는 무선 디스플레이 기능의 파라미터를 조절하는 것을 포함하는
    미디어 작업부하 스케줄링 방법.
  4. 제1항에 있어서,
    상기 미디어 작업부하의 특징은 미디어 특징 모델링 데이터베이스에 모델링되며, 상기 특징을 변경하는 단계는 상기 미디어 특징 모델링 데이터베이스에 액세스하는 단계를 포함하는
    미디어 작업부하 스케줄링 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 GPU 이용율은 상기 GPU의 복수의 엔진 중 제 1 엔진에 대해서 결정되며, 상기 미디어 작업부하의 특징은 상기 제 1 엔진의 GPU 이용율을 조절하는 특징을 포함하는
    미디어 작업부하 스케줄링 방법.
  7. 제1항에 있어서,
    상기 미디어 작업부하를 스케줄링하는 단계는, 상기 프로세서에 의하여 상기 미디어 작업부하를 CODEC을 이용하여 다른 포맷으로 변환하는 단계를 포함하는
    미디어 작업부하 스케줄링 방법.
  8. 컴퓨팅 디바이스로서,
    GPU 카운터를 갖는 GPU와,
    커널 모드 드라이버와,
    저장된 명령어를 실행하도록 구성된 중앙 처리 장치(CPU) 및 명령어를 저장하는 스토리지 디바이스를 포함하며,
    상기 스토리지 디바이스는, 상기 CPU에 의해 실행될 때,
    미디어 특징 모델링 데이터베이스를 이용하여 미디어 작업부하의 특징을 모델링 -상기 특징은 상기 미디어 작업부하의 변경 가능한 처리 양상임- 하고,
    디폴트 설정에 따라 미디어 작업 부하를 스케줄링하고,
    상기 커널 모드 드라이버 및 상기 GPU 카운터를 이용하여 상기 디폴트 설정에 따른 상기 미디어 작업부하의 GPU 이용율 및 메모리 대역폭을 결정하고,
    상기 미디어 작업부하의 특징을 변경하고,
    상기 GPU 이용율 또는 상기 메모리 대역폭을 조절하기 위해 상기 변경된 특징에 따라 상기 미디어 작업부하를 스케줄링하도록 구성된 프로세서 실행가능 코드를 포함하는
    컴퓨팅 디바이스.
  9. 제8항에 있어서,
    상기 GPU 이용율이 제 1 임계치를 넘거나 또는 그보다 낮은지 또는 상기 메모리 대역폭이 제 2 임계치를 넘거나 또는 그보다 낮은지를 결정하는 비교기를 더 포함하며,
    상기 GPU 이용율이 상기 제 1 임계치를 넘거나 또는 상기 메모리 대역폭이 상기 제 2 임계치를 넘는 경우, 상기 CPU는 상기 변경된 특징에 따른 상기 미디어 작업부하를 스케줄링하는
    컴퓨팅 디바이스.
  10. 삭제
  11. 제8항에 있어서,
    상기 CPU는 GPU의 각 GPU 엔진마다 이용율을 결정하는
    컴퓨팅 디바이스.
  12. 제8항에 있어서,
    상기 미디어 작업부하를 처리를 위해 GPU에 맞는 다른 포맷으로 변환하는 CODEC을 더 포함하는
    컴퓨팅 디바이스.
  13. 제8항에 있어서,
    상기 컴퓨팅 디바이스는 카메라, 비디오 채팅 애플리케이션, 또는 화상 회의 애플리케이션을 포함하는
    컴퓨팅 디바이스.
  14. 제8항에 있어서,
    무선장치(radio) 및 디스플레이를 더 포함하며, 상기 무선장치 및 상기 디스플레이는 적어도 상기 CPU에 통신 가능하게 결합되는
    컴퓨팅 디바이스.
  15. 명령어가 저장된 적어도 하나의 머신 판독가능 매체로서,
    상기 명령어는, 컴퓨팅 디바이스에서 실행되는 데 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    미디어 특징 모델링 데이터베이스를 이용하여 미디어 작업부하의 특징을 모델링 -상기 특징은 상기 미디어 작업부하의 변경 가능한 처리 양상임- 하고,
    디폴트 설정에 따라 상기 미디어 작업부하를 스케줄링하고,
    커널 모드 드라이버, GPU 및 메모리 카운터를 이용하여, 상기 디폴트 설정에 따른 상기 미디어 작업부하의 GPU 이용율 및 메모리 대역폭을 결정하고,
    상기 미디어 작업부하의 특징을 변경하고,
    상기 GPU 이용율 또는 상기 메모리 대역폭을 조절하기 위해 상기 변경된 특징에 따라 상기 미디어 작업부하를 스케줄링하도록 하는
    머신 판독가능 매체.
  16. 제15항에 있어서,
    상기 변경된 특징에 따른 상기 미디어 작업부하는 상기 GPU 이용율이 제 1 임계치를 넘을 때 또는 상기 메모리 대역폭이 제 2 임계치를 넘을 때 스케줄링되는
    머신 판독가능 매체.
  17. 제15항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 데 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 변경된 특징에 따른 상기 미디어 작업 부하의 제 2 GPU 이용율 및 제 2 메모리 대역폭을 결정하고,
    상기 미디어 작업부하의 제 2 특징을 변경하고,
    상기 변경된 특징과 상기 변경된 제 2 특징에 따라 상기 미디어 작업부하를 스케줄링하도록 하는
    명령어가 더 저장된
    머신 판독가능 매체.
  18. 제15항에 있어서,
    상기 GPU 이용율은 상기 GPU의 복수의 엔진 중 제 1 엔진에 대하여 결정되며, 상기 미디어 작업부하의 특징은 상기 제 1 엔진의 상기 GPU 이용율을 조절하는 특징을 포함하는
    머신 판독가능 매체.
KR1020150111226A 2012-08-02 2015-08-06 미디어 작업부하 스케줄러 KR101634500B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/564,824 2012-08-02
US13/564,824 US8928678B2 (en) 2012-08-02 2012-08-02 Media workload scheduler

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020130092195A Division KR20140018157A (ko) 2012-08-02 2013-08-02 미디어 작업부하 스케줄러

Publications (2)

Publication Number Publication Date
KR20150096639A KR20150096639A (ko) 2015-08-25
KR101634500B1 true KR101634500B1 (ko) 2016-07-08

Family

ID=48914119

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020130092195A KR20140018157A (ko) 2012-08-02 2013-08-02 미디어 작업부하 스케줄러
KR1020150111226A KR101634500B1 (ko) 2012-08-02 2015-08-06 미디어 작업부하 스케줄러

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020130092195A KR20140018157A (ko) 2012-08-02 2013-08-02 미디어 작업부하 스케줄러

Country Status (4)

Country Link
US (1) US8928678B2 (ko)
EP (1) EP2693761A3 (ko)
KR (2) KR20140018157A (ko)
CN (1) CN103577269B (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128721B2 (en) 2012-12-11 2015-09-08 Apple Inc. Closed loop CPU performance control
TW201445500A (zh) * 2013-05-16 2014-12-01 Hon Hai Prec Ind Co Ltd 顯示適配器控制系統、控制方法及電腦裝置
US10261570B2 (en) * 2013-11-27 2019-04-16 Intel Corporation Managing graphics power consumption and performance
CN103986857A (zh) * 2014-04-24 2014-08-13 华国洋 一种无线摄像头
KR102454196B1 (ko) * 2014-05-27 2022-10-14 삼성전자 주식회사 디스플레이 제어 방법 및 이를 제공하는 전자 장치
US10521874B2 (en) * 2014-09-26 2019-12-31 Intel Corporation Method and apparatus for a highly efficient graphics processing unit (GPU) execution model
WO2016149894A1 (en) * 2015-03-23 2016-09-29 Intel Corporation Workload scheduler for computing devices with camera
US10229468B2 (en) * 2015-06-03 2019-03-12 Intel Corporation Automated conversion of GPGPU workloads to 3D pipeline workloads
US10282804B2 (en) * 2015-06-12 2019-05-07 Intel Corporation Facilitating configuration of computing engines based on runtime workload measurements at computing devices
US11119835B2 (en) 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
CN107426548A (zh) * 2017-09-07 2017-12-01 四川智慧鹰航空科技有限公司 一种超小型低功耗图像传输设备
US10965555B2 (en) 2018-01-23 2021-03-30 Arista Networks, Inc. Accelerated network traffic sampling using an accelerated line card
US10756989B2 (en) * 2018-01-23 2020-08-25 Arista Networks, Inc. Accelerated network traffic sampling for a non-accelerated line card
US10938680B2 (en) 2018-01-23 2021-03-02 Arista Networks, Inc. Accelerated network traffic sampling using a network chip
US11317143B2 (en) * 2018-08-17 2022-04-26 Roku, Inc. Dynamic reduction in playout of replacement content to help align end of replacement content with end of replaced content
US11178451B2 (en) 2018-08-17 2021-11-16 Roku, Inc. Dynamic playout of transition frames while transitioning between playout of media streams
CN109361950B (zh) * 2018-11-27 2022-02-22 Oppo广东移动通信有限公司 视频处理方法、装置、电子设备及存储介质
CN109379626A (zh) * 2018-11-27 2019-02-22 Oppo广东移动通信有限公司 视频处理方法、装置、电子设备及存储介质
CN109688618A (zh) * 2018-11-27 2019-04-26 Oppo广东移动通信有限公司 视频处理方法、装置、电子设备及存储介质
CN109587546B (zh) 2018-11-27 2020-09-22 Oppo广东移动通信有限公司 视频处理方法、装置、电子设备和计算机可读介质
CN112788198B (zh) * 2019-11-11 2024-04-23 株式会社理光 摄影装置、传送系统及方法、记录介质和计算机装置
KR102221768B1 (ko) * 2019-11-20 2021-03-02 (주)티아이에스씨 다중 카메라 검사 장치
CN111930593B (zh) * 2020-07-27 2023-03-28 长沙景嘉微电子股份有限公司 Gpu占用率确定方法、装置、处理系统及存储介质
US12093100B2 (en) 2020-09-26 2024-09-17 Intel Corporation Hierarchical power management apparatus and method
US11917231B2 (en) 2020-10-29 2024-02-27 Roku, Inc. Real-time altering of supplemental content duration in view of duration of modifiable content segment, to facilitate dynamic content modification
US12028561B2 (en) 2020-10-29 2024-07-02 Roku, Inc. Advanced creation of slightly-different-duration versions of a supplemental content segment, and selection and use of an appropriate-duration version, to facilitate dynamic content modification
US11375242B1 (en) * 2021-01-27 2022-06-28 Qualcomm Incorporated Compression of bitstream indexes for parallel entropy coding
CN113204933B (zh) * 2021-04-29 2024-05-03 上海移远通信技术股份有限公司 一种pcb拼板确定方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058942A1 (en) 2001-06-01 2003-03-27 Christian Hentschel Method of running an algorithm and a scalable programmable processing device
JP2006344283A (ja) 2005-06-08 2006-12-21 Toshiba Corp 録画再生装置及び録画再生方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004507957A (ja) * 2000-08-29 2004-03-11 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ アルゴリズムを実行する方法と、拡張性のあるプログラマブル処理装置
US6704362B2 (en) 2001-07-06 2004-03-09 Koninklijke Philips Electronics N.V. Resource scalable decoding
KR20040065261A (ko) * 2001-12-12 2004-07-21 코닌클리케 필립스 일렉트로닉스 엔.브이. 미디어 시스템 상의 미디어 신호 처리
US7466316B1 (en) * 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7885330B2 (en) 2005-07-12 2011-02-08 Insors Integrated Communications Methods, program products and systems for compressing streaming video data
US7562234B2 (en) * 2005-08-25 2009-07-14 Apple Inc. Methods and apparatuses for dynamic power control
US8667163B2 (en) 2008-09-08 2014-03-04 Sling Media Inc. Systems and methods for projecting images from a computer system
US8676926B2 (en) * 2009-04-15 2014-03-18 Wyse Technology L.L.C. System and method for handling remote drawing commands
US20120044254A1 (en) 2009-04-28 2012-02-23 Keiko Watanuki Display apparatus, display method and program for executing the same
US8502828B2 (en) * 2010-04-12 2013-08-06 Nvidia Corporation Utilization of a graphics processing unit based on production pipeline tasks
CN101901042B (zh) * 2010-08-27 2011-07-27 上海交通大学 多gpu系统中基于动态任务迁移技术的降功耗方法
US10002021B2 (en) * 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058942A1 (en) 2001-06-01 2003-03-27 Christian Hentschel Method of running an algorithm and a scalable programmable processing device
JP2006344283A (ja) 2005-06-08 2006-12-21 Toshiba Corp 録画再生装置及び録画再生方法

Also Published As

Publication number Publication date
KR20140018157A (ko) 2014-02-12
CN103577269A (zh) 2014-02-12
KR20150096639A (ko) 2015-08-25
EP2693761A3 (en) 2014-04-16
US8928678B2 (en) 2015-01-06
US20140035938A1 (en) 2014-02-06
EP2693761A2 (en) 2014-02-05
CN103577269B (zh) 2017-12-19

Similar Documents

Publication Publication Date Title
KR101634500B1 (ko) 미디어 작업부하 스케줄러
TWI513316B (zh) 轉碼視頻資料之技術
EP3167616B1 (en) Adaptive bitrate streaming for wireless video
US9589543B2 (en) Static frame image quality improvement for sink displays
US10257510B2 (en) Media encoding using changed regions
US20140198838A1 (en) Techniques for managing video streaming
KR20190015093A (ko) 향상된 비디오 코딩을 위한 참조 프레임 재투영
US20140086310A1 (en) Power efficient encoder architecture during static frame or sub-frame detection
US20160088298A1 (en) Video coding rate control including target bitrate and quality control
US9426439B2 (en) Exposing media processing features
JP2016531502A (ja) 低電力画像圧縮及び表示のための技術
TWI590652B (zh) 無線帶寬在編碼器中的減少
US20140321532A1 (en) Techniques for coordinating parallel video transcoding
EP2795896A1 (en) Dram compression scheme to reduce power consumption in motion compensation and display refresh
CN107736026B (zh) 样本自适应偏移编码
US10547839B2 (en) Block level rate distortion optimized quantization
US10104373B2 (en) Content based video encoding for wireless display
US10484714B2 (en) Codec for multi-camera compression
WO2014209296A1 (en) Power efficient encoder architecture during static frame or sub-frame detection
JP2017184262A (ja) ビデオ符号化及び復号のためのヒストグラム分割ベースのローカル適応フィルタ
JP2017028714A (ja) ビデオ符号化及び復号のためのヒストグラム分割ベースのローカル適応フィルタ

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4