您好,欢迎来到好兔宠物网。
搜索
您的当前位置:首页PCIe组播/多播相关介绍(Multicast Operations)

PCIe组播/多播相关介绍(Multicast Operations)

来源:好兔宠物网

✨ 1. PCIe组播基本介绍


👉1.1 背景介绍

  相较于单播,组播能够把数据发给一组设备,避免了发送重复的数据流,能够提升系统传输性能;相较于广播,组播具有更好的指向性和安全性。更多PICe组播的益处,请参考 《Why PCIe-Based Systems Need Multicast》。
下图(图1)是一个日常使用PCIe组播的例子。本例中,作为EP的视频设备同时发送视频数据到显示器及两个存储器。

图1 组播系统举例

👉1.2 组播操作基本概念

✨ 2. PCIe组播软件配置

👉2.1 组播能力结构

图3 组播扩展能力结构

  具备PCIe组播能力的switch需要实现组播扩展能力结构,组播扩展能力结构如图1所示。组播扩展能力结构中的寄存器及其用途如下:

  • Multicast Extend Caoability Header : PCIe组播扩展能力头标(图4),包含了PCIe组播扩展能力的ID、扩展能力版本,并指向下一能力。
  • Multicast Capability Register :组播能力寄存器(图5),MC_Max_Group用以指明该组件支持的最大组播组数目(N表示最大支持N+1组,N最大为63组),MC_Window_Size_Request用以指示EP需要的组播窗口大小,MC_ECRC_Regeneration_Supported指示是否支持ECRC重构。
  • Multicast Control Register:组播控制寄存器(图6),具有组播能力结构的组件在MC_Enable置一后才启动组播机制,MC_Num_Groupu用以指示用户需要启用的组播组数(N表示启用N+1组),超过MC_Max_Group的组播组将不会启用组播。
  • MC_Base_Address Register:组播基地址寄存器(图7),MC_Base_Address用以设置组播地址范围的基地址,基地址低12bit为0;MC_Index_Position指示基地址中最低有效位。
  • MC_Receive Register:组播接收控制寄存器(图8),有效位为bit[MC_Max_Group:0],bit[N]置一表示该function将复制一份组播事务并发给组播组N。
  • MC_Block_All Register:组播阻塞所有事务控制寄存器(图9),有效位为bit[MC_Max_Group:0],bit[N]置一表示该function不会向组播组N发送任何组播事务。
  • MC_Block_Untranslated Register:组播阻塞透明传输控制寄存器(图10),有效位为bit[MC_Max_Group:0],bit[N]置一表示该function不会向组播组N发送透传传输(未转换地址)的组播事务。
  • MC_Overlay_BAR Register:MC_Overlay控制寄存器(图11),在MC_Overlay机制中使用,用于改变组播事务中的访问地址。MC_Overlay_Size用以重新定义地址空间的大小,MC_Overlay_BAR用以设置重定向的地址。

图4 组播扩展能力头标

图5 组播能力寄存器

图6 组播控制寄存器

图8 组播接收控制寄存器 

图9 组播阻塞所有事务控制寄存器

 

图10 组播阻塞透明传输控制寄存器

 

图11 MC_Overlay_BAR register

👉2.2 组播窗口大小设置


  组播事务的多个最终接收者组的播窗口大小是很有可能不同的。一个极端例子,某个组播窗口需要的窗口大小可能会覆盖整个设备的存储空间范围。反之,某个组播窗口大小可能仅需要覆盖FIFO寄存器内一小段特定的偏移。为了应对这种情况,EP通过设置其组播能力寄存器内的组播窗口大小域MC_Window_Size_Requested来表明该EP需要的窗口大小。


👉2.3 Host组播范围配置

  对于缺少IOMMU的嵌入式系统而言,把组播窗口内存空间配置得与主机内存直接重叠反倒更灵活一些。

👉2.4 RC组播设置


  根据实际需求,支持组播能力的多RP的RC中可以实现多个组播能力结构。若需要多个组播能力结构,软件应设置每个组播结构中的各个域。为了支持到RCiEP的组播,实现时需要把所有经MC_Base_address确认过的组播TLP暴露给RCiEP内所有潜在的组播目标EP。RCiEP依据其组播能力结构内的MC_Receive寄存器来决定是否接收该TLP。


👉2.5 多function设备组播设置

👉2.6 组播能力结构更新规则


  组播能力结构中部分域支持随时更新,包括MC_Enable, MC_Num_Group, MC_Receive, MC_Block_All, MC_Block_Untranslated。在更新这些域的值的时候必须按顺序更新。采用相同TC的两笔TLP A和B先后从相同入端口到达,若A在某个组播域把值更新为X,则B相同域也应更新为X或者采用更新的值。

  除可随时更新的域之外,其他域只有在组件内所有function的MC_Enable都清零后才能更新,这样的组播域有MC_Base_Address, MC_Index_Position。
 

✨ 3. PCIe组播事务处理


👉3.1 组播事务触发与路由


📌 PCIe组播事务需满足以下三个条件:

  在支持组播的交换节点所有function及多function上行端口中,应把MC_Enable、MC_Base_Address、MC_Index_Position及MC_Num_Group等相同的域通过软件配置为相同的值,这样交换节点入端口及其他组件可以使用其任意一个function的MC相关域的值。如若不然,入端口就有可能取到不同的值而导致不确定的情况发生。
 

  对于switch及RC,若TLP在该组件中没有被阻塞,且从TLP提取出的MCG在MC_Receive寄存器中的对应位都有置一,那么该TLP会被前推到该组件除入端口外的所有端口;对于EP,该TLP会被所有function接收;若没有port前推或function接收该TLP,该TLP会被静默丢掉。

  为了防止形成组播环路,即便RP或Switch Port的MC_Receive设置符合转发条件,也绝对不能沿入端口推回该TLP。有一个例外,若RC收到了一笔单播请求且刚好落在了其组播窗口内,这时RC可以沿其该请求进入RC的相同入端口反向前推该请求。

👉3.2 PIO组播事务的透传

  • 实现了组播能力结构的RCiEP应支持未转换地址的组播事务访问控制;
  • 实现了组播能力结构的P2P(peer-to-peer)RP应支持P2P转发未转换地址的组播事务访问控制。

  同样,建议多function设备EP都能够实现组播能力结构。

👉3.3 组播事务如何重定向

👉3.4 组播事务排序


  组播事务没有其独特的排序方法。组播事务为转发请求,遵循转发请求相关的排序规则。


👉3.5 组播事务阻塞处理


  若组播事务被MC_Block_All或MC_Block_Untranslated机制阻塞住了,该笔事务会被丢弃。阻塞住该笔事务的function就是该事务的完成者,完成者必须按照常规的错误处理方式记录并上报MC_Blocked TLP错误。此外,完成者必须在其状态寄存器或第二状态寄存器合适的地方将Signaled Target Abord位置一。为了隔离错误并分析错误原因,强烈建议在具有组播能力的function内实现AER。

  在RC或switch内,如果入端口接收TLP时发生错误,则由入端口上报错误。若EP function在准备发送TLP的过程中出现错误,则由EP function上报错误。
 

✨ 4. MC_Overlay机制


👉4.1 MC_Overlay机制介绍


👉4.2 ECRC重构


  MC_Overlay机制下的ECRC如下表(表1)所示。

表1 MC_Overlay ECRC规则

  对于开启了MC_Overlay机制但不支持ECRC重构的端口,可以穿过端口的组播TLP中剥离ECRC,这是接收端EP可以开启ECRC校验。这种情况下,EP将受益于非组播TLP的ECRC,而不用检测MC_Overlay机制修改过后的组播TLP的ECRC。

✨ 5. 其他


👉5.1 组播到不支持组播能力的EP

👉5.2 组播拥塞避免


  组播的使用增加了switch输出链路的使用率,组播组的越大、组播流量在总流量中占比越大,输出链路的使用率越高。这无疑会增加拥塞的风险。为了减小组播造成的拥塞风险,有意作为组播目标的组件应把组播TLP的处理速度设计得足够快(线速),有意作为组播源头的组件也应有对应机制组播发出的速度(不要过快)。

  在许多应用程序中,应用程序的组播数据流会有一个固有的速率且不会造成拥塞。此外需要明确的机制来组播注入的速率,需要选择带有足够缓冲区的switch以在未开启流控的情况下存放burst组播数据,或选择一个能够以所需速率处理组播事务的目标组播组件。选择一套好的机制及组件来服务于应用,这是一个好的系统设计者应做到的。
 

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

 

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- howto1234.com 版权所有 湘ICP备2023017662号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务