Linux环境下DMA的研究与应用---饶兵兵(4)

2019-03-16 19:11

武汉科技大学本科毕业设计

3. I/OAT DMA体系架构

3.1 I/OAT技术的介绍

越来越多的业务的成功依赖于快速的数据传输和处理。网络应用类型的不断创新,也在快速提升对于网络效能的需求。比如,IDC(Internet Data Center,互联网数据中心)调查报告显示面世时间不长的iSCSI存储系统近几年推动了600%以上的以太网数据包的增长。

然而自从上个世纪80年代起,IT技术有了巨大的进步,但是TCP/IP(网络堆栈)的处理方式却几乎没有变化。也就是说,即便用户使用最先进的CPU依然要处理那些未经优化的TCP/IP协议,由此产生巨大的系统开销并不奇怪。比如,TCP/IP协议的传输过程中需要封装、解包,这些动作对于处理器而言并不是一个复杂的过程,但是却是会占用处理器周期,而且网络带宽越高,这个问题越严重。当然了系统开销的增大不仅仅表现在占用较多的处理器周期,还会导致处理网络相关数据导致时的内存访问效率降低的问题。这又会进一步的降低CPU效能和网络效率。

这些问题已经引起了业界的普遍关注,并且已经有了以下几种解决方案: ? TOE(TCP Offload Engine,TCP卸载引擎)通过网卡上的专用处理器处理部分或者全部的封包,借此来降低对于系统处理器资源的占用,不过这种解决方案也只是对于具有某些特征的数据包有效;

? RDMA(Remote Direct Memory Access,远程直接内存访问)是发送端系统直接将有效数据送至目的系统的指定的内存中,无需移动数据包的时间消耗,因此大大提升了网络传输的效率。但是这种技术需要专用的网卡,应用程序也需要进行修改,甚至还增加了一个RDMA层的封装过程,而且这种操作风险较高,因此目前看来还并非一个吸引人的解决方案;

? Intel? I/OAT(Intel? I/O Acceleration Technology)是一个整合于系统平台中的用于移动数据、访问数据和降低网络I/O过程中系统开销的I/O解决方案。Intel I/OAT可以帮助从服务器应用程序中更快、更高效(占用更少的CPU周期)的获取数据。

相比于其它两种方法,Intel? I/OAT主要在以下三个方面解决网络I/O瓶颈: ? 降低系统开销 ? 实现流线型内存访问 ? 优化TCP/IP协议计算

Intel? I/OAT通过适度的中断、适度的内存访问、并行计算、数据移动和减少上下文切换等措施来降低系统开销。比如通过预取操作来提升内存访问和数据移动效率,直接访问子系统可用于卸载数据移动和异步拷贝,TSO(TCP segmentation offload)运算转移给网卡(NIC)或者板载LAN控制器(LOM),并且在数据流和特定的处理器核心之间建立密切的联系。这些技术可以降低网络I/O过程中的CPU占用率,包括协议计算,并

12

武汉科技大学本科毕业设计

且明显的降低由于缓存未命中和Cache line bouncing所引起的CPU停滞。

图3.1 I/OAT 技术

如图3.1所示,Intel? I/OAT涉及到服务器系统的方方面面:

? Network Flow Affinity:分割网络堆栈处理并且动态的分配到多个物理或者逻辑CPU,这种方式可以使得数据得到更快的处理。

? 异步低成本拷贝:采用了增强型DMA,可以用更少的CPU时钟从系统内存中的网卡缓冲区复制有效数据到应用程序缓冲区,节约下来的CPU资源可以进一步提升应用程序的负载能力。

? 通过优化TCP/IP栈改进TCP/IP协议:主要优化分离封包头部和有效数据的处理。结合与栈相关的改进可以降低处理协议的时钟数量。

3.2 I/OAT DMA软件接口

3.2.1 I/OAT DMA 介绍

Intel? Jasper Forest 芯片集成了一个高性能的I/OAT DMA引擎,主要用来优化数据在内存中的传输。在数据传输过程中,尽量获得较高的系统总性能的同时降低CPU的使用率,而且还具有传输延时时间短、数据量输出高等特性。

I/OAT DMA 拥有8个相对独立DMA引擎,而且每个引擎拥有一个DMA通道,这些通道都遵循Crystal Beach 3(CB3)。然而随着CB3.2的推出,I/OAT DMA支持的功能也越来越多,特别是针对于存储行业而提出的XOR(多个数据源异或输出) 和PQ(在

13

武汉科技大学本科毕业设计

有限域乘积的基础之上进行多个数据源的异或输出)操作,以及在以Raid5和Raid6为技术背景下,对于数据的安全性提供了一个更为可靠性的保障。

为了充分使用DMA能力,我们则可以通过软件建立一个描述符链。每个描述符详细的描述了数据在内存中的传输。为了传输更多的数据块,可以将那些具有不同的数据源地址、目标地址、传输的数据的大小等的多种描述符捆绑在一起组成一个DMA描述链。在DMA描述符链中,我们则可以通过描述符中下一个描述符的地址来获取下一个描述符,这样在一旦软件发起DMA传输,DMA引擎完成对整个描述符的遍历而无需任何中断。

3.2.2 I/OAT DMA链式描述符的介绍

链式传输方式是指DMA的通道参数(源基地址、目标基地址、数据传输量、下一次描述符指针及其它参数,一组参数我们称为一个描述符)放在DMA外的存储设备内,当前DMA过程完成后DMA引擎从指针寄存器指向的地址中把新的通道参数读入DMA内,按照新的参数要求进行新的DMA传输过程。由于这些通道参数放在不同的(或相同的)存储区内,上一组通道参数指出下一组通道参数的存放位置,好像链子联接起来一般,如图3.2所示,故称为链式传输方式。处理机完成DMA和这些参数链的初始化后,只要DMA接到一个有效的DMA请求,DMA将按照以上的操作反复进行“一个DMA过程——取通道参数”,直到最后一个描述符要求的DMA过程传输完成。在链式方式下DMA通常有两个判断全部描述符完成的方法。一种方法是把最后一个描述符的下一个描述符指针置全零(NULL),规定描述符指针全零(NULL)表示通道参数链的结束;另一种方法是在描述符中附加一些特殊参数,用这些特殊参数的特定含义表示通道参数链的结束。当DMA检测到参数之后,在最后一个DMA过程完成后结束整个链式传输过程,并产生一个中断。

14

武汉科技大学本科毕业设计

Start Descriptor Address in CHAINADDR registerDescriptor ControlTransfer SizeDescriptor of 1st BlockSource AddressDestination AddressNext Destination AddressOperation specific informationDescriptor ControlTransfer SizeDescriptor of 2st BlockSource AddressDestination AddressNext Destination AddressOperation specific informationDescriptor ControlTransfer SizeSource AddressDestination AddressNext Destination AddressOperation specific information图3.2 I/OAT DMA描述链

Descriptor of nst Block由于CB体系是以描述符环为基础的,所对于I/OAT DMA 支持链式传输模式,只不过使用一个基描述符和零个或是多个附加描述符来描述一个任务体。对于基描述符包括传输的控制信息(DMA操作类型和提示控制)、数据源的地址、目标地址、传输的大

15

武汉科技大学本科毕业设计

小、下一个描述符的地址指针等;而对于附加描述符在某些操作类型中需要一些额外的信息和下一个描述符的地址等。

3.2.3 I/OAT DMA通道的操作

对于DMA通道的操作,我们则是通过相关寄存器的设置来完成DMA 通道的工作。而对于I/OAT DMA引擎则提供了一个一致性的软件接口,这样方便编程。

下图所示,是描述DMA通道状态的变换:

PowerOn or ResetWrite CHAINADDRHaltedAbort ConditionArmedOperation AbortCompletedConditionAbort ConditionWrite DMACOUNTSuspendPending Write CHANCMDSuspend DMAActive Operation CompletedWrite CHANCMD:SuspendDMALast OperationprocessedWrite DMACOUNTAbort conditionDMA IDLE

图3.3 IOAT DMA 通道的状态机

由上图可知道,对于一个DMA通道有如下5种状态: ? Halted ? Armed ? Active

16


Linux环境下DMA的研究与应用---饶兵兵(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2018中小学教师素质提升计划范文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: