就绪/有效 vs 2 次握手 vs 4 次握手

Posted

技术标签:

【中文标题】就绪/有效 vs 2 次握手 vs 4 次握手【英文标题】:ready/valid vs 2-way handshaking vs 4-way handshaking 【发布时间】:2020-10-27 16:41:59 【问题描述】:

我对准备/有效握手在功能上是否等同于 req/ack(2 路)握手感到困惑?通过在功能上等效,我的意思是我们可以在所有可以使用 req/ack (2-way) 握手的情况下使用就绪/有效握手执行数据传输,反之亦然?是否存在一种方案有效而另一种方案无效的情况?

作为对同一问题的扩展,req/ack(2-way)在功能上是否等同于 req/ack(4-way)握手?大多数情况下,我发现不同之处在于所需的硬件,当然还有速度。是否存在我们必须使用 req/ack (4-way) 或 req/ack (2-way) 的场景。

总之,我想在三个方案之间建立联系——一个方案会失败,而另一个方案会起作用。

问题是在同步和异步设计的背景下

A reference to handshaking.

【问题讨论】:

【参考方案1】:

一个老问题,但为了以后类似的问题,我还是会回答。

1.什么时候使用?

在没有时钟的异步逻辑中,需要 4 相或 2 相req/ack 协议。信号是相互的响应:两者都是 4-phased 协议中的响应,ack 是 2-phased 协议中的唯一响应。

valid/ready(或等效)协议由于时钟上升沿同步,因此不需要返回零相位,它只能用于同步逻辑。此外,只需要一个阶段,因为validready 在当前传输中不会相互响应,它们只是在下一个周期更新。

2。他们如何比较?

这三种协议都可以准确控制数据的传输,它们也可以传输背压。所以是的,它们在功能上是等效的

4 相 req/ack 信号切换两倍,从性能功耗的角度来看,这并不是很好。但是同步电路有块缓冲器,当扇出很大时可能会消耗很多,这会产生其他后果,例如 EMI、需要本地电容器和/或使用扩频技术。这完全取决于电路的规模和技术。不过,一般而言,如果协议需要以两倍的速率切换信号,则很难保持相同的吞吐量。

2-phased ack/req 也提供相同的功能,但实现有其缺点,处理高/低的逻辑可能比自然的 4-phased 协议更复杂。它需要异或门和一个参考寄存器来输出转换而不是状态(改变极性而不是指示“我准备好了”)。它需要 XOR 门来检测是否应该发生状态变化。

性能的角度来看,它需要更多的资源,增加了关键路径,但减少了阶段的数量。目前尚不清楚结果是否会改善性能,但可能取决于技术。一个理由是在带宽有限的长线路或负载线路上传输协议,以牺牲本地网关面积为代价提高这些线路的速率可能会很有趣。

3.它们可以互换吗?

可以在同步电路中使用req/ack 协议连接两个valid/ready 块。但是,为了在异步电路中将两个 req/ack 块与 valid/ready 协议接口,您需要第三个同步信号来表示传输周期的概念。

在大多数情况下,这个问题没有实际意义,因为有惩罚,没有优势。 valid/ready 或等效的将用于同步电路。在异步电路中,您必须在 2 相或 4 相req/ack 之间进行选择。

可以将 2 相和 4 相 req/ack 模块与异步电路中的 XOR 和 S/R 锁存器接口。

总结

它们在各自的同步/异步实现中使用时在功能上是等效的,但不能总是在其他域中使用(req/ack 可以在同步域中使用但性能不佳,valid/ready 不能在异步域)。每种实施方式对性能、功耗和资源利用率都有不同的影响。

【讨论】:

以上是关于就绪/有效 vs 2 次握手 vs 4 次握手的主要内容,如果未能解决你的问题,请参考以下文章

TCP和UDP的区别及应用场景

TCP为啥需要3次握手与4次挥手

TCP的三次握手和四次挥手

网络自定向下的学习——TCP3次握手和4次挥手详解

了解TCP连接中的3次握手与4次挥手

了解TCP连接中的3次握手与4次挥手