仅对英特尔可见 — GUID: nik1412547567310
Ixiasoft
1.7.2. 用于Read的吞吐量
PCI Express通过分割处理(split transaction)模式进行读取。读传输包括下列步骤:
- 请求器发送一个存储器读请求。
- 完成器发出ACK DLLP以确认存储器读请求。
- 完成器返回一个带有数据的完成。完成器可将该完成分割成多个完成数据包。
读吞吐量通常低于写吞吐量,因为对于相同数量的数据,读需要两次传输而写只需要一次。读吞吐量取决于应用层发布存储器读请求与所请求数据返回之间往返程时间的延迟。为最大化吞吐量,应用层必须发布足够的待处理读请求来覆盖此延迟。
下图表示存储器读请求(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标签数限制。header标签的最大数量由Hard IP for PCI Express IP core Parameter Editor中的RX Buffer credit allocation - performance for received requests参数指定。