AXI协议中的几个关键特性,包括Burst传输、Outstanding、Out-of-Order以及Interleaving,并解释它们如何在系统中协同工作,以提升数据传输效率。
1. AXI总线上的正常Burst传输
AXI协议是基于事务(Transaction)的,其中事务传输通常采用Burst模式。一个正常的Burst传输过程如下图所示:
- 读操作:主机(Master)向从机(Slave)发送读地址,并等待从机返回数据,之后主机继续发送下一个读地址,依此类推。
- 写操作:主机发送写地址和数据,从机返回响应信号,完成当前事务,主机继续发送下一个写地址和数据。
在这个过程中,AXI总线采用了较为简单的顺序传输方式,即数据的传输和地址的发送是紧密绑定的,主机必须等待上一次的传输完成后,才能开始下一次的传输。
2. Outstanding(超前传输)
Outstanding是AXI协议中非常重要的特性,它允许主机在等待上一笔事务完成之前,发起下一笔事务的请求,从而实现“超前传输”或“并行处理”。这一机制大大提高了系统的吞吐量,减少了总线空闲时间。
2.1 Outstanding的含义
从字面上理解,Outstanding指的是“在途”的事务。即使上一笔事务尚未完成,主机也可以继续发起新的请求,这为系统提供了更高的并行性和效率。这样,多个事务可以并行处理,从而提升数据传输的速度。
2.2 如果Slave不支持Outstanding,如何响应?
在AXI协议中,若从机(Slave)不支持Outstanding,它会通过在接收到事务后,设置AxREADY信号为低,来阻止主机进行超前传输。只有等到当前事务的数据返回并将AxREADY信号设置为高时,主机才能发起下一个事务。
2.3 Outstanding的实现
AXI协议通过读写通道(AR/AW channel)和响应通道(response channel)上的信号来管理Outstanding的实现。每个事务通过这些通道的信号来标识其是否完成,主机可以根据这些信号来判断是否继续发起新事务。
如图所示,当地址A11发出后,主机并未等待数据D11~D14的传输完成,便继续发出了A21地址请求。这就是Outstanding的典型应用场景。
2.4 Outstanding能力
当AXI的Outstanding能力为1时,主机必须等待每一笔事务的完成才能发起下一个事务,这样的系统吞吐量较低。而当Outstanding能力大于1时,主机可以并行发起多个事务,提高了系统的整体性能。
例如,当Outstanding能力为2时,主机可以连续发送2个读地址命令,并等待数据返回后,再继续发起更多的请求。此时,如果数据返回较慢,系统可能需要等待,但在其他事务的数据传输进行时,系统的整体效率仍然能够得到提升。
3. Out-of-Order(乱序)
Out-of-Order(乱序)是AXI协议中的另一个重要特性,它允许不同事务的响应数据在顺序上有所不同。换句话说,主机发出的请求可能并不会按照请求顺序依次返回数据,而是根据数据准备情况“乱序”返回。
3.1 Out-of-Order的含义
当多个事务在途时,它们的返回数据并不一定按发送顺序返回。例如,在数据传输过程中,较慢的事务可能会被更快的事务超越,这就是乱序操作。AXI通过事务ID(AWID、ARID、WID、RID)来标识和区分不同的事务,从而使得主机能够正确地将返回的数据匹配到对应的请求。
3.2 Out-of-Order的应用
乱序操作通常用于提高系统的吞吐量。例如,如果多个存储区域的访问速度不同,可以让较快的存储区域优先返回数据,而不必等待慢速区域的数据传输完成,这样就减少了延迟,提升了整体性能。
4. Interleaving(交织)
Interleaving(交织)指的是在多个事务的数据传输中,不同事务的数据可以交替进行。例如,主机可以同时发出两个事务的不同数据,并将这些数据交织在一起进行传输。
4.1 交织的定义
交织指的是不同事务的数据能够“交错”传输。例如,事务1的数据是0a和0b,事务2的数据是1a和1b。如果支持交织,数据的传输顺序可能是0a、1a、0b、1b,而不是按事务顺序依次传输0a、0b、1a、1b。
4.2 交织的实现
交织操作通过读数据和写数据的ID(RID和WID)来区分不同事务的数据。对于写交织来说,WID提供了标识不同事务的数据传输顺序;对于读交织,RID起到了类似的作用。通过这些标识,AXI协议能够在数据传输时保持正确的顺序。
5. Outstanding、Out-of-Order与Interleaving的区别与联系
这三者是AXI协议中重要的特性,它们之间既有区别也有联系:
- Outstanding:允许主机在等待数据返回之前发起新的事务,提升了系统的并行性。
- Out-of-Order:事务的响应顺序不一定与发送顺序一致,提高了系统的吞吐量。
- Interleaving:同一时刻可以交替传输来自不同事务的数据,减少了传输延迟。
虽然这三者都能提升系统性能,但它们的实现机制有所不同。Outstanding关注的是地址的传输,而Out-of-Order和Interleaving则侧重于事务的响应顺序和数据的交织传输。通过合理的设计和配置,可以大幅提升AXI总线的带宽利用率和系统吞吐量。
本文链接: https://talent-tudou.github.io/2024/11/17/AMBA/AXI总线协议的深入解析:从Burst传输到Outstanding-Out-of-Order与Interleaving/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!