什么是Zero-Length Write?它是指Memory Write Request TLP中,Length字段为1(即1个DW),但First DW Byte Enable和Last DW Byte Enable(对于1 DW请求,只使用First DW BE,Last DW BE必须为0000b)都为0,也就是说没有字节被使能。这意味着TLP中虽然有数据负载(1 DW),但所有字节都被标记为无效,因此Completer不应该更新任何内存位置。
这种请求有什么作用?尽管它不写入任何数据,但它仍然是一个TLP,会经过PCIe拓扑,到达目标设备。因此,它可以用来传递一个信号或通知,触发目标设备执行某些操作,而不需要实际写入数据。例如,在PCIe的轻量级通知(Lightweight Notification,LN)机制中,使用这种零长度写操作来通知目标设备某个事件发生,目标设备可能会通过中断或其他方式响应。
对Completer的影响:规范说“除非特别说明,否则这对Completer没有影响。”这意味着如果设备不支持任何特殊语义,那么收到这样的请求应该忽略它(不写入任何数据,也不引发错误)。但如果设备实现了某些特殊功能(如LN),则可能会触发特定的动作。
协议灵活性
PCIe规范允许这种请求,体现了协议的