首页 理论教育PCIeTLP头中的其他字段详解

PCIeTLP头中的其他字段详解

【摘要】:TD位表示TLP中的TLP Digest是否有效,为1表示有效,为0表示无效。而本书将在第13.2.1节详细介绍AT字段和PCI总线相关的虚拟化技术。PCIe总线设置Length字段的目的是提高总线的传送效率。而PCIe总线通过TLP的Length字段,可以有效避免PCIe链路带宽的浪费。值得注意的是,Length字段以DW为单位,其最小单位为1个DW。

除了Fmt和Type字段外,通用TLP头还含有以下字段。

1.TH位、TD位和EP位

TH位为1表示当前TLP中含有TPH(TLP Processing Hint)信息,TPH是PCIe V2.1总线规范引入的一个重要功能。TLP的发送端可以使用TPH信息,通知接收端即将访问数据的特性,以便接收端合理地预读和管理数据,TPH的详细介绍见第6.3.6节。

TD位表示TLP中的TLP Digest是否有效,为1表示有效,为0表示无效。而EP位表示当前TLP中的数据是否有效,为1表示无效,为0表示有效。

2.AT字段

AT字段与PCIe总线的地址转换相关。在一些PCIe设备中设置了ATC(Address Transla-tion Cache)部件,这个部件的主要功能是进行地址转换。只有在支持IOMMU技术的处理器系统中,PCIe设备才能使用该字段。

AT字段可以用作存储器域与PCI总线域之间的地址转换,但是设置这个字段的主要目的是为了方便多个虚拟主机共享同一个PCIe设备。对这个字段有兴趣的读者可以参考Ad-dress Translation Sevices规范,这个规范是PCI的IO Virtualization规范的重要组成部分。对虚拟化技术有兴趣的读者可以参考清华大学出版社的《系统虚拟化——原理与实现》,以获得基本的关于虚拟化的入门知识。该书主要针对处理器系统的虚拟化技术。而本书将在第13.2.1节详细介绍AT字段和PCI总线相关的虚拟化技术。(www.chuimin.cn)

3.Length字段

Length字段用来描述TLP的有效负载(Data Payload)大小[21]。PCIe总线规范规定一个TLP的Data Payload的大小在0~4096B之间。PCIe总线设置Length字段的目的是提高总线的传送效率

当PCI设备在进行数据传送时,其目标设备并不知道实际的数据传送大小,这在一定程度上影响了PCI总线的数据传送效率。而在PCIe总线中,目标设备可以通过Length字段提前获知源设备需要发送或者请求的数据长度,从而合理地管理接收缓冲,并根据实际情况进行Cache一致性操作。

当PCI设备进行DMA写操作,将PCI设备中4KB大小的数据传送到主存储器时,这个PCI设备的DMA控制器将存放传送的目的地址和传送大小,然后启动DMA写操作,将数据写入到主存储器。由于PCI总线是一条共享总线,因此传送4KB大小的数据,可能会使用若干个PCI总线写事务才能完成[22],而每一个PCI总线写事务都不知道DMA控制器何时才能将数据传送完毕。

如果这些总线写事务还通过一系列PCI桥才能到达存储器,在这个路径上的每一个PCI桥也无法预知这个DMA操作何时才能结束,那么这种“不可预知”将导致PCI总线的带宽不能被充分利用,而且极易造成PCI桥数据缓冲的浪费。

而PCIe总线通过TLP的Length字段,可以有效避免PCIe链路带宽的浪费。值得注意的是,Length字段以DW为单位,其最小单位为1个DW。如果PCIe主设备传送的单位小于1个DW或者传送的数据并不以DW对界时,需要使用字节使能字段,即“DW BE”字段。有关“DW BE”字段的详细说明见第6.3.1节。