跳到正文
数字电子技术

握手与背压:吞吐率不等于低延迟

14 分钟

ready/valid握手让发送方用valid声明数据有效,接收方用ready声明可接收;同一拍两者都为1才完成传输。协议把数据有效期与模块处理速度解耦,但每方必须遵守稳定性规则。

发送方规则

valid拉高后,在握手发生前必须保持valid与数据稳定,不能因ready低就撤回。否则接收方可能永远等不到,或采到变化数据。

接收方规则

ready可以提前拉高,也可按容量变化。若ready组合依赖下游、valid又组合依赖ready,模块级联可能形成长组合路径甚至环路。

缓冲

寄存切片、skid buffer和FIFO可打断时序路径并吸收短暂背压。缓冲深度由突发长度、最坏停顿和允许丢失决定,不是越大越安全;大缓冲增加延迟和隐藏拥塞。

吞吐与延迟

流水线可每拍接收一项却要多拍输出。平均吞吐高不代表单项低延迟;规格应分别定义首项延迟、稳态吞吐和背压恢复。

死锁

发送方等待ready才拉valid,同时接收方等待valid才拉ready,会永久互等。协议必须规定至少一方可独立前进。

练习:设计一个可背压的三级流水线,画连续传输与中途停顿波形并证明不丢不重。

小纸条

ready/valid 协议中发送方为什么不能等 ready 后才拉 valid?