KR102664190B1 - Cloud rendering service - Google Patents

Cloud rendering service Download PDF

Info

Publication number
KR102664190B1
KR102664190B1 KR1020210035215A KR20210035215A KR102664190B1 KR 102664190 B1 KR102664190 B1 KR 102664190B1 KR 1020210035215 A KR1020210035215 A KR 1020210035215A KR 20210035215 A KR20210035215 A KR 20210035215A KR 102664190 B1 KR102664190 B1 KR 102664190B1
Authority
KR
South Korea
Prior art keywords
container
android
decoding
encoding
gpu
Prior art date
Application number
KR1020210035215A
Other languages
Korean (ko)
Other versions
KR20220130391A (en
Inventor
이기태
김주홍
최성준
Original Assignee
주식회사 엘지유플러스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엘지유플러스 filed Critical 주식회사 엘지유플러스
Priority to KR1020210035215A priority Critical patent/KR102664190B1/en
Publication of KR20220130391A publication Critical patent/KR20220130391A/en
Application granted granted Critical
Publication of KR102664190B1 publication Critical patent/KR102664190B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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/5038Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Liquid Crystal Substances (AREA)
  • Processes Of Treating Macromolecular Substances (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

클라우드 렌더링 서비스가 개시된다. 본 발명의 일 실시예에 따른 장치, 바람직하게는 클라우드 서버는, 안드로이드 서비스를 클라우드에 기반하여 제공하기 위한 장치로서, 안드로이드 애플리케이션의 실행화면을 캡쳐하여 이미지 데이터를 생성하고, 적어도 하나의 GPU를 통해 렌더링을 수행하는, 적어도 하나의 안드로이드 컨테이너, 안드로이드 컨테이너로부터 전달된 이미지 데이터의 인/디코딩을 위한 하드웨어 인/디코딩부를 포함하는 적어도 하나의 리눅스 컨테이너를 포함한다. Cloud rendering service is launched. A device according to an embodiment of the present invention, preferably a cloud server, is a device for providing Android services based on the cloud, captures the execution screen of an Android application, generates image data, and generates image data through at least one GPU. It includes at least one Android container that performs rendering and at least one Linux container that includes a hardware encoding/decoding unit for encoding/decoding image data transmitted from the Android container.

Description

클라우드 렌더링 서비스{CLOUD RENDERING SERVICE}Cloud rendering service {CLOUD RENDERING SERVICE}

본 발명은 클라우드 렌더링 서비스에 관한 것이다.The present invention relates to cloud rendering services.

이동 통신망의 발달과 단말기 사양의 발전에 따라 종래의 단순한 통신 장치 또는 정보 제공 장치의 범주를 벗어나 이동 통신 단말기(이동 단말)는 현대인의 필수 소지품이 되었고, 토탈 엔터테인먼트 기기로 진화해 가고 있다.With the development of mobile communication networks and the development of terminal specifications, mobile communication terminals (mobile terminals), beyond the scope of conventional simple communication devices or information provision devices, have become essential belongings of modern people and are evolving into total entertainment devices.

최근에는 저 성능의 클라이언트 단말이 대용량의 영상 등을 처리하는 데에 무리가 있어, 클라우드 서버를 활용하여 해당 데이터를 대신 처리하게 하고, 그 처리된 결과만을 클라이언트 단말에서 수신하여 디스플레이하는 클라우드 컴퓨팅 기수링 사용되고 있으며, 이는 특히 AR/VR 서비스에 적용될 수 있다.Recently, low-performance client terminals have difficulty processing large amounts of video, etc., so cloud computing uses a cloud server to process the data instead, and only the processed results are received and displayed on the client terminal. It is being used, and this can especially be applied to AR/VR services.

하지만, 종래의 AR/VR 서비스의 경우, 콘텐츠를 디바이스로 스트리밍 및 다운로드 받은 후, 해당 디바이스의 리소스로 플레이하여 디바이스에 대한 부하가 많이 발생하는 문제점이 있었다. 이를 해결하기 위하여, 클라우드 렌더링 서비스가 제시되고 있다. 기존의 렌더링 서비스를 클라우드화 하기 위해서는 종래의 시스템 구조의 많은 부분이 수정되어야 한다.However, in the case of conventional AR/VR services, there was a problem in that content was streamed and downloaded to a device and then played using the device's resources, creating a large load on the device. To solve this problem, a cloud rendering service is being proposed. In order to cloud existing rendering services, many parts of the conventional system structure must be modified.

본 발명은 전술한 필요성 및/또는 문제점을 해결하는 것을 목적으로 한다.The present invention aims to solve the above-described needs and/or problems.

또한, 본 발명은, 종래의 클라우드 서비스의 경우, 필수적으로 하나의 OS 에서만 CPU/GPU 핸들링 및 인/디코딩을 수행할 수 밖에 없어서, 안드로이드 OS 또는 안드로이드 컨테이너를 통해 소프트웨어 인/디코딩을 수행하였던 문제를 해결하기 위해, 하드웨어 인/디코더를 리눅스 컨테이너 상에 마련하여 클라우드 서버의 GPU 가속이 구현될 수 있는 클라우드 렌더링 서비스를 구현하는 것을 목적으로 한다.In addition, the present invention solves the problem of performing software encoding/decoding through the Android OS or Android container because, in the case of a conventional cloud service, CPU/GPU handling and encoding/decoding can only be performed on one OS. To solve this problem, the purpose is to implement a cloud rendering service that can implement GPU acceleration of a cloud server by providing a hardware encoder/decoder on a Linux container.

본 발명의 일 실시예에 따른 장치는, 안드로이드 서비스를 클라우드에 기반하여 제공하기 위한 장치로서, 안드로이드 애플리케이션의 실행화면을 캡쳐하여 이미지 데이터를 생성하고, 적어도 하나의 GPU를 통해 렌더링을 수행하는, 적어도 하나의 안드로이드 컨테이너; 안드로이드 컨테이너로부터 전달된 이미지 데이터의 인/디코딩을 위한 하드웨어 인/디코딩부를 포함하는 적어도 하나의 리눅스 컨테이너를 포함한다.A device according to an embodiment of the present invention is a device for providing Android services based on the cloud, and captures the execution screen of an Android application to generate image data and performs rendering through at least one GPU. One Android container; It includes at least one Linux container including a hardware encoding/decoding unit for encoding/decoding image data transmitted from the Android container.

바람직한 실시예에서, 적어도 하나의 안드로이드 컨테이너는 이미지에 대한 인/디코딩을 위한 소프트웨어 인/디코딩부를 포함하지 않고, 적어도 하나의 리눅스 컨테이너에 포함된 하드웨어 인/디코딩부가 상기 소프트웨어 인/디코딩부의 기능을 대신하도록 구성될 수 있다.In a preferred embodiment, at least one Android container does not include a software encoding/decoding unit for encoding/decoding images, and a hardware encoding/decoding unit included in at least one Linux container performs the function of the software encoding/decoding unit instead. It can be configured to do so.

바람직한 실시예에서, 적어도 하나의 안드로이드 컨테이너와 적어도 하나의 리눅스 컨테이너 간의 데이터 전송을 위한 인터페이스를 더 포함할 수 있다.In a preferred embodiment, it may further include an interface for data transfer between at least one Android container and at least one Linux container.

바람직한 실시예에서, 상기 인터페이스를 통해 인/디코딩된 이미지 데이터가 서로 교환될 수 있다.In a preferred embodiment, encoded/decoded image data can be exchanged with each other via the interface.

바람직한 실시예에서, 리눅스 컨테이너는 적어도 하나의 GPU를 통해 하드웨어 가속이 가능할 수 있다.In a preferred embodiment, a Linux container may be capable of hardware acceleration via at least one GPU.

바람직한 실시예에서, 리눅스 컨테이너의 인/디코딩 잡은 최우선순위를 가질 수 있다.In a preferred embodiment, the Linux container's en/decoding job may have the highest priority.

바람직한 실시예에서, 리눅스 컨테이너는, 이동 단말에서 AR 영상을 구현하기 위해 카메라를 통해 입력되는 영상 데이터에 대한 디코딩, 또는 대용량의 VR 영상에 대한 디코딩도 지원할 수 있다.In a preferred embodiment, the Linux container can also support decoding of image data input through a camera to implement AR images in a mobile terminal, or decoding of large VR images.

바람직한 실시예에서, 리눅스 컨테이너와 안드로이드 컨테이너는 GPU 스케쥴러와 연결되어 상기 적어도 하나의 GPU와 액세스할 수 있다.In a preferred embodiment, the Linux container and the Android container are coupled to a GPU scheduler so that they can access the at least one GPU.

바람직한 실시예에서, 상기 GPU 스케쥴러는, 적어도 하나의 GPU 에 상응하는 칩의 성능에 기초하여, 안드로이드 컨테이너로부터 요청되는 렌더링 잡과 리눅스 컨테이너로부터 요청되는 인/디코딩 잡을 구분하여 스케쥴링 할 수 있다.In a preferred embodiment, the GPU scheduler can schedule the rendering job requested from the Android container and the in/decoding job requested from the Linux container, based on the performance of the chip corresponding to at least one GPU.

바람직한 실시예에서, 상기 GPU 스케쥴러는, 복수의 GPU들 중 상기 리눅스 컨테이너에 대해 전용되는(dedicated) GPU 를 특정하고, 나머지 GPU들에 상응하는 칩의 성능에 기초하여, 안드로이드 컨테이너로부터 요청되는 렌더링 잡을 스케쥴링 할 수 있다.In a preferred embodiment, the GPU scheduler specifies a GPU among a plurality of GPUs dedicated to the Linux container and, based on the performance of the chips corresponding to the remaining GPUs, executes the rendering job requested from the Android container. You can schedule.

본 발명의 다른 실시예에 따른 장치는 안드로이드 서비스를 클라우드에 기반하여 제공하기 위한 장치로서, 적어도 하나의 메모리; 적어도 하나의 통신 모듈; 적어도 하나의 그래픽 프로세서(GPU)를 포함하고, 상기 적어도 하나의 그래픽 프로세서는: i) 서비스 구동부를 통해, 안드로이드 애플리케이션의 실행화면을 캡쳐하여 이미지 데이터를 생성하고, 렌더링을 수행하는 제1 동작, 및 ii) 하드웨어 인/디코딩부를 통해, 안드로이드 컨테이너로부터 전달된 이미지 데이터의 인/디코딩 제2 동작을 지원한다.A device according to another embodiment of the present invention is a device for providing Android services based on the cloud, and includes at least one memory; at least one communication module; Comprising at least one graphics processor (GPU), wherein the at least one graphics processor: i) a first operation of capturing an execution screen of an Android application through a service driver, generating image data, and performing rendering; and ii) Supports the second operation of encoding/decoding image data transmitted from the Android container through a hardware encoding/decoding unit.

본 발명의 일 실시예에 따른 클라우드 렌더링 서비스의 효과에 대해 설명하면 다음과 같다.The effects of the cloud rendering service according to an embodiment of the present invention will be described as follows.

본 발명은 AR/VR 글래스 및 모바일 단말에서 처리하기 힘든 렌더링 수행이 가능할 수 있다.The present invention may be capable of performing rendering that is difficult to process in AR/VR glasses and mobile terminals.

또한, 본 발명은 다양한 OS 에서 제공되는 서비스들을 렌더링할 수 있으므로, OS 종속성 없이 클라이언트 디바이스에게 렌더링된 결과를 전달할 수 있다.Additionally, since the present invention can render services provided by various OSs, the rendered results can be delivered to the client device without OS dependency.

또한, 본 발명은 GPU의 제조사별, 안드로이드 OS에 대한 드라이버를 별도로 설치하거나 다운로드 받지 않아도 되기 때문에, 디바이스의 ㅈ오속성과 클라우드 렌더링 서버에 대한 종속성이 제거된다.In addition, since the present invention does not require separate installation or download of drivers for each GPU manufacturer or Android OS, the device's malfunction and dependency on the cloud rendering server are eliminated.

또한, 본 발명은 안드로이드 OS 내에서의 소프트웨어 인/디코딩 잡을 하드웨어 인/디코딩을 통해 구현할 수 있는 바, 하드웨어 상 GPU 가속을 통해 레이?시 측면 및 가격 측면에서의 개선이 달성될 수 있다.Additionally, the present invention can be implemented through hardware encoding/decoding of a software encoding/decoding job within the Android OS, and improvements in terms of latency and price can be achieved through GPU acceleration in hardware.

본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects that can be obtained from the present invention are not limited to the effects mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the description below. .

본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 특징을 설명한다.
도 1은 본 발명의 일 실시예에 따른 클라우드 렌더링 서비스를 제공하기 위한 장치의 세부 블록도이다.
도 2는 본 발명에 적용될 수 있는 무선 기기들을 도시한다.
도 3은 본 발명에 적용되는 XR 기기를 예시한다.
The accompanying drawings, which are included as part of the detailed description to aid understanding of the present invention, provide embodiments of the present invention, and together with the detailed description, explain technical features of the present invention.
1 is a detailed block diagram of a device for providing a cloud rendering service according to an embodiment of the present invention.
Figure 2 shows wireless devices applicable to the present invention.
Figure 3 illustrates an XR device applied to the present invention.

이하, 첨부된 도면을 참조하여 본 발명에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 발명에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. Hereinafter, embodiments disclosed in the present invention will be described in detail with reference to the attached drawings. However, identical or similar components will be assigned the same reference numbers regardless of reference numerals, and duplicate descriptions thereof will be omitted. The suffixes “module” and “part” for components used in the following description are given or used interchangeably only for the ease of preparing the specification, and do not have distinct meanings or roles in themselves. Additionally, in describing the embodiments disclosed in the present invention, if it is determined that detailed descriptions of related known technologies may obscure the gist of the embodiments disclosed in the present invention, the detailed descriptions will be omitted. In addition, the attached drawings are only for easy understanding of the embodiments disclosed in the present invention, and the technical idea disclosed in the present invention is not limited by the attached drawings, and all changes included in the spirit and technical scope of the present invention are not limited. , should be understood to include equivalents or substitutes.

제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.Terms containing ordinal numbers, such as first, second, etc., may be used to describe various components, but the components are not limited by the terms. The above terms are used only for the purpose of distinguishing one component from another.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When a component is said to be "connected" or "connected" to another component, it is understood that it may be directly connected to or connected to the other component, but that other components may exist in between. It should be. On the other hand, when it is mentioned that a component is “directly connected” or “directly connected” to another component, it should be understood that there are no other components in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.Singular expressions include plural expressions unless the context clearly dictates otherwise.

본 출원에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In this application, terms such as “comprise” or “have” are intended to designate the presence of features, numbers, steps, operations, components, parts, or combinations thereof described in the specification, but are not intended to indicate the presence of one or more other features. It should be understood that this does not exclude in advance the possibility of the existence or addition of elements, numbers, steps, operations, components, parts, or combinations thereof.

안드로이드 OS 상에 HW GPU 또는 CPU가 연동이 되어 안드로이드 OS 상에서 구동되는 것이 일반적인데, 이를 클라우드 기반에서 실현되기 위해서는 OS 가 탑재된 컨테이너가 마련되고, 그 컨테이너를 통해 안드로이드 애플리케이션이 구동된다. It is common for the HW GPU or CPU to be linked to the Android OS and run on the Android OS. To realize this on a cloud basis, a container loaded with the OS is prepared, and the Android application is run through the container.

종래에는, 컨테이너가 실제로 HW GPU 와 같은 구성에 직접적으로 접근(access)하는 것에 어려움이 있었기 때문에, 안드로이드 애플리케이션의 구동이 소프트웨어 인/디코딩을 통해 지원되고 있었다. 예를 들어, KR 10-1992829 B는 영상 콘텐츠를 웹상에서 제작하는 클라우드 기반의 영상 렌더링 시스템으로서, 다양한 OS들에 따른 서버 프로그램이 클라우드 서버에 의해 구현되는 일반적인 시스템 구조를 개시하고 있다. 다른 예를 들어, KR 10-2020-0097498 A는 애플리케이션에 필요한 리소스의 점유도를 산출하고, 산출된 점유도에 기반하여 인코더를 할당하는 장치 및 방법으로서, 일반적인 클라우드 스트리밍 인코딩 기법을 설명한다. 또 다른 예를 들어, KR 10-2016-0039888 A 또한 최적의 GPU 를 이용하여 클라우드 스트리밍 서비스를 제공하기 위한 방법만을 개시할 뿐이다.Conventionally, because it was difficult for containers to actually directly access components such as HW GPUs, the running of Android applications was supported through software encoding/decoding. For example, KR 10-1992829 B is a cloud-based video rendering system that produces video content on the web, and discloses a general system structure in which server programs for various OSs are implemented by a cloud server. For another example, KR 10-2020-0097498 A describes a general cloud streaming encoding technique as an apparatus and method for calculating the occupancy of resources required for an application and allocating an encoder based on the calculated occupancy. For another example, KR 10-2016-0039888 A also only discloses a method for providing a cloud streaming service using an optimal GPU.

이와 대비적으로, 본 발명의 일 실시예에 따른 클라우드 서버는 SW 인/디코딩부의 기능을 수행하는 HW 인/디코딩부(11, 12)를 마련하는 것을 특징으로 한다. 상기 HW 인/디코딩부(11, 12)는 인/디코더 리눅스 컨테이너(10), 즉 인/디코딩 구현부에 구비된다. In contrast, the cloud server according to an embodiment of the present invention is characterized by providing a HW encoding/decoding unit 11 and 12 that performs the function of the SW encoding/decoding unit. The HW encoding/decoding units 11 and 12 are provided in the encoding/decoder Linux container 10, that is, the encoding/decoding implementation unit.

다시 말해, 본 발명의 일 실시예에 따른 클라우드 서버는 HW 인/디코딩을 실현할 수 있는 HW 인/디코딩부(11, 12)를 별도로 마련함으로써, 안드로이드 애플리케이션이 구동되기 위한 안드로이드 컨테이너(20a, 20b)에서는 렌더링 프로세스를 수행하고, HW 인/디코딩부(11, 12)가 구비된 인/디코딩 구현부에서는 인/디코딩 프로세스를 수행하는 구조를 제시한다. 기존에 안드로이드 OS 상에서 실현되거나 구동되던 구조를 인/디코딩 구현부와 서비스 구동부로 분리함으로써, 레이턴시와 같은 성능의 개선이 달성될 수 있다. 이하, 도 1을 참조하여 더 상세하게 설명한다.In other words, the cloud server according to an embodiment of the present invention provides separate HW input/decoding units 11 and 12 capable of implementing HW input/decoding, thereby providing Android containers 20a and 20b for running Android applications. presents a structure in which a rendering process is performed, and an encoding/decoding implementation unit equipped with the HW encoding/decoding units 11 and 12 performs an encoding/decoding process. By separating the structure previously realized or operated on the Android OS into an encoding/decoding implementation part and a service driving part, improvements in performance such as latency can be achieved. Hereinafter, it will be described in more detail with reference to FIG. 1.

도 1은 본 발명의 일 실시예에 따른 클라우드 렌더링 서비스를 제공하기 위한 장치의 세부 블록도이다. 여기서, 클라우드 렌더링 서비스를 제공하기 위한 장치는 클라우드 서버인 것이 바람직하나, 이에 한정되는 것은 아니다.1 is a detailed block diagram of a device for providing a cloud rendering service according to an embodiment of the present invention. Here, the device for providing the cloud rendering service is preferably a cloud server, but is not limited thereto.

안드로이드 컨테이너(20a, 20b) (서비스 구동부)Android container (20a, 20b) (service drive unit)

안드로이드 컨테이너(20a, 20b)는 서비스 구동부로서, 애플리케이션 구동 및 렌더링 기능을 수행한다. 안드로이드 OS가 구비되어 있으며, 복수의 GPU(40) 중 적어도 일부, 또는 어느 하나와 GPU 스케쥴러(30)를 거쳐 연결된다. 이에 따라, 서비스 구동부는 적어도 하나의 GPU(40)를 통해 렌더링을 구현할 수 있다. 여기서, GPU 스케쥴러(30)는 복수의 서비스 구동부들 각각에 대한 점유도(예를 들어, 리소스 점유도)를 계산하고, 계산된 리소스 점유율에 기반하여 복수의 GPU(40) 들 중 적어도 일부에 스케쥴링한다. 이에 따라, 기존에 모바일 서비스(예를 들어, 모바일 단말에서 사용되는 모바일 서비스)에 제공되는 안드로이드 서비스가 클라우드 렌더링 서비스에서도 동일하게 제공될 수 있다.The Android containers 20a and 20b are service drivers and perform application operation and rendering functions. It is equipped with an Android OS and is connected to at least some or one of the plurality of GPUs 40 through the GPU scheduler 30. Accordingly, the service driver may implement rendering through at least one GPU 40. Here, the GPU scheduler 30 calculates the occupancy rate (e.g., resource occupancy) for each of the plurality of service driving units, and schedules at least some of the plurality of GPUs 40 based on the calculated resource occupancy rate. do. Accordingly, Android services previously provided for mobile services (e.g., mobile services used in mobile terminals) may be equally provided for cloud rendering services.

이미지 데이터(또는 영상 데이터)의 인/디코딩에 필요한 인/디코더 리눅스 컨테이너(10)(소위, 인/디코딩 구현부)에 대한 인터페이스가 구비되어야 하며, 그러한 인터페이스를 통해 상기 안드로이드 컨테이너(20a, 20b)와 캡쳐된 인/디코딩 이미지를 주고 받을 수 있다.An interface to the encoder/decoder Linux container 10 (so-called encoder/decoder implementation unit) required for encoding/decoding of image data (or video data) must be provided, and the Android containers 20a and 20b are connected through such an interface. You can exchange captured in/decode images with .

본 발명의 바람직한 실시예에서, 서비스 구동부에는 SW 인/디코딩부가 포함되지 않는 것을 특징으로 한다. 종래에는, 전형적으로 안드로이드 컨테이너(20a, 20b)에서 안드로이드 애플리케이션이 실행되는데, 클라우드 렌더링이란 실행되는 애플리케이션의 화면을 실시간으로 캡쳐하여 스트리밍으로 제공하는 서비스를 지칭한다. 이때, 안드로이드 컨테이너(20a, 20b) 상에서 인/디코딩 처리를 위해 GPU에서 제공하는 HW 인/디코딩을 사용할 수 없어 SW 인/디코딩으로 처리하고 있었던 것이다. 이를 안드로이드 컨테이너(20a, 20b)에서 인/디코딩부를 분리 제거하고, 그 기능을 대신하는 HW 인/디코딩부(11, 12)를 별도의 리눅스 컨테이너(10)에 마련하는 것이다. 상기 리눅스 컨테이너(10)는 HW 인/디코딩부(11, 12)를 통해 GPU와 접근하여 기존의 안드로이드 기반의 서비스 성능이 크게 개선될 수 있다. 별도의 HW 인코딩부 및 디코딩부가 마련된 리눅스 컨테이너(10)는 인/디코딩 리눅스 컨테이너(10) 또는 인/디코딩 구현부로 지칭될 수 있으며, 이하에서 상세히 설명한다.In a preferred embodiment of the present invention, the service driver does not include a SW encoding/decoding unit. Conventionally, Android applications are typically executed in Android containers 20a and 20b, and cloud rendering refers to a service that captures the screen of a running application in real time and provides it as streaming. At this time, the HW encoding/decoding provided by the GPU could not be used for encoding/decoding processing on the Android containers (20a, 20b), so SW encoding/decoding was used. The encoding/decoding unit is separated and removed from the Android containers (20a, 20b), and the HW encoding/decoding units (11, 12) that replace the function are provided in a separate Linux container (10). The Linux container 10 accesses the GPU through the HW encoding/decoding units 11 and 12, so that the performance of existing Android-based services can be greatly improved. The Linux container 10 equipped with a separate HW encoding unit and decoding unit may be referred to as an encoding/decoding Linux container 10 or an encoding/decoding implementation unit, and will be described in detail below.

인/디코더 리눅스 컨테이너(10) (인/디코딩 구현부)En/Decoder Linux Container (10) (En/Decoding Implementation Unit)

인/디코더 리눅스 컨테이너(10)는 인/디코딩 구현부로서, 인코딩 및 디코딩 기능을 수행한다. 리눅스 컨테이너(10) 형태로 마련되며, 연관된 인/디코딩 잡(En/Decoding Job)은 최우선 순위를 갖는다. GPU 내의 HW 가속은 안드로이드 OS가 아닌 리눅스 OS에서 가능하기 때문에, GPU 카드의 인/디코더 성능에 맞게 요청된다. The encoder/decoder Linux container 10 is an encoder/decoder implementation unit and performs encoding and decoding functions. It is provided in the form of a Linux container (10), and the associated En/Decoding Job has the highest priority. Since HW acceleration within the GPU is possible in the Linux OS, not the Android OS, it is requested according to the in/decoder performance of the GPU card.

안드로이드 컨테이너(20a, 20b)로부터 전달된 인/디코딩된 이미지의 처리를 위한 인터페이스를 포함한다. 단순 그래픽 처리 후에 인코딩되는 일반적인 클라우드 렌더링 서비스가 아닌, 클라우드 AR 서비스의 준비와 고용량의 VR 디코딩 처리 등을 위한 디코딩 처리도 수행될 수 있다.Includes an interface for processing encoded/decoded images delivered from Android containers 20a and 20b. Rather than a typical cloud rendering service that is encoded after simple graphics processing, decoding processing for preparation of cloud AR service and high-capacity VR decoding processing can also be performed.

본 발명의 일 실시예에 따른 인/디코딩 구현부는 서비스 구동부의 SW 인/디코딩부의 기능을 대신하는 것을 특징으로 한다. The encoding/decoding implementation unit according to an embodiment of the present invention is characterized in that it replaces the function of the SW encoding/decoding unit of the service driver.

GPU 스케쥴러(30)GPU Scheduler(30)

일반적인 GPU의 경우, 인/디코더의 역할을 수행하는 칩과 렌더링을 수행하는 칩이 물리적으로 분리되어 있다. GPU 카드의 성능(스펙)에 따라, GPU 스케쥴러(30)는 안드로이드 컨테이너(20a, 20b)에서 요청된 렌더링 잡 또는 인/디코더 컨테이너에서 요청된 인/디코딩 잡을 다양한 GPU에 스케쥴링 한다. 상기 스케쥴링은 GPU의 가용 스펙(Specification)에 따라 결정된다.In the case of a typical GPU, the chip that acts as an encoder/decoder and the chip that performs rendering are physically separated. Depending on the performance (specification) of the GPU card, the GPU scheduler 30 schedules the rendering job requested in the Android containers 20a and 20b or the in/decoding job requested in the in/decoder container to various GPUs. The scheduling is determined according to the available specifications of the GPU.

GPU 스케쥴러(30)는, 바람직하게는, 복수의 GPU(40)들 적어도 하나를 인/디코딩 구현부에 전용(dedicated)되도록 제어할 수 있다. 전용된 GPU의 경우, 인/디코딩 구현부의 프로세싱에 독점적으로 전용되며, 전용된 GPU를 제외한 나머지 GPU들은 서비스 구동부와 연결된다. 전용된 GPU를 제외한 나머지 GPU들은 GPU 스케쥴러(30)에 의해 적어도 하나의 서비스 구동부와 각각 스케쥴링된다. The GPU scheduler 30 may preferably control at least one of the plurality of GPUs 40 to be dedicated to the encoding/decoding implementation unit. In the case of the dedicated GPU, it is exclusively dedicated to the processing of the encoding/decoding implementation unit, and the remaining GPUs, excluding the dedicated GPU, are connected to the service driving unit. Except for the dedicated GPU, the remaining GPUs are each scheduled with at least one service driving unit by the GPU scheduler 30.

이처럼, 본 발명의 일 실시예에 따른 클라우드 렌더링 서비스를 위한 서버는 GPU의 성능을 최대한으로 사용하여 모든 인/디코딩 및 렌더링에 대한 레이턴시 및 퍼포먼스를 향상시키게 하며, 이를 위해 컨테이너 관점에서 서비스 구현부와 인/디코딩 구현부로 구분되는 것이다.As such, the server for the cloud rendering service according to an embodiment of the present invention uses the performance of the GPU to the maximum to improve latency and performance for all in/decoding and rendering. To this end, from the container perspective, the service implementation unit and It is divided into an encoding/decoding implementation part.

도 2는 본 발명에 적용될 수 있는 무선 기기들을 도시한다.Figure 2 shows wireless devices applicable to the present invention.

제1 무선 기기(100)는 하나 이상의 프로세서(102) 및 하나 이상의 메모리(104)를 포함하며, 추가적으로 하나 이상의 송수신기(106) 및/또는 하나 이상의 안테나(108)을 더 포함할 수 있다. 프로세서(102)는 메모리(104) 및/또는 송수신기(106)를 제어하며, 앞에서 설명/제안한 기능, 절차 및/또는 방법들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서(102)는 메모리(104) 내의 정보를 처리하여 제1 정보/신호를 생성한 뒤, 송수신기(106)을 통해 제1 정보/신호를 포함하는 무선 신호를 전송할 수 있다. 또한, 프로세서(102)는 송수신기(106)를 통해 제2 정보/신호를 포함하는 무선 신호를 수신한 뒤, 제2 정보/신호의 신호 처리로부터 얻은 정보를 메모리(104)에 저장할 수 있다. 메모리(104)는 프로세서(102)와 연결될 수 있고, 프로세서(102)의 동작과 관련한 다양한 정보를 저장할 수 있다. 예를 들어, 메모리(104)는 프로세서(102)에 의해 제어되는 프로세스들 중 일부 또는 전부를 수행하거나, 앞에서 설명/제안한 절차 및/또는 방법들을 수행하기 위한 명령들을 포함하는 소프트웨어 코드를 저장할 수 있다. 여기서, 프로세서(102)와 메모리(104)는 무선 통신 기술(예, LTE, NR)을 구현하도록 설계된 통신 모뎀/회로/칩의 일부일 수 있다. 송수신기(106)는 프로세서(102)와 연결될 수 있고, 하나 이상의 안테나(108)를 통해 무선 신호를 송신 및/또는 수신할 수 있다. 송수신기(106)는 송신기 및/또는 수신기를 포함할 수 있다. 송수신기(106)는 RF(Radio Frequency) 유닛과 혼용될 수 있다. 본 발명에서 무선 기기는 통신 모뎀/회로/칩을 의미할 수도 있다.The first wireless device 100 includes one or more processors 102 and one or more memories 104, and may additionally include one or more transceivers 106 and/or one or more antennas 108. The processor 102 controls the memory 104 and/or the transceiver 106 and may be configured to implement the functions, procedures and/or methods described/suggested above. For example, the processor 102 may process information in the memory 104 to generate first information/signal and then transmit a wireless signal including the first information/signal through the transceiver 106. Additionally, the processor 102 may receive a wireless signal including the second information/signal through the transceiver 106 and then store information obtained from signal processing of the second information/signal in the memory 104. The memory 104 may be connected to the processor 102 and may store various information related to the operation of the processor 102. For example, memory 104 may perform some or all of the processes controlled by processor 102, or may store software code including instructions for performing procedures and/or methods described/suggested above. . Here, the processor 102 and memory 104 may be part of a communication modem/circuit/chip designed to implement wireless communication technology (eg, LTE, NR). Transceiver 106 may be coupled to processor 102 and may transmit and/or receive wireless signals via one or more antennas 108. Transceiver 106 may include a transmitter and/or receiver. The transceiver 106 can be used interchangeably with an RF (Radio Frequency) unit. In the present invention, a wireless device may mean a communication modem/circuit/chip.

