AXI是什么
AXI,全称为Advanced eXtensible Interface,是由ARM公司提出的AMBA (Advanced Microcontroller Bus Architecture) 3.0协议中最重要的部分。它是一种面向高性能、高带宽、低延迟的片内总线协议,广泛应用于高性能嵌入式系统和SoC (System on Chip) 设计中。
官方文档:https://documentation-service.arm.com/static/63ff0ebd56ea36189d4e7ee7?token=
AXI4总线协议支持以下三种类型的接口(Interface):
AXI4(有时候也叫AXI4-full):高性能存储映射接口
AXI4-Lite:简化版的AXI4接口,用于较少数据量的存储映射通信(后面介绍如何快速生成)
AXI4-Steam:用于高速数据流传输,非存储映射接口
性能分析
1延迟和带宽
协议名称 延迟 带宽
I2C 较高 较低
SPI 较低 较高
UART 可预测 较低
AXI 较低 极高
AHB 较低 高
APB 较高 较低
MIPI 较低 高
Ethernet 取决于条件 高
PCIe 较低 极高
USB 较低 广泛
对比AXI和AHB的延迟和带宽
AXI(Advanced eXtensible Interface)和AHB(Advanced High-performance Bus)都是ARM AMBA(Advanced Microcontroller Bus Architecture)协议的一部分,但它们在设计上有不同的重点,从而导致了不同的延迟和带宽特性。
AXI:
带宽:AXI提供了非常高的带宽,这归功于它支持的突发传输和高数据宽度。AXI协议可以配置为不同的版本(如AXI3、AXI4),支持不同的数据宽度(如64位、128位、256位等),从而显著提高数据吞吐量。
延迟:AXI的延迟相对较低,尤其是在使用突发传输和流水线技术的情况下。然而,由于AXI的复杂性,包括支持不同的传输类型和更复杂的握手机制,它的延迟可能比AHB稍高。
AHB:
带宽:AHB的带宽比AXI低,但它仍然提供高吞吐量的数据传输,特别适合于高性能的系统。AHB支持单一的数据宽度(通常是32位或64位),并且专注于提供快速、高效的数据传输。
延迟:AHB的延迟通常比AXI低,因为它的设计更简单,没有像AXI那样的复杂握手和突发传输机制。AHB的简单性有助于减少数据传输所需的周期数,从而降低延迟。
为什么会出现这种情况:
复杂性:AXI协议的复杂性更高,支持更多的特性,如突发传输、更多的数据通道和更复杂的握手机制,这增加了协议的灵活性,但也可能导致更高的延迟。
设计目标:AXI旨在提供高带宽和灵活性,适合复杂的SoC设计,而AHB则更注重于提供高吞吐量的简单数据传输,适合于高性能但相对简单的系统。
传输方式:AXI支持突发传输,这允许它一次性传输多个数据块,但这种机制也可能引入额外的延迟,因为需要额外的握手和数据对齐。
流水线:AXI通常使用流水线技术来提高吞吐量,但这也可能导致延迟的增加,因为数据需要在不同的流水线阶段中传递。
总的来说,AXI和AHB的选择取决于系统的具体需求。如果系统需要高带宽和灵活性,AXI可能是更好的选择;如果系统更注重低延迟和高吞吐量,AHB可能更合适。
2不需要复杂的桥即可提供高频操作
高度集成:AXI是为SoC(System on Chip)设计的,它高度集成并优化了内部通信,减少了对外部桥接的需求。
自适应设计:AXI协议本身支持广泛的配置选项,包括数据宽度、事务类型和突发长度,使其能够适应不同的系统需求。
多通道架构:AXI的多通道架构允许同时进行读和写操作,提高了并行性和吞吐量,减少了对桥接的需求。
内部一致性:AXI与其他AMBA协议(如AHB和APB)设计为协同工作,它们之间的接口相对简单,不需要复杂的桥接逻辑。
高性能:AXI的高性能特性,如突发传输和流水线,减少了对外部桥接器来提升性能的需求。
直接连接:AXI可以与其他使用相同协议的组件直接连接,无需通过桥接器。
低延迟:AXI的设计目标之一是低延迟,复杂的桥接结构可能会引入额外的延迟。
3可以满足多种组件的接口需求
AXI(Advanced eXtensible Interface)能够满足多种组件的接口需求,主要体现在以下几个方面:
-
可扩展性:AXI协议设计灵活,可以根据系统需求进行扩展。它可以支持不同的数据宽度,如64位、128位、256位等,以适应不同带宽需求。
-
高性能:AXI提供高带宽数据传输能力,支持突发传输和流水线操作,能够实现高效的数据传输。
-
低延迟:尽管AXI是一个复杂协议,它仍被设计为低延迟,特别是对于突发传输,可以减少数据传输所需的周期数。
-
多通道支持:AXI包括多个通道,如读地址、写地址、读数据、写数据和响应通道,可以同时进行多个数据传输操作,进一步提高数据传输效率。
-
支持复杂SoC:AXI适用于复杂的SoC(System on Chip)设计,可以连接不同的处理器、内存和外设。
与其他接口相比,AXI具有以下优势:
-
与I2C和SPI比较:I2C和SPI主要用于低速串行通信,而AXI是一个高速并行总线协议,更适合于高性能和高带宽的应用。
-
与UART比较:UART是异步通信协议,适合于低带宽的串行通信。AXI提供的并行传输和高带宽特性使得它在需要快速大量数据传输的场合更为合适。
-
与AHB和APB比较:AHB是高性能总线,但不支持突发传输;APB是低速总线,适用于连接低速外设。AXI则提供了介于两者之间的性能和灵活性,支持突发传输和更复杂的SoC设计。
-
与PCIe和USB比较:PCIe和USB主要用于计算机和外部设备的高速连接。AXI在SoC内部提供了类似的高速连接能力,但专门针对嵌入式系统设计。
-
与Ethernet比较:Ethernet是局域网通信协议,适用于设备间的网络通信。AXI作为SoC内部总线协议,专注于芯片内部的数据传输。
AXI的多功能性和灵活性使其成为SoC设计中的优选总线协议,能够满足各种组件的接口需求。
4适合高初始访问延迟的存储器控制器
突发传输(Burst Transfers):AXI支持突发传输,允许存储器控制器一次性请求多个连续的数据项。尽管初始访问可能有延迟,但一旦建立了突发传输,后续数据项可以快速连续地传输,减少了额外的访问延迟。
流水线(Pipelining):AXI支持流水线操作,这意味着在一次突发传输的上一个数据项还在传输时,就可以开始下一次访问的地址请求。这种流水线技术可以隐藏部分存储器访问的延迟。
地址对齐:AXI允许存储器控制器在突发传输中使用地址对齐,这有助于优化数据访问模式,减少访问延迟。
写合并(Write Combining):AXI支持写合并,允许多个写事务在发送到存储器之前合并为一个事务,这样可以减少写操作的总延迟。
可配置的事务属性:AXI协议允许存储器控制器根据需要配置事务的属性,例如事务的优先级、突发长度等。
与其他接口相比,AXI在处理高初始访问延迟的存储器控制器方面的优势包括:
与I2C和SPI相比:I2C和SPI是串行接口,主要用于低速外围设备的连接,而AXI是一个并行总线,专门设计用于高性能SoC内部,更适合高带宽和低延迟的存储器访问。
与UART相比:UART用于异步通信,不适合存储器控制器,因为它是为字符数据流设计的,而AXI专注于并行数据传输。
与AHB相比:AHB也支持突发传输,但AXI提供了更灵活的控制机制,包括更复杂的突发模式和更高级的流水线能力。
与APB相比:APB是一个低速总线,适合低频率操作的外设,而AXI提供了更高的性能和控制能力,适合高性能存储器控制器。
与PCIe和USB相比:PCIe和USB通常用于计算机系统中的外围设备连接,具有很高的数据传输速率,但它们是针对外部设备设计的,而AXI是针对SoC内部设计的,更适合于高初始访问延迟的存储器控制器。
与Ethernet相比:Ethernet是用于局域网的数据包交换网络协议,而AXI是一个内存映射的总线协议,适用于SoC内部的存储器访问。
总的来说,AXI的灵活性、高带宽和低延迟特性使其成为高性能存储器控制器的理想选择,尤其是在需要处理复杂事务和优化存储器访问模式的场景中。
5提供互联架构实现的灵活性
6其他
向后兼容AHB与APB接口
分离的地址/控制和数据阶段
通过使用字节选通信号的方式支持非对齐数据传输
使用突发传输时只需要传输起始地址
允许地址信息提前于实际数据传输发送
分离的读写数据通道,这可以提供低损耗的DMA
支持发出多个未完成的地址
支持乱序传输完成
允许简单添加寄存器阶段以提供时序收敛
独立事务通道
读地址
读数据
写地址
写数据
写响应
事务通道详细
参考资料: https://blog.csdn.net/HackEle/article/details/125775935
事务关系
以读为例
读地址通道:用于从主设备(master)向从设备(slave)发送控制信息,描述即将进行的数据传输的性质。这包括传输的数据类型、大小、起始地址等信息。
读数据通道:用于从从设备(slave)向主设备(master)传输实际的数据。在主设备发出读地址信息后,从设备根据这些信息准备数据,并在准备好后通过读数据通道发送给主设备。
为什么在pingpong结构的sram中不需要写响应事务
乒乓缓冲区机制:乒乓缓冲区通常由两个相同的缓冲区组成,它们交替使用。当一个缓冲区用于数据读取操作时,另一个可以被用来写入数据,反之亦然。这种机制允许连续的数据流,无需等待前一个操作完成。
无写冲突:在乒乓缓冲区中,写操作通常不会与读操作冲突,因为它们使用不同的缓冲区。这意味着写操作不需要等待读操作完成,也不需要主设备进行额外的确认。
简化的协议:在某些设计中,为了简化协议和提高性能,可能会选择不实现写响应事务。这样,从设备不需要发送写确认信号,主设备也不需要等待这个确认。
实时性要求:在一些实时性要求高的系统中,写响应事务可能会引入额外的延迟。在乒乓缓冲区中,由于可以保证数据的连续流动,因此可以省略写响应以减少延迟。
错误处理:在某些系统中,写操作的错误处理可能通过其他机制来实现,如硬件检测或软件校验,而不是通过写响应事务。
性能优化:省略写响应事务可以减少总线上的通信开销,从而提高系统的整体性能。
设计选择:在设计SRAM时,是否需要写响应事务也取决于具体的设计需求和权衡。在某些高性能或低延迟的应用场景中,可能会选择省略写响应事务。
数据一致性保证:在乒乓缓冲区的使用场景中,数据一致性通常通过其他方式保证,如通过控制逻辑确保写入操作在读取操作之前完成。
总的来说,乒乓结构的SRAM中不需要写响应事务主要是因为其工作机制允许读写操作并行进行,且可以通过其他方式确保数据的一致性和完整性。这种设计选择有助于提高性能和简化协议实现。
参考代码sv: https://github.com/pulp-platform/axi
参考代码v: https://github.com/alexforencich/verilog-axi