AXI协议是目前广泛采用的总线协议。为了使总线能够跑上更高的频率,获得更好的timing性能,register slice
被广泛采用,用于切断/分割AXI总线的criticle path。
通常来讲,register
slice有4种工作模式:
1. Pass Through
2. Forward Registered
3. Backward Registered
(Reverse Registered)
4. Full Registered
下面我们分别介绍一下。
1. Pass Through
没什么好说的,直连。等于没有用register
slice。
2. Forward Registered
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_1)
Valid(from
source)/channel payload 路径被插入了registers.
对于destination来讲,其得到的valid/payload必然来自RS中的registers,即若payload为full,则valid(to
destination)有效。
对于source来讲,ready(to
source)表明在下一个cycle,内部registers可以接受新的payload。在如下两种情况下为高:1.当前payload为空;2.当前payload为full,但同时destination的ready为高。
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_2)
3. Backward Registered (Reverse Registered)
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_3)
这种模式下,forward control path/payload没有刻意插入registers,而backward control
path/payload(尤其指ready from destination这条路上),被插入了registers。
对于source来讲,其valid和payload直接的交易对象是RS内部的registers,ready(to
source)有效的条件是内部payload为空。
对于destination来讲,其交易的对象可能是RS内部的payload,也可能直接来自于source。valid(to
destination)表明当前是否有有效的payload给destination,这分为两种情况:1.RS内部payload为full;2.若payload为空,但此时valid(from
source)有效。
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_4)
4. Full Registered
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_5)
Full
Registered就是前两者的集合,即在forward path和backward path上都插入了registers,
切断了相关的path。在forward path上,使用了两套registers,类似ping-pong
buffer的实现方式。
对于source来讲,其直接交易对象是ping-pong
buffer,ready(to source)在ping-pong buffer至少其中一组为空时有效。
对于destination来讲,其直接交易对象也仅是ping-pong buffer,valid(to
destination)在ping-pong buffer不为空时有效。
![AXI <wbr>Register <wbr>Slice AXI <wbr>Register <wbr>Slice](http://image102.360doc.com/DownloadImg/2017/01/1012/88959275_6)
Summary
Register
slice的使用可以打断forward control/payload path或者backward control/payload
path,在timing比较紧张的时候,选择适当的模式可以提高bus的频率。当然,register
slice的引入会增大size,引入latency,因此也不建议随意使用。
|