CN110100274A - 具有降低功率渲染的混合现实系统 - Google Patents
具有降低功率渲染的混合现实系统 Download PDFInfo
- Publication number
- CN110100274A CN110100274A CN201780070885.4A CN201780070885A CN110100274A CN 110100274 A CN110100274 A CN 110100274A CN 201780070885 A CN201780070885 A CN 201780070885A CN 110100274 A CN110100274 A CN 110100274A
- Authority
- CN
- China
- Prior art keywords
- content
- gpu
- posture
- equipment
- cpu
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title description 27
- 238000000034 method Methods 0.000 claims description 64
- 230000000007 visual effect Effects 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 9
- 230000008901 benefit Effects 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 4
- 230000015654 memory Effects 0.000 description 64
- 230000008569 process Effects 0.000 description 44
- 230000006870 function Effects 0.000 description 28
- 230000008447 perception Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 230000002452 interceptive effect Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000000151 deposition Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000010025 steaming Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing 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
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0179—Display position adjusting means not related to the information to be displayed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G06T5/77—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0179—Display position adjusting means not related to the information to be displayed
- G02B2027/0187—Display 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开的实施例提供了一种实现具有较少功率的混合现实系统。在一些示例中,混合现实系统的被动状态可以具有不需要由CPU处理的GPU渲染可预测的内容。在这样的示例中,可以由GPU识别和渲染可预测内容而CPU处于低功率模式。因此,本公开的实施例提供了传统技术不可获得的益处,因为CPU可能比相应的GPU消耗更多的功率。在一些示例中,被动状态可以在不使用CPU的情况下识别和渲染可预测内容的事实。在这样的示例中,被动状态可以渲染不需要由CPU处理的可预测内容。
Description
相关申请的交叉引用
本申请要求于2016年11月16日提交的题为“Mixed-Reality System withReduced Power Rendering(具有降低功率渲染的混合现实系统)”的美国临时专利申请No.62/423,154的优先权权益,其公开内容出于所有目的通过引用全部并入在此。
背景技术
混合现实能够将实时数字信息与用户的物理环境的视场结合。数字信息可以锚定到物理环境,以给人以数字信息在物理环境中的印象。为了实现混合现实,可以分析物理环境并生成数字信息。然而,为了创建真实的组合,必须经常执行分析和生成,这必然会消耗大量的功率。因此,本领域需要用于在实现混合现实时降低功耗的改进方法和系统。
发明内容
提供了用于实现混合现实的方法、系统和计算机程序。在一些示例中,图形处理单元(GPU)可以至少部分地避免使用中央处理单元(CPU)。在这样的示例中,被动状态可以渲染不需要由CPU处理的可预测内容。在这样的示例中,可以由GPU渲染可预测内容而CPU处于低功率模式。
在一些示例中,被动状态表示将尽可能多的成像确定和渲染计算推送到GPU(而不是CPU)的意图。GPU可以比CPU消耗更少的功率,因为GPU需要更少的数据输入以提供足够的输出。例如,虽然CPU需要当前状态的完整信息,但GPU可能仅需要确定如何渲染内容(例如,定时、视场限制、深度平面、内容类型等)。并且因为GPU需要更少的数据输入,所以可以使用不同类别的传感器和架构。例如,由于所涉及的计算周期,具有较大存储体和组件集成的CPU限于与CPU要求相对应的传感器和架构类别(组件种类)。或者换句话说,可以更快地执行并且使用更少功率的一类传感器和架构可能对CPU作用很小,而GPU可能能够使用这种类别的传感器和架构并提供足够的输出。因此,GPU的能力可以是不同的种类,因为GPU可以启用不同种类的传感器和架构,而不仅仅是更好的CPU版本。
本公开的实施例提供了用于实现具有降低功耗的混合现实。在一些示例中,GPU可以避免CPU的一些使用。在这样的示例中,可以在空闲状态和主动(active)状态之间提供被动(passive)功率状态。在一些示例中,被动状态可以使GPU渲染不需要由CPU处理的可预测内容。在这样的示例中,可以由GPU识别并渲染可预测内容,而CPU处于低功率模式。因此,本公开的实施例提供了传统技术不可获得的益处,因为CPU可能比相应的GPU消耗更多的功率。在一些示例中,被动状态可以利用在不使用CPU的情况下识别和渲染可预测内容的事实。在这样的示例中,被动状态可以渲染不需要由CPU处理的可预测内容。
例如,可以提供使用混合现实设备呈现混合现实内容的方法。该方法可以包括获得与物理环境相关联的传感器数据。在一些示例中,可以使用一个或多个传感器获得传感器数据。该方法还包括由视觉处理单元(VPU)使用传感器数据确定混合现实设备的姿势并将混合现实设备的姿势发送到图形处理单元(GPU)。在一些示例中,混合现实设备的姿势包括混合现实设备的位置和方位。在一些示例中,GPU可以远离混合现实设备。在一些示例中,该方法还包括将混合现实设备的姿势发送到中央处理单元(CPU)。在一些示例中,CPU可以在整个方法中以低功率模式操作。该方法还包括由GPU识别与姿势对应的内容。在一些示例中,可以在识别内容之前将内容存储在GPU的高速缓存中。该方法进一步包括由GPU将内容与物理环境对准,将对准的内容发送到混合现实设备,并且使用混合现实设备的显示器来呈现对准的内容。在一些示例中,该方法可以进一步包括:确定所识别的内容是可预测内容,并且响应于确定所识别的内容是可预测的,从GPU的高速缓存中获得所识别的内容。在其他示例中,该方法还可以包括:确定所识别的内容是动态内容,并且响应于确定所识别的内容是动态的,向CPU发送消息。在这样的示例中,该消息可以使CPU从低功率模式转换到高功率模式。
对于另一示例,可以提供使用混合现实设备呈现混合现实内容的系统。该系统可以包括混合现实设备和图形处理单元(GPU),GPU包括在混合现实设备中或与混合现实设备分离。在一些示例中,混合现实设备可以包括一个或多个传感器、视觉处理单元(VPU)和显示器。在这样的示例中,一个或多个传感器中的传感器可以被配置为捕获传感器数据。VPU可以被配置为确定与混合现实设备相关联的姿势。并且可以使用传感器数据来确定姿势。GPU可以被配置为识别要由混合现实设备的显示器呈现的内容,将内容与物理环境对准,并且将对准的内容发送到混合现实设备以由显示器呈现。
通过本公开相对于传统技术实现了许多益处。例如,本公开的实施例通过允许高功率CPU在低功率模式下持续一段时间来提供功率节省,同时通过GPU保持感知和图形渲染的一致性能。功率节省可以应用于许多应用(例如,生产力软件、网络浏览、多媒体交互),其中当视觉更新不是由用户的身体运动触发时可以最小化功率使用。通过这种功率节省,能够实现常开(always-on)混合现实,能够保持一致的视觉环境,这对于用户将数字信息感知为物理环境的一部分至关重要。结合下文和相应附图能够更详细地描述本公开的这些和其他实施例以及它们的优点和特征。
附图说明
下面参考以下附图详细描述说明性实施例。
图1示出了根据一个实施例的用于实现被动功率状态的混合现实系统的示例。
图2示出了根据一个实施例的由视觉处理单元(VPU)执行的用于呈现混合现实的过程的示例。
图3示出了根据一个实施例的由中央处理单元(CPU)执行的用于呈现混合现实的过程的示例。
图4示出了根据一个实施例的使用混合现实设备用于呈现动态内容的过程的示例。
图5示出了根据一个实施例的使用混合现实设备用于呈现可预测内容的过程的示例。
图6示出了根据一个实施例的中央处理单元(CPU)的框图的示例。
图7示出了根据一个实施例的中央处理单元(CPU)的内部组件的框图的示例。
图8示出了根据一个实施例的图形处理单元(GPU)的框图的示例。
图9示出了根据一个实施例的单流多处理器的框图的示例。
图10示出了根据一个实施例的视觉处理单元(VPU)的框图的示例。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以便提供对本公开实施例的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不是限制性的。
随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。而是,示例性实施例的随后描述将为本领域技术人员提供用于实现示例性实施例的使能描述。还应该理解的是,在不脱离所附权利要求中阐述的本公开的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
传统上,混合现实设备(例如,可穿戴混合现实眼镜)通过使用两种状态来处理功耗:空闲和主动。在空闲状态下,不渲染内容。在主动状态下,中央处理单元(CPU)确定/识别内容,并且图形处理单元(GPU)渲染所确定/识别的内容。但是,这两个状态系统在主动状态下会消耗大量功率。
本公开的实施例提供了以较少功率实现混合现实的示例。在一些示例中,GPU可以避免CPU的一些使用。在这样的示例中,可以在空闲状态和主动状态之间提供被动功率状态。在被动状态下,GPU确定/识别/预测内容并渲染可预测内容,并且CPU不确定/识别/预测内容。在这样的示例中,可以由GPU识别和渲染可预测内容,而CPU处于空闲或半空闲状态(也称为低功率模式)。因此,本公开的实施例提供了传统技术不可获得的益处,其中传统技术的CPU可能比相应的GPU消耗更多的功率。在一些示例中,被动状态可以利用在不使用CPU的情况下由GPU识别和渲染可预测内容的事实。在这样的示例中,在被动状态下,GPU可以渲染不需要由CPU处理的可预测内容。
图1示出了根据本发明的一个实施例的用于实现被动功率状态的混合现实系统的示例。混合现实系统可以提供持久的混合现实环境,其包括覆盖在物理环境上的虚拟内容。例如,虚拟内容可以随着时间的推移出现在物理环境中。
混合现实系统包括混合现实设备110。混合现实设备110可以向用户呈现虚拟内容。混合现实设备110还允许用户看到用户前面的至少一部分物理环境而向用户呈现虚拟内容。在一些示例中,可以使用一个或多个显示器(例如,显示器112)将虚拟内容呈现给用户。在一些示例中,混合现实系统可以包括一个或多个混合现实设备。
在一些示例中,混合现实设备110可以包括用于生成传感器数据的一个或多个传感器。传感器数据可以用于识别混合现实设备110的姿势(例如,位置或方位)。作为示例,传感器数据可以由相机收集,相机能够提供物理环境的一个或多个图像。物理环境可以包括用户视野内的区域。在一些实施中,物理环境还可以包括用户视野之外的区域。在这样的实施中,可以使用一个或多个相机对用户视野之外的区域进行成像。尽管图1示出的传感器位于特定位置,但是传感器可处于不同位置。此外,可以有更多或更少的传感器。
在一些示例中,一个或多个传感器可以是常开传感器114或视觉传感器116。常开传感器114可以是能够检测物理环境的一个或多个属性的低功率传感器。例如,常开传感器114可以是温度传感器、压力传感器、流量传感器、位(level)传感器、接近传感器、位移传感器、生物传感器、气体传感器、化学传感器、加速度传感器、水分传感器、湿度传感器、速度传感器、质量传感器、倾斜传感器、力传感器、粘度传感器或其任何组合。
在一些示例中,常开传感器114可以被设置以一个或多个数据生成速率模式(有时称为功率模式)操作,该模式指定由常开传感器114生成数据的速率。例如,常开传感器114可以被设置为以低速率模式操作,该低速率模式使得数据生成速率低于常开传感器114被设置为以高速率模式操作时的数据生成速率。在一些示例中,可以将不同的常开传感器114设置为以不同的速率操作以生成数据。例如,可以将第一常开传感器设置为以第一速率操作,并且可以将第二常开传感器设置为以第二速率操作。在这样的示例中,第一速率和/或第二速率可以是可变速率(例如,随时间变化)。
视觉传感器116(例如,相机)可以捕获物理环境的图像。视觉传感器116还可以被设置为以一个或多个模式操作,该模式指定视觉传感器116捕获图像的速率。例如,视觉传感器116可以被设置为以低速率模式操作,该低速率模式使得图像捕获速率低于视觉传感器116被设置为以高速率模式操作时的图像捕获速率。
在一些示例中,混合现实设备110可以包括一个或多个组合传感器(例如,组合传感器118),其可以包括常开传感器114和视觉传感器116的功能。在这样的示例中,组合传感器118可以设置为以一个或多个模式操作。例如,组合传感器118的第一模式可以对应于常开传感器114的功能。组合传感器118的第二模式可以对应于视觉传感器116的功能。在一些示例中,不同模式可以提供获得数据的不同速率。在一个示例中,视觉传感器功能可以以第一模式使用每秒50帧的帧速率并且以第二模式使用每秒5帧的帧速率。在另一个示例中,视觉传感器功能可以以第二模式使用每秒5帧的帧速率操作,而常开传感器功能可以使用每秒10个感测的速率操作。
混合现实系统还可以包括一个或多个处理器(例如,视觉处理单元(VPU)120、CPU13、和/或GPU 140)。还应注意,虽然描述了单个VPU 120、CPU 130和GPU 140,但是可以使用一个或多个VPU 120、一个或多个CPU 130、和/或一个或多个GPU 140。VPU 120可以包括在混合现实设备110中或者远离混合现实设备110。在一些示例中,VPU 120可以被设置为以一个或多个功率模式(例如,低和高)操作。在一些示例中,以任何功率模式操作的VPU 120可以比CPU 130消耗更少的功率。
在一些示例中,CPU 130可以包括在混合现实设备110中或者远离混合现实设备110。当CPU 130远离混合现实设备110时,CPU 130可以位于例如用于混合现实设备110的电池组中。在一些示例中,CPU 130可以比VPU 120和/或GPU 140消耗更多的功率。
在一些示例中,GPU 140可以包括在混合现实设备110中或者远离混合现实设备110。当GPU 140远离混合现实设备110时,GPU 140可以位于例如用于混合现实设备110的电池组中。在一些示例中,GPU 140可以被设置为以一个或多个功率模式(例如,低和高)操作。在这样的示例中,以任何功率模式的GPU 140可以比CPU(例如,CPU 130)消耗更少的功率。
在一些示例中,VPU 120可以包括感知前端模块122。感知前端模块122可以从混合现实设备110的一个或多个传感器(例如,常开传感器114、视觉传感器116或组合传感器118)接收传感器数据。感知前端模块122可以使用传感器数据识别混合现实设备110的姿势。例如,可以使用来自常开传感器114、视觉传感器116、组合传感器118或其任何组合的数据来识别姿势。在一些示例中,姿势可以限定混合现实设备110的位置和/或方位(例如,横坐标、纵坐标、应用、俯仰、偏航、滚动或其任何组合)。
在一些示例中,感知前端模块122还可以识别物理环境的一个或多个特征(有时称为提取的信息)。例如,可以识别物理环境中的对象的角落或边缘。物理环境的一个或多个特征允许VPU 120将一个或多个特征发送到其他处理器而不是发送物理环境的图像。在一些示例中,一个或多个特征可以描述物理环境,而不必包括图像所包括的所有像素信息。在这样的示例中,一个或多个特征可以用于创建物理环境的表示以在组件之间传递。
在一些示例中,VPU 120还可以包括常开感知模块124。在这样的示例中,常开感知模块124可以从感知前端模块122接收姿势和/或一个或多个特征。在一些示例中,常开感知模块124可以将姿势发送到CPU 130和/或GPU 140。在一些示例中,常开感知模块124可以响应于从常开感知模块124接收到姿势而使CPU 130和/或GPU 140由低功率模式转换到高功率模式。在一些示例中,常开感知模块124还可以将一个或多个特征发送到CPU 130和/或GPU 140。
在一些示例中,感知前端模块122或常开感知模块124的一个或多个功能可以在VPU 120的不同组件上发生(例如,姿势可以由常开感知模块124确定)。在其他示例中,感知前端模块122或常开感知模块124的一个或多个功能可以在远离VPU 120的组件(例如,模块或设备)上发生。
如上所述,CPU 130可以例如从VPU 120接收混合现实设备110的姿势和/或物理环境的一个或多个特征。在一些示例中,CPU 130单独或与VPU 120组合,可以创建物理环境的表示。在这样的示例中,表示可以是物理环境的3D再现。
在一些示例中,CPU 130可以识别要放置到物理环境的表示中的虚拟内容。在这样的示例中,可以基于在CPU 130上执行的应用来识别虚拟内容。例如,可以在CPU 130上执行游戏,其控制使用混合现实设备110的用户的体验。在一些示例中,可以生成包括物理环境的表示和虚拟内容的世界视图。在这样的示例中,世界视图可以是插入到物理环境的表示中的虚拟内容,诸如定义内容应该位于物理环境中的何处。在一些示例中,虚拟内容可以是三维表示。
在一些示例中,CPU 130可以确定虚拟内容应该如何在特定时间查看。在这样的示例中,CPU 130可以将一个或多个时间指示与虚拟内容相关联,使得GPU 140可以确定何时渲染虚拟内容并将其发送到混合现实设备110的一个或多个显示器以呈现给用户。
在一些示例中,内容可以在一段时间内具有可预测运动(例如,时钟、云、湖的表面等)。在这样的示例中,CPU 130可以在一个或多个时间段识别并生成内容。一个或多个时间段可以与可预测内容相关联。在说明性示例中,可预测内容可以是安装在墙壁上的时钟。表示时钟的内容可以包括其中时钟可以被重新渲染的时间段(例如,每分钟一次),使得时钟在正确的时间出现给混合现实设备110的用户。在一些示例中,当数字信息表示静态对象(例如,表),数字信息不具有渲染内容的相关联的时间段。
在一些示例中,CPU 130可以将物理环境的表示、虚拟内容和/或世界视图发送到GPU 140。在这样的示例中,虚拟内容可以是像素信息的形式。
在一些示例中,GPU 140可以包括世界操作器(operator)142、感知视图模块144、内容高速缓存146、渲染模块148、世界交互模块152或其任何组合。在这样的示例中,内容高速缓存146可以接收和存储从CPU 130接收的数据(诸如,要由上述混合现实设备110和世界视图呈现的内容)或从VPU 120接收的数据(诸如,姿势)。物理环境的表示、要由混合现实设备110和/或世界视图呈现的内容可以在内容高速缓存146中单独访问和消费。
在一些示例中,世界操作器142可以从内容高速缓存146请求世界视图。在这样的示例中,内容高速缓存146可以响应于请求将存储在内容高速缓存146中的世界视图发送给世界操作器142。在其他示例中,内容高速缓存146可以周期性地将世界视图发送给世界操作器142,或者内容高速缓存146可以在(例如,通过CPU 130)更新世界视图时将世界视图发送给世界操作器142。在一些示例中,世界视图可以仅是与混合现实设备110相关联的物理环境的一部分。当世界视图是部分世界视图时,世界操作器142可以使用直接从VPU 120接收的信息和/或根据存储在内容高速缓存146中的其他信息来产生完整的世界视图。
在一些示例中,世界操作器模块142可以从常开感知模块124接收姿势和/或一个或多个特征。在一些示例中,世界操作器模块142可以基于姿势和/或一个或多个特征来更新存储在内容高速缓存146中的世界视图。
使用姿势和世界视图,世界操作器模块142可以识别要获得的内容。在一些示例中,世界操作器142还可以确定与混合现实设备110的姿势对应的虚拟内容的姿势。例如,当混合现实设备110在特定位置处面向特定方位时,世界操作器模块142可以确定虚拟内容的位置和/或方位。
在一些示例中,当世界操作器模块142识别内容时,世界操作器模块142还可以确定内容的类型(例如,内容是动态的还是可预测的)。
动态内容可以包括具有由逻辑可操作的GPU不容易捕获的运动的对象。在一些示例中,动态内容可以取决于用户的交互和/或混合现实设备110的特定姿势。在这样的示例中,CPU 130将需要分析交互和/或姿势以确定内容。在一些示例中,动态内容包括不可预测的内容。在这样的示例中,动态内容可以是具有可随时间改变的视觉外观的内容。另外,动态内容可以包括GPU 140利用现有高速缓存内容和来自常开感知模块124的输入可能无法有效渲染的内容,其可以被提供给世界操作器模块142。这种动态内容的示例可以是国际象棋游戏应用程序或消息聊天应用程序,其中更新的渲染取决于远程用户的输入。动态内容的另一示例可以是复杂的3D结构,其中GPU 140可能没有足够的存储来将信息缓存在内容高速缓存146中并且确定复杂3D结构的位置。
可预测内容可以包括随时间具有标准或可预测移动的对象。在一些示例中,可预测内容可以是具有空间和时间上的视觉外观的内容,其可以利用内容高速缓存146中的现有高速缓存内容和来自常开感知模块124的输入来确定,其可以作为输入提供给世界操作器模块142。例如,可预测内容可以具有取决于其自身物理和物理环境的物理而不是取决于外部事物(例如,用户的交互)的运动。在一些示例中,可预测内容可以使其运动被预编程,使得确定其运动的额外处理功率是不必要的。在这样的示例中,可预测内容的运动可以包括在内容高速缓存146中,使得不需要使用CPU 130。可预测内容还可以包括随时间不具有运动的静态内容。在一些示例中,静态内容仍然可以由混合现实设备的改变或更新的姿势和静态内容的姿势导致而根据调整在静态内容的方位来移动。
可预测内容的示例包括时钟、水流和火炬。为了说明可预测内容的示例,将描述时钟示例。虽然时钟不是静止的,但它的运动可以预测。实际上,与时钟相关联的像素信息可以保存在内容高速缓存146中。此外,识别时钟应该如何运动的逻辑也可以包括在内容高速缓存146中。在一些示例中,逻辑可以对应于每分钟时钟的钟针的运动。可预测内容的另一个例子是当没有外部湍流时湖的表面。可以基于简单的随机化来重建表面的波的特征。对于可预测内容,可预测内容可以存储在内容高速缓存146中,使得当向用户显示可预测内容时,CPU 130不需要生成与可预测内容相关联的像素信息。在这样的示例中,CPU 130不需要从低功率模式转换到高功率模式,从而节省功率。
在一些示例中,可以通过识别用于混合现实设备110的姿势内容是否位于内容高速缓存146中来确定内容的类型。在这样的示例中,世界操作器模块142还可以识别内容高速缓存146是否包括与混合现实设备110的姿势对应的姿势的内容。如果世界操作器模块142确定内容是动态内容,则世界操作器模块142可以向CPU 130发送消息,使CPU 130从低功率模式转换到高功率模式,从而生成动态内容的状态。在这样的示例中,消息可以包括世界视图。在一些示例中,消息中包括的世界视图可以向CPU130指示CPU 130需要生成哪些内容。限制CPU 130需要生成的内容可以缩短CPU 130处于高功率模式的时间量。
响应于接收到消息,CPU 130可以分析从常开感知模块124接收的姿势。在一些示例中,CPU 130还可以分析从世界操作器模块142接收的世界视图。通过分析姿势和/或世界视图,CPU 130可以确定要由混合现实设备110呈现的内容。在这样的示例中,CPU 130可以生成与内容相关联的像素信息并将其发送到GPU 140的内容高速缓存146。
在一些示例中,世界操作器模块142可以确定对于一段时间或在特定区域中不再需要确定世界视图。在这样的示例中,世界操作器模块142可以使用混合现实设备110向渲染模块148发送要显示的一帧或多帧像素信息。在一些示例中,世界操作器模块142还可以向渲染模块148发送何时显示一个或多帧的每帧的指示。在这样的示例中,GPU 140可以避免确定世界视图和/或重新定向内容。在一些示例中,指示可以对应于时间和特定姿势二者。在这样的示例中,当满足时间和特定姿势时,渲染模块148可以使混合现实设备110显示该帧。
在一些示例中,世界操作器模块142可以将世界视图发送到感知视图模块144。在这样的示例中,世界操作器模块142还可以将混合现实设备110的姿势发送到感知视图模块144。在一些示例中,感知视图模块144可以根据姿势从内容高速缓存146获得世界视图中指示的内容。
在一些示例中,感知视图模块144可以基于姿势修改内容,使得内容被正确地定向以由混合现实设备110呈现。在感知视图模块144已经修改内容以对应于姿势之后,可以将修改的内容发送到渲染模块148。渲染模块148可以渲染修改的内容,使得可以使用混合现实设备110显示修改的内容(例如,确保修改的内容粘到物理环境)。在一些示例中,渲染模块148可以将修改的内容与物理环境的表示对准,以确保修改的内容处于正确的位置。
如上所述,在一些示例中,GPU 140还可以包括世界交互模块152。世界交互模块152可以接收事件150。事件150可以影响由混合现实设备110呈现的内容。在一些示例中,世界交互模块152可以将事件150发送到世界操作器模块142以进行处理。如上所述,姿势可以从常开感知模块124发送到世界操作器模块142。因此,由世界操作器模块142执行的处理可以利用事件150和/或姿势。
在一些示例中,事件150可以与动作相关联,该动作与由一个或多个传感器(例如,常开传感器114和/或视觉传感器116)、一个或多个远程设备等接收的数据相关联。事件可以是手势。手势可以包括用户附肢的动作(例如,从左到右移动手指以指示滑动动作)。作为与由一个或多个远程设备接收的数据相关联的动作的示例,来自图腾的信号可以是事件150。图腾可以是将事件150发送到GPU 140的设备。在一些示例中,图腾可以包括通信模块(例如,蓝牙)。图腾的示例是控制器或物联网(IoT)设备。为了说明IoT设备,可以描述家中的警报设备。例如,警报设备可以指示有人在家门口。基于来自警报设备的指示,GPU 140可以渲染要由混合现实设备110显示的人的通知。
图2示出了根据一个实施例的由VPU(例如,VPU 120)执行的用于呈现混合现实的过程200的示例。过程200包括从一个或多个传感器(205)接收传感器数据(例如,图像、GPS位置等)。一个或多个传感器可以包括在混合现实设备中。在一些示例中,传感器数据可以包括由一个或多个传感器生成的数据。一个或多个传感器可包括常开传感器114(例如,常开传感器114)、视觉传感器(例如,视觉传感器116)、和/或组合传感器(例如,组合传感器118)。在一些示例中,传感器数据可以由VPU的感知前端模块(例如,感知前端模块122)接收。在一些示例中,一个或多个传感器可以被设置为在高功率模式下操作(例如,视觉传感器116可以在高功率模式下以高帧速率操作并且在低功率模式下以低帧速率操作)。
过程200还包括使用传感器数据识别混合现实设备的姿势(210)。在一些示例中,姿势可以由感知前端模块生成。在这样的示例中,感知前端模块可以将姿势发送到常开感知模块(例如,常开感知模块124)。在一些示例中,因为混合现实系统的组件可能花费时间来处理,所以当前时间的姿势可以与当呈现内容时的姿势不同。在这样的示例中,姿势可以与将来的时间相关联。具体地,姿势可以是在使用混合现实设备呈现内容时的时间对混合现实设备的视野的预测。
过程200还包括将混合现实设备的姿势发送到CPU(例如,CPU 130)和/或GPU(例如,GPU 140)(215)。在这样的示例中,姿势可以被发送到GPU的世界操作器模块(例如,世界操作器模块142)。在一些示例中,姿势可以同时发送到CPU和GPU。在其他示例中,姿势可以被发送到CPU和GPU中的一个然后发送到另一个。
过程200还包括使用传感器数据识别物理环境的一个或多个特征(220)。例如,可以识别物理环境中对象的角落或边缘。在一些示例中,一个或多个特征可以涉及与姿势相关联的视野和/或未包括在视野中的一个或多个区域。物理环境的一个或多个特征可以允许VPU将一个或多个特征发送到其他处理器而不是发送物理环境的图像。在一些示例中,一个或多个特征可以描述物理环境,而不必包括图像将包括的所有像素信息。在这样的示例中,一个或多个特征可以用于创建物理环境的表示以在组件之间传递。过程200还包括将一个或多个特征发送到CPU(225)。
图3示出了根据一个实施例由CPU(例如,CPU 130)执行的用于呈现混合现实的过程300的示例。在这样的示例中,CPU可以通过从低功率模式转换到高功率模式开始。在其他示例中,CPU可以已经处于高功率模式。在一些示例中,过程300可以在过程200之后进行。过程300可以假设表示没有存储在GPU(例如,GPU 140)的内容高速缓存(例如,内容高速缓存146)中或者使用混合现实设备所呈现的内容的初始识别指示内容是动态的。
过程300包括使用物理环境的一个或多个特征(330)和/或物理环境的一个或多个图像来生成物理环境的表示。一个或多个特征可以描述物理环境,而不必包括图像将包括的所有像素信息。该表示可以是三维物理环境的计算机模拟再现。在一些示例中,CPU和/或VPU(例如,VPU 120)可以生成表示。
过程300还包括确定要与物理环境一起呈现的内容(335)。在一些示例中,内容可以是覆盖在物理环境视图上的虚拟内容,使得内容看起来在物理环境中。在一些示例中,可以使用在CPU上执行的应用来确定内容。应用程序可以基于混合现实设备的表示和/或姿势来确定内容。
过程300还包括用内容更新表示(340)。在一些示例中,可以通过将确定的内容插入到表示中来更新表示。在其他示例中,可以将与表示对应的位置信息与内容相关联来更新表示,使得内容可以包括需要被放置在表示中的正确位置和方位中的信息。
过程300还包括将内容和更新的表示发送到GPU(345)。在一些示例中,CPU可以将内容发送到GPU。在这样的示例中,内容可以是允许GPU渲染用于混合现实设备的内容的像素信息。过程300还包括将CPU转换到低功率模式(350)。在一些示例中,CPU可以响应于正发送的内容和更新的表示来转换到低功率模式。
图4示出了使用混合现实设备(例如,混合现实设备110)呈现动态内容的过程400的示例。在过程400的开始,可以将CPU(例如,CPU 130)和/或VPU(例如,VPU 120)设置为在低功率模式下操作。
过程400包括接收设备(例如,混合现实设备)的姿势(405)。在一些示例中,姿势可以由GPU(例如,GPU 140)的世界操作器模块(例如,世界操作器142)接收。在这样的示例中,可以从VPU接收姿势。在一些示例中,可以使用如上所述的混合现实设备周围的物理环境的传感器数据来识别姿势。在这样的示例中,姿势可以是混合现实设备的方位和/或位置。
过程400还包括获得物理环境的表示(410)。在一些示例中,世界操作器模块可以获得表示。在这样的示例中,物理环境的表示可以存储在GPU的内容高速缓存(例如,内容高速缓存146)中。在一些示例中,表示可以是上述更新的表示。
过程400还包括识别要由混合现实设备呈现的内容(415)。在一些示例中,识别可以由GPU的世界操作器模块和/或感知视图模块(例如,感知视图模块144)来执行。识别可以包括与姿势对应的表示的一部分。例如,混合现实设备的视野可以是表示的一部分。在这样的示例中,姿势可以指示混合现实设备正面向的方向。
一旦识别了表示的一部分,世界操作器模块和/或感知视图模块可以识别在该表示的一部分内的内容。如果世界操作器模块识别内容,则世界操作器模块可以向感知视图模块发送内容的一个或多个指示以及内容的姿势或混合现实设备的姿势。如果感知视图模块识别到内容,则感知视图模块可以已经接收到表示和/或姿势以便识别内容。
过程400还包括确定内容是动态的(420)。在一些示例中,可以基于表示中包括的一个或多个指示来确定内容是动态的。在其他示例中,可以基于内容是否位于内容高速缓存中来确定内容是动态的。在一些示例中,可以基于确定世界交互是否已经发生来确定内容是动态的。在这样的示例中,世界交互(例如,事件150)可以由GPU的世界交互模块(例如,世界交互模块152)来接收和识别。如果世界交互已经发生,则可以确定内容是动态的。
过程400还包括向CPU发送消息(425)。在一些示例中,可以响应于确定内容是动态的而发送消息。在一些示例中,消息可以包括表示和/或姿势。在一些示例中,该消息可以使CPU执行图3中描述的一个或多个步骤,包括确定要呈现的内容并将内容发送到GPU。
过程400还包括由GPU接收内容(430)。在一些示例中,内容可以由内容高速缓存接收。在这样的示例中,内容可以由CPU确定。在一些示例中,在内容高速缓存接收内容之后,感知视图模块可以从内容高速缓存获得内容。在一些示例中,可以通过向内容高速缓存发送内容的指示来获得内容。在这样的示例中,指示可以包括内容的姿势。在其他示例中,内容可以是默认姿势中的内容的三维表示。在这样的示例中,感知视图模块可以改变内容的姿势以对应于混合现实设备的姿势。在一些示例中,感知视图模块还可以确保第一内容和第二内容以及第一内容和物理环境之间的正确遮挡。遮挡可以描述物理环境中的对象何时将至少部分地阻塞要覆盖在物理环境上的内容的视图。
过程400还包括将内容与物理环境的表示对准(435)。对准可以包括将内容定位在混合现实设备的视野中,使得内容出现在与表示对应的位置中。换句话说,对准可以使内容相对于物理环境粘住。在一些示例中,对准可以由GPU的渲染模块(例如,渲染模块148)执行。过程400还包括将对准的内容发送到混合现实设备(440)并使用混合现实设备呈现对准的内容(445)。
图5示出了根据一个实施例的使用混合现实设备用于呈现可预测内容的过程500的示例。过程500包括提供混合现实设备。混合现实设备可以包括VPU(例如,VPU 120)、一个或多个传感器(例如,常开传感器114、视觉传感器116、和/或组合传感器118)、显示器(505)。在一些示例中,传感器可以是相机、加速度计、陀螺仪、图腾或全球定位系统。可以使用其他传感器。
过程500还包括获得与物理环境相关联的传感器数据(510)。在一些示例中,传感器数据可以从常开传感器(例如,常开传感器114)、视觉传感器(例如,视觉传感器116)、组合传感器(例如,组合传感器118)、或其任何组合来接收。在一些示例中,传感器数据可以由VPU的感知前端模块(例如,感知前端模块122)获得。
过程500还包括使用传感器数据确定混合现实设备的姿势(515)。在一些示例中,姿势可以在混合现实设备的配置空间中。在这样的示例中,姿势可以限定混合现实设备的位置和方位。
过程500还包括将混合现实设备的姿势发送到GPU(例如,GPU 140)(520)。在一些示例中,GPU可以远离设备。过程500还包括识别与姿势和/或物理环境的表示对应的内容(525)。在一些示例中,可以将内容识别为可预测内容。在这样的示例中,可以基于表示中的一个或多个指示符将内容识别为可预测内容。在其他示例中,可以基于在由GPU识别之前内容是否存储在GPU的内容高速缓存(例如,内容高速缓存146)中将内容识别为可预测内容。
在一些示例中,该表示可以指示不应该渲染内容。在这样的示例中,可以跳过步骤530到540。另外,在一些示例中,可以确定不应该呈现内容的持续。在这样的示例中,持续可以是时间的或空间的。
为了说明何时不应该呈现内容,可以描述用户在起居室中的使用情况。当用户走向浴室时,可以确定接下来的10米将没有数字内容。在此期间,除了确定10米是否已经过去所需要的东西外,一切都可以是空闲的。
过程500还包括将内容与物理环境的表示对准(530),将对准的内容发送到混合现实设备(535),以及使用混合现实设备呈现对准的内容(540)。在一些示例中,对准内容可以包括确定方位以相对于混合现实设备的姿势来显示内容,以及基于方位修改内容以显示内容。在一些示例中,可以由GPU的感知视图模块(例如,感知视图模块144)来修改内容。修改可以包括将内容配置为用于显示的正确方位。
在一些示例中,VPU可以确定以较慢的速率接收传感器数据。在这样的示例中,可以将一个或多个传感器设置为在低功率模式下操作。在一些示例中,VPU可以将一个或多个传感器设置为在低功率模式下。在一些示例中,一个或多个传感器的低功率模式可以使一个或多个传感器中的传感器更少地(以较低的速率)生成数据。在一些示例中,一个或多个传感器的低功率模式可以使一个或多个传感器中的传感器不生成数据。另外,在一些示例中,当不需要一组传感器时,一个或多个传感器中的一组传感器可以是空闲的。
应该理解的是,图5中所示的具体步骤提供了根据一个实施例的使用混合现实设备来呈现混合现实内容的特定方法。根据替代实施例,还可以执行步骤的其他顺序。例如,本公开的替代实施例可以以不同的顺序执行上面概述的步骤。此外,图5中所示的各个步骤可以包括多个子步骤,这些子步骤可以根据适合于各个步骤的各种顺序来执行。此外,根据特定应用,可以添加或移除附加步骤。本领域普通技术人员将认识到许多变化、修改和替代。
过程200、300、400和500被示为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实现的操作顺序。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据、结构等。描述操作的顺序不旨在被解释为限制,并且所描述的操作的任何数量能够以任何顺序和/或并行地组合以实现过程。
另外,过程200、300、400和500可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以实现为代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用程序)在一个或多个处理器上由硬件或其组合共同执行。代码可以存储在计算机可读存储介质上,例如,以计算机程序的形式,该计算机程序包括可由一个或多个处理器执行的一个或多个指令。计算机可读存储介质可以是非暂时性的。
图6-10描述了根据各种实施例的混合现实系统的组件的可能配置。虽然可能配置提供了每种配置的具体细节,但是本领域普通技术人员将认识到本公开涵盖了组件的其他配置。
图6示出了根据一个实施例的中央处理单元(CPU)600的框图的示例。CPU 600可以执行存储在本地和/或外部存储器中的软件指令。CPU 600包括以下中的至少一个或多个:控制组件(例如,控制组件608)、一个或多个功能单元(例如,功能单元604)、存储器(例如,高速缓存612和随机存取存储器(RAM)616)、或其任何组合。控制组件608可以通过控制输入和输出(I/O)、指令调度、解码、加载/存储操作以及在CPU600上传递信息来指导CPU 600的操作。此外,控制组件608可以通过内部时钟协调处理指令以及使用功能单元604(例如,同步功能单元)生成定时信号。
功能单元604可以表示CPU 600的基本功能。在一些示例中,功能单元604可以是按照软件指令执行的操作和/或计算的单元,并且可以在类型和能力上变化。例如,功能单元604可以是算术逻辑单元(ALU)、浮点单元(FPU)、存储器接口单元等。ALU可以对基于二进制数的一个或多个整数执行一个或多个基本算术和/或逐位运算。相反,FPU可以对一个或多个浮点数(例如,实数的近似值)执行一个或多个算术和/或逐位运算。存储器接口单元可以向控制组件608提供到诸如RAM或硬盘驱动器(HDD)的外部存储器的接口以及到诸如高速缓存612和RAM 616的板载存储器的接口。在一些示例中,功能单元604可以包括一个或多个ALU、一个或多个FPU、一个或多个存储器接口单元等中同类组。在其他示例中,功能单元604可以包括前述功能单元的不同类型的任何组合,例如但不限于两个ALU、FPU和存储器接口单元。通常,CPU 600可以是具有低延迟、可操作执行任何类型的指令的通用执行单元。此外,虽然CPU 600描绘了四个功能单元604,但是CPU 600可以包括任何数量的功能单元604而不脱离本公开的精神和范围。
在一些示例中,功能单元604不能处理存储在永久存储器(例如,RAM616)中的程序指令。在这样的示例中,控制组件608可以解码存储在存储器中的软件指令,并根据CPU 600的指令集架构将一个或多个单独的运算符(operator)、操作数、和/或控制信号传递到功能单元。例如,控制组件608可以根据指令集架构分析软件指令,并确定哪一个或多个位对应于运算符以及哪个运算符由一个或多个位定义(例如,加、减等)。控制组件608可以类似地操纵操作数和/或控制信号。在一些示例中,指令集架构可能需要固定长度的指令(例如,所有指令具有相同的位数);然而,在一些其他示例中,控制组件608可用于解码可变长度指令(例如,与第二指令相比,第一指令可包括不同数量的位)。当指令集架构启用可变指令长度时,指令可以包括多个字节,并且可以包括比其他指令更多或更少的字节。例如,第一指令可以包括四个字节(即,32位),第二指令可以包括两个字节(即,16字节)。控制组件608可以通过识别最后字节中的特殊字符来识别可变指令的结尾。CPU 600可以根据指令集架构期望指令,以便适当地解码和/或执行软件指令。
ALU和FPU可以包括至少四个输入,表示两个操作数、一个运算符、以及至少一个控制信号(例如,定时信号)。定时信号可以使控制组件608能够在功能单元处理输入时进行管理。例如,控制组件608可以使用定时信号来强制ALU(或其他功能单元)同时地、以特定顺序、异步地或以由软件指令或控制组件608可能需要的任何其他方式来操作。ALU或FPU可以输出算术运算的结果和至少一个控制信号。输出控制信号可以指示CPU 600的状态,并且可以由ALU或FPU(作为输入)在后续计算中使用,传递到另一个ALU用于相关操作,或者存储在寄存器中。例如,输出信号可以指示算术结果是负的、零或溢出(例如,操作导致数量太大而不能由功能单元表示)。
控制组件608可以从存储器(例如,高速缓存612和RAM 616)获取、解码和/或调度指令。控制组件608可以操作指令流水线以并行或半并行方式在每个功能单元上调度一个或多个解码的指令。例如,可以至少部分地并行执行具有以下三种计算的软件程序:x=5+6、y=1+2、z=x+y。因为x=5+6以及y=1+2不相互依赖,所以x和y计算都可以并行执行。然而,z计算必须等待前两个方程完成才能执行。指令流水线可以调度所有三个指令并在短至两个周期内完成它们。控制组件608可以管理指令的调度以一次最大化操作中的多个功能单元,从而最小化产生最终结果所需的总时间。
在一些示例中,控制组件608的一般流程可以包括从存储器获取一个或多个指令、解码和解析一个或多个指令、开发指令调度(例如,通过指令流水线)、将一个或多个指令传递给一个或多个功能单元604,用于根据指令调度与一个或多个定时信号一起处理、从一个或多个功能单元604接收结果、以及将结果存储回存储器。
在处理后续指令之前,控制组件608可以将中间结果和一个或多个解码的指令存储在高速缓存612或RAM 616中。然而,控制组件608可以根据存储器层次存储数据,存储器层次可以根据要存储数据的类型将一种形式的存储器优先于另一种形式的存储器。在一些示例中,由于高速缓存612与控制组件608和一个或多个功能单元604的接近,高速缓存612可以具有较低的成本(例如,延迟和功率)。在这样的示例中,当数据被紧急或频繁地加载时,控制组件608可以将高速缓存612优先于RAM 616。因为高速缓存612可以是有限且有价值的,所以不立即需要的数据可以存储在RAM 616中,或者存储在外部非易失性存储器(未示出)中。例如,给出上面的计算示例以及仅单个ALU。控制组件608可以获取第一计算(例如,x=5+6)并将其传递给ALU以进行处理并将结果返回到高速缓存612。然后,控制组件608可以传递第二计算(例如,y=1+2)到ALU并将第二子计算的结果存储在高速缓存612中,然后获取最后的计算(例如,z=x+y)以及来自第一和第二计算的结果。最后的指令的结果表示完成的指令,可能不需要立即执行,因此可以存储在RAM 616中或外部存储在非易失性存储器中。
高速缓存612可以是任意随机存取存储器,其为一个或多个加载和存储操作提供减少的延迟。例如,高速缓存612可以是静态随机存取存储器(SRAM)。在一些示例中,CPU600可以包括多个核(例如,两个核、四个核、八个核或更多个),其中,每个核可以包括控制组件(例如,控制组件608)、一个或多个功能单元(例如,功能单元604)和高速缓存(例如,高速缓存612)。在这样的示例中,CPU 600还包括可以由多个核共享的整体高速缓存(未示出)。
在一些示例中,高速缓存612可以包括一个或多个级别(例如,L1、L2、L3和L4),其中L1高速缓存具有最低的访问延迟,以及L4高速缓存具有最高的访问延迟。在一些示例中,L1高速缓存可以表示高速缓存612,其不被CPU 600的其他核共享,而是专用于特定CPU核。在这样的示例中,L2-L4高速缓存是在CPU 600的多个核之间共享的整体高速缓存的一部分。L4高速缓存可以在CPU 600的内部或外部,并且可以包括SRAM或任何其他类型的RAM,例如动态RAM(DRAM)或嵌入式动态RAM(eDRAM)。CPU 600可以包括一个或任何数量的核以及任何数量或类型的存储器,包括具有各种级别的高速缓冲存储器。
图7示出了根据一个实施例的CPU 700(例如,图6的CPU 600)的内部组件的框图的示例。如上所述,CPU 700的一般流程可以是获取、解码和执行。执行指令的过程可以从程序计数器708开始,其可以控制程序中的一个或多个指令的执行顺序。程序计数器708的当前程序计数器值可以是要执行的指令的地址位置。当前程序计数器值可以被传递到存储器接口716,存储器接口716可以访问CPU 700的内部和/或外部存储器。存储器接口716可以访问与存储器728中的程序计数器值相关联的地址,以及将指令传递给指令寄存器704。存储器728可以是易失性和/或非易失性存储器。指令寄存器704可以是具有低访问延迟的短期存储器(例如,图6的高速缓存612)。如果需要解码指令,则指令寄存器704可以将指令传递到功能单元720或指令解码器712。
指令解码器712可以根据CPU 700的指令集架构来管理功能单元720的执行。指令解码器712可以接收来自指令寄存器704的由一个或多个位组成的二进制数并识别与第一操作数、第二操作数、运算符和存储位置对应的位。可以有不同类型的指令集架构,每个指令集架构遵循不同的约定。例如,对于在精简指令集计算(RISC)架构(其中指令长度为32位)中向变量添加常量的指令,前6位可以对应于运算符(例如,在此示例中添加),接下来的5位可以对应于结果的存储地址,接下来的5位可以对应于第一个操作数,最后的16位可以对应于常量。指令解码器712可以期望运算符、一个或多个操作数、指令的其他方面以特定顺序出现。指令解码器712可以在任何指令集架构上操作,只要指令解码器712已知指令集架构。运算符和操作数一旦被解码,就可以被传递到功能单元720,功能单元720可以执行操作。
功能单元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每个操作数只能占用两个运算符,所以ALU可以执行四次加操作。在这样的示例中,ALU可以在第二次迭代时处理10+5,在第三次迭代时处理15+5,在最后一次迭代时处理20+5。一旦达到最终结果(即,25),则来自累加器的输出可以存储在存储器728中。功能单元720和累加器724也可以在二进制操作中使用移位和相加来处理乘法。当功能单元720处理操作的最后一次迭代时,结果可以传递到存储器728。
一旦指令已经完成,程序计数器708根据指令集架构递增指令的长度(例如,16位、32位等),使得程序计数器值等于下一条指令的内存地址。然后,程序计数器708可以通过存储器接口716加载下一条指令,并继续上述过程,直到程序完成。
图8示出了根据一个实施例的图形处理单元(GPU)800的框图的示例。应当注意,虽然在整个本公开中具体提及GPU,但是在一些示例中可以使用VPU来替换GPU的功能。在一些示例中,GPU 800可以是微处理器。在这样的示例中,GPU 800的独特架构可以比CPU(例如,CPU 600/700)提供不同的处理能力。CPU 600/700和GPU 800之间的差异可以涉及每个硬件元件的优化。CPU 600/700可以被设计为通过使用大量高速缓存612来执行具有低延迟(从提取到执行)的线程(例如,整个程序的离散子程序)。相反,GPU 800可以被设计为并行执行大量类似的指令。例如,GPU 800可以包括16个流式多处理器(SM)816,其中每个SM 816可以与另一个SM 816并行地执行线程的一块。在一些示例中,GPU 800可以一次执行线程的多个块,与SM 816的数量相等。在一些示例中,GPU 800可以更精通地执行大量重复操作、最大化并行SM 816的有效性。GPU 800可以包括许多SM 816。尽管图8中示出了16个SM 816,GPU800可包括任何数量的SM 816。
在一些示例中,每个SM可以共享级别2(L2)高速缓存812。通过共享L2高速缓存812,当第一SM 816和第二SM 816并行执行时,第一SM 816可以使用第二SM 816的中间结果。L2高速缓存812可以启用低延迟加载/存储操作以允许数据在不同SM 816之间传递。
在一些示例中,一个或多个存储器控制器(例如,存储器控制器804)通过主机接口808在SM 816、L2高速缓存812与外部设备或系统(未示出)之间提供接口。存储器控制器804可以包括具有比L2高速缓存812更高延迟的随机存取存储器(RAM),用于存储出租方或无限期使用的数据。例如,存储器控制器804可以包括但不限于DRAM、SRAM、eDRAM等,或其任何组合。在一些示例中,存储器控制器804可以不包括任何存储器,而是使GPU800能够访问外部易失性和/或非易失性存储器,例如RAM、只读存储器(ROM)、HDD、闪存等。另外,存储器控制器804便于通过主机接口808从GPU 800外部的硬件或软件访问内部RAM或L2高速缓存812。
在一些示例中,可以从诸如图6的CPU600或图7的CPU700、视觉处理单元(VPU)(如图10所示)或外部存储器(例如RAM、ROM、HDD、闪存等)的外部源接收由GPU800执行的指令。主机接口808可以通过提供接口来向外部源提供对GPU800的计算资源的访问。从主机接口808接收的信息可以传递到存储器控制器804,其可以根据需要将相关数据传递到L2高速缓存812或单个SM816。
GPU800可以通过能够同时执行大量线程而与CPU(例如,CPU 600/700)的架构不同。存储器控制器804根据软件指令管理和协调在SM816上执行的并发线程。例如,GPU 800可以负责更新1080p视频的单帧。在这样的示例中,GPU 800可能需要计算帧的每个像素的像素值(其可能包括2,073,600个像素)。对于这样的指令,GPU 800必须针对超过200万次的像素解决相同的计算。存储器控制器804可以通过在单个任务中区分线程块(例如,一个或多个线程)来利用GPU800的并发处理能力,其中每个SM816同时执行线程块。利用多个SM816的并行处理能力,GPU 800可以提供计算以使帧速率在每秒1到240帧(或一些其他帧速率)之间无缝地渲染视频。
在一些示例中,GPU 800可以通过仅更新已经改变值的帧的一部分来节省功率。例如,如果第一帧的一部分是黑色而第二帧的相同部分也是相同的颜色,则GPU 800不需要投入资源来计算和更新未改变的帧的部分的值。在这样的示例中,仅需要处理差量(帧之间的差异)。存储器控制器804可以协调在SM816上执行的线程以实现GPU800的并行处理能力,使GPU800能够根据帧速率更新每个帧并显示帧。在一些示例中,存储器控制器804可以类似于gigathread来操作,gigathread表示管理在许多SM 816上执行的各个线程的单个统一线程。在一些示例中,GPU 800是专用于处理图形的CPU。
图9示出了根据一个实施例的单个流式多处理器900(诸如图8的流式多处理器816)的框图的示例。单个SM 900可以包括多个执行块(例如,控制组件、高速缓存,以及一个或多个功能单元可以是单个执行块),其中,每个执行块可以执行单个线程。图9描绘了四个执行块:第一块包括控制组件904、高速缓存908和功能单元912,第二块包括控制组件916、高速缓存920和功能单元924,第三块包括控制组件928、高速缓存932和功能单元936、以及第四控制组件940、高速缓存944和功能单元948。SM可以包括任意数量的执行块。在一些示例中,单个SM 900可以通过将线程块内的每个线程分配给执行块来执行线程块。在这样的示例中,每个线程块可以在单个线程执行的时间内并发执行且完成。在一些示例中,可以限制执行块的高速缓存的存储器容量(例如,高速缓存908可以小于高速缓存952,其可以小于图8的L2高速缓存812)。执行块的高速缓存可以存储传递给每个功能单元(例如,FU 912)的一个或多个运算符、操作数、定时和/或状态信号或其任何组合。执行块的高速缓存还可以存储来自每个功能单元的结果(中间或最终)。控制组件(类似于图6的控制组件608)可以遵循获取、解码和执行的指令执行循环。控制组件608可以获取其高速缓存(即,高速缓存908、920、932、944)中的一个或多个指令,并根据由单个SM 900使用的指令集架构对一个或多个指令进行解码。任何指令集架构可以由执行块采用,只要控制中的解码器具有对指令集架构进行解码的相应解码能力。控制组件可以将解码的指令传递给与控制组件相关联的功能单元。例如,控制组件904可以将一个或多个解码的指令传递到功能单元912,而控制组件916可以将一个或多个解码的指令传递到功能单元924,等等。
一组指令的结果(一旦被一个或多个功能单元解码和执行)可以在被传递到高速缓存952之前存储在执行单元的本地高速缓存中。在一些示例中,高速缓存908、920、932和944可以表示级别1(L1)高速缓存,因为每个高速缓存不在其他执行块之间共享。在这样的示例中,高速缓存952可以表示级别2(L2)高速缓存,因为它可以在许多执行块之间共享。例如,主机接口956可以从图8的存储器控制器804接收线程块,以及在分发之前,将相应的线程存储在高速缓存952中。在一些示例中,线程块的每个线程可以分发到每个执行块。在一些示例中,线程块可以包括与单个SM 900中的执行块的数量相同数量的线程或比单个SM900中的执行块的数量少的数量的线程。每个线程块的执行时间可以等于最长的单独线程的执行时间。在其他示例中,线程块可以包括比具有执行块的单个SM 900更多的线程。在这样的示例中,单个SM 900可以以最小化执行时间的方式调度执行块之间的线程,例如,通过调度在同一执行块上执行的最短线程和最长线程。
完成的线程的结果可以存储在高速缓存952中,并且随后传递到主机接口956以传递到存储器控制器804。在一些示例中,每个线程的中间结果可以通过主机接口956传递为每个线程完成。在其他示例中,单个SM 900可以等待直到整个线程块完成,然后将整个线程块的结果传递到存储器控制器804。
图10示出了视觉处理单元(VPU)1000的框图的示例,用于管理来自一个或多个传感器(例如,常开传感器114、视觉传感器116、组合传感器118、视频和静态相机、加速度计、光照时间等)的输入。应当注意,尽管在整个本公开中具体提到了VPU,但是在一些示例中可以使用GPU来代替VPU的功能。VPU 1000可以包括处理器阵列以同时处理指令。处理器阵列可用于通过一次对整个数据集执行一个或多个指令而不是单个操作数来处理大量原始数据。在一些示例中,处理器阵列中的处理器可以是矢量超长指令字(VLIW)处理器1004。矢量VLIW处理器1004可以在称为矢量的一个或多个数据阵列上操作,而不是CPU(例如,图6的CPU 600)可以处理的标量(例如,单个数据)。另外,矢量VLIW处理器1004可以使用VLIW指令集架构,其中每个指令长度可以是64位或更长。在一些示例中,VLIW指令集架构可以是可变VLIW架构,其中指令可以具有变化的位长度。在一些示例中,处理器阵列可以是单个SM,诸如图9所示并由GPU 800使用的那些。
处理器阵列中的处理器可以包括内部高速缓冲存储器、存储器阵列1008、L2高速缓存1036或其任何组合。存储器阵列1008可以表示由RAM(例如,DRAM、SRAM等)组成的大量互连节点,其作为用于处理器阵列中的每个处理器、一个或多个视觉硬件加速器1012、以及一个或多个精简指令集计算(RISC)处理器(例如,RISC 1 1028和RISC 2 1032)的大型共享存储器库进行操作。在一些示例中,处理器阵列可以使用紧密耦合的地址空间来减少加载延迟并增加存储。在一些示例中,一个或多个视觉硬件加速器1012可以是专门为特定类型的计算而设计的专用硬件元件,从而减少处理器阵列中的处理器上特定类型的计算负荷。硬件加速器(例如,一个或多个视觉硬件加速器1012)可以提供一个或多个特定指令的快速处理。在一些示例中,当处理器可能执行一个或多个特定指令的速度慢(或者否则不适合于特定指令类型)时,硬件加速器可以优于由处理器阵列中的处理器执行一个或多个特定指令。在一些示例中,VPU 1000可以包括多达20个硬件加速器,其从处理器阵列卸载一些处理。在一些示例中,一个或多个视觉硬件加速器可以由RISC处理器通过处理器阵列来控制。
总线1040可以连接处理器阵列、L2高速缓存1036、RISC 1 1028、RISC 2 1032和一个或多个接口1020。L2高速缓存1036可以表示处理器阵列、RISC 1 1028和RISC 2 1032中的共享存储器。此外,一个或多个接口1020可以将来自输入/输出(I/O)接口1024的外部数据存储在L2高速缓存1036中,用于与一个或多个处理器一起处理。在一些示例中,RISC 11028和RISC 2 1032均可以是控制VPU 1000的子组件的精简指令集计算处理器。例如,RISC1 1028可以管理一个或多个视觉硬件加速器1012,而RISC 2 1032可以管理I/O接口1024和任意连接的传感器(例如,相机和传感器)。
在一些示例中,VPU 1000的控制可以是分散的,其中RISC 1 1028和/或RISC 21032可以管理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可以降低或增加任何连接传感器的帧速率或数据捕获速率,传感器包括但不限于相机、加速度计、图腾、位置传感器、手势传感器等。
在一些示例中,一个或多个接口1020可以在一个或多个有线协议和/或一个或多个无线协议上操作。例如,一个或多个接口1020可以通过以下连接到一个或多个外部源:通用串行总线(USB)(例如USB 2.0、USB 3.0、USB OTG等)、联合测试工作组(JTAG)、以太网、通用异步收发传输器(UART)、SD模式(SDIO)等。另外,一个或多个接口1020可以实现各种显示类型的数据交换,例如但不限于LCD、通用中间格式(CIF)、NAL等。VPU 1000还可以使用移动工业处理器接口(MIPI)1016来为一个或多个外部设备(例如,CPU 600、GPU 800、和/或传感器)提供一个或多个接口。MIPI 1016可以包括一个或多个独立的通信通道(例如,12)。MIPI1016可以提供从I/O接口1024到一个或多个视觉硬件加速器1012的连接。连接的外部设备(例如传感器)可以具有从I/O接口1024到一个或多个视觉硬件加速器的低延迟通过。I/O接口1024可以将数据传递到一个或多个外部设备(例如,CPU 600、GPU 800和/或传感器)和VPU 1000以及从一个或多个外部设备(例如,CPU 600、GPU 800和/或传感器)和VPU 1000传递数据。
在一些示例中,VPU 1000可以是专用于处理视觉输入的CPU。另外,尽管根据图10的示例性硬件元件描绘了VPU 1000,但是VPU 1000可以包括与GPU的硬件元件类似或相同的硬件元件(诸如结合图8和9描绘和描述的GPU 800)。在一些示例中,由VPU 1000执行的一个或多个操作可以由GPU 800执行。
所描述的特征可以在数字电子电路中实现,或者在计算机硬件、固件、软件或它们的组合中实现。装置可以在有形地体现在信息载体中的计算机程序产品中实现,例如,在机器可读存储设备中,用于由可编程处理器执行;并且可以由执行指令程序的可编程处理器来执行方法步骤,以通过对输入数据进行操作并生成输出来执行所描述的实现的功能。所描述的特征可以有利地在可编程系统上可执行的一个或多个计算机程序中实现,该可编程系统包括至少一个可编程处理器,其被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并将数据和指令传输到数据存储系统、至少一个输入设备和至少一个输出设备。计算机程序是一组指令,可以直接或间接地在计算机中使用以执行某种活动或带来某种结果。计算机程序可以用任何形式的编程语言编写,包括编译或解释语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他在计算环境中适合使用的单元。
作为示例,用于执行指令程序的合适处理器包括通用和专用微处理器、以及任何类型的计算机的唯一处理器或多个处理器中的一个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器。通常,计算机还将包括或可操作地耦合以与一个或多个用于存储数据文件的大容量存储设备通信;这些设备包括磁盘,例如内部硬盘和可移动磁盘、磁光盘和光盘。适合于有形地体现计算机程序指令和数据的存储设备包括所有形式的非易失性存储器,包括例如半导体存储器设备,诸如EPROM、EEPROM和闪存设备;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可以由ASIC(专用集成电路)补充或并入其中。
为了提供与用户的交互,特征可以在具有以下的计算机上实现:用于向用户显示信息的显示设备(诸如CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)监视器)、键盘和指示设备(诸如鼠标或轨迹球),用户可以通过键盘和指示设备向计算机提供输入。
这些特征可以在包括后端组件(诸如数据服务器)的计算机系统中实现,或者包括中间件组件(诸如应用服务器或因特网服务器)或包括前端组件(诸如具有图形用户界面或因特网浏览器的客户端计算机)的计算机系统中实现,或它们的任何组合的计算机系统中实。系统的组件可以通过任何形式或介质的数字数据通信(诸如通信网络)来连接。通信网络的示例包括LAN、WAN以及形成因特网的计算机和网络。
计算机系统可包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过网络进行交互,例如所描述的网络。客户端和服务器的关系借助于在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。尽管上面已经详细描述了一些实现,但是其他修改也是可能的。
另外,图中描绘的逻辑流程不需要所示的特定顺序或顺序次序来实现期望的结果。另外,可以从所描述的流程中提供其他步骤,或者可以从所描述的流程中消除步骤,并且可以向所描述的系统添加或移除其他组件。因此,其他实施方式在以下权利要求的范围内。
在将组件描述为被配置为执行某些操作的情况下,这种配置可以通过以下来实现:例如,通过设计电子电路或其他硬件来执行操作,通过编程可编程电子电路(例如,微处理器或其他合适的电子电路)来执行操作,或其任何组合。
已经描述了本公开的许多实施例。然而,应该理解,在不脱离本公开的范围的情况下,可以进行各种修改。
Claims (23)
1.一种用于使用混合现实设备呈现混合现实内容的方法,所述方法包括:
获得与物理环境相关联的传感器数据,其中,使用一个或多个传感器获得所述传感器数据;
由视觉处理单元(VPU)使用所述传感器数据确定设备的姿势;
将所述设备的所述姿势发送到至少一个图形处理单元(GPU);
由所述至少一个GPU识别与所述设备的所述姿势对应的内容;
由所述至少一个GPU将所述内容与所述物理环境对准;
将所对准的内容发送到所述设备;以及
使用显示器呈现所对准的内容。
2.根据权利要求1所述的方法,其中,所述设备的所述姿势包括所述设备的位置和方位。
3.根据权利要求1所述的方法,其中,所述至少一个GPU远离所述设备。
4.根据权利要求1所述的方法,其中,在识别所述内容之前,所述内容存储在所述至少一个GPU的高速缓存中。
5.根据权利要求1所述的方法,还包括将所述设备的所述姿势发送到中央处理单元(CPU)。
6.根据权利要求5所述的方法,其中,所述CPU以低功率模式操作。
7.根据权利要求6所述的方法,还包括:
确定所识别的内容是动态内容;以及
向所述CPU发送消息,其中,所述消息使所述CPU从所述低功率模式转换到高功率模式。
8.根据权利要求1所述的方法,还包括:
确定所识别的内容是可预测的内容;以及
响应于确定所识别的内容是可预测的,从所述至少一个GPU的高速缓存获得所识别的内容。
9.一种系统,包括:
设备,包括:
一个或多个传感器,其中,所述一个或多个传感器中的传感器被配置为捕获传感器数据;
视觉处理单元(VPU),其被配置为确定与所述设备相关联的姿势,其中,使用所述传感器数据确定所述姿势;
显示器;以及
至少一个图形处理单元(GPU),其被配置为:
从所述VPU接收所述姿势;
识别要由所述显示器呈现的内容,其中,所述内容基于所述姿势来识别;
将所述内容与物理环境对准;以及
将所对准的内容发送到所述设备以由所述显示器呈现。
10.根据权利要求9所述的系统,其中,所述姿势在所述混合现实设备的配置空间中,其中,所述姿势限定所述混合现实设备的位置和方位。
11.根据权利要求9所述的系统,其中,所述一个或多个传感器中的传感器是相机、加速度计、陀螺仪、图腾和全球定位系统中的一个。
12.根据权利要求9所述的系统,其中,所述至少一个GPU远离所述设备。
13.根据权利要求9所述的系统,其中,所述内容是可预测的内容。
14.根据权利要求13所述的系统,其中,所述设备还包括被配置为从所述VPU接收所述姿势的中央处理单元(CPU)。
15.根据权利要求14所述的系统,其中,响应于识别所述内容是可预测的内容,所述CPU被旁路。
16.根据权利要求9所述的系统,其中,在识别所述内容之前,所述内容存储在所述至少一个GPU的高速缓存中。
17.一种有形地体现在非暂时性机器可读存储介质中的计算机程序产品,包括当由一个或多个处理器执行时使所述一个或多个处理器执行以下操作的指令:
获得与物理环境相关联的传感器数据,其中,使用一个或多个传感器获得所述传感器数据;
由视觉处理单元(VPU)使用所述传感器数据确定设备的姿势;
将所述设备的所述姿势发送到至少一个图形处理单元(GPU);
由所述至少一个GPU识别与所述姿势对应的内容;
由所述至少一个GPU将所述内容与所述物理环境对准;
将所对准的内容发送到所述设备;以及
使用显示器呈现所对准的内容。
18.根据权利要求17所述的计算机程序产品,其中,所述姿势在所述设备的配置空间中,并且其中,所述姿势限定所述设备的位置和方位。
19.根据权利要求17所述的计算机程序产品,其中,所述一个或多个传感器中的传感器是相机、加速度计、陀螺仪、图腾和全球定位系统中的一个。
20.根据权利要求17所述的计算机程序产品,其中,所述至少一个GPU远离所述设备。
21.根据权利要求17所述的计算机程序产品,其中,所述指令在由所述一个或多个处理器执行时还使所述一个或多个处理器:
将所述设备的所述姿势发送到中央处理单元(CPU)。
22.根据权利要求21所述的计算机程序产品,其中,所述内容是可预测的内容,并且其中,响应于识别所述内容是可预测的内容,所述CPU被旁路。
23.根据权利要求17所述的计算机程序产品,其中,在识别所述内容之前,所述内容存储在所述至少一个GPU的高速缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310114856.0A CN116109467A (zh) | 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 |
---|---|---|---|
CN202310114856.0A Division CN116109467A (zh) | 2016-11-16 | 2017-11-15 | 具有降低功率渲染的混合现实系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110100274A true CN110100274A (zh) | 2019-08-06 |
CN110100274B CN110100274B (zh) | 2023-02-17 |
Family
ID=62108510
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310114856.0A Pending CN116109467A (zh) | 2016-11-16 | 2017-11-15 | 具有降低功率渲染的混合现实系统 |
CN201780070885.4A Active CN110100274B (zh) | 2016-11-16 | 2017-11-15 | 具有降低功率渲染的混合现实系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310114856.0A Pending CN116109467A (zh) | 2016-11-16 | 2017-11-15 | 具有降低功率渲染的混合现实系统 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10782796B2 (zh) |
EP (1) | EP3542358A4 (zh) |
JP (2) | JP7037560B2 (zh) |
KR (2) | KR102517795B1 (zh) |
CN (2) | CN116109467A (zh) |
AU (1) | AU2017361245B2 (zh) |
CA (1) | CA3042553C (zh) |
IL (2) | IL302483B1 (zh) |
NZ (2) | NZ794498A (zh) |
WO (1) | WO2018093923A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567587B2 (en) | 2016-11-16 | 2023-01-31 | Magic Leap, Inc. | Mixed reality system with reduced power rendering |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190093624A (ko) * | 2016-12-06 | 2019-08-09 | 돈 엠. 구룰 | 연대기-기반 검색 엔진을 위한 시스템 및 방법 |
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 |
US20220413592A1 (en) * | 2019-12-17 | 2022-12-29 | Google Llc | Low-power vision sensing |
Citations (13)
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 |
US20100258000A1 (en) * | 2005-05-05 | 2010-10-14 | Matthew Charles Hagerty | Wireless, waterproof remote video weapon mounted sighting system, SmartSight |
US20120127284A1 (en) * | 2010-11-18 | 2012-05-24 | Avi Bar-Zeev | Head-mounted display device which provides surround video |
US20140168084A1 (en) * | 2012-12-13 | 2014-06-19 | Intel Corporation | Gesture pre-processing of video stream using a markered region |
US20140169621A1 (en) * | 2012-12-13 | 2014-06-19 | Intel Corporation | Gesture pre-processing of video stream to reduce platform power |
CN104035540A (zh) * | 2013-03-05 | 2014-09-10 | 英特尔公司 | 在图形渲染期间降低功耗 |
US20140327630A1 (en) * | 2013-01-06 | 2014-11-06 | Jeremy Burr | Method, apparatus, and system for distributed pre-processing of touch data and display region control |
US20150029218A1 (en) * | 2013-07-25 | 2015-01-29 | Oliver Michael Christian Williams | Late stage reprojection |
US20150229839A1 (en) * | 2013-03-12 | 2015-08-13 | Qualcomm Incorporated | Adaptive data path for computer-vision applications |
US20160035139A1 (en) * | 2013-03-13 | 2016-02-04 | The University Of North Carolina At Chapel Hill | Low latency stabilization for head-worn displays |
US20160071325A1 (en) * | 2010-06-15 | 2016-03-10 | James Paul Callaghan | Generating augmented reality images using sensor and location data |
US9298283B1 (en) * | 2015-09-10 | 2016-03-29 | Connectivity Labs Inc. | Sedentary virtual reality method and systems |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4532856B2 (ja) * | 2003-07-08 | 2010-08-25 | キヤノン株式会社 | 位置姿勢計測方法及び装置 |
US7779191B2 (en) * | 2008-07-29 | 2010-08-17 | Nvidia Corporation | Platform-based idle-time processing |
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) |
US8638986B2 (en) | 2011-04-20 | 2014-01-28 | Qualcomm Incorporated | Online reference patch generation and pose estimation for augmented reality |
US10139623B2 (en) | 2013-06-18 | 2018-11-27 | Microsoft Technology Licensing, Llc | Virtual object orientation and visualization |
US10408613B2 (en) * | 2013-07-12 | 2019-09-10 | Magic Leap, Inc. | Method and system for rendering virtual content |
AU2015297035B2 (en) * | 2014-05-09 | 2018-06-28 | Google Llc | Systems and methods for biomechanically-based eye signals for interacting with real and virtual objects |
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 |
KR101626375B1 (ko) * | 2015-06-30 | 2016-06-01 | 한양대학교 산학협력단 | 증강현실 물체를 감지하는 장갑형 촉각전달 장치 및 그 방법 |
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 |
CN116109467A (zh) | 2016-11-16 | 2023-05-12 | 奇跃公司 | 具有降低功率渲染的混合现实系统 |
-
2017
- 2017-11-15 CN CN202310114856.0A patent/CN116109467A/zh active Pending
- 2017-11-15 NZ NZ794498A patent/NZ794498A/en unknown
- 2017-11-15 AU AU2017361245A patent/AU2017361245B2/en active Active
- 2017-11-15 WO PCT/US2017/061835 patent/WO2018093923A1/en unknown
- 2017-11-15 NZ NZ752758A patent/NZ752758A/en unknown
- 2017-11-15 KR KR1020197017219A patent/KR102517795B1/ko active IP Right Grant
- 2017-11-15 IL IL302483A patent/IL302483B1/en unknown
- 2017-11-15 IL IL266497A patent/IL266497B2/en unknown
- 2017-11-15 EP EP17872026.4A patent/EP3542358A4/en active Pending
- 2017-11-15 JP JP2019525822A patent/JP7037560B2/ja active Active
- 2017-11-15 KR KR1020237010837A patent/KR102631245B1/ko active IP Right Grant
- 2017-11-15 US US15/814,175 patent/US10782796B2/en active Active
- 2017-11-15 CA CA3042553A patent/CA3042553C/en active Active
- 2017-11-15 CN CN201780070885.4A patent/CN110100274B/zh active Active
-
2020
- 2020-08-18 US US16/996,354 patent/US11567587B2/en active Active
-
2022
- 2022-03-04 JP JP2022033544A patent/JP7350115B2/ja active Active
Patent Citations (14)
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 |
US20100258000A1 (en) * | 2005-05-05 | 2010-10-14 | Matthew Charles Hagerty | Wireless, waterproof remote video weapon mounted sighting system, SmartSight |
US20100026714A1 (en) * | 2008-07-31 | 2010-02-04 | Canon Kabushiki Kaisha | Mixed reality presentation system |
US20160071325A1 (en) * | 2010-06-15 | 2016-03-10 | James Paul Callaghan | Generating augmented reality images using sensor and location data |
US20120127284A1 (en) * | 2010-11-18 | 2012-05-24 | Avi Bar-Zeev | Head-mounted display device which provides surround video |
US20140168084A1 (en) * | 2012-12-13 | 2014-06-19 | Intel Corporation | Gesture pre-processing of video stream using a markered region |
US20140169621A1 (en) * | 2012-12-13 | 2014-06-19 | Intel Corporation | Gesture pre-processing of video stream to reduce platform power |
US20140327630A1 (en) * | 2013-01-06 | 2014-11-06 | Jeremy Burr | Method, apparatus, and system for distributed pre-processing of touch data and display region control |
CN104035540A (zh) * | 2013-03-05 | 2014-09-10 | 英特尔公司 | 在图形渲染期间降低功耗 |
US20150229839A1 (en) * | 2013-03-12 | 2015-08-13 | Qualcomm Incorporated | Adaptive data path for computer-vision applications |
US20160035139A1 (en) * | 2013-03-13 | 2016-02-04 | The University Of North Carolina At Chapel Hill | Low latency stabilization for head-worn displays |
US20150029218A1 (en) * | 2013-07-25 | 2015-01-29 | Oliver Michael Christian Williams | Late stage reprojection |
CN105474273A (zh) * | 2013-07-25 | 2016-04-06 | 微软技术许可有限责任公司 | 后期重投影 |
US9298283B1 (en) * | 2015-09-10 | 2016-03-29 | Connectivity Labs Inc. | Sedentary virtual reality method and systems |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567587B2 (en) | 2016-11-16 | 2023-01-31 | Magic Leap, Inc. | Mixed reality system with reduced power rendering |
Also Published As
Publication number | Publication date |
---|---|
JP7037560B2 (ja) | 2022-03-16 |
JP7350115B2 (ja) | 2023-09-25 |
KR102631245B1 (ko) | 2024-01-29 |
EP3542358A4 (en) | 2019-11-20 |
IL266497A (en) | 2019-07-31 |
AU2017361245A1 (en) | 2019-05-23 |
KR102517795B1 (ko) | 2023-04-03 |
CA3042553C (en) | 2024-01-02 |
NZ752758A (en) | 2023-12-22 |
US11567587B2 (en) | 2023-01-31 |
IL266497B1 (en) | 2023-06-01 |
CA3042553A1 (en) | 2018-05-24 |
US20210034172A1 (en) | 2021-02-04 |
IL266497B2 (en) | 2023-10-01 |
EP3542358A1 (en) | 2019-09-25 |
CN110100274B (zh) | 2023-02-17 |
WO2018093923A1 (en) | 2018-05-24 |
KR20190085051A (ko) | 2019-07-17 |
CN116109467A (zh) | 2023-05-12 |
IL302483B1 (en) | 2024-02-01 |
JP2022082560A (ja) | 2022-06-02 |
IL302483A (en) | 2023-06-01 |
NZ794498A (en) | 2023-12-22 |
AU2017361245B2 (en) | 2023-06-22 |
KR20230049756A (ko) | 2023-04-13 |
JP2019537143A (ja) | 2019-12-19 |
US20180136745A1 (en) | 2018-05-17 |
US10782796B2 (en) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110100274A (zh) | 具有降低功率渲染的混合现实系统 | |
US10692170B2 (en) | Software scoreboard information and synchronization | |
US20210245046A1 (en) | System architecture for cloud gaming | |
US20190138373A1 (en) | Multithreaded data flow processing within a reconfigurable fabric | |
US11037269B1 (en) | High-speed resume for GPU applications | |
US20170300361A1 (en) | Employing out of order queues for better gpu utilization | |
US11409579B2 (en) | Multiple independent synchonization named barrier within a thread group | |
JP2021149932A (ja) | 非同期レイトレーシング用の装置及び方法 | |
US11669329B2 (en) | Instructions and logic for vector multiply add with zero skipping | |
US11762662B2 (en) | Instruction prefetch based on thread dispatch commands | |
US20170287198A1 (en) | Directed acyclic graph path enumeration with application in multilevel instancing | |
US20210263766A1 (en) | Concurrent workload scheduling with multiple level of dependencies | |
US20220291955A1 (en) | Asynchronous input dependency resolution mechanism | |
JP2021099786A (ja) | 共有ローカルメモリをパーティショニングするメカニズム | |
US20240053985A1 (en) | Sharing register file usage between fused processing resources | |
WO2017155610A1 (en) | Method and apparatus for efficient submission of workload to a high performance graphics sub-system | |
US20190324757A1 (en) | Maintaining high temporal cache locality between independent threads having the same access pattern | |
EP3907606A1 (en) | Compaction of diverged lanes for efficient use of alus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |