微软AR/VR专利分享改善HoloLens内部PCIe数据链接传输
通过从错误条件中恢复而不需要重新传输数据来改善发射器节点和接收器节点之间的传输
(映维网Nweon 2023年12月27日)有线连接通常称为“硬链接”,它将一个节点物理地连接到另一个节点。一种有线连接是PCIe。PCIe是一种用于连接高速节点的接口,而尽管诸如PCIe等高速连接终端和协议提供了实质性的优势,但所述类型的终端需要高功率运行。对于头显这样的电池供电计算架构,这会给系统带来巨大的负担。
在名为“Error recovery and power management between nodes of an interconnection network”的专利申请中,微软介绍了通过从错误条件中恢复而不需要重新传输数据来改善发射器节点和接收器节点之间传输的方法,从而帮助减轻头显的系统负担。
在一个实施例中,启动数据流式传输。所述数据流包括不同类型的数据包。纠错码(ECC)选择性地施加在控制数据类型packet。发射器节点和接收器节点通过具有多个虚拟信道的硬链路连接。每个虚拟信道都与相应的功耗节点相关联。
当接收器节点接收到控制数据类型packet时,如果需要,则在不重新传输的情况下执行纠错。当针对每个虚拟信道发送最终数据类型packet时,发送器节点发送结束条件类型packet。对应于相应虚拟信道的相应功耗节点从活动状态转换到低功率状态。
特定实施例配置为通过识别跨虚拟通道的数据包传输何时完成,以及当数据包传输完成时通过令节点进入低功耗状态来改进电池供电设备的电力使用。
图2说明了一个互连网络200的示例。互连网络200可以包括任意数量的互连节点,例如节点205和节点210。节点205和210的示例可以是任何类型的计算组件,例如HPU全息处理单元。
如图所示,节点205通过高速链路215连接在节点210。高速链路215可以是支持高速数据传输的任何类型的物理信道连接。
发明描述的实施例可以虚拟化高速链路215以包括任意数量的虚拟通道。例如,硬链路240代表高速链路215。硬链接240显示为包括任意数量的虚拟通道,例如虚拟通道245、250、255和260。数据包显示为通过这些不同的虚拟通道传输,例如数据包265。
每个虚拟通道都与其各自的缓冲区相关联。例如虚拟通道245可以与缓冲区270相关联,并且虚拟通道250可以与缓冲区275相关联。其他虚拟通道与它们各自的缓冲区相关联。每个缓冲区可以有一个相应的缓冲区大小280。根据发明原理,硬件能够在各种请求者(即接收节点)之间保持信道带宽平衡。
图3和4是头戴式显示器的示例。
高速链路410A可用于在位于前端外壳的计算单元和位于后端外壳的计算单元之间传输高速显示数据和/或传感器数据。高速链路410A设计为具有低延迟,因此可以通过大量的计算周期或通信。相比之下,低速链路405A可用于提供电源、接地或开关机制。
图2中的高速链路215可以代表图4中的高速链路410A,图2中的节点205和210可以代表图4中所示的任何计算单元,例如显示电路420A、CPU 420B和440A、GPU 420C和4406、SOC 420D和HPU 440C。
图8列出了操作需求800。最初,操作需求800包括实时数据需求805。正如前面关于头显的讨论,用于向用户显示内容的头显具有实时需求805,所以希望避免重新传输数据。
另外,头显内容会根据诸多不同的因素动态变化,包括头显的姿势/方向,MR场景的场景变化,与全息图的交互等等。所以当在头显中实现时,可以要求从头显中的一个节点传输到另一个节点的数据以满足实时数据需求805。这意味着头显实现现在不具备重新传输数据的能力,就像传统系统遇到数据错误时一样。
由于实时数据要求805,解决或纠正错误的重新传输不可用。因此,微软的发明引入了一种新的技术来响应错误。
另外,操作需求800包括低开销需求810。如前所述,节点之间的硬链路带宽有限。发明所述原理提供了不仅符合实时数据需求805,而且可以在总线协议放置少量额外开销的纠错技术。
操作要求800进一步包括低功耗要求815。基于所述数据流的特定特征,实施例能够选择性地停用功耗节点以降低功耗。例如在头显环境中,实施例能够基于在节点之间传输的特定数据包的检测来令激光器进入低功率状态。
为了实现上述要求,实施例致使特定类型的数据包从数据流中的一个节点传输到另一个节点。图9示出了一个示例包900,它代表了图2中讨论的包。值得注意的是,数据包900可以采取不同的形式,包括控制数据类型数据包905、非控制数据类型数据包910和结束条件数据包915。
在所有虚拟通道完成发送其各自的数据流之后,完成发送其数据流的最后一个虚拟通道发送附加的最终结束条件包,以给出所有虚拟通道的状态。发送节点不为虚拟通道发送任何新的流量,直到所有虚拟通道完成为扫描传输各自的数据流。当发起新的扫描或发起新的帧时,虚拟通道将再次开始发送数据包。
控制数据类型包905这种包类型包括用于控制如何执行特定操作的控制数据。例如,参照头显示例,控制数据类型数据包905可以包括关于激光何时发射激光的定时信息、有效载荷类型信息、虚拟通道信息,并且可以进一步包括关于激光将在何处脉冲其激光的放置信息。
控制数据类型包905还可以包括指示要使用哪个通道或虚拟通道的报头信息。例如,头显的每个激光器可以与其各自的虚拟通道相关联。控制数据类型包905可以包括用于虚拟通道的相应激光器的控制信息和虚拟通道信息。
由于控制数据类型数据包905的重要性,数据包使用纠错码ECC 925进行保护。需要澄清的是,由于控制数据类型数据包905中包含的时间和位置信息差异压缩并且非常重要,因此使用ECC 925来保护数据免受传输过程中可能发生的错误的影响。
如果允许在控制数据类型包905中包含的数据存在错误,则整个扫描可能会遭到破坏,从而导致将伪影引入结果图像帧中。
图10提供了关于ECC 1000的附加描述,它代表图9的ECC 925。具体来说,ECC 1000至少包括两种类型的保护,包括单比特纠错1005和双比特纠错1010。
在一个实施例中,错误保护是x位错误校正和x+1位错误检测。选择ECC 1000以确保ECC 1000支持错误率。ECC 1000可以为每个控制数据类型数据包8位,或者根据控制数据类型数据包的长度选择其他位数。
回到图9,非控制数据类型数据包910是包含有效载荷信息的数据包,例如用于如何在扫描中照亮特定像素,例如颜色强度、持续时间、激光脉冲大小等。这样,非控制数据类型包910包括描述如何照亮像素的机制的像素数据930。
尽管在每个新的数据流中可以通过虚拟通道发送单个控制数据类型数据包,但在数据流中可能会发送任意数量的非控制数据类型数据包。另外,任何单个非控制数据类型数据包的损坏可能只导致单个像素损坏。
头显的刷新率通常在90 Hz到120 Hz之间,并且具有非常高的分辨率,所以用户可能不会注意到单个像素的损坏。鉴于所述条件,实施例选择性地避免对非控制数据类型数据包910施加ECC。发生在非控制数据类型数据包910的错误可以简单地接受,因为任何此类错误造成的影响都是微不足道的。
通过将ECC 925施加到控制数据类型包905,由于ECC 925允许在接收节点进行纠错和检测,因此无需重新传输控制数据类型包905,并可以进行实时处理,从而满足图8中的实时数据需求805。
类似地,通过仅对控制数据类型数据包905施加ECC 925,而不对非控制数据类型数据包910施加ECC 925,实施例满足低开销要求810,因为附加数据仅应用于单个数据包而不是多个数据包。所以额外的开销同样是微不足道的。
另外,通过施加ECC,实施例能够在检测到错误时自动恢复,从而满足了自动硬件恢复要求825。因此,实施例基于数据类型或更确切地说不同的数据包类型施加不同的数据保护要求。
结束条件包915是用于在数据流完成时触发的包。换句话说,结束条件数据包915是在所有非控制数据类型数据包发送后通过数据流发送的最后一个数据包。
如果在特定的扫描中没有像素被特定的激光照射,则可能没有控制数据类型的数据包或非控制数据类型的数据包在激光器相应的虚拟通道上传输。相反,只能发送结束条件包915。为了帮助减轻可能的错误,可以传输多个结束条件数据包。
图11显示了涉及多个虚拟通道1100的示例场景,并且正在传输图10中引入的三种不同的数据包类型。图11所示为有12个虚拟通道,数据流流自左向右流动的场景。另外,不同的包类型使用不同的着色技术进行说明。在这个示例场景中,每个虚拟通道对应于头显中的单个激光器,并且每个虚拟通道都有自己相应的数据流正在传输。
图11显示了通道1的数据流如何从一个控制数据类型数据包开始,然后包括五个非控制数据类型数据包,然后包括一个结束条件数据包。通道2类似,它包括一个控制数据类型数据包、两个非控制数据类型数据包和一个结束条件数据包。通道1和通道2正在传输数据,因为与通道对应的激光将用于照亮扫描中的像素。
另一方面,通道3对应于不会用于照亮扫描像素的激光。因此,通过通道3传输的数据流只包括一个结束条件包。这个结束条件数据包有益地通知相应激光将不用于这个特定扫描。
相应地,如果在特定扫描期间不打算使用激光,则为激光的虚拟通道传输的数据流将只包括一个或多个结束条件数据包。
图12以虚拟通道1200为重点,它代表了图11中的虚拟通道1100。图12显示了如何通过通道1传输结束条件包。所述结束条件包作为触发器1210操作,以通知所述系统相应的功耗节点可以从功耗模式转换为降低功耗模式。这种触发操作是有益的,因为系统现在知道功耗节点是空闲的,所以可以过渡到降低功耗模式。
例如在头显环境中,头显包括激光发射器1215,其本身包括激光器1215A、1215B和1215C。通道1是专门与激光器1215A对应的虚拟通道。通过通道1传输终端条件包使系统认识到激光器1215A的使用现在已经完成,因此可以从产生激光的有源模式1220过渡到低功率模式1225或甚至可能是关闭模式1230。
如图12所示,所述结束条件包触发了激光器1215A现在不再发射激光,而激光器1215B和1215C可能仍在发射激光的操作。参考图11,在每个不同的虚拟信道传输结束状态数据包,使得每个虚拟信道对应的节点过渡到低功耗状态,从而使系统能够保持电量。
简单地转回图11,通道1显示为传输结束条件数据包的最后一个通道。无论哪个虚拟通道最后传输结束条件数据包,则所述虚拟通道的数据流的任务是执行所谓的封装操作,其中结束条件数据包构成“最终”结束条件类型数据包1315,如图13所示。
最后的结束条件类型包1315向接收节点提供附加信息,表明所有其他虚拟通道的所有数据流都已完成。这种功能在头显环境中是有益的,因为最终结束条件类型数据包1315象征着扫描的结束。
相关专利:Microsoft Patent | Error recovery and power management between nodes of an interconnection network
名为“Error recovery and power management between nodes of an interconnection network”的微软专利申请最初在2023年8月提交,并在日前由美国专利商标局公布。
需要注意的是,一般来说,美国专利申请接收审查后,自申请日或优先权日起18个月自动公布或根据申请人要求在申请日起18个月内进行公开。注意,专利申请公开不代表专利获批。在专利申请后,美国专利商标局需要进行实际审查,时间可能在1年至3年不等。
另外,这只是一份专利申请,不代表一定通过,同时不确定是否会实际商用及实际的应用效果。