제2 무선 기기(200)는 하나 이상의 프로세서(202), 하나 이상의 메모리(204)를 포함하며, 추가적으로 하나 이상의 송수신기(206) 및/또는 하나 이상의 안테나(208)를 더 포함할 수 있다. 프로세서(202)는 메모리(204) 및/또는 송수신기(206)를 제어하며, 앞에서 설명/제안한 기능, 절차 및/또는 방법들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서(202)는 메모리(204) 내의 정보를 처리하여 제3 정보/신호를 생성한 뒤, 송수신기(206)를 통해 제3 정보/신호를 포함하는 무선 신호를 전송할 수 있다. 또한, 프로세서(202)는 송수신기(206)를 통해 제4 정보/신호를 포함하는 무선 신호를 수신한 뒤, 제4 정보/신호의 신호 처리로부터 얻은 정보를 메모리(204)에 저장할 수 있다. 메모리(204)는 프로세서(202)와 연결될 수 있고, 프로세서(202)의 동작과 관련한 다양한 정보를 저장할 수 있다. 예를 들어, 메모리(204)는 프로세서(202)에 의해 제어되는 프로세스들 중 일부 또는 전부를 수행하거나, 앞에서 설명/제안한 절차 및/또는 방법들을 수행하기 위한 명령들을 포함하는 소프트웨어 코드를 저장할 수 있다. 여기서, 프로세서(202)와 메모리(204)는 무선 통신 기술(예, LTE, NR)을 구현하도록 설계된 통신 모뎀/회로/칩의 일부일 수 있다. 송수신기(206)는 프로세서(202)와 연결될 수 있고, 하나 이상의 안테나(208)를 통해 무선 신호를 송신 및/또는 수신할 수 있다. 송수신기(206)는 송신기 및/또는 수신기를 포함할 수 있다 송수신기(206)는 RF 유닛과 혼용될 수 있다. 본 발명에서 무선 기기는 통신 모뎀/회로/칩을 의미할 수도 있다.The second wireless device 200 includes one or more processors 202, one or more memories 204, and may further include one or more transceivers 206 and/or one or more antennas 208. The processor 202 controls the memory 204 and/or the transceiver 206 and may be configured to implement the functions, procedures and/or methods described/suggested above. For example, the processor 202 may process the information in the memory 204 to generate third information/signal and then transmit a wireless signal including the third information/signal through the transceiver 206. Additionally, the processor 202 may receive a wireless signal including the fourth information/signal through the transceiver 206 and then store information obtained from signal processing of the fourth information/signal in the memory 204. The memory 204 may be connected to the processor 202 and may store various information related to the operation of the processor 202. For example, memory 204 may perform some or all of the processes controlled by processor 202, or may store software code including instructions for performing procedures and/or methods described/suggested above. . Here, the processor 202 and memory 204 may be part of a communication modem/circuit/chip designed to implement wireless communication technology (eg, LTE, NR). Transceiver 206 may be coupled to processor 202 and may transmit and/or receive wireless signals via one or more antennas 208. Transceiver 206 may include a transmitter and/or receiver. Transceiver 206 may be used interchangeably with an RF unit. In the present invention, a wireless device may mean a communication modem/circuit/chip.

이하, 무선 기기(100, 200)의 하드웨어 요소에 대해 보다 구체적으로 설명한다. 이로 제한되는 것은 아니지만, 하나 이상의 프로토콜 계층이 하나 이상의 프로세서(102, 202)에 의해 구현될 수 있다. 예를 들어, 하나 이상의 프로세서(102, 202)는 하나 이상의 계층(예, PHY, MAC, RLC, PDCP, RRC, SDAP와 같은 기능적 계층)을 구현할 수 있다. 하나 이상의 프로세서(102, 202)는 본 문서에 개시된 기능, 절차, 제안 및/또는 방법에 따라 하나 이상의 PDU(Protocol Data Unit) 및/또는 하나 이상의 SDU(Service Data Unit)를 생성할 수 있다. 하나 이상의 프로세서(102, 202)는 본 문서에 개시된 기능, 절차, 제안 및/또는 방법에 따라 메시지, 제어정보, 데이터 또는 정보를 생성할 수 있다. 하나 이상의 프로세서(102, 202)는 본 문서에 개시된 기능, 절차, 제안 및/또는 방법에 따라 PDU, SDU, 메시지, 제어정보, 데이터 또는 정보를 포함하는 신호(예, 베이스밴드 신호)를 생성하여, 하나 이상의 송수신기(106, 206)에게 제공할 수 있다. 하나 이상의 프로세서(102, 202)는 하나 이상의 송수신기(106, 206)로부터 신호(예, 베이스밴드 신호)를 수신할 수 있고, 본 문서에 개시된 기능, 절차, 제안 및/또는 방법에 따라 PDU, SDU, 메시지, 제어정보, 데이터 또는 정보를 획득할 수 있다.Hereinafter, the hardware elements of the wireless devices 100 and 200 will be described in more detail. Although not limited thereto, one or more protocol layers may be implemented by one or more processors 102, 202. For example, one or more processors 102, 202 may implement one or more layers (e.g., functional layers such as PHY, MAC, RLC, PDCP, RRC, SDAP). One or more processors 102, 202 may generate one or more Protocol Data Units (PDUs) and/or one or more Service Data Units (SDUs) according to the functions, procedures, suggestions and/or methods disclosed herein. One or more processors 102, 202 may generate messages, control information, data or information according to the functions, procedures, suggestions and/or methods disclosed herein. One or more processors 102, 202 generate signals (e.g., baseband signals) containing PDUs, SDUs, messages, control information, data or information according to the functions, procedures, suggestions and/or methods disclosed herein. , can be provided to one or more transceivers (106, 206). One or more processors (102, 202) may receive signals (e.g., baseband signals) from one or more transceivers (106, 206) and transmit a PDU, SDU, or PDU according to the functions, procedures, suggestions, and/or methods disclosed herein. , messages, control information, data or information can be obtained.

하나 이상의 프로세서(102, 202)는 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 또는 마이크로 컴퓨터로 지칭될 수 있다. 하나 이상의 프로세서(102, 202)는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합에 의해 구현될 수 있다. 일 예로, 하나 이상의 ASIC(Application Specific Integrated Circuit), 하나 이상의 DSP(Digital Signal Processor), 하나 이상의 DSPD(Digital Signal Processing Device), 하나 이상의 PLD(Programmable Logic Device) 또는 하나 이상의 FPGA(Field Programmable Gate Arrays)가 하나 이상의 프로세서(102, 202)에 포함될 수 있다. 본 문서에 개시된 기능, 절차, 제안 및/또는 방법들은 펌웨어 또는 소프트웨어를 사용하여 구현될 수 있고, 펌웨어 또는 소프트웨어는 모듈, 절차, 기능 등을 포함하도록 구현될 수 있다. 본 문서에 개시된 기능, 절차, 제안 및/또는 방법을 수행하도록 설정된 펌웨어 또는 소프트웨어는 하나 이상의 프로세서(102, 202)에 포함되거나, 하나 이상의 메모리(104, 204)에 저장되어 하나 이상의 프로세서(102, 202)에 의해 구동될 수 있다. 본 문서에 개시된 기능, 절차, 제안 및 또는 방법들은 코드, 명령어 및/또는 명령어의 집합 형태로 펌웨어 또는 소프트웨어를 사용하여 구현될 수 있다. One or more processors 102, 202 may be referred to as a controller, microcontroller, microprocessor, or microcomputer. One or more processors 102, 202 may be implemented by hardware, firmware, software, or a combination thereof. As an example, one or more Application Specific Integrated Circuits (ASICs), one or more Digital Signal Processors (DSPs), one or more Digital Signal Processing Devices (DSPDs), one or more Programmable Logic Devices (PLDs), or one or more Field Programmable Gate Arrays (FPGAs) May be included in one or more processors 102 and 202. The functions, procedures, suggestions and/or methods disclosed in this document may be implemented using firmware or software, and the firmware or software may be implemented to include modules, procedures, functions, etc. Firmware or software configured to perform the functions, procedures, suggestions and/or methods disclosed herein may be included in one or more processors (102, 202) or stored in one or more memories (104, 204) to enable one or more processors (102, 202). 202). The functions, procedures, suggestions and or methods disclosed in this document may be implemented using firmware or software in the form of codes, instructions and/or sets of instructions.

하나 이상의 메모리(104, 204)는 하나 이상의 프로세서(102, 202)와 연결될 수 있고, 다양한 형태의 데이터, 신호, 메시지, 정보, 프로그램, 코드, 지시 및/또는 명령을 저장할 수 있다. 하나 이상의 메모리(104, 204)는 ROM, RAM, EPROM, 플래시 메모리, 하드 드라이브, 레지스터, 캐쉬 메모리, 컴퓨터 판독 저장 매체 및/또는 이들의 조합으로 구성될 수 있다. 하나 이상의 메모리(104, 204)는 하나 이상의 프로세서(102, 202)의 내부 및/또는 외부에 위치할 수 있다. 또한, 하나 이상의 메모리(104, 204)는 유선 또는 무선 연결과 같은 다양한 기술을 통해 하나 이상의 프로세서(102, 202)와 연결될 수 있다.One or more memories 104, 204 may be connected to one or more processors 102, 202 and may store various types of data, signals, messages, information, programs, codes, instructions, and/or instructions. One or more memories 104, 204 may consist of ROM, RAM, EPROM, flash memory, hard drives, registers, cache memory, computer readable storage media, and/or combinations thereof. One or more memories 104, 204 may be located internal to and/or external to one or more processors 102, 202. Additionally, one or more memories 104, 204 may be connected to one or more processors 102, 202 through various technologies, such as wired or wireless connections.

하나 이상의 송수신기(106, 206)는 하나 이상의 다른 장치에게 본 문서의 방법들 및/또는 동작 순서도 등에서 언급되는 사용자 데이터, 제어 정보, 무선 신호/채널 등을 전송할 수 있다. 하나 이상의 송수신기(106, 206)는 하나 이상의 다른 장치로부터 본 문서에 개시된 기능, 절차, 제안, 방법 및/또는 동작 순서도 등에서 언급되는 사용자 데이터, 제어 정보, 무선 신호/채널 등을 수신할 수 있다. 예를 들어, 하나 이상의 송수신기(106, 206)는 하나 이상의 프로세서(102, 202)와 연결될 수 있고, 무선 신호를 송수신할 수 있다. 예를 들어, 하나 이상의 프로세서(102, 202)는 하나 이상의 송수신기(106, 206)가 하나 이상의 다른 장치에게 사용자 데이터, 제어 정보 또는 무선 신호를 전송하도록 제어할 수 있다. 또한, 하나 이상의 프로세서(102, 202)는 하나 이상의 송수신기(106, 206)가 하나 이상의 다른 장치로부터 사용자 데이터, 제어 정보 또는 무선 신호를 수신하도록 제어할 수 있다. 또한, 하나 이상의 송수신기(106, 206)는 하나 이상의 안테나(108, 208)와 연결될 수 있고, 하나 이상의 송수신기(106, 206)는 하나 이상의 안테나(108, 208)를 통해 본 문서에 개시된 기능, 절차, 제안, 방법 및/또는 동작 순서도 등에서 언급되는 사용자 데이터, 제어 정보, 무선 신호/채널 등을 송수신하도록 설정될 수 있다. 본 문서에서, 하나 이상의 안테나는 복수의 물리 안테나이거나, 복수의 논리 안테나(예, 안테나 포트)일 수 있다. 하나 이상의 송수신기(106, 206)는 수신된 사용자 데이터, 제어 정보, 무선 신호/채널 등을 하나 이상의 프로세서(102, 202)를 이용하여 처리하기 위해, 수신된 무선 신호/채널 등을 RF 밴드 신호에서 베이스밴드 신호로 변환(Convert)할 수 있다. 하나 이상의 송수신기(106, 206)는 하나 이상의 프로세서(102, 202)를 이용하여 처리된 사용자 데이터, 제어 정보, 무선 신호/채널 등을 베이스밴드 신호에서 RF 밴드 신호로 변환할 수 있다. 이를 위하여, 하나 이상의 송수신기(106, 206)는 (아날로그) 오실레이터 및/또는 필터를 포함할 수 있다.One or more transceivers 106, 206 may transmit user data, control information, wireless signals/channels, etc. mentioned in the methods and/or operation flowcharts of this document to one or more other devices. One or more transceivers 106, 206 may receive user data, control information, wireless signals/channels, etc. mentioned in the functions, procedures, proposals, methods and/or operational flowcharts disclosed herein, etc. from one or more other devices. For example, one or more transceivers 106 and 206 may be connected to one or more processors 102 and 202 and may transmit and receive wireless signals. For example, one or more processors 102, 202 may control one or more transceivers 106, 206 to transmit user data, control information, or wireless signals to one or more other devices. Additionally, one or more processors 102, 202 may control one or more transceivers 106, 206 to receive user data, control information, or wireless signals from one or more other devices. In addition, one or more transceivers (106, 206) may be connected to one or more antennas (108, 208), and one or more transceivers (106, 206) may perform the functions and procedures disclosed in this document through one or more antennas (108, 208). , may be set to transmit and receive user data, control information, wireless signals/channels, etc. mentioned in the proposal, method and/or operation flowchart, etc. In this document, one or more antennas may be multiple physical antennas or multiple logical antennas (eg, antenna ports). One or more transceivers (106, 206) process the received user data, control information, wireless signals/channels, etc. using one or more processors (102, 202), and convert the received wireless signals/channels, etc. from the RF band signal. It can be converted to a baseband signal. One or more transceivers (106, 206) may convert user data, control information, wireless signals/channels, etc. processed using one or more processors (102, 202) from baseband signals to RF band signals. For this purpose, one or more transceivers 106, 206 may comprise (analog) oscillators and/or filters.

도 3은 본 발명에 적용되는 XR 기기를 예시한다. XR 기기는 HMD, 차량에 구비된 HUD(Head-Up Display), 텔레비전, 스마트폰, 컴퓨터, 웨어러블 디바이스, 가전 기기, 디지털 사이니지(signage), 차량, 로봇 등으로 구현될 수 있다.Figure 3 illustrates an XR device applied to the present invention. XR devices can be implemented as HMDs, HUDs (Head-Up Displays) installed in vehicles, televisions, smartphones, computers, wearable devices, home appliances, digital signage, vehicles, robots, etc.

도 3을 참조하면, XR 기기(100a)는 통신부(110), 제어부(120), 메모리부(130), 입출력부(140a), 센서부(140b) 및 전원공급부(140c)를 포함할 수 있다. Referring to FIG. 3, the XR device 100a may include a communication unit 110, a control unit 120, a memory unit 130, an input/output unit 140a, a sensor unit 140b, and a power supply unit 140c. .

통신부(110)는 다른 무선 기기, 휴대 기기, 또는 미디어 서버 등의 외부 기기들과 신호(예, 미디어 데이터, 제어 신호 등)를 송수신할 수 있다. 미디어 데이터는 영상, 이미지, 소리 등을 포함할 수 있다. 제어부(120)는 XR 기기(100a)의 구성 요소들을 제어하여 다양한 동작을 수행할 수 있다. 예를 들어, 제어부(120)는 비디오/이미지 획득, (비디오/이미지) 인코딩, 메타데이터 생성 및 처리 등의 절차를 제어 및/또는 수행하도록 구성될 수 있다. 메모리부(130)는 XR 기기(100a)의 구동/XR 오브젝트의 생성에 필요한 데이터/파라미터/프로그램/코드/명령을 저장할 수 있다. 입출력부(140a)는 외부로부터 제어 정보, 데이터 등을 획득하며, 생성된 XR 오브젝트를 출력할 수 있다. 입출력부(140a)는 카메라, 마이크로폰, 사용자 입력부, 디스플레이부, 스피커 및/또는 햅틱 모듈 등을 포함할 수 있다. 센서부(140b)는 XR 기기 상태, 주변 환경 정보, 사용자 정보 등을 얻을 수 있다. 센서부(140b)는 근접 센서, 조도 센서, 가속도 센서, 자기 센서, 자이로 센서, 관성 센서, RGB 센서, IR 센서, 지문 인식 센서, 초음파 센서, 광 센서, 마이크로폰 및/또는 레이더 등을 포함할 수 있다. 전원공급부(140c)는 XR 기기(100a)에게 전원을 공급하며, 유/무선 충전 회로, 배터리 등을 포함할 수 있다.The communication unit 110 may transmit and receive signals (eg, media data, control signals, etc.) with external devices such as other wireless devices, mobile devices, or media servers. Media data may include video, images, sound, etc. The control unit 120 may perform various operations by controlling the components of the XR device 100a. For example, the control unit 120 may be configured to control and/or perform procedures such as video/image acquisition, (video/image) encoding, and metadata generation and processing. The memory unit 130 may store data/parameters/programs/codes/commands necessary for driving the XR device 100a/creating an XR object. The input/output unit 140a may obtain control information, data, etc. from the outside and output the generated XR object. The input/output unit 140a may include a camera, microphone, user input unit, display unit, speaker, and/or haptic module. The sensor unit 140b can obtain XR device status, surrounding environment information, user information, etc. The sensor unit 140b may include a proximity sensor, an illumination sensor, an acceleration sensor, a magnetic sensor, a gyro sensor, an inertial sensor, an RGB sensor, an IR sensor, a fingerprint recognition sensor, an ultrasonic sensor, an optical sensor, a microphone, and/or a radar. there is. The power supply unit 140c supplies power to the XR device 100a and may include a wired/wireless charging circuit, a battery, etc.

일 예로, XR 기기(100a)의 메모리부(130)는 XR 오브젝트(예, AR/VR/MR 오브젝트)의 생성에 필요한 정보(예, 데이터 등)를 포함할 수 있다. 입출력부(140a)는 사용자로부터 XR 기기(100a)를 조작하는 명령을 회득할 수 있으며, 제어부(120)는 사용자의 구동 명령에 따라 XR 기기(100a)를 구동시킬 수 있다. 예를 들어, 사용자가 XR 기기(100a)를 통해 영화, 뉴스 등을 시청하려고 하는 경우, 제어부(120)는 통신부(130)를 통해 컨텐츠 요청 정보를 다른 기기(예, 휴대 기기(100b)) 또는 미디어 서버에 전송할 수 있다. 통신부(130)는 다른 기기(예, 휴대 기기(100b)) 또는 미디어 서버로부터 영화, 뉴스 등의 컨텐츠를 메모리부(130)로 다운로드/스트리밍 받을 수 있다. 제어부(120)는 컨텐츠에 대해 비디오/이미지 획득, (비디오/이미지) 인코딩, 메타데이터 생성/처리 등의 절차를 제어 및/또는 수행하며, 입출력부(140a)/센서부(140b)를 통해 획득한 주변 공간 또는 현실 오브젝트에 대한 정보에 기반하여 XR 오브젝트를 생성/출력할 수 있다.As an example, the memory unit 130 of the XR device 100a may include information (eg, data, etc.) necessary for creating an XR object (eg, AR/VR/MR object). The input/output unit 140a can obtain a command to operate the XR device 100a from the user, and the control unit 120 can drive the XR device 100a according to the user's driving command. For example, when a user tries to watch a movie, news, etc. through the XR device 100a, the control unit 120 sends content request information to another device (e.g., mobile device 100b) or It can be transmitted to a media server. The communication unit 130 may download/stream content such as movies and news from another device (eg, the mobile device 100b) or a media server to the memory unit 130. The control unit 120 controls and/or performs procedures such as video/image acquisition, (video/image) encoding, and metadata creation/processing for the content, and acquires it through the input/output unit 140a/sensor unit 140b. XR objects can be created/output based on information about the surrounding space or real objects.

또한, XR 기기(100a)는 통신부(110)를 통해 휴대 기기(100b)와 무선으로 연결되며, XR 기기(100a)의 동작은 휴대 기기(100b)에 의해 제어될 수 있다. 예를 들어, 휴대 기기(100b)는 XR 기기(100a)에 대한 콘트롤러로 동작할 수 있다. 이를 위해, XR 기기(100a)는 휴대 기기(100b)의 3차원 위치 정보를 획득한 뒤, 휴대 기기(100b)에 대응하는 XR 개체를 생성하여 출력할 수 있다.Additionally, the XR device 100a is wirelessly connected to the mobile device 100b through the communication unit 110, and the operation of the XR device 100a can be controlled by the mobile device 100b. For example, the mobile device 100b may operate as a controller for the XR device 100a. To this end, the XR device 100a may obtain 3D location information of the mobile device 100b and then generate and output an XR object corresponding to the mobile device 100b.

전술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.The present invention described above can be implemented as computer-readable code on a program-recorded medium. Computer-readable media includes all types of recording devices that store data that can be read by a computer system. Examples of computer-readable media include HDD (Hard Disk Drive), SSD (Solid State Disk), SDD (Silicon Disk Drive), ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc. This also includes those implemented in the form of carrier waves (e.g., transmission via the Internet). Accordingly, the above detailed description should not be construed as restrictive in all respects and should be considered illustrative. The scope of the present invention should be determined by reasonable interpretation of the appended claims, and all changes within the equivalent scope of the present invention are included in the scope of the present invention.

Claims (13)

안드로이드 서비스를 클라우드에 기반하여 제공하기 위한 장치에 있어서,
안드로이드 애플리케이션의 실행화면을 캡쳐하여 이미지 데이터를 생성하고, 적어도 하나의 GPU를 통해 렌더링을 수행하는, 적어도 하나의 안드로이드 컨테이너;
안드로이드 컨테이너로부터 전달된 이미지 데이터의 인/디코딩을 위한 하드웨어 인/디코딩부를 포함하는 적어도 하나의 리눅스 컨테이너;
를 포함하고,
적어도 하나의 안드로이드 컨테이너는 이미지에 대한 인/디코딩을 위한 소프트웨어 인/디코딩부를 포함하지 않고, 적어도 하나의 리눅스 컨테이너에 포함된 하드웨어 인/디코딩부가 상기 소프트웨어 인/디코딩부의 기능을 대신하도록 구성된, 장치.
In a device for providing Android services based on the cloud,
At least one Android container that captures an execution screen of an Android application, generates image data, and performs rendering through at least one GPU;
At least one Linux container including a hardware encoding/decoding unit for encoding/decoding image data transmitted from the Android container;
Including,
At least one Android container does not include a software encoding/decoding unit for encoding/decoding an image, and a hardware encoding/decoding unit included in at least one Linux container is configured to replace the function of the software encoding/decoding unit.
삭제delete 제1항에 있어서,
적어도 하나의 안드로이드 컨테이너와 적어도 하나의 리눅스 컨테이너 간의 데이터 전송을 위한 인터페이스를 더 포함하는 것을 특징으로 하는, 장치.
According to paragraph 1,
The device further comprising an interface for data transfer between at least one Android container and at least one Linux container.
제3항에 있어서,
상기 인터페이스를 통해 인/디코딩된 이미지 데이터가 서로 교환되는 것을 특징으로 하는, 장치.
According to paragraph 3,
A device characterized in that encoded/decoded image data are exchanged with each other through the interface.
제1항에 있어서,
리눅스 컨테이너는 적어도 하나의 GPU를 통해 하드웨어 가속이 가능한 것을 특징으로 하는, 장치.
According to paragraph 1,
A Linux container is a device characterized by hardware acceleration through at least one GPU.
제1항에 있어서,
리눅스 컨테이너의 인/디코딩 잡은 최우선순위를 갖는 것을 특징으로 하는, 장치.
According to paragraph 1,
A device characterized in that the in/decoding job of a Linux container has the highest priority.
제1항에 있어서,
리눅스 컨테이너는, 이동 단말에서 AR 영상을 구현하기 위해 카메라를 통해 입력되는 영상 데이터에 대한 디코딩, 또는 대용량의 VR 영상에 대한 디코딩도 지원하는 것을 특징으로 하는, 장치.
According to paragraph 1,
The Linux container is a device characterized in that it supports decoding of image data input through a camera to implement AR images on a mobile terminal, or decoding of large amounts of VR images.
제1항에 있어서,
리눅스 컨테이너와 안드로이드 컨테이너는 GPU 스케쥴러와 연결되어 상기 적어도 하나의 GPU와 액세스하는 것을 특징으로 하는, 장치.
According to paragraph 1,
A device characterized in that the Linux container and the Android container are connected to a GPU scheduler to access the at least one GPU.
제8항에 있어서,
상기 GPU 스케쥴러는,
적어도 하나의 GPU 에 상응하는 칩의 성능에 기초하여, 안드로이드 컨테이너로부터 요청되는 렌더링 잡과 리눅스 컨테이너로부터 요청되는 인/디코딩 잡을 구분하여 스케쥴링하는 것을 특징으로 하는, 장치.
According to clause 8,
The GPU scheduler is,
A device characterized in that the rendering job requested from the Android container and the in/decoding job requested from the Linux container are separately scheduled based on the performance of a chip corresponding to at least one GPU.
제8항에 있어서,
상기 GPU 스케쥴러는,
복수의 GPU들 중 상기 리눅스 컨테이너에 대해 전용되는(dedicated) GPU 를 특정하고, 나머지 GPU들에 상응하는 칩의 성능에 기초하여, 안드로이드 컨테이너로부터 요청되는 렌더링 잡을 스케쥴링하는 것을 특징으로 하는, 장치.
According to clause 8,
The GPU scheduler is,
A device characterized by specifying a GPU dedicated to the Linux container among a plurality of GPUs and scheduling a rendering job requested from an Android container based on the performance of chips corresponding to the remaining GPUs.
안드로이드 서비스를 클라우드에 기반하여 제공하기 위한 장치에 있어서,
적어도 하나의 메모리;
적어도 하나의 통신 모듈;
적어도 하나의 그래픽 프로세서(GPU);
를 포함하고,
상기 적어도 하나의 그래픽 프로세서는,
i) 서비스 구동부를 통해, 안드로이드 애플리케이션의 실행화면을 캡쳐하여 이미지 데이터를 생성하고, 렌더링을 수행하는 제1 동작, 및 ii) 하드웨어 인/디코딩부를 통해, 안드로이드 컨테이너로부터 전달된 이미지 데이터의 인/디코딩 제2 동작을 지원하며,
적어도 하나의 안드로이드 컨테이너는 이미지에 대한 인/디코딩을 위한 소프트웨어 인/디코딩부를 포함하지 않고, 적어도 하나의 리눅스 컨테이너에 포함된 하드웨어 인/디코딩부가 상기 소프트웨어 인/디코딩부의 기능을 대신하도록 구성된 것을 특징으로 하는, 장치.
In a device for providing Android services based on the cloud,
at least one memory;
at least one communication module;
At least one graphics processor (GPU);
Including,
The at least one graphics processor,
i) a first operation of capturing the execution screen of the Android application through the service driving unit, generating image data, and performing rendering; and ii) encoding/decoding of image data transmitted from the Android container through the hardware encoding/decoding unit. Supports the second movement,
At least one Android container does not include a software encoding/decoding unit for encoding/decoding images, and a hardware encoding/decoding unit included in at least one Linux container is configured to replace the function of the software encoding/decoding unit. device to do.
제11항에 있어서,
상기 제1 동작과 제2 동작은 서로 다른 그래픽 프로세서에 의해 구분되어 지원되는 것을 특징으로 하는, 장치.
According to clause 11,
The device is characterized in that the first operation and the second operation are supported separately by different graphics processors.
제11항에 있어서,
상기 장치는, 클라우드 단에 위치한 클라우드 서버인 것을 특징으로 하는, 장치.
According to clause 11,
The device is characterized in that it is a cloud server located at the cloud stage.
KR1020210035215A 2021-03-18 2021-03-18 Cloud rendering service KR102664190B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210035215A KR102664190B1 (en) 2021-03-18 2021-03-18 Cloud rendering service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210035215A KR102664190B1 (en) 2021-03-18 2021-03-18 Cloud rendering service

Publications (2)

Publication Number Publication Date
KR20220130391A KR20220130391A (en) 2022-09-27
KR102664190B1 true KR102664190B1 (en) 2024-05-07

Family

ID=83451822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210035215A KR102664190B1 (en) 2021-03-18 2021-03-18 Cloud rendering service

Country Status (1)

Country Link
KR (1) KR102664190B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102086757B1 (en) * 2019-07-31 2020-03-09 서강대학교 산학협력단 GPU memory scheduler and GPU memory preemption method using the same

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160000911A (en) * 2014-06-25 2016-01-06 엔트릭스 주식회사 Method for providing of cloud service, computer readable storage medium storing web application for the same, cloud service system and apparatus usint the same
KR102232900B1 (en) * 2014-10-02 2021-03-26 에스케이플래닛 주식회사 System for cloud streaming service, method of cloud streaming service using optumal gpu and apparatus for the same
KR102288323B1 (en) * 2019-07-19 2021-08-10 주식회사 엘지유플러스 Method for providing augmented reality service by cloud server, terminal and cloud server using the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102086757B1 (en) * 2019-07-31 2020-03-09 서강대학교 산학협력단 GPU memory scheduler and GPU memory preemption method using the same

Also Published As

Publication number Publication date
KR20220130391A (en) 2022-09-27

Similar Documents

Publication Publication Date Title
WO2022052773A1 (en) Multi-window screen projection method and electronic device
US10200725B2 (en) Adaptive data streaming based on virtual screen size
US10482672B2 (en) Electronic device and method for transmitting and receiving image data in electronic device
US20180308288A1 (en) System and method for two dimensional application usage in three dimensional virtual reality environment
US20180063512A1 (en) Image streaming method and electronic device for supporting the same
US20190324827A1 (en) Methods and systems for multiple access to a single hardware data stream
US10810927B2 (en) Electronic device and method for controlling display in electronic device
EP3037963A1 (en) Camera command set host command translation
US20190045248A1 (en) Super resolution identifier mechanism
US11032342B2 (en) System and method for device audio
WO2021104259A1 (en) Method and terminal for data sharing between fast application and native application
CN109074152A (en) A kind of virtual reality image sending method and device
EP2939140A1 (en) Enabling a metadata storage subsystem
US20160029027A1 (en) Device and method for processing image
CN113396389A (en) Method and apparatus for standardized APIs for Split rendering
KR102664190B1 (en) Cloud rendering service
KR20200028069A (en) Image processing method and apparatus of tile images
WO2023128695A1 (en) Deferred rendering on extended reality (xr) devices
WO2014105138A1 (en) Executing a command within a transport mechanism based on a get and set architecture
US11825235B2 (en) Electronic device for processing image and image processing method thereof
WO2022100132A1 (en) Data processing method and apparatus and electronic device
CN110583019A (en) Video frame codec architecture
KR20180025797A (en) Method for Streaming Image and the Electronic Device supporting the same
KR20210110097A (en) The method for streaming a video and the electronic device supporting same
CN109213700B (en) Wireless information transmission method and device, computer storage medium and computer equipment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant