查看引用/信息源请点击:映维网Nweon
改进经由高速高带宽链路的发射机节点和接收机节点之间的传输
(映维网Nweon2023年02月07日)计算架构可以包括任意数量的互连节点,例如CPU、GPU、NIC和存储器等。不同的节点可以通过不同类型的连接(包括有线连接或甚至无线连接)彼此连接。
有线连接一般是指将一个节点物理接到另一个节点,例如PCIe。PCIe是一种设计用于将高速节点连接在一起的接口。PCIe链路有多种不同的配置,并可以包括不同数量的通道/信道,亦即允许数据从一个节点传输到另一个节点的路径。
尽管诸如PCIe这样的高速连接终端和协议提供了实质性的好处,但所述类型的终端可能需要高水平的功率来操作。对基于电池供能的计算架构时,更高的功耗会给系统带来巨大的负担,比如说HoloLens。
另外,在传输数据包时可能会发生错误。例如,瞬态误差可由任何数量的因素产生,包括环境因素。传统的总线一般是在检测到错误时简单地重新发送数据。但诸如HoloLens这样的系统对数据有实时需求(或近似实时的需求),所以重新传输可能不是可行的解决方案。
针对这个问题,微软在名为“Error recovery and power management between nodes of an interconnection network”的专利申请中提出了一种解决方案。概括来说,系统配置为从错误状态恢复而不需要重新传输数据,从而改进经由高速高带宽链路的发射机节点和接收机节点之间的传输。
在一个实施例中,启动数据流。数据流包括控制数据类型数据包和非控制数据类型的数据包。纠错码(ECC)选择性地施加在控制数据类型数据包上。ECC使得控制数据类型数据包中发生的错误能够在接收器节点处被纠正。当接收机节点接收到控制数据类型数据包时,如果需要,执行纠错。
实施例同时选择性地避免对非控制数据类型数据包施加ECC。当接收器节点接收到非控制数据数据包,并且响应于检测到的非控制数据类型数据包中的错误,实施例允许数据的损坏持续存在,因为它具有可接受的影响水平。
在一个实施例中,系统配置为通过识别在虚拟信道的数据包传输何时完成,以及通过在数据包传输完成时使节点进入低功率状态来改善电池操作设备的功耗。
在一个实施例中,发射机节点和接收机节点经由其上初始化有多个虚拟信道的有线连接。每个虚拟信道与对应的功耗节点相关联。
在一个实施例中,生成数据流,其中数据流包括数据类型数据包和结束条件类型数据包。发射机节点通过虚拟信道向接收机节点发送数据包。每个虚拟信道发送一个或多个数据包。对于每个相应的虚拟通道,执行多个操作。
一个操作包括识别何时在每个相应的虚拟信道发送了最终数据类型数据包;另一操作包括使发射机节点发送(针对该相应的虚拟信道)结束条件类型数据包;另一操作包括使对应于相应虚拟信道的相应功耗节点从活动状态转换到低功耗状态;在所有虚拟信道发送了最终数据类型数据包之后,发射机节点向接收机节点发送最终结束条件类型数据包。
图16示出了可以由诸如HoloLens等头显实现行的示例方法1600。其中,方法通过从错误状态中恢复,而无需通过链路重新传输数据。另外,所述实施例能够隔离错误行为或易出错信道(例如物理信道或虚拟信道),使得易出错信道不会影响其他信。
最初,方法1600包括发起生成数据流的动作(动作1605),数据流将包括不同数据类型的数据包,包括控制数据类型和非控制数据类型。
方法1600同时包括,生成控制数据类型数据包,并选择性地将纠错码(ECC)施加到控制数据类型的数据包上的动作(动作1610)。ECC被配置为使得能够在接收器节点处纠正在控制数据类型数据包中发生的错误。结果是,防止了控制数据类型数据包的重新传送,并且硬件能够自动从错误中恢复而无需重新传送。
控制数据类型数据包上的ECC配置为执行单比特纠错和双比特错误检测(即SECDED)。在特定情况下,ECC设计为执行x位错误校正和x+1位错误检测。
方法1600同时包括使发射机节点向接收机节点发送控制数据类型数据包的动作(动作1615)。例如,图11示出了如何在信道1上发送控制数据类型数据包。另外,每个频道或虚拟频道可以具有其自己的对应数据流。
在接收机节点处接收到控制数据类型数据包后,可以执行多个操作。例如,动作1620示出了在检测到错误时使用ECC对控制数据类型数据包执行纠错。可替换地,动作1625包括在没有检测到错误时抑制执行错误校正。
值得注意的是,当执行ECC时,执行所述ECC而不影响可能在其他信道或虚拟信道流动的数据流。为了澄清,通过实现专利描述的原理,一个信道上的错误(无论是虚拟的还是其他)不会影响其他信道的操作。
与动作1620或1625并行或甚至串联,方法1600示出了生成非控制数据类型数据包的动作(动作1630)。非控制数据类型数据包包括用于显示内容的像素数据。动作1630同时包括选择性地抑制对非控制数据类型数据包施加ECC。
例如,图11示出了如何仅对控制数据类型数据包施加ECC而不对非控制数据类型的数据包施加ECC。与将ECC施加在非控制数据类型数据包上相比,选择性地避免将ECC施加到非控制数据型数据包上的过程操作以减少带宽使用。由于每个数据流中通常只有一个控制数据类型的数据包,因此对数据包施加ECC只会对带宽和资源使用产生名义上的影响。
然后,使发射机节点(动作1635)开始向接收机节点发送非控制数据类型数据包。一旦在接收器节点处接收到非控制数据类型数据包,并且响应于检测到一个或多个非控制数据数据类型数据包中的损坏(即错误),方法1600包括允许损坏持续的动作(动作1640)。
微软指出,尽管控制数据类型数据包的未校正错误可能导致像素的整个扫描被破坏并导致伪影,但非控制数据类型的数据包的错误通常导致头显的仅单个像素的损坏。在HMD使用的刷新率下,单个像素伪影通常甚至不明显。
所以通过执行上述操作,实施例能够选择性地从数据流中的一些错误中恢复,而不需要重新传送数据包。这样的操作使得实施例能够满足数据数据包的实时要求,从而提高了系统的操作效率,同时也减少了虚拟信道的带宽使用。
图17中的方法1700配置为通过识别在虚拟信道的数据包传输何时完成,以及当数据包传输完成时使节点进入低功率状态/模式来改善功耗。
方法1700最初包括发起生成将包括数据包的数据流的动作(动作1705),其中数据包包括不同类型,例如数据类型数据包和结束条件类型数据包。
在一个实施例中,每个数据流可以仅包括结束条件数据包,或者可选地,包括一个控制数据类型数据包、任意数量的非控制数据类型的数据包和选定数量的结束条件数据包的组合。
方法1700同时包括生成数据包,并使发射机节点通过虚拟信道向接收机节点发送数据包的动作(动作1710)。每个虚拟信道发送以上述方式配置的其自己的对应数据流,使得每个虚拟信道传输一个或多个不同类型的数据包。
对于包括在多个虚拟频道中的每个相应虚拟频道,然后执行多个操作,如动作1715所示。具体地,动作1715A包括识别何时在每个相应的虚拟信道发送了最终数据类型数据包。
在动作1715A之后,存在使发射机节点发送(针对每个相应的虚拟信道)一个或多个结束条件类型数据包的动作1715B。在一个实施例中,发送的一个或多个结束条件类型数据包包括多个结束状态类型数据包。
确定要发送多少个结束条件类型的数据包可以基于不同的因素,包括统计最大错误率、可能导致瞬时错误可能性增加的检测到的环境条件等。在一个实施例中,针对每个相应的虚拟信道发送至少8个不同的结束条件类型数据包。在一个实施例中,可以为每个不同的虚拟信道发送不同数量的结束条件类型数据包。发送多个结束条件类型数据包的冗余可以防止这些数据包中的任何一个或多个可能发生的错误。
同样在动作1715A之后,存在使对应于该相应虚拟信道的相应功耗节点从通电或活动状态/模式转换到低功率状态/模式的动作1715C。
图11示出了多个虚拟信道,每个虚拟信道发送其自己的对应数据流。数据流可以包括控制数据类型数据包、非控制数据类型的数据包和结束条件数据包的组合,或者可选地仅包括结束条件数据包。
根据动作1715A,实施例能够识别何时发送最后的非控制数据类型数据包。响应于所述识别步骤,实施例能够使发射机节点发送结束条件数据包(或者可能是多个结束条件数据包)。
返回图17,在已经在所有虚拟信道上发送了最终或最后的数据类型数据包之后,方法1700包括使发射机节点向接收机发送最终结束条件类型数据包的动作(动作1720)。最终结束条件类型数据包通知接收机,数据流不仅对于所述特定虚拟信道,而且对于所有其他虚拟信道都是完整的。
因此,上述发明可以用于改进数据传输,并且可用于改善功耗。为了改进数据传输,实施例选择性地将ECC仅应用于特定类型的数据包,并且避免将ECC应用于其他类型的数据包。这样做只会导致资源使用的名义增加,但会带来实质性的好处,因为现在可以避免重新发送已损坏的数据包。实施例同时有利地在识别数据流中检测到特定类型的数据包的条件时将节点转换到低功率状态。
相关专利:
Microsoft Patent | Error recovery and power management between nodes of an interconnection network
https://patent.nweon.com/26852
名为“Error recovery and power management between nodes of an interconnection network”的专利申请最初在2022年10月提交,并在日前由美国专利商标局公布。