作为一名新时代的ICer,一定必定肯定听说过AMBA协议,但是却少有人知道AMBA协议的evolution过程,本文将大致聊聊Evolution of the ARM AMBA Specifications!
高级微控制器总线架构(AMBA)总线协议是ARM的一组互连规范,用于标准化各种功能模块(或IP)之间的片上通信机制,以构建高性能SOC设计。这些设计通常将一个或多个微控制器或微处理器以及其他几个组件(内部存储器或外部存储器桥接器、DSP、DMA、加速器和各种其他外设(如PCIE、USB、UART、I2C等)集成在单个芯片上。AMBA协议的主要目的是建立一种标准且有效的方法来互连这些模块,并在多个设计中重复使用。
学习AMBA协议的第一步是了解这些协议的确切使用场景,这些协议是如何演变的,以及它们如何适用于SOC设计。下图(参考AMBA 2规范)说明了基于AMBA的传统SOC设计,该设计使用AHB或ASB协议进行高带宽互连,并使用APB协议进行低带宽外设互连。
随着越来越多的功能模块集成到SOC设计中,共享总线协议AHB/ASB很快就开始受到限制。
2003年,新修订版AMBA 3引入了点对点连接协议——AXI 3。2010年,又推出了增强版——AXI 4。如下图,可以看出协议的演变以及业界SOC设计趋势。
下图则说明了如何使用AXI互连来构建具有各种功能模块的SOC,并通过主从协议进行通信。互连可以是定制的crossbar或switch设计,甚至可以是支持多个AXI masters和slaves的现成NOC(片上网络)IP。与以前的AHB/ASB总线相比,AXI互连有助于扩展agent数量的连接。其中一个slave端口上的AXI2APB桥接器,通常用于通信桥接到APB总线上的一组外设。
进一步的演变发生在移动和智能手机时代,SoC具有双/四/八核处理器,使得在具有一致性缓存的多个CPU核集成在单个芯片上时,需要实现有效的数据共享和一致性管理。这导致在AMBA 4版本中引入了ACE。
最后,在当前HPC和数据中心市场异构计算的时代,集成趋势继续随着处理器核心数量的增加以及GPU、DSP、FPGAs、memory controllers和IO子系统等几种异构计算元素的增加而增加。2013年,AMBA 5引入了CHI协议,作为对AXI/ACE协议的重新设计。基于信号的AXI/ACE协议被新的基于数据包的CHI分层协议所取代。
APB:(Advanced Peripheral Bus)用于连接低带宽外设。它是一种简单的非流水线协议,可用于通过共享总线从brigde/master与多个slave进行通信(读或写)。读和写共享同一组信号,不支持burst传输。
AHB:(Advanced High-performance Bus)用于在共享总线上连接需要较高带宽的组件。这些可以是内部存储器或外部存储器接口,DMA等,但共享总线将限制agent的数量。与APB类似,这是一个用于多个master和slave的共享总线协议,但可以通过burst传输实现更高的带宽。
AHB-lite:AHB-lite协议是AHB的简化版本。只支持单个master设计,并且移除了arbitration,retry,split等功能。
AXI:(Advanced eXtensible Interface)对于高带宽和低延迟互连非常有用。这是一种点对点互连,克服了共享总线协议在可连接的agent数量方面的限制。该协议是AHB的增强版,支持outstanding传输、burst传输、独立读写通道以及不同总线宽度。
AXI-lite:AXI-lite协议是AXI的简化版本,不支持burst传输、乱序传输等等。
AXI-stream:它只支持数据从master流到slave。协议中没有独立的读/写通道,因为它只在一个方向上进行传输。不需要地址传输,只传输数据,没有其他控制信号,在视频流等设计中非常有用。
ACE:(AXI Coherency Extensions)是对AXI 4协议的扩展,它在多个CPU核心与一致性缓存集成在单个芯片上的时代得到了发展。ACE协议通过引入独立的snoop地址、snoop数据和snoop响应通道,扩展了AXI读写数据通道。这些额外的通道提供了实现基于snoop的一致性协议的机制。
ACE-lite:ACE还为那些没有自己的缓存,但仍然属于可共享一致性域的agent提供了一个简化版本的协议。典型的agent(如DMA或网络接口agent)可以使用ACE-lite协议实现这种“单向”一致性。
CHI:(Coherent Hub Interface)随着SOC上一致性cluster数量的增加,以及其他异构计算元素和内存控制器的加入,AMBA 5引入了CHI协议,作为ACE协议的完全重新设计。CHI协议使用分层的基于数据包的通信协议,包括协议层、链路层和物理层的实现,并支持基于QoS的流控制和重试机制。