AXI协议相对之前的APB和AHB来说,总线性能得到了极大的提升,主要得益于outstanding这一新特性的加入,有了outstanding的支持,master可以不用等待上一笔transaction结束,就直接连续发送多笔请求,使得发送的transaction可以流水起来。但outstanding的使用也引入了一些别的传输问题,如果不加注意,就会导致总线挂死。
一、经典蝴蝶结锁
如图一所示,interconnect两端分别接两个master和两个slave,分别用M0,M1,S0,S1表示,在同一时刻,M0连续发两笔写操作,M0AW0和M0AW1,由于AXI总线支持outstanding,所以两笔命令之间只相隔一拍,M0AW0访问S1,M0AW1访问S0,由于M0-S0路径较短,M0-S1路径较长,M0AW1虽然后发,但是先到达了S0。同时M1也连续发两笔写操作,M1AW0和M1AW1,同样由于两个路径延时不同,M1AW1先到达S1,M1AW0后到达S0。这样就导致图中的结果,在S0端,先后收到M0AW1和M1AW0两笔写命令,在S1端,先后收到M1AW1和M0AW0两笔命令。