多功能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  ,如需转载请自行联系原作者
相关文章
|
16天前
|
负载均衡 数据安全/隐私保护 网络架构
理解网络交换机:L2与L3交换机的功能与区别
理解网络交换机:L2与L3交换机的功能与区别
21 0
|
2月前
|
网络协议 网络性能优化 网络虚拟化
【亮剑】介绍了华为三层交换机的配置命令,包括基本配置(系统启动、接口配置、基础设置)、路由协议(OSPF、BGP)配置和高级功能(VLAN、ACL、QoS)配置
【4月更文挑战第30天】本文介绍了华为三层交换机的配置命令,包括基本配置(系统启动、接口配置、基础设置)、路由协议(OSPF、BGP)配置和高级功能(VLAN、ACL、QoS)配置。通过这些命令,网络工程师可以有效地管理设备、优化网络性能并解决网络问题。熟练掌握这些命令对于提升网络运行效率至关重要。
|
10月前
|
存储 安全 数据安全/隐私保护
交换机 功能详解
交换机 功能详解
927 1
|
网络虚拟化 数据安全/隐私保护
交换机vtp功能配置
交换机vtp功能配置
250 7
|
网络安全 网络架构
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
119 0
OSI七层模型的各个功能?路由器与交换机的区别?冲突域,广播域
WLAN无线局域网技术 基础(二)PoE与PoE交换机的功能,二层组网和三层组网的概念与方式,有线组网概念:直连式组网、旁挂式组网,CAPWAP协议
WLAN无线局域网基础、讲述了有线侧组网的概念,PoE与PoE交换机的功能,二层组网和三层组网的概念与方式,直连式组网、旁挂式组网,CAPWAP协议
WLAN无线局域网技术 基础(二)PoE与PoE交换机的功能,二层组网和三层组网的概念与方式,有线组网概念:直连式组网、旁挂式组网,CAPWAP协议
|
监控 安全 网络安全
工业交换机具体功能作用是什么
工业交换机也称工业以太网交换机,是工作在OSI第二层(数据链路层,见WAN的定义)的网络设备,基于MAC(网卡的媒体访问控制地址)进行识别,能够完成封装和转发数据包的功能。那么,工业交换机有哪些功能作用呢?接下来,让我们一起去了解更多吧!
|
存储
DID功能在电话交换机中意思及设置
Direct Inward Dialing,即直接拨⼊。DID 号码是运营商分配的⻓号,全⽹唯⼀。具有DID 号码的企业内⽤⼾呼叫企业外⽤⼾时,根据系统配置,可以对外直接显⽰DID 号码。企业外⽤⼾可以直拨该号码呼通该⽤⼾。可以为DID 号码配置⼀个对应的短号(分机号),该短号⽤于企业内⽤⼾间互拨。

热门文章

最新文章