片上总线Wishbone 学习(八)周期的同步结束和异步结束

片上总线Wishbone 学习(八)周期的同步结束和异步结束

为了实现在给定时钟频率下的最大可能吞吐量,Wishbone采用了周期异步结束方式。这样做的结果是从主设备的STB_O到从设备的ACK_O/ERR_O/RTY_O再到主设备的ACK_I/ERR_I/RTY_I输入形成了一个异步回路,如图1所示。在大型SoC设计中,该回路往往成为整个设计的关键路径,限制系统时钟频率的进一步提高。在深亚微米时代,由于线延迟往往比门延迟更大,这一异步回路更加可能成为系统性能的瓶颈。

片上总线Wishbone 学习(八)周期的同步结束和异步结束_第1张图片

图1 Wishbone总线的异步周期结束路径

这一问题的最简单解决方法是插入寄存器将回路断开,但这样做的缺点是在每一次总线操作中都需要插入一个等待周期,从而制约了总线吞吐量。如图2所示,在上升沿0主设备发起了一次操作,在上升沿1从设备发起响应将ACK_O置高,在上升沿2主设备检测到ACK_I为高完成第一次操作并发起第二次操作,但是在上升沿2从设备并不知道主设备会发起第二次操作,因此只能将ACK_O信号置低。在上升沿3从设备才能对第二次操作发起响应将ACK_O置高,在上升沿4主设备检测到ACK_I为高完成第二次操作。

图2 Wishbone总线的传统同步周期结束方式

在图2中,每一次传输都需要两个时钟周期,一半的带宽被浪费。如果从设备在上升沿2知道主设备将发起新的操作,它将能够在上升沿3完成第二次操作,从而节省时钟周期提高了系统的吞吐量,利用该思想改进后的同步时序如图3所示。

图3Wishbone总线改进的同步周期结束方式

在图3的上升沿0,主设备发起操作,在上升沿1,从设备将ACK_O置高,在上升沿2完成第一次操作且从设备知道主设备将发起新的操作,于是将ACK_O继续置高,在上升沿3完成第二次操作。因此,3个时钟周期就完成了2次操作,而不是原来大的4个时钟周期,于是吞吐量提高了25%。一般的,改进后,N次操作需要N+1个时钟周期,而不是2N个时钟周期,吞吐量改善为(N-1)/N%

片上总线Wishbone 学习(八)周期的同步结束和异步结束_第2张图片

图4 不同结束方式性能的对比

改进后的同步周期结束方式具备异步周期结束方式的吞吐量优势,同时具备传统同步结束方式的延迟优势。改进后的同步周期结束方式称作Wishbone寄存反馈周期结束方式。




你可能感兴趣的:(one)