新闻中心

EEPW首页>EDA/PCB>设计应用> 用于带有PCIe的嵌入式系统的散/聚式DMA

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

作者: 时间:2010-02-26 来源:网络 收藏
采用较小数据包时必须处理好以下几个问题:

本文引用地址://m.amcfsurvey.com/article/191787.htm

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

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

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

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

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


  图3:带有的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的系统设计相关的软硬件中普遍存在的吞吐率和延迟方面的缺陷。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