NVMe协议简介之AXI总线更新
更新AXI4总线知识
AXI4总线协议
AXI4总线协议是由ARM公司提出的一种片内总线协议 ,旨在实现SOC中各模块之间的高效可靠的数据传输和管理。AXI4协议具有高性能、高吞吐量和低延迟等优点,在SOC设计中被广泛应用 。随着时间的推移,AXI4的影响不断扩大。目前,由Xilinx提供的大部分IP接口都支持AXI4总线,使得系统中不同模块之间的互连更加高效。这也让基于这些IP的开发变得更加快捷、方便和可靠。AXI4协议规定了数据传输的信号描述、通道特性和握手机制,并指定了事务的过程和属性,例如突发数据传输的数量、每次传输的字节大小、突发类型和保护类型 。
AXI4总线类型
AMBA AXI4协议规范中针对不同的应用场景,制定了三个不同类型的接口,其中包括AXI4-Full、AXI4-Lite以及AXI4-Stream。表1为三种AXI4总线的对比。
表1三种AXI4总线对比
AXI4-Full:主要用于高性能地址映射通信的需求,是面向地址映射的接口。由于读写地址通道是分离的,所以支持双向同时传输,支持突发传输、Outstanding以及乱序传输等模式,突发长度最大支持256。
AXI4-Lite:是AXI4-Full总线的简化版本,主要用于寄存器配置。与AXI4总线相似,AXI4-Lite也具有五个通道。但AXI4-Lite不支持高级功能如突发传输和乱序传输等,并且数据位宽也受到限制。由于不需要支持大多数高性能功能,AXI4-Lite所需的资源也较少。
AXI4-Stream:主要用于高速数据流数据传输。相比于其他总线协议,AXI4-Stream支持无限制的数据突发传输。相比其他总线协议,AXI4-Stream仅包含数据通道,因此在主从设备之间需要保持一对一的连接关系。这意味着在数据传输期间,通道上的所有传输都将是直接的,并且不需要等待传输控制信号。
AXI4总线架构
AXI4总线的架构包括五个独立的通道,分别是读地址通道、读数据通道、写地址通道、写数据通道和写响应通道。其中,地址通道用于携带控制消息,以描述被传输的数据属性;数据传输则使用写通道来实现Master到Slave的传输,而Slave使用写响应通道对写传输进行响应;读通道则用来实现数据从Slave到Master的传输。这些通道之间既相互分离又相互依赖。相互分离是指每个通道通过握手机制来完成单向的传输,传输源端使用VALID来表明地址/控制信号和数据有效,而目的端使用READY来表明自己能够接收信息。相互依赖则是指写回复必须在收到最后一个写数据后触发,而读数据必须在收到读地址之后开始。
写通道架构如图1所示,包括写地址、写数据和写响应三个通道。在一次写传输操作中,主机首先在地址通道上发送传输操作的地址、突发大小等信息,并将需要写入的数据放在写数据通道上等待从机接收。从机在接收到写地址通道的命令后,开始从写数据通道接收数据。当从机接收到本次写传输的最后一个数据后,在写回复通道向主句回复本次传输状态,表示传输操作结束。协议中规定写回复必须在收到最后一个写数据后触发,而读数据必须在收到读地址之后开始。在从机具有一定的缓存能力后,协议中规定写数据可在写地址操作之后发生。当缓存能力用尽时,从机会通过将READY信号拉低来暂停数据传输。
图1 NVMe写通道架构图
读通道的架构如图2所示。读通道的架构与写通道不同,只包括两个通道:读地址通道和读数据通道,没有读响应通道。这是因为在读操作中,响应信息可以通过读数据通道返回,从而节省了资源。在一次读传输操作中,主机首先通过读地址通道向从机发送传输操作的地址、突发大小等信息。从机接收到信息后,在读数据通道上将数据和响应信号一并传输给主机。
图2 NVMe读通道架构图
在一个系统中,多个主机与从机进行传输时,需要通过AXI互联IP(AXI Interconnect)来实现多对多的拓扑结构 ,如图3所示。Interconnect拥有多个 Master/Slave接口,并在内部基于轮询或者优先级策略对多路数据进行路由转发,可以实现系统内部的高效通信。
图3 多对多拓扑结构
相关视频见B站 用户名:专注与守望
链接:
https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click