KR20170041760A - 프레임 페이싱을 위한 방법 및 시스템 - Google Patents

프레임 페이싱을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20170041760A
KR20170041760A KR1020177004860A KR20177004860A KR20170041760A KR 20170041760 A KR20170041760 A KR 20170041760A KR 1020177004860 A KR1020177004860 A KR 1020177004860A KR 20177004860 A KR20177004860 A KR 20177004860A KR 20170041760 A KR20170041760 A KR 20170041760A
Authority
KR
South Korea
Prior art keywords
delay
frame
gpu
rendering
frames
Prior art date
Application number
KR1020177004860A
Other languages
English (en)
Other versions
KR102476197B1 (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 KR20170041760A publication Critical patent/KR20170041760A/ko
Application granted granted Critical
Publication of KR102476197B1 publication Critical patent/KR102476197B1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/489Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using time information
    • G06F17/30044
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • 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

Abstract

렌더링 프로세스에서의 프레임 페이싱을 위한 방법 및 시스템이 제공된다. 상기 방법은 복수의 그래픽 처리 장치(GPU)의 각각에 대한 프레임 렌더링 시간을 추정하는 단계; 적어도 추정된 프레임 렌더링 시간에 기초하여 지연을 결정하는 단계; 및 프레임들을 고르게 간격을 둔 방식으로 렌더링하기 위해 지연을 렌더링 프로세스에 삽입하는 단계를 포함한다.

Description

프레임 페이싱을 위한 방법 및 시스템{METHOD AND SYSTEM FOR FRAME PACING}
관련 출원에 대한 상호 참조
본 출원은 2014년 8월 8일에 출원된, 미국 가 특허 출원 제62/035,124호의 혜택을 주장하며, 이는 완전히 제시된 것과 같이 참조로 원용된다.
본 발명은 일반적으로 그래픽 프로세싱에 관한 것이다.
그래픽 프로세싱은 일반적으로 중앙 처리 유닛(CPU) 및 다수의 그래픽 처리 유닛(GPU)의 조합을 사용하여 수행된다. 다수의 GPU를 사용하는 렌더링 시스템들에서, 각 GPU는 완료된 프레임을 렌더링하고 그것이 프레임을 완료할 때 그것을 디스플레이에 시각화한다. 다른 GPU가 렌더링을 거의 완료할 때 각 GPU에 대한 프레임들이 렌더링을 완료하는 경우, 렌더링되는 제1 프레임(들)은 후속 프레임들(이미 완료된)보다 적은 시간 동안 스크린에 디스플레이될 것이다.
해당 프레임들이 디스플레이되는 시간의 양이 고르게 스페이싱되지 않는 경우, 사용자가 낮은 프레임률들을 시각적으로 보고 감지할 수 있다(사실상 셔터를 일으킨다). 이는 공칭상 프레임 셔터링(stuttering) 또는 마이크로 스터링(micro-stuttering)으로 지칭된다. 다수의 GPU에 의해 렌더링되는 애플리케이션들, 이를테면 3D 애플리케이션들에 대한 시각적 그리고/또는 감지된 프레임 셔터링 및/또는 마이크로 스터링을 극복하기 위한 방법들 및 시스템들이 요구된다.
본 출원에서 프레임 페이싱을 위한 방법 및 시스템이 설명된다. 일반적으로, 프레임 페이싱은 후속 프레임들의 디스플레이에 고르게 간격을 두는 지연, 및 애플리케이션 작업 부하가 달라짐에 따라 지연을 측정 및 조절하는 측정 메커니즘을 더한다.
첨부한 도면들과 함께 예로서 제공되는, 이하의 설명으로 보다 상세하게 이해될 수 있으며, 여기서:
도 1은 하나 이상의 개시된 실시예가 구현될 수 있는 예시적인 디바이스의 블록도이다;
도 2는 몇몇 실시예에 따른 예시적인 그래픽 렌더링 파이프라인이다;
도 3은 듀얼 그래픽 처리 유닛(GPU)으로 렌더링하는 예이다;
도 4는 몇몇 실시예에 따른 프레임 페이싱에 대한 예시적인 상위 레벨 블록도이다;
도 5는 몇몇 실시예에 따른 프레임 페이싱에 대한 예시적인 흐름도이다;
도 6은 몇몇 실시예에 따른 프레임 페이싱에 대한 다른 예시적인 흐름도이다;
도 7은 몇몇 실시예에 따른 프레임 페이싱에 대한 순서도의 예이다;
도 8은 몇몇 실시예에 따른 듀얼 GPU 아키텍처에서의 프레임 페이싱에 대한 순서도의 예이다;
도 9는 몇몇 실시예에 따른 하나의 타이머를 갖는 프레임 페이싱에 대한 순서도의 예이다;
도 10은 몇몇 실시예에 따른 프레임 페이싱에 대한 순서도의 동작들의 예이다;
도 11은 대칭적인 아키텍처에서의 스튜터링(stuttering)의 예시적인 도해이다;
도 12는 몇몇 실시예에 따른 대칭적인 아키텍처에서의 프레임 페이싱 또는 안티-스튜터링의 예시적인 도해이다;
도 13은
Figure pct00001
인 대칭 아키텍처에서의 스튜터링의 예시적인 도해이다;
도 14는
Figure pct00002
인 대칭 아키텍처에서의 스튜터링의 예시적인 도해이다;
도 15는 느린 슬레이브 시나리오에서의 스튜터링의 예시적인 도해이다;
도 16은 몇몇 실시예에 따른 느린 슬레이브 시나리오에서의 안티-스튜터링의 예시적인 도해이다;
도 17은 몇몇 실시예에 따라, 비대칭 크로스파이어(ACF; asymmetric crossfire)가 1:2이고 "1"이 병목 상태인, 낮은 슬레이브 시나리오에서의 안티-스튜터링의 예시적인 도해이다; 그리고
도 18은 몇몇 실시예에 따라, ACF가 1:2이고 "2"가 병목 상태인, 낮은 슬레이브 시나리오에서의 안티-스튜터링의 예시적인 도해이다.
본 출원에서 프레임 페이싱을 위한 방법 및 시스템이 설명된다. 일반적으로, 프레임을 렌더링하는 데 시간이 얼마나 걸리는지에 관한 추정이 이루어진다. 이는 그래픽 처리 장치(GPU)가 프레임을 렌더링하는데 시간이 얼마나 걸리는지를 측정함으로써 행해질 수 있다. 프레임마다 작업 부하 및 GPU들의 렌더 속도의 차이들을 매끄럽게 하기 위해 몇몇 최근 프레임 동안의 평균이 사용된다. GPU들의 진행을 제어하고 그것들의 시각화들을 매끄럽게 하는 하트비트(heartbeat)가 생성된다. 결정된 적절한 시간의 양이 드라이버(예를 들어, 커널 모드 드라이버(KMD; kernel mode driver))에서 대기되고, 그에 따라 프레임들이 고르게 스페이싱된다. 프레임 페이싱은 기본적으로 다른 GPU에 대하여 너무 이르게 올 수 있는 하나의 GPU에서의 프레임의 플립핑(flipping)을 연기한다.
도 1은 하나 이상의 개시된 실시예가 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋-탑 박스, 텔레비전, 이동 전화, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 저장 장치(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 입력 드라이버(112) 및 출력 드라이버(114)를 임의로 포함할 수 있다. 디바이스(100)가 도 1에 도시되지 않은 추가 구성요소들을 포함할 수 있다는 것이 이해된다.
프로세서(102)는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 동일한 다이 상에 위치되는 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함할 수 있으며, 여기서 각 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치될 수 있거나, 또는 프로세서(102)와 별개로 위치될 수 있다. 메모리(104)는 휘발성 또는 비- 휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함할 수 있다. GPU들은 동일한 유형의 GPU(대칭 크로스파이어) 또는 상이한 유형들의 GPU들(비대칭 크로스파이어(ACF))일 수 있다. 예를 들어, 시스템 또는 프로세서에서의 GPU들은 이에 제한되는 것은 아니나, 가속 처리 장치들(APU들), 이산형 GPU들(dGPU들), 및/또는 이들의 조합들을 포함할 수 있다.
저장 장치(106)는 고정식 또는 착탈가능식 저장 장치, 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광 디스크, 또는 플래시 드라이브를 포함할 수 있다. 입력 디바이스들(108)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함할 수 있다. 출력 디바이스들(110)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 광, 안테나, 또는 네트워크 연결부(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함할 수 있다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)로부터 출력을 전송하게 한다. 입력 드라이버(112) 및 출력 드라이버(114)는 임의적 구성요소들이라는 것, 및 디바이스(100)는 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우와 동일한 방식으로 작동할 것이라는 것이 주의된다.
도 2는 예시적인 그래픽 렌더링 파이프라인(200)이다. 예시를 위해 그리고 상황을 제공하기 위해, 그래픽 렌더링 파이프라인(200)은 Windows® 기반 운영 체제(O/S)를 사용하는 것으로 도시되나 어떤 O/S도 사용될 수 있다. 일반적으로, 그래픽 렌더링 파이프라인(200)은 응용 모듈/계층/실체(205), Windows® O/S 모듈/계층/실체(210), 드라이버 모듈/계층/실체(220) 및 하드웨어(230)를 포함한다. 용어 모듈/계층/실체는 본 출원에서 총괄하여 실체로서 지칭될 것이다.
응용 실체(205)는 다른 기능 중에서도, 사용자 입력을 핸들링한다. 응용 실체(205)는 예를 들어, 게임 세계에 대하여 예를 들어, 객체 위치들, 물리현상 기타 같은 종류의 것을 업데이트하는 시뮬레이터(207)를 포함한다. 시뮬레이터(207)는 프레임을 생성하기 위해, 예를 들어, Direct 3D API를 통해 드로우 콜들(draw calls)을 생성하는 렌더러(209)에 접속 또는 연결(본 출원에서 연결로서 지칭된다)된다. 렌더러(209)는 명령들을 파싱하고 DDI 인터페이스를 통해 사용자 모드 드라이버(UMD; User Mode Driver)(222)를 호출하는 Direct3D 런타임 실체(211)에 접속된다. UMD(222)는 GPU 명령 버퍼들을 생성하고 그것들을 Windows® O/S(210)에 그리고 특히, Direct3D 런타임 실체(211)에 작업 의뢰한다. 그 다음 GPU 명령 버퍼들은 Windows® O/S(210) 커널 스케줄러(215)가 그것들을 수용할 준비가 될 때까지 컨텍스트 큐(context queue)(213)에 배치된다. GPU 명령 버퍼들은 커널 모드 드라이버(KMD)(224)에 전달되며, 이는 그것들을 프로세싱하고 그것들을 GPU(232)로 전송한다. 응용 실체(205)는 프레임이 렌더링을 끝내고 디스플레이될 수 있을 때 시각화 콜들을 전송한다. 시각화 콜들은 드로우 콜들과 동일한 논리 경로에 따른다.
도 3은 그래픽 프로세싱을 위해 다수의 GPU 아키텍처를 사용할 때 마이크로-스튜터링 이슈를 시각적으로 예시한다. 일반적으로, 다수의 GPU 중 작업 배당들 또는 할당들은 교대 프레임 렌더링(AFR; Alternate Frame Rendering)이라 불리우는 프로세스를 사용하며, 여기서 각 GPU는 동일한 프레임의 부분 상에서 작동하는 다수의 GPU의 각각에 대한 그 자체의 프레임을 획득한다. AFR은 각 GPU의 출력이 페이싱될 때 각 GPU가 가능한 고른 레이트로 렌더링된 프레임을 전달하도록 양호하게 작동한다. 예를 들어, 도 3에 도시된 바와 같이, 단일 GPU(SGPU; single GPU) 플로우(300)에서는, 프레임들이 렌더링되고 축차적으로 시각화된다. 이상적인 듀얼 GPU 플로우(305)에서는, GPU 1의 출력이 GPU 0에 그것의 프레임이 대략 절반 완료되었을 때 완료된다. 그러나, 실제로 발생하는 것이 실제 듀얼 GPU 플로우(310)에 도시된다. GPU 1에 대한 프레임이 GPU 0이 렌더링을 거의 완료할 때 완료되는 경우, 렌더링되는 제1 프레임은 제2 또는 후속 프레임보다 적은 시간 동안 스크린에 디스플레이될 것이다. 해당 프레임들이 디스플레이되는 시간의 양이 고르게 스페이싱되지 않는 경우, 사용자가 낮은 프레임률들, 즉, 마이크로-스튜터링을 시각적으로 보고 감지할 수 있다.
본 출원에서 프레임 페이싱을 위한 방법 및 시스템이 설명된다.
도 4는 두 개의 GPU 아키텍처(400)의 예를 도시한다; 도 5는 상위 레벨 흐름도(500)를 도시한다; 도 6은 두 개의 GPU 아키텍처(400)에 대한 예시적인 흐름도를 도시한다; 그리고 도 7은 두 개의 GPU 아키텍처(400)에 대해 UMD 관점에서 프레임 페이싱 플로우 또는 시퀀스(600)의 상위 레벨 예를 도시한다. 세 개의 도면은 본 출원에 설명되는 바와 같은 프레임 페이싱을 총괄하여 예시한다. 시스템 아키텍처는 본 출원에 설명되는 본 발명의 범위에서 벗어나지 않고 임의의 수의 CPU, GPU, 프로세서 기타 같은 종류의 것을 포함할 수 있다. 특히, 두 개의 GPU 아키텍처(400)는, 차례로 디스플레이(420)에 접속되는, GPU(410) 및 GPU(415)에 접속되는 CPU(405)를 포함한다. 각 GPU(410) 및 GPU(415)는 본 출원에서 아래에 설명될 바와 같이 지연의 시작 및 완료를 시그널링하기 위한 타이머(412 및 417)를 가질 수 있다.
이제 도 4 및 도 5를 참조하면, 프레임을 렌더링하는 데 시간이 얼마나 걸리는지에 관한 추정이 이루어진다(505). 이는 GPU들(410 및 415)이 프레임을 렌더링하는 데 시간이 얼마나 걸리는지를 측정함으로써 행해질 수 있다. 예를 들어, GPU들이 프레임들을 렌더링하는 데 시간이 얼마나 걸리는지를 측정하기 위해 타임 스탬프 쿼리들이 사용될 수 있다. 프레임마다 작업 부하 및 GPU들의 렌더 속도들의 차이들을 매끄럽게 하기 위해 몇몇 최근 프레임 동안의 평균이 사용된다(510). GPU들의 진행을 제어하고 그것들의 시각화들을 매끄럽게 하는 하트비트가 생성되며(515), 여기서 하트비트는 프레임들이 시각화되어야 할 때의 펄스 또는 정상 틱킹(ticking)이다. 결정된 적절한 시간의 양이 커널 모드 드라이버(KMD)에서 대기되고, 그에 따라 프레임들이 고르게 스페이싱된다(520). 예를 들어, 더미 스케줄링 가능한 엔진이 KMD에 생성된다. 사용자 모드 드라이버(UMD)는 지연(예상 프레임 시간의 90% 내지 95%일 수 있는)을 요청하기 위한 더미 명령 버퍼들을 이 더미 엔진으로 작업 의뢰한다. KMD는 요청된 지연이 전달되었을 때 명령 버퍼를 완료된 것으로 보고한다(525). 렌더링 프로세스가 지연보다 시간이 오래 걸리는 경우, 시각화는 렌더링 프로세스가 완료되자마자 행해질 것이다. 사실상, 지연은 GPU가 프레임을 시각화하기 위한 최소 대기 시간이다. UMD는 Microsoft®(MS) 동기화 객체의 신호들을 더미 엔진에 작업 의뢰한다. UMD는 일반 3D 엔진들 상의 이러한 동기화 객체를 기다린다.
이제 도 6 및 도 7을 참조하면, 두 개의 GPU 아키텍처(400)에 대해, 렌더 명령이 GPU 0(605)에 전송된다. UMD(UMD는 도 2에 도시됨)는 KMD(KMD는 도 2에 도시됨)(610)의 더미 엔진에 지연 요청을 작업 의뢰한다. 이는 도 7의 더미 엔진 플로우에 "지연"으로 도시된다. 본 출원에서 아래에 설명 및 제시될 바와 같이, 지연은 사실상, 이후 GPU가 시각화할 수 있는 최소한의 시간의 양을 제공한다. 즉, 렌더링 프로세스가 지연의 진행 이전에 완료되는 경우, GPU는 지연의 진행 이후 시각화한다. 신호는 더미 엔진에 의해 GPU 0로 전송된다(615). 이는 도 7에서 "S"로서 도시된다. GPU 0은 필요한 지연 시간을 대기한다(620). 이는 도 7에서 "W"로서 도시된다. GPU 0은 필요한 지연 시간 이후 시각화한다(625). 이는 도 7에서 "P"로서 도시된다. 시퀀스는 그 다음 GPU 1에 대해 반복된다. 특히, 렌더 명령은 GPU 1로 전송된다(630). UMD는 KMD의 더미 엔진에 지연 요청을 작업 의뢰한다(635). 신호는 더미 엔진에 의해 GPU 1로 전송된다(640). GPU 1은 필요한 지연 시간을 대기한다(645). GPU 1은 필요한 지연 시간이 끝난 이후 시각화하고(650) 렌더링 프로세스가 완료된다. 즉, 시각화는 지연 기간보다 이전일 수 없고 렌더링 프로세스가 또한 완료되어서야 가능하다. 시퀀스는 그 다음 GPU 0 및 GPU 1에 대해 반복된다.
도 8은 프레임 페이싱 플로우 또는 시퀀스(800)의 다른 상위 레벨 예를 도시한다. 렌더 명령(805)은 GPU 0으로 전송되고 렌더 명령(810)은 GPU 1로 전송된다. GPU 0은 시각화(P)하고(815) 또한 (도 2에 도시된 바와 같은 UMD를 통해) GPU 1이 시각화하기 전 소정의 시간의 양(지연)(830)을 대기(W)하기를(825) GPU 0 상의 타이머에 시그널링(S)한다(820). ("버블"에 의해 도시된 바와 같은) 지연을 대기(830)한 후, GPU 0 상의 타이머는 대기(W)(840)가 끝나고 GPU 1이 시각화(P)(845)할 수 있다는 신호(S)를 GPU 1로 전송한다(835). 그 다음 GPU 1은 (도 2에 도시된 바와 같은 UMD를 통해) GPU 0이 시각화하기 전 소정의 시간의 양(지연)(860)을 대기(W)하기를(855) GPU 1 상의 타이머에 시그널링(S)한다(850). 이러한 사례에서, 지연(860)은 GPU 0에 의해 렌더링 프로세스를 완료하는 데 필요한 시간과 일치한다. 이는 이후 시퀀스들에 어떤 "버블"도 도시되지 않는다는 사실에 의해 예시된다. 사실상, 지연이 렌더링 프로세싱을 오프셋하기 위해 GPU 0 및 GPU 1 사이에 삽입되고 GPU 0 및 GPU 1 간 프로세싱을 정렬하면, 오프셋이 항상 존재할 것이고 지연은 스루풋 또는 프레임률에 거의 영향을 미치지 않을 것이다. 몇몇 이유로 인해, GPU들 중 하나가 정렬에서 어긋나는 경우, 오프셋은 정렬을 바로잡을 것이다.
실시예에서, 프레임 페이싱은 시각화 디바이스 드라이버 인터페이스들(DDI들; device driver interfaces)에 영향을 미칠 것이고 비-시각화 DDI들에는 그렇지 않을 것이다.
본 출원에 설명된 실시예들에서, 프레임 시간에 대한 계산들 및 관리가 UMD에서 행해진다. 다른 실시예들에서, 프레임 시간에 대한 계산들 및 관리는 KMD에서 행해진다.
실시예에서, 지연의 양은 조정될 수 있다.
실시예에서, 다수의 GPU 아키텍처에서 프레임 페이싱을 구현하기 위해 하나의 타이머가 사용될 수 있다. 이는 도 9에 예시되고 하나의 타이머가 사용된다는 점을 제외하고는 도 8과 유사하게 작동한다.
실시예에서, 본 출원에 설명된 프레임 페이싱은 합성 하드웨어 아키텍처, 플립핑 하드웨어 아키텍처 및/또는 합성 소프트웨어 아키텍처에서 이용될 수 있다.
도 10을 참조하면, 본 출원에서 위에서 설명된 바와 같은 타임 스탬프 쿼리들의 예시적인 예시가 존재한다. 특히, 도 10은 듀얼 GPU 상의 동작들을 도시한다. 두 개의 쿼리 객체들이 모든 프레임 - 하나는 (Q)로서 표기되어, 프레임의 처음에, 그리고 하나는 (Q')로서 표기되어, 프레임의 마지막에 - 에서 사용된다. 쿼리 객체 상의 GetData(데이터 획득)(Q에 대해 G 그리고 Q'에 대해 G')는 쿼리 객체가 GPU에 의해 프로세싱되는 시간을 검색한다. Q 및 Q' 간 간격은 프레임 시간이다. BeginFrame(프레임 시작)() 은 프레임의 처음으로 지칭되고, Q를 GPU로 삽입한다. EndFrame(프레임 종료)() 은 프레임의 마지막으로 지칭되고, Q'를 GPU로 삽입한다(도 10의 숫자는 이러한 콜이 예시적인 드라이버에서 발생하는 때를 도시한다).
다중-GPU 시스템 상에서는, 단지 마스터 GPU(GPU 0)만 스크린 출력들을 구동하는 한편 다른 GPU(들)는 그렇지 않다는 것이 가능하다. 합성 소프트웨어는 모든 슬레이브 프레임을 디스플레이를 위한 마스터 GPU로 복사하는 이러한 시나리오에서 사용된다. 합성 소프트웨어는 마이크로-스튜터링 뿐만 아니라 합성 하드웨어를 부담한다. 도 11은 대칭 크로스파이어(1:1) 스튜터링의 예를 도시하며, 여기서 대칭 크로스파이어는 동일한 유형의 GPU들이 프로세서 또는 시스템에서 사용되고 있음을 의미한다. 테어링(tearing)을 제거하기 위해 GPU 0 상에 추가 표면(0)이 생성된다. 두껍고 편중된 수직선은 마스터의 3D 엔진 상의 플립인 한편 점선은 마스터의 SDMA 엔진 상에 있다. 얇고 편중된 셰도우 박스(shadow box)는 소프트웨어 합성 SDMA 전송 및 그것의 타겟을 의미한다. 다른 박스들은 3D cmdbufs이다 - 박스 안의 숫자는 프레임 번호이고, 문자는 렌더 타겟이다. 각 슬레이브 프레임에 대해, 세 개의 동작이 직렬화될 필요가 있다: GPU 1은 그것의 3D 엔진 상의 프레임을 렌더링하는 것을 끝내고; GPU 1은 그것의 SDMA 엔진을 통해 GPU 0으로 프레임을 전달하며, GPU 0은 그것의 SDMA 엔진을 통해 화면에 프레임을 시각화한다. 프레임들 0, 2 및 4가 프레임들 1, 3 및 5보다 훨씬 더 짧게 화면에 머무른다는 것이 분명하다.
듀얼 GPU 아키텍처 예에서, 모든 시각화가 동일한 길이를 갖는 도 12에 도시된 바와 같이 프레임 페이싱을 구현하기 위해 지연을 갖는 GPU 0 상의 타이머가 사용된다. 지연은 식 1에 제시된 바와 같이 계산될 수 있다.
Figure pct00003
식 1
상기 식에서
Figure pct00004
은 GPU 0이 프레임를 렌더링하는 데 걸리는 시간이고,
Figure pct00005
은 GPU 1이 프레임를 렌더링하는 데 걸리는 시간이며,
Figure pct00006
은 SDMA 엔진이 GPU 1에서 GPU 0으로 프레임을 전달하는 데 걸리는 시간이다.
느린 전달의 예에서, GPU 0 및 GPU 1이 프레임을 렌더링하는 데 동일한 시간(
Figure pct00007
) 이 걸린다고 가정하자.
Figure pct00008
인 경우, GPU 1 상의 프레임 N+1이 GPU 0 상의 프레임 N보다 먼저 완료된다. 도 13에 도시된 바와 같이, 프레임 5는 프레임 4 이전에 완료되고, 프레임 7은 프레임 6 이전에 완료되는 등이다. 이러한 레이아웃은 교차-GPU 자원 전달들에 취약하다. 도 14는 전달이 병목 상태에 있고
Figure pct00009
인 경우의 예를 도시한다. 상기 느린 전달 이슈가 이론적으로 가능하더라도, 느린 전달 예는 실세계 응용들에는 아무런 실효가 없다.
도 15 내지 도 18은 GPU들이 동시에 렌더링하지 않는 비대칭 크로스파이어(ACF) 아키텍처임을 제외하고는 도 11 내지 도 14와 유사하다. 도 17 및 도 18은 AFR 비가 1:2로 불균형할 때의 ACF를 도시한다, 즉 하나의 GPU가 3개 중 2개의 프레임을 렌더링한다.
도 15는 ACF 1:1인 느린 슬레이브 이슈의 예를 도시하고, 도 16은 느린 슬레이브 이슈들을 해결하기 위한 프레임 페이싱 구현을 도시한다.
ACF 1:2 아키텍처에서는, 마스터의 3D 상의 프레임들 플립핑하든 SDMA 상의 프레임들이 플립핑하든 문제가 안 된다. 이유는 프레임 5가 B가 스크린에서 빗나가기를 기다려야 한다는 것이다.
도 17은 "1"이 병목 상태에 있고
Figure pct00010
가 GPU 1 상의 두 개의 연속적인 프레임의 합인 경우, ACF 1:2에 대한 해결 방법을 도시한다.
도 18은 "2"가 병목 상태에 있는 경우, ACF 1:2에 대한 해결 방법을 도시한다.
일반적으로, 렌더링 프로세스에서의 프레임 페이싱을 위한 방법은 복수의 그래픽 처리 장치(GPU)의 각각에 대한 프레임 렌더링 시간을 추정하는 단계, 적어도 추정된 프레임 렌더링 시간에 기초하여 지연을 결정하는 단계 및 프레임들을 고르게 간격을 둔 방식으로 렌더링하기 위해 지연을 렌더링 프레임에 삽입하는 단계를 포함한다. 실시예에서, 지연은 GPU들 상의 애플리케이션 작업 부하에 기초하여 동적으로 조절될 수 있다. 예에서, 추정된 프레임 렌더링 시간은 미리 결정된 양의 프레임들 동안 취해진 평균이다. 예에서, 렌더링 프로세스 및 프레임 시각화들을 제어하기 위해 적어도 상기 지연에 기초하여 하트비트가 설정된다. 예에서, 지연을 이네이블하기 위해 적어도 하나의 타이머가 사용된다. 예에서, 추정된 프레임 렌더링 시간을 결정하기 위해 타임 스탬프 쿼리들이 사용된다. 예에서, 지연은 커널 모드 드라이버(KMD)에서 구현된다. 지연을 구현하기 위해 더미 스케줄링 가능한 엔진이 KMD에 생성된다. 시각화는 지연의 만료 또는 렌더링 프로세스의 완료 이후에 발생한다.
렌더링 프로세스에서의 프레임 페이싱을 위한 시스템은 복수의 그래픽 처리 장치(GPU)의 각각에 대한 프레임 렌더링 시간을 추정하도록 구성된 제1 프로세싱 모듈을 포함한다. 제1 프로세싱 모듈은 적어도 추정된 프레임 렌더링 시간에 기초하여 지연을 결정하도록 구성된다. 제2 프로세싱 모듈은 프레임들을 고르게 간격을 둔 방식으로 렌더링하기 위해 상기 지연을 상기 렌더링 프레임에 삽입하도록 구성된다. 실시예에서, 지연은 GPU들 상의 애플리케이션 작업 부하에 기초하여 동적으로 조절될 수 있다. 예에서, 추정된 프레임 렌더링 시간은 미리 결정된 양의 프레임들 동안 취해진 평균이다. 예에서, 렌더링 프로세스 및 프레임 시각화들을 제어하기 위해 적어도 상기 지연에 기초하여 하트비트가 설정된다. 예에서, 지연을 이네이블하기 위해 적어도 하나의 타이머가 사용된다. 예에서, 추정된 프레임 렌더링 시간을 결정하기 위해 타임 스탬프 쿼리들이 사용된다. 예에서, 제2 프로세싱 모듈은 커널 모드 드라이버(KMD)이다. 지연을 구현하기 위해 더미 스케줄링 가능한 엔진이 KMD에 생성된다. 시각화는 지연의 만료 또는 렌더링 프로세스의 완료 이후에 발생한다. 예에서, 제1 프로세싱 모듈은 UMD일 수 있고 제2 프로세싱 모듈은 KMD일 수 있다.
본 출원에서의 개시 내용에 기초하여 많은 변경이 가능하다는 것이 이해되어야 한다. 피처들 및 요소들이 특정한 조합들로 위에서 설명되었지만, 각 피처 또는 요소가 다른 피처들 또는 요소들 없이 단독으로 또는 다른 피처들 및 요소들을 갖거나 갖지 않는 다양한 조합으로 사용될 수 있다.
제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로 구현될 수 있다. 적합한 프로세서들은 예로서, 범용 프로세서, 전용 프로세서, 종래 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관하여 하나 이상의 마이크로프로세서, 컨트롤러, 마이크로컨트롤러, 어플리케이션 특정 집적 회로들(ASIC들), 필드 프로그램가능 게이트 어레이들(FPGA들) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다. 그러한 프로세서들은 프로세싱된 하드웨어 기술 언어(HDL) 명령들 및 넷 리스트들을 포함하는 다른 중개 데이터(컴퓨터 판독가능한 매체 상에 저장될 수 있는 명령들)의 결과들을 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 그 다음 그러한 프로세싱의 결과들은 본 발명의 측면들을 구현하는 프로세서를 제조하기 위한 반도체 제조 프로세스에서 사용되는 마스크워크들일 수 있다.
본 출원에 제공된 방법들 또는 흐름도들은 범용 컴퓨터 또는 프로세서에 의해 실행하기 위해 컴퓨터-판독가능한 저장 매체로 통합되는 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 컴퓨터-판독가능한 저장 매체들의 예들은 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 자기 미디어 이를테면 내부 하드 디스크들 및 착탈가능한 디스크들, 광 자기 매체, 및 광 매체 이를테면 CD-ROM 디스크들, 및 디지털 다목적 디스크들(DVD들)을 포함한다.

Claims (18)

  1. 렌더링 프로세스에서의 프레임 페이싱을 위한 방법으로서,
    복수의 그래픽 처리 장치(GPU)의 각각에 대한 프레임 렌더링 시간을 추정하는 단계;
    적어도 추정된 프레임 렌더링 시간에 기초하여 지연을 결정하는 단계; 및
    프레임들을 고르게 간격을 둔 방식으로 렌더링하기 위해 상기 지연을 상기 렌더링 프레임들에 삽입하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 지연은 상기 GPU들 상의 애플리케이션 작업 부하에 기초하여 동적으로 조절되는, 방법.
  3. 청구항 1에 있어서, 추정된 상기 프레임 렌더링 시간은 미리 결정된 양의 프레임들 동안 취해진 평균인, 방법.
  4. 청구항 1에 있어서, 상기 렌더링 프로세스 및 프레임 시각화들을 제어하기 위해 적어도 상기 지연에 기초하여 하트비트(heartbeat)가 설정되는, 방법.
  5. 청구항 1에 있어서, 상기 지연을 이네이블하기 위해 적어도 하나의 타이머가 사용되는, 방법.
  6. 청구항 1에 있어서, 추정된 상기 프레임 렌더링 시간을 결정하기 위해 타임 스탬프 쿼리들이 사용되는, 방법.
  7. 청구항 1에 있어서, 상기 지연은 커널 모드 드라이버(KMD; kernel mode driver)에서 구현되는, 방법.
  8. 청구항 7에 있어서, 상기 지연을 구현하기 위해 상기 KMD에 더미 스케줄링 가능한 엔진이 생성되는, 방법.
  9. 청구항 1에 있어서, 상기 지연의 만료 또는 상기 렌더링 프로세스의 완료 이후에 시각화가 발생하는, 방법.
  10. 렌더링 프로세스에서의 프레임 페이싱을 위한 시스템으로서,
    복수의 그래픽 처리 장치(GPU)의 각각에 대한 프레임 렌더링 시간을 추정하도록 구성된 제1 프로세싱 모듈로서,
    적어도 추정된 프레임 렌더링 시간에 기초하여 지연을 결정하도록 구성된, 상기 제1 프로세싱 모듈; 및
    프레임들을 고르게 간격을 둔 방식으로 렌더링하기 위해 상기 지연을 상기 렌더링 프로세스에 삽입하도록 구성된 제2 프로세싱 모듈을 포함하는, 시스템.
  11. 청구항 10에 있어서, 지연은 상기 GPU들 상의 애플리케이션 작업 부하에 기초하여 동적으로 조절되는, 시스템.
  12. 청구항 10에 있어서, 추정된 상기 프레임 렌더링 시간은 미리 결정된 양의 프레임들 동안 취해진 평균인, 시스템.
  13. 청구항 10에 있어서, 상기 렌더링 프로세스 및 프레임 시각화들을 제어하기 위해 적어도 상기 지연에 기초하여 하트비트가 설정되는, 시스템.
  14. 청구항 10에 있어서, 상기 지연을 이네이블하기 위해 적어도 하나의 타이머가 사용되는, 시스템.
  15. 청구항 10에 있어서, 추정된 상기 프레임 렌더링 시간을 결정하기 위해 타임 스탬프 쿼리들이 사용되는, 시스템.
  16. 청구항 10에 있어서, 상기 제2 프로세싱 모듈은 커널 모드 드라이버(KMD)인, 시스템.
  17. 청구항 16에 있어서, 상기 지연을 구현하기 위해 상기 KMD에 더미 스케줄링 가능한 엔진이 생성되는, 시스템.
  18. 청구항 10에 있어서, 상기 지연의 만료 또는 상기 렌더링 프로세스의 완료 이후에 시각화가 발생하는, 시스템.
KR1020177004860A 2014-08-08 2015-08-07 프레임 페이싱을 위한 방법 및 시스템 KR102476197B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462035124P 2014-08-08 2014-08-08
US62/035,124 2014-08-08
PCT/US2015/044128 WO2016022874A1 (en) 2014-08-08 2015-08-07 Method and system for frame pacing

Publications (2)

Publication Number Publication Date
KR20170041760A true KR20170041760A (ko) 2017-04-17
KR102476197B1 KR102476197B1 (ko) 2022-12-09

Family

ID=55264602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177004860A KR102476197B1 (ko) 2014-08-08 2015-08-07 프레임 페이싱을 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US9679345B2 (ko)
EP (1) EP3178065B1 (ko)
JP (1) JP6633614B2 (ko)
KR (1) KR102476197B1 (ko)
CN (1) CN106575302B (ko)
WO (1) WO2016022874A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102606693B1 (ko) * 2016-08-23 2023-11-28 삼성전자 주식회사 전자 장치 및 전자 장치의 동작 제어 방법
US20180329742A1 (en) * 2017-05-10 2018-11-15 Mediatek Inc. Timer-assisted frame running time estimation
CN109474768A (zh) * 2017-09-08 2019-03-15 中兴通讯股份有限公司 一种提高图像流畅度的方法及装置
CN108769785B (zh) * 2018-06-29 2020-11-03 京东方科技集团股份有限公司 视频播放方法、装置及存储介质
GB202012559D0 (en) * 2020-08-12 2020-09-23 Samsung Electronics Co Ltd Reducing latency between receiving user input and displaying resulting frame
US20220122566A1 (en) * 2020-10-16 2022-04-21 Intel Corporation Frame pacing for improved experiences in 3d applications
US11935149B2 (en) 2020-11-13 2024-03-19 Samsung Electronics Co., Ltd Electronic device and image rendering method thereof for adjusting frame rate
CN112954402B (zh) * 2021-03-11 2023-04-28 北京字节跳动网络技术有限公司 视频显示方法、设备及存储介质
CN115375530A (zh) * 2022-07-13 2022-11-22 北京松应科技有限公司 一种多gpu协同渲染方法、系统、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070035958A (ko) * 2005-09-28 2007-04-02 가부시키가이샤 히다치 고쿠사이 덴키 화상 처리 장치
KR20080080614A (ko) * 2005-12-05 2008-09-04 디지털 디스플레이 이노베이션, 엘엘씨 디지털 디스플레이 시스템의 필드 순차 광원 변조
US7545380B1 (en) * 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
JP2010020186A (ja) * 2008-07-11 2010-01-28 Canon Inc 画像処理装置及びその制御方法
WO2011118199A1 (ja) * 2010-03-24 2011-09-29 パナソニック株式会社 表示切替装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002328818A (ja) * 2001-02-27 2002-11-15 Sony Computer Entertainment Inc 情報処理装置、統合型情報処理装置、実行負荷計測方法、コンピュータプログラム
US6919900B2 (en) * 2001-03-23 2005-07-19 Microsoft Corporation Methods and systems for preparing graphics for display on a computing device
GB2406184B (en) * 2003-09-17 2006-03-15 Advanced Risc Mach Ltd Data processing system
US7525549B1 (en) * 2004-12-16 2009-04-28 Nvidia Corporation Display balance/metering
US8484647B2 (en) * 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US9524138B2 (en) * 2009-12-29 2016-12-20 Nvidia Corporation Load balancing in a system with multi-graphics processors and multi-display systems
WO2012154155A1 (en) 2011-05-06 2012-11-15 Google Inc. Apparatus and method for determining a video frame's estimated arrival time
WO2012154152A1 (en) 2011-05-06 2012-11-15 Google Inc. Apparatus and method for rendering video with retransmission delay
US9940904B2 (en) * 2013-10-23 2018-04-10 Intel Corporation Techniques for determining an adjustment for a visual output

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7545380B1 (en) * 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
KR20070035958A (ko) * 2005-09-28 2007-04-02 가부시키가이샤 히다치 고쿠사이 덴키 화상 처리 장치
KR20080080614A (ko) * 2005-12-05 2008-09-04 디지털 디스플레이 이노베이션, 엘엘씨 디지털 디스플레이 시스템의 필드 순차 광원 변조
JP2010020186A (ja) * 2008-07-11 2010-01-28 Canon Inc 画像処理装置及びその制御方法
WO2011118199A1 (ja) * 2010-03-24 2011-09-29 パナソニック株式会社 表示切替装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Cem Cebenoyan."Stuttering in Game Graphics: Detection and Solutions". [online]2012.01.01.,[2022.01.17.검색],<URL:https://developer.nvidia.com/ sites/default/files/akamai/gameworks/CN/Stuttering_Analysis* *

Also Published As

Publication number Publication date
CN106575302B (zh) 2019-08-30
JP2017531232A (ja) 2017-10-19
KR102476197B1 (ko) 2022-12-09
EP3178065B1 (en) 2020-04-08
US20160042488A1 (en) 2016-02-11
EP3178065A4 (en) 2018-01-24
EP3178065A1 (en) 2017-06-14
CN106575302A (zh) 2017-04-19
US9679345B2 (en) 2017-06-13
WO2016022874A1 (en) 2016-02-11
JP6633614B2 (ja) 2020-01-22

Similar Documents

Publication Publication Date Title
KR20170041760A (ko) 프레임 페이싱을 위한 방법 및 시스템
US10078882B2 (en) Priority-based command execution
US9996386B2 (en) Mid-thread pre-emption with software assisted context switch
TWI750557B (zh) 按行緩衝器單元記憶體分配之判定
JP2013546042A5 (ko)
US8661440B2 (en) Method and apparatus for performing related tasks on multi-core processor
CN110018874A (zh) 垂直同步方法、装置、终端及存储介质
JP2017507405A (ja) グラフィック処理ユニットのためのワークロードバッチサブミットメカニズム
US9893974B2 (en) Synchronization of data for colliding bodies
WO2018013225A1 (en) Memory request arbitration
Xie et al. Pim-vr: Erasing motion anomalies in highly-interactive virtual reality world with customized memory cube
US10528685B2 (en) Efficient mechanism in hardware and software co-simulation system
US10587861B2 (en) Flicker-free remoting support for server-rendered stereoscopic imaging
US20120245915A1 (en) Semiconductor integrated circuit simulation apparatus and simulation method for semiconductor integrated circuit
JPH10500239A (ja) 分散データバッファにアクセスする方法及び装置
Ma et al. MCMG simulator: A unified simulation framework for CPU and graphic GPU
CN106600515A (zh) 一种虚拟现实低延迟处理方法及终端
US20140281381A1 (en) System-on-chip and method of operating the same
CN102682739B (zh) 电视墙系统及其控制方法
JP2017127676A5 (ko)
JP2017127679A5 (ko)
JP2017127677A5 (ko)
WO2019078885A1 (en) PARALLEL EXECUTION OF OPERATIONS OF ACTIVATION UNITS WITH RELEASE
Sandberg NoMali: Understanding the Impact of Software Rendering Using a Stub GPU
CN107148619A (zh) 用于多线程图形流水线的自由排序线程模型

Legal Events

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