首页> 中国专利> 利用多个LSR处理引擎的用于实时图像变换的无丢失高速缓存结构

利用多个LSR处理引擎的用于实时图像变换的无丢失高速缓存结构

摘要

本公开的实施例涉及利用多个LSR处理引擎的用于实时图像变换的无丢失高速缓存结构。本文中公开了用于提供改进的高速缓存结构和方法的系统和方法,高速缓存结构和方法的大小被最佳地确定以支持预定范围的后期调节,并且其中图像数据以消除从DRAM中重取输入图像数据并且使DRAM带宽和功率最小化的方式智能地从DRAM中被读出并且被高速缓存。系统和方法还可以适于与压缩图像数据和多个LSR处理引擎一起工作。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-02

    实质审查的生效 IPC(主分类):G06F12/0862 专利申请号:2022106532641 申请日:20180403

    实质审查的生效

说明书

本申请是国际申请号为PCT/US2018/025777、国际申请日为2018年4月3日、进入中国国家阶段日期为2019年10月11日、中国国家申请号为201880024756.6、发明名称为“利用多个LSR处理引擎的用于实时图像变换的无丢失高速缓存结构”的发明专利申请的分案申请。

技术领域

本公开的实施例涉及利用多个LSR处理引擎的用于实时图像变换的无丢失高速缓存结构。

背景技术

混合现实是允许虚拟图像在显示器中与现实世界物理环境混合的技术。用于混合现实的系统可以包括例如具有内置相机的透视头戴式显示(HMD)设备或智能电话。这样的系统通常包括在一个或多个应用的控制下提供图像的处理单元。其中看不到任何现实世界对象的完全虚拟现实环境也可以使用HMD和其他设备来支持。

很多HMD还包括一个或多个前置相机,从用户的角度来看,前置相机捕获用户面前的环境。这样的前置相机可以是深度相机,其不仅捕获图像数据,还捕获有关用户环境的深度或表面数据。从前置相机捕获的图像数据可以由位于HMD上的板载处理器使用,以生成可以经由并入HMD中的用户显示器而绘制给用户的混合现实或虚拟现实显示数据。

在这样的系统中,用户的身体、特别是头部可以相对于虚拟环境实时地移动。例如,在混合现实应用中,如果用户将头部朝向一个方向倾斜,则他们将不期望图像或全息图随之倾斜。理想地,系统将测量头部的位置并且以足够快的速率绘制图像以消除用户感觉到的图像位置的任何抖动或漂移。然而,取决于GPU的质量和性能,典型的图形处理单元(GPU)当前仅以每秒30至60帧绘制帧。这导致在检测到头部位置的时间点与实际将图像输出到显示器的时间点之间的16到33毫秒的可能延迟。附加时延也可能与确定头部位置所花费的时间和/或GPU的帧缓冲与最终显示之间的延迟相关联。结果是在用户期望图像的位置与显示图像的位置之间的潜在的大的误差,从而导致用户不适。

为了减少或消除这种错误,现有系统可以应用后期校正,以在由GPU绘制之后但是在显示像素之前对图像进行调节,以便补偿因头部移动引起的旋转、平移和/或放大(下文中有时称为“后期状态调节”、“后期重投影”、“LRS”或“LSR调节”)。由于可以以高速率和高分辨率绘制帧,因此采用LSR的现有系统可能需要大量的DRAM带宽和功率。当然,在无线的电池供电的HMD的情况下,芯片尺寸以及带宽和功率要求可能非常重要。

本文中要求保护的技术方案不限于解决诸如上述任何缺点或仅在诸如上述环境中操作的实施例。而是,仅提供本背景以说明可以实践本文中描述的一些实施例的一个示例性技术领域。

发明内容

本文中公开了用于提供改进的高速缓存结构和方法的系统和方法,这些高速缓存结构和方法的大小被最佳地确定以支持预定范围的后期调节,并且其中以消除从DRAM中重取输入图像数据并且使DRAM带宽和功耗最小化的方式智能地从DRAM中读出并且高速缓存图像数据。

在一个实施例中,高速缓存结构的大小被最佳地确定以支持预定范围的后期调节,并且高速缓存结构被管理,使得:高速缓存/缓冲区可以仅获取每行输入图像数据一次以减少输入带宽;高速缓存可以容纳足以构造输出图像的多行(但是仍然比完整图像少得多);高速缓存可以在需要之前预取数据,使得不对图像处理流水线增加任何附加延时;并且仅当不再需要构造输出图像时,高速缓存才可以逐出输入图像数据,而当不再需要时,高速缓存可以自动逐出输入图像数据。

在另一方面,输入图像数据最初可以以开始绘制输出图像所需要的顺序被写入高速缓存中。

在又一方面,输入图像数据可以以使从高速缓存中读出输出图像数据的顺序能够预测的方式被写入高速缓存中并且被组织。

在又一实施例中,高速缓存结构和方法可以适于与压缩图像数据一起使用。

提供本发明内容以便以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在用于帮助确定所要求保护的技术方案的范围。

其他特征和优点将在下面的描述中阐述,并且部分将从描述中变得很清楚,或者可以通过本文中的教导的实践而获知。本发明的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获取。本发明的特征根据以下描述和所附权利要求书将变得更加完全明显,或者可以通过下文中给出的本发明的实践来获知。

附图说明

为了描述可以获取上述和其他优点和特征的方式,将通过参考在附图中示出的特定实施例来对以上简要描述的技术方案进行更具体的描述。理解这些附图仅描绘典型的实施例并且因此不应当被视为对本发明的范围的限制,将通过使用附图用附加的特征和细节来描述和解释实施例,在附图中:

图1是用于实现本文中公开的系统和方法的操作环境的一个说明性示例的功能框图。

图2是HMD的一个说明性示例的示意表示。

图3是HMD的一个说明性示例的功能框图。

图4是HMD的图像绘制子系统的一个说明性示例的某些相关部分的功能框图。

图5是GPU图像帧的示意表示。

图6是叠加在LSR调节的输出图像帧的示意表示上的图5的GPU图像帧的示意表示。

图7A、图7B和图8是如本文中公开的改进的高速缓存结构和方法的说明性实施例的示意表示。

图9和图10是示出进一步适于与压缩图像数据一起工作的改进的高速缓存的附加实施例的功能框图。

图11和图12是示出如何在多个后期重投影(LSR)处理引擎之间划分图像数据的处理的示意表示。

图13是示出进一步适于与压缩图像数据和多个LSR处理引擎一起工作的改进的高速缓存的附加实施例的功能框图。

图14是示出由多个LSR处理引擎处理图像数据的附加方面的另一示意表示。

具体实施方式

现在以下讨论涉及可以执行的很多方法和方法动作。尽管方法动作可以按特定顺序进行讨论或者在流程图中示出为按特定顺序发生,但是除非特别说明或者因为一个动作依赖于在该动作执行之前完成的另一动作而需要,否则不需要特定顺序。

如本文中使用的:术语“输入图像数据”或“GPU图像数据”可以可互换地用于指代由HMD的GPU生成的图像数据;并且术语“输出图像数据”或“显示图像数据”可以可互换地使用以指代由本文中公开的改进的高速缓存输出以绘制经LSR调节的显示图像的数据。

提供以下描述中所包括的副标题是为了方便读者,以帮助读者浏览本公开,而非旨在限制或用于解释本公开或所附权利要求的本质或范围。

下面描述的技术涉及被设计为改进的高速缓存结构和方法,其大小被最佳地确定以支持预定范围的后期调节,并且其中以消除从DRAM中重取输入图像数据并且使DRAM带宽和功耗最小化的方式智能地从DRAM中读出并且高速缓存图像数据。高速缓存结构的大小被最佳地确定支持预定范围的后期调节,并且高速缓存结构被管理,使得:高速缓存/缓冲区可以仅获取每行输入图像数据一次以减少输入带宽;高速缓存可以容纳足以构造输出图像的多行(但是仍然比完整图像少得多);高速缓存可以在需要之前预取数据,使得不对图像处理流水线增加任何附加延时;并且仅当不再需要构造输出图像时,高速缓存才可以逐出输入图像数据,而当不再需要时,高速缓存可以自动逐出输入图像数据。输入图像数据最初可以以开始绘制输出图像所需要的顺序被写入高速缓存中,并且输入图像数据可以以使从高速缓存中读出输出图像数据的顺序能够预测的方式被写入高速缓存并且被组织。

