用于带有PCIe的嵌入式系统的散/聚式DMA

2012-04-03 09:46:44来源: 互联网
新一代的互联需求持续不断地向软硬件设计施加压力。不断提高的服务质量(QoS),数据信道隔离,数据平滑恢复和完整性等,都是值得考虑的一些指标要求。PCIe就是能够满足上述要求的一种互联技术。

FPGA中实现一个PCIe接口时,为了确保系统效率,系统抖动,数据时钟开销以及必须满足的端到端总带宽需求,设计师必须考虑数据传输的方式。将一个/聚DMA(SGDMA)与一个PCIe接口结合起来,通过从本地处理器上卸载一些数据传输负担,以及均摊多通道间的硬件延迟,非常有助于软硬件设计师满足他们的设计需求。本文将讨论采用基于FPGA的SGDMA与PCIe相结合的一些优点。

绝大部分的新型DMA控制器都支持散/聚功能,这里,硬件负责数据的转移,驻留在不连续的物理存储器中,不需要主处理器来处理模块间的数据转移。这是通过将DMA缓冲器描述符“链接”到一起来实现的,每个描述符中都含有使SGDMA自动执行数据转移所需的所有信息。当处理支持虚拟存储器的操作系统时,SGDMA得到最普遍的采用。

直接存储器访问实现方案

衡量DMA控制器的收益有以下几种方法:通过定量分析究竟重新获取了多少时钟周期?相关设备驱动的复杂度减少了多少?或者由于“隐藏”数据分发的开销使DMA引擎增加了多少系统总吞吐量?增强型DMA引擎支持的一些功能包括:

* 在线分组缓冲存储

* 本地和前端总线的同时传输

* 延时处理

* 终端事物处理抢断

* 为DMA控制器连接的每条总线提供独立仲裁

当前端和本地总线处于超高负载条件下且传输数据前DMA控制器必须竞用并获取总线占有权时,可以采用在线数据缓冲器。

图1:虚拟存储器环境中的SGDMA控制器。
图1:虚拟存储器环境中的SGDMA控制器。

在FPGA中使用块存储始终是下面几方面的折中,即由于总线占用究竟需要多少临时缓冲器?FPGA中的功能是否需要存储器?使用中间数据存储所导致的附加延迟的代价如何?如果可能的话,在线分组缓冲器可以减少一些系统延迟,即用一条总线去读取数据,而“存储”总线不转送数据。

例如,当PCIe接收和发送虚拟通道(VC)缓冲器比较小时,允许DMA控制器的一侧转移数据到VC缓冲器,或者将出自VC缓冲器的数据送到本地分组存储器中,这样能够改善流控制信用(Flow Control Credit)等级,从而降低PCIe链路与本地存储器利用的相互依赖。此外,当DMA控制器的I/O总线侧正在与PCIe核通信时,前端总线接口就可以同时将随后PCIe核传送的数据转移到分组缓冲器中。这固然会增加一些延迟,但却好过于由于总线竞用所导致的DMA控制器停摆,而且DMA控制器上的并发工作可以改善数据转移的总延迟。

   

在PCIe中,通过分割处理来支持读操作,当读请求发出时,PCIe链路上将要传输的数据不会立即得到。在这种情况下,支持延迟处理的DMA控制器将自动放弃总线控制,并允许DMA中任何其他被激活的通道来竞用总线控制。

  

图2:具有DMA高层架构的PCIe。
图2:具有DMA高层架构的PCIe。

PCIe串行协议的一些最苛刻的应用是那些要求实时或准实时的数据传递。在这类系统中,像语音和视频处理,需要采用运算增强引擎来满足数据块严格的处理时间要求。这些硬限制不仅增加了运算增强芯片内部的软件工作的数据处理和减小延迟的负担,而且也增加了流处理硬件的负担。一种提供较小的数据包延迟和较高的系统吞吐率的方法是在数据进入系统背板上传输之前,将数据块分成较小的数据包。这样,可以采用较小的接收缓冲器,并确保不会出现哪个数据引擎的负荷过重的问题。

采用较小数据包时必须处理好以下几个问题:

1. PCIe用在所有的事务层分组(TLPs)方面的开销相对固定;较多的数据包则需要较多的处理开销

2. 较小的数据包通常需要的处理时间也少,于是就增加了由数据引擎和PCIe接口发起的并发中断的次数

3. 为了维持适当的负载均衡,较小的数据包会增加本地处理器的负荷

4. 本地主处理器必须花费较多的时间来生成PCIe协议所用的数据转移TLP

   

上面的几点意味着本地主处理器将会损失更多的原本用于其他功能的时钟周期。因此,较小的数据包有助于减小物理接口的处理延迟,但代价是增加了终端系统的负荷,这有可能降低总的系统性能。虽然PCIe TLP开销处理延迟无法完全消除,但通过采用一个多通道散/聚DMA引擎,基于灵活的仲裁机制,将数据块请求分成较小单元的可变大小的数据包,以及在DMA控制器自身中设计事务分割支持能力,可以摊薄每隔通道上与每个流等级(TC)相关的延迟。此外,设计一个较小的TLP事务IP核,通过生成/终接PCIe TLP,有助于提高软件的效率。

图3:带有DMA的PCIe读/写处理。
图3:带有DMA的PCIe读/写处理。

  

对于PCIe,存储器读取(MRd)不是优先的,是作为一个分割事务执行的,而存储器写(MWr)则是优先的。对于读取,请求者先发送一个MRd TLP来请求completor算法发送大量的数据(通常最大的读取请求为512字节),然后专门等待发送过来的数据。PCIe MWr TLP中包含将被写入(通常最大为128字节)的满载荷。因此,MLRd TLP在发送方向上,就像MWr TLP那样,也需要一段带宽。通过向MW通道分配更多的资源,在发送(Tx)方向上管道将保持在满状态,而接收(Rx)管道则用响应MRd请求的数据TLP来填满,见图2。

软件执行时间方面获得的好处

一个功能丰富的散/聚DMA控制器通过实现其他方案中需要复杂的算法和/或大量中断的功能,还能够减少软件开发的工作量和CPU的执行时间:

* 所有最先进的处理器和操作系统,包括实时性能最好的操作系统(RTOS),都采用MMU和虚拟存储器。乃至内核都采用虚拟地址。这意味着DMA不能线形地访问系统存储器中的缓冲器。当该缓冲器接近处理时,事实上它被散布到PAGE_SIZE模块中的各个物理存储器中。一个散/聚DMA通过允许每个缓冲器描述符被映射到存储器的物理页中,来帮助处理器和软件驱动器。在本地缓冲器描述符中没有散/聚列表,驱动器一次只能移动一页的数据,然后才能重新启动DMA进行下一页的移动,这样将很大程度上影响系统性能。

* 通常,一个系统由多个执行线程组成。这些线程可能都要转移数据。如果一个DMA由多个通道,并为每个通道都分配一个线程,就能通过这些更多的并行处理来改善系统性能。

* 如果CPU工作在little-endian模式并转移TCP/IP数据包到MAC,通常被迫利用软件例程来与网络order(big-endian)交换字节。一个能够在硬件中以即时模式实现这种转换的DMA,能够降低软件的复杂度并缩短系统设计时间。

* 为了提高效率,PCIe总线接口应该尽可能宽(64位),不过许多外设却只具有窄带宽(16或32位)。如果用DMA进行总线重新适配,则对PCIe接口的性能没有影响,在构建高带宽转移到PCIe接口逻辑之前,DMA可以对较小的外设进行2重或4重访问。

* 它提供了一个适配层,将基于分组的TLP数据流转换成对线形存储器的并行总线访问。这对于复用已经带有存储器接口(地址总线,数据总线,控制线)的IP模块的设计师来说将带来巨大的收益。他们能够非常容易地将IP模块配置到DMA服务的总线上。

本文小结

利用像散/聚DMA控制器这类先进的载荷存储数据引擎控制器,FPGA系统设计师能够改进与基于PCIe的系统设计相关的软硬件中普遍存在的吞吐率和延迟方面的缺陷。

关键字:PCIe  嵌入式    聚式  DMA

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2012/0403/article_15585.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
PCIe
嵌入式
聚式
DMA

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved