首页 > 解决方案 > 就绪/有效 vs 2 次握手 vs 4 次握手

问题描述

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

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

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

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

握手的参考。

标签: cpu-architecturehandshakedata-synchronization

解决方案


一个老问题,但为了将来的类似查询,我还是会回答。

1. 什么时候使用?

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

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

2. 他们如何比较?

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

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

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

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

3. 它们可以互换吗?

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

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

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

总之

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


推荐阅读