该技术包括用于提供旨在用于头戴式增强、混合或虚拟现实显示系统(HMD)的上下文中的改进的高速缓存结构的方法和系统,该HMD具有图形处理单元(GPU)、带有片上高速缓存的全息处理单元(HPU)、系统存储器和显示器,GPU生成可以包括可以在显示器上显示的文本、全息对象和其他视觉元素的图像,系统存储器用于存储GPU图像,并且HPU被配置为执行后期调节,以针对可能在图像绘制过程期间发生的HMD的移动来校正GPU图像,并且高速缓存用于基于GPU生成的图像和后期调节来构造输出图像,并且HPU生成后期调节矩阵,后期调节矩阵将经后期调节的输出图像的每个像素映射到GPU图像的对应像素。该技术还可以适用于压缩图像数据一起工作。

在一个实施例中,该方法可以包括:从系统存储器中预取和解压缩经压缩GPU图像数据的一个或多个图块,并且将经解压缩GPU图像数据放置在第一高速缓存中,一个或多个图块以构造输出图像所需要的顺序被选择;从第一高速缓存中预取经解压缩图像数据的一行或多行,一个或多个图块行以构造输出图像所需要的顺序被选择;基于后期调节矩阵以构造输出图像所需要的顺序,将经解压缩GPU图像数据的所预取的一行或多行写入第二高速缓存中;以及通过根据调节矩阵遍历(walk)第二高速缓存中的GPU图像的一行或多行来构造输出图像,并且将输出图像输出。附加的方法还可以包括:选择第一高速缓存和第二高速缓存的大小以支持预定范围的后期调节;在预取经解压缩图像数据的一行或多行时,预取足够数目的行,使得构造输出图像的第一部分所需要的所有行存在于第二高速缓存中;在预取经解压缩图像数据的一行或多行时,构造输出图像所需要的第一行被放置在第二高速缓存的中间处或附近,并且一或多行中的每个其他行基于其在GPU图像中的相对位置在第二高速缓存中被放置在第一行上方或下方;在显示器上绘制输出图像;根据需要执行附加预取操作,以从系统存储器中取回经压缩GPU图像数据的一个或多个附加图块,一个或多个附加图块以基于后期调节矩阵构造输出图像所需要的顺序被选择并且被写入第一高速缓存;当不再需要构造输出图像时,将未压缩GPU图像数据的每一行从第二高速缓存中自动逐出;利用在从第一高速缓存的后续预取操作期间取回的未压缩GPU图像数据的一行或多附加行重写已经在第二高速缓存中的未压缩GPU图像数据的一行或多行;以及根据需要从第一高速缓存中重取经解压缩图像数据一次或多次以构造输出图像。

在另一实施例中,该方法可以包括:从系统存储器中预取经压缩GPU图像数据的一个或多个图块并且将经压缩GPU图像数据放置在第一高速缓存中,经压缩GPU图像数据的一个或多个图块以构造输出图像所需要的顺序被选择;从第一高速缓存中预取和解压缩经压缩GPU图像数据的一个或多个图块,并且将经解压缩GPU图像数据放置在第二高速缓存中,一个或多个图块以构造输出图像所需要的顺序被选择;从第二高速缓存中预取经解压缩GPU图像数据的一行或多行,并且以基于后期调节矩阵构造输出图像所需要的顺序将所预取的经解压缩GPU图像数据的一行或多行写入第三高速缓存;以及通过根据调节矩阵遍历第三高速缓存中的经解压缩GPU图像数据的一行或多行来构造输出图像,并且将输出图像输出。附加的方法还可以包括:选择第一高速缓存、第二高速缓存和第三高速缓存的大小以支持预定范围的后期调节;在预取经解压缩图像数据的一个或多个图块时,预取足够数目的图块,使得构造输出图像的第一部分所需要的所有图块存在于第二高速缓存中;在预取经解压缩图像数据的一个或多个图块时,构造输出图像所需要的第一行被放置在第三高速缓存的中间处或附近,并且一行或多行中的每个其他行基于其在GPU图像中的相对位置在第三高速缓存中放置在第一行上方或下方;在显示器上绘制输出图像;根据需要执行附加预取操作,以从系统存储器中取回经压缩GPU图像数据的一个或多个附加图块,系统存储器中的经压缩GPU图像数据的一个或多个附加图块以基于后期调节矩阵构造输出图像所需要的顺序被选择并且被写入第一高速缓存中;根据需要执行附加预取操作,以从第一高速缓存向第二高速缓存取回和解压缩经压缩GPU图像数据的一个或多个附加图块,第一高速缓存中的经压缩GPU图像数据的一个或多个附加图块以基于后期调节矩阵构造输出图像所需要的顺序被选择并且被写入第二高速缓存;根据需要执行附加预取操作,以从第二高速缓存向第三高速缓存取回经解压缩GPU图像数据的的一个或多个附加行,第二高速缓存中的经压缩GPU图像数据的一个或多个附加图块以基于后期调节矩阵构造输出图像所需要的顺序被选择并且被写入第三高速缓存;当不再需要构造输出图像时,将未压缩GPU图像数据的每行从第三高速缓存中自动逐出;利用在从第二高速缓存的后续预取操作期间取回的未压缩GPU图像数据的一个或多个附加行重写已经在第三高速缓存中的未压缩GPU图像数据的一个或多个行;以及根据需要,重取经解压缩图像数据的一个或多个行可以从第二高速缓存中重取一次或多次以构造输出图像。

该技术还涉及实现本文中描述的一种或多种方法的系统。更具体地说,这样的系统可以包括一个或多个处理器以及其上存储有指令的一个或多个计算机可读介质,指令由一个或多个处理器可执行以将计算机系统配置为实现本文中公开的方法中的一种或多种方法。

图1是可以实践所公开的技术的联网计算环境100的一个实施例的框图。联网计算环境100包括通过一个或多个网络180互连的多个计算设备。一个或多个网络180允许特定计算设备连接到另一计算设备和与另一计算设备通信。所描绘的计算设备包括移动设备11、移动设备12、移动设备19和服务器15。在一些实施例中,多个计算设备可以包括未示出的其他计算设备。在一些实施例中,多个计算设备可以包括与图1所示的相比更多或更少数目的计算设备。一个或多个网络180可以包括诸如企业专用网络等安全网络、诸如无线开放网络等不安全网络、局域网(LAN)、广域网(WAN)和因特网。一个或多个网络180中的每个网络可以包括集线器、网桥、路由器、交换机和诸如有线网络或直接有线连接等有线传输介质。

可以包括补充信息服务器或应用服务器的服务器15可以允许客户端从服务器下载信息(例如,文本、音频、图像和视频文件)或者执行与存储在服务器上的特定信息相关的搜索查询。通常,“服务器”可以包括充当客户端服务器关系中的主机的硬件设备或者与一个或多个客户端共享资源或针对一个或多个客户端执行工作的软件进程。客户端服务器关系的计算设备之间的通信可以通过客户端向服务器发送询问访问特定资源或执行特定工作的请求来发起。服务器随后可以执行所请求的动作,并且向客户端发送回响应。

服务器15的一个实施例包括均彼此通信的网络接口155、处理器156、存储器157和解译器158。网络接口155允许服务器15连接到一个或多个网络180。网络接口155可以包括无线网络接口、调制解调器和/或有线网络接口。处理器156允许服务器15执行存储在存储器157中的计算机可读指令,以便执行本文中讨论的过程。解译器158可以包括用于将第一文件格式的第一文件解译成第二文件格式的对应的第二文件的映射逻辑(即,第二文件可以是第一文件的解译版本)。解译器158可以使用文件映射指令来配置,文件映射指令提供用于将第一文件格式的文件(或其部分)映射成第二文件格式的对应文件的指令。

移动设备19的一个实施例包括均彼此通信的网络接口145、处理器146、存储器147、相机148、传感器149和显示器150。网络接口145允许移动设备19连接到一个或多个网络180。网络接口145可以包括无线网络接口、调制解调器和/或有线网络接口。处理器146允许移动设备19执行存储在存储器147中的计算机可读指令,以便执行本文中讨论的过程。相机148可以捕获环境的彩色图像和/或深度图像。移动设备19可以包括捕获环境的图像的面朝外的相机和捕获移动设备的最终用户的图像的面朝内的相机。传感器149可以生成与移动设备19相关联的运动和/或取向信息。在一些情况下,传感器149可以包括惯性测量单元(IMU)。显示器150可以显示数字图像和/或视频。显示器150可以包括透视显示器。显示器150可以包括LED或OLED显示器。

在一些实施例中,包括网络接口145、处理器146、存储器147、相机148和传感器149在内的移动设备19的各种组件可以集成在单个芯片基板上。在一个示例中,网络接口145、处理器146、存储器147、相机148和传感器149可以被集成为片上系统(SOC)。在其他的一些实施例中,网络接口145、处理器146、存储器147、相机148和传感器149可以集成在单个封装内。

在一些实施例中,移动设备19可以通过采用相机148、传感器149和在处理器146上运行的姿态识别软件来提供自然用户界面(NUI)。利用自然用户界面,人的身体部位和运动可以被检测、解释并且用于控制计算应用的各个方面。在一个示例中,利用自然用户界面的计算设备可以推断人与计算设备交互的意图(例如,最终用户已经执行了特定姿态以便控制计算设备)。

联网计算环境100可以为一个或多个计算设备提供云计算环境。云计算是指基于因特网的计算,其中共享的资源、软件和/或信息经由因特网(或其他全球网络)按需提供给一个或多个计算设备。基于计算机网络图中用于将因特网描绘为其所表示的基础结构的抽象的云图,术语“云”被用作因特网的隐喻。

在一个示例中,移动设备19包括HMD,HMD向HMD的最终用户提供增强、混合或虚拟现实环境或混合现实环境。在增强或混合现实环境的上下文中,HMD可以包括视频透视和/或光学透视系统。由最终用户佩戴的光学透视HMD可以允许直接实际查看真实世界环境(例如,基于透明透镜),并且可以同时将虚拟对象的图像投影到最终用户的视场中,从而利用虚拟对象来增强由最终用户感知的真实世界环境。

利用HMD,最终用户可以佩戴HMD在真实世界环境(例如,客厅)中移动,并且感知覆盖有虚拟对象的图像的真实世界的视图。虚拟对象可能看起来与真实世界环境保持一致的空间关系(即,当最终用户转头或在真实世界环境中移动时,显示给最终用户的图像将发生变化,使得虚拟对象看起来存在于由最终用户感知的真实世界环境中)。虚拟对象也可以相对于最终用户的视点固定(例如,始终呈现为在最终用户的视点右上角的虚拟菜单,而不管最终用户如何转动头部或在真实世界环境内移动)。在一个实施例中,真实世界环境的环境映射可以由服务器15执行(即,在服务器侧),同时相机定位可以在移动设备19上执行(即,在客户端侧)。虚拟对象可以包括与真实世界对象相关联的文本描述。

在一些实施例中,诸如移动设备19的移动设备可以与诸如服务器15等云中的服务器通信,并且可以向服务器提供与移动设备相关联的位置信息(例如,移动设备的经由GPS坐标的位置)和/或图像信息(例如,与在移动设备的视场内检测到的对象有关的信息)。作为响应,服务器可以基于提供给服务器的位置信息和/或图像信息向移动设备传输一个或多个虚拟对象。在一个实施例中,移动设备19可以指定用于接收一个或多个虚拟对象的特定文件格式,并且服务器15可以向移动设备19传输在特定文件格式的文件中实施的一个或多个虚拟对象。

在一些实施例中,诸如移动设备19的HMD可以使用从面朝外的相机捕获的环境的图像,以便相对于环境的3D模型来确定与图像相对应的六自由度(6DOF)姿势。6DOF姿势可以包括与环境内的HMD的位置和取向相关联的信息。6DOF姿势可以用于定位HMD并且用于生成虚拟对象的图像,使得虚拟对象看起来存在于环境内的适当位置处。有关确定6DOF姿势的更多信息可以在美国专利申请序列No.13/152,220“Distributed AsynchronousLocalization and Mapping for Augmented Reality”中找到。有关对移动设备执行姿势估计和/或定位的更多信息可以在美国专利申请序列No.13/017,474“Mobile CameraLocalization Using Depth Maps”中找到。

在一些实施例中,诸如移动设备19的HMD可以以比核心绘制流水线或绘制图形处理单元(GPU)的绘制帧速率大的帧速率来想增强现实(AR)环境内显示虚拟对象的图像。HMD可以基于以比绘制帧速率更高的频率提供的经更新姿势估计来修改以绘制帧速率绘制的预绘制图像或前向预测图像。在一些实施例中,HMD可以以绘制帧速率(例如,每16ms)基于预测姿势来生成预绘制图像,在生成预绘制图像之后确定与HMD相关联的一个或多个经更新姿势(例如,每2毫秒),基于一个或多个经更新姿势和预绘制图像来生成一个或多个经更新图像,并且在HMD上显示一个或多个经更新图像。在一些情况下,一个或多个经更新图像可以使用诸如显示器150等显示器内的电路经由单应性(homographic)变换和/或像素偏移调节来生成。

图2描绘了诸如图1中的移动设备19等HMD 200的一部分的一个实施例。仅描绘了HMD 200的右侧。HMD 200包括右镜腿202、鼻柱204、眼镜216和眼镜框架214。右镜腿202包括与处理单元236通信的捕获设备213(例如,前向相机和/或麦克风)。捕获设备213可以包括用于记录数字图像和/或视频的一个或多个相机,并且可以将视觉记录传输给处理单元236。一个或多个相机可以捕获颜色信息、IR信息和/或深度信息。捕获设备213还可以包括用于记录声音的一个或多个麦克风,并且可以将音频记录传输给处理单元236。

右镜腿202还包括均与处理单元236通信的生物计量传感器220、眼睛跟踪系统221、耳机230、运动和取向传感器238、GPS接收器232、电源239和无线接口237。生物计量传感器220可以包括用于确定与HMD 200的最终用户相关联的脉搏或心率的一个或多个电极、以及用于确定与HMD 200的最终用户相关联的体温的温度传感器。在一个实施例中,生物计量传感器220包括压靠在最终用户的镜腿上的脉冲速率测量传感器。运动和取向传感器238可以包括三轴磁力计、三轴陀螺仪和/或三轴加速度计。在一个实施例中,运动和取向传感器238可以包括惯性测量单元(IMU)。GPS接收器可以确定与HMD 200相关联的GPS位置。处理单元236可以包括一个或多个处理器以及用于存储将在一个或多个处理器上被执行的计算机可读指令的存储器。存储器还可以存储将在一个或多个处理器上被执行的其他类型的数据。

在一个实施例中,眼睛跟踪系统221可以包括一个或多个面朝内的相机。在另一实施例中,眼睛跟踪系统221可以包括眼睛跟踪照明源和相关联的眼睛跟踪图像传感器。在一个实施例中,眼睛跟踪照明源可以包括一个或多个红外(IR)发射器,诸如发射约预定IR波长或波长范围的红外发光二极管(LED)或激光器(例如,VCSEL)。在一些实施例中,眼睛跟踪传感器可以包括用于跟踪闪烁位置的IR相机或IR位置敏感检测器(PSD)。关于眼睛跟踪系统的更多信息可以在于2008年7月22日发布的题为“Head Mounted Eye Tracking andDisplay System”的美国专利No.7,401,920和于2011年9月26日提交的题为“IntegratedEye Tracking and Display System”的美国专利申请No.13/245,700中找到。

在一个实施例中,眼镜216可以包括透视显示器,由此由处理单元236生成的图像可以被投影和/或显示在透视显示器上。透视显示器可以通过调制提供给显示器(诸如,硅上液晶(LCOS)显示器)的光或通过在显示器(诸如,OLED显示器)中生成光来显示虚拟对象的图像。可以校准捕获设备213,使得由捕获设备213捕获的视场(FOV)与HMD 200的最终用户看到的FOV相对应。耳机230可以用于输出与虚拟对象的投影的图像相关联的声音。在一些实施例中,HMD 200可以包括两个或更多个前向相机(例如,每个镜腿上一个),以便从与前向相机捕获的FOV相关联的立体信息中获取深度。两个或更多个前向相机也可以包括3D、IR和/或RGB相机。还可以根据运动技术利用深度从单个相机获得深度信息。例如,可以在不同时间点从单个相机获得与两个不同空间点相关联的两个图像。然后可以在给定关于两个不同空间点的位置信息的情况下执行视差计算。

