KR102517795B1 - 감소된 전력 렌더링을 갖는 혼합 현실 시스템 - Google Patents

감소된 전력 렌더링을 갖는 혼합 현실 시스템 Download PDF

Info

Publication number
KR102517795B1
KR102517795B1 KR1020197017219A KR20197017219A KR102517795B1 KR 102517795 B1 KR102517795 B1 KR 102517795B1 KR 1020197017219 A KR1020197017219 A KR 1020197017219A KR 20197017219 A KR20197017219 A KR 20197017219A KR 102517795 B1 KR102517795 B1 KR 102517795B1
Authority
KR
South Korea
Prior art keywords
mixed reality
content
gpu
cpu
examples
Prior art date
Application number
KR1020197017219A
Other languages
English (en)
Other versions
KR20190085051A (ko
Inventor
신티안 리
Original Assignee
매직 립, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 매직 립, 인코포레이티드 filed Critical 매직 립, 인코포레이티드
Priority to KR1020237010837A priority Critical patent/KR102631245B1/ko
Publication of KR20190085051A publication Critical patent/KR20190085051A/ko
Application granted granted Critical
Publication of KR102517795B1 publication Critical patent/KR102517795B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • G06T5/005
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Closed-Circuit Television Systems (AREA)
  • Image Generation (AREA)
  • Power Sources (AREA)

Abstract

본 개시내용의 실시예들은 적은 전력으로 혼합 현실 시스템을 구현하는 것을 제공한다. 일부 예들에서, 혼합 현실 시스템의 수동 상태는 GPU가, CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링하게 할 수 있다. 이러한 예들에서, 예측 가능한 콘텐츠는 CPU가 저-전력 모드에 있는 동안, GPU에 의해 식별되고 렌더링될 수 있다. 따라서, 본 개시내용의 실시예들은, CPU가 대응하는 GPU보다 더 많은 전력을 소비할 수 있기 때문에, 종래의 기술들로는 이용 가능하지 않은 이익들을 제공한다. 일부 예들에서, 수동 상태는 CPU를 사용함 없이도, 예측 가능한 콘텐츠가 식별되고 렌더링될 수 있다는 사실을 이용할 수 있다. 그러한 예들에서, 수동 상태는 CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링할 수 있다.

Description

감소된 전력 렌더링을 갖는 혼합 현실 시스템
[0001] 본 출원은, "Mixed-Reality System with Reduced Power Rendering"란 명칭으로 2016년 11월 16일에 출원된 미국 가특허 출원 번호 제62/423,154호를 우선권으로 주장하며, 이로써, 이 출원의 개시내용은 모든 목적을 위해 그 전체가 인용에 의해 포함된다.
[0002] 혼합 현실은 디지털 정보를 사용자의 물리적 환경의 시야와 실시간으로 결합하는 것을 포함할 수 있다. 디지털 정보는 물리적 환경에 고정되어 디지털 정보가 물리적 환경에 있다는 인상을 줄 수 있다. 혼합 현실을 구현하기 위해, 물리적 환경이 분석되고 디지털 정보를 생성될 수 있다. 그러나 현실적인 조합을 생성하기 위해, 분석 및 생성은 자주 수행해야 하며, 이는 대량의 전력을 소비할 수 있다. 따라서, 혼합 현실을 구현할 때, 전력 소비를 감소시키기 위한 개선된 방법들 및 시스템들이 당 업계에 필요하다.
[0003] 혼합 현실을 구현하기 위한 방법들, 시스템들 및 컴퓨터-프로그램 제품들이 제공된다. 일부 예들에서, GPU(graphics processing unit)는 CPU(central processing unit)의 사용을 적어도 부분적으로 방지할 수 있다. 그러한 예들에서, 수동 상태는 CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링할 수 있다. 이러한 예들에서, 예측 가능한 콘텐츠는 CPU가 저-전력 모드에 있는 동안, GPU에 의해 렌더링될 수 있다.
[0004] 일부 예들에서, 수동 상태는 많은 이미징 결정 및 렌더링 계산을 (CPU 보다는) GPU로 푸시(push)하려는 의도를 표현할 수 있다. GPU는 충분한 출력을 제공하기 위해 더 적은 데이터 입력들을 필요로 할 수 있기 때문에, GPU는 CPU보다 적은 전력을 소비할 수 있다. 예컨대, CPU가 현재 상태에 대한 전체 정보를 요구할 수 있지만, GPU는 단지 콘텐츠(예컨대, 타이밍, 시야 제한들, 심도 평면들, 콘텐츠 유형 등)를 어떻게 렌더링할지를 결정할 필요만 있을 수 있다. 그리고, GPU가 더 적은 데이터 입력들을 필요로 할 수 있기 때문에, 센서 및 아키텍처의 상이한 카테고리가 사용될 수 있다. 예컨대, 더 큰 메모리 뱅크들 및 컴포넌트 통합을 갖는 CPU는 수반되는 컴퓨팅 사이클들로 인해, CPU의 요건들에 대응하는 센서 및 아키텍처의 카테고리(컴포넌트들의 클래스들)로 제한될 수 있다. 또는, 달리 언급하자면, 더 빠르게 수행하고 더 적은 전력을 사용할 수 있는 센서 및 아키텍처의 카테고리가 CPU에 그다지 유용하지 않을 수 있는 반면, GPU는 이러한 센서 및 아키텍처의 카테고리를 이용할 수 있고 충분한 출력을 제공할 수 있다. 따라서, GPU의 능력은 상이한 클래스로 이루어질 수 있는데, 그 이유는 GPU는, 단순히 더 나은 버전의 CPU가 아니라, 센서 및 아키텍처의 상이한 카테고리를 인에이블할 수 있기 때문이다.
[0005] 본 개시내용의 실시예들은 감소된 전력 소비를 갖는 혼합 현실을 구현하는 것을 제공한다. 일부 예들에서, GPU는 일부 CPU의 이용을 방지할 수 있다. 이러한 예들에서, 유휴 상태와 활성 상태 사이의 수동 전력 상태가 제공될 수 있다. 일부 예들에서, 수동 상태는 GPU로 하여금, CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링하게 할 수 있다. 이러한 예들에서, 예측 가능한 콘텐츠는 CPU가 저-전력 모드에 있는 동안, GPU에 의해 식별되고 렌더링될 수 있다. 따라서, 본 개시내용의 실시예들은, CPU가 대응하는 GPU보다 더 많은 전력을 소비할 수 있기 때문에, 종래의 기술들로는 이용 가능하지 않은 이익들을 제공한다. 일부 예들에서, 수동 상태는 CPU를 사용함 없이, 예측 가능한 콘텐츠가 식별되고 렌더링될 수 있다는 사실을 이용할 수 있다. 그러한 예들에서, 수동 상태는 CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링할 수 있다.
[0006] 예컨대, 혼합 현실 디바이스를 사용하여 혼합 현실 콘텐츠를 제시하는 방법이 제공될 수 있다. 이 방법은 물리적 환경과 연관된 센서 데이터를 획득하는 단계를 포함할 수 있다. 일부 예들에서, 센서 데이터는 하나 이상의 센서들을 사용하여 획득될 수 있다. 방법은, VPU(visual processing unit)에 의해, 센서 데이터를 사용하여 혼합 현실 디바이스의 포즈(pose)를 결정하는 단계, 및 혼합 현실 디바이스의 포즈를 GPU(graphics processing unit)에 전송하는 단계를 더 포함할 수 있다. 일부 예들에서, 혼합 현실 디바이스의 포즈는 혼합 현실 디바이스의 포지션 및 배향을 포함할 수 있다. 일부 예들에서, GPU는 혼합 현실 디바이스로부터 원격일 수 있다. 일부 예들에서, 방법은 혼합 현실 디바이스의 포즈를 CPU(central processing unit)에 전송하는 단계를 더 포함할 수 있다. 일부 예들에서, CPU는 방법 전반에 걸쳐 저전력 모드로 동작할 수 있다. 이 방법은 GPU에 의해, 포즈에 대응하는 콘텐츠를 식별하는 단계를 더 포함할 수 있다. 일부 예들에서, 콘텐츠는 콘텐츠를 식별하기 전에 GPU의 캐시에 저장될 수 있다. 이 방법은, GPU에 의해, 콘텐츠를 물리적 환경에 정렬하는 단계, 정렬된 콘텐츠를 혼합 현실 디바이스에 전송하는 단계, 및 혼합 현실 디바이스의 디스플레이를 사용하여 정렬된 콘텐츠를 제시하는 단계를 더 포함할 수 있다. 일부 예들에서, 이 방법은 식별된 콘텐츠가 예측 가능한 콘텐츠라고 결정하는 단계; 및 식별된 콘텐츠가 예측 가능하다고 결정하는 것에 대한 응답으로, GPU의 캐시로부터 식별된 콘텐츠를 획득하는 단계를 더 포함할 수 있다. 다른 예들에서, 이 방법은, 식별된 콘텐츠가 동적 콘텐츠라고 결정하는 단계; 및 식별된 콘텐츠가 동적이라고 결정한 것에 대한 응답으로, CPU에 메시지를 전송하는 단계를 더 포함할 수 있다. 이러한 예에서 메시지로 인해 CPU가 저전력 모드에서 고전력 모드로 전환될 수 있다.
[0007] 다른 예로서, 혼합 현실 디바이스를 사용하여 혼합 현실 콘텐츠를 제시하기 위한 시스템이 제공될 수 있다. 이 시스템은 혼합 현실 디바이스 및 GPU(Graphics Processing Unit)를 포함할 수 있으며, GPU는 혼합 현실 디바이스와 별개이거나 이에 포함된다. 일부 예들에서, 혼합 현실 디바이스는 하나 이상의 센서들, VPU(vision processing unit) 및 디스플레이를 포함할 수 있다. 이러한 예들에서, 하나 이상의 센서들 중의 센서는 센서 데이터를 캡처하도록 구성될 수 있다. VPU는 혼합 현실 디바이스와 연관된 포즈를 결정하도록 구성될 수 있다. 그리고, 포즈는 센서 데이터를 사용하여 결정될 수 있다. GPU는 혼합 현실 디바이스의 디스플레이에 의해 제시될 콘텐츠를 식별하고, 콘텐츠를 물리적 환경에 정렬하고, 그리고 디스플레이에 의해 제시되도록 혼합 현실 디바이스에 정렬된 콘텐츠를 송신하도록 구성될 수 있다.
[0008] 종래 기술들에 비해 본 개시내용에 의해 다수의 이익들이 달성된다. 예컨대, 본 개시내용의 실시예들은, 고전력 CPU가 GPU에 의해 랜더링되는 지각 및 그래픽들에 관해 일관된 성능을 유지하면서 일정 시간 기간 동안 저-전력 모드에 있게 될 수 있게 함으로써 전력 절감을 제공할 수 있다. 전력 절감은 시각적 업데이트들이 사용자의 신체 모션들에 의해 트리거되지 않을 때 전력 사용이 최소화될 수 있는 많은 다수의 애플리케이션들(예컨대, 생산성 소프트웨어, 웹 브라우징, 멀티미디어 상호작용들)에 적용될 수 있다. 이러한 전력 절감들을 통해, 사용자가 물리적 환경의 부분으로서 디지털 정보를 지각하는 데 필수적인 일관된 시각적 환경이 유지될 수 있는 항시-온 혼합 현실(Always-on Mixed Reality)을 구현하는 것이 가능하다. 본 개시내용의 이들 및 다른 실시예들은 다수의 본 발명의 이점들 및 특징들과 함께, 아래의 텍스트 및 대응하는 도면들과 함께 보다 상세하게 설명된다.
[0009] 예시적인 실시예들은 다음의 도면들을 참조하여 아래에서 상세히 설명된다.
[0010] 도 1은 일 실시예에 따라, 수동 전력 상태를 구현하기 위한 혼합 현실 시스템의 예를 예시한다.
[0011] 도 2는 일 실시예에 따라, 혼합 현실을 제시하기 위해 VPU(visual processing unit)에 의해 수행되는 프로세스의 예를 예시한다.
[0012] 도 3은 일 실시예에 따라, 혼합 현실을 제시하기 위해 CPU(central processing unit)에 의해 수행되는 프로세스의 예를 예시한다.
[0013] 도 4는 일 실시예에 따라, 혼합 현실 디바이스를 이용하여 동적 콘텐츠를 제시하기 위한 프로세스의 예를 예시한다.
[0014] 도 5는 일 실시예에 따라, 혼합 현실 디바이스를 이용하여 예측 가능한 콘텐츠를 제시하기 위한 프로세스의 예를 예시한다.
[0015] 도 6은 일 실시예에 따라, CPU(central processing unit)의 블록도의 예를 예시한다.
[0016] 도 7은 일 실시예에 따라, CPU(central processing unit)의 내부 컴포넌트들의 블록도의 예를 예시한다.
[0017] 도 8은 일 실시예에 따라, GPU(graphics processing unit)의 블록도의 예를 예시한다.
[0018] 도 9는 일 실시예에 따라, 단일 스트림 멀티프로세서의 블록도의 예를 예시한다.
[0019] 도 10은 일 실시예에 따른 VPU(vision processing unit)의 블록도의 예를 예시한다.
[0020] 다음의 설명에서, 설명의 목적들을 위해, 본 개시내용의 실시예들의 철저한 이해를 제공하기 위해 특정한 세부사항들이 기술된다. 그러나, 다양한 실시예들이 이들 특정한 세부사항들 없이도 실시될 수 있다는 것은 명백할 것이다. 도면들 및 설명은 제한하려는 것이 아니다.
[0021] 이하의 설명은 단지 예시적인 실시예들을 제공하며, 본 개시내용의 범위, 적용 가능성 또는 구성을 제한하려는 것은 아니다. 오히려, 예시적인 실시예들의 이하의 설명은, 예시적인 실시예를 구현하기 위한 가능한 설명을 당업자들에게 제공할 것이다. 첨부된 청구항들에 기술된 바와 같은 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다양한 변경이 엘리먼트들의 기능 및 어레인지먼트(arrangement)에서 이루어질 수 있다는 것이 또한 이해되어야 한다.
[0022] 통상적으로, 혼합 현실 디바이스들(예컨대, 웨어러블 혼합 현실 안경)은 유휴 상태와 활성 상태의 2개의 상태들을 사용하여 전력 소비를 처리한다. 유휴 상태에서, 어떠한 콘텐츠도 렌더링되지 않는다. 활성 상태에서, CPU(central processing unit)는 콘텐츠를 결정/식별하고, GPU(graphics processing unit)는 결정된/식별된 콘텐츠를 렌더링한다. 그러나 이러한 2 상태 시스템은 활성 상태에서 대량의 전력을 소비할 수 있다.
[0023] 본 개시내용의 실시예들은 적은 전력으로 혼합 현실을 구현하는 것을 제공한다. 일부 예들에서, GPU는 일부 CPU의 이용을 방지할 수 있다. 이러한 예들에서, 유휴 상태와 활성 상태 사이의 수동 전력 상태가 제공될 수 있다. 수동 상태에서, GPU는 콘텐츠를 결정/식별/예측하고 예측 가능한 콘텐츠를 렌더링하며, CPU는 콘텐츠를 결정/식별/예측하지 않는다. 이러한 예들에서, 예측 가능한 콘텐츠는 CPU가 유휴/반-유휴 상태(또한 저-전력 모드로서 지칭됨)에 있는 동안, GPU에 의해 식별되고 렌더링될 수 있다. 따라서, 본 개시내용의 실시예들은 CPU가 대응하는 GPU보다 더 많은 전력을 소비할 수 있는 종래의 기술들로는 이용 가능하지 않은 이익들을 제공한다. 일부 예들에서, 수동 상태는 CPU를 사용함 없이, 예측 가능한 콘텐츠가 GPU에 의해 식별되고 렌더링될 수 있다는 사실을 이용할 수 있다. 그러한 예들에서, 수동 상태에서, GPU는 CPU에 의해 프로세싱될 필요가 없는 예측 가능한 콘텐츠를 렌더링할 수 있다.
[0024] 도 1은 일 실시예에 따라, 수동 전력 상태를 구현하기 위한 혼합 현실 시스템의 예를 예시한다. 혼합 현실 시스템은 물리적 환경 상에 오버레이된 가상 콘텐츠를 포함하는 지속적인 혼합 현실 환경을 제공할 수 있다. 예컨대, 가상 콘텐츠는 시간에 걸쳐 물리적 환경에 나타날 수 있다.
[0025] 혼합 현실 시스템은 혼합 현실 디바이스(110)를 포함할 수 있다. 혼합 현실 디바이스(110)는 가상 콘텐츠를 사용자에게 제시할 수 있다. 혼합 현실 디바이스(110)는 또한 가상 콘텐츠가 사용자에게 제시되는 동안 사용자가 사용자 전방의 물리적 환경의 적어도 일부를 볼 수 있게 한다. 일부 예들에서, 가상 콘텐츠는 하나 이상의 디스플레이들(예컨대, 디스플레이(112))을 사용하여 사용자에게 제시될 수 있다. 일부 예들에서, 혼합 현실 시스템은 하나 이상의 혼합 현실 디바이스들을 포함할 수 있다.
[0026] 일부 예들에서, 혼합 현실 디바이스(110)는 센서 데이터를 생성하기 위한 하나 이상의 센서들을 포함할 수 있다. 센서 데이터는 혼합 현실 디바이스(110)의 포즈(예컨대, 포지션 및/또는 배향)를 식별하는데 사용될 수 있다. 예로서, 센서 데이터는 물리적 환경의 하나 이상의 이미지들을 제공할 수 있는 카메라에 의해 수집될 수 있다. 물리적 환경은 사용자의 시야 내의 영역을 포함할 수 있다. 일부 구현들에서, 물리적 환경은 또한 사용자의 시야 외부의 영역들을 포함할 수 있다. 이러한 구현들에서, 사용자의 시야 범위 밖의 영역들은 하나 이상의 카메라들을 사용하여 이미징될 수 있다. 도 1에 도시된 센서들이 특정 포지션에 로케이팅되는 동안, 센서들은 상이한 포지션들에 있을 수 있다. 또한, 더 많거나 더 적은 센서들이 존재할 수 있다.
[0027] 일부 예들에서, 하나 이상의 센서들 중의 센서는 항시-온(always-on) 센서(114) 또는 비전 센서(116)일 수 있다. 항시-온 센서(114)는 물리적 환경의 하나 이상의 속성들을 검출할 수 있는 저전력 센서일 수 있다. 예컨대, 항시-온 센서(114)는 온도 센서, 압력 센서, 흐름 센서, 레벨 센서, 근접도 센서, 변위 센서, 바이오센서, 가스 센서, 화학 센서, 가속도 센서, 수분 센서, 습도 센서, 속도 센서, 질량 센서, 경사 센서, 힘 센서, 점도 센서, 또는 이들의 임의의 조합일 수 있다.
[0028] 일부 예들에서, 항시-온 센서(114)는 항시-온 센서(114)에 의해 데이터가 생성되는 레이트를 특정하는 하나 이상의 데이터 생성 레이트 모드들(때로는, 전력 모드들로서 지칭됨)에서 동작하도록 세팅될 수 있다. 예컨대, 항시-온 센서(114)는 데이터 생성 레이트로 하여금, 항시-온 센서(114)가 고-레이트 모드에서 동작하도록 세팅될 때보다 더 낮게 하는 저-레이트 모드에서 동작하도록 세팅될 수 있다. 일부 예들에서, 상이한 항시-온 센서들(114)은 데이터를 생성하기 위해 상이한 레이트들로 동작하도록 세팅될 수 있다. 예컨대, 제1 항시-온 센서는 제1 레이트로 동작하도록 세팅될 수 있고, 제2 항시-온 센서는 제2 레이트로 동작하도록 세팅될 수 있다. 이러한 예에서, 제1 레이트 및/또는 제2 레이트는 가변 레이트(예컨대, 시간에 걸쳐 변함)일 수 있다.
[0029] 비전 센서(116)(예컨대, 카메라)는 물리적 환경의 이미지를 캡처할 수 있다. 비전 센서(116)는 또한, 이미지들이 비전 센서(116)에 의해 캡처되는 레이트를 특정하는 하나 이상의 모드들에서 동작하도록 세팅될 수 있다. 예컨대, 비전 센서(116)는 이미지 캡처 레이트로 하여금, 비전 센서(116)가 고-레이트 모드에서 동작하도록 세팅될 때보다 더 낮게 하는 저-레이트 모드에서 동작하도록 세팅될 수 있다.
[0030] 일부 예들에서, 혼합 현실 디바이스(110)는 항시-온 센서(114) 및 비전 센서(116)의 기능성을 포함할 수 있는 하나 이상의 조합 센서들(예컨대, 조합 센서(118))을 포함할 수 있다. 이러한 예들에서, 조합 센서(118)는 하나 이상의 모드들에서 동작하도록 세팅될 수 있다. 예컨대, 조합 센서(118)의 제1 모드는 항시-온 센서(114)의 기능성에 대응할 수 있다. 조합 센서(118)의 제2 모드는 비전 센서(116)의 기능성에 대응할 수 있다. 일부 예들에서, 상이한 모드들은 데이터가 획득되는 상이한 레이트들을 제공할 수 있다. 일 예에서, 비전 센서 기능은 제1 모드에 있는 동안 초당 50 프레임 그리고 제2 모드에 있는 동안 초당 5 프레임의 프레임 레이트를 사용하여 동작할 수 있다. 다른 예에서, 비전 센서 기능은 제2 모드에서 초당 5 프레임의 프레임 레이트를 사용하여 동작할 수 있는 반면, 항시-온 센서 기능은 초당 10 감지(senses)의 레이트를 사용하여 동작할 수 있다.
[0031] 혼합 현실 시스템은 하나 이상의 프로세서들(예컨대, VPU(vision processing unit)(120), CPU(130) 및/또는 GPU(140))를 더 포함할 수 있다. 단일 VPU(120), CPU(130) 및 GPU(140)가 설명되지만, 하나 이상의 VPU들(120), 하나 이상의 CPU들(130) 및/또는 하나 이상의 GPU들(140)이 사용될 수 있다는 것이 또한 주의되어야 한다. VPU(120)는 혼합 현실 디바이스(110)에 포함되거나 혼합 현실 디바이스(110)로부터 원격일 수 있다. 일부 예들에서, VPU(120)는 하나 이상의 전력 모드들(예컨대, 저 및 고)에서 동작하도록 세팅될 수 있다. 일부 예들에서, 임의의 전력 모드에서 동작하는 VPU(120)는 CPU(130)보다 적은 전력을 소비할 수 있다.
[0032] 일부 예들에서, CPU(130)는 혼합 현실 디바이스(110)에 포함되거나 혼합 현실 디바이스(110)로부터 원격일 수 있다. CPU(130)가 혼합 현실 디바이스(110)로부터 원격일 때, CPU(130)는 예컨대, 혼합 현실 디바이스(110)에 대한 배터리 팩과 함께 로케이팅될 수 있다. 일부 예들에서, CPU(130)는 VPU(120) 및/또는 GPU(140)보다 많은 전력을 소비할 수 있다.
[0033] 일부 예들에서, GPU(140)는 혼합 현실 디바이스(110)에 포함되거나 혼합 현실 디바이스(110)로부터 원격일 수 있다. GPU(140)가 혼합 현실 디바이스(110)로부터 원격일 때, GPU(140)는 예컨대, 혼합 현실 디바이스(110)에 대한 배터리 팩과 함께 로케이팅될 수 있다. 일부 예들에서, GPU(140)는 하나 이상의 전력 모드들(예컨대, 저 및 고)에서 동작하도록 세팅될 수 있다. 이러한 예들에서, GPU(140)는 임의의 전력 모드에서, CPU(예컨대, CPU(130))보다 적은 전력을 소비할 수 있다.
[0034] 일부 예들에서, VPU(120)는 지각 프론트엔드 모듈(122)을 포함할 수 있다. 지각 프론트엔드 모듈(122)은 혼합 현실 디바이스(110)의 하나 이상의 센서들(예컨대, 항시-온 센서(114), 비전 센서(116) 및/또는 조합 센서(118))로부터 센서 데이터를 수신할 수 있다. 지각 프론트엔드 모듈(122)은 센서 데이터를 이용하여 혼합 현실 디바이스(110)의 포즈를 식별할 수 있다. 예컨대, 포즈는 항시-온 센서(114), 비전 센서(116), 조합 센서(118), 또는 이들의 임의의 조합으로부터의 데이터를 사용하여 식별될 수 있다. 일부 예들에서, 포즈는 혼합 현실 디바이스(110)의 포지션 및/또는 배향(예컨대, 가로 좌표, 세로 좌표, 애플리케이트(applicate), 피치, 요우, 롤 또는 이들의 임의의 조합)을 정의할 수 있다.
[0035] 일부 예들에서, 지각 프론트엔드 모듈(122)은 또한 물리적 환경의 하나 이상의 특징들(때로는, 추출된 정보로서 지칭됨)을 식별할 수 있다. 예컨대, 물리적 환경에서의 객체의 코너 또는 에지가 식별할 수 있다. 물리적 환경의 하나 이상의 특징들은 VPU(120)가 물리적 환경의 이미지를 전송하기 보다는, 하나 이상의 특징들을 다른 프로세서들에 전송하게 할 수 있다. 일부 예들에서, 하나 이상의 특징들은 이미지가 포함하는 모든 픽셀 정보를 포함할 필요 없이 물리적 환경을 설명할 수 있다. 그러한 예들에서, 하나 이상의 특징들은 컴포넌트들 사이를 통과하는 물리적 환경의 표현을 생성하는데 사용될 수 있다.
[0036] 일부 예들에서, VPU(120)는 항시-온 지각 모듈(124)을 또한 포함할 수 있다. 이러한 예들에서, 항시-온 지각 모듈(124)은 지각 프론트엔드 모듈(122)로부터 포즈 및/또는 하나 이상의 특징들을 수신할 수 있다. 일부 예들에서, 항시-온 지각 모듈(124)은 포즈를 CPU(130) 및/또는 GPU(140)에 전송할 수 있다. 일부 예들에서, 항시-온 지각 모듈(124)은 항시-온 지각 모듈(124)로부터 포즈를 수신하는 것에 대한 응답으로 CPU(130) 및/또는 GPU(140)가 저전력 모드로부터 고전력 모드로 트랜지션하게 할 수 있다. 일부 예들에서, 항시-온 지각 모듈(124)은 또한 하나 이상의 특징들을 CPU(130) 및/또는 GPU(140)에 전송할 수 있다.
[0037] 일부 예들에서, 지각 프론트엔드 모듈(122) 또는 항시-온 지각 모듈(124)의 기능들 중 하나 이상은 VPU(120)의 다른 컴포넌트 상에서 발생할 수 있다(예컨대, 포즈는 항시-온 지각 모듈(124)에 의해 결정될 수 있음). 다른 예에서, 지각 프론트엔드 모듈(122) 또는 항시-온 지각 모듈(124)의 기능들 중 하나 이상은 VPU(120)로부터 원격의 컴포넌트(예컨대, 모듈 또는 디바이스) 상에서 발생할 수 있다.
[0038] 위에서 설명된 바와 같이, CPU(130)는 예컨대, VPU(120)로부터 혼합 현실 디바이스(110)의 포즈 및/또는 물리적 환경의 하나 이상의 특징들을 수신할 수 있다. 일부 예들에서, CPU(130)는 단독으로 또는 VPU(120)와 조합하여, 물리적 환경의 표현을 생성할 수 있다. 그러한 예들에서, 표현은 물리적 환경의 3D 재생(reproduction)일 수 있다.
[0039] 일부 예들에서, CPU(130)는 물리적 환경의 표현으로 배치할 가상 콘텐츠를 식별할 수 있다. 이러한 예들에서, 가상 콘텐츠는 CPU(130) 상에서 실행되는 애플리케이션에 기초하여 식별될 수 있다. 예컨대, 혼합 현실 디바이스(110)를 사용하여 사용자의 경험을 제어하는 CPU(130) 상에서 게임이 실행될 수 있다. 일부 예들에서, 가상 콘텐츠 및 물리적 환경의 표현을 포함하는 세계 뷰가 생성될 수 있다. 그러한 예들에서, 세계 뷰는 이를테면, 물리적 환경에서 콘텐츠가 로케이팅되어야 하는 곳을 정의하기 위해 같은 물리적 환경의 표현에 삽입된 가상 콘텐츠일 수 있다. 일부 예들에서, 가상 콘텐츠는 3-차원 표현일 수 있다.
[0040] 일부 예들에서, CPU(130)는 가상 콘텐츠가 특정 시간에 어떻게 보일지를 결정할 수 있다. 이러한 예들에서, CPU(130)는 시간의 하나 이상의 표시들을 가상 콘텐츠와 연관시킬 수 있어서, GPU(140)는, 사용자에게 제시되도록 가상 현실 콘텐츠를 렌더링하여 혼합 현실 디바이스(110)의 하나 이상의 디스플레이들에 전송할 때를 결정할 수 있다.
[0041] 일부 예들에서, 콘텐츠는 일정 시간 기간 동안 예측 가능한 모션(예컨대, 시계, 구름, 호수의 표면 등)을 가질 수 있다. 이러한 예들에서, CPU(130)는 하나 이상의 시간 기간 동안 콘텐츠를 식별 및 생성할 수 있다. 하나 이상의 시간 기간은 예측 가능한 콘텐츠와 연관될 수 있다. 예시적인 예에서, 예측 가능한 콘텐츠는 벽 상에 장착된 시계일 수 있다. 시계를 표현하는 콘텐츠는 시계가 올바른 시간에 혼합 현실 디바이스(110)의 사용자에게 나타나도록 시계가 재렌더링될 수 있는 시간 기간(예컨대, 1 분마다 1번)을 포함할 수 있다. 일부 예에서, 디지털 정보가 정적 객체(예컨대, 테이블)를 표현할 때, 디지털 정보는 콘텐츠를 렌더링할 연관된 시간 기간을 갖지 않는다.
[0042] 일부 예들에서, CPU(130)는 물리적 환경, 가상 콘텐츠 및/또는 세계 뷰의 표현을 GPU(140)에 전송할 수 있다. 이러한 예들에서, 가상 콘텐츠는 픽셀 정보의 형태일 수 있다.
[0043] 일부 예들에서, GPU(140)는 세계 오퍼레이터(142), 지각된 뷰 모듈(144), 콘텐츠 캐시(146), 렌더링 모듈(148), 세계 상호작용 모듈(152) 또는 이들의 임의의 조합을 포함할 수 있다. 이러한 예들에서, 콘텐츠 캐시(146)는 CPU(130)(이를테면, 위에서 설명된 혼합 현실 디바이스(110) 및 세계 뷰에 의해 제시될 콘텐츠) 및/또는 VPU(120)(이를테면, 포즈)로부터 수신된 데이터를 수신 및 저장할 수 있다. 물리적 환경, 혼합-현실 디바이스(110)에 의해 제시될 콘텐츠 및/또는 세계 뷰의 표현은 콘텐츠 캐시(146)에서 개별적으로 액세스 가능하고 소비 가능할 수 있다.
[0044] 일부 예들에서, 세계 오퍼레이터(142)는 콘텐츠 캐시(146)로부터 세계 뷰를 요청할 수 있다. 이러한 예들에서, 콘텐츠 캐시(146)는 요청에 대한 응답으로 콘텐츠 캐시(146)에 저장된 세계 뷰를 세계 오퍼레이터(142)에 전송할 수 있다. 다른 예들에서, 콘텐츠 캐시(146)는 세계 뷰를 세계 오퍼레이터(142)에 주기적으로 전송할 수 있거나 콘텐츠 캐시(146)는 (예컨대, CPU(130)에 의해) 세계 뷰가 업데이트될 때 세계 오퍼레이터(142)에 세계 뷰를 전송할 수 있다. 일부 예들에서, 세계 뷰는 혼합 현실 디바이스(110)와 연관된 물리적 환경의 단지 부분일 수 있다. 세계 뷰가 부분적인 세계 뷰일 때, 세계 오퍼레이터(142)는 VPU(120)으로부터 직접 수신된 정보 및/또는 콘텐츠 캐시(146)에 저장된 다른 정보를 사용하여 완전한 세계 뷰를 생성할 수 있다.
[0045] 일부 예들에서, 세계 오퍼레이터 모듈(142)은 항시-온 지각 모듈(124)로부터 포즈 및/또는 하나 이상의 특징들을 수신할 수 있다. 일부 예들에서, 세계 오퍼레이터 모듈(142)은 포즈 및/또는 하나 이상의 특징들에 기초하여 콘텐츠 캐시(146)에 저장된 세계 뷰를 업데이트할 수 있다.
[0046] 포즈 및 세계 뷰를 사용하여, 세계 오퍼레이터 모듈(142)은 획득할 콘텐츠를 식별할 수 있다. 일부 예들에서, 세계 오퍼레이터(142)는 또한 혼합 현실 디바이스(110)의 포즈에 대응하는 가상 콘텐츠의 포즈를 결정할 수 있다. 예컨대, 혼합 현실 디바이스(110)가 특정 위치에서 특정 방향을 향할 때, 세계 오퍼레이터 모듈(142)은 가상 콘텐츠의 포지션 및/또는 배향을 결정할 수 있다.
[0047] 일부 예들에서, 세계 오퍼레이터 모듈(142)이 콘텐츠를 식별할 때, 세계 오퍼레이터 모듈(142)은 또한 콘텐츠의 유형(예컨대, 콘텐츠가 동적인지 또는 예측 가능한지 여부)을 결정할 수 있다.
[0048] 동적 콘텐츠는 GPU에 의해 동작 가능한 로직에서 쉽게 캡처되지 않는 모션을 가진 객체가 포함할 수 있다. 일부 예들에서, 동적 콘텐츠는 혼합 현실 디바이스(110)의 사용자 및/또는 특정 포즈의 상호작용에 의존할 수 있다. 이러한 예들에서, CPU(130)는 콘텐츠를 결정하기 위해 상호작용 및/또는 포즈를 분석 할 필요가 있을 것이다. 일부 예들에서, 동적 콘텐츠는 예측 가능하지 않은 콘텐츠를 포함될 수 있다. 이러한 예들에서, 동적 콘텐츠는 시간 경과에 따라 변할 수 있는 시각적 외관을 갖는 콘텐츠일 수 있다. 또한, 동적 콘텐츠는 기존의 캐시된 콘텐츠를 활용하여 GPU(140)에 의해 효율적으로 랜더링되지 않고 항시-온 지각 모듈(124)로부터 입력될 수 있는 콘텐츠를 포함할 수 있으며, 이는 세계 오퍼레이터 모듈(142)에 제공될 수 있다. 이러한 동적 콘텐츠의 하나의 예는 체스 게임 애플리케이션 또는 메시징 채팅 애플리케이션일 수 있으며, 여기서 업데이트의 렌더링은 원격 사용자의 입력에 의존한다. 동적 콘텐츠의 다른 예는 정교한 3D 구조일 수 있으며, 여기서 GPU(140)는 콘텐츠 캐시(146)에 정보를 캐시하고 정교한 3D 구조의 포지션을 결정하기에 충분한 메모리를 갖지 않을 수 있다.
[0049] 예측 가능한 콘텐츠는 표준의 또는 시간이 지남에 따라 예측 가능한 움직임을 갖는 객체를 포함할 수 있다. 일부 예들에서, 예측 가능한 콘텐츠는 콘텐츠 캐시(146)의 기존의 캐시된 콘텐츠로 결정되고 항시-온 지각 모듈(124)로부터 입력될 수 있는, 공간 및 시간에 걸친 시각적 외관을 갖는 콘텐츠일 수 있으며, 이는 세계 오퍼레이터 모듈(142)에 대한 입력으로서 제공될 수 있다. 예컨대, 예측 가능한 콘텐츠는 외부의 어떤 것(예컨대, 사용자에 의한 상호작용)보다는, 자체의 물리적 특성(physics) 및 물리적 환경의 물리적 특성에 의존하는 모션을 가질 수 있다. 일부 예들에서, 예측 가능한 콘텐츠는 그것의 모션이 미리 프로그래밍되어 있을 수 있어서, 그의 모션을 결정하기 위한 추가 프로세싱 전력이 불필요하게 된다. 이러한 예들에서, 예측 가능한 콘텐츠의 모션은 CPU(130)가 사용될 필요가 없도록 콘텐츠 캐시(146)에 포함될 수 있다. 예측 가능한 콘텐츠는 또한 시간 경과에 따른 모션을 갖지 않는 정적 콘텐츠를 포함할 수 있다. 일부 예들에서, 정적 콘텐츠는 혼합 현실 디바이스의 변화 또는 업데이트된 포즈로부터 발생한 정적 콘텐츠의 배향의 조정들 및 정적 콘텐츠의 포즈에 따라 여전히 움직일 수 있다.
[0050] 예측 가능한 콘텐츠의 예들은 시계, 물줄기 및 토치를 포함할 수 있다. 예측 가능한 콘텐츠의 예를 예시하기 위해, 시계 예가 설명될 것이다. 시계가 정지하지 않는 동안, 그의 움직임들은 예측 가능할 수 있다. 실제로, 시계와 연관된 픽셀 정보는 콘텐츠 캐시(146)에 유지될 수 있다. 또한, 시계가 어떻게 움직여야 하는지를 식별하는 로직이 또한 콘텐츠 캐시(146)에 포함될 수 있다. 일부 예들에서, 로직은 매분 마다 시계의 바늘을 이동시키는 것에 대응할 수 있다. 예측 가능한 콘텐츠의 다른 예는 외부 난류가 없을 때 호수 표면이다. 표면의 파동들의 특성은 단순한 랜덤화에 기초하여 재생성될 수 있다. 예측 가능한 콘텐츠에 대해, 예측 가능한 콘텐츠는 콘텐츠 캐시(146)에 저장되어서, CPU(130)는, 예측 가능한 콘텐츠가 사용자에게 디스플레이될 때 예측 가능한 콘텐츠와 연관된 픽셀 정보를 생성할 필요가 없게 된다. 이러한 예들에서, CPU(130)는 저전력 모드로부터 고전력 모드로 트랜지션할 필요가 없고, 그리하여 전력을 절감한다.
[0051] 일부 예들에서, 혼합 현실 디바이스(110)의 포즈에 대한 콘텐츠가 콘텐츠 캐시(146)에 로케이팅되는지를 식별함으로써 콘텐츠 유형이 결정될 수 있다. 이러한 예들에서, 세계 오퍼레이터 모듈(142)은 또한 콘텐츠 캐시(146)가 혼합 현실 디바이스(110)의 포즈에 대응하는 포즈의 콘텐츠를 포함하는지를 식별할 수 있다. 콘텐츠가 동적 콘텐츠라고 세계 오퍼레이터 모듈(142)이 결정하는 경우, 세계 오퍼레이터 모듈(142)은 동적 콘텐츠의 상태가 생성될 수 있도록 CPU(130)가 저전력 모드로부터 고전력 모드로 트랜지션하게 하기 위한 메시지를 CPU(130)에 전송할 수 있다. 이러한 예들에서, 메시지에는 세계 뷰를 포함할 수 있다. 일부 예들에서, 메시지에 포함된 세계 뷰는 CPU(130)가 생성할 필요가 있는 콘텐츠를 CPU(130)에 표시할 수 있다. CPU(130)가 생성할 필요가 있는 콘텐츠를 제한하는 것은 CPU(130)가 고전력 모드에 있는 시간의 양을 단축시킬 수 있다.
[0052] 메시지 수신에 대한 응답으로, CPU(130)는 항시-온 지각 모듈(124)로부터 수신된 포즈를 분석할 수 있다. 일부 예들에서, CPU(130)는 세계 오퍼레이터 모듈(142)로부터 수신된 세계 뷰를 또한 분석할 수 있다. 포즈 및/또는 세계 뷰를 분석함으로써, CPU(130)는 혼합 현실 디바이스(110)에 의해 제시될 콘텐츠를 결정할 수 있다. 이러한 예들에서, CPU(130)는 콘텐츠와 연관된 픽셀 정보를 생성하여 GPU(140)의 콘텐츠 캐시(146)에 전송할 수 있다.
[0053] 일부 예들에서, 세계 오퍼레이터 모듈(142)은 일정량의 시간 동안 또는 특정 영역에서 세계 뷰의 결정이 더 이상 필요하지 않다고 결정할 수 있다. 이러한 예들에서, 세계 오퍼레이터 모듈(142)은 혼합 현실 디바이스(110)를 사용하여 디스플레이될 픽셀 정보의 하나 이상의 프레임들을 렌더링 모듈(148)에 전송할 수 있다. 일부 예들에서, 세계 오퍼레이터 모듈(142)은 또한 하나 이상의 프레임들 중의 각각의 프레임을 디스플레이할 때에 관한 표시를 렌더링 모듈(148)에 전송할 수 있다. 이러한 예들에서, GPU(140)는 세계 뷰를 결정하고 그리고/또는 콘텐츠를 재배향할 필요성이 회피된다. 일부 예들에서, 표시는 시간 및 특정 포즈 둘 모두에 대응할 수 있다. 이러한 예들에서, 시간 및 특정 포즈 둘 모두가 만족될 때, 렌더링 모듈(148)은 혼합 현실 디바이스(110)가 프레임을 디스플레이하게 할 수 있다.
[0054] 일부 예들에서, 세계 오퍼레이터 모듈(142)은 세계 뷰를 지각된 뷰 모듈(144)에 전송할 수 있다. 그러한 예들에서, 세계 오퍼레이터 모듈(142)은 또한 혼합 현실 디바이스(110)의 포즈를 지각된 뷰 모듈(144)에 전송할 수 있다. 일부 예들에서, 지각된 뷰 모듈(144)은 포즈에 따라 콘텐츠 캐시(146)로부터 세계 뷰에 표시된 콘텐츠를 획득할 수 있다.
[0055] 일부 예들에서, 지각된 뷰 모듈(144)은 혼합 현실 디바이스(110)에 의해 제시될 콘텐츠가 올바르게 배향되도록, 포즈에 기초하여 콘텐츠를 수정할 수 있다. 지각된 뷰 모듈(144)이 포즈에 대응하도록 콘텐츠를 수정한 후에, 수정된 콘텐츠는 렌더링 모듈(148)에 전송될 수 있다. 렌더링 모듈(148)은 수정된 콘텐츠가 혼합 현실 디바이스(110)를 사용하여 디스플레이될 수 있도록(예컨대, 수정된 콘텐츠가 물리적 환경에 고정되는 것을 보장함) 수정된 콘텐츠를 렌더링할 수 있다. 일부 예들에서, 렌더링 모듈(148)은 수정된 콘텐츠가 올바른 포지션에 있음을 보장하기 위해 수정된 콘텐츠를 물리적 환경의 표현과 정렬시킬 수 있다.
[0056] 위에서 설명된 바와 같이, 일부 예들에서, GPU(140)는 세계 상호작용 모듈(152)을 더 포함할 수 있다. 세계 상호작용 모듈(152)은 이벤트(150)를 수신할 수 있다. 이벤트(150)는 혼합 현실 디바이스(110)에 의해 제시되는 콘텐츠에 영향을 미칠 수 있다. 일부 예들에서, 세계 상호작용 모듈(152)은 프로세싱을 위해 세계 오퍼레이터 모듈(142)에 이벤트(150)를 전송할 수 있다. 위에서 논의된 바와 같이, 포즈는 항시-온 지각 모듈(124)로부터 세계 오퍼레이터 모듈(142)로 전송될 수 있다. 따라서, 세계 오퍼레이터 모듈(142)에 의해 수행되는 프로세싱은 이벤트(150) 및/또는 포즈를 활용할 수 있다.
[0057] 일부 예들에서, 이벤트(150)는 하나 이상의 센서들(예컨대, 항시-온 센서(114) 및/또는 비전 센서(116)), 하나 이상의 원격 디바이스들 등에 의해 수신된 데이터와 연관된 동작들과 연관될 수 있다. 이벤트는 제스처일 수 있다. 제스처는 사용자의 부속 기관(appendage)의 모션을 포함할 수 있다(예컨대, 스와이핑(swiping) 모션을 표시하기 위해 손가락을 좌측으로부터 우측으로 움직임). 하나 이상의 원격 디바이스들에 의해 수신된 데이터와 연관된 동작들의 예로서, 토템으로부터의 신호가 이벤트(150)일 수 있다. 토템은 이벤트(150)를 GPU(140)에 전송할 수 있는 디바이스일 수 있다. 일부 예들에서, 토템은 통신 모듈(예컨대, 블루투스)을 포함할 수 있다. 토템의 예는 제어기 또는 IoT(internet of things) 디바이스이다. IoT 디바이스를 예시하기 위해, 집 내의 경보 디바이스가 설명될 수 있다. 예컨대, 경보 디바이스는 사람이 집의 문에 있음을 표시할 수 있다. 경보 디바이스로부터의 표시에 기초하여, GPU(140)는 혼합 현실 디바이스(110)에 의해 디스플레이될 사람의 통지를 렌더링할 수 있다.
[0058] 도 2는 일 실시예에 따라, 혼합 현실을 제시하기 위해 VPU(예컨대, VPU(120))에 의해 수행되는 프로세스(200)의 예를 예시한다. 프로세스(200)는 하나 이상의 센서들로부터 센서 데이터(예컨대, 이미지들, GPS 위치 등)를 수신하는 것(205)을 포함한다. 하나 이상의 센서들은 혼합 현실 디바이스에 포함될 수 있다. 일부 예들에서, 센서 데이터는 하나 이상의 센서들에 의해 생성된 데이터를 포함할 수 있다. 하나 이상의 센서들은 항시-온 센서(114)(예컨대 항시-온 센서(114)), 비전 센서(예컨대, 비전 센서(116)) 및/또는 조합 센서(예컨대, 조합 센서(118))를 포함할 수 있다. 일부 예들에서, 센서 데이터는 VPU의 지각 프론트엔드 모듈(예컨대, 지각 프론트엔드 모듈(122))에 의해 수신될 수 있다. 일부 예들에서, 하나 이상의 센서들은 고전력 모드에서 동작하도록 세팅될 수 있다(예컨대, 비전 센서(116)는 고전력 모드에서 높은 프레임 레이트로 그리고 저전력 모드에서 낮은 프레임 레이트로 동작할 수 있음).
[0059] 프로세스(200)는 센서 데이터를 사용하여 혼합 현실 디바이스의 포즈를 식별하는 것(210)을 더 포함한다. 일부 예들에서, 포즈는 지각 프론트엔드 모듈에 의해 생성될 수 있다. 이러한 예들에서, 지각 프론트엔드 모듈은 포즈를 항시-온 지각 모듈(예컨대, 항시-온 지각 모듈(124))에 전송할 수 있다. 일부 예들에서, 혼합 현실 시스템의 컴포넌트들은 프로세싱하는데 시간이 걸릴 수 있기 때문에, 현재 시간의 포즈는 콘텐츠가 제시될 때의 포즈와 상이할 수 있다. 그러한 예들에서, 포즈는 미래의 시간과 연관될 수 있다. 특히, 포즈는 혼합 현실 디바이스를 사용하여 콘텐츠가 제시될 때의 시간에 혼합 현실 디바이스의 시야의 예측일 수 있다.
[0060] 프로세스(200)는 혼합 현실 디바이스의 포즈를 CPU(예컨대, CPU(130)) 및/또는 GPU(예컨대, GPU(140))에 전송하는 것(215)을 더 포함한다. 이러한 예들에서, 포즈는 GPU의 세계 오퍼레이터 모듈(예컨대, 세계 오퍼레이터 모듈(142))에 전송될 수 있다. 일부 예들에서, 포즈는 CPU와 GPU에 동시에 전송될 수 있다. 다른 예들에서, 포즈는 CPU 및 GPU 중 하나에 그리고 그 후 남은 하나에 전송될 수 있다.
[0061] 프로세스(200)는 센서 데이터를 사용하여 물리적 환경의 하나 이상의 특징들을 식별하는 것(220)을 더 포함한다. 예컨대, 물리적 환경에서의 객체의 코너 또는 에지가 식별할 수 있다. 일부 예들에서, 하나 이상의 특징들은 포즈와 연관된 시야 및/또는 시야에 포함되지 않은 하나 이상의 영역들과 관련될 수 있다. 물리적 환경의 하나 이상의 특징들은 VPU가 물리적 환경의 이미지를 전송하기 보다는, 하나 이상의 특징들을 다른 프로세서들에 전송하게 할 수 있다. 일부 예들에서, 하나 이상의 특징들은 이미지가 포함하는 모든 픽셀 정보를 포함할 필요 없이 물리적 환경을 설명할 수 있다. 그러한 예들에서, 하나 이상의 특징들은 컴포넌트들 사이를 통과하는 물리적 환경의 표현을 생성하는데 사용될 수 있다. 프로세스(200)는 하나 이상의 특징들을 CPU에 전송하는 것(225)을 더 포함한다.
[0062] 도 3은 일 실시예에 따라, 혼합 현실을 제시하기 위해 CPU(예컨대, CPU(130))에 의해 수행되는 프로세스(300)의 예를 예시한다. 이러한 예에서 CPU는 저전력 모드로부터 고전력 모드로 트랜지션함으로써 시작할 수 있다. 다른 예들에서, CPU는 이미 고전력 모드에 있을 수 있다. 일부 예들에서, 프로세스(300)는 프로세스(200)에 뒤따를 수 있다. 프로세스(300)는 표현이 GPU(예컨대, GPU(140))의 콘텐츠 캐시(예컨대, 콘텐츠 캐시(146))에 저장되어 있지 않거나, 또는 혼합 현실 디바이스를 사용하여 제시될 콘텐츠의 초기 식별이, 콘텐츠가 동적임을 표시한다는 것을 가정할 수 있다.
[0063] 프로세스(300)는 물리적 환경의 하나 이상의 특징들 및/또는 물리적 환경의 하나 이상의 이미지들을 사용하여 물리적 환경의 표현을 생성하는 것(330)을 포함한다. 하나 이상의 특징들은 이미지가 포함하는 모든 픽셀 정보를 포함할 필요 없이 물리적 환경을 설명할 수 있다. 이 표현은 3차원에서의 물리적 환경의 컴퓨터-시뮬레이팅된 재생성일 수 있다. 일부 예들에서, CPU 및/또는 VPU(예컨대, VPU(120))는 표현을 생성할 수 있다.
[0064] 프로세스(300)는 물리적 환경과 함께 제시될 콘텐츠를 결정하는 것(335)을 더 포함한다. 일부 예들에서, 콘텐츠는, 콘텐츠가 물리적 환경에 있는 것처럼 보이도록 물리적 환경의 뷰 상에 오버레이되는 가상 콘텐츠일 수 있다. 일부 예들에서, 콘텐츠는 CPU상에서 실행되는 애플리케이션을 사용하여 결정될 수 있다. 애플리케이션은 혼합 현실 디바이스의 표현 및/또는 포즈에 기초하여 콘텐츠를 결정할 수 있다.
[0065] 프로세스(300)는 콘텐츠로 표현을 업데이트하는 것(340)을 더 포함한다. 일부 예들에서, 표현은 결정된 콘텐츠를 표현에 삽입함으로써 업데이트될 수 있다. 다른 예들에서, 표현은 표현에 대응하는 포지션 정보를 콘텐츠와 연관시킴으로써 업데이트될 수 있어서, 콘텐츠는 표현에서 올바른 포지션 및 배향으로 배치될 필요가 있는 정보를 포함하게 될 수 있다.
[0066] 프로세스(300)는 콘텐츠 및 업데이트된 표현을 GPU에 전송하는 것(345)을 더 포함한다. 일부 예들에서, CPU는 콘텐츠를 GPU로 전송할 수 있다. 이러한 예들에서, 콘텐츠는 GPU가 혼합 현실 디바이스에 대한 콘텐츠를 렌더링할 수 있게 하는 픽셀 정보일 수 있다. 프로세스(300)는 CPU를 저전력 모드로 트랜지션하는 것(350)을 더 포함한다. 일부 예들에서, CPU는 콘텐츠 및 업데이트된 표현이 전송되는 것에 대한 응답으로 저전력 모드로 트랜지션할 수 있다.
[0067] 도 4는 일 실시예에 따라, 혼합 현실 디바이스 예컨대, 혼합 현실 디바이스(110))를 이용하여 동적 콘텐츠를 제시하기 위한 프로세스(400)의 예를 예시한다. 프로세스(400)의 시작 시에, CPU(예컨대, CPU(130)) 및/또는 VPU(예컨대, VPU(120))는 저전력 모드에서 동작하도록 세팅될 수 있다.
[0068] 프로세스(400)는 디바이스(예컨대, 혼합 현실 디바이스)의 포즈를 수신하는 것(405)을 포함한다. 일부 예들에서, 포즈는 GPU(예컨대, GPU(140))의 세계 오퍼레이터 모듈(예컨대, 세계 오퍼레이터 모듈(142))에 에 의해 수신될 수 있다. 그러한 예들에서, 포즈는 VPU로부터 수신될 수 있다. 일부 예들에서, 포즈는 위에서 설명된 바와 같이 혼합 현실 디바이스 주위의 물리적 환경의 센서 데이터를 사용하여 식별될 수 있다. 그러한 예들에서, 포즈는 혼합 현실 디바이스의 배향 및/또는 위치일 수 있다.
[0069] 프로세스(400)는 물리적 환경의 표현을 획득하는 것(410)을 더 포함한다. 일부 예들에서, 세계 오퍼레이터 모듈은 표현을 획득할 수 있다. 이러한 예들에서, 물리적 환경의 표현은 GPU의 콘텐츠 캐시(예컨대, 콘텐츠 캐시(146))에 저장될 수 있다. 일부 예들에서, 표현은 위에서 설명된 업데이트된 표현일 수 있다.
[0070] 프로세스(400)는 혼합 현실 디바이스에 의해 제시될 콘텐츠를 식별하는 것(415)을 더 포함한다. 일부 예들에서, 식별은 GPU의 세계 오퍼레이터 모듈 및/또는 지각된 뷰 모듈(예컨대, 지각된 뷰 모듈(144))에 의해 수행될 수 있다. 식별은 포즈에 대응하는 표현의 부분을 결정하는 것을 포함할 수 있다. 예컨대, 혼합 현실 디바이스의 시야는 표현의 부분일 수 있다. 이러한 예에서, 포즈는 혼합 현실 디바이스가 향하는 방향을 표시할 수 있다.
[0071] 일단 표현의 부분이 식별되면, 세계 오퍼레이터 모듈 및/또는 지각된 뷰 모듈은 표현의 부분 내에 있는 콘텐츠를 식별할 수 있다. 세계 오퍼레이터 모듈이 콘텐츠를 식별하는 경우, 세계 오퍼레이터 모듈은 콘텐츠의 하나 이상의 표시들은 물론, 콘텐츠에 대한 포즈 또는 혼합 현실 디바이스의 포즈 중 어느 하나를 지각된 뷰 모듈에 전송할 수 있다. 지각된 뷰 모듈이 콘텐츠를 식별하는 경우, 지각된 뷰 모듈은 콘텐츠를 식별하기 위해 표현 및/또는 포즈를 수신했을 수 있다.
[0072] 프로세스(400)는 콘텐츠가 동적이라고 결정하는 것(420)을 더 포함한다. 일부 예들에서, 콘텐츠는 표현에 포함된 하나 이상의 표시들에 기초하여 동적인 것으로 결정될 수 있다. 다른 예들에서, 콘텐츠는, 콘텐츠가 콘텐츠 캐시에 로케이팅되는지에 기초하여 동적인 것으로 결정될 수 있다. 일부 예들에서, 콘텐츠를 동적이라고 결정하는 것은 세계 상호작용이 발생했는지를 결정하는 것에 기초할 수 있다. 이러한 예들에서, 세계 상호작용(예컨대, 이벤트(150))은 GPU의 세계 상호작용 모듈(예컨대, 세계 상호작용 모듈(152))에 의해 수신되고 식별될 수 있다. 세계 상호작용이 발생한 경우, 콘텐츠는 동적인 것으로 결정될 수 있다.
[0073] 프로세스(400)는 CPU에 메시지를 전송하는 것(425)을 더 포함한다. 일부 예들에서, 메시지는 콘텐츠가 동적이라고 결정한 것에 대한 응답으로 전송될 수 있다. 일부 예들에서, 메시지는 표현 및/또는 포즈를 포함할 수 있다. 일부 예들에서, 메시지는 CPU로 하여금, 제시될 콘텐츠를 결정하는 것 그리고 콘텐츠를 GPU에 전송하는 것을 포함하는 도 3에 설명된 하나 이상의 단계들을 수행하게 할 수 있다.
[0074] 프로세스(400)는 GPU에 의해 콘텐츠를 수신하는 것(430)을 더 포함한다. 일부 예들에서, 콘텐츠는 콘텐츠 캐시에 의해 수신될 수 있다. 이러한 예들에서, 콘텐츠는 CPU에 의해 결정될 수 있다. 일부 예들에서, 콘텐츠가 콘텐츠 캐시에 의해 수신된 후에, 지각된 뷰 모듈은 콘텐츠 캐시로부터 콘텐츠를 획득할 수 있다. 일부 예들에서, 콘텐츠는 콘텐츠 캐시에 콘텐츠의 표시를 전송함으로써 획득될 수 있다. 이러한 예들에서, 표시는 콘텐츠의 포즈를 포함할 수 있다. 다른 예들에서, 콘텐츠는 디폴트 포즈(default pose)의 콘텐츠의 3-차원 표현일 수 있다. 이러한 예들에서, 지각된 뷰 모듈은 혼합 현실 디바이스의 포즈에 대응하도록 콘텐츠의 포즈를 변경할 수 있다. 일부 예들에서, 지각된 뷰 모듈은 또한 제1 콘텐츠와 제2 콘텐츠 그리고 제1 콘텐츠와 물리적 환경 사이의 올바른 폐색(occlusion)을 보장할 수 있다. 폐색은 물리적 환경의 객체가 물리적 환경 상에서 오버레이되는 콘텐츠의 뷰를 적어도 부분적으로 차단하는 경우를 설명할 수 있다.
[0075] 프로세스(400)는 콘텐츠를 물리적 환경의 표현에 정렬시키는 것(435)을 더 포함한다. 정렬은 콘텐츠가 표현에 대응하는 포지션에 나타나도록 혼합 현실 디바이스의 시야에 콘텐츠를 포지셔닝하는 것을 포함할 수 있다. 즉, 정렬은 콘텐츠를 물리적 환경에 대해 고정되게 할 수 있다. 일부 예들에서, 정렬은 GPU의 렌더링 모듈(예컨대, 렌더링 모듈(148))에 의해 수행될 수 있다. 프로세스(400)는 정렬된 콘텐츠를 혼합 현실 디바이스에 전송하는 것(440) 그리고 혼합 현실 디바이스를 사용하여 정렬된 콘텐츠를 제시하는 것(445)을 더 포함한다.
[0076] 도 5는 일 실시예에 따라, 혼합 현실 디바이스를 이용하여 예측 가능한 콘텐츠를 제시하기 위한 프로세스(500)의 예를 예시한다. 프로세스(500)는 혼합 현실 디바이스를 제공하는 것(505)을 포함한다. 혼합 현실 디바이스는 VPU(예컨대 VPU(120)), 하나 이상의 센서들(예컨대, 항시-온 센서(114), 비전 센서(116) 및/또는 조합 센서(118)) 및 디스플레이를 포함할 수 있다. 일부 예들에서, 센서는 카메라, 가속도계, 자이로스코프, 토템, 또는 글로벌 포지셔닝 시스템일 수 있다. 다른 센서들이 사용될 수 있다.
[0077] 프로세스(500)는 물리적 환경과 연관된 센서 데이터를 획득하는 것(510)을 더 포함한다. 일부 예들에서, 센서 데이터는 항시-온 센서(예컨대 항시-온 센서(114)), 비전 센서(예컨대, 비전 센서(116)), 조합 센서(예컨대, 조합 센서(118)), 또는 이들의 임의의 조합으로부터 수신될 수 있다. 일부 예들에서, 센서 데이터는 VPU의 지각 프론트엔드 모듈(예컨대, 지각 프론트엔드 모듈(122))에 의해 획득될 수 있다.
[0078] 프로세스(500)는 센서 데이터를 사용하여 혼합 현실 디바이스의 포즈를 결정하는 것(515)을 더 포함한다. 일부 예들에서, 포즈는 혼합 현실 디바이스의 구성 공간에 있을 수 있다. 그러한 예들에서, 포즈는 혼합 현실 디바이스의 포지션 및 배향을 정의할 수 있다.
[0079] 프로세스(500)는 혼합 현실 디바이스의 포즈를 GPU(예컨대, GPU(140))에 전송하는 것(520)을 더 포함한다. 일부 예들에서, GPU는 디바이스로부터 원격일 수 있다. 프로세스(500)는 포즈 및/또는 물리적 환경의 표현에 대응하는 콘텐츠를 식별하는 것(525)을 더 포함한다. 일부 예들에서, 콘텐츠는 예측 가능한 콘텐츠인 것으로 식별될 수 있다. 이러한 예들에서, 콘텐츠는 표현의 하나 이상의 표시자들에 기초하여 예측 가능한 콘텐츠인 것으로 식별될 수 있다. 다른 예들에서, 콘텐츠는 GPU에 의해 식별되기 전에 콘텐츠가 GPU의 콘텐츠 캐시(예컨대, 콘텐츠 캐시(146))에 저장되었는지에 기초하여 예측 가능한 콘텐츠인 것으로 식별될 수 있다.
[0080] 일부 예들에서, 표현은 어떠한 콘텐츠도 렌더링되지 않아야 한다는 것을 표시할 수 있다. 이러한 예들에서, 단계들(530 내지 540)은 스킵될 수 있다. 또한, 일부 예들에서, 어떠한 콘텐츠도 제시되어서는 안 되는 지속기간에 관한 결정이 내려질 수 있다. 그러한 예들에서, 지속기간은 시간적 또는 공간적일 수 있다.
[0081] 어떠한 콘텐츠도 제시되어선 안 될 때를 예시하기 위해, 거실에 있는 사용자의 사용 경우가 설명될 수 있다. 사용자가 욕실로 걸어갈 때, 다음 10 미터에, 어떠한 디지털 콘텐츠도 존재하지 않을 거라는 결정이 내려질 수 있다. 그 시간 동안, 10 미터를 지나갔는지를 결정하는 데 필요한 것을 제외하고는 모든 것이 유휴일 수 있다.
[0082] 프로세스(500)는 물리적 환경의 표현에 대해 콘텐츠를 정렬시키는 것(530), 정렬된 콘텐츠를 혼합 현실 디바이스에 전송하는 것(535) 그리고 혼합 현실 디바이스를 사용하여 정렬된 콘텐츠를 제시하는 것(540)을 더 포함한다. 일부 예들에서, 콘텐츠를 정렬하는 것은 혼합 현실 디바이스의 포즈에 대해 콘텐츠를 디스플레이할 배향을 결정하는 것 그리고 콘텐츠를 디스플레이할 배향에 기초하여 콘텐츠를 수정하는 것을 포함할 수 있다. 일부 예들에서, 콘텐츠는 GPU의 지각된 뷰 모듈(예컨대, 지각된 뷰 모듈(144))에 의해 수정될 수 있다. 수정은 디스플레이에 대해 올바른 방향이 되도록 콘텐츠를 구성하는 것을 포함할 수 있다.
[0083] 일부 예들에서, VPU는 센서 데이터가 더 느린 레이트로 수신될 수 있다고 결정할 수 있다. 그러한 예들에서, 하나 이상의 센서들은 저전력 모드에서 동작하도록 세팅될 수 있다. 일부 예들에서, VPU는 하나 이상의 센서들을 저전력 모드로 세팅할 수 있다. 일부 예들에서, 하나 이상의 센서들의 저전력 모드는 하나 이상의 센서들 중의 센서로 하여금, 데이터를 덜 자주(더 낮은 레이트로) 생성하게 할 수 있다. 일부 예들에서, 하나 이상의 센서들의 저전력 모드는 하나 이상의 센서들 중의 센서로 하여금, 데이터를 생성하지 않게 할 수 있다. 또한, 일부 예들에서, 하나 이상의 센서들의 센서들의 세트는 센서들의 세트가 필요하지 않을 때, 유휴일 수 있다.
[0084] 도 5에 예시된 특정 단계들은 일 실시예에 따라 혼합 현실 디바이스를 사용하여 혼합 현실 콘텐츠를 제시하는 특정 방법을 제공한다는 것이 인지되어야 한다. 또한, 단계들의 다른 시퀀스들이 대안적 실시예들에 따라 수행될 수 있다. 예컨대, 본 개시내용의 대안적 실시예들은, 위에서 약술된 단계들을 상이한 순서로 수행할 수 있다. 더욱이, 도 5에 예시된 개별 단계들은, 개별 단계에 적절한 바와 같은 다양한 시퀀스들로 수행될 수 있는 다수의 서브-단계들을 포함할 수 있다. 또한, 부가적인 단계들이 특정한 애플리케이션들에 의존하여 부가되거나 또는 제거될 수 있다. 당업자는, 다수의 변동들, 수정들, 및 대안들을 인식할 것이다.
[0085] 프로세스들(200, 300, 400 및 500)은 논리적 흐름도로서 예시되고, 그의 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들의 맥락에서, 동작들은 하나 이상의 프로세서들에 의해 실행될 때 열거된 동작들을 수행하는 하나 이상의 컴퓨터-판독 가능 저장 매체 상에 저장된 컴퓨터-실행 가능 명령들을 표현한다. 일반적으로, 컴퓨터-실행 가능 명령들은 특정 기능들을 수행하거나 특정 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들은 프로세스들을 구현하기 위해 임의의 순서로 그리고/또는 병렬로 결합될 수 있다.
[0086] 또한, 프로세스들(200, 300, 400 및 500)은 실행 가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있으며, 하나 이상의 프로세서들 상에서, 하드웨어에 의해, 또는 이들의 조합으로 집합적으로 실행되는 코드(예컨대, 실행 가능한 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서 구현될 수 있다. 코드는 예컨대, 하나 이상의 프로세서들에 의해 실행 가능한 하나 이상의 명령들을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터-판독 가능 저장 매체 상에 저장될 수 있다. 컴퓨터-판독 가능 저장 매체는 비-일시적일 수 있다.
[0087] 도 6 내지 도 10은 다양한 실시예들에 따른 혼합 현실 시스템의 컴포넌트들의 가능한 구성들을 설명한다. 가능한 구성들이 각각의 구성의 특정 세부사항들을 제공하지만, 당업자는 본 개시내용이 컴포넌트들에 대한 다른 구성들을 커버한다는 것을 인식할 것이다.
[0088] 도 6은 일 실시예에 따라, CPU(central processing unit)(600)의 블록도의 예를 예시한다. CPU(600)는 로컬 및/또는 외부 메모리에 저장된 소프트웨어 명령들을 실행할 수 있다. CPU(600)는 제어 컴포넌트들(예컨대, 제어 컴포넌트(608)), 하나 이상의 기능 유닛들(예컨대, 기능 유닛들(604)), 메모리(예컨대, 캐시(612) 및 RAM(random access memory)(616)) 또는 이들의 임의의 조합 중 적어도 하나 이상을 포함할 수 있다. 제어 컴포넌트(608)는 I/O(input and output), 명령 스케줄링, 디코딩, 로드/저장 동작 및 CPU(600) 상에서 정보의 전달을 제어함으로써 CPU(600)의 동작을 지시할 수 있다. 또한, 제어 컴포넌트(608)는 내부 클록을 통한 명령의 프로세싱 및 기능 유닛(604)(예컨대, 동기화 기능 유닛)을 사용한 타이밍 신호들의 생성을 조정할 수 있다.
[0089] 기능 유닛(604)은 CPU(600)의 기본 기능성을 표현할 수 있다. 일부 예들에서, 기능 유닛들(604)은 소프트웨어 명령에 의해 지시된 바와 같이 동작 및/또는 계산을 수행하는 유닛일 수 있으며, 유형 및 능력 면에서 변동될 수 있다. 예컨대, 기능 유닛들(604)은 ALU(arithmetic logic unit), FPU(floating point unit), 메모리 인터페이스 유닛 등일 수 있다. ALU는 하나 이상의 정수 기반 이진수들에 대해 하나 이상의 기본 산술 및/또는 비트와이즈 연산(bitwise operation)들을 수행할 수 있다. 대조적으로, FPU는 하나 이상의 부동 소수점 수들(예컨대, 실수의 근사치)에 대해 하나 이상의 산술 및/또는 비트와이즈 연산들을 수행할 수 있다. 메모리 인터페이스 유닛 외부 메모리들, 이를테면, RAM 또는 하드 디스크 드라이브(HDD) 및 온보드 메모리, 이를테면, 캐시(612) 및 RAM(616)에 대한 인터페이스를 제어 컴포넌트(608)에 제공할 수 있다. 일부 예들에서, 기능 유닛들(604)은 하나 이상의 ALU들, 하나 이상의 FPU들, 하나 이상의 메모리 인터페이스 유닛들 등의 동질성 세트를 포함할 수 있다. 다른 예들에서, 기능 유닛들(604)은 2개의 ALU들, FPU 및 메모리 인터페이스 유닛과 같은(그러나 이에 제한되지 않음) 상이한 유형의 전술한 기능 유닛들의 임의의 조합을 포함할 수 있다. 일반적으로, CPU(600)는 임의의 유형의 명령을 실행하도록 동작 가능한, 낮은 레이턴시를 갖는 일반적인 실행 유닛일 수 있다. 또한, CPU(600)가 4개의 기능 유닛들(604)을 도시하지만, CPU(600)는 본 개시내용의 사상 및 범위를 벗어나지 않으면서 임의의 수의 기능 유닛들(604)을 포함할 수 있다.
[0090] 일부 예들에서, 기능 유닛들(604)은 영구 메모리(예컨대, RAM(616))에 저장된 프로그램 명령들을 프로세싱하지 못할 수 있다. 이러한 예들에서, 제어 컴포넌트(608)는 메모리에 저장된 소프트웨어 명령을 디코딩하고 CPU(600)의 명령 세트 아키텍처에 따라 하나 이상의 개별 연산자들, 피연산자들 및/또는 제어 신호들을 기능 유닛에 전달할 수 있다. 예컨대, 제어 컴포넌트(608)는 명령 세트 아키텍처에 따라 소프트웨어 명령을 분석하고, 하나 이상의 비트들 중 어느 것이 하나의 연산자에 대응하는지 그리고 어떤 연산자(예컨대, 가산, 감산 등)가 하나 이상의 비트들에 의해 정의되는지를 결정할 수 있다. 제어 컴포넌트(608)는 피연산자 및/또는 제어 신호에 대해 유사하게 동작할 수 있다. 일부 예들에서, 명령 세트 아키텍처는 고정 길이 명령(예컨대, 모든 명령들은 동일한 비트 수를 가짐)을 요구할 수 있지만; 일부 다른 예들에서, 제어 컴포넌트(608)는 가변 길이 명령들을 디코딩하도록 동작 가능할 수 있다(예컨대, 제1 명령은 제2 명령과 비교하여 상이한 수의 비트들을 포함할 수 있음). 명령 세트 아키텍처가 가변 명령 길이들을 가능하게 할 때, 명령은 바이트들의 배수들을 포함할 수 있고 다른 명령들보다 많거나 적은 바이트들을 포함할 수 있다. 예컨대, 제1 명령은 4 바이트(즉, 32 비트)를 포함할 수 있고, 제2 명령은 2 바이트(즉, 16 바이트)를 포함할 수 있다. 제어 컴포넌트(608)는 마지막 바이트에서 특수 문자를 인식함으로써 가변 명령의 끝을 식별할 수 있다. CPU(600)는 소프트웨어 명령을 적절하게 디코딩 및/또는 실행하기 위해 명령 세트 아키텍처에 따라 명령을 예상할 수 있다.
[0091] ALU들 및 FPU들은 2개의 피연산자들, 연산자 및 적어도 하나의 제어 신호(예컨대, 타이밍 신호)를 나타내는 적어도 4개의 입력들을 포함할 수 있다. 타이밍 신호는 제어 컴포넌트(608)가 기능 유닛이 입력을 프로세싱할 때를 관리하는 것을 가능하게 할 수 있다. 예컨대, 제어 컴포넌트(608)는 타이밍 신호를 이용하여 ALU(또는 다른 기능 유닛들)가, 동시에, 특정 순서로, 비동기식으로, 또는 소프트웨어 명령 또는 제어 컴포넌트(608)에 의해 필요로 될 수 있는 임의의 다른 방식으로 동작하도록 강제할 수 있다. ALU 또는 FPU는 산술 연산 및 적어도 하나의 제어 신호의 결과를 출력할 수 있다. 출력 제어 신호는 CPU(600)의 상태를 나타낼 수 있고, 후속 컴퓨테이션에서 (입력으로서) ALU 또는 FPU에 의해 사용되거나, 관련된 연산들을 위해 다른 ALU에 전달되거나, 또는 레지스터들에 저장될 수 있다. 예컨대, 출력 신호는 산술 결과가 음수, 0 또는 오버플로(overflow)(예컨대, 연산이 기능 장치에 의해 표현되기에는 너무 큰 수를 발생시킴)였음을 표시할 수 있다.
[0092] 제어 컴포넌트(608)는 명령을 메모리(예컨대, 캐시(612) 및 RAM(616))로부터 페치(fetch)하고, 디코딩하고, 그리고/또는 스케줄링할 수 있다. 제어 컴포넌트(608)는 병렬 또는 반 병렬 방식으로 각각의 기능 유닛 상에 하나 이상의 디코딩된 명령들을 스케줄링하기 위해 명령 파이프라인을 동작시킬 수 있다. 예컨대, x = 5 + 6, y = 1 + 2, z = x + y의 3개의 컴퓨테이션들을 갖는 소프트웨어 프로그램은 적어도 부분적으로 병렬로 실행될 수 있다. x = 5 + 6 및 y = 1 + 2는 서로 의존하지 않기 때문에, x 및 y 컴퓨테이션들 둘 모두가 병렬로 실행될 수 있다. 그러나 z 컴퓨테이션은 처음 2개의 수식들이 실행을 완료하기를 기다려야 한다. 명령 파이프라인은 3개의 명령들을 모두 스케줄링하고 2개의 적은 사이클들에 이들을 완료할 수 있다. 제어 컴포넌트(608)는 한 번의 연산에서 다수의 기능 유닛들을 최대화하도록 명령의 스케줄링을 관리할 수 있고, 그리하여 최종 결과를 생성하는데 필요한 총 시간을 최소화한다.
[0093] 일부 예들에서, 제어 컴포넌트(608)의 일반적인 흐름은, 메모리로부터 하나 이상의 명령들을 페치하고, 하나 이상의 명령들을 디코딩 및 파싱하고, 명령 스케줄을 발달시키고(예컨대, 명령 파이프라인을 통해) , 명령 스케줄에 따른 하나 이상의 타이밍 신호들에 따라 프로세싱하기 위해 하나 이상의 기능 유닛들(604)에 하나 이상의 명령들을 전달하고, 하나 이상의 기능 유닛들(604)로부터 결과들을 수신하고, 결과를 메모리에 다시 저정하는 것을 포함할 수 있다.
[0094] 제어 컴포넌트(608)는 후속 명령들을 프로세싱하기 전에 중간 결과들 및 하나 이상의 디코딩된 명령들을 캐시(612) 또는 RAM(616)에 저장할 수 있다. 그러나, 제어 컴포넌트(608)는 저장될 데이터의 유형에 의존하여 메모리의 한 형태를 다른 것보다 우선시할 수 있는 메모리 계층 구조에 따라 데이터를 저장할 수 있다. 일부 예들에서, 캐시(612)는 캐시(612)와 제어 컴포넌트(608) 및 하나 이상의 기능 유닛들(604)의 근접성으로 인해 더 낮은 비용(예컨대, 레이턴시 및 전력)을 가질 수 있다. 그러한 예들에서, 제어 컴포넌트(608)는 데이터가 임박하게 또는 빈번하게 로딩될 때 RAM(616) 보다 캐시(612)를 우선시할 수 있다. 캐시(612)는 유한하고 고가일 수 있기 때문에, 즉시 요구되지 않을 수 있는 데이터는 RAM(616) 또는 외부 비-휘발성 메모리(도시되지 않음)에 저장될 수 있다. 예컨대, 위의 컴퓨테이션 예 및 단지 단일 ALU가 주어진다. 제어 컴포넌트(608)는 제1 컴퓨테이션(예컨대, x = 5 + 6)을 페치하고 이를, 프로세싱을 위해 ALU에 전달하고 결과를 캐시(612)에 리턴할 수 있다. 제어 컴포넌트(608)는 그 후 제2 컴퓨테이션(예컨대, y = 1 + 2)을 ALU에 전달하고 제2 서브-컴퓨테이션의 결과를 캐시(612)에 저장한 다음, 제1 및 제2 컴퓨테이션들과 함께 마지막 컴퓨테이션(예컨대, z=x+y)을 페치한다. 마지막 명령의 결과들은 완료된 명령을 표현하며 즉시 필요하지 않을 수 있고 이에 따라 RAM(616)에 또는 비-휘발성 메모리에 외부적으로 저장될 수 있다.
[0095] 캐시(612)는 하나 이상의 로드 및 저장 동작들에 대한 감소된 레이턴시를 제공하는 임의의 랜덤 액세스 메모리일 수 있다. 예컨대, 캐시(612)는 SRAM(static random-access memory)일 수 있다. 일부 예들에서, CPU(600)는 다수의 코어들(예컨대, 2개의 코어들, 4개의 코어들, 8개의 코어들 또는 그 이상)을 포함할 수 있으며, 여기서 각각의 코어는 제어 컴포넌트(예컨대, 제어 컴포넌트(608)), 하나 이상의 기능 유닛들(예컨대, 기능 유닛(604)) 및 캐시(예컨대, 캐시(612))를 포함할 수 있다. 이러한 예들에서, CPU(600)는 다수의 코어들에 의해 공유될 수 있는 전체 캐시(도시되지 않음)를 더 포함할 수 있다.
[0096] 일부 예들에서, 캐시(612)는 L1 캐시들이 최저 액세스 레이턴시를 가지며 L4 캐시가 최고 액세스 레이턴시를 갖는 하나 이상의 레벨들(예컨대, L1, L2, L3 및 L4)을 포함할 수 있다. 일부 예들에서, L1 캐시는 CPU(600)의 다른 코어들에 의해 공유되는 것이 아니라 특정 CPU 코어에 전용인 캐시(612)를 표현할 수 있다. 그러한 예들에서, L2-L4 캐시들은 CPU(600)의 다수의 코어들 사이에서 공유되는 전체 캐시의 부분일 수 있다. L4 캐시는 CPU(600) 내부 또는 외부에 있을 수 있고, SRAM 또는 임의의 다른 유형의 RAM, 이를테면, DRAM(Dynamic RAM) 또는 eDRAM(embedded dynamic RAM)을 포함할 수 있다. CPU(600)는 다양한 레벨들을 갖는 캐시 메모리를 포함해서, 하나 또는 임의의 수의 코어들 및 임의의 수 또는 유형의 메모리들을 포함할 수 있다.
[0097] 도 7은 일 실시예에 따라, CPU(700)(예컨대, 도 6의 CPU(600))의 내부 컴포넌트들의 블록도의 예를 예시한다. 위에서 언급된 바와 같이, CPU(700)의 일반적인 흐름은 페치, 디코딩 및 실행하는 것일 수 있다. 명령을 실행하는 프로세스는 프로그램 내의 하나 이상의 명령들에 대한 실행 순서를 제어할 수 있는 프로그램 카운터(708)로 시작될 수 있다. 프로그램 카운터(708)의 현재 프로그램 카운터 값은 실행될 명령의 어드레스 위치일 수 있다. 현재 프로그램 카운터 값은 CPU(700)의 내부 및/또는 외부 메모리에 대한 액세스를 가능하게 할 수 있는 메모리 인터페이스(716)에 전달될 수 있다. 메모리 인터페이스(716)는 메모리(728)의 프로그램 카운터 값과 연관된 어드레스에 액세스하고 명령을 명령 레지스터(704)로 전달할 수 있다. 메모리(728)는 휘발성 및/또는 비-휘발성 메모리일 수 있다. 명령 레지스터(704)(이를테면, 도 6의 캐시(612))는 낮은 액세스 레이턴시를 갖는 단기 메모리일 수 있다. 명령 레지스터(704)는 명령을 기능 유닛(720)에 또는 명령이 디코딩될 필요가 있는 경우, 명령 디코더(712)에 전달할 수 있다.
[0098] 명령 디코더(712)는 CPU(700)의 명령 세트 아키텍처에 따라 기능 유닛(720)의 실행을 관리할 수 있다. 명령 디코더(712)는 명령 레지스터(704)로부터 하나 이상의 비트들로 구성된 이진수를 취하고, 제1 피연산자, 제2 피연산자, 연산자 및 저장 위치에 대응하는 비트들을 식별할 수 있다. 상이한 유형들의 명령 세트 아키텍처들이 존재할 수 있으며, 각각의 명령 세트는 상이한 관례(convention)를 따를 수 있다. 예컨대, RISC(reduced instruction set computing) 아키텍처(명령 길이가 32-비트임)에서 변수에 상수를 가산하는 명령의 경우, 처음 6 비트들은 연산자 (예컨대, 이 예에서, 가산)에 대응할 수 있고, 다음 5개는 결과의 저장 어드레스에 대응할 수 있고, 다음 5개는 제1 피연산자에 대응할 수 있고, 마지막 16개는 상수에 대응할 수 있다. 명령 디코더(712)는 연산자, 하나 이상의 피연산자들, 및 명령의 다른 양상들이 특정 순서로 나타날 것으로 예상할 수 있다. 명령 디코더(712)는 명령 세트 아키텍처가 명령 디코더(712)에 알려지면, 임의의 명령 세트 아키텍처 상에서 동작할 수 있다. 연산자 및 피연산자는 일단 디코딩되면, 연산을 실행할 수 있는 기능 유닛(720)에 전달될 수 있다.
[0099] 기능 유닛(720)(예컨대, ALU, FPU 등)은 명령 디코더(712)로부터 입력을 수신하고 출력을 생성할 수 있다. 출력이 명령의 결론을 나타내는 경우, 출력은 메모리 인터페이스(716)(이는 메모리(728)에 출력을 저장함)에, 또는 출력이 다음 명령에 의해 사용되는 경우 명령 레지스터(704)에 전달될 수 있다. 명령이 불완전한 경우, 기능 유닛(720)의 출력은 결과를 누산기(724)에 전달할 수 있다. 누산기(724)는 중간 산술 및 로직을 저장하는 레지스터일 수 있다. 누산기(724)는 기능 유닛(720)을 통한 다수의 전달들을 필요로 하는 하나 이상의 연산들을 위해 기능 유닛(720)의 출력을 누산할 수 있다. 기능 유닛(720)의 각각의 반복은 누산기(724)에 전달되어서, 그것은 후속 반복에서 기능 유닛(720)에 의해 재사용되거나, 또는 일단 완료되면, 저장을 위해 메모리 인터페이스(716)에 전달될 수 있다. 예컨대, ALU가 y = 5^2 명령을 실행중인 경우, ALU는 명령을 y = 5 + 5 + 5 + 5 + 5로서 프로세싱할 수 있지만; ALU는 피연산자 당 2개의 연산자들만을 취할 수 있기 때문에, ALU는 가산 연산을 4번 실행할 수 있다. 이러한 예에서 ALU는 제2 반복에서 10 + 5를, 제3 반복에서는 15 + 5를, 마지막 반복에서 20 + 5를 프로세싱할 수 있다. 일단 최종 결과가 도달되면(즉, 25), 누산기로부터의 출력은 메모리(728)에 저장될 수 있다. 기능 유닛(720) 및 누산기(724)는 또한 이진 연산에서 시프트-및-가산(shift-and-add)을 사용하여 곱셈을 프로세싱할 수 있다. 기능 유닛(720)이 동작의 최종 반복을 프로세싱할 때, 결과는 메모리(728)로 전달될 수 있다.
[0100] 일단 명령이 완료되면, 프로그램 카운터(708)는, 프로그램 카운터 값이 다음 명령의 메모리 어드레스와 동일하도록 명령 세트 아키텍처에 따라 명령의 길이(예컨대, 16-비트, 32-비트 등)만큼 증분될 수 있다. 프로그램 카운터(708)는 그 후, 메모리 인터페이스(716)를 통해 그 다음 명령을 로딩하고, 프로그램이 완료될 때까지 위에서 설명된 프로세스를 지속할 수 있다.
[0101] 도 8은 일 실시예에 따라, GPU(graphics processing unit)(800)의 블록도의 예를 예시한다. GPU가 본 개시내용 전반에 걸쳐 구체적으로 언급되지만, 일부 예들에서 GPU의 기능을 대체하기 위해 VPU가 사용될 수 있다는 것이 주의되어야 한다. 일부 예들에서, GPU(800)는 마이크로프로세서일 수 있다. 그러한 예들에서, GPU(800)의 고유한 아키텍처는 CPU(예컨대, CPU(600/700))보다 나은 별도의 프로세싱 능력들을 제공할 수 있다. CPU(600/700)와 GPU(800) 간의 차이는 각각의 하드웨어 엘리먼트의 최적화와 관련될 수 있다. CPU(600/700)는 대량의 캐시(612)를 사용함으로써 (페치로부터 실행까지) 낮은 레이턴시를 갖는 스레드(예컨대, 전체 프로그램의 이산 서브-프로그램)를 실행하도록 설계될 수 있다. 대조적으로, GPU(800)는 매우 다수의 유사한 명령들을 병렬로 실행하도록 설계될 수 있다. 예컨대, GPU(800)는 16개의 SM(streaming multiprocessor)들(816)을 포함할 수 있으며, 여기서 각각의 SM(816)은 다른 SM(816)과 병렬로 스레드들의 블록을 실행할 수 있다. 일부 예들에서, GPU(800)는 한 번에, SM들(816)의 수와 동일한 수의 스레드들의 블록들을 실행할 수 있다. 일부 예들에서, GPU(800)는 매우 다수의 반복적인 연산들을 실행하는 데 있어 보다 능숙할 수 있어, 병렬 SM들(816)의 효율성을 최대화한다. GPU(800)는 다수의 SM들(816)을 포함할 수 있다. 16개의 SM들(816)이 도 8에 도시되지만, GPU(800)는 임의의 수의 SM들(816)을 포함할 수 있다.
[0102] 일부 예들에서, 각각의 SM은 레벨 2(L2) 캐시(812)를 공유할 수 있다. L2 캐시(812)를 공유함으로써, 제1 SM(816)은, 제1 SM(816) 및 제2 SM(816)이 병렬로 실행될 때 제2 SM(816)의 중간 결과를 사용할 수 있다. L2 캐시(812)는 저 레이턴시 로드/저장 동작들을 가능하게 하여, 데이터가 상이한 SM들(816) 사이에서 전달될 수 있게 할 수 있다.
[0103] 일부 예들에서, 하나 이상의 메모리 제어기들(예컨대, 메모리 제어기(804))은 호스트 인터페이스(808)를 통해 SM들(816), L2 캐시(812) 및 외부 디바이스 또는 시스템(도시되지 않음) 간의 인터페이스를 제공할 수 있다. 메모리 제어기(804)는 래서(lessor) 또는 무기한으로 사용된 데이터의 저장을 위해 L2 캐시(812)의 레이턴시 보다 높은 레이턴시를 갖는 RAM(random access memory)를 포함할 수 있다. 예컨대, 메모리 제어기(804)는 DRAM, SRAM, eDRAM 등, 또는 이들의 임의의 조합을 포함(그러나 이에 제한되지 않음)할 수 있다. 일부 예들에서, 메모리 제어기(804)는 임의의 메모리를 포함하는 것이 아니라 오히려, GPU(800)가 RAM, ROM(read only memory), HDD, 플래시 메모리 등과 같은 외부 휘발성 및/또는 비-휘발성 메모리에 액세스하는 것을 가능하게 할 수 있다. 또한, 메모리 제어기(804)는 호스트 인터페이스(808)를 통해 GPU(800) 외부의 하드웨어 또는 소프트웨어로부터 내부 RAM 또는 L2 캐시(812)에 대한 액세스를 용이하게 할 수 있다.
[0104] 일부 예들에서, GPU(800)에 의해 실행되는 명령은 외부 소스들, 이를테면, 도 6의 CPU(600) 또는 도 7의 CPU(700), VPU(vision processing unit)(도 10에 도시됨), 또는 외부 메모리(예컨대, RAM, ROM, HDD, 플래시 메모리 등)로부터 수신될 수 있다. 호스트 인터페이스(808)는 인터페이스를 제공함으로써 GPU(800)의 컴퓨팅 자원들에 대한 외부 소스 액세스들을 제공할 수 있다. 호스트 인터페이스(808)로부터 수신된 정보는, 관련 데이터를, 필요에 따라 L2 캐시(812) 또는 개별 SM들(816)에 전달할 수 있는 메모리 제어기(804)에 전달될 수 있다.
[0105] GPU(800)는 매우 다수의 스레드들을 동시에 실행할 수 있게 됨으로써 CPU(예컨대, CPU(600/700))의 아키텍처와 상이할 수 있다. 메모리 제어기(804)는 소프트웨어 명령에 따라 SM들(816) 상에서 실행되는 동시 스레드들을 관리하고 조정할 수 있다. 예컨대, GPU(800)는 1080p 비디오의 단일 프레임을 업데이트하는 태스크가 주어질 수 있다. 이러한 예들에서, GPU(800)는 프레임의 각각의 픽셀(2,073,600 픽셀들을 포함할 수 있음)에 대한 픽셀 값을 계산할 필요가 있을 수 있다. 그러한 명령의 경우, GPU(800)는 2백만번을 넘어 픽셀에 대해 동일한 계산을 풀어야 한다. 메모리 제어기(804)는 단일 태스크에서, 스레드들의 블록(예컨대, 하나 이상의 스레드들)을 구별함으로써 GPU(800)의 동시 프로세싱 능력들을 이용할 수 있으며, 여기서 각각의 SM(816)이 동시에 스레드들의 블록을 실행한다. 다수의 SM들(816)의 병렬 프로세싱 능력들을 이용하여, GPU(800)는 초당 1 내지 240 프레임들의 프레임 레이트(또는 일부 다른 프레임 레이트)로 비디오를 끊김 없이 렌더링하기 위한 계산들을 제공할 수 있다.
[0106] 일부 예들에서, GPU(800)는 변경된 값들을 갖는 프레임의 부분만을 업데이트함으로써 전력을 절감할 수 있다. 예컨대, 제1 프레임의 부분이 흑색이고 제2 프레임의 동일한 부분이 동일한 컬러인 경우, GPU(800)는 변경되지 않은 프레임 부분에 대한 값들을 계산 및 업데이트하는 데 자원들을 헌납할 필요가 없다. 이러한 예에서 델타(프레임들 간의 차이)만이 프로세싱될 필요가 있다. 메모리 제어기(804)는 GPU(800)의 병렬 프로세싱 능력들을 달성하기 위해 SM들(816) 상에서 실행되는 스레드들을 조정하여, GPU(800)가 각각의 프레임을 업데이트하고 프레임 레이트에 따라 프레임을 디스플레이하는 것을 가능하게 한다. 일부 예들에서, 메모리 제어기(804)는 다수의 SM들(816) 상에서 실행되는 개별 스레드들을 관리하는 단일 통합 스레드를 표현하는 기가스레드(gigathread)와 유사하게 동작할 수 있다. 일부 예들에서, GPU(800)는 그래픽들을 프로세싱하기 위해 특수화된 CPU일 수 있다.
[0107] 도 9는 일 실시예에 따른 단일 스트리밍 멀티프로세서(900)(이를테면, 도 8의 스트리밍 멀티프로세서(816))의 블록도의 예를 예시한다. 단일 SM(900)은 다수의 실행 블록들(예컨대, 제어 컴포넌트, 캐시 및 하나 이상의 기능 유닛들은 단일 실행 블록일 수 있음)을 포함할 수 있으며, 여기서 각각의 실행 블록은 단일 스레드를 실행할 수 있다. 도 9는 4개의 실행 블록들, 즉 제어 컴포넌트(904), 캐시(908) 및 기능 유닛들(912)을 포함하는 제1 블록, 제어 컴포넌트(916), 캐시(920) 및 기능 유닛들(924)을 포함하는 제2 블록, 제어 컴포넌트(928), 캐시(932) 및 기능 유닛들(936)을 포함하는 제3 블록, 및 제어 컴포넌트(940), 캐시(944) 및 기능 유닛들(948)을 포함하는 제4 블록을 도시한다. SM은 임의의 수의 실행 블록들을 포함할 수 있다. 일부 예들에서, 단일 SM(900)은 스레드들의 블록 내의 각각의 스레드를 실행 블록에 할당함으로써 스레드들의 블록을 실행할 수 있다. 이러한 예들에서 스레드들의 각각의 블록은 동시에 실행될 수 있고, 단일 스레드가 실행하는데 걸리는 시간 내에 완료될 수 있다. 일부 예들에서, 실행 블록의 캐시의 메모리 용량은 제한될 수 있다(예컨대, 캐시(908)는 도 8의 L2 캐시(812) 보다 작을 수 있는 캐시(952) 보다 작을 수 있음). 실행 블록의 캐시는 각각의 기능 유닛(예컨대, FU(912))에 전달되는 하나 이상의 연산자들, 피연산자들, 타이밍 및/또는 상태 신호들, 또는 이들의 임의의 조합을 저장할 수 있다. 실행 블록의 캐시는 또한 각각의 기능 유닛으로부터의 (중간 또는 최종) 결과를 저장할 수 있다. (도 6의 제어 컴포넌트(608)와 유사한) 제어 컴포넌트는 페치, 디코딩 및 실행의 명령 실행 사이클을 따를 수 있다. 제어 컴포넌트(608)는 단일 SM(900)에 의해 활용되는 명령 세트 아키텍처에 따라 그의 캐시(즉, 캐시(908, 920, 932, 944))에서 하나 이상의 명령들을 페치하고 하나 이상의 명령들을 디코딩할 수 있다. 임의의 명령 세트 아키텍처는 제어의 디코더가 명령 세트 아키텍처를 디코딩하는, 대응하는 디코딩 능력을 갖는다면, 실행 블록에 의해 사용될 수 있다. 제어 컴포넌트는 디코딩된 명령을 제어 컴포넌트와 연관된 기능 유닛에 전달할 수 있다. 예컨대, 제어 컴포넌트(904)는 하나 이상의 디코딩된 명령들을 기능 유닛들(912)에 전달할 수 있는 반면, 제어 컴포넌트(916)는 하나 이상의 디코딩된 명령들을 기능 유닛들(924)에 전달할 수 있는 식이다.
[0108] 명령들의 세트의 결과(하나 이상의 기능 유닛들에 의해 일단 디코딩되고 실행됨)는 캐시(952)에 전달되기 전에 실행 유닛의 로컬 캐시에 저장될 수 있다. 일부 예들에서, 캐시들(908, 920, 932 및 944)은 각각의 캐시가 다른 실행 블록들 간에 공유되지 않기 때문에, 레벨 1(L1) 캐시를 표현할 수 있다. 그러한 예들에서, 캐시(952)는, 그것이 다수의 실행 블록들 사이에서 공유될 수 있기 때문에, 레벨 2(L2) 캐시를 표현할 수 있다. 예컨대, 호스트 인터페이스(956)는 도 8의 메모리 제어기(804)로부터 스레드 블록을 수신하고 분배 이전에 캐시(952)에 대응하는 스레드들을 저장한다. 일부 예들에서, 스레드들의 블록의 각각의 스레드는 각각의 실행 블록에 분배될 수 있다. 일부 예들에서, 스레드들의 블록은 단일 SM(900)에서 실행 블록들의 수보다 적거나 동일한 수의 스레드들을 포함할 수 있다. 스레드들의 각각의 블록에 대한 실행 시간은 가장 긴 개별 스레드의 실행 시간과 동일할 수 있다. 다른 예들에서, 스레드들의 블록은 단일 SM(900)이 실행 블록들을 갖는 것보다 더 많은 스레드들을 포함할 수 있다. 그러한 예들에서, 단일 SM(900)은, 예컨대, 가장 짧은 스레드 및 가장 긴 스레드가 동일한 실행 블록 상에서 실행되도록 스케줄링함으로써 실행 시간을 최소화하는 방식으로 실행 블록들 사이에서 스레드들을 스케줄링할 수 있다.
[0109] 완료된 스레드들의 결과들은 캐시(952)에 저장될 수 있고, 후속적으로 메모리 제어기(804)에 전달되도록 호스트 인터페이스(956)에 전달될 수 있다. 일부 예들에서, 각각의 스레드의 중간 결과들은 각각의 스레드가 완료될 때 호스트 인터페이스(956)를 통해 전달될 수 있다. 다른 예들에서, 단일 SM(900)은 스레드들의 각각의 전체 블록의 결과를 메모리 제어기(804)에 전달하기 전에 스레드들의 전체 블록이 완료될 때까지 대기할 수 있다.
[0110] 도 10은 하나 이상의 센서들(예컨대, 항시-온 센서(114), 비전 센서(116), 조합 센서(118), 비디오 및 스틸 카메라들, 가속도계들, 광의 시간(time of light) 등)로부터의 입력을 관리하기 위한 VPN(vision processing unit)(1000)의 블록도의 예를 예시한다. VPU가 본 개시내용 전반에 걸쳐 구체적으로 언급되지만, 일부 예들에서 VPU의 기능을 대체하기 위해 GPU가 사용될 수 있다는 것이 주의되어야 한다. VPU(1000)는 명령들을 동시에 프로세싱하기 위한 프로세서들의 어레이를 포함할 수 있다. 프로세서들의 어레이는 개별 피연산자들 보다는, 전체 데이터 세트들 상의 하나 이상의 명령들을 한 번에 실행함으로써 대량의 원시 데이터를 프로세싱하도록 동작 가능할 수 있다. 일부 예들에서, 프로세서 또는 프로세서들의 어레이는 벡터 VLIW(very long instruction word) 프로세서(1004)일 수 있다. 벡터 VLIW 프로세서(1004)는 스칼라들(예컨대, 단일 데이터) 보다는, CPU(예컨대, 도 6의 CPU(600))가 프로세싱할 수 있는 벡터들을 칭하는 데이터들의 하나 이상의 어레이들 상에서 동작할 수 있다. 또한, 벡터 VLIW 프로세서(1004)는 각각의 명령 길이가 64-비트 이상일 수 있는 VLIW 명령 세트 아키텍처를 사용할 수 있다. 일부 예들에서, VLIW 명령 세트 아키텍처는 명령들이 변동 비트 길이들을 가질 수 있는 가변 VLIW 아키텍처일 수 있다. 일부 예들에서, 프로세서들의 어레이는 도 9에 도시되고 GPU(800)에 의해 사용되는 것과 같은 단일 SM일 수 있다.
[0111] 프로세서들의 어레이들의 프로세서는 내부 캐시 메모리, 메모리 어레이(1008), L2 캐시(1036), 또는 이들의 임의의 조합을 포함할 수 있다. 메모리 어레이(1008)는 프로세서들의 어레이의 각각의 프로세서, 하나 이상의 비전 하드웨어 가속기들(1012), 및 하나 이상의 RISC(reduced instruction set computing) 프로세서들(예컨대, RISC 1(1028) 및 RISC 2(1032))에 대한 대형 공유 메모리의 뱅크로서 동작하는, RAM(예컨대, DRAM, SRAM 등)으로 구성된 대량의 상호 연결된 노드들을 표현할 수 있다. 일부 예들에서, 프로세서들의 어레이는 밀착-커플링(tightly-coupled) 어드레스 공간을 사용하여 로드 레이턴시를 감소시키고 스토리지를 증가시킬 수 있다. 일부 예들에서, 하나 이상의 비전 하드웨어 가속기들(1012)은 프로세서들의 어레이의 프로세서에 대해 특정 유형의 계산의 부하를 감소시키도록 특정 유형의 계산을 위해 특별히 설계된 특수 하드웨어 엘리먼트일 수 있다. 하드웨어 가속기(예컨대, 하나 이상의 비전 하드웨어 가속기들(1012))는 하나 이상의 특정 명령들의 고속 프로세싱을 제공할 수 있다. 일부 예들에서, 하드웨어 가속기는, 프로세서들의 어레이의 프로세서가 하나 이상의 특정 명령들을 실행하기에 느릴 수 있을 때(또는, 그렇지 않고, 특정 명령 유형에 대해 덜 적합할 때), 그 프로세서로 하나 이상의 특정 명령들을 실행하는 것보다 바람직할 수 있다. 일부 예들에서, VPU(1000)는 프로세서들의 어레이로부터 프로세싱의 일부를 분담(offload)하는 하드웨어 가속기를 20개까지 포함할 수 있다. 일부 예들에서, 하나 이상의 비전 하드웨어 가속기들은 프로세서들의 어레이를 통해 RISC 프로세서에 의해 제어될 수 있다.
[0112] 버스(1040)는 프로세서들의 어레이, L2 캐시(1036), RISC 1(1028), RISC 2(1032), 및 하나 이상의 인터페이스들(1020)을 연결할 수 있다. L2 캐시(1036)는 프로세서들의 어레이, RISC 1(1028) 및 RISC 2(1032) 중에서 공유 메모리를 표현할 수 있다. 또한, 하나 이상의 인터페이스들(1020)은 VPU(1000)의 프로세서들 중 하나 이상과 프로세싱하기 위해 L2 캐시(1036)에, I/O(input/output) 인터페이스(1024)로부터의 외부 데이터를 저장할 수 있다. 일부 예들에서, RISC 1(1028) 및 RISC 2(1032)는 각각, VPU(1000)의 서브-컴포넌트들을 제어하는 감소된 명령 세트 컴퓨팅 프로세서들일 수 있다. 예컨대, RISC 1(1028)은 하나 이상의 비전 하드웨어 가속기들(1012)을 관리할 수 있는 반면, RISC 2(1032)는 I/O 인터페이스(1024) 및 임의의 연결된 센서들(예컨대, 카메라들 및 센서들)을 관리할 수 있다.
[0113] 일부 예들에서, VPU(1000)의 제어는 분산될 수 있으며, 여기서 RISC 1(1028) 및/또는 RISC 2(1032)가 I/O 인터페이스(1024), 주변 장치들 및 하나 이상의 비전 하드웨어 가속기들(1012)을 관리할 수 있다. 일부 예들에서, 단일 RISC 프로세서는 RISC 1(1028) 및 RISC 2(1032) 둘 모두의 역할을 취함으로써 VPU(1000)를 관리할 수 있다. 하나 이상의 외부 센서들은 RISC 프로세서(들)에 의해 관리될 수 있고, VPU(1000)의 요구들을 달성하도록 제어될 수 있다. 일부 예들에서, VPU(1000)는 하나 이상의 외부 센서들의 센서가 데이터를 입력하는 레이트를 수정할 수 있다. 예컨대, VPU(1000)는 카메라가 비디오를 캡처하는 레이트를 변경함으로써 카메라의 전력 소비를 감소시킬 수 있다. 다른 예로, VPU(1000)는 초당 60 프레임을 캡처할 수 있는 카메라를 관리하여서 그것이 초당 24 프레임을 캡처하게 할 수 있다. 일부 예들에서, VPU(1000)는 카메라, 가속도계, 토템, 위치 센서, 제스처 센서 등을 포함(그러나 이에 제한되지 않음)하는 임의의 연결된 센서의 프레임 레이트 또는 데이터 캡처 레이트를 감소 또는 증가시킬 수 있다.
[0114] 일부 예들에서, 하나 이상의 인터페이스들(1020)은 하나 이상의 유선 프로토콜들 및/또는 하나 이상의 무선 프로토콜들로 동작할 수 있다. 예컨대, 하나 이상의 인터페이스들(1020)은 USB(universal serial bus)(예컨대, USB 2.0, USB 3.0, USB OTG 등), JTAG(joint test action group), 이더넷, UART(universal asynchronous receiver transmitter), SDIO(SD mode) 등을 통해 하나 이상의 외부 소스들에 연결될 수 있다. 또한, 하나 이상의 인터페이스들(1020)은 LCD, CIF(common intermediate format), NAL 등과 같은(그러나 이에 제한되지 않음) 다양한 디스플레이 유형들의 데이터 교환을 가능하게 할 수 있다. VPU(1000)는 또한, 하나 이상의 외부 디바이스들(예컨대, CPU(600), GPU(800) 및/또는 센서)에 하나 이상의 인터페이스들을 제공하기 위해 MIPI(mobile industry processor interface)(1016)를 사용할 수 있다. MIPI(1016)는 하나 이상의 독립적인 통신 레인들(예컨대, 12개)을 포함할 수 있다. MIPI(1016)는 I/O 인터페이스(1024)로부터 하나 이상의 비전 하드웨어 가속기들(1012)로의 연결을 제공할 수 있다. 연결된 외부 디바이스들(이를테면, 센서들)은 I/O 인터페이스(1024)로부터 하나 이상의 비전 하드웨어 가속기들(1012)로 저 레이턴시 통과를 가질 수 있다. I/O 인터페이스(1024)는 하나 이상의 외부 디바이스들(예컨대, CPU(600), GPU(800) 및/또는 센서) 및 VPU(1000)로 또는 이로부터의 데이터를 전달할 수 있다.
[0115] 일부 예들에서, VPU(1000)는 시각적 입력을 프로세싱하기 위해 특수화된 CPU일 수 있다. 게다가, VPU(1000)는 도 10의 예시적인 하드웨어 엘리먼트들에 따라 도시되지만, VPU(1000)는 GPU(이를테면, 도 8 및 도 9와 관련하여 도시되고 설명된 GPU(800))와 유사하거나 동일한 하드웨어 엘리먼트들을 포함할 수 있다. 일부 예들에서, VPU(1000)에 의해 수행되는 하나 이상의 동작들은 GPU(800)에 의해 수행될 수 있다.
[0116] 설명된 특징들은 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로 또는 이들의 조합들로 구현될 수 있다. 이 장치는 프로그래밍 가능 프로세서에 의한 실행을 위해 정보 캐리어, 예컨대 머신-판독 가능 저장 디바이스에 유형으로(tangibly) 구체화되는 컴퓨터 프로그램 제품으로 구현될 수 있고, 방법 단계들은 입력 데이터를 동작시키고 출력을 생성함으로써 설명된 구현들의 기능들을 수행하도록 명령들의 프로그램을 실행하는 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 설명된 특징들은 유리하게는, 데이터 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그들로 데이터 및 명령들을 송신하도록 커플링된 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램들로 구현될 수 있다. 컴퓨터 프로그램은 소정의 활동을 수행하거나 소정의 결과를 가져오기 위해 컴퓨터에서 직접적으로 또는 간접적으로 사용될 수 있는 명령들의 세트이다. 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어들을 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 그것은 자립형 프로그램 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함한 임의의 형태로 배포될 수 있다.
[0117] 명령들의 프로그램의 실행을 위해 적합한 프로세서는 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 모두 및 임의의 종류의 컴퓨터의 단독 프로세서 또는 다수의 프로세서들 중 하나를 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및/또는 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 실행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리들이다. 일반적으로, 컴퓨터는 또한 데이터 파일들을 저장하기 위해 하나 이상의 대용량 저장 디바이스들을 포함하거나 이와 통신하도록 동작 가능하게 커플링될 것이고; 이러한 디바이스들은 자기 디스크들, 예컨대, 내부 하드 디스크들 및 제거 가능 디스크들, 광-자기 디스크들 및 광 디스크들을 포함한다. 컴퓨터 프로그램 명령들 및 데이터를 유형으로 구체화하기에 적합한 저장 디바이스들은 예로서 반도체 메모리 디바이스들, 이를테면 EPROM, EEPROM 및 플래시 메모리 디바이스들; 자기 디스크들, 이를테면 내부 하드 디스크들 및 제거 가능 디스크들; 광-자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비-휘발성 메모리를 포함한다. 프로세서 및 메모리는 ASIC(application-specific integrated circuit)들에 의해 보완되거나 이에 통합될 수 있다.
[0118] 사용자와의 상호작용을 제공하기 위해, 특징들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스 이를테면, 음극선관(cathode ray tube), LCD(liquid crystal display), LED(light emitting diode) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스 이를테면, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다.
[0119] 특징들은, 백-엔드 컴포넌트 이를테면, 데이터 서버를 포함하거나, 또는 미들웨어 컴포넌트 이를테면, 애플리케이션 서버 또는 인터넷 서버를 포함하거나, 또는 프론트-엔드 컴포넌트 이를테면, 그래픽 사용자 인터페이스 또는 인터넷 브라우저를 갖는 클라이언트 컴퓨터, 또는 이들의 임의의 조합을 포함하는 컴퓨터 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신 이를테면, 통신 네트워크에 의해 연결될 수 있다. 통신 네트워크들의 예들은 LAN, WAN 및 인터넷을 형성하는 컴퓨터들 및 네트워크들을 포함한다.
[0120] 컴퓨터 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 통상적으로 설명된 것과 같은 네트워크를 통해 상호작용한다. 클라이언트 및 서버의 관계는, 각각의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다. 소수의 구현들이 위에서 상세히 설명되었지만, 다른 수정들이 가능하다.
[0121] 부가적으로, 도면들에 도시된 로직 흐름들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 요구하지는 않는다. 부가적으로, 설명된 흐름들로부터, 다른 단계들이 제공될 수도 있거나, 단계들이 제거될 수 있으며, 다른 컴포넌트들이 설명된 시스템에 부가되거나 그 시스템으로부터 제거될 수 있다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.
[0122] 컴포넌트들이 소정의 동작들 수행하도록 구성되는 것으로 설명되는 경우, 그러한 구성은 예컨대, 동작을 수행하도록 전자 회로들 또는 다른 하드웨어를 설계함으로써, 동작을 수행하도록 프로그래밍 가능한 전자 회로들(예컨대, 마이크로프로세서 또는 다른 적합한 전자 회로들)을 프로그래밍함으로써, 또는 이들의 임의의 조합에 의해 달성될 수 있다.
[0123] 본 개시내용의 다수의 실시예들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 범위로부터 벗어남이 없이 다양한 수정이 이루어질 수 있다는 것이 이해될 것이다.

Claims (23)

  1. 혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법으로서,
    물리적 환경과 연관된 센서 데이터를 획득하는 단계 ― 상기 센서 데이터는 하나 이상의 센서들을 사용하여 획득됨 ― ;
    상기 혼합 현실 디바이스의 VPU(visual processing unit)에 의해, 상기 센서 데이터를 사용하여 상기 혼합 현실 디바이스의 포즈(pose)를 결정하는 단계;
    상기 혼합 현실 디바이스의 상기 포즈를 상기 VPU로부터 적어도 하나의 GPU(graphics processing unit)로 전송하는 단계;
    상기 적어도 하나의 GPU에 의해, 상기 혼합 현실 디바이스의 상기 포즈에 대응하는 혼합 현실 콘텐츠를 식별하는 단계;
    상기 식별된 혼합 현실 콘텐츠가 동적 콘텐츠라고 결정하는 단계;
    메시지를 상기 적어도 하나의 GPU로부터 저전력 모드로 동작하는 CPU(central processing unit)로 전송하는 단계 ― 상기 메시지는 상기 CPU로 하여금 상기 저전력 모드로부터 고전력 모드로 전환하도록 함 ― ;
    상기 포즈를 상기 VPU로부터 상기 CPU로 전송하는 단계;
    상기 적어도 하나의 GPU에서, 상기 CPU로부터의 상기 동적 콘텐츠를 수신하는 단계;
    상기 적어도 하나의 GPU에 의해, 상기 동적 콘텐츠를 상기 물리적 환경에 정렬하는 단계;
    상기 정렬된 동적 콘텐츠를 상기 적어도 하나의 GPU로부터 상기 혼합 현실 디바이스로 전송하는 단계; 및
    상기 혼합 현실 디바이스의 디스플레이를 사용하여 상기 정렬된 동적 콘텐츠를 제시하는 단계
    를 포함하는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  2. 제1 항에 있어서,
    상기 혼합 현실 디바이스의 상기 포즈는 상기 혼합 현실 디바이스의 위치(position) 및 배향을 포함하는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  3. 제1 항에 있어서,
    상기 적어도 하나의 GPU는 상기 혼합 현실 디바이스로부터 원격인,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  4. 제1 항에 있어서,
    상기 혼합 현실 콘텐츠는, 상기 혼합 현실 콘텐츠를 식별하기 전에 상기 적어도 하나의 GPU의 캐시에 저장되는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  5. 제3 항에 있어서,
    상기 적어도 하나의 GPU 및 상기 CPU는 배터리 팩과 함께 로케이팅되는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  6. 제1 항에 있어서,
    상기 CPU의 캐시는 상기 동적 콘텐츠의 렌더링에 활용되는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  7. 제1 항에 있어서,
    상기 적어도 하나의 GPU 및 상기 CPU는 상기 혼합 현실 디바이스와 함께 위치하는,
    혼합 현실 디바이스를 이용하여 혼합 현실 콘텐츠를 제시하기 위한 방법.
  8. 삭제
  9. 시스템으로서,
    디바이스를 포함하고,
    상기 디바이스는,
    하나 이상의 센서들 ― 상기 하나 이상의 센서들 중의 센서는 센서 데이터를 캡처하도록 구성됨 ― ;
    상기 디바이스와 연관된 포즈를 결정하도록 구성된 VPU(vision processing unit) ― 상기 포즈는 상기 센서 데이터를 사용하여 결정되고, 상기 VPU는 상기 포즈를 적어도 하나의 GPU(graphic processing unit) 및 CPU(central processing unit)로 전송하도록 추가로 구성됨 ― ; 및
    디스플레이
    를 포함하며,
    상기 적어도 하나의 GPU는,
    상기 VPU로부터 상기 포즈를 수신하고;
    상기 디스플레이에 의해 제시될 혼합 현실 콘텐츠를 식별하고 ― 상기 혼합 현실 콘텐츠는 상기 포즈에 기초하여 식별됨 ― ;
    상기 식별된 혼합 현실 콘텐츠가 동적 콘텐츠라고 결정하고;
    메시지를 상기 적어도 하나의 GPU로부터 저전력 모드에서 동작하는 상기 CPU로 전송하고 ― 상기 CPU는 상기 VPU로부터 상기 포즈를 수신하고, 상기 메시지는 상기 CPU로 하여금 상기 저전력 모드로부터 고전력 모드로 전환하도록 함 ― ;
    상기 CPU로부터 상기 동적 콘텐츠를 수신하고;
    상기 동적 콘텐츠를 물리적 환경에 정렬하고; 그리고
    상기 디스플레이에 의해 제시되도록 상기 정렬된 동적 콘텐츠를 상기 디바이스에 송신하도록 구성되는,
    시스템.
  10. 제9 항에 있어서,
    상기 포즈는 상기 디바이스의 구성 공간에 있고, 상기 포즈는 상기 디바이스의 위치 및 배향을 정의하는,
    시스템.
  11. 제9 항에 있어서,
    상기 하나 이상의 센서들 중의 센서는 카메라, 가속도계, 자이로스코프, 토템(totem) 및 글로벌 포지셔닝 시스템 중 하나인,
    시스템.
  12. 제9 항에 있어서,
    상기 적어도 하나의 GPU는 상기 디바이스로부터 원격인,
    시스템.
  13. 제12 항에 있어서,
    배터리 팩을 더 포함하며,
    상기 적어도 하나의 GPU 및 상기 CPU는 상기 배터리 팩과 함께 로케이팅되는,
    시스템.
  14. 제9 항에 있어서,
    상기 CPU의 캐시는 상기 동적 콘텐츠의 렌더링에 활용되는,
    시스템.
  15. 제9 항에 있어서,
    상기 적어도 하나의 GPU 및 상기 CPU는 상기 디바이스와 함께 로케이팅되는,
    시스템.
  16. 삭제
  17. 명령들을 포함하는 비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램으로서,
    상기 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    물리적 환경과 연관된 센서 데이터를 획득하고 ― 상기 센서 데이터는 하나 이상의 센서들을 사용하여 획득됨 ― ;
    VPU(vision processing unit)에 의해, 상기 센서 데이터를 사용하여 디바이스의 포즈(pose)를 결정하고;
    상기 디바이스의 상기 포즈를 상기 VPU로부터 적어도 하나의 GPU(graphics processing unit)로 전송하고;
    상기 적어도 하나의 GPU에 의해, 상기 포즈에 대응하는 혼합 현실 콘텐츠를 식별하고;
    상기 식별된 혼합 현실 콘텐츠가 동적 콘텐츠라고 결정하고;
    메시지를 상기 적어도 하나의 GPU로부터 저전력 모드에서 동작하는 CPU(central processing unit)으로 전송하고 ― 상기 메시지는 상기 CPU로 하여금 상기 저전력 모드로부터 고전력 모드로 전환하도록 함 ― ;
    상기 포즈를 상기 VPU로부터 상기 CPU로 전송하고;
    상기 적어도 하나의 GPU에서, 상기 CPU로부터의 상기 동적 콘텐츠를 수신하고;
    상기 적어도 하나의 GPU에 의해, 상기 동적 콘텐츠를 상기 물리적 환경에 정렬하고;
    상기 정렬된 동적 콘텐츠를 상기 적어도 하나의 GPU로부터 상기 디바이스로 전송하고; 그리고
    디스플레이를 사용하여 상기 정렬된 동적 콘텐츠를 제시하게 하는,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  18. 제17 항에 있어서,
    상기 포즈는 상기 디바이스의 구성 공간에 있고, 상기 포즈는 상기 디바이스의 포지션 및 배향을 정의하는,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  19. 제17 항에 있어서,
    상기 하나 이상의 센서들 중의 센서는 카메라, 가속도계, 자이로스코프, 토템 및 글로벌 포지셔닝 시스템 중 하나인,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  20. 제17 항에 있어서,
    상기 적어도 하나의 GPU는 상기 디바이스로부터 원격인,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  21. 제20 항에 있어서,
    상기 적어도 하나의 GPU 및 상기 CPU는 배터리 팩과 함께 로케이팅되는,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  22. 제17 항에 있어서,
    상기 CPU의 캐시는 상기 동적 콘텐츠의 렌더링에 활용되는,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
  23. 제17 항에 있어서,
    상기 적어도 하나의 GPU 및 상기 CPU는 상기 디바이스와 함께 로케이팅되는,
    비-일시적인 머신-판독 가능 저장 매체 상에 저장된 컴퓨터 프로그램.
KR1020197017219A 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템 KR102517795B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237010837A KR102631245B1 (ko) 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662423154P 2016-11-16 2016-11-16
US62/423,154 2016-11-16
PCT/US2017/061835 WO2018093923A1 (en) 2016-11-16 2017-11-15 Mixed reality system with reduced power rendering

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237010837A Division KR102631245B1 (ko) 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템

Publications (2)

Publication Number Publication Date
KR20190085051A KR20190085051A (ko) 2019-07-17
KR102517795B1 true KR102517795B1 (ko) 2023-04-03

Family

ID=62108510

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197017219A KR102517795B1 (ko) 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템
KR1020237010837A KR102631245B1 (ko) 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237010837A KR102631245B1 (ko) 2016-11-16 2017-11-15 감소된 전력 렌더링을 갖는 혼합 현실 시스템

Country Status (9)

Country Link
US (2) US10782796B2 (ko)
EP (1) EP3542358B1 (ko)
JP (2) JP7037560B2 (ko)
KR (2) KR102517795B1 (ko)
CN (2) CN116109467A (ko)
AU (1) AU2017361245B2 (ko)
CA (1) CA3042553C (ko)
IL (2) IL266497B2 (ko)
WO (1) WO2018093923A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3542358B1 (en) 2016-11-16 2024-06-26 Magic Leap, Inc. Mixed reality system with reduced power rendering
EP3552387A4 (en) * 2016-12-06 2020-04-22 Gurule, Donn M. SYSTEMS AND METHODS FOR A CHRONOLOGICAL-BASED SEARCH ENGINE
CN110798497A (zh) * 2018-08-03 2020-02-14 中国移动通信集团有限公司 混合现实交互系统和方法
CN109741463B (zh) * 2019-01-02 2022-07-19 京东方科技集团股份有限公司 虚拟现实场景的渲染方法、装置及设备
US11334174B2 (en) * 2019-07-18 2022-05-17 Eyal Shlomot Universal pointing and interacting device
US11232834B2 (en) * 2019-10-29 2022-01-25 Qualcomm Incorporated Pose estimation in extended reality systems
US20220413592A1 (en) * 2019-12-17 2022-12-29 Google Llc Low-power vision sensing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050068293A1 (en) 2003-09-30 2005-03-31 Canon Kabushiki Kaisha Data conversion method and apparatus, and orientation measurement apparatus
US20100026714A1 (en) 2008-07-31 2010-02-04 Canon Kabushiki Kaisha Mixed reality presentation system
JP2014522007A (ja) 2011-04-20 2014-08-28 クアルコム,インコーポレイテッド 拡張現実のためのオンライン基準パッチ生成および姿勢推定
US20150248787A1 (en) * 2013-07-12 2015-09-03 Magic Leap, Inc. Method and system for retrieving data in response to user input
WO2016018487A2 (en) 2014-05-09 2016-02-04 Eyefluene, Inc. Systems and methods for biomechanically-based eye signals for interacting with real and virtual objects
KR101626375B1 (ko) 2015-06-30 2016-06-01 한양대학교 산학협력단 증강현실 물체를 감지하는 장갑형 촉각전달 장치 및 그 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4532856B2 (ja) * 2003-07-08 2010-08-25 キヤノン株式会社 位置姿勢計測方法及び装置
US20100258000A1 (en) * 2005-05-05 2010-10-14 Matthew Charles Hagerty Wireless, waterproof remote video weapon mounted sighting system, SmartSight
US7779191B2 (en) * 2008-07-29 2010-08-17 Nvidia Corporation Platform-based idle-time processing
US10096161B2 (en) * 2010-06-15 2018-10-09 Live Nation Entertainment, Inc. Generating augmented reality images using sensor and location data
US8576276B2 (en) * 2010-11-18 2013-11-05 Microsoft Corporation Head-mounted display device which provides surround video
US20120177119A1 (en) * 2011-01-07 2012-07-12 Sony Corporation Faster motion estimation in an avc software encoder using general purpose graphic process units (gpgpu)
US8805017B2 (en) * 2012-12-13 2014-08-12 Intel Corporation Gesture pre-processing of video stream to reduce platform power
US8761448B1 (en) * 2012-12-13 2014-06-24 Intel Corporation Gesture pre-processing of video stream using a markered region
JP5981023B2 (ja) * 2013-01-06 2016-08-31 インテル コーポレイション タッチ・データの分散前処理及びディスプレイ領域制御のための方法、装置、及びシステム
US9201487B2 (en) * 2013-03-05 2015-12-01 Intel Corporation Reducing power consumption during graphics rendering
US9052740B2 (en) * 2013-03-12 2015-06-09 Qualcomm Incorporated Adaptive data path for computer-vision applications
US9898866B2 (en) * 2013-03-13 2018-02-20 The University Of North Carolina At Chapel Hill Low latency stabilization for head-worn displays
US10139623B2 (en) 2013-06-18 2018-11-27 Microsoft Technology Licensing, Llc Virtual object orientation and visualization
US9514571B2 (en) * 2013-07-25 2016-12-06 Microsoft Technology Licensing, Llc Late stage reprojection
US10332229B2 (en) * 2014-05-12 2019-06-25 Palo Alto Research Center Incorporated System and method for high performance k-means clustering on GPU with smart kernels
US9741169B1 (en) * 2014-05-20 2017-08-22 Leap Motion, Inc. Wearable augmented reality devices with object detection and tracking
US10149958B1 (en) * 2015-07-17 2018-12-11 Bao Tran Systems and methods for computer assisted operation
US9928655B1 (en) * 2015-08-31 2018-03-27 Amazon Technologies, Inc. Predictive rendering of augmented reality content to overlay physical structures
US9298283B1 (en) * 2015-09-10 2016-03-29 Connectivity Labs Inc. Sedentary virtual reality method and systems
EP3542358B1 (en) 2016-11-16 2024-06-26 Magic Leap, Inc. Mixed reality system with reduced power rendering

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050068293A1 (en) 2003-09-30 2005-03-31 Canon Kabushiki Kaisha Data conversion method and apparatus, and orientation measurement apparatus
US20100026714A1 (en) 2008-07-31 2010-02-04 Canon Kabushiki Kaisha Mixed reality presentation system
JP2014522007A (ja) 2011-04-20 2014-08-28 クアルコム,インコーポレイテッド 拡張現実のためのオンライン基準パッチ生成および姿勢推定
US20150248787A1 (en) * 2013-07-12 2015-09-03 Magic Leap, Inc. Method and system for retrieving data in response to user input
WO2016018487A2 (en) 2014-05-09 2016-02-04 Eyefluene, Inc. Systems and methods for biomechanically-based eye signals for interacting with real and virtual objects
KR101626375B1 (ko) 2015-06-30 2016-06-01 한양대학교 산학협력단 증강현실 물체를 감지하는 장갑형 촉각전달 장치 및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Kevin Boos ET AL."FlashBack: Immersive Virtual Reality on Mobile Devices via Rendering Memoization".MobiSys’16.,2016.06.25.,(제291면 내지 제303면)*

Also Published As

Publication number Publication date
EP3542358A4 (en) 2019-11-20
US10782796B2 (en) 2020-09-22
EP3542358B1 (en) 2024-06-26
NZ794498A (en) 2023-12-22
KR20190085051A (ko) 2019-07-17
US20210034172A1 (en) 2021-02-04
EP3542358A1 (en) 2019-09-25
CN110100274A (zh) 2019-08-06
KR102631245B1 (ko) 2024-01-29
IL266497B1 (en) 2023-06-01
IL302483B1 (en) 2024-02-01
KR20230049756A (ko) 2023-04-13
US11567587B2 (en) 2023-01-31
IL302483B2 (en) 2024-06-01
NZ752758A (en) 2023-12-22
IL302483A (en) 2023-06-01
JP7037560B2 (ja) 2022-03-16
WO2018093923A1 (en) 2018-05-24
CN110100274B (zh) 2023-02-17
IL266497A (en) 2019-07-31
JP2022082560A (ja) 2022-06-02
CA3042553C (en) 2024-01-02
CA3042553A1 (en) 2018-05-24
CN116109467A (zh) 2023-05-12
JP7350115B2 (ja) 2023-09-25
IL266497B2 (en) 2023-10-01
US20180136745A1 (en) 2018-05-17
AU2017361245B2 (en) 2023-06-22
AU2017361245A1 (en) 2019-05-23
JP2019537143A (ja) 2019-12-19

Similar Documents

Publication Publication Date Title
KR102517795B1 (ko) 감소된 전력 렌더링을 갖는 혼합 현실 시스템
US20220284539A1 (en) Method and apparatus for efficient loop processing in a graphics hardware front end
US10692170B2 (en) Software scoreboard information and synchronization
US10192281B2 (en) Graphics command parsing mechanism
US11446571B2 (en) Cloud gaming adaptive synchronization mechanism
US11010302B2 (en) General purpose input/output data capture and neural cache system for autonomous machines
CN108701053B (zh) 促进针对计算环境中的任务执行的执行感知混合抢占
US11037269B1 (en) High-speed resume for GPU applications
US10410311B2 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US11762662B2 (en) Instruction prefetch based on thread dispatch commands
WO2017099882A1 (en) Accelerated touch processing at computing devices
CN113577758A (zh) 云游戏自适应同步机制

Legal Events

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