【IC技术圈成员文章】漫谈AMBA总线-AXI4[基础性能篇]

文摘   2024-09-24 18:15   上海  

世间事总是有长有短,有利有弊    

---- 陆文夫

0. Review of the above

上文提到,AXI协议是点对点的接口数据传输规范。AXI协议将读写分于两个通道:读通道、写通道。其中又将写通道细分为地址通道(AW)数据通道(W)和写响应通道(B)。一次完整的写数据传输称为Write Transaction。数据传输中AW、W、B任意通道内一次成功的握手(Valid & Ready==1)称为一次Transfer。写数据传输中W通道内所有的数据传输称为BurstBurst内部的每次数据传输称为Beat如下图所示。


对比写通道,读通道与之类似,如下图所示,不再赘述。


1. Basic Performance Improve of Transfer Efficiency

AXI Spec文档开始便提到: 
AXI协议适合高带宽、低延迟的设计。下文将对比APB、AHB和AXI总线的数据传输效率,了解AXI协议的进化路径。


1.1 Transfer Efficiency Improve from APB

APB总线接口传输数据时序图如下所示:

对应时序图的视频如下所示:

从上可以看到,在T12-T19 的8个时钟周期中,APB总线共传输4个数据,最大传输效率只有50%
当APB Master发起传输,2个时钟周期只传输1个周期的数据,APB总线协议规定的传输效率仅有50%。为了提高带宽传输效率,可以通过改进APB总线协议,即:1个时钟周期传输1个周期的地址和数据。
如下图所示,改进版APB总线理想状态下传输效率为100%

其对应的视频解析示意如下:


1.2 Performance Improve from AHB

AMBA AHB 对应传输的时序图如下所示:

AHB传输对应的视频时序解析如下所示:

如上图所示,对比升级版本APB总线图AHB总线图,可以看到两者的数据传输方式基本相似,只是AHB总线的数据升级版本APB总线的数据晚一周期(如此也更符合实际电路传输数据),由此通过升级APB总线得到了AHB总线。

ps:上图所示的AHB总线图节选了部分AHB总线的信号。


理想状态下,AHB总线的传输效率可以达到100%。此时已经是总线的最大效率,但是从上图可以看出,在读写数据的时候,一个周期只能选择读数据或者写数据:当读数据时,写数据通道(HWDATA)闲置,当写数据时,读数据通道(HRDATA)闲置

ps:AHB总线在同一时刻只能选择读或者写数据,所以AHB为半双工总线(APB也是)。


基于此,可以最大化利用读写数据通道的方法是分离读写通道,并辅以对应的控制信号,使得读写数据通道都同时利用起来(升级AHB总线为全双工总线)。如下图所示:


AHB Upgrade V1传输对应的视频如下所示:

如上所示,为读写数据通道辅以地址和控制信号。此时读写通道分离,读写通道同时工作,如果计算数据的传输效率,升级过的AHB总线可以同时读写数据,且理想传输效率都为100%。

其实到这里,从总线接口数据传输效率的角度来说,升级版本的AHB总线基本没有提升数据传输效率的方法了,即已经在读写方面分别达到了1Data / 1Clk的效率。


1.3 Lowpower & address data decoupling Improve 

升级后的AHB总线虽然达到了读写数据效率100%,但是,每个时钟下不仅数据变化,地址也在变化。动态功耗较大。在这种情况下,可以把需要读写数据的个数和数据有效宽度通过新增地址和控制信号传输,而不必每周期都改变地址。如下图所示:


AHB Upgrade V2传输对应的视频时序解析如下所示:


只要发出想要读写的起始地址、读取和写入的数据个数和宽度,接下来按照控制信号传输的数据个数,每个时钟一个数据的效率进行传输,也会达到100%的数据传输效率。

ps:当读写地址和读写数据分离为不同的通道,也可以解除了AHB总线的地址和数据的相关性,不必强制每发出一个地址必须跟随一个数据(总线结构可以做的更复杂),尤其对读数据来说,不再强制接收到地址的下一时钟就返回数据。
ps:每发出一个地址并要求读写数据的跟随,这也意味着总线结构很难在保证带宽下多级扩展相连(很难看到大规模AHB总线作为主干网络的架构)。为了解除AHB总线的时序收敛问题,也不能使用寄存器简单打拍。
ps:
AHB总线架构适合小规模芯片(MCU类型:Cortex-M0、Cortex-M3 etc),总线架构简单、时序容易收敛、有一定的带宽保证。

在这里定义:发起这次传输的起始地址控制信号,到所有数据写入或者读出完成称为一次transaction。在这个transaction中,分为地址通道阶段数据通道阶段。其中,数据通道中一次transaction的所有数据传输称为Burst数据传输Burst中的每一个数据称为Beat

ps:上图所示传输中,AHB V2版本总线默认数据成功写入、成功读出
ps:当前的地址和数据长度表示这一堆数据(burst)属于同一种属性,同时也表示这一堆数据对总线传输来说是一个整体,不能漏发少发或者错发。
ps:DRAM(DDR)颗粒的接口协议和AHB V2版本类似,发出读写命令,DRAM颗粒返回多个数据(DRAM颗粒接口是半双工)。


1.4 Other Improve :Slave Status Return

上文提到,总线默认数据成功写入Slave或者从Slave读出。但在真实的SoC中,Slave会处于不同的工作状态:

(1)Slave内部错误,当前命令不能成功处理
(2)Slave内部正常,可以正常读出和写入数据。

Master需要知道Slave当前的状态,以决定重发错误数据还是继续发送下一笔新数据,于是增加响应通道
如下图所示,写响应通道和读响应通道不对称写命令发出到所有的写数据完成之后才会回复写响应。而读命令发出之后,每个读数据都伴随着一个读响应

这就意味着:一个响应标记Read Transaction中的一个Read Beat,一个响应标记一个完整的Write Transaction

ps:读响应标记Read Beat 、写响应标记Write Transaction,当处理总线错误的时候,对于读数据可以进行更细粒度的处理,比如当第一个Read Beat的数据是正确的,第二个Read Beat 是错误的,就可以接收第一个Read Beat 数值,处理完错误之后,Master切换并发送第二个Read Beat 所在的地址Transaction

ps:
一般总线设计中,不会做读数据细粒度的处理,只要碰到读数据内部的Read Beat 有响应错误,默认这次读数据Transaction发生错误,需要报告错误并处理。


需要注意

在Master发出写命令和所有写数据之后,Slave必须回复写响应,这表明写操作不可提前终止,即一旦发起写操作必须完成完整的Write Transaction。读操作类似,一旦发起读操作,必须完成完整的Read Transaction(即必须返回包含规定个数读响应读数据,无论对错)。

这个特性在AXI Spec中称为 early termination of bursts is not supported 。

AHB Upgrade V3传输对应的视频时序解析如下所示:


APB总线到AHB总线,最后到AHB V3版本总线,从50%的数据传输效率,到读写均100%的数据传输效率AHB V3版本总线已经基本和简易AXI总线接口相同,如概述篇所示(漫谈AMBA总线-AXI4[概述])。


ps:
AMBA AHB协议支持 Early burst termination。
ps:DRAM颗粒的接口协议并没有响应通道,所以默认情况下DRAM颗粒并不会出问题(DRAM颗粒数据正确性由专门的检测和纠错电路保证)。


AHB V3版本总线
已经基本和AXI总线相同,基础AXI总线传输时序图如下图所示:


AXI Basic 传输对应的视频时序解析如下所示:


对比可以看到AHB V3版本总线基础AXI总线可以同时读写并达到1Data 1Clk的效率。


----------------------------------------------

行至文末,细心的读者会看到所有的视频中Master和Slave的接口的Len=1,这也意味着只有在Master和Slave相距一个长度单位下,总线接口的效率才能达到1Data / 1Clk。

而在实际的SoC中,由于芯片性能、功耗、面积的要求下,Master和Slave相距不仅仅是一个时钟能够到达的距离长度,同时当芯片内部的总线结构变得复杂,其拓扑结构、延迟(Latency)、总线利用率、流量控制等都会影响到总线的传输性能和效率。


ps:
没有一种协议能够完全涵盖芯片网络上的所有情况,因为不同的网络协议会根据特定的应用需求、性能要求和设计目标而有所侧重
ps:AXI总线协议不仅从接口形式上考虑到传输的效率(如上文所述),也考虑到了Master和Slave的物理距离、Slave工作的速度等。
ps:AMBA总线协议仅仅规定了硬件接口上的电路的时序,和整个芯片的网络结构没有任何关系。所以基于AMBA总线协议,可以构建实现不同结构的网络结构(Butterfly、CrossBar、Mesh、Torus等),这个在漫谈AMBA总线-AXI4[概述]也有强调。
ps:AMBA总线协议不同协议(APB、AHB、AXI、ACE、CHI)的不同特性会更容易支持对应的网络结构。


------------------------

AXI Feature Compared to AHB | APB :
1. 分离读写通道(半双工->全双工)
2. 解除地址和数据的时序限制,同时降低地址信号动态低功耗
3. 基于首地址的Burst传输 


-------------------------


上文所有总线的效率势必会因为上述原因有所下降,此时就需要更高级的总线协议特性来支持总线传输的高效率和高带宽(正是相比AHB、APB提升的基础上才引出的AXI总线高级特性)。

这也是下一篇文章的AXI4高级性能篇的由来。



----------------------------



IC技术圈
致力于建立IC技术知识、IC技术圈内人的联系
 最新文章