多功能PCIE交换机之五: 基于NTB的DMA

简介:

    如果说PCIE多功能桥中的NTB为跨节点的数据传输铺好路、架好桥的话,那么PCIE多功能桥中的DMA就是多个节点之间的高铁和航班。没有NTB打通数据通道,DMA也不可能跨越节点。但没有DMA的话,NTB还是可以依赖CPU来在多个节点之间搬运数据。因此DMA对NTB而言是如虎添翼、锦上添花。


    和NTB的单NT和双NTB配置相比,DMA可配置的选项比较多,但不管是中断模式、查询模式,也无论描述符是在DMA控制器片上还是片外,亦或配置成单个还是多个DMA channel,都有现成的代码可供参考或寄存器可以直接设置。那么多功能PCIE桥中基于NTBDMA有哪些方面需要额外关注的呢?


1、数据一致性

    当CPU或者DMA往本地内存(包括设备内存)读写数据的时候,可以使用的memory cache属性有write back,write combining, write throughuncache,具体要使用哪一种需要根据具体内存的属性和平台架构来选择。比如在ARM和龙芯2F/2HSOC上,由于硬件不支持自动维护cache一致性,所以用作DMA的源或者目的地址的那片内存区域的cache属性,需要设置成uncache;而在Intel的架构中,由于硬件能够自动维护cache一致性,所以无论设置成哪一种cache属性理论上都可以,但考虑到对性能的最小影响,可以设置成cache模式。但是涉及到基于NTB的跨节点的DMA数据传输,由于其数据链路既要穿越本地节点的link port/virtual port,又要穿过对侧节点的virtual port/link port,而且当前节点所看到的对方节点映射过来的内存可能被修改过,因此一定不能用cache模式。而且对于数据完整性要求苛刻的场景下,为了尽可能减少突然掉电对数据写的影响,write combining也不值得推荐,因为write combining会暂存部分可以合并的写请求直到超过硬件buffer的限制才一起写到内存,在此期间的突然掉电将会导致数据丢失。


2、对post write的额外处理

    利用NTB打通两个节点间的通道之后,不管是通过CPU还是DMA的跨节点的读写都是PCIE事务。特别的如果PCIE事务是post write transaction, 没等数据传到对方节点的物理内存,post write事务就直接返回了,requester此后就认为此次事务传输结束,显然如果后续对方节点到那块内存上去读数据,很可能无法得到最新的数据。因此,需要对post write事务进行额外的处理,以确保数据确实跨越NTB达到了物理内存。PCIE规范里对这点已经有额外的说明和建议。感兴趣的读者,可以仔细阅读PCIE规范1.0中第2.2.5章节和其他章节中关于PCIE事务order的要求。


3、对DMA描述符的清空

    DMA控制器本身不简单,但暴露给用户的接口却相当简单。一般说来,按照手册要求的格式构造好描述符、初始化好相应寄存器,然后往控制寄存器中的特殊位(比如DMA的控制器寄存器中的start bit)置1即可启动DMA传输,接着等待状态寄存器中的类似done bit被置位,就可认为所有的描述符都处理完。但是虽然DMA控制器处理完了所有的DMA描述符,所有的DMA操作就都完全完成了么?如何保证之前的所有DMA操作都完成,需要参考相应DMA模块的芯片手册、编程指南。有的手册会给出flush之前DMA描述符的方法。


4、DMA的恢复

在NTB/DMA实际使用的过程中,可能由于virtual port重启、系统掉电,或者DMA的描述符

错误等异常情况导致NTB/DMA无法再正常使用,比如下面的这些情况:


a.  virtual port所在节点和link port节点都掉电之后系统又重新启动,但是link port


早于virtual port被系统枚举到;


b. virtual port和link port都正常工作时,virtual port突然重启 (reboot, reset, 


c. chassis power cycle, chassis power reset等)


d. virtual port和link port一侧往mailbox写数据,但另一侧始终无法从对应mailbox


读到期望的值;


e. DMA传输开始后,DMA控制状态寄存器始终无法收到Normal  Done信号或中断;


f. 上层软件接受到异常的数据,认为需要reset NTB/DMA,发出recover指令



因此有必要在在尽可能减少系统宕机和对其他模块的影响的前提下,自动恢复NTB/DMA。

只要对NTB和PCIE深刻的了解,就不难实现对NTB/DMA的自动恢复机制。

















本文转自存储之厨51CTO博客,原文链接: http://blog.51cto.com/xiamachao/1734775  ,如需转载请自行联系原作者
相关文章
|
网络安全 网络架构
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
108 0
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
|
存储
DID功能在电话交换机中意思及设置
Direct Inward Dialing,即直接拨⼊。DID 号码是运营商分配的⻓号,全⽹唯⼀。具有DID 号码的企业内⽤⼾呼叫企业外⽤⼾时,根据系统配置,可以对外直接显⽰DID 号码。企业外⽤⼾可以直拨该号码呼通该⽤⼾。可以为DID 号码配置⼀个对应的短号(分机号),该短号⽤于企业内⽤⼾间互拨。
|
9月前
交换机的基本原理与配置(三)
交换机的基本原理与配置(三)
169 0
|
2月前
|
网络协议 网络虚拟化 网络架构
交换机入门快速配置
交换机入门快速配置
|
27天前
|
网络协议 安全 网络安全
二层交换机与防火墙对接上网配置示例
二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层特性,不支持路由等三层特性的交换机。 二层交换机一般部署在接入层,不能作为用户的网关
|
2月前
|
网络协议 安全 网络安全
二层交换机与防火墙对接上网配置示例
二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层特性,不支持路由等三层特性的交换机。 二层交换机一般部署在接入层,不能作为用户的网关。