——————————————————————————————
版权声明:
本文作者:烓围玮未。主要从事ISP/MIPI/SOC/车规芯片设计/SOC架构设计
首发于知乎专栏:芯片设计进阶之路
微信公众号:芯片设计进阶之路(x_chip)
转发必须授权,同时保留这段声明,盗版必究!
——————————————————————————————
为了详细了解,outstanding,out-of-order,interleaving对传输的影响,继续进行场景分析。
两个master访问两个salve
两个master访问两个个slave,代表了大多数SOC系统的最基本的总线结构。
在前面的分析中,其实简化了BUS的作用,但是复杂情况下,其实BUS才是重点。加上了总线(BUS)后,为了便于分析,把BUS分解成如下结构:
BUS仲裁采用最简单的crossbar,实际中可能是NOC/MESH等结构,我们先按照最简单的进行分析。BUS内部总线也按照AXI来进行,实际中可能是AXI也可能是私有协议。
可以看到,master访问slave,实际上是经过了一系列的中间单元,bus内部的slave和master,这些单元会把输入进行缓存或者进行时钟域变换,或者进行数据位宽变幻,协议转换等,这些是总线设计的重点,这里简化为进行简单的接受和转发。那么一个master访问slave可以简化为下面的链路:
下面我们先基于这个基本链路进行分析。复杂的系统都是这个链路的组合。
AXI链路的outstanding支持
再重复一下协议的规则:
同一个ID:可以发送多个OST,但是必须按照顺序回来;
不同ID:可以发送多个OST, 返回可以乱序;
读和写是独立通道,没有关系;
Master是否支持oustanding的对比
如果master不支持oustanding,由于经过了多个slave和master链路,导致响应延时更大,这时候master是否支持outstanding的区别更加明显:
图片上半部分是不支持OST, 下半部分是支持OST。可以明显看到,当response延时加大时候,支持outstanding带来的提升更加明显。
如APB这种不支持OST的协议,在配置大量配置的时候,就需要非常长的时间,比如现在的GPU/ISP等IP可能需要配置几万个寄存器,如果使用APB协议,可能初始化时间就需要十分钟,这是不能忍受的。所以最新的IP都是通过AXI或者自带的DMA来进行配置。IP设计的时候要充分考虑到系统的需求。
数据链路的oustanding计算
上面的分析中,没有考虑到中间链路的outstanding的支持,如果AXI访问链路上的OST是不一样的,整个链路的OST怎么计算呢?如下图所示:
Master0的OST=4, Master00 OST=2, Master01 OST=5。假设Slave只是做接受和直接转发,不做任何缓存,实际中大部分也是这种情况。另外,Master0发送的传输必须等到slave0的response返回,这笔transcation才算结束,也就是不支持eraly response,这也符合大部分实际系统的运行。
那么假设Master0还是能发出4个outstanding,传输到Master00。Master00在发送完2个outstanding命令后,需要等待第一个response返回,因为OST=2,这样,Master00其实不会接受上游Master0的A2和A3命令。
也就是Master0虽然OST=4, 但由于下游的Master00不接受,导致Master0实际只能发送2个,也就是链路到Master00实际的OST=2。
那么Master00怎么控制Master0不继续发送命令呢?别忘了AXI是一个握手协议,Master00不能继续发送的时候,可以直接反压上游,不发送Ready信号就可以让上游的命令不能继续发送。
当Master00继续把传输发送给Master01, 虽然Master01 OST=5,但是Master00发不出大于2的命令,这样在Master01的输出AXI口上,看到的OST=2.
所以,整个链路的OST=2.
分析其他情况我们可以得到如下结论:
一个AXI访问链路上的outstanding大小等于链路上组件支持的最小的outstanding.
所以在系统总线设计的时候,原则就是保持整个链路的outstanding和Master一致,总线内部outstanding大于master只会浪费资源,小于master又会限制master的性能。Master一般是IP,在进行IP设计的时候,比较好的设计是能够调节IP的outstanding大小,这样在整个SOC系统进行性能带宽调试的时候,可以通过IP内部来调节,对系统优化和后期灵活性带来了极大的方便。
Master是否支持out-of-order和interleaving
正如前面的文章分析的,支持outstanding的一般都会支持,out-of-order和interleaving,不支持的影响在SOC系统上,只会放大不利因素,所以不在过多对比。如果IP(Master)不支持,那么系统总线设计也会解决这个问题,通过增加buffer等方式,不然对系统影响太大,具体的方法会在讨论系统架构的时候再分析(嗯,那是另外的价格)。
真正的难点是多master访问多slave的ID的处理,这会涉及到系统限制,死锁等方面,下篇文章继续分析。
后记
技术很重要,技术背后的思想更重要!
技术背后的某些思想就是你解决以后问题的钥匙。我的文章可能一篇中知识点不太多,但是力求让你能深入理解,为你进阶打下基础。如果有一点点收获,也算是我对中国芯片行业的一点点小贡献吧。
赠人玫瑰,手有余香。如果你有所收获,麻烦花一秒时间帮我点个赞吧,谢谢!
知乎专栏:芯片设计进阶之路
——————————————————————————————