Outstanding的主要作用是提高带宽(效率),其次是减小平均延迟。
我们定义L = total Latency, R = Response time, T = Transaction time, n = burst number, N = outstanding Number. 定义Ba = actual bandwidth, Bp = physical bandwidth, e = efficiency, 则Ba = Bp * e.
Figure 1~3 举例说明三种不同情况的outstanding时序特点。
Figure 1 Outstanding Timing Sequence 1
Figure 2 Outstanding Timing Sequence 2
Figure 3 Outstanding Timing Sequence 3
总结得到以下公式:
根据上述公式,可以得出以下结论:
1、当N = ROUNDUP(R/T + 1)时,e达到理论最大值n*T/(R + n*T);
2、当N = ROUNDUP(R/T + 1)时,n越大,效率越高,e的极限逼近100%;
3、当N = 1时,效率最低。
从latency的角度看,outstanding可能带来平均延时的降低,但是绝对延时反而可能增加,例如figure 1(C) 中的a2 -> b2. 但是某些系统(比如多媒体)主要关注带宽,对latency要求不高,所以这里不对latency做重点讨论。
比如对于display system,我们重点关注active lines期间的bandwidth。以1920*1200@60fps为例,htt(horizontal total time) = 13.4us (from VESA standard),换算为bandwidth = 1920*4B(ARGB)/13.4us = 573MB/s.
假设AXI burst length = 256 Bytes, AXI physical bandwidth = 600M*16B = 9600MB/s. 所以burst transaction time (T) = 256 / 9600 = 27ns.
AXI response time (R)存在不确定性,只能根据经验估算。假设R = Bus latency(60ns) + DDR latency(70ns) = 130ns.
根据公式N = ROUNDUP(R/T + 1),可以得出:N = 6时,即可达到最高带宽效率。
一帧图像的burst number(n) = 1920*1200*4B/256B = 36000. 可以得出:e = 99.98%,近乎等于物理带宽,而实际带宽需求只要满足573/9600 = 6% 就够了,所以理想情况下的带宽压力并不大。但是考虑到R的不确定性,burst length也可能更小,所以实际情况要复杂得多,需要到后期跑SoC level performance simulation才能拿到相对靠谱的数据。举个极端的例子,假如R = 100T,N = 6,可以计算得到e < 6%,这就比较危险了。所以N的值要按悲观一点来定,后期可以通过simulation真实数据再做调整(从优化面积的角度)。