在一些实施例中,HMD 200可以相对于一个或多个人眼元件(诸如角膜中心、眼球旋转的中心或瞳孔中心)使用注视检测元件和三维坐标系,来针对最终用户眼睛中的每只眼睛执行注视检测。注视检测可以用于标识最终用户在FOV内聚焦在哪里。注视检测元件的示例可以包括闪烁生成照明器和用于捕获表示所生成的闪烁的数据的传感器。在一些情况下,可以使用平面几何形状基于两次闪烁来确定角膜的中心。角膜的中心链接瞳孔中心和眼球的旋转中心,其可以被视为用于确定最终用户眼睛在特定注视或视角的光轴的固定位置。

图3示出了混合现实显示系统300的一个示例的功能框图。显示系统300可以包括形成透视显示子系统304的一部分的一个或多个透镜302,使得图像可以使用透镜302(例如,使用到透镜302上的投影、并入透镜302中的一个或多个波导系统和/或以任何其他合适的方式)被显示。显示系统300还可以包括被配置为获得用户正在观看的背景场景和/或物理环境的图像的一个或多个面朝外的图像传感器306,并且可以包括被配置为检测诸如语音命令等来自用户的声音的一个或多个麦克风308。面朝外的图像传感器306可以包括一个或多个深度传感器和/或一个或多个二维图像传感器。在备选布置中,代替包含透射显示子系统,显示系统300可以通过用于面朝外的图像传感器的取景器模式来显示混合现实图像。

显示系统300还可以包括被配置用于检测用户的每只眼睛的注视方向或聚焦的方向或位置的注视检测子系统310,如上所述。视线检测子系统310可以被配置为以任何合适的方式确定用户的每只眼睛的注视方向。例如,在所示的说明性示例中,注视检测子系统310包括被配置为引起光的闪烁从用户的每个眼球反射的一个或多个闪烁源312(诸如红外光源)以及被配置为捕获用户的每个眼球的图像的一个或多个图像传感器314(诸如面朝内的传感器)。根据使用(多个)图像传感器314收集的图像数据而确定的来自用户眼球和/或用户瞳孔位置的闪烁的变化可以用于确定注视方向。

另外,从用户的眼睛投影的注视线与外部显示器相交的位置可以用于确定用户正在注视的对象(例如,所显示的虚拟对象和/或真实背景对象)。注视检测子系统310可以具有任何合适数目和布置的光源和图像传感器。在一些实现中,注视检测子系统1110可以省略。

显示系统300还可以包括附加传感器。例如,显示系统300可以包括全球定位系统(GPS)子系统316,以允许确定显示系统300的位置。这可以帮助标识可以位于用户的相邻物理环境中的真实对象,诸如建筑物等。

显示系统300还可以包括一个或多个运动传感器318(例如,惯性、多轴陀螺仪或加速度传感器),以用于在用户佩戴系统作为混合现实HMD设备的一部分时检测用户头部的运动和位置/方向/姿势。可以将运动数据与眼睛跟踪的闪烁数据和面朝外的图像数据一起潜在地用于注视检测以及用于图像稳定,以帮助校正来自(多个)面朝外的图像传感器306的图像中的模糊。即使不能解析来自(多个)面朝外的图像传感器306的图像数据,运动数据的使用也可以允许跟踪注视位置的变化。

另外,运动传感器318以及(多个)麦克风308和注视检测子系统310也可以用作用户输入设备,使得用户可以经由眼睛、脖子和/或头部的姿态以及在某些情况下经由口头命令与显示系统300交互。应当理解,图3和图4中示出以及所附文本中描述的传感器被包括以用于示例的目的,而非旨在以任何方式进行限制,因为可以利用任何其他合适的传感器和/或传感器组合以满足混合现实HMD设备的特定实现的需求。例如,在某些实现中,可以利用生物计量传感器(例如,用于检测心脏和呼吸频率、血压、大脑活动、体温等)或环境传感器(例如,用于检测温度、湿度、海拔、UV(紫外线)光水平等)。

显示系统300还可以包括控制器320,控制器320具有通过通信子系统326与传感器、注视检测子系统310、显示子系统304和/或其他组件通信的逻辑子系统322和数据存储子系统324。通信子系统326还可以促进显示系统与诸如处理、存储、电力、数据和服务等远程资源一起操作。也就是说,在一些实现中,HMD设备可以作为可以在不同组件和子系统之间分配资源和能力的系统的一部分而被操作。

存储子系统324可以包括存储在其上的指令,该指令由逻辑子系统322可执行例如以接收和解释来自传感器的输入,以标识用户的位置和运动,以使用表面重构和其他技术来标识真实对象,以及基于到对象的距离使显示器变暗/变淡以便使得对象能够被用户看到,以及其他任务。

显示系统300被配置为具有一个或多个音频换能器328(例如,扬声器、耳机等),使得音频可以被用作混合现实体验的一部分。功率管理子系统330可以包括一个或多个电池332和/或保护电路模块(PCM)以及相关联的充电器接口334和/或用于向显示系统300中的组件供电的远程电源接口。

可以理解,显示设备19、200和300出于示例的目的被描述,因此并不表示限制。应当进一步理解,在不脱离本布置的范围的情况下,显示设备可以包括与所示出的传感器相比的附加的和/或备选的传感器、相机、麦克风、输入设备、输出设备等。另外,在不脱离本布置的范围的情况下,显示设备及其各种传感器和子组件的物理配置可以采取各种不同的形式。

HMD的一个示例是微软HoloLens,其是一副混合现实头戴式智能眼镜。HoloLens具有透视全息透镜,该透镜使用先进的光学投影系统从而以极低的延时生成多维全彩色全息图,因此用户可以在现实世界中看到全息对象。

传感器和相关的硬件(包括相机和处理器)位于HoloLens的前面。HoloLens还包含惯性测量单元(IMU)(其包括加速度计、陀螺仪和磁力计)、四个“环境感知”传感器、具有120°×120°视角的高能效深度相机、前向2.4百万像素摄影相机、四个麦克风阵列和环境光传感器。HoloLens包含用以捕获有关用户正在做的事情以及用户所处环境的信息的高级传感器。内置相机还使得用户能够记录(混合现实捕获(MRC))HD图片和周围世界的全息图的视频以与他人分享。

遮阳板内围着一对透明的合成镜,其中投影的图像显示在下半部。必须将HoloLens校准为瞳距(IPD)或用户习惯的视力。

沿着侧面的底部边缘,靠近用户的耳朵,是一对小型3D音频扬声器。扬声器不会阻挡外部声音,从而允许用户听到虚拟声音以及周围环境。使用与头部相关的传递函数,HoloLens生成双耳音频,其可以模拟空间效果;这表示用户实际上可以感知和定位声音,如同声音来自虚拟的精确位置或位置一样。

在顶部边缘上有两对按钮:左耳上方的显示亮度按钮和右耳上方的音量按钮。相邻按钮的形状不同(一个凹,一个凸),使得用户可以通过触摸来区分它们。

左臂的末端处是电源按钮和一行五个单独的小LED节点用于指示系统状态以及用于功率管理,从而指示电池水平和设置电源/待机模式。USB 2.0micro-B插座沿着底部边缘定位。3.5mm音频插孔沿着右臂的底部边缘定位。

除了中央处理单元(CPU)和GPU之外,HoloLens还具有定制的微软全息处理单元(HPU),这是专门为HoloLens制造的协处理器。HPU的主要目的是处理和集成来自传感器的数据,以及处理诸如空间映射、姿态识别以及声音和语音识别等任务。HPU根据实时数据处理来自HoloLens传感器的太字节的信息。

HoloLens的透镜使用光波导在三个不同的层上进行蓝色、绿色和红色着色,每个层具有衍射特征。每个组合器透镜上方的光引擎将光投射到透镜中,然后波长入射到衍射元件上并且沿波导重复反射直到输出到眼睛。与很多其他光学头戴式显示器类似,HoloLens的显示投影占据了用户FOV的有限部分,尤其是与通常覆盖更大的FOV的虚拟现实头戴式显示器相比。

HoloLens包含内部可充电电池,但是可以在充电的同时操作。HoloLens还具有IEEE 802.11ac Wi-Fi和蓝牙4.1低能耗(LE)无线连接。

利用HoloLens,用户可以利用姿态创建和塑造全息图,使用语音命令与应用通信,以及使用浏览、姿态、控制器和/或其他指示设备进行导航。HoloLens理解姿态、注视和语音,以使得用户能够以可能的最自然的方式进行交互。利用空间声音,HoloLens可以合成声音,因此用户可以从房间的任何地方听到全息图,即使它们位于用户身后。

关于Hololens的各种实施例的其他细节可以在以下各项中找到:于2014年7月25日提交的题为“Head Mounted Display Experiences”的美国临时专利申请序列No.62/029,351、于2015年1月20日提交的题为“Anti-Trip when Immersed in a VirtualReality Environment”的美国专利申请序列No.14/600,774、于2015年2月2日提交题为“Ground Plane Adjustment in a Virtual Reality Environment”的美国专利申请序列No.14/611,447、于2015年2月3日提交的题为“Smart Placement of Virtual Objects toStay in the Field of View of a Head Mounted Display”的美国专利申请序列No.14/612,850、于2015年4月16日提交的题为“Virtual Reality Environment with Real WorldObjects”的美国专利申请序列No.14/688,695、于2015年4月16日提交的题为“Three-Dimensional Mixed-Reality Viewport”的美国专利申请序列No.14/688,817、于2015年4月27日提交的题为“Gaze-Based Object Placement within a Virtual RealityEnvironment”的美国专利申请序列No.14/697,109、于2015年4月27日提交的题为“Use ofSurface Reconstruction Data to Identify Real World Floor”的美国专利申请序列No.14/697,227、于2015年5月27日提交的题为“Smart Transparency For HolographicObjects”的美国专利申请序列No.14/722,942、以及于2015年5月27日提交的题为“Multi-User Gaze Projection Using Head Mounted Display Devices”的美国专利申请序列No.14/723,065。

生成现实的增强、混合或虚拟现实环境的一个问题涉及与HMD的特定姿势相对应的世界锁定虚拟对象的图像被显示给HMD的最终用户的延迟或时间量。例如,如果最终用户的头部转离特定姿势的时间与基于特定姿势显示虚拟对象的图像的时间之间经过过多时间,则虚拟对象将似乎偏离其在增强现实环境中的预期位置(即,图像可能看起来未与预期的现实世界位置或对象对准)。因此,包括Hololens在内的HMD还可以包括用于以大于绘制帧速率的帧速率生成和显示与增强现实(AR)环境内的一个或多个虚拟对象关联的图像并且用于改善虚拟对象稳定性的技术。所显示的图像可以包括预先绘制的场景(即,以绘制帧速率绘制的前向预测场景)的后期图形调节,以便合并更高频率的姿势估计。绘制帧速率可以与用于绘制与头戴式显示设备(HMD)的姿势相关联的图像的最小时间相对应。HMD可以确定与HMD的未来位置和取向相关联的预测姿势(例如,未来10ms或20ms的HMD的预测姿势),基于预测姿势生成预绘制图像,在生成预绘制图像之后或与生成预绘制图像并发地确定与HMD相关联的经更新姿势,基于经更新姿势和预绘制图像来生成经更新图像,并且在HMD上显示经更新图像。经更新图像可以经由预绘制图像的单应性变换和/或像素偏移调节来生成。在某些情况下,经更新图像可以由显示器内的电路生成。

预测姿势可以基于HMD的当前位置和取向以及紧接在确定预测姿势之前的HMD的加速度和速度来确定(例如,通过基于在确定预测姿势之前的5ms或10ms的HMD的运动来推断预测姿势)。可以基于以比绘制帧速率更高的频率提供给姿势跟踪器的经更新姿势信息来确定经更新姿势。经更新姿势信息可以使用低延时惯性测量单元(IMU)或IMU和基于相机的姿势跟踪的组合来生成。经更新图像可以包括预绘制图像的至少一部分的图像旋转、平移、调节大小(例如,拉伸或收缩)、偏移或倾斜,以便校正预测姿势与经更新姿势之间的差异(例如,以补偿在生成预绘制图像时不正确的姿势预测)。经更新图像可以经由对预绘制图像的单应性变换来生成。在某些情况下,单应性变换可以包括仿射变换。经更新图像可以使用像素偏移调节或单应性变换和像素偏移调节的组合来生成。在某些情况下,可以在核心绘制流水线下游(例如,使用与显示器集成的控制器或处理器)来生成单应性变换和/或像素偏移调节。在其他的一些情况下,可以使用包含移位寄存器的显示器或用于允许在显示器的像素阵列内偏移像素值的其他电路来执行像素偏移调节(例如,类似于电荷耦合器件的操作)。

可以使用具有不同计算复杂度的各种图像重投影技术来生成包括前向预测的绘制图像的后期图形调节的经更新图像。图像重投影技术可以包括按像素重投影(例如,其中基于经更新姿势对绘制图像的每个像素进行重投影)、多平面单应性(例如,其中与3D场景内的多个平面相关联的多个绘制图像用于生成合成的经更新图像)、单平面单应性(例如,其中与3D场景内的单个平面相关联的单个绘制图像用于生成经更新图像)、仿射单应性和基于像素偏移的调节。3D场景内的2D平面(或一个或多个2D平面的集合)可以基于HMD的最终用户在特定时间段内一直关注的虚拟对象来确定。另外,可以使用眼睛跟踪来确定在特定时间段内(例如,在先前的50ms或500ms内)被最频繁查看的虚拟对象。在单个平面的情况下,单个平面可以基于在特定时间段内被最频繁查看的虚拟对象的深度来选择(即,单个平面可以基于增强现实环境内的被最频繁查看的虚拟对象的位置来设置)。在多个平面的情况下,可以基于与多个平面的接近度将增强现实环境内的虚拟对象划分为多个组;例如,如果近平面是最接近第一虚拟对象的平面,则第一虚拟对象可以被映射到近平面,而如果远平面是最接近第二虚拟对象的平面,则第二虚拟对象可以被映射到远平面。然后可以基于近平面生成包括第一虚拟对象的第一绘制图像,并且可以基于远平面生成包括第二虚拟对象的第二绘制图像。

另外,可以对预绘制图像的不同部分执行不同的图形调节,以便合并更高频率的姿势估计。例如,与HMD在第一时间点的第一姿势相关联的第一单应性变换可以被应用于预绘制图像的第一部分(例如,预绘制图像的顶部),并且与HMD在第一时间点之后的第二时间点的第二姿势相关联的第二单应性变换可以被应用于与第一部分不同的预绘制图像的第二部分(例如,预绘制图像的底部部分)。在扫描显示器或逐行扫描显示器的情况下,可以将第一单应性变换应用于与第一组扫描线相关联的像素,并且可以将第二单应性变换应用于与不同于第一组扫描线的第二组扫描线相关联的像素。可以将第一单应性变换应用于单个第一扫描线,并且可以将第二单应性变换应用于单个第二扫描线(即,可以以每条扫描线为基础来应用单应性变换)。

关于LSR的附加细节可以在于2016年11月16日发布的题为“Late StageReprojection”的美国专利No.9,514,571和于2016年8月3日提交的题为“Late StageReprojection”的美国专利申请序列No.15/227,453中找到。

在现有系统中,LSR调节由相对较小的滚动缓冲区支持。结果,在LSR调节过程中的任何给定时间,只有在特定时间点恰好在缓冲区中的那部分图像数据才可用于执行LSR调节,这可能显著限制可行的LSR调节的范围。另外,由于存储器大小和功耗限制,现有解决方案仅支持分色显示器。

通常,将一帧输入图像数据(由GPU生成并且保存在系统(DRAM)存储器中)变换为以用于在输出显示器上进行绘制的光栅顺序正确格式化的输出图像数据所需要的存储量通常根据LSR调节的复杂度、设备正在发送绘制图像的帧速率以及输出显示器绘制流水线的速度而变化。通过还考虑普通人的头部在给定时间间隔期间可以行进的运动量(即,平移和/或旋转),可以计算给定显示系统可以被设计为支持的预定最大LSR调节。然后,基于这些约束,可以优化输出显示器绘制流水线的组件,以便减少芯片尺寸以及带宽和功耗要求。本文中公开和要求保护的技术特别地旨在提供用于这样做的改进的高速缓存结构和方法。以下说明性示例将主要集中于由于用户的头部/HMD的旋转/倾斜引起的LSR调节,但是本领域技术人员将容易意识到,该技术可以适于考虑任何一种或多种类型的头部运动(包括旋转、平移和/或放大)的任何组合,以计算给定显示系统可以被设计为支持的预定最大LSR调节。

对于大小和功率要求,高速缓存应当尽可能合理地小,同时仍然足够大以容纳足够数目的输入图像数据行,以允许有效且及时地处理图像数据。可以适当地调节高速缓存的大小,使得输入图像数据的每个绘制行仅被获取一次,从而减少DRAM的带宽和功耗,并且可以将每行输入图像数据保留在高速缓存中,直到不再需要。高速缓存可以在需要之前预取数据(零延迟)。高速缓存还应当足够大使得每个预取周期取回足够数目的输入图像数据行,以便基于预定最大LSR调节,执行LSR调节所需要的输入图像数据的所有行均存在于高速缓存中。并且当不再需要时,高速缓存可以自动将其逐出。

通过这种高速缓存结构和方法,不需要等待GPU完成将完整的图像帧保存到DRAM。而是,一旦支持预定最大LSR调节所需要的足够数目的输入图像数据行已经被写入DRAM,就可以开始初始预取周期。连续预取周期之间的时间也可以基于高速缓存的大小、每个预取周期中取回的输入图像数据量以及输出显示图像绘制流水线的整体速度来优化。输入图像数据的行也可以以由LSR模块确定的构造显示图像所需要的顺序来预取。

还以一定顺序将输入图像数据读入并且放置在高速缓存中。通常,可以以由LSR模块确定的用以构造输出显示图像所需要顺序将输入图像数据写入高速缓存。输入图像数据在高速缓存内的这种相对定位还提供了数据的可预测且有序的遍历,以绘制输出显示图像。

现在将在以下示例的上下文中进一步解释前述概念。应当理解,以下示例被简化并且被提供以用于说明前述概念,而非旨在限制所附权利要求的范围。

接下来参考图4,图4示出了HMD的图像绘制子系统的某些相关部分的功能框图。系统400可以包括图形处理单元(GPU)402、系统存储器(DRAM)404和全息处理单元(HPU)406。HPU 406可以包括控制器408、LSR子系统410和高速缓存/缓冲区412。HMD显示器还可以配备有能够以六个自由度跟踪HMD的位置的位置跟踪子系统414、以及诸如HMD的透视增强现实显示器的显示器416。

GPU 402生成图像帧以输出到显示器。如上所述,这些图像可以包括可以被投影到显示器416上并且当用户通过HMD显示器416查看时可以被感知为叠加在真实世界环境上的文本、全息对象和其他视觉元素。通过当前技术,GPU可以绘制帧图像并且将其以每秒约30到60帧的速度保存到DRAM 404。如示意性地示出的,图像数据可以用单独的红色、绿色和蓝色帧进行颜色分离。分配给输入图像数据的存储量可以变化,并且取决于图像帧的分辨率,但是通常在重写先前保存的图像帧之前足以容纳两个图像帧。因此,以每秒60帧的速度,特定图像帧在被重写之前仅驻留在DRAM 404中约33毫秒。如果HMD保持完全静止(例如,无需平移和/或旋转,从而无需进行LSR调节),则由GPU生成的图像数据(下文中有时称为“GPU图像”或“输入图像数据”)可以经由高速缓存/缓冲区412从DRAM中读出图像,并且在没有任何图像变换或调节的情况下绘制在显示器416上。

每当GPU 402开始绘制特定GPU图像帧时,该图像帧都基于将GPU生成的图像帧实际投影到HMD显示器416上时预期HMD所处于的姿势的第一预测。然而,绘制过程花费时间并且将其发送到显示器花费时间,这在图像处理流水线中引入了一定量的延时。基于当前技术,该延时可以约为60毫秒。并且,如上所述,由于显示图像绘制流水线中涉及的延时,HMD移动到与第一预测姿势不同的姿势并不少见。在这种情况下,LSR子系统410使用第一预测姿势和经更新姿势预测,并且执行重投影GPU图像从而将其校正为与经更新姿势预测的新观点相一致所需要的所有计算。简而言之,LSR子系统可以使用矩阵变换(诸如单应性变换)来创建调节矩阵,该调节矩阵在逐个像素的基础上(并且对于每个分色帧)将已调节的输出或显示图像的每个像素的位置映射到原始GPU或输入图像的对应像素的位置。并且,本文中公开的高速缓存结构和方法被设计为从DRAM 404中读取原始GPU输入图像数据,并且以特别有效的方式以用于在HMD显示器416上进行绘制的光栅扫描顺序将其写出。

参考图5和图6。图5示意性地示出了由GPU 402产生的图像帧。在该示例中,GPU图像502被示出为包括十六行图像数据,其被示意性地示出为行A至P,并且每行图像数据可以包括多个像素。构成特定图像帧的行和像素的特定数目将取决于图像的纵横比和分辨率。为了进行以下讨论,GPU图像502的像素在u-v参考坐标系中进行说明,其中u坐标对应于图像帧内的特定像素或像素列的水平位置,v坐标对应于图像帧内的特定像素或像素行的竖直位置。GPU图像502可以由GPU 402逐行绘制,如图5中的虚线所示。同样,如果不需要LSR调节,则GPU图像数据502可以简单地经由高速缓存/缓冲区412从DRAM 404中读出,并且绘制在显示器416上,因为在显示器416上绘制图像所需要的数据的光栅顺序将直接对应于GPU图像数据502的顺序。

另一方面,图6示意性地示出了一种情况,其中在GPU 402开始绘制GPU图像502的时间之后,位置跟踪子系统414检测到与GPU图像502相关联的预测姿势已经改变,并且因此LSR调节是需要的。图6示意性地示出了说明性示例中的GPU图像502和经校正输出图像504,其中位置跟踪子系统检测到经更新预测姿势HMD从原始预测姿势在顺时针方向上旋转角度α。例如,当HMD的用户将其头部向右倾斜角度α时,用户将不期望其视场内的全息对象随其头部的旋转而旋转,而是期望全息对象保持它们相对于真实世界环境的位置和取向。因此,必须校正GPU图像502以解决这些差异,以构造与经更新预测姿势的位置相对应的经校正输出图像。

在图6中,GPU图像502被叠加在输出图像504的示意表示上。为了以下讨论,输出图像504的像素在x-y参考坐标系中进行说明,其中x坐标对应于图像帧内的特定像素或像素列的水平位置,y坐标对应于输出图像帧内的特定像素或像素行的竖直位置。LSR子系统410再次执行构造适当的显示或输出图像504所需要的所有计算,并且生成将输出图像504的每个像素映射到GPU图像502的适当的对应像素的调节矩阵。

在所出示例中,可以看出,为了绘制显示图像504,所需要的第一像素实际上将来自输入图像502的第五行(行E)。然后,随着处理继续(如图6中的虚线箭头示意性地表示的)以完成显示图像504的第一行,然后将需要来自输入图像502的第四行(行D)的像素,然后是来自第三行(行C)的像素,然后是来自第二行(行B)的像素,最后是来自第一行(行A)的像素。根据本文中公开的高速缓存结构和方法,从DRAM 404中取回输入图像数据502并且将其写入高速缓存/缓冲区412的方式被设计以便避免或至少最小化向输出图像绘制流水线添加任何附加延时。

本文中要求保护的系统和方法依赖于预测性预取模型和机制,使得在LSR调节的执行开始之前从DRAM 404中预取输入图像数据502的部分。例如,图7A示意性地并且出于说明目的仅示出了具有标记为C1至C9的九行的高速缓存412。可以根据上面讨论的原理来优化高速缓存412的实际大小。在一个实施例中,每个预取操作可以被设计为从DRAM 404中取回32行输入数据,包括四条(swath)数据,每条包含八行,并且高速缓存412的大小可以被设置为容纳一个或多个预取操作。

继续该示例,图7A还示意性地并且出于说明目的仅示出了输入图像数据502从DRAM 404的初始预取可以包括九行的输入图像数据502(即,行A至I),包括构造输出图像504的第一行(即,输出图像504的行1)所需要的前五行数据(即,输入图像502的行A至E)。可以基于构造输出图像504的速度(即,在预取周期之间的执行之前需要保持的行数)来优化在初始预取操作和/或任何后续预取周期期间所取回的输入数据的实际行数。

另外,可以通过以构造输出图像504所需要的顺序将输入图像数据502写入高速缓存412来进一步推进构造输出图像504的初始执行的开始。再次参考图7A,在所示示例中,将首先将输入图像数据的行E写入高速缓存,如702所示,然后是行D,如704所示,依此类推,直到在特定预取周期中取回的所有行均已经写入高速缓存412。对于初始预取操作,可以将构造输出图像504所需要的输入图像数据502的第一行(例如,行E)放置在高速缓存412的“中间”行(例如,行C5)处或附近。如图7A中在704至718处进一步所示,在初始预取操作中取回的输入图像数据的其他行可以根据它们的相对v值被放置在高速缓存412中,其中v值较低的行以v值的降序放置在行E上方,v值较高的行以v值的升序放置在行E下方。

一旦构成显示图像504的第一行所需要的所有行的输入图像数据502已经被写入高速缓存412,则可以开始执行将输出图像504绘制到输出缓冲区或显示器416。另外,以上述方式预取输入图像数据502并且将其写入高速缓存412可以帮助重新排序和组织高速缓存412中的输入图像数据502,使得能够产生高速缓存中的图像数据的可预测且相对简单的遍历以便以光栅扫描顺序构造输出图像504,如图8中示意性地示出的。例如,一系列虚线箭头802示意性地示出了以用以构造输出图像504的第一行的顺序对高速缓存412中的输入图像数据504的遍历。类似地,一系列虚线箭头804示意性地示出了以用以构造输出图像504的第二行的顺序对高速缓存412中的输入图像数据504的遍历,等等。

如在图6中可以看到的,当已经生成输出图像504的第二行并且处理已经移至输出图像504的第三行时,输出图像504将不再需要输入图像502的行A,并且可以将输入图像502的行A从高速缓存412中逐出。在适当地调节高速缓存412的大小之后,从高速缓存412的逐出仅在不再需要输入图像数据的特定行之后才发生,但是在后续预取操作期间取回附加输入图像数据并且将其写入高速缓存412时自动发生。

为了解决这个问题,可以将输入图像数据的v值用作高速缓存412中的索引,使得高速缓存412中存在的行以具有最低v值的行首先被重写的顺序被重写。这在图7B中示意性地示出。仅出于举例说明的目的,图7B假定在后续预取操作中已经从DRAM 404中取回图像数据502的附加的四行,并且已经以由附图标记720至726表示的顺序将其写入高速缓存412。换言之,此时在高速缓存中具有最低v值的行A(参见图7A)首先被重写,并且被输入图像502的行J重写,因为行J是在后续预取操作中从存储区DRAM 404中取回的构造输出图像504首先需要的输入图像数据行(与在后续预取周期中取回到的其他行相比)。

该高速缓存索引和替换策略可以在输入图像和显示图像都可以上下移动的前提下建立,这有助于简化索引和替换策略。另外,可以将高速缓存划分为列和图块,并且可以对前述过程进行划分并且可以对单独的数据块单独执行。例如,基于输入图像数据的u坐标,可以在每列内分别进行替换。类似地,基于输入图像数据的u和v坐标,可以分别对单个数据图块执行替换。

使用包括全息处理单元(HPU)的系统的上下文描述了以上讨论的实施例。然而,应当理解并且对于本领域技术人员将很清楚的是,以上讨论的原理可以容易地扩展为其他非HPU实现,包括但不限于SOC实现。

另外,尽管上述实施例预期以逐行为基础来预取和处理图像数据,但是应当理解并且对于本领域技术人员将很清楚的是,上述原理可以容易地扩展为一次获取和处理少于一整行的图像数据。例如,基于所需要的像素分组或有效粒度的图像数据的其他分组,可以使用相同的原理来获取和处理图像数据。

因此,可以看出,上面公开的改进的高速缓存结构和方法的大小被最佳地确定以支持预定范围的LSR调节,并且其中以消除从DRAM中重取输入图像数据并且使DRAM带宽和功耗最小化的方式智能地从DRAM中读出并且高速缓存图像数据。高速缓存结构的大小被最佳地确定以支持预定范围的LSR调节,并且高速缓存结构被管理,使得:高速缓存/缓冲区可以仅获取每行输入图像数据一次以减少输入带宽;高速缓存可以容纳足以构造输出图像的多行(但是仍然比完整图像少得多);高速缓存可以在需要之前预取数据,以便不对图像处理流水线增加任何附加延时;并且仅当不再需要构造输出图像时,高速缓存才可以逐出输入图像数据,而当不再需要时,高速缓存可以自动逐出输入图像数据。输入图像数据最初可以以开始绘制输出图像所需要的顺序被写入高速缓存,并且输入图像数据可以以使从高速缓存中读出输出图像数据的顺序能够预测的方式被写入高速缓存并且被组织。

上述的高速缓存结构和方法可以适于与压缩图像数据一起工作。在这种情况下,在将GPU生成的图像数据存储在DRAM 404中之前对其进行压缩,这可以在DRAM存储空间、功耗和带宽方面提供附加节省水平。图像数据可以在保存到DRAM 404之前进行压缩。通常可以将经压缩的图像数据划分为图块,图块通常可以表征为可以被压缩以实现期望压缩率的最小数据块或数据量。在这种情况下,由GPU生成的数据通过所选择的压缩算法以所选择的压缩率被压缩,并且作为经压缩图像数据被保存在DRAM 404中。

如在先前描述的实施例中,HPU 406可以以根据LSR调节矩阵构造输出图像所需要的顺序从DRAM 404中取回或预取压缩GPU或输入图像数据。然而,在这种情况下,GPU图像数据将作为一个或多个图块(与先前讨论的多行相反)从DRAM 404中预取。此外,为了处理来自DRAM 404的经压缩图像数据,高速缓存412'可以包括两个更多的物理上分离的高速缓存级别。在图9所示的一个实施例中,从DRAM 404中预取的压缩数据的(多个)图块可以在预取期间被解压缩并且以解压缩形式被保存到第一高速缓存(例如,图9中的L2高速缓存412b')中。与以上公开的其他实施例一样,输入图像数据以由LSR调节矩阵指导的构造输出或显示图像所需要的顺序从DRAM404中预取,仅这次输入图像数据是从DRAM 404以数据图块而不是单独的行来取回。并且,与先前的实施例一样,可以配置高速缓存结构和方法,使得给定数据图块仅从DRAM 404中预取或取回一次并且被保留在高速缓存412'中,直到不再需要构造输出或显示图像。

一旦经解压缩的图像数据位于L2高速缓存412b'中,就可以将数据从L2高速缓存412b'传送到物理上分离且较小的第二高速缓存(诸如图9中的L1高速缓存412a')。从L2高速缓存412b'到L1高速缓存412a'的数据传送由第二级预取操作并且以构造输出或显示图像所需要数据的顺序来执行。此外,从L2高速缓存412b'到L1高速缓存412a'的预取操作、未压缩图像数据在L1高速缓存412a'中的排序和放置以及从L1高速缓存412a'逐出这样的未压缩数据通常符合以上关于图7和图8的高速缓存412描述的方法和原理。并且,如前所述,选择各种预取操作(从DRAM 404到L2高速缓存412b'以及从L2高速缓存412b'到L1高速缓存412a'两者)的定时,使得输入图像数据在保持在显示图像的执行和输出之前时以及根据保持在显示图像的执行和输出之前的需要被预取,并且位于适当的L2或L1高速缓存中。

在另一实施例中,如图10所示,从DRAM 404中预取的经压缩数据的(多个)图块可以简单地在预取中被取回而无需解压缩,并且以压缩形式保存在诸如L3高速缓存412c'的第一高速缓存中。如上所述,经压缩输入图像数据的图块以由LSR调节矩阵引导的构造输出或显示图像所需要的顺序从DRAM 404中被预取,并且高速缓存结构和方法可以被配置为使得给定数据图块从DRAM 404中仅获取或取回一次,并且被保留在高速缓存412”中,直到不再需要用以构造输出或显示图像。在该实施例中,诸如L2高速缓存412b”的较小的第二高速缓存用于执行第二级别的预取操作以便以如LSR调节矩阵引导的构造显示图像所需要的顺序周期性地从L3高速缓存412c”中取回经压缩数据的一个或多个图块。经压缩数据在预取操作期间被解压缩,并且作为经解压缩数据被保存在L2高速缓存412b'中。最后,在另一级别的预取操作中,可以以由LSR调节矩阵引导的构造显示图像所需要的顺序从L2高速缓存412b”中预取更少量的图像数据,并且将其放置在诸如L1高速缓存412a”的甚至更小的第三高速缓存中。就相对大小而言,在一个实施例中,L3高速缓存412c”可以在约480KB的数量级,L2高速缓存412b”可以在约72KB的数量级,而L1高速缓存412c”可以在约2KB的数量级。

如先前关于图7和图8描述的实施例一样,存储在DRAM 404中的GPU图像数据的任何给定部分(无论该给定部分是由行、行的条、图块还是多个图块组成)都将从DRAM 404中取回或获取一次,并且在构造经调节的输出或显示图像的整个过程中仅一次。然而,在图9和图10的实施例中,经解压缩图像数据可以根据需要从L2高速缓存412b'、412b”被获取(或重取)并且被读入L1高速缓存412a'、412a”多次,以构造输出或显示图像。

在某些情况下,可能需要多个LSR处理引擎来处理帧,以减少LSR延时并且满足性能约束。例如,这些处理引擎可以同时对不同的颜色或图像的不同部分进行操作。取决于压缩算法,多个处理引擎可能需要访问相同的经压缩帧数据,这可能导致某些相同的数据被多次解压缩,从而导致增加的延时和/或功耗。例如,如图11中示意性所示,当使用多个LSR处理引擎时,GPU图像可以利用专用于每个分区的单独的LSR处理引擎来分区,诸如LSRPE0、LSR PE1和LSR PE2。然而,如图11的右半部分示意性地描绘的,在相邻的分区之间固有地存在重叠区域。由于压缩,在对帧数据进行解压缩时会增加功耗,尤其是在由于减小的高速缓存/缓冲区大小或多个处理引擎访问同一数据而需要对帧数据进行多次解压缩时。

为了解决这些问题,另一实施例可以提供如图12所示的高速缓存结构,这帮助减少(而不是消除)对同一数据多次解压缩的需求(从而进一步减少延时和功耗)。如上所述,GPU生成的图像数据在存储在DRAM 404中之前被压缩,这可以在DRAM存储空间、功耗和带宽方面提供附加节省水平。图像数据可以在保存到DRAM 404之前进行压缩。通常可以将经压缩的图像数据划分为图块,图块通常可以表征为可以被压缩以实现期望压缩率的最小数据块或数据量。例如,参考图12,如果整行GPU图像数据具有如在500处示意性示出的宽度U,则图像数据可以被分成一个或多个图块,诸如如在502处示意性示出的图块0至3,每个图块具有特定图块宽度。在该示例中,图像分为四个图块,但是图块的数目和宽度可以取决于特定情况而变化。并且,如图12中的以图形方式所示,图块的宽度可以与关联于LSR处理引擎LSRPE0、LSR PE1和LSR PE2(如图12中的虚线所示)的分区不一致。因此,可以容易看出,可能需要由多于一个LSR处理引擎访问某些图像数据块。例如,在图12所示的示例中,LSR PE0和LSR PE1都将需要访问图块1,同样,LSR PE1和LSR PE2都将需要访问图块2。

如在先前描述的实施例中一样,HPU 406可以根据与多个LSR处理引擎相关联的LSR调节矩阵以构造输出图像所需要的顺序,来从DRAM 404中取回或预取经压缩GPU或输入图像数据的一个或多个图块。在图13所示的实施例中,从DRAM 404中预取的压缩数据的(多个)图块可以简单地在预取中取回而无需解压缩,并且以压缩形式保存在诸如L3高速缓存512c的第一高速缓存中。与先前的实施例一样,经压缩输入图像数据的图块以由与多个LSR处理引擎中的每一个相关联的LSR调节矩阵引导的构造输出或显示图像所需要的顺序从DRAM 404中被预取,并且高速缓存结构和方法可以被配置为使得给定数据图块仅从DRAM404中被预取或取回一次并且被保留在高速缓存512c中,直到不再需要构造输出或显示图像。

诸如L2.5高速缓存512d的较小的第二高速缓存用于执行第二级预取操作,以便以由LSR调节矩阵引导的构造显示图像所需要的顺序周期性地从L3高速缓存512c中取回经压缩数据的一个或多个图块。压缩数据在预取操作期间被解压缩,并且作为经解压缩数据被保存在L2.5高速缓存512d中。

如图13进一步所示,L3高速缓存512c和L2.5高速缓存512d是所有LSR处理引擎均可访问的共享高速缓存。此外,可以为每个LSR处理引擎提供单独的专用高速缓存结构,如图所示。例如,L2高速缓存512b0和L1高速缓存512a 0可以被提供并且专用于LSR处理引擎LSR PE0,L2高速缓存512b1和L1高速缓存512a1可以被提供并且专用于LSR处理引擎LSRPE1,L2高速缓存512b2和L1高速缓存512a2可以被提供并且专用于LSR处理引擎LSR PE2,等等。该实施例的L2和L1高速缓存以与关于图10所示的实施例的L2和L1高速缓存所描述的基本相同的方式起作用,除每个高速缓存在与其对应的LSR处理引擎相关联的数据分区内进行操作之外。

当图块被存储在L2.5高速缓存512d中时,可以提供替换算法以最佳地重用经解压缩的帧数据。可以设计各种替换算法,其中一些替换算法可能相当复杂,因为给定图块应当在L2.5高速缓存512d中保留的时间量可以取决于多个处理引擎是否将需要访问该特定图块。然而,如果处理引擎大约在同一时间(时间上)访问相同图块(空间上),则可以使用简单的循环替换算法。这可以通过反转每个其他处理引擎的帧处理来实现,这在图13中以图形方式示出。如图所示,LSR PE0和LSR PE2可以从左到右处理图像(如虚线箭头所示),而LSRPE1可以从右到左处理图像(也如虚线箭头所示),所有LSR处理引擎在竖直方向上保持相同方向。在每个其他LSR处理引擎以相反的顺序工作的情况下,相邻处理引擎将在同一时间或大约同时开始或结束对同一图块的处理,这允许更快地访问和丢弃个体图块。

与现有技术相比,上述各种实施例具有以下优点。它们为LSR图像数据提供了多级压缩高速缓存,以减少存储需求和延时。它们“隐藏”了压缩延时。它们独立于压缩算法。它们使得图像处理分区能够在访问图像高速缓存时最大化空间/时间局部性。并且,它们使帧数据被解压缩的次数最小化。

此外,这些方法可以通过包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实践。特别地,计算机存储器可以存储计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时引起各种功能被执行(诸如在实施例中记载的动作)。

本发明的实施例可以包括或利用包括计算机硬件的专用或通用计算机,如下面更详细地讨论的。在本发明的范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种明显不同种类的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。

物理计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备(诸如CD、DVD等)、磁盘存储设备或其他磁性存储设备、或者可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可以由通用或专用计算机访问的任何其他介质。

“网络”被定义为使得电子数据的传输能够在计算机系统和/或模块和/或其他电子设备之间进行的一个或多个数据链路。当通过网络或其他通信连接(硬连线、无线或硬连线或无线的组合)将信息传输或提供给计算机时,计算机会将该连接正确地视为传输介质。传输介质可以包括可以用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且可以由通用或专用计算机访问的网络和/或数据链路。上述的组合也被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,可以将计算机可执行指令或数据结构形式的程序代码装置自动地从传输计算机可读介质传输到物理计算机可读存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终传输给计算机系统RAM和/或计算机系统处的易失性较小的计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在也(或者甚至主要地)利用传输介质的计算机系统组件中。

计算机可执行指令包括例如使得通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制文件、中间格式指令(诸如汇编语言)或甚至源代码。尽管已经以特定于结构特征和/或方法动作的语言描述了技术方案,但是应当理解,所附权利要求书中限定的技术方案不必限于上述特征或动作。相反,上述特征和动作被公开作为实现权利要求的示例形式。

本领域技术人员将理解,本发明可以在具有很多类型的计算机系统配置的联网计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器或可编程的消费类电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等。本发明也可以在分布式系统环境中实践,其中通过网络链接(通过硬连线数据链接、无线数据链接或通过硬连线和无线数据链接的组合)的本地和远程计算机系统均执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储设备中。

备选地或另外地,本文中描述的功能可以至少部分由一个或多个硬件逻辑组件执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序特定的集成电路(ASIC)、程序特定的标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。

在不脱离本发明的精神或特征的情况下,本发明可以以其他特定形式实施。所描述的实施例在所有方面仅应当被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前面的描述指示。落入权利要求等同含义和范围内的所有改变均应当被包含在其范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号