PCI PCIe设备中的数据包生成

时间:2019-06-18 18:06:49

标签: packet crc crc32 pci pci-e

我对PCI / PCIe数据包的生成以及CRC的生成和计算几乎没有疑问。我尝试了许多搜索,但无法获得满意的答案。请帮助我理解以下几点。

1。PCI / PCIe系统中的数据包(TLP,DLLP和PLLP)如何形成:例如,说CPU生成了对PCIe设备的读/写操作(此处设备映射到内存中) )。 PCI / PCIe根联合体将收到此请求。根联合体将生成TLP,还将生成DLLP和PLLP并相应地附加到TLP以形成PCI / PCIe数据包。根端口之一将根据MMIO地址范围声明此数据包。交换机/端点上的每个端口都会生成DLLP和PLLP,并将其传递到链接上的下一个设备,在该设备上将对其进行剥离并检查是否存在错误。

Q.1-是否确实由硬件完全完成了数据包的生成/检查?软件在数据包生成以及数据包检查接收设备上的错误中起什么作用?

Q.2-如何为数据包生成ECRC和LCRC?由于将在每个PCI / PCIe设备/端口上生成并检查LCRC,而请求者仅生成一次ECRC,这在我们的示例中是根复杂的。那么,ECRC / LCRC生成/检查是否完全由硬件完成?有人可以举例说明从CPU生成PCI读/写请求起如何生成/检查CRC / ECRC吗?

Q.3-当我们说“事务层”,“数据链路层”和“物理链路层”分别生成TLP,DLLP和PLLP时,这层是指硬件层还是软件层?

我认为,如果每次发送数据包时都会使用软件,则会生成/检查CRC,这会减慢数据传输的速度。而且,硬件可以更快地完成这些任务。

如果我在某处错了,请纠正我。我想从硬件与软件的角度来理解以上场景。请帮忙。

0 个答案:

没有答案