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
http://s15/mw690/003yT8j1ty6IP24przM0e&690Register Slice" TITLE="AXI Register Slice" />
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为高。
http://s12/mw690/003yT8j1ty6IP2HwK3pbb&690Register Slice" TITLE="AXI Register Slice" />
3. Backward Registered (Reverse Registered)
http://s12/mw690/003yT8j1ty6IP2VrIMPbb&690Register Slice" TITLE="AXI Register Slice" />
这种模式下,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)有效。
http://s3/mw690/003yT8j1ty6IP3HdkFs02&690Register Slice" TITLE="AXI Register Slice" />
4. Full Registered
http://s3/mw690/003yT8j1ty6IP3PV1ia32&690Register Slice" TITLE="AXI Register Slice" />
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不为空时有效。
http://s1/mw690/003yT8j1ty6IP4haWcwf0&690Register Slice" TITLE="AXI Register Slice" />
Summary
Register
slice的使用可以打断forward control/payload path或者backward control/payload
path,在timing比较紧张的时候,选择适当的模式可以提高bus的频率。当然,register
slice的引入会增大size,引入latency,因此也不建议随意使用。
加载中,请稍候......