AN 690:PCI Express Avalon-MM DMA参考设计

ID 683824
日期 5/28/2016
Public

1.7.2. 用于读的吞吐量

PCI Express通过分割处理(split transaction)模式进行读取。读传输包括下列步骤:

  1. 请求器发送一个存储器读请求。
  2. 完成器发出ACK DLLP以应答存储器读请求。
  3. 完成器归还一个带有数据的完成。完成器可将该完成分割成多个完成数据包。

读吞吐量通常低于写吞吐量,因为对于相同数量的数据,读需要两次传输而写只需要一次。读吞吐量还取决于应用层发布存储器读请求与所请求数据返回之间往返程时间的延迟。为最大化吞吐量,应用层必须发布足够的未决读请求来覆盖此延迟。

图 6. 读请求时序

下图表示存储器读请求(MRd)和带数据完成(CplD)的时序。第一个图表示请求器在发送后续请求前先等待完成。从而导致较低吞吐量。第二个图表示第一个数据返回后请求器形成诸多未处理读请求来消除延迟。所以具有较高吞吐量。

为维持完成数据包的最大吞吐量,请求器必须优化下列设置:

  • RX缓冲中的完成数
  • 应用层发布读请求和处理完成数据的速率

读请求大小

读请求的大小是影响吞吐量的另一个因素。如果某个请求器需要4 KB数据,那么请求器可发布4个1 KByte读请求或者单个4 KByte读请求。1个4 KByte请求比4个1 KByte读请求的吞吐量高。通过Device Control寄存器,bits [14:12],中Maximum Read Request Size的值来限制读请求的大小。

未处理读请求

未处理读请求个数是影响吞吐量的最后一个因素。如果请求器发送多个读请求以提高吞吐量,那么可用的header标签数就会限制未处理读请求的个数。为了实现较高性能,读DMA最多可使用16个header标签。