KR102018263B1 - 미디어 프로세싱을 체이닝하는 방법 - Google Patents

미디어 프로세싱을 체이닝하는 방법 Download PDF

Info

Publication number
KR102018263B1
KR102018263B1 KR1020187005237A KR20187005237A KR102018263B1 KR 102018263 B1 KR102018263 B1 KR 102018263B1 KR 1020187005237 A KR1020187005237 A KR 1020187005237A KR 20187005237 A KR20187005237 A KR 20187005237A KR 102018263 B1 KR102018263 B1 KR 102018263B1
Authority
KR
South Korea
Prior art keywords
media
unit
command
processing command
media processing
Prior art date
Application number
KR1020187005237A
Other languages
English (en)
Other versions
KR20180032626A (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 KR20180032626A publication Critical patent/KR20180032626A/ko
Application granted granted Critical
Publication of KR102018263B1 publication Critical patent/KR102018263B1/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
    • 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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • 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/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/24

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

시스템의 일 실시예는 복수의 미디어 유닛, 프로세서, 및 회로부를 포함할 수 있다. 각각의 미디어 유닛은 디스플레이 이미지를 프로세싱하기 위해 하나 이상의 커맨드를 실행하도록 구성될 수 있다. 프로세서는 큐(queue)에 복수의 미디어 프로세싱 커맨드를 저장하도록 구성될 수 있다. 회로부는 큐로부터 제1 미디어 프로세싱 커맨드를 검색하고 제1 미디어 프로세싱 커맨드를 제1 미디어 유닛에 전송하도록 구성될 수 있다. 회로부는 또한 큐로부터 제2 미디어 프로세싱을 검색하고 제1 미디어 유닛으로부터 인터럽트(interrupt)를 수신하는 것에 응답하여 제2 미디어 프로세싱 커맨드를 제2 미디어 유닛에 전송하도록 구성될 수 있다. 이어서, 회로부는 제1 미디어 유닛으로부터 인터럽트를 수신하는 것에 응답하여 제1 미디어 유닛으로부터 제2 미디어 유닛으로 데이터를 복사할 수 있다.

Description

미디어 프로세싱을 체이닝하는 방법
본 명세서에 기술된 실시예들은 집적회로 구현 분야에 관한 것으로, 보다 상세하게는 미디어 프로세서들의 구현에 관한 것이다.
컴퓨팅 시스템은 예를 들어 비디오, 게임 또는 애니메이션화된 렌더링과 같은 미디어 콘텐츠를 프로세싱하는 것과 연관된 다양한 태스크를 처리(handling)하기 위한 그래픽 또는 미디어 프로세서를 포함할 수 있다. 일부 컴퓨팅 시스템은 특정 태스크를 수행하거나 디스플레이될 이미지의 일부분에 대한 태스크들을 수행하는 각 프로세서를 갖는, 미디어 태스크들을 수행하기 위한 다수의 미디어 프로세서를 포함할 수 있다. 이러한 시스템들에서, 메인 애플리케이션 프로세서는 다수의 미디어 프로세서 각각에 커맨드를 발행하고 이미지들과 관련된 데이터를 하나의 미디어 프로세서로부터 다른 미디어 프로세서로 전달하는 데 사용될 수 있다.
다수의 미디어 프로세서를 관리하기 위해, 메인 애플리케이션 프로세서는 디스플레이될 이미지와 연관된 제1 태스크를 하나의 미디어 프로세서가 완료할 때까지 기다릴 수 있다. 이어서, 메인 프로세서는 이미지와 연관된 다음 태스크를 수행하라는 커맨드와 함께 해당 미디어 프로세서로부터의 데이터를 다른 미디어 프로세서로 전달할 수 있다. 미디어 프로세서들을 관리하는 태스크는 그렇지 않으면 감소된 전력 모드에 놓일 수 있는 시간들에 애플리케이션 프로세서가 활성 상태로 유지되게 할 수 있거나, 애플리케이션 프로세서는 미디어 프로세서를 관리하는 것과 다른 애플리케이션들을 관리하는 것 사이에서 전환하는 동안 발생되는 레이턴시로 인해 덜 응답하게 될 수 있다.
미디어 프로세싱 시스템의 다양한 실시예들이 개시된다. 대체로, 시스템이 복수의 미디어 유닛, 프로세서 및 회로부를 포함하는, 시스템, 장치, 및 방법이 고려된다. 복수의 미디어 유닛의 각각의 미디어 유닛은 디스플레이 이미지를 프로세싱하기 위해 하나 이상의 커맨드를 실행하도록 구성될 수 있다. 프로세서는 큐(queue)에 복수의 미디어 프로세싱 커맨드를 저장하도록 구성될 수 있다. 회로부는 큐로부터 복수의 미디어 프로세싱 커맨드 중 제1 미디어 프로세싱 커맨드를 검색하고, 제1 미디어 프로세싱 커맨드를 복수의 미디어 유닛 중 제1 미디어 유닛에 전송하도록 구성될 수 있다. 회로부는 큐로부터 복수의 미디어 프로세싱 커맨드 중 제2 미디어 프로세싱 커맨드를 검색하고, 제1 미디어 유닛으로부터 인터럽트(interrupt)를 수신하는 것에 응답하여 제2 미디어 프로세싱 커맨드를 복수의 미디어 유닛 중 제2 미디어 유닛에 전송하도록 추가로 구성될 수 있다. 회로부는 또한 제1 미디어 유닛으로부터 인터럽트를 수신하는 것에 응답하여 제1 미디어 유닛으로부터 제2 미디어 유닛으로 데이터를 복사하도록 구성될 수 있다.
추가 실시예에서, 프로세서는 큐에 복수의 미디어 프로세싱 커맨드를 저장하는 것에 응답하여 감소된 전력 상태에 진입하도록 추가로 구성될 수 있다. 다른 실시예에서, 시스템은 DMA(direct memory access) 유닛을 추가로 포함할 수 있다. 제1 미디어 유닛으로부터 제2 미디어 유닛으로 데이터를 복사하기 위해, DMA는 제1 미디어 유닛으로부터 데이터를 판독하고 제2 미디어 유닛에 데이터를 저장하도록 구성될 수 있다.
일 실시예에서, 제1 미디어 유닛 및 제2 미디어 유닛은 모두 그래픽 프로세싱 유닛을 포함할 수 있다. 추가 실시예에서, 제2 미디어 유닛은 디스플레이 제어기를 포함할 수 있다.
다른 실시예에서, 제2 미디어 유닛은 미디어 스케일링 프로세서를 포함할 수 있다. 일 실시예에서, 회로부는 회로부가 큐로부터 제2 미디어 프로세싱 커맨드를 검색한 후에, 제2 미디어 프로세싱 커맨드를 제2 미디어 유닛에 전송하기 이전에, 큐로부터 제3 미디어 프로세싱 커맨드를 검색하고, 제3 미디어 프로세싱 커맨드를 복수의 미디어 유닛 중 제3 미디어 유닛에 전송하도록 추가로 구성될 수 있다.
하기의 상세한 설명은 첨부 도면들을 참조하며, 이제 도면들이 간단히 설명된다.
도 1은 컴퓨팅 시스템의 일 실시예의 블록도를 예시한다.
도 2는 미디어 관리 프로세서의 블록도를 예시한다.
도 3은 다수의 미디어 유닛을 통한 데이터 및 커맨드의 흐름을 표현하는 도면을 도시한다.
도 4는 다수의 미디어 유닛을 관리하기 위한 방법의 일 실시예를 예시하는 흐름도를 예시한다.
본 개시내용은 다양한 수정들 및 대안적인 형태들을 허용하지만, 그의 특정 실시예들은 도면들에서 예시로 도시되고, 본 명세서에서 상세하게 기술될 것이다. 그러나, 도면들 및 이에 대한 상세한 설명은 본 개시내용을 도시된 특정 형태로 제한하도록 의도되는 것이 아니며, 반대로, 첨부된 청구범위에 의해 한정되는 바와 같은 본 개시내용의 사상 및 범주 내에 속하는 모든 수정들, 등가물들 및 대안들을 포괄하려는 의도로 이해하여야 한다. 본 명세서에서 사용되는 표제들은 오직 구성을 위한 것이며 설명의 범주를 제한하기 위해 사용되는 것으로 의도되지 않는다. 본 출원 전반에 걸쳐 사용되는 바와 같이, "~일 수 있다(may)"라는 단어는 의무적인 의미(즉, "~이어야만 한다(must)"를 의미)라기보다 오히려 허용의 의미(즉, "~에 대해 가능성을 갖는다"는 의미)로 사용된다. 유사하게, "포함하다(include, includes)" 및 "포함하는(including)"이라는 단어들은, 포함하지만 그로 제한되지 않음을 의미한다.
다양한 유닛들, 회로들, 또는 기타 컴포넌트들이 태스크(task) 또는 태스크들을 수행하도록 "구성되는 것"으로 기술될 수 있다. 그러한 맥락에서, "~하도록 구성되는"은, 동작 동안에 태스크 또는 태스크들을 수행하는 "회로를 갖는"을 일반적으로 의미하는 구조의 광의의 설명이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐 시에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성된"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명의 편의를 위해 태스크 또는 태스크들을 수행하는 것으로 기술될 수 있다. 그러한 설명은 "~하도록 구성된"이라는 문구를 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성된 유닛/회로/컴포넌트를 언급하는 것은 그 유닛/회로/컴포넌트에 대해 35 U.S.C. ㄷ 112, (f) 문단의 해석을 적용하지 않고자 명확히 의도된다. 더 일반적으로, 임의의 요소의 언급은, 용어 "~하기 위한 수단" 또는 "~하는 단계"가 구체적으로 언급되지 않는 한, 그 요소에 대해 35 U.S.C. ㄷ112, (f) 문단의 해석을 적용하지 않고자 명확히 의도된다.
컴퓨팅 시스템은 비디오를 디스플레이하거나, 게임을 하거나, 또는 다른 애니메이션 그래픽을 디스플레이 스크린에 렌더링하는 것과 관련된 데이터를 프로세싱하는 것과 관련된 태스크들을 수행하기 위한 하나 이상의 회로를 포함할 수 있다. 이러한 컴퓨팅 시스템은 데스크톱 또는 랩톱 컴퓨터, 태블릿, 스마트폰 또는 다른 유형의 디바이스들을 포함할 수 있다. 하나 이상의 회로는 예를 들어 그래픽 프로세서, 비디오 인코더/디코더, 미디어 스칼라(media scalar), 및 디스플레이를 포함할 수 있다. 이러한 회로들은 본 명세서에서 "미디어 에이전트"로 총칭된다.
디스플레이 스크린 상에 애니메이션 이미지들을 생성하기 위해, 일련의 스틸 이미지들이 시퀀스로 디스플레이된다. 각각의 스틸 이미지는 "프레임"으로 지칭될 수 있으며, 하나 이상의 미디어 에이전트에 의해 생성되고 프로세싱될 수 있다. 예를 들어, 그래픽 프로세서는 판독 또는 수신된 데이터에 기초하여 프레임을 생성할 수 있다. 그래픽 프로세서가 프레임을 생성한 후에, 이어서, 프레임은 미디어 스칼라, 인코더 및 디스플레이에 의해 프로세싱될 수 있다. 프로세싱의 일부는 병렬로 발생할 수 있는 반면, 일부 프로세싱은 직렬로 발생할 수 있다.
다양한 미디어 에이전트를 통해 프레임의 프로세싱의 흐름을 제어하기 위해, 메인 애플리케이션 프로세서는 미디어 에이전트들 각각에 커맨드들을 발행하고 하나의 에이전트에서 다른 에이전트로 프레임을 전달하는데 사용될 수 있고, 이는 프레임을 제2 또는 제3 에이전트들로 전달하기 위해 제1 에이전트가 종료하기를 기다린다. 이러한 방식으로 미디어 에이전트들을 관리하면 다른 태스크들에 사용될 수 있는 애플리케이션 프로세서로부터 프로세싱 대역폭이 소비되어, 시스템이 사용자에게 응답하지 않게 할 수 있는 수행 레이턴시가 발생할 수 있다. 수행할 다른 태스크들이 없는 경우, 프로세서는 그렇지 않으면 배터리 전력을 절약하기 위해 감소된 전력 모드에 놓일 수 있다.
도면들에 예시되고 후술되는 실시예들은 미디어 프로세싱 태스크들에서의 프로세서 참여를 감소시킴으로써 메인 애플리케이션 프로세서의 보다 효율적인 사용을 허용할 수 있다. 이들 실시예들은 메인 애플리케이션 프로세서로부터 보다 적은 대역폭을 사용하면서 다양한 미디어 에이전트를 관리하는 방법을 허용할 수 있는 기술들을 제공할 수 있다.
컴퓨팅 시스템의 일 실시예의 블록도가 도 1에 예시된다. 예시된 실시예에서, 시스템(100)은 시스템 버스(102)를 통해 메모리 제어기(MC)(104), 미디어 유닛들(110 내지 112), 디스플레이 드라이버(118), 및 미디어 관리자(130)에 결합된 프로세서들(101a, 101b)을 포함한다. 메모리 제어기(104)는 메모리(105)에 결합되고 디스플레이 드라이버(118)는 디스플레이(119)에 결합된다. 인터럽트 제어기(120)는 프로세서들(101a, 101b)뿐만 아니라 미디어 유닛들(110 내지 112)에 결합된다. 다양한 실시예들에서, 시스템(100)은 하나 이상의 회로 기판 상에 함께 결합된 다중 집적 회로(IC)로서, 단일 IC 상에 집적된 모든 회로를 갖는 시스템 온 칩(SoC)으로서, 또는 이들의 조합으로서 구현될 수 있다.
프로세서들(101a, 101b)은, 다양한 실시예들에서, 계산 동작들을 수행하는 범용 프로세서들을 대표할 수 있다. 예를 들어, 프로세서들(101a, 101b)은 마이크로프로세서와 같은 중앙 프로세싱 유닛(CPU)들, 마이크로콘트롤러들, 주문형 집적 회로(ASIC)들, 또는 필드 프로그래머블 게이트 어레이(FPGA)들일 수 있다. 2개의 프로세서(101)가 예시되어 있지만, 시스템(100)의 일부 실시예들은 단일 프로세서(101)를 포함할 수 있거나 3개 이상의 프로세서를 포함할 수 있다.
다양한 실시예들에서, 프로세서(101)는 임의의 적합한 명령어 세트 아키텍처(instruction set architecture; ISA), 예컨대, 예를 들어 ARM™, PowerPC™, 또는 x86 ISA들, 또는 이들의 조합을 구현할 수 있다. 프로세서들(101a, 101b)은 동일한 ISA를 구현할 수 있거나, 각각의 프로세서(101a, 101b)는 상이한 ISA를 구현할 수 있다. 프로세서(101)는, 프로세서(101)로 하여금 다른 기능 블록들과 시스템 버스(102)를 통해 통신하게 하는 하나 이상의 버스 송수신기 유닛을 포함할 수 있다.
시스템 버스(102)는 시스템(100) 내의 다양한 기능 블록들 사이에서 명령어들 및 데이터의 전달을 용이하게 하기 위해 하나 이상의 버스로서 구성될 수 있다. 예를 들어, 프로세서들(101a, 101b) 및 미디어 관리자(130)와 같은 다양한 기능 블록들의 서브세트는 "버스 마스터"일 수 있고, 또는 다시 말하면, 시스템 버스(102)를 통해 전달을 개시할 수 있는 기능 블록들일 수 있다. 다른 기능 블록들은 버스 마스터들 중 하나로부터의 커맨드에 응답하여 시스템 버스(102)를 통해 데이터를 전송하는 것 또는 수신하는 것으로 제한될 수 있다.
메모리 제어기 블록(104)은 메모리 블록(105)에 인터페이스를 제공한다. 메모리(105)에서 데이터를 판독하고 기록하기 위한 커맨드를 수신하는 것 이외에, 메모리 제어기(104)는 예를 들어, 가상 어드레스로부터 물리적 어드레스로의 매핑, 데이터 리프레시, 및 가비지(garbage) 콜렉션과 같은 추가 태스크를 수행할 수 있다. 또한, 메모리 제어기(105)는 메모리 블록(105)에서 하나 이상의 메모리 어레이의 전력 모드들을 관리할 수 있다.
메모리 블록(105)은, 예를 들어, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), ROM(Read-only Memory), EEPROM(Electrically Erasable Programmable Read-only Memory), 플래시 메모리, FeRAM(Ferroelectric Random Access Memory), RRAM 또는 ReRAM(Resistive Random Access Memory), 또는 MRAM(Magnetoresistive Random Access Memory)과 같은 임의의 적합한 유형의 메모리를 포함할 수 있다. 일부 실시예들은 도시된 바와 같이 단일 메모리를 포함할 수 있고, 다른 실시예들은 둘 이상의 메모리 블록(도시되지 않음)을 포함할 수 있다. 일부 실시예들에서, 메모리 블록(105)은 프로세서들(101a, 101b)에 의해 실행될 수 있는 프로그램 명령어들을 저장하도록 구성될 수 있다. 메모리 블록(105)은, 다른 실시예들에서, 예를 들어, 그래픽 데이터와 같은 프로세싱될 데이터를 저장하도록 구성될 수 있다.
미디어 유닛들(110 내지 112)은 미디어 정보를 생성 및/또는 프로세싱하는 다양한 미디어 에이전트를 포함할 수 있다. 다양한 실시예들에서, 미디어 유닛들(110 내지 112)은 그래픽 프로세서들, 비디오 인코더들, 비디오 디코더들, 카메라 프로세서들, 컬러 프로세싱 유닛들, 및 미디어 스케일링 및 회전 프로세서들에 대응할 수 있다. 일부 실시예들에서, 미디어 유닛들(110 내지 112)은 각각 예를 들어, 미디어 유닛(110)으로부터 미디어 유닛(111)으로, 이어서 미디어 유닛(111)으로부터 미디어 유닛(112)으로 프레임을 통과시키는 상이한 기능들을 수행할 수 있다. 미디어 유닛(112)로부터의 프레임 출력은 디스플레이 드라이버(118)로 전송될 수 있다. 다른 실시예들에서, 둘 이상의 미디어 유닛들(110 내지 112)은 유사한 기능들을 수행할 수 있다. 예를 들어, 미디어 유닛들(110, 111) 둘 다는 주어진 프레임의 일부분을 프로세싱하는 각각의 미디어 유닛을 갖는 그래픽 프로세서들일 수 있다. 미디어 유닛들(110, 111)에 의해 출력된 주어진 프레임의 개개의 부분들은 미디어 유닛(112) 및/또는 디스플레이 드라이버(118)에 의해 수신될 수 있다. 3개의 미디어 유닛이 예시되어 있지만, 임의의 적합한 수의 미디어 유닛들이 시스템(100)에 포함될 수 있다.
디스플레이 드라이버(118)는 디스플레이(119)에 프레임을 전송하기 위한 인터페이스를 포함할 수 있다. 일부 실시예들에서, 디스플레이 드라이버(118)는 현재 디스플레이된 프레임을 저장하기 위한 메모리를 포함할 수 있으며 또한 디스플레이될 다음 프레임을 큐잉하기 위한 메모리를 포함할 수 있다. 디스플레이 드라이버(118)는 예를 들어 휘도 및 콘트라스트 설정을 조정하는 것과 같이 이미지 데이터가 디스플레이(119)로 전송되기 전에 프레임을 프로세싱하기 위한 회로들을 포함할 수 있다. 디스플레이(119)는 예를 들어, 액정 다이오드(LCD), 유기 발광 다이오드(OLED), 전기 영동 디스플레이(EPD) 또는 간섭 변조기 디스플레이(Interferometric Modulator Display; IMOD)와 같은 임의의 적합한 유형의 디스플레이로 구성될 수 있다. 디스플레이(119)는 시스템(100)의 일부로서 포함될 수 있거나 케이블 또는 무선 인터페이스를 통해 디스플레이 드라이버(118)에 결합된 별개의 인클로저 내에 있을 수 있다. 일부 실시예들에서, 터치스크린 사용자 인터페이스(UI)가 디스플레이(119)에 포함될 수 있다.
인터럽트 제어기(120)는 미디어 유닛들(110 내지 112)로부터 신호를 수신하고 프로세서들(101a, 101b) 또는 미디어 관리자(130)에 하나 이상의 인터럽트 신호를 어써트할(assert) 수 있다. 미디어 유닛들(110 내지 112)로부터 신호를 수신하는 것 이외에, 인터럽트 제어기(120)는 시스템(100)(도시되지 않음)의 다양한 다른 기능 블록들로부터 신호를 수신할 수 있다. 각각의 미디어 유닛(110 내지 112)은 현재 태스크 또는 커맨드를 완료하는 경우 완료를 나타내는 신호를 어써트할 수 있다. 인터럽트 제어기(120)는 어써트된 신호를 수신할 수 있고, 그에 응답하여, 프로세서들(101a, 101b) 및 미디어 관리자(130)를 포함하는 하나 이상의 프로세서에 대응되는 인터럽트 신호를 어써트할 수 있다. 인터럽트 제어기(120)는 주어진 입력 신호가 특정 인터럽트로 라우팅되게 하는 레지스터 및 회로를 포함할 수 있다. 예를 들어, 본 실시예에서, 미디어 유닛들(110 내지 112)로부터의 신호는 미디어 관리자(130)에 전송되는 인터럽트 신호로 라우팅된다.
미디어 관리자(130)는 디스플레이(119)를 위한 프레임들의 생성을 처리하거나 처리를 도울 수 있다. 전술한 바와 같이, 프레임은 디스플레이(119) 상에 디스플레이되기 전에 하나 이상의 미디어 에이전트를 통과할 수 있다. 프레임의 이동은 프로세서로 하여금 제1 미디어 에이전트로부터 프레임을 판독하고, 그 프레임을 다음 미디어 에이전트로 복사할 것을 요구할 수 있다. 미디어 관리자(130)는 어써트된 완료 신호에 대응되는 미디어 유닛들(110 내지 112) 중 하나, 예를 들어 미디어 유닛(110)으로부터 인터럽트를 수신한다. 인터럽트에 응답하여, 미디어 관리자(130)는 미디어 유닛(110)의 메모리로부터 프레임을 복사하고, 그것을 다음 프로세싱 단계를 위해 미디어 유닛(112)과 같은 다음 미디어 유닛에 저장할 수 있다. 미디어 관리자(130)는 미디어 큐로부터 다음 프로세싱 단계에 관련된 커맨드 및 정보를 검색할 수 있다. 미디어 큐는, 다양한 실시예들에서, 메모리(105)의 일부분으로 구성될 수 있거나, 시스템 버스(102)에 결합된 버퍼로서 구현될 수 있거나, 또는 미디어 관리자(130) 내에 구현된 메모리일 수 있다. 미디어 프로세스와 관련된 커맨드 및 정보는 프로세서들(101a, 101b) 중 하나 이상에서 실행되는 소프트웨어에 응답하여 미디어 큐에 저장될 수 있다. 예를 들어, 프로세서(101b)는 풀스크린(full-screen) 이미지를 디스플레이하는 것을 포함하는 소프트웨어 프로그램에 대한 명령어들을 실행할 수 있다. 소프트웨어를 실행하는 것에 응답하여, 프로세서(101b)는 미디어 큐에 미디어 관련 커맨드들을 저장하여, 미디어 관리자(130)로 하여금 하나 이상의 미디어 에이전트에 의한 미디어 관련 커맨드들의 실행을 처리하게 한다.
도 1에 예시된 시스템은 단지 예시임에 유의한다. 다른 실시예들에서, 시스템이 의도되는 특정 응용에 종속하여, 상이한 기능 블록들 및 기능 블록들의 상이한 구성들이 가능할 수 있다. 예를 들어, 4개 이상의 미디어 유닛 및/또는 2개 이상의 디스플레이 드라이버가 다른 실시예들에 포함될 수 있다.
도 2를 참조하여, 미디어 관리자의 블록도의 일 실시예가 예시된다. 일부 실시예들에서, 미디어 관리자(200)는 도 1의 미디어 관리자(130)에 대응할 수 있다. 예시된 실시예에서, 미디어 관리자(200)는 미디어 프로세서(205), DMA(direct memory access)(206), 및 메모리(207)를 포함한다. 미디어 프로세서(205) 및 DMA(206)는 시스템 버스(202)에 결합된다. 미디어 프로세서(205)는 인터럽트 신호(210)를 수신한다.
미디어 프로세서(205)는 도 1의 프로세서들(101a, 101b)과 유사한 범용 프로세싱 코어에 대응할 수 있으며, 이는 계산 동작들을 수행한다. 예를 들어, 미디어 프로세서(205)는 중앙 프로세싱 유닛(CPU), 주문형 집적 회로(ASIC), 또는 필드 프로그래머블 게이트 어레이(FPGA)일 수 있다. 다양한 실시예들에서, 미디어 프로세서(205)는 예를 들어 ARM™, PowerPC™, 또는 x86 ISA들, 또는 이들의 조합과 같은, 임의의 적합한 명령어 세트 아키텍처(instruction set architecture; ISA)를 구현할 수 있다.
본 실시예에서, DMA(206)는 소스 위치로부터 목적지 위치로 데이터를 전달할 수 있다. 소스 및 목적지 위치는 예컨대, 도 1의 메모리(207) 또는 메모리 블록(105)과 같은 메모리 위치, 또는 예를 들어 도 1의 미디어 유닛들(110 내지 112) 또는 디스플레이 드라이버(118)와 같은 기능 블록 내의 레지스터 위치들일 수 있다. 1. 일부 실시예들에서, DMA(206)는 스캐터-개더(scatter-gather) 또는 개더-스캐터(gather-scatter) 메모리 전달을 수행할 수 있을 수 있다. 스캐터-개더는 소스 어드레스들이 가변되고(예컨대, "분산되고(scattered)") 목적지가 단일 주소인(예컨대, "모여진(gathered)") 메모리 전달을 지칭한다. 따라서, 개더-스캐터는 그 반대이다. 미디어 프로세서(205)는 한번에 하나 이상의 데이터 전달을 위해 DMA(206)를 프로그램할 수 있다.
메모리(207)는 미디어 프로세서(205)가 미디어 커맨드를 그로부터 검색하는 미디어 커맨드 큐를 포함한다. 일부 실시예들에서, 메모리(207)는 RAM(Random Access Memory)으로서 구현될 수 있고, 또한 미디어 프로세서(205)의 동작을 위한 프로그램 명령어들을 포함할 수 있다. 다른 실시예들에서, 메모리(207)는 선입 선출(FIFO) 버퍼일 수 있고, 미디어 커맨드 큐로서 사용하기 위해 예약될 수 있다.
도시된 실시예에서, 데이터가 디스플레이에 전송되기 전에 다양한 미디어 에이전트들로 전송됨에 따라, 미디어 프로세서(205)는 예를 들어, 디스플레이될 프레임과 같은 미디어와 관련된 데이터의 흐름을 관리하는 동작들을 수행한다. 미디어 프로세서(205)는 메모리(207) 내의 미디어 큐로부터 제1 커맨드를 검색하고, 그 커맨드를 실행할 타겟 미디어 에이전트를 제1 커맨드로부터 결정한다. 제1 커맨드에 기초하여, 미디어 프로세서(205)는 프레임을 위한 제1 데이터 세트를 다른 미디어 에이전트로부터, 또는 도 1의 메모리(207) 또는 메모리 블록(105)과 같은 메모리로부터 검색하도록 DMA(206)를 설정할 수 있다. DMA(206)는 제1 데이터 세트를 타겟 미디어 에이전트로 복사한다. 미디어 프로세서(205)는 실행을 위해 제1 커맨드를 타겟 미디어 에이전트로 전송한다. 타겟 미디어 에이전트가 제1 미디어 커맨드를 실행하는 동안, 미디어 프로세서(205)는 메모리(207) 내의 미디어 커맨드 큐로부터 제2 커맨드를 검색한다. 제2 커맨드는 제2 미디어 에이전트를 위한 제2 데이터 세트에 대응할 수 있으며, 이 경우 미디어 프로세서(205)는 제1 커맨드가 계속 실행되는 동안 제2 데이터 세트를 제2 미디어 에이전트로 복사하도록 DMA(206)를 설정한다.
반대로, 제2 커맨드는 제1 데이터 세트가 타겟 미디어 에이전트에 의해 프로세싱되는 다음 단계에 대응할 수 있다. 이 두 번째 경우에, 미디어 프로세서(205)는 제1 데이터 세트를 타겟 미디어 에이전트로부터 다른 미디어 에이전트로 전달하기 위해, DMA(206)를 개시하기 전에 타겟 미디어 에이전트가 제1 커맨드의 실행을 완료할 때까지 기다릴 수 있다. 일부 실시예들에서, 제1 미디어 에이전트가 제1 커맨드를 완료하기를 기다리는 동안, 미디어 프로세서(205)는 미디어 커맨드 큐로부터 제3 커맨드를 검색할 수 있는 반면, 다른 실시예들에서, 미디어 프로세서(205)는 기다리는 동안 감소된 전력 모드에 진입할 수 있다. 타겟 미디어 에이전트가 제1 커맨드의 실행을 완료한 경우, 인터럽트 신호(210)가 예를 들어, 도 1의 인터럽트 제어기(120)와 같은 인터럽트 제어기를 통해 어써트된다. 어써트된 인터럽트 신호(210)에 응답하여, 미디어 프로세서(205)는 제1 데이터 세트를 다른 미디어 에이전트로 전달하도록 DMA(206)를 설정하는 것을 포함하는 제2 커맨드를 프로세싱하는 것을 시작할 수 있다. 제3 커맨드가 시작된 실시예들에서, 미디어 프로세서(205)는 제2 커맨드를 프로세싱하기 위해 제3 커맨드의 프로세싱을 일시 정지할 수 있거나, 제2 커맨드를 프로세싱하기 전에 대신에 제3 커맨드와 관련된 데이터의 전달을 완료하고 제3 커맨드를 개개의 미디어 에이전트에 전송할 수 있다.
도 2에 예시된 바와 같은 미디어 관리자(200)의 실시예는 단지 예시일 뿐임에 유의한다. 도 2의 예시는 본 개시내용에 관련된 특징부들을 강조하기 위해 간략화되었다. 다양한 실시예들은 부가적인 블록들을 포함하는 상이한 구성의 기능 블록들을 포함할 수 있다.
도 3을 참조하면, 다수의 미디어 유닛을 통한 데이터 및 커맨드들의 흐름을 표현하는 도면이 제시된다. 도면(300)은 미디어 커맨드 큐(303)에 저장된 커맨드들(A, B, C)로부터 프레임(320)의 생성까지의 데이터 흐름의 예를 예시한다. 도면(300)은 미디어 관리자(301), 미디어 커맨드 큐(303), 인터럽트 제어기(305), 미디어 유닛들(310 내지 312), 및 디스플레이 인터페이스(322)를 포함한다.
커맨드들(A, B, C)은 도 1의 시스템(100)의 프로세서(101a 또는 101b)와 같은 프로세서에 의해 미디어 커맨드 큐(303)에 저장된다. 본 실시예에서, 커맨드들(A, B, C)은 디스플레이 인터페이스(322)를 통해 디스플레이될 단일 프레임(프레임 '2')에 대응한다. 커맨드 A와 같은 적어도 하나의 커맨드가 큐(303)에 저장된 경우, 예를 들어, 미디어 관리자(301)는 큐(303)로부터 커맨드 A를 검색하고 커맨드가 어느 미디어 유닛(310 내지 312)을 타겟으로 하는지 커맨드로부터 결정한다. 미디어 관리자(301)는 커맨드 A가 미디어 유닛(310)에 대해 의도된 것으로 결정하고, 그 결정에 응답하여, 미디어 유닛(310)으로 커맨드를 전송한다. 일부 경우들에서, 미디어 관리자(301)는 또한 커맨드 A와 연관된 데이터의 세트를 검색하고, 이 데이터 세트를 미디어 유닛(310)에 전송할 수 있는 반면, 다른 경우들에서, 미디어 유닛(310)은 예를 들어, 이전에 실행된 커맨드로부터 데이터 세트에 대한 액세스를 이미 갖고 있을 수 있다. 미디어 유닛(310)이 커맨드 A를 실행하는 동안, 미디어 관리자(301)는 커맨드 B를 큐(303)로부터 검색한다. 커맨드 B는 미디어 유닛(311)에 대해 의도되었으나, 커맨드 B는 커맨드 A로부터의 출력을 사용한다. 따라서, 미디어 관리자(301)는 커맨드 B를 미디어 유닛(311)에 전송하기 전에 미디어 유닛(310)이 커맨드 A를 완료하기를 기다린다. 일부 실시예들에서, 미디어 관리자(301)는 커맨드 C를 검색하기 전에 커맨드 B가 실행되기를 기다릴 수 있다. 그러나, 본 실시예에서, 미디어 관리자(301)는 미디어 유닛(310)이 커맨드 A를 계속해서 프로세싱하는 동안 커맨드 C를 검색한다.
커맨드 C는 미디어 유닛(312)을 타겟으로 하고 커맨드 A 및 커맨드 B와 상이한 데이터 세트를 사용한다. 따라서, 커맨드 C는 커맨드 A 및 커맨드 B와 병행하여 프로세싱될 수 있다. 미디어 관리자(301)는 커맨드 C를 미디어 유닛(312)에 전송하고, 요구된다면, 연관된 데이터 세트를 미디어 유닛(312)에 전송한다. 커맨드 C가 프로세싱되는 동안, 미디어 유닛(310)은 커맨드 A의 실행을 완료하고, 데이터 세트(2a)가 출력으로서 준비되도록 할 수 있다. 미디어 유닛은 커맨드 A 종료(end of command A)(end A) 신호를 인터럽트 제어기(305)에 어써트한다. 인터럽트 제어기(305)는 미디어 유닛(310)으로부터의 end A 신호를 미디어 관리자(301)와 연관시키고, 따라서 미디어 관리자(301)에 결합된 인터럽트 신호를 어써트한다. 인터럽트 신호에 응답하여, 미디어 관리자(301)는 미디어 유닛(310)으로부터 데이터 세트(2a)를 검색하고 그것을 커맨드 B와 함께 미디어 유닛(311)에 전달한다. 커맨드 B가 미디어 유닛(311)에 의해 프로세싱되는 동안, 미디어 유닛(312)은 커맨드 C의 실행을 완료할 수 있다. 커맨드 C를 완료하는 것에 응답하여, 미디어 유닛(312)은 인터럽트 제어기(305)에 커맨드 C 종료(end C) 신호를 어써트한다. 인터럽트 제어기는 미디어 관리자(301)에 경고하면서 인터럽트 신호를 다시 어써트함으로써 응답한다. 일부 실시예들에서, 미디어 관리자(301)는 시스템 내의 미디어 유닛들을 위한 다수의 인터럽트 입력을 가질 수 있으며, 이는 미디어 관리자(301)로 하여금 어느 연관된 인터럽트가 어써트되는지에 기초하여 어느 미디어 유닛이 커맨드의 종료에 도달했는지를 결정할 수 있게 한다. 다른 실시예들에서, 미디어 관리자는 모든 미디어 유닛에 대해 하나의 인터럽트 입력을 가질 수 있고, 예를 들어, 각각의 활성 미디어 유닛을 폴링(polling)하는 것과 같은 것에 의해 어느 미디어 유닛이 커맨드 프로세싱을 완료했는지를 결정할 필요가 있을 수 있다.
본 실시예에서, 미디어 관리자(301)는 미디어 유닛(312)이 커맨드 C를 완료했다고 결정한다. 그러나, 미디어 관리자(301)는 또한 완전한 프레임(320)이 생성되기 위해 커맨드 B가 완료되어야 한다고 결정한다. 일부 실시예들에서, 미디어 관리자(301)는 커맨드 B가 완료되기 전에 미디어 유닛(312)으로부터 데이터 세트(2c)를 검색할 수 있는 반면, 다른 실시예들에서 미디어 관리자(301)는 데이터 세트(2c)를 검색하기 전에 커맨드 B가 완료될 때까지 기다릴 수 있다. 미디어 유닛(311)이 커맨드 B를 완료하고 커맨드 B 종료(end B) 신호를 인터럽트 제어기(305)에 어써트하는 경우에, 미디어 관리자는 대응되는 인터럽트 신호를 수신하고, 데이터 세트들(2a, 2b, 2c)에 대한 프로세싱이 완료되었다고 결정하고, 데이터 세트들을 디스플레이 인터페이스(322)로 전송되는 프레임(320) 내로 전달한다. 다양한 실시예들에서, 프레임(320)은 디스플레이 인터페이스(322)에 추가로 또는 대신하여 다른 기능 블록(예컨대, 미디어 스칼라)에 전송될 수 있다.
커맨드들(A, B, C)의 실행이 일어나고 있는 동안, 예를 들어, 도 1의 시스템(100)의 프로세서들(101a, 101b)과 같은 시스템의 메인 프로세서들이 다른 애플리케이션들 또는 운영 체제에 대한 커맨드들을 프로세싱하기 위해 이용가능할 수 있음에 유의한다. 프로세서(101a 및 또는 101b)는 또한 미디어 관리자(301)가 프레임(320)의 생성을 위한 데이터 흐름을 관리하는 동안 저전력 모드에 진입할 수 있다.
또한, 도 3의 도면은 단순히 본 명세서에 제시된 실시예로부터 발생할 수 있는 데이터 흐름의 예들을 예시함에 유의한다. 다양한 다른 실시예들은 상이한 개수의 미디어 유닛 및 커맨드를 포함할 수 있고, 미디어 유닛들 간에 상이한 데이터 흐름을 초래할 수 있다.
이제 도 4를 참조하면, 다수의 미디어 유닛을 관리하기 위한 방법의 일 실시예를 예시하는 흐름도가 예시된다. 방법은 예를 들어, 도 1의 미디어 관리자(130)와 같은 미디어 관리 프로세서에 적용될 수 있다. 시스템(100) 및 도 4의 흐름도를 집합적으로 참조하면, 방법은 블록(401)에서 시작할 수 있다.
제1 프로세서는 큐에 커맨드들을 저장한다(블록(402)). 커맨드는 예를 들어, 프로세서(101a 또는 101b)와 같은 제1 프로세서에 의해 큐에 저장된다. 다양한 실시예들에서, 큐는 예를 들어, FIFO 버퍼와 같은 커맨드들을 저장하기 위한 전용 회로에, 또는 메모리(105)와 같은 보다 큰 시스템 메모리에 유지된 데이터 구조에 대응할 수 있다. 일부 실시예들에서, 저장된 커맨드는 단일 프레임을 생성하기 위한 다수의 커맨드를 포함할 수 있다.
제2 프로세서는 큐로부터 제1 커맨드를 검색한다(블록(404)). 본 실시예에서, 제2 프로세서는 예를 들어, 미디어 관리자(130)와 같은 미디어 관리 프로세서에 대응한다. 미디어 관리자(130)는 예를 들어, 미디어 유닛(111)과 같은 제1 커맨드를 위한 타겟 미디어 에이전트를 결정한다. 미디어 관리자(130)는 또한 제1 커맨드와 연관된 데이터가 미디어 유닛(111)으로 복사될 것인지를 결정할 수 있다.
미디어 관리자(130)는 제1 커맨드를 미디어 유닛(111)에 전송한다(블록(406)). 미디어 유닛(111)은 제1 커맨드를 수신하고, 제1 커맨드와 연관된 데이터를 수신할 수 있다. 제1 커맨드의 결과로 데이터의 프로세싱의 일부분은 디스플레이를 위한 프레임을 생성할 수 있다. 프레임을 위한 데이터가 완료되기 전에 제1 커맨드의 실행으로부터 미디어 유닛(111)의 출력의 추가적인 프로세싱이 발생할 수 있다.
미디어 관리자(130)는 큐로부터 제2 커맨드를 검색한다(블록(408)). 미디어 유닛(111)이 제1 커맨드를 프로세싱하는 동안, 미디어 관리자(130)는 제2 커맨드를 검색한다. 미디어 관리자(130)는 제2 커맨드를 위한 타겟 미디어 에이전트, 예를 들어, 미디어 유닛(112)을 결정한다. 미디어 관리자(130)는 또한 제2 커맨드가 미디어 유닛(111)에 의해 실행된 제1 커맨드로부터의 출력에 대해 실행될 것이라고 결정한다.
이 방법의 추가적 동작들은 미디어 유닛(111)에 의한 제1 커맨드의 실행에 종속할 수 있다(블록(410)). 미디어 유닛(111)이 제1 커맨드를 완료하는 경우, 이는 제1 커맨드가 완료되었다고 나타내는 신호를 어써트한다. 이 커맨드 완료 표시는 예를 들어, 인터럽트 제어기(120)를 통해 미디어 관리자(130)로 인터럽트를 트리거한다. 인터럽트가 트리거되지 않은 경우, 방법은 이어서 블록(410)에 유지된다. 일부 실시예들에서, 미디어 관리자(130)는 인터럽트가 트리거되기를 기다리는 동안 제3 커맨드를 검색할 수 있다. 인터럽트가 트리거된 경우, 방법은 이어서 블록(412)으로 이동하여 제2 커맨드를 프로세싱한다.
미디어 유닛(111)이 제1 커맨드를 완료했다고 나타내는 인터럽트가 어써트된 후, 미디어 관리자(130)는 제2 커맨드를 미디어 유닛(112)에 전송한다(블록(412)). 인터럽트 제어기(120)로부터의 인터럽트에 응답하여, 미디어 관리자(130)는 이전에 타겟 미디어 에이전트로 결정된 것으로서, 미디어 유닛(112)으로 제2 커맨드를 전송한다. 또한, 미디어 관리자(130)는 미디어 유닛(111)으로부터의 출력 데이터를 제2 커맨드를 실행하는 데 사용하기 위해 미디어 유닛(112)으로 복사한다. 예를 들어, 미디어 유닛(111)은 제1 커맨드에 기초하여 프레임의 초기 프레임 또는 일부분을 생성할 수 있다. 미디어 유닛(112)은 제2 커맨드에 종속하여 초기 프레임의 컬러, 불투명도 또는 스케일을 조정할 수 있으며, 따라서 미디어 유닛(111)으로부터의 출력을 사용하여 조정된 프레임을 생성할 수 있다. 조정된 프레임은 미디어 관리자(130)에 의해 디스플레이 드라이버로, 메모리 내의 파일로, 제3 미디어 에이전트로, 또는 큐로부터의 커맨드들에 의해 결정된 다른 적절한 목적지로 전송될 수 있다.
도 4에 예시된 방법은 단지 예시적인 실시예임에 유의한다. 이 방법의 변형들이 가능하다. 일부 동작들은 상이한 시퀀스로 수행될 수 있고/있거나, 추가 동작들이 포함될 수 있다.
특정 실시예들이 전술되었지만, 이들 실시예들은 단일 실시예만이 특정 특징부에 대해 전술된 경우에도 본 개시내용의 범주를 제한하도록 의도되지 않는다. 본 개시내용에 제공된 특징부들의 예들은 달리 언급되지 않는 한 제한적인 것이 아니라 예시적인 것으로 의도된다. 상기의 설명은 본 개시내용의 이익을 취하는 당업자에게 자명한 바와 같이 그러한 대안물들, 수정물들, 및 등가물들을 포괄하도록 의도된다.
본 개시내용의 범주는, 본 명세서에 다뤄진 문제점들 중 임의의 것 또는 전부를 완화시키든 아니든, (명시적으로 또는 묵시적으로) 본 명세서에 개시된 임의의 특징부 또는 특징부들의 조합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징부들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 구체적으로, 첨부된 청구범위를 참조하면, 종속항들로부터의 특징부들은 독립항들의 특징부들과 조합될 수 있으며, 각자의 독립항들로부터의 특징부들은 첨부된 청구범위에 열거된 특정 조합들로 조합될 수 있을 뿐 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 시스템으로서,
    복수의 미디어 유닛 - 각각의 미디어 유닛은 디스플레이 이미지를 프로세싱하기 위해 하나 이상의 커맨드를 실행하도록 구성됨 -;
    큐(queue)에 복수의 미디어 프로세싱 커맨드를 저장하도록 구성된 프로세서; 및
    회로부를 포함하며, 상기 회로부는,
    상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제1 미디어 프로세싱 커맨드를 검색하고;
    상기 제1 미디어 프로세싱 커맨드를 상기 복수의 미디어 유닛 중 제1 미디어 유닛에 전송하고;
    상기 제1 미디어 프로세싱 커맨드가 상기 제1 미디어 유닛에 의해 실행되는 동안, 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제2 미디어 프로세싱 커맨드를 검색하고;
    상기 제2 미디어 프로세싱 커맨드가 상기 제1 미디어 프로세싱 커맨드의 실행과 독립적이라는 결정에 응답하여 상기 제2 미디어 프로세싱 커맨드를 상기 복수의 미디어 유닛 중 제2 미디어 유닛에 전송하고, 그렇지 않으면 상기 제1 미디어 유닛으로부터 인터럽트(interrupt)를 수신하는 것에 응답하여 상기 제2 미디어 프로세싱 커맨드를 상기 제2 미디어 유닛에 전송하고 - 상기 인터럽트는 상기 제1 미디어 유닛이 상기 제1 미디어 프로세싱 커맨드를 완료하였음을 나타냄 -;
    상기 제1 미디어 유닛으로부터 상기 인터럽트를 수신하는 것에 응답하여 상기 제1 미디어 프로세싱 커맨드에 의해 생성된 데이터를 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 복사하도록 구성되는, 시스템.
  2. 제1항에 있어서, 상기 프로세서는 상기 큐에 상기 복수의 미디어 프로세싱 커맨드를 저장하는 것에 응답하여 감소된 전력 상태에 진입하도록 추가로 구성되는, 시스템.
  3. 제1항에 있어서, DMA(direct memory access) 유닛을 추가로 포함하며, 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 상기 데이터를 복사하기 위해, 상기 DMA는 상기 제1 미디어 유닛으로부터 상기 데이터를 판독하고 상기 제2 미디어 유닛에 상기 데이터를 저장하도록 구성되는, 시스템.
  4. 제1항에 있어서, 상기 제1 미디어 유닛은 카메라 회로, 비디오 디코더, 비디오 인코더, 그래픽 프로세싱 유닛, 디스플레이 드라이버, 컬러 프로세싱 유닛, 또는 미디어 스케일링 프로세서 중 적어도 하나를 포함하는, 시스템.
  5. 제1항에 있어서, 상기 제2 미디어 유닛은 카메라 회로, 비디오 디코더, 비디오 인코더, 그래픽 프로세싱 유닛, 디스플레이 드라이버, 컬러 프로세싱 유닛, 또는 미디어 스케일링 프로세서 중 적어도 하나를 포함하는, 시스템.
  6. 제1항에 있어서, 상기 회로부는 상기 큐로부터 제3 미디어 프로세싱 커맨드를 검색하고 상기 제3 미디어 프로세싱 커맨드를 상기 복수의 미디어 유닛 중 제3 미디어 유닛에 전송하도록 추가로 구성되는, 시스템.
  7. 제6항에 있어서, 상기 회로부는, 상기 회로부가 상기 큐로부터 상기 제2 미디어 프로세싱 커맨드를 검색한 후에 그리고 상기 제2 미디어 프로세싱 커맨드를 상기 제2 미디어 유닛에 전송하기 이전에 상기 제3 미디어 프로세싱 커맨드를 상기 제3 미디어 유닛에 전송하도록 추가로 구성되는, 시스템.
  8. 방법으로서,
    제1 프로세싱 유닛에 의해, 큐에 복수의 미디어 프로세싱 커맨드를 저장하는 단계;
    상기 제2 프로세싱 유닛에 의해, 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제1 미디어 프로세싱 커맨드를 검색하는 단계;
    상기 제2 프로세싱 유닛에 의해, 상기 제1 미디어 프로세싱 커맨드를 제1 미디어 유닛에 전송하는 단계;
    상기 제1 미디어 프로세싱 커맨드가 상기 제1 미디어 유닛에 의해 실행되는 동안, 상기 제2 프로세싱 유닛에 의해, 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제2 미디어 프로세싱 커맨드를 검색하는 단계;
    상기 제2 프로세싱 유닛에 의해, 상기 제2 미디어 프로세싱 커맨드가 상기 제1 미디어 프로세싱 커맨드의 실행에 종속한다고 결정하는 것에 응답하여 상기 제2 미디어 프로세싱 커맨드를 전송하는 것을 기다리는 단계;
    상기 제2 프로세싱 유닛에 의해, 상기 제1 미디어 유닛으로부터 인터럽트를 수신하는 것에 응답하여 상기 제2 미디어 프로세싱 커맨드를 제2 미디어 유닛에 전송하는 단계 - 상기 인터럽트는 상기 제1 미디어 유닛이 상기 제1 미디어 프로세싱 커맨드를 완료하였음을 나타냄 -; 및
    상기 제2 프로세싱 유닛에 의해, 상기 제1 미디어 유닛으로부터 상기 인터럽트를 수신하는 것에 응답하여 상기 제1 미디어 프로세싱 커맨드에 의해 생성된 데이터를 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 복사하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 큐에 상기 복수의 미디어 프로세싱 커맨드를 저장하는 것에 응답하여, 상기 제1 프로세싱 유닛에 의해, 감소된 전력 상태에 진입하는 단계를 추가로 포함하는, 방법.
  10. 제8항에 있어서, 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 상기 데이터를 복사하는 단계는, 상기 제2 프로세싱 유닛 내에 포함된 DMA(direct memory access)에 의해, 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 상기 데이터를 복사하는 단계를 포함하는, 방법.
  11. 제8항에 있어서, 상기 제1 미디어 유닛은 카메라 회로, 비디오 디코더, 비디오 인코더, 그래픽 프로세싱 유닛, 디스플레이 드라이버, 컬러 프로세싱 유닛, 또는 미디어 스케일링 프로세서 중 적어도 하나를 포함하는, 방법.
  12. 제8항에 있어서, 상기 제2 미디어 유닛에 의해, 상기 제2 프로세싱 유닛으로부터 수신된 상기 데이터에 종속하여 디스플레이 상에 이미지의 적어도 일부분을 디스플레이하는 단계를 추가로 포함하는, 방법.
  13. 제8항에 있어서, 상기 제2 미디어 유닛에 의해, 상기 제2 프로세싱 유닛으로부터 수신된 상기 데이터에 의해 표현되는 이미지의 적어도 일부분을 스케일링하는 단계를 추가로 포함하는, 방법.
  14. 제8항에 있어서, 상기 제2 프로세싱 유닛에 의해, 상기 제2 미디어 프로세싱 커맨드를 전송하는 것을 기다리는 동안, 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제3 미디어 프로세싱 커맨드를 검색하는 단계, 및 상기 제2 미디어 프로세싱 커맨드를 상기 제2 미디어 유닛에 전송하기 이전에, 상기 제3 미디어 프로세싱 커맨드를 제3 미디어 유닛에 전송하는 단계를 추가로 포함하는, 방법.
  15. 장치로서,
    DMA(direct memory access) 유닛; 및
    프로세서를 포함하며, 상기 프로세서는,
    큐로부터 복수의 미디어 프로세싱 커맨드 중 제1 미디어 프로세싱 커맨드를 검색하고;
    상기 제1 미디어 프로세싱 커맨드를 제1 미디어 유닛에 전송하고;
    상기 제1 미디어 프로세싱 커맨드가 상기 제1 미디어 유닛에 의해 실행되는 동안, 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제2 미디어 프로세싱 커맨드를 검색하고;
    상기 제2 미디어 프로세싱 커맨드가 상기 제1 미디어 프로세싱 커맨드의 실행에 종속한다는 결정에 응답하여 상기 제2 미디어 프로세싱 커맨드를 전송하는 것을 기다리고;
    상기 제1 미디어 유닛으로부터 인터럽트를 수신하는 것에 응답하여 상기 제2 미디어 프로세싱 커맨드를 제2 미디어 유닛에 전송하도록 구성되며, 상기 인터럽트는 상기 제1 미디어 유닛이 상기 제1 미디어 프로세싱 커맨드를 완료하였음을 나타내고;
    상기 DMA는 상기 제1 미디어 유닛으로부터 상기 인터럽트를 수신하는 것에 응답하여 상기 제1 미디어 프로세싱 커맨드에 의해 생성된 데이터를 상기 제1 미디어 유닛으로부터 상기 제2 미디어 유닛으로 복사하도록 구성되는, 장치.
  16. 제15항에 있어서, 상기 복수의 미디어 프로세싱 커맨드는 호스트로부터 상기 큐로 전송되고, 상기 프로세서는 상기 호스트가 감소된 전력 모드에 있는 동안 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 주어진 미디어 프로세싱 커맨드를 검색하도록 추가로 구성되는, 장치.
  17. 제15항에 있어서, 상기 프로세서는 상기 프로세서가 상기 제2 미디어 프로세싱 커맨드를 검색한 후에 상기 큐로부터 상기 복수의 미디어 프로세싱 커맨드 중 제3 미디어 프로세싱 커맨드를 검색하도록 추가로 구성되는, 장치.
  18. 제17항에 있어서, 상기 프로세서는 상기 제2 미디어 프로세싱 커맨드를 상기 제2 미디어 유닛에 전송하기 이전에 상기 제3 미디어 프로세싱 커맨드를 제3 미디어 유닛에 전송하도록 추가로 구성되는, 장치.
  19. 제17항에 있어서, 상기 프로세서는 상기 제2 미디어 유닛으로부터 제2 인터럽트를 수신하는 것에 응답하여 상기 제3 미디어 프로세싱 커맨드를 상기 제1 미디어 유닛에 전송하도록 추가로 구성되는, 장치.
  20. 제15항에 있어서, 상기 복수의 미디어 프로세싱 커맨드를 저장하도록 구성된 메모리를 추가로 포함하는, 장치.
KR1020187005237A 2015-08-03 2016-06-09 미디어 프로세싱을 체이닝하는 방법 KR102018263B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/816,508 US9779468B2 (en) 2015-08-03 2015-08-03 Method for chaining media processing
US14/816,508 2015-08-03
PCT/US2016/036688 WO2017023420A1 (en) 2015-08-03 2016-06-09 Method for chaining media processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197025442A Division KR102085495B1 (ko) 2015-08-03 2016-06-09 미디어 프로세싱을 체이닝하는 방법

Publications (2)

Publication Number Publication Date
KR20180032626A KR20180032626A (ko) 2018-03-30
KR102018263B1 true KR102018263B1 (ko) 2019-11-11

Family

ID=56194599

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197025442A KR102085495B1 (ko) 2015-08-03 2016-06-09 미디어 프로세싱을 체이닝하는 방법
KR1020187005237A KR102018263B1 (ko) 2015-08-03 2016-06-09 미디어 프로세싱을 체이닝하는 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197025442A KR102085495B1 (ko) 2015-08-03 2016-06-09 미디어 프로세싱을 체이닝하는 방법

Country Status (5)

Country Link
US (2) US9779468B2 (ko)
KR (2) KR102085495B1 (ko)
CN (1) CN107924329B (ko)
DE (1) DE112016003527T5 (ko)
WO (1) WO2017023420A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080303846A1 (en) 2007-06-07 2008-12-11 Loren Brichter Assymetric two-pass graphics scaling

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000293923A (ja) * 1999-04-08 2000-10-20 Denso Corp 情報処理装置用電源装置および情報処理装置
US6842811B2 (en) 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
EP1255406B1 (en) * 2000-04-21 2007-02-07 Matsushita Electric Industrial Co., Ltd. Trick play apparatus for digital storage medium
US7412570B2 (en) * 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US8698838B1 (en) * 2007-09-07 2014-04-15 Zenverge, Inc. Architecture for multiple graphics planes
KR101503057B1 (ko) * 2008-01-02 2015-03-17 엘지전자 주식회사 컴퓨터 및 단말기, 그리고 이들을 이용한 미디어재생방법
JP5525175B2 (ja) 2008-04-08 2014-06-18 アビッド テクノロジー インコーポレイテッド 複数のハードウェア・ドメイン、データ・タイプ、およびフォーマットの処理を統合し抽象化するフレームワーク
WO2010091089A1 (en) * 2009-02-05 2010-08-12 Purplecomm Inc. Meta channel based media system control technology
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
CN101815199B (zh) * 2010-04-07 2013-08-07 中兴通讯股份有限公司 一种视频处理方法及终端
US20130148717A1 (en) 2010-08-26 2013-06-13 Freescale Semiconductor, Inc. Video processing system and method for parallel processing of video data
US8601169B1 (en) * 2010-11-03 2013-12-03 Pmc-Sierra Us, Inc. Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines
US9110656B2 (en) * 2011-08-16 2015-08-18 Freescale Semiconductor, Inc. Systems and methods for handling instructions of in-order and out-of-order execution queues
US20140223061A1 (en) 2011-12-19 2014-08-07 Keng Lai Yap System and deterministic method for servicing msi interrupts using direct cache access
US9563253B2 (en) * 2013-03-12 2017-02-07 Intel Corporation Techniques for power saving on graphics-related workloads
CN103268263B (zh) * 2013-05-14 2016-08-10 讯美电子科技有限公司 一种动态调整多图形处理器负载的方法及系统
US9424212B2 (en) 2013-06-13 2016-08-23 Microsoft Technology Licensing, Llc Operating system-managed interrupt steering in multiprocessor systems
US20150123977A1 (en) * 2013-11-06 2015-05-07 Nvidia Corporation Low latency and high performance synchronization mechanism amongst pixel pipe units

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080303846A1 (en) 2007-06-07 2008-12-11 Loren Brichter Assymetric two-pass graphics scaling

Also Published As

Publication number Publication date
US9779468B2 (en) 2017-10-03
US20170365034A1 (en) 2017-12-21
US10102607B2 (en) 2018-10-16
KR20180032626A (ko) 2018-03-30
DE112016003527T5 (de) 2020-05-20
US20170039672A1 (en) 2017-02-09
KR102085495B1 (ko) 2020-03-05
CN107924329A (zh) 2018-04-17
KR20190104251A (ko) 2019-09-06
WO2017023420A1 (en) 2017-02-09
CN107924329B (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
JP5963282B2 (ja) 割り込み分配スキーム
US9128818B2 (en) Memory mapping in a processor having multiple programmable units
US7533198B2 (en) Memory controller and method for handling DMA operations during a page copy
TW201905714A (zh) 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體
US10379745B2 (en) Simultaneous kernel mode and user mode access to a device using the NVMe interface
BR102014005665B1 (pt) Aparelho, método implementado por computador e mídia legível por máquina para economia de energia em cargas de trabalho
US20160239941A1 (en) Scaler circuit for generating various resolution images from single image and devices including the same
KR20170013882A (ko) 플래시 메모리 기반 저장 디바이스의 멀티 호스트 전력 제어기(mhpc)
US11995351B2 (en) DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine
KR20150051868A (ko) 하드웨어 컨텍스트 복구 흐름 동안에 프로그램가능한 소프트웨어 컨텍스트 상태 실행을 지원하기 위한 방법 및 장치
US9075795B2 (en) Interprocess communication
KR102018263B1 (ko) 미디어 프로세싱을 체이닝하는 방법
US11947835B2 (en) High-performance on-chip memory controller
US9437172B2 (en) High-speed low-power access to register files
US8842126B2 (en) Methods and systems to facilitate operation in unpinned memory
KR102213668B1 (ko) 제너럴 퍼포즈 프로그래머블 컴퓨팅 디바이스에서의 멀티미디어 데이터 프로세싱 방법 및 그에 따른 데이터 프로세싱 시스템
JP2023507293A (ja) システムダイレクトメモリアクセスエンジンのオフロード